@momentumcms/ui 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentumcms-ui.mjs","sources":["../../../../libs/ui/src/lib/badge/badge.component.ts","../../../../libs/ui/src/lib/label/label.component.ts","../../../../libs/ui/src/lib/button/button.component.ts","../../../../libs/ui/src/lib/input/input.component.ts","../../../../libs/ui/src/lib/textarea/textarea.component.ts","../../../../libs/ui/src/lib/checkbox/checkbox.component.ts","../../../../libs/ui/src/lib/switch/switch.component.ts","../../../../libs/ui/src/lib/select/select.component.ts","../../../../libs/ui/src/lib/radio-group/radio-group.component.ts","../../../../libs/ui/src/lib/form-field/form-field.component.ts","../../../../libs/ui/src/lib/card/card.component.ts","../../../../libs/ui/src/lib/card/card-header.component.ts","../../../../libs/ui/src/lib/card/card-title.component.ts","../../../../libs/ui/src/lib/card/card-description.component.ts","../../../../libs/ui/src/lib/card/card-content.component.ts","../../../../libs/ui/src/lib/card/card-footer.component.ts","../../../../libs/ui/src/lib/alert/alert.component.ts","../../../../libs/ui/src/lib/alert/alert-title.component.ts","../../../../libs/ui/src/lib/alert/alert-description.component.ts","../../../../libs/ui/src/lib/tooltip/tooltip.types.ts","../../../../libs/ui/src/lib/tooltip/tooltip-content.component.ts","../../../../libs/ui/src/lib/tooltip/tooltip-trigger.directive.ts","../../../../libs/ui/src/lib/popover/popover.utils.ts","../../../../libs/ui/src/lib/popover/popover-trigger.directive.ts","../../../../libs/ui/src/lib/popover/popover-content.component.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-menu.utils.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-trigger.directive.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-menu.component.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-menu-item.component.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-separator.component.ts","../../../../libs/ui/src/lib/dropdown-menu/dropdown-label.component.ts","../../../../libs/ui/src/lib/dialog/dialog.token.ts","../../../../libs/ui/src/lib/dialog/dialog-ref.ts","../../../../libs/ui/src/lib/dialog/dialog.service.ts","../../../../libs/ui/src/lib/dialog/dialog.component.ts","../../../../libs/ui/src/lib/dialog/dialog-header.component.ts","../../../../libs/ui/src/lib/dialog/dialog-title.component.ts","../../../../libs/ui/src/lib/dialog/dialog-description.component.ts","../../../../libs/ui/src/lib/dialog/dialog-content.component.ts","../../../../libs/ui/src/lib/dialog/dialog-footer.component.ts","../../../../libs/ui/src/lib/dialog/dialog-close.directive.ts","../../../../libs/ui/src/lib/toast/toast.service.ts","../../../../libs/ui/src/lib/toast/toast.component.ts","../../../../libs/ui/src/lib/toast/toast-container.component.ts","../../../../libs/ui/src/lib/toast/toast-title.component.ts","../../../../libs/ui/src/lib/toast/toast-description.component.ts","../../../../libs/ui/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../../libs/ui/src/lib/confirmation-dialog/confirmation.service.ts","../../../../libs/ui/src/lib/separator/separator.component.ts","../../../../libs/ui/src/lib/spinner/spinner.types.ts","../../../../libs/ui/src/lib/spinner/spinner.component.ts","../../../../libs/ui/src/lib/skeleton/skeleton.component.ts","../../../../libs/ui/src/lib/progress/progress.component.ts","../../../../libs/ui/src/lib/aspect-ratio/aspect-ratio.component.ts","../../../../libs/ui/src/lib/avatar/avatar.types.ts","../../../../libs/ui/src/lib/avatar/avatar.component.ts","../../../../libs/ui/src/lib/avatar/avatar-image.component.ts","../../../../libs/ui/src/lib/avatar/avatar-fallback.component.ts","../../../../libs/ui/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../../libs/ui/src/lib/breadcrumbs/breadcrumb-item.component.ts","../../../../libs/ui/src/lib/breadcrumbs/breadcrumb-separator.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar.service.ts","../../../../libs/ui/src/lib/sidebar/sidebar.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-header.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-content.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-footer.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-nav.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-nav-item.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-section.component.ts","../../../../libs/ui/src/lib/sidebar/sidebar-trigger.component.ts","../../../../libs/ui/src/lib/pagination/pagination.types.ts","../../../../libs/ui/src/lib/pagination/pagination.component.ts","../../../../libs/ui/src/lib/tabs/tabs.component.ts","../../../../libs/ui/src/lib/tabs/tabs-list.component.ts","../../../../libs/ui/src/lib/tabs/tabs-trigger.component.ts","../../../../libs/ui/src/lib/tabs/tabs-content.component.ts","../../../../libs/ui/src/lib/accordion/accordion.component.ts","../../../../libs/ui/src/lib/accordion/accordion-item.component.ts","../../../../libs/ui/src/lib/accordion/accordion-trigger.component.ts","../../../../libs/ui/src/lib/accordion/accordion-content.component.ts","../../../../libs/ui/src/lib/table/table.component.ts","../../../../libs/ui/src/lib/table/table-header.component.ts","../../../../libs/ui/src/lib/table/table-body.component.ts","../../../../libs/ui/src/lib/table/table-row.component.ts","../../../../libs/ui/src/lib/table/table-head.component.ts","../../../../libs/ui/src/lib/table/table-cell.component.ts","../../../../libs/ui/src/lib/table/table-caption.component.ts","../../../../libs/ui/src/lib/table/table-footer.component.ts","../../../../libs/ui/src/lib/empty-state/empty-state.component.ts","../../../../libs/ui/src/lib/search-input/search-input.component.ts","../../../../libs/ui/src/lib/data-table/data-table.component.ts","../../../../libs/ui/src/lib/command/command.component.ts","../../../../libs/ui/src/lib/command/command-input.component.ts","../../../../libs/ui/src/lib/command/command-list.component.ts","../../../../libs/ui/src/lib/command/command-empty.component.ts","../../../../libs/ui/src/lib/command/command-group.component.ts","../../../../libs/ui/src/lib/command/command-item.component.ts","../../../../libs/ui/src/lib/command/command-separator.component.ts","../../../../libs/ui/src/lib/toolbar/toolbar.component.ts","../../../../libs/ui/src/lib/toolbar/toolbar-widget.component.ts","../../../../libs/ui/src/lib/toolbar/toolbar-widget-group.component.ts","../../../../libs/ui/src/lib/toolbar/toolbar-separator.component.ts","../../../../libs/ui/src/lib/tree/tree.component.ts","../../../../libs/ui/src/lib/tree/tree-item.component.ts","../../../../libs/ui/src/lib/tree/tree-item-group.component.ts","../../../../libs/ui/src/lib/menubar/menubar.component.ts","../../../../libs/ui/src/lib/menubar/menubar-item.component.ts","../../../../libs/ui/src/lib/menubar/menubar-submenu.component.ts","../../../../libs/ui/src/lib/field-display/field-display.component.ts","../../../../libs/ui/src/lib/block-renderer/block-renderer.types.ts","../../../../libs/ui/src/lib/block-renderer/block-admin-mode.service.ts","../../../../libs/ui/src/lib/block-renderer/block-outlet.component.ts","../../../../libs/ui/src/lib/block-renderer/block-renderer.component.ts","../../../../libs/ui/src/lib/kitchen-sink/kitchen-sink.page.ts","../../../../libs/ui/src/index.ts","../../../../libs/ui/src/momentumcms-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { BadgeVariant } from './badge.types';\n\n/**\n * Badge component for status indicators, counts, and labels.\n *\n * Usage:\n * ```html\n * <mcms-badge>Default</mcms-badge>\n * <mcms-badge variant=\"success\">Active</mcms-badge>\n * <mcms-badge variant=\"destructive\">Error</mcms-badge>\n * <mcms-badge variant=\"warning\">Pending</mcms-badge>\n * ```\n */\n@Component({\n\tselector: 'mcms-badge',\n\thost: {\n\t\trole: 'status',\n\t\t'[attr.aria-label]': 'ariaLabel() || null',\n\t\t'[style.--badge-bg]': 'variantBg()',\n\t\t'[style.--badge-color]': 'variantColor()',\n\t\t'[style.--badge-border]': 'variantBorder()',\n\t\t'[class]': 'hostClass()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tborder-radius: 9999px;\n\t\t\tpadding: 0.125rem 0.625rem;\n\t\t\tfont-size: 0.75rem;\n\t\t\tfont-weight: 500;\n\t\t\tline-height: 1.25rem;\n\t\t\twhite-space: nowrap;\n\t\t\ttransition:\n\t\t\t\tbackground-color 0.15s,\n\t\t\t\tcolor 0.15s;\n\t\t\tbackground-color: var(--badge-bg);\n\t\t\tcolor: var(--badge-color);\n\t\t\tborder: 1px solid var(--badge-border);\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n\treadonly variant = input<BadgeVariant>('default');\n\treadonly class = input('');\n\t/** Accessible label for screen reader override. */\n\treadonly ariaLabel = input<string | undefined>(undefined);\n\n\treadonly hostClass = computed(() => this.class());\n\n\treadonly variantBg = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-primary))';\n\t\t\tcase 'secondary':\n\t\t\t\treturn 'hsl(var(--mcms-secondary))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive))';\n\t\t\tcase 'outline':\n\t\t\t\treturn 'transparent';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning))';\n\t\t}\n\t});\n\n\treadonly variantColor = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-primary-foreground))';\n\t\t\tcase 'secondary':\n\t\t\t\treturn 'hsl(var(--mcms-secondary-foreground))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive-foreground))';\n\t\t\tcase 'outline':\n\t\t\t\treturn 'hsl(var(--mcms-foreground))';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success-foreground))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning-foreground))';\n\t\t}\n\t});\n\n\treadonly variantBorder = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'outline':\n\t\t\t\treturn 'hsl(var(--mcms-border))';\n\t\t\tdefault:\n\t\t\t\treturn 'transparent';\n\t\t}\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Label component for form fields.\n *\n * Usage:\n * ```html\n * <mcms-label for=\"email\" [required]=\"true\">Email Address</mcms-label>\n * <mcms-input id=\"email\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-label',\n\thost: {\n\t\tclass: 'contents',\n\t},\n\ttemplate: `\n\t\t<label [attr.for]=\"for()\" [class]=\"hostClasses()\">\n\t\t\t<ng-content />\n\t\t\t@if (required()) {\n\t\t\t\t<span class=\"text-destructive ml-1\" aria-hidden=\"true\">*</span>\n\t\t\t}\n\t\t</label>\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Label {\n\treadonly for = input<string | undefined>(undefined);\n\treadonly required = input(false);\n\treadonly disabled = input(false);\n\treadonly class = input('');\n\n\tprivate readonly baseClasses =\n\t\t'text-base font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70';\n\n\treadonly hostClasses = computed(() => {\n\t\tconst classes = [this.baseClasses];\n\t\tif (this.disabled()) {\n\t\t\tclasses.push('cursor-not-allowed opacity-70');\n\t\t}\n\t\tif (this.class()) {\n\t\t\tclasses.push(this.class());\n\t\t}\n\t\treturn classes.join(' ');\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport type { ButtonSize, ButtonVariant } from './button.types';\n\n/**\n * Button component with multiple variants and sizes.\n *\n * Usage:\n * ```html\n * <button mcms-button>Default</button>\n * <button mcms-button variant=\"destructive\">Delete</button>\n * <button mcms-button variant=\"outline\" size=\"sm\">Small</button>\n * <a mcms-button [disabled]=\"true\">Disabled Link</a>\n * <button mcms-button [loading]=\"true\">Saving...</button>\n * <button mcms-button size=\"icon\" ariaLabel=\"Settings\"><svg>...</svg></button>\n * ```\n */\n@Component({\n\tselector: 'button[mcms-button], a[mcms-button]',\n\thost: {\n\t\t'[class]': 'class()',\n\t\t'[attr.disabled]': 'isNativeDisabled()',\n\t\t'[attr.aria-disabled]': 'isEffectivelyDisabled() || null',\n\t\t'[attr.aria-busy]': 'loading() || null',\n\t\t'[style.--btn-bg]': 'variantBg()',\n\t\t'[style.--btn-color]': 'variantColor()',\n\t\t'[style.--btn-hover-bg]': 'variantHoverBg()',\n\t\t'[style.--btn-border]': 'variantBorder()',\n\t\t'[style.height]': 'sizeHeight()',\n\t\t'[style.padding]': 'sizePadding()',\n\t\t'[style.width]': 'sizeWidth()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tgap: 0.5rem;\n\t\t\twhite-space: nowrap;\n\t\t\tborder-radius: 0.375rem;\n\t\t\tfont-size: 0.875rem;\n\t\t\tfont-weight: 500;\n\t\t\ttransition:\n\t\t\t\tbackground-color 0.15s,\n\t\t\t\tcolor 0.15s,\n\t\t\t\tborder-color 0.15s;\n\t\t\tcursor: pointer;\n\t\t\tborder: 1px solid var(--btn-border, transparent);\n\t\t\tbackground-color: var(--btn-bg);\n\t\t\tcolor: var(--btn-color);\n\t\t}\n\t\t:host(:hover:not([disabled]):not([aria-disabled='true'])) {\n\t\t\tbackground-color: var(--btn-hover-bg);\n\t\t}\n\t\t:host(:focus-visible) {\n\t\t\toutline: none;\n\t\t\tbox-shadow:\n\t\t\t\t0 0 0 2px hsl(var(--mcms-background)),\n\t\t\t\t0 0 0 4px hsl(var(--mcms-ring));\n\t\t}\n\t\t:host([disabled]),\n\t\t:host([aria-disabled='true']) {\n\t\t\tpointer-events: none;\n\t\t\topacity: 0.5;\n\t\t\tcursor: not-allowed;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n\tprivate readonly el = inject(ElementRef<HTMLElement>);\n\n\t/** Whether the host element is an anchor tag (determined once at construction). */\n\tprivate readonly isAnchor = this.el.nativeElement.tagName === 'A';\n\n\treadonly variant = input<ButtonVariant>('primary');\n\treadonly size = input<ButtonSize>('md');\n\treadonly disabled = input(false);\n\treadonly loading = input(false);\n\treadonly ariaLabel = input<string | undefined>(undefined);\n\treadonly class = input('');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst label = this.ariaLabel();\n\t\t\tif (label !== undefined) {\n\t\t\t\tthis.el.nativeElement.setAttribute('aria-label', label);\n\t\t\t}\n\t\t});\n\t}\n\n\t/** Whether the button is effectively disabled (disabled or loading). */\n\treadonly isEffectivelyDisabled = computed(() => this.disabled() || this.loading());\n\n\t/**\n\t * Native disabled attribute — only applied to `<button>` elements.\n\t * `<a>` elements don't support `disabled`; they use `aria-disabled` instead.\n\t */\n\treadonly isNativeDisabled = computed(() => {\n\t\tif (this.isAnchor) return null;\n\t\treturn this.isEffectivelyDisabled() || null;\n\t});\n\n\t// Size styles\n\treadonly sizeHeight = computed(() => {\n\t\tswitch (this.size()) {\n\t\t\tcase 'sm':\n\t\t\t\treturn '2.25rem';\n\t\t\tcase 'md':\n\t\t\t\treturn '2.5rem';\n\t\t\tcase 'lg':\n\t\t\t\treturn '2.75rem';\n\t\t\tcase 'icon':\n\t\t\t\treturn '2.5rem';\n\t\t}\n\t});\n\n\treadonly sizePadding = computed(() => {\n\t\tswitch (this.size()) {\n\t\t\tcase 'sm':\n\t\t\t\treturn '0 0.75rem';\n\t\t\tcase 'md':\n\t\t\t\treturn '0.5rem 1rem';\n\t\t\tcase 'lg':\n\t\t\t\treturn '0 2rem';\n\t\t\tcase 'icon':\n\t\t\t\treturn '0';\n\t\t}\n\t});\n\n\treadonly sizeWidth = computed(() => {\n\t\treturn this.size() === 'icon' ? '2.5rem' : null;\n\t});\n\n\t// CSS variable values for variants\n\treadonly variantBg = computed(() => {\n\t\tconst v = this.variant();\n\t\tswitch (v) {\n\t\t\tcase 'primary':\n\t\t\t\treturn 'hsl(var(--mcms-primary))';\n\t\t\tcase 'secondary':\n\t\t\t\treturn 'hsl(var(--mcms-secondary))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive))';\n\t\t\tcase 'outline':\n\t\t\t\treturn 'hsl(var(--mcms-background))';\n\t\t\tcase 'ghost':\n\t\t\tcase 'link':\n\t\t\t\treturn 'transparent';\n\t\t}\n\t});\n\n\treadonly variantColor = computed(() => {\n\t\tconst v = this.variant();\n\t\tswitch (v) {\n\t\t\tcase 'primary':\n\t\t\t\treturn 'hsl(var(--mcms-primary-foreground))';\n\t\t\tcase 'secondary':\n\t\t\t\treturn 'hsl(var(--mcms-secondary-foreground))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive-foreground))';\n\t\t\tcase 'outline':\n\t\t\tcase 'ghost':\n\t\t\t\treturn 'hsl(var(--mcms-foreground))';\n\t\t\tcase 'link':\n\t\t\t\treturn 'hsl(var(--mcms-primary))';\n\t\t}\n\t});\n\n\treadonly variantHoverBg = computed(() => {\n\t\tconst v = this.variant();\n\t\tswitch (v) {\n\t\t\tcase 'primary':\n\t\t\t\treturn 'hsl(var(--mcms-primary) / 0.9)';\n\t\t\tcase 'secondary':\n\t\t\t\treturn 'hsl(var(--mcms-secondary) / 0.8)';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive) / 0.9)';\n\t\t\tcase 'outline':\n\t\t\tcase 'ghost':\n\t\t\t\treturn 'hsl(var(--mcms-accent))';\n\t\t\tcase 'link':\n\t\t\t\treturn 'transparent';\n\t\t}\n\t});\n\n\treadonly variantBorder = computed(() => {\n\t\tconst v = this.variant();\n\t\tswitch (v) {\n\t\t\tcase 'outline':\n\t\t\t\treturn 'hsl(var(--mcms-border))';\n\t\t\tdefault:\n\t\t\t\treturn 'transparent';\n\t\t}\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport type { InputType, ValidationError } from './input.types';\n\n/**\n * Text input component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<string> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-input [formField]=\"myForm.email\" type=\"email\" placeholder=\"Enter email\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-input',\n\thost: {\n\t\tclass: 'block',\n\t\t'[class.mcms-input--error]': 'hasError()',\n\t\t'[class.mcms-input--disabled]': 'disabled()',\n\t\t'[attr.id]': 'null', // Remove host id to prevent duplicate with inner input\n\t},\n\ttemplate: `\n\t\t<input\n\t\t\t#inputEl\n\t\t\t[type]=\"type()\"\n\t\t\t[id]=\"id()\"\n\t\t\t[name]=\"name()\"\n\t\t\t[value]=\"value()\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[attr.aria-invalid]=\"hasError() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedBy()\"\n\t\t\t[attr.aria-required]=\"required() || null\"\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.min]=\"min()\"\n\t\t\t[attr.max]=\"max()\"\n\t\t\t[attr.step]=\"step()\"\n\t\t\t(input)=\"value.set(inputEl.value)\"\n\t\t\t(blur)=\"blurred.emit()\"\n\t\t/>\n\t`,\n\tstyles: `\n\t\tinput {\n\t\t\tdisplay: flex;\n\t\t\theight: 2.5rem;\n\t\t\twidth: 100%;\n\t\t\tborder-radius: 0.375rem;\n\t\t\tborder: 1px solid hsl(var(--mcms-input));\n\t\t\tbackground-color: hsl(var(--mcms-background));\n\t\t\tpadding: 0.5rem 0.75rem;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.25rem;\n\t\t\tcolor: hsl(var(--mcms-foreground));\n\t\t}\n\t\tinput::placeholder {\n\t\t\tcolor: hsl(var(--mcms-muted-foreground));\n\t\t}\n\t\tinput:focus-visible {\n\t\t\toutline: none;\n\t\t\tbox-shadow:\n\t\t\t\t0 0 0 2px hsl(var(--mcms-background)),\n\t\t\t\t0 0 0 4px hsl(var(--mcms-ring));\n\t\t}\n\t\tinput:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: 0.5;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Input {\n\t// === FormValueControl implementation (for [formField] directive) ===\n\n\t/** Two-way bound value - Signal Forms binds to this automatically */\n\treadonly value = model('');\n\n\t/** Disabled state - Signal Forms passes this from field.disabled() */\n\treadonly disabled = input(false);\n\n\t/** Validation errors - Signal Forms passes this from field.errors() */\n\treadonly errors = input<readonly ValidationError[]>([]);\n\n\t/** Whether the field has been interacted with (set by [formField] directive) */\n\treadonly touched = input(false);\n\n\t/** Whether the field is invalid (set by [formField] directive) */\n\treadonly invalid = input(false);\n\n\t/** Whether the field is readonly (set by [formField] directive) */\n\treadonly readonly = input(false);\n\n\t/** Whether the field is required (set by [formField] directive) */\n\treadonly required = input(false);\n\n\t// === Component-specific configuration ===\n\n\treadonly type = input<InputType>('text');\n\treadonly id = input('');\n\treadonly name = input('');\n\treadonly placeholder = input('');\n\treadonly autocomplete = input<string | undefined>(undefined);\n\treadonly describedBy = input<string | undefined>(undefined);\n\treadonly min = input<number | undefined>(undefined);\n\treadonly max = input<number | undefined>(undefined);\n\treadonly step = input<number | undefined>(undefined);\n\n\t/** Emitted when the input loses focus */\n\treadonly blurred = output<void>();\n\n\t// === Computed state ===\n\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport type { ValidationError } from '../input/input.types';\n\n/**\n * Textarea component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<string> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-textarea [formField]=\"myForm.description\" placeholder=\"Enter description\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-textarea',\n\thost: {\n\t\tclass: 'block',\n\t\t'[class.mcms-textarea--error]': 'hasError()',\n\t\t'[class.mcms-textarea--disabled]': 'disabled()',\n\t},\n\ttemplate: `\n\t\t<textarea\n\t\t\t#textareaEl\n\t\t\t[id]=\"id()\"\n\t\t\t[name]=\"name()\"\n\t\t\t[value]=\"value()\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[rows]=\"rows()\"\n\t\t\t[attr.aria-invalid]=\"hasError() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedBy()\"\n\t\t\t[attr.aria-required]=\"required() || null\"\n\t\t\t(input)=\"value.set(textareaEl.value)\"\n\t\t\t(blur)=\"blurred.emit()\"\n\t\t\tclass=\"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm\n\t\t\t text-foreground placeholder:text-muted-foreground\n\t\t\t focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\n\t\t\t disabled:cursor-not-allowed disabled:opacity-50\n\t\t\t aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive\"\n\t\t></textarea>\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Textarea {\n\t// === FormValueControl implementation ===\n\treadonly value = model('');\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\treadonly touched = input(false);\n\treadonly invalid = input(false);\n\treadonly readonly = input(false);\n\treadonly required = input(false);\n\n\t// === Component-specific configuration ===\n\treadonly id = input('');\n\treadonly name = input('');\n\treadonly placeholder = input('');\n\treadonly rows = input(3);\n\treadonly describedBy = input<string | undefined>(undefined);\n\n\t/** Emitted when the textarea loses focus */\n\treadonly blurred = output<void>();\n\n\t// === Computed state ===\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { ValidationError } from '../input/input.types';\n\n/**\n * Checkbox component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<boolean> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-checkbox [formField]=\"myForm.acceptTerms\">Accept Terms</mcms-checkbox>\n * ```\n */\n@Component({\n\tselector: 'mcms-checkbox',\n\thost: {\n\t\tclass: 'inline-flex items-center gap-2',\n\t\t'[class.mcms-checkbox--error]': 'hasError()',\n\t\t'[class.mcms-checkbox--disabled]': 'disabled()',\n\t},\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"checkbox\"\n\t\t\t[id]=\"id()\"\n\t\t\t[attr.aria-checked]=\"indeterminate() ? 'mixed' : value()\"\n\t\t\t[attr.aria-invalid]=\"hasError() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedBy()\"\n\t\t\t[attr.aria-label]=\"ariaLabel() || null\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t(click)=\"toggle()\"\n\t\t\t(keydown.space)=\"toggle(); $event.preventDefault()\"\n\t\t\t[class.checked]=\"value() || indeterminate()\"\n\t\t\t[class.error]=\"hasError()\"\n\t\t\tclass=\"checkbox-button\"\n\t\t>\n\t\t\t@if (indeterminate()) {\n\t\t\t\t<svg\n\t\t\t\t\tclass=\"check-icon\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"3\" d=\"M5 12h14\" />\n\t\t\t\t</svg>\n\t\t\t} @else if (value()) {\n\t\t\t\t<svg\n\t\t\t\t\tclass=\"check-icon\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\tstroke-width=\"3\"\n\t\t\t\t\t\td=\"M5 13l4 4L19 7\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t}\n\t\t</button>\n\t\t<label [attr.for]=\"id()\" class=\"checkbox-label\">\n\t\t\t<ng-content />\n\t\t</label>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.5rem;\n\t\t}\n\t\t:host(.mcms-checkbox--disabled) {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: 0.5;\n\t\t}\n\t\t.checkbox-button {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 1rem;\n\t\t\theight: 1rem;\n\t\t\tflex-shrink: 0;\n\t\t\tborder-radius: 0.125rem;\n\t\t\tborder: 1px solid hsl(var(--mcms-primary));\n\t\t\tbackground-color: transparent;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0;\n\t\t\ttransition:\n\t\t\t\tbackground-color 0.15s,\n\t\t\t\tborder-color 0.15s;\n\t\t}\n\t\t.checkbox-button:focus-visible {\n\t\t\toutline: none;\n\t\t\tbox-shadow:\n\t\t\t\t0 0 0 2px hsl(var(--mcms-background)),\n\t\t\t\t0 0 0 4px hsl(var(--mcms-ring));\n\t\t}\n\t\t.checkbox-button:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: 0.5;\n\t\t}\n\t\t.checkbox-button.error {\n\t\t\tborder-color: hsl(var(--mcms-destructive));\n\t\t}\n\t\t.checkbox-button.checked {\n\t\t\tbackground-color: hsl(var(--mcms-primary));\n\t\t\tcolor: hsl(var(--mcms-primary-foreground));\n\t\t}\n\t\t.check-icon {\n\t\t\twidth: 1rem;\n\t\t\theight: 1rem;\n\t\t}\n\t\t.checkbox-label {\n\t\t\tfont-size: 0.875rem;\n\t\t\tfont-weight: 500;\n\t\t\tline-height: 1;\n\t\t\tcolor: hsl(var(--mcms-foreground));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Checkbox {\n\t// === FormValueControl implementation ===\n\treadonly value = model(false);\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\treadonly touched = input(false);\n\treadonly invalid = input(false);\n\treadonly readonly = input(false);\n\treadonly required = input(false);\n\n\t// === Component-specific configuration ===\n\treadonly id = input('');\n\treadonly describedBy = input<string | undefined>(undefined);\n\t/** Shows a horizontal dash instead of check mark (used for partial selections). */\n\treadonly indeterminate = input(false);\n\t/** Accessible label for the checkbox button (for use without visible label). */\n\treadonly ariaLabel = input<string | undefined>(undefined);\n\n\t// === Computed state ===\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n\n\ttoggle(): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.value.set(!this.value());\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { ValidationError } from '../input/input.types';\n\n/**\n * Toggle switch component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<boolean> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-switch [formField]=\"myForm.enabled\">Enable notifications</mcms-switch>\n * ```\n */\n@Component({\n\tselector: 'mcms-switch',\n\thost: {\n\t\tclass: 'inline-flex items-center gap-2',\n\t\t'[class.mcms-switch--error]': 'hasError()',\n\t\t'[class.mcms-switch--disabled]': 'disabled()',\n\t},\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"switch\"\n\t\t\t[id]=\"id()\"\n\t\t\t[attr.aria-checked]=\"value()\"\n\t\t\t[attr.aria-invalid]=\"hasError() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedBy()\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t(click)=\"toggle()\"\n\t\t\tclass=\"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\n\t\t\t transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\n\t\t\t disabled:cursor-not-allowed disabled:opacity-50\n\t\t\t aria-[invalid=true]:ring-destructive\"\n\t\t\t[class.bg-primary]=\"value()\"\n\t\t\t[class.bg-input]=\"!value()\"\n\t\t>\n\t\t\t<span\n\t\t\t\tclass=\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform\"\n\t\t\t\t[class.translate-x-5]=\"value()\"\n\t\t\t\t[class.translate-x-0]=\"!value()\"\n\t\t\t></span>\n\t\t</button>\n\t\t@if (hasLabel()) {\n\t\t\t<label\n\t\t\t\t[attr.for]=\"id()\"\n\t\t\t\tclass=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</label>\n\t\t}\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Switch {\n\t// === FormValueControl implementation ===\n\treadonly value = model(false);\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\n\t// === Component-specific configuration ===\n\treadonly id = input('');\n\treadonly describedBy = input<string | undefined>(undefined);\n\treadonly hasLabel = input(true);\n\n\t// === Computed state ===\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n\n\ttoggle(): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.value.set(!this.value());\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport type { ValidationError } from '../input/input.types';\nimport type { SelectOption } from './select.types';\n\n/**\n * Select dropdown component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<string> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-select [formField]=\"myForm.status\" [options]=\"statusOptions\" placeholder=\"Select status\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-select',\n\thost: {\n\t\tclass: 'block',\n\t\t'[class.mcms-select--error]': 'hasError()',\n\t\t'[class.mcms-select--disabled]': 'disabled()',\n\t},\n\ttemplate: `\n\t\t<div class=\"relative\">\n\t\t\t<select\n\t\t\t\t#selectEl\n\t\t\t\t[id]=\"id()\"\n\t\t\t\t[name]=\"name()\"\n\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t[attr.aria-invalid]=\"hasError() || null\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedBy()\"\n\t\t\t\t[attr.aria-required]=\"required() || null\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel() || null\"\n\t\t\t\t(change)=\"value.set(selectEl.value)\"\n\t\t\t\t(blur)=\"blurred.emit()\"\n\t\t\t\tclass=\"flex h-10 w-full appearance-none items-center rounded-md border border-input bg-background pl-3 pr-10 py-2 text-sm\n\t\t\t\t text-foreground placeholder:text-muted-foreground\n\t\t\t\t focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\n\t\t\t\t disabled:cursor-not-allowed disabled:opacity-50\n\t\t\t\t aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive\"\n\t\t\t>\n\t\t\t\t@if (placeholder()) {\n\t\t\t\t\t<option value=\"\" disabled [selected]=\"!value()\">{{ placeholder() }}</option>\n\t\t\t\t}\n\t\t\t\t@for (option of options(); track option.value) {\n\t\t\t\t\t<option\n\t\t\t\t\t\t[value]=\"option.value\"\n\t\t\t\t\t\t[disabled]=\"option.disabled\"\n\t\t\t\t\t\t[selected]=\"value() === option.value\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t</option>\n\t\t\t\t}\n\t\t\t</select>\n\t\t\t<svg\n\t\t\t\tclass=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"m6 9 6 6 6-6\" />\n\t\t\t</svg>\n\t\t</div>\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select {\n\t// === FormValueControl implementation ===\n\treadonly value = model('');\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\treadonly touched = input(false);\n\treadonly invalid = input(false);\n\treadonly readonly = input(false);\n\treadonly required = input(false);\n\n\t/** Emitted when the select loses focus */\n\treadonly blurred = output<void>();\n\n\t// === Component-specific configuration ===\n\treadonly id = input('');\n\treadonly name = input('');\n\treadonly placeholder = input('');\n\treadonly options = input<SelectOption[]>([]);\n\treadonly describedBy = input<string | undefined>(undefined);\n\t/** Accessible label for the select element. */\n\treadonly ariaLabel = input<string | undefined>(undefined);\n\n\t// === Computed state ===\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n} from '@angular/core';\nimport type { ValidationError } from '../input/input.types';\nimport type { RadioOption } from './radio-group.types';\n\n/**\n * Radio group component compatible with Angular Signal Forms.\n *\n * Implements FormValueControl<string> interface for use with [formField] directive.\n *\n * Usage:\n * ```html\n * <mcms-radio-group [formField]=\"myForm.role\" [options]=\"roleOptions\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-radio-group',\n\thost: {\n\t\tclass: 'block',\n\t\trole: 'radiogroup',\n\t\t'[class.mcms-radio-group--error]': 'hasError()',\n\t\t'[class.mcms-radio-group--disabled]': 'disabled()',\n\t\t'[attr.aria-invalid]': 'hasError() || null',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()',\n\t\t'[attr.aria-required]': 'required() || null',\n\t\t'(keydown)': 'onKeydown($event)',\n\t},\n\ttemplate: `\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t@for (option of options(); track option.value) {\n\t\t\t\t<!-- eslint-disable-next-line @angular-eslint/template/label-has-associated-control -- label wraps button[role=radio], not a native input -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"flex items-center gap-2 cursor-pointer\"\n\t\t\t\t\t[class.opacity-50]=\"option.disabled || disabled()\"\n\t\t\t\t\t[class.cursor-not-allowed]=\"option.disabled || disabled()\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"radio\"\n\t\t\t\t\t\t[attr.aria-checked]=\"value() === option.value\"\n\t\t\t\t\t\t[disabled]=\"option.disabled || disabled()\"\n\t\t\t\t\t\t[attr.tabindex]=\"focusableValue() === option.value ? 0 : -1\"\n\t\t\t\t\t\t(click)=\"selectOption(option.value)\"\n\t\t\t\t\t\tclass=\"aspect-square h-4 w-4 rounded-full border border-primary text-primary\n\t\t\t\t\t\t focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\n\t\t\t\t\t\t disabled:cursor-not-allowed disabled:opacity-50\"\n\t\t\t\t\t>\n\t\t\t\t\t\t@if (value() === option.value) {\n\t\t\t\t\t\t\t<span class=\"flex items-center justify-center\">\n\t\t\t\t\t\t\t\t<span class=\"h-2.5 w-2.5 rounded-full bg-current\"></span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t\t<span class=\"text-sm font-medium leading-none\">{{ option.label }}</span>\n\t\t\t\t</label>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroup {\n\tprivate readonly elementRef = inject(ElementRef<HTMLElement>);\n\n\t// === FormValueControl implementation ===\n\treadonly value = model('');\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\n\t// === Component-specific configuration ===\n\treadonly id = input('');\n\treadonly name = input('');\n\treadonly options = input<RadioOption[]>([]);\n\treadonly describedBy = input<string | undefined>(undefined);\n\treadonly required = input(false);\n\n\t// === Computed state ===\n\treadonly hasError = computed(() => this.errors().length > 0);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tconst parts: string[] = [];\n\t\tconst described = this.describedBy();\n\t\tif (described) parts.push(described);\n\t\tif (this.hasError() && this.id()) parts.push(`${this.id()}-error`);\n\t\treturn parts.length > 0 ? parts.join(' ') : null;\n\t});\n\n\t/** Determines which option value should receive tabindex=\"0\" (roving tabindex). */\n\tprotected readonly focusableValue = computed(() => {\n\t\tconst current = this.value();\n\t\tconst opts = this.options();\n\t\tif (current) {\n\t\t\tconst currentOpt = opts.find((o) => o.value === current);\n\t\t\tif (currentOpt && !currentOpt.disabled) return current;\n\t\t}\n\t\tconst first = opts.find((o) => !o.disabled);\n\t\treturn first?.value ?? '';\n\t});\n\n\tselectOption(optionValue: string): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.value.set(optionValue);\n\t\t}\n\t}\n\n\tprotected onKeydown(event: KeyboardEvent): void {\n\t\tconst enabledOpts = this.options().filter((o) => !o.disabled && !this.disabled());\n\t\tif (enabledOpts.length === 0) return;\n\n\t\tconst currentIndex = enabledOpts.findIndex((o) => o.value === this.value());\n\t\tlet newIndex: number;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowRight':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tnewIndex = currentIndex < enabledOpts.length - 1 ? currentIndex + 1 : 0;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tnewIndex = currentIndex > 0 ? currentIndex - 1 : enabledOpts.length - 1;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tconst newValue = enabledOpts[newIndex].value;\n\t\tthis.value.set(newValue);\n\n\t\t// Focus the corresponding radio button\n\t\tconst allOpts = this.options();\n\t\tconst fullIndex = allOpts.findIndex((o) => o.value === newValue);\n\t\tconst buttons = this.elementRef.nativeElement.querySelectorAll('button[role=\"radio\"]');\n\t\tconst button = buttons[fullIndex];\n\t\tif (button instanceof HTMLElement) {\n\t\t\tbutton.focus();\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Label } from '../label/label.component';\nimport type { ValidationError } from '../input/input.types';\n\n/**\n * Form field wrapper that combines label, input, and error display.\n *\n * Usage:\n * ```html\n * <mcms-form-field id=\"email\" [required]=\"true\" [errors]=\"loginForm.email().errors()\">\n * <span mcmsLabel>Email Address</span>\n * <mcms-input [formField]=\"loginForm.email\" />\n * </mcms-form-field>\n * ```\n */\n@Component({\n\tselector: 'mcms-form-field',\n\timports: [Label],\n\thost: {\n\t\tclass: 'block space-y-2',\n\t\t'[attr.id]': 'null', // Remove host id to prevent duplicate with inner input\n\t},\n\ttemplate: `\n\t\t@if (hasLabel()) {\n\t\t\t<mcms-label [for]=\"id()\" [required]=\"required()\" [disabled]=\"disabled()\">\n\t\t\t\t<ng-content select=\"[mcmsLabel]\" />\n\t\t\t</mcms-label>\n\t\t}\n\n\t\t<ng-content />\n\n\t\t<p\n\t\t\t[id]=\"errorId()\"\n\t\t\tclass=\"text-sm min-h-5\"\n\t\t\t[class.text-destructive]=\"showError()\"\n\t\t\t[class.text-muted-foreground]=\"!showError() && !!hint()\"\n\t\t\t[attr.role]=\"showError() ? 'alert' : null\"\n\t\t\t[attr.aria-live]=\"showError() ? 'polite' : null\"\n\t\t>\n\t\t\t@if (showError()) {\n\t\t\t\t{{ errorMessage() }}\n\t\t\t} @else if (hint()) {\n\t\t\t\t{{ hint() }}\n\t\t\t}\n\t\t</p>\n\t`,\n\tstyles: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class McmsFormField {\n\treadonly id = input.required<string>();\n\treadonly required = input(false);\n\treadonly disabled = input(false);\n\treadonly errors = input<readonly ValidationError[]>([]);\n\treadonly hint = input<string | undefined>(undefined);\n\treadonly hasLabel = input(true);\n\n\treadonly errorId = computed(() => `${this.id()}-error`);\n\n\treadonly showError = computed(() => this.errors().length > 0);\n\n\treadonly errorMessage = computed(() => {\n\t\tconst errs = this.errors();\n\t\tif (errs.length === 0) return null;\n\t\t// Return the first error message, or fall back to error kind\n\t\tconst first = errs[0];\n\t\treturn first.message ?? `Validation error: ${first.kind}`;\n\t});\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Card container component.\n *\n * Usage:\n * ```html\n * <mcms-card>\n * <mcms-card-header>\n * <mcms-card-title>Title</mcms-card-title>\n * <mcms-card-description>Description</mcms-card-description>\n * </mcms-card-header>\n * <mcms-card-content>Content here</mcms-card-content>\n * <mcms-card-footer>Footer</mcms-card-footer>\n * </mcms-card>\n * ```\n */\n@Component({\n\tselector: 'mcms-card',\n\thost: {\n\t\tclass: 'block',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tborder-radius: 0.75rem;\n\t\t\tborder: 1px solid hsl(var(--mcms-border));\n\t\t\tbackground-color: hsl(var(--mcms-card));\n\t\t\tcolor: hsl(var(--mcms-card-foreground));\n\t\t\tbox-shadow:\n\t\t\t\t0 1px 3px 0 rgb(0 0 0 / 0.1),\n\t\t\t\t0 1px 2px -1px rgb(0 0 0 / 0.1);\n\t\t\ttransition:\n\t\t\t\tbox-shadow 0.2s ease,\n\t\t\t\tborder-color 0.2s ease;\n\t\t}\n\n\t\t:host(:hover) {\n\t\t\tbox-shadow:\n\t\t\t\t0 4px 6px -1px rgb(0 0 0 / 0.1),\n\t\t\t\t0 2px 4px -2px rgb(0 0 0 / 0.1);\n\t\t\tborder-color: hsl(var(--mcms-border) / 0.8);\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'mcms-card-header',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.375rem;\n\t\t\tpadding: 1.5rem;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardHeader {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'mcms-card-title',\n\thost: { class: 'contents' },\n\ttemplate: `\n\t\t<h2 class=\"card-title\">\n\t\t\t<ng-content />\n\t\t</h2>\n\t`,\n\tstyles: `\n\t\t.card-title {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 1.5rem;\n\t\t\tfont-weight: 600;\n\t\t\tline-height: 1;\n\t\t\tletter-spacing: -0.025em;\n\t\t\tmargin: 0;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardTitle {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'mcms-card-description',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 0.875rem;\n\t\t\tcolor: hsl(var(--mcms-muted-foreground));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardDescription {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'mcms-card-content',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tpadding: 1.5rem;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardContent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n\tselector: 'mcms-card-footer',\n\thost: { class: 'flex items-center px-6 pb-6' },\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardFooter {}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { AlertVariant } from './alert.types';\n\n/**\n * Alert component for displaying important messages.\n *\n * Usage:\n * ```html\n * <mcms-alert>\n * <mcms-alert-title>Heads up!</mcms-alert-title>\n * <mcms-alert-description>\n * You can add components to your app using the cli.\n * </mcms-alert-description>\n * </mcms-alert>\n *\n * <mcms-alert variant=\"destructive\">\n * <mcms-alert-title>Error</mcms-alert-title>\n * <mcms-alert-description>Something went wrong.</mcms-alert-description>\n * </mcms-alert>\n * ```\n */\n@Component({\n\tselector: 'mcms-alert',\n\thost: {\n\t\trole: 'alert',\n\t\t'[attr.aria-live]': 'ariaLive()',\n\t\t'[style.--alert-bg]': 'variantBg()',\n\t\t'[style.--alert-border]': 'variantBorder()',\n\t\t'[style.--alert-color]': 'variantColor()',\n\t\t'[style.--alert-icon-color]': 'variantIconColor()',\n\t\t'[class]': 'hostClass()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tposition: relative;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.25rem;\n\t\t\twidth: 100%;\n\t\t\tborder-radius: 0.5rem;\n\t\t\tborder: 1px solid var(--alert-border);\n\t\t\tpadding: 1rem;\n\t\t\tbackground-color: var(--alert-bg);\n\t\t\tcolor: var(--alert-color);\n\t\t}\n\n\t\t:host ::ng-deep [data-alert-icon] {\n\t\t\tposition: absolute;\n\t\t\tleft: 1rem;\n\t\t\ttop: 1rem;\n\t\t\tcolor: var(--alert-icon-color);\n\t\t\twidth: 1rem;\n\t\t\theight: 1rem;\n\t\t}\n\n\t\t:host ::ng-deep mcms-alert-title,\n\t\t:host ::ng-deep mcms-alert-description {\n\t\t\tpadding-left: 1.75rem;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Alert {\n\treadonly variant = input<AlertVariant>('default');\n\treadonly class = input('');\n\n\treadonly hostClass = computed(() => this.class());\n\n\treadonly ariaLive = computed((): 'assertive' | 'polite' =>\n\t\tthis.variant() === 'destructive' ? 'assertive' : 'polite',\n\t);\n\n\treadonly variantBg = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-background))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive) / 0.1)';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success) / 0.1)';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning) / 0.1)';\n\t\t\tcase 'info':\n\t\t\t\treturn 'hsl(var(--mcms-info) / 0.1)';\n\t\t}\n\t});\n\n\treadonly variantBorder = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-border))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive) / 0.5)';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success) / 0.5)';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning) / 0.5)';\n\t\t\tcase 'info':\n\t\t\t\treturn 'hsl(var(--mcms-info) / 0.5)';\n\t\t}\n\t});\n\n\treadonly variantColor = computed((): string => {\n\t\tswitch (this.variant()) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-foreground))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive))';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning))';\n\t\t\tcase 'info':\n\t\t\t\treturn 'hsl(var(--mcms-info))';\n\t\t}\n\t});\n\n\treadonly variantIconColor = computed((): string => this.variantColor());\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Alert title component.\n *\n * Usage:\n * ```html\n * <mcms-alert-title>Important!</mcms-alert-title>\n * ```\n */\n@Component({\n\tselector: 'mcms-alert-title',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tmargin-bottom: 0.25rem;\n\t\t\tfont-weight: 500;\n\t\t\tline-height: 1.375;\n\t\t\tletter-spacing: -0.025em;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertTitle {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Alert description component.\n *\n * Usage:\n * ```html\n * <mcms-alert-description>\n * This is a detailed description of the alert.\n * </mcms-alert-description>\n * ```\n */\n@Component({\n\tselector: 'mcms-alert-description',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.5;\n\t\t\topacity: 0.9;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertDescription {}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nexport const TOOLTIP_POSITION_MAP: Record<TooltipPosition, ConnectedPosition[]> = {\n\ttop: [\n\t\t{ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n\t\t{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n\t],\n\tbottom: [\n\t\t{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n\t\t{ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n\t],\n\tleft: [\n\t\t{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n\t\t{ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n\t],\n\tright: [\n\t\t{ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n\t\t{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n\t],\n};\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Internal tooltip content component rendered via CDK portal.\n */\n@Component({\n\tselector: 'mcms-tooltip-content',\n\thost: {\n\t\trole: 'tooltip',\n\t\t'[id]': 'id()',\n\t},\n\ttemplate: `{{ content() }}`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.375rem 0.75rem;\n\t\t\tfont-size: 0.75rem;\n\t\t\tline-height: 1.25rem;\n\t\t\tcolor: hsl(var(--mcms-primary-foreground));\n\t\t\tbackground-color: hsl(var(--mcms-foreground));\n\t\t\tborder-radius: 0.375rem;\n\t\t\tbox-shadow:\n\t\t\t\t0 4px 6px -1px rgb(0 0 0 / 0.1),\n\t\t\t\t0 2px 4px -2px rgb(0 0 0 / 0.1);\n\t\t\tanimation: tooltip-in 0.15s ease-out;\n\t\t\tmax-width: 20rem;\n\t\t\tword-wrap: break-word;\n\t\t}\n\n\t\t@keyframes tooltip-in {\n\t\t\tfrom {\n\t\t\t\topacity: 0;\n\t\t\t\ttransform: scale(0.96);\n\t\t\t}\n\t\t\tto {\n\t\t\t\topacity: 1;\n\t\t\t\ttransform: scale(1);\n\t\t\t}\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipContent {\n\treadonly content = input.required<string>();\n\treadonly id = input.required<string>();\n}\n","import {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tOnDestroy,\n\tsignal,\n\tViewContainerRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport type { TooltipPosition } from './tooltip.types';\nimport { TOOLTIP_POSITION_MAP } from './tooltip.types';\nimport { TooltipContent } from './tooltip-content.component';\n\n/**\n * Tooltip trigger directive.\n *\n * Apply this directive to any element to show a tooltip on hover/focus.\n *\n * Usage:\n * ```html\n * <button [mcmsTooltip]=\"'Click to save'\">Save</button>\n * <button [mcmsTooltip]=\"'Delete item'\" tooltipPosition=\"right\">Delete</button>\n * ```\n */\n@Directive({\n\tselector: '[mcmsTooltip]',\n\thost: {\n\t\t'(mouseenter)': 'onMouseEnter()',\n\t\t'(mouseleave)': 'onMouseLeave()',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'[attr.aria-describedby]': 'tooltipId()',\n\t},\n})\nexport class TooltipTrigger implements OnDestroy {\n\treadonly mcmsTooltip = input.required<string>();\n\treadonly tooltipPosition = input<TooltipPosition>('top');\n\treadonly tooltipDelay = input(300);\n\treadonly tooltipDisabled = input(false);\n\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly document = inject(DOCUMENT);\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate showTimeout: number | null = null;\n\tprivate hideTimeout: number | null = null;\n\n\treadonly isVisible = signal(false);\n\treadonly tooltipId = computed(() => (this.isVisible() ? `tooltip-${this.uniqueId}` : null));\n\n\tprivate readonly uniqueId = Math.random().toString(36).substring(2, 9);\n\n\tprivate readonly disabledEffect = effect(() => {\n\t\tif (this.tooltipDisabled() && this.isVisible()) {\n\t\t\tthis.hide();\n\t\t}\n\t});\n\n\tonMouseEnter(): void {\n\t\tthis.scheduleShow();\n\t}\n\n\tonMouseLeave(): void {\n\t\tthis.cancelShow();\n\t\tthis.scheduleHide();\n\t}\n\n\tonFocus(): void {\n\t\tthis.show();\n\t}\n\n\tonBlur(): void {\n\t\tthis.hide();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cancelShow();\n\t\tthis.cancelHide();\n\t\tthis.hide();\n\t}\n\n\tprivate scheduleShow(): void {\n\t\tif (this.tooltipDisabled()) return;\n\n\t\tthis.cancelHide();\n\t\tthis.showTimeout =\n\t\t\tthis.document.defaultView?.setTimeout(() => {\n\t\t\t\tthis.show();\n\t\t\t}, this.tooltipDelay()) ?? null;\n\t}\n\n\tprivate scheduleHide(): void {\n\t\tthis.hideTimeout =\n\t\t\tthis.document.defaultView?.setTimeout(() => {\n\t\t\t\tthis.hide();\n\t\t\t}, 100) ?? null;\n\t}\n\n\tprivate cancelShow(): void {\n\t\tif (this.showTimeout) {\n\t\t\tclearTimeout(this.showTimeout);\n\t\t\tthis.showTimeout = null;\n\t\t}\n\t}\n\n\tprivate cancelHide(): void {\n\t\tif (this.hideTimeout) {\n\t\t\tclearTimeout(this.hideTimeout);\n\t\t\tthis.hideTimeout = null;\n\t\t}\n\t}\n\n\tprivate show(): void {\n\t\tif (this.tooltipDisabled() || this.isVisible()) return;\n\n\t\tthis.createOverlay();\n\t\tthis.isVisible.set(true);\n\t}\n\n\tprivate hide(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t\tthis.isVisible.set(false);\n\t}\n\n\tprivate createOverlay(): void {\n\t\tconst positionStrategy = this.getPositionStrategy();\n\t\tconst scrollStrategy = this.overlay.scrollStrategies.close();\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy,\n\t\t\tpanelClass: 'mcms-tooltip-panel',\n\t\t});\n\n\t\tconst portal = new ComponentPortal(TooltipContent, this.viewContainerRef);\n\t\tconst componentRef = this.overlayRef.attach(portal);\n\n\t\tcomponentRef.setInput('content', this.mcmsTooltip());\n\t\tcomponentRef.setInput('id', `tooltip-${this.uniqueId}`);\n\t}\n\n\tprivate getPositionStrategy(): PositionStrategy {\n\t\tconst positions = TOOLTIP_POSITION_MAP[this.tooltipPosition()];\n\n\t\treturn this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withPositions(positions)\n\t\t\t.withPush(true);\n\t}\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\nimport type { PopoverAlign, PopoverSide } from './popover.types';\n\nexport function getPopoverPositions(\n\tside: PopoverSide,\n\talign: PopoverAlign,\n\toffset: number,\n): ConnectedPosition[] {\n\tconst positions: ConnectedPosition[] = [];\n\n\tconst alignMap: Record<\n\t\tPopoverAlign,\n\t\t{ originX: 'start' | 'center' | 'end'; overlayX: 'start' | 'center' | 'end' }\n\t> = {\n\t\tstart: { originX: 'start', overlayX: 'start' },\n\t\tcenter: { originX: 'center', overlayX: 'center' },\n\t\tend: { originX: 'end', overlayX: 'end' },\n\t};\n\n\tconst alignment = alignMap[align];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -offset,\n\t\t\t});\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'top',\n\t\t\t\toffsetY: offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'bottom':\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'top',\n\t\t\t\toffsetY: offset,\n\t\t\t});\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'left':\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: -offset,\n\t\t\t});\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: offset,\n\t\t\t});\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: -offset,\n\t\t\t});\n\t\t\tbreak;\n\t}\n\n\treturn positions;\n}\n","import {\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tOnDestroy,\n\toutput,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport type { PopoverAlign, PopoverSide } from './popover.types';\nimport { getPopoverPositions } from './popover.utils';\n\n/**\n * Popover trigger directive.\n *\n * Usage:\n * ```html\n * <button [mcmsPopoverTrigger]=\"popoverContent\">Open Popover</button>\n *\n * <ng-template #popoverContent>\n * <mcms-popover-content>\n * <p>Popover content here</p>\n * </mcms-popover-content>\n * </ng-template>\n * ```\n */\n@Directive({\n\tselector: '[mcmsPopoverTrigger]',\n\texportAs: 'mcmsPopoverTrigger',\n\thost: {\n\t\t'(click)': 'toggle()',\n\t\t'[attr.aria-expanded]': 'isOpen()',\n\t\t'[attr.aria-haspopup]': '\"dialog\"',\n\t},\n})\nexport class PopoverTrigger implements OnDestroy {\n\treadonly mcmsPopoverTrigger = input.required<TemplateRef<unknown>>();\n\treadonly popoverSide = input<PopoverSide>('bottom');\n\treadonly popoverAlign = input<PopoverAlign>('center');\n\treadonly popoverOffset = input(4);\n\treadonly popoverDisabled = input(false);\n\n\treadonly isOpen = signal(false);\n\treadonly opened = output<void>();\n\treadonly closed = output<void>();\n\n\tprivate readonly doc = inject(DOCUMENT);\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly viewContainerRef = inject(ViewContainerRef);\n\n\tprivate overlayRef: OverlayRef | null = null;\n\n\tprivate readonly disabledEffect = effect(() => {\n\t\tif (this.popoverDisabled() && this.isOpen()) {\n\t\t\tthis.close();\n\t\t}\n\t});\n\n\ttoggle(): void {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\topen(): void {\n\t\tif (this.popoverDisabled() || this.isOpen()) return;\n\n\t\tthis.createOverlay();\n\t\tthis.isOpen.set(true);\n\t\tthis.opened.emit();\n\t}\n\n\tclose(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t\tthis.isOpen.set(false);\n\t\tthis.closed.emit();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.close();\n\t}\n\n\tprivate createOverlay(): void {\n\t\tconst positionStrategy = this.getPositionStrategy();\n\t\tconst scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy,\n\t\t\thasBackdrop: true,\n\t\t\tbackdropClass: 'cdk-overlay-transparent-backdrop',\n\t\t\tpanelClass: 'mcms-popover-panel',\n\t\t});\n\n\t\tthis.overlayRef.backdropClick().subscribe(() => {\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.overlayRef.keydownEvents().subscribe((event) => {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis.close();\n\t\t\t\tthis.elementRef.nativeElement.focus();\n\t\t\t}\n\t\t});\n\n\t\tconst portal = new TemplatePortal(this.mcmsPopoverTrigger(), this.viewContainerRef);\n\t\tthis.overlayRef.attach(portal);\n\n\t\t// Focus the first focusable element inside the popover for keyboard accessibility\n\t\tthis.doc.defaultView?.requestAnimationFrame(() => {\n\t\t\tconst overlayEl = this.overlayRef?.overlayElement;\n\t\t\tif (overlayEl) {\n\t\t\t\tconst focusable = overlayEl.querySelector<HTMLElement>(\n\t\t\t\t\t'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n\t\t\t\t);\n\t\t\t\tfocusable?.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getPositionStrategy(): PositionStrategy {\n\t\tconst positions = getPopoverPositions(\n\t\t\tthis.popoverSide(),\n\t\t\tthis.popoverAlign(),\n\t\t\tthis.popoverOffset(),\n\t\t);\n\n\t\treturn this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withPositions(positions)\n\t\t\t.withPush(true);\n\t}\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Popover content container component.\n *\n * Usage:\n * ```html\n * <mcms-popover-content>\n * <p>Content goes here</p>\n * </mcms-popover-content>\n * ```\n */\n@Component({\n\tselector: 'mcms-popover-content',\n\thost: {\n\t\tclass: 'block',\n\t\trole: 'dialog',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tz-index: 50;\n\t\t\tmin-width: 8rem;\n\t\t\toverflow: hidden;\n\t\t\tborder-radius: 0.375rem;\n\t\t\tborder: 1px solid hsl(var(--mcms-border));\n\t\t\tbackground-color: hsl(var(--mcms-card));\n\t\t\tcolor: hsl(var(--mcms-card-foreground));\n\t\t\tpadding: 0.25rem;\n\t\t\tbox-shadow:\n\t\t\t\t0 10px 15px -3px rgb(0 0 0 / 0.1),\n\t\t\t\t0 4px 6px -4px rgb(0 0 0 / 0.1);\n\t\t\tanimation: popover-in 0.15s ease-out;\n\t\t}\n\n\t\t@keyframes popover-in {\n\t\t\tfrom {\n\t\t\t\topacity: 0;\n\t\t\t\ttransform: scale(0.95);\n\t\t\t}\n\t\t\tto {\n\t\t\t\topacity: 1;\n\t\t\t\ttransform: scale(1);\n\t\t\t}\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverContent {}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\nimport type { DropdownMenuAlign, DropdownMenuSide } from './dropdown-menu.types';\n\nexport function getDropdownPositions(\n\tside: DropdownMenuSide,\n\talign: DropdownMenuAlign,\n\toffset: number,\n): ConnectedPosition[] {\n\tconst positions: ConnectedPosition[] = [];\n\n\tconst alignMap: Record<\n\t\tDropdownMenuAlign,\n\t\t{ originX: 'start' | 'center' | 'end'; overlayX: 'start' | 'center' | 'end' }\n\t> = {\n\t\tstart: { originX: 'start', overlayX: 'start' },\n\t\tcenter: { originX: 'center', overlayX: 'center' },\n\t\tend: { originX: 'end', overlayX: 'end' },\n\t};\n\n\tconst alignment = alignMap[align];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'bottom':\n\t\t\tpositions.push({\n\t\t\t\toriginX: alignment.originX,\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: alignment.overlayX,\n\t\t\t\toverlayY: 'top',\n\t\t\t\toffsetY: offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'left':\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'end',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: -offset,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\tpositions.push({\n\t\t\t\toriginX: 'end',\n\t\t\t\toriginY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n\t\t\t\toffsetX: offset,\n\t\t\t});\n\t\t\tbreak;\n\t}\n\n\t// Add fallback positions\n\tif (side === 'bottom') {\n\t\tpositions.push({\n\t\t\toriginX: alignment.originX,\n\t\t\toriginY: 'top',\n\t\t\toverlayX: alignment.overlayX,\n\t\t\toverlayY: 'bottom',\n\t\t\toffsetY: -offset,\n\t\t});\n\t} else if (side === 'top') {\n\t\tpositions.push({\n\t\t\toriginX: alignment.originX,\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: alignment.overlayX,\n\t\t\toverlayY: 'top',\n\t\t\toffsetY: offset,\n\t\t});\n\t}\n\n\treturn positions;\n}\n","import {\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tOnDestroy,\n\toutput,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport type { DropdownMenuAlign, DropdownMenuSide } from './dropdown-menu.types';\nimport { getDropdownPositions } from './dropdown-menu.utils';\n\n/**\n * Dropdown menu trigger directive.\n *\n * Usage:\n * ```html\n * <button [mcmsDropdownTrigger]=\"menuContent\">Open Menu</button>\n *\n * <ng-template #menuContent>\n * <mcms-dropdown-menu>\n * <button mcms-dropdown-item>Item 1</button>\n * <button mcms-dropdown-item>Item 2</button>\n * </mcms-dropdown-menu>\n * </ng-template>\n * ```\n */\n@Directive({\n\tselector: '[mcmsDropdownTrigger]',\n\texportAs: 'mcmsDropdownTrigger',\n\thost: {\n\t\t'(click)': 'toggle()',\n\t\t'(keydown.enter)': 'open()',\n\t\t'(keydown.space)': 'open(); $event.preventDefault()',\n\t\t'(keydown.arrowdown)': 'open(); $event.preventDefault()',\n\t\t'[attr.aria-expanded]': 'isOpen()',\n\t\t'[attr.aria-haspopup]': '\"menu\"',\n\t},\n})\nexport class DropdownTrigger implements OnDestroy {\n\treadonly mcmsDropdownTrigger = input.required<TemplateRef<unknown>>();\n\treadonly dropdownSide = input<DropdownMenuSide>('bottom');\n\treadonly dropdownAlign = input<DropdownMenuAlign>('start');\n\treadonly dropdownOffset = input(4);\n\treadonly dropdownDisabled = input(false);\n\n\treadonly isOpen = signal(false);\n\treadonly opened = output<void>();\n\treadonly closed = output<void>();\n\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly document = inject(DOCUMENT);\n\n\tprivate overlayRef: OverlayRef | null = null;\n\n\tprivate readonly disabledEffect = effect(() => {\n\t\tif (this.dropdownDisabled() && this.isOpen()) {\n\t\t\tthis.close();\n\t\t}\n\t});\n\n\ttoggle(): void {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\topen(): void {\n\t\tif (this.dropdownDisabled() || this.isOpen()) return;\n\n\t\tthis.createOverlay();\n\t\tthis.isOpen.set(true);\n\t\tthis.opened.emit();\n\t}\n\n\tclose(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t\tthis.isOpen.set(false);\n\t\tthis.closed.emit();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.close();\n\t}\n\n\tprivate createOverlay(): void {\n\t\tconst positionStrategy = this.getPositionStrategy();\n\t\tconst scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy,\n\t\t\thasBackdrop: true,\n\t\t\tbackdropClass: 'cdk-overlay-transparent-backdrop',\n\t\t\tpanelClass: 'mcms-dropdown-panel',\n\t\t});\n\n\t\tthis.overlayRef.backdropClick().subscribe(() => {\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.overlayRef.keydownEvents().subscribe((event) => {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis.close();\n\t\t\t\tthis.elementRef.nativeElement.focus();\n\t\t\t}\n\t\t});\n\n\t\tconst portal = new TemplatePortal(this.mcmsDropdownTrigger(), this.viewContainerRef, {\n\t\t\tclose: () => this.close(),\n\t\t});\n\t\tthis.overlayRef.attach(portal);\n\n\t\t// Focus first menu item after overlay renders\n\t\tconst overlayElement = this.overlayRef.overlayElement;\n\t\tthis.document.defaultView?.requestAnimationFrame(() => {\n\t\t\tconst firstItem = overlayElement.querySelector<HTMLElement>('[role=\"menuitem\"]');\n\t\t\tfirstItem?.focus();\n\t\t});\n\t}\n\n\tprivate getPositionStrategy(): PositionStrategy {\n\t\tconst positions = getDropdownPositions(\n\t\t\tthis.dropdownSide(),\n\t\t\tthis.dropdownAlign(),\n\t\t\tthis.dropdownOffset(),\n\t\t);\n\n\t\treturn this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withPositions(positions)\n\t\t\t.withPush(true);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { Menu } from '@angular/aria/menu';\n\n/**\n * Dropdown menu container component.\n *\n * Uses @angular/aria/menu for keyboard navigation, typeahead search, and accessibility.\n *\n * Usage:\n * ```html\n * <mcms-dropdown-menu>\n * <mcms-dropdown-label>Actions</mcms-dropdown-label>\n * <button mcms-dropdown-item value=\"edit\">Edit</button>\n * <button mcms-dropdown-item value=\"duplicate\">Duplicate</button>\n * <mcms-dropdown-separator />\n * <button mcms-dropdown-item value=\"delete\">Delete</button>\n * </mcms-dropdown-menu>\n * ```\n */\n@Component({\n\tselector: 'mcms-dropdown-menu',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: Menu,\n\t\t\tinputs: ['disabled', 'wrap', 'typeaheadDelay'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menu',\n\t\t'[attr.aria-orientation]': '\"vertical\"',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownMenu {\n\tprotected readonly menu = inject(Menu);\n\n\t/** Whether the menu is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation wraps around */\n\treadonly wrap = input(true);\n\n\t/** Typeahead delay in milliseconds */\n\treadonly typeaheadDelay = input(1000);\n\n\t/** Emits when an item is selected */\n\treadonly itemSelected = output<string>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex flex-col z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-card text-card-foreground p-1 shadow-lg animate-in fade-in-0 zoom-in-95';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { MenuItem } from '@angular/aria/menu';\n\n/**\n * Dropdown menu item component.\n *\n * Uses @angular/aria/menu MenuItem for keyboard navigation and accessibility.\n *\n * Usage:\n * ```html\n * <button mcms-dropdown-item value=\"edit\">Edit</button>\n * <button mcms-dropdown-item value=\"disabled\" [disabled]=\"true\">Disabled</button>\n * <button mcms-dropdown-item value=\"search\" shortcut=\"⌘K\">Search</button>\n * ```\n */\n@Component({\n\tselector: 'button[mcms-dropdown-item], a[mcms-dropdown-item]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: MenuItem,\n\t\t\tinputs: ['value', 'disabled', 'searchTerm'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menuitem',\n\t\t'[attr.tabindex]': 'disabled() ? -1 : 0',\n\t\t'[attr.disabled]': 'disabled() || null',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'(click)': 'onClick($event)',\n\t\t'(keydown.enter)': 'onClick($event)',\n\t\t'(keydown.space)': 'onClick($event); $event.preventDefault()',\n\t},\n\ttemplate: `\n\t\t<ng-content />\n\t\t@if (shortcut()) {\n\t\t\t<span class=\"ml-auto text-xs tracking-widest text-muted-foreground\">{{ shortcut() }}</span>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownMenuItem {\n\tprotected readonly menuItem = inject(MenuItem);\n\n\t/** The value of the menu item (required for @angular/aria) */\n\treadonly value = input.required<string>();\n\n\t/** Whether the menu item is disabled */\n\treadonly disabled = input(false);\n\n\t/** Keyboard shortcut display text */\n\treadonly shortcut = input<string | undefined>(undefined);\n\n\t/** Emits when the item is selected */\n\treadonly selected = output<void>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex items-center justify-between gap-2 cursor-pointer select-none rounded-sm px-2 py-1.5 text-sm outline-none transition-colors w-full text-left bg-transparent border-none text-inherit';\n\t\tconst interactiveClasses = this.disabled()\n\t\t\t? 'pointer-events-none opacity-50'\n\t\t\t: 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground';\n\t\tconst activeClasses = this.menuItem.active() ? 'bg-accent text-accent-foreground' : '';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${this.class()}`.trim();\n\t});\n\n\tonClick(event: Event): void {\n\t\tif (this.disabled()) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\t\tthis.selected.emit();\n\t}\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Dropdown menu separator component.\n *\n * Usage:\n * ```html\n * <mcms-dropdown-separator />\n * ```\n */\n@Component({\n\tselector: 'mcms-dropdown-separator',\n\thost: {\n\t\trole: 'separator',\n\t},\n\ttemplate: '',\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\theight: 1px;\n\t\t\tmargin: 0.25rem -0.25rem;\n\t\t\tbackground-color: hsl(var(--mcms-border));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownSeparator {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Dropdown menu label component.\n *\n * Usage:\n * ```html\n * <mcms-dropdown-label>Actions</mcms-dropdown-label>\n * ```\n */\n@Component({\n\tselector: 'mcms-dropdown-label',\n\thost: {\n\t\tclass: 'block',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.375rem 0.5rem;\n\t\t\tfont-size: 0.75rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: hsl(var(--mcms-muted-foreground));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownLabel {}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Injection token for passing data to dialog components.\n */\nexport const DIALOG_DATA = new InjectionToken<unknown>('McmsDialogData');\n","import { ComponentRef } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\n\n/**\n * Reference to an opened dialog.\n * Use this to close the dialog or subscribe to its lifecycle events.\n */\nexport class DialogRef<R = unknown> {\n\tprivate readonly _afterClosed = new Subject<R | undefined>();\n\tprivate readonly _backdropClick = new Subject<void>();\n\n\t/** Observable that emits when the dialog is closed. */\n\treadonly afterClosed = this._afterClosed.asObservable();\n\n\t/** Observable that emits when the backdrop is clicked. */\n\treadonly backdropClick = this._backdropClick.asObservable();\n\n\t/** The component instance inside the dialog. Set after creation. */\n\tcomponentRef: ComponentRef<unknown> | null = null;\n\n\tconstructor(private readonly overlayRef: OverlayRef) {\n\t\toverlayRef.backdropClick().subscribe(() => {\n\t\t\tthis._backdropClick.next();\n\t\t});\n\t}\n\n\t/**\n\t * Close the dialog with an optional result.\n\t */\n\tclose(result?: R): void {\n\t\tthis._afterClosed.next(result);\n\t\tthis._afterClosed.complete();\n\t\tthis.overlayRef.dispose();\n\t}\n\n\t/**\n\t * Update the dialog's width.\n\t */\n\tupdateSize(width?: string, height?: string): void {\n\t\tthis.overlayRef.updateSize({ width, height });\n\t}\n}\n","import { inject, Injectable, Injector, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport type { DialogConfig } from './dialog.types';\nimport { DIALOG_DATA } from './dialog.token';\nimport { DialogRef } from './dialog-ref';\n\n/**\n * Service for opening dialogs programmatically.\n *\n * Usage:\n * ```typescript\n * const dialogRef = this.dialog.open(MyDialogComponent, {\n * data: { name: 'World' },\n * width: '400px',\n * });\n *\n * dialogRef.afterClosed.subscribe(result => {\n * console.log('Dialog closed with:', result);\n * });\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly injector = inject(Injector);\n\tprivate readonly document = inject(DOCUMENT);\n\n\tprivate openDialogs: Array<{ close: () => void }> = [];\n\tprivate overlayStylesInjected = false;\n\n\t/**\n\t * Open a dialog with the specified component.\n\t */\n\topen<T, D = unknown, R = unknown>(component: Type<T>, config?: DialogConfig<D>): DialogRef<R> {\n\t\tthis.ensureOverlayStyles();\n\t\tconst overlayConfig = this.getOverlayConfig(config);\n\t\tconst overlayRef = this.overlay.create(overlayConfig);\n\n\t\tconst dialogRef = new DialogRef<R>(overlayRef);\n\n\t\tconst injector = Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [\n\t\t\t\t{ provide: DialogRef, useValue: dialogRef },\n\t\t\t\t{ provide: DIALOG_DATA, useValue: config?.data },\n\t\t\t],\n\t\t});\n\n\t\tconst portal = new ComponentPortal(component, null, injector);\n\t\tconst componentRef = overlayRef.attach(portal);\n\n\t\tdialogRef.componentRef = componentRef;\n\n\t\t// Handle backdrop click\n\t\tif (!config?.disableClose) {\n\t\t\toverlayRef.backdropClick().subscribe(() => {\n\t\t\t\tdialogRef.close();\n\t\t\t});\n\t\t}\n\n\t\t// Handle escape key\n\t\toverlayRef.keydownEvents().subscribe((event) => {\n\t\t\tif (event.key === 'Escape' && !config?.disableClose) {\n\t\t\t\tdialogRef.close();\n\t\t\t}\n\t\t});\n\n\t\tthis.openDialogs.push(dialogRef);\n\n\t\tdialogRef.afterClosed.subscribe(() => {\n\t\t\tconst index = this.openDialogs.indexOf(dialogRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis.openDialogs.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn dialogRef;\n\t}\n\n\t/**\n\t * Close all open dialogs.\n\t */\n\tcloseAll(): void {\n\t\tthis.openDialogs.forEach((dialogRef) => dialogRef.close());\n\t}\n\n\t/**\n\t * Ensure CDK overlay positioning styles are present.\n\t * CDK may not inject its styles in all build configurations (e.g. SSR, esbuild).\n\t */\n\tprivate ensureOverlayStyles(): void {\n\t\tif (this.overlayStylesInjected) return;\n\t\tthis.overlayStylesInjected = true;\n\n\t\tconst styleId = 'mcms-cdk-overlay-styles';\n\t\tif (this.document.getElementById(styleId)) return;\n\n\t\tconst style = this.document.createElement('style');\n\t\tstyle.id = styleId;\n\t\tstyle.textContent = `\n\t\t\t.cdk-overlay-container, .cdk-global-overlay-wrapper {\n\t\t\t\tpointer-events: none;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.cdk-overlay-container {\n\t\t\t\tposition: fixed;\n\t\t\t\tz-index: 1000;\n\t\t\t}\n\t\t\t.cdk-global-overlay-wrapper {\n\t\t\t\tdisplay: flex;\n\t\t\t\tposition: absolute;\n\t\t\t\tz-index: 1000;\n\t\t\t}\n\t\t\t.cdk-overlay-pane {\n\t\t\t\tposition: static;\n\t\t\t\tpointer-events: auto;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tz-index: 1000;\n\t\t\t\tdisplay: flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmax-height: 100%;\n\t\t\t}\n\t\t\t.cdk-overlay-backdrop {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\tright: 0;\n\t\t\t\tz-index: 1000;\n\t\t\t\tpointer-events: auto;\n\t\t\t\t-webkit-tap-highlight-color: transparent;\n\t\t\t\ttransition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\t.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t`;\n\t\tthis.document.head.appendChild(style);\n\t}\n\n\tprivate getOverlayConfig(config?: DialogConfig): OverlayConfig {\n\t\tconst positionStrategy = this.overlay\n\t\t\t.position()\n\t\t\t.global()\n\t\t\t.centerHorizontally()\n\t\t\t.centerVertically();\n\n\t\tconst panelClasses = ['mcms-dialog-panel'];\n\t\tif (config?.panelClass) {\n\t\t\tif (Array.isArray(config.panelClass)) {\n\t\t\t\tpanelClasses.push(...config.panelClass);\n\t\t\t} else {\n\t\t\t\tpanelClasses.push(config.panelClass);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.block(),\n\t\t\thasBackdrop: true,\n\t\t\tbackdropClass: 'mcms-dialog-backdrop',\n\t\t\tpanelClass: panelClasses,\n\t\t\twidth: config?.width ?? '28rem',\n\t\t\tmaxWidth: config?.maxWidth ?? '90vw',\n\t\t\tminWidth: config?.minWidth,\n\t\t};\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tinject,\n\tinput,\n\tOnInit,\n\tsignal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n/**\n * Dialog container component.\n *\n * Usage:\n * ```html\n * <mcms-dialog>\n * <mcms-dialog-header>\n * <mcms-dialog-title>Dialog Title</mcms-dialog-title>\n * <mcms-dialog-description>Optional description</mcms-dialog-description>\n * </mcms-dialog-header>\n * <mcms-dialog-content>\n * Content goes here\n * </mcms-dialog-content>\n * <mcms-dialog-footer>\n * <button mcms-button variant=\"outline\" mcmsDialogClose>Cancel</button>\n * <button mcms-button [mcmsDialogClose]=\"true\">Confirm</button>\n * </mcms-dialog-footer>\n * </mcms-dialog>\n * ```\n */\n@Component({\n\tselector: 'mcms-dialog',\n\timports: [A11yModule],\n\thost: {\n\t\trole: 'dialog',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'titleId()',\n\t\t'[attr.aria-describedby]': 'descriptionId()',\n\t\t'[class]': 'hostClass()',\n\t},\n\ttemplate: `\n\t\t<div class=\"dialog-content\" cdkTrapFocus cdkTrapFocusAutoCapture>\n\t\t\t<ng-content />\n\t\t</div>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\tborder-radius: 0.5rem;\n\t\t\tborder: 1px solid hsl(var(--mcms-border));\n\t\t\tbackground-color: hsl(var(--mcms-card));\n\t\t\tcolor: hsl(var(--mcms-card-foreground));\n\t\t\tbox-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n\t\t\tanimation: dialog-content-in 0.2s ease-out;\n\t\t\tmax-height: 85vh;\n\t\t\toverflow: hidden;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\n\t\t.dialog-content {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t@keyframes dialog-content-in {\n\t\t\tfrom {\n\t\t\t\topacity: 0;\n\t\t\t\ttransform: scale(0.96);\n\t\t\t}\n\t\t\tto {\n\t\t\t\topacity: 1;\n\t\t\t\ttransform: scale(1);\n\t\t\t}\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Dialog implements OnInit {\n\treadonly class = input('');\n\n\treadonly titleId = signal<string | null>(null);\n\treadonly descriptionId = signal<string | null>(null);\n\n\treadonly hostClass = computed(() => this.class());\n\n\tprivate readonly document = inject(DOCUMENT);\n\n\tngOnInit(): void {\n\t\t// Add backdrop styles to document if not present\n\t\tthis.addBackdropStyles();\n\t}\n\n\tregisterTitle(id: string): void {\n\t\tthis.titleId.set(id);\n\t}\n\n\tregisterDescription(id: string): void {\n\t\tthis.descriptionId.set(id);\n\t}\n\n\tprivate addBackdropStyles(): void {\n\t\tconst styleId = 'mcms-dialog-backdrop-styles';\n\t\tif (!this.document.getElementById(styleId)) {\n\t\t\tconst style = this.document.createElement('style');\n\t\t\tstyle.id = styleId;\n\t\t\tstyle.textContent = `\n\t\t\t\t.mcms-dialog-backdrop {\n\t\t\t\t\tbackground-color: hsl(var(--mcms-overlay) / 0.8);\n\t\t\t\t\tanimation: dialog-overlay-in 0.15s ease-out;\n\t\t\t\t}\n\t\t\t\t@keyframes dialog-overlay-in {\n\t\t\t\t\tfrom { opacity: 0; }\n\t\t\t\t\tto { opacity: 1; }\n\t\t\t\t}\n\t\t\t`;\n\t\t\tthis.document.head.appendChild(style);\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Dialog header component.\n */\n@Component({\n\tselector: 'mcms-dialog-header',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.375rem;\n\t\t\tpadding: 1.5rem;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogHeader {}\n","import { ChangeDetectionStrategy, Component, inject, input, OnInit } from '@angular/core';\nimport { Dialog } from './dialog.component';\n\nlet uniqueId = 0;\n\n/**\n * Dialog title component.\n */\n@Component({\n\tselector: 'mcms-dialog-title',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 1.125rem;\n\t\t\tfont-weight: 600;\n\t\t\tline-height: 1.5;\n\t\t\tletter-spacing: -0.025em;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogTitle implements OnInit {\n\treadonly id = input(`mcms-dialog-title-${uniqueId++}`);\n\n\tprivate readonly dialog = inject(Dialog, { optional: true });\n\n\tngOnInit(): void {\n\t\tthis.dialog?.registerTitle(this.id());\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject, input, OnInit } from '@angular/core';\nimport { Dialog } from './dialog.component';\n\nlet uniqueId = 0;\n\n/**\n * Dialog description component.\n */\n@Component({\n\tselector: 'mcms-dialog-description',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 0.875rem;\n\t\t\tcolor: hsl(var(--mcms-muted-foreground));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogDescription implements OnInit {\n\treadonly id = input(`mcms-dialog-desc-${uniqueId++}`);\n\n\tprivate readonly dialog = inject(Dialog, { optional: true });\n\n\tngOnInit(): void {\n\t\tthis.dialog?.registerDescription(this.id());\n\t}\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Dialog content component.\n */\n@Component({\n\tselector: 'mcms-dialog-content',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tpadding: 1.5rem;\n\t\t\toverflow-y: auto;\n\t\t\tflex: 1;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogContent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Dialog footer component.\n */\n@Component({\n\tselector: 'mcms-dialog-footer',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tjustify-content: flex-end;\n\t\t\tgap: 0.5rem;\n\t\t\tpadding: 1.5rem;\n\t\t\tpadding-top: 0;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogFooter {}\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n/**\n * Directive to close a dialog when clicked.\n *\n * Usage:\n * ```html\n * <button mcmsDialogClose>Cancel</button>\n * <button [mcmsDialogClose]=\"'confirmed'\">Confirm</button>\n * ```\n */\n@Directive({\n\tselector: '[mcmsDialogClose]',\n\thost: {\n\t\t'(click)': 'onClick()',\n\t},\n})\nexport class DialogClose<R = unknown> {\n\t/** Result to pass when closing the dialog. */\n\treadonly mcmsDialogClose = input<R | undefined>(undefined);\n\n\tprivate readonly dialogRef = inject(DialogRef<R>, { optional: true });\n\n\tonClick(): void {\n\t\tthis.dialogRef?.close(this.mcmsDialogClose());\n\t}\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport type { Toast, ToastConfig, ToastPosition } from './toast.types';\n\nlet toastIdCounter = 0;\n\n/**\n * Service for showing toast notifications.\n *\n * Usage:\n * ```typescript\n * // In your component\n * private toast = inject(ToastService);\n *\n * // Show a toast\n * this.toast.show('Changes saved', 'Your changes have been saved successfully.');\n *\n * // Show with variant\n * this.toast.success('Success!', 'Operation completed.');\n * this.toast.error('Error', 'Something went wrong.');\n * this.toast.warning('Warning', 'Please review your input.');\n *\n * // Show with action\n * this.toast.show('File deleted', 'The file has been removed.', {\n * action: {\n * label: 'Undo',\n * onClick: () => this.undoDelete(),\n * },\n * });\n * ```\n *\n * Remember to add <mcms-toast-container /> to your app root.\n */\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n\tprivate readonly document = inject(DOCUMENT);\n\tprivate readonly liveAnnouncer = inject(LiveAnnouncer);\n\n\t/** Current toast position. */\n\treadonly position = signal<ToastPosition>('bottom-right');\n\n\t/** Maximum number of visible toasts. Default: 5 */\n\treadonly maxToasts = signal(5);\n\n\t/** Active toasts. */\n\treadonly toasts = signal<Toast[]>([]);\n\n\t/**\n\t * Show a toast notification.\n\t * @returns The toast ID for programmatic dismissal.\n\t */\n\tshow(title: string, description?: string, config?: ToastConfig): string {\n\t\tconst id = `toast-${toastIdCounter++}`;\n\n\t\tconst toast: Toast = {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\tvariant: config?.variant ?? 'default',\n\t\t\tduration: config?.duration ?? 5000,\n\t\t\taction: config?.action,\n\t\t\tdismissible: config?.dismissible ?? true,\n\t\t\tcreatedAt: Date.now(),\n\t\t};\n\n\t\t// Add toast, respecting max limit\n\t\tthis.toasts.update((toasts) => {\n\t\t\tconst newToasts = [...toasts, toast];\n\t\t\tif (newToasts.length > this.maxToasts()) {\n\t\t\t\treturn newToasts.slice(-this.maxToasts());\n\t\t\t}\n\t\t\treturn newToasts;\n\t\t});\n\n\t\t// Announce to screen readers\n\t\tconst announcement = description ? `${title}. ${description}` : title;\n\t\tconst politeness = toast.variant === 'destructive' ? 'assertive' : 'polite';\n\t\tvoid this.liveAnnouncer.announce(announcement, politeness);\n\n\t\t// Schedule auto-dismiss\n\t\tif (toast.duration > 0) {\n\t\t\tthis.document.defaultView?.setTimeout(() => {\n\t\t\t\tthis.dismiss(id);\n\t\t\t}, toast.duration);\n\t\t}\n\n\t\treturn id;\n\t}\n\n\t/**\n\t * Show a success toast.\n\t */\n\tsuccess(title: string, description?: string): string {\n\t\treturn this.show(title, description, { variant: 'success' });\n\t}\n\n\t/**\n\t * Show an error toast.\n\t */\n\terror(title: string, description?: string): string {\n\t\treturn this.show(title, description, { variant: 'destructive' });\n\t}\n\n\t/**\n\t * Show a warning toast.\n\t */\n\twarning(title: string, description?: string): string {\n\t\treturn this.show(title, description, { variant: 'warning' });\n\t}\n\n\t/**\n\t * Dismiss a specific toast by ID.\n\t */\n\tdismiss(id: string): void {\n\t\tthis.toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n\t}\n\n\t/**\n\t * Dismiss all toasts.\n\t */\n\tdismissAll(): void {\n\t\tthis.toasts.set([]);\n\t}\n\n\t/**\n\t * Set the toast position.\n\t */\n\tsetPosition(position: ToastPosition): void {\n\t\tthis.position.set(position);\n\t}\n\n\t/**\n\t * Set the maximum number of visible toasts.\n\t */\n\tsetMaxToasts(max: number): void {\n\t\tthis.maxToasts.set(max);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport type { Toast } from './toast.types';\n\n/**\n * Individual toast component.\n */\n@Component({\n\tselector: 'mcms-toast',\n\thost: {\n\t\trole: 'status',\n\t\t'[style.--toast-bg]': 'variantBg()',\n\t\t'[style.--toast-border]': 'variantBorder()',\n\t\t'[style.--toast-color]': 'variantColor()',\n\t},\n\ttemplate: `\n\t\t<div class=\"toast-content\">\n\t\t\t<div class=\"toast-title\">{{ toast().title }}</div>\n\t\t\t@if (toast().description) {\n\t\t\t\t<div class=\"toast-description\">{{ toast().description }}</div>\n\t\t\t}\n\t\t</div>\n\t\t@if (toast().action) {\n\t\t\t<button class=\"toast-action\" (click)=\"onAction()\">\n\t\t\t\t{{ toast().action?.label }}\n\t\t\t</button>\n\t\t}\n\t\t@if (toast().dismissible) {\n\t\t\t<button class=\"toast-close\" (click)=\"dismiss()\" aria-label=\"Dismiss notification\">\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"14\"\n\t\t\t\t\theight=\"14\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t}\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 0.75rem;\n\t\t\twidth: 100%;\n\t\t\tpadding: 1rem;\n\t\t\tborder-radius: 0.5rem;\n\t\t\tborder: 1px solid var(--toast-border);\n\t\t\tbackground-color: var(--toast-bg);\n\t\t\tcolor: var(--toast-color);\n\t\t\tbox-shadow:\n\t\t\t\t0 10px 15px -3px rgb(0 0 0 / 0.1),\n\t\t\t\t0 4px 6px -4px rgb(0 0 0 / 0.1);\n\t\t\tanimation: toast-slide-in 0.3s ease-out;\n\t\t\tpointer-events: auto;\n\t\t}\n\n\t\t@keyframes toast-slide-in {\n\t\t\tfrom {\n\t\t\t\topacity: 0;\n\t\t\t\ttransform: translateX(100%);\n\t\t\t}\n\t\t\tto {\n\t\t\t\topacity: 1;\n\t\t\t\ttransform: translateX(0);\n\t\t\t}\n\t\t}\n\n\t\t.toast-content {\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t}\n\n\t\t.toast-title {\n\t\t\tfont-weight: 500;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.25rem;\n\t\t}\n\n\t\t.toast-description {\n\t\t\tmargin-top: 0.25rem;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.25rem;\n\t\t\topacity: 0.9;\n\t\t}\n\n\t\t.toast-action {\n\t\t\tflex-shrink: 0;\n\t\t\tpadding: 0.25rem 0.75rem;\n\t\t\tfont-size: 0.75rem;\n\t\t\tfont-weight: 500;\n\t\t\tborder-radius: 0.25rem;\n\t\t\tborder: 1px solid currentColor;\n\t\t\tbackground: transparent;\n\t\t\tcolor: inherit;\n\t\t\tcursor: pointer;\n\t\t\topacity: 0.8;\n\t\t\ttransition: opacity 0.15s;\n\t\t}\n\n\t\t.toast-action:hover {\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.toast-close {\n\t\t\tflex-shrink: 0;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 1.25rem;\n\t\t\theight: 1.25rem;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcolor: inherit;\n\t\t\tcursor: pointer;\n\t\t\topacity: 0.5;\n\t\t\ttransition: opacity 0.15s;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t.toast-close:hover {\n\t\t\topacity: 1;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n\treadonly toast = input.required<Toast>();\n\treadonly dismissed = output<void>();\n\n\treadonly variantBg = computed((): string => {\n\t\tswitch (this.toast().variant) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-card))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive))';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning))';\n\t\t}\n\t});\n\n\treadonly variantBorder = computed((): string => {\n\t\tswitch (this.toast().variant) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-border))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive))';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning))';\n\t\t}\n\t});\n\n\treadonly variantColor = computed((): string => {\n\t\tswitch (this.toast().variant) {\n\t\t\tcase 'default':\n\t\t\t\treturn 'hsl(var(--mcms-card-foreground))';\n\t\t\tcase 'destructive':\n\t\t\t\treturn 'hsl(var(--mcms-destructive-foreground))';\n\t\t\tcase 'success':\n\t\t\t\treturn 'hsl(var(--mcms-success-foreground))';\n\t\t\tcase 'warning':\n\t\t\t\treturn 'hsl(var(--mcms-warning-foreground))';\n\t\t}\n\t});\n\n\tdismiss(): void {\n\t\tthis.dismissed.emit();\n\t}\n\n\tonAction(): void {\n\t\tconst action = this.toast().action;\n\t\tif (action) {\n\t\t\taction.onClick();\n\t\t}\n\t\tthis.dismiss();\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport { ToastService } from './toast.service';\n\n/**\n * Toast container component.\n * Add this to your app root to enable toast notifications.\n *\n * Usage:\n * ```html\n * <!-- In app.component.html -->\n * <router-outlet />\n * <mcms-toast-container />\n * ```\n */\n@Component({\n\tselector: 'mcms-toast-container',\n\timports: [ToastComponent],\n\thost: {\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t\t'[class]': 'hostClass()',\n\t},\n\ttemplate: `\n\t\t@for (toast of toasts(); track toast.id) {\n\t\t\t<mcms-toast [toast]=\"toast\" (dismissed)=\"onDismiss(toast.id)\" />\n\t\t}\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: 100;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.5rem;\n\t\t\tpadding: 1rem;\n\t\t\tmax-width: 420px;\n\t\t\twidth: 100%;\n\t\t\tpointer-events: none;\n\t\t}\n\n\t\t:host.top-right {\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t}\n\n\t\t:host.top-left {\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\n\t\t:host.top-center {\n\t\t\ttop: 0;\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t}\n\n\t\t:host.bottom-right {\n\t\t\tbottom: 0;\n\t\t\tright: 0;\n\t\t}\n\n\t\t:host.bottom-left {\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t}\n\n\t\t:host.bottom-center {\n\t\t\tbottom: 0;\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastContainer {\n\tprivate readonly toastService = inject(ToastService);\n\n\treadonly toasts = this.toastService.toasts;\n\treadonly position = this.toastService.position;\n\n\treadonly hostClass = computed(() => this.position());\n\n\tonDismiss(id: string): void {\n\t\tthis.toastService.dismiss(id);\n\t}\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Toast title component (optional, for custom content).\n */\n@Component({\n\tselector: 'mcms-toast-title',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tfont-weight: 500;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.25rem;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastTitle {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Toast description component (optional, for custom content).\n */\n@Component({\n\tselector: 'mcms-toast-description',\n\thost: { class: 'block' },\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tmargin-top: 0.25rem;\n\t\t\tfont-size: 0.875rem;\n\t\t\tline-height: 1.25rem;\n\t\t\topacity: 0.9;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastDescription {}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { Dialog } from '../dialog/dialog.component';\nimport { DialogClose } from '../dialog/dialog-close.directive';\nimport { DialogDescription } from '../dialog/dialog-description.component';\nimport { DialogFooter } from '../dialog/dialog-footer.component';\nimport { DialogHeader } from '../dialog/dialog-header.component';\nimport { DialogRef } from '../dialog/dialog-ref';\nimport { DialogTitle } from '../dialog/dialog-title.component';\nimport { DIALOG_DATA } from '../dialog/dialog.token';\nimport { Button } from '../button/button.component';\nimport type { ConfirmationConfig } from './confirmation-dialog.types';\n\n/**\n * Internal confirmation dialog component.\n */\n@Component({\n\tselector: 'mcms-confirmation-dialog',\n\timports: [\n\t\tDialog,\n\t\tDialogHeader,\n\t\tDialogTitle,\n\t\tDialogDescription,\n\t\tDialogFooter,\n\t\tDialogClose,\n\t\tButton,\n\t],\n\ttemplate: `\n\t\t<mcms-dialog>\n\t\t\t<mcms-dialog-header>\n\t\t\t\t@if (config.icon) {\n\t\t\t\t\t<div [class]=\"iconContainerClass()\">\n\t\t\t\t\t\t@switch (config.icon) {\n\t\t\t\t\t\t\t@case ('warning') {\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\td=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<path d=\"M12 9v4\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M12 17h.01\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@case ('danger') {\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t\t\t\t\t<path d=\"m15 9-6 6\" />\n\t\t\t\t\t\t\t\t\t<path d=\"m9 9 6 6\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@case ('info') {\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M12 16v-4\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M12 8h.01\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@case ('question') {\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M12 17h.01\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<mcms-dialog-title>{{ config.title }}</mcms-dialog-title>\n\t\t\t\t@if (config.description) {\n\t\t\t\t\t<mcms-dialog-description>{{ config.description }}</mcms-dialog-description>\n\t\t\t\t}\n\t\t\t</mcms-dialog-header>\n\t\t\t<mcms-dialog-footer>\n\t\t\t\t<button mcms-button variant=\"outline\" [mcmsDialogClose]=\"false\">\n\t\t\t\t\t{{ config.cancelText ?? 'Cancel' }}\n\t\t\t\t</button>\n\t\t\t\t<button mcms-button [variant]=\"confirmVariant()\" [mcmsDialogClose]=\"true\">\n\t\t\t\t\t{{ config.confirmText ?? 'Confirm' }}\n\t\t\t\t</button>\n\t\t\t</mcms-dialog-footer>\n\t\t</mcms-dialog>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: contents;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmationDialogComponent {\n\treadonly config = inject<ConfirmationConfig>(DIALOG_DATA);\n\tprivate readonly dialogRef = inject(DialogRef<boolean>);\n\n\treadonly confirmVariant = computed(() =>\n\t\tthis.config.variant === 'destructive' ? 'destructive' : 'primary',\n\t);\n\n\treadonly iconContainerClass = computed(() => {\n\t\tconst baseClass = 'flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto';\n\n\t\tswitch (this.config.icon) {\n\t\t\tcase 'warning':\n\t\t\t\treturn `${baseClass} bg-warning/10 text-warning`;\n\t\t\tcase 'danger':\n\t\t\t\treturn `${baseClass} bg-destructive/10 text-destructive`;\n\t\t\tcase 'info':\n\t\t\t\treturn `${baseClass} bg-info/10 text-info`;\n\t\t\tcase 'question':\n\t\t\t\treturn `${baseClass} bg-primary/10 text-primary`;\n\t\t\tdefault:\n\t\t\t\treturn baseClass;\n\t\t}\n\t});\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DialogService } from '../dialog/dialog.service';\nimport { ConfirmationDialogComponent } from './confirmation-dialog.component';\nimport type { ConfirmationConfig } from './confirmation-dialog.types';\n\n/**\n * Service for showing confirmation dialogs.\n *\n * Usage:\n * ```typescript\n * // In your component\n * private confirmation = inject(ConfirmationService);\n *\n * async onDelete(): Promise<void> {\n * const confirmed = await this.confirmation.confirm({\n * title: 'Delete item?',\n * description: 'This action cannot be undone.',\n * confirmText: 'Delete',\n * variant: 'destructive',\n * });\n *\n * if (confirmed) {\n * // Proceed with deletion\n * }\n * }\n *\n * // Or use the convenience method\n * async onDeleteItem(): Promise<void> {\n * const confirmed = await this.confirmation.delete('this item');\n * if (confirmed) {\n * // Proceed\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService {\n\tprivate readonly dialog = inject(DialogService);\n\n\t/**\n\t * Show a confirmation dialog.\n\t * @returns Promise that resolves to true if confirmed, false if cancelled.\n\t */\n\tconfirm(config: ConfirmationConfig): Promise<boolean> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst dialogRef = this.dialog.open<ConfirmationDialogComponent, ConfirmationConfig, boolean>(\n\t\t\t\tConfirmationDialogComponent,\n\t\t\t\t{\n\t\t\t\t\tdata: config,\n\t\t\t\t\tdisableClose: true,\n\t\t\t\t\twidth: '24rem',\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tdialogRef.afterClosed.subscribe((confirmed) => {\n\t\t\t\tresolve(confirmed ?? false);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Show a delete confirmation dialog.\n\t * @param itemName The name of the item being deleted.\n\t */\n\tdelete(itemName: string): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\ttitle: `Delete ${itemName}?`,\n\t\t\tdescription: 'This action cannot be undone.',\n\t\t\tconfirmText: 'Delete',\n\t\t\tcancelText: 'Cancel',\n\t\t\tvariant: 'destructive',\n\t\t\ticon: 'danger',\n\t\t});\n\t}\n\n\t/**\n\t * Show a discard changes confirmation dialog.\n\t */\n\tdiscardChanges(): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\ttitle: 'Discard changes?',\n\t\t\tdescription: 'You have unsaved changes that will be lost.',\n\t\t\tconfirmText: 'Discard',\n\t\t\tcancelText: 'Keep editing',\n\t\t\tvariant: 'destructive',\n\t\t\ticon: 'warning',\n\t\t});\n\t}\n\n\t/**\n\t * Show a logout confirmation dialog.\n\t */\n\tlogout(): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\ttitle: 'Sign out?',\n\t\t\tdescription: 'Are you sure you want to sign out?',\n\t\t\tconfirmText: 'Sign out',\n\t\t\tcancelText: 'Cancel',\n\t\t\tvariant: 'default',\n\t\t\ticon: 'question',\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A visual separator for dividing content.\n *\n * @example\n * ```html\n * <mcms-separator />\n * <mcms-separator orientation=\"vertical\" />\n * <mcms-separator [decorative]=\"false\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-separator',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[attr.role]': 'role()',\n\t\t'[attr.aria-orientation]': 'ariaOrientation()',\n\t},\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Separator {\n\t/** Orientation of the separator. */\n\treadonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\t/** Whether the separator is purely decorative (no semantic meaning). */\n\treadonly decorative = input(true);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly role = computed(() => (this.decorative() ? 'none' : 'separator'));\n\n\treadonly ariaOrientation = computed(() => (this.decorative() ? undefined : this.orientation()));\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'shrink-0 bg-border';\n\t\tconst orientationClasses = this.orientation() === 'horizontal' ? 'h-px w-full' : 'h-full w-px';\n\n\t\treturn `${base} ${orientationClasses} ${this.class()}`.trim();\n\t});\n}\n","export type SpinnerSize = 'sm' | 'md' | 'lg';\n\nexport const SPINNER_SIZES: Record<SpinnerSize, { width: number; height: number; stroke: number }> =\n\t{\n\t\tsm: { width: 16, height: 16, stroke: 2 },\n\t\tmd: { width: 24, height: 24, stroke: 2 },\n\t\tlg: { width: 32, height: 32, stroke: 3 },\n\t};\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { SpinnerSize } from './spinner.types';\nimport { SPINNER_SIZES } from './spinner.types';\n\n/**\n * A loading spinner indicator.\n *\n * @example\n * ```html\n * <mcms-spinner />\n * <mcms-spinner size=\"sm\" />\n * <mcms-spinner size=\"lg\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-spinner',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'status',\n\t\t'[attr.aria-label]': 'label()',\n\t},\n\ttemplate: `\n\t\t<svg\n\t\t\t[attr.width]=\"dimensions().width\"\n\t\t\t[attr.height]=\"dimensions().height\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tclass=\"animate-spin\"\n\t\t>\n\t\t\t<circle\n\t\t\t\tcx=\"12\"\n\t\t\t\tcy=\"12\"\n\t\t\t\tr=\"10\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t[attr.stroke-width]=\"dimensions().stroke\"\n\t\t\t\tstroke-opacity=\"0.25\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M12 2a10 10 0 0 1 10 10\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t[attr.stroke-width]=\"dimensions().stroke\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t/>\n\t\t</svg>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Spinner {\n\t/** Size of the spinner. */\n\treadonly size = input<SpinnerSize>('md');\n\n\t/** Accessible label for screen readers. */\n\treadonly label = input('Loading');\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly dimensions = computed(() => SPINNER_SIZES[this.size()]);\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `inline-flex items-center justify-center text-primary ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A skeleton loading placeholder.\n *\n * @example\n * ```html\n * <mcms-skeleton class=\"h-4 w-[200px]\" />\n * <mcms-skeleton class=\"h-12 w-12 rounded-full\" />\n * <mcms-skeleton class=\"h-32 w-full\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-skeleton',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'aria-hidden': 'true',\n\t},\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Skeleton {\n\t/** Additional CSS classes for sizing and shape. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block animate-pulse rounded-md bg-muted ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A progress bar indicator.\n *\n * @example\n * ```html\n * <mcms-progress [value]=\"50\" />\n * <mcms-progress [value]=\"75\" [max]=\"100\" />\n * <mcms-progress /> <!-- indeterminate -->\n * ```\n */\n@Component({\n\tselector: 'mcms-progress',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'progressbar',\n\t\t'[attr.aria-valuenow]': 'value()',\n\t\t'[attr.aria-valuemin]': '0',\n\t\t'[attr.aria-valuemax]': 'max()',\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"h-full bg-primary transition-all duration-300\"\n\t\t\t[class.animate-progress-indeterminate]=\"isIndeterminate()\"\n\t\t\t[style.width]=\"progressWidth()\"\n\t\t></div>\n\t`,\n\tstyles: `\n\t\t@keyframes progress-indeterminate {\n\t\t\t0% {\n\t\t\t\ttransform: translateX(-100%);\n\t\t\t}\n\t\t\t100% {\n\t\t\t\ttransform: translateX(400%);\n\t\t\t}\n\t\t}\n\n\t\t.animate-progress-indeterminate {\n\t\t\twidth: 25% !important;\n\t\t\tanimation: progress-indeterminate 1.5s ease-in-out infinite;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Progress {\n\t/** Current progress value. Null for indeterminate state. */\n\treadonly value = input<number | null>(null);\n\n\t/** Maximum value. */\n\treadonly max = input(100);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly isIndeterminate = computed(() => this.value() === null);\n\n\treadonly progressWidth = computed(() => {\n\t\tconst val = this.value();\n\t\tif (val === null) return '0%';\n\t\tconst percentage = Math.min(100, Math.max(0, (val / this.max()) * 100));\n\t\treturn `${percentage}%`;\n\t});\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `relative block h-2 w-full overflow-hidden rounded-full bg-muted ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A container that maintains a specific aspect ratio.\n *\n * @example\n * ```html\n * <mcms-aspect-ratio [ratio]=\"16 / 9\">\n * <img src=\"image.jpg\" class=\"object-cover w-full h-full\" />\n * </mcms-aspect-ratio>\n *\n * <mcms-aspect-ratio [ratio]=\"1\">\n * <!-- Square content -->\n * </mcms-aspect-ratio>\n * ```\n */\n@Component({\n\tselector: 'mcms-aspect-ratio',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[style.aspect-ratio]': 'ratio()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AspectRatio {\n\t/** Aspect ratio as width / height (e.g., 16/9, 4/3, 1). */\n\treadonly ratio = input(16 / 9);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `relative block w-full ${this.class()}`.trim();\n\t});\n}\n","export type AvatarSize = 'sm' | 'md' | 'lg';\n\nexport const AVATAR_SIZE_CLASSES: Record<AvatarSize, string> = {\n\tsm: 'h-8 w-8 text-xs',\n\tmd: 'h-10 w-10 text-sm',\n\tlg: 'h-12 w-12 text-base',\n};\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport type { AvatarSize } from './avatar.types';\nimport { AVATAR_SIZE_CLASSES } from './avatar.types';\n\n/**\n * Avatar container component.\n *\n * @example\n * ```html\n * <mcms-avatar>\n * <mcms-avatar-image src=\"user.jpg\" alt=\"User\" />\n * <mcms-avatar-fallback>JD</mcms-avatar-fallback>\n * </mcms-avatar>\n * ```\n */\n@Component({\n\tselector: 'mcms-avatar',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'img',\n\t\t'[attr.aria-label]': 'ariaLabel() || null',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Avatar {\n\t/** Size of the avatar. */\n\treadonly size = input<AvatarSize>('md');\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Accessible label for the avatar. */\n\treadonly ariaLabel = input<string | undefined>(undefined);\n\n\t/** Internal state for image loading status. */\n\treadonly imageLoaded = signal(false);\n\n\t/** Set image loaded state (called by AvatarImage). */\n\tsetImageLoaded(loaded: boolean): void {\n\t\tthis.imageLoaded.set(loaded);\n\t}\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'relative flex shrink-0 overflow-hidden rounded-full';\n\t\tconst sizeClasses = AVATAR_SIZE_CLASSES[this.size()];\n\t\treturn `${base} ${sizeClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { Avatar } from './avatar.component';\n\n/**\n * Avatar image component.\n *\n * @example\n * ```html\n * <mcms-avatar>\n * <mcms-avatar-image src=\"user.jpg\" alt=\"User name\" />\n * <mcms-avatar-fallback>JD</mcms-avatar-fallback>\n * </mcms-avatar>\n * ```\n */\n@Component({\n\tselector: 'mcms-avatar-image',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<img\n\t\t\t[src]=\"src()\"\n\t\t\t[alt]=\"alt()\"\n\t\t\tclass=\"aspect-square h-full w-full object-cover\"\n\t\t\t(load)=\"onLoad()\"\n\t\t\t(error)=\"onError()\"\n\t\t/>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarImage {\n\tprivate readonly avatar = inject(Avatar, { optional: true });\n\n\t/** Image source URL. */\n\treadonly src = input.required<string>();\n\n\t/** Image alt text. */\n\treadonly alt = input('');\n\n\t/** Emitted when image fails to load. */\n\treadonly loadError = output<void>();\n\n\treadonly hostClasses = computed(() => {\n\t\tconst loaded = this.avatar?.imageLoaded() ?? false;\n\t\treturn loaded ? 'block' : 'hidden';\n\t});\n\n\tonLoad(): void {\n\t\tthis.avatar?.setImageLoaded(true);\n\t}\n\n\tonError(): void {\n\t\tthis.avatar?.setImageLoaded(false);\n\t\tthis.loadError.emit();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Avatar } from './avatar.component';\n\n/**\n * Avatar fallback component shown when image fails to load.\n *\n * @example\n * ```html\n * <mcms-avatar>\n * <mcms-avatar-image src=\"user.jpg\" alt=\"User\" />\n * <mcms-avatar-fallback>JD</mcms-avatar-fallback>\n * </mcms-avatar>\n * ```\n */\n@Component({\n\tselector: 'mcms-avatar-fallback',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarFallback {\n\tprivate readonly avatar = inject(Avatar, { optional: true });\n\tprivate readonly document = inject(DOCUMENT);\n\n\t/** Delay in milliseconds before showing fallback. */\n\treadonly delayMs = input(600);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\tprivate readonly canRender = signal(false);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst delay = this.delayMs();\n\t\t\t// Reset and start timer\n\t\t\tthis.canRender.set(false);\n\n\t\t\tif (delay === 0) {\n\t\t\t\tthis.canRender.set(true);\n\t\t\t} else {\n\t\t\t\tconst timer = this.document.defaultView?.setTimeout(() => this.canRender.set(true), delay);\n\t\t\t\treturn () => clearTimeout(timer);\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t});\n\t}\n\n\treadonly hostClasses = computed(() => {\n\t\tconst imageLoaded = this.avatar?.imageLoaded() ?? false;\n\t\tconst ready = this.canRender();\n\n\t\t// Show fallback only when image hasn't loaded and delay has passed\n\t\tconst shouldShow = !imageLoaded && ready;\n\n\t\tconst base =\n\t\t\t'flex h-full w-full items-center justify-center rounded-full bg-muted font-medium text-muted-foreground';\n\t\tconst visibility = shouldShow ? 'flex' : 'hidden';\n\n\t\treturn `${base} ${visibility} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Breadcrumbs navigation container.\n *\n * @example\n * ```html\n * <mcms-breadcrumbs>\n * <mcms-breadcrumb-item href=\"/\">Home</mcms-breadcrumb-item>\n * <mcms-breadcrumb-separator />\n * <mcms-breadcrumb-item href=\"/products\">Products</mcms-breadcrumb-item>\n * <mcms-breadcrumb-separator />\n * <mcms-breadcrumb-item [current]=\"true\">Details</mcms-breadcrumb-item>\n * </mcms-breadcrumbs>\n * ```\n */\n@Component({\n\tselector: 'mcms-breadcrumbs',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<nav aria-label=\"Breadcrumb\">\n\t\t\t<ol class=\"flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground\">\n\t\t\t\t<ng-content />\n\t\t\t</ol>\n\t\t</nav>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Breadcrumbs {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * Individual breadcrumb item.\n *\n * @example\n * ```html\n * <mcms-breadcrumb-item href=\"/products\">Products</mcms-breadcrumb-item>\n * <mcms-breadcrumb-item [current]=\"true\">Details</mcms-breadcrumb-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-breadcrumb-item',\n\timports: [RouterLink, NgTemplateOutlet],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'listitem',\n\t},\n\ttemplate: `\n\t\t<ng-template #content><ng-content /></ng-template>\n\n\t\t@if (href() && !current()) {\n\t\t\t<a\n\t\t\t\t[routerLink]=\"href()\"\n\t\t\t\tclass=\"text-muted-foreground transition-colors hover:text-foreground\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<span\n\t\t\t\t[attr.aria-current]=\"current() ? 'page' : null\"\n\t\t\t\t[class.font-medium]=\"current()\"\n\t\t\t\t[class.text-foreground]=\"current()\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t</span>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbItem {\n\t/** Link href for navigation (uses routerLink for SPA navigation). */\n\treadonly href = input<string>();\n\n\t/** Whether this is the current/active page. */\n\treadonly current = input(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `inline-flex items-center ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Breadcrumb separator between items.\n *\n * @example\n * ```html\n * <mcms-breadcrumb-separator />\n * <mcms-breadcrumb-separator>/</mcms-breadcrumb-separator>\n * ```\n */\n@Component({\n\tselector: 'mcms-breadcrumb-separator',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'presentation',\n\t\t'aria-hidden': 'true',\n\t},\n\ttemplate: `\n\t\t<ng-content>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"m9 18 6-6-6-6\" />\n\t\t\t</svg>\n\t\t</ng-content>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbSeparator {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `[&>svg]:h-3.5 [&>svg]:w-3.5 ${this.class()}`.trim();\n\t});\n}\n","import {\n\tInjectable,\n\tinject,\n\tsignal,\n\tcomputed,\n\tPLATFORM_ID,\n\tDestroyRef,\n\ttype Signal,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\n\n/** Sidebar state representing current mode */\nexport type SidebarState = 'mobile-open' | 'mobile-closed' | 'collapsed' | 'expanded';\n\n/**\n * Service for managing sidebar state across the application.\n *\n * Uses CDK BreakpointObserver for responsive detection and provides\n * keyboard shortcuts (Cmd+B / Ctrl+B to toggle, Escape to close on mobile).\n *\n * @example\n * ```typescript\n * export class MyComponent {\n * private readonly sidebar = inject(SidebarService);\n *\n * toggleSidebar(): void {\n * this.sidebar.toggle();\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class SidebarService {\n\tprivate readonly breakpointObserver = inject(BreakpointObserver);\n\tprivate readonly platformId = inject(PLATFORM_ID);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly document = inject(DOCUMENT);\n\n\t/** Whether the sidebar is open (mobile) - starts closed on mobile */\n\treadonly open = signal(false);\n\n\t/** Whether the sidebar is collapsed (desktop) */\n\treadonly collapsed = signal(false);\n\n\t/** Whether we're on a mobile viewport (<768px) */\n\treadonly isMobile: Signal<boolean> = isPlatformBrowser(this.platformId)\n\t\t? toSignal(\n\t\t\t\tthis.breakpointObserver\n\t\t\t\t\t.observe(['(max-width: 767px)'])\n\t\t\t\t\t.pipe(map((result) => result.matches)),\n\t\t\t\t{ initialValue: false },\n\t\t\t)\n\t\t: signal(false);\n\n\t/** Current sidebar state */\n\treadonly state = computed((): SidebarState => {\n\t\tif (this.isMobile()) {\n\t\t\treturn this.open() ? 'mobile-open' : 'mobile-closed';\n\t\t}\n\t\treturn this.collapsed() ? 'collapsed' : 'expanded';\n\t});\n\n\t/** Toggle sidebar - opens/closes on mobile, collapses/expands on desktop */\n\ttoggle(): void {\n\t\tif (this.isMobile()) {\n\t\t\tthis.open.update((v) => !v);\n\t\t} else {\n\t\t\tthis.collapsed.update((v) => !v);\n\t\t}\n\t}\n\n\t/** Set sidebar open state (for mobile drawer) */\n\tsetOpen(open: boolean): void {\n\t\tthis.open.set(open);\n\t}\n\n\t/** Set sidebar collapsed state (for desktop) */\n\tsetCollapsed(collapsed: boolean): void {\n\t\tthis.collapsed.set(collapsed);\n\t}\n\n\t/**\n\t * Setup keyboard shortcuts for sidebar control.\n\t * - Cmd+B (Mac) / Ctrl+B (Windows): Toggle sidebar\n\t * - Escape: Close mobile drawer\n\t *\n\t * Call this from your root component's ngOnInit.\n\t */\n\tsetupKeyboardShortcuts(): void {\n\t\tif (!isPlatformBrowser(this.platformId)) return;\n\n\t\tconst handler = (event: KeyboardEvent): void => {\n\t\t\t// Cmd+B (Mac) or Ctrl+B (Windows/Linux)\n\t\t\tif ((event.metaKey || event.ctrlKey) && event.key === 'b') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.toggle();\n\t\t\t}\n\t\t\t// Escape closes mobile drawer\n\t\t\tif (event.key === 'Escape' && this.isMobile() && this.open()) {\n\t\t\t\tthis.setOpen(false);\n\t\t\t}\n\t\t};\n\n\t\tthis.document.addEventListener('keydown', handler);\n\n\t\t// Cleanup on destroy\n\t\tthis.destroyRef.onDestroy(() => {\n\t\t\tthis.document.removeEventListener('keydown', handler);\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, effect } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { SidebarService } from './sidebar.service';\n\n/**\n * A responsive sidebar container component with slots for header, content, and footer.\n *\n * Features:\n * - Mobile: Renders as a drawer overlay that slides in from left\n * - Desktop: Renders as a static sidebar with optional collapsed state\n * - Uses CDK FocusTrap for accessibility on mobile drawer\n * - Integrates with SidebarService for app-wide state management\n *\n * @example\n * ```html\n * <mcms-sidebar>\n * <div mcmsSidebarHeader>\n * <h1>Logo</h1>\n * </div>\n * <div mcmsSidebarContent>\n * <mcms-sidebar-nav>\n * <mcms-sidebar-nav-item label=\"Dashboard\" href=\"/dashboard\" />\n * </mcms-sidebar-nav>\n * </div>\n * <div mcmsSidebarFooter>\n * <p>Footer content</p>\n * </div>\n * </mcms-sidebar>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar',\n\timports: [NgTemplateOutlet, A11yModule],\n\thost: {\n\t\tclass: 'block',\n\t},\n\ttemplate: `\n\t\t@if (sidebar.isMobile()) {\n\t\t\t<!-- Mobile: Drawer overlay -->\n\t\t\t@if (sidebar.open()) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"fixed inset-0 z-40 bg-black/50 transition-opacity duration-300\"\n\t\t\t\t\t(click)=\"sidebar.setOpen(false)\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\n\t\t\t}\n\t\t\t<aside\n\t\t\t\t[class]=\"mobileClasses()\"\n\t\t\t\tcdkTrapFocus\n\t\t\t\t[cdkTrapFocusAutoCapture]=\"sidebar.open()\"\n\t\t\t\trole=\"dialog\"\n\t\t\t\t[attr.aria-modal]=\"sidebar.open() || null\"\n\t\t\t\taria-label=\"Sidebar navigation\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"sidebarContent\" />\n\t\t\t</aside>\n\t\t} @else {\n\t\t\t<!-- Desktop: Static sidebar -->\n\t\t\t<aside [class]=\"desktopClasses()\" [style.width]=\"desktopWidth()\" role=\"navigation\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"sidebarContent\" />\n\t\t\t</aside>\n\t\t}\n\n\t\t<ng-template #sidebarContent>\n\t\t\t<!-- Header: stays at top -->\n\t\t\t<div class=\"shrink-0 px-3 py-4\">\n\t\t\t\t<ng-content select=\"[mcmsSidebarHeader]\" />\n\t\t\t</div>\n\t\t\t<!-- Content: scrollable nav area -->\n\t\t\t<div class=\"flex-1 overflow-y-auto px-2\">\n\t\t\t\t<ng-content select=\"[mcmsSidebarContent]\" />\n\t\t\t</div>\n\t\t\t<!-- Footer: always at bottom -->\n\t\t\t<div class=\"shrink-0 border-t border-sidebar-border px-2 py-2\">\n\t\t\t\t<ng-content select=\"[mcmsSidebarFooter]\" />\n\t\t\t</div>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sidebar {\n\treadonly sidebar = inject(SidebarService);\n\n\t/** Width of the sidebar when expanded. */\n\treadonly width = input('16rem');\n\n\t/** Width of the sidebar when collapsed. */\n\treadonly collapsedWidth = input('4rem');\n\n\t/**\n\t * Whether the sidebar is collapsed.\n\t * This input syncs with SidebarService for backward compatibility.\n\t */\n\treadonly collapsed = input(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\tconstructor() {\n\t\t// Sync collapsed input with service for backward compatibility\n\t\teffect(() => {\n\t\t\tconst inputCollapsed = this.collapsed();\n\t\t\tif (inputCollapsed !== this.sidebar.collapsed()) {\n\t\t\t\tthis.sidebar.setCollapsed(inputCollapsed);\n\t\t\t}\n\t\t});\n\t}\n\n\t/** Classes for mobile drawer */\n\treadonly mobileClasses = computed(() => {\n\t\tconst base =\n\t\t\t'fixed inset-y-0 left-0 z-50 w-64 bg-sidebar text-sidebar-foreground border-r border-sidebar-border flex flex-col transition-transform duration-300 ease-in-out';\n\t\tconst transform = this.sidebar.open() ? 'translate-x-0' : '-translate-x-full';\n\t\treturn `${base} ${transform} ${this.class()}`.trim();\n\t});\n\n\t/** Classes for desktop sidebar */\n\treadonly desktopClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex flex-col h-screen sticky top-0 bg-sidebar text-sidebar-foreground border-r border-sidebar-border transition-[width] duration-200';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\t/** Width for desktop sidebar */\n\treadonly desktopWidth = computed(() =>\n\t\tthis.sidebar.collapsed() ? this.collapsedWidth() : this.width(),\n\t);\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Header section of the sidebar, typically for branding/logo.\n *\n * @example\n * ```html\n * <mcms-sidebar-header>\n * <h1>My App</h1>\n * </mcms-sidebar-header>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-header',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarHeader {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'flex items-center px-4 py-4 border-b border-sidebar-border shrink-0';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Main content area of the sidebar, typically for navigation items.\n * This section is scrollable when content overflows.\n *\n * @example\n * ```html\n * <mcms-sidebar-content>\n * <mcms-sidebar-nav>\n * <mcms-sidebar-nav-item label=\"Home\" href=\"/\" />\n * </mcms-sidebar-nav>\n * </mcms-sidebar-content>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-content',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarContent {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'flex-1 overflow-y-auto px-2 py-2';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Footer section of the sidebar, typically for user info or actions.\n *\n * @example\n * ```html\n * <mcms-sidebar-footer>\n * <div class=\"flex items-center gap-2\">\n * <mcms-avatar>...</mcms-avatar>\n * <span>John Doe</span>\n * </div>\n * </mcms-sidebar-footer>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-footer',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarFooter {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'px-2 py-2 border-t border-sidebar-border shrink-0';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Container for sidebar navigation items.\n *\n * @example\n * ```html\n * <mcms-sidebar-nav>\n * <mcms-sidebar-nav-item label=\"Dashboard\" href=\"/dashboard\" />\n * <mcms-sidebar-section title=\"Settings\">\n * <mcms-sidebar-nav-item label=\"Profile\" href=\"/settings/profile\" />\n * </mcms-sidebar-section>\n * </mcms-sidebar-nav>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-nav',\n\thost: {\n\t\trole: 'navigation',\n\t\t'[attr.aria-label]': 'ariaLabel()',\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarNav {\n\t/** Accessible label for the navigation. */\n\treadonly ariaLabel = input('Sidebar navigation');\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'flex flex-col gap-1';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgIcon } from '@ng-icons/core';\nimport { Badge } from '../badge/badge.component';\nimport { SidebarService } from './sidebar.service';\n\n/**\n * A navigation item within the sidebar.\n *\n * @example\n * ```html\n * <mcms-sidebar-nav-item\n * label=\"Dashboard\"\n * href=\"/dashboard\"\n * icon=\"heroSquares2x2\"\n * [active]=\"true\"\n * />\n *\n * <mcms-sidebar-nav-item\n * label=\"Notifications\"\n * href=\"/notifications\"\n * icon=\"heroBell\"\n * [badge]=\"5\"\n * />\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-nav-item',\n\timports: [NgTemplateOutlet, RouterLink, RouterLinkActive, Badge, NgIcon],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t@if (href()) {\n\t\t\t<a\n\t\t\t\t[routerLink]=\"href()\"\n\t\t\t\trouterLinkActive=\"bg-sidebar-accent text-sidebar-accent-foreground before:absolute before:left-0 before:top-1 before:bottom-1 before:w-1 before:bg-sidebar-primary before:rounded-full\"\n\t\t\t\t[routerLinkActiveOptions]=\"{ exact: exact() }\"\n\t\t\t\t[class]=\"linkClasses()\"\n\t\t\t\t[attr.aria-disabled]=\"disabled() || null\"\n\t\t\t\t[attr.tabindex]=\"disabled() ? -1 : 0\"\n\t\t\t\t(click)=\"handleNavigation()\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button type=\"button\" [class]=\"linkClasses()\" [disabled]=\"disabled()\" (click)=\"handleClick()\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t</button>\n\t\t}\n\n\t\t<ng-template #content>\n\t\t\t@if (icon()) {\n\t\t\t\t<ng-icon [name]=\"icon()!\" class=\"shrink-0\" size=\"20\" aria-hidden=\"true\" />\n\t\t\t}\n\t\t\t<span class=\"flex-1 truncate\">{{ label() }}</span>\n\t\t\t@if (badge() !== undefined) {\n\t\t\t\t<mcms-badge variant=\"secondary\" class=\"ml-auto\">{{ badge() }}</mcms-badge>\n\t\t\t}\n\t\t</ng-template>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarNavItem {\n\tprivate readonly sidebar = inject(SidebarService, { optional: true });\n\n\t/** Display label for the nav item. */\n\treadonly label = input.required<string>();\n\n\t/** Navigation URL. If not provided, renders as a button. */\n\treadonly href = input<string>();\n\n\t/** Icon name from ng-icons (e.g., 'heroSquares2x2', 'heroUsers'). */\n\treadonly icon = input<string>();\n\n\t/** Badge content to display. */\n\treadonly badge = input<string | number>();\n\n\t/** Whether this item is currently active. */\n\treadonly active = input(false);\n\n\t/** Whether this item is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Whether to match the route exactly. */\n\treadonly exact = input(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Emitted when the item is clicked (for non-link items). */\n\treadonly clicked = output<void>();\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block ${this.class()}`.trim();\n\t});\n\n\treadonly linkClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors w-full relative';\n\t\tconst interactive = this.disabled()\n\t\t\t? 'opacity-50 cursor-not-allowed'\n\t\t\t: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground';\n\t\tconst activeClass = this.active()\n\t\t\t? 'bg-sidebar-accent text-sidebar-accent-foreground before:absolute before:left-0 before:top-1 before:bottom-1 before:w-1 before:bg-sidebar-primary before:rounded-full'\n\t\t\t: '';\n\t\treturn `${base} ${interactive} ${activeClass}`.trim();\n\t});\n\n\thandleClick(): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.clicked.emit();\n\t\t}\n\t}\n\n\t/** Close mobile drawer when navigating */\n\thandleNavigation(): void {\n\t\tif (this.sidebar?.isMobile()) {\n\t\t\tthis.sidebar.setOpen(false);\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\n\n/**\n * A collapsible section within the sidebar navigation.\n *\n * @example\n * ```html\n * <mcms-sidebar-section title=\"Settings\" [collapsible]=\"true\">\n * <mcms-sidebar-nav-item label=\"Profile\" href=\"/settings/profile\" />\n * <mcms-sidebar-nav-item label=\"Security\" href=\"/settings/security\" />\n * </mcms-sidebar-section>\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-section',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t@if (title()) {\n\t\t\t@if (collapsible()) {\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"flex items-center justify-between w-full px-3 py-2 text-xs font-semibold uppercase tracking-wider text-sidebar-foreground/60 hover:text-sidebar-foreground transition-colors\"\n\t\t\t\t\t[attr.aria-expanded]=\"expanded()\"\n\t\t\t\t\t[attr.aria-label]=\"'Toggle ' + title() + ' section'\"\n\t\t\t\t\t(click)=\"toggle()\"\n\t\t\t\t>\n\t\t\t\t\t<span>{{ title() }}</span>\n\t\t\t\t\t<svg\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\tclass=\"transition-transform duration-200\"\n\t\t\t\t\t\t[class.rotate-180]=\"expanded()\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"m6 9 6 6 6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t} @else {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"px-3 py-2 text-xs font-semibold uppercase tracking-wider text-sidebar-foreground/60\"\n\t\t\t\t>\n\t\t\t\t\t{{ title() }}\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t\t@if (!collapsible() || expanded()) {\n\t\t\t<div class=\"flex flex-col gap-1\" [class.mt-1]=\"title()\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarSection {\n\t/** Section title. */\n\treadonly title = input<string>();\n\n\t/** Whether the section can be collapsed. */\n\treadonly collapsible = input(false);\n\n\t/** Whether the section is expanded (two-way binding). */\n\treadonly expanded = model(true);\n\n\t/** Emitted when the expanded state changes. */\n\treadonly expandedChange = output<boolean>();\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'block';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\ttoggle(): void {\n\t\tconst newValue = !this.expanded();\n\t\tthis.expanded.set(newValue);\n\t\tthis.expandedChange.emit(newValue);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject, input, computed } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { heroBars3, heroXMark } from '@ng-icons/heroicons/outline';\nimport { SidebarService } from './sidebar.service';\n\n/**\n * A trigger button that toggles the sidebar open/closed state.\n *\n * Shows a hamburger menu icon when sidebar is closed, and an X icon when open (mobile only).\n * Automatically connects to the SidebarService for state management.\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <mcms-sidebar-trigger />\n *\n * <!-- With custom classes -->\n * <mcms-sidebar-trigger class=\"text-foreground\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-sidebar-trigger',\n\timports: [NgIcon],\n\tproviders: [provideIcons({ heroBars3, heroXMark })],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"sidebar.toggle()\"\n\t\t\t[attr.aria-expanded]=\"sidebar.open()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\tclass=\"inline-flex items-center justify-center rounded-md p-2 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring transition-colors\"\n\t\t>\n\t\t\t<ng-icon [name]=\"iconName()\" size=\"24\" aria-hidden=\"true\" />\n\t\t</button>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarTrigger {\n\treadonly sidebar = inject(SidebarService);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Accessible label for the button. */\n\treadonly ariaLabel = computed(() => (this.sidebar.open() ? 'Close sidebar' : 'Open sidebar'));\n\n\t/** Icon to display based on sidebar state. */\n\treadonly iconName = computed(() =>\n\t\tthis.sidebar.isMobile() && this.sidebar.open() ? 'heroXMark' : 'heroBars3',\n\t);\n\n\treadonly hostClasses = computed(() => `${this.class()}`.trim());\n}\n","export type PaginationItem = number | 'ellipsis';\n\n/**\n * Generate pagination items with ellipsis for large page counts.\n */\nexport function generatePaginationItems(\n\tcurrentPage: number,\n\ttotalPages: number,\n\tsiblingCount = 1,\n): PaginationItem[] {\n\t// For small page counts, just return all pages\n\tconst totalPageNumbers = siblingCount * 2 + 5; // siblings + first + last + current + 2 ellipsis positions\n\tif (totalPages <= totalPageNumbers) {\n\t\treturn Array.from({ length: totalPages }, (_, i) => i + 1);\n\t}\n\n\tconst items: PaginationItem[] = [];\n\n\t// Always show first page\n\titems.push(1);\n\n\t// Calculate range around current page\n\tconst leftSibling = Math.max(2, currentPage - siblingCount);\n\tconst rightSibling = Math.min(totalPages - 1, currentPage + siblingCount);\n\n\t// Add left ellipsis if needed (when there's a gap between 1 and leftSibling)\n\tconst showLeftEllipsis = leftSibling > 2;\n\tif (showLeftEllipsis) {\n\t\titems.push('ellipsis');\n\t}\n\n\t// Add pages around current\n\tfor (let page = leftSibling; page <= rightSibling; page++) {\n\t\tif (page !== 1 && page !== totalPages) {\n\t\t\titems.push(page);\n\t\t}\n\t}\n\n\t// Add right ellipsis if needed (when there's a gap between rightSibling and last page)\n\tconst showRightEllipsis = rightSibling < totalPages - 1;\n\tif (showRightEllipsis) {\n\t\titems.push('ellipsis');\n\t}\n\n\t// Always show last page\n\titems.push(totalPages);\n\n\treturn items;\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { generatePaginationItems } from './pagination.types';\n\n/**\n * Pagination navigation component.\n *\n * @example\n * ```html\n * <mcms-pagination\n * [currentPage]=\"currentPage\"\n * [totalPages]=\"totalPages\"\n * (pageChange)=\"onPageChange($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'mcms-pagination',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'navigation',\n\t\t'aria-label': 'Pagination',\n\t},\n\ttemplate: `\n\t\t<ul class=\"flex flex-row items-center gap-1\">\n\t\t\t<!-- Previous button -->\n\t\t\t<li>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background text-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n\t\t\t\t\t[disabled]=\"currentPage() <= 1\"\n\t\t\t\t\t(click)=\"goToPage(currentPage() - 1)\"\n\t\t\t\t\taria-label=\"Go to previous page\"\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"m15 18-6-6 6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</li>\n\n\t\t\t<!-- Page numbers -->\n\t\t\t@for (item of paginationItems(); track $index) {\n\t\t\t\t<li>\n\t\t\t\t\t@if (item === 'ellipsis') {\n\t\t\t\t\t\t<span class=\"flex h-9 w-9 items-center justify-center\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t\t\t<circle cx=\"19\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t\t\t<circle cx=\"5\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"inline-flex h-9 w-9 items-center justify-center rounded-md text-sm transition-colors\"\n\t\t\t\t\t\t\t[class.border]=\"item !== currentPage()\"\n\t\t\t\t\t\t\t[class.border-input]=\"item !== currentPage()\"\n\t\t\t\t\t\t\t[class.bg-background]=\"item !== currentPage()\"\n\t\t\t\t\t\t\t[class.hover:bg-accent]=\"item !== currentPage()\"\n\t\t\t\t\t\t\t[class.hover:text-accent-foreground]=\"item !== currentPage()\"\n\t\t\t\t\t\t\t[class.bg-primary]=\"item === currentPage()\"\n\t\t\t\t\t\t\t[class.text-primary-foreground]=\"item === currentPage()\"\n\t\t\t\t\t\t\t[attr.aria-current]=\"item === currentPage() ? 'page' : null\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"'Go to page ' + item\"\n\t\t\t\t\t\t\t(click)=\"goToPage(item)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t}\n\t\t\t\t</li>\n\t\t\t}\n\n\t\t\t<!-- Next button -->\n\t\t\t<li>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background text-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n\t\t\t\t\t[disabled]=\"currentPage() >= totalPages()\"\n\t\t\t\t\t(click)=\"goToPage(currentPage() + 1)\"\n\t\t\t\t\taria-label=\"Go to next page\"\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"m9 18 6-6-6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</ul>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Pagination {\n\t/** Current active page (1-indexed). */\n\treadonly currentPage = input.required<number>();\n\n\t/** Total number of pages. */\n\treadonly totalPages = input.required<number>();\n\n\t/** Number of siblings to show on each side of current page. */\n\treadonly siblingCount = input(1);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Emitted when page changes. */\n\treadonly pageChange = output<number>();\n\n\treadonly paginationItems = computed(() =>\n\t\tgeneratePaginationItems(this.currentPage(), this.totalPages(), this.siblingCount()),\n\t);\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `mx-auto flex w-full justify-center ${this.class()}`.trim();\n\t});\n\n\tgoToPage(page: number): void {\n\t\tif (page >= 1 && page <= this.totalPages() && page !== this.currentPage()) {\n\t\t\tthis.pageChange.emit(page);\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Tabs as NgTabs } from '@angular/aria/tabs';\n\n/**\n * Tabs container component.\n *\n * @example\n * ```html\n * <mcms-tabs>\n * <mcms-tabs-list [(selectedTab)]=\"selectedTab\">\n * <mcms-tabs-trigger value=\"tab1\">Tab 1</mcms-tabs-trigger>\n * <mcms-tabs-trigger value=\"tab2\">Tab 2</mcms-tabs-trigger>\n * </mcms-tabs-list>\n * <mcms-tabs-content value=\"tab1\">Content 1</mcms-tabs-content>\n * <mcms-tabs-content value=\"tab2\">Content 2</mcms-tabs-content>\n * </mcms-tabs>\n * ```\n */\n@Component({\n\tselector: 'mcms-tabs',\n\thostDirectives: [NgTabs],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { TabList } from '@angular/aria/tabs';\nimport type { TabsOrientation, TabsSelectionMode } from './tabs.types';\n\n/**\n * Tabs list container for tab triggers.\n *\n * @example\n * ```html\n * <mcms-tabs-list [(selectedTab)]=\"selectedTab\" orientation=\"horizontal\">\n * <mcms-tabs-trigger value=\"tab1\">Tab 1</mcms-tabs-trigger>\n * <mcms-tabs-trigger value=\"tab2\">Tab 2</mcms-tabs-trigger>\n * </mcms-tabs-list>\n * ```\n */\n@Component({\n\tselector: 'mcms-tabs-list',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: TabList,\n\t\t\tinputs: ['orientation', 'selectionMode', 'selectedTab', 'disabled', 'wrap'],\n\t\t\toutputs: ['selectedTabChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsList {\n\t/** Orientation of the tab list. */\n\treadonly orientation = input<TabsOrientation>('horizontal');\n\n\t/** Selection mode: 'follow' auto-selects on focus, 'explicit' requires Enter/Space. */\n\treadonly selectionMode = input<TabsSelectionMode>('follow');\n\n\t/** The currently selected tab value. */\n\treadonly selectedTab = model<string>();\n\n\t/** Whether the tab list is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation should wrap at edges. */\n\treadonly wrap = input(true);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'inline-flex items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground';\n\t\tconst orientationClasses = this.orientation() === 'vertical' ? 'flex-col h-auto' : 'h-9';\n\n\t\treturn `${base} ${orientationClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Tab } from '@angular/aria/tabs';\n\n/**\n * Individual tab trigger button.\n *\n * @example\n * ```html\n * <mcms-tabs-trigger value=\"tab1\">Tab 1</mcms-tabs-trigger>\n * <mcms-tabs-trigger value=\"tab2\" [disabled]=\"true\">Disabled Tab</mcms-tabs-trigger>\n * ```\n */\n@Component({\n\tselector: 'mcms-tabs-trigger',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: Tab,\n\t\t\tinputs: ['value', 'disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsTrigger {\n\tprivate readonly tab = inject(Tab);\n\n\t/** Unique value identifying this tab. */\n\treadonly value = input.required<string>();\n\n\t/** Whether the tab is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50';\n\t\tconst selectedClasses = this.tab.selected() ? 'bg-background text-foreground shadow' : '';\n\n\t\treturn `${base} ${selectedClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { TabPanel } from '@angular/aria/tabs';\n\n/**\n * Tab content panel.\n *\n * @example\n * ```html\n * <mcms-tabs-content value=\"tab1\">\n * <p>Content for tab 1</p>\n * </mcms-tabs-content>\n * ```\n */\n@Component({\n\tselector: 'mcms-tabs-content',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: TabPanel,\n\t\t\tinputs: ['value'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[hidden]': '!tabPanel.visible()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsContent {\n\treadonly tabPanel = inject(TabPanel);\n\n\t/** Unique value identifying this panel (must match a tab's value). */\n\treadonly value = input.required<string>();\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { AccordionGroup } from '@angular/aria/accordion';\n\n/**\n * Accordion root component that wraps accordion items.\n *\n * @example\n * ```html\n * <mcms-accordion>\n * <mcms-accordion-item>\n * <mcms-accordion-trigger panelId=\"item1\">Section 1</mcms-accordion-trigger>\n * <mcms-accordion-content panelId=\"item1\">\n * Content for section 1\n * </mcms-accordion-content>\n * </mcms-accordion-item>\n * </mcms-accordion>\n * ```\n */\n@Component({\n\tselector: 'mcms-accordion',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AccordionGroup,\n\t\t\tinputs: ['disabled', 'multiExpandable', 'wrap'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n\t/** Whether multiple items can be expanded at once. */\n\treadonly multiExpandable = input(false);\n\n\t/** Whether the accordion is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Whether keyboard navigation should wrap. */\n\treadonly wrap = input(true);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Accordion item wrapper component.\n * Contains an accordion trigger and its corresponding content panel.\n *\n * @example\n * ```html\n * <mcms-accordion-item>\n * <mcms-accordion-trigger panelId=\"item1\">Section Title</mcms-accordion-trigger>\n * <mcms-accordion-content panelId=\"item1\">\n * <p>Section content goes here</p>\n * </mcms-accordion-content>\n * </mcms-accordion-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-accordion-item',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItem {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `block border-b ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { AccordionTrigger as AriaAccordionTrigger } from '@angular/aria/accordion';\n\n/**\n * Accordion trigger button that toggles the visibility of its panel.\n *\n * @example\n * ```html\n * <mcms-accordion-trigger panelId=\"item1\">\n * Section Title\n * </mcms-accordion-trigger>\n * ```\n */\n@Component({\n\tselector: 'mcms-accordion-trigger',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaAccordionTrigger,\n\t\t\tinputs: ['panelId', 'disabled', 'expanded'],\n\t\t\toutputs: ['expandedChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<ng-content />\n\t\t<svg\n\t\t\t[class]=\"iconClasses()\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\twidth=\"24\"\n\t\t\theight=\"24\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstroke-width=\"2\"\n\t\t\tstroke-linecap=\"round\"\n\t\t\tstroke-linejoin=\"round\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path d=\"m6 9 6 6 6-6\" />\n\t\t</svg>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionTrigger {\n\treadonly trigger = inject(AriaAccordionTrigger);\n\n\t/** Unique identifier to match with the corresponding panel. */\n\treadonly panelId = input.required<string>();\n\n\t/** Whether the trigger is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Whether the panel is expanded. */\n\treadonly expanded = model(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left w-full';\n\t\tconst disabledClasses = this.disabled() ? 'opacity-50 cursor-not-allowed' : '';\n\n\t\treturn `${base} ${disabledClasses} ${this.class()}`.trim();\n\t});\n\n\treadonly iconClasses = computed(() => {\n\t\tconst base = 'h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200';\n\t\tconst expandedClasses = this.trigger.expanded() ? 'rotate-180' : '';\n\n\t\treturn `${base} ${expandedClasses}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AccordionPanel, AccordionContent as AriaAccordionContent } from '@angular/aria/accordion';\n\n/**\n * Accordion content panel that shows/hides based on trigger state.\n *\n * @example\n * ```html\n * <mcms-accordion-content panelId=\"item1\">\n * <p>This content is shown when the accordion item is expanded.</p>\n * </mcms-accordion-content>\n * ```\n */\n@Component({\n\tselector: 'mcms-accordion-content',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AccordionPanel,\n\t\t\tinputs: ['panelId'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[hidden]': '!panel.visible()',\n\t},\n\ttemplate: `\n\t\t<ng-template ngAccordionContent>\n\t\t\t<div [class]=\"contentClasses()\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</ng-template>\n\t`,\n\timports: [AriaAccordionContent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionContent {\n\treadonly panel = inject(AccordionPanel);\n\n\t/** Unique identifier to match with the corresponding trigger. */\n\treadonly panelId = input.required<string>();\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `overflow-hidden text-sm ${this.class()}`.trim();\n\t});\n\n\treadonly contentClasses = computed(() => {\n\t\treturn 'pb-4 pt-0';\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Grid } from '@angular/aria/grid';\nimport type { TableFocusMode, TableSelectionMode, TableWrapMode } from './table.types';\n\n/**\n * Table component with keyboard navigation and selection support.\n *\n * @example\n * ```html\n * <mcms-table>\n * <mcms-table-header>\n * <mcms-table-row>\n * <mcms-table-head>Name</mcms-table-head>\n * <mcms-table-head>Status</mcms-table-head>\n * </mcms-table-row>\n * </mcms-table-header>\n * <mcms-table-body>\n * <mcms-table-row>\n * <mcms-table-cell>John</mcms-table-cell>\n * <mcms-table-cell>Active</mcms-table-cell>\n * </mcms-table-row>\n * </mcms-table-body>\n * </mcms-table>\n * ```\n */\n@Component({\n\tselector: 'mcms-table',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: Grid,\n\t\t\tinputs: [\n\t\t\t\t'enableSelection',\n\t\t\t\t'disabled',\n\t\t\t\t'focusMode',\n\t\t\t\t'rowWrap',\n\t\t\t\t'colWrap',\n\t\t\t\t'multi',\n\t\t\t\t'selectionMode',\n\t\t\t\t'enableRangeSelection',\n\t\t\t],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'grid',\n\t},\n\ttemplate: `\n\t\t<table role=\"none\" [class]=\"tableClasses()\">\n\t\t\t<ng-content />\n\t\t</table>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table {\n\t/** Whether selection is enabled. */\n\treadonly enableSelection = input(false);\n\n\t/** Whether the table is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Focus mode for keyboard navigation. */\n\treadonly focusMode = input<TableFocusMode>('roving');\n\n\t/** Row wrap behavior. */\n\treadonly rowWrap = input<TableWrapMode>('nowrap');\n\n\t/** Column wrap behavior. */\n\treadonly colWrap = input<TableWrapMode>('nowrap');\n\n\t/** Whether multiple cells can be selected. */\n\treadonly multi = input(false);\n\n\t/** Selection mode. */\n\treadonly selectionMode = input<TableSelectionMode>('explicit');\n\n\t/** Whether range selection is enabled. */\n\treadonly enableRangeSelection = input(false);\n\n\t/** Additional CSS classes for the wrapper. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `relative w-full overflow-auto ${this.class()}`.trim();\n\t});\n\n\treadonly tableClasses = computed(() => {\n\t\treturn 'w-full caption-bottom text-sm';\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Table header (thead) component.\n *\n * @example\n * ```html\n * <mcms-table-header>\n * <mcms-table-row>\n * <mcms-table-head>Column 1</mcms-table-head>\n * </mcms-table-row>\n * </mcms-table-header>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-header, thead[mcms-table-header]',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[style.display]': '\"table-header-group\"',\n\t\trole: 'rowgroup',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-header-group;\n\t\t}\n\t\t:host ::ng-deep mcms-table-row {\n\t\t\tborder-bottom: 1px solid hsl(var(--mcms-border));\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableHeader {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `[&_tr]:border-b ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Table body (tbody) component.\n *\n * @example\n * ```html\n * <mcms-table-body>\n * <mcms-table-row>\n * <mcms-table-cell>Cell content</mcms-table-cell>\n * </mcms-table-row>\n * </mcms-table-body>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-body',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'rowgroup',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-row-group;\n\t\t}\n\t\t:host ::ng-deep mcms-table-row:last-child {\n\t\t\tborder-bottom: none;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableBody {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `[&_tr:last-child]:border-0 ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { GridRow } from '@angular/aria/grid';\n\n/**\n * Table row (tr) component with keyboard navigation support.\n *\n * @example\n * ```html\n * <mcms-table-row>\n * <mcms-table-cell>Cell 1</mcms-table-cell>\n * <mcms-table-cell>Cell 2</mcms-table-cell>\n * </mcms-table-row>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-row',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: GridRow,\n\t\t\tinputs: ['rowIndex'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'row',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-row;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableRow {\n\t/** The row index within the grid. */\n\treadonly rowIndex = input<number>();\n\n\t/** Whether this row is selected. */\n\treadonly selected = input(false);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'border-b transition-colors hover:bg-muted/50';\n\t\tconst selectedClasses = this.selected() ? 'bg-muted' : '';\n\n\t\treturn `${base} ${selectedClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { GridCell } from '@angular/aria/grid';\n\n/**\n * Table header cell (th) component.\n *\n * Usage: Provide role=\"columnheader\" when using in table headers.\n *\n * @example\n * ```html\n * <mcms-table-head role=\"columnheader\">Column Name</mcms-table-head>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-head',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: GridCell,\n\t\t\tinputs: ['disabled', 'colSpan', 'rowSpan'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[attr.role]': '\"columnheader\"',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-cell;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableHead {\n\t/** Whether this column is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Number of columns to span. */\n\treadonly colSpan = input(1);\n\n\t/** Number of rows to span. */\n\treadonly rowSpan = input(1);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>mcms-checkbox]:translate-y-[2px]';\n\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { GridCell } from '@angular/aria/grid';\n\n/**\n * Table data cell (td) component with selection support.\n *\n * @example\n * ```html\n * <mcms-table-cell>Cell content</mcms-table-cell>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-cell',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: GridCell,\n\t\t\tinputs: ['disabled', 'selected', 'colSpan', 'rowSpan'],\n\t\t\toutputs: ['selectedChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'gridcell',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-cell;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableCell {\n\t/** Whether this cell is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Whether this cell is selected. */\n\treadonly selected = model(false);\n\n\t/** Number of columns to span. */\n\treadonly colSpan = input(1);\n\n\t/** Number of rows to span. */\n\treadonly rowSpan = input(1);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>mcms-checkbox]:translate-y-[2px]';\n\t\tconst selectedClasses = this.selected() ? 'bg-primary/10' : '';\n\n\t\treturn `${base} ${selectedClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Table caption component.\n *\n * @example\n * ```html\n * <mcms-table>\n * <mcms-table-caption>List of users</mcms-table-caption>\n * <!-- ... -->\n * </mcms-table>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-caption',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-caption;\n\t\t\tcaption-side: bottom;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableCaption {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `mt-4 text-sm text-muted-foreground ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Table footer (tfoot) component.\n *\n * @example\n * ```html\n * <mcms-table-footer>\n * <mcms-table-row>\n * <mcms-table-cell>Total</mcms-table-cell>\n * <mcms-table-cell>$1,000</mcms-table-cell>\n * </mcms-table-row>\n * </mcms-table-footer>\n * ```\n */\n@Component({\n\tselector: 'mcms-table-footer',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: table-footer-group;\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableFooter {\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\treadonly hostClasses = computed(() => {\n\t\treturn `border-t bg-muted/50 font-medium [&>tr]:last:border-b-0 ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { EmptyStateSize } from './empty-state.types';\n\n/**\n * Empty state component for displaying placeholder content when there is no data.\n *\n * @example\n * ```html\n * <mcms-empty-state title=\"No results found\" description=\"Try adjusting your search criteria\">\n * <svg mcms-empty-state-icon>...</svg>\n * <button mcms-empty-state-action mcms-button>Create New</button>\n * </mcms-empty-state>\n * ```\n */\n@Component({\n\tselector: 'mcms-empty-state',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'status',\n\t},\n\ttemplate: `\n\t\t<div class=\"mb-4\">\n\t\t\t<ng-content select=\"[mcms-empty-state-icon]\" />\n\t\t</div>\n\t\t@if (title()) {\n\t\t\t<h3 [class]=\"titleClasses()\">{{ title() }}</h3>\n\t\t}\n\t\t@if (description()) {\n\t\t\t<p [class]=\"descriptionClasses()\">{{ description() }}</p>\n\t\t}\n\t\t<ng-content select=\"[mcms-empty-state-description]\" />\n\t\t<div class=\"mt-6\">\n\t\t\t<ng-content select=\"[mcms-empty-state-action]\" />\n\t\t</div>\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n\t/** Title text to display */\n\treadonly title = input<string>();\n\n\t/** Description text to display */\n\treadonly description = input<string>();\n\n\t/** Size variant */\n\treadonly size = input<EmptyStateSize>('md');\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'flex flex-col items-center justify-center text-center';\n\t\tconst paddingClasses = this.getPaddingClasses();\n\t\treturn `${base} ${paddingClasses} ${this.class()}`.trim();\n\t});\n\n\tprotected readonly titleClasses = computed(() => {\n\t\tconst base = 'font-semibold text-foreground';\n\t\tconst sizeClasses = this.getTitleSizeClasses();\n\t\treturn `${base} ${sizeClasses}`.trim();\n\t});\n\n\tprotected readonly descriptionClasses = computed(() => {\n\t\tconst base = 'text-muted-foreground mt-2';\n\t\tconst sizeClasses = this.getDescriptionSizeClasses();\n\t\treturn `${base} ${sizeClasses}`.trim();\n\t});\n\n\tprivate getPaddingClasses(): string {\n\t\tconst paddingMap: Record<EmptyStateSize, string> = {\n\t\t\tsm: 'p-6',\n\t\t\tmd: 'p-8',\n\t\t\tlg: 'p-12',\n\t\t};\n\t\treturn paddingMap[this.size()];\n\t}\n\n\tprivate getTitleSizeClasses(): string {\n\t\tconst sizeMap: Record<EmptyStateSize, string> = {\n\t\t\tsm: 'text-base',\n\t\t\tmd: 'text-lg',\n\t\t\tlg: 'text-xl',\n\t\t};\n\t\treturn sizeMap[this.size()];\n\t}\n\n\tprivate getDescriptionSizeClasses(): string {\n\t\tconst sizeMap: Record<EmptyStateSize, string> = {\n\t\t\tsm: 'text-sm max-w-sm',\n\t\t\tmd: 'text-sm max-w-md',\n\t\t\tlg: 'text-base max-w-lg',\n\t\t};\n\t\treturn sizeMap[this.size()];\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tmodel,\n\toutput,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * A search input component with debounce support and clear functionality.\n *\n * @example\n * ```html\n * <mcms-search-input\n * placeholder=\"Search users...\"\n * [debounce]=\"300\"\n * (searchChange)=\"onSearch($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'mcms-search-input',\n\timports: [],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"flex items-center gap-2 h-10 w-full rounded-md border border-input bg-background px-3 text-sm focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\"\n\t\t\t[class.opacity-50]=\"disabled()\"\n\t\t\t[class.cursor-not-allowed]=\"disabled()\"\n\t\t>\n\t\t\t<!-- Search icon -->\n\t\t\t<svg\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\tclass=\"shrink-0 text-muted-foreground\"\n\t\t\t>\n\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t\t<path d=\"m21 21-4.3-4.3\" />\n\t\t\t</svg>\n\n\t\t\t<!-- Native input (no border, fills remaining space) -->\n\t\t\t<input\n\t\t\t\t#inputEl\n\t\t\t\ttype=\"text\"\n\t\t\t\t[value]=\"value()\"\n\t\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t(input)=\"value.set(inputEl.value)\"\n\t\t\t\t(keydown.escape)=\"onClear()\"\n\t\t\t\tclass=\"flex-1 bg-transparent outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n\t\t\t/>\n\n\t\t\t<!-- Clear button (44x44px touch target for mobile accessibility) -->\n\t\t\t@if (value() && !disabled()) {\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"-mr-1 p-1 rounded-sm text-muted-foreground hover:text-foreground transition-colors touch-manipulation\"\n\t\t\t\t\t(click)=\"onClear()\"\n\t\t\t\t\t[attr.aria-label]=\"'Clear search'\"\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"14\"\n\t\t\t\t\t\theight=\"14\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t}\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchInput {\n\tprivate readonly document = inject(DOCUMENT);\n\n\t/** The current search value (two-way binding). */\n\treadonly value = model('');\n\n\t/** Placeholder text. */\n\treadonly placeholder = input('Search...');\n\n\t/** Debounce time in milliseconds before emitting search event. */\n\treadonly debounce = input(300);\n\n\t/** Whether the input is disabled. */\n\treadonly disabled = input(false);\n\n\t/** Accessible label for the search input. */\n\treadonly ariaLabel = input('Search');\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Emitted after debounce when search value changes. */\n\treadonly searchChange = output<string>();\n\n\t/** Emitted when the clear button is clicked. */\n\treadonly clear = output<void>();\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'block';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\tprivate debounceTimer: number | null = null;\n\n\tconstructor() {\n\t\t// Effect to handle debounced search\n\t\teffect(() => {\n\t\t\tconst value = this.value();\n\t\t\tconst debounceMs = this.debounce();\n\n\t\t\tif (this.debounceTimer) {\n\t\t\t\tclearTimeout(this.debounceTimer);\n\t\t\t}\n\n\t\t\tthis.debounceTimer =\n\t\t\t\tthis.document.defaultView?.setTimeout(() => {\n\t\t\t\t\tthis.searchChange.emit(value);\n\t\t\t\t}, debounceMs) ?? null;\n\t\t});\n\t}\n\n\tonClear(): void {\n\t\tthis.value.set('');\n\t\tthis.clear.emit();\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinput,\n\tmodel,\n\toutput,\n} from '@angular/core';\nimport type {\n\tDataTableColumn,\n\tDataTableRowAction,\n\tDataTableRowActionEvent,\n\tDataTableSort,\n} from './data-table.types';\nimport { Table } from '../table/table.component';\nimport { TableHeader } from '../table/table-header.component';\nimport { TableBody } from '../table/table-body.component';\nimport { TableRow } from '../table/table-row.component';\nimport { TableHead } from '../table/table-head.component';\nimport { TableCell } from '../table/table-cell.component';\nimport { Checkbox } from '../checkbox/checkbox.component';\nimport { Skeleton } from '../skeleton/skeleton.component';\nimport { EmptyState } from '../empty-state/empty-state.component';\nimport { Pagination } from '../pagination/pagination.component';\nimport { SearchInput } from '../search-input/search-input.component';\nimport { Button } from '../button/button.component';\nimport { DropdownTrigger } from '../dropdown-menu/dropdown-trigger.directive';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu.component';\nimport { DropdownMenuItem } from '../dropdown-menu/dropdown-menu-item.component';\n\n/**\n * A feature-rich data table component with search, sorting, pagination, and selection.\n *\n * @example\n * ```html\n * <mcms-data-table\n * [data]=\"users\"\n * [columns]=\"columns\"\n * [searchable]=\"true\"\n * [selectable]=\"true\"\n * [paginated]=\"true\"\n * (rowClick)=\"onRowClick($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'mcms-data-table',\n\timports: [\n\t\tNgTemplateOutlet,\n\t\tTable,\n\t\tTableHeader,\n\t\tTableBody,\n\t\tTableRow,\n\t\tTableHead,\n\t\tTableCell,\n\t\tCheckbox,\n\t\tSkeleton,\n\t\tEmptyState,\n\t\tPagination,\n\t\tSearchInput,\n\t\tButton,\n\t\tDropdownTrigger,\n\t\tDropdownMenu,\n\t\tDropdownMenuItem,\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<!-- Toolbar with search -->\n\t\t@if (searchable() || hasToolbarSlot) {\n\t\t\t<div class=\"flex items-center justify-between gap-4 mb-4\">\n\t\t\t\t@if (searchable()) {\n\t\t\t\t\t<mcms-search-input\n\t\t\t\t\t\t[(value)]=\"searchQuery\"\n\t\t\t\t\t\t[placeholder]=\"searchPlaceholder()\"\n\t\t\t\t\t\t(searchChange)=\"onSearchChange($event)\"\n\t\t\t\t\t\tclass=\"w-full max-w-sm\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t<ng-content select=\"[mcmsDataTableToolbar]\" />\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Table container -->\n\t\t<div class=\"rounded-lg border border-border overflow-x-auto\">\n\t\t\t@if (loading()) {\n\t\t\t\t<!-- Loading state -->\n\t\t\t\t<mcms-table class=\"min-w-max\">\n\t\t\t\t\t<mcms-table-header>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t@if (selectable()) {\n\t\t\t\t\t\t\t\t<mcms-table-head class=\"w-12\">\n\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t</mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@for (col of columns(); track col.field) {\n\t\t\t\t\t\t\t\t<mcms-table-head [style.width]=\"col.width\" [style.min-width]=\"col.minWidth || '100px'\">\n\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-20\" />\n\t\t\t\t\t\t\t\t</mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (rowActions().length > 0) {\n\t\t\t\t\t\t\t\t<mcms-table-head class=\"w-12\"></mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t</mcms-table-header>\n\t\t\t\t\t<mcms-table-body>\n\t\t\t\t\t\t@for (i of skeletonRows; track i) {\n\t\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t\t@if (selectable()) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell>\n\t\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@for (col of columns(); track col.field) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell>\n\t\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-full\" />\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@if (rowActions().length > 0) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell>\n\t\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-8\" />\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mcms-table-body>\n\t\t\t\t</mcms-table>\n\t\t\t} @else if (displayData().length === 0) {\n\t\t\t\t<!-- Empty state -->\n\t\t\t\t<div class=\"p-8\">\n\t\t\t\t\t<mcms-empty-state [title]=\"emptyTitle()\" [description]=\"emptyDescription()\" icon=\"inbox\">\n\t\t\t\t\t\t<ng-content select=\"[mcmsDataTableEmpty]\" />\n\t\t\t\t\t</mcms-empty-state>\n\t\t\t\t</div>\n\t\t\t} @else {\n\t\t\t\t<!-- Data table -->\n\t\t\t\t<mcms-table class=\"min-w-max\">\n\t\t\t\t\t<mcms-table-header>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t@if (selectable()) {\n\t\t\t\t\t\t\t\t<mcms-table-head class=\"w-12\">\n\t\t\t\t\t\t\t\t\t<mcms-checkbox\n\t\t\t\t\t\t\t\t\t\t[value]=\"allSelected()\"\n\t\t\t\t\t\t\t\t\t\t[indeterminate]=\"someSelected()\"\n\t\t\t\t\t\t\t\t\t\t[ariaLabel]=\"'Select all rows'\"\n\t\t\t\t\t\t\t\t\t\t(valueChange)=\"toggleSelectAll()\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@for (col of columns(); track col.field) {\n\t\t\t\t\t\t\t\t<mcms-table-head\n\t\t\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth || '100px'\"\n\t\t\t\t\t\t\t\t\t[style.text-align]=\"col.align || 'left'\"\n\t\t\t\t\t\t\t\t\t[class.cursor-pointer]=\"col.sortable && sortable()\"\n\t\t\t\t\t\t\t\t\t[class.select-none]=\"col.sortable && sortable()\"\n\t\t\t\t\t\t\t\t\t[attr.aria-sort]=\"col.sortable && sortable() ? (sort()?.field === col.field ? (sort()?.direction === 'asc' ? 'ascending' : 'descending') : 'none') : null\"\n\t\t\t\t\t\t\t\t\t[attr.tabindex]=\"col.sortable && sortable() ? 0 : null\"\n\t\t\t\t\t\t\t\t\t(click)=\"col.sortable && sortable() && toggleSort(col.field)\"\n\t\t\t\t\t\t\t\t\t(keydown.enter)=\"col.sortable && sortable() && toggleSort(col.field)\"\n\t\t\t\t\t\t\t\t\t(keydown.space)=\"col.sortable && sortable() && toggleSort(col.field); $event.preventDefault()\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t<span>{{ col.header }}</span>\n\t\t\t\t\t\t\t\t\t\t@if (col.sortable && sortable() && sort()?.field === col.field) {\n\t\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\twidth=\"14\"\n\t\t\t\t\t\t\t\t\t\t\t\theight=\"14\"\n\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.rotate-180]=\"sort()?.direction === 'desc'\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"transition-transform\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"m18 15-6-6-6 6\" />\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (rowActions().length > 0) {\n\t\t\t\t\t\t\t\t<mcms-table-head class=\"w-12\"></mcms-table-head>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t</mcms-table-header>\n\t\t\t\t\t<mcms-table-body>\n\t\t\t\t\t\t@for (item of displayData(); track trackByFn()(item); let idx = $index) {\n\t\t\t\t\t\t\t<mcms-table-row\n\t\t\t\t\t\t\t\t[class.bg-muted/50]=\"isSelected(item)\"\n\t\t\t\t\t\t\t\t[class.cursor-pointer]=\"clickableRows()\"\n\t\t\t\t\t\t\t\t(click)=\"onRowClicked(item)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t@if (selectable()) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell (click)=\"$event.stopPropagation()\">\n\t\t\t\t\t\t\t\t\t\t<mcms-checkbox\n\t\t\t\t\t\t\t\t\t\t\t[value]=\"isSelected(item)\"\n\t\t\t\t\t\t\t\t\t\t\t[ariaLabel]=\"'Select row ' + (idx + 1)\"\n\t\t\t\t\t\t\t\t\t\t\t(valueChange)=\"toggleSelect(item)\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@for (col of columns(); track col.field) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell [style.text-align]=\"col.align || 'left'\">\n\t\t\t\t\t\t\t\t\t\t@if (col.template) {\n\t\t\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t\t\t*ngTemplateOutlet=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.template;\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$implicit: getCellValue(item, col.field),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: col,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex: idx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t{{ renderCell(item, col) }}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@if (rowActions().length > 0) {\n\t\t\t\t\t\t\t\t\t<mcms-table-cell (click)=\"$event.stopPropagation()\">\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tmcms-button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Row actions\"\n\t\t\t\t\t\t\t\t\t\t\t[mcmsDropdownTrigger]=\"rowActionsMenu\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"5\" r=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"19\" r=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t<ng-template #rowActionsMenu>\n\t\t\t\t\t\t\t\t\t\t\t<mcms-dropdown-menu>\n\t\t\t\t\t\t\t\t\t\t\t\t@for (action of getVisibleActions(item); track action.id) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmcms-dropdown-item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[value]=\"action.id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"isActionDisabled(item, action)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionClick(item, action)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ action.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</mcms-dropdown-menu>\n\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t</mcms-table-cell>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mcms-table-body>\n\t\t\t\t</mcms-table>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Pagination -->\n\t\t@if (paginated() && !loading() && totalPages() > 1) {\n\t\t\t<div class=\"flex items-center justify-between mt-4\">\n\t\t\t\t<span class=\"text-sm text-muted-foreground\">\n\t\t\t\t\tShowing {{ paginationStart() }}-{{ paginationEnd() }} of {{ computedTotalItems() }}\n\t\t\t\t</span>\n\t\t\t\t<mcms-pagination\n\t\t\t\t\t[currentPage]=\"currentPage()\"\n\t\t\t\t\t[totalPages]=\"totalPages()\"\n\t\t\t\t\t(pageChange)=\"onPageChanged($event)\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t}\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTable<T = unknown> {\n\t// Data inputs\n\treadonly data = input.required<T[]>();\n\treadonly columns = input.required<DataTableColumn<T>[]>();\n\treadonly loading = input(false);\n\n\t// Search\n\treadonly searchable = input(true);\n\treadonly searchPlaceholder = input('Search...');\n\treadonly searchFields = input<(keyof T | string)[]>([]);\n\n\t// Sort\n\treadonly sortable = input(true);\n\treadonly sort = model<DataTableSort<T> | undefined>(undefined);\n\n\t// Selection\n\treadonly selectable = input(false);\n\treadonly selectedItems = model<T[]>([]);\n\n\t// Pagination\n\treadonly paginated = input(true);\n\treadonly pageSize = input(10);\n\treadonly pageSizeOptions = input([10, 25, 50, 100]);\n\treadonly currentPage = model(1);\n\treadonly totalItems = input<number | undefined>(undefined);\n\n\t// Empty state\n\treadonly emptyTitle = input('No data');\n\treadonly emptyDescription = input('');\n\n\t// Row interactions\n\treadonly clickableRows = input(false);\n\treadonly rowActions = input<DataTableRowAction<T>[]>([]);\n\treadonly trackByFn = input<(item: T) => unknown>((item) => item);\n\n\t// Additional CSS classes\n\treadonly class = input('');\n\n\t// Outputs\n\treadonly searchChange = output<string>();\n\treadonly sortChange = output<DataTableSort<T> | undefined>();\n\treadonly selectionChange = output<T[]>();\n\treadonly pageChange = output<number>();\n\treadonly pageSizeChange = output<number>();\n\treadonly rowClick = output<T>();\n\treadonly rowAction = output<DataTableRowActionEvent<T>>();\n\n\t/** Search query (two-way bindable for parent control) */\n\treadonly searchQuery = model('');\n\treadonly hasToolbarSlot = false; // Will be set via content projection\n\n\t// Skeleton rows for loading state\n\treadonly skeletonRows = [1, 2, 3, 4, 5];\n\n\t// Computed values\n\treadonly hostClasses = computed(() => {\n\t\treturn `block ${this.class()}`.trim();\n\t});\n\n\treadonly filteredData = computed(() => {\n\t\tconst data = this.data();\n\t\tconst query = this.searchQuery().toLowerCase().trim();\n\n\t\tif (!query || !this.searchable()) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst fields =\n\t\t\tthis.searchFields().length > 0 ? this.searchFields() : this.columns().map((c) => c.field);\n\n\t\treturn data.filter((item) =>\n\t\t\tfields.some((field) => {\n\t\t\t\tconst value = this.getCellValue(item, field);\n\t\t\t\treturn String(value).toLowerCase().includes(query);\n\t\t\t}),\n\t\t);\n\t});\n\n\treadonly sortedData = computed(() => {\n\t\tconst data = this.filteredData();\n\t\tconst sortState = this.sort();\n\n\t\tif (!sortState || !this.sortable()) {\n\t\t\treturn data;\n\t\t}\n\n\t\treturn [...data].sort((a, b) => {\n\t\t\tconst aVal = this.getCellValue(a, sortState.field);\n\t\t\tconst bVal = this.getCellValue(b, sortState.field);\n\n\t\t\tlet comparison = 0;\n\t\t\tif (aVal === null || aVal === undefined) comparison = 1;\n\t\t\telse if (bVal === null || bVal === undefined) comparison = -1;\n\t\t\telse if (typeof aVal === 'string' && typeof bVal === 'string') {\n\t\t\t\tcomparison = aVal.localeCompare(bVal);\n\t\t\t} else if (typeof aVal === 'number' && typeof bVal === 'number') {\n\t\t\t\tcomparison = aVal - bVal;\n\t\t\t} else {\n\t\t\t\tcomparison = String(aVal).localeCompare(String(bVal));\n\t\t\t}\n\n\t\t\treturn sortState.direction === 'desc' ? -comparison : comparison;\n\t\t});\n\t});\n\n\treadonly displayData = computed(() => {\n\t\tconst data = this.sortedData();\n\n\t\tif (!this.paginated()) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst page = this.currentPage();\n\t\tconst size = this.pageSize();\n\t\tconst start = (page - 1) * size;\n\t\treturn data.slice(start, start + size);\n\t});\n\n\treadonly computedTotalItems = computed(() => {\n\t\treturn this.totalItems() ?? this.filteredData().length;\n\t});\n\n\treadonly totalPages = computed(() => {\n\t\treturn Math.ceil(this.computedTotalItems() / this.pageSize());\n\t});\n\n\treadonly paginationStart = computed(() => {\n\t\treturn (this.currentPage() - 1) * this.pageSize() + 1;\n\t});\n\n\treadonly paginationEnd = computed(() => {\n\t\treturn Math.min(this.currentPage() * this.pageSize(), this.computedTotalItems());\n\t});\n\n\treadonly allSelected = computed(() => {\n\t\tconst data = this.displayData();\n\t\tconst selected = this.selectedItems();\n\t\treturn data.length > 0 && data.every((item) => selected.includes(item));\n\t});\n\n\treadonly someSelected = computed(() => {\n\t\tconst data = this.displayData();\n\t\tconst selected = this.selectedItems();\n\t\tconst selectedCount = data.filter((item) => selected.includes(item)).length;\n\t\treturn selectedCount > 0 && selectedCount < data.length;\n\t});\n\n\tconstructor() {\n\t\t// Reset to page 1 when search changes\n\t\teffect(() => {\n\t\t\tthis.searchQuery();\n\t\t\tthis.currentPage.set(1);\n\t\t});\n\t}\n\n\tgetCellValue(item: T, field: keyof T | string): unknown {\n\t\tif (typeof field === 'string' && field.includes('.')) {\n\t\t\treturn field.split('.').reduce<unknown>((obj, key) => {\n\t\t\t\treturn this.getObjectProperty(obj, key);\n\t\t\t}, item);\n\t\t}\n\t\treturn this.getObjectProperty(item, String(field));\n\t}\n\n\t/**\n\t * Safely get a property from an object.\n\t * Uses type guard pattern to satisfy strict type checking.\n\t */\n\tprivate getObjectProperty(obj: unknown, key: string): unknown {\n\t\tif (this.isRecord(obj) && key in obj) {\n\t\t\treturn obj[key];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Type guard for Record<string, unknown>.\n\t */\n\tprivate isRecord(value: unknown): value is Record<string, unknown> {\n\t\treturn value !== null && typeof value === 'object';\n\t}\n\n\trenderCell(item: T, col: DataTableColumn<T>): string {\n\t\tconst value = this.getCellValue(item, col.field);\n\t\tif (col.render) {\n\t\t\treturn col.render(value, item);\n\t\t}\n\t\tif (value === null || value === undefined) {\n\t\t\treturn '';\n\t\t}\n\t\treturn String(value);\n\t}\n\n\tonSearchChange(value: string): void {\n\t\t// SearchInput component handles debouncing, so we just emit\n\t\tthis.searchChange.emit(value);\n\t}\n\n\ttoggleSort(field: keyof T | string): void {\n\t\tconst current = this.sort();\n\t\tlet newSort: DataTableSort<T> | undefined;\n\n\t\tif (current?.field === field) {\n\t\t\tif (current.direction === 'asc') {\n\t\t\t\tnewSort = { field, direction: 'desc' };\n\t\t\t} else {\n\t\t\t\t// Third click clears the sort\n\t\t\t\tnewSort = undefined;\n\t\t\t}\n\t\t} else {\n\t\t\tnewSort = { field, direction: 'asc' };\n\t\t}\n\n\t\tthis.sort.set(newSort);\n\t\tthis.sortChange.emit(newSort);\n\t}\n\n\ttoggleSelect(item: T): void {\n\t\tconst selected = [...this.selectedItems()];\n\t\tconst index = selected.indexOf(item);\n\n\t\tif (index >= 0) {\n\t\t\tselected.splice(index, 1);\n\t\t} else {\n\t\t\tselected.push(item);\n\t\t}\n\n\t\tthis.selectedItems.set(selected);\n\t\tthis.selectionChange.emit(selected);\n\t}\n\n\ttoggleSelectAll(): void {\n\t\tconst data = this.displayData();\n\t\tconst allSelected = this.allSelected();\n\n\t\tif (allSelected) {\n\t\t\t// Deselect all displayed items\n\t\t\tconst newSelected = this.selectedItems().filter((item) => !data.includes(item));\n\t\t\tthis.selectedItems.set(newSelected);\n\t\t\tthis.selectionChange.emit(newSelected);\n\t\t} else {\n\t\t\t// Select all displayed items\n\t\t\tconst newSelected = [...new Set([...this.selectedItems(), ...data])];\n\t\t\tthis.selectedItems.set(newSelected);\n\t\t\tthis.selectionChange.emit(newSelected);\n\t\t}\n\t}\n\n\tisSelected(item: T): boolean {\n\t\treturn this.selectedItems().includes(item);\n\t}\n\n\tonPageChanged(page: number): void {\n\t\tthis.currentPage.set(page);\n\t\tthis.pageChange.emit(page);\n\t}\n\n\tonRowClicked(item: T): void {\n\t\tif (this.clickableRows()) {\n\t\t\tthis.rowClick.emit(item);\n\t\t}\n\t}\n\n\tgetVisibleActions(item: T): DataTableRowAction<T>[] {\n\t\treturn this.rowActions().filter((action) => !action.visible || action.visible(item));\n\t}\n\n\tisActionDisabled(item: T, action: DataTableRowAction<T>): boolean {\n\t\treturn action.disabled ? action.disabled(item) : false;\n\t}\n\n\tonActionClick(item: T, action: DataTableRowAction<T>): void {\n\t\tif (action.handler) {\n\t\t\taction.handler(item);\n\t\t}\n\t\tthis.rowAction.emit({ action, item });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { CommandFilterMode } from './command.types';\n\n/**\n * Command component for building command palettes, autocomplete, and searchable lists.\n *\n * @example\n * ```html\n * <mcms-command>\n * <mcms-command-input placeholder=\"Type a command or search...\" />\n * <mcms-command-list>\n * <mcms-command-empty>No results found.</mcms-command-empty>\n * <mcms-command-group label=\"Suggestions\">\n * <mcms-command-item value=\"calendar\">Calendar</mcms-command-item>\n * <mcms-command-item value=\"search\">Search</mcms-command-item>\n * </mcms-command-group>\n * </mcms-command-list>\n * </mcms-command>\n * ```\n */\n@Component({\n\tselector: 'mcms-command',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Command {\n\t/** Filter mode for search/filter behavior */\n\treadonly filterMode = input<CommandFilterMode>('manual');\n\n\t/** Whether the command is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether the command list is always expanded */\n\treadonly alwaysExpanded = input(true);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tmodel,\n\tviewChild,\n} from '@angular/core';\n\n/**\n * Input element for the command component.\n * Provides search/filter functionality for the command list.\n *\n * @example\n * ```html\n * <mcms-command-input placeholder=\"Search...\" [(value)]=\"searchValue\" [autofocus]=\"true\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-command-input',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t<svg\n\t\t\tclass=\"mr-2 h-4 w-4 shrink-0 opacity-50\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\twidth=\"24\"\n\t\t\theight=\"24\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstroke-width=\"2\"\n\t\t\tstroke-linecap=\"round\"\n\t\t\tstroke-linejoin=\"round\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n\t\t\t<line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n\t\t</svg>\n\t\t<input\n\t\t\t#inputEl\n\t\t\ttype=\"text\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[class]=\"inputClasses()\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[value]=\"value()\"\n\t\t\t(input)=\"onInput($event)\"\n\t\t\trole=\"combobox\"\n\t\t\taria-autocomplete=\"list\"\n\t\t\t[attr.aria-expanded]=\"ariaExpanded()\"\n\t\t\t[attr.aria-controls]=\"ariaControls() || null\"\n\t\t\t[attr.aria-label]=\"ariaLabel() || placeholder() || 'Search'\"\n\t\t/>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandInput {\n\tprivate readonly injector = inject(Injector);\n\tprivate readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n\t/** Placeholder text for the input */\n\treadonly placeholder = input('');\n\n\t/** Current value of the input */\n\treadonly value = model('');\n\n\t/** Whether the input is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether to autofocus the input on mount */\n\treadonly autofocus = input(false);\n\n\t/** ID of the associated command list for aria-controls */\n\treadonly ariaControls = input('');\n\n\t/** Whether the associated list is expanded */\n\treadonly ariaExpanded = input(true);\n\n\t/** Accessible label for the input */\n\treadonly ariaLabel = input('');\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tconstructor() {\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tif (this.autofocus()) {\n\t\t\t\t\tthis.inputEl()?.nativeElement.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'flex items-center border-b px-3';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\tprotected readonly inputClasses = computed(() => {\n\t\treturn 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50';\n\t});\n\n\tprotected onInput(event: Event): void {\n\t\tconst target = event.target;\n\t\tif (target instanceof HTMLInputElement) {\n\t\t\tthis.value.set(target.value);\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Listbox } from '@angular/aria/listbox';\n\nlet nextListId = 0;\n\n/**\n * Container for command items. Provides the scrollable list area.\n *\n * @example\n * ```html\n * <mcms-command-list>\n * <mcms-command-item value=\"item1\">Item 1</mcms-command-item>\n * <mcms-command-item value=\"item2\">Item 2</mcms-command-item>\n * </mcms-command-list>\n * ```\n */\n@Component({\n\tselector: 'mcms-command-list',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: Listbox,\n\t\t\tinputs: ['multi', 'wrap', 'focusMode', 'selectionMode', 'disabled', 'values'],\n\t\t\toutputs: ['valuesChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'[attr.id]': 'listId',\n\t\trole: 'listbox',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandList {\n\t/** Auto-generated unique ID for ARIA association with CommandInput. */\n\treadonly listId = `mcms-command-list-${nextListId++}`;\n\n\t/** Maximum height of the list */\n\treadonly maxHeight = input('300px');\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'max-h-[300px] overflow-y-auto overflow-x-hidden';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Displayed when there are no results in the command list.\n *\n * @example\n * ```html\n * <mcms-command-empty>No results found.</mcms-command-empty>\n * ```\n */\n@Component({\n\tselector: 'mcms-command-empty',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandEmpty {\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'py-6 text-center text-sm text-muted-foreground';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Groups related command items together with an optional label.\n *\n * @example\n * ```html\n * <mcms-command-group label=\"Settings\">\n * <mcms-command-item value=\"profile\">Profile</mcms-command-item>\n * <mcms-command-item value=\"billing\">Billing</mcms-command-item>\n * </mcms-command-group>\n * ```\n */\nlet nextGroupId = 0;\n\n@Component({\n\tselector: 'mcms-command-group',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'group',\n\t\t'[attr.aria-labelledby]': 'label() ? labelId : null',\n\t},\n\ttemplate: `\n\t\t@if (label()) {\n\t\t\t<div [attr.id]=\"labelId\" [class]=\"labelClasses()\">{{ label() }}</div>\n\t\t}\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandGroup {\n\t/** Auto-generated unique ID for the label element. */\n\treadonly labelId = `mcms-command-group-label-${nextGroupId++}`;\n\n\t/** Label for the group */\n\treadonly label = input<string>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'overflow-hidden p-1 text-foreground';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\tprotected readonly labelClasses = computed(() => {\n\t\treturn 'px-2 py-1.5 text-xs font-medium text-muted-foreground';\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\n/**\n * A selectable item in the command list.\n *\n * @example\n * ```html\n * <mcms-command-item value=\"settings\" (itemSelect)=\"onSelect()\">\n * <svg>...</svg>\n * Settings\n * <span class=\"ml-auto text-xs text-muted-foreground\">⌘S</span>\n * </mcms-command-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-command-item',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\t'(click)': 'onSelect()',\n\t\t'(keydown.enter)': 'onSelect()',\n\t\t'(mouseenter)': 'onMouseEnter()',\n\t\t'(mouseleave)': 'onMouseLeave()',\n\t\trole: 'option',\n\t\t'[attr.aria-selected]': 'selected()',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'[attr.data-active]': 'active()',\n\t\ttabindex: '0',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandItem {\n\t/** The value of the item */\n\treadonly value = input.required<string>();\n\n\t/** Text label for accessibility and typeahead search */\n\treadonly label = input<string>();\n\n\t/** Whether the item is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether the item is selected */\n\treadonly selected = input(false);\n\n\t/** Emits when the item is selected */\n\treadonly itemSelect = output<void>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\t/** Whether the item is currently active (hovered/focused) */\n\tprotected readonly active = signal(false);\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none';\n\t\tconst interactiveClasses = this.disabled() ? 'pointer-events-none opacity-50' : '';\n\t\tconst activeClasses = this.active() ? 'bg-accent text-accent-foreground' : '';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${this.class()}`.trim();\n\t});\n\n\tprotected onSelect(): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.itemSelect.emit();\n\t\t}\n\t}\n\n\tprotected onMouseEnter(): void {\n\t\tif (!this.disabled()) {\n\t\t\tthis.active.set(true);\n\t\t}\n\t}\n\n\tprotected onMouseLeave(): void {\n\t\tthis.active.set(false);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A visual separator between command groups or items.\n *\n * @example\n * ```html\n * <mcms-command-group label=\"Navigation\">...</mcms-command-group>\n * <mcms-command-separator />\n * <mcms-command-group label=\"Settings\">...</mcms-command-group>\n * ```\n */\n@Component({\n\tselector: 'mcms-command-separator',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'separator',\n\t},\n\ttemplate: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommandSeparator {\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = '-mx-1 my-1 block h-px bg-border';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { Toolbar as AriaToolbar } from '@angular/aria/toolbar';\nimport type { ToolbarOrientation } from './toolbar.types';\n\n/**\n * Toolbar component for grouping related controls.\n *\n * Uses @angular/aria/toolbar for keyboard navigation (Arrow keys, Home/End).\n *\n * @example\n * ```html\n * <mcms-toolbar>\n * <button mcms-toolbar-widget value=\"bold\">Bold</button>\n * <button mcms-toolbar-widget value=\"italic\">Italic</button>\n * <mcms-toolbar-separator />\n * <button mcms-toolbar-widget value=\"link\">Link</button>\n * </mcms-toolbar>\n * ```\n */\n@Component({\n\tselector: 'mcms-toolbar',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaToolbar,\n\t\t\tinputs: ['orientation', 'disabled', 'wrap', 'softDisabled', 'values'],\n\t\t\toutputs: ['valuesChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'toolbar',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toolbar {\n\tprotected readonly toolbar = inject(AriaToolbar);\n\n\t/** Toolbar orientation */\n\treadonly orientation = input<ToolbarOrientation>('horizontal');\n\n\t/** Whether the toolbar is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation wraps around */\n\treadonly wrap = input(true);\n\n\t/** Selected widget values */\n\treadonly values = model<string[]>([]);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'inline-flex items-center gap-1 rounded-md border border-border bg-background p-1';\n\t\tconst orientationClasses = this.orientation() === 'vertical' ? 'flex-col' : 'flex-row';\n\t\treturn `${base} ${orientationClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { ToolbarWidget as AriaToolbarWidget } from '@angular/aria/toolbar';\n\n/**\n * Interactive widget within a toolbar.\n *\n * @example\n * ```html\n * <button mcms-toolbar-widget value=\"bold\" (click)=\"toggleBold()\">\n * <svg>...</svg>\n * </button>\n * ```\n */\n@Component({\n\tselector: 'button[mcms-toolbar-widget]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaToolbarWidget,\n\t\t\tinputs: ['value', 'disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\ttype: 'button',\n\t\t'[attr.aria-pressed]': 'widget.selected() || null',\n\t\t'[attr.disabled]': 'disabled() || null',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToolbarWidget {\n\tprotected readonly widget = inject(AriaToolbarWidget);\n\n\t/** The value identifier for this widget */\n\treadonly value = input.required<string>();\n\n\t/** Whether the widget is disabled */\n\treadonly disabled = input(false);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'inline-flex items-center justify-center rounded-sm px-2.5 py-1.5 text-sm font-medium transition-colors';\n\t\tconst interactiveClasses = this.disabled()\n\t\t\t? 'pointer-events-none opacity-50'\n\t\t\t: 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none';\n\t\tconst activeClasses = this.widget.active() ? 'bg-accent text-accent-foreground' : '';\n\t\tconst selectedClasses = this.widget.selected()\n\t\t\t? 'bg-accent text-accent-foreground'\n\t\t\t: 'bg-transparent';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${selectedClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { ToolbarWidgetGroup as AriaToolbarWidgetGroup } from '@angular/aria/toolbar';\n\n/**\n * Groups toolbar widgets for selection (like radio buttons).\n *\n * @example\n * ```html\n * <mcms-toolbar-widget-group [(value)]=\"alignment\">\n * <button mcms-toolbar-widget value=\"left\">Left</button>\n * <button mcms-toolbar-widget value=\"center\">Center</button>\n * <button mcms-toolbar-widget value=\"right\">Right</button>\n * </mcms-toolbar-widget-group>\n * ```\n */\n@Component({\n\tselector: 'mcms-toolbar-widget-group',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaToolbarWidgetGroup,\n\t\t\tinputs: ['disabled', 'multi'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'group',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToolbarWidgetGroup {\n\tprotected readonly group = inject(AriaToolbarWidgetGroup);\n\n\t/** Whether the group is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether multiple items can be selected */\n\treadonly multi = input(false);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'inline-flex items-center gap-0.5 rounded-sm bg-muted p-0.5';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * Visual separator between toolbar widgets.\n *\n * @example\n * ```html\n * <button mcms-toolbar-widget value=\"bold\">Bold</button>\n * <mcms-toolbar-separator />\n * <button mcms-toolbar-widget value=\"link\">Link</button>\n * ```\n */\n@Component({\n\tselector: 'mcms-toolbar-separator',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'separator',\n\t\t'aria-orientation': 'vertical',\n\t},\n\ttemplate: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToolbarSeparator {\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'mx-1 h-5 w-px bg-border';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { Tree as AriaTree } from '@angular/aria/tree';\n\n/**\n * Tree component for displaying hierarchical data.\n *\n * Uses @angular/aria/tree for keyboard navigation (Arrow keys, Home/End, Enter/Space).\n *\n * @example\n * ```html\n * <mcms-tree [(value)]=\"selectedItems\" [multi]=\"true\">\n * <mcms-tree-item [parent]=\"tree\" value=\"folder1\" label=\"Documents\">\n * <mcms-tree-item-group [ownedBy]=\"documentsItem\">\n * <mcms-tree-item [parent]=\"documentsGroup\" value=\"file1\" label=\"File 1\" />\n * </mcms-tree-item-group>\n * </mcms-tree-item>\n * </mcms-tree>\n * ```\n */\n@Component({\n\tselector: 'mcms-tree',\n\texportAs: 'mcmsTree',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaTree,\n\t\t\tinputs: ['multi', 'selectionMode', 'disabled', 'wrap', 'orientation', 'values'],\n\t\t\toutputs: ['valuesChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'tree',\n\t\t'[attr.aria-multiselectable]': 'multi()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tree {\n\treadonly ariaTree = inject(AriaTree);\n\n\t/** Whether multiple items can be selected */\n\treadonly multi = input(false);\n\n\t/** Selection mode: 'follow' (select on focus) or 'explicit' (require Enter/Space) */\n\treadonly selectionMode = input<'follow' | 'explicit'>('explicit');\n\n\t/** Whether the tree is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation wraps around */\n\treadonly wrap = input(true);\n\n\t/** Selected item values */\n\treadonly values = model<string[]>([]);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'block text-sm';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { TreeItem as AriaTreeItem, Tree as AriaTree, TreeItemGroup } from '@angular/aria/tree';\n\n/**\n * A single item/node in the tree.\n *\n * @example\n * ```html\n * <mcms-tree-item\n * #documentsItem=\"mcmsTreeItem\"\n * [parent]=\"tree\"\n * value=\"documents\"\n * label=\"Documents\"\n * >\n * Documents\n * <mcms-tree-item-group [ownedBy]=\"documentsItem\">\n * ...children\n * </mcms-tree-item-group>\n * </mcms-tree-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-tree-item',\n\texportAs: 'mcmsTreeItem',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaTreeItem,\n\t\t\tinputs: ['value', 'parent', 'disabled', 'expanded', 'label', 'selectable'],\n\t\t\toutputs: ['expandedChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'treeitem',\n\t\t'[attr.aria-selected]': 'treeItem.selected()',\n\t\t'[attr.aria-expanded]': 'hasChildren() ? treeItem.expanded() : null',\n\t\t'[attr.aria-level]': 'treeItem.level()',\n\t\t'[attr.tabindex]': 'treeItem.active() ? 0 : -1',\n\t},\n\ttemplate: `\n\t\t<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n\t\t<div [class]=\"contentClasses()\" (click)=\"onClick($event)\">\n\t\t\t@if (hasChildren()) {\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"mr-1 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\"\n\t\t\t\t\t[class.rotate-90]=\"treeItem.expanded()\"\n\t\t\t\t\t(click)=\"toggleExpanded($event)\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t} @else {\n\t\t\t\t<span class=\"mr-1 h-4 w-4 shrink-0\"></span>\n\t\t\t}\n\t\t\t<ng-content />\n\t\t</div>\n\t\t<ng-content select=\"mcms-tree-item-group, [mcmsTreeItemGroup]\" />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TreeItem {\n\treadonly treeItem = inject(AriaTreeItem);\n\n\t/** The value identifier for this item */\n\treadonly value = input.required<string>();\n\n\t/** Parent tree or tree item group */\n\treadonly parent = input.required<AriaTree<string> | TreeItemGroup<string>>();\n\n\t/** Text label for accessibility and typeahead */\n\treadonly label = input<string>();\n\n\t/** Whether the item is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether the item is expanded */\n\treadonly expanded = model(false);\n\n\t/** Whether the item is selectable */\n\treadonly selectable = input(true);\n\n\t/** Whether this item has children (should have a tree-item-group) */\n\treadonly hasChildren = input(false);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'block';\n\t\tconst disabledClasses = this.disabled() ? 'opacity-50 pointer-events-none' : '';\n\t\treturn `${base} ${disabledClasses} ${this.class()}`.trim();\n\t});\n\n\tprotected readonly contentClasses = computed(() => {\n\t\tconst base = 'flex items-center py-1 px-2 rounded-sm cursor-default select-none outline-none';\n\t\tconst interactiveClasses =\n\t\t\t'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground';\n\t\tconst activeClasses = this.treeItem.active() ? 'bg-accent text-accent-foreground' : '';\n\t\tconst selectedClasses = this.treeItem.selected() ? 'font-medium' : '';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${selectedClasses}`.trim();\n\t});\n\n\tonClick(event: Event): void {\n\t\tevent.stopPropagation();\n\t}\n\n\ttoggleExpanded(event: Event): void {\n\t\tevent.stopPropagation();\n\t\tthis.expanded.update((v) => !v);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { TreeItemGroup as AriaTreeItemGroup, TreeItem as AriaTreeItem } from '@angular/aria/tree';\n\n/**\n * Groups child tree items under a parent item.\n *\n * @example\n * ```html\n * <mcms-tree-item #parentItem [parent]=\"tree\" value=\"folder\" label=\"Folder\" [hasChildren]=\"true\">\n * Folder\n * <mcms-tree-item-group [ownedBy]=\"parentItem\">\n * <mcms-tree-item [parent]=\"childGroup\" value=\"file\" label=\"File\">File</mcms-tree-item>\n * </mcms-tree-item-group>\n * </mcms-tree-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-tree-item-group',\n\texportAs: 'mcmsTreeItemGroup',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaTreeItemGroup,\n\t\t\tinputs: ['ownedBy'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'group',\n\t\t'[hidden]': '!isExpanded()',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TreeItemGroupComponent {\n\treadonly group = inject(AriaTreeItemGroup);\n\n\t/** The parent tree item that owns this group */\n\treadonly ownedBy = input.required<AriaTreeItem<string>>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly isExpanded = computed(() => {\n\t\tconst owner = this.ownedBy();\n\t\treturn owner?.expanded() ?? false;\n\t});\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'block pl-4';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { MenuBar as AriaMenuBar } from '@angular/aria/menu';\n\n/**\n * Application menu bar for File, Edit, View style menus.\n *\n * Uses @angular/aria/menu for keyboard navigation (Arrow keys, Enter/Space).\n *\n * @example\n * ```html\n * <mcms-menubar>\n * <mcms-menubar-item value=\"file\" label=\"File\" [submenu]=\"fileMenu\">\n * <mcms-menubar-submenu #fileMenu>\n * <mcms-menubar-item value=\"new\" label=\"New\" shortcut=\"⌘N\" />\n * <mcms-menubar-item value=\"open\" label=\"Open\" shortcut=\"⌘O\" />\n * </mcms-menubar-submenu>\n * </mcms-menubar-item>\n * <mcms-menubar-item value=\"edit\" label=\"Edit\" [submenu]=\"editMenu\">\n * ...\n * </mcms-menubar-item>\n * </mcms-menubar>\n * ```\n */\n@Component({\n\tselector: 'mcms-menubar',\n\texportAs: 'mcmsMenubar',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaMenuBar,\n\t\t\tinputs: ['disabled', 'wrap', 'typeaheadDelay', 'values'],\n\t\t\toutputs: ['valuesChange'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menubar',\n\t\t'[attr.aria-orientation]': '\"horizontal\"',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Menubar {\n\treadonly menubar = inject(AriaMenuBar);\n\n\t/** Whether the menubar is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation wraps around */\n\treadonly wrap = input(true);\n\n\t/** Typeahead delay in milliseconds */\n\treadonly typeaheadDelay = input(500);\n\n\t/** Selected values (for checkable menu items) */\n\treadonly values = model<string[]>([]);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = 'flex items-center gap-1 rounded-md border border-border bg-background p-1';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { MenuItem as AriaMenuItem } from '@angular/aria/menu';\nimport { MenubarSubmenu } from './menubar-submenu.component';\n\n/**\n * A top-level item in the menubar.\n *\n * @example\n * ```html\n * <mcms-menubar-item value=\"file\" label=\"File\" [submenu]=\"fileMenu\">\n * <mcms-menubar-submenu #fileMenu>\n * ...submenu content\n * </mcms-menubar-submenu>\n * </mcms-menubar-item>\n * ```\n */\n@Component({\n\tselector: 'mcms-menubar-item',\n\texportAs: 'mcmsMenubarItem',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaMenuItem,\n\t\t\tinputs: ['value', 'disabled', 'searchTerm', 'submenu'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menuitem',\n\t\t'[attr.aria-haspopup]': 'menuItem.hasPopup() ? \"menu\" : null',\n\t\t'[attr.aria-expanded]': 'menuItem.expanded() || null',\n\t\t'[attr.tabindex]': 'menuItem.active() ? 0 : -1',\n\t},\n\ttemplate: `\n\t\t<span class=\"flex items-center gap-2\">\n\t\t\t<ng-content select=\"[mcms-menubar-item-icon]\" />\n\t\t\t{{ label() }}\n\t\t</span>\n\t\t@if (menuItem.hasPopup()) {\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\tclass=\"ml-1 h-3 w-3\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t</svg>\n\t\t}\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenubarItem {\n\treadonly menuItem = inject(AriaMenuItem<string>);\n\n\t/** The unique value for this item */\n\treadonly value = input.required<string>();\n\n\t/** Display label */\n\treadonly label = input.required<string>();\n\n\t/** Whether the item is disabled */\n\treadonly disabled = input(false);\n\n\t/** Text used for typeahead search */\n\treadonly searchTerm = model('');\n\n\t/** Reference to the submenu component */\n\treadonly submenu = input<MenubarSubmenu>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'inline-flex items-center px-3 py-1.5 text-sm font-medium rounded-sm cursor-default select-none outline-none';\n\t\tconst interactiveClasses =\n\t\t\t'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground';\n\t\tconst activeClasses = this.menuItem.active() ? 'bg-accent text-accent-foreground' : '';\n\t\tconst expandedClasses = this.menuItem.expanded() ? 'bg-accent text-accent-foreground' : '';\n\t\tconst disabledClasses = this.disabled() ? 'opacity-50 pointer-events-none' : '';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${expandedClasses} ${disabledClasses} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { Menu as AriaMenu, MenuItem as AriaMenuItem } from '@angular/aria/menu';\n\n/**\n * A submenu dropdown for menubar items.\n *\n * @example\n * ```html\n * <mcms-menubar-submenu #fileMenu>\n * <mcms-menubar-submenu-item value=\"new\" label=\"New\" shortcut=\"⌘N\" />\n * <mcms-menubar-submenu-item value=\"open\" label=\"Open\" shortcut=\"⌘O\" />\n * <mcms-menubar-separator />\n * <mcms-menubar-submenu-item value=\"exit\" label=\"Exit\" />\n * </mcms-menubar-submenu>\n * ```\n */\n@Component({\n\tselector: 'mcms-menubar-submenu',\n\texportAs: 'mcmsMenubarSubmenu',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaMenu,\n\t\t\tinputs: ['disabled', 'wrap', 'typeaheadDelay'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menu',\n\t\t'[attr.aria-orientation]': '\"vertical\"',\n\t},\n\ttemplate: `<ng-content />`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenubarSubmenu {\n\treadonly menu = inject(AriaMenu);\n\treadonly parent = model<AriaMenuItem<string> | undefined>(undefined);\n\n\t/** Whether the submenu is disabled */\n\treadonly disabled = input(false);\n\n\t/** Whether navigation wraps around */\n\treadonly wrap = input(true);\n\n\t/** Typeahead delay in milliseconds */\n\treadonly typeaheadDelay = input(500);\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'absolute left-0 top-full z-50 min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n\n/**\n * A menu item inside a menubar submenu.\n *\n * @example\n * ```html\n * <mcms-menubar-submenu-item value=\"new\" label=\"New\" shortcut=\"⌘N\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-menubar-submenu-item',\n\texportAs: 'mcmsMenubarSubmenuItem',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: AriaMenuItem,\n\t\t\tinputs: ['value', 'disabled', 'searchTerm', 'submenu'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'menuitem',\n\t\t'[attr.aria-haspopup]': 'menuItem.hasPopup() ? \"menu\" : null',\n\t\t'[attr.aria-expanded]': 'menuItem.expanded() || null',\n\t\t'[attr.tabindex]': 'menuItem.active() ? 0 : -1',\n\t},\n\ttemplate: `\n\t\t<span class=\"flex flex-1 items-center gap-2\">\n\t\t\t<ng-content select=\"[mcms-menubar-submenu-item-icon]\" />\n\t\t\t{{ label() }}\n\t\t</span>\n\t\t@if (shortcut()) {\n\t\t\t<span class=\"ml-auto text-xs tracking-widest text-muted-foreground\">\n\t\t\t\t{{ shortcut() }}\n\t\t\t</span>\n\t\t}\n\t\t@if (menuItem.hasPopup()) {\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\tclass=\"ml-2 h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t</svg>\n\t\t}\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenubarSubmenuItem {\n\treadonly menuItem = inject(AriaMenuItem<string>);\n\n\t/** The unique value for this item */\n\treadonly value = input.required<string>();\n\n\t/** Display label */\n\treadonly label = input.required<string>();\n\n\t/** Whether the item is disabled */\n\treadonly disabled = input(false);\n\n\t/** Keyboard shortcut hint */\n\treadonly shortcut = input<string>();\n\n\t/** Text used for typeahead search */\n\treadonly searchTerm = model('');\n\n\t/** Reference to a nested submenu */\n\treadonly submenu = input<MenubarSubmenu>();\n\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base =\n\t\t\t'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none';\n\t\tconst interactiveClasses =\n\t\t\t'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground';\n\t\tconst activeClasses = this.menuItem.active() ? 'bg-accent text-accent-foreground' : '';\n\t\tconst disabledClasses = this.disabled() ? 'opacity-50 pointer-events-none' : '';\n\t\treturn `${base} ${interactiveClasses} ${activeClasses} ${disabledClasses} ${this.class()}`.trim();\n\t});\n}\n\n/**\n * Separator line within a menubar submenu.\n */\n@Component({\n\tselector: 'mcms-menubar-separator',\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t\trole: 'separator',\n\t},\n\ttemplate: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenubarSeparator {\n\t/** Additional CSS classes */\n\treadonly class = input('');\n\n\tprotected readonly hostClasses = computed(() => {\n\t\tconst base = '-mx-1 my-1 h-px bg-border';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type {\n\tFieldDisplayType,\n\tFieldDisplayBadgeConfig,\n\tFieldDisplayFieldMeta,\n\tFieldDisplayNumberFormat,\n\tFieldDisplayDateFormat,\n} from './field-display.types';\nimport { Badge } from '../badge/badge.component';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * A read-only display component for rendering values with type-aware formatting.\n *\n * @example\n * ```html\n * <mcms-field-display [value]=\"user.name\" type=\"text\" label=\"Name\" />\n * <mcms-field-display [value]=\"user.createdAt\" type=\"date\" label=\"Created\" />\n * <mcms-field-display [value]=\"user.status\" type=\"badge\" [badgeConfig]=\"statusConfig\" />\n * <mcms-field-display [value]=\"product.price\" type=\"number\"\n * [numberFormat]=\"{ style: 'currency', currency: 'USD' }\" label=\"Price\" />\n * <mcms-field-display [value]=\"product.seo\" type=\"group\" [fieldMeta]=\"seoMeta\" label=\"SEO\" />\n * ```\n */\n@Component({\n\tselector: 'mcms-field-display',\n\timports: [Badge],\n\thost: {\n\t\t'[class]': 'hostClasses()',\n\t},\n\ttemplate: `\n\t\t@if (label()) {\n\t\t\t<div class=\"text-sm font-medium text-muted-foreground mb-1.5\">{{ label() }}</div>\n\t\t}\n\t\t<div class=\"text-sm\">\n\t\t\t@switch (type()) {\n\t\t\t\t@case ('text') {\n\t\t\t\t\t<span>{{ displayValue() }}</span>\n\t\t\t\t}\n\t\t\t\t@case ('number') {\n\t\t\t\t\t<span>{{ formattedNumber() }}</span>\n\t\t\t\t}\n\t\t\t\t@case ('date') {\n\t\t\t\t\t<span>{{ formattedDate() }}</span>\n\t\t\t\t}\n\t\t\t\t@case ('datetime') {\n\t\t\t\t\t<span>{{ formattedDateTime() }}</span>\n\t\t\t\t}\n\t\t\t\t@case ('boolean') {\n\t\t\t\t\t<span class=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t@if (booleanValue()) {\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\tclass=\"text-green-600\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"M20 6 9 17l-5-5\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Yes</span>\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\tclass=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>No</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t\t@case ('badge') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<mcms-badge [variant]=\"badgeVariant()\">{{ displayValue() }}</mcms-badge>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('link') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t[href]=\"stringValue()\"\n\t\t\t\t\t\t\tclass=\"text-primary hover:underline\"\n\t\t\t\t\t\t\t[attr.target]=\"openInNewTab() ? '_blank' : null\"\n\t\t\t\t\t\t\t[attr.rel]=\"openInNewTab() ? 'noopener noreferrer' : null\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ displayValue() }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('email') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<a [href]=\"'mailto:' + stringValue()\" class=\"text-primary hover:underline\">\n\t\t\t\t\t\t\t{{ displayValue() }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('list') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<ul class=\"list-disc list-inside\">\n\t\t\t\t\t\t\t@for (item of displayList(); track $index) {\n\t\t\t\t\t\t\t\t<li>{{ item }}</li>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t@if (hasMoreItems()) {\n\t\t\t\t\t\t\t<span class=\"text-muted-foreground text-xs\"> +{{ remainingItems() }} more </span>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('json') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<pre class=\"text-xs bg-muted p-2 rounded-md overflow-auto max-h-40\">{{\n\t\t\t\t\t\t\tformattedJson()\n\t\t\t\t\t\t}}</pre>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('html') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"prose prose-sm dark:prose-invert max-w-none\"\n\t\t\t\t\t\t\t[innerHTML]=\"stringValue()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('group') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<div class=\"space-y-2 rounded-md border border-border p-3\">\n\t\t\t\t\t\t\t@for (meta of fieldMeta(); track meta.name) {\n\t\t\t\t\t\t\t\t<div class=\"flex justify-between gap-4 text-sm\">\n\t\t\t\t\t\t\t\t\t<span class=\"shrink-0 font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{{ meta.label || meta.name }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"truncate text-right\">\n\t\t\t\t\t\t\t\t\t\t{{ getGroupFieldValue(meta.name) }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@case ('array-table') {\n\t\t\t\t\t@if (isEmpty()) {\n\t\t\t\t\t\t<span class=\"text-muted-foreground\">{{ emptyText() }}</span>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<div class=\"overflow-auto rounded-md border border-border\">\n\t\t\t\t\t\t\t<table class=\"w-full text-sm\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr class=\"border-b bg-muted/50\">\n\t\t\t\t\t\t\t\t\t\t@for (meta of fieldMeta(); track meta.name) {\n\t\t\t\t\t\t\t\t\t\t\t<th class=\"px-3 py-2 text-left font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ meta.label || meta.name }}\n\t\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t@for (row of displayList(); track $index) {\n\t\t\t\t\t\t\t\t\t\t<tr class=\"border-b last:border-0\">\n\t\t\t\t\t\t\t\t\t\t\t@for (meta of fieldMeta(); track meta.name) {\n\t\t\t\t\t\t\t\t\t\t\t\t<td class=\"px-3 py-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getArrayCellValue(row, meta) }}\n\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t@if (hasMoreItems()) {\n\t\t\t\t\t\t\t\t<div class=\"bg-muted/50 px-3 py-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t+{{ remainingItems() }} more rows\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@default {\n\t\t\t\t\t<span>{{ displayValue() }}</span>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FieldDisplay {\n\t/** The value to display. */\n\treadonly value = input.required<unknown>();\n\n\t/** The type of display formatting to use. */\n\treadonly type = input<FieldDisplayType>('text');\n\n\t/** Optional label shown above the value. */\n\treadonly label = input<string | undefined>(undefined);\n\n\t/** Format string for dates. */\n\treadonly format = input<string | undefined>(undefined);\n\n\t/** Text to show when value is empty/null/undefined. */\n\treadonly emptyText = input('-');\n\n\t/** Badge configuration for type='badge'. */\n\treadonly badgeConfig = input<FieldDisplayBadgeConfig | undefined>(undefined);\n\n\t/** Whether to open links in new tab. */\n\treadonly openInNewTab = input(true);\n\n\t/** Maximum items to show for list/array-table types. */\n\treadonly maxItems = input(5);\n\n\t/** Additional CSS classes. */\n\treadonly class = input('');\n\n\t/** Sub-field metadata for 'group' and 'array-table' display types. */\n\treadonly fieldMeta = input<FieldDisplayFieldMeta[]>([]);\n\n\t/** Number format options (e.g. currency, percent). */\n\treadonly numberFormat = input<FieldDisplayNumberFormat | undefined>(undefined);\n\n\t/** Date format options (e.g. preset style, locale). */\n\treadonly dateFormat = input<FieldDisplayDateFormat | undefined>(undefined);\n\n\treadonly hostClasses = computed(() => {\n\t\tconst base = 'block';\n\t\treturn `${base} ${this.class()}`.trim();\n\t});\n\n\treadonly isEmpty = computed(() => {\n\t\tconst val = this.value();\n\t\tif (val === null || val === undefined) return true;\n\t\tif (typeof val === 'string' && val.trim() === '') return true;\n\t\tif (Array.isArray(val) && val.length === 0) return true;\n\t\treturn false;\n\t});\n\n\treadonly displayValue = computed(() => {\n\t\tif (this.isEmpty()) return this.emptyText();\n\t\tconst val = this.value();\n\t\treturn String(val);\n\t});\n\n\treadonly stringValue = computed(() => {\n\t\tconst val = this.value();\n\t\treturn typeof val === 'string' ? val : String(val ?? '');\n\t});\n\n\treadonly booleanValue = computed(() => {\n\t\tconst val = this.value();\n\t\treturn Boolean(val);\n\t});\n\n\treadonly formattedNumber = computed(() => {\n\t\tif (this.isEmpty()) return this.emptyText();\n\t\tconst val = this.value();\n\t\tconst num = typeof val === 'number' ? val : parseFloat(String(val));\n\t\tif (isNaN(num)) return this.emptyText();\n\n\t\tconst fmt = this.numberFormat();\n\t\tif (fmt) {\n\t\t\tconst options: Intl.NumberFormatOptions = {};\n\t\t\tif (fmt.style) options.style = fmt.style;\n\t\t\tif (fmt.currency) options.currency = fmt.currency;\n\t\t\tif (fmt.minimumFractionDigits !== undefined)\n\t\t\t\toptions.minimumFractionDigits = fmt.minimumFractionDigits;\n\t\t\tif (fmt.maximumFractionDigits !== undefined)\n\t\t\t\toptions.maximumFractionDigits = fmt.maximumFractionDigits;\n\t\t\treturn new Intl.NumberFormat(fmt.locale, options).format(num);\n\t\t}\n\n\t\treturn num.toLocaleString();\n\t});\n\n\treadonly formattedDate = computed(() => {\n\t\tif (this.isEmpty()) return this.emptyText();\n\t\tconst val = this.value();\n\t\tconst date = val instanceof Date ? val : new Date(String(val));\n\t\tif (isNaN(date.getTime())) return this.emptyText();\n\n\t\tconst fmt = this.dateFormat();\n\t\tif (fmt?.preset) {\n\t\t\tconst options: Intl.DateTimeFormatOptions = { dateStyle: fmt.preset };\n\t\t\tif (fmt.includeTime && fmt.timePreset) {\n\t\t\t\toptions.timeStyle = fmt.timePreset;\n\t\t\t}\n\t\t\treturn new Intl.DateTimeFormat(fmt.locale, options).format(date);\n\t\t}\n\n\t\treturn date.toLocaleDateString();\n\t});\n\n\treadonly formattedDateTime = computed(() => {\n\t\tif (this.isEmpty()) return this.emptyText();\n\t\tconst val = this.value();\n\t\tconst date = val instanceof Date ? val : new Date(String(val));\n\t\tif (isNaN(date.getTime())) return this.emptyText();\n\n\t\tconst fmt = this.dateFormat();\n\t\tif (fmt?.preset) {\n\t\t\tconst options: Intl.DateTimeFormatOptions = {\n\t\t\t\tdateStyle: fmt.preset,\n\t\t\t\ttimeStyle: fmt.timePreset ?? 'short',\n\t\t\t};\n\t\t\treturn new Intl.DateTimeFormat(fmt.locale, options).format(date);\n\t\t}\n\n\t\treturn date.toLocaleString();\n\t});\n\n\treadonly formattedJson = computed(() => {\n\t\tif (this.isEmpty()) return '';\n\t\ttry {\n\t\t\treturn JSON.stringify(this.value(), null, 2);\n\t\t} catch {\n\t\t\treturn String(this.value());\n\t\t}\n\t});\n\n\treadonly badgeVariant = computed(() => {\n\t\tconst config = this.badgeConfig();\n\t\tconst val = String(this.value() ?? '').toLowerCase();\n\n\t\tif (config?.variants?.[val]) {\n\t\t\treturn config.variants[val];\n\t\t}\n\n\t\t// Common status mappings\n\t\tif (['active', 'success', 'completed', 'approved', 'yes', 'true'].includes(val)) {\n\t\t\treturn 'success';\n\t\t}\n\t\tif (['inactive', 'error', 'failed', 'rejected', 'no', 'false'].includes(val)) {\n\t\t\treturn 'destructive';\n\t\t}\n\t\tif (['pending', 'warning', 'review', 'draft'].includes(val)) {\n\t\t\treturn 'warning';\n\t\t}\n\n\t\treturn config?.defaultVariant ?? 'default';\n\t});\n\n\treadonly listValue = computed<unknown[]>(() => {\n\t\tconst val = this.value();\n\t\tif (Array.isArray(val)) return val;\n\t\tif (typeof val === 'string') return val.split(',').map((s) => s.trim());\n\t\treturn [];\n\t});\n\n\treadonly displayList = computed(() => {\n\t\treturn this.listValue().slice(0, this.maxItems());\n\t});\n\n\treadonly hasMoreItems = computed(() => {\n\t\treturn this.listValue().length > this.maxItems();\n\t});\n\n\treadonly remainingItems = computed(() => {\n\t\treturn this.listValue().length - this.maxItems();\n\t});\n\n\t/** Extract a sub-field value from a group object. */\n\tgetGroupFieldValue(fieldName: string): string {\n\t\tconst val = this.value();\n\t\tif (!isRecord(val)) return '-';\n\t\tconst fieldValue = val[fieldName];\n\t\tif (fieldValue === null || fieldValue === undefined) return '-';\n\t\tif (typeof fieldValue === 'boolean') return fieldValue ? 'Yes' : 'No';\n\t\treturn String(fieldValue);\n\t}\n\n\t/** Extract a cell value from an array row. */\n\tgetArrayCellValue(row: unknown, meta: FieldDisplayFieldMeta): string {\n\t\tif (!isRecord(row)) return String(row);\n\t\tconst cellValue = row[meta.name];\n\t\tif (cellValue === null || cellValue === undefined) return '-';\n\t\tif (typeof cellValue === 'boolean') return cellValue ? 'Yes' : 'No';\n\t\treturn String(cellValue);\n\t}\n}\n","import { InjectionToken, type Provider, type Type } from '@angular/core';\n\n/**\n * @deprecated Use `BlockAdminModeService` via `provideBlockAdminMode()` instead.\n * When provided and true, block renderer shows admin edit overlays on hover.\n */\nexport const BLOCK_ADMIN_MODE = new InjectionToken<boolean>('BLOCK_ADMIN_MODE');\n\n/** Registry mapping block type slugs to their renderer components. */\nexport const BLOCK_COMPONENT_REGISTRY = new InjectionToken<Map<string, Type<unknown>>>(\n\t'BLOCK_COMPONENT_REGISTRY',\n);\n\n/** Optional fallback component rendered for unregistered block types. */\nexport const BLOCK_FALLBACK_COMPONENT = new InjectionToken<Type<unknown>>(\n\t'BLOCK_FALLBACK_COMPONENT',\n);\n\n/**\n * Provide block components for the block renderer via DI.\n *\n * @example\n * ```typescript\n * providers: [\n * ...provideBlockComponents({\n * hero: HeroBlockComponent,\n * textBlock: TextBlockComponent,\n * feature: FeatureBlockComponent,\n * }),\n * ]\n * ```\n */\nexport function provideBlockComponents(registry: Record<string, Type<unknown>>): Provider[] {\n\treturn [{ provide: BLOCK_COMPONENT_REGISTRY, useValue: new Map(Object.entries(registry)) }];\n}\n","/**\n * Block Admin Mode Service\n *\n * Runtime-togglable service controlling whether block admin mode is active.\n * When active, the BlockRendererComponent shows hover overlays with edit buttons.\n *\n * Unlike the deprecated BLOCK_ADMIN_MODE injection token (compile-time boolean),\n * this service can be toggled at runtime via query param, admin toolbar, or API.\n *\n * The `isAdmin` property can be replaced with a computed signal to derive admin\n * mode from an external reactive source (e.g., auth service).\n */\n\nimport { Injectable, isSignal, signal, type Provider, type Signal } from '@angular/core';\n\n@Injectable()\nexport class BlockAdminModeService {\n\tprivate readonly _isAdmin = signal(false);\n\n\t/** Current admin mode state. Can be replaced with a computed for reactive sources. */\n\tisAdmin: Signal<boolean> = this._isAdmin.asReadonly();\n\n\tenable(): void {\n\t\tthis._isAdmin.set(true);\n\t}\n\n\tdisable(): void {\n\t\tthis._isAdmin.set(false);\n\t}\n\n\ttoggle(): void {\n\t\tthis._isAdmin.update((v) => !v);\n\t}\n}\n\n/**\n * Provide BlockAdminModeService with an initial value or reactive signal source.\n *\n * @param initialValue - Whether admin mode starts enabled.\n * Can be a boolean, a factory function (for SSR safety), or a Signal<boolean>\n * to reactively derive admin mode from an external source.\n *\n * @example\n * ```typescript\n * // Static value\n * providers: [...provideBlockAdminMode(true)]\n *\n * // Factory function\n * providers: [...provideBlockAdminMode(() => isInPreviewIframe())]\n *\n * // Reactive signal source\n * providers: [...provideBlockAdminMode(authService.isAdmin)]\n * ```\n */\nexport function provideBlockAdminMode(\n\tinitialValue: boolean | (() => boolean) | Signal<boolean> = false,\n): Provider[] {\n\treturn [\n\t\t{\n\t\t\tprovide: BlockAdminModeService,\n\t\t\tuseFactory: (): BlockAdminModeService => {\n\t\t\t\tconst service = new BlockAdminModeService();\n\t\t\t\tif (isSignal(initialValue)) {\n\t\t\t\t\tservice.isAdmin = initialValue;\n\t\t\t\t} else {\n\t\t\t\t\tconst value = typeof initialValue === 'function' ? initialValue() : initialValue;\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tservice.enable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn service;\n\t\t\t},\n\t\t},\n\t];\n}\n","/**\n * Block Outlet Component\n *\n * Programmatically renders a single block using ViewContainerRef.createComponent().\n * Looks up the component type from the BLOCK_COMPONENT_REGISTRY injection token.\n * Falls back to BLOCK_FALLBACK_COMPONENT for unregistered types, or renders nothing.\n *\n * Each instantiated component receives block data via `setInput('data', blockData)`.\n */\n\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\ttype ComponentRef,\n\teffect,\n\tinject,\n\tinput,\n\tViewContainerRef,\n} from '@angular/core';\nimport { BLOCK_COMPONENT_REGISTRY, BLOCK_FALLBACK_COMPONENT } from './block-renderer.types';\n\n@Component({\n\tselector: 'mcms-block-outlet',\n\ttemplate: ``,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockOutletComponent {\n\tprivate readonly vcr = inject(ViewContainerRef);\n\tprivate readonly registry = inject(BLOCK_COMPONENT_REGISTRY);\n\tprivate readonly fallback = inject(BLOCK_FALLBACK_COMPONENT, { optional: true });\n\n\t/** The block type slug used to look up the component in the registry. */\n\treadonly blockType = input.required<string>();\n\n\t/** The block data object passed to the instantiated component via setInput. */\n\treadonly blockData = input.required<Record<string, unknown>>();\n\n\tprivate componentRef: ComponentRef<unknown> | null = null;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst type = this.blockType();\n\t\t\tconst data = this.blockData();\n\t\t\tconst componentType = this.registry.get(type) ?? this.fallback ?? null;\n\n\t\t\tthis.vcr.clear();\n\t\t\tthis.componentRef = null;\n\n\t\t\tif (componentType) {\n\t\t\t\tthis.componentRef = this.vcr.createComponent(componentType);\n\t\t\t\tthis.componentRef.setInput('data', data);\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Block Renderer Component\n *\n * Iterates over a blocks array and renders each block via BlockOutletComponent.\n * The `typeField` input configures which key in each block record holds the\n * block type discriminator (defaults to 'blockType').\n *\n * When BLOCK_ADMIN_MODE is provided and true, shows hover overlays with edit\n * buttons on each block. Emits `editBlock` events with the block index.\n *\n * @example\n * ```html\n * <mcms-block-renderer [blocks]=\"blocks()\" />\n * ```\n */\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { BlockOutletComponent } from './block-outlet.component';\nimport { BLOCK_ADMIN_MODE } from './block-renderer.types';\nimport { BlockAdminModeService } from './block-admin-mode.service';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n@Component({\n\tselector: 'mcms-block-renderer',\n\timports: [BlockOutletComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'block',\n\t},\n\ttemplate: `\n\t\t@for (block of blocks(); track $index) {\n\t\t\t@if (getBlockType(block); as type) {\n\t\t\t\t@if (adminMode()) {\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"group relative\"\n\t\t\t\t\t\tdata-testid=\"block-edit-wrapper\"\n\t\t\t\t\t\t[attr.data-block-type]=\"type\"\n\t\t\t\t\t\t[attr.data-block-index]=\"$index\"\n\t\t\t\t\t\t[attr.data-block-track]=\"getBlockTrack(block)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<mcms-block-outlet [blockType]=\"type\" [blockData]=\"block\" />\n\t\t\t\t\t\t<!-- Admin edit overlay -->\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"absolute inset-0 border-2 border-primary/40 rounded-md\"></div>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"absolute top-2 right-2 pointer-events-auto bg-primary text-primary-foreground px-3 py-1.5 rounded-md text-sm font-medium shadow-lg hover:bg-primary/90 transition-colors\"\n\t\t\t\t\t\t\t\t(click)=\"onEditBlock($index)\"\n\t\t\t\t\t\t\t\tdata-testid=\"block-edit-button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tEdit Block\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t} @else {\n\t\t\t\t\t<mcms-block-outlet\n\t\t\t\t\t\t[blockType]=\"type\"\n\t\t\t\t\t\t[blockData]=\"block\"\n\t\t\t\t\t\t[attr.data-block-type]=\"type\"\n\t\t\t\t\t\t[attr.data-block-index]=\"$index\"\n\t\t\t\t\t\t[attr.data-block-track]=\"getBlockTrack(block)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class BlockRendererComponent {\n\t/** Array of block data records to render. */\n\treadonly blocks = input<Record<string, unknown>[]>([]);\n\n\t/** Key used to read the block type from each record. Defaults to 'blockType'. */\n\treadonly typeField = input('blockType');\n\n\t/** Emitted when an admin clicks the edit button on a block. Payload is the block index. */\n\treadonly editBlock = output<number>();\n\n\t/** Whether admin mode is active (shows edit overlays). Prefers service over deprecated token. */\n\tprivate readonly adminModeService = inject(BlockAdminModeService, { optional: true });\n\tprivate readonly adminModeToken = inject(BLOCK_ADMIN_MODE, { optional: true }) ?? false;\n\treadonly adminMode = computed(\n\t\t(): boolean => this.adminModeService?.isAdmin() ?? this.adminModeToken,\n\t);\n\n\t/** Extract the block type string from a block record. */\n\tgetBlockType(block: Record<string, unknown>): string | null {\n\t\tconst val = block[this.typeField()];\n\t\treturn typeof val === 'string' ? val : null;\n\t}\n\n\t/**\n\t * Read the `_analytics` group from block data and return a tracking descriptor.\n\t * Returns null if no tracking is configured (attribute won't be rendered).\n\t */\n\tgetBlockTrack(block: Record<string, unknown>): string | null {\n\t\tconst analytics = block['_analytics'];\n\t\tif (!isRecord(analytics)) return null;\n\n\t\tconst parts: string[] = [];\n\t\tif (analytics['trackImpressions']) parts.push('impressions');\n\t\tif (analytics['trackHover']) parts.push('hover');\n\t\treturn parts.length > 0 ? parts.join(',') : null;\n\t}\n\n\tonEditBlock(index: number): void {\n\t\tthis.editBlock.emit(index);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\n\n// Form Components\nimport { Button } from '../button/button.component';\nimport { Input } from '../input/input.component';\nimport { Textarea } from '../textarea/textarea.component';\nimport { Checkbox } from '../checkbox/checkbox.component';\nimport { Switch } from '../switch/switch.component';\nimport { Select } from '../select/select.component';\nimport { RadioGroup } from '../radio-group/radio-group.component';\nimport { Label } from '../label/label.component';\n\n// Container Components\nimport { Card } from '../card/card.component';\nimport { CardHeader } from '../card/card-header.component';\nimport { CardTitle } from '../card/card-title.component';\nimport { CardDescription } from '../card/card-description.component';\nimport { CardContent } from '../card/card-content.component';\nimport { CardFooter } from '../card/card-footer.component';\n\nimport { Alert } from '../alert/alert.component';\nimport { AlertTitle } from '../alert/alert-title.component';\nimport { AlertDescription } from '../alert/alert-description.component';\n\n// Feedback Components\nimport { ToastService } from '../toast/toast.service';\nimport { ToastContainer } from '../toast/toast-container.component';\nimport { Spinner } from '../spinner/spinner.component';\nimport { Skeleton } from '../skeleton/skeleton.component';\nimport { Progress } from '../progress/progress.component';\nimport { EmptyState } from '../empty-state/empty-state.component';\n\n// Overlay Components\nimport { TooltipTrigger } from '../tooltip/tooltip-trigger.directive';\nimport { PopoverTrigger } from '../popover/popover-trigger.directive';\nimport { PopoverContent } from '../popover/popover-content.component';\nimport { DropdownTrigger } from '../dropdown-menu/dropdown-trigger.directive';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu.component';\nimport { DropdownMenuItem } from '../dropdown-menu/dropdown-menu-item.component';\nimport { DropdownSeparator } from '../dropdown-menu/dropdown-separator.component';\nimport { DropdownLabel } from '../dropdown-menu/dropdown-label.component';\nimport { ConfirmationService } from '../confirmation-dialog/confirmation.service';\n\n// Navigation Components\nimport { Tabs } from '../tabs/tabs.component';\nimport { TabsList } from '../tabs/tabs-list.component';\nimport { TabsTrigger } from '../tabs/tabs-trigger.component';\nimport { TabsContent } from '../tabs/tabs-content.component';\n\nimport { Accordion } from '../accordion/accordion.component';\nimport { AccordionItem } from '../accordion/accordion-item.component';\nimport { AccordionTrigger } from '../accordion/accordion-trigger.component';\nimport { AccordionContent } from '../accordion/accordion-content.component';\n\nimport { Breadcrumbs } from '../breadcrumbs/breadcrumbs.component';\nimport { BreadcrumbItem } from '../breadcrumbs/breadcrumb-item.component';\nimport { BreadcrumbSeparator } from '../breadcrumbs/breadcrumb-separator.component';\n\nimport { Pagination } from '../pagination/pagination.component';\n\nimport { Sidebar } from '../sidebar/sidebar.component';\nimport { SidebarHeader } from '../sidebar/sidebar-header.component';\nimport { SidebarContent } from '../sidebar/sidebar-content.component';\nimport { SidebarFooter } from '../sidebar/sidebar-footer.component';\nimport { SidebarNav } from '../sidebar/sidebar-nav.component';\nimport { SidebarNavItem } from '../sidebar/sidebar-nav-item.component';\nimport { SidebarSection } from '../sidebar/sidebar-section.component';\n\n// Data Display Components\nimport { Table } from '../table/table.component';\nimport { TableHeader } from '../table/table-header.component';\nimport { TableBody } from '../table/table-body.component';\nimport { TableRow } from '../table/table-row.component';\nimport { TableHead } from '../table/table-head.component';\nimport { TableCell } from '../table/table-cell.component';\nimport { TableCaption } from '../table/table-caption.component';\n\nimport { Badge } from '../badge/badge.component';\nimport { Avatar } from '../avatar/avatar.component';\nimport { AvatarFallback } from '../avatar/avatar-fallback.component';\nimport { Separator } from '../separator/separator.component';\n\n// Complex Components\nimport { Command } from '../command/command.component';\nimport { CommandInput } from '../command/command-input.component';\nimport { CommandList } from '../command/command-list.component';\nimport { CommandEmpty } from '../command/command-empty.component';\nimport { CommandGroup } from '../command/command-group.component';\nimport { CommandItem } from '../command/command-item.component';\nimport { CommandSeparator } from '../command/command-separator.component';\n\n// DataTable\nimport { DataTable } from '../data-table/data-table.component';\nimport type { DataTableColumn, DataTableRowAction } from '../data-table/data-table.types';\n\n// SearchInput\nimport { SearchInput } from '../search-input/search-input.component';\n\n// FieldDisplay\nimport { FieldDisplay } from '../field-display/field-display.component';\n\ninterface KitchenSinkUser {\n\tid: number;\n\tname: string;\n\temail: string;\n\trole: string;\n\tstatus: string;\n}\n\n/**\n * Kitchen Sink page showcasing all UI components.\n *\n * @example\n * ```typescript\n * // In routing:\n * { path: 'kitchen-sink', loadComponent: () => import('@momentumcms/ui').then(m => m.KitchenSinkPage) }\n * ```\n */\n@Component({\n\tselector: 'mcms-kitchen-sink-page',\n\timports: [\n\t\t// Form\n\t\tButton,\n\t\tInput,\n\t\tTextarea,\n\t\tCheckbox,\n\t\tSwitch,\n\t\tSelect,\n\t\tRadioGroup,\n\t\tLabel,\n\t\t// Card\n\t\tCard,\n\t\tCardHeader,\n\t\tCardTitle,\n\t\tCardDescription,\n\t\tCardContent,\n\t\tCardFooter,\n\t\t// Alert\n\t\tAlert,\n\t\tAlertTitle,\n\t\tAlertDescription,\n\t\t// Toast\n\t\tToastContainer,\n\t\t// Feedback\n\t\tSpinner,\n\t\tSkeleton,\n\t\tProgress,\n\t\tEmptyState,\n\t\t// Tooltip\n\t\tTooltipTrigger,\n\t\t// Popover\n\t\tPopoverTrigger,\n\t\tPopoverContent,\n\t\t// Dropdown\n\t\tDropdownTrigger,\n\t\tDropdownMenu,\n\t\tDropdownMenuItem,\n\t\tDropdownSeparator,\n\t\tDropdownLabel,\n\t\t// Tabs\n\t\tTabs,\n\t\tTabsList,\n\t\tTabsTrigger,\n\t\tTabsContent,\n\t\t// Accordion\n\t\tAccordion,\n\t\tAccordionItem,\n\t\tAccordionTrigger,\n\t\tAccordionContent,\n\t\t// Breadcrumbs\n\t\tBreadcrumbs,\n\t\tBreadcrumbItem,\n\t\tBreadcrumbSeparator,\n\t\t// Pagination\n\t\tPagination,\n\t\t// Sidebar\n\t\tSidebar,\n\t\tSidebarHeader,\n\t\tSidebarContent,\n\t\tSidebarFooter,\n\t\tSidebarNav,\n\t\tSidebarNavItem,\n\t\tSidebarSection,\n\t\t// Table\n\t\tTable,\n\t\tTableHeader,\n\t\tTableBody,\n\t\tTableRow,\n\t\tTableHead,\n\t\tTableCell,\n\t\tTableCaption,\n\t\t// Data Display\n\t\tBadge,\n\t\tAvatar,\n\t\tAvatarFallback,\n\t\tSeparator,\n\t\t// Command\n\t\tCommand,\n\t\tCommandInput,\n\t\tCommandList,\n\t\tCommandEmpty,\n\t\tCommandGroup,\n\t\tCommandItem,\n\t\tCommandSeparator,\n\t\t// DataTable\n\t\tDataTable,\n\t\t// SearchInput\n\t\tSearchInput,\n\t\t// FieldDisplay\n\t\tFieldDisplay,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'block min-h-screen bg-background text-foreground',\n\t\tngSkipHydration: 'true',\n\t\t'(document:keydown)': 'handleKeyboardShortcut($event)',\n\t},\n\ttemplate: `\n\t\t<mcms-toast-container />\n\n\t\t<div class=\"container mx-auto px-4 py-8 max-w-6xl\">\n\t\t\t<header class=\"mb-12\">\n\t\t\t\t<h1 class=\"text-4xl font-bold mb-2\">Kitchen Sink</h1>\n\t\t\t\t<p class=\"text-muted-foreground text-lg\">\n\t\t\t\t\tA comprehensive showcase of all UI components in the library.\n\t\t\t\t</p>\n\t\t\t</header>\n\n\t\t\t<!-- Buttons Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Buttons</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"space-y-4\">\n\t\t\t\t\t<div class=\"flex flex-wrap gap-3\">\n\t\t\t\t\t\t<button mcms-button variant=\"primary\">Primary</button>\n\t\t\t\t\t\t<button mcms-button variant=\"secondary\">Secondary</button>\n\t\t\t\t\t\t<button mcms-button variant=\"destructive\">Destructive</button>\n\t\t\t\t\t\t<button mcms-button variant=\"outline\">Outline</button>\n\t\t\t\t\t\t<button mcms-button variant=\"ghost\">Ghost</button>\n\t\t\t\t\t\t<button mcms-button variant=\"link\">Link</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-wrap gap-3 items-center\">\n\t\t\t\t\t\t<button mcms-button size=\"sm\">Small</button>\n\t\t\t\t\t\t<button mcms-button size=\"md\">Medium</button>\n\t\t\t\t\t\t<button mcms-button size=\"lg\">Large</button>\n\t\t\t\t\t\t<button mcms-button size=\"icon\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"M5 12h14\" />\n\t\t\t\t\t\t\t\t<path d=\"M12 5v14\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button mcms-button [disabled]=\"true\">Disabled</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Form Inputs Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Form Inputs</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t<mcms-label>Text Input</mcms-label>\n\t\t\t\t\t\t<mcms-input placeholder=\"Enter text...\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t<mcms-label>Disabled Input</mcms-label>\n\t\t\t\t\t\t<mcms-input placeholder=\"Disabled...\" [disabled]=\"true\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"space-y-2 md:col-span-2\">\n\t\t\t\t\t\t<mcms-label>Textarea</mcms-label>\n\t\t\t\t\t\t<mcms-textarea placeholder=\"Enter longer text...\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex items-center gap-4\">\n\t\t\t\t\t\t<mcms-checkbox>Remember me</mcms-checkbox>\n\t\t\t\t\t\t<mcms-checkbox [value]=\"true\">Checked</mcms-checkbox>\n\t\t\t\t\t\t<mcms-checkbox [disabled]=\"true\">Disabled</mcms-checkbox>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex items-center gap-4\">\n\t\t\t\t\t\t<mcms-switch>Notifications</mcms-switch>\n\t\t\t\t\t\t<mcms-switch [value]=\"true\">Enabled</mcms-switch>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t<mcms-label>Select</mcms-label>\n\t\t\t\t\t\t<mcms-select [options]=\"selectOptions\" placeholder=\"Choose an option\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t<mcms-label>Radio Group</mcms-label>\n\t\t\t\t\t\t<mcms-radio-group [options]=\"radioOptions\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- SearchInput Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Search Input</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Default Search</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-search-input [(value)]=\"searchValue\" placeholder=\"Search...\" />\n\t\t\t\t\t\t\t<p class=\"mt-2 text-sm text-muted-foreground\">Value: {{ searchValue() }}</p>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Custom Placeholder</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-search-input placeholder=\"Search users by name or email...\" />\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Cards Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Cards</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Basic Card</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description>A simple card with content.</mcms-card-description>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<p>This is the card content area where you can place any content.</p>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Card with Footer</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description>This card has action buttons.</mcms-card-description>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<p>Cards can contain forms, images, or any other content.</p>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t\t<mcms-card-footer class=\"flex gap-2\">\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\">Cancel</button>\n\t\t\t\t\t\t\t<button mcms-button>Save</button>\n\t\t\t\t\t\t</mcms-card-footer>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Interactive Card</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description>With form elements.</mcms-card-description>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t\t\t<mcms-label>Email</mcms-label>\n\t\t\t\t\t\t\t\t<mcms-input type=\"email\" placeholder=\"email@example.com\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t\t<mcms-card-footer>\n\t\t\t\t\t\t\t<button mcms-button class=\"w-full\">Subscribe</button>\n\t\t\t\t\t\t</mcms-card-footer>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Alerts Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Alerts</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"space-y-4\">\n\t\t\t\t\t<mcms-alert variant=\"default\">\n\t\t\t\t\t\t<mcms-alert-title>Default Alert</mcms-alert-title>\n\t\t\t\t\t\t<mcms-alert-description\n\t\t\t\t\t\t\t>This is a default informational alert message.</mcms-alert-description\n\t\t\t\t\t\t>\n\t\t\t\t\t</mcms-alert>\n\n\t\t\t\t\t<mcms-alert variant=\"success\">\n\t\t\t\t\t\t<mcms-alert-title>Success!</mcms-alert-title>\n\t\t\t\t\t\t<mcms-alert-description\n\t\t\t\t\t\t\t>Your changes have been saved successfully.</mcms-alert-description\n\t\t\t\t\t\t>\n\t\t\t\t\t</mcms-alert>\n\n\t\t\t\t\t<mcms-alert variant=\"warning\">\n\t\t\t\t\t\t<mcms-alert-title>Warning</mcms-alert-title>\n\t\t\t\t\t\t<mcms-alert-description\n\t\t\t\t\t\t\t>Please review your input before proceeding.</mcms-alert-description\n\t\t\t\t\t\t>\n\t\t\t\t\t</mcms-alert>\n\n\t\t\t\t\t<mcms-alert variant=\"destructive\">\n\t\t\t\t\t\t<mcms-alert-title>Error</mcms-alert-title>\n\t\t\t\t\t\t<mcms-alert-description>Something went wrong. Please try again.</mcms-alert-description>\n\t\t\t\t\t</mcms-alert>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Feedback Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Feedback</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Spinners</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"flex items-center gap-4\">\n\t\t\t\t\t\t\t<mcms-spinner size=\"sm\" />\n\t\t\t\t\t\t\t<mcms-spinner size=\"md\" />\n\t\t\t\t\t\t\t<mcms-spinner size=\"lg\" />\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Progress</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"space-y-3\">\n\t\t\t\t\t\t\t<mcms-progress [value]=\"25\" />\n\t\t\t\t\t\t\t<mcms-progress [value]=\"50\" />\n\t\t\t\t\t\t\t<mcms-progress [value]=\"75\" />\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card class=\"md:col-span-2\">\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Skeleton Loading</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-4\">\n\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-12 w-12 rounded-full\" />\n\t\t\t\t\t\t\t\t<div class=\"space-y-2 flex-1\">\n\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-[250px]\" />\n\t\t\t\t\t\t\t\t\t<mcms-skeleton class=\"h-4 w-[200px]\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Toasts</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"showToast('default')\">Default</button>\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"showToast('success')\">Success</button>\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"showToast('error')\">Error</button>\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"showToast('warning')\">Warning</button>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Dialogs</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"openDialog()\">Open Dialog</button>\n\t\t\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"showConfirmation()\">\n\t\t\t\t\t\t\t\tConfirmation\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Badges & Avatars Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Badges & Avatars</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Badges</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t<mcms-badge variant=\"default\">Default</mcms-badge>\n\t\t\t\t\t\t\t<mcms-badge variant=\"secondary\">Secondary</mcms-badge>\n\t\t\t\t\t\t\t<mcms-badge variant=\"success\">Success</mcms-badge>\n\t\t\t\t\t\t\t<mcms-badge variant=\"warning\">Warning</mcms-badge>\n\t\t\t\t\t\t\t<mcms-badge variant=\"destructive\">Destructive</mcms-badge>\n\t\t\t\t\t\t\t<mcms-badge variant=\"outline\">Outline</mcms-badge>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Avatars</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content class=\"flex items-center gap-4\">\n\t\t\t\t\t\t\t<mcms-avatar size=\"sm\">\n\t\t\t\t\t\t\t\t<mcms-avatar-fallback [delayMs]=\"0\">SM</mcms-avatar-fallback>\n\t\t\t\t\t\t\t</mcms-avatar>\n\t\t\t\t\t\t\t<mcms-avatar size=\"md\">\n\t\t\t\t\t\t\t\t<mcms-avatar-fallback [delayMs]=\"0\">MD</mcms-avatar-fallback>\n\t\t\t\t\t\t\t</mcms-avatar>\n\t\t\t\t\t\t\t<mcms-avatar size=\"lg\">\n\t\t\t\t\t\t\t\t<mcms-avatar-fallback [delayMs]=\"0\">LG</mcms-avatar-fallback>\n\t\t\t\t\t\t\t</mcms-avatar>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Navigation Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Navigation</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"space-y-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Breadcrumbs</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-breadcrumbs>\n\t\t\t\t\t\t\t\t<mcms-breadcrumb-item href=\"#\">Home</mcms-breadcrumb-item>\n\t\t\t\t\t\t\t\t<mcms-breadcrumb-separator />\n\t\t\t\t\t\t\t\t<mcms-breadcrumb-item href=\"#\">Products</mcms-breadcrumb-item>\n\t\t\t\t\t\t\t\t<mcms-breadcrumb-separator />\n\t\t\t\t\t\t\t\t<mcms-breadcrumb-item [current]=\"true\">Details</mcms-breadcrumb-item>\n\t\t\t\t\t\t\t</mcms-breadcrumbs>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Tabs</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-tabs defaultValue=\"tab1\">\n\t\t\t\t\t\t\t\t<mcms-tabs-list>\n\t\t\t\t\t\t\t\t\t<mcms-tabs-trigger value=\"tab1\">Account</mcms-tabs-trigger>\n\t\t\t\t\t\t\t\t\t<mcms-tabs-trigger value=\"tab2\">Password</mcms-tabs-trigger>\n\t\t\t\t\t\t\t\t\t<mcms-tabs-trigger value=\"tab3\">Settings</mcms-tabs-trigger>\n\t\t\t\t\t\t\t\t</mcms-tabs-list>\n\t\t\t\t\t\t\t\t<mcms-tabs-content value=\"tab1\">\n\t\t\t\t\t\t\t\t\t<p class=\"text-muted-foreground\">Manage your account settings and preferences.</p>\n\t\t\t\t\t\t\t\t</mcms-tabs-content>\n\t\t\t\t\t\t\t\t<mcms-tabs-content value=\"tab2\">\n\t\t\t\t\t\t\t\t\t<p class=\"text-muted-foreground\">Change your password and security settings.</p>\n\t\t\t\t\t\t\t\t</mcms-tabs-content>\n\t\t\t\t\t\t\t\t<mcms-tabs-content value=\"tab3\">\n\t\t\t\t\t\t\t\t\t<p class=\"text-muted-foreground\">Configure application settings.</p>\n\t\t\t\t\t\t\t\t</mcms-tabs-content>\n\t\t\t\t\t\t\t</mcms-tabs>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Accordion</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-accordion>\n\t\t\t\t\t\t\t\t<mcms-accordion-item value=\"item-1\">\n\t\t\t\t\t\t\t\t\t<mcms-accordion-trigger panelId=\"item-1\"\n\t\t\t\t\t\t\t\t\t\t>Is it accessible?</mcms-accordion-trigger\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<mcms-accordion-content panelId=\"item-1\">\n\t\t\t\t\t\t\t\t\t\tYes. It adheres to the WAI-ARIA design pattern.\n\t\t\t\t\t\t\t\t\t</mcms-accordion-content>\n\t\t\t\t\t\t\t\t</mcms-accordion-item>\n\t\t\t\t\t\t\t\t<mcms-accordion-item value=\"item-2\">\n\t\t\t\t\t\t\t\t\t<mcms-accordion-trigger panelId=\"item-2\">Is it styled?</mcms-accordion-trigger>\n\t\t\t\t\t\t\t\t\t<mcms-accordion-content panelId=\"item-2\">\n\t\t\t\t\t\t\t\t\t\tYes. It comes with default styles using Tailwind CSS.\n\t\t\t\t\t\t\t\t\t</mcms-accordion-content>\n\t\t\t\t\t\t\t\t</mcms-accordion-item>\n\t\t\t\t\t\t\t\t<mcms-accordion-item value=\"item-3\">\n\t\t\t\t\t\t\t\t\t<mcms-accordion-trigger panelId=\"item-3\">Is it animated?</mcms-accordion-trigger>\n\t\t\t\t\t\t\t\t\t<mcms-accordion-content panelId=\"item-3\">\n\t\t\t\t\t\t\t\t\t\tYes. It's animated by default with smooth transitions.\n\t\t\t\t\t\t\t\t\t</mcms-accordion-content>\n\t\t\t\t\t\t\t\t</mcms-accordion-item>\n\t\t\t\t\t\t\t</mcms-accordion>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Pagination</mcms-card-title>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-pagination\n\t\t\t\t\t\t\t\t[currentPage]=\"currentPage()\"\n\t\t\t\t\t\t\t\t[totalPages]=\"10\"\n\t\t\t\t\t\t\t\t(pageChange)=\"currentPage.set($event)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card class=\"md:col-span-2\">\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Sidebar</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description\n\t\t\t\t\t\t\t\t>Navigation sidebar with sections and items</mcms-card-description\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<div class=\"h-[400px] border border-border rounded-lg overflow-hidden flex\">\n\t\t\t\t\t\t\t\t<mcms-sidebar width=\"14rem\">\n\t\t\t\t\t\t\t\t\t<mcms-sidebar-header>\n\t\t\t\t\t\t\t\t\t\t<span class=\"font-semibold\">My App</span>\n\t\t\t\t\t\t\t\t\t</mcms-sidebar-header>\n\t\t\t\t\t\t\t\t\t<mcms-sidebar-content>\n\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav>\n\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"Dashboard\" href=\"#\" [active]=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"Users\" href=\"#\" />\n\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-section title=\"Content\" [collapsible]=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"Posts\" href=\"#\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"Media\" href=\"#\" />\n\t\t\t\t\t\t\t\t\t\t\t</mcms-sidebar-section>\n\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-section title=\"Settings\">\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"General\" href=\"#\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-sidebar-nav-item label=\"Security\" href=\"#\" [disabled]=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t</mcms-sidebar-section>\n\t\t\t\t\t\t\t\t\t\t</mcms-sidebar-nav>\n\t\t\t\t\t\t\t\t\t</mcms-sidebar-content>\n\t\t\t\t\t\t\t\t\t<mcms-sidebar-footer>\n\t\t\t\t\t\t\t\t\t\t<div class=\"flex items-center gap-2 px-2\">\n\t\t\t\t\t\t\t\t\t\t\t<mcms-avatar size=\"sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-avatar-fallback [delayMs]=\"0\">JD</mcms-avatar-fallback>\n\t\t\t\t\t\t\t\t\t\t\t</mcms-avatar>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"text-sm\">John Doe</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</mcms-sidebar-footer>\n\t\t\t\t\t\t\t\t</mcms-sidebar>\n\t\t\t\t\t\t\t\t<div class=\"flex-1 p-4 bg-muted/20\">\n\t\t\t\t\t\t\t\t\t<p class=\"text-muted-foreground\">Main content area</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Overlays Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Overlays</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"flex flex-wrap gap-4\">\n\t\t\t\t\t<button mcms-button variant=\"outline\" [mcmsTooltip]=\"'This is a tooltip'\">\n\t\t\t\t\t\tHover for Tooltip\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button mcms-button variant=\"outline\" [mcmsPopoverTrigger]=\"popoverContent\">\n\t\t\t\t\t\tClick for Popover\n\t\t\t\t\t</button>\n\t\t\t\t\t<ng-template #popoverContent>\n\t\t\t\t\t\t<mcms-popover-content>\n\t\t\t\t\t\t\t<div class=\"p-2\">\n\t\t\t\t\t\t\t\t<p class=\"font-medium\">Popover Content</p>\n\t\t\t\t\t\t\t\t<p class=\"text-sm text-muted-foreground\">This is a popover with more content.</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</mcms-popover-content>\n\t\t\t\t\t</ng-template>\n\n\t\t\t\t\t<button mcms-button variant=\"outline\" [mcmsDropdownTrigger]=\"dropdownContent\">\n\t\t\t\t\t\tDropdown Menu\n\t\t\t\t\t</button>\n\t\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t\t<mcms-dropdown-menu>\n\t\t\t\t\t\t\t<mcms-dropdown-label>My Account</mcms-dropdown-label>\n\t\t\t\t\t\t\t<mcms-dropdown-separator />\n\t\t\t\t\t\t\t<button mcms-dropdown-item value=\"profile\">Profile</button>\n\t\t\t\t\t\t\t<button mcms-dropdown-item value=\"settings\">Settings</button>\n\t\t\t\t\t\t\t<mcms-dropdown-separator />\n\t\t\t\t\t\t\t<button mcms-dropdown-item value=\"logout\">Log out</button>\n\t\t\t\t\t\t</mcms-dropdown-menu>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- Table Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Table</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<mcms-table>\n\t\t\t\t\t<mcms-table-caption>A list of recent invoices.</mcms-table-caption>\n\t\t\t\t\t<mcms-table-header>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t<mcms-table-head>Invoice</mcms-table-head>\n\t\t\t\t\t\t\t<mcms-table-head>Status</mcms-table-head>\n\t\t\t\t\t\t\t<mcms-table-head>Method</mcms-table-head>\n\t\t\t\t\t\t\t<mcms-table-head style=\"text-align: right;\">Amount</mcms-table-head>\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t</mcms-table-header>\n\t\t\t\t\t<mcms-table-body>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"font-weight: 500;\">INV001</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell><mcms-badge variant=\"success\">Paid</mcms-badge></mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell>Credit Card</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"text-align: right;\">$250.00</mcms-table-cell>\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"font-weight: 500;\">INV002</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell><mcms-badge variant=\"warning\">Pending</mcms-badge></mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell>PayPal</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"text-align: right;\">$150.00</mcms-table-cell>\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t\t<mcms-table-row>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"font-weight: 500;\">INV003</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell\n\t\t\t\t\t\t\t\t><mcms-badge variant=\"destructive\">Overdue</mcms-badge></mcms-table-cell\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mcms-table-cell>Bank Transfer</mcms-table-cell>\n\t\t\t\t\t\t\t<mcms-table-cell style=\"text-align: right;\">$350.00</mcms-table-cell>\n\t\t\t\t\t\t</mcms-table-row>\n\t\t\t\t\t</mcms-table-body>\n\t\t\t\t</mcms-table>\n\t\t\t</section>\n\n\t\t\t<!-- DataTable Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">DataTable</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"space-y-6\">\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Full-Featured DataTable</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description>\n\t\t\t\t\t\t\t\tDataTable with search, sorting, pagination, selection, and row actions\n\t\t\t\t\t\t\t</mcms-card-description>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-data-table\n\t\t\t\t\t\t\t\t[data]=\"tableData\"\n\t\t\t\t\t\t\t\t[columns]=\"tableColumns\"\n\t\t\t\t\t\t\t\t[selectable]=\"true\"\n\t\t\t\t\t\t\t\t[searchable]=\"true\"\n\t\t\t\t\t\t\t\t[paginated]=\"true\"\n\t\t\t\t\t\t\t\t[pageSize]=\"3\"\n\t\t\t\t\t\t\t\t[rowActions]=\"tableRowActions\"\n\t\t\t\t\t\t\t\t[(selectedItems)]=\"selectedTableItems\"\n\t\t\t\t\t\t\t\t(rowAction)=\"onTableRowAction($event)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p class=\"mt-4 text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\tSelected: {{ selectedTableItems().length }} items\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\n\t\t\t\t\t<mcms-card>\n\t\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t\t<mcms-card-title>Simple DataTable</mcms-card-title>\n\t\t\t\t\t\t\t<mcms-card-description>Basic table without extra features</mcms-card-description>\n\t\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t\t<mcms-card-content>\n\t\t\t\t\t\t\t<mcms-data-table\n\t\t\t\t\t\t\t\t[data]=\"tableData.slice(0, 4)\"\n\t\t\t\t\t\t\t\t[columns]=\"tableColumns\"\n\t\t\t\t\t\t\t\t[searchable]=\"false\"\n\t\t\t\t\t\t\t\t[paginated]=\"false\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</mcms-card-content>\n\t\t\t\t\t</mcms-card>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- FieldDisplay Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Field Display</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-4 gap-6\">\n\t\t\t\t\t<mcms-field-display [value]=\"'John Doe'\" type=\"text\" label=\"Name\" />\n\t\t\t\t\t<mcms-field-display [value]=\"42500\" type=\"number\" label=\"Salary\" />\n\t\t\t\t\t<mcms-field-display [value]=\"'2024-06-15'\" type=\"date\" label=\"Start Date\" />\n\t\t\t\t\t<mcms-field-display [value]=\"true\" type=\"boolean\" label=\"Active\" />\n\t\t\t\t\t<mcms-field-display [value]=\"'active'\" type=\"badge\" label=\"Status\" />\n\t\t\t\t\t<mcms-field-display [value]=\"'john@example.com'\" type=\"email\" label=\"Email\" />\n\t\t\t\t\t<mcms-field-display [value]=\"'https://example.com'\" type=\"link\" label=\"Website\" />\n\t\t\t\t\t<mcms-field-display [value]=\"null\" type=\"text\" label=\"Empty\" emptyText=\"N/A\" />\n\t\t\t\t</div>\n\n\t\t\t\t<mcms-card class=\"mt-6\">\n\t\t\t\t\t<mcms-card-header>\n\t\t\t\t\t\t<mcms-card-title>List & JSON Types</mcms-card-title>\n\t\t\t\t\t</mcms-card-header>\n\t\t\t\t\t<mcms-card-content class=\"grid grid-cols-2 gap-6\">\n\t\t\t\t\t\t<mcms-field-display\n\t\t\t\t\t\t\t[value]=\"['Angular', 'TypeScript', 'RxJS']\"\n\t\t\t\t\t\t\ttype=\"list\"\n\t\t\t\t\t\t\tlabel=\"Skills\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<mcms-field-display [value]=\"fieldDisplayJsonData\" type=\"json\" label=\"Config\" />\n\t\t\t\t\t</mcms-card-content>\n\t\t\t\t</mcms-card>\n\t\t\t</section>\n\n\t\t\t<!-- Empty State Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Empty State</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<mcms-empty-state\n\t\t\t\t\ttitle=\"No results found\"\n\t\t\t\t\tdescription=\"Try adjusting your search or filter to find what you're looking for.\"\n\t\t\t\t\ticon=\"search\"\n\t\t\t\t>\n\t\t\t\t\t<button mcms-button variant=\"outline\">Clear filters</button>\n\t\t\t\t</mcms-empty-state>\n\t\t\t</section>\n\n\t\t\t<!-- Command Palette Section -->\n\t\t\t<section class=\"mb-12\">\n\t\t\t\t<h2 class=\"text-2xl font-semibold mb-4\">Command Palette</h2>\n\t\t\t\t<mcms-separator class=\"mb-6\" />\n\n\t\t\t\t<div class=\"flex flex-col items-center gap-4\">\n\t\t\t\t\t<p class=\"text-muted-foreground\">\n\t\t\t\t\t\tPress <kbd class=\"px-2 py-1 bg-muted rounded text-sm font-mono\">⌘K</kbd> or click the\n\t\t\t\t\t\tbutton below\n\t\t\t\t\t</p>\n\t\t\t\t\t<button mcms-button variant=\"outline\" (click)=\"openCommandPalette()\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\tclass=\"mr-2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t\t\t\t\t<path d=\"m21 21-4.3-4.3\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\tOpen Command Palette\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t@if (commandPaletteOpen()) {\n\t\t\t\t\t<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"fixed inset-0 bg-black/50 z-50 flex items-start justify-center pt-[20vh]\"\n\t\t\t\t\t\t(click)=\"closeCommandPalette()\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"w-full max-w-lg\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t(keydown)=\"handleCommandKeydown($event)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mcms-command class=\"rounded-lg border shadow-lg bg-popover\">\n\t\t\t\t\t\t\t\t<mcms-command-input\n\t\t\t\t\t\t\t\t\t[autofocus]=\"true\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"Type a command or search...\"\n\t\t\t\t\t\t\t\t\t[(value)]=\"searchQuery\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<mcms-command-list>\n\t\t\t\t\t\t\t\t\t@if (allFilteredItems().length === 0) {\n\t\t\t\t\t\t\t\t\t\t<mcms-command-empty>No results found.</mcms-command-empty>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (filteredSuggestions().length > 0) {\n\t\t\t\t\t\t\t\t\t\t<mcms-command-group heading=\"Suggestions\">\n\t\t\t\t\t\t\t\t\t\t\t@for (item of filteredSuggestions(); track item.value; let i = $index) {\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-command-item\n\t\t\t\t\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.bg-accent]=\"i === activeIndex()\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.text-accent-foreground]=\"i === activeIndex()\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"selectCommandItem(item)\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t</mcms-command-item>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</mcms-command-group>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (filteredSuggestions().length > 0 && filteredSettings().length > 0) {\n\t\t\t\t\t\t\t\t\t\t<mcms-command-separator />\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (filteredSettings().length > 0) {\n\t\t\t\t\t\t\t\t\t\t<mcms-command-group heading=\"Settings\">\n\t\t\t\t\t\t\t\t\t\t\t@for (item of filteredSettings(); track item.value; let i = $index) {\n\t\t\t\t\t\t\t\t\t\t\t\t<mcms-command-item\n\t\t\t\t\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.bg-accent]=\"filteredSuggestions().length + i === activeIndex()\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.text-accent-foreground]=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilteredSuggestions().length + i === activeIndex()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"selectCommandItem(item)\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t</mcms-command-item>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</mcms-command-group>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</mcms-command-list>\n\t\t\t\t\t\t\t</mcms-command>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</section>\n\t\t</div>\n\t`,\n})\nexport class KitchenSinkPage {\n\tprivate readonly toastService = inject(ToastService);\n\tprivate readonly confirmationService = inject(ConfirmationService);\n\n\treadonly currentPage = signal(1);\n\treadonly commandPaletteOpen = signal(false);\n\treadonly searchQuery = signal('');\n\treadonly activeIndex = signal(0);\n\n\t// SearchInput demo\n\treadonly searchValue = signal('');\n\n\t// FieldDisplay demo\n\treadonly fieldDisplayJsonData = { theme: 'dark', language: 'en', version: '1.0' };\n\n\treadonly commandItems = [\n\t\t{ value: 'calendar', label: 'Calendar', group: 'suggestions' },\n\t\t{ value: 'search-emoji', label: 'Search Emoji', group: 'suggestions' },\n\t\t{ value: 'calculator', label: 'Calculator', group: 'suggestions' },\n\t\t{ value: 'profile', label: 'Profile', group: 'settings' },\n\t\t{ value: 'billing', label: 'Billing', group: 'settings' },\n\t\t{ value: 'settings', label: 'Settings', group: 'settings' },\n\t];\n\n\treadonly filteredSuggestions = computed(() => {\n\t\tconst query = this.searchQuery().toLowerCase();\n\t\treturn this.commandItems\n\t\t\t.filter((item) => item.group === 'suggestions')\n\t\t\t.filter((item) => !query || item.label.toLowerCase().includes(query));\n\t});\n\n\treadonly filteredSettings = computed(() => {\n\t\tconst query = this.searchQuery().toLowerCase();\n\t\treturn this.commandItems\n\t\t\t.filter((item) => item.group === 'settings')\n\t\t\t.filter((item) => !query || item.label.toLowerCase().includes(query));\n\t});\n\n\treadonly allFilteredItems = computed(() => [\n\t\t...this.filteredSuggestions(),\n\t\t...this.filteredSettings(),\n\t]);\n\n\thandleKeyboardShortcut(event: KeyboardEvent): void {\n\t\tif ((event.metaKey || event.ctrlKey) && event.key === 'k') {\n\t\t\tevent.preventDefault();\n\t\t\tthis.commandPaletteOpen.update((open) => !open);\n\t\t}\n\t\tif (event.key === 'Escape' && this.commandPaletteOpen()) {\n\t\t\tthis.closeCommandPalette();\n\t\t}\n\t}\n\n\thandleCommandKeydown(event: KeyboardEvent): void {\n\t\tconst items = this.allFilteredItems();\n\t\tif (items.length === 0) return;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.activeIndex.update((i) => (i + 1) % items.length);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.activeIndex.update((i) => (i - 1 + items.length) % items.length);\n\t\t\t\tbreak;\n\t\t\tcase 'Enter': {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst item = items[this.activeIndex()];\n\t\t\t\tif (item) this.selectCommandItem(item);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectCommandItem(item: { value: string; label: string }): void {\n\t\tthis.toastService.show('Command Selected', `You selected: ${item.label}`);\n\t\tthis.closeCommandPalette();\n\t}\n\n\topenCommandPalette(): void {\n\t\tthis.commandPaletteOpen.set(true);\n\t}\n\n\tcloseCommandPalette(): void {\n\t\tthis.commandPaletteOpen.set(false);\n\t\tthis.searchQuery.set('');\n\t\tthis.activeIndex.set(0);\n\t}\n\n\treadonly selectOptions = [\n\t\t{ value: 'option1', label: 'Option 1' },\n\t\t{ value: 'option2', label: 'Option 2' },\n\t\t{ value: 'option3', label: 'Option 3' },\n\t];\n\n\treadonly radioOptions = [\n\t\t{ value: 'radio1', label: 'Radio 1' },\n\t\t{ value: 'radio2', label: 'Radio 2' },\n\t\t{ value: 'radio3', label: 'Radio 3' },\n\t];\n\n\t// DataTable sample data\n\treadonly tableData: KitchenSinkUser[] = [\n\t\t{ id: 1, name: 'Alice Johnson', email: 'alice@example.com', role: 'Admin', status: 'active' },\n\t\t{ id: 2, name: 'Bob Smith', email: 'bob@example.com', role: 'User', status: 'active' },\n\t\t{\n\t\t\tid: 3,\n\t\t\tname: 'Charlie Brown',\n\t\t\temail: 'charlie@example.com',\n\t\t\trole: 'Editor',\n\t\t\tstatus: 'pending',\n\t\t},\n\t\t{ id: 4, name: 'Diana Prince', email: 'diana@example.com', role: 'User', status: 'inactive' },\n\t\t{ id: 5, name: 'Eve Wilson', email: 'eve@example.com', role: 'Admin', status: 'active' },\n\t\t{ id: 6, name: 'Frank Miller', email: 'frank@example.com', role: 'User', status: 'active' },\n\t];\n\n\treadonly tableColumns: DataTableColumn<KitchenSinkUser>[] = [\n\t\t{ field: 'name', header: 'Name', sortable: true },\n\t\t{ field: 'email', header: 'Email', sortable: true },\n\t\t{ field: 'role', header: 'Role', sortable: true },\n\t\t{ field: 'status', header: 'Status' },\n\t];\n\n\treadonly tableRowActions: DataTableRowAction<KitchenSinkUser>[] = [\n\t\t{ id: 'view', label: 'View' },\n\t\t{ id: 'edit', label: 'Edit' },\n\t\t{ id: 'delete', label: 'Delete', variant: 'destructive' },\n\t];\n\n\treadonly selectedTableItems = signal<KitchenSinkUser[]>([]);\n\n\tonTableRowAction(event: {\n\t\taction: DataTableRowAction<KitchenSinkUser>;\n\t\titem: KitchenSinkUser;\n\t}): void {\n\t\tthis.toastService.show('Row Action', `${event.action.label} clicked on ${event.item.name}`);\n\t}\n\n\tshowToast(type: 'default' | 'success' | 'error' | 'warning'): void {\n\t\tconst messages = {\n\t\t\tdefault: { title: 'Notification', description: 'This is a default toast message.' },\n\t\t\tsuccess: { title: 'Success!', description: 'Your action was completed successfully.' },\n\t\t\terror: { title: 'Error', description: 'Something went wrong. Please try again.' },\n\t\t\twarning: { title: 'Warning', description: 'Please review before proceeding.' },\n\t\t};\n\t\tconst msg = messages[type];\n\t\tswitch (type) {\n\t\t\tcase 'success':\n\t\t\t\tthis.toastService.success(msg.title, msg.description);\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\tthis.toastService.error(msg.title, msg.description);\n\t\t\t\tbreak;\n\t\t\tcase 'warning':\n\t\t\t\tthis.toastService.warning(msg.title, msg.description);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.toastService.show(msg.title, msg.description);\n\t\t}\n\t}\n\n\topenDialog(): void {\n\t\tthis.confirmationService.confirm({\n\t\t\ttitle: 'Example Dialog',\n\t\t\tdescription:\n\t\t\t\t'This is a dialog component. In real usage, you can create custom dialog components using DialogService.',\n\t\t\tconfirmText: 'Got it',\n\t\t\tcancelText: 'Close',\n\t\t});\n\t}\n\n\tshowConfirmation(): void {\n\t\tthis.confirmationService.confirm({\n\t\t\ttitle: 'Are you sure?',\n\t\t\tdescription: 'This action cannot be undone.',\n\t\t\tconfirmText: 'Yes, continue',\n\t\t\tcancelText: 'Cancel',\n\t\t});\n\t}\n}\n","// Badge\nexport * from './lib/badge/badge.types';\nexport * from './lib/badge/badge.component';\n\n// Label\nexport * from './lib/label/label.component';\n\n// Button\nexport * from './lib/button/button.types';\nexport * from './lib/button/button.component';\n\n// Input\nexport * from './lib/input/input.types';\nexport * from './lib/input/input.component';\n\n// Textarea\nexport * from './lib/textarea/textarea.component';\n\n// Checkbox\nexport * from './lib/checkbox/checkbox.component';\n\n// Switch\nexport * from './lib/switch/switch.component';\n\n// Select\nexport * from './lib/select/select.types';\nexport * from './lib/select/select.component';\n\n// Radio Group\nexport * from './lib/radio-group/radio-group.types';\nexport * from './lib/radio-group/radio-group.component';\n\n// Form Field\nexport * from './lib/form-field/form-field.component';\n\n// Card\nexport * from './lib/card/card.component';\nexport * from './lib/card/card-header.component';\nexport * from './lib/card/card-title.component';\nexport * from './lib/card/card-description.component';\nexport * from './lib/card/card-content.component';\nexport * from './lib/card/card-footer.component';\n\n// Alert\nexport * from './lib/alert/alert.types';\nexport * from './lib/alert/alert.component';\nexport * from './lib/alert/alert-title.component';\nexport * from './lib/alert/alert-description.component';\n\n// Tooltip\nexport * from './lib/tooltip/tooltip.types';\nexport * from './lib/tooltip/tooltip-trigger.directive';\nexport * from './lib/tooltip/tooltip-content.component';\n\n// Popover\nexport * from './lib/popover/popover.types';\nexport * from './lib/popover/popover.utils';\nexport * from './lib/popover/popover-trigger.directive';\nexport * from './lib/popover/popover-content.component';\n\n// Dropdown Menu\nexport * from './lib/dropdown-menu/dropdown-menu.types';\nexport * from './lib/dropdown-menu/dropdown-menu.utils';\nexport * from './lib/dropdown-menu/dropdown-trigger.directive';\nexport * from './lib/dropdown-menu/dropdown-menu.component';\nexport * from './lib/dropdown-menu/dropdown-menu-item.component';\nexport * from './lib/dropdown-menu/dropdown-separator.component';\nexport * from './lib/dropdown-menu/dropdown-label.component';\n\n// Dialog\nexport * from './lib/dialog/dialog.types';\nexport * from './lib/dialog/dialog.token';\nexport * from './lib/dialog/dialog-ref';\nexport * from './lib/dialog/dialog.service';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog-header.component';\nexport * from './lib/dialog/dialog-title.component';\nexport * from './lib/dialog/dialog-description.component';\nexport * from './lib/dialog/dialog-content.component';\nexport * from './lib/dialog/dialog-footer.component';\nexport * from './lib/dialog/dialog-close.directive';\n\n// Toast\nexport * from './lib/toast/toast.types';\nexport * from './lib/toast/toast.service';\nexport * from './lib/toast/toast.component';\nexport * from './lib/toast/toast-container.component';\nexport * from './lib/toast/toast-title.component';\nexport * from './lib/toast/toast-description.component';\n\n// Confirmation Dialog\nexport * from './lib/confirmation-dialog/confirmation-dialog.types';\nexport * from './lib/confirmation-dialog/confirmation-dialog.component';\nexport * from './lib/confirmation-dialog/confirmation.service';\n\n// Separator\nexport * from './lib/separator/separator.component';\n\n// Spinner\nexport * from './lib/spinner/spinner.types';\nexport * from './lib/spinner/spinner.component';\n\n// Skeleton\nexport * from './lib/skeleton/skeleton.component';\n\n// Progress\nexport * from './lib/progress/progress.component';\n\n// AspectRatio\nexport * from './lib/aspect-ratio/aspect-ratio.component';\n\n// Avatar\nexport * from './lib/avatar/avatar.types';\nexport * from './lib/avatar/avatar.component';\nexport * from './lib/avatar/avatar-image.component';\nexport * from './lib/avatar/avatar-fallback.component';\n\n// Breadcrumbs\nexport * from './lib/breadcrumbs/breadcrumbs.component';\nexport * from './lib/breadcrumbs/breadcrumb-item.component';\nexport * from './lib/breadcrumbs/breadcrumb-separator.component';\n\n// Sidebar\nexport * from './lib/sidebar/sidebar.types';\nexport * from './lib/sidebar/sidebar.service';\nexport * from './lib/sidebar/sidebar.component';\nexport * from './lib/sidebar/sidebar-header.component';\nexport * from './lib/sidebar/sidebar-content.component';\nexport * from './lib/sidebar/sidebar-footer.component';\nexport * from './lib/sidebar/sidebar-nav.component';\nexport * from './lib/sidebar/sidebar-nav-item.component';\nexport * from './lib/sidebar/sidebar-section.component';\nexport * from './lib/sidebar/sidebar-trigger.component';\n\n// Pagination\nexport * from './lib/pagination/pagination.types';\nexport * from './lib/pagination/pagination.component';\n\n// Tabs\nexport * from './lib/tabs/tabs.types';\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs-list.component';\nexport * from './lib/tabs/tabs-trigger.component';\nexport * from './lib/tabs/tabs-content.component';\n\n// Accordion\nexport * from './lib/accordion/accordion.types';\nexport * from './lib/accordion/accordion.component';\nexport * from './lib/accordion/accordion-item.component';\nexport * from './lib/accordion/accordion-trigger.component';\nexport * from './lib/accordion/accordion-content.component';\n\n// Table\nexport * from './lib/table/table.types';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table-header.component';\nexport * from './lib/table/table-body.component';\nexport * from './lib/table/table-row.component';\nexport * from './lib/table/table-head.component';\nexport * from './lib/table/table-cell.component';\nexport * from './lib/table/table-caption.component';\nexport * from './lib/table/table-footer.component';\n\n// EmptyState\nexport * from './lib/empty-state/empty-state.types';\nexport * from './lib/empty-state/empty-state.component';\n\n// DataTable\nexport * from './lib/data-table/data-table.types';\nexport * from './lib/data-table/data-table.component';\n\n// Command\nexport * from './lib/command/command.types';\nexport * from './lib/command/command.component';\nexport * from './lib/command/command-input.component';\nexport * from './lib/command/command-list.component';\nexport * from './lib/command/command-empty.component';\nexport * from './lib/command/command-group.component';\nexport * from './lib/command/command-item.component';\nexport * from './lib/command/command-separator.component';\n\n// Toolbar\nexport * from './lib/toolbar/toolbar.types';\nexport * from './lib/toolbar/toolbar.component';\nexport * from './lib/toolbar/toolbar-widget.component';\nexport * from './lib/toolbar/toolbar-widget-group.component';\nexport * from './lib/toolbar/toolbar-separator.component';\n\n// Tree\nexport * from './lib/tree/tree.types';\nexport * from './lib/tree/tree.component';\nexport * from './lib/tree/tree-item.component';\nexport * from './lib/tree/tree-item-group.component';\n\n// Menubar\nexport * from './lib/menubar/menubar.types';\nexport * from './lib/menubar/menubar.component';\nexport * from './lib/menubar/menubar-item.component';\nexport * from './lib/menubar/menubar-submenu.component';\n\n// SearchInput\nexport * from './lib/search-input/search-input.component';\n\n// FieldDisplay\nexport * from './lib/field-display/field-display.types';\nexport * from './lib/field-display/field-display.component';\n\n// Block Renderer\nexport * from './lib/block-renderer/block-renderer.types';\nexport * from './lib/block-renderer/block-admin-mode.service';\nexport * from './lib/block-renderer/block-outlet.component';\nexport * from './lib/block-renderer/block-renderer.component';\n\n// Kitchen Sink (demo page)\nexport * from './lib/kitchen-sink/kitchen-sink.page';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","uniqueId","NgTabs","AriaAccordionTrigger","AriaAccordionContent","AriaToolbar","AriaToolbarWidget","AriaToolbarWidgetGroup","AriaTree","AriaTreeItem","AriaTreeItemGroup","AriaMenuBar","AriaMenuItem","AriaMenu","isRecord"],"mappings":"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"}