{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "menu",
  "title": "Menu",
  "description": "Actions behind a button. Put destructive ones last, after a separator.",
  "dependencies": [
    "@radix-ui/react-dropdown-menu@^2.1.25"
  ],
  "registryDependencies": [
    "https://creance.pages.dev/r/creance-base.json"
  ],
  "files": [
    {
      "path": "menu/Menu.css",
      "content": "/* Shared by Menu and ContextMenu. */\n.cr-menu {\n  z-index: 50;\n  box-sizing: border-box;\n  min-width: 220px;\n  max-width: 320px;\n  padding: 6px;\n  border-radius: var(--cr-radius-lg);\n  color: var(--cr-color-text-default);\n  font-family: var(--cr-font-family-sans);\n  font-size: var(--cr-font-size-md);\n  animation: cr-menu-in var(--cr-motion-duration-fast) var(--cr-motion-easing-standard);\n}\n\n.cr-menu__item {\n  display: flex;\n  align-items: center;\n  gap: var(--cr-space-3);\n  min-height: 38px;\n  padding: 0 var(--cr-space-3);\n  border-radius: 10px;\n  outline: none;\n  cursor: default;\n  user-select: none;\n}\n\n.cr-menu__item[data-highlighted] {\n  background: var(--cr-color-bg-subtle);\n}\n\n.cr-menu__item[data-tone='danger'] {\n  color: var(--cr-color-danger-text);\n}\n\n.cr-menu__item[data-disabled] {\n  opacity: 0.5;\n}\n\n.cr-menu__text {\n  display: grid;\n  flex: 1;\n  gap: 2px;\n  padding-block: var(--cr-space-2);\n}\n\n.cr-menu__description {\n  color: var(--cr-color-text-muted);\n  font-size: var(--cr-font-size-xs);\n}\n\n.cr-menu__shortcut {\n  color: var(--cr-color-text-muted);\n  font-size: var(--cr-font-size-xs);\n}\n\n.cr-menu__separator {\n  height: 1px;\n  margin: 6px 4px;\n  background: var(--cr-color-border-default);\n}\n\n.cr-menu__label {\n  padding: var(--cr-space-2) var(--cr-space-3) var(--cr-space-1);\n  color: var(--cr-color-text-muted);\n  font-size: var(--cr-font-size-xs);\n  font-weight: var(--cr-font-weight-semibold);\n}\n\n@keyframes cr-menu-in {\n  from { opacity: 0; transform: scale(0.97); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .cr-menu { animation: none; }\n}\n",
      "type": "registry:file",
      "target": "@components/creance/menu/Menu.css"
    },
    {
      "path": "menu/Menu.tsx",
      "content": "'use client';\n\nimport * as RadixMenu from '@radix-ui/react-dropdown-menu';\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cx } from '@/lib/creance/cx';\nimport './Menu.css';\n\n/** Radix DropdownMenu: arrow keys move, typing jumps to an item, Escape closes and returns focus. */\nexport const Menu = RadixMenu.Root;\n/** Wraps one button. Use `asChild` with `Button`. */\nexport const MenuTrigger = RadixMenu.Trigger;\nexport const MenuGroup = RadixMenu.Group;\n\nexport const MenuContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof RadixMenu.Content>>(\n  function MenuContent({ className, sideOffset = 6, align = 'start', ...props }, ref) {\n    return (\n      <RadixMenu.Portal>\n        <RadixMenu.Content\n          ref={ref}\n          className={cx('cr-menu cr-popover', className)}\n          sideOffset={sideOffset}\n          align={align}\n          {...props}\n        />\n      </RadixMenu.Portal>\n    );\n  },\n);\n\nexport interface MenuItemProps extends ComponentPropsWithoutRef<typeof RadixMenu.Item> {\n  /** `danger` for destructive items such as Stop. Put them last, after a separator. */\n  tone?: 'default' | 'danger';\n  /** A keyboard shortcut shown at the end, for example `<Kbd>P</Kbd>`. Display only. */\n  shortcut?: ReactNode;\n  description?: ReactNode;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(function MenuItem(\n  { tone = 'default', shortcut, description, className, children, ...props },\n  ref,\n) {\n  return (\n    <RadixMenu.Item ref={ref} className={cx('cr-menu__item', className)} data-tone={tone} {...props}>\n      <span className=\"cr-menu__text\">\n        {children}\n        {description && <span className=\"cr-menu__description\">{description}</span>}\n      </span>\n      {shortcut && <span className=\"cr-menu__shortcut\">{shortcut}</span>}\n    </RadixMenu.Item>\n  );\n});\n\nexport const MenuSeparator = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof RadixMenu.Separator>>(\n  function MenuSeparator({ className, ...props }, ref) {\n    return <RadixMenu.Separator ref={ref} className={cx('cr-menu__separator', className)} {...props} />;\n  },\n);\n\nexport const MenuLabel = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof RadixMenu.Label>>(\n  function MenuLabel({ className, ...props }, ref) {\n    return <RadixMenu.Label ref={ref} className={cx('cr-menu__label', className)} {...props} />;\n  },\n);\n",
      "type": "registry:ui",
      "target": "@components/creance/menu/Menu.tsx"
    }
  ],
  "categories": [
    "molecule",
    "navigation"
  ],
  "type": "registry:ui"
}