GenUI SDK Drops Built-in Components — Now Any UI Kit Can Be a Material Library
UI generation tools that only speak one design language are useless inside a real product. Material decoupling means a team can make the LLM output match their actual component library — Naive UI, Ant Design, or a private internal kit — without waiting for an official adapter.
Generative UI tools often produce polished output that clashes with a team's existing design system. GenUI SDK 1.3.0 solves this by removing built-in components entirely and replacing them with a material-package architecture. A material package is just a component-name-to-Vue-component mapping plus a bundle.json file that describes every property, event, and slot the LLM needs to know.
A full walkthrough builds a minimal Naive UI material library — NInput, NSelect, NButton, NForm, NFormItem, NCard, and a custom icon wrapper — in seven steps, from project scaffolding through Vite library-mode build to local testing with a DeepSeek-powered dev server. The same pattern works for Element Plus, Ant Design, or internal private libraries.
Three practical tips raise generation quality: write detailed property descriptions, supply example schemas so the LLM has a template to follow, and declare buffer fields so streaming renders don't break on incomplete data. An AI-assisted shortcut is also shown: feed an existing material library and target component docs to an agent and let it produce the bundle.json.
The material-package design shifts the integration burden from the SDK maintainer to the library consumer, but the consumer's job is mostly writing a detailed JSON file — low ceremony, high leverage.
Treating icons as regular components with a name-prop resolver is a clean pattern that avoids special-casing and keeps the LLM's component vocabulary uniform.
The streaming-render buffer-field mechanism acknowledges a real failure mode: an LLM might emit a Select before it has emitted the options array, and the renderer needs to wait rather than crash.
Using an AI agent to generate the bundle.json from existing docs turns the bootstrapping problem into a prompt-engineering task, which is likely faster than hand-writing property tables for large libraries.