{"$schema":"https://ui.shadcn.com/schema/registry.json","name":"costory","homepage":"https://github.com/ductbuix/costory-ui-registry","items":[{"name":"theme","title":"Costory Theme","description":"Costory design tokens (light and dark) for the base-mira style, mapped to Tailwind v4 theme variables.","cssVars":{"theme":{"font-sans":"var(--font-sans)","font-mono":"var(--font-mono)","font-heading":"var(--font-heading)","color-background":"var(--background)","color-foreground":"var(--foreground)","color-card":"var(--card)","color-card-foreground":"var(--card-foreground)","color-popover":"var(--popover)","color-popover-foreground":"var(--popover-foreground)","color-primary":"var(--primary)","color-primary-foreground":"var(--primary-foreground)","color-secondary":"var(--secondary)","color-secondary-foreground":"var(--secondary-foreground)","color-muted":"var(--muted)","color-muted-foreground":"var(--muted-foreground)","color-accent":"var(--accent)","color-accent-foreground":"var(--accent-foreground)","color-destructive":"var(--destructive)","color-border":"var(--border)","color-input":"var(--input)","color-ring":"var(--ring)","color-chart-1":"var(--chart-1)","color-chart-2":"var(--chart-2)","color-chart-3":"var(--chart-3)","color-chart-4":"var(--chart-4)","color-chart-5":"var(--chart-5)","color-sidebar":"var(--sidebar)","color-sidebar-foreground":"var(--sidebar-foreground)","color-sidebar-primary":"var(--sidebar-primary)","color-sidebar-primary-foreground":"var(--sidebar-primary-foreground)","color-sidebar-accent":"var(--sidebar-accent)","color-sidebar-accent-foreground":"var(--sidebar-accent-foreground)","color-sidebar-border":"var(--sidebar-border)","color-sidebar-ring":"var(--sidebar-ring)","radius-sm":"calc(var(--radius) * 0.6)","radius-md":"calc(var(--radius) * 0.8)","radius-lg":"var(--radius)","radius-xl":"calc(var(--radius) * 1.4)","radius-2xl":"calc(var(--radius) * 1.8)","radius-3xl":"calc(var(--radius) * 2.2)","radius-4xl":"calc(var(--radius) * 2.6)"},"light":{"background":"oklch(1 0 0)","foreground":"oklch(0.147 0.004 49.3)","card":"oklch(1 0 0)","card-foreground":"oklch(0.147 0.004 49.3)","popover":"oklch(1 0 0)","popover-foreground":"oklch(0.147 0.004 49.3)","primary":"oklch(0.214 0.009 43.1)","primary-foreground":"oklch(0.986 0.002 67.8)","secondary":"oklch(0.96 0.002 17.2)","secondary-foreground":"oklch(0.214 0.009 43.1)","muted":"oklch(0.96 0.002 17.2)","muted-foreground":"oklch(0.547 0.021 43.1)","accent":"oklch(0.96 0.002 17.2)","accent-foreground":"oklch(0.214 0.009 43.1)","destructive":"oklch(0.577 0.245 27.325)","border":"oklch(0.922 0.005 34.3)","input":"oklch(0.922 0.005 34.3)","ring":"oklch(0.714 0.014 41.2)","chart-1":"oklch(0.868 0.007 39.5)","chart-2":"oklch(0.547 0.021 43.1)","chart-3":"oklch(0.438 0.017 39.3)","chart-4":"oklch(0.367 0.016 35.7)","chart-5":"oklch(0.268 0.011 36.5)","radius":"0.625rem","sidebar":"oklch(0.986 0.002 67.8)","sidebar-foreground":"oklch(0.147 0.004 49.3)","sidebar-primary":"oklch(0.214 0.009 43.1)","sidebar-primary-foreground":"oklch(0.986 0.002 67.8)","sidebar-accent":"oklch(0.96 0.002 17.2)","sidebar-accent-foreground":"oklch(0.214 0.009 43.1)","sidebar-border":"oklch(0.922 0.005 34.3)","sidebar-ring":"oklch(0.714 0.014 41.2)"},"dark":{"background":"oklch(0.147 0.004 49.3)","foreground":"oklch(0.986 0.002 67.8)","card":"oklch(0.214 0.009 43.1)","card-foreground":"oklch(0.986 0.002 67.8)","popover":"oklch(0.214 0.009 43.1)","popover-foreground":"oklch(0.986 0.002 67.8)","primary":"oklch(0.922 0.005 34.3)","primary-foreground":"oklch(0.214 0.009 43.1)","secondary":"oklch(0.268 0.011 36.5)","secondary-foreground":"oklch(0.986 0.002 67.8)","muted":"oklch(0.268 0.011 36.5)","muted-foreground":"oklch(0.714 0.014 41.2)","accent":"oklch(0.268 0.011 36.5)","accent-foreground":"oklch(0.986 0.002 67.8)","destructive":"oklch(0.704 0.191 22.216)","border":"oklch(1 0 0 / 10%)","input":"oklch(1 0 0 / 15%)","ring":"oklch(0.547 0.021 43.1)","chart-1":"oklch(0.868 0.007 39.5)","chart-2":"oklch(0.547 0.021 43.1)","chart-3":"oklch(0.438 0.017 39.3)","chart-4":"oklch(0.367 0.016 35.7)","chart-5":"oklch(0.268 0.011 36.5)","sidebar":"oklch(0.214 0.009 43.1)","sidebar-foreground":"oklch(0.986 0.002 67.8)","sidebar-primary":"oklch(0.488 0.243 264.376)","sidebar-primary-foreground":"oklch(0.986 0.002 67.8)","sidebar-accent":"oklch(0.268 0.011 36.5)","sidebar-accent-foreground":"oklch(0.986 0.002 67.8)","sidebar-border":"oklch(1 0 0 / 10%)","sidebar-ring":"oklch(0.547 0.021 43.1)"}},"css":{"@layer base":{"*":{"@apply border-border outline-ring/50":{}},"body":{"@apply bg-background text-foreground":{}},"html":{"@apply font-sans":{}}}},"type":"registry:theme"},{"name":"button","title":"Button","description":"Base UI button with the Costory variants and sizes.","dependencies":["@base-ui/react","class-variance-authority","cn"],"files":[{"path":"registry/base-mira/ui/button.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"card","title":"Card","description":"Card with header, title, description, action, content and footer slots.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/card.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"separator","title":"Separator","description":"Base UI separator for horizontal and vertical dividers.","dependencies":["@base-ui/react","cn"],"files":[{"path":"registry/base-mira/ui/separator.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"item","title":"Item","description":"List item layout with media, content, actions and an optional separator between items.","dependencies":["@base-ui/react","class-variance-authority","cn"],"registryDependencies":["ductbuix/costory-ui-registry/separator"],"files":[{"path":"registry/base-mira/ui/item.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"sidebar","title":"Sidebar","description":"Collapsible app sidebar with header, footer, groups, menus and a mobile sheet fallback.","dependencies":["cn","@base-ui/react","class-variance-authority","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/button","ductbuix/costory-ui-registry/input","ductbuix/costory-ui-registry/separator","ductbuix/costory-ui-registry/sheet","ductbuix/costory-ui-registry/skeleton","ductbuix/costory-ui-registry/tooltip","ductbuix/costory-ui-registry/use-mobile"],"files":[{"path":"registry/base-mira/ui/sidebar.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"breadcrumb","title":"Breadcrumb","description":"Navigation trail with links, the current page, separators and an ellipsis.","dependencies":["cn","@base-ui/react","lucide-react"],"files":[{"path":"registry/base-mira/ui/breadcrumb.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"navigation-menu","title":"Navigation Menu","description":"Top-level site navigation with dropdown content panels.","dependencies":["cn","@base-ui/react","class-variance-authority","lucide-react"],"files":[{"path":"registry/base-mira/ui/navigation-menu.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"tabs","title":"Tabs","description":"Tabbed content switcher with list and panel parts.","dependencies":["cn","@base-ui/react","class-variance-authority"],"files":[{"path":"registry/base-mira/ui/tabs.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"pagination","title":"Pagination","description":"Page controls with previous, next, numbered links and an ellipsis.","dependencies":["cn","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/button"],"files":[{"path":"registry/base-mira/ui/pagination.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"dialog","title":"Dialog","description":"Modal dialog with header, footer, title and description slots.","dependencies":["cn","@base-ui/react","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/button"],"files":[{"path":"registry/base-mira/ui/dialog.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"alert-dialog","title":"Alert Dialog","description":"Modal confirmation dialog that requires an explicit response.","dependencies":["cn","@base-ui/react"],"registryDependencies":["ductbuix/costory-ui-registry/button"],"files":[{"path":"registry/base-mira/ui/alert-dialog.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"sheet","title":"Sheet","description":"Side panel that slides in from any edge of the screen.","dependencies":["cn","@base-ui/react","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/button"],"files":[{"path":"registry/base-mira/ui/sheet.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"drawer","title":"Drawer","description":"Bottom drawer for touch-friendly panels and mobile sheets.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/drawer.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"popover","title":"Popover","description":"Floating panel anchored to a trigger element.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/popover.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"tooltip","title":"Tooltip","description":"Short hint shown on hover or focus.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/tooltip.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"dropdown-menu","title":"Dropdown Menu","description":"Menu of actions, checkbox and radio items opened from a trigger.","dependencies":["cn","@base-ui/react","lucide-react"],"files":[{"path":"registry/base-mira/ui/dropdown-menu.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"command","title":"Command","description":"Searchable command palette built on cmdk.","dependencies":["cn","cmdk","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/dialog","ductbuix/costory-ui-registry/input-group"],"files":[{"path":"registry/base-mira/ui/command.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"field","title":"Field","description":"Form field layout with label, description, error and fieldset groups.","dependencies":["cn","class-variance-authority"],"registryDependencies":["ductbuix/costory-ui-registry/label","ductbuix/costory-ui-registry/separator"],"files":[{"path":"registry/base-mira/ui/field.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"input","title":"Input","description":"Single-line text input.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/input.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"input-group","title":"Input Group","description":"Input with addons, buttons, text and icons attached to its edges.","dependencies":["cn","class-variance-authority"],"registryDependencies":["ductbuix/costory-ui-registry/button","ductbuix/costory-ui-registry/input","ductbuix/costory-ui-registry/textarea"],"files":[{"path":"registry/base-mira/ui/input-group.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"textarea","title":"Textarea","description":"Multi-line text input.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/textarea.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"label","title":"Label","description":"Accessible label for form controls.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/label.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"checkbox","title":"Checkbox","description":"Checkbox with checked, indeterminate and disabled states.","dependencies":["cn","@base-ui/react","lucide-react"],"files":[{"path":"registry/base-mira/ui/checkbox.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"radio-group","title":"Radio Group","description":"Group of radio items where one option can be selected.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/radio-group.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"switch","title":"Switch","description":"Toggle switch for on and off settings.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/switch.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"select","title":"Select","description":"Dropdown select with groups, labels and separators.","dependencies":["cn","@base-ui/react","lucide-react"],"files":[{"path":"registry/base-mira/ui/select.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"combobox","title":"Combobox","description":"Searchable select built on Base UI and input group.","dependencies":["cn","@base-ui/react","lucide-react"],"registryDependencies":["ductbuix/costory-ui-registry/button","ductbuix/costory-ui-registry/input-group"],"files":[{"path":"registry/base-mira/ui/combobox.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"table","title":"Table","description":"Styled table with header, body, footer, caption and row parts.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/table.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"chart","title":"Chart","description":"Chart container, tooltip and legend helpers built on Recharts.","dependencies":["cn","recharts@3.8.0"],"registryDependencies":["ductbuix/costory-ui-registry/card"],"files":[{"path":"registry/base-mira/ui/chart.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"badge","title":"Badge","description":"Small status or count label with variants.","dependencies":["cn","@base-ui/react","class-variance-authority"],"files":[{"path":"registry/base-mira/ui/badge.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"avatar","title":"Avatar","description":"User avatar with image, fallback and group support.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/avatar.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"empty","title":"Empty","description":"Placeholder for empty lists, search results and first-run states.","dependencies":["cn","class-variance-authority"],"files":[{"path":"registry/base-mira/ui/empty.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"kbd","title":"Kbd","description":"Keyboard shortcut label.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/kbd.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"skeleton","title":"Skeleton","description":"Loading placeholder that mimics content shape.","dependencies":["cn"],"files":[{"path":"registry/base-mira/ui/skeleton.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"alert","title":"Alert","description":"Inline message box with default and destructive variants.","dependencies":["cn","class-variance-authority"],"files":[{"path":"registry/base-mira/ui/alert.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"sonner","title":"Sonner","description":"Toast notifications built on Sonner, with the Costory theme.","dependencies":["sonner","next-themes","lucide-react"],"files":[{"path":"registry/base-mira/ui/sonner.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"spinner","title":"Spinner","description":"Animated loading indicator.","dependencies":["cn","lucide-react"],"files":[{"path":"registry/base-mira/ui/spinner.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"progress","title":"Progress","description":"Progress bar for determinate task completion.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/progress.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"accordion","title":"Accordion","description":"Stacked sections that expand and collapse.","dependencies":["cn","@base-ui/react","lucide-react"],"files":[{"path":"registry/base-mira/ui/accordion.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"collapsible","title":"Collapsible","description":"Single region that shows and hides its content.","dependencies":["@base-ui/react"],"files":[{"path":"registry/base-mira/ui/collapsible.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"scroll-area","title":"Scroll Area","description":"Scrollable region with a styled scrollbar.","dependencies":["cn","@base-ui/react"],"files":[{"path":"registry/base-mira/ui/scroll-area.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"button-group","title":"Button Group","description":"Groups related buttons and inputs into one joined control.","dependencies":["cn","@base-ui/react","class-variance-authority"],"registryDependencies":["ductbuix/costory-ui-registry/separator"],"files":[{"path":"registry/base-mira/ui/button-group.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"toggle","title":"Toggle","description":"Two-state button for on and off actions.","dependencies":["cn","@base-ui/react","class-variance-authority"],"files":[{"path":"registry/base-mira/ui/toggle.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"toggle-group","title":"Toggle Group","description":"Set of toggles that act as a single or multiple choice control.","dependencies":["cn","@base-ui/react","class-variance-authority"],"registryDependencies":["ductbuix/costory-ui-registry/toggle"],"files":[{"path":"registry/base-mira/ui/toggle-group.tsx","type":"registry:ui"}],"type":"registry:ui"},{"name":"use-mobile","title":"Use Mobile","description":"Hook that reports whether the viewport is below the mobile breakpoint.","files":[{"path":"registry/base-mira/hooks/use-mobile.ts","type":"registry:hook"}],"type":"registry:hook"}]}