{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "menu",
  "title": "Menu",
  "description": "Menu 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/menu/menu.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { Menu as BaseMenu } from \"@base-ui/react/menu\";\nimport { cn } from \"@/lib/cn\";\n\nexport const Menu = BaseMenu.Root;\nexport const MenuTrigger = BaseMenu.Trigger;\n\nexport function MenuContent({\n  className,\n  children,\n  side = \"bottom\",\n  align = \"start\",\n  ...props\n}: React.ComponentProps<typeof BaseMenu.Popup> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  align?: \"start\" | \"center\" | \"end\";\n}) {\n  return (\n    <BaseMenu.Portal>\n      <BaseMenu.Positioner side={side} align={align} sideOffset={8}>\n        <BaseMenu.Popup\n          className={cn(\n            \"min-w-40 rounded-lg border border-line bg-surface-raised py-1 text-fg shadow-overlay\",\n            \"popup-motion\",\n            className,\n          )}\n          {...props}\n        >\n          {children}\n        </BaseMenu.Popup>\n      </BaseMenu.Positioner>\n    </BaseMenu.Portal>\n  );\n}\n\nexport function MenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.Item>) {\n  return (\n    <BaseMenu.Item\n      className={cn(\n        \"flex cursor-default items-center rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport function MenuCheckboxItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.CheckboxItem>) {\n  return (\n    <BaseMenu.CheckboxItem\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      <MenuCheckboxItemIndicator />\n      {children}\n    </BaseMenu.CheckboxItem>\n  );\n}\n\nexport function MenuCheckboxItemIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.CheckboxItemIndicator>) {\n  return (\n    <BaseMenu.CheckboxItemIndicator\n      className={cn(\"flex size-4 items-center justify-center\", className)}\n      {...props}\n    >\n      {/* phosphor: check regular */}\n      <svg\n        aria-hidden=\"true\"\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    </BaseMenu.CheckboxItemIndicator>\n  );\n}\n\nexport const MenuRadioGroup = BaseMenu.RadioGroup;\n\nexport function MenuRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.RadioItem>) {\n  return (\n    <BaseMenu.RadioItem\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      <MenuRadioItemIndicator />\n      {children}\n    </BaseMenu.RadioItem>\n  );\n}\n\nexport function MenuRadioItemIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.RadioItemIndicator>) {\n  return (\n    <BaseMenu.RadioItemIndicator\n      className={cn(\"flex size-4 items-center justify-center\", className)}\n      {...props}\n    >\n      <span className=\"size-1.5 rounded-full bg-fg\" />\n    </BaseMenu.RadioItemIndicator>\n  );\n}\n\nexport function MenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.Separator>) {\n  return (\n    <BaseMenu.Separator\n      className={cn(\"my-1 h-px bg-line\", className)}\n      {...props}\n    />\n  );\n}\n\nexport const MenuGroup = BaseMenu.Group;\n\nexport function MenuGroupLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.GroupLabel>) {\n  return (\n    <BaseMenu.GroupLabel\n      className={cn(\n        \"px-3 py-1.5 text-xs font-medium text-fg-subtle\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport const MenuSubmenuRoot = BaseMenu.SubmenuRoot;\n\nexport function MenuSubmenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseMenu.SubmenuTrigger>) {\n  return (\n    <BaseMenu.SubmenuTrigger\n      className={cn(\n        \"flex cursor-default items-center justify-between rounded-sm px-3 py-1.5 text-sm select-none outline-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      {/* phosphor: caret-right regular */}\n      <svg\n        aria-hidden=\"true\"\n        viewBox=\"0 0 256 256\"\n        fill=\"currentColor\"\n        className=\"size-3.5 text-fg-subtle\"\n      >\n        <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" />\n      </svg>\n    </BaseMenu.SubmenuTrigger>\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}