{
	"$schema": "https://shadcn-svelte.com/schema/registry-item.json",
	"name": "context-menu",
	"title": "Context Menu",
	"type": "registry:ui",
	"description": "Kura Context 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 { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn, type WithoutChildrenOrChild } from '$UTILS$.js';\n  import type { Snippet } from 'svelte';\n  import CheckIcon from 'phosphor-svelte/lib/Check';\n\n  let {\n    ref = $bindable(null),\n    checked = $bindable(false),\n    indeterminate = $bindable(false),\n    class: className,\n    inset,\n    children: childrenProp,\n    ...restProps\n  }: WithoutChildrenOrChild<ContextMenuPrimitive.CheckboxItemProps> & {\n    inset?: boolean;\n    children?: Snippet;\n  } = $props();\n</script>\n\n<ContextMenuPrimitive.CheckboxItem\n  bind:ref\n  bind:checked\n  bind:indeterminate\n  data-slot=\"context-menu-checkbox-item\"\n  data-inset={inset}\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 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 class=\"pointer-events-none absolute right-2 text-[#d0e891]\">\n      {#if checked}\n        <CheckIcon />\n      {/if}\n    </span>\n    {@render childrenProp?.()}\n  {/snippet}\n</ContextMenuPrimitive.CheckboxItem>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-checkbox-item.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n  import ContextMenuPortal from './context-menu-portal.svelte';\n  import type { ComponentProps } from 'svelte';\n  import type { WithoutChildrenOrChild } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    portalProps,\n    class: className,\n    ...restProps\n  }: ContextMenuPrimitive.ContentProps & {\n    portalProps?: WithoutChildrenOrChild<ComponentProps<typeof ContextMenuPortal>>;\n  } = $props();\n</script>\n\n<ContextMenuPortal {...portalProps}>\n  <ContextMenuPrimitive.Content\n    bind:ref\n    data-slot=\"context-menu-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 z-50 min-w-48 overflow-x-hidden overflow-y-auto border border-[#222225] bg-[#09090b] p-1.5 text-zinc-50 shadow-none outline-none duration-100',\n      className\n    )}\n    {...restProps}\n  />\n</ContextMenuPortal>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-content.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    ...restProps\n  }: ContextMenuPrimitive.GroupHeadingProps & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<ContextMenuPrimitive.GroupHeading\n  bind:ref\n  data-slot=\"context-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": "context-menu/context-menu-group-heading.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: ContextMenuPrimitive.GroupProps = $props();\n</script>\n\n<ContextMenuPrimitive.Group\n  bind:ref\n  data-slot=\"context-menu-group\"\n  class={cn('border-border/60 py-1 not-first:border-t', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-group.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    variant = 'default',\n    ...restProps\n  }: ContextMenuPrimitive.ItemProps & {\n    inset?: boolean;\n    variant?: 'default' | 'destructive';\n  } = $props();\n</script>\n\n<ContextMenuPrimitive.Item\n  bind:ref\n  data-slot=\"context-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 focus:*:[svg]: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-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 group/context-menu-item\",\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "context-menu/context-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=\"context-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": "context-menu/context-menu-label.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n\n  let { ...restProps }: ContextMenuPrimitive.PortalProps = $props();\n</script>\n\n<ContextMenuPrimitive.Portal {...restProps} />\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-portal.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } 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  }: ContextMenuPrimitive.RadioGroupProps = $props();\n</script>\n\n<ContextMenuPrimitive.RadioGroup\n  bind:ref\n  bind:value\n  data-slot=\"context-menu-radio-group\"\n  class={cn('border-border/60 py-1 not-first:border-t', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-radio-group.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn, type WithoutChild } from '$UTILS$.js';\n  import CheckIcon from 'phosphor-svelte/lib/Check';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    children: childrenProp,\n    ...restProps\n  }: WithoutChild<ContextMenuPrimitive.RadioItemProps> & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<ContextMenuPrimitive.RadioItem\n  bind:ref\n  data-slot=\"context-menu-radio-item\"\n  data-inset={inset}\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 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 class=\"pointer-events-none absolute right-2 text-[#d0e891]\">\n      {#if checked}\n        <CheckIcon />\n      {/if}\n    </span>\n    {@render childrenProp?.({ checked })}\n  {/snippet}\n</ContextMenuPrimitive.RadioItem>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-radio-item.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: ContextMenuPrimitive.SeparatorProps = $props();\n</script>\n\n<ContextMenuPrimitive.Separator\n  bind:ref\n  data-slot=\"context-menu-separator\"\n  class={cn('-mx-1.5 my-1.5 h-px bg-[#222225]', className)}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-separator.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    children,\n    ...restProps\n  }: WithElementRef<HTMLAttributes<HTMLSpanElement>> = $props();\n</script>\n\n<span\n  bind:this={ref}\n  data-slot=\"context-menu-shortcut\"\n  class={cn(\n    'ml-auto font-mono text-[11px] uppercase tracking-[0.12em] text-zinc-500 group-focus/context-menu-item:text-[#d0e891]',\n    className\n  )}\n  {...restProps}\n>\n  {@render children?.()}\n</span>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-shortcut.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: ContextMenuPrimitive.SubContentProps = $props();\n</script>\n\n<ContextMenuPrimitive.SubContent\n  bind:ref\n  data-slot=\"context-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-32 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": "context-menu/context-menu-sub-content.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn, type WithoutChild } from '$UTILS$.js';\n  import CaretRightIcon from 'phosphor-svelte/lib/CaretRight';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    inset,\n    children,\n    ...restProps\n  }: WithoutChild<ContextMenuPrimitive.SubTriggerProps> & {\n    inset?: boolean;\n  } = $props();\n</script>\n\n<ContextMenuPrimitive.SubTrigger\n  bind:ref\n  data-slot=\"context-menu-sub-trigger\"\n  data-inset={inset}\n  class={cn(\n    \"flex cursor-default items-center 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 data-open:border-[#b9d765]/50 data-open:bg-[#18181b] data-open:text-zinc-50 data-inset:pl-9.5 data-inset:ps-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</ContextMenuPrimitive.SubTrigger>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-sub-trigger.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n\n  let { open = $bindable(false), ...restProps }: ContextMenuPrimitive.SubProps = $props();\n</script>\n\n<ContextMenuPrimitive.Sub bind:open {...restProps} />\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-sub.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n  import { cn } from '$UTILS$.js';\n\n  let {\n    ref = $bindable(null),\n    class: className,\n    ...restProps\n  }: ContextMenuPrimitive.TriggerProps = $props();\n</script>\n\n<ContextMenuPrimitive.Trigger\n  bind:ref\n  data-slot=\"context-menu-trigger\"\n  class={cn(\n    'cn-context-menu-trigger select-none outline-none focus-visible:ring-2 focus-visible:ring-ring/30',\n    className\n  )}\n  {...restProps}\n/>\n",
			"type": "registry:file",
			"target": "context-menu/context-menu-trigger.svelte"
		},
		{
			"content": "<script lang=\"ts\">\n  import { ContextMenu as ContextMenuPrimitive } from 'bits-ui';\n\n  let { open = $bindable(false), ...restProps }: ContextMenuPrimitive.RootProps = $props();\n</script>\n\n<ContextMenuPrimitive.Root bind:open {...restProps} />\n",
			"type": "registry:file",
			"target": "context-menu/context-menu.svelte"
		},
		{
			"content": "import Root from './context-menu.svelte';\nimport Sub from './context-menu-sub.svelte';\nimport Portal from './context-menu-portal.svelte';\nimport Trigger from './context-menu-trigger.svelte';\nimport Group from './context-menu-group.svelte';\nimport RadioGroup from './context-menu-radio-group.svelte';\nimport Item from './context-menu-item.svelte';\nimport GroupHeading from './context-menu-group-heading.svelte';\nimport Content from './context-menu-content.svelte';\nimport Shortcut from './context-menu-shortcut.svelte';\nimport RadioItem from './context-menu-radio-item.svelte';\nimport Separator from './context-menu-separator.svelte';\nimport SubContent from './context-menu-sub-content.svelte';\nimport SubTrigger from './context-menu-sub-trigger.svelte';\nimport CheckboxItem from './context-menu-checkbox-item.svelte';\nimport Label from './context-menu-label.svelte';\n\nexport {\n  Root,\n  Sub,\n  Portal,\n  Item,\n  GroupHeading,\n  Label,\n  Group,\n  Trigger,\n  Content,\n  Shortcut,\n  Separator,\n  RadioItem,\n  SubContent,\n  SubTrigger,\n  RadioGroup,\n  CheckboxItem,\n  //\n  Root as ContextMenu,\n  Sub as ContextMenuSub,\n  Portal as ContextMenuPortal,\n  Item as ContextMenuItem,\n  GroupHeading as ContextMenuGroupHeading,\n  Group as ContextMenuGroup,\n  Content as ContextMenuContent,\n  Trigger as ContextMenuTrigger,\n  Shortcut as ContextMenuShortcut,\n  RadioItem as ContextMenuRadioItem,\n  Separator as ContextMenuSeparator,\n  RadioGroup as ContextMenuRadioGroup,\n  SubContent as ContextMenuSubContent,\n  SubTrigger as ContextMenuSubTrigger,\n  CheckboxItem as ContextMenuCheckboxItem,\n  Label as ContextMenuLabel\n};\n",
			"type": "registry:file",
			"target": "context-menu/index.ts"
		}
	]
}