Git Product home page Git Product logo

ibm / carbon-ui-builder Goto Github PK

View Code? Open in Web Editor NEW
75.0 8.0 36.0 196.94 MB

Build Carbon UI components for your product in a fraction of time that it normally takes.

Home Page: https://builder.carbondesignsystem.com/

License: Apache License 2.0

JavaScript 0.32% HTML 0.67% TypeScript 98.48% SCSS 0.40% Shell 0.14%
carbon carbon-design-system components component-library builder no-code nocode ui ui-design hacktoberfest

carbon-ui-builder's Introduction

Carbon UI Builder - UI Fragment Composer by IBM

Carbon UI Builder is a visual builder tool for Carbon UI components allowing you to build product pages in a fraction of time that it normally take.

Export in seconds as

  • image for presentations
  • live demo app for user testing or
  • production quality code

and incorporate in the existing product frontend.

No coding required.

See it in action!

Privacy

All your data is safely stored on your computer, never leaving the browser. This means that the Carbon UI Builder works even if you don't have internet connection.

What's Carbon, anyway?

It's IBM's design system with ready-to-go component implementations in Angular, React and Vue.

Development and self-hosting

In the project directory, you can run:

npm install

Installs all the required packages and it's only needed the first time, and when you update.

npm start

Runs the app in the development mode.

Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.

You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.

npm run build

Builds the app for production to the build folder. The build artifacts will be stored in the dist/ directory, ready to be deployed.

Start the app

To start the development server run nx serve builder. Open your browser and navigate to http://localhost:4200/. Happy coding!

Generate code

If you happen to use Nx plugins, you can leverage code generators that might come with it.

Run nx list to get a list of available plugins and whether they have generators. Then run nx list <plugin-name> to see what generators are available.

Learn more about Nx generators on the docs.

Running tasks

To execute tasks with Nx use the following syntax:

nx <target> <project> <...options>

You can also run multiple targets:

nx run-many -t <target1> <target2>

..or add -p to filter specific projects

nx run-many -t <target1> <target2> -p <proj1> <proj2>

Targets can be defined in the package.json or projects.json. Learn more in the docs.

Want better Editor Integration?

Have a look at the Nx Console extensions. It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.

carbon-ui-builder's People

Contributors

akshat55 avatar csgeeek avatar dexters-hub avatar donisius avatar jburning avatar maxxyouu avatar miqh avatar moizmasud avatar prasoonmhwr avatar rafajrg21 avatar sadiejay avatar vibh1103 avatar zvonimirfras avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

carbon-ui-builder's Issues

Improve left side nav

Ideas:

  • Collapse side nav when clicking outside of the component
  • Close button (somewhere on the top of the pane maybe?)
  • Collapse side nav after dragging a component onto the editor
  • etc...

Retitle tile svgs

Most svgs have the same "dropdown / 01 default..." title. That's wrong.

Titles should be the name of the component.

Update react version

In the project and in the react exports.

It's a major version change so there might be breaking changes. Check release notes and test everything.

Replace CSS textarea with monaco editor

We want to get some nice highlighting and autocomplete.

Challenge:

monaco treats it as a (s)css file (as it should), while we use it for content of a class. This leads to wrong highlighting and squiggly error lines.

An inelegant solution is to prefill the editor with &{ } and put our styles inside of it. This works for an exported solution because exported code uses scss.

Two problems with this are:

  • looks ugly and users might not know what to do with it
  • we're currently not compiling scss in browser so the styles won't apply correctly in the wysiwyg editor

Solutions to explore:

  • tell monaco that we're only editing the content of a class
  • disable the first and last two lines that have the .class-name { } and only use the lines between for class content
  • something else?

Refactor angular export

Contain component specific things near component and make it unnecessary to change react-fragment.ts for net new components.

Add rich text (HTML) support to Text component

Text component currently supports only... text. It's inserted in place or as a span if a custom class is applied to it.

We should support

  • titles
  • bold
  • italic
  • underline
  • links
  • text alignment
  • ...

To achieve that we'll need a rich text editor, pull out the HTML without non-carbon classes (and apply any carbon classes we might need).

Should "download as zip" be an option in code exports?

That's currently possible from code sandbox after clicking "Edit on CodeSandbox" link.

Is this something users would want accessible more easily?
They can already copy the individual files' content directly.

It might need some work in the exported code to make it possible to run after unpacking. At the moment we're optimizing for CodeSandbox and copying component files.

Compile SCSS from custom styles in browser

SCSS is correctly exported in code.

Since it's not compiled in browser, wysiwyg editor won't correctly show it.
It only correctly shows plain css at the moment.

We should compile scss -> css before applying classes to editor.

Reduce the complexity of adding new components

Current rough steps:

  • Create a-component for it in fragment-components folder
  • Add a tile in elements-pane.tsx
  • Render in fragment.tsx
  • Add AStyleUI to style-context-pane.tsx
  • Export React
  • Export Angular

List of components OMS needs for a POC

  • ** Icons - Moiz --not available and not needed for now
  • - Radio - Moiz
  • - Context menu - Moiz
  • - Combobox - Akshat
  • - Dropdown - Akshat
  • - Tiles - Akshat
  • - Accordion - Doni
  • - Link - Moiz
  • - Input - Z
  • - Number -Z
  • - Button - Z
  • - Tag - Doni
  • - Progress indicator - Akshat

Fix `npm audit fix`

There are some security deps we could update.
Audit currently reports some jest conflicts.

If you're working on #16, you might want to check this one too.

Don't export scss classes with no content

Code exporters should check if classes have content before exporting them (in scss files)

Classes should still be applied to elements because they might have a significance in the app they'll be imported.

It should be a simple fix.

Refactor react export

Contain component specific things near component and make it unnecessary to change react-fragment.ts for net new components.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.