{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "select",
  "title": "Select",
  "description": "A styled native select — a square FUI control with a chevron.",
  "registryDependencies": [
    "@engram/cn",
    "@engram/tokens"
  ],
  "files": [
    {
      "path": "src/components/select.tsx",
      "content": "import type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"../lib/cn.js\";\n\nexport interface SelectOption {\n  value: string;\n  label: string;\n}\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n  /** Options to render (alternative to passing <option> children). */\n  options?: SelectOption[];\n  children?: ReactNode;\n}\n\n/**\n * A styled native select — a square FUI control with a chevron. Native for\n * accessibility and platform behavior; pass `options` or <option> children.\n */\nexport function Select({\n  options,\n  children,\n  className,\n  ...props\n}: SelectProps) {\n  return (\n    <span className={cn(\"relative inline-flex items-center\", className)}>\n      <select\n        className=\"w-full appearance-none border border-engram-border-strong bg-engram-raised py-1.5 pr-7 pl-2.5 font-engram-display text-[11px] text-engram-fg uppercase tracking-[0.08em] outline-none transition-colors focus:border-engram-accent\"\n        {...props}\n      >\n        {options\n          ? options.map((o) => (\n              <option key={o.value} value={o.value}>\n                {o.label}\n              </option>\n            ))\n          : children}\n      </select>\n      <svg\n        viewBox=\"0 0 12 12\"\n        aria-hidden=\"true\"\n        className=\"pointer-events-none absolute right-2 size-2.5 text-engram-muted\"\n      >\n        <path d=\"M2.5 4 6 8l3.5-4z\" fill=\"currentColor\" />\n      </svg>\n    </span>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/engram/select.tsx"
    }
  ],
  "meta": {
    "level": "component"
  },
  "docs": "Extend without forking: edit the copied source, use `asChild` (Radix Slot) to change the rendered element, pass the typed `annotations` prop for curated data (verdict/tags/per-plug), or use slot / render-prop props for arbitrary content. Requires the @engram/tokens theme (--engram-* CSS variables).",
  "categories": [
    "interaction"
  ],
  "type": "registry:component"
}