{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "combobox",
  "title": "Combobox",
  "description": "Combobox component built on Base UI, styled with sc1m tokens.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "https://sc1m.vercel.app/r/tokens.json",
    "https://sc1m.vercel.app/r/cn.json"
  ],
  "files": [
    {
      "path": "src/components/ui/combobox/combobox.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { Combobox as BaseCombobox } from \"@base-ui/react/combobox\";\nimport { cn } from \"@/lib/cn\";\n\nexport const Combobox = BaseCombobox.Root;\n\nexport function ComboboxInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.Input>) {\n  return (\n    <BaseCombobox.Input\n      className={cn(\n        \"h-9 w-full rounded-md border border-line bg-surface-raised px-3 text-sm text-fg placeholder:text-fg-subtle\",\n        \"transition-colors duration-fast ease-out-quad\",\n        \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport function ComboboxContent({\n  className,\n  children,\n  side = \"bottom\",\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.Popup> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n  return (\n    <BaseCombobox.Portal>\n      <BaseCombobox.Positioner side={side} sideOffset={8}>\n        <BaseCombobox.Popup\n          className={cn(\n            \"max-h-72 min-w-[var(--anchor-width)] overflow-y-auto rounded-md border border-line bg-surface-raised p-1 text-fg shadow-overlay\",\n            \"popup-motion\",\n            className,\n          )}\n          {...props}\n        >\n          {children}\n        </BaseCombobox.Popup>\n      </BaseCombobox.Positioner>\n    </BaseCombobox.Portal>\n  );\n}\n\nexport function ComboboxList({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.List>) {\n  return <BaseCombobox.List className={cn(\"flex flex-col\", className)} {...props} />;\n}\n\nexport function ComboboxItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.Item>) {\n  return (\n    <BaseCombobox.Item\n      className={cn(\n        \"flex cursor-default items-center justify-between gap-2 rounded-sm px-2 py-1.5 text-sm text-fg select-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxItemIndicator />\n    </BaseCombobox.Item>\n  );\n}\n\nfunction ComboboxItemIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.ItemIndicator>) {\n  return (\n    <BaseCombobox.ItemIndicator\n      className={cn(\"flex text-accent\", className)}\n      {...props}\n    >\n      {/* phosphor: check regular */}\n      <svg\n        aria-hidden\n        viewBox=\"0 0 256 256\"\n        fill=\"currentColor\"\n        className=\"size-3.5\"\n      >\n        <path d=\"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z\" />\n      </svg>\n    </BaseCombobox.ItemIndicator>\n  );\n}\n\nexport function ComboboxEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseCombobox.Empty>) {\n  return (\n    <BaseCombobox.Empty\n      className={cn(\n        \"px-2 py-1.5 text-sm text-fg-subtle\",\n        // Base UI renders the CHILDREN only when the list is empty, but keeps\n        // the element mounted on purpose — it is a role=\"status\" live region,\n        // and its docs are explicit that hiding it with display:none, hidden,\n        // aria-hidden or conditional rendering breaks the announcement. So\n        // collapse the padding rather than the element: with results present\n        // the div is childless and would otherwise sit above the list as a\n        // 12px strip of dead space (py-1.5 top and bottom, no content).\n        \"empty:p-0\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}