json-render-shadcn

安装量: 151
排名: #5694

安装

npx skills add https://github.com/vercel-labs/json-render --skill json-render-shadcn

@json-render/shadcn Pre-built shadcn/ui component definitions and implementations for json-render. Provides 36 components built on Radix UI + Tailwind CSS. Two Entry Points Entry Point Exports Use For @json-render/shadcn/catalog shadcnComponentDefinitions Catalog schemas (no React dependency, safe for server) @json-render/shadcn shadcnComponents React implementations Usage Pattern Pick the components you need from the standard definitions. Do not spread all definitions -- explicitly select what your app uses: import { defineCatalog } from "@json-render/core" ; import { schema } from "@json-render/react/schema" ; import { shadcnComponentDefinitions } from "@json-render/shadcn/catalog" ; import { defineRegistry } from "@json-render/react" ; import { shadcnComponents } from "@json-render/shadcn" ; // Catalog: pick definitions const catalog = defineCatalog ( schema , { components : { Card : shadcnComponentDefinitions . Card , Stack : shadcnComponentDefinitions . Stack , Heading : shadcnComponentDefinitions . Heading , Button : shadcnComponentDefinitions . Button , Input : shadcnComponentDefinitions . Input , } , actions : { } , } ) ; // Registry: pick matching implementations const { registry } = defineRegistry ( catalog , { components : { Card : shadcnComponents . Card , Stack : shadcnComponents . Stack , Heading : shadcnComponents . Heading , Button : shadcnComponents . Button , Input : shadcnComponents . Input , } , } ) ; State actions ( setState , pushState , removeState ) are built into the React schema and handled by ActionProvider automatically. No need to declare them. Extending with Custom Components Add custom components alongside standard ones: const catalog = defineCatalog ( schema , { components : { // Standard Card : shadcnComponentDefinitions . Card , Stack : shadcnComponentDefinitions . Stack , // Custom Metric : { props : z . object ( { label : z . string ( ) , value : z . string ( ) , trend : z . enum ( [ "up" , "down" , "neutral" ] ) . nullable ( ) , } ) , description : "KPI metric display" , } , } , actions : { } , } ) ; const { registry } = defineRegistry ( catalog , { components : { Card : shadcnComponents . Card , Stack : shadcnComponents . Stack , Metric : ( { props } ) => < div

{ props . label } : { props . value } < / div

, } , } ) ; Available Components Layout Card - Container with optional title, description, maxWidth, centered Stack - Flex container with direction, gap, align, justify Grid - Grid layout with columns (number) and gap Separator - Visual divider with orientation Navigation Tabs - Tabbed navigation with tabs array, defaultValue, value Accordion - Collapsible sections with items array and type (single/multiple) Collapsible - Single collapsible section with title Pagination - Page navigation with totalPages and page Overlay Dialog - Modal dialog with title, description, openPath Drawer - Bottom drawer with title, description, openPath Tooltip - Hover tooltip with content and text Popover - Click-triggered popover with trigger and content DropdownMenu - Dropdown with label and items array Content Heading - Heading text with level (h1-h4) Text - Paragraph with variant (body, caption, muted, lead, code) Image - Image with alt, width, height Avatar - User avatar with src, name, size Badge - Status badge with text and variant (default, secondary, destructive, outline) Alert - Alert banner with title, message, type (success, warning, info, error) Carousel - Scrollable carousel with items array Table - Data table with columns (string[]) and rows (string[][]) Feedback Progress - Progress bar with value, max, label Skeleton - Loading placeholder with width, height, rounded Spinner - Loading spinner with size and label Input Button - Button with label, variant (primary, secondary, danger), disabled Link - Anchor link with label and href Input - Text input with label, name, type, placeholder, value, checks Textarea - Multi-line input with label, name, placeholder, rows, value, checks Select - Dropdown select with label, name, options (string[]), value, checks Checkbox - Checkbox with label, name, checked, checks, validateOn Radio - Radio group with label, name, options (string[]), value, checks, validateOn Switch - Toggle switch with label, name, checked, checks, validateOn Slider - Range slider with label, min, max, step, value Toggle - Toggle button with label, pressed, variant ToggleGroup - Group of toggles with items, type, value ButtonGroup - Button group with buttons array and selected Built-in Actions (from @json-render/react ) These are built into the React schema and handled by ActionProvider automatically. They appear in prompts without needing to be declared in the catalog. setState - Set a value at a state path ( { statePath, value } ) pushState - Push a value onto an array ( { statePath, value, clearStatePath? } ) removeState - Remove an array item by index ( { statePath, index } ) validateForm - Validate all fields, write { valid, errors } to state ( { statePath? } ) Validation Timing ( validateOn ) All form components support validateOn to control when validation runs: "change" — validate on every input change (default for Select, Checkbox, Radio, Switch) "blur" — validate when field loses focus (default for Input, Textarea) "submit" — validate only on form submission Important Notes The /catalog entry point has no React dependency -- use it for server-side prompt generation Components use Tailwind CSS classes -- your app must have Tailwind configured Component implementations use bundled shadcn/ui primitives (not your app's components/ui/ ) All form inputs support checks for validation (type + message pairs) and validateOn for timing Events: inputs emit change / submit / focus / blur ; buttons emit press ; selects emit change / select

返回排行榜