{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "basecn",
  "homepage": "https://basecn.dev",
  "items": [
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "description": "Displays a callout for user attention.",
      "dependencies": ["class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/alert.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "A set of collapsible panels with headings.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/accordion.tsx",
          "type": "registry:ui"
        }
      ],
      "cssVars": {
        "theme": {
          "--animate-accordion-collapse": "accordion-collapse var(--tw-duration, 200ms) ease-out",
          "--animate-accordion-expand": "accordion-expand var(--tw-duration, 200ms) ease-out"
        }
      },
      "css": {
        "@keyframes accordion-collapse": {
          "from": {
            "height": "var(--accordion-panel-height, auto)"
          },
          "to": {
            "height": "0"
          }
        },
        "@keyframes accordion-expand": {
          "from": {
            "height": "0"
          },
          "to": {
            "height": "var(--accordion-panel-height, auto)"
          }
        }
      }
    },
    {
      "name": "autocomplete",
      "type": "registry:ui",
      "title": "Autocomplete",
      "description": "An input that suggests options as you type.",
      "registryDependencies": ["@basecn/input", "@basecn/button"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/autocomplete.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:ui",
      "title": "Alert Dialog",
      "description": "A dialog that requires user response to proceed.",
      "registryDependencies": ["@basecn/button"],
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/alert-dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "aspect-ratio",
      "type": "registry:ui",
      "title": "Aspect Ratio",
      "description": "Displays content within a desired ratio.",
      "files": [
        {
          "path": "src/registry/components/ui/aspect-ratio.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "An easily stylable avatar component.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/avatar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "Displays a badge or a component that looks like a badge.",
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "Displays the path to the current resource using a hierarchy of links.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/breadcrumb.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "Displays a button or a component that looks like a button.",
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:ui",
      "title": "Button Group",
      "description": "A container that groups related buttons together with consistent styling.",
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "registryDependencies": ["@basecn/separator"],
      "files": [
        {
          "path": "src/registry/components/ui/button-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "Displays a card with header, content, and footer.",
      "files": [
        {
          "path": "src/registry/components/ui/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "carousel",
      "type": "registry:ui",
      "title": "Carousel",
      "description": "A carousel with motion and swipe built using Embla.",
      "registryDependencies": ["@basecn/button"],
      "dependencies": ["embla-carousel-react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/carousel.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:ui",
      "title": "Calendar",
      "description": "A date field component that allows users to enter and edit date.",
      "registryDependencies": ["@basecn/button"],
      "dependencies": ["react-day-picker"],
      "files": [
        {
          "path": "src/registry/components/ui/calendar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "collapsible",
      "type": "registry:ui",
      "title": "Collapsible",
      "description": "An interactive component which expands/collapses a panel.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/collapsible.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "Fast, composable, unstyled command menu for React.",
      "registryDependencies": ["@basecn/dialog"],
      "dependencies": ["@base-ui/react", "cmdk", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/command.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "combobox",
      "type": "registry:ui",
      "title": "Combobox",
      "description": "An input combined with a list of predefined items to select.",
      "registryDependencies": [
        "@basecn/input",
        "@basecn/button",
        "@basecn/separator"
      ],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/combobox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:ui",
      "title": "Context Menu",
      "description": "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/context-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "drawer",
      "type": "registry:ui",
      "title": "Drawer",
      "description": "A drawer component for React.",
      "dependencies": ["vaul-base"],
      "files": [
        {
          "path": "src/registry/components/ui/drawer.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "drawer-base",
      "type": "registry:ui",
      "title": "Drawer (Base UI)",
      "description": "A panel that slides in from the edge of the screen.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/drawer-base.tsx",
          "target": "components/ui/drawer.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/dropdown-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "field",
      "type": "registry:ui",
      "title": "Field",
      "description": "Combine labels, controls, and help text to compose accessible form fields and grouped inputs.",
      "dependencies": ["class-variance-authority"],
      "registryDependencies": ["@basecn/label", "@basecn/separator"],
      "files": [
        {
          "path": "src/registry/components/ui/field.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "form",
      "type": "registry:ui",
      "title": "Form",
      "description": "Renders a form built with React Hook Form.",
      "registryDependencies": ["@basecn/label"],
      "dependencies": ["@base-ui/react", "react-hook-form"],
      "files": [
        {
          "path": "src/registry/components/ui/form.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "empty",
      "type": "registry:ui",
      "title": "Empty",
      "description": "Use the Empty component to display an empty state.",
      "dependencies": ["class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/empty.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "form-tanstack",
      "type": "registry:ui",
      "title": "Form",
      "description": "Renders a form built with Tanstack Form.",
      "registryDependencies": ["@basecn/label"],
      "dependencies": ["@base-ui/react", "@tanstack/react-form"],
      "files": [
        {
          "path": "src/registry/components/ui/form-tanstack.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "hover-card",
      "type": "registry:ui",
      "title": "Hover Card",
      "description": "For sighted users to preview content available behind a link.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/hover-card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "Displays a form input field or a component that looks like an input field.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input-group",
      "type": "registry:ui",
      "title": "Input Group",
      "description": "Display additional information or actions to an input or textarea.",
      "dependencies": ["class-variance-authority"],
      "registryDependencies": ["@basecn/button", "@basecn/input", "textarea"],
      "files": [
        {
          "path": "src/registry/components/ui/input-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "item",
      "type": "registry:ui",
      "title": "Item",
      "description": "A versatile component that you can use to display any content.",
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "registryDependencies": ["@basecn/separator"],
      "files": [
        {
          "path": "src/registry/components/ui/item.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "label",
      "type": "registry:ui",
      "title": "Label",
      "description": "Renders an accessible label associated with controls.",
      "files": [
        {
          "path": "src/registry/components/ui/label.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "menubar",
      "type": "registry:ui",
      "title": "Menubar",
      "description": "A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/menubar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:ui",
      "title": "Kbd",
      "description": "Used to display textual user input from keyboard.",
      "files": [
        {
          "path": "src/registry/components/ui/kbd.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "navigation-menu",
      "type": "registry:ui",
      "title": "Navigation Menu",
      "description": "A collection of links for navigating websites.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "src/registry/components/ui/navigation-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Pagination with page navigation, next and previous links.",
      "registryDependencies": ["@basecn/button"],
      "dependencies": ["lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/pagination.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "Displays rich content in a portal, triggered by a button.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/popover.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/progress.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "description": "A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/radio-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "resizable",
      "type": "registry:ui",
      "title": "Resizable",
      "description": "Accessible resizable panel groups and layouts with keyboard support.",
      "dependencies": ["lucide-react", "react-resizable-panels"],
      "files": [
        {
          "path": "src/registry/components/ui/resizable.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:ui",
      "title": "Scroll Area",
      "description": "Augments native scroll functionality for custom, cross-browser styling.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/scroll-area.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "Displays a list of options for the user to pick from—triggered by a button.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "Visually or semantically separates content.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator-extended",
      "type": "registry:ui",
      "title": "Separator (Extended)",
      "description": "Visually or semantically separates content.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/separator-extended.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "Extends the Dialog component to display content that complements the main content of the screen.",
      "dependencies": ["@base-ui/react", "lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sidebar",
      "type": "registry:item",
      "title": "Sidebar",
      "description": "A composable, themeable and customizable sidebar component.",
      "registryDependencies": [
        "skeleton",
        "@basecn/button",
        "@basecn/input",
        "@basecn/separator",
        "@basecn/sheet",
        "@basecn/tooltip"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority",
        "lucide-react"
      ],
      "files": [
        {
          "path": "src/registry/components/ui/sidebar.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/registry/hooks/use-mobile.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "Use to show a placeholder while content is loading.",
      "files": [
        {
          "path": "src/registry/components/ui/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "An input where the user selects a value from within a given range.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/slider.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sonner",
      "type": "registry:ui",
      "title": "Sonner",
      "description": "An opinionated toast component for React.",
      "dependencies": ["lucide-react", "next-themes", "sonner"],
      "files": [
        {
          "path": "src/registry/components/ui/sonner.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "spinner",
      "type": "registry:ui",
      "title": "Spinner",
      "description": "An indicator that can be used to show a loading state.",
      "dependencies": ["lucide-react"],
      "files": [
        {
          "path": "src/registry/components/ui/spinner.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A responsive table component.",
      "files": [
        {
          "path": "src/registry/components/ui/table.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "A set of layered sections of content, known as tab panels, that are displayed one at a time.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/tabs.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "Displays a form textarea or a component that looks like a textarea.",
      "files": [
        {
          "path": "src/registry/components/ui/textarea.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toggle",
      "type": "registry:ui",
      "title": "Toggle",
      "description": "A two-state button that can be either on or off.",
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/toggle.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toggle-group",
      "type": "registry:ui",
      "title": "Toggle Group",
      "description": "A set of two-state buttons that can be toggled on or off.",
      "registryDependencies": ["@basecn/toggle"],
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "files": [
        {
          "path": "src/registry/components/ui/toggle-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.",
      "dependencies": ["@base-ui/react"],
      "files": [
        {
          "path": "src/registry/components/ui/tooltip.tsx",
          "type": "registry:ui"
        }
      ]
    }
  ]
}
