{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "s4na-design-system", "homepage": "https://s4na.github.io/design-system", "items": [ { "name": "cn", "type": "registry:lib", "title": "Class Name Utility", "description": "Utility for merging conditional class names.", "dependencies": ["clsx", "tailwind-merge"], "files": [ { "path": "lib/cn.ts", "type": "registry:lib" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Action button primitive with small variant files.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/button/button.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/button/button.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/button/button.variants.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/button/index.ts", "type": "registry:ui" } ] }, { "name": "stack", "type": "registry:ui", "title": "Stack", "description": "Vertical layout primitive with tokenized gaps.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/stack/stack.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/stack/stack.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/stack/stack.variants.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/stack/index.ts", "type": "registry:ui" } ] }, { "name": "heading", "type": "registry:ui", "title": "Heading", "description": "Semantic heading primitive with visual size variants.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/heading/heading.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/heading/heading.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/heading/heading.variants.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/heading/index.ts", "type": "registry:ui" } ] }, { "name": "text", "type": "registry:ui", "title": "Text", "description": "Body text primitive with tone variants.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/text/text.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/text/text.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/text/text.variants.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/text/index.ts", "type": "registry:ui" } ] }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Short text input primitive.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/input/input.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/input/input.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/input/index.ts", "type": "registry:ui" } ] }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Bounded content group component.", "registryDependencies": [ "https://s4na.github.io/design-system/r/cn.json" ], "files": [ { "path": "packages/primitives/src/card/card.tsx", "type": "registry:ui" }, { "path": "packages/primitives/src/card/card.types.ts", "type": "registry:ui" }, { "path": "packages/primitives/src/card/index.ts", "type": "registry:ui" } ] }, { "name": "app-shell", "type": "registry:block", "title": "App Shell", "description": "Layout shell for docs, dashboards, and tools.", "files": [ { "path": "packages/layouts/src/app-shell/app-shell.tsx", "type": "registry:block" }, { "path": "packages/layouts/src/app-shell/app-shell.types.ts", "type": "registry:block" }, { "path": "packages/layouts/src/app-shell/index.ts", "type": "registry:block" } ] }, { "name": "empty-state", "type": "registry:block", "title": "Empty State", "description": "Empty workspace prompt with one action.", "registryDependencies": [ "https://s4na.github.io/design-system/r/button.json", "https://s4na.github.io/design-system/r/heading.json", "https://s4na.github.io/design-system/r/stack.json", "https://s4na.github.io/design-system/r/text.json" ], "files": [ { "path": "packages/patterns/src/empty-state/empty-state.tsx", "type": "registry:block" }, { "path": "packages/patterns/src/empty-state/empty-state.types.ts", "type": "registry:block" }, { "path": "packages/patterns/src/empty-state/index.ts", "type": "registry:block" } ] }, { "name": "hero-centered", "type": "registry:block", "title": "Hero Centered", "description": "Centered hero section for one clear promise.", "registryDependencies": [ "https://s4na.github.io/design-system/r/button.json", "https://s4na.github.io/design-system/r/heading.json", "https://s4na.github.io/design-system/r/stack.json", "https://s4na.github.io/design-system/r/text.json" ], "files": [ { "path": "packages/patterns/src/hero-centered/hero-centered.tsx", "type": "registry:block" }, { "path": "packages/patterns/src/hero-centered/hero-centered.types.ts", "type": "registry:block" }, { "path": "packages/patterns/src/hero-centered/index.ts", "type": "registry:block" } ] }, { "name": "feature-grid", "type": "registry:block", "title": "Feature Grid", "description": "Scan-friendly feature comparison grid.", "registryDependencies": [ "https://s4na.github.io/design-system/r/card.json", "https://s4na.github.io/design-system/r/heading.json", "https://s4na.github.io/design-system/r/text.json" ], "files": [ { "path": "packages/patterns/src/feature-grid/feature-grid.tsx", "type": "registry:block" }, { "path": "packages/patterns/src/feature-grid/feature-grid.types.ts", "type": "registry:block" }, { "path": "packages/patterns/src/feature-grid/index.ts", "type": "registry:block" } ] }, { "name": "landing-page", "type": "registry:page", "title": "Landing Page", "description": "Full-page template composed from catalog patterns.", "registryDependencies": [ "https://s4na.github.io/design-system/r/hero-centered.json", "https://s4na.github.io/design-system/r/feature-grid.json" ], "files": [ { "path": "registry/pages/landing-page/page.tsx", "type": "registry:page", "target": "app/page.tsx" }, { "path": "packages/pages/src/landing-page/landing-page.tsx", "type": "registry:file", "target": "packages/pages/src/landing-page/landing-page.tsx" }, { "path": "packages/pages/src/landing-page/index.ts", "type": "registry:file", "target": "packages/pages/src/landing-page/index.ts" } ] } ] }