@lumaui/angular 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"lumaui-angular.mjs","sources":["../../src/lib/button/button.directive.ts","../../src/lib/badge/badge.directive.ts","../../src/lib/card/card.component.ts","../../src/lib/card/card.component.html","../../src/lib/card/card-title.directive.ts","../../src/lib/card/card-description.directive.ts","../../src/lib/card/card-header.directive.ts","../../src/lib/card/card-content.directive.ts","../../src/lib/accordion/accordion-group.component.ts","../../src/lib/accordion/accordion.tokens.ts","../../src/lib/accordion/accordion-item.component.ts","../../src/lib/accordion/accordion-item.component.html","../../src/lib/accordion/accordion-trigger.directive.ts","../../src/lib/accordion/accordion-title.directive.ts","../../src/lib/accordion/accordion-icon.directive.ts","../../src/lib/accordion/accordion-content.directive.ts","../../src/lib/tooltip/tooltip.directive.ts","../../src/lib/tabs/tabs.tokens.ts","../../src/lib/tabs/tabs.component.ts","../../src/lib/tabs/tabs-list.directive.ts","../../src/lib/tabs/tabs-trigger.directive.ts","../../src/lib/tabs/tabs-panel.directive.ts","../../src/lib/tabs/tabs-indicator.component.ts","../../src/lib/modal/modal.tokens.ts","../../src/lib/modal/modal.component.ts","../../src/lib/modal/modal-overlay.component.ts","../../src/lib/modal/modal-container.component.ts","../../src/lib/modal/modal-header.directive.ts","../../src/lib/modal/modal-title.directive.ts","../../src/lib/modal/modal-content.directive.ts","../../src/lib/modal/modal-footer.directive.ts","../../src/lib/modal/modal-close.component.ts","../../src/lib/modal/index.ts","../../src/lib/toast/toast.tokens.ts","../../src/lib/toast/toast-close.component.ts","../../src/lib/toast/toast-item.component.ts","../../src/lib/toast/toast-container.component.ts","../../src/lib/toast/toast.service.ts","../../src/lib/toast/index.ts","../../src/index.ts","../../src/lumaui-angular.ts"],"sourcesContent":["import { Directive, input, computed, HostBinding } from '@angular/core';\nimport {\n buttonVariants,\n type ButtonVariant,\n type ButtonSize,\n type ButtonRadius,\n} from '@lumaui/core';\n\n@Directive({\n selector: 'button[lumaButton], a[lumaButton]',\n host: {\n '[attr.type]': 'lmType()',\n '[attr.disabled]': 'lmDisabled() ? \"\" : null',\n },\n})\nexport class LmButtonDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmVariant = input<ButtonVariant>('primary');\n lmSize = input<ButtonSize>('md');\n lmRadius = input<ButtonRadius>('default');\n lmDisabled = input<boolean>(false);\n lmType = input<'button' | 'submit' | 'reset'>('button');\n\n // Computed class string\n classes = computed(() =>\n buttonVariants({\n variant: this.lmVariant(),\n size: this.lmSize(),\n radius: this.lmRadius(),\n }),\n );\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n}\n","import { Directive, input, computed, HostBinding } from '@angular/core';\nimport {\n badgeVariants,\n type BadgeVariant,\n type BadgeRadius,\n} from '@lumaui/core';\n\n@Directive({\n selector: '[lumaBadge]',\n})\nexport class LmBadgeDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmVariant = input<BadgeVariant>('default');\n lmRadius = input<BadgeRadius>('default');\n\n // Computed class string\n classes = computed(() =>\n badgeVariants({\n variant: this.lmVariant(),\n radius: this.lmRadius(),\n }),\n );\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { cardVariants, type CardVariant } from '@lumaui/core';\n\n@Component({\n selector: 'luma-card',\n templateUrl: './card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LmCardComponent {\n /**\n * Card visual style variant\n * - default: Simple border card\n * - elevated: Card with shadow elevation\n * - subtle: Muted background card\n */\n lmVariant = input<CardVariant>('default');\n\n // Computed class string based on variant\n classes = computed(() => cardVariants({ variant: this.lmVariant() }));\n}\n","<div [class]=\"classes()\">\n <ng-content></ng-content>\n</div>\n","import { Directive, input, computed } from '@angular/core';\nimport { cardTitleVariants, type CardTitleSize } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardTitle]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardTitleDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmSize = input<CardTitleSize>('md');\n\n // Computed class string\n classes = computed(() => cardTitleVariants({ size: this.lmSize() }));\n}\n","import { Directive, input, computed } from '@angular/core';\nimport {\n cardDescriptionVariants,\n type CardDescriptionSize,\n} from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardDescription]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardDescriptionDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmSize = input<CardDescriptionSize>('md');\n\n // Computed class string\n classes = computed(() => cardDescriptionVariants({ size: this.lmSize() }));\n}\n","import { Directive, computed } from '@angular/core';\nimport { cardHeaderVariants } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardHeader]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardHeaderDirective {\n // Computed class string\n classes = computed(() => cardHeaderVariants());\n}\n","import { Directive, computed } from '@angular/core';\nimport { cardContentVariants } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardContent]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardContentDirective {\n // Computed class string\n classes = computed(() => cardContentVariants());\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n} from '@angular/core';\n\n/**\n * AccordionGroupComponent\n *\n * Optional wrapper component that coordinates multiple accordion items.\n * Supports controlled pattern for implementing business logic like:\n * - Single item open at a time\n * - Multiple items open\n * - Always keep first/last item open\n * - Maximum number of open items\n *\n * @example Controlled single mode\n * ```html\n * <luma-accordion-group [lmValue]=\"activeItem()\" (lmValueChange)=\"activeItem.set($event)\">\n * <luma-accordion-item lmId=\"item-1\">...</luma-accordion-item>\n * <luma-accordion-item lmId=\"item-2\">...</luma-accordion-item>\n * </luma-accordion-group>\n * ```\n *\n * @example Controlled multiple mode\n * ```html\n * <luma-accordion-group [lmValue]=\"activeItems()\" (lmValueChange)=\"activeItems.set($event)\">\n * <luma-accordion-item lmId=\"item-1\">...</luma-accordion-item>\n * <luma-accordion-item lmId=\"item-2\">...</luma-accordion-item>\n * </luma-accordion-group>\n * ```\n */\n@Component({\n selector: 'luma-accordion-group',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col',\n '[style.gap]': '\"var(--luma-accordion-item-gap)\"',\n },\n})\nexport class LmAccordionGroupComponent {\n /**\n * Controlled value for which items are open\n * - null: uncontrolled mode (each item manages its own state)\n * - string: single item mode (ID of open item)\n * - string[]: multiple items mode (IDs of open items)\n */\n lmValue = input<string | string[] | null>(null);\n\n /**\n * Emitted when an item is toggled\n * Returns the new value (string for single mode, string[] for multiple)\n */\n lmValueChange = output<string | string[]>();\n\n /**\n * Force single mode even when lmValue is an array\n * When true, only one item can be open at a time\n */\n lmSingle = input<boolean>(false);\n\n /**\n * Toggle an item by its ID\n * Called by child AccordionItemComponent when toggled\n */\n toggleItem(itemId: string): void {\n const current = this.lmValue();\n\n // If uncontrolled, do nothing (items manage their own state)\n if (current === null || current === undefined) {\n return;\n }\n\n let newValue: string | string[];\n\n if (this.lmSingle() || typeof current === 'string') {\n // Single mode: toggle between the item and empty\n newValue = current === itemId ? '' : itemId;\n } else {\n // Multiple mode: add/remove from array\n const arr = Array.isArray(current) ? [...current] : [];\n const index = arr.indexOf(itemId);\n if (index >= 0) {\n arr.splice(index, 1);\n } else {\n arr.push(itemId);\n }\n newValue = arr;\n }\n\n this.lmValueChange.emit(newValue);\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Interface for accordion item state that child directives can access\n */\nexport interface AccordionItemBase {\n /** Whether the accordion item is currently open */\n isOpen: Signal<boolean>;\n /** Whether the accordion item is disabled */\n lmDisabled: Signal<boolean>;\n /** Toggle the accordion open/closed state */\n toggle(): void;\n}\n\n/**\n * Injection token for accordion item\n * Allows child directives to access parent accordion item state\n */\nexport const ACCORDION_ITEM = new InjectionToken<AccordionItemBase>(\n 'AccordionItem',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport {\n accordionItemVariants,\n accordionContentWrapperVariants,\n type AccordionItemVariant,\n} from '@lumaui/core';\nimport { ACCORDION_ITEM, type AccordionItemBase } from './accordion.tokens';\nimport { LmAccordionGroupComponent } from './accordion-group.component';\n\n/**\n * AccordionItemComponent\n *\n * Wrapper component that contains the trigger and content.\n * Can be used standalone or within an AccordionGroupComponent.\n *\n * @example Standalone usage\n * ```html\n * <luma-accordion-item>\n * <button lumaAccordionTrigger>\n * <span lumaAccordionTitle>Title</span>\n * <svg lumaAccordionIcon>...</svg>\n * </button>\n * <div lumaAccordionContent>Content here...</div>\n * </luma-accordion-item>\n * ```\n *\n * @example With variants\n * ```html\n * <luma-accordion-item lmVariant=\"filled\">\n * ...\n * </luma-accordion-item>\n * ```\n */\n@Component({\n selector: 'luma-accordion-item',\n templateUrl: './accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: ACCORDION_ITEM, useExisting: LmAccordionItemComponent },\n ],\n host: {\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'lmVariant()',\n },\n})\nexport class LmAccordionItemComponent implements AccordionItemBase {\n private group = inject(LmAccordionGroupComponent, { optional: true });\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private previousClasses: string[] = [];\n\n constructor() {\n // Effect to reactively manage CVA classes without replacing user classes\n effect(() => {\n // Remove previous CVA classes\n this.previousClasses.forEach((c) => {\n this.renderer.removeClass(this.el.nativeElement, c);\n });\n\n // Add new CVA classes (preserves user-provided classes)\n const newClasses = this.wrapperClasses()\n .split(' ')\n .filter((c) => c);\n newClasses.forEach((c) => {\n this.renderer.addClass(this.el.nativeElement, c);\n });\n\n this.previousClasses = newClasses;\n });\n }\n\n /**\n * Unique identifier for this item (required when using AccordionGroup)\n */\n lmId = input<string>('');\n\n /**\n * Visual style variant\n * - default: Standard with border\n * - bordered: FAQ-style stacked items\n * - filled: Solid background (unified trigger/content)\n */\n lmVariant = input<AccordionItemVariant>('default');\n\n /**\n * Initial/controlled open state (for standalone usage)\n */\n lmOpen = input<boolean>(false);\n\n /**\n * Whether the accordion item is disabled\n */\n lmDisabled = input<boolean>(false);\n\n /**\n * Emitted when the open state changes\n * Useful for tracking/analytics\n */\n lmOpenChange = output<boolean>();\n\n // Internal state for uncontrolled mode\n private _isOpen = signal(false);\n\n /**\n * Computed open state\n * Priority: group controlled > lmOpen input > internal state\n */\n isOpen = computed(() => {\n // If in a controlled group, check group value\n if (this.group?.lmValue() !== null && this.group?.lmValue() !== undefined) {\n const value = this.group.lmValue();\n const id = this.lmId();\n return Array.isArray(value) ? value.includes(id) : value === id;\n }\n // Otherwise use input or internal state\n return this.lmOpen() || this._isOpen();\n });\n\n // CVA classes\n wrapperClasses = computed(() =>\n accordionItemVariants({\n variant: this.lmVariant(),\n }),\n );\n\n contentWrapperClasses = computed(() =>\n accordionContentWrapperVariants({ open: this.isOpen() }),\n );\n\n /**\n * Toggle the accordion open/closed state\n */\n toggle(): void {\n if (this.lmDisabled()) return;\n\n if (this.group && this.group.lmValue() !== null) {\n // Controlled by group\n this.group.toggleItem(this.lmId());\n } else {\n // Uncontrolled mode\n this._isOpen.update((v) => !v);\n }\n\n this.lmOpenChange.emit(this.isOpen());\n }\n}\n","<!-- Slot for trigger button -->\n<ng-content select=\"[lumaAccordionTrigger]\"></ng-content>\n\n<!-- Content wrapper with grid-rows animation -->\n<div [class]=\"contentWrapperClasses()\">\n <div class=\"overflow-hidden\">\n <ng-content select=\"[lumaAccordionContent]\"></ng-content>\n </div>\n</div>\n","import { Directive, inject, computed, HostListener } from '@angular/core';\nimport { accordionTriggerVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\n\nlet uniqueId = 0;\n\n/**\n * AccordionTriggerDirective\n *\n * Applied to a div element to make it the clickable trigger for the accordion.\n * Uses div instead of button for maximum layout flexibility.\n * Handles ARIA attributes and keyboard navigation automatically.\n *\n * @example Basic usage\n * ```html\n * <div lumaAccordionTrigger>\n * <span lumaAccordionTitle>Title</span>\n * <span lumaAccordionIcon>\n * <svg>...</svg>\n * </span>\n * </div>\n * ```\n *\n * @example Custom layout\n * ```html\n * <div lumaAccordionTrigger class=\"grid grid-cols-[auto_1fr_auto] gap-4\">\n * <svg class=\"w-6 h-6\">...</svg>\n * <div>\n * <span lumaAccordionTitle>Title</span>\n * <p class=\"text-sm\">Description</p>\n * </div>\n * <span lumaAccordionIcon>\n * <svg>...</svg>\n * </span>\n * </div>\n * ```\n */\n@Directive({\n selector: 'div[lumaAccordionTrigger]',\n host: {\n '[class]': 'classes()',\n role: 'button',\n '[attr.tabindex]': 'item.lmDisabled() ? -1 : 0',\n '[attr.aria-expanded]': 'item.isOpen()',\n '[attr.aria-controls]': 'contentId',\n '[attr.aria-disabled]': 'item.lmDisabled() ? \"true\" : null',\n '[id]': 'triggerId',\n },\n})\nexport class LmAccordionTriggerDirective {\n protected item = inject(ACCORDION_ITEM);\n\n private id = ++uniqueId;\n triggerId = `luma-accordion-trigger-${this.id}`;\n contentId = `luma-accordion-content-${this.id}`;\n\n classes = computed(() => accordionTriggerVariants());\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this.item.lmDisabled()) return;\n event.preventDefault();\n this.item.toggle();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.item.lmDisabled()) return;\n\n // Space and Enter don't trigger on div natively - manual handler required\n if (event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n this.item.toggle();\n }\n }\n}\n","import { Directive, input, computed } from '@angular/core';\nimport { accordionTitleVariants, type AccordionTitleSize } from '@lumaui/core';\n\n/**\n * AccordionTitleDirective\n *\n * Applies typography styles to the accordion title.\n * Supports size variants for different visual hierarchies.\n *\n * @example Basic usage\n * ```html\n * <span lumaAccordionTitle>What is Luma UI?</span>\n * ```\n *\n * @example With size variant\n * ```html\n * <span lumaAccordionTitle lmSize=\"lg\">Large Title</span>\n * ```\n */\n@Directive({\n selector: '[lumaAccordionTitle]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmAccordionTitleDirective {\n /**\n * Size variant for the title\n * - sm: Small text for compact UIs\n * - md: Default size (base text)\n * - lg: Large text for emphasis\n */\n lmSize = input<AccordionTitleSize>('md');\n\n classes = computed(() => accordionTitleVariants({ size: this.lmSize() }));\n}\n","import { Directive, inject, computed } from '@angular/core';\nimport { accordionIconVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\n\n/**\n * AccordionIconDirective\n *\n * Applies rotation animation to the accordion icon (typically a chevron).\n * Must be placed on a wrapper element (span or div), not directly on the SVG.\n * Automatically rotates based on the open state of the parent accordion item.\n *\n * @example With span wrapper (recommended)\n * ```html\n * <span lumaAccordionIcon>\n * <svg viewBox=\"0 0 24 24\" class=\"w-4 h-4\">\n * <path stroke=\"currentColor\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n * </svg>\n * </span>\n * ```\n *\n * @example With div wrapper\n * ```html\n * <div lumaAccordionIcon>\n * <my-chevron-icon></my-chevron-icon>\n * </div>\n * ```\n *\n * @example Customize rotation via CSS variable\n * ```html\n * <span lumaAccordionIcon style=\"--luma-accordion-icon-rotation: 90deg\">\n * <svg>...</svg>\n * </span>\n * ```\n */\n@Directive({\n selector: 'span[lumaAccordionIcon], div[lumaAccordionIcon]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-hidden]': 'true',\n },\n})\nexport class LmAccordionIconDirective {\n protected item = inject(ACCORDION_ITEM);\n\n classes = computed(() => accordionIconVariants({ open: this.item.isOpen() }));\n}\n","import { Directive, inject, computed } from '@angular/core';\nimport { accordionContentVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\nimport { LmAccordionTriggerDirective } from './accordion-trigger.directive';\n\nlet uniqueId = 0;\n\n/**\n * AccordionContentDirective\n *\n * Applied to the content area of the accordion.\n * Handles visibility, ARIA attributes, and fade animation.\n *\n * @example Basic usage\n * ```html\n * <div lumaAccordionContent>\n * <p>Your content here...</p>\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaAccordionContent]',\n host: {\n '[class]': 'classes()',\n role: 'region',\n '[id]': 'contentId',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.hidden]': '!item.isOpen() ? \"\" : null',\n },\n})\nexport class LmAccordionContentDirective {\n protected item = inject(ACCORDION_ITEM);\n protected trigger = inject(LmAccordionTriggerDirective, { optional: true });\n\n private id = ++uniqueId;\n contentId = `luma-accordion-content-${this.id}`;\n\n triggerId = computed(() => this.trigger?.triggerId ?? null);\n\n classes = computed(() =>\n accordionContentVariants({ open: this.item.isOpen() }),\n );\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n NgZone,\n Renderer2,\n computed,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { tooltipVariants, type TooltipPosition } from '@lumaui/core';\n\nconst TOOLTIP_GAP = 8;\n\n@Directive({\n selector: '[lumaTooltip]',\n host: {\n '[attr.aria-describedby]': 'tooltipId',\n },\n})\nexport class LmTooltipDirective implements OnDestroy {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private ngZone = inject(NgZone);\n\n // Inputs with lm prefix following Lumo convention\n lumaTooltip = input.required<string>();\n lmPosition = input<TooltipPosition>('top');\n lmHtml = input<boolean>(false);\n lmTrigger = input<'hover' | 'click' | 'focus'>('hover');\n lmDelay = input<number>(0);\n\n // State\n isVisible = signal(false);\n actualPosition = signal<TooltipPosition>('top');\n tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`;\n\n private tooltipElement: HTMLElement | null = null;\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private scrollListener: (() => void) | null = null;\n private resizeListener: (() => void) | null = null;\n private captureScrollHandler: (() => void) | null = null;\n\n classes = computed(() =>\n tooltipVariants({\n visible: this.isVisible(),\n }),\n );\n\n constructor() {\n // Create and update tooltip element reactively\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.ensureTooltipElement();\n this.updateContent();\n this.updateClasses();\n }\n });\n }\n\n private ensureTooltipElement(): void {\n if (this.tooltipElement) return;\n\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.setAttribute(this.tooltipElement, 'id', this.tooltipId);\n this.renderer.setAttribute(this.tooltipElement, 'role', 'tooltip');\n // Portal: append to document.body to avoid overflow clipping\n this.renderer.appendChild(this.document.body, this.tooltipElement);\n }\n\n private updateContent(): void {\n if (!this.tooltipElement) return;\n\n const content = this.lumaTooltip();\n if (this.lmHtml()) {\n this.tooltipElement.innerHTML = content;\n } else {\n this.tooltipElement.textContent = content;\n }\n }\n\n private updateClasses(): void {\n if (!this.tooltipElement) return;\n this.tooltipElement.className = this.classes();\n }\n\n private updatePosition(): void {\n if (!this.tooltipElement || !isPlatformBrowser(this.platformId)) return;\n\n const triggerRect = this.el.nativeElement.getBoundingClientRect();\n const position = this.actualPosition();\n\n let top: number;\n let left: number;\n let transform: string;\n\n switch (position) {\n case 'top':\n left = triggerRect.left + triggerRect.width / 2;\n top = triggerRect.top - TOOLTIP_GAP;\n transform = 'translate(-50%, -100%)';\n break;\n case 'bottom':\n left = triggerRect.left + triggerRect.width / 2;\n top = triggerRect.bottom + TOOLTIP_GAP;\n transform = 'translate(-50%, 0%)';\n break;\n case 'left':\n left = triggerRect.left - TOOLTIP_GAP;\n top = triggerRect.top + triggerRect.height / 2;\n transform = 'translate(-100%, -50%)';\n break;\n case 'right':\n left = triggerRect.right + TOOLTIP_GAP;\n top = triggerRect.top + triggerRect.height / 2;\n transform = 'translate(0%, -50%)';\n break;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'transform', transform);\n }\n\n private addPositionListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Run outside Angular zone for performance — no change detection needed\n this.ngZone.runOutsideAngular(() => {\n const onReposition = () => this.updatePosition();\n\n this.scrollListener = this.renderer.listen(\n 'window',\n 'scroll',\n onReposition,\n );\n // Capture phase catches scroll events on any ancestor\n this.document.addEventListener('scroll', onReposition, true);\n this.captureScrollHandler = onReposition;\n this.resizeListener = this.renderer.listen(\n 'window',\n 'resize',\n onReposition,\n );\n });\n }\n\n private removePositionListeners(): void {\n if (this.scrollListener) {\n this.scrollListener();\n this.scrollListener = null;\n }\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n // Remove capture-phase scroll listener\n if (this.captureScrollHandler) {\n this.document.removeEventListener(\n 'scroll',\n this.captureScrollHandler,\n true,\n );\n this.captureScrollHandler = null;\n }\n }\n\n private isTouchDevice(): boolean {\n if (!isPlatformBrowser(this.platformId)) return false;\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n private getFlippedPosition(preferred: TooltipPosition): TooltipPosition {\n if (!this.tooltipElement || !isPlatformBrowser(this.platformId)) {\n return preferred;\n }\n\n const triggerRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n switch (preferred) {\n case 'top':\n if (triggerRect.top - tooltipRect.height - TOOLTIP_GAP < 0) {\n return 'bottom';\n }\n break;\n case 'bottom':\n if (\n triggerRect.bottom + tooltipRect.height + TOOLTIP_GAP >\n viewportHeight\n ) {\n return 'top';\n }\n break;\n case 'left':\n if (triggerRect.left - tooltipRect.width - TOOLTIP_GAP < 0) {\n return 'right';\n }\n break;\n case 'right':\n if (\n triggerRect.right + tooltipRect.width + TOOLTIP_GAP >\n viewportWidth\n ) {\n return 'left';\n }\n break;\n }\n\n return preferred;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n // Ignore hover on touch devices\n if (this.isTouchDevice()) return;\n if (this.lmTrigger() !== 'hover') return;\n this.show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n if (this.isTouchDevice()) return;\n if (this.lmTrigger() !== 'hover') return;\n this.hide();\n }\n\n @HostListener('click')\n onClick(): void {\n // On touch devices, click acts as toggle even with trigger='hover'\n if (this.isTouchDevice() || this.lmTrigger() === 'click') {\n this.toggle();\n }\n }\n\n @HostListener('focus')\n onFocus(): void {\n if (this.lmTrigger() === 'focus' || this.lmTrigger() === 'hover') {\n this.show();\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n if (this.lmTrigger() === 'focus' || this.lmTrigger() === 'hover') {\n this.hide();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.hide();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n if (this.lmTrigger() !== 'click' && !this.isTouchDevice()) return;\n const target = event.target as Node;\n // Check both trigger and portal tooltip (tooltip is now in body, not trigger)\n if (\n !this.el.nativeElement.contains(target) &&\n !this.tooltipElement?.contains(target)\n ) {\n this.hide();\n }\n }\n\n @HostListener('document:touchstart', ['$event'])\n onDocumentTouch(event: TouchEvent): void {\n if (!this.isVisible()) return;\n const target = event.target as Node;\n if (\n !this.el.nativeElement.contains(target) &&\n !this.tooltipElement?.contains(target)\n ) {\n this.hide();\n }\n }\n\n show(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n\n const delay = this.lmDelay();\n const showAction = () => {\n // Calculate position with auto-flip\n const actualPosition = this.getFlippedPosition(this.lmPosition());\n this.actualPosition.set(actualPosition);\n this.isVisible.set(true);\n this.updateClasses();\n // Position after DOM paint so tooltip dimensions are available\n requestAnimationFrame(() => {\n this.updatePosition();\n this.addPositionListeners();\n });\n };\n\n if (delay > 0) {\n this.showTimeout = setTimeout(showAction, delay);\n } else {\n showAction();\n }\n }\n\n hide(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n this.isVisible.set(false);\n this.updateClasses();\n this.removePositionListeners();\n }\n\n toggle(): void {\n if (this.isVisible()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n ngOnDestroy(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n this.removePositionListeners();\n if (this.tooltipElement) {\n this.renderer.removeChild(this.document.body, this.tooltipElement);\n }\n }\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { type TabsVariant } from '@lumaui/core';\n\nexport interface TabsGroupBase {\n /** Currently selected tab value */\n value: WritableSignal<string | null>;\n /** Visual style of the tabs (underline, background, pill) */\n lmVariant: Signal<TabsVariant>;\n /** Whether to lazy load panel content */\n lmLazy: Signal<boolean>;\n /** Select a tab by value */\n select(value: string): void;\n /** Register a trigger element */\n registerTrigger(value: string, element: HTMLElement): void;\n /** Unregister a trigger element */\n unregisterTrigger(value: string): void;\n /** Get all registered triggers */\n getTriggers(): Map<string, HTMLElement>;\n /** Focus next trigger (for keyboard navigation) */\n focusNextTrigger(): void;\n /** Focus previous trigger (for keyboard navigation) */\n focusPreviousTrigger(): void;\n /** Focus first trigger */\n focusFirstTrigger(): void;\n /** Focus last trigger */\n focusLastTrigger(): void;\n}\n\nexport interface TabsListBase {\n /** Reference to the native element */\n elementRef: { nativeElement: HTMLElement };\n /** Get the currently active trigger element */\n getActiveTrigger(): HTMLElement | null;\n /** Get the element that acts as the semantic tablist container */\n getListContainer(): HTMLElement;\n}\n\n/**\n * Injection token for tabs group\n * Allows child components to access parent tabs state\n */\nexport const TABS_GROUP = new InjectionToken<TabsGroupBase>('TabsGroup');\n\n/**\n * Injection token for tabs list\n * Allows indicator to access trigger positions\n */\nexport const TABS_LIST = new InjectionToken<TabsListBase>('TabsList');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n effect,\n} from '@angular/core';\nimport { type TabsVariant } from '@lumaui/core';\nimport { TABS_GROUP, type TabsGroupBase } from './tabs.tokens';\n\n/**\n * Tabs container component\n *\n * Manages tab selection state, keyboard navigation, and provides context\n * to child components (TabsList, TabsTrigger, TabsPanel).\n *\n * @example\n * ```html\n * <luma-tabs [lmValue]=\"selectedTab()\" (lmValueChange)=\"onSelect($event)\">\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * </div>\n * <div lumaTabsPanel=\"tab-1\">Content 1</div>\n * <div lumaTabsPanel=\"tab-2\">Content 2</div>\n * </luma-tabs>\n * ```\n */\n@Component({\n selector: 'luma-tabs',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TABS_GROUP,\n useExisting: LmTabsComponent,\n },\n ],\n host: {\n '[class]': '\"block w-full\"',\n },\n})\nexport class LmTabsComponent implements TabsGroupBase {\n /** Controlled value - currently selected tab */\n lmValue = input<string | null>(null);\n\n /** Default value for uncontrolled mode */\n lmDefaultValue = input<string>('');\n\n /** Visual style: underline, background, or pill */\n lmVariant = input<TabsVariant>('underline');\n\n /** Whether to lazy load panel content */\n lmLazy = input<boolean>(true);\n\n /** Emits when selected tab changes */\n lmValueChange = output<string>();\n\n /** Internal state for the selected value */\n value = signal<string | null>(null);\n\n /** Map of registered triggers for keyboard navigation */\n private triggers = new Map<string, HTMLElement>();\n\n /** Ordered list of trigger values for navigation */\n private triggerOrder: string[] = [];\n\n constructor() {\n // Sync controlled value to internal state\n effect(() => {\n const controlled = this.lmValue();\n const defaultVal = this.lmDefaultValue();\n\n if (controlled !== null) {\n this.value.set(controlled);\n } else if (this.value() === null && defaultVal) {\n this.value.set(defaultVal);\n }\n });\n }\n\n /**\n * Select a tab by value\n */\n select(tabValue: string): void {\n if (this.value() === tabValue) return;\n\n this.value.set(tabValue);\n this.lmValueChange.emit(tabValue);\n }\n\n /**\n * Register a trigger element for keyboard navigation\n */\n registerTrigger(tabValue: string, element: HTMLElement): void {\n this.triggers.set(tabValue, element);\n if (!this.triggerOrder.includes(tabValue)) {\n this.triggerOrder.push(tabValue);\n }\n }\n\n /**\n * Unregister a trigger element\n */\n unregisterTrigger(tabValue: string): void {\n this.triggers.delete(tabValue);\n this.triggerOrder = this.triggerOrder.filter((v) => v !== tabValue);\n }\n\n /**\n * Get all registered triggers\n */\n getTriggers(): Map<string, HTMLElement> {\n return this.triggers;\n }\n\n /**\n * Focus next trigger in the list\n */\n focusNextTrigger(): void {\n const currentIndex = this.getCurrentTriggerIndex();\n const nextIndex = (currentIndex + 1) % this.triggerOrder.length;\n this.focusTriggerAtIndex(nextIndex);\n }\n\n /**\n * Focus previous trigger in the list\n */\n focusPreviousTrigger(): void {\n const currentIndex = this.getCurrentTriggerIndex();\n const prevIndex =\n currentIndex <= 0 ? this.triggerOrder.length - 1 : currentIndex - 1;\n this.focusTriggerAtIndex(prevIndex);\n }\n\n /**\n * Focus first trigger\n */\n focusFirstTrigger(): void {\n this.focusTriggerAtIndex(0);\n }\n\n /**\n * Focus last trigger\n */\n focusLastTrigger(): void {\n this.focusTriggerAtIndex(this.triggerOrder.length - 1);\n }\n\n private getCurrentTriggerIndex(): number {\n const currentValue = this.value();\n return currentValue ? this.triggerOrder.indexOf(currentValue) : 0;\n }\n\n private focusTriggerAtIndex(index: number): void {\n const value = this.triggerOrder[index];\n const element = this.triggers.get(value);\n if (element) {\n element.focus();\n this.select(value);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n computed,\n viewChild,\n signal,\n effect,\n AfterViewInit,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n tabsListVariants,\n tabsScrollArrowVariants,\n type TabsScrollArrowDirection,\n} from '@lumaui/core';\nimport { TABS_GROUP, TABS_LIST, type TabsListBase } from './tabs.tokens';\n\n/**\n * Tabs list component\n *\n * Container for tab triggers with role=\"tablist\".\n * Provides context for the indicator component.\n * Supports horizontal scrolling with arrow navigation.\n *\n * @example\n * ```html\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * </div>\n * ```\n *\n * @example\n * ```html\n * <div lumaTabsList [lmScrollable]=\"true\">\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <!-- ... many more tabs -->\n * </div>\n * ```\n */\n@Component({\n selector: '[lumaTabsList]',\n providers: [\n {\n provide: TABS_LIST,\n useExisting: LmTabsListDirective,\n },\n ],\n host: {\n '[attr.role]': 'lmScrollable() ? null : \"tablist\"',\n '[attr.aria-orientation]': 'lmScrollable() ? null : \"horizontal\"',\n '[class]': 'hostClasses()',\n },\n template: `\n @if (lmScrollable()) {\n <!-- LEFT ARROW - outside tablist for correct ARIA -->\n <button\n type=\"button\"\n [class]=\"leftArrowClasses()\"\n [disabled]=\"!showLeftArrow()\"\n [style.visibility]=\"showArrows() ? 'visible' : 'hidden'\"\n (click)=\"scrollPrevious()\"\n aria-label=\"Scroll to previous tabs\"\n >\n ‹\n </button>\n }\n\n <!-- SINGLE scroll container - always rendered to avoid dual ng-content -->\n <div\n #scrollContainer\n [attr.role]=\"lmScrollable() ? 'tablist' : null\"\n [attr.aria-orientation]=\"lmScrollable() ? 'horizontal' : null\"\n [class]=\"scrollContainerClasses()\"\n (scroll)=\"onScroll()\"\n (wheel)=\"onWheel($event)\"\n >\n <ng-content />\n </div>\n\n @if (lmScrollable()) {\n <!-- RIGHT ARROW - outside tablist for correct ARIA -->\n <button\n type=\"button\"\n [class]=\"rightArrowClasses()\"\n [disabled]=\"!showRightArrow()\"\n [style.visibility]=\"showArrows() ? 'visible' : 'hidden'\"\n (click)=\"scrollNext()\"\n aria-label=\"Scroll to next tabs\"\n >\n ›\n </button>\n }\n `,\n})\nexport class LmTabsListDirective\n implements TabsListBase, AfterViewInit, OnDestroy\n{\n readonly elementRef = inject(ElementRef<HTMLElement>);\n protected readonly tabsGroup = inject(TABS_GROUP);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Reference to the scroll container */\n scrollContainerRef = viewChild<ElementRef<HTMLElement>>('scrollContainer');\n\n /** Whether horizontal scrolling is enabled */\n lmScrollable = input<boolean>(false);\n\n /** Whether to show scroll arrows */\n showArrows = signal<boolean>(false);\n showLeftArrow = signal<boolean>(false);\n showRightArrow = signal<boolean>(false);\n\n /** ResizeObserver for overflow detection */\n private resizeObserver?: ResizeObserver;\n\n /** Debounce timeout for ResizeObserver */\n private resizeTimeout?: number;\n\n /** Throttle timeout for scroll events */\n private scrollTimeout?: number;\n\n /** Host element classes */\n hostClasses = computed(() => {\n if (this.lmScrollable()) {\n // Scrollable: host is a structural flex wrapper (no role, no variant styling)\n return 'flex items-center gap-2 w-full';\n }\n // Non-scrollable: host is the tablist with variant styling\n return tabsListVariants({\n variant: this.tabsGroup.lmVariant(),\n });\n });\n\n /** Scroll container classes */\n scrollContainerClasses = computed(() => {\n const baseClasses = ['flex', 'items-center'];\n\n if (this.lmScrollable()) {\n const scrollClasses = [\n ...baseClasses,\n 'flex-1', // Fill available space in flex wrapper\n 'relative', // For indicator absolute positioning\n 'overflow-x-auto',\n 'scrollbar-none',\n 'scroll-smooth',\n '-webkit-overflow-scrolling-touch',\n ];\n\n // Move variant visual styling from host to scroll container\n const variant = this.tabsGroup.lmVariant();\n if (variant === 'underline') {\n scrollClasses.push('border-b', 'border-border');\n } else if (variant === 'pills') {\n scrollClasses.push('p-1', 'bg-muted', 'rounded-lg');\n }\n\n return scrollClasses;\n }\n\n // Non-scrollable: apply w-full and variant-specific classes\n const variant = this.tabsGroup.lmVariant();\n if (variant === 'underline') {\n return [...baseClasses, 'w-full', 'gap-4'];\n } else if (variant === 'pills') {\n return [...baseClasses, 'w-full', 'gap-1'];\n }\n\n return [...baseClasses, 'w-full'];\n });\n\n /** Left arrow button classes */\n leftArrowClasses = computed(() =>\n tabsScrollArrowVariants({ direction: 'left' as TabsScrollArrowDirection }),\n );\n\n /** Right arrow button classes */\n rightArrowClasses = computed(() =>\n tabsScrollArrowVariants({ direction: 'right' as TabsScrollArrowDirection }),\n );\n\n constructor() {\n // Update arrows when scrollable changes\n effect(() => {\n if (this.lmScrollable()) {\n this.updateArrowsVisibility();\n } else {\n this.showArrows.set(false);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n // Set up ResizeObserver with debouncing to prevent infinite feedback loop\n this.resizeObserver = new ResizeObserver(() => {\n // Debounce: wait 250ms after last resize before updating\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = window.setTimeout(() => {\n this.updateArrowsVisibility();\n this.resizeTimeout = undefined;\n }, 250);\n });\n\n // Only observe the container, NOT children (prevents cascading updates)\n this.resizeObserver.observe(container);\n\n // Initial check\n this.updateArrowsVisibility();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n\n // Clear timeouts to prevent memory leaks\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n if (this.scrollTimeout !== undefined) {\n clearTimeout(this.scrollTimeout);\n }\n }\n\n /**\n * Get the currently active trigger element\n */\n getActiveTrigger(): HTMLElement | null {\n const currentValue = this.tabsGroup.value();\n if (!currentValue) return null;\n\n const triggers = this.tabsGroup.getTriggers();\n return triggers.get(currentValue) || null;\n }\n\n /**\n * Get the element that acts as the semantic tablist container.\n * When scrollable, this is the inner scroll container (which has role=\"tablist\").\n * When non-scrollable, this is the host element itself.\n */\n getListContainer(): HTMLElement {\n if (this.lmScrollable()) {\n return (\n this.scrollContainerRef()?.nativeElement ??\n this.elementRef.nativeElement\n );\n }\n return this.elementRef.nativeElement;\n }\n\n /**\n * Scroll to the next set of tabs (85% of container width)\n */\n scrollNext(): void {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n const scrollAmount = container.clientWidth * 0.85;\n container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n\n /**\n * Scroll to the previous set of tabs (85% of container width)\n */\n scrollPrevious(): void {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n const scrollAmount = container.clientWidth * 0.85;\n container.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n }\n\n /**\n * Handle scroll event to update arrow states (throttled)\n */\n onScroll(): void {\n if (!this.lmScrollable()) return;\n\n // Throttle: only update after 100ms of no scrolling\n if (this.scrollTimeout !== undefined) {\n clearTimeout(this.scrollTimeout);\n }\n\n this.scrollTimeout = window.setTimeout(() => {\n this.updateArrowsVisibility();\n this.scrollTimeout = undefined;\n }, 100);\n }\n\n /**\n * Handle mouse wheel for horizontal scroll\n */\n onWheel(event: WheelEvent): void {\n if (!this.lmScrollable()) return;\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n event.preventDefault();\n container.scrollLeft += event.deltaY;\n }\n\n /**\n * Update arrow visibility and enabled states based on scroll position\n * Optimized to only update signals when values actually change\n */\n private updateArrowsVisibility(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n // Check if content overflows container\n const hasOverflow = container.scrollWidth > container.clientWidth;\n\n // Only update if value actually changed\n if (this.showArrows() !== hasOverflow) {\n this.showArrows.set(hasOverflow);\n }\n\n if (hasOverflow) {\n // Update individual arrow states based on scroll position\n const isAtStart = container.scrollLeft <= 1;\n const isAtEnd =\n container.scrollLeft >=\n container.scrollWidth - container.clientWidth - 1;\n\n const newShowLeft = !isAtStart;\n const newShowRight = !isAtEnd;\n\n // Only update if values changed\n if (this.showLeftArrow() !== newShowLeft) {\n this.showLeftArrow.set(newShowLeft);\n }\n if (this.showRightArrow() !== newShowRight) {\n this.showRightArrow.set(newShowRight);\n }\n } else {\n // Reset arrow states when no overflow\n if (this.showLeftArrow() !== false) {\n this.showLeftArrow.set(false);\n }\n if (this.showRightArrow() !== false) {\n this.showRightArrow.set(false);\n }\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n computed,\n OnInit,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { tabsTriggerVariants } from '@lumaui/core';\nimport { TABS_GROUP } from './tabs.tokens';\n\n/**\n * Tabs trigger directive\n *\n * Individual tab button with role=\"tab\" and keyboard navigation support.\n * Follows WAI-ARIA tabs pattern with roving tabindex.\n *\n * @example\n * ```html\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * ```\n */\n@Directive({\n selector: '[lumaTabsTrigger]',\n host: {\n role: 'tab',\n '[attr.id]': 'triggerId()',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-controls]': 'panelId()',\n '[attr.tabindex]': 'isSelected() ? 0 : -1',\n '[attr.data-state]': 'isSelected() ? \"active\" : \"inactive\"',\n '[class]': 'classes()',\n },\n})\nexport class LmTabsTriggerDirective implements OnInit, OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly tabsGroup = inject(TABS_GROUP);\n\n /** Tab value identifier */\n lumaTabsTrigger = input.required<string>();\n\n /** Whether this trigger is disabled */\n lmDisabled = input<boolean>(false);\n\n /** Computed: whether this tab is selected */\n isSelected = computed(\n () => this.tabsGroup.value() === this.lumaTabsTrigger(),\n );\n\n /** Computed: ID for the trigger element */\n triggerId = computed(() => `tab-trigger-${this.lumaTabsTrigger()}`);\n\n /** Computed: ID for the corresponding panel */\n panelId = computed(() => `tab-panel-${this.lumaTabsTrigger()}`);\n\n /** Computed: CSS classes from CVA */\n classes = computed(() =>\n tabsTriggerVariants({\n variant: this.tabsGroup.lmVariant(),\n }),\n );\n\n ngOnInit(): void {\n this.tabsGroup.registerTrigger(\n this.lumaTabsTrigger(),\n this.el.nativeElement,\n );\n }\n\n ngOnDestroy(): void {\n this.tabsGroup.unregisterTrigger(this.lumaTabsTrigger());\n }\n\n @HostListener('click')\n onClick(): void {\n if (this.lmDisabled()) return;\n this.tabsGroup.select(this.lumaTabsTrigger());\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.lmDisabled()) return;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.tabsGroup.focusNextTrigger();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.tabsGroup.focusPreviousTrigger();\n break;\n\n case 'Home':\n event.preventDefault();\n this.tabsGroup.focusFirstTrigger();\n break;\n\n case 'End':\n event.preventDefault();\n this.tabsGroup.focusLastTrigger();\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.tabsGroup.select(this.lumaTabsTrigger());\n break;\n }\n }\n}\n","import {\n Directive,\n inject,\n input,\n computed,\n signal,\n effect,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { tabsPanelVariants } from '@lumaui/core';\nimport { TABS_GROUP } from './tabs.tokens';\n\n/**\n * Tabs panel directive\n *\n * Content panel with role=\"tabpanel\" and lazy loading support.\n * When lazy loading is enabled, content is only rendered after\n * the tab has been selected at least once, then cached.\n *\n * @example\n * ```html\n * <div lumaTabsPanel=\"tab-1\">Content 1</div>\n *\n * <!-- With lazy loading (default when lmLazy=true on parent) -->\n * <ng-template lumaTabsPanel=\"tab-1\">\n * <expensive-component />\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[lumaTabsPanel]',\n host: {\n role: 'tabpanel',\n '[attr.id]': 'panelId()',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.tabindex]': '0',\n '[class]': 'classes()',\n '[hidden]': '!isVisible()',\n },\n})\nexport class LmTabsPanelDirective {\n private readonly tabsGroup = inject(TABS_GROUP);\n private readonly templateRef = inject(TemplateRef<unknown>, {\n optional: true,\n });\n private readonly viewContainer = inject(ViewContainerRef);\n\n /** Panel value identifier */\n lumaTabsPanel = input.required<string>();\n\n /** Track if panel has ever been selected (for lazy loading cache) */\n private hasBeenSelected = signal(false);\n\n /** Computed: whether this panel is currently selected */\n isSelected = computed(() => this.tabsGroup.value() === this.lumaTabsPanel());\n\n /** Computed: whether this panel should be visible/rendered */\n isVisible = computed(() => {\n const selected = this.isSelected();\n const lazy = this.tabsGroup.lmLazy();\n\n // If lazy loading is disabled, always show selected panel\n if (!lazy) return selected;\n\n // With lazy loading: render if ever selected, but only show if currently selected\n return this.hasBeenSelected() && selected;\n });\n\n /** Computed: whether content should be rendered (for lazy loading) */\n shouldRender = computed(() => {\n const lazy = this.tabsGroup.lmLazy();\n return lazy ? this.hasBeenSelected() : true;\n });\n\n /** Computed: ID for the panel element */\n panelId = computed(() => `tab-panel-${this.lumaTabsPanel()}`);\n\n /** Computed: ID for the corresponding trigger */\n triggerId = computed(() => `tab-trigger-${this.lumaTabsPanel()}`);\n\n /** Computed: CSS classes from CVA */\n classes = computed(() =>\n tabsPanelVariants({\n visible: this.isVisible(),\n }),\n );\n\n constructor() {\n // Track when panel is selected for lazy loading cache\n effect(() => {\n if (this.isSelected() && !this.hasBeenSelected()) {\n this.hasBeenSelected.set(true);\n }\n });\n\n // Handle template-based lazy loading\n effect(() => {\n if (this.templateRef && this.shouldRender()) {\n if (this.viewContainer.length === 0) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n signal,\n effect,\n PLATFORM_ID,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { tabsIndicatorVariants } from '@lumaui/core';\nimport { TABS_GROUP, TABS_LIST } from './tabs.tokens';\n\n/**\n * Tabs indicator component\n *\n * Animated indicator that slides between tabs for the underline style.\n * Uses CSS transform for smooth, GPU-accelerated animation.\n *\n * @example\n * ```html\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * <luma-tabs-indicator />\n * </div>\n * ```\n */\n@Component({\n selector: 'luma-tabs-indicator',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[style.width.px]': 'indicatorWidth()',\n '[style.transform]': 'indicatorTransform()',\n },\n})\nexport class LmTabsIndicatorComponent implements AfterViewInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly tabsGroup = inject(TABS_GROUP);\n private readonly tabsList = inject(TABS_LIST);\n\n /** Indicator width in pixels */\n indicatorWidth = signal(0);\n\n /** Indicator X or Y position */\n private indicatorPosition = signal(0);\n\n /** Resize observer for recalculating position */\n private resizeObserver: ResizeObserver | null = null;\n\n /** Computed: CSS classes from CVA */\n classes = computed(() => {\n const style = this.tabsGroup.lmVariant();\n // Only show indicator for underline style\n const isVisible = style === 'underline';\n\n return tabsIndicatorVariants({\n visible: isVisible,\n });\n });\n\n /** Computed: CSS transform for positioning */\n indicatorTransform = computed(() => {\n return `translateX(${this.indicatorPosition()}px)`;\n });\n\n constructor() {\n // Update indicator position when selection changes\n effect(() => {\n // Read the value to track changes\n this.tabsGroup.value();\n\n // Defer position calculation to ensure DOM is ready\n if (isPlatformBrowser(this.platformId)) {\n // Use setTimeout to ensure triggers are registered\n setTimeout(() => this.updateIndicatorPosition(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Initial position calculation with delay to ensure triggers are registered\n setTimeout(() => this.updateIndicatorPosition(), 0);\n\n // Watch for container resize\n this.resizeObserver = new ResizeObserver(() => {\n this.updateIndicatorPosition();\n });\n\n this.resizeObserver.observe(this.tabsList.getListContainer());\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private updateIndicatorPosition(): void {\n const activeTrigger = this.tabsList.getActiveTrigger();\n if (!activeTrigger) {\n this.indicatorWidth.set(0);\n return;\n }\n\n const triggerRect = activeTrigger.getBoundingClientRect();\n const listContainer = this.tabsList.getListContainer();\n const listRect = listContainer.getBoundingClientRect();\n\n // Horizontal positioning (account for scroll offset in scrollable mode)\n this.indicatorPosition.set(\n triggerRect.left - listRect.left + listContainer.scrollLeft,\n );\n this.indicatorWidth.set(triggerRect.width);\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Modal size variants\n */\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Interface for modal context that child components/directives can access\n */\nexport interface ModalContext {\n /** Whether the modal is currently open */\n isOpen: Signal<boolean>;\n /** Open the modal */\n open: () => void;\n /** Close the modal */\n close: () => void;\n /** Modal size variant */\n size: Signal<ModalSize>;\n /** Whether to close on overlay click */\n closeOnOverlay: Signal<boolean>;\n /** Whether to close on Escape key */\n closeOnEscape: Signal<boolean>;\n /** Unique ID for accessibility */\n modalId: string;\n}\n\n/**\n * Injection token for modal context\n * Allows child components to access parent modal state\n */\nexport const MODAL_CONTEXT = new InjectionToken<ModalContext>('ModalContext');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n effect,\n computed,\n inject,\n PLATFORM_ID,\n OnDestroy,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport {\n MODAL_CONTEXT,\n type ModalContext,\n type ModalSize,\n} from './modal.tokens';\n\nlet uniqueId = 0;\n\n/**\n * Modal container component\n *\n * Manages modal open/close state, escape key handling, and provides context\n * to child components (ModalOverlay, ModalContainer, etc.).\n *\n * Supports both controlled and uncontrolled modes:\n * - Controlled: Use [lmOpen] and (lmOpenChange)\n * - Uncontrolled: Use [lmDefaultOpen] and access via template reference\n *\n * @example\n * ```html\n * <!-- Controlled mode -->\n * <luma-modal [lmOpen]=\"isOpen()\" (lmOpenChange)=\"isOpen.set($event)\">\n * <luma-modal-overlay>\n * <luma-modal-container>\n * <div lumaModalHeader>\n * <h2 lumaModalTitle>Title</h2>\n * <luma-modal-close />\n * </div>\n * <div lumaModalContent>Content</div>\n * <div lumaModalFooter>\n * <button lumaButton (click)=\"isOpen.set(false)\">Close</button>\n * </div>\n * </luma-modal-container>\n * </luma-modal-overlay>\n * </luma-modal>\n *\n * <!-- Uncontrolled mode -->\n * <luma-modal #modal [lmDefaultOpen]=\"false\">\n * ...\n * </luma-modal>\n * <button (click)=\"modal.open()\">Open</button>\n * ```\n */\n@Component({\n selector: 'luma-modal',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MODAL_CONTEXT,\n useExisting: LmModalComponent,\n },\n ],\n host: {\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class LmModalComponent implements ModalContext, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n\n /** Controlled open state (null = uncontrolled mode) */\n lmOpen = input<boolean | null>(null);\n\n /** Default open state for uncontrolled mode */\n lmDefaultOpen = input<boolean>(false);\n\n /** Size variant */\n lmSize = input<ModalSize>('md');\n\n /** Close when clicking the overlay */\n lmCloseOnOverlay = input<boolean>(true);\n\n /** Close when pressing Escape key */\n lmCloseOnEscape = input<boolean>(true);\n\n /** Emits when open state changes */\n lmOpenChange = output<boolean>();\n\n /** Internal open state for uncontrolled mode */\n private internalOpen = signal(false);\n\n /** Unique modal ID for accessibility */\n readonly modalId = `modal-${uniqueId++}`;\n\n /** Previously focused element for focus restoration */\n private previouslyFocused: HTMLElement | null = null;\n\n /** Escape key handler */\n private escapeHandler: ((e: KeyboardEvent) => void) | null = null;\n\n /** Computed: current open state (controlled or uncontrolled) */\n isOpen = computed(() => {\n const controlled = this.lmOpen();\n return controlled !== null ? controlled : this.internalOpen();\n });\n\n /** Computed: size signal for context */\n size = computed(() => this.lmSize());\n\n /** Computed: closeOnOverlay signal for context */\n closeOnOverlay = computed(() => this.lmCloseOnOverlay());\n\n /** Computed: closeOnEscape signal for context */\n closeOnEscape = computed(() => this.lmCloseOnEscape());\n\n constructor() {\n // Initialize uncontrolled mode with default value\n effect(() => {\n if (this.lmOpen() === null) {\n this.internalOpen.set(this.lmDefaultOpen());\n }\n });\n\n // Handle body scroll lock and escape key\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.isOpen()) {\n this.lockBodyScroll();\n this.registerEscapeHandler();\n this.storeFocus();\n } else {\n // Delay scroll unlock to allow fade animation to complete (250ms)\n setTimeout(() => this.unlockBodyScroll(), 250);\n this.unregisterEscapeHandler();\n }\n });\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.unlockBodyScroll();\n this.unregisterEscapeHandler();\n }\n }\n\n /**\n * Open the modal\n */\n open(): void {\n if (this.lmOpen() === null) {\n this.internalOpen.set(true);\n }\n this.lmOpenChange.emit(true);\n }\n\n /**\n * Close the modal\n */\n close(): void {\n if (this.lmOpen() === null) {\n this.internalOpen.set(false);\n }\n this.lmOpenChange.emit(false);\n this.restoreFocus();\n }\n\n private storeFocus(): void {\n this.previouslyFocused = this.document.activeElement as HTMLElement;\n }\n\n private restoreFocus(): void {\n if (\n this.previouslyFocused &&\n typeof this.previouslyFocused.focus === 'function'\n ) {\n // Use setTimeout to ensure DOM has updated\n setTimeout(() => {\n this.previouslyFocused?.focus();\n this.previouslyFocused = null;\n }, 0);\n }\n }\n\n private lockBodyScroll(): void {\n const body = this.document.body;\n const scrollbarWidth =\n window.innerWidth - this.document.documentElement.clientWidth;\n body.style.overflow = 'hidden';\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n const body = this.document.body;\n body.style.overflow = '';\n body.style.paddingRight = '';\n }\n\n private registerEscapeHandler(): void {\n if (this.escapeHandler) return;\n\n this.escapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.lmCloseOnEscape()) {\n event.preventDefault();\n this.close();\n }\n };\n\n this.document.addEventListener('keydown', this.escapeHandler);\n }\n\n private unregisterEscapeHandler(): void {\n if (this.escapeHandler) {\n this.document.removeEventListener('keydown', this.escapeHandler);\n this.escapeHandler = null;\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n} from '@angular/core';\nimport { modalOverlayVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal overlay component (backdrop)\n *\n * Provides a semi-transparent backdrop behind the modal.\n * Handles click-to-close when enabled on the parent modal.\n *\n * @example\n * ```html\n * <luma-modal [lmOpen]=\"isOpen()\">\n * <luma-modal-overlay>\n * <luma-modal-container>...</luma-modal-container>\n * </luma-modal-overlay>\n * </luma-modal>\n * ```\n */\n@Component({\n selector: 'luma-modal-overlay',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '(click)': 'onOverlayClick($event)',\n },\n})\nexport class LmModalOverlayComponent {\n private readonly modal = inject(MODAL_CONTEXT);\n\n /** Computed classes from CVA */\n classes = computed(() => modalOverlayVariants());\n\n /**\n * Handle click on overlay (not on children)\n */\n onOverlayClick(event: MouseEvent): void {\n // Only close if clicking directly on overlay, not on children\n if (event.target === event.currentTarget && this.modal.closeOnOverlay()) {\n this.modal.close();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n effect,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { modalContainerVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/** Focusable elements selector */\nconst FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Modal container component (dialog box)\n *\n * Contains the modal content and handles:\n * - ARIA attributes for accessibility\n * - Focus trap when modal is open\n * - Size variants\n *\n * @example\n * ```html\n * <luma-modal-overlay>\n * <luma-modal-container>\n * <div lumaModalHeader>...</div>\n * <div lumaModalContent>...</div>\n * <div lumaModalFooter>...</div>\n * </luma-modal-container>\n * </luma-modal-overlay>\n * ```\n */\n@Component({\n selector: 'luma-modal-container',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'dialog',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'titleId()',\n '[class]': 'classes()',\n '[attr.data-state]': 'modal.isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class LmModalContainerComponent implements AfterViewInit, OnDestroy {\n readonly modal = inject(MODAL_CONTEXT);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Focus trap keydown handler */\n private focusTrapHandler: ((e: KeyboardEvent) => void) | null = null;\n\n /** ID for aria-labelledby */\n titleId = computed(() => `${this.modal.modalId}-title`);\n\n /** Computed classes from CVA */\n classes = computed(() =>\n modalContainerVariants({\n size: this.modal.size(),\n }),\n );\n\n constructor() {\n // Focus first focusable element when modal opens\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.modal.isOpen()) {\n // Use setTimeout to ensure content is rendered\n setTimeout(() => this.focusFirstElement(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.setupFocusTrap();\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.removeFocusTrap();\n }\n }\n\n /**\n * Get all focusable elements within the modal\n */\n private getFocusableElements(): HTMLElement[] {\n const elements =\n this.elementRef.nativeElement.querySelectorAll(FOCUSABLE_SELECTOR);\n const elementsArray = Array.from(elements) as HTMLElement[];\n return elementsArray.filter(\n (el) =>\n !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n }\n\n /**\n * Focus the first focusable element\n */\n private focusFirstElement(): void {\n const focusable = this.getFocusableElements();\n if (focusable.length > 0) {\n focusable[0].focus();\n } else {\n // If no focusable elements, focus the container itself\n this.elementRef.nativeElement.focus();\n }\n }\n\n /**\n * Setup focus trap to keep focus within modal\n */\n private setupFocusTrap(): void {\n this.focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key !== 'Tab' || !this.modal.isOpen()) return;\n\n const focusable = this.getFocusableElements();\n if (focusable.length === 0) return;\n\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n\n // Shift+Tab on first element -> focus last\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n // Tab on last element -> focus first\n else if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n };\n\n this.elementRef.nativeElement.addEventListener(\n 'keydown',\n this.focusTrapHandler,\n );\n }\n\n /**\n * Remove focus trap handler\n */\n private removeFocusTrap(): void {\n if (this.focusTrapHandler) {\n this.elementRef.nativeElement.removeEventListener(\n 'keydown',\n this.focusTrapHandler,\n );\n this.focusTrapHandler = null;\n }\n }\n}\n","import { Directive, computed } from '@angular/core';\nimport { modalHeaderVariants } from '@lumaui/core';\n\n/**\n * Modal header directive\n *\n * Container for modal title and close button.\n * Provides consistent padding and border styling.\n *\n * @example\n * ```html\n * <div lumaModalHeader>\n * <h2 lumaModalTitle>Modal Title</h2>\n * <luma-modal-close />\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalHeader]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalHeaderDirective {\n /** Computed classes from CVA */\n classes = computed(() => modalHeaderVariants());\n}\n","import { Directive, computed, inject, input } from '@angular/core';\nimport { modalTitleVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal title directive\n *\n * Provides consistent typography for modal titles.\n * Automatically links to aria-labelledby on the modal container.\n *\n * @example\n * ```html\n * <h2 lumaModalTitle>Modal Title</h2>\n * <h2 lumaModalTitle lmSize=\"lg\">Large Title</h2>\n * ```\n */\n@Directive({\n selector: '[lumaModalTitle]',\n host: {\n '[attr.id]': 'titleId()',\n '[class]': 'classes()',\n },\n})\nexport class LmModalTitleDirective {\n private readonly modal = inject(MODAL_CONTEXT);\n\n /** Title size variant */\n lmSize = input<'sm' | 'md' | 'lg'>('md');\n\n /** ID for aria-labelledby connection */\n titleId = computed(() => `${this.modal.modalId}-title`);\n\n /** Computed classes from CVA */\n classes = computed(() => modalTitleVariants());\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { modalContentVariants } from '@lumaui/core';\n\n/**\n * Modal content directive\n *\n * Container for the main modal content.\n * Supports scrolling when content exceeds available space.\n *\n * @example\n * ```html\n * <div lumaModalContent>\n * Content that doesn't scroll\n * </div>\n *\n * <div lumaModalContent [lmScrollable]=\"true\">\n * Long content that scrolls...\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalContent]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalContentDirective {\n /** Enable scroll when content overflows */\n lmScrollable = input<boolean>(true);\n\n /** Computed classes from CVA */\n classes = computed(() => modalContentVariants());\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { modalFooterVariants } from '@lumaui/core';\n\n/**\n * Modal footer directive\n *\n * Container for modal actions (buttons, etc.).\n * Provides consistent padding and flexible alignment.\n *\n * @example\n * ```html\n * <div lumaModalFooter>\n * <button lumaButton lmVariant=\"ghost\">Cancel</button>\n * <button lumaButton>Confirm</button>\n * </div>\n *\n * <div lumaModalFooter lmAlign=\"between\">\n * <span>Left content</span>\n * <button lumaButton>Action</button>\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalFooter]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalFooterDirective {\n /** Alignment of footer content */\n lmAlign = input<'start' | 'center' | 'end' | 'between'>('end');\n\n /** Computed classes from CVA */\n classes = computed(() =>\n modalFooterVariants({\n align: this.lmAlign(),\n }),\n );\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n input,\n} from '@angular/core';\nimport { modalCloseVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal close button component\n *\n * Provides a styled close button with an X icon.\n * Can be customized with different content via ng-content.\n *\n * @example\n * ```html\n * <!-- Default X icon -->\n * <luma-modal-close />\n *\n * <!-- Custom aria label -->\n * <luma-modal-close lmAriaLabel=\"Fechar modal\" />\n *\n * <!-- Custom icon -->\n * <luma-modal-close>\n * <svg>...</svg>\n * </luma-modal-close>\n * ```\n */\n@Component({\n selector: 'luma-modal-close',\n template: `\n <button\n type=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [class]=\"classes()\"\n (click)=\"modal.close()\"\n >\n <ng-content>\n <svg\n viewBox=\"0 0 24 24\"\n class=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </ng-content>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'contents',\n },\n})\nexport class LmModalCloseComponent {\n readonly modal = inject(MODAL_CONTEXT);\n\n /** Accessible label for the close button */\n lmAriaLabel = input<string>('Close modal');\n\n /** Computed aria label */\n ariaLabel = computed(() => this.lmAriaLabel());\n\n /** Computed classes from CVA */\n classes = computed(() => modalCloseVariants());\n}\n","// Modal Component & Directives\nexport { LmModalComponent } from './modal.component';\nexport { LmModalOverlayComponent } from './modal-overlay.component';\nexport { LmModalContainerComponent } from './modal-container.component';\nexport { LmModalHeaderDirective } from './modal-header.directive';\nexport { LmModalTitleDirective } from './modal-title.directive';\nexport { LmModalContentDirective } from './modal-content.directive';\nexport { LmModalFooterDirective } from './modal-footer.directive';\nexport { LmModalCloseComponent } from './modal-close.component';\n\n// Tokens\nexport {\n MODAL_CONTEXT,\n type ModalContext,\n type ModalSize,\n} from './modal.tokens';\n","import { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Toast variant types\n */\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error';\n\n/**\n * Toast position options\n */\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/**\n * Toast configuration options passed to ToastService.show()\n */\nexport interface ToastOptions {\n /** Toast message (required) */\n message: string;\n\n /** Optional title */\n title?: string;\n\n /** Visual variant */\n variant?: ToastVariant;\n\n /** Screen position */\n position?: ToastPosition;\n\n /** Auto-close duration in milliseconds (0 = no auto-close) */\n duration?: number;\n\n /** Show close button */\n dismissible?: boolean;\n\n /** Pause timer on hover */\n pauseOnHover?: boolean;\n\n /** ARIA role override */\n role?: 'alert' | 'status';\n}\n\n/**\n * Internal toast representation with all required fields\n */\nexport interface Toast extends Required<Omit<ToastOptions, 'role'>> {\n /** Unique identifier */\n id: string;\n\n /** Creation timestamp */\n createdAt: number;\n\n /** Whether toast is currently animating out */\n isExiting: boolean;\n\n /** ARIA role */\n role: 'alert' | 'status';\n}\n\n/**\n * Toast reference for programmatic control\n */\nexport interface ToastRef {\n /** Unique toast ID */\n readonly id: string;\n\n /** Dismiss this toast */\n dismiss(): void;\n\n /** Observable that emits when dismissed */\n readonly afterDismissed: Observable<void>;\n}\n\n/**\n * Internal toast reference implementation\n */\nexport class ToastRefImpl implements ToastRef {\n private readonly _afterDismissed = new Subject<void>();\n\n constructor(\n public readonly id: string,\n private readonly dismissFn: (id: string) => void,\n ) {}\n\n dismiss(): void {\n this.dismissFn(this.id);\n }\n\n get afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** @internal Called when toast is actually dismissed */\n _notifyDismissed(): void {\n this._afterDismissed.next();\n this._afterDismissed.complete();\n }\n}\n\n/**\n * Global toast configuration\n */\nexport interface ToastConfig {\n /** Default position */\n position: ToastPosition;\n\n /** Default duration in milliseconds */\n duration: number;\n\n /** Default dismissible state */\n dismissible: boolean;\n\n /** Maximum visible toasts */\n maxVisible: number;\n\n /** Pause on hover by default */\n pauseOnHover: boolean;\n}\n\n/**\n * Default toast configuration\n */\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n position: 'top-right',\n duration: 5000,\n dismissible: true,\n maxVisible: 5,\n pauseOnHover: true,\n};\n\n/**\n * Injection token for global toast configuration\n */\nexport const TOAST_CONFIG = new InjectionToken<ToastConfig>('ToastConfig', {\n providedIn: 'root',\n factory: () => DEFAULT_TOAST_CONFIG,\n});\n\n/**\n * Provider function for custom toast configuration\n */\nexport function provideToastConfig(config: Partial<ToastConfig>) {\n return {\n provide: TOAST_CONFIG,\n useValue: { ...DEFAULT_TOAST_CONFIG, ...config },\n };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n} from '@angular/core';\n\nimport { toastCloseVariants, ToastVariant } from '@lumaui/core';\n\n/**\n * ToastCloseComponent\n *\n * Close button for toast notifications.\n * Styled according to the toast variant.\n *\n * @internal Used by ToastItemComponent\n */\n@Component({\n selector: 'luma-toast-close',\n template: `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n class=\"lm-size-toast-close\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n />\n </svg>\n `,\n host: {\n type: 'button',\n '[class]': 'classes()',\n 'aria-label': 'Close notification',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LmToastCloseComponent {\n /** Toast variant for styling */\n lmVariant = input<ToastVariant>('info');\n\n /** CSS classes */\n protected readonly classes = computed(() =>\n toastCloseVariants({ variant: this.lmVariant() }),\n );\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { interval, Subscription } from 'rxjs';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport {\n toastItemVariants,\n toastIconVariants,\n toastContentVariants,\n toastTitleVariants,\n toastMessageVariants,\n ToastState,\n} from '@lumaui/core';\nimport { Toast } from './toast.tokens';\nimport { LmToastCloseComponent } from './toast-close.component';\n\n/**\n * ToastItemComponent\n *\n * Individual toast notification with timer and icon.\n *\n * @internal Created by ToastContainerComponent\n */\n@Component({\n selector: 'luma-toast-item',\n template: `\n <!-- Icon -->\n <div [class]=\"iconClasses()\">\n @switch (toast().variant) {\n @case ('info') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('success') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('warning') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('error') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n }\n </div>\n\n <!-- Content -->\n <div [class]=\"contentClasses()\">\n @if (toast().title) {\n <div [class]=\"titleClasses()\">{{ toast().title }}</div>\n }\n <div [class]=\"messageClasses()\">{{ toast().message }}</div>\n </div>\n\n <!-- Close button -->\n @if (toast().dismissible) {\n <luma-toast-close [lmVariant]=\"toast().variant\" (click)=\"onClose()\" />\n }\n `,\n host: {\n '[class]': 'itemClasses()',\n '[attr.role]': 'toast().role',\n '[attr.aria-live]': 'toast().variant === \"error\" ? \"assertive\" : \"polite\"',\n '[attr.aria-atomic]': '\"true\"',\n '[tabindex]': 'hasInteractiveElements() ? 0 : -1',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(keydown.escape)': 'onEscapeKey()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LmToastCloseComponent],\n})\nexport class LmToastItemComponent implements OnInit, OnDestroy {\n /** Toast data */\n toast = input.required<Toast>();\n\n /** Emits when toast should be dismissed */\n dismiss = output<string>();\n\n /** Timer subscription */\n private timerSubscription: Subscription | null = null;\n\n /** Remaining time in ms */\n private remainingTime = signal(0);\n\n /** Whether timer is paused */\n private isPaused = signal(false);\n\n /** Animation state */\n private animationState = signal<ToastState>('entering');\n\n /** Item CSS classes */\n protected readonly itemClasses = computed(() =>\n toastItemVariants({\n variant: this.toast().variant,\n state: this.toast().isExiting ? 'exiting' : this.animationState(),\n }),\n );\n\n /** Icon CSS classes */\n protected readonly iconClasses = computed(() =>\n toastIconVariants({ variant: this.toast().variant }),\n );\n\n /** Content CSS classes */\n protected readonly contentClasses = computed(() => toastContentVariants());\n\n /** Title CSS classes */\n protected readonly titleClasses = computed(() => toastTitleVariants());\n\n /** Message CSS classes */\n protected readonly messageClasses = computed(() => toastMessageVariants());\n\n /** Whether toast has interactive elements */\n protected readonly hasInteractiveElements = computed(\n () => this.toast().dismissible,\n );\n\n ngOnInit(): void {\n // Start animation\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n });\n\n // Start timer if duration > 0\n const duration = this.toast().duration;\n if (duration > 0) {\n this.startTimer(duration);\n }\n }\n\n ngOnDestroy(): void {\n this.stopTimer();\n }\n\n /** Start auto-close timer */\n private startTimer(duration: number): void {\n this.remainingTime.set(duration);\n\n this.timerSubscription = interval(100)\n .pipe(\n takeWhile(() => this.remainingTime() > 0),\n filter(() => !this.isPaused()),\n )\n .subscribe(() => {\n this.remainingTime.update((t) => t - 100);\n if (this.remainingTime() <= 0) {\n this.dismissToast();\n }\n });\n }\n\n /** Stop timer */\n private stopTimer(): void {\n if (this.timerSubscription) {\n this.timerSubscription.unsubscribe();\n this.timerSubscription = null;\n }\n }\n\n /** Dismiss this toast */\n private dismissToast(): void {\n this.dismiss.emit(this.toast().id);\n }\n\n /** Handle close button click */\n protected onClose(): void {\n this.dismissToast();\n }\n\n /** Pause timer on mouse enter */\n protected onMouseEnter(): void {\n if (this.toast().pauseOnHover) {\n this.isPaused.set(true);\n }\n }\n\n /** Resume timer on mouse leave */\n protected onMouseLeave(): void {\n this.isPaused.set(false);\n }\n\n /** Pause timer on focus */\n protected onFocus(): void {\n this.isPaused.set(true);\n }\n\n /** Resume timer on blur */\n protected onBlur(): void {\n this.isPaused.set(false);\n }\n\n /** Dismiss on Escape key */\n protected onEscapeKey(): void {\n if (this.toast().dismissible) {\n this.dismissToast();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n Signal,\n computed,\n} from '@angular/core';\n\nimport { toastContainerVariants, ToastPosition } from '@lumaui/core';\nimport { Toast } from './toast.tokens';\nimport { LmToastItemComponent } from './toast-item.component';\n\n/**\n * ToastContainerComponent\n *\n * Fixed-position container that renders all active toasts.\n * Supports all 6 positions simultaneously by grouping toasts by their position.\n *\n * @internal This component is created programmatically by ToastService\n */\n@Component({\n selector: 'luma-toast-container',\n template: `\n <!-- Top Left -->\n @if (toastsByPosition()['top-left'].length) {\n <div\n role=\"region\"\n aria-label=\"Top left notifications\"\n [class]=\"getPositionClasses('top-left')\"\n >\n @for (toast of toastsByPosition()['top-left']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Top Center -->\n @if (toastsByPosition()['top-center'].length) {\n <div\n role=\"region\"\n aria-label=\"Top center notifications\"\n [class]=\"getPositionClasses('top-center')\"\n >\n @for (toast of toastsByPosition()['top-center']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Top Right -->\n @if (toastsByPosition()['top-right'].length) {\n <div\n role=\"region\"\n aria-label=\"Top right notifications\"\n [class]=\"getPositionClasses('top-right')\"\n >\n @for (toast of toastsByPosition()['top-right']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Left -->\n @if (toastsByPosition()['bottom-left'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom left notifications\"\n [class]=\"getPositionClasses('bottom-left')\"\n >\n @for (toast of toastsByPosition()['bottom-left']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Center -->\n @if (toastsByPosition()['bottom-center'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom center notifications\"\n [class]=\"getPositionClasses('bottom-center')\"\n >\n @for (toast of toastsByPosition()['bottom-center']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Right -->\n @if (toastsByPosition()['bottom-right'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom right notifications\"\n [class]=\"getPositionClasses('bottom-right')\"\n >\n @for (toast of toastsByPosition()['bottom-right']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LmToastItemComponent],\n})\nexport class LmToastContainerComponent {\n /** Toasts signal passed from ToastService */\n _toasts!: Signal<Toast[]>;\n\n /** Dismiss callback passed from ToastService */\n _onDismiss!: (id: string) => void;\n\n /** Group toasts by their position */\n protected readonly toastsByPosition = computed(() => {\n const groups: Record<ToastPosition, Toast[]> = {\n 'top-left': [],\n 'top-center': [],\n 'top-right': [],\n 'bottom-left': [],\n 'bottom-center': [],\n 'bottom-right': [],\n };\n\n if (!this._toasts) return groups;\n\n for (const toast of this._toasts()) {\n const position = toast.position as ToastPosition;\n if (groups[position]) {\n groups[position].push(toast);\n }\n }\n\n return groups;\n });\n\n /** Get CSS classes for a specific position */\n protected getPositionClasses(position: ToastPosition): string {\n return toastContainerVariants({ position });\n }\n\n /** Handle dismiss event from toast item */\n protected onDismiss(id: string): void {\n this._onDismiss?.(id);\n }\n}\n","import {\n Injectable,\n ApplicationRef,\n Injector,\n createComponent,\n ComponentRef,\n inject,\n signal,\n computed,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\nimport {\n TOAST_CONFIG,\n Toast,\n ToastOptions,\n ToastRef,\n ToastRefImpl,\n} from './toast.tokens';\nimport { LmToastContainerComponent } from './toast-container.component';\n\n/**\n * ToastService\n *\n * Injectable service for showing toast notifications programmatically.\n * Provides convenience methods for info, success, warning, and error toasts.\n *\n * @example\n * ```typescript\n * private toast = inject(ToastService);\n *\n * showSuccess() {\n * this.toast.success('Changes saved successfully!');\n * }\n *\n * showError() {\n * this.toast.error('Failed to save', {\n * title: 'Error',\n * duration: 0\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class LmToastService implements OnDestroy {\n private readonly config = inject(TOAST_CONFIG);\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly _toasts = signal<Toast[]>([]);\n private containerRef: ComponentRef<LmToastContainerComponent> | null = null;\n private nextId = 0;\n private readonly toastRefs = new Map<string, ToastRefImpl>();\n\n /** Observable list of current toasts */\n readonly toasts = computed(() => this._toasts());\n\n ngOnDestroy(): void {\n this.destroyContainer();\n }\n\n /**\n * Show a toast notification\n * @param options - Toast configuration options\n * @returns ToastRef for programmatic control\n */\n show(options: ToastOptions): ToastRef {\n this.ensureContainer();\n\n const toast: Toast = {\n id: `toast-${this.nextId++}`,\n message: options.message,\n title: options.title ?? '',\n variant: options.variant ?? 'info',\n position: options.position ?? this.config.position,\n duration: options.duration ?? this.config.duration,\n dismissible: options.dismissible ?? this.config.dismissible,\n pauseOnHover: options.pauseOnHover ?? this.config.pauseOnHover,\n role: options.role ?? (options.variant === 'error' ? 'alert' : 'status'),\n createdAt: Date.now(),\n isExiting: false,\n };\n\n // Enforce max visible limit\n const currentToasts = this._toasts();\n if (currentToasts.length >= this.config.maxVisible) {\n // Remove oldest toast\n const oldest = currentToasts[0];\n this.dismiss(oldest.id);\n }\n\n this._toasts.update((toasts) => [...toasts, toast]);\n\n const toastRef = new ToastRefImpl(toast.id, (id) => this.dismiss(id));\n this.toastRefs.set(toast.id, toastRef);\n\n return toastRef;\n }\n\n /**\n * Show info toast\n * @param message - Toast message\n * @param options - Additional options\n */\n info(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'info' });\n }\n\n /**\n * Show success toast\n * @param message - Toast message\n * @param options - Additional options\n */\n success(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'success' });\n }\n\n /**\n * Show warning toast\n * @param message - Toast message\n * @param options - Additional options\n */\n warning(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'warning' });\n }\n\n /**\n * Show error toast\n * @param message - Toast message\n * @param options - Additional options\n */\n error(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'error' });\n }\n\n /**\n * Dismiss a specific toast\n * @param id - Toast ID to dismiss\n */\n dismiss(id: string): void {\n // Mark as exiting for animation\n this._toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, isExiting: true } : t)),\n );\n\n // Remove after animation completes (200ms)\n setTimeout(() => {\n this._toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n\n // Notify ref\n const toastRef = this.toastRefs.get(id);\n if (toastRef) {\n toastRef._notifyDismissed();\n this.toastRefs.delete(id);\n }\n }, 200);\n }\n\n /**\n * Dismiss all toasts\n */\n dismissAll(): void {\n const ids = this._toasts().map((t) => t.id);\n ids.forEach((id) => this.dismiss(id));\n }\n\n /**\n * Ensure toast container exists in DOM\n */\n private ensureContainer(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.containerRef) return;\n\n this.containerRef = createComponent(LmToastContainerComponent, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n // Pass toasts signal to container\n this.containerRef.instance._toasts = this._toasts;\n this.containerRef.instance._onDismiss = (id: string) => this.dismiss(id);\n\n this.appRef.attachView(this.containerRef.hostView);\n this.document.body.appendChild(this.containerRef.location.nativeElement);\n }\n\n /**\n * Remove container from DOM\n */\n private destroyContainer(): void {\n if (this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n}\n","// Toast public API\nexport { LmToastService } from './toast.service';\nexport { LmToastContainerComponent } from './toast-container.component';\nexport { LmToastItemComponent } from './toast-item.component';\nexport { LmToastCloseComponent } from './toast-close.component';\n\n// Type exports (isolatedModules requires 'export type')\nexport type {\n ToastVariant,\n ToastPosition,\n ToastOptions,\n Toast,\n ToastRef,\n ToastConfig,\n} from './toast.tokens';\n\n// Value exports\nexport {\n DEFAULT_TOAST_CONFIG,\n TOAST_CONFIG,\n provideToastConfig,\n} from './toast.tokens';\n\n// Re-export variant types from core\nexport type {\n ToastContainerVariants,\n ToastItemVariants,\n ToastIconVariants,\n ToastCloseVariants,\n ToastState,\n} from '@lumaui/core';\n","// Button exports\nexport * from './lib/button/button.directive';\n\n// Badge exports\nexport * from './lib/badge/badge.directive';\n\n// Card exports\nexport * from './lib/card/card.component';\nexport * from './lib/card/card-title.directive';\nexport * from './lib/card/card-description.directive';\nexport * from './lib/card/card-header.directive';\nexport * from './lib/card/card-content.directive';\n\n// Accordion exports\nexport * from './lib/accordion/accordion-group.component';\nexport * from './lib/accordion/accordion-item.component';\nexport * from './lib/accordion/accordion-trigger.directive';\nexport * from './lib/accordion/accordion-title.directive';\nexport * from './lib/accordion/accordion-icon.directive';\nexport * from './lib/accordion/accordion-content.directive';\nexport * from './lib/accordion/accordion.tokens';\n\n// Tooltip exports\nexport * from './lib/tooltip/tooltip.directive';\n\n// Tabs exports\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs-list.directive';\nexport * from './lib/tabs/tabs-trigger.directive';\nexport * from './lib/tabs/tabs-panel.directive';\nexport * from './lib/tabs/tabs-indicator.component';\nexport * from './lib/tabs/tabs.tokens';\n\n// Modal exports\nexport * from './lib/modal';\n\n// Toast exports\nexport * from './lib/toast';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueId"],"mappings":"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"}
1
+ {"version":3,"file":"lumaui-angular.mjs","sources":["../../src/lib/button/button.directive.ts","../../src/lib/badge/badge.directive.ts","../../src/lib/input/input.directive.ts","../../src/lib/input/label.directive.ts","../../src/lib/input/helper-text.directive.ts","../../src/lib/input/error-text.directive.ts","../../src/lib/textarea/textarea.directive.ts","../../src/lib/checkbox/checkbox.directive.ts","../../src/lib/radio/radio.directive.ts","../../src/lib/card/card.component.ts","../../src/lib/card/card.component.html","../../src/lib/card/card-title.directive.ts","../../src/lib/card/card-description.directive.ts","../../src/lib/card/card-header.directive.ts","../../src/lib/card/card-content.directive.ts","../../src/lib/accordion/accordion-group.component.ts","../../src/lib/accordion/accordion.tokens.ts","../../src/lib/accordion/accordion-item.component.ts","../../src/lib/accordion/accordion-item.component.html","../../src/lib/accordion/accordion-trigger.directive.ts","../../src/lib/accordion/accordion-title.directive.ts","../../src/lib/accordion/accordion-icon.directive.ts","../../src/lib/accordion/accordion-content.directive.ts","../../src/lib/tooltip/tooltip.directive.ts","../../src/lib/tabs/tabs.tokens.ts","../../src/lib/tabs/tabs.component.ts","../../src/lib/tabs/tabs-list.directive.ts","../../src/lib/tabs/tabs-trigger.directive.ts","../../src/lib/tabs/tabs-panel.directive.ts","../../src/lib/tabs/tabs-indicator.component.ts","../../src/lib/modal/modal.tokens.ts","../../src/lib/modal/modal.component.ts","../../src/lib/modal/modal-overlay.component.ts","../../src/lib/modal/modal-container.component.ts","../../src/lib/modal/modal-header.directive.ts","../../src/lib/modal/modal-title.directive.ts","../../src/lib/modal/modal-content.directive.ts","../../src/lib/modal/modal-footer.directive.ts","../../src/lib/modal/modal-close.component.ts","../../src/lib/modal/index.ts","../../src/lib/toast/toast.tokens.ts","../../src/lib/toast/toast-close.component.ts","../../src/lib/toast/toast-item.component.ts","../../src/lib/toast/toast-container.component.ts","../../src/lib/toast/toast.service.ts","../../src/lib/toast/index.ts","../../src/lib/select/select.tokens.ts","../../src/lib/select/select.component.ts","../../src/lib/select/select.component.html","../../src/lib/select/select-option.component.ts","../../src/index.ts","../../src/lumaui-angular.ts"],"sourcesContent":["import { Directive, input, computed, HostBinding } from '@angular/core';\nimport {\n buttonVariants,\n type ButtonVariant,\n type ButtonSize,\n type ButtonRadius,\n} from '@lumaui/core';\n\n@Directive({\n selector: 'button[lumaButton], a[lumaButton]',\n host: {\n '[attr.type]': 'lmType()',\n '[attr.disabled]': 'lmDisabled() ? \"\" : null',\n },\n})\nexport class LmButtonDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmVariant = input<ButtonVariant>('primary');\n lmSize = input<ButtonSize>('md');\n lmRadius = input<ButtonRadius>('default');\n lmDisabled = input<boolean>(false);\n lmType = input<'button' | 'submit' | 'reset'>('button');\n\n // Computed class string\n classes = computed(() =>\n buttonVariants({\n variant: this.lmVariant(),\n size: this.lmSize(),\n radius: this.lmRadius(),\n }),\n );\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n}\n","import { Directive, input, computed, HostBinding } from '@angular/core';\nimport {\n badgeVariants,\n type BadgeVariant,\n type BadgeRadius,\n} from '@lumaui/core';\n\n@Directive({\n selector: '[lumaBadge]',\n})\nexport class LmBadgeDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmVariant = input<BadgeVariant>('default');\n lmRadius = input<BadgeRadius>('default');\n\n // Computed class string\n classes = computed(() =>\n badgeVariants({\n variant: this.lmVariant(),\n radius: this.lmRadius(),\n }),\n );\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n}\n","import {\n Directive,\n computed,\n input,\n signal,\n inject,\n forwardRef,\n OnInit,\n DestroyRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n NgControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { inputVariants, type InputSize } from '@lumaui/core';\n\nlet inputIdCounter = 0;\n\n/**\n * Input directive with CVA variants and Angular Forms integration\n *\n * @example\n * <input lumaInput lmSize=\"md\" />\n */\n@Directive({\n selector: 'input[lumaInput]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n '[attr.aria-invalid]': 'hasError()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.required]': 'lmRequired() ? \"\" : null',\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LmInputDirective),\n multi: true,\n },\n ],\n})\nexport class LmInputDirective implements ControlValueAccessor, OnInit {\n // Use Injector to avoid circular dependency\n private injector = inject(Injector);\n private elementRef = inject(\n ElementRef<HTMLInputElement | HTMLTextAreaElement>,\n );\n private ngControl: NgControl | null = null;\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n lmSize = input<InputSize>('md');\n lmError = input<boolean>(false);\n lmDisabled = input<boolean>(false);\n lmRequired = input<boolean>(false);\n\n // Internal signal for disabled state coming from FormControl.disable()\n private _formDisabled = signal(false);\n\n // Internal signals for form validation state (bridging non-signal FormControl to signal graph)\n private _formInvalid = signal(false);\n private _formTouched = signal(false);\n\n // Final disabled state: manual lmDisabled OR programmatic FormControl.disable()\n isDisabled = computed(() => this.lmDisabled() || this._formDisabled());\n\n // Auto-generated ID\n elementId = signal<string>(`luma-input-${inputIdCounter++}`);\n\n // ARIA describedby (will be set by parent or manually)\n describedBy = signal<string | null>(null);\n\n // Computed signal — reactive to both manual lmError and FormControl state\n hasError = computed(\n () => this.lmError() || (this._formInvalid() && this._formTouched()),\n );\n\n // Computed classes\n classes = computed(() =>\n inputVariants({\n size: this.lmSize(),\n error: this.hasError(),\n }),\n );\n\n // noop – replaced at runtime by registerOnChange / registerOnTouched\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n // Get NgControl from Injector to avoid circular dependency\n try {\n this.ngControl = this.injector.get(NgControl, null, {\n optional: true,\n self: true,\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n\n const control = this.ngControl.control;\n if (control) {\n // Capture immediate state (e.g. markAsTouched() called before ngOnInit)\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n\n // React to any future FormControl state changes\n // control.events emits for ALL changes: value, status, touched, pristine\n // statusChanges alone does NOT emit for markAsTouched()\n control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n });\n }\n }\n } catch {\n // No NgControl present\n this.ngControl = null;\n }\n }\n\n writeValue(value: string): void {\n const element = this.elementRef.nativeElement;\n element.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.onChange(target.value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Set the aria-describedby attribute value\n * This is typically called by parent components or directives\n */\n setDescribedBy(value: string | null): void {\n this.describedBy.set(value);\n }\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { labelVariants, type LabelSize } from '@lumaui/core';\n\n/**\n * Label directive with required indicator support\n *\n * @example\n * <label lumaLabel for=\"email\" lmRequired>Email</label>\n */\n@Directive({\n selector: 'label[lumaLabel]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.for]': 'for()',\n },\n})\nexport class LmLabelDirective {\n for = input<string>('');\n lmRequired = input<boolean>(false);\n lmSize = input<LabelSize>('md');\n lmInline = input<boolean>(false);\n\n classes = computed(() =>\n labelVariants({\n size: this.lmSize(),\n required: this.lmRequired(),\n inline: this.lmInline(),\n }),\n );\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { helperTextVariants, type HelperTextSize } from '@lumaui/core';\n\nlet helperIdCounter = 0;\n\n/**\n * Helper text directive for displaying hint/description text\n *\n * @example\n * <span lumaHelperText>We'll never share your email.</span>\n */\n@Directive({\n selector: '[lumaHelperText]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n },\n})\nexport class LmHelperTextDirective {\n elementId = signal<string>(`luma-helper-${helperIdCounter++}`);\n lmSize = input<HelperTextSize>('sm');\n\n classes = computed(() => helperTextVariants({ size: this.lmSize() }));\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { errorTextVariants, type ErrorTextSize } from '@lumaui/core';\n\nlet errorIdCounter = 0;\n\n/**\n * Error text directive for displaying validation error messages\n *\n * @example\n * <span lumaErrorText *ngIf=\"hasError\">Password must be at least 8 characters.</span>\n */\n@Directive({\n selector: '[lumaErrorText]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n },\n})\nexport class LmErrorTextDirective {\n elementId = signal<string>(`luma-error-${errorIdCounter++}`);\n lmSize = input<ErrorTextSize>('sm');\n\n classes = computed(() => errorTextVariants({ size: this.lmSize() }));\n}\n","import {\n Directive,\n computed,\n input,\n signal,\n inject,\n forwardRef,\n OnInit,\n DestroyRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n NgControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { textareaVariants, type TextareaSize } from '@lumaui/core';\n\nlet textareaIdCounter = 0;\n\n/**\n * Textarea directive with CVA variants and Angular Forms integration\n *\n * @example\n * <textarea lumaTextarea lmSize=\"md\"></textarea>\n */\n@Directive({\n selector: 'textarea[lumaTextarea]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n '[attr.aria-invalid]': 'hasError()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.required]': 'lmRequired() ? \"\" : null',\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LmTextareaDirective),\n multi: true,\n },\n ],\n})\nexport class LmTextareaDirective implements ControlValueAccessor, OnInit {\n // Use Injector to avoid circular dependency\n private injector = inject(Injector);\n private elementRef = inject(ElementRef<HTMLTextAreaElement>);\n private ngControl: NgControl | null = null;\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n lmSize = input<TextareaSize>('md');\n lmError = input<boolean>(false);\n lmDisabled = input<boolean>(false);\n lmRequired = input<boolean>(false);\n\n // Internal signal for disabled state coming from FormControl.disable()\n private _formDisabled = signal(false);\n\n // Internal signals for form validation state (bridging non-signal FormControl to signal graph)\n private _formInvalid = signal(false);\n private _formTouched = signal(false);\n\n // Final disabled state: manual lmDisabled OR programmatic FormControl.disable()\n isDisabled = computed(() => this.lmDisabled() || this._formDisabled());\n\n // Auto-generated ID\n elementId = signal<string>(`luma-textarea-${textareaIdCounter++}`);\n\n // ARIA describedby (set by parent or manually)\n describedBy = signal<string | null>(null);\n\n // Computed signal — reactive to both manual lmError and FormControl state\n hasError = computed(\n () => this.lmError() || (this._formInvalid() && this._formTouched()),\n );\n\n // Computed classes\n classes = computed(() =>\n textareaVariants({\n size: this.lmSize(),\n error: this.hasError(),\n }),\n );\n\n // noop – replaced at runtime by registerOnChange / registerOnTouched\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n // Get NgControl from Injector to avoid circular dependency\n try {\n this.ngControl = this.injector.get(NgControl, null, {\n optional: true,\n self: true,\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n\n const control = this.ngControl.control;\n if (control) {\n // Capture immediate state (e.g. markAsTouched() called before ngOnInit)\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n\n // React to any future FormControl state changes\n // control.events emits for ALL changes: value, status, touched, pristine\n // statusChanges alone does NOT emit for markAsTouched()\n control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n });\n }\n }\n } catch {\n // No NgControl present\n this.ngControl = null;\n }\n }\n\n writeValue(value: string): void {\n const element = this.elementRef.nativeElement;\n element.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.onChange(target.value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Set the aria-describedby attribute value\n * This is typically called by parent components or directives\n */\n setDescribedBy(value: string | null): void {\n this.describedBy.set(value);\n }\n}\n","import {\n Directive,\n computed,\n input,\n signal,\n inject,\n forwardRef,\n OnInit,\n DestroyRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n NgControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { checkboxVariants } from '@lumaui/core';\n\nlet checkboxIdCounter = 0;\n\n// SVG checkmark encoded as a CSS background-image data URI (white stroke on transparent)\nconst CHECKMARK_SVG =\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8l3 3 5-5' stroke='white' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C%2Fsvg%3E\\\")\";\n\n/**\n * Checkbox directive with CVA variants and Angular Forms integration.\n * Supports boolean ControlValueAccessor (checked/unchecked).\n *\n * @example\n * <input type=\"checkbox\" lumaCheckbox [formControl]=\"agreedControl\" />\n */\n@Directive({\n selector: 'input[type=\"checkbox\"][lumaCheckbox]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n '[attr.aria-invalid]': 'hasError()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.required]': 'lmRequired() ? \"\" : null',\n '[style.background-image]': 'isChecked() ? checkmarkSvg : null',\n '[style.background-repeat]': 'isChecked() ? \"no-repeat\" : null',\n '[style.background-position]': 'isChecked() ? \"center\" : null',\n '[style.background-size]': 'isChecked() ? \"75%\" : null',\n '(change)': 'onChangeEvent($event)',\n '(blur)': 'onBlur()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LmCheckboxDirective),\n multi: true,\n },\n ],\n})\nexport class LmCheckboxDirective implements ControlValueAccessor, OnInit {\n // Use Injector to avoid circular dependency\n private injector = inject(Injector);\n private elementRef = inject(ElementRef<HTMLInputElement>);\n private ngControl: NgControl | null = null;\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n lmError = input<boolean>(false);\n lmDisabled = input<boolean>(false);\n lmRequired = input<boolean>(false);\n\n // Internal signal for disabled state coming from FormControl.disable()\n private _formDisabled = signal(false);\n\n // Internal signals for form validation state (bridging non-signal FormControl to signal graph)\n private _formInvalid = signal(false);\n private _formTouched = signal(false);\n\n // Internal signal tracking whether the checkbox is currently checked\n isChecked = signal(false);\n\n // Exposed for host binding (readonly reference to the constant)\n readonly checkmarkSvg = CHECKMARK_SVG;\n\n // Final disabled state: manual lmDisabled OR programmatic FormControl.disable()\n isDisabled = computed(() => this.lmDisabled() || this._formDisabled());\n\n // Preserve static id=\"...\" from template; fall back to auto-generated id.\n // elementRef must be declared before this field so it's available at init time.\n elementId = signal<string>(\n this.elementRef.nativeElement.getAttribute('id') ||\n `luma-checkbox-${checkboxIdCounter++}`,\n );\n\n // ARIA describedby (can be set by parent or manually)\n describedBy = signal<string | null>(null);\n\n // Computed signal — reactive to both manual lmError and FormControl state\n hasError = computed(\n () => this.lmError() || (this._formInvalid() && this._formTouched()),\n );\n\n // Computed classes\n classes = computed(() => checkboxVariants({ error: this.hasError() }));\n\n // ControlValueAccessor implementation (boolean-typed)\n // noop – replaced at runtime by registerOnChange / registerOnTouched\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: boolean) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n // Sync initial checked state from native element.\n // Needed when a static `checked` attribute is used without a FormControl —\n // writeValue() is never called in that case, so isChecked stays false.\n this.isChecked.set(this.elementRef.nativeElement.checked);\n\n // Get NgControl from Injector to avoid circular dependency\n try {\n this.ngControl = this.injector.get(NgControl, null, {\n optional: true,\n self: true,\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n\n const control = this.ngControl.control;\n if (control) {\n // Capture immediate state (e.g. markAsTouched() called before ngOnInit)\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n\n // React to any future FormControl state changes\n // control.events emits for ALL changes: value, status, touched, pristine\n // statusChanges alone does NOT emit for markAsTouched()\n control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n });\n }\n }\n } catch {\n // No NgControl present\n this.ngControl = null;\n }\n }\n\n writeValue(value: boolean): void {\n const checked = !!value;\n this.elementRef.nativeElement.checked = checked;\n this.isChecked.set(checked);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n onChangeEvent(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this.isChecked.set(checked);\n this.onChange(checked);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Set the aria-describedby attribute value.\n * Typically called by helper/error text directives.\n */\n setDescribedBy(value: string | null): void {\n this.describedBy.set(value);\n }\n}\n","import {\n Directive,\n computed,\n input,\n signal,\n inject,\n forwardRef,\n OnInit,\n DestroyRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n NgControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { radioVariants } from '@lumaui/core';\n\nlet radioIdCounter = 0;\n\n/**\n * Radio button directive with CVA variants and Angular Forms integration.\n * Emits `lmValue` to the FormControl when checked.\n * The inner dot indicator is rendered via a signal-bound `box-shadow` style.\n *\n * @example\n * <input type=\"radio\" lumaRadio lmValue=\"option-a\" [formControl]=\"optionControl\" />\n */\n@Directive({\n selector: 'input[type=\"radio\"][lumaRadio]',\n standalone: true,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'elementId()',\n '[attr.aria-invalid]': 'hasError()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.required]': 'lmRequired() ? \"\" : null',\n // Inner dot: background fills circle, inset shadow carves a gap between border and dot\n '[style.box-shadow]':\n 'isChecked() ? \"inset 0 0 0 3px var(--color-background)\" : null',\n '[style.background-color]': 'isChecked() ? \"var(--color-primary)\" : null',\n '[style.border-color]': 'isChecked() ? \"var(--color-primary)\" : null',\n '(change)': 'onChangeEvent($event)',\n '(blur)': 'onBlur()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LmRadioDirective),\n multi: true,\n },\n ],\n})\nexport class LmRadioDirective implements ControlValueAccessor, OnInit {\n // Use Injector to avoid circular dependency\n private injector = inject(Injector);\n private elementRef = inject(ElementRef<HTMLInputElement>);\n private ngControl: NgControl | null = null;\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n lmValue = input<unknown>(undefined);\n lmError = input<boolean>(false);\n lmDisabled = input<boolean>(false);\n lmRequired = input<boolean>(false);\n\n // Internal signal for disabled state coming from FormControl.disable()\n private _formDisabled = signal(false);\n\n // Internal signals for form validation state (bridging non-signal FormControl to signal graph)\n private _formInvalid = signal(false);\n private _formTouched = signal(false);\n\n // Internal signal tracking whether this radio is currently selected\n isChecked = signal(false);\n\n // Final disabled state: manual lmDisabled OR programmatic FormControl.disable()\n isDisabled = computed(() => this.lmDisabled() || this._formDisabled());\n\n // Preserve static id=\"...\" from template; fall back to auto-generated id.\n // elementRef must be declared before this field so it's available at init time.\n elementId = signal<string>(\n this.elementRef.nativeElement.getAttribute('id') ||\n `luma-radio-${radioIdCounter++}`,\n );\n\n // ARIA describedby (can be set by parent or manually)\n describedBy = signal<string | null>(null);\n\n // Computed signal — reactive to both manual lmError and FormControl state\n hasError = computed(\n () => this.lmError() || (this._formInvalid() && this._formTouched()),\n );\n\n // Computed classes\n classes = computed(() => radioVariants({ error: this.hasError() }));\n\n // noop – replaced at runtime by registerOnChange / registerOnTouched\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: unknown) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n // Sync initial checked state from native element.\n // Needed when a static `checked` attribute is used without a FormControl —\n // writeValue() is never called in that case, so isChecked stays false.\n this.isChecked.set(this.elementRef.nativeElement.checked);\n\n // Get NgControl from Injector to avoid circular dependency\n try {\n this.ngControl = this.injector.get(NgControl, null, {\n optional: true,\n self: true,\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n\n const control = this.ngControl.control;\n if (control) {\n // Capture immediate state (e.g. markAsTouched() called before ngOnInit)\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n\n // React to any future FormControl state changes\n // control.events emits for ALL changes: value, status, touched, pristine\n // statusChanges alone does NOT emit for markAsTouched()\n control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n });\n }\n }\n } catch {\n // No NgControl present\n this.ngControl = null;\n }\n\n // Standalone usage (no FormControl): when the user selects a sibling radio in the\n // same name group, the browser silently sets this radio's .checked = false without\n // firing a change event on it. We listen on document and re-read native state.\n const el = this.elementRef.nativeElement;\n const onSiblingChange = (e: Event): void => {\n const target = e.target as HTMLInputElement;\n if (\n target !== el &&\n target.type === 'radio' &&\n !!el.name &&\n target.name === el.name\n ) {\n this.isChecked.set(el.checked);\n }\n };\n document.addEventListener('change', onSiblingChange);\n this.destroyRef.onDestroy(() =>\n document.removeEventListener('change', onSiblingChange),\n );\n }\n\n writeValue(value: unknown): void {\n // Check the radio if the form value equals this radio's value\n const checked = value === this.lmValue();\n this.elementRef.nativeElement.checked = checked;\n this.isChecked.set(checked);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n onChangeEvent(event: Event): void {\n // Only emit when this radio is checked (not when another radio in the group deselects it)\n if ((event.target as HTMLInputElement).checked) {\n this.isChecked.set(true);\n this.onChange(this.lmValue());\n }\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Set the aria-describedby attribute value.\n * Typically called by helper/error text directives.\n */\n setDescribedBy(value: string | null): void {\n this.describedBy.set(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { cardVariants, type CardVariant } from '@lumaui/core';\n\n@Component({\n selector: 'luma-card',\n templateUrl: './card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LmCardComponent {\n /**\n * Card visual style variant\n * - default: Simple border card\n * - elevated: Card with shadow elevation\n * - subtle: Muted background card\n */\n lmVariant = input<CardVariant>('default');\n\n // Computed class string based on variant\n classes = computed(() => cardVariants({ variant: this.lmVariant() }));\n}\n","<div [class]=\"classes()\">\n <ng-content></ng-content>\n</div>\n","import { Directive, input, computed } from '@angular/core';\nimport { cardTitleVariants, type CardTitleSize } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardTitle]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardTitleDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmSize = input<CardTitleSize>('md');\n\n // Computed class string\n classes = computed(() => cardTitleVariants({ size: this.lmSize() }));\n}\n","import { Directive, input, computed } from '@angular/core';\nimport {\n cardDescriptionVariants,\n type CardDescriptionSize,\n} from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardDescription]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardDescriptionDirective {\n // Signal-based inputs with lm prefix (Angular 20+)\n lmSize = input<CardDescriptionSize>('md');\n\n // Computed class string\n classes = computed(() => cardDescriptionVariants({ size: this.lmSize() }));\n}\n","import { Directive, computed } from '@angular/core';\nimport { cardHeaderVariants } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardHeader]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardHeaderDirective {\n // Computed class string\n classes = computed(() => cardHeaderVariants());\n}\n","import { Directive, computed } from '@angular/core';\nimport { cardContentVariants } from '@lumaui/core';\n\n@Directive({\n selector: '[lumaCardContent]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmCardContentDirective {\n // Computed class string\n classes = computed(() => cardContentVariants());\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n} from '@angular/core';\n\n/**\n * AccordionGroupComponent\n *\n * Optional wrapper component that coordinates multiple accordion items.\n * Supports controlled pattern for implementing business logic like:\n * - Single item open at a time\n * - Multiple items open\n * - Always keep first/last item open\n * - Maximum number of open items\n *\n * @example Controlled single mode\n * ```html\n * <luma-accordion-group [lmValue]=\"activeItem()\" (lmValueChange)=\"activeItem.set($event)\">\n * <luma-accordion-item lmId=\"item-1\">...</luma-accordion-item>\n * <luma-accordion-item lmId=\"item-2\">...</luma-accordion-item>\n * </luma-accordion-group>\n * ```\n *\n * @example Controlled multiple mode\n * ```html\n * <luma-accordion-group [lmValue]=\"activeItems()\" (lmValueChange)=\"activeItems.set($event)\">\n * <luma-accordion-item lmId=\"item-1\">...</luma-accordion-item>\n * <luma-accordion-item lmId=\"item-2\">...</luma-accordion-item>\n * </luma-accordion-group>\n * ```\n */\n@Component({\n selector: 'luma-accordion-group',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col',\n '[style.gap]': '\"var(--luma-accordion-item-gap)\"',\n },\n})\nexport class LmAccordionGroupComponent {\n /**\n * Controlled value for which items are open\n * - null: uncontrolled mode (each item manages its own state)\n * - string: single item mode (ID of open item)\n * - string[]: multiple items mode (IDs of open items)\n */\n lmValue = input<string | string[] | null>(null);\n\n /**\n * Emitted when an item is toggled\n * Returns the new value (string for single mode, string[] for multiple)\n */\n lmValueChange = output<string | string[]>();\n\n /**\n * Force single mode even when lmValue is an array\n * When true, only one item can be open at a time\n */\n lmSingle = input<boolean>(false);\n\n /**\n * Toggle an item by its ID\n * Called by child AccordionItemComponent when toggled\n */\n toggleItem(itemId: string): void {\n const current = this.lmValue();\n\n // If uncontrolled, do nothing (items manage their own state)\n if (current === null || current === undefined) {\n return;\n }\n\n let newValue: string | string[];\n\n if (this.lmSingle() || typeof current === 'string') {\n // Single mode: toggle between the item and empty\n newValue = current === itemId ? '' : itemId;\n } else {\n // Multiple mode: add/remove from array\n const arr = Array.isArray(current) ? [...current] : [];\n const index = arr.indexOf(itemId);\n if (index >= 0) {\n arr.splice(index, 1);\n } else {\n arr.push(itemId);\n }\n newValue = arr;\n }\n\n this.lmValueChange.emit(newValue);\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Interface for accordion item state that child directives can access\n */\nexport interface AccordionItemBase {\n /** Whether the accordion item is currently open */\n isOpen: Signal<boolean>;\n /** Whether the accordion item is disabled */\n lmDisabled: Signal<boolean>;\n /** Toggle the accordion open/closed state */\n toggle(): void;\n}\n\n/**\n * Injection token for accordion item\n * Allows child directives to access parent accordion item state\n */\nexport const ACCORDION_ITEM = new InjectionToken<AccordionItemBase>(\n 'AccordionItem',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport {\n accordionItemVariants,\n accordionContentWrapperVariants,\n type AccordionItemVariant,\n} from '@lumaui/core';\nimport { ACCORDION_ITEM, type AccordionItemBase } from './accordion.tokens';\nimport { LmAccordionGroupComponent } from './accordion-group.component';\n\n/**\n * AccordionItemComponent\n *\n * Wrapper component that contains the trigger and content.\n * Can be used standalone or within an AccordionGroupComponent.\n *\n * @example Standalone usage\n * ```html\n * <luma-accordion-item>\n * <button lumaAccordionTrigger>\n * <span lumaAccordionTitle>Title</span>\n * <svg lumaAccordionIcon>...</svg>\n * </button>\n * <div lumaAccordionContent>Content here...</div>\n * </luma-accordion-item>\n * ```\n *\n * @example With variants\n * ```html\n * <luma-accordion-item lmVariant=\"filled\">\n * ...\n * </luma-accordion-item>\n * ```\n */\n@Component({\n selector: 'luma-accordion-item',\n templateUrl: './accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: ACCORDION_ITEM, useExisting: LmAccordionItemComponent },\n ],\n host: {\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'lmVariant()',\n },\n})\nexport class LmAccordionItemComponent implements AccordionItemBase {\n private group = inject(LmAccordionGroupComponent, { optional: true });\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private previousClasses: string[] = [];\n\n constructor() {\n // Effect to reactively manage CVA classes without replacing user classes\n effect(() => {\n // Remove previous CVA classes\n this.previousClasses.forEach((c) => {\n this.renderer.removeClass(this.el.nativeElement, c);\n });\n\n // Add new CVA classes (preserves user-provided classes)\n const newClasses = this.wrapperClasses()\n .split(' ')\n .filter((c) => c);\n newClasses.forEach((c) => {\n this.renderer.addClass(this.el.nativeElement, c);\n });\n\n this.previousClasses = newClasses;\n });\n }\n\n /**\n * Unique identifier for this item (required when using AccordionGroup)\n */\n lmId = input<string>('');\n\n /**\n * Visual style variant\n * - default: Standard with border\n * - bordered: FAQ-style stacked items\n * - filled: Solid background (unified trigger/content)\n */\n lmVariant = input<AccordionItemVariant>('default');\n\n /**\n * Initial/controlled open state (for standalone usage)\n */\n lmOpen = input<boolean>(false);\n\n /**\n * Whether the accordion item is disabled\n */\n lmDisabled = input<boolean>(false);\n\n /**\n * Emitted when the open state changes\n * Useful for tracking/analytics\n */\n lmOpenChange = output<boolean>();\n\n // Internal state for uncontrolled mode\n private _isOpen = signal(false);\n\n /**\n * Computed open state\n * Priority: group controlled > lmOpen input > internal state\n */\n isOpen = computed(() => {\n // If in a controlled group, check group value\n if (this.group?.lmValue() !== null && this.group?.lmValue() !== undefined) {\n const value = this.group.lmValue();\n const id = this.lmId();\n return Array.isArray(value) ? value.includes(id) : value === id;\n }\n // Otherwise use input or internal state\n return this.lmOpen() || this._isOpen();\n });\n\n // CVA classes\n wrapperClasses = computed(() =>\n accordionItemVariants({\n variant: this.lmVariant(),\n }),\n );\n\n contentWrapperClasses = computed(() =>\n accordionContentWrapperVariants({ open: this.isOpen() }),\n );\n\n /**\n * Toggle the accordion open/closed state\n */\n toggle(): void {\n if (this.lmDisabled()) return;\n\n if (this.group && this.group.lmValue() !== null) {\n // Controlled by group\n this.group.toggleItem(this.lmId());\n } else {\n // Uncontrolled mode\n this._isOpen.update((v) => !v);\n }\n\n this.lmOpenChange.emit(this.isOpen());\n }\n}\n","<!-- Slot for trigger button -->\n<ng-content select=\"[lumaAccordionTrigger]\"></ng-content>\n\n<!-- Content wrapper with grid-rows animation -->\n<div [class]=\"contentWrapperClasses()\">\n <div class=\"overflow-hidden\">\n <ng-content select=\"[lumaAccordionContent]\"></ng-content>\n </div>\n</div>\n","import { Directive, inject, computed, HostListener } from '@angular/core';\nimport { accordionTriggerVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\n\nlet uniqueId = 0;\n\n/**\n * AccordionTriggerDirective\n *\n * Applied to a div element to make it the clickable trigger for the accordion.\n * Uses div instead of button for maximum layout flexibility.\n * Handles ARIA attributes and keyboard navigation automatically.\n *\n * @example Basic usage\n * ```html\n * <div lumaAccordionTrigger>\n * <span lumaAccordionTitle>Title</span>\n * <span lumaAccordionIcon>\n * <svg>...</svg>\n * </span>\n * </div>\n * ```\n *\n * @example Custom layout\n * ```html\n * <div lumaAccordionTrigger class=\"grid grid-cols-[auto_1fr_auto] gap-4\">\n * <svg class=\"w-6 h-6\">...</svg>\n * <div>\n * <span lumaAccordionTitle>Title</span>\n * <p class=\"text-sm\">Description</p>\n * </div>\n * <span lumaAccordionIcon>\n * <svg>...</svg>\n * </span>\n * </div>\n * ```\n */\n@Directive({\n selector: 'div[lumaAccordionTrigger]',\n host: {\n '[class]': 'classes()',\n role: 'button',\n '[attr.tabindex]': 'item.lmDisabled() ? -1 : 0',\n '[attr.aria-expanded]': 'item.isOpen()',\n '[attr.aria-controls]': 'contentId',\n '[attr.aria-disabled]': 'item.lmDisabled() ? \"true\" : null',\n '[id]': 'triggerId',\n },\n})\nexport class LmAccordionTriggerDirective {\n protected item = inject(ACCORDION_ITEM);\n\n private id = ++uniqueId;\n triggerId = `luma-accordion-trigger-${this.id}`;\n contentId = `luma-accordion-content-${this.id}`;\n\n classes = computed(() => accordionTriggerVariants());\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this.item.lmDisabled()) return;\n event.preventDefault();\n this.item.toggle();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.item.lmDisabled()) return;\n\n // Space and Enter don't trigger on div natively - manual handler required\n if (event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n this.item.toggle();\n }\n }\n}\n","import { Directive, input, computed } from '@angular/core';\nimport { accordionTitleVariants, type AccordionTitleSize } from '@lumaui/core';\n\n/**\n * AccordionTitleDirective\n *\n * Applies typography styles to the accordion title.\n * Supports size variants for different visual hierarchies.\n *\n * @example Basic usage\n * ```html\n * <span lumaAccordionTitle>What is Luma UI?</span>\n * ```\n *\n * @example With size variant\n * ```html\n * <span lumaAccordionTitle lmSize=\"lg\">Large Title</span>\n * ```\n */\n@Directive({\n selector: '[lumaAccordionTitle]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmAccordionTitleDirective {\n /**\n * Size variant for the title\n * - sm: Small text for compact UIs\n * - md: Default size (base text)\n * - lg: Large text for emphasis\n */\n lmSize = input<AccordionTitleSize>('md');\n\n classes = computed(() => accordionTitleVariants({ size: this.lmSize() }));\n}\n","import { Directive, inject, computed } from '@angular/core';\nimport { accordionIconVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\n\n/**\n * AccordionIconDirective\n *\n * Applies rotation animation to the accordion icon (typically a chevron).\n * Must be placed on a wrapper element (span or div), not directly on the SVG.\n * Automatically rotates based on the open state of the parent accordion item.\n *\n * @example With span wrapper (recommended)\n * ```html\n * <span lumaAccordionIcon>\n * <svg viewBox=\"0 0 24 24\" class=\"w-4 h-4\">\n * <path stroke=\"currentColor\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n * </svg>\n * </span>\n * ```\n *\n * @example With div wrapper\n * ```html\n * <div lumaAccordionIcon>\n * <my-chevron-icon></my-chevron-icon>\n * </div>\n * ```\n *\n * @example Customize rotation via CSS variable\n * ```html\n * <span lumaAccordionIcon style=\"--luma-accordion-icon-rotation: 90deg\">\n * <svg>...</svg>\n * </span>\n * ```\n */\n@Directive({\n selector: 'span[lumaAccordionIcon], div[lumaAccordionIcon]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-hidden]': 'true',\n },\n})\nexport class LmAccordionIconDirective {\n protected item = inject(ACCORDION_ITEM);\n\n classes = computed(() => accordionIconVariants({ open: this.item.isOpen() }));\n}\n","import { Directive, inject, computed } from '@angular/core';\nimport { accordionContentVariants } from '@lumaui/core';\nimport { ACCORDION_ITEM } from './accordion.tokens';\nimport { LmAccordionTriggerDirective } from './accordion-trigger.directive';\n\nlet uniqueId = 0;\n\n/**\n * AccordionContentDirective\n *\n * Applied to the content area of the accordion.\n * Handles visibility, ARIA attributes, and fade animation.\n *\n * @example Basic usage\n * ```html\n * <div lumaAccordionContent>\n * <p>Your content here...</p>\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaAccordionContent]',\n host: {\n '[class]': 'classes()',\n role: 'region',\n '[id]': 'contentId',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.hidden]': '!item.isOpen() ? \"\" : null',\n },\n})\nexport class LmAccordionContentDirective {\n protected item = inject(ACCORDION_ITEM);\n protected trigger = inject(LmAccordionTriggerDirective, { optional: true });\n\n private id = ++uniqueId;\n contentId = `luma-accordion-content-${this.id}`;\n\n triggerId = computed(() => this.trigger?.triggerId ?? null);\n\n classes = computed(() =>\n accordionContentVariants({ open: this.item.isOpen() }),\n );\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n NgZone,\n Renderer2,\n computed,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { tooltipVariants, type TooltipPosition } from '@lumaui/core';\n\nconst TOOLTIP_GAP = 8;\n\n@Directive({\n selector: '[lumaTooltip]',\n host: {\n '[attr.aria-describedby]': 'tooltipId',\n },\n})\nexport class LmTooltipDirective implements OnDestroy {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private ngZone = inject(NgZone);\n\n // Inputs with lm prefix following Lumo convention\n lumaTooltip = input.required<string>();\n lmPosition = input<TooltipPosition>('top');\n lmHtml = input<boolean>(false);\n lmTrigger = input<'hover' | 'click' | 'focus'>('hover');\n lmDelay = input<number>(0);\n\n // State\n isVisible = signal(false);\n actualPosition = signal<TooltipPosition>('top');\n tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`;\n\n private tooltipElement: HTMLElement | null = null;\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private scrollListener: (() => void) | null = null;\n private resizeListener: (() => void) | null = null;\n private captureScrollHandler: (() => void) | null = null;\n\n classes = computed(() =>\n tooltipVariants({\n visible: this.isVisible(),\n }),\n );\n\n constructor() {\n // Create and update tooltip element reactively\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.ensureTooltipElement();\n this.updateContent();\n this.updateClasses();\n }\n });\n }\n\n private ensureTooltipElement(): void {\n if (this.tooltipElement) return;\n\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.setAttribute(this.tooltipElement, 'id', this.tooltipId);\n this.renderer.setAttribute(this.tooltipElement, 'role', 'tooltip');\n // Portal: append to document.body to avoid overflow clipping\n this.renderer.appendChild(this.document.body, this.tooltipElement);\n }\n\n private updateContent(): void {\n if (!this.tooltipElement) return;\n\n const content = this.lumaTooltip();\n if (this.lmHtml()) {\n this.tooltipElement.innerHTML = content;\n } else {\n this.tooltipElement.textContent = content;\n }\n }\n\n private updateClasses(): void {\n if (!this.tooltipElement) return;\n this.tooltipElement.className = this.classes();\n }\n\n private updatePosition(): void {\n if (!this.tooltipElement || !isPlatformBrowser(this.platformId)) return;\n\n const triggerRect = this.el.nativeElement.getBoundingClientRect();\n const position = this.actualPosition();\n\n let top: number;\n let left: number;\n let transform: string;\n\n switch (position) {\n case 'top':\n left = triggerRect.left + triggerRect.width / 2;\n top = triggerRect.top - TOOLTIP_GAP;\n transform = 'translate(-50%, -100%)';\n break;\n case 'bottom':\n left = triggerRect.left + triggerRect.width / 2;\n top = triggerRect.bottom + TOOLTIP_GAP;\n transform = 'translate(-50%, 0%)';\n break;\n case 'left':\n left = triggerRect.left - TOOLTIP_GAP;\n top = triggerRect.top + triggerRect.height / 2;\n transform = 'translate(-100%, -50%)';\n break;\n case 'right':\n left = triggerRect.right + TOOLTIP_GAP;\n top = triggerRect.top + triggerRect.height / 2;\n transform = 'translate(0%, -50%)';\n break;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'transform', transform);\n }\n\n private addPositionListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Run outside Angular zone for performance — no change detection needed\n this.ngZone.runOutsideAngular(() => {\n const onReposition = () => this.updatePosition();\n\n this.scrollListener = this.renderer.listen(\n 'window',\n 'scroll',\n onReposition,\n );\n // Capture phase catches scroll events on any ancestor\n this.document.addEventListener('scroll', onReposition, true);\n this.captureScrollHandler = onReposition;\n this.resizeListener = this.renderer.listen(\n 'window',\n 'resize',\n onReposition,\n );\n });\n }\n\n private removePositionListeners(): void {\n if (this.scrollListener) {\n this.scrollListener();\n this.scrollListener = null;\n }\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n // Remove capture-phase scroll listener\n if (this.captureScrollHandler) {\n this.document.removeEventListener(\n 'scroll',\n this.captureScrollHandler,\n true,\n );\n this.captureScrollHandler = null;\n }\n }\n\n private isTouchDevice(): boolean {\n if (!isPlatformBrowser(this.platformId)) return false;\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n private getFlippedPosition(preferred: TooltipPosition): TooltipPosition {\n if (!this.tooltipElement || !isPlatformBrowser(this.platformId)) {\n return preferred;\n }\n\n const triggerRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n switch (preferred) {\n case 'top':\n if (triggerRect.top - tooltipRect.height - TOOLTIP_GAP < 0) {\n return 'bottom';\n }\n break;\n case 'bottom':\n if (\n triggerRect.bottom + tooltipRect.height + TOOLTIP_GAP >\n viewportHeight\n ) {\n return 'top';\n }\n break;\n case 'left':\n if (triggerRect.left - tooltipRect.width - TOOLTIP_GAP < 0) {\n return 'right';\n }\n break;\n case 'right':\n if (\n triggerRect.right + tooltipRect.width + TOOLTIP_GAP >\n viewportWidth\n ) {\n return 'left';\n }\n break;\n }\n\n return preferred;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n // Ignore hover on touch devices\n if (this.isTouchDevice()) return;\n if (this.lmTrigger() !== 'hover') return;\n this.show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n if (this.isTouchDevice()) return;\n if (this.lmTrigger() !== 'hover') return;\n this.hide();\n }\n\n @HostListener('click')\n onClick(): void {\n // On touch devices, click acts as toggle even with trigger='hover'\n if (this.isTouchDevice() || this.lmTrigger() === 'click') {\n this.toggle();\n }\n }\n\n @HostListener('focus')\n onFocus(): void {\n if (this.lmTrigger() === 'focus' || this.lmTrigger() === 'hover') {\n this.show();\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n if (this.lmTrigger() === 'focus' || this.lmTrigger() === 'hover') {\n this.hide();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.hide();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n if (this.lmTrigger() !== 'click' && !this.isTouchDevice()) return;\n const target = event.target as Node;\n // Check both trigger and portal tooltip (tooltip is now in body, not trigger)\n if (\n !this.el.nativeElement.contains(target) &&\n !this.tooltipElement?.contains(target)\n ) {\n this.hide();\n }\n }\n\n @HostListener('document:touchstart', ['$event'])\n onDocumentTouch(event: TouchEvent): void {\n if (!this.isVisible()) return;\n const target = event.target as Node;\n if (\n !this.el.nativeElement.contains(target) &&\n !this.tooltipElement?.contains(target)\n ) {\n this.hide();\n }\n }\n\n show(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n\n const delay = this.lmDelay();\n const showAction = () => {\n // Calculate position with auto-flip\n const actualPosition = this.getFlippedPosition(this.lmPosition());\n this.actualPosition.set(actualPosition);\n this.isVisible.set(true);\n this.updateClasses();\n // Position after DOM paint so tooltip dimensions are available\n requestAnimationFrame(() => {\n this.updatePosition();\n this.addPositionListeners();\n });\n };\n\n if (delay > 0) {\n this.showTimeout = setTimeout(showAction, delay);\n } else {\n showAction();\n }\n }\n\n hide(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n this.isVisible.set(false);\n this.updateClasses();\n this.removePositionListeners();\n }\n\n toggle(): void {\n if (this.isVisible()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n ngOnDestroy(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n this.removePositionListeners();\n if (this.tooltipElement) {\n this.renderer.removeChild(this.document.body, this.tooltipElement);\n }\n }\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { type TabsVariant } from '@lumaui/core';\n\nexport interface TabsGroupBase {\n /** Currently selected tab value */\n value: WritableSignal<string | null>;\n /** Visual style of the tabs (underline, background, pill) */\n lmVariant: Signal<TabsVariant>;\n /** Whether to lazy load panel content */\n lmLazy: Signal<boolean>;\n /** Select a tab by value */\n select(value: string): void;\n /** Register a trigger element */\n registerTrigger(value: string, element: HTMLElement): void;\n /** Unregister a trigger element */\n unregisterTrigger(value: string): void;\n /** Get all registered triggers */\n getTriggers(): Map<string, HTMLElement>;\n /** Focus next trigger (for keyboard navigation) */\n focusNextTrigger(): void;\n /** Focus previous trigger (for keyboard navigation) */\n focusPreviousTrigger(): void;\n /** Focus first trigger */\n focusFirstTrigger(): void;\n /** Focus last trigger */\n focusLastTrigger(): void;\n}\n\nexport interface TabsListBase {\n /** Reference to the native element */\n elementRef: { nativeElement: HTMLElement };\n /** Get the currently active trigger element */\n getActiveTrigger(): HTMLElement | null;\n /** Get the element that acts as the semantic tablist container */\n getListContainer(): HTMLElement;\n}\n\n/**\n * Injection token for tabs group\n * Allows child components to access parent tabs state\n */\nexport const TABS_GROUP = new InjectionToken<TabsGroupBase>('TabsGroup');\n\n/**\n * Injection token for tabs list\n * Allows indicator to access trigger positions\n */\nexport const TABS_LIST = new InjectionToken<TabsListBase>('TabsList');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n effect,\n} from '@angular/core';\nimport { type TabsVariant } from '@lumaui/core';\nimport { TABS_GROUP, type TabsGroupBase } from './tabs.tokens';\n\n/**\n * Tabs container component\n *\n * Manages tab selection state, keyboard navigation, and provides context\n * to child components (TabsList, TabsTrigger, TabsPanel).\n *\n * @example\n * ```html\n * <luma-tabs [lmValue]=\"selectedTab()\" (lmValueChange)=\"onSelect($event)\">\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * </div>\n * <div lumaTabsPanel=\"tab-1\">Content 1</div>\n * <div lumaTabsPanel=\"tab-2\">Content 2</div>\n * </luma-tabs>\n * ```\n */\n@Component({\n selector: 'luma-tabs',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TABS_GROUP,\n useExisting: LmTabsComponent,\n },\n ],\n host: {\n '[class]': '\"block w-full\"',\n },\n})\nexport class LmTabsComponent implements TabsGroupBase {\n /** Controlled value - currently selected tab */\n lmValue = input<string | null>(null);\n\n /** Default value for uncontrolled mode */\n lmDefaultValue = input<string>('');\n\n /** Visual style: underline, background, or pill */\n lmVariant = input<TabsVariant>('underline');\n\n /** Whether to lazy load panel content */\n lmLazy = input<boolean>(true);\n\n /** Emits when selected tab changes */\n lmValueChange = output<string>();\n\n /** Internal state for the selected value */\n value = signal<string | null>(null);\n\n /** Map of registered triggers for keyboard navigation */\n private triggers = new Map<string, HTMLElement>();\n\n /** Ordered list of trigger values for navigation */\n private triggerOrder: string[] = [];\n\n constructor() {\n // Sync controlled value to internal state\n effect(() => {\n const controlled = this.lmValue();\n const defaultVal = this.lmDefaultValue();\n\n if (controlled !== null) {\n this.value.set(controlled);\n } else if (this.value() === null && defaultVal) {\n this.value.set(defaultVal);\n }\n });\n }\n\n /**\n * Select a tab by value\n */\n select(tabValue: string): void {\n if (this.value() === tabValue) return;\n\n this.value.set(tabValue);\n this.lmValueChange.emit(tabValue);\n }\n\n /**\n * Register a trigger element for keyboard navigation\n */\n registerTrigger(tabValue: string, element: HTMLElement): void {\n this.triggers.set(tabValue, element);\n if (!this.triggerOrder.includes(tabValue)) {\n this.triggerOrder.push(tabValue);\n }\n }\n\n /**\n * Unregister a trigger element\n */\n unregisterTrigger(tabValue: string): void {\n this.triggers.delete(tabValue);\n this.triggerOrder = this.triggerOrder.filter((v) => v !== tabValue);\n }\n\n /**\n * Get all registered triggers\n */\n getTriggers(): Map<string, HTMLElement> {\n return this.triggers;\n }\n\n /**\n * Focus next trigger in the list\n */\n focusNextTrigger(): void {\n const currentIndex = this.getCurrentTriggerIndex();\n const nextIndex = (currentIndex + 1) % this.triggerOrder.length;\n this.focusTriggerAtIndex(nextIndex);\n }\n\n /**\n * Focus previous trigger in the list\n */\n focusPreviousTrigger(): void {\n const currentIndex = this.getCurrentTriggerIndex();\n const prevIndex =\n currentIndex <= 0 ? this.triggerOrder.length - 1 : currentIndex - 1;\n this.focusTriggerAtIndex(prevIndex);\n }\n\n /**\n * Focus first trigger\n */\n focusFirstTrigger(): void {\n this.focusTriggerAtIndex(0);\n }\n\n /**\n * Focus last trigger\n */\n focusLastTrigger(): void {\n this.focusTriggerAtIndex(this.triggerOrder.length - 1);\n }\n\n private getCurrentTriggerIndex(): number {\n const currentValue = this.value();\n return currentValue ? this.triggerOrder.indexOf(currentValue) : 0;\n }\n\n private focusTriggerAtIndex(index: number): void {\n const value = this.triggerOrder[index];\n const element = this.triggers.get(value);\n if (element) {\n element.focus();\n this.select(value);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n computed,\n viewChild,\n signal,\n effect,\n AfterViewInit,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n tabsListVariants,\n tabsScrollArrowVariants,\n type TabsScrollArrowDirection,\n} from '@lumaui/core';\nimport { TABS_GROUP, TABS_LIST, type TabsListBase } from './tabs.tokens';\n\n/**\n * Tabs list component\n *\n * Container for tab triggers with role=\"tablist\".\n * Provides context for the indicator component.\n * Supports horizontal scrolling with arrow navigation.\n *\n * @example\n * ```html\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * </div>\n * ```\n *\n * @example\n * ```html\n * <div lumaTabsList [lmScrollable]=\"true\">\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <!-- ... many more tabs -->\n * </div>\n * ```\n */\n@Component({\n selector: '[lumaTabsList]',\n providers: [\n {\n provide: TABS_LIST,\n useExisting: LmTabsListDirective,\n },\n ],\n host: {\n '[attr.role]': 'lmScrollable() ? null : \"tablist\"',\n '[attr.aria-orientation]': 'lmScrollable() ? null : \"horizontal\"',\n '[class]': 'hostClasses()',\n },\n template: `\n @if (lmScrollable()) {\n <!-- LEFT ARROW - outside tablist for correct ARIA -->\n <button\n type=\"button\"\n [class]=\"leftArrowClasses()\"\n [disabled]=\"!showLeftArrow()\"\n [style.visibility]=\"showArrows() ? 'visible' : 'hidden'\"\n (click)=\"scrollPrevious()\"\n aria-label=\"Scroll to previous tabs\"\n >\n ‹\n </button>\n }\n\n <!-- SINGLE scroll container - always rendered to avoid dual ng-content -->\n <div\n #scrollContainer\n [attr.role]=\"lmScrollable() ? 'tablist' : null\"\n [attr.aria-orientation]=\"lmScrollable() ? 'horizontal' : null\"\n [class]=\"scrollContainerClasses()\"\n (scroll)=\"onScroll()\"\n (wheel)=\"onWheel($event)\"\n >\n <ng-content />\n </div>\n\n @if (lmScrollable()) {\n <!-- RIGHT ARROW - outside tablist for correct ARIA -->\n <button\n type=\"button\"\n [class]=\"rightArrowClasses()\"\n [disabled]=\"!showRightArrow()\"\n [style.visibility]=\"showArrows() ? 'visible' : 'hidden'\"\n (click)=\"scrollNext()\"\n aria-label=\"Scroll to next tabs\"\n >\n ›\n </button>\n }\n `,\n})\nexport class LmTabsListDirective\n implements TabsListBase, AfterViewInit, OnDestroy\n{\n readonly elementRef = inject(ElementRef<HTMLElement>);\n protected readonly tabsGroup = inject(TABS_GROUP);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Reference to the scroll container */\n scrollContainerRef = viewChild<ElementRef<HTMLElement>>('scrollContainer');\n\n /** Whether horizontal scrolling is enabled */\n lmScrollable = input<boolean>(false);\n\n /** Whether to show scroll arrows */\n showArrows = signal<boolean>(false);\n showLeftArrow = signal<boolean>(false);\n showRightArrow = signal<boolean>(false);\n\n /** ResizeObserver for overflow detection */\n private resizeObserver?: ResizeObserver;\n\n /** Debounce timeout for ResizeObserver */\n private resizeTimeout?: number;\n\n /** Throttle timeout for scroll events */\n private scrollTimeout?: number;\n\n /** Host element classes */\n hostClasses = computed(() => {\n if (this.lmScrollable()) {\n // Scrollable: host is a structural flex wrapper (no role, no variant styling)\n return 'flex items-center gap-2 w-full';\n }\n // Non-scrollable: host is the tablist with variant styling\n return tabsListVariants({\n variant: this.tabsGroup.lmVariant(),\n });\n });\n\n /** Scroll container classes */\n scrollContainerClasses = computed(() => {\n const baseClasses = ['flex', 'items-center'];\n\n if (this.lmScrollable()) {\n const scrollClasses = [\n ...baseClasses,\n 'flex-1', // Fill available space in flex wrapper\n 'relative', // For indicator absolute positioning\n 'overflow-x-auto',\n 'scrollbar-none',\n 'scroll-smooth',\n '-webkit-overflow-scrolling-touch',\n ];\n\n // Move variant visual styling from host to scroll container\n const variant = this.tabsGroup.lmVariant();\n if (variant === 'underline') {\n scrollClasses.push('border-b', 'border-border');\n } else if (variant === 'pills') {\n scrollClasses.push('p-1', 'bg-muted', 'rounded-lg');\n }\n\n return scrollClasses;\n }\n\n // Non-scrollable: apply w-full and variant-specific classes\n const variant = this.tabsGroup.lmVariant();\n if (variant === 'underline') {\n return [...baseClasses, 'w-full', 'gap-4'];\n } else if (variant === 'pills') {\n return [...baseClasses, 'w-full', 'gap-1'];\n }\n\n return [...baseClasses, 'w-full'];\n });\n\n /** Left arrow button classes */\n leftArrowClasses = computed(() =>\n tabsScrollArrowVariants({ direction: 'left' as TabsScrollArrowDirection }),\n );\n\n /** Right arrow button classes */\n rightArrowClasses = computed(() =>\n tabsScrollArrowVariants({ direction: 'right' as TabsScrollArrowDirection }),\n );\n\n constructor() {\n // Update arrows when scrollable changes\n effect(() => {\n if (this.lmScrollable()) {\n this.updateArrowsVisibility();\n } else {\n this.showArrows.set(false);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n // Set up ResizeObserver with debouncing to prevent infinite feedback loop\n this.resizeObserver = new ResizeObserver(() => {\n // Debounce: wait 250ms after last resize before updating\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = window.setTimeout(() => {\n this.updateArrowsVisibility();\n this.resizeTimeout = undefined;\n }, 250);\n });\n\n // Only observe the container, NOT children (prevents cascading updates)\n this.resizeObserver.observe(container);\n\n // Initial check\n this.updateArrowsVisibility();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n\n // Clear timeouts to prevent memory leaks\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n if (this.scrollTimeout !== undefined) {\n clearTimeout(this.scrollTimeout);\n }\n }\n\n /**\n * Get the currently active trigger element\n */\n getActiveTrigger(): HTMLElement | null {\n const currentValue = this.tabsGroup.value();\n if (!currentValue) return null;\n\n const triggers = this.tabsGroup.getTriggers();\n return triggers.get(currentValue) || null;\n }\n\n /**\n * Get the element that acts as the semantic tablist container.\n * When scrollable, this is the inner scroll container (which has role=\"tablist\").\n * When non-scrollable, this is the host element itself.\n */\n getListContainer(): HTMLElement {\n if (this.lmScrollable()) {\n return (\n this.scrollContainerRef()?.nativeElement ??\n this.elementRef.nativeElement\n );\n }\n return this.elementRef.nativeElement;\n }\n\n /**\n * Scroll to the next set of tabs (85% of container width)\n */\n scrollNext(): void {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n const scrollAmount = container.clientWidth * 0.85;\n container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n\n /**\n * Scroll to the previous set of tabs (85% of container width)\n */\n scrollPrevious(): void {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n const scrollAmount = container.clientWidth * 0.85;\n container.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n }\n\n /**\n * Handle scroll event to update arrow states (throttled)\n */\n onScroll(): void {\n if (!this.lmScrollable()) return;\n\n // Throttle: only update after 100ms of no scrolling\n if (this.scrollTimeout !== undefined) {\n clearTimeout(this.scrollTimeout);\n }\n\n this.scrollTimeout = window.setTimeout(() => {\n this.updateArrowsVisibility();\n this.scrollTimeout = undefined;\n }, 100);\n }\n\n /**\n * Handle mouse wheel for horizontal scroll\n */\n onWheel(event: WheelEvent): void {\n if (!this.lmScrollable()) return;\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n event.preventDefault();\n container.scrollLeft += event.deltaY;\n }\n\n /**\n * Update arrow visibility and enabled states based on scroll position\n * Optimized to only update signals when values actually change\n */\n private updateArrowsVisibility(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container) return;\n\n // Check if content overflows container\n const hasOverflow = container.scrollWidth > container.clientWidth;\n\n // Only update if value actually changed\n if (this.showArrows() !== hasOverflow) {\n this.showArrows.set(hasOverflow);\n }\n\n if (hasOverflow) {\n // Update individual arrow states based on scroll position\n const isAtStart = container.scrollLeft <= 1;\n const isAtEnd =\n container.scrollLeft >=\n container.scrollWidth - container.clientWidth - 1;\n\n const newShowLeft = !isAtStart;\n const newShowRight = !isAtEnd;\n\n // Only update if values changed\n if (this.showLeftArrow() !== newShowLeft) {\n this.showLeftArrow.set(newShowLeft);\n }\n if (this.showRightArrow() !== newShowRight) {\n this.showRightArrow.set(newShowRight);\n }\n } else {\n // Reset arrow states when no overflow\n if (this.showLeftArrow() !== false) {\n this.showLeftArrow.set(false);\n }\n if (this.showRightArrow() !== false) {\n this.showRightArrow.set(false);\n }\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n computed,\n OnInit,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { tabsTriggerVariants } from '@lumaui/core';\nimport { TABS_GROUP } from './tabs.tokens';\n\n/**\n * Tabs trigger directive\n *\n * Individual tab button with role=\"tab\" and keyboard navigation support.\n * Follows WAI-ARIA tabs pattern with roving tabindex.\n *\n * @example\n * ```html\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * ```\n */\n@Directive({\n selector: '[lumaTabsTrigger]',\n host: {\n role: 'tab',\n '[attr.id]': 'triggerId()',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-controls]': 'panelId()',\n '[attr.tabindex]': 'isSelected() ? 0 : -1',\n '[attr.data-state]': 'isSelected() ? \"active\" : \"inactive\"',\n '[class]': 'classes()',\n },\n})\nexport class LmTabsTriggerDirective implements OnInit, OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly tabsGroup = inject(TABS_GROUP);\n\n /** Tab value identifier */\n lumaTabsTrigger = input.required<string>();\n\n /** Whether this trigger is disabled */\n lmDisabled = input<boolean>(false);\n\n /** Computed: whether this tab is selected */\n isSelected = computed(\n () => this.tabsGroup.value() === this.lumaTabsTrigger(),\n );\n\n /** Computed: ID for the trigger element */\n triggerId = computed(() => `tab-trigger-${this.lumaTabsTrigger()}`);\n\n /** Computed: ID for the corresponding panel */\n panelId = computed(() => `tab-panel-${this.lumaTabsTrigger()}`);\n\n /** Computed: CSS classes from CVA */\n classes = computed(() =>\n tabsTriggerVariants({\n variant: this.tabsGroup.lmVariant(),\n }),\n );\n\n ngOnInit(): void {\n this.tabsGroup.registerTrigger(\n this.lumaTabsTrigger(),\n this.el.nativeElement,\n );\n }\n\n ngOnDestroy(): void {\n this.tabsGroup.unregisterTrigger(this.lumaTabsTrigger());\n }\n\n @HostListener('click')\n onClick(): void {\n if (this.lmDisabled()) return;\n this.tabsGroup.select(this.lumaTabsTrigger());\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.lmDisabled()) return;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.tabsGroup.focusNextTrigger();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.tabsGroup.focusPreviousTrigger();\n break;\n\n case 'Home':\n event.preventDefault();\n this.tabsGroup.focusFirstTrigger();\n break;\n\n case 'End':\n event.preventDefault();\n this.tabsGroup.focusLastTrigger();\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.tabsGroup.select(this.lumaTabsTrigger());\n break;\n }\n }\n}\n","import {\n Directive,\n inject,\n input,\n computed,\n signal,\n effect,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { tabsPanelVariants } from '@lumaui/core';\nimport { TABS_GROUP } from './tabs.tokens';\n\n/**\n * Tabs panel directive\n *\n * Content panel with role=\"tabpanel\" and lazy loading support.\n * When lazy loading is enabled, content is only rendered after\n * the tab has been selected at least once, then cached.\n *\n * @example\n * ```html\n * <div lumaTabsPanel=\"tab-1\">Content 1</div>\n *\n * <!-- With lazy loading (default when lmLazy=true on parent) -->\n * <ng-template lumaTabsPanel=\"tab-1\">\n * <expensive-component />\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[lumaTabsPanel]',\n host: {\n role: 'tabpanel',\n '[attr.id]': 'panelId()',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.tabindex]': '0',\n '[class]': 'classes()',\n '[hidden]': '!isVisible()',\n },\n})\nexport class LmTabsPanelDirective {\n private readonly tabsGroup = inject(TABS_GROUP);\n private readonly templateRef = inject(TemplateRef<unknown>, {\n optional: true,\n });\n private readonly viewContainer = inject(ViewContainerRef);\n\n /** Panel value identifier */\n lumaTabsPanel = input.required<string>();\n\n /** Track if panel has ever been selected (for lazy loading cache) */\n private hasBeenSelected = signal(false);\n\n /** Computed: whether this panel is currently selected */\n isSelected = computed(() => this.tabsGroup.value() === this.lumaTabsPanel());\n\n /** Computed: whether this panel should be visible/rendered */\n isVisible = computed(() => {\n const selected = this.isSelected();\n const lazy = this.tabsGroup.lmLazy();\n\n // If lazy loading is disabled, always show selected panel\n if (!lazy) return selected;\n\n // With lazy loading: render if ever selected, but only show if currently selected\n return this.hasBeenSelected() && selected;\n });\n\n /** Computed: whether content should be rendered (for lazy loading) */\n shouldRender = computed(() => {\n const lazy = this.tabsGroup.lmLazy();\n return lazy ? this.hasBeenSelected() : true;\n });\n\n /** Computed: ID for the panel element */\n panelId = computed(() => `tab-panel-${this.lumaTabsPanel()}`);\n\n /** Computed: ID for the corresponding trigger */\n triggerId = computed(() => `tab-trigger-${this.lumaTabsPanel()}`);\n\n /** Computed: CSS classes from CVA */\n classes = computed(() =>\n tabsPanelVariants({\n visible: this.isVisible(),\n }),\n );\n\n constructor() {\n // Track when panel is selected for lazy loading cache\n effect(() => {\n if (this.isSelected() && !this.hasBeenSelected()) {\n this.hasBeenSelected.set(true);\n }\n });\n\n // Handle template-based lazy loading\n effect(() => {\n if (this.templateRef && this.shouldRender()) {\n if (this.viewContainer.length === 0) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n signal,\n effect,\n PLATFORM_ID,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { tabsIndicatorVariants } from '@lumaui/core';\nimport { TABS_GROUP, TABS_LIST } from './tabs.tokens';\n\n/**\n * Tabs indicator component\n *\n * Animated indicator that slides between tabs for the underline style.\n * Uses CSS transform for smooth, GPU-accelerated animation.\n *\n * @example\n * ```html\n * <div lumaTabsList>\n * <button lumaTabsTrigger=\"tab-1\">Tab 1</button>\n * <button lumaTabsTrigger=\"tab-2\">Tab 2</button>\n * <luma-tabs-indicator />\n * </div>\n * ```\n */\n@Component({\n selector: 'luma-tabs-indicator',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[style.width.px]': 'indicatorWidth()',\n '[style.transform]': 'indicatorTransform()',\n },\n})\nexport class LmTabsIndicatorComponent implements AfterViewInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly tabsGroup = inject(TABS_GROUP);\n private readonly tabsList = inject(TABS_LIST);\n\n /** Indicator width in pixels */\n indicatorWidth = signal(0);\n\n /** Indicator X or Y position */\n private indicatorPosition = signal(0);\n\n /** Resize observer for recalculating position */\n private resizeObserver: ResizeObserver | null = null;\n\n /** Computed: CSS classes from CVA */\n classes = computed(() => {\n const style = this.tabsGroup.lmVariant();\n // Only show indicator for underline style\n const isVisible = style === 'underline';\n\n return tabsIndicatorVariants({\n visible: isVisible,\n });\n });\n\n /** Computed: CSS transform for positioning */\n indicatorTransform = computed(() => {\n return `translateX(${this.indicatorPosition()}px)`;\n });\n\n constructor() {\n // Update indicator position when selection changes\n effect(() => {\n // Read the value to track changes\n this.tabsGroup.value();\n\n // Defer position calculation to ensure DOM is ready\n if (isPlatformBrowser(this.platformId)) {\n // Use setTimeout to ensure triggers are registered\n setTimeout(() => this.updateIndicatorPosition(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Initial position calculation with delay to ensure triggers are registered\n setTimeout(() => this.updateIndicatorPosition(), 0);\n\n // Watch for container resize\n this.resizeObserver = new ResizeObserver(() => {\n this.updateIndicatorPosition();\n });\n\n this.resizeObserver.observe(this.tabsList.getListContainer());\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private updateIndicatorPosition(): void {\n const activeTrigger = this.tabsList.getActiveTrigger();\n if (!activeTrigger) {\n this.indicatorWidth.set(0);\n return;\n }\n\n const triggerRect = activeTrigger.getBoundingClientRect();\n const listContainer = this.tabsList.getListContainer();\n const listRect = listContainer.getBoundingClientRect();\n\n // Horizontal positioning (account for scroll offset in scrollable mode)\n this.indicatorPosition.set(\n triggerRect.left - listRect.left + listContainer.scrollLeft,\n );\n this.indicatorWidth.set(triggerRect.width);\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Modal size variants\n */\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Interface for modal context that child components/directives can access\n */\nexport interface ModalContext {\n /** Whether the modal is currently open */\n isOpen: Signal<boolean>;\n /** Open the modal */\n open: () => void;\n /** Close the modal */\n close: () => void;\n /** Modal size variant */\n size: Signal<ModalSize>;\n /** Whether to close on overlay click */\n closeOnOverlay: Signal<boolean>;\n /** Whether to close on Escape key */\n closeOnEscape: Signal<boolean>;\n /** Unique ID for accessibility */\n modalId: string;\n}\n\n/**\n * Injection token for modal context\n * Allows child components to access parent modal state\n */\nexport const MODAL_CONTEXT = new InjectionToken<ModalContext>('ModalContext');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n effect,\n computed,\n inject,\n PLATFORM_ID,\n OnDestroy,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport {\n MODAL_CONTEXT,\n type ModalContext,\n type ModalSize,\n} from './modal.tokens';\n\nlet uniqueId = 0;\n\n/**\n * Modal container component\n *\n * Manages modal open/close state, escape key handling, and provides context\n * to child components (ModalOverlay, ModalContainer, etc.).\n *\n * Supports both controlled and uncontrolled modes:\n * - Controlled: Use [lmOpen] and (lmOpenChange)\n * - Uncontrolled: Use [lmDefaultOpen] and access via template reference\n *\n * @example\n * ```html\n * <!-- Controlled mode -->\n * <luma-modal [lmOpen]=\"isOpen()\" (lmOpenChange)=\"isOpen.set($event)\">\n * <luma-modal-overlay>\n * <luma-modal-container>\n * <div lumaModalHeader>\n * <h2 lumaModalTitle>Title</h2>\n * <luma-modal-close />\n * </div>\n * <div lumaModalContent>Content</div>\n * <div lumaModalFooter>\n * <button lumaButton (click)=\"isOpen.set(false)\">Close</button>\n * </div>\n * </luma-modal-container>\n * </luma-modal-overlay>\n * </luma-modal>\n *\n * <!-- Uncontrolled mode -->\n * <luma-modal #modal [lmDefaultOpen]=\"false\">\n * ...\n * </luma-modal>\n * <button (click)=\"modal.open()\">Open</button>\n * ```\n */\n@Component({\n selector: 'luma-modal',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MODAL_CONTEXT,\n useExisting: LmModalComponent,\n },\n ],\n host: {\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class LmModalComponent implements ModalContext, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n\n /** Controlled open state (null = uncontrolled mode) */\n lmOpen = input<boolean | null>(null);\n\n /** Default open state for uncontrolled mode */\n lmDefaultOpen = input<boolean>(false);\n\n /** Size variant */\n lmSize = input<ModalSize>('md');\n\n /** Close when clicking the overlay */\n lmCloseOnOverlay = input<boolean>(true);\n\n /** Close when pressing Escape key */\n lmCloseOnEscape = input<boolean>(true);\n\n /** Emits when open state changes */\n lmOpenChange = output<boolean>();\n\n /** Internal open state for uncontrolled mode */\n private internalOpen = signal(false);\n\n /** Unique modal ID for accessibility */\n readonly modalId = `modal-${uniqueId++}`;\n\n /** Previously focused element for focus restoration */\n private previouslyFocused: HTMLElement | null = null;\n\n /** Escape key handler */\n private escapeHandler: ((e: KeyboardEvent) => void) | null = null;\n\n /** Computed: current open state (controlled or uncontrolled) */\n isOpen = computed(() => {\n const controlled = this.lmOpen();\n return controlled !== null ? controlled : this.internalOpen();\n });\n\n /** Computed: size signal for context */\n size = computed(() => this.lmSize());\n\n /** Computed: closeOnOverlay signal for context */\n closeOnOverlay = computed(() => this.lmCloseOnOverlay());\n\n /** Computed: closeOnEscape signal for context */\n closeOnEscape = computed(() => this.lmCloseOnEscape());\n\n constructor() {\n // Initialize uncontrolled mode with default value\n effect(() => {\n if (this.lmOpen() === null) {\n this.internalOpen.set(this.lmDefaultOpen());\n }\n });\n\n // Handle body scroll lock and escape key\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.isOpen()) {\n this.lockBodyScroll();\n this.registerEscapeHandler();\n this.storeFocus();\n } else {\n // Delay scroll unlock to allow fade animation to complete (250ms)\n setTimeout(() => this.unlockBodyScroll(), 250);\n this.unregisterEscapeHandler();\n }\n });\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.unlockBodyScroll();\n this.unregisterEscapeHandler();\n }\n }\n\n /**\n * Open the modal\n */\n open(): void {\n if (this.lmOpen() === null) {\n this.internalOpen.set(true);\n }\n this.lmOpenChange.emit(true);\n }\n\n /**\n * Close the modal\n */\n close(): void {\n if (this.lmOpen() === null) {\n this.internalOpen.set(false);\n }\n this.lmOpenChange.emit(false);\n this.restoreFocus();\n }\n\n private storeFocus(): void {\n this.previouslyFocused = this.document.activeElement as HTMLElement;\n }\n\n private restoreFocus(): void {\n if (\n this.previouslyFocused &&\n typeof this.previouslyFocused.focus === 'function'\n ) {\n // Use setTimeout to ensure DOM has updated\n setTimeout(() => {\n this.previouslyFocused?.focus();\n this.previouslyFocused = null;\n }, 0);\n }\n }\n\n private lockBodyScroll(): void {\n const body = this.document.body;\n const scrollbarWidth =\n window.innerWidth - this.document.documentElement.clientWidth;\n body.style.overflow = 'hidden';\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n const body = this.document.body;\n body.style.overflow = '';\n body.style.paddingRight = '';\n }\n\n private registerEscapeHandler(): void {\n if (this.escapeHandler) return;\n\n this.escapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.lmCloseOnEscape()) {\n event.preventDefault();\n this.close();\n }\n };\n\n this.document.addEventListener('keydown', this.escapeHandler);\n }\n\n private unregisterEscapeHandler(): void {\n if (this.escapeHandler) {\n this.document.removeEventListener('keydown', this.escapeHandler);\n this.escapeHandler = null;\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n} from '@angular/core';\nimport { modalOverlayVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal overlay component (backdrop)\n *\n * Provides a semi-transparent backdrop behind the modal.\n * Handles click-to-close when enabled on the parent modal.\n *\n * @example\n * ```html\n * <luma-modal [lmOpen]=\"isOpen()\">\n * <luma-modal-overlay>\n * <luma-modal-container>...</luma-modal-container>\n * </luma-modal-overlay>\n * </luma-modal>\n * ```\n */\n@Component({\n selector: 'luma-modal-overlay',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '(click)': 'onOverlayClick($event)',\n },\n})\nexport class LmModalOverlayComponent {\n private readonly modal = inject(MODAL_CONTEXT);\n\n /** Computed classes from CVA */\n classes = computed(() => modalOverlayVariants());\n\n /**\n * Handle click on overlay (not on children)\n */\n onOverlayClick(event: MouseEvent): void {\n // Only close if clicking directly on overlay, not on children\n if (event.target === event.currentTarget && this.modal.closeOnOverlay()) {\n this.modal.close();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n effect,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { modalContainerVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/** Focusable elements selector */\nconst FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Modal container component (dialog box)\n *\n * Contains the modal content and handles:\n * - ARIA attributes for accessibility\n * - Focus trap when modal is open\n * - Size variants\n *\n * @example\n * ```html\n * <luma-modal-overlay>\n * <luma-modal-container>\n * <div lumaModalHeader>...</div>\n * <div lumaModalContent>...</div>\n * <div lumaModalFooter>...</div>\n * </luma-modal-container>\n * </luma-modal-overlay>\n * ```\n */\n@Component({\n selector: 'luma-modal-container',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'dialog',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'titleId()',\n '[class]': 'classes()',\n '[attr.data-state]': 'modal.isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class LmModalContainerComponent implements AfterViewInit, OnDestroy {\n readonly modal = inject(MODAL_CONTEXT);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Focus trap keydown handler */\n private focusTrapHandler: ((e: KeyboardEvent) => void) | null = null;\n\n /** ID for aria-labelledby */\n titleId = computed(() => `${this.modal.modalId}-title`);\n\n /** Computed classes from CVA */\n classes = computed(() =>\n modalContainerVariants({\n size: this.modal.size(),\n }),\n );\n\n constructor() {\n // Focus first focusable element when modal opens\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.modal.isOpen()) {\n // Use setTimeout to ensure content is rendered\n setTimeout(() => this.focusFirstElement(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.setupFocusTrap();\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.removeFocusTrap();\n }\n }\n\n /**\n * Get all focusable elements within the modal\n */\n private getFocusableElements(): HTMLElement[] {\n const elements =\n this.elementRef.nativeElement.querySelectorAll(FOCUSABLE_SELECTOR);\n const elementsArray = Array.from(elements) as HTMLElement[];\n return elementsArray.filter(\n (el) =>\n !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n }\n\n /**\n * Focus the first focusable element\n */\n private focusFirstElement(): void {\n const focusable = this.getFocusableElements();\n if (focusable.length > 0) {\n focusable[0].focus();\n } else {\n // If no focusable elements, focus the container itself\n this.elementRef.nativeElement.focus();\n }\n }\n\n /**\n * Setup focus trap to keep focus within modal\n */\n private setupFocusTrap(): void {\n this.focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key !== 'Tab' || !this.modal.isOpen()) return;\n\n const focusable = this.getFocusableElements();\n if (focusable.length === 0) return;\n\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n\n // Shift+Tab on first element -> focus last\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n // Tab on last element -> focus first\n else if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n };\n\n this.elementRef.nativeElement.addEventListener(\n 'keydown',\n this.focusTrapHandler,\n );\n }\n\n /**\n * Remove focus trap handler\n */\n private removeFocusTrap(): void {\n if (this.focusTrapHandler) {\n this.elementRef.nativeElement.removeEventListener(\n 'keydown',\n this.focusTrapHandler,\n );\n this.focusTrapHandler = null;\n }\n }\n}\n","import { Directive, computed } from '@angular/core';\nimport { modalHeaderVariants } from '@lumaui/core';\n\n/**\n * Modal header directive\n *\n * Container for modal title and close button.\n * Provides consistent padding and border styling.\n *\n * @example\n * ```html\n * <div lumaModalHeader>\n * <h2 lumaModalTitle>Modal Title</h2>\n * <luma-modal-close />\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalHeader]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalHeaderDirective {\n /** Computed classes from CVA */\n classes = computed(() => modalHeaderVariants());\n}\n","import { Directive, computed, inject, input } from '@angular/core';\nimport { modalTitleVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal title directive\n *\n * Provides consistent typography for modal titles.\n * Automatically links to aria-labelledby on the modal container.\n *\n * @example\n * ```html\n * <h2 lumaModalTitle>Modal Title</h2>\n * <h2 lumaModalTitle lmSize=\"lg\">Large Title</h2>\n * ```\n */\n@Directive({\n selector: '[lumaModalTitle]',\n host: {\n '[attr.id]': 'titleId()',\n '[class]': 'classes()',\n },\n})\nexport class LmModalTitleDirective {\n private readonly modal = inject(MODAL_CONTEXT);\n\n /** Title size variant */\n lmSize = input<'sm' | 'md' | 'lg'>('md');\n\n /** ID for aria-labelledby connection */\n titleId = computed(() => `${this.modal.modalId}-title`);\n\n /** Computed classes from CVA */\n classes = computed(() => modalTitleVariants());\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { modalContentVariants } from '@lumaui/core';\n\n/**\n * Modal content directive\n *\n * Container for the main modal content.\n * Supports scrolling when content exceeds available space.\n *\n * @example\n * ```html\n * <div lumaModalContent>\n * Content that doesn't scroll\n * </div>\n *\n * <div lumaModalContent [lmScrollable]=\"true\">\n * Long content that scrolls...\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalContent]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalContentDirective {\n /** Enable scroll when content overflows */\n lmScrollable = input<boolean>(true);\n\n /** Computed classes from CVA */\n classes = computed(() => modalContentVariants());\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { modalFooterVariants } from '@lumaui/core';\n\n/**\n * Modal footer directive\n *\n * Container for modal actions (buttons, etc.).\n * Provides consistent padding and flexible alignment.\n *\n * @example\n * ```html\n * <div lumaModalFooter>\n * <button lumaButton lmVariant=\"ghost\">Cancel</button>\n * <button lumaButton>Confirm</button>\n * </div>\n *\n * <div lumaModalFooter lmAlign=\"between\">\n * <span>Left content</span>\n * <button lumaButton>Action</button>\n * </div>\n * ```\n */\n@Directive({\n selector: '[lumaModalFooter]',\n host: {\n '[class]': 'classes()',\n },\n})\nexport class LmModalFooterDirective {\n /** Alignment of footer content */\n lmAlign = input<'start' | 'center' | 'end' | 'between'>('end');\n\n /** Computed classes from CVA */\n classes = computed(() =>\n modalFooterVariants({\n align: this.lmAlign(),\n }),\n );\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n input,\n} from '@angular/core';\nimport { modalCloseVariants } from '@lumaui/core';\nimport { MODAL_CONTEXT } from './modal.tokens';\n\n/**\n * Modal close button component\n *\n * Provides a styled close button with an X icon.\n * Can be customized with different content via ng-content.\n *\n * @example\n * ```html\n * <!-- Default X icon -->\n * <luma-modal-close />\n *\n * <!-- Custom aria label -->\n * <luma-modal-close lmAriaLabel=\"Fechar modal\" />\n *\n * <!-- Custom icon -->\n * <luma-modal-close>\n * <svg>...</svg>\n * </luma-modal-close>\n * ```\n */\n@Component({\n selector: 'luma-modal-close',\n template: `\n <button\n type=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [class]=\"classes()\"\n (click)=\"modal.close()\"\n >\n <ng-content>\n <svg\n viewBox=\"0 0 24 24\"\n class=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </ng-content>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'contents',\n },\n})\nexport class LmModalCloseComponent {\n readonly modal = inject(MODAL_CONTEXT);\n\n /** Accessible label for the close button */\n lmAriaLabel = input<string>('Close modal');\n\n /** Computed aria label */\n ariaLabel = computed(() => this.lmAriaLabel());\n\n /** Computed classes from CVA */\n classes = computed(() => modalCloseVariants());\n}\n","// Modal Component & Directives\nexport { LmModalComponent } from './modal.component';\nexport { LmModalOverlayComponent } from './modal-overlay.component';\nexport { LmModalContainerComponent } from './modal-container.component';\nexport { LmModalHeaderDirective } from './modal-header.directive';\nexport { LmModalTitleDirective } from './modal-title.directive';\nexport { LmModalContentDirective } from './modal-content.directive';\nexport { LmModalFooterDirective } from './modal-footer.directive';\nexport { LmModalCloseComponent } from './modal-close.component';\n\n// Tokens\nexport {\n MODAL_CONTEXT,\n type ModalContext,\n type ModalSize,\n} from './modal.tokens';\n","import { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Toast variant types\n */\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error';\n\n/**\n * Toast position options\n */\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/**\n * Toast configuration options passed to ToastService.show()\n */\nexport interface ToastOptions {\n /** Toast message (required) */\n message: string;\n\n /** Optional title */\n title?: string;\n\n /** Visual variant */\n variant?: ToastVariant;\n\n /** Screen position */\n position?: ToastPosition;\n\n /** Auto-close duration in milliseconds (0 = no auto-close) */\n duration?: number;\n\n /** Show close button */\n dismissible?: boolean;\n\n /** Pause timer on hover */\n pauseOnHover?: boolean;\n\n /** ARIA role override */\n role?: 'alert' | 'status';\n}\n\n/**\n * Internal toast representation with all required fields\n */\nexport interface Toast extends Required<Omit<ToastOptions, 'role'>> {\n /** Unique identifier */\n id: string;\n\n /** Creation timestamp */\n createdAt: number;\n\n /** Whether toast is currently animating out */\n isExiting: boolean;\n\n /** ARIA role */\n role: 'alert' | 'status';\n}\n\n/**\n * Toast reference for programmatic control\n */\nexport interface ToastRef {\n /** Unique toast ID */\n readonly id: string;\n\n /** Dismiss this toast */\n dismiss(): void;\n\n /** Observable that emits when dismissed */\n readonly afterDismissed: Observable<void>;\n}\n\n/**\n * Internal toast reference implementation\n */\nexport class ToastRefImpl implements ToastRef {\n private readonly _afterDismissed = new Subject<void>();\n\n constructor(\n public readonly id: string,\n private readonly dismissFn: (id: string) => void,\n ) {}\n\n dismiss(): void {\n this.dismissFn(this.id);\n }\n\n get afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** @internal Called when toast is actually dismissed */\n _notifyDismissed(): void {\n this._afterDismissed.next();\n this._afterDismissed.complete();\n }\n}\n\n/**\n * Global toast configuration\n */\nexport interface ToastConfig {\n /** Default position */\n position: ToastPosition;\n\n /** Default duration in milliseconds */\n duration: number;\n\n /** Default dismissible state */\n dismissible: boolean;\n\n /** Maximum visible toasts */\n maxVisible: number;\n\n /** Pause on hover by default */\n pauseOnHover: boolean;\n}\n\n/**\n * Default toast configuration\n */\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n position: 'top-right',\n duration: 5000,\n dismissible: true,\n maxVisible: 5,\n pauseOnHover: true,\n};\n\n/**\n * Injection token for global toast configuration\n */\nexport const TOAST_CONFIG = new InjectionToken<ToastConfig>('ToastConfig', {\n providedIn: 'root',\n factory: () => DEFAULT_TOAST_CONFIG,\n});\n\n/**\n * Provider function for custom toast configuration\n */\nexport function provideToastConfig(config: Partial<ToastConfig>) {\n return {\n provide: TOAST_CONFIG,\n useValue: { ...DEFAULT_TOAST_CONFIG, ...config },\n };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n} from '@angular/core';\n\nimport { toastCloseVariants, ToastVariant } from '@lumaui/core';\n\n/**\n * ToastCloseComponent\n *\n * Close button for toast notifications.\n * Styled according to the toast variant.\n *\n * @internal Used by ToastItemComponent\n */\n@Component({\n selector: 'luma-toast-close',\n template: `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n class=\"lm-size-toast-close\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n />\n </svg>\n `,\n host: {\n type: 'button',\n '[class]': 'classes()',\n 'aria-label': 'Close notification',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LmToastCloseComponent {\n /** Toast variant for styling */\n lmVariant = input<ToastVariant>('info');\n\n /** CSS classes */\n protected readonly classes = computed(() =>\n toastCloseVariants({ variant: this.lmVariant() }),\n );\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { interval, Subscription } from 'rxjs';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport {\n toastItemVariants,\n toastIconVariants,\n toastContentVariants,\n toastTitleVariants,\n toastMessageVariants,\n ToastState,\n} from '@lumaui/core';\nimport { Toast } from './toast.tokens';\nimport { LmToastCloseComponent } from './toast-close.component';\n\n/**\n * ToastItemComponent\n *\n * Individual toast notification with timer and icon.\n *\n * @internal Created by ToastContainerComponent\n */\n@Component({\n selector: 'luma-toast-item',\n template: `\n <!-- Icon -->\n <div [class]=\"iconClasses()\">\n @switch (toast().variant) {\n @case ('info') {\n <svg\n class=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('success') {\n <svg\n class=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('warning') {\n <svg\n class=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n @case ('error') {\n <svg\n class=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n }\n </div>\n\n <!-- Content -->\n <div [class]=\"contentClasses()\">\n @if (toast().title) {\n <div [class]=\"titleClasses()\">{{ toast().title }}</div>\n }\n <div [class]=\"messageClasses()\">{{ toast().message }}</div>\n </div>\n\n <!-- Close button -->\n @if (toast().dismissible) {\n <luma-toast-close [lmVariant]=\"toast().variant\" (click)=\"onClose()\" />\n }\n `,\n host: {\n '[class]': 'itemClasses()',\n '[attr.role]': 'toast().role',\n '[attr.aria-live]': 'toast().variant === \"error\" ? \"assertive\" : \"polite\"',\n '[attr.aria-atomic]': '\"true\"',\n '[tabindex]': 'hasInteractiveElements() ? 0 : -1',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(keydown.escape)': 'onEscapeKey()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LmToastCloseComponent],\n})\nexport class LmToastItemComponent implements OnInit, OnDestroy {\n /** Toast data */\n toast = input.required<Toast>();\n\n /** Emits when toast should be dismissed */\n dismiss = output<string>();\n\n /** Timer subscription */\n private timerSubscription: Subscription | null = null;\n\n /** Remaining time in ms */\n private remainingTime = signal(0);\n\n /** Whether timer is paused */\n private isPaused = signal(false);\n\n /** Animation state */\n private animationState = signal<ToastState>('entering');\n\n /** Item CSS classes */\n protected readonly itemClasses = computed(() =>\n toastItemVariants({\n variant: this.toast().variant,\n state: this.toast().isExiting ? 'exiting' : this.animationState(),\n }),\n );\n\n /** Icon CSS classes */\n protected readonly iconClasses = computed(() =>\n toastIconVariants({ variant: this.toast().variant }),\n );\n\n /** Content CSS classes */\n protected readonly contentClasses = computed(() => toastContentVariants());\n\n /** Title CSS classes */\n protected readonly titleClasses = computed(() => toastTitleVariants());\n\n /** Message CSS classes */\n protected readonly messageClasses = computed(() => toastMessageVariants());\n\n /** Whether toast has interactive elements */\n protected readonly hasInteractiveElements = computed(\n () => this.toast().dismissible,\n );\n\n ngOnInit(): void {\n // Start animation\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n });\n\n // Start timer if duration > 0\n const duration = this.toast().duration;\n if (duration > 0) {\n this.startTimer(duration);\n }\n }\n\n ngOnDestroy(): void {\n this.stopTimer();\n }\n\n /** Start auto-close timer */\n private startTimer(duration: number): void {\n this.remainingTime.set(duration);\n\n this.timerSubscription = interval(100)\n .pipe(\n takeWhile(() => this.remainingTime() > 0),\n filter(() => !this.isPaused()),\n )\n .subscribe(() => {\n this.remainingTime.update((t) => t - 100);\n if (this.remainingTime() <= 0) {\n this.dismissToast();\n }\n });\n }\n\n /** Stop timer */\n private stopTimer(): void {\n if (this.timerSubscription) {\n this.timerSubscription.unsubscribe();\n this.timerSubscription = null;\n }\n }\n\n /** Dismiss this toast */\n private dismissToast(): void {\n this.dismiss.emit(this.toast().id);\n }\n\n /** Handle close button click */\n protected onClose(): void {\n this.dismissToast();\n }\n\n /** Pause timer on mouse enter */\n protected onMouseEnter(): void {\n if (this.toast().pauseOnHover) {\n this.isPaused.set(true);\n }\n }\n\n /** Resume timer on mouse leave */\n protected onMouseLeave(): void {\n this.isPaused.set(false);\n }\n\n /** Pause timer on focus */\n protected onFocus(): void {\n this.isPaused.set(true);\n }\n\n /** Resume timer on blur */\n protected onBlur(): void {\n this.isPaused.set(false);\n }\n\n /** Dismiss on Escape key */\n protected onEscapeKey(): void {\n if (this.toast().dismissible) {\n this.dismissToast();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n Signal,\n computed,\n} from '@angular/core';\n\nimport { toastContainerVariants, ToastPosition } from '@lumaui/core';\nimport { Toast } from './toast.tokens';\nimport { LmToastItemComponent } from './toast-item.component';\n\n/**\n * ToastContainerComponent\n *\n * Fixed-position container that renders all active toasts.\n * Supports all 6 positions simultaneously by grouping toasts by their position.\n *\n * @internal This component is created programmatically by ToastService\n */\n@Component({\n selector: 'luma-toast-container',\n template: `\n <!-- Top Left -->\n @if (toastsByPosition()['top-left'].length) {\n <div\n role=\"region\"\n aria-label=\"Top left notifications\"\n [class]=\"getPositionClasses('top-left')\"\n >\n @for (toast of toastsByPosition()['top-left']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Top Center -->\n @if (toastsByPosition()['top-center'].length) {\n <div\n role=\"region\"\n aria-label=\"Top center notifications\"\n [class]=\"getPositionClasses('top-center')\"\n >\n @for (toast of toastsByPosition()['top-center']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Top Right -->\n @if (toastsByPosition()['top-right'].length) {\n <div\n role=\"region\"\n aria-label=\"Top right notifications\"\n [class]=\"getPositionClasses('top-right')\"\n >\n @for (toast of toastsByPosition()['top-right']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Left -->\n @if (toastsByPosition()['bottom-left'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom left notifications\"\n [class]=\"getPositionClasses('bottom-left')\"\n >\n @for (toast of toastsByPosition()['bottom-left']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Center -->\n @if (toastsByPosition()['bottom-center'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom center notifications\"\n [class]=\"getPositionClasses('bottom-center')\"\n >\n @for (toast of toastsByPosition()['bottom-center']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n\n <!-- Bottom Right -->\n @if (toastsByPosition()['bottom-right'].length) {\n <div\n role=\"region\"\n aria-label=\"Bottom right notifications\"\n [class]=\"getPositionClasses('bottom-right')\"\n >\n @for (toast of toastsByPosition()['bottom-right']; track toast.id) {\n <luma-toast-item [toast]=\"toast\" (dismiss)=\"onDismiss($event)\" />\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LmToastItemComponent],\n})\nexport class LmToastContainerComponent {\n /** Toasts signal passed from ToastService */\n _toasts!: Signal<Toast[]>;\n\n /** Dismiss callback passed from ToastService */\n _onDismiss!: (id: string) => void;\n\n /** Group toasts by their position */\n protected readonly toastsByPosition = computed(() => {\n const groups: Record<ToastPosition, Toast[]> = {\n 'top-left': [],\n 'top-center': [],\n 'top-right': [],\n 'bottom-left': [],\n 'bottom-center': [],\n 'bottom-right': [],\n };\n\n if (!this._toasts) return groups;\n\n for (const toast of this._toasts()) {\n const position = toast.position as ToastPosition;\n if (groups[position]) {\n groups[position].push(toast);\n }\n }\n\n return groups;\n });\n\n /** Get CSS classes for a specific position */\n protected getPositionClasses(position: ToastPosition): string {\n return toastContainerVariants({ position });\n }\n\n /** Handle dismiss event from toast item */\n protected onDismiss(id: string): void {\n this._onDismiss?.(id);\n }\n}\n","import {\n Injectable,\n ApplicationRef,\n Injector,\n createComponent,\n ComponentRef,\n inject,\n signal,\n computed,\n OnDestroy,\n PLATFORM_ID,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\nimport {\n TOAST_CONFIG,\n Toast,\n ToastOptions,\n ToastRef,\n ToastRefImpl,\n} from './toast.tokens';\nimport { LmToastContainerComponent } from './toast-container.component';\n\n/**\n * ToastService\n *\n * Injectable service for showing toast notifications programmatically.\n * Provides convenience methods for info, success, warning, and error toasts.\n *\n * @example\n * ```typescript\n * private toast = inject(ToastService);\n *\n * showSuccess() {\n * this.toast.success('Changes saved successfully!');\n * }\n *\n * showError() {\n * this.toast.error('Failed to save', {\n * title: 'Error',\n * duration: 0\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class LmToastService implements OnDestroy {\n private readonly config = inject(TOAST_CONFIG);\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly _toasts = signal<Toast[]>([]);\n private containerRef: ComponentRef<LmToastContainerComponent> | null = null;\n private nextId = 0;\n private readonly toastRefs = new Map<string, ToastRefImpl>();\n\n /** Observable list of current toasts */\n readonly toasts = computed(() => this._toasts());\n\n ngOnDestroy(): void {\n this.destroyContainer();\n }\n\n /**\n * Show a toast notification\n * @param options - Toast configuration options\n * @returns ToastRef for programmatic control\n */\n show(options: ToastOptions): ToastRef {\n this.ensureContainer();\n\n const toast: Toast = {\n id: `toast-${this.nextId++}`,\n message: options.message,\n title: options.title ?? '',\n variant: options.variant ?? 'info',\n position: options.position ?? this.config.position,\n duration: options.duration ?? this.config.duration,\n dismissible: options.dismissible ?? this.config.dismissible,\n pauseOnHover: options.pauseOnHover ?? this.config.pauseOnHover,\n role: options.role ?? (options.variant === 'error' ? 'alert' : 'status'),\n createdAt: Date.now(),\n isExiting: false,\n };\n\n // Enforce max visible limit\n const currentToasts = this._toasts();\n if (currentToasts.length >= this.config.maxVisible) {\n // Remove oldest toast\n const oldest = currentToasts[0];\n this.dismiss(oldest.id);\n }\n\n this._toasts.update((toasts) => [...toasts, toast]);\n\n const toastRef = new ToastRefImpl(toast.id, (id) => this.dismiss(id));\n this.toastRefs.set(toast.id, toastRef);\n\n return toastRef;\n }\n\n /**\n * Show info toast\n * @param message - Toast message\n * @param options - Additional options\n */\n info(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'info' });\n }\n\n /**\n * Show success toast\n * @param message - Toast message\n * @param options - Additional options\n */\n success(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'success' });\n }\n\n /**\n * Show warning toast\n * @param message - Toast message\n * @param options - Additional options\n */\n warning(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'warning' });\n }\n\n /**\n * Show error toast\n * @param message - Toast message\n * @param options - Additional options\n */\n error(message: string, options?: Partial<ToastOptions>): ToastRef {\n return this.show({ ...options, message, variant: 'error' });\n }\n\n /**\n * Dismiss a specific toast\n * @param id - Toast ID to dismiss\n */\n dismiss(id: string): void {\n // Mark as exiting for animation\n this._toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, isExiting: true } : t)),\n );\n\n // Remove after animation completes (200ms)\n setTimeout(() => {\n this._toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n\n // Notify ref\n const toastRef = this.toastRefs.get(id);\n if (toastRef) {\n toastRef._notifyDismissed();\n this.toastRefs.delete(id);\n }\n }, 200);\n }\n\n /**\n * Dismiss all toasts\n */\n dismissAll(): void {\n const ids = this._toasts().map((t) => t.id);\n ids.forEach((id) => this.dismiss(id));\n }\n\n /**\n * Ensure toast container exists in DOM\n */\n private ensureContainer(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.containerRef) return;\n\n this.containerRef = createComponent(LmToastContainerComponent, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n // Pass toasts signal to container\n this.containerRef.instance._toasts = this._toasts;\n this.containerRef.instance._onDismiss = (id: string) => this.dismiss(id);\n\n this.appRef.attachView(this.containerRef.hostView);\n this.document.body.appendChild(this.containerRef.location.nativeElement);\n }\n\n /**\n * Remove container from DOM\n */\n private destroyContainer(): void {\n if (this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n}\n","// Toast public API\nexport { LmToastService } from './toast.service';\nexport { LmToastContainerComponent } from './toast-container.component';\nexport { LmToastItemComponent } from './toast-item.component';\nexport { LmToastCloseComponent } from './toast-close.component';\n\n// Type exports (isolatedModules requires 'export type')\nexport type {\n ToastVariant,\n ToastPosition,\n ToastOptions,\n Toast,\n ToastRef,\n ToastConfig,\n} from './toast.tokens';\n\n// Value exports\nexport {\n DEFAULT_TOAST_CONFIG,\n TOAST_CONFIG,\n provideToastConfig,\n} from './toast.tokens';\n\n// Re-export variant types from core\nexport type {\n ToastContainerVariants,\n ToastItemVariants,\n ToastIconVariants,\n ToastCloseVariants,\n ToastState,\n} from '@lumaui/core';\n","import { InjectionToken } from '@angular/core';\nimport { Signal } from '@angular/core';\n\n/**\n * Data registered by each LmSelectOptionComponent into the parent LmSelectComponent.\n * label is a plain getter that reads textContent lazily — no timing race with ngAfterViewInit.\n */\nexport interface OptionEntry {\n value: unknown;\n /** Plain getter — reads textContent on every call, always up-to-date when filter runs */\n label: () => string;\n /** Direct reference to the option's lmDisabled InputSignal */\n disabled: Signal<boolean>;\n}\n\n/**\n * Interface that LmSelectComponent implements and exposes via SELECT_CONTEXT.\n * Options use this to register/unregister themselves without circular imports.\n */\nexport interface SelectContext {\n isMultiple: Signal<boolean>;\n registerOption(entry: OptionEntry): void;\n unregisterOption(value: unknown): void;\n}\n\nexport const SELECT_CONTEXT = new InjectionToken<SelectContext>(\n 'SelectContext',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport {\n selectTriggerVariants,\n selectListboxVariants,\n selectOptionVariants,\n selectSearchInputVariants,\n selectChipVariants,\n selectChipDismissVariants,\n type SelectSize,\n} from '@lumaui/core';\nimport { OptionEntry, SelectContext, SELECT_CONTEXT } from './select.tokens';\n\nlet selectIdCounter = 0;\n\n@Component({\n selector: 'luma-select',\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block relative w-full',\n '[attr.id]': 'null',\n },\n providers: [\n { provide: SELECT_CONTEXT, useExisting: LmSelectComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LmSelectComponent),\n multi: true,\n },\n ],\n})\nexport class LmSelectComponent\n implements SelectContext, ControlValueAccessor, OnInit, OnDestroy\n{\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private ngControl: NgControl | null = null;\n\n // ── Inputs\n lmSize = input<SelectSize>('md');\n lmMultiple = input<boolean>(false);\n lmPlaceholder = input<string>('Select…');\n lmSearchPlaceholder = input<string>('Search…');\n lmDisabled = input<boolean>(false);\n lmRequired = input<boolean>(false);\n lmError = input<boolean>(false);\n lmEmptyMessage = input<string>('No options found');\n lmClearable = input<boolean>(false);\n lmCompareWith = input<((a: unknown, b: unknown) => boolean) | null>(null);\n\n // ── Outputs\n lmValueChange = output<unknown | null | unknown[]>();\n\n // ── IDs: read the host id attribute before host binding removes it\n selectId = signal<string>(\n this.elementRef.nativeElement.getAttribute('id') ||\n `luma-select-${selectIdCounter++}`,\n );\n readonly listboxId = computed(() => `${this.selectId()}-listbox`);\n readonly searchInputId = computed(() => `${this.selectId()}-search`);\n\n /** ID of the currently focused option for aria-activedescendant */\n readonly activeDescendantId = computed(() => {\n const idx = this.focusedOptionIndex();\n return idx >= 0 ? `${this.selectId()}-opt-${idx}` : null;\n });\n\n /** Whether the select has a value (for clear button visibility) */\n readonly hasValue = computed(() => {\n if (this.lmMultiple()) return this._multiValue().length > 0;\n const v = this._singleValue();\n return v !== null && v !== undefined;\n });\n\n // ── Selection state\n private readonly _singleValue = signal<unknown | null>(null);\n private readonly _multiValue = signal<unknown[]>([]);\n\n // ── Open state\n private readonly _internalOpen = signal(false);\n readonly isOpen = this._internalOpen.asReadonly();\n\n // ── Search + options registry\n readonly searchQuery = signal('');\n private readonly _options = signal<OptionEntry[]>([]);\n\n // ── Form state\n private readonly _formDisabled = signal(false);\n private readonly _formInvalid = signal(false);\n private readonly _formTouched = signal(false);\n\n // ── Derived state\n readonly isDisabled = computed(\n () => this.lmDisabled() || this._formDisabled(),\n );\n readonly hasError = computed(\n () => this.lmError() || (this._formInvalid() && this._formTouched()),\n );\n\n /** SelectContext interface */\n readonly isMultiple = computed(() => this.lmMultiple());\n\n /** Compare two values using the custom compareWith function or strict equality */\n private compareValues(a: unknown, b: unknown): boolean {\n const fn = this.lmCompareWith();\n return fn ? fn(a, b) : a === b;\n }\n\n /**\n * Combines filtering with selected-state baking in a single computed.\n * Avoids creating per-row signal instances; the whole array recomputes\n * when search query, options, or selection state changes.\n */\n readonly filteredOptionsWithState = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this._options();\n const filtered = query\n ? opts.filter((o) => o.label().toLowerCase().includes(query))\n : opts;\n const multiple = this.lmMultiple();\n const single = this._singleValue();\n const multi = this._multiValue();\n return filtered.map((o) => ({\n entry: o,\n isSelected: multiple\n ? multi.some((v) => this.compareValues(v, o.value))\n : this.compareValues(o.value, single),\n }));\n });\n\n /** Label shown in the trigger when the dropdown is closed (single-select only) */\n readonly triggerLabel = computed(() => {\n // Multi-select displays chips instead of a text label\n if (this.lmMultiple()) return null;\n const val = this._singleValue();\n if (val === null || val === undefined) return null;\n const opts = this._options();\n return (\n opts.find((o) => this.compareValues(o.value, val))?.label() ?? String(val)\n );\n });\n\n /** Chip data for multi-select: maps selected values to { value, label } */\n readonly selectedChips = computed(() => {\n if (!this.lmMultiple()) return [];\n const vals = this._multiValue();\n const opts = this._options();\n return vals.map((v) => ({\n value: v,\n label:\n opts.find((o) => this.compareValues(o.value, v))?.label() ?? String(v),\n }));\n });\n\n // ── Dropdown flip (one-time check on open — no event listeners)\n private readonly _flipAbove = signal(false);\n\n // ── Keyboard focus within the listbox\n readonly focusedOptionIndex = signal(-1);\n\n // ── ViewChild refs\n readonly searchInputRef =\n viewChild<ElementRef<HTMLInputElement>>('searchInputEl');\n readonly triggerRef = viewChild<ElementRef<HTMLElement>>('triggerEl');\n readonly listboxRef = viewChild<ElementRef<HTMLElement>>('listboxEl');\n\n // ── CVA classes (computed for reactivity)\n readonly triggerClasses = computed(() =>\n selectTriggerVariants({\n size: this.lmSize(),\n multiple: this.lmMultiple(),\n error: this.hasError(),\n disabled: this.isDisabled(),\n }),\n );\n readonly listboxClasses = computed(() =>\n selectListboxVariants({ flip: this._flipAbove() }),\n );\n readonly searchInputClasses = selectSearchInputVariants();\n\n /** Chip classes — reactive to size */\n readonly chipClasses = computed(() =>\n selectChipVariants({ size: this.lmSize() }),\n );\n\n /** Chip dismiss button classes — reactive to size */\n readonly chipDismissClasses = computed(() =>\n selectChipDismissVariants({ size: this.lmSize() }),\n );\n\n optionClasses(\n isSelected: boolean,\n disabled: boolean,\n isFocused: boolean,\n ): string {\n const base = selectOptionVariants({ selected: isSelected, disabled });\n return isFocused && !disabled ? `${base} bg-primary/10` : base;\n }\n\n // noop – replaced at runtime by registerOnChange / registerOnTouched\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (v: unknown) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n // ── Event listener refs for cleanup\n private clickOutsideHandler: ((e: MouseEvent) => void) | null = null;\n\n constructor() {\n // React to open state changes in a single effect\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this._internalOpen()) {\n this.checkFlipPosition();\n this.registerClickOutside();\n // Defer focus so the input element has been rendered\n setTimeout(() => this.searchInputRef()?.nativeElement.focus(), 0);\n }\n });\n\n // Scroll focused option into view when keyboard-navigating\n effect(() => {\n const idx = this.focusedOptionIndex();\n if (idx < 0) return;\n const listbox = this.listboxRef()?.nativeElement;\n if (!listbox) return;\n const optionEl = listbox.querySelector(`[id$='-opt-${idx}']`);\n optionEl?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n ngOnInit(): void {\n try {\n this.ngControl = this.injector.get(NgControl, null, {\n optional: true,\n self: true,\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n const control = this.ngControl.control;\n if (control) {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._formInvalid.set(control.invalid);\n this._formTouched.set(control.touched);\n });\n }\n }\n } catch {\n this.ngControl = null;\n }\n }\n\n ngOnDestroy(): void {\n this.unregisterClickOutside();\n }\n\n // ── SelectContext implementation\n registerOption(entry: OptionEntry): void {\n this._options.update((opts) => [...opts, entry]);\n }\n\n unregisterOption(value: unknown): void {\n this._options.update((opts) => opts.filter((o) => o.value !== value));\n }\n\n // ── Open / close\n open(): void {\n if (this.isDisabled()) return;\n this._internalOpen.set(true);\n }\n\n close(): void {\n this._internalOpen.set(false);\n // Reset search state synchronously so tests and consumers see immediate update\n this.searchQuery.set('');\n this.focusedOptionIndex.set(-1);\n this.onTouched();\n this.unregisterClickOutside();\n setTimeout(() => this.triggerRef()?.nativeElement.focus(), 0);\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // ── Value selection\n selectValue(value: unknown): void {\n if (this.lmMultiple()) {\n const current = this._multiValue();\n const idx = current.findIndex((v) => this.compareValues(v, value));\n const next =\n idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, value];\n this._multiValue.set(next);\n this.onChange(next);\n this.lmValueChange.emit(next);\n // In multi-select: keep open, clear the search filter\n this.searchQuery.set('');\n } else {\n this._singleValue.set(value);\n this.onChange(value);\n this.lmValueChange.emit(value);\n this.close();\n }\n }\n\n /** Remove a chip by its value (without opening/closing the dropdown) */\n removeChip(event: Event, value: unknown): void {\n event.stopPropagation();\n // Toggle the value off via selectValue, but preserve open/close state\n const current = this._multiValue();\n const next = current.filter((v) => !this.compareValues(v, value));\n this._multiValue.set(next);\n this.onChange(next);\n this.lmValueChange.emit(next);\n }\n\n /** Clear the current selection */\n clear(event?: Event): void {\n event?.stopPropagation();\n if (this.lmMultiple()) {\n this._multiValue.set([]);\n this.onChange([]);\n this.lmValueChange.emit([]);\n } else {\n this._singleValue.set(null);\n this.onChange(null);\n this.lmValueChange.emit(null);\n }\n }\n\n // ── Keyboard handlers for the closed trigger\n onTriggerKeydown(event: KeyboardEvent): void {\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) {\n event.preventDefault();\n this.open();\n }\n }\n\n // ── Keyboard handlers for the search input (open state)\n onSearchInput(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n this.focusedOptionIndex.set(-1);\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n const opts = this.filteredOptionsWithState();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedOptionIndex.update((i) => Math.min(i + 1, opts.length - 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusedOptionIndex.update((i) => Math.max(i - 1, 0));\n break;\n case 'Home':\n event.preventDefault();\n if (opts.length > 0) this.focusedOptionIndex.set(0);\n break;\n case 'End':\n event.preventDefault();\n if (opts.length > 0) this.focusedOptionIndex.set(opts.length - 1);\n break;\n case 'Enter': {\n event.preventDefault();\n const idx = this.focusedOptionIndex();\n if (idx >= 0 && idx < opts.length) {\n const { entry } = opts[idx];\n if (!entry.disabled()) this.selectValue(entry.value);\n }\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace': {\n // In multi-select: remove last chip when search is empty\n if (this.lmMultiple() && this.searchQuery() === '') {\n const vals = this._multiValue();\n if (vals.length > 0) {\n this.selectValue(vals[vals.length - 1]);\n }\n }\n break;\n }\n }\n }\n\n // ── One-time flip check (no event listeners needed)\n private checkFlipPosition(): void {\n const trigger = this.triggerRef()?.nativeElement;\n if (!trigger) return;\n const rect = trigger.getBoundingClientRect();\n const dropdownMaxHeight = 240; // matches max-h-60 (15rem = 240px)\n const gap = 4;\n const spaceBelow = window.innerHeight - rect.bottom;\n this._flipAbove.set(\n spaceBelow < dropdownMaxHeight + gap &&\n rect.top > dropdownMaxHeight + gap,\n );\n }\n\n private registerClickOutside(): void {\n if (this.clickOutsideHandler) return;\n this.clickOutsideHandler = (e: MouseEvent) => {\n if (!this.elementRef.nativeElement.contains(e.target as Node)) {\n this.close();\n }\n };\n // Small timeout to avoid the current click event triggering close immediately\n setTimeout(() => {\n if (this.clickOutsideHandler) {\n this.document.addEventListener('click', this.clickOutsideHandler);\n }\n }, 0);\n }\n\n private unregisterClickOutside(): void {\n if (this.clickOutsideHandler) {\n this.document.removeEventListener('click', this.clickOutsideHandler);\n this.clickOutsideHandler = null;\n }\n }\n\n // ── ControlValueAccessor\n writeValue(value: unknown): void {\n if (this.lmMultiple()) {\n this._multiValue.set(\n Array.isArray(value) ? value : value != null ? [value] : [],\n );\n } else {\n this._singleValue.set(value ?? null);\n }\n }\n\n registerOnChange(fn: (v: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n}\n","<!-- Hidden slot: options run lifecycle hooks and register themselves via SELECT_CONTEXT,\n but are never shown from this slot. The visible listbox is rendered below. -->\n<div class=\"hidden\" aria-hidden=\"true\">\n <ng-content />\n</div>\n\n<!-- Trigger (id placed here for <label for=\"…\"> association; host id removed via host binding) -->\n<div\n #triggerEl\n [attr.id]=\"selectId()\"\n [class]=\"triggerClasses()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"lmRequired()\"\n [attr.aria-disabled]=\"isDisabled()\"\n role=\"combobox\"\n (click)=\"!isOpen() ? toggle() : null\"\n (keydown)=\"!isOpen() ? onTriggerKeydown($event) : null\"\n>\n @if (isOpen()) {\n <!-- Open state -->\n @if (lmMultiple() && selectedChips().length > 0) {\n <!-- Multi-select open: chips + inline search -->\n @for (chip of selectedChips(); track chip.value) {\n <span [class]=\"chipClasses()\">\n <span class=\"truncate\">{{ chip.label }}</span>\n <button\n type=\"button\"\n [class]=\"chipDismissClasses()\"\n [attr.aria-label]=\"'Remove ' + chip.label\"\n (click)=\"removeChip($event, chip.value)\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n class=\"h-full w-full\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 5l6 6M11 5l-6 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </span>\n }\n <input\n #searchInputEl\n type=\"text\"\n [id]=\"searchInputId()\"\n class=\"flex-1 bg-transparent outline-none border-none min-w-15 text-foreground placeholder:text-muted-foreground\"\n [value]=\"searchQuery()\"\n [placeholder]=\"lmSearchPlaceholder()\"\n [attr.aria-label]=\"lmSearchPlaceholder()\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else {\n <!-- Single-select or empty multi: just the search input -->\n <input\n #searchInputEl\n type=\"text\"\n [id]=\"searchInputId()\"\n [class]=\"searchInputClasses\"\n [value]=\"searchQuery()\"\n [placeholder]=\"lmSearchPlaceholder()\"\n [attr.aria-label]=\"lmSearchPlaceholder()\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n } @else {\n <!-- Closed state -->\n @if (lmMultiple() && selectedChips().length > 0) {\n <!-- Multi-select closed: show chips -->\n <div class=\"flex flex-wrap gap-1 flex-1 min-w-0 max-h-32 overflow-y-auto\">\n @for (chip of selectedChips(); track chip.value) {\n <span [class]=\"chipClasses()\">\n <span class=\"truncate\">{{ chip.label }}</span>\n <button\n type=\"button\"\n [class]=\"chipDismissClasses()\"\n [attr.aria-label]=\"'Remove ' + chip.label\"\n (click)=\"removeChip($event, chip.value)\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n class=\"h-full w-full\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 5l6 6M11 5l-6 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </span>\n }\n </div>\n } @else {\n <!-- Single-select or empty multi: label/placeholder -->\n <span\n class=\"flex-1 truncate min-w-0\"\n [class.text-muted-foreground]=\"!triggerLabel()\"\n >\n {{ triggerLabel() ?? lmPlaceholder() }}\n </span>\n }\n }\n\n <!-- Clear button — shown when clearable and has value -->\n @if (lmClearable() && hasValue() && !isDisabled() && !isOpen()) {\n <button\n type=\"button\"\n class=\"shrink-0 h-4 w-4 flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors\"\n aria-label=\"Clear selection\"\n (click)=\"clear($event)\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n class=\"h-3.5 w-3.5\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n }\n\n <!-- Chevron icon — rotates 180° when open -->\n <svg\n class=\"ml-auto shrink-0 h-4 w-4 text-muted-foreground transition-transform duration-200\"\n [class.rotate-180]=\"isOpen()\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n</div>\n\n<!-- Listbox panel (absolute positioning — CSS-only, no JS tracking) -->\n@if (isOpen()) {\n <div\n #listboxEl\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-label]=\"lmPlaceholder()\"\n [attr.aria-multiselectable]=\"lmMultiple()\"\n [class]=\"listboxClasses()\"\n >\n @if (filteredOptionsWithState().length === 0) {\n <div class=\"px-3 py-4 text-sm text-center text-muted-foreground\">\n {{ lmEmptyMessage() }}\n </div>\n }\n\n @for (\n item of filteredOptionsWithState();\n track item.entry.value;\n let i = $index\n ) {\n <div\n [id]=\"selectId() + '-opt-' + i\"\n role=\"option\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-disabled]=\"item.entry.disabled()\"\n [attr.tabindex]=\"item.entry.disabled() ? -1 : 0\"\n [class]=\"\n optionClasses(\n item.isSelected,\n item.entry.disabled(),\n focusedOptionIndex() === i\n )\n \"\n (click)=\"selectValue(item.entry.value)\"\n (keydown.enter)=\"selectValue(item.entry.value)\"\n (keydown.space)=\"selectValue(item.entry.value)\"\n (mouseenter)=\"focusedOptionIndex.set(i)\"\n >\n @if (lmMultiple()) {\n <!-- Mini checkbox indicator for multi-select -->\n <span\n class=\"h-4 w-4 shrink-0 flex items-center justify-center rounded-(--radius-2) border transition-colors duration-200\"\n [class.bg-primary]=\"item.isSelected\"\n [class.border-primary]=\"item.isSelected\"\n [class.border-gray-5]=\"!item.isSelected\"\n aria-hidden=\"true\"\n >\n @if (item.isSelected) {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 8l3 3 5-5\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </span>\n } @else {\n <!-- Checkmark for single-select, spacer otherwise -->\n @if (item.isSelected) {\n <svg\n class=\"h-4 w-4 shrink-0 text-primary\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M3 8l4 4 6-7\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n }\n\n <span class=\"truncate\">{{ item.entry.label() }}</span>\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { OptionEntry, SELECT_CONTEXT } from './select.tokens';\n\n/**\n * Option component for luma-select.\n * Projects content into a hidden slot (the parent hides it via aria-hidden);\n * registers its value/label/disabled as signals into the parent's registry.\n *\n * @example\n * <luma-select-option [lmValue]=\"'apple'\">Apple</luma-select-option>\n */\n@Component({\n selector: 'luma-select-option',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LmSelectOptionComponent implements OnInit, OnDestroy {\n private readonly context = inject(SELECT_CONTEXT);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n lmValue = input.required<unknown>();\n lmDisabled = input<boolean>(false);\n\n private entry: OptionEntry | null = null;\n\n ngOnInit(): void {\n this.entry = {\n value: this.lmValue(),\n label: () => this.elementRef.nativeElement.textContent?.trim() ?? '',\n disabled: this.lmDisabled,\n };\n this.context.registerOption(this.entry);\n }\n\n ngOnDestroy(): void {\n this.context.unregisterOption(this.lmValue());\n }\n}\n","// Button exports\nexport * from './lib/button/button.directive';\n\n// Badge exports\nexport * from './lib/badge/badge.directive';\n\n// Input exports\nexport * from './lib/input/input.directive';\nexport * from './lib/input/label.directive';\nexport * from './lib/input/helper-text.directive';\nexport * from './lib/input/error-text.directive';\n\n// Textarea exports\nexport * from './lib/textarea/';\n\n// Checkbox exports\nexport * from './lib/checkbox/';\n\n// Radio exports\nexport * from './lib/radio/';\n\n// Card exports\nexport * from './lib/card/card.component';\nexport * from './lib/card/card-title.directive';\nexport * from './lib/card/card-description.directive';\nexport * from './lib/card/card-header.directive';\nexport * from './lib/card/card-content.directive';\n\n// Accordion exports\nexport * from './lib/accordion/accordion-group.component';\nexport * from './lib/accordion/accordion-item.component';\nexport * from './lib/accordion/accordion-trigger.directive';\nexport * from './lib/accordion/accordion-title.directive';\nexport * from './lib/accordion/accordion-icon.directive';\nexport * from './lib/accordion/accordion-content.directive';\nexport * from './lib/accordion/accordion.tokens';\n\n// Tooltip exports\nexport * from './lib/tooltip/tooltip.directive';\n\n// Tabs exports\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs-list.directive';\nexport * from './lib/tabs/tabs-trigger.directive';\nexport * from './lib/tabs/tabs-panel.directive';\nexport * from './lib/tabs/tabs-indicator.component';\nexport * from './lib/tabs/tabs.tokens';\n\n// Modal exports\nexport * from './lib/modal';\n\n// Toast exports\nexport * from './lib/toast';\n\n// Select exports\nexport * from './lib/select/';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueId"],"mappings":"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"}