{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "recipes",
  "title": "Recipes",
  "description": "Shared class recipes: the field control, floating surfaces, menu rows.",
  "files": [
    {
      "path": "registry/ndeko/lib/recipes.ts",
      "content": "export const FOCUS_RING =\n  'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/25';\n\nexport const CONTROL_RECIPE = [\n  'w-full min-w-0 rounded-md border border-transparent bg-card text-base text-foreground',\n  'shadow-[0_1px_2px_rgb(0_0_0/0.05)] hairline-ring ring-foreground/12 outline-none',\n  'transition-[color,box-shadow,border-color] duration-150',\n  'selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground/75 md:text-[13px]',\n  'dark:bg-foreground/[0.04] dark:ring-foreground/15',\n  'focus-visible:border-foreground/30 focus-visible:ring-[3px] focus-visible:ring-ring/25 dark:focus-visible:border-foreground/25 dark:focus-visible:ring-ring/25',\n  'aria-invalid:border-destructive/60 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40',\n  'data-invalid:border-destructive/60 data-invalid:ring-destructive/20 dark:data-invalid:ring-destructive/40',\n  'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n].join(' ');\n\nexport const CONTROL_SIZES = {\n  sm: 'h-7 px-2 text-xs md:text-xs',\n  default: 'h-8 px-2.5',\n  lg: 'h-9 px-3',\n} as const;\n\nexport type ControlSize = keyof typeof CONTROL_SIZES;\n\nexport const POPUP_TRANSITION =\n  'origin-(--transform-origin) transition-[opacity,scale] duration-150 ease-(--ease-out-strong) data-ending-style:duration-100 data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0';\n\nexport const MENU_POPUP = [\n  'surface-raised max-h-(--available-height) min-w-48 overflow-y-auto rounded-xl p-1 outline-none',\n  POPUP_TRANSITION,\n].join(' ');\n\nexport const MENU_ITEM = [\n  'relative flex h-8 w-full cursor-default select-none items-center gap-2.5 rounded-md px-2 text-[13px] text-foreground outline-none',\n  'data-highlighted:bg-foreground/5 data-disabled:pointer-events-none data-disabled:opacity-50',\n  \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n].join(' ');\n\nexport const MENU_ITEM_DESTRUCTIVE =\n  \"text-destructive-ink data-highlighted:bg-destructive/10 [&_svg:not([class*='text-'])]:text-destructive-ink\";\n\nexport const MENU_LABEL =\n  'px-2 py-1.5 text-xs font-medium text-muted-foreground';\n\nexport const MENU_SEPARATOR = '-mx-1 my-1 h-(--hairline) bg-border';\n\nexport const MENU_SHORTCUT =\n  'ml-auto text-xs tabular-nums tracking-normal text-muted-foreground';\n\nexport const OVERLAY_BACKDROP =\n  'fixed inset-0 z-50 bg-black/40 backdrop-blur-xs transition-opacity duration-200 data-starting-style:opacity-0 data-ending-style:opacity-0';\n",
      "type": "registry:lib"
    }
  ],
  "categories": [
    "foundations"
  ],
  "type": "registry:lib"
}