--- robots: noindex, nofollow tags: pitch --- # UI Builder - support for 3rd party component libraries ### Problem Last month we have started [UI Builder project](https://hackmd.io/mA-_4BDmTSmKmXNgI19Wrg) whose purpose is to be able to rapidly validate that our components can be used together successfully. This is mostly about layout and styling of the components in a given theme. * The UI Builder is still not finished * It allows to drop (some of) Fluent0 components only. No other component libraries. ### Appetite We need to move UI Builder closer to be MVP-done. Untangle Builder UI from the components being dropped into the canvas. Add support for 3rd party libraries. Add support for component variants (compose). ### Solution - Iterate on unfinished UI Builder tasks - You can edit props using appropriate form controls. <!-- - ~~CodeSnippet editor - Drag & drop editor generates code you can use in real application, - You can edit the code directly, changes are reflected in the builder. - Unknows from the previous iteration were hopefully addressed.~~ - Support more Fluent0 components --> - Add support for components other than Fluent0 - Fluent0 icons - Fluent7 - Product components - ~~Material UI~~ - Add option to create/edit component variants (compose). - Just test (dogfood) with Button and create RFC for workflow - Adopt existing component info json generator work? [Elizabeth] ### Risks (Rabbit holes) Props editor requires information about components. We will reuse work done for N* playground but it might still require additional work. There are multiple stages for 3rd party components support - from manual - we need to change UI builder sources to add another UI library - to fully automated - just specify a name of NPM package and components will be added automagically. Anything more than a basic support will require machine readable components description - see [Component Info JSON Files](https://hackmd.io/gAXEpxxMRnC3XqCr-lGGwA) project. ### Out of scope (No-gos) - Editing shorthands. - Limiting what component can be dropped into what component. - You can break things the same way when writing code directly. - User can add/edit functions as component props. - Make useful for "bluelines" - Generate visual pointers to components with display names