{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "dropdown-menu",
  "type": "registry:ui",
  "dependencies": [
    "class-variance-authority",
    "@radix-ui/react-dropdown-menu"
  ],
  "registryDependencies": [
    "https://ui.getlyse.com/r/lyse-tokens.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ui/dropdown-menu/dropdown-menu.tsx",
      "content": "import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport \"./dropdown-menu.css\"\n\n/* ------------------------------------------------------------------ */\n/*  CVA                                                                */\n/* ------------------------------------------------------------------ */\n\nconst dropdownMenuItemVariants = cva(\n  \"dropdown-menu-item flex items-center rounded-[var(--layout-radius-lg)] text-content-note font-accent\",\n  {\n    variants: {\n      variant: {\n        default: \"\",\n        destructive: \"dropdown-menu-item-destructive\",\n      },\n      size: {\n        sm: \"h-[var(--layout-size-lg)] gap-[var(--layout-gap-sm)] py-[var(--layout-padding-sm)] px-[var(--layout-padding-md)] [&_.dropdown-menu-item-icon]:h-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon]:w-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon>svg]:h-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon>svg]:w-[var(--layout-size-xs)]\",\n        md: \"h-9 gap-[var(--layout-gap-md)] p-[var(--layout-padding-md)] [&_.dropdown-menu-item-icon]:h-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon]:w-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon>svg]:h-[var(--layout-size-xs)] [&_.dropdown-menu-item-icon>svg]:w-[var(--layout-size-xs)]\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"md\",\n    },\n  }\n)\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenu                                                       */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root {...props} />\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuTrigger                                                */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuContent                                                */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuContent({\n  className,\n  sideOffset = 6,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"dropdown-menu-content z-50 min-w-[8rem] overflow-hidden rounded-[var(--layout-radius-xl)] p-[var(--layout-padding-xs)] animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </DropdownMenuPrimitive.Content>\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuGroup                                                  */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group\n      data-slot=\"dropdown-menu-group\"\n      {...props}\n    />\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuItem                                                   */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuItem({\n  className,\n  variant,\n  size,\n  icon,\n  shortcut,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> &\n  VariantProps<typeof dropdownMenuItemVariants> & {\n    icon?: React.ReactNode\n    shortcut?: string\n  }) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      className={cn(dropdownMenuItemVariants({ variant, size, className }))}\n      {...props}\n    >\n      {icon && (\n        <span className=\"dropdown-menu-item-icon shrink-0\" aria-hidden=\"true\">\n          {icon}\n        </span>\n      )}\n      <span className=\"flex-1 min-w-0 text-start\">{children}</span>\n      {shortcut && (\n        <DropdownMenuShortcut>{shortcut}</DropdownMenuShortcut>\n      )}\n    </DropdownMenuPrimitive.Item>\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuLabel                                                  */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label>) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      className={cn(\n        \"dropdown-menu-label px-[var(--layout-padding-md)] py-[var(--layout-padding-sm)] text-content-caption font-accent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuSeparator                                              */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"dropdown-menu-separator my-[var(--layout-gap-xs)]\", className)}\n      {...props}\n    />\n  )\n}\n\n/* ------------------------------------------------------------------ */\n/*  DropdownMenuShortcut                                               */\n/* ------------------------------------------------------------------ */\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"dropdown-menu-shortcut shrink-0 inline-flex items-center justify-center h-[var(--layout-size-sm)] px-[var(--layout-padding-xs)] py-[var(--layout-padding-2xs)] rounded-[var(--layout-radius-sm)] text-content-caption\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  dropdownMenuItemVariants,\n}\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/new-york/ui/dropdown-menu/dropdown-menu.css",
      "content": "/* ================================================================\n * DROPDOWN MENU — Styles\n * Structure (flex, gap, padding, radius) lives in dropdown-menu.tsx via cva.\n * Theming (colors, borders, focus ring) lives here via tokens.\n * ================================================================ */\n\n/* --------------------------------\n * Content panel\n * -------------------------------- */\n.dropdown-menu-content {\n  background: var(--background-neutral-faint-default);\n  border: var(--layout-border-thin) solid var(--border-default);\n}\n\n/* --------------------------------\n * Icon\n * -------------------------------- */\n.dropdown-menu-item-icon {\n  color: var(--icon-neutral-moderate);\n}\n\n/* --------------------------------\n * Item — base\n * -------------------------------- */\n.dropdown-menu-item {\n  color: var(--text-base-strong);\n  cursor: pointer;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .dropdown-menu-item {\n    transition:\n      background 150ms ease,\n      color 150ms ease;\n  }\n}\n\n.dropdown-menu-item[data-highlighted] {\n  background: var(--background-neutral-faint-hover);\n  outline: none;\n}\n\n.dropdown-menu-item[data-highlighted] .dropdown-menu-item-icon {\n  color: var(--icon-neutral-strong);\n}\n\n.dropdown-menu-item:active {\n  background: var(--background-neutral-faint-pressed);\n}\n\n.dropdown-menu-item:focus-visible {\n  background: var(--background-neutral-faint-hover);\n  outline: none;\n}\n\n/* --------------------------------\n * Item — destructive\n * -------------------------------- */\n.dropdown-menu-item-destructive {\n  color: var(--text-danger-moderate);\n}\n\n.dropdown-menu-item-destructive .dropdown-menu-item-icon {\n  color: var(--icon-danger-moderate);\n}\n\n.dropdown-menu-item-destructive[data-highlighted] {\n  background: var(--background-danger-faint-hover);\n  color: var(--text-danger-moderate);\n}\n\n.dropdown-menu-item-destructive[data-highlighted] .dropdown-menu-item-icon {\n  color: var(--icon-danger-moderate);\n}\n\n.dropdown-menu-item-destructive:active {\n  background: var(--background-danger-faint-pressed);\n}\n\n.dropdown-menu-item-destructive:focus-visible {\n  outline: none;\n}\n\n/* --------------------------------\n * Item — disabled\n * -------------------------------- */\n.dropdown-menu-item[data-disabled] {\n  color: var(--text-disabled);\n  cursor: not-allowed;\n  pointer-events: none;\n}\n\n.dropdown-menu-item[data-disabled] .dropdown-menu-item-icon {\n  color: var(--text-disabled);\n}\n\n.dropdown-menu-item[data-disabled] .dropdown-menu-shortcut {\n  color: var(--text-disabled);\n}\n\n/* --------------------------------\n * Shortcut\n * -------------------------------- */\n.dropdown-menu-shortcut {\n  color: var(--text-base-medium);\n  border: var(--layout-border-thin) solid var(--border-default);\n}\n\n/* --------------------------------\n * Label (group header)\n * -------------------------------- */\n.dropdown-menu-label {\n  color: var(--text-base-moderate);\n}\n\n/* --------------------------------\n * Separator\n * -------------------------------- */\n.dropdown-menu-separator {\n  border-top: var(--layout-border-thin) solid var(--border-default);\n}\n",
      "type": "registry:ui"
    }
  ]
}