{
	"$schema": "https://shadcn-svelte.com/schema/registry-item.json",
	"name": "dropdown-menu",
	"title": "Dropdown Menu",
	"type": "registry:ui",
	"description": "Kura Dropdown Menu component source.",
	"devDependencies": [
		"bits-ui@^2.18.1",
		"@internationalized/date@^3.12.2",
		"phosphor-svelte@^3.1.0"
	],
	"registryDependencies": [
		"utils"
	],
	"files": [
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    value = $bindable([]),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.CheckboxGroupProps = $props();\n</script>\n\n<DropdownMenuPrimitive.CheckboxGroup\n  bind:ref\n  bind:value\n  data-slot=\"dropdown-menu-checkbox-group\"\n  class={cn('border-border/60 py-1 not-first:border-t', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-checkbox-group.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import MinusIcon from 'phosphor-svelte/lib/Minus';\n  import CheckIcon from 'phosphor-svelte/lib/Check';\n  import { cn, type WithoutChildrenOrChild } from '$UTILS$.js';\n  import type { Snippet } from 'svelte';\n\n  let {\n    ref = $bindable(null),\n    checked = $bindable(false),\n    indeterminate = $bindable(false),\n    class: className,\n    children: childrenProp,\n    ...restProps\n  }: WithoutChildrenOrChild<DropdownMenuPrimitive.CheckboxItemProps> & {\n    children?: Snippet;\n  } = $props();\n</script>\n\n<DropdownMenuPrimitive.CheckboxItem\n  bind:ref\n  bind:checked\n  bind:indeterminate\n  data-slot=\"dropdown-menu-checkbox-item\"\n  class={cn(\n    \"relative flex cursor-default items-center gap-2.5 border border-transparent py-2 pr-8 pl-3 font-mono text-xs font-medium uppercase tracking-[0.04em] text-zinc-300 outline-hidden select-none focus:border-[#b9d765]/50 focus:bg-[#18181b] focus:text-zinc-50 focus:**:text-[#d0e891] data-[checked=true]:text-[#d0e891] data-inset:pl-9.5 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\",\n    className\n  )}\n  {...restProps}\n>\n  {#snippet children({ checked, indeterminate })}\n    <span\n      class=\"pointer-events-none absolute right-2 flex items-center justify-center text-[#d0e891]\"\n      data-slot=\"dropdown-menu-checkbox-item-indicator\"\n    >\n      {#if indeterminate}\n        <MinusIcon />\n      {:else if checked}\n        <CheckIcon />\n      {/if}\n    </span>\n    {@render childrenProp?.()}\n  {/snippet}\n</DropdownMenuPrimitive.CheckboxItem>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-checkbox-item.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { cn, type WithoutChildrenOrChild } from '$UTILS$.js';\n  import DropdownMenuPortal from './dropdown-menu-portal.svelte';\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import type { ComponentProps } from 'svelte';\n\n  let {\n    ref = $bindable(null),\n    sideOffset = 4,\n    align = 'start',\n    portalProps,\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.ContentProps & {\n    portalProps?: WithoutChildrenOrChild<ComponentProps<typeof DropdownMenuPortal>>;\n  } = $props();\n</script>\n\n<DropdownMenuPortal {...portalProps}>\n  <DropdownMenuPrimitive.Content\n    bind:ref\n    data-slot=\"dropdown-menu-content\"\n    {sideOffset}\n    {align}\n    class={cn(\n      'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-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 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 min-w-48 w-(--bits-dropdown-menu-anchor-width) overflow-x-hidden overflow-y-auto border border-[#222225] bg-[#09090b] p-1.5 text-zinc-50 shadow-none outline-none duration-100 data-closed:overflow-hidden',\n      className\n    )}\n    {...restProps}\n  />\n</DropdownMenuPortal>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-content.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n  import type { ComponentProps } from 'svelte';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    ...restProps\n  }: ComponentProps<typeof DropdownMenuPrimitive.GroupHeading> & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<DropdownMenuPrimitive.GroupHeading\n  bind:ref\n  data-slot=\"dropdown-menu-group-heading\"\n  data-inset={inset}\n  class={cn(\n    'px-2 py-1.5 font-mono text-xs font-semibold uppercase tracking-[0.08em] text-zinc-400 data-[inset]:ps-8',\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-group-heading.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.GroupProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Group\n  bind:ref\n  data-slot=\"dropdown-menu-group\"\n  class={cn('border-border/60 py-1 not-first:border-t', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-group.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { cn } from '$UTILS$.js';\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    variant = 'default',\n    ...restProps\n  }: DropdownMenuPrimitive.ItemProps & {\n    inset?: boolean;\n    variant?: 'default' | 'destructive';\n  } = $props();\n</script>\n\n<DropdownMenuPrimitive.Item\n  bind:ref\n  data-slot=\"dropdown-menu-item\"\n  data-inset={inset}\n  data-variant={variant}\n  class={cn(\n    \"relative flex cursor-default items-center gap-2.5 border border-transparent px-3 py-2 font-mono text-xs font-medium uppercase tracking-[0.04em] text-zinc-300 outline-hidden select-none focus:border-[#b9d765]/50 focus:bg-[#18181b] focus:text-zinc-50 not-data-[variant=destructive]:focus:**:text-[#d0e891] data-[variant=destructive]:text-[#f85149] data-[variant=destructive]:focus:bg-[#d1242f]/10 data-[variant=destructive]:focus:text-[#f85149] data-[variant=destructive]:*:[svg]:text-[#f85149] data-inset:pl-9.5 data-[inset]:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 group/dropdown-menu-item\",\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-item.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { cn, type WithElementRef } from '$UTILS$.js';\n  import type { HTMLAttributes } from 'svelte/elements';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    children,\n    ...restProps\n  }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<div\n  bind:this={ref}\n  data-slot=\"dropdown-menu-label\"\n  data-inset={inset}\n  class={cn(\n    'px-3 py-2 font-mono text-xs font-semibold uppercase tracking-[0.08em] text-zinc-500 data-inset:pl-9.5 data-[inset]:pl-8',\n    className\n  )}\n  {...restProps}\n>\n  {@render children?.()}\n</div>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-label.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n\n  let { ...restProps }: DropdownMenuPrimitive.PortalProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Portal {...restProps} />\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-portal.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    value = $bindable(),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.RadioGroupProps = $props();\n</script>\n\n<DropdownMenuPrimitive.RadioGroup\n  bind:ref\n  bind:value\n  data-slot=\"dropdown-menu-radio-group\"\n  class={cn('border-border/60 py-1 not-first:border-t', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-radio-group.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import CheckIcon from 'phosphor-svelte/lib/Check';\n  import { cn, type WithoutChild } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    children: childrenProp,\n    ...restProps\n  }: WithoutChild<DropdownMenuPrimitive.RadioItemProps> = $props();\n</script>\n\n<DropdownMenuPrimitive.RadioItem\n  bind:ref\n  data-slot=\"dropdown-menu-radio-item\"\n  class={cn(\n    \"relative flex cursor-default items-center gap-2.5 border border-transparent py-2 pr-8 pl-3 font-mono text-xs font-medium uppercase tracking-[0.04em] text-zinc-300 outline-hidden select-none focus:border-[#b9d765]/50 focus:bg-[#18181b] focus:text-zinc-50 focus:**:text-[#d0e891] data-[checked=true]:text-[#d0e891] data-inset:pl-9.5 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\",\n    className\n  )}\n  {...restProps}\n>\n  {#snippet children({ checked })}\n    <span\n      class=\"pointer-events-none absolute right-2 flex items-center justify-center text-[#d0e891]\"\n      data-slot=\"dropdown-menu-radio-item-indicator\"\n    >\n      {#if checked}\n        <CheckIcon />\n      {/if}\n    </span>\n    {@render childrenProp?.({ checked })}\n  {/snippet}\n</DropdownMenuPrimitive.RadioItem>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-radio-item.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.SeparatorProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Separator\n  bind:ref\n  data-slot=\"dropdown-menu-separator\"\n  class={cn('-mx-1.5 my-1.5 h-px bg-[#222225]', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-separator.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import type { HTMLAttributes } from 'svelte/elements';\n  import { cn, type WithElementRef } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    children,\n    ...restProps\n  }: WithElementRef<HTMLAttributes<HTMLSpanElement>> = $props();\n</script>\n\n<span\n  bind:this={ref}\n  data-slot=\"dropdown-menu-shortcut\"\n  class={cn(\n    'ml-auto font-mono text-[11px] uppercase tracking-[0.12em] text-zinc-500 group-focus/dropdown-menu-item:text-[#d0e891]',\n    className\n  )}\n  {...restProps}\n>\n  {@render children?.()}\n</span>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-shortcut.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.SubContentProps = $props();\n</script>\n\n<DropdownMenuPrimitive.SubContent\n  bind:ref\n  data-slot=\"dropdown-menu-sub-content\"\n  class={cn(\n    'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-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 min-w-36 w-auto border border-[#222225] bg-[#09090b] p-1.5 text-zinc-50 shadow-none duration-100',\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-sub-content.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import CaretRightIcon from 'phosphor-svelte/lib/CaretRight';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    children,\n    ...restProps\n  }: DropdownMenuPrimitive.SubTriggerProps & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<DropdownMenuPrimitive.SubTrigger\n  bind:ref\n  data-slot=\"dropdown-menu-sub-trigger\"\n  data-inset={inset}\n  class={cn(\n    \"flex cursor-default items-center gap-2 border border-transparent px-3 py-2 font-mono text-xs font-medium uppercase tracking-[0.04em] text-zinc-300 outline-hidden select-none focus:border-[#b9d765]/50 focus:bg-[#18181b] focus:text-zinc-50 not-data-[variant=destructive]:focus:**:text-[#d0e891] data-open:border-[#b9d765]/50 data-open:bg-[#18181b] data-open:text-zinc-50 data-inset:pl-9.5 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\",\n    className\n  )}\n  {...restProps}\n>\n  {@render children?.()}\n  <CaretRightIcon class=\"ml-auto text-[#d0e891]\" />\n</DropdownMenuPrimitive.SubTrigger>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-sub-trigger.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n\n  let { open = $bindable(false), ...restProps }: DropdownMenuPrimitive.SubProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Sub bind:open {...restProps} />\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-sub.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: DropdownMenuPrimitive.TriggerProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Trigger\n  bind:ref\n  data-slot=\"dropdown-menu-trigger\"\n  class={cn(\n    'outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/30',\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu-trigger.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';\n\n  let { open = $bindable(false), ...restProps }: DropdownMenuPrimitive.RootProps = $props();\n</script>\n\n<DropdownMenuPrimitive.Root bind:open {...restProps} />\n",
			"type": "registry:file",
			"target": "dropdown-menu/dropdown-menu.svelte"
		},
		{
			"content": "import Root from './dropdown-menu.svelte';\nimport Sub from './dropdown-menu-sub.svelte';\nimport CheckboxGroup from './dropdown-menu-checkbox-group.svelte';\nimport CheckboxItem from './dropdown-menu-checkbox-item.svelte';\nimport Content from './dropdown-menu-content.svelte';\nimport Group from './dropdown-menu-group.svelte';\nimport Item from './dropdown-menu-item.svelte';\nimport Label from './dropdown-menu-label.svelte';\nimport RadioGroup from './dropdown-menu-radio-group.svelte';\nimport RadioItem from './dropdown-menu-radio-item.svelte';\nimport Separator from './dropdown-menu-separator.svelte';\nimport Shortcut from './dropdown-menu-shortcut.svelte';\nimport Trigger from './dropdown-menu-trigger.svelte';\nimport SubContent from './dropdown-menu-sub-content.svelte';\nimport SubTrigger from './dropdown-menu-sub-trigger.svelte';\nimport GroupHeading from './dropdown-menu-group-heading.svelte';\nimport Portal from './dropdown-menu-portal.svelte';\n\nexport {\n  CheckboxGroup,\n  CheckboxItem,\n  Content,\n  Portal,\n  Root as DropdownMenu,\n  CheckboxGroup as DropdownMenuCheckboxGroup,\n  CheckboxItem as DropdownMenuCheckboxItem,\n  Content as DropdownMenuContent,\n  Portal as DropdownMenuPortal,\n  Group as DropdownMenuGroup,\n  Item as DropdownMenuItem,\n  Label as DropdownMenuLabel,\n  RadioGroup as DropdownMenuRadioGroup,\n  RadioItem as DropdownMenuRadioItem,\n  Separator as DropdownMenuSeparator,\n  Shortcut as DropdownMenuShortcut,\n  Sub as DropdownMenuSub,\n  SubContent as DropdownMenuSubContent,\n  SubTrigger as DropdownMenuSubTrigger,\n  Trigger as DropdownMenuTrigger,\n  GroupHeading as DropdownMenuGroupHeading,\n  Group,\n  GroupHeading,\n  Item,\n  Label,\n  RadioGroup,\n  RadioItem,\n  Root,\n  Separator,\n  Shortcut,\n  Sub,\n  SubContent,\n  SubTrigger,\n  Trigger\n};\n",
			"type": "registry:file",
			"target": "dropdown-menu/index.ts"
		}
	]
}