{"version":3,"file":"ngx-com-components-menu.mjs","sources":["../../../projects/com/components/menu/menu-tokens.ts","../../../projects/com/components/menu/menu.utils.ts","../../../projects/com/components/menu/menu-trigger.directive.ts","../../../projects/com/components/menu/menu.variants.ts","../../../projects/com/components/menu/menu.component.ts","../../../projects/com/components/menu/menu-item.directive.ts","../../../projects/com/components/menu/menu-item-checkbox.component.ts","../../../projects/com/components/menu/menu-group.directive.ts","../../../projects/com/components/menu/menu-item-radio.component.ts","../../../projects/com/components/menu/menu-label.directive.ts","../../../projects/com/components/menu/menu-divider.directive.ts","../../../projects/com/components/menu/menu-sub-indicator.component.ts","../../../projects/com/components/menu/menu-shortcut.directive.ts","../../../projects/com/components/menu/index.ts","../../../projects/com/components/menu/ngx-com-components-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Interface for the root menu trigger, allowing items to close the entire menu tree.\n */\nexport interface RootMenuTrigger {\n  /** Close the menu and all submenus. */\n  close(): void;\n  /** Whether to close the menu when an item is selected. */\n  menuCloseOnSelect(): boolean;\n  /** Called by ComMenuComponent to register itself when attached. */\n  registerMenu?(menu: MenuRef): void;\n}\n\n/**\n * Interface for a parent menu, allowing items and submenus to coordinate.\n */\nexport interface MenuRef {\n  /** Unique ID of the menu for ARIA. */\n  readonly menuId: string;\n  /** Size variant inherited by items. */\n  readonly menuSize: () => 'sm' | 'md' | 'lg';\n  /** Close this menu level. */\n  close(): void;\n  /** Focus the first item. */\n  focusFirstItem(): void;\n  /** Focus the last item. */\n  focusLastItem(): void;\n}\n\n/**\n * Token to access the root menu trigger from anywhere in the menu tree.\n * Used by items to close the entire menu on selection.\n */\nexport const ROOT_MENU_TRIGGER: InjectionToken<RootMenuTrigger> = new InjectionToken<RootMenuTrigger>('ROOT_MENU_TRIGGER');\n\n/**\n * Token to access the nearest parent menu component.\n * Used by items and submenu triggers to coordinate with their parent.\n */\nexport const MENU_REF: InjectionToken<MenuRef> = new InjectionToken<MenuRef>('MENU_REF');\n","// Re-export from shared utilities\nexport { mergeClasses } from 'ngx-com/utils';\n\nlet menuIdCounter = 0;\n\n/**\n * Generate a unique ID for a menu instance.\n */\nexport function generateMenuId(): string {\n  return `menu-${++menuIdCounter}`;\n}\n","import {\n  booleanAttribute,\n  computed,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  inject,\n  Injector,\n  input,\n  model,\n  output,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport type { InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef, Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { filter } from 'rxjs/operators';\nimport { buildPopoverPositions } from 'ngx-com/components/popover';\nimport { MENU_REF, ROOT_MENU_TRIGGER, type MenuRef, type RootMenuTrigger } from './menu-tokens';\nimport { generateMenuId } from './menu.utils';\nimport type { MenuAlignment, MenuPosition } from './menu.variants';\n\n/** Side for submenu positioning. */\nexport type MenuSide = 'left' | 'right';\n\n/**\n * Unified menu trigger directive — opens a menu in a CDK overlay.\n *\n * **Root context** (outside a menu): Opens on click, has backdrop.\n * **Submenu context** (inside a menu): Opens on hover/ArrowRight, no backdrop.\n *\n * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`\n *\n * @example Root trigger\n * ```html\n * <button comButton [comMenuTrigger]=\"menu\">Options</button>\n * <ng-template #menu>\n *   <com-menu>\n *     <button comMenuItem>Edit</button>\n *     <button comMenuItem>Delete</button>\n *   </com-menu>\n * </ng-template>\n * ```\n *\n * @example Submenu trigger (inside a menu, combined with comMenuItem)\n * ```html\n * <button comMenuItem [comMenuTrigger]=\"shareMenu\" side=\"right\" align=\"start\">\n *   Share\n *   <com-menu-sub-indicator />\n * </button>\n * ```\n */\n@Directive({\n  selector: '[comMenuTrigger]',\n  exportAs: 'comMenuTrigger',\n  host: {\n    '[attr.aria-haspopup]': '\"menu\"',\n    '[attr.aria-expanded]': 'menuOpen()',\n    '[attr.aria-controls]': 'ariaControls()',\n    '(click)': 'onClick($event)',\n    '(keydown.arrowdown)': 'onArrowDown($event)',\n    '(keydown.arrowup)': 'onArrowUp($event)',\n    '(keydown.arrowright)': 'onArrowRight($event)',\n    '(keydown.arrowleft)': 'onArrowLeft($event)',\n    '(keydown.enter)': 'onEnter($event)',\n    '(keydown.space)': 'onSpace($event)',\n    '(mouseenter)': 'onMouseEnter()',\n    '(mouseleave)': 'onMouseLeave()',\n  },\n})\nexport class ComMenuTrigger implements RootMenuTrigger {\n  private readonly overlay = inject(Overlay);\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n  private readonly injector = inject(Injector);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly renderer = inject(Renderer2);\n\n  // Context detection - if MENU_REF exists, we're inside a menu (submenu trigger)\n  private readonly parentMenu = inject(MENU_REF, { optional: true });\n  private readonly parentRootTrigger = inject(ROOT_MENU_TRIGGER, { optional: true });\n\n  private overlayRef: OverlayRef | null = null;\n  private attachedMenu: MenuRef | null = null;\n  private readonly menuId: string = generateMenuId();\n\n  // Submenu hover timers\n  private openDelayTimer: ReturnType<typeof setTimeout> | null = null;\n  private closeDelayTimer: ReturnType<typeof setTimeout> | null = null;\n  private mouseInSubmenu = false;\n\n  // Listener cleanup functions\n  private submenuMouseEnterCleanup: (() => void) | null = null;\n  private submenuMouseLeaveCleanup: (() => void) | null = null;\n\n  // ─── Context ───\n\n  /** Whether this trigger is inside a menu (submenu context). */\n  readonly isSubmenu: Signal<boolean> = computed(() => !!this.parentMenu);\n\n  // ─── Inputs ───\n\n  /** Template containing `<com-menu>` with items. */\n  readonly comMenuTrigger: InputSignal<TemplateRef<unknown>> = input.required<TemplateRef<unknown>>();\n\n  /** Preferred position direction (root trigger only). */\n  readonly menuPosition: InputSignal<MenuPosition> = input<MenuPosition>('below');\n\n  /** Alignment along cross-axis (root trigger only). */\n  readonly menuAlignment: InputSignal<MenuAlignment> = input<MenuAlignment>('start');\n\n  /** Gap in px between trigger and menu. */\n  readonly menuOffset: InputSignal<number> = input<number>(4);\n\n  /** Prevents opening when true. */\n  readonly menuDisabled: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  /** Two-way bindable open state. */\n  readonly menuOpen: ModelSignal<boolean> = model<boolean>(false);\n\n  /** Custom CSS class(es) on the overlay panel. */\n  readonly menuPanelClass: InputSignal<string | string[]> = input<string | string[]>('');\n\n  /** Close menu when an item is selected. */\n  readonly menuCloseOnSelect: InputSignalWithTransform<boolean, unknown> = input(true, { transform: booleanAttribute });\n\n  /** Side for submenu positioning (submenu context only). */\n  readonly side: InputSignal<MenuSide> = input<MenuSide>('right');\n\n  /** Alignment for submenu positioning (submenu context only). */\n  readonly align: InputSignal<MenuAlignment> = input<MenuAlignment>('start');\n\n  /** Hover delay before submenu opens in ms (submenu context only). */\n  readonly subMenuOpenDelay: InputSignal<number> = input<number>(200);\n\n  /** Hover delay before submenu closes in ms (submenu context only). */\n  readonly subMenuCloseDelay: InputSignal<number> = input<number>(150);\n\n  // ─── Outputs ───\n\n  /** Emitted after menu opens. */\n  readonly menuOpened: OutputEmitterRef<void> = output<void>();\n\n  /** Emitted after menu closes. */\n  readonly menuClosed: OutputEmitterRef<void> = output<void>();\n\n  // ─── Computed ───\n\n  protected readonly ariaControls: Signal<string | null> = computed(() =>\n    this.menuOpen() ? this.menuId : null,\n  );\n\n  private readonly panelClassArray: Signal<string[]> = computed(() => {\n    const panelClass = this.menuPanelClass();\n    if (Array.isArray(panelClass)) return panelClass;\n    return panelClass ? [panelClass] : [];\n  });\n\n  constructor() {\n    this.destroyRef.onDestroy(() => this.disposeOverlay());\n  }\n\n  // ─── Public API ───\n\n  /** Programmatically open the menu. */\n  open(): void {\n    if (!this.menuDisabled() && !this.overlayRef?.hasAttached()) {\n      this.openMenu();\n      this.menuOpen.set(true);\n    }\n  }\n\n  /** Programmatically close the menu. */\n  close(): void {\n    if (this.isSubmenu()) {\n      // For submenu, close this level\n      this.closeSubmenu();\n    } else {\n      // For root, close entire menu tree\n      this.closeMenu();\n    }\n    this.menuOpen.set(false);\n  }\n\n  /** Toggle the menu open/close state. */\n  toggle(): void {\n    if (this.menuOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  /** Called by ComMenuComponent to register itself when attached. */\n  registerMenu(menu: MenuRef): void {\n    this.attachedMenu = menu;\n  }\n\n  // ─── Event Handlers ───\n\n  protected onClick(event: Event): void {\n    if (this.menuDisabled()) return;\n\n    if (!this.isSubmenu()) {\n      this.toggle();\n      return;\n    }\n\n    // Submenu: prevent comMenuItem's click handler and open submenu\n    event.preventDefault();\n    event.stopPropagation();\n    this.cancelOpenTimer();\n    this.openSubmenuInternal();\n    this.focusFirstItemDeferred();\n  }\n\n  protected onArrowDown(event: Event): void {\n    if (this.isSubmenu() || this.menuOpen()) return;\n\n    event.preventDefault();\n    this.open();\n    this.focusFirstItemDeferred();\n  }\n\n  protected onArrowUp(event: Event): void {\n    if (this.isSubmenu() || this.menuOpen()) return;\n\n    event.preventDefault();\n    this.open();\n    this.focusLastItemDeferred();\n  }\n\n  protected onArrowRight(event: Event): void {\n    if (!this.isSubmenu() || this.side() !== 'right') return;\n\n    event.preventDefault();\n    event.stopPropagation();\n    this.openSubmenuInternal();\n    this.focusFirstItemDeferred();\n  }\n\n  protected onArrowLeft(event: Event): void {\n    if (!this.isSubmenu()) return;\n\n    if (this.side() === 'left') {\n      event.preventDefault();\n      event.stopPropagation();\n      this.openSubmenuInternal();\n      this.focusFirstItemDeferred();\n    } else if (this.menuOpen()) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.closeSubmenu();\n    }\n  }\n\n  protected onEnter(event: Event): void {\n    if (this.menuDisabled()) return;\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (this.isSubmenu()) {\n      this.openSubmenuInternal();\n      this.focusFirstItemDeferred();\n    } else if (!this.menuOpen()) {\n      this.open();\n      this.focusFirstItemDeferred();\n    }\n  }\n\n  protected onSpace(event: Event): void {\n    this.onEnter(event);\n  }\n\n  protected onMouseEnter(): void {\n    if (this.menuDisabled()) return;\n    if (!this.isSubmenu()) return; // Hover only opens submenus\n\n    this.cancelCloseTimer();\n\n    this.openDelayTimer = setTimeout(() => {\n      this.openSubmenuInternal();\n    }, this.subMenuOpenDelay());\n  }\n\n  protected onMouseLeave(): void {\n    if (!this.isSubmenu()) return;\n\n    this.cancelOpenTimer();\n\n    this.closeDelayTimer = setTimeout(() => {\n      if (!this.mouseInSubmenu) {\n        this.closeSubmenu();\n      }\n    }, this.subMenuCloseDelay());\n  }\n\n  private focusFirstItemDeferred(): void {\n    setTimeout(() => this.attachedMenu?.focusFirstItem(), 0);\n  }\n\n  private focusLastItemDeferred(): void {\n    setTimeout(() => this.attachedMenu?.focusLastItem(), 0);\n  }\n\n  // ─── Menu Management ───\n\n  private openMenu(): void {\n    if (this.menuDisabled()) return;\n\n    this.createOverlay();\n    this.attachContent();\n    this.subscribeToCloseEvents();\n\n    this.menuOpened.emit();\n  }\n\n  private closeMenu(): void {\n    if (this.overlayRef?.hasAttached()) {\n      this.overlayRef.detach();\n    }\n    this.attachedMenu = null;\n    this.menuClosed.emit();\n    this.elementRef.nativeElement.focus();\n  }\n\n  // ─── Submenu Management ───\n\n  private openSubmenuInternal(): void {\n    if (this.menuOpen() || this.menuDisabled()) return;\n\n    this.createOverlay();\n    this.attachContent();\n    this.subscribeToSubmenuCloseEvents();\n    this.menuOpen.set(true);\n    this.menuOpened.emit();\n  }\n\n  private closeSubmenu(): void {\n    if (!this.menuOpen()) return;\n\n    this.cleanupSubmenuListeners();\n    if (this.overlayRef?.hasAttached()) {\n      this.overlayRef.detach();\n    }\n    this.menuOpen.set(false);\n    this.attachedMenu = null;\n    this.menuClosed.emit();\n  }\n\n  // ─── Overlay Management ───\n\n  private createOverlay(): void {\n    if (this.overlayRef) return;\n\n    const positions = this.isSubmenu()\n      ? buildPopoverPositions(this.side(), this.align(), 0)\n      : buildPopoverPositions(this.menuPosition(), this.menuAlignment(), this.menuOffset());\n\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.elementRef)\n      .withPositions(positions)\n      .withFlexibleDimensions(false)\n      .withPush(true)\n      .withViewportMargin(8);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: !this.isSubmenu(),\n      backdropClass: this.isSubmenu() ? '' : 'cdk-overlay-transparent-backdrop',\n      panelClass: ['com-menu-panel', ...this.panelClassArray()],\n    });\n  }\n\n  private attachContent(): void {\n    if (!this.overlayRef) return;\n\n    const template = this.comMenuTrigger();\n\n    // For submenu, wrap the root trigger to delegate close to the actual root\n    const rootTriggerValue: RootMenuTrigger = this.isSubmenu()\n      ? {\n          close: () => this.parentRootTrigger?.close(),\n          menuCloseOnSelect: () => this.parentRootTrigger?.menuCloseOnSelect() ?? true,\n          registerMenu: (menu: MenuRef) => {\n            this.attachedMenu = menu;\n          },\n        }\n      : this;\n\n    const injector = Injector.create({\n      parent: this.injector,\n      providers: [{ provide: ROOT_MENU_TRIGGER, useValue: rootTriggerValue }],\n    });\n\n    const portal = new TemplatePortal(template, this.viewContainerRef, undefined, injector);\n    this.overlayRef.attach(portal);\n\n    // For submenu, track mouse in overlay using Renderer2\n    if (this.isSubmenu()) {\n      const overlayEl = this.overlayRef.overlayElement;\n      this.submenuMouseEnterCleanup = this.renderer.listen(overlayEl, 'mouseenter', () => this.onSubmenuMouseEnter());\n      this.submenuMouseLeaveCleanup = this.renderer.listen(overlayEl, 'mouseleave', () => this.onSubmenuMouseLeave());\n    }\n  }\n\n  private subscribeToCloseEvents(): void {\n    if (!this.overlayRef) return;\n\n    this.overlayRef\n      .backdropClick()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close());\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(\n        filter((event) => event.key === 'Escape'),\n        takeUntilDestroyed(this.destroyRef),\n      )\n      .subscribe((event) => {\n        event.preventDefault();\n        this.close();\n      });\n\n  }\n\n  private subscribeToSubmenuCloseEvents(): void {\n    if (!this.overlayRef) return;\n\n    const closeKey = this.side() === 'right' ? 'ArrowLeft' : 'ArrowRight';\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(\n        filter((event) => event.key === 'Escape' || event.key === closeKey),\n        takeUntilDestroyed(this.destroyRef),\n      )\n      .subscribe((event) => {\n        event.preventDefault();\n        event.stopPropagation();\n        this.closeSubmenu();\n        this.elementRef.nativeElement.focus();\n      });\n\n  }\n\n  // ─── Submenu Hover Tracking ───\n\n  private onSubmenuMouseEnter(): void {\n    this.mouseInSubmenu = true;\n    this.cancelCloseTimer();\n  }\n\n  private onSubmenuMouseLeave(): void {\n    this.mouseInSubmenu = false;\n\n    this.closeDelayTimer = setTimeout(() => {\n      if (!this.mouseInSubmenu) {\n        this.closeSubmenu();\n      }\n    }, this.subMenuCloseDelay());\n  }\n\n  private cancelOpenTimer(): void {\n    if (this.openDelayTimer) {\n      clearTimeout(this.openDelayTimer);\n      this.openDelayTimer = null;\n    }\n  }\n\n  private cancelCloseTimer(): void {\n    if (this.closeDelayTimer) {\n      clearTimeout(this.closeDelayTimer);\n      this.closeDelayTimer = null;\n    }\n  }\n\n  // ─── Cleanup ───\n\n  private disposeOverlay(): void {\n    this.cancelOpenTimer();\n    this.cancelCloseTimer();\n    this.cleanupSubmenuListeners();\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n    this.attachedMenu = null;\n  }\n\n  private cleanupSubmenuListeners(): void {\n    this.submenuMouseEnterCleanup?.();\n    this.submenuMouseEnterCleanup = null;\n    this.submenuMouseLeaveCleanup?.();\n    this.submenuMouseLeaveCleanup = null;\n  }\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n// ─── Type Definitions ───\n\nexport type MenuSize = 'sm' | 'md' | 'lg';\nexport type MenuVariant = 'default' | 'compact';\nexport type MenuPosition = 'above' | 'below' | 'left' | 'right';\nexport type MenuAlignment = 'start' | 'center' | 'end';\n\n// ─── Menu Panel Variants ───\n\n/**\n * Menu panel styling variants.\n *\n * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`, `--radius-popover`\n */\nexport const menuPanelVariants: ReturnType<\n  typeof cva<{ size: Record<MenuSize, string>; variant: Record<MenuVariant, string> }>\n> = cva(\n  [\n    'bg-popover text-popover-foreground',\n    'border border-border',\n    'rounded-popover shadow-overlay',\n    'overflow-hidden',\n    'py-1',\n  ],\n  {\n    variants: {\n      size: {\n        sm: 'min-w-32',\n        md: 'min-w-48',\n        lg: 'min-w-64',\n      },\n      variant: {\n        default: '',\n        compact: 'py-0.5',\n      },\n    },\n    defaultVariants: {\n      size: 'md',\n      variant: 'default',\n    },\n  },\n);\n\nexport type MenuPanelVariants = VariantProps<typeof menuPanelVariants>;\n\n// ─── Menu Item Variants ───\n\ntype BooleanVariant = Record<'true' | 'false', string>;\n\n/**\n * Menu item styling variants (base for all item types).\n *\n * @tokens `--color-popover-foreground`, `--color-foreground`, `--color-muted`, `--color-warn`, `--color-warn-subtle`\n */\nexport const menuItemVariants: ReturnType<\n  typeof cva<{\n    size: Record<MenuSize, string>;\n    focused: BooleanVariant;\n    disabled: BooleanVariant;\n    destructive: BooleanVariant;\n  }>\n> = cva(\n  [\n    'relative flex items-center w-full',\n    'text-sm text-popover-foreground',\n    'outline-none select-none',\n    'transition-colors duration-fast',\n  ],\n  {\n    variants: {\n      size: {\n        sm: 'px-2 py-1 gap-2',\n        md: 'px-3 py-1.5 gap-2.5',\n        lg: 'px-4 py-2 gap-3',\n      },\n      focused: {\n        true: 'bg-muted text-foreground',\n        false: '',\n      },\n      disabled: {\n        true: 'bg-disabled text-disabled-foreground pointer-events-none',\n        false: 'cursor-pointer',\n      },\n      destructive: {\n        true: '',\n        false: '',\n      },\n    },\n    compoundVariants: [\n      { destructive: true, focused: true, class: 'bg-warn-subtle text-warn' },\n      { destructive: true, focused: false, class: 'text-warn' },\n    ],\n    defaultVariants: {\n      size: 'md',\n      focused: false,\n      disabled: false,\n      destructive: false,\n    },\n  },\n);\n\nexport type MenuItemVariants = VariantProps<typeof menuItemVariants>;\n\n// ─── Menu Label Variants ───\n\n/**\n * Menu label (section header) styling variants.\n *\n * @tokens `--color-muted-foreground`\n */\nexport const menuLabelVariants: ReturnType<typeof cva<{ size: Record<MenuSize, string> }>> = cva(\n  'text-muted-foreground font-medium select-none',\n  {\n    variants: {\n      size: {\n        sm: 'px-2 py-1 text-xs',\n        md: 'px-3 py-1.5 text-xs',\n        lg: 'px-4 py-2 text-sm',\n      },\n    },\n    defaultVariants: { size: 'md' },\n  },\n);\n\nexport type MenuLabelVariants = VariantProps<typeof menuLabelVariants>;\n\n// ─── Check/Radio Indicator Variants ───\n\n/**\n * Check/radio indicator sizing variants.\n */\nexport const menuCheckIndicatorVariants: ReturnType<typeof cva<{ size: Record<MenuSize, string> }>> = cva(\n  'inline-flex items-center justify-center shrink-0',\n  {\n    variants: {\n      size: {\n        sm: 'w-3.5 h-3.5',\n        md: 'w-4 h-4',\n        lg: 'w-5 h-5',\n      },\n    },\n    defaultVariants: { size: 'md' },\n  },\n);\n\nexport type MenuCheckIndicatorVariants = VariantProps<typeof menuCheckIndicatorVariants>;\n\n// ─── Keyboard Shortcut Hint Variants ───\n\n/**\n * Keyboard shortcut hint styling variants.\n *\n * @tokens `--color-muted-foreground`\n */\nexport const menuShortcutVariants: ReturnType<typeof cva<{ size: Record<MenuSize, string> }>> = cva(\n  'ml-auto text-muted-foreground tracking-widest',\n  {\n    variants: {\n      size: {\n        sm: 'text-[10px]',\n        md: 'text-xs',\n        lg: 'text-xs',\n      },\n    },\n    defaultVariants: { size: 'md' },\n  },\n);\n\nexport type MenuShortcutVariants = VariantProps<typeof menuShortcutVariants>;\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  contentChildren,\n  effect,\n  forwardRef,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport type { InputSignal, Signal, WritableSignal } from '@angular/core';\nimport { FocusKeyManager, type FocusableOption } from '@angular/cdk/a11y';\nimport { MENU_REF, ROOT_MENU_TRIGGER, type MenuRef } from './menu-tokens';\nimport { menuPanelVariants, type MenuSize, type MenuVariant } from './menu.variants';\nimport { generateMenuId, mergeClasses } from './menu.utils';\n\n/**\n * Base class for focusable menu items.\n * All item directives must implement this interface for FocusKeyManager.\n */\nexport abstract class ComMenuItemBase implements FocusableOption {\n  abstract focus(): void;\n  abstract getLabel(): string;\n  /** Whether the item is disabled. */\n  abstract get disabled(): boolean;\n}\n\n/**\n * Menu panel component that renders inside an overlay.\n * Manages keyboard navigation across its items using CDK FocusKeyManager.\n *\n * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`\n *\n * @example\n * ```html\n * <com-menu>\n *   <button comMenuItem>Edit</button>\n *   <button comMenuItem>Delete</button>\n * </com-menu>\n * ```\n */\n@Component({\n  selector: 'com-menu',\n  template: `\n    <div\n      [class]=\"panelClasses()\"\n      role=\"menu\"\n      tabindex=\"-1\"\n      [attr.aria-label]=\"ariaLabel() || null\"\n      [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n      [id]=\"menuId\"\n      [attr.data-state]=\"animationState()\"\n      (keydown)=\"onKeydown($event)\"\n    >\n      <ng-content />\n    </div>\n  `,\n  styles: `\n    :host {\n      display: contents;\n    }\n\n    [data-state='open'] {\n      animation: menu-in 150ms ease-out;\n    }\n\n    [data-state='closed'] {\n      animation: menu-out 100ms ease-in forwards;\n    }\n\n    @keyframes menu-in {\n      from {\n        opacity: 0;\n        transform: scale(0.96) translateY(4px);\n      }\n      to {\n        opacity: 1;\n        transform: scale(1) translateY(0);\n      }\n    }\n\n    @keyframes menu-out {\n      from {\n        opacity: 1;\n      }\n      to {\n        opacity: 0;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      [data-state='open'],\n      [data-state='closed'] {\n        animation: none;\n      }\n    }\n  `,\n  providers: [{ provide: MENU_REF, useExisting: forwardRef(() => ComMenuComponent) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComMenuComponent implements MenuRef {\n  private readonly rootTrigger = inject(ROOT_MENU_TRIGGER, { optional: true });\n\n  private keyManager: FocusKeyManager<ComMenuItemBase> | null = null;\n\n  // ─── Inputs ───\n\n  /** Size variant for the menu panel. */\n  readonly menuSize: InputSignal<MenuSize> = input<MenuSize>('md');\n\n  /** Spacing density variant. */\n  readonly menuVariant: InputSignal<MenuVariant> = input<MenuVariant>('default');\n\n  /** Accessible label for the menu. */\n  readonly ariaLabel: InputSignal<string | null> = input<string | null>(null);\n\n  /** ID of element labeling this menu. */\n  readonly ariaLabelledBy: InputSignal<string | null> = input<string | null>(null);\n\n  // ─── Internal State ───\n\n  readonly menuId: string = generateMenuId();\n  readonly animationState: WritableSignal<'open' | 'closed'> = signal<'open' | 'closed'>('open');\n\n  /** Query all focusable items in the menu. */\n  private readonly items: Signal<readonly ComMenuItemBase[]> = contentChildren<ComMenuItemBase>(ComMenuItemBase);\n\n  // ─── Computed ───\n\n  protected readonly panelClasses: Signal<string> = computed(() =>\n    mergeClasses(menuPanelVariants({ size: this.menuSize(), variant: this.menuVariant() })),\n  );\n\n  constructor() {\n    this.rootTrigger?.registerMenu?.(this);\n\n    effect(() => {\n      const items = this.items();\n      if (items.length > 0 && !this.keyManager) {\n        this.keyManager = new FocusKeyManager(items as ComMenuItemBase[])\n          .withVerticalOrientation()\n          .withWrap()\n          .withHomeAndEnd()\n          .withTypeAhead(200);\n      }\n    });\n  }\n\n  // ─── Public API ───\n\n  /** Focus the first non-disabled item. */\n  focusFirstItem(): void {\n    this.keyManager?.setFirstItemActive();\n  }\n\n  /** Focus the last non-disabled item. */\n  focusLastItem(): void {\n    this.keyManager?.setLastItemActive();\n  }\n\n  /** Close this menu level. */\n  close(): void {\n    this.rootTrigger?.close();\n  }\n\n  // ─── Event Handlers ───\n\n  protected onKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopPropagation();\n      this.close();\n      return;\n    }\n\n    // ArrowRight/ArrowLeft are handled by submenu triggers\n    if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') {\n      this.keyManager?.onKeydown(event);\n    }\n  }\n}\n","import {\n  booleanAttribute,\n  computed,\n  Directive,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport type { InputSignalWithTransform, OutputEmitterRef, Signal, WritableSignal } from '@angular/core';\nimport { ComMenuItemBase } from './menu.component';\nimport { MENU_REF, ROOT_MENU_TRIGGER } from './menu-tokens';\nimport { menuItemVariants, type MenuSize } from './menu.variants';\nimport { mergeClasses } from './menu.utils';\n\n/**\n * Menu item directive for actionable menu items.\n * Applied to buttons, anchors, or any element that should be selectable.\n *\n * @tokens `--color-popover-foreground`, `--color-foreground`, `--color-muted`, `--color-warn`, `--color-warn-subtle`\n *\n * @example\n * ```html\n * <button comMenuItem (menuItemSelect)=\"onEdit()\">Edit</button>\n * <button comMenuItem [menuItemDisabled]=\"true\">Disabled</button>\n * <button comMenuItem destructive>Delete</button>\n * ```\n */\n@Directive({\n  selector: '[comMenuItem]',\n  exportAs: 'comMenuItem',\n  providers: [{ provide: ComMenuItemBase, useExisting: forwardRef(() => ComMenuItem) }],\n  host: {\n    '[class]': 'itemClasses()',\n    '[attr.role]': '\"menuitem\"',\n    '[attr.tabindex]': '-1',\n    '[attr.aria-disabled]': 'menuItemDisabled() || null',\n    '[attr.disabled]': 'menuItemDisabled() || null',\n    '(click)': 'onAction($event)',\n    '(keydown.enter)': 'onAction($event)',\n    '(keydown.space)': 'onAction($event)',\n    '(mouseenter)': 'onMouseEnter()',\n    '(mouseleave)': 'onMouseLeave()',\n  },\n})\nexport class ComMenuItem extends ComMenuItemBase {\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly menu = inject(MENU_REF, { optional: true });\n  private readonly rootTrigger = inject(ROOT_MENU_TRIGGER, { optional: true });\n\n  // ─── Inputs ───\n\n  /** Disables the item. */\n  readonly menuItemDisabled: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  /** Marks item as destructive (delete, remove actions). */\n  readonly destructive: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  // ─── Outputs ───\n\n  /** Emitted when item is activated. */\n  readonly menuItemSelect: OutputEmitterRef<void> = output<void>();\n\n  // ─── Internal State ───\n\n  private readonly isFocused: WritableSignal<boolean> = signal(false);\n\n  // ─── Computed ───\n\n  private readonly size: Signal<MenuSize> = computed(() => this.menu?.menuSize() ?? 'md');\n\n  protected readonly itemClasses: Signal<string> = computed(() =>\n    mergeClasses(\n      menuItemVariants({\n        size: this.size(),\n        focused: this.isFocused(),\n        disabled: this.menuItemDisabled(),\n        destructive: this.destructive(),\n      }),\n    ),\n  );\n\n  // ─── FocusableOption Implementation ───\n\n  get disabled(): boolean {\n    return this.menuItemDisabled();\n  }\n\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n    this.isFocused.set(true);\n  }\n\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() ?? '';\n  }\n\n  // ─── Event Handlers ───\n\n  protected onAction(event: Event): void {\n    if (this.menuItemDisabled()) return;\n\n    event.preventDefault();\n    this.menuItemSelect.emit();\n\n    if (this.rootTrigger?.menuCloseOnSelect()) {\n      this.rootTrigger.close();\n    }\n  }\n\n  protected onMouseEnter(): void {\n    if (this.menuItemDisabled()) return;\n    this.focus();\n  }\n\n  protected onMouseLeave(): void {\n    this.isFocused.set(false);\n  }\n}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  model,\n  signal,\n} from '@angular/core';\nimport type { InputSignalWithTransform, ModelSignal, Signal, WritableSignal } from '@angular/core';\nimport { ComMenuItemBase } from './menu.component';\nimport { MENU_REF } from './menu-tokens';\nimport { menuCheckIndicatorVariants, menuItemVariants, type MenuSize } from './menu.variants';\nimport { mergeClasses } from './menu.utils';\n\n/**\n * Checkbox menu item component with toggleable checked state.\n *\n * @tokens `--color-popover-foreground`, `--color-foreground`, `--color-muted`\n *\n * @example\n * ```html\n * <button comMenuItemCheckbox [(checked)]=\"showSidebar\">Sidebar</button>\n * ```\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector -- attribute selector used on <button> host elements\n  selector: '[comMenuItemCheckbox]',\n  exportAs: 'comMenuItemCheckbox',\n  template: `\n    <span [class]=\"indicatorClasses()\">\n      @if (checked()) {\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          class=\"w-full h-full\"\n          aria-hidden=\"true\"\n        >\n          <polyline points=\"20 6 9 17 4 12\" />\n        </svg>\n      }\n    </span>\n    <ng-content />\n  `,\n  providers: [{ provide: ComMenuItemBase, useExisting: forwardRef(() => ComMenuItemCheckbox) }],\n  host: {\n    '[class]': 'itemClasses()',\n    '[attr.role]': '\"menuitemcheckbox\"',\n    '[attr.tabindex]': '-1',\n    '[attr.aria-checked]': 'checked()',\n    '[attr.aria-disabled]': 'menuItemDisabled() || null',\n    '[attr.disabled]': 'menuItemDisabled() || null',\n    '(click)': 'toggle($event)',\n    '(keydown.enter)': 'toggle($event)',\n    '(keydown.space)': 'toggle($event)',\n    '(mouseenter)': 'onMouseEnter()',\n    '(mouseleave)': 'onMouseLeave()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComMenuItemCheckbox extends ComMenuItemBase {\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly menu = inject(MENU_REF, { optional: true });\n\n  // ─── Inputs ───\n\n  /** Disables the item. */\n  readonly menuItemDisabled: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  /** Two-way bindable checked state. */\n  readonly checked: ModelSignal<boolean> = model<boolean>(false);\n\n  // ─── Internal State ───\n\n  private readonly isFocused: WritableSignal<boolean> = signal(false);\n\n  // ─── Computed ───\n\n  private readonly size: Signal<MenuSize> = computed(() => this.menu?.menuSize() ?? 'md');\n\n  protected readonly itemClasses: Signal<string> = computed(() =>\n    mergeClasses(\n      menuItemVariants({\n        size: this.size(),\n        focused: this.isFocused(),\n        disabled: this.menuItemDisabled(),\n      }),\n    ),\n  );\n\n  protected readonly indicatorClasses: Signal<string> = computed(() =>\n    mergeClasses(menuCheckIndicatorVariants({ size: this.size() })),\n  );\n\n  // ─── FocusableOption Implementation ───\n\n  get disabled(): boolean {\n    return this.menuItemDisabled();\n  }\n\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n    this.isFocused.set(true);\n  }\n\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() ?? '';\n  }\n\n  // ─── Event Handlers ───\n\n  protected toggle(event: Event): void {\n    if (this.menuItemDisabled()) return;\n\n    event.preventDefault();\n    this.checked.update((c) => !c);\n  }\n\n  protected onMouseEnter(): void {\n    if (this.menuItemDisabled()) return;\n    this.focus();\n  }\n\n  protected onMouseLeave(): void {\n    this.isFocused.set(false);\n  }\n}\n","import { Directive, forwardRef, input, model } from '@angular/core';\nimport type { InputSignal, ModelSignal } from '@angular/core';\n\n/**\n * Token for menu group to allow radio items to coordinate.\n */\nexport abstract class ComMenuGroupRef {\n  abstract readonly groupValue: () => unknown;\n  abstract setGroupValue(value: unknown): void;\n}\n\n/**\n * Menu group directive for organizing related items.\n * For radio items, ensures mutual exclusivity within the group.\n *\n * @example\n * ```html\n * <div comMenuGroup [(groupValue)]=\"sortField\">\n *   <button comMenuItemRadio value=\"name\">Name</button>\n *   <button comMenuItemRadio value=\"date\">Date</button>\n * </div>\n * ```\n *\n * @tokens None - uses only ARIA attributes\n */\n@Directive({\n  selector: '[comMenuGroup]',\n  exportAs: 'comMenuGroup',\n  providers: [{ provide: ComMenuGroupRef, useExisting: forwardRef(() => ComMenuGroup) }],\n  host: {\n    '[attr.role]': '\"group\"',\n    '[attr.aria-label]': 'ariaLabel() || null',\n  },\n})\nexport class ComMenuGroup extends ComMenuGroupRef {\n  /** Optional accessible label for the group. */\n  readonly ariaLabel: InputSignal<string | null> = input<string | null>(null);\n\n  /** Two-way bindable value for radio groups. */\n  readonly groupValue: ModelSignal<unknown> = model<unknown>(undefined);\n\n  setGroupValue(value: unknown): void {\n    this.groupValue.set(value);\n  }\n}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport type { InputSignal, InputSignalWithTransform, Signal, WritableSignal } from '@angular/core';\nimport { ComMenuItemBase } from './menu.component';\nimport { MENU_REF, ROOT_MENU_TRIGGER } from './menu-tokens';\nimport { ComMenuGroupRef } from './menu-group.directive';\nimport { menuCheckIndicatorVariants, menuItemVariants, type MenuSize } from './menu.variants';\nimport { mergeClasses } from './menu.utils';\n\n/**\n * Radio menu item component for single-selection within a group.\n *\n * @tokens `--color-popover-foreground`, `--color-foreground`, `--color-muted`\n *\n * @example\n * ```html\n * <div comMenuGroup [(groupValue)]=\"sortField\">\n *   <button comMenuItemRadio value=\"name\">Name</button>\n *   <button comMenuItemRadio value=\"date\">Date</button>\n * </div>\n * ```\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector -- attribute selector used on <button> host elements\n  selector: '[comMenuItemRadio]',\n  exportAs: 'comMenuItemRadio',\n  template: `\n    <span [class]=\"indicatorClasses()\">\n      @if (isChecked()) {\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 24 24\"\n          fill=\"currentColor\"\n          class=\"w-full h-full\"\n          aria-hidden=\"true\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"6\" />\n        </svg>\n      }\n    </span>\n    <ng-content />\n  `,\n  providers: [{ provide: ComMenuItemBase, useExisting: forwardRef(() => ComMenuItemRadio) }],\n  host: {\n    '[class]': 'itemClasses()',\n    '[attr.role]': '\"menuitemradio\"',\n    '[attr.tabindex]': '-1',\n    '[attr.aria-checked]': 'isChecked()',\n    '[attr.aria-disabled]': 'menuItemDisabled() || null',\n    '[attr.disabled]': 'menuItemDisabled() || null',\n    '(click)': 'select($event)',\n    '(keydown.enter)': 'select($event)',\n    '(keydown.space)': 'select($event)',\n    '(mouseenter)': 'onMouseEnter()',\n    '(mouseleave)': 'onMouseLeave()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComMenuItemRadio extends ComMenuItemBase {\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly menu = inject(MENU_REF, { optional: true });\n  private readonly rootTrigger = inject(ROOT_MENU_TRIGGER, { optional: true });\n  private readonly group = inject(ComMenuGroupRef, { optional: true });\n\n  // ─── Inputs ───\n\n  /** Disables the item. */\n  readonly menuItemDisabled: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  /** The value this radio item represents. */\n  readonly value: InputSignal<unknown> = input.required<unknown>();\n\n  // ─── Internal State ───\n\n  private readonly isFocused: WritableSignal<boolean> = signal(false);\n\n  // ─── Computed ───\n\n  private readonly size: Signal<MenuSize> = computed(() => this.menu?.menuSize() ?? 'md');\n\n  /** Whether this radio item is currently selected. */\n  readonly isChecked: Signal<boolean> = computed(() => this.group?.groupValue() === this.value());\n\n  protected readonly itemClasses: Signal<string> = computed(() =>\n    mergeClasses(\n      menuItemVariants({\n        size: this.size(),\n        focused: this.isFocused(),\n        disabled: this.menuItemDisabled(),\n      }),\n    ),\n  );\n\n  protected readonly indicatorClasses: Signal<string> = computed(() =>\n    mergeClasses(menuCheckIndicatorVariants({ size: this.size() })),\n  );\n\n  // ─── FocusableOption Implementation ───\n\n  get disabled(): boolean {\n    return this.menuItemDisabled();\n  }\n\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n    this.isFocused.set(true);\n  }\n\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() ?? '';\n  }\n\n  // ─── Event Handlers ───\n\n  protected select(event: Event): void {\n    if (this.menuItemDisabled()) return;\n\n    event.preventDefault();\n    this.group?.setGroupValue(this.value());\n\n    if (this.rootTrigger?.menuCloseOnSelect()) {\n      this.rootTrigger.close();\n    }\n  }\n\n  protected onMouseEnter(): void {\n    if (this.menuItemDisabled()) return;\n    this.focus();\n  }\n\n  protected onMouseLeave(): void {\n    this.isFocused.set(false);\n  }\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { MENU_REF } from './menu-tokens';\nimport { menuLabelVariants, type MenuSize } from './menu.variants';\nimport { mergeClasses } from './menu.utils';\n\nlet labelIdCounter = 0;\n\n/**\n * Non-interactive section label/header inside a menu.\n *\n * @tokens `--color-muted-foreground`\n *\n * @example\n * ```html\n * <span comMenuLabel>Team</span>\n * <button comMenuItem>View Members</button>\n * ```\n */\n@Directive({\n  selector: '[comMenuLabel]',\n  exportAs: 'comMenuLabel',\n  host: {\n    '[class]': 'labelClasses()',\n    '[attr.role]': '\"presentation\"',\n    '[id]': 'labelId',\n  },\n})\nexport class ComMenuLabel {\n  private readonly menu = inject(MENU_REF, { optional: true });\n\n  /** Unique ID that can be referenced by aria-labelledby. */\n  readonly labelId: string = `menu-label-${++labelIdCounter}`;\n\n  private readonly size: Signal<MenuSize> = computed(() => this.menu?.menuSize() ?? 'md');\n\n  protected readonly labelClasses: Signal<string> = computed(() =>\n    mergeClasses(menuLabelVariants({ size: this.size() })),\n  );\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Visual separator between menu sections.\n *\n * @tokens `--color-border`\n *\n * @example\n * ```html\n * <button comMenuItem>Edit</button>\n * <hr comMenuDivider />\n * <button comMenuItem>Delete</button>\n * ```\n */\n@Directive({\n  selector: '[comMenuDivider]',\n  exportAs: 'comMenuDivider',\n  host: {\n    class: 'block border-t border-border my-1',\n    '[attr.role]': '\"separator\"',\n  },\n})\nexport class ComMenuDivider {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Submenu indicator component — displays a chevron icon indicating a submenu.\n * Place inside a menu item that has `[comMenuTrigger]` to indicate it opens a submenu.\n *\n * @tokens `--color-muted-foreground`\n *\n * @example\n * ```html\n * <button comMenuItem [comMenuTrigger]=\"shareMenu\">\n *   Share\n *   <com-menu-sub-indicator />\n * </button>\n * ```\n */\n@Component({\n  selector: 'com-menu-sub-indicator',\n  template: `\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n    >\n      <polyline points=\"9 18 15 12 9 6\" />\n    </svg>\n  `,\n  host: {\n    class: 'ml-auto inline-flex items-center justify-center w-4 h-4 text-muted-foreground',\n    '[attr.aria-hidden]': 'true',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComMenuSubIndicator {}\n","import { computed, Directive, inject } from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { MENU_REF } from './menu-tokens';\nimport { menuShortcutVariants, type MenuSize } from './menu.variants';\nimport { mergeClasses } from './menu.utils';\n\n/**\n * Keyboard shortcut hint displayed in a menu item.\n *\n * @tokens `--color-muted-foreground`\n *\n * @example\n * ```html\n * <button comMenuItem>\n *   Save\n *   <span comMenuShortcut>⌘S</span>\n * </button>\n * ```\n */\n@Directive({\n  selector: '[comMenuShortcut]',\n  exportAs: 'comMenuShortcut',\n  host: {\n    '[class]': 'shortcutClasses()',\n  },\n})\nexport class ComMenuShortcut {\n  private readonly menu = inject(MENU_REF, { optional: true });\n\n  private readonly size: Signal<MenuSize> = computed(() => this.menu?.menuSize() ?? 'md');\n\n  protected readonly shortcutClasses: Signal<string> = computed(() =>\n    mergeClasses(menuShortcutVariants({ size: this.size() })),\n  );\n}\n","// Public API for the menu component\n\n// Main components/directives\nexport { ComMenuTrigger, type MenuSide } from './menu-trigger.directive';\nexport { ComMenuComponent, ComMenuItemBase } from './menu.component';\nexport { ComMenuItem } from './menu-item.directive';\nexport { ComMenuItemCheckbox } from './menu-item-checkbox.component';\nexport { ComMenuItemRadio } from './menu-item-radio.component';\nexport { ComMenuGroup, ComMenuGroupRef } from './menu-group.directive';\nexport { ComMenuLabel } from './menu-label.directive';\nexport { ComMenuDivider } from './menu-divider.directive';\nexport { ComMenuSubIndicator } from './menu-sub-indicator.component';\nexport { ComMenuShortcut } from './menu-shortcut.directive';\n\n// Injection tokens and types\nexport { ROOT_MENU_TRIGGER, MENU_REF, type RootMenuTrigger, type MenuRef } from './menu-tokens';\n\n// Variants and types\nexport {\n  menuPanelVariants,\n  menuItemVariants,\n  menuLabelVariants,\n  menuCheckIndicatorVariants,\n  menuShortcutVariants,\n  type MenuSize,\n  type MenuVariant,\n  type MenuPosition,\n  type MenuAlignment,\n  type MenuPanelVariants,\n  type MenuItemVariants,\n  type MenuLabelVariants,\n  type MenuCheckIndicatorVariants,\n  type MenuShortcutVariants,\n} from './menu.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}