IntroducingGenUI Systems
Ready-to-use React infrastructure for building complex dashboard apps. Smart forms, polymorphic tables, and intent-based layouts — all local to your codebase.
1import { GenericForm } from '@/components/systems/generic-form/generic-form'2import { z } from 'zod'34const schema = z.object({5 email: z.string().email(),6 role: z.enum(['admin', 'user']),7})89<GenericForm10 schema={schema}11 onSubmit={handleSubmit}12 fields={{13 email: { type: 'email', label: 'Email' },14 role: { type: 'select', label: 'Role' },15 }}16/>Everything you need.
Nothing you don't.
Each system is self-contained, fully typed, and installable via the registry. Copy what you need, own your code.
GenericForm
Schema-driven forms with Zod validation, field registry, and automatic error handling.
GenericGrid
Intent-based layout system. Declare purpose, not CSS grid decisions.
GenericList
Schema-aware list rendering with grouping, sorting, and filtering built-in.
GenericTable
Full-featured data tables with sorting, filtering, pagination, and selection.
GenericRenderer
Type-safe data rendering with fallbacks, formatters, and error boundaries.
ActionSystem
Unified intent handling for user interactions. Buttons, links, and triggers.
StateBoundary
State → UI mapping. Loading, error, empty, and success states handled.
MotionSystem
Declarative animations with reduced-motion support and preset transitions.
AppLayout
Responsive layout primitives. Stack, sidebar, grid, and cluster patterns.
Not a component library.
The layer above it.
Registry-based distribution
Install via npx, copy into your repo. No node_modules bloat, no version conflicts. You own the code.
npx genui add formnpm install @genui/formHeadless-first architecture
Zero styling opinions. Works with Tailwind, CSS Modules, styled-components, or vanilla CSS.
Bring your own design systemFight against opinionated stylesSchema-driven APIs
Zod schemas define your data. Forms, tables, and lists derive their behavior from types.
Define once, use everywhereRepeat validation logicIntent over implementation
Declare what you want, not how to build it. intent="primary" instead of className="bg-blue-500".
<Action intent="destructive" /><Button className="bg-red-500" />Clean APIs. Real code.
1import { GenericForm } from '@/genui/form'2import { z } from 'zod'34const userSchema = z.object({5 name: z.string().min(2),6 email: z.string().email(),7 role: z.enum(['admin', 'editor', 'viewer']),8 notifications: z.boolean().default(true),9})1011export function UserForm() {12 return (13 <GenericForm14 schema={userSchema}15 onSubmit={async (data) => {16 await createUser(data)17 }}18 fields={[19 { name: 'name', label: 'Full Name' },20 { name: 'email', type: 'email' },21 { name: 'role', type: 'select', options: roles },22 { name: 'notifications', type: 'switch' },23 ]}24 />25 )26}Three commands.
Zero config.
Install a system
Use the shadcn CLI to add GenUI systems directly to your project.
npx shadcn@latest add https://gen-ui-eta-two.vercel.app/r/formHandle peer dependencies
If you use React 19, enable legacy peer deps for compatibility with some primitives.
npm config set legacy-peer-deps trueStart building
Import the system and start building complex logic with semi-atomic components.
import { GenericForm } from '@/components/systems/generic-form/generic-form'