cerxos-ui 0.0.8 → 0.0.10
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.
- package/fesm2022/cerxos-ui.mjs +66 -4
- package/fesm2022/cerxos-ui.mjs.map +1 -1
- package/index.d.ts +9 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cerxos-ui.mjs","sources":["../../../projects/cerxos-ui/src/lib/cerxos-ui.ts","../../../projects/cerxos-ui/src/lib/components/action-menu/action-menu.component.ts","../../../projects/cerxos-ui/src/lib/components/action-menu/action-menu.component.html","../../../projects/cerxos-ui/src/lib/components/alert/alert.component.ts","../../../projects/cerxos-ui/src/lib/components/alert/alert.component.html","../../../projects/cerxos-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/cerxos-ui/src/lib/components/accordion/accordion.component.html","../../../projects/cerxos-ui/src/lib/components/accordion/accordion-item.component.ts","../../../projects/cerxos-ui/src/lib/components/accordion/accordion-item.component.html","../../../projects/cerxos-ui/src/lib/components/badge/badge.component.ts","../../../projects/cerxos-ui/src/lib/components/badge/badge.component.html","../../../projects/cerxos-ui/src/lib/components/avatar/avatar.component.ts","../../../projects/cerxos-ui/src/lib/components/avatar/avatar.component.html","../../../projects/cerxos-ui/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/cerxos-ui/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/cerxos-ui/src/lib/components/button/button.component.ts","../../../projects/cerxos-ui/src/lib/components/button/button.component.html","../../../projects/cerxos-ui/src/lib/components/card/card.component.ts","../../../projects/cerxos-ui/src/lib/components/card/card.component.html","../../../projects/cerxos-ui/src/lib/components/checkbox/checkbox.component.ts","../../../projects/cerxos-ui/src/lib/components/checkbox/checkbox.component.html","../../../projects/cerxos-ui/src/lib/components/carousel/carousel.component.ts","../../../projects/cerxos-ui/src/lib/components/carousel/carousel.component.html","../../../projects/cerxos-ui/src/lib/components/data-table/data-table-cell.directive.ts","../../../projects/cerxos-ui/src/lib/components/data-table/data-table.component.ts","../../../projects/cerxos-ui/src/lib/components/data-table/data-table.component.html","../../../projects/cerxos-ui/src/lib/components/dialog/dialog.component.ts","../../../projects/cerxos-ui/src/lib/components/dialog/dialog.component.html","../../../projects/cerxos-ui/src/lib/components/datepicker/datepicker.component.ts","../../../projects/cerxos-ui/src/lib/components/datepicker/datepicker.component.html","../../../projects/cerxos-ui/src/lib/components/input/input.component.ts","../../../projects/cerxos-ui/src/lib/components/input/input.component.html","../../../projects/cerxos-ui/src/lib/components/menubar/menubar.component.ts","../../../projects/cerxos-ui/src/lib/components/menubar/menubar.component.html","../../../projects/cerxos-ui/src/lib/components/multi-select/multi-select.component.ts","../../../projects/cerxos-ui/src/lib/components/multi-select/multi-select.component.html","../../../projects/cerxos-ui/src/lib/components/tabs/tab-label.directive.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tab-panel.component.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tab-panel.component.html","../../../projects/cerxos-ui/src/lib/components/tabs/tabs.component.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tabs.component.html","../../../projects/cerxos-ui/src/lib/components/radio/radio.component.ts","../../../projects/cerxos-ui/src/lib/components/radio/radio.component.html","../../../projects/cerxos-ui/src/lib/components/select/select.component.ts","../../../projects/cerxos-ui/src/lib/components/select/select.component.html","../../../projects/cerxos-ui/src/lib/components/table/table.component.ts","../../../projects/cerxos-ui/src/lib/components/table/table.component.html","../../../projects/cerxos-ui/src/lib/components/toggle/toggle.component.ts","../../../projects/cerxos-ui/src/lib/components/toggle/toggle.component.html","../../../projects/cerxos-ui/src/lib/components/toast/toast.component.ts","../../../projects/cerxos-ui/src/lib/components/toast/toast.component.html","../../../projects/cerxos-ui/src/lib/components/tooltip/tooltip.component.ts","../../../projects/cerxos-ui/src/lib/components/tooltip/tooltip.component.html","../../../projects/cerxos-ui/src/lib/directives/theme/theme.directive.ts","../../../projects/cerxos-ui/src/public-api.ts","../../../projects/cerxos-ui/src/cerxos-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cxs-cerxos-ui',\r\n imports: [],\r\n template: `\r\n <p>\r\n cerxos-ui works!\r\n </p>\r\n `,\r\n styles: ``,\r\n})\r\nexport class CerxosUi {\r\n\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nexport type CxsActionMenuAlign = 'start' | 'end';\nexport type CxsActionMenuItemTone = 'default' | 'danger';\n\nexport interface CxsActionMenuItem {\n label: string;\n value: string;\n disabled?: boolean;\n tone?: CxsActionMenuItemTone;\n}\n\nconst TRIGGER_BASE_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] p-1.5 ' +\n 'text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'hover:bg-[var(--cxs-color-surface-hover)] hover:text-[var(--cxs-color-on-surface)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst TRIGGER_DISABLED_CLASSES = 'pointer-events-none opacity-60';\n\nconst MENU_BASE_CLASSES =\n 'absolute z-40 mt-2 min-w-[10rem] rounded-[var(--cxs-radius-md)] ' +\n 'border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] py-1 ' +\n 'shadow-[var(--cxs-shadow-sm)]';\n\nconst MENU_ALIGN_CLASSES: Record<CxsActionMenuAlign, string> = {\n start: 'left-0 origin-top-left',\n end: 'right-0 origin-top-right'\n};\n\nconst ITEM_BASE_CLASSES =\n 'flex w-full items-center gap-2 rounded-[var(--cxs-radius-sm)] px-3 py-2 text-left text-sm ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst ITEM_DEFAULT_CLASSES =\n 'text-[var(--cxs-color-on-surface)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DANGER_CLASSES =\n 'text-[var(--cxs-color-danger)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DISABLED_CLASSES = 'pointer-events-none opacity-60';\nconst EMPTY_STATE_CLASSES = 'block px-3 py-2 text-sm text-[var(--cxs-color-on-surface-muted)]';\n\n@Component({\n selector: 'cxs-action-menu',\n standalone: true,\n templateUrl: './action-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsActionMenuComponent {\n private static nextId = 0;\n\n @Input() items: CxsActionMenuItem[] = [];\n @Input() align: CxsActionMenuAlign = 'end';\n @Input() ariaLabel = 'Open actions menu';\n @Input() menuLabel = 'Actions';\n @Input() disabled = false;\n\n @Output() itemSelected = new EventEmitter<CxsActionMenuItem>();\n\n @ViewChild('trigger', { read: ElementRef }) private trigger?: ElementRef<HTMLButtonElement>;\n @ViewChildren('menuItem', { read: ElementRef }) private menuItems?: QueryList<ElementRef<HTMLElement>>;\n\n readonly menuId = `cxs-action-menu-${CxsActionMenuComponent.nextId++}`;\n isOpen = false;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n get triggerClass(): string {\n return [TRIGGER_BASE_CLASSES, this.disabled ? TRIGGER_DISABLED_CLASSES : ''].filter(Boolean).join(' ');\n }\n\n get menuClass(): string {\n return [MENU_BASE_CLASSES, MENU_ALIGN_CLASSES[this.align]].join(' ');\n }\n\n get emptyStateClass(): string {\n return EMPTY_STATE_CLASSES;\n }\n\n isItemDisabled(item: CxsActionMenuItem): boolean {\n return this.disabled || !!item.disabled;\n }\n\n getItemClass(item: CxsActionMenuItem): string {\n return [\n ITEM_BASE_CLASSES,\n item.tone === 'danger' ? ITEM_DANGER_CLASSES : ITEM_DEFAULT_CLASSES,\n this.isItemDisabled(item) ? ITEM_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled) {\n return;\n }\n\n this.isOpen = true;\n this.focusFirstItem();\n }\n\n close(): void {\n this.isOpen = false;\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.open();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.focusTrigger();\n return;\n }\n\n const items = this.getFocusableItems();\n if (!items.length) {\n return;\n }\n\n const currentIndex = items.findIndex((item) => item === document.activeElement);\n let nextIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowDown':\n nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n break;\n case 'ArrowUp':\n nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n items[nextIndex]?.focus();\n }\n\n onItemClick(item: CxsActionMenuItem): void {\n if (this.isItemDisabled(item)) {\n return;\n }\n\n this.itemSelected.emit(item);\n this.close();\n this.focusTrigger();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n private focusFirstItem(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n setTimeout(() => {\n const items = this.getFocusableItems();\n items[0]?.focus();\n }, 0);\n }\n\n private focusTrigger(): void {\n this.trigger?.nativeElement.focus();\n }\n\n private getFocusableItems(): HTMLElement[] {\n return (this.menuItems?.toArray() ?? [])\n .map((item) => item.nativeElement)\n .filter((item) => !item.hasAttribute('disabled') && !item.hasAttribute('data-disabled'));\n }\n}\n","<div class=\"relative inline-flex\">\n <button\n #trigger\n type=\"button\"\n [class]=\"triggerClass\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"ariaLabel\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n <svg class=\"h-4 w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <circle cx=\"4\" cy=\"10\" r=\"1.5\"></circle>\n <circle cx=\"10\" cy=\"10\" r=\"1.5\"></circle>\n <circle cx=\"16\" cy=\"10\" r=\"1.5\"></circle>\n </svg>\n </button>\n\n @if (isOpen) {\n <div\n [class]=\"menuClass\"\n [attr.id]=\"menuId\"\n role=\"menu\"\n [attr.aria-label]=\"menuLabel\"\n (keydown)=\"onMenuKeydown($event)\"\n >\n @if (items.length) {\n @for (item of items; track item.value) {\n <button\n #menuItem\n type=\"button\"\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n [attr.aria-disabled]=\"isItemDisabled(item) ? 'true' : null\"\n [disabled]=\"isItemDisabled(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.label }}\n </button>\n }\n } @else {\n <span [class]=\"emptyStateClass\">No actions</span>\n }\n </div>\n }\n</div>\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nexport type CxsAlertVariant = 'info' | 'neutral' | 'danger';\r\n\r\nconst BASE_CLASSES =\r\n 'relative flex w-full gap-3 rounded-[var(--cxs-radius-md)] border border-l-4 px-4 py-3 text-sm ' +\r\n 'text-[var(--cxs-color-on-surface)]';\r\n\r\nconst VARIANT_CLASSES: Record<CxsAlertVariant, string> = {\r\n info:\r\n 'border-[var(--cxs-color-primary)] border-l-[var(--cxs-color-primary)] ' +\r\n 'bg-[var(--cxs-color-primary-ghost)]',\r\n neutral:\r\n 'border-[var(--cxs-color-border)] border-l-[var(--cxs-color-border)] ' +\r\n 'bg-[var(--cxs-color-surface)]',\r\n danger:\r\n 'border-[var(--cxs-color-danger)] border-l-[var(--cxs-color-danger)] ' +\r\n 'bg-[var(--cxs-color-surface)]'\r\n};\r\n\r\nconst TITLE_BASE = 'font-semibold';\r\n\r\nconst TITLE_VARIANT: Record<CxsAlertVariant, string> = {\r\n info: 'text-[var(--cxs-color-primary)]',\r\n neutral: 'text-[var(--cxs-color-on-surface)]',\r\n danger: 'text-[var(--cxs-color-danger)]'\r\n};\r\n\r\nconst CLOSE_BUTTON_CLASSES =\r\n 'ml-auto inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\r\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\r\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\r\n 'focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\n@Component({\r\n selector: 'cxs-alert',\r\n standalone: true,\r\n templateUrl: './alert.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsAlertComponent {\r\n @Input() variant: CxsAlertVariant = 'info';\r\n @Input() title?: string;\r\n @Input() dismissible = false;\r\n\r\n @Output() closed = new EventEmitter<void>();\r\n\r\n isVisible = true;\r\n\r\n get alertClass(): string {\r\n return [BASE_CLASSES, VARIANT_CLASSES[this.variant]].join(' ');\r\n }\r\n\r\n get titleClass(): string {\r\n return [TITLE_BASE, TITLE_VARIANT[this.variant]].join(' ');\r\n }\r\n\r\n get closeButtonClass(): string {\r\n return CLOSE_BUTTON_CLASSES;\r\n }\r\n\r\n onClose(): void {\r\n this.isVisible = false;\r\n this.closed.emit();\r\n }\r\n}\r\n","@if (isVisible) {\r\n <div [class]=\"alertClass\" role=\"status\" aria-live=\"polite\">\r\n <div class=\"flex flex-col gap-1\">\r\n @if (title) {\r\n <div [class]=\"titleClass\">{{ title }}</div>\r\n }\r\n <div class=\"text-[var(--cxs-color-on-surface)]\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n @if (dismissible) {\r\n <button\r\n type=\"button\"\r\n [class]=\"closeButtonClass\"\r\n aria-label=\"Dismiss alert\"\r\n (click)=\"onClose()\"\r\n >\r\n x\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type CxsAccordionSpacing = 'sm' | 'md' | 'lg';\n\nconst BASE_CLASSES = 'grid';\nconst SPACING_CLASSES: Record<CxsAccordionSpacing, string> = {\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4'\n};\n\n@Component({\n selector: 'cxs-accordion',\n standalone: true,\n templateUrl: './accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAccordionComponent {\n @Input() spacing: CxsAccordionSpacing = 'md';\n\n get accordionClass(): string {\n return [BASE_CLASSES, SPACING_CLASSES[this.spacing]].join(' ');\n }\n}\n","<div [class]=\"accordionClass\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nexport type CxsAccordionItemSize = 'sm' | 'md' | 'lg';\n\nconst ITEM_BASE =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)]';\nconst ITEM_DISABLED = 'opacity-60';\n\nconst HEADER_BASE =\n 'flex w-full items-center justify-between gap-3 text-left font-medium transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\nconst HEADER_HOVER = 'hover:bg-[var(--cxs-color-surface-hover)]';\nconst HEADER_DISABLED = 'cursor-not-allowed';\n\nconst CONTENT_BASE = 'text-(--cxs-color-on-surface-muted)';\n\nconst SIZE_HEADER_CLASSES: Record<CxsAccordionItemSize, string> = {\n sm: 'px-3 py-2 text-sm',\n md: 'px-4 py-3 text-sm',\n lg: 'px-5 py-4 text-base'\n};\n\nconst SIZE_CONTENT_CLASSES: Record<CxsAccordionItemSize, string> = {\n sm: 'px-3 pb-3 text-sm',\n md: 'px-4 pb-4 text-sm',\n lg: 'px-5 pb-5 text-base'\n};\n\n@Component({\n selector: 'cxs-accordion-item',\n standalone: true,\n imports: [],\n templateUrl: './accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAccordionItemComponent {\n private static nextId = 0;\n\n @Input() title?: string;\n @Input() expanded = false;\n @Input() disabled = false;\n @Input() size: CxsAccordionItemSize = 'md';\n\n @Output() expandedChange = new EventEmitter<boolean>();\n\n readonly buttonId = `cxs-accordion-button-${++CxsAccordionItemComponent.nextId}`;\n readonly contentId = `cxs-accordion-panel-${CxsAccordionItemComponent.nextId}`;\n\n get itemClass(): string {\n return [ITEM_BASE, this.disabled ? ITEM_DISABLED : ''].filter(Boolean).join(' ');\n }\n\n get headerClass(): string {\n return [\n HEADER_BASE,\n SIZE_HEADER_CLASSES[this.size],\n this.disabled ? HEADER_DISABLED : HEADER_HOVER\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get contentClass(): string {\n return [CONTENT_BASE, SIZE_CONTENT_CLASSES[this.size]].join(' ');\n }\n\n get iconClass(): string {\n return [\n 'h-4 w-4 shrink-0 text-(--cxs-color-on-surface-muted) transition-transform',\n this.expanded ? 'rotate-180' : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","<div [class]=\"itemClass\">\n <button\n type=\"button\"\n [class]=\"headerClass\"\n [id]=\"buttonId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"contentId\"\n (click)=\"toggle()\"\n >\n <span class=\"flex min-w-0 flex-1 items-center gap-2\">\n <ng-content select=\"[cxsAccordionTitle]\"></ng-content>\n @if (title) {\n <span class=\"truncate\">{{ title }}</span>\n }\n </span>\n <svg aria-hidden=\"true\" [class]=\"iconClass\" viewBox=\"0 0 20 20\">\n <path\n d=\"M5 7l5 5 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.5\"\n ></path>\n </svg>\n </button>\n\n <div\n [id]=\"contentId\"\n role=\"region\"\n [attr.aria-labelledby]=\"buttonId\"\n [class]=\"contentClass\"\n [hidden]=\"!expanded\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsBadgeVariant = 'primary' | 'neutral' | 'danger';\r\nexport type CxsBadgeSize = 'sm' | 'md';\r\n\r\nconst BASE_CLASSES =\r\n 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-md)] border px-2.5 py-0.5 text-xs font-medium ' +\r\n 'leading-none';\r\n\r\nconst VARIANT_CLASSES: Record<CxsBadgeVariant, string> = {\r\n primary:\r\n 'border-[var(--cxs-color-primary)] bg-[var(--cxs-color-primary-ghost)] ' +\r\n 'text-[var(--cxs-color-primary)]',\r\n neutral:\r\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\r\n 'text-[var(--cxs-color-on-surface)]',\r\n danger:\r\n 'border-[var(--cxs-color-danger)] bg-[var(--cxs-color-surface)] ' +\r\n 'text-[var(--cxs-color-danger)]'\r\n};\r\n\r\nconst SIZE_CLASSES: Record<CxsBadgeSize, string> = {\r\n sm: 'text-[11px]',\r\n md: 'text-xs'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-badge',\r\n standalone: true,\r\n templateUrl: './badge.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsBadgeComponent {\r\n @Input() variant: CxsBadgeVariant = 'primary';\r\n @Input() size: CxsBadgeSize = 'md';\r\n\r\n get badgeClass(): string {\r\n return [BASE_CLASSES, VARIANT_CLASSES[this.variant], SIZE_CLASSES[this.size]].join(' ');\r\n }\r\n}\r\n","<span [class]=\"badgeClass\">\r\n <ng-content></ng-content>\r\n</span>\r\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Input\n} from '@angular/core';\n\nexport type CxsAvatarSize = 'sm' | 'md' | 'lg';\nexport type CxsAvatarShape = 'circle' | 'square';\n\nconst BASE_CLASSES =\n 'inline-flex items-center justify-center overflow-hidden border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-primary-ghost)] text-[var(--cxs-color-primary)] font-semibold uppercase ' +\n 'select-none';\n\nconst SIZE_CLASSES: Record<CxsAvatarSize, string> = {\n sm: 'h-8 w-8 text-[11px]',\n md: 'h-10 w-10 text-xs',\n lg: 'h-14 w-14 text-sm'\n};\n\nconst SHAPE_CLASSES: Record<CxsAvatarShape, string> = {\n circle: 'rounded-full',\n square: 'rounded-[var(--cxs-radius-md)]'\n};\n\nconst FALLBACK_CLASSES = 'leading-none';\n\n@Component({\n selector: 'cxs-avatar',\n standalone: true,\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAvatarComponent {\n private _src?: string;\n\n @Input()\n set src(value: string | undefined) {\n if (value !== this._src) {\n this._src = value;\n this.imageError = false;\n }\n }\n\n get src(): string | undefined {\n return this._src;\n }\n @Input() name?: string;\n @Input() alt?: string;\n @Input() size: CxsAvatarSize = 'md';\n @Input() shape: CxsAvatarShape = 'circle';\n\n imageError = false;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get avatarClass(): string {\n return [BASE_CLASSES, SIZE_CLASSES[this.size], SHAPE_CLASSES[this.shape], this.hostClass]\n .filter(Boolean)\n .join(' ');\n }\n\n get fallbackClass(): string {\n return FALLBACK_CLASSES;\n }\n\n get altText(): string {\n if (this.alt !== undefined) {\n return this.alt;\n }\n\n if (this.name) {\n return this.name;\n }\n\n return 'Avatar';\n }\n\n get fallbackLabel(): string {\n if (this.name) {\n return this.name;\n }\n\n if (this.alt && this.alt.trim().length > 0) {\n return this.alt;\n }\n\n return 'Avatar';\n }\n\n get fallbackText(): string {\n if (!this.name) {\n return '?';\n }\n\n return this.getInitials(this.name);\n }\n\n get showImage(): boolean {\n return !!this.src && !this.imageError;\n }\n\n onImageError(): void {\n this.imageError = true;\n }\n\n private getInitials(value: string): string {\n const parts = value\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n\n const word = parts[0] ?? '';\n return word.slice(0, 2).toUpperCase() || '?';\n }\n}\n","<div\n [class]=\"avatarClass\"\n [attr.role]=\"showImage ? null : 'img'\"\n [attr.aria-label]=\"showImage ? null : fallbackLabel\"\n>\n @if (showImage) {\n <img\n [attr.src]=\"src\"\n [attr.alt]=\"altText\"\n class=\"h-full w-full object-cover\"\n (error)=\"onImageError()\"\n />\n } @else {\n <span [class]=\"fallbackClass\" aria-hidden=\"true\">{{ fallbackText }}</span>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsBreadcrumbSize = 'sm' | 'md' | 'lg';\r\nexport type CxsBreadcrumbVariant = 'default' | 'muted';\r\n\r\nexport interface CxsBreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n target?: string;\r\n rel?: string;\r\n ariaLabel?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst BASE_CLASSES = 'flex flex-wrap items-center gap-x-1 gap-y-1';\r\nconst ITEM_CLASSES = 'flex items-center gap-1';\r\nconst LINK_BASE_CLASSES =\r\n 'rounded-[var(--cxs-radius-md)] transition-colors focus-visible:outline focus-visible:outline-2 ' +\r\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\r\nconst NON_LINK_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst SEPARATOR_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] select-none';\r\nconst DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] opacity-60';\r\n\r\nconst SIZE_CLASSES: Record<CxsBreadcrumbSize, string> = {\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst LINK_VARIANT_CLASSES: Record<CxsBreadcrumbVariant, string> = {\r\n default:\r\n 'text-[var(--cxs-color-primary)] hover:text-[var(--cxs-color-primary-hover)]',\r\n muted:\r\n 'text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]'\r\n};\r\n\r\nconst CURRENT_VARIANT_CLASSES: Record<CxsBreadcrumbVariant, string> = {\r\n default: 'text-[var(--cxs-color-on-surface)]',\r\n muted: 'text-[var(--cxs-color-on-surface-muted)]'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-breadcrumb',\r\n standalone: true,\r\n templateUrl: './breadcrumb.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsBreadcrumbComponent {\r\n @Input() items: CxsBreadcrumbItem[] = [];\r\n @Input() separator = '/';\r\n @Input() ariaLabel = 'Breadcrumb';\r\n @Input() size: CxsBreadcrumbSize = 'md';\r\n @Input() variant: CxsBreadcrumbVariant = 'default';\r\n @Input() disabled = false;\r\n\r\n get listClass(): string {\r\n return [BASE_CLASSES, SIZE_CLASSES[this.size], this.disabled ? 'opacity-60' : '']\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get itemClass(): string {\r\n return ITEM_CLASSES;\r\n }\r\n\r\n get separatorClass(): string {\r\n return SEPARATOR_CLASSES;\r\n }\r\n\r\n isLink(item: CxsBreadcrumbItem, isLast: boolean): boolean {\r\n return !!item.href && !isLast && !item.disabled && !this.disabled;\r\n }\r\n\r\n getLinkClass(item: CxsBreadcrumbItem): string {\r\n return [\r\n LINK_BASE_CLASSES,\r\n LINK_VARIANT_CLASSES[this.variant],\r\n item.disabled || this.disabled ? DISABLED_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n getLabelClass(item: CxsBreadcrumbItem, isLast: boolean): string {\r\n if (isLast) {\r\n return [\r\n CURRENT_VARIANT_CLASSES[this.variant],\r\n item.disabled || this.disabled ? DISABLED_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n return [NON_LINK_CLASSES, item.disabled || this.disabled ? DISABLED_CLASSES : '']\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n getItemRel(item: CxsBreadcrumbItem): string | null {\r\n if (item.target === '_blank') {\r\n return item.rel ?? 'noopener noreferrer';\r\n }\r\n\r\n return item.rel ?? null;\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel\">\r\n <ol [class]=\"listClass\">\r\n @for (item of items; track item; let last = $last) {\r\n <li [class]=\"itemClass\">\r\n @if (isLink(item, last)) {\r\n <a\r\n [class]=\"getLinkClass(item)\"\r\n [attr.href]=\"item.href\"\r\n [attr.target]=\"item.target ?? null\"\r\n [attr.rel]=\"getItemRel(item)\"\r\n [attr.aria-label]=\"item.ariaLabel ?? null\"\r\n >\r\n {{ item.label }}\r\n </a>\r\n } @else {\r\n <span\r\n [class]=\"getLabelClass(item, last)\"\r\n [attr.aria-current]=\"last ? 'page' : null\"\r\n >\r\n {{ item.label }}\r\n </span>\r\n }\r\n @if (!last && separator) {\r\n <span [class]=\"separatorClass\" aria-hidden=\"true\">{{ separator }}</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","import { Attribute, ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsButtonVariant = 'primary' | 'secondary' | 'ghost';\nexport type CxsButtonSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\r\n 'relative inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors ' +\r\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\r\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:pointer-events-none disabled:opacity-50';\r\n\r\nconst VARIANT_CLASSES: Record<CxsButtonVariant, string> = {\n primary:\n 'bg-[var(--cxs-color-primary)] text-[var(--cxs-color-on-primary)] ' +\n 'hover:bg-[var(--cxs-color-primary-hover)] shadow-[var(--cxs-shadow-sm)]',\n secondary:\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'border border-[var(--cxs-color-border)] hover:bg-[var(--cxs-color-surface-hover)]',\n ghost:\n 'bg-transparent text-[var(--cxs-color-primary)] hover:bg-[var(--cxs-color-primary-ghost)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsButtonSize, string> = {\r\n sm: 'h-8 px-3 text-sm rounded-[var(--cxs-radius-md)]',\r\n md: 'h-10 px-4 text-sm rounded-[var(--cxs-radius-md)]',\r\n lg: 'h-12 px-5 text-base rounded-[var(--cxs-radius-md)]'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-button',\r\n standalone: true,\r\n templateUrl: './button.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsButtonComponent {\r\n @Input() variant: CxsButtonVariant = 'primary';\r\n @Input() size: CxsButtonSize = 'md';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\r\n\r\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.loading;\r\n }\r\n\r\n get buttonClass(): string {\r\n return [BASE_CLASSES, SIZE_CLASSES[this.size], VARIANT_CLASSES[this.variant], this.hostClass]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n}\r\n","<button\r\n [class]=\"buttonClass\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"isDisabled\"\r\n [attr.aria-busy]=\"loading ? 'true' : null\"\r\n>\r\n @if (loading) {\n <span\n class=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\"\n aria-hidden=\"true\"\n ></span>\n }\n <ng-content select=\"[cxsButtonIcon]\"></ng-content>\n <span class=\"truncate\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsCardVariant = 'surface' | 'muted' | 'outline';\r\nexport type CxsCardSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\r\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\r\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)]';\r\n\r\nconst VARIANT_CLASSES: Record<CxsCardVariant, string> = {\r\n surface: 'bg-[var(--cxs-color-surface)]',\r\n muted: 'bg-[var(--cxs-color-surface-hover)]',\r\n outline: 'bg-transparent'\r\n};\r\n\r\nconst SIZE_CLASSES: Record<CxsCardSize, string> = {\r\n sm: 'p-3',\r\n md: 'p-5',\r\n lg: 'p-7'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-card',\r\n standalone: true,\r\n templateUrl: './card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsCardComponent {\r\n @Input() variant: CxsCardVariant = 'surface';\r\n @Input() size: CxsCardSize = 'md';\r\n @Input() elevated = true;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaLabelledby?: string;\r\n\r\n get cardClass(): string {\r\n return [\r\n BASE_CLASSES,\r\n VARIANT_CLASSES[this.variant],\r\n SIZE_CLASSES[this.size],\r\n this.elevated ? 'shadow-[var(--cxs-shadow-sm)]' : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n}\r\n","<section\r\n [class]=\"cardClass\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n>\r\n <ng-content></ng-content>\r\n</section>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsCheckboxSize = 'sm' | 'md' | 'lg';\r\n\r\nconst WRAPPER_BASE = 'inline-flex items-center gap-2 select-none';\r\nconst WRAPPER_ENABLED = 'cursor-pointer';\r\nconst WRAPPER_DISABLED = 'cursor-not-allowed opacity-60';\r\n\r\nconst LABEL_BASE = 'text-[var(--cxs-color-on-surface)]';\r\nconst LABEL_DISABLED = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst LABEL_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'text-sm',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst CONTROL_BASE =\r\n \"relative flex shrink-0 items-center justify-center rounded-[var(--cxs-radius-md)] border \" +\r\n \"border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-primary)] \" +\r\n \"transition-colors after:absolute after:origin-center after:rotate-45 after:content-[''] \" +\r\n 'after:opacity-0 after:transition-opacity after:border-b-2 after:border-r-2 after:border-current ' +\r\n \"before:absolute before:content-[''] before:opacity-0 before:transition-opacity before:bg-current \" +\r\n 'peer-checked:bg-[var(--cxs-color-primary)] peer-checked:border-[var(--cxs-color-primary)] ' +\r\n 'peer-checked:after:opacity-100 ' +\r\n 'peer-indeterminate:bg-[var(--cxs-color-primary)] peer-indeterminate:border-[var(--cxs-color-primary)] ' +\r\n 'peer-indeterminate:before:opacity-100 peer-indeterminate:after:opacity-0 ' +\r\n 'peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 ' +\r\n 'peer-focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\nconst CONTROL_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6'\r\n};\r\n\r\nconst MARK_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'after:h-2 after:w-1 before:h-0.5 before:w-2',\r\n md: 'after:h-2.5 after:w-1.5 before:h-0.5 before:w-3',\r\n lg: 'after:h-3 after:w-2 before:h-0.5 before:w-4'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-checkbox',\r\n standalone: true,\r\n templateUrl: './checkbox.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsCheckboxComponent implements ControlValueAccessor {\r\n @Input() checked = false;\r\n @Input() indeterminate = false;\r\n @Input() disabled = false;\r\n @Input() label?: string;\r\n @Input() size: CxsCheckboxSize = 'md';\r\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() required = false;\r\n @Input() autofocus = false;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaDescribedby?: string;\r\n\r\n @Output() valueChange = new EventEmitter<boolean>();\r\n\r\n private disabledFromControl = false;\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get wrapperClass(): string {\r\n return [\r\n WRAPPER_BASE,\r\n this.isDisabled ? WRAPPER_DISABLED : WRAPPER_ENABLED\r\n ].join(' ');\r\n }\r\n\r\n get labelClass(): string {\r\n return [\r\n LABEL_BASE,\r\n LABEL_SIZE_CLASSES[this.size],\r\n this.isDisabled ? LABEL_DISABLED : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get controlClass(): string {\r\n return [\r\n CONTROL_BASE,\r\n CONTROL_SIZE_CLASSES[this.size],\r\n MARK_SIZE_CLASSES[this.size]\r\n ].join(' ');\r\n }\r\n\r\n get ariaChecked(): 'mixed' | null {\r\n return this.indeterminate ? 'mixed' : null;\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n this.checked = value ?? false;\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const nextValue = target.checked;\r\n\r\n this.indeterminate = false;\r\n this.checked = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<label [class]=\"wrapperClass\">\r\n <input\r\n class=\"peer sr-only\"\r\n type=\"checkbox\"\r\n [attr.id]=\"id\"\r\n [attr.name]=\"name\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-checked]=\"ariaChecked\"\r\n [attr.autofocus]=\"autofocus ? true : null\"\r\n [checked]=\"checked\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"isDisabled\"\r\n [required]=\"required\"\r\n (change)=\"onCheckboxChange($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <span [class]=\"controlClass\" aria-hidden=\"true\"></span>\r\n @if (label) {\r\n <span [class]=\"labelClass\">{{ label }}</span>\r\n } @else {\r\n <span [class]=\"labelClass\">\r\n <ng-content></ng-content>\r\n </span>\r\n }\r\n</label>\r\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nexport interface CxsCarouselItem {\n title?: string;\n description?: string;\n image?: string;\n alt?: string;\n}\n\nconst WRAPPER_BASE_CLASSES = 'relative overflow-hidden rounded-[var(--cxs-radius-md)]';\nconst TRACK_CLASSES = 'flex transition-transform duration-500 ease-out';\nconst SLIDE_BASE_CLASSES = 'w-full flex-shrink-0';\nconst IMAGE_CLASSES = 'h-56 w-full object-cover';\nconst CONTENT_CLASSES =\n 'absolute inset-x-0 bottom-0 bg-[rgba(15,23,42,0.6)] px-4 py-3 text-sm text-white';\n\nconst CONTROL_CLASSES =\n 'absolute top-1/2 -translate-y-1/2 inline-flex h-9 w-9 items-center justify-center rounded-full ' +\n 'bg-[rgba(15,23,42,0.7)] text-white transition hover:bg-[rgba(15,23,42,0.85)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst INDICATOR_CONTAINER_CLASSES =\n 'absolute bottom-3 left-1/2 flex -translate-x-1/2 items-center gap-2';\nconst INDICATOR_BASE_CLASSES =\n 'h-2 w-2 rounded-full bg-white/50 transition-colors';\nconst INDICATOR_ACTIVE_CLASSES = 'bg-white';\n\n@Component({\n selector: 'cxs-carousel',\n standalone: true,\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsCarouselComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() items: CxsCarouselItem[] = [];\n @Input() activeIndex = 0;\n @Input() autoplay = false;\n @Input() interval = 4000;\n @Input() loop = true;\n @Input() showControls = true;\n @Input() showIndicators = true;\n @Input() ariaLabel = 'Carousel';\n\n @Output() activeIndexChange = new EventEmitter<number>();\n\n private timerId: ReturnType<typeof setInterval> | null = null;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] || changes['autoplay'] || changes['interval']) {\n this.resetAutoplay();\n }\n if (changes['activeIndex']) {\n this.activeIndex = this.clampIndex(this.activeIndex);\n }\n }\n\n ngAfterViewInit(): void {\n this.resetAutoplay();\n }\n\n ngOnDestroy(): void {\n this.clearAutoplay();\n }\n\n get wrapperClass(): string {\n return [WRAPPER_BASE_CLASSES, this.hostClass].filter(Boolean).join(' ');\n }\n\n get trackStyle(): string {\n return `translateX(-${this.activeIndex * 100}%)`;\n }\n\n get trackClass(): string {\n return TRACK_CLASSES;\n }\n\n get slideClass(): string {\n return SLIDE_BASE_CLASSES;\n }\n\n get imageClass(): string {\n return IMAGE_CLASSES;\n }\n\n get contentClass(): string {\n return CONTENT_CLASSES;\n }\n\n get controlClass(): string {\n return CONTROL_CLASSES;\n }\n\n get indicatorContainerClass(): string {\n return INDICATOR_CONTAINER_CLASSES;\n }\n\n indicatorClass(isActive: boolean): string {\n return [INDICATOR_BASE_CLASSES, isActive ? INDICATOR_ACTIVE_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n previous(): void {\n this.goTo(this.activeIndex - 1);\n }\n\n next(): void {\n this.goTo(this.activeIndex + 1);\n }\n\n goTo(index: number): void {\n const nextIndex = this.normalizeIndex(index);\n this.activeIndex = nextIndex;\n this.activeIndexChange.emit(nextIndex);\n }\n\n private normalizeIndex(index: number): number {\n if (!this.items.length) {\n return 0;\n }\n\n if (this.loop) {\n const total = this.items.length;\n return (index + total) % total;\n }\n\n return this.clampIndex(index);\n }\n\n private clampIndex(index: number): number {\n if (!this.items.length) {\n return 0;\n }\n\n return Math.min(Math.max(0, index), this.items.length - 1);\n }\n\n private resetAutoplay(): void {\n this.clearAutoplay();\n\n if (!this.autoplay || this.items.length <= 1) {\n return;\n }\n\n const intervalMs = Math.max(1000, this.interval);\n this.timerId = setInterval(() => {\n this.next();\n }, intervalMs);\n }\n\n private clearAutoplay(): void {\n if (this.timerId) {\n clearInterval(this.timerId);\n this.timerId = null;\n }\n }\n}\n","<div [class]=\"wrapperClass\" [attr.aria-label]=\"ariaLabel\">\n <div [class]=\"trackClass\" [style.transform]=\"trackStyle\">\n @for (item of items; track item) {\n <div [class]=\"slideClass\">\n @if (item.image) {\n <img\n [class]=\"imageClass\"\n [attr.src]=\"item.image\"\n [attr.alt]=\"item.alt ?? item.title ?? 'Carousel image'\"\n />\n }\n @if (item.title || item.description) {\n <div [class]=\"contentClass\">\n @if (item.title) {\n <div class=\"text-base font-semibold\">{{ item.title }}</div>\n }\n @if (item.description) {\n <div class=\"text-sm text-white/80\">{{ item.description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (showControls && items.length > 1) {\n <button\n type=\"button\"\n [class]=\"controlClass\"\n style=\"left: 12px\"\n aria-label=\"Previous slide\"\n (click)=\"previous()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" />\n </svg>\n </button>\n <button\n type=\"button\"\n [class]=\"controlClass\"\n style=\"right: 12px\"\n aria-label=\"Next slide\"\n (click)=\"next()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" />\n </svg>\n\n </button>\n }\n\n @if (showIndicators && items.length > 1) {\n <div [class]=\"indicatorContainerClass\">\n @for (item of items; track item; let index = $index) {\n <button\n type=\"button\"\n [class]=\"indicatorClass(index === activeIndex)\"\n [attr.aria-label]=\"'Go to slide ' + (index + 1)\"\n (click)=\"goTo(index)\"\n ></button>\n }\n </div>\n }\n</div>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport type { CxsDataTableColumn } from './data-table.component';\n\nexport interface CxsDataTableCellContext {\n $implicit: Record<string, unknown>;\n value: unknown;\n column: CxsDataTableColumn;\n}\n\n@Directive({\n selector: '[cxsDataTableCell]',\n standalone: true\n})\nexport class CxsDataTableCellDirective {\n @Input('cxsDataTableCell') columnKey = '';\n\n constructor(public readonly template: TemplateRef<CxsDataTableCellContext>) {}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { CxsDataTableCellDirective } from './data-table-cell.directive';\nimport type { CxsDataTableCellContext } from './data-table-cell.directive';\n\nexport type CxsDataTableAlign = 'left' | 'center' | 'right';\nexport type CxsDataTableSortDirection = 'asc' | 'desc';\nexport type CxsDataTableFilterType = 'text' | 'select' | 'number';\nexport type CxsDataTablePin = 'left' | 'right';\n\nexport interface CxsDataTableColumn {\n key: string;\n label: string;\n align?: CxsDataTableAlign;\n width?: string;\n sortable?: boolean;\n filterable?: boolean;\n filterType?: CxsDataTableFilterType;\n filterOptions?: Array<{ label: string; value: string }>;\n resizable?: boolean;\n pinned?: CxsDataTablePin;\n visible?: boolean;\n minWidth?: number;\n headerClass?: string;\n cellClass?: string;\n formatter?: (value: unknown, row: Record<string, unknown>) => string;\n}\n\nexport interface CxsDataTableSort {\n key: string;\n direction: CxsDataTableSortDirection;\n}\n\nconst WRAPPER_BASE_CLASSES = 'w-full overflow-x-auto';\nconst WRAPPER_OVERFLOW_HIDDEN_CLASSES = 'overflow-y-hidden';\nconst WRAPPER_OVERFLOW_VISIBLE_CLASSES = 'overflow-y-visible';\nconst WRAPPER_BORDERED_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)]';\n\nconst TABLE_BASE_CLASSES =\n 'w-full min-w-[max-content] border-collapse text-sm text-[var(--cxs-color-on-surface)]';\nconst TABLE_COMPACT_CLASSES = 'text-xs';\n\nconst HEADER_ROW_CLASSES =\n 'border-b border-[var(--cxs-color-border)] text-xs font-semibold ' +\n 'text-[var(--cxs-color-on-surface-muted)]';\nconst HEADER_CELL_BASE_CLASSES = 'px-3 py-2 text-left';\nconst COLUMN_BORDER_CLASSES = 'border-l border-[var(--cxs-color-border)] first:border-l-0';\nconst HEADER_BUTTON_CLASSES =\n 'inline-flex items-center gap-2 rounded-[var(--cxs-radius-md)] px-2 py-1 ' +\n 'transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\nconst HEADER_FILTER_INPUT_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] px-2 py-1 text-xs text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst BODY_ROW_BASE_CLASSES = 'border-b border-[var(--cxs-color-border)] last:border-b-0';\nconst BODY_ROW_STRIPED_CLASSES = 'odd:bg-[var(--cxs-color-surface)] even:bg-[var(--cxs-color-surface-hover)]';\n\nconst BODY_CELL_BASE_CLASSES = 'px-3 py-2 align-top';\nconst BODY_CELL_COMPACT_CLASSES = 'px-2 py-1.5';\n\nconst ALIGN_CLASSES: Record<CxsDataTableAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst EMPTY_ROW_CLASSES = 'text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst PAGINATION_CLASSES =\n 'mt-4 flex flex-wrap items-center justify-between gap-3 text-sm text-[var(--cxs-color-on-surface)]';\nconst PAGE_BUTTON_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'px-3 py-1.5 text-sm transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'disabled:cursor-not-allowed disabled:opacity-60';\nconst PAGE_SELECT_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\n 'px-2 py-1 text-sm';\nconst TOOLBAR_CLASSES =\n 'mb-3 flex flex-wrap items-center justify-between gap-3 text-sm text-[var(--cxs-color-on-surface)]';\nconst TOOLBAR_GROUP_CLASSES = 'flex flex-wrap items-center gap-2';\nconst TOOLBAR_INPUT_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] pl-9 pr-3 py-2 text-sm text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\nconst TOOLBAR_INPUT_INLINE_CLASSES =\n 'w-full sm:w-64 rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] pl-9 pr-3 py-2 text-sm text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\nconst TOOLBAR_INPUT_WRAPPER_CLASSES = 'relative';\nconst TOOLBAR_INPUT_ICON_CLASSES =\n 'pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-(--cxs-color-on-surface-muted)';\nconst TOOLBAR_BUTTON_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'px-3 py-2 text-sm transition-colors hover:bg-[var(--cxs-color-surface-hover)]';\nconst TITLE_BAR_CLASSES = 'mb-3 flex flex-wrap items-start justify-between gap-3';\nconst TITLE_TEXT_CLASSES = 'text-base font-semibold text-(--cxs-color-on-surface)';\nconst SUBTITLE_TEXT_CLASSES = 'text-sm text-(--cxs-color-on-surface-muted)';\nconst BULK_BAR_CLASSES =\n 'mb-3 flex flex-wrap items-center justify-between gap-3 rounded-[var(--cxs-radius-md)] ' +\n 'border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] px-3 py-2 text-sm';\nconst RESIZE_HANDLE_CLASSES =\n 'absolute right-0 top-0 h-full w-2 cursor-col-resize touch-none';\n\n@Component({\n selector: 'cxs-data-table',\n standalone: true,\n templateUrl: './data-table.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsDataTableComponent implements OnChanges {\n @Input() columns: CxsDataTableColumn[] = [];\n @Input() data: Array<Record<string, unknown>> = [];\n @Input() caption?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() ariaLabel = 'Data table';\n @Input() striped = false;\n @Input() bordered = false;\n @Input() compact = false;\n @Input() loading = false;\n @Input() emptyMessage = 'No data available';\n @Input() emptyCell = '—';\n @Input() allowOverflow = false;\n @Input() columnBorders = false;\n\n @Input() pageSize = 10;\n @Input() pageIndex = 1;\n @Input() pageSizeOptions: number[] = [10, 20, 50];\n @Input() showPagination = true;\n @Input() showPageSize = true;\n @Input() manualPagination = false;\n @Input() total?: number;\n\n @Input() sortKey?: string;\n @Input() sortDirection: CxsDataTableSortDirection = 'asc';\n @Input() manualSort = false;\n\n @Input() showToolbar = true;\n @Input() showFilters = true;\n @Input() showColumnVisibility = true;\n @Input() showGlobalSearch = true;\n @Input() manualFilter = false;\n\n @Input() selectable = false;\n @Input() rowKey = 'id';\n @Input() selectedKeys: Array<string | number> = [];\n @Input() bulkActions: Array<{ id: string; label: string }> = [];\n\n @Output() pageChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n @Output() sortChange = new EventEmitter<CxsDataTableSort>();\n @Output() filterChange = new EventEmitter<{\n global: string;\n columns: Record<string, string>;\n }>();\n @Output() selectionChange = new EventEmitter<Array<string | number>>();\n @Output() bulkAction = new EventEmitter<{\n id: string;\n selected: Array<Record<string, unknown>>;\n }>();\n\n @ContentChildren(CxsDataTableCellDirective)\n private readonly cellTemplates?: QueryList<CxsDataTableCellDirective>;\n\n protected currentPage = 1;\n protected currentPageSize = 10;\n protected globalFilter = '';\n protected columnFilters: Record<string, string> = {};\n protected columnVisibility: Record<string, boolean> = {};\n protected columnWidths: Record<string, string> = {};\n protected isResizing = false;\n protected resizingColumn?: string;\n protected pinnedOffsetsLeft: Record<string, number> = {};\n protected pinnedOffsetsRight: Record<string, number> = {};\n protected filtersOpen = true;\n\n private resizeStartX = 0;\n private resizeStartWidth = 0;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pageIndex']) {\n this.currentPage = Math.max(1, this.pageIndex);\n }\n if (changes['pageSize']) {\n this.currentPageSize = Math.max(1, this.pageSize);\n }\n if (changes['columns']) {\n this.initializeVisibility();\n this.initializeWidths();\n this.updatePinnedOffsets();\n }\n if (changes['showFilters']) {\n this.filtersOpen = this.showFilters;\n }\n if (changes['selectedKeys']) {\n this.selectedKeys = [...this.selectedKeys];\n }\n }\n\n get wrapperClass(): string {\n return [\n WRAPPER_BASE_CLASSES,\n this.allowOverflow ? WRAPPER_OVERFLOW_VISIBLE_CLASSES : WRAPPER_OVERFLOW_HIDDEN_CLASSES,\n this.bordered ? WRAPPER_BORDERED_CLASSES : '',\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get tableClass(): string {\n return [TABLE_BASE_CLASSES, this.compact ? TABLE_COMPACT_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get headerRowClass(): string {\n return HEADER_ROW_CLASSES;\n }\n\n get bodyRowClass(): string {\n return [\n BODY_ROW_BASE_CLASSES,\n this.striped ? BODY_ROW_STRIPED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get emptyRowClass(): string {\n return EMPTY_ROW_CLASSES;\n }\n\n get paginationClass(): string {\n return PAGINATION_CLASSES;\n }\n\n get pageButtonClass(): string {\n return PAGE_BUTTON_CLASSES;\n }\n\n get pageSelectClass(): string {\n return PAGE_SELECT_CLASSES;\n }\n\n get toolbarClass(): string {\n return TOOLBAR_CLASSES;\n }\n\n get toolbarGroupClass(): string {\n return TOOLBAR_GROUP_CLASSES;\n }\n\n get toolbarInputClass(): string {\n return TOOLBAR_INPUT_CLASSES;\n }\n\n get toolbarInputInlineClass(): string {\n return TOOLBAR_INPUT_INLINE_CLASSES;\n }\n\n get toolbarInputWrapperClass(): string {\n return TOOLBAR_INPUT_WRAPPER_CLASSES;\n }\n\n get toolbarInputIconClass(): string {\n return TOOLBAR_INPUT_ICON_CLASSES;\n }\n\n get toolbarButtonClass(): string {\n return TOOLBAR_BUTTON_CLASSES;\n }\n\n get titleBarClass(): string {\n return TITLE_BAR_CLASSES;\n }\n\n get titleTextClass(): string {\n return TITLE_TEXT_CLASSES;\n }\n\n get subtitleTextClass(): string {\n return SUBTITLE_TEXT_CLASSES;\n }\n\n get bulkBarClass(): string {\n return BULK_BAR_CLASSES;\n }\n\n get resizeHandleClass(): string {\n return RESIZE_HANDLE_CLASSES;\n }\n\n get colSpan(): number {\n return Math.max(this.visibleColumns.length + (this.selectable ? 1 : 0), 1);\n }\n\n get totalItems(): number {\n if (this.manualPagination && this.total !== undefined) {\n return this.total;\n }\n\n return this.data.length;\n }\n\n get totalPages(): number {\n return Math.max(1, Math.ceil(this.totalItems / this.currentPageSize));\n }\n\n get pageLabel(): string {\n return `Page ${this.currentPage} of ${this.totalPages}`;\n }\n\n get displayRows(): Array<Record<string, unknown>> {\n const filtered = this.manualFilter ? this.data : this.getFilteredData(this.data);\n const sorted = this.manualSort ? filtered : this.getSortedData(filtered);\n if (this.manualPagination) {\n return sorted;\n }\n\n const start = (this.currentPage - 1) * this.currentPageSize;\n return sorted.slice(start, start + this.currentPageSize);\n }\n\n get visibleColumns(): CxsDataTableColumn[] {\n return this.columns.filter((column) => this.columnVisibility[column.key] !== false);\n }\n\n get selectedCount(): number {\n return this.selectedKeys.length;\n }\n\n get hasTitleBlock(): boolean {\n return Boolean(this.title || this.subtitle);\n }\n\n get allVisibleSelected(): boolean {\n if (!this.displayRows.length) {\n return false;\n }\n\n return this.displayRows.every((row) => this.isSelected(row));\n }\n\n get someVisibleSelected(): boolean {\n return this.displayRows.some((row) => this.isSelected(row)) && !this.allVisibleSelected;\n }\n\n headerCellClass(column: CxsDataTableColumn): string {\n return [\n HEADER_CELL_BASE_CLASSES,\n this.columnBorders ? COLUMN_BORDER_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.headerClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n headerButtonClass(): string {\n return HEADER_BUTTON_CLASSES;\n }\n\n headerFilterInputClass(): string {\n return HEADER_FILTER_INPUT_CLASSES;\n }\n\n bodyCellClass(column: CxsDataTableColumn): string {\n return [\n BODY_CELL_BASE_CLASSES,\n this.compact ? BODY_CELL_COMPACT_CLASSES : '',\n this.columnBorders ? COLUMN_BORDER_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.cellClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n cellTemplate(columnKey: string): TemplateRef<CxsDataTableCellContext> | null {\n if (!this.cellTemplates) {\n return null;\n }\n\n return this.cellTemplates.find((template) => template.columnKey === columnKey)?.template ?? null;\n }\n\n cellValue(row: Record<string, unknown>, column: CxsDataTableColumn): string {\n const value = row[column.key];\n if (column.formatter) {\n return column.formatter(value, row);\n }\n\n if (value === null || value === undefined || value === '') {\n return this.emptyCell;\n }\n\n return String(value);\n }\n\n columnWidth(column: CxsDataTableColumn): string | null {\n return this.columnWidths[column.key] ?? column.width ?? null;\n }\n\n columnMinWidth(column: CxsDataTableColumn): string | null {\n if (column.minWidth) {\n return `${column.minWidth}px`;\n }\n return null;\n }\n\n pinnedStyle(column: CxsDataTableColumn): Record<string, string> | null {\n if (!column.pinned) {\n return null;\n }\n\n if (column.pinned === 'left') {\n return { left: `${this.pinnedOffsetsLeft[column.key] ?? 0}px` };\n }\n\n return { right: `${this.pinnedOffsetsRight[column.key] ?? 0}px` };\n }\n\n pinnedLeft(column: CxsDataTableColumn): string | null {\n const style = this.pinnedStyle(column);\n return style ? style['left'] ?? null : null;\n }\n\n pinnedRight(column: CxsDataTableColumn): string | null {\n const style = this.pinnedStyle(column);\n return style ? style['right'] ?? null : null;\n }\n\n pinnedClass(column: CxsDataTableColumn): string {\n if (!column.pinned) {\n return '';\n }\n\n return 'sticky z-10';\n }\n\n ariaSort(column: CxsDataTableColumn): 'ascending' | 'descending' | 'none' | null {\n if (!column.sortable) {\n return null;\n }\n\n if (this.sortKey !== column.key) {\n return 'none';\n }\n\n return this.sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n onSort(column: CxsDataTableColumn): void {\n if (!column.sortable) {\n return;\n }\n\n if (this.sortKey === column.key) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortKey = column.key;\n this.sortDirection = 'asc';\n }\n\n this.sortChange.emit({\n key: this.sortKey,\n direction: this.sortDirection\n });\n }\n\n goToPage(page: number): void {\n const nextPage = Math.min(Math.max(1, page), this.totalPages);\n this.currentPage = nextPage;\n this.pageChange.emit(nextPage);\n }\n\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n onPageSizeChange(value: string): void {\n const nextSize = Number(value);\n if (!Number.isFinite(nextSize) || nextSize <= 0) {\n return;\n }\n\n this.currentPageSize = nextSize;\n this.pageSizeChange.emit(nextSize);\n this.goToPage(1);\n }\n\n onGlobalFilterChange(value: string): void {\n this.globalFilter = value;\n this.emitFilterChange();\n this.goToPage(1);\n }\n\n onColumnFilterChange(columnKey: string, value: string): void {\n this.columnFilters[columnKey] = value;\n this.emitFilterChange();\n this.goToPage(1);\n }\n\n columnFilterValue(columnKey: string): string {\n return this.columnFilters[columnKey] || '';\n }\n\n toggleColumnVisibility(columnKey: string): void {\n this.columnVisibility[columnKey] = !this.columnVisibility[columnKey];\n this.updatePinnedOffsets();\n }\n\n toggleSelectAll(): void {\n if (this.allVisibleSelected) {\n this.selectedKeys = this.selectedKeys.filter(\n (key) => !this.displayRows.some((row) => this.rowIdentifier(row) === key)\n );\n } else {\n const keysToAdd = this.displayRows\n .map((row) => this.rowIdentifier(row))\n .filter((key) => !this.selectedKeys.includes(key));\n this.selectedKeys = [...this.selectedKeys, ...keysToAdd];\n }\n\n this.selectionChange.emit([...this.selectedKeys]);\n }\n\n toggleRowSelection(row: Record<string, unknown>): void {\n const key = this.rowIdentifier(row);\n if (this.selectedKeys.includes(key)) {\n this.selectedKeys = this.selectedKeys.filter((id) => id !== key);\n } else {\n this.selectedKeys = [...this.selectedKeys, key];\n }\n\n this.selectionChange.emit([...this.selectedKeys]);\n }\n\n isSelected(row: Record<string, unknown>): boolean {\n return this.selectedKeys.includes(this.rowIdentifier(row));\n }\n\n runBulkAction(actionId: string): void {\n this.bulkAction.emit({\n id: actionId,\n selected: this.data.filter((row) => this.selectedKeys.includes(this.rowIdentifier(row)))\n });\n }\n\n onResizeStart(event: MouseEvent, column: CxsDataTableColumn): void {\n if (column.resizable === false) {\n return;\n }\n\n event.preventDefault();\n const header = (event.target as HTMLElement).closest('th') as HTMLElement | null;\n if (!header) {\n return;\n }\n\n this.isResizing = true;\n this.resizingColumn = column.key;\n this.resizeStartX = event.clientX;\n this.resizeStartWidth = header.getBoundingClientRect().width;\n\n const onMove = (moveEvent: MouseEvent) => {\n if (!this.isResizing || !this.resizingColumn) {\n return;\n }\n const delta = moveEvent.clientX - this.resizeStartX;\n const minWidth = column.minWidth ?? 80;\n const nextWidth = Math.max(minWidth, this.resizeStartWidth + delta);\n this.columnWidths[this.resizingColumn] = `${Math.round(nextWidth)}px`;\n this.updatePinnedOffsets();\n };\n\n const onUp = () => {\n this.isResizing = false;\n this.resizingColumn = undefined;\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n };\n\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n }\n\n private getSortedData(rows: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n if (!this.sortKey) {\n return rows;\n }\n\n const direction = this.sortDirection === 'asc' ? 1 : -1;\n return [...rows].sort((a, b) => {\n const valueA = a[this.sortKey ?? ''];\n const valueB = b[this.sortKey ?? ''];\n const normalizedA = valueA === null || valueA === undefined ? '' : String(valueA);\n const normalizedB = valueB === null || valueB === undefined ? '' : String(valueB);\n return normalizedA.localeCompare(normalizedB, undefined, { numeric: true }) * direction;\n });\n }\n\n private getFilteredData(rows: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n const global = this.globalFilter.trim().toLowerCase();\n const filters = this.columnFilters;\n\n return rows.filter((row) => {\n if (global) {\n const matchesGlobal = this.visibleColumns.some((column) => {\n const value = row[column.key];\n return String(value ?? '').toLowerCase().includes(global);\n });\n if (!matchesGlobal) {\n return false;\n }\n }\n\n return this.visibleColumns.every((column) => {\n if (!column.filterable) {\n return true;\n }\n const filterValue = (filters[column.key] ?? '').trim().toLowerCase();\n if (!filterValue) {\n return true;\n }\n const raw = row[column.key];\n const normalized = String(raw ?? '').toLowerCase();\n if (column.filterType === 'select') {\n return normalized === filterValue;\n }\n return normalized.includes(filterValue);\n });\n });\n }\n\n private emitFilterChange(): void {\n this.filterChange.emit({\n global: this.globalFilter,\n columns: { ...this.columnFilters }\n });\n }\n\n private initializeVisibility(): void {\n this.columnVisibility = this.columns.reduce((acc, column) => {\n acc[column.key] = column.visible !== false;\n return acc;\n }, {} as Record<string, boolean>);\n }\n\n private initializeWidths(): void {\n this.columnWidths = this.columns.reduce((acc, column) => {\n if (column.width) {\n acc[column.key] = column.width;\n }\n return acc;\n }, {} as Record<string, string>);\n }\n\n private updatePinnedOffsets(): void {\n const leftOffsets: Record<string, number> = {};\n const rightOffsets: Record<string, number> = {};\n let left = 0;\n let right = 0;\n const columns = this.visibleColumns;\n\n columns.forEach((column) => {\n if (column.pinned === 'left') {\n leftOffsets[column.key] = left;\n left += this.getWidthValue(column);\n }\n });\n\n [...columns].reverse().forEach((column) => {\n if (column.pinned === 'right') {\n rightOffsets[column.key] = right;\n right += this.getWidthValue(column);\n }\n });\n\n this.pinnedOffsetsLeft = leftOffsets;\n this.pinnedOffsetsRight = rightOffsets;\n }\n\n private getWidthValue(column: CxsDataTableColumn): number {\n const width = this.columnWidths[column.key] ?? column.width;\n if (!width) {\n return 160;\n }\n const match = width.match(/(\\d+)(px)?/);\n if (match) {\n return Number(match[1]);\n }\n return 160;\n }\n\n private rowIdentifier(row: Record<string, unknown>): string | number {\n const value = row[this.rowKey];\n if (value === undefined || value === null) {\n return JSON.stringify(row);\n }\n return value as string | number;\n }\n}\n","@if (hasTitleBlock) {\n <div [class]=\"titleBarClass\">\n <div class=\"min-w-0\">\n @if (title) {\n <div [class]=\"titleTextClass\">{{ title }}</div>\n }\n @if (subtitle) {\n <div [class]=\"subtitleTextClass\">{{ subtitle }}</div>\n }\n </div>\n @if (showToolbar) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @if (showGlobalSearch) {\n <div [class]=\"toolbarInputWrapperClass\">\n <svg\n [class]=\"toolbarInputIconClass\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"m21 21-4.35-4.35m1.85-5.65a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z\"\n />\n </svg>\n <input\n type=\"search\"\n [class]=\"toolbarInputInlineClass\"\n placeholder=\"Search...\"\n [value]=\"globalFilter\"\n (input)=\"onGlobalFilterChange($any($event.target).value)\"\n />\n </div>\n }\n @if (showFilters) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"filtersOpen = !filtersOpen\">\n Filters\n </button>\n }\n @if (showColumnVisibility) {\n <details class=\"relative\">\n <summary [class]=\"toolbarButtonClass\">Columns</summary>\n <div\n class=\"absolute right-0 mt-2 w-48 rounded-(--cxs-radius-md) border border-(--cxs-color-border) bg-(--cxs-color-surface) p-2 shadow-(--cxs-shadow-sm)\"\n >\n @for (column of columns; track column) {\n <label class=\"flex items-center gap-2 px-2 py-1 text-sm\">\n <input\n type=\"checkbox\"\n [checked]=\"columnVisibility[column.key]\"\n (change)=\"toggleColumnVisibility(column.key)\"\n />\n <span>{{ column.label }}</span>\n </label>\n }\n </div>\n </details>\n }\n </div>\n }\n </div>\n} @else if (showToolbar) {\n <div [class]=\"toolbarClass\">\n <div [class]=\"toolbarGroupClass\">\n @if (showGlobalSearch) {\n <div [class]=\"toolbarInputWrapperClass\">\n <svg\n [class]=\"toolbarInputIconClass\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"m21 21-4.35-4.35m1.85-5.65a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z\"\n />\n </svg>\n <input\n type=\"search\"\n [class]=\"toolbarInputClass\"\n placeholder=\"Search...\"\n [value]=\"globalFilter\"\n (input)=\"onGlobalFilterChange($any($event.target).value)\"\n />\n </div>\n }\n </div>\n <div [class]=\"toolbarGroupClass\">\n @if (showFilters) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"filtersOpen = !filtersOpen\">\n Filters\n </button>\n }\n @if (showColumnVisibility) {\n <details class=\"relative\">\n <summary [class]=\"toolbarButtonClass\">Columns</summary>\n <div\n class=\"absolute right-0 mt-2 w-48 rounded-(--cxs-radius-md) border border-(--cxs-color-border) bg-(--cxs-color-surface) p-2 shadow-(--cxs-shadow-sm)\"\n >\n @for (column of columns; track column) {\n <label class=\"flex items-center gap-2 px-2 py-1 text-sm\">\n <input\n type=\"checkbox\"\n [checked]=\"columnVisibility[column.key]\"\n (change)=\"toggleColumnVisibility(column.key)\"\n />\n <span>{{ column.label }}</span>\n </label>\n }\n </div>\n </details>\n }\n </div>\n </div>\n}\n\n@if (selectable && selectedCount > 0 && bulkActions.length > 0) {\n <div [class]=\"bulkBarClass\">\n <span>{{ selectedCount }} selected</span>\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (action of bulkActions; track action) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"runBulkAction(action.id)\">\n {{ action.label }}\n </button>\n }\n </div>\n </div>\n}\n\n<div [class]=\"wrapperClass\">\n <table [class]=\"tableClass\" [attr.aria-label]=\"ariaLabel\">\n @if (caption) {\n <caption class=\"sr-only\">{{ caption }}</caption>\n }\n <thead>\n <tr [class]=\"headerRowClass\">\n @if (selectable) {\n <th class=\"px-3 py-2 text-left\">\n <input\n type=\"checkbox\"\n [checked]=\"allVisibleSelected\"\n [indeterminate]=\"someVisibleSelected\"\n (change)=\"toggleSelectAll()\"\n aria-label=\"Select all rows\"\n />\n </th>\n }\n @for (column of visibleColumns; track column) {\n <th\n class=\"relative\"\n [class]=\"headerCellClass(column) + ' ' + pinnedClass(column)\"\n [style.width]=\"columnWidth(column)\"\n [style.minWidth]=\"columnMinWidth(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n >\n @if (column.sortable) {\n <button\n type=\"button\"\n [class]=\"headerButtonClass()\"\n (click)=\"onSort(column)\"\n >\n <span>{{ column.label }}</span>\n @if (sortKey === column.key) {\n @if (sortDirection === 'asc') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-4 w-4 text-(--cxs-color-on-surface-muted)\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\"\n />\n </svg>\n } @else {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-4 w-4 text-(--cxs-color-on-surface-muted)\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\"\n />\n </svg>\n }\n }\n </button>\n } @else {\n {{ column.label }}\n }\n @if (column.resizable !== false) {\n <span\n [class]=\"resizeHandleClass\"\n (mousedown)=\"onResizeStart($event, column)\"\n ></span>\n }\n </th>\n }\n </tr>\n @if (showFilters && filtersOpen) {\n <tr [class]=\"headerRowClass\">\n @if (selectable) {\n <th class=\"px-3 py-2 text-left\"></th>\n }\n @for (column of visibleColumns; track column) {\n <th\n [class]=\"headerCellClass(column) + ' ' + pinnedClass(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n >\n @if (column.filterable) {\n @if (column.filterType === 'select') {\n <select\n [class]=\"headerFilterInputClass()\"\n [value]=\"columnFilterValue(column.key)\"\n (change)=\"onColumnFilterChange(column.key, $any($event.target).value)\"\n >\n <option value=\"\">All</option>\n @for (option of column.filterOptions ?? []; track option) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n } @else {\n <input\n [class]=\"headerFilterInputClass()\"\n [attr.type]=\"column.filterType === 'number' ? 'number' : 'text'\"\n [value]=\"columnFilterValue(column.key)\"\n (input)=\"onColumnFilterChange(column.key, $any($event.target).value)\"\n />\n }\n }\n </th>\n }\n </tr>\n }\n </thead>\n <tbody>\n @if (loading) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">Loading...</span>\n </td>\n </tr>\n } @else if (displayRows.length === 0) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">{{ emptyMessage }}</span>\n </td>\n </tr>\n } @else {\n @for (row of displayRows; track row) {\n <tr [class]=\"bodyRowClass\">\n @if (selectable) {\n <td class=\"px-3 py-2\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (change)=\"toggleRowSelection(row)\"\n aria-label=\"Select row\"\n />\n </td>\n }\n @for (column of visibleColumns; track column) {\n <td\n [class]=\"bodyCellClass(column) + ' ' + pinnedClass(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n >\n @if (cellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: row, value: row[column.key], column }\"\n ></ng-container>\n } @else {\n {{ cellValue(row, column) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (showPagination) {\n <div [class]=\"paginationClass\">\n <div class=\"flex items-center gap-2\">\n <button\n type=\"button\"\n [class]=\"pageButtonClass\"\n [disabled]=\"currentPage <= 1\"\n (click)=\"previousPage()\"\n >\n Previous\n </button>\n <button\n type=\"button\"\n [class]=\"pageButtonClass\"\n [disabled]=\"currentPage >= totalPages\"\n (click)=\"nextPage()\"\n >\n Next\n </button>\n <span class=\"text-(--cxs-color-on-surface-muted)\">{{ pageLabel }}</span>\n </div>\n @if (showPageSize) {\n <label class=\"flex items-center gap-2 text-(--cxs-color-on-surface-muted)\">\n <span>Rows</span>\n <select\n #pageSizeSelect\n [class]=\"pageSelectClass\"\n [value]=\"currentPageSize\"\n (change)=\"onPageSizeChange(pageSizeSelect.value)\"\n >\n @for (size of pageSizeOptions; track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </label>\n }\n </div>\n}\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nexport type CxsDialogSize = 'sm' | 'md' | 'lg';\nexport type CxsDialogCloseReason = 'dismiss' | 'backdrop' | 'escape';\n\nconst OVERLAY_CLASSES =\n 'fixed inset-0 z-50 flex items-center justify-center bg-[rgba(15,23,42,0.45)] p-4';\nconst PANEL_BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] shadow-[var(--cxs-shadow-sm)] ' +\n 'p-6 outline-none';\n\nconst PANEL_SIZE_CLASSES: Record<CxsDialogSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-2xl'\n};\n\nconst TITLE_CLASSES = 'text-lg font-semibold';\nconst DESCRIPTION_CLASSES = 'mt-1 text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst BODY_CLASSES = 'mt-4 text-sm text-[var(--cxs-color-on-surface)]';\nconst ACTIONS_CLASSES =\n 'mt-6 flex flex-wrap items-center justify-end gap-2 ' +\n '[&>*]:flex [&>*]:flex-wrap [&>*]:items-center [&>*]:justify-end [&>*]:gap-2';\nconst CLOSE_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\n@Component({\n selector: 'cxs-dialog',\n standalone: true,\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsDialogComponent implements OnChanges, AfterViewInit {\n private static nextId = 0;\n\n @Input() open = false;\n @Input() title?: string;\n @Input() description?: string;\n @Input() ariaLabel = 'Dialog';\n @Input() size: CxsDialogSize = 'md';\n @Input() dismissible = true;\n @Input() closeOnBackdrop = true;\n @Input() closeOnEscape = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() closed = new EventEmitter<CxsDialogCloseReason>();\n\n @ViewChild('dialogPanel') private readonly dialogPanel?: ElementRef<HTMLElement>;\n\n readonly titleId = `cxs-dialog-title-${CxsDialogComponent.nextId++}`;\n readonly descriptionId = `cxs-dialog-description-${CxsDialogComponent.nextId++}`;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open']?.currentValue) {\n this.focusPanelSoon();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.open) {\n this.focusPanelSoon();\n }\n }\n\n get overlayClass(): string {\n return OVERLAY_CLASSES;\n }\n\n get panelClass(): string {\n return [PANEL_BASE_CLASSES, PANEL_SIZE_CLASSES[this.size], this.hostClass]\n .filter(Boolean)\n .join(' ');\n }\n\n get titleClass(): string {\n return TITLE_CLASSES;\n }\n\n get descriptionClass(): string {\n return DESCRIPTION_CLASSES;\n }\n\n get bodyClass(): string {\n return BODY_CLASSES;\n }\n\n get actionsClass(): string {\n return ACTIONS_CLASSES;\n }\n\n get closeButtonClass(): string {\n return CLOSE_BUTTON_CLASSES;\n }\n\n get ariaLabelValue(): string | null {\n if (this.title) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n requestClose(reason: CxsDialogCloseReason): void {\n this.openChange.emit(false);\n this.closed.emit(reason);\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (!this.closeOnBackdrop || !this.open) {\n return;\n }\n\n if (event.target === event.currentTarget) {\n this.requestClose('backdrop');\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.closeOnEscape || !this.open) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.requestClose('escape');\n }\n }\n\n private focusPanelSoon(): void {\n queueMicrotask(() => {\n this.dialogPanel?.nativeElement.focus();\n });\n }\n}\n","@if (open) {\n <div [class]=\"overlayClass\" (click)=\"onBackdropClick($event)\">\n <div\n #dialogPanel\n [class]=\"panelClass\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"title ? titleId : null\"\n [attr.aria-describedby]=\"description ? descriptionId : null\"\n [attr.aria-label]=\"ariaLabelValue\"\n tabindex=\"-1\"\n (keydown)=\"onKeydown($event)\"\n >\n <div class=\"flex items-start gap-3\">\n <div class=\"flex-1\">\n @if (title) {\n <h2 [id]=\"titleId\" [class]=\"titleClass\">{{ title }}</h2>\n }\n @if (description) {\n <p [id]=\"descriptionId\" [class]=\"descriptionClass\">{{ description }}</p>\n }\n </div>\n @if (dismissible) {\n <button\n type=\"button\"\n [class]=\"closeButtonClass\"\n aria-label=\"Close dialog\"\n (click)=\"requestClose('dismiss')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" />\n </svg>\n </button>\n }\n </div>\n\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n\n <div [class]=\"actionsClass\">\n <ng-content select=\"[cxsDialogActions]\"></ng-content>\n </div>\n </div>\n </div>\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsDatepickerVariant = 'outline' | 'filled';\r\nexport type CxsDatepickerSize = 'sm' | 'md' | 'lg';\r\n\r\ntype CxsCalendarDay = {\r\n date: Date;\r\n label: string;\r\n inMonth: boolean;\r\n disabled: boolean;\r\n isToday: boolean;\r\n key: string;\r\n};\r\n\r\nconst BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst VARIANT_CLASSES: Record<CxsDatepickerVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsDatepickerSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsDatepickerSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\r\nconst POPOVER_CLASSES =\r\n 'absolute left-0 top-full z-10 mt-2 w-full rounded-[var(--cxs-radius-md)] border ' +\r\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] p-3 shadow-[var(--cxs-shadow-sm)]';\r\n\r\nconst NAV_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst SELECT_CLASSES =\n 'h-8 rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] text-xs px-2 ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst DAY_BUTTON_BASE =\n 'flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] text-xs ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:cursor-not-allowed disabled:opacity-40';\n\r\nconst DAY_OUTSIDE_MONTH = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst DAY_TODAY = 'border border-[var(--cxs-color-primary)]';\r\nconst DAY_SELECTED = 'bg-[var(--cxs-color-primary)] text-[var(--cxs-color-on-primary)]';\r\nconst DAY_HOVER = 'hover:bg-[var(--cxs-color-surface-hover)]';\r\n\r\n@Component({\r\n selector: 'cxs-datepicker',\r\n standalone: true,\r\n templateUrl: './datepicker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsDatepickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsDatepickerComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() variant: CxsDatepickerVariant = 'outline';\n @Input() size: CxsDatepickerSize = 'md';\n @Input() useNative = true;\n @Input() disabled = false;\n @Input() readonly = false;\r\n @Input() required = false;\n @Input() invalid = false;\n @Input() autofocus = false;\n @Input() label?: string;\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() min?: string;\r\n @Input() max?: string;\r\n @Input() placeholder?: string;\r\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n readonly instanceId = `cxs-datepicker-${CxsDatepickerComponent.nextId++}`;\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\r\n isOpen = false;\n displayMonth = new Date();\n calendarDays: CxsCalendarDay[] = [];\n readonly weekDayLabels = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n readonly monthOptions = Array.from({ length: 12 }, (_, index) => ({\n value: index,\n label: new Date(2020, index, 1).toLocaleString('en-US', { month: 'short' })\n }));\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get panelId(): string {\n return `${this.inputId ?? this.instanceId}-panel`;\n }\n\n get inputClass(): string {\n return [\r\n BASE_CLASSES,\r\n SIZE_CLASSES[this.size],\r\n VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get popoverClass(): string {\r\n return POPOVER_CLASSES;\r\n }\r\n\r\n get navButtonClass(): string {\n return NAV_BUTTON_CLASSES;\n }\n\n get selectClass(): string {\n return SELECT_CLASSES;\n }\n\n get displayMonthLabel(): string {\n return this.displayMonth.toLocaleString('en-US', { month: 'long', year: 'numeric' });\n }\n\n get yearOptions(): number[] {\n const baseYear = this.displayMonth.getFullYear();\n const minYear = this.parseDate(this.min)?.getFullYear() ?? baseYear - 10;\n const maxYear = this.parseDate(this.max)?.getFullYear() ?? baseYear + 10;\n\n const start = Math.min(minYear, maxYear);\n const end = Math.max(minYear, maxYear);\n\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n }\n\n writeValue(value: string | null): void {\r\n this.value = value ?? '';\r\n this.syncDisplayMonthWithValue();\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const nextValue = target.value;\r\n\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onDateSelect(day: CxsCalendarDay): void {\r\n if (day.disabled || this.isDisabled) {\r\n return;\r\n }\r\n\r\n const nextValue = this.formatDate(day.date);\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n this.isOpen = false;\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n open(): void {\r\n if (this.isDisabled || this.useNative) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n this.syncDisplayMonthWithValue();\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen) {\r\n this.isOpen = false;\r\n return;\r\n }\r\n this.open();\r\n }\r\n\r\n prevMonth(): void {\n this.displayMonth = new Date(this.displayMonth.getFullYear(), this.displayMonth.getMonth() - 1, 1);\n this.updateCalendar();\n }\n\n nextMonth(): void {\n this.displayMonth = new Date(this.displayMonth.getFullYear(), this.displayMonth.getMonth() + 1, 1);\n this.updateCalendar();\n }\n\n onMonthChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const nextMonth = Number(target.value);\n if (Number.isNaN(nextMonth)) {\n return;\n }\n this.displayMonth = new Date(this.displayMonth.getFullYear(), nextMonth, 1);\n this.updateCalendar();\n }\n\n onYearChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const nextYear = Number(target.value);\n if (Number.isNaN(nextYear)) {\n return;\n }\n this.displayMonth = new Date(nextYear, this.displayMonth.getMonth(), 1);\n this.updateCalendar();\n }\n\n dayButtonClass(day: CxsCalendarDay): string {\r\n return [\r\n DAY_BUTTON_BASE,\r\n day.inMonth ? '' : DAY_OUTSIDE_MONTH,\r\n day.isToday ? DAY_TODAY : '',\r\n this.isSelected(day.date) ? DAY_SELECTED : DAY_HOVER\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n if (this.useNative || !this.isOpen) {\r\n return;\r\n }\r\n const target = event.target as HTMLElement | null;\r\n if (target && !target.closest(`#${this.panelId}`) && !target.closest(`[data-cxs-datepicker=\"${this.panelId}\"]`)) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape(): void {\r\n if (this.useNative || !this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = false;\r\n }\r\n\r\n private syncDisplayMonthWithValue(): void {\r\n const selected = this.parseDate(this.value);\r\n this.displayMonth = selected ?? new Date();\r\n this.updateCalendar();\r\n }\r\n\r\n private updateCalendar(): void {\r\n const year = this.displayMonth.getFullYear();\r\n const month = this.displayMonth.getMonth();\r\n const startOfMonth = new Date(year, month, 1);\r\n const startDay = startOfMonth.getDay();\r\n const calendarStart = new Date(year, month, 1 - startDay);\r\n const minDate = this.parseDate(this.min);\r\n const maxDate = this.parseDate(this.max);\r\n const today = this.stripTime(new Date());\r\n\r\n this.calendarDays = Array.from({ length: 42 }, (_, index) => {\r\n const date = new Date(\r\n calendarStart.getFullYear(),\r\n calendarStart.getMonth(),\r\n calendarStart.getDate() + index\r\n );\r\n const dayValue = this.stripTime(date);\r\n const disabled =\r\n (minDate && dayValue < minDate) || (maxDate && dayValue > maxDate) || this.isDisabled;\r\n\r\n return {\r\n date,\r\n label: String(date.getDate()),\r\n inMonth: date.getMonth() === month,\r\n disabled,\r\n isToday: dayValue.getTime() === today.getTime(),\r\n key: this.formatDate(date)\r\n };\r\n });\r\n }\r\n\r\n private isSelected(date: Date): boolean {\r\n const selected = this.parseDate(this.value);\r\n if (!selected) {\r\n return false;\r\n }\r\n return (\r\n selected.getFullYear() === date.getFullYear() &&\r\n selected.getMonth() === date.getMonth() &&\r\n selected.getDate() === date.getDate()\r\n );\r\n }\r\n\r\n private parseDate(value?: string): Date | null {\r\n if (!value) {\r\n return null;\r\n }\r\n const [year, month, day] = value.split('-').map(Number);\r\n if (!year || !month || !day) {\r\n return null;\r\n }\r\n return new Date(year, month - 1, day);\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = `${date.getMonth() + 1}`.padStart(2, '0');\r\n const day = `${date.getDate()}`.padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n private stripTime(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n @if (useNative) {\n <input\n type=\"date\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n } @else {\n <div class=\"relative w-full\">\n <input\n type=\"text\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\"\n [attr.aria-controls]=\"panelId\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.data-cxs-datepicker]=\"panelId\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [readonly]=\"true\"\n [required]=\"required\"\n (click)=\"open()\"\n (focus)=\"open()\"\n (blur)=\"onBlur()\"\n />\n @if (isOpen) {\n <div [class]=\"popoverClass\" [attr.id]=\"panelId\" role=\"dialog\" aria-label=\"Choose date\">\n <div class=\"flex items-center justify-between\">\n <button type=\"button\" [class]=\"navButtonClass\" aria-label=\"Previous month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" />\n </svg>\n </button>\n <div class=\"flex items-center gap-2\">\n <select\n [class]=\"selectClass\"\n [disabled]=\"isDisabled\"\n [value]=\"displayMonth.getMonth()\"\n aria-label=\"Month\"\n (change)=\"onMonthChange($event)\"\n >\n @for (month of monthOptions; track month.value) {\n <option [value]=\"month.value\">{{ month.label }}</option>\n }\n </select>\n <select\n [class]=\"selectClass\"\n [disabled]=\"isDisabled\"\n [value]=\"displayMonth.getFullYear()\"\n aria-label=\"Year\"\n (change)=\"onYearChange($event)\"\n >\n @for (year of yearOptions; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n </div>\n <button type=\"button\" [class]=\"navButtonClass\" aria-label=\"Next month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" />\n </svg>\n </button>\n </div>\n\n <div class=\"mt-3 grid grid-cols-7 gap-1 text-center text-xs text-(--cxs-color-on-surface-muted)\">\n @for (label of weekDayLabels; track label) {\n <div>{{ label }}</div>\n }\n </div>\n\n <div class=\"mt-2 grid grid-cols-7 gap-1\" role=\"grid\">\n @for (day of calendarDays; track day.key) {\n <button\n type=\"button\"\n [class]=\"dayButtonClass(day)\"\n [disabled]=\"day.disabled\"\n [attr.data-date]=\"day.key\"\n [attr.aria-selected]=\"day.key === value ? 'true' : 'false'\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n (click)=\"onDateSelect(day)\"\n >\n {{ day.label }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CxsInputVariant = 'outline' | 'filled';\nexport type CxsInputSize = 'sm' | 'md' | 'lg';\nexport type CxsInputType =\n | 'text'\n | 'email'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'number';\n\nconst BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\nconst ERROR_BASE_CLASSES = 'text-[var(--cxs-color-danger)]';\n\nconst VARIANT_CLASSES: Record<CxsInputVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\nconst SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst ERROR_SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\n@Component({\n selector: 'cxs-input',\n standalone: true,\n templateUrl: './input.component.html',\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CxsInputComponent),\n multi: true\n }\n ]\n})\nexport class CxsInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() type: CxsInputType = 'text';\n @Input() variant: CxsInputVariant = 'outline';\n @Input() size: CxsInputSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() autofocus = false;\n @Input() label?: string;\n\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() autocomplete?: string;\n @Input() inputmode?: string;\n @Input() spellcheck: boolean | null = null;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\n @Output() valueChange = new EventEmitter<string>();\n\n readonly instanceId = `cxs-input-${CxsInputComponent.nextId++}`;\n\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n get isDisabled(): boolean {\n return this.disabled || this.disabledFromControl;\n }\n\n get inputClass(): string {\n return [\n BASE_CLASSES,\n SIZE_CLASSES[this.size],\n VARIANT_CLASSES[this.variant],\n this.invalid ? INVALID_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get errorId(): string {\n return `${this.instanceId}-error`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get ariaDescribedbyValue(): string | null {\n const tokens = [this.ariaDescribedby].filter(Boolean) as string[];\n\n if (this.invalid) {\n tokens.push(this.errorId);\n }\n\n return tokens.length > 0 ? tokens.join(' ') : null;\n }\n\n get errorClass(): string {\n return [ERROR_BASE_CLASSES, ERROR_SIZE_CLASSES[this.size]].join(' ');\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledFromControl = isDisabled;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const nextValue = target.value;\n\n this.value = nextValue;\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n <input\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.inputmode]=\"inputmode\"\n [attr.spellcheck]=\"spellcheck === null ? null : spellcheck\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedbyValue\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (invalid) {\n <div [class]=\"errorClass\" [attr.id]=\"errorId\" aria-live=\"polite\">\n <ng-content select=\"[cxsInputError]\"></ng-content>\n </div>\n }\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\n\nexport type CxsMenubarSize = 'sm' | 'md' | 'lg';\nexport type CxsMenubarVariant = 'default' | 'surface';\n\nexport interface CxsMenubarItem {\n label: string;\n href?: string;\n target?: string;\n rel?: string;\n ariaLabel?: string;\n disabled?: boolean;\n active?: boolean;\n}\n\nconst BAR_BASE_CLASSES =\n 'm-0 flex list-none flex-wrap items-center gap-1 rounded-[var(--cxs-radius-md)] border border-transparent p-1';\n\nconst BAR_SIZE_CLASSES: Record<CxsMenubarSize, string> = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst BAR_VARIANT_CLASSES: Record<CxsMenubarVariant, string> = {\n default: 'bg-transparent',\n surface:\n 'bg-[var(--cxs-color-surface)] border-[var(--cxs-color-border)] shadow-[var(--cxs-shadow-sm)]'\n};\n\nconst ITEM_BASE_CLASSES =\n 'inline-flex items-center gap-2 rounded-[var(--cxs-radius-md)] px-3 py-1.5 font-medium ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst ITEM_SIZE_CLASSES: Record<CxsMenubarSize, string> = {\n sm: 'px-2.5 py-1 text-xs',\n md: 'px-3 py-1.5 text-sm',\n lg: 'px-4 py-2 text-base'\n};\n\nconst ITEM_ACTIVE_CLASSES =\n 'bg-[var(--cxs-color-primary-ghost)] text-[var(--cxs-color-primary)]';\nconst ITEM_INACTIVE_CLASSES =\n 'text-[var(--cxs-color-on-surface)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DISABLED_CLASSES =\n 'text-[var(--cxs-color-on-surface-muted)] opacity-60 pointer-events-none';\n\n@Component({\n selector: 'cxs-menubar',\n standalone: true,\n templateUrl: './menubar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsMenubarComponent {\n @Input() items: CxsMenubarItem[] = [];\n @Input() ariaLabel = 'Menubar';\n @Input() size: CxsMenubarSize = 'md';\n @Input() variant: CxsMenubarVariant = 'default';\n @Input() disabled = false;\n\n @Output() itemSelected = new EventEmitter<CxsMenubarItem>();\n\n @ViewChildren('menuItem', { read: ElementRef })\n private readonly menuItems?: QueryList<ElementRef<HTMLElement>>;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get menubarClass(): string {\n return [\n BAR_BASE_CLASSES,\n BAR_SIZE_CLASSES[this.size],\n BAR_VARIANT_CLASSES[this.variant],\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isItemDisabled(item: CxsMenubarItem): boolean {\n return this.disabled || !!item.disabled;\n }\n\n getItemClass(item: CxsMenubarItem): string {\n return [\n ITEM_BASE_CLASSES,\n ITEM_SIZE_CLASSES[this.size],\n item.active ? ITEM_ACTIVE_CLASSES : ITEM_INACTIVE_CLASSES,\n this.isItemDisabled(item) ? ITEM_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n getItemHref(item: CxsMenubarItem): string | null {\n if (item.href && !this.isItemDisabled(item)) {\n return item.href;\n }\n\n return null;\n }\n\n getItemRel(item: CxsMenubarItem): string | null {\n if (item.target === '_blank') {\n return item.rel ?? 'noopener noreferrer';\n }\n\n return item.rel ?? null;\n }\n\n onItemClick(item: CxsMenubarItem, event: Event): void {\n if (this.isItemDisabled(item)) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.itemSelected.emit(item);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (typeof document === 'undefined') {\n return;\n }\n\n const keys = ['ArrowRight', 'ArrowLeft', 'Home', 'End'];\n if (!keys.includes(event.key)) {\n return;\n }\n\n const items = this.getFocusableItems();\n if (!items.length) {\n return;\n }\n\n const currentIndex = items.findIndex((item) => item === document.activeElement);\n let nextIndex = 0;\n\n switch (event.key) {\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n case 'ArrowRight':\n nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n break;\n case 'ArrowLeft':\n nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n break;\n }\n\n items[nextIndex]?.focus();\n event.preventDefault();\n }\n\n private getFocusableItems(): HTMLElement[] {\n return (this.menuItems?.toArray() ?? [])\n .map((item) => item.nativeElement)\n .filter((item) => !item.hasAttribute('data-disabled'));\n }\n}\n","<nav [attr.aria-label]=\"ariaLabel\">\n <ul [class]=\"menubarClass\" role=\"menubar\" (keydown)=\"onKeydown($event)\">\n @for (item of items; track item) {\n <li>\n @if (item.href) {\n <a\n #menuItem\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [attr.href]=\"getItemHref(item)\"\n [attr.target]=\"item.target ?? null\"\n [attr.rel]=\"getItemRel(item)\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [attr.aria-disabled]=\"isItemDisabled(item) ? 'true' : null\"\n [attr.tabindex]=\"isItemDisabled(item) ? -1 : null\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n (click)=\"onItemClick(item, $event)\"\n >\n {{ item.label }}\n </a>\n } @else {\n <button\n #menuItem\n type=\"button\"\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [disabled]=\"isItemDisabled(item)\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n (click)=\"onItemClick(item, $event)\"\n >\n {{ item.label }}\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CxsMultiSelectOption = {\n label: string;\n value: string;\n};\n\nexport type CxsMultiSelectVariant = 'outline' | 'filled';\nexport type CxsMultiSelectSize = 'sm' | 'md' | 'lg';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst CONTROL_BASE_CLASSES =\n 'flex w-full flex-wrap items-center gap-2 rounded-[var(--cxs-radius-md)] border ' +\n 'border-[var(--cxs-color-border)] transition-colors ' +\n 'focus-within:outline focus-within:outline-2 focus-within:outline-offset-2 ' +\n 'focus-within:outline-[var(--cxs-color-focus)] focus-within:border-[var(--cxs-color-focus)]';\n\nconst CONTROL_DISABLED_CLASSES = 'pointer-events-none cursor-not-allowed opacity-60';\n\nconst VARIANT_CLASSES: Record<CxsMultiSelectVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\nconst CONTROL_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'min-h-8 px-2 py-1 text-sm',\n md: 'min-h-10 px-3 py-1.5 text-sm',\n lg: 'min-h-12 px-4 py-2 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INPUT_CLASSES =\n 'flex-1 min-w-[6rem] bg-transparent outline-none placeholder:text-[var(--cxs-color-on-surface-muted)]';\n\nconst CHIP_BASE_CLASSES =\n 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-sm)] ' +\n 'bg-[var(--cxs-color-surface-hover)] text-[var(--cxs-color-on-surface)]';\n\nconst CHIP_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2 py-0.5 text-xs',\n lg: 'px-2.5 py-1 text-sm'\n};\n\nconst CHIP_REMOVE_CLASSES =\n 'inline-flex h-4 w-4 items-center justify-center rounded-full ' +\n 'text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]';\n\nconst PANEL_CLASSES =\n 'absolute left-0 top-full z-10 mt-2 w-full rounded-[var(--cxs-radius-md)] border ' +\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] p-1 shadow-[var(--cxs-shadow-sm)]';\n\nconst OPTION_BASE_CLASSES =\n 'flex w-full items-center justify-between rounded-[var(--cxs-radius-sm)] px-3 py-2 text-left ' +\n 'text-sm text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)]';\n\nconst OPTION_DISABLED_CLASSES = 'cursor-not-allowed opacity-50 hover:bg-transparent';\n\nconst EMPTY_STATE_CLASSES = 'px-3 py-2 text-sm text-[var(--cxs-color-on-surface-muted)]';\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-within:border-[var(--cxs-color-danger)] ' +\n 'focus-within:outline-[var(--cxs-color-danger)]';\n\n@Component({\n selector: 'cxs-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './multi-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CxsMultiSelectComponent),\n multi: true\n }\n ]\n})\nexport class CxsMultiSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() options: CxsMultiSelectOption[] = [];\n @Input() value: string[] = [];\n @Input() variant: CxsMultiSelectVariant = 'outline';\n @Input() size: CxsMultiSelectSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() invalid = false;\n @Input() placeholder?: string;\n @Input() label?: string;\n @Input() maxSelections?: number;\n\n @Input() id?: string;\n @Input() name?: string;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\n @Output() valueChange = new EventEmitter<string[]>();\n\n @ViewChild('inputEl') inputEl?: ElementRef<HTMLInputElement>;\n\n readonly instanceId = `cxs-multi-select-${CxsMultiSelectComponent.nextId++}`;\n readonly listId = `${this.instanceId}-list`;\n\n query = '';\n isOpen = false;\n\n private disabledFromControl = false;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n get isDisabled(): boolean {\n return this.disabled || this.disabledFromControl;\n }\n\n get isAtMax(): boolean {\n return this.maxSelections !== undefined &&\n this.maxSelections !== null &&\n this.value.length >= this.maxSelections;\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get controlClass(): string {\n return [\n CONTROL_BASE_CLASSES,\n CONTROL_SIZE_CLASSES[this.size],\n VARIANT_CLASSES[this.variant],\n this.invalid ? INVALID_CLASSES : '',\n this.isDisabled ? CONTROL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputClass(): string {\n return INPUT_CLASSES;\n }\n\n get chipClass(): string {\n return [CHIP_BASE_CLASSES, CHIP_SIZE_CLASSES[this.size]].join(' ');\n }\n\n get chipRemoveClass(): string {\n return CHIP_REMOVE_CLASSES;\n }\n\n get panelClass(): string {\n return PANEL_CLASSES;\n }\n\n get optionClass(): string {\n return OPTION_BASE_CLASSES;\n }\n\n get optionDisabledClass(): string {\n return OPTION_DISABLED_CLASSES;\n }\n\n get emptyStateClass(): string {\n return EMPTY_STATE_CLASSES;\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get selectedOptions(): CxsMultiSelectOption[] {\n const optionsByValue = new Map(this.options.map((option) => [option.value, option]));\n return this.value.map((val) => optionsByValue.get(val) ?? { label: val, value: val });\n }\n\n get filteredOptions(): CxsMultiSelectOption[] {\n const selected = new Set(this.value);\n const query = this.query.trim().toLowerCase();\n\n return this.options.filter((option) => {\n if (selected.has(option.value)) {\n return false;\n }\n if (!query) {\n return true;\n }\n return option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query);\n });\n }\n\n writeValue(value: string[] | null): void {\n this.value = value ? [...value] : [];\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledFromControl = isDisabled;\n }\n\n focusInput(): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n this.inputEl?.nativeElement.focus();\n }\n\n open(): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n this.isOpen = true;\n }\n\n close(): void {\n this.isOpen = false;\n }\n\n onQueryInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.query = target.value;\n this.open();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Backspace' && !this.query && this.value.length > 0) {\n this.removeValue(this.value[this.value.length - 1]);\n }\n }\n\n selectOption(option: CxsMultiSelectOption): void {\n if (this.isDisabled || this.readonly || this.isAtMax) {\n return;\n }\n if (this.value.includes(option.value)) {\n return;\n }\n\n const nextValue = [...this.value, option.value];\n this.updateValue(nextValue);\n this.query = '';\n this.open();\n this.focusInput();\n }\n\n removeValue(value: string): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n const nextValue = this.value.filter((item) => item !== value);\n this.updateValue(nextValue);\n }\n\n onOptionMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onChipMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n private updateValue(nextValue: string[]): void {\n this.value = [...nextValue];\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n}\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n <div class=\"relative\">\n <div [class]=\"controlClass\" (click)=\"focusInput()\">\n @for (chip of selectedOptions; track chip.value) {\n <span [class]=\"chipClass\">\n <span>{{ chip.label }}</span>\n <button\n type=\"button\"\n [class]=\"chipRemoveClass\"\n [attr.aria-label]=\"'Remove ' + chip.label\"\n (mousedown)=\"onChipMouseDown($event)\"\n (click)=\"removeValue(chip.value)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"/>\n</svg>\n </button>\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly || isAtMax\"\n [value]=\"query\"\n (input)=\"onQueryInput($event)\"\n (focus)=\"open()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n @if (isOpen) {\n <div [class]=\"panelClass\" [attr.id]=\"listId\" role=\"listbox\">\n @if (filteredOptions.length === 0) {\n <div [class]=\"emptyStateClass\">\n No matches\n </div>\n } @else {\n @for (option of filteredOptions; track option.value) {\n <button\n type=\"button\"\n [class]=\"optionClass + (isAtMax || readonly ? ' ' + optionDisabledClass : '')\"\n [disabled]=\"isAtMax || readonly\"\n role=\"option\"\n (mousedown)=\"onOptionMouseDown($event)\"\n (click)=\"selectOption(option)\"\n >\n <span>{{ option.label }}</span>\n </button>\n }\n }\n </div>\n }\n </div>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[cxsTabLabel]',\n standalone: true\n})\nexport class CxsTabLabelDirective {\n constructor(public readonly templateRef: TemplateRef<unknown>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CxsTabLabelDirective } from './tab-label.directive';\n\n@Component({\n selector: 'cxs-tab-panel',\n standalone: true,\n templateUrl: './tab-panel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTabPanelComponent {\n private static nextId = 0;\n\n @Input() id?: string;\n @Input() label?: string;\n @Input() disabled = false;\n\n @ContentChild(CxsTabLabelDirective) labelTemplate?: CxsTabLabelDirective;\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n readonly instanceId = `cxs-tab-${CxsTabPanelComponent.nextId++}`;\n\n get resolvedId(): string {\n return this.id ?? this.instanceId;\n }\n\n get tabId(): string {\n return `${this.resolvedId}-tab`;\n }\n\n get panelId(): string {\n return `${this.resolvedId}-panel`;\n }\n}\n","<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport { CxsTabPanelComponent } from './tab-panel.component';\n\nconst WRAPPER_CLASSES = 'w-full';\nconst TAB_LIST_CLASSES =\n 'flex flex-wrap items-center gap-6 border-b border-[var(--cxs-color-border)]';\nconst TAB_BUTTON_BASE_CLASSES =\n 'inline-flex items-center gap-2 border-b-2 pb-3 text-sm font-medium transition-colors';\nconst TAB_BUTTON_INACTIVE_CLASSES =\n 'border-transparent text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]';\nconst TAB_BUTTON_ACTIVE_CLASSES =\n 'border-[var(--cxs-color-primary)] text-[var(--cxs-color-primary)]';\nconst TAB_BUTTON_DISABLED_CLASSES = 'cursor-not-allowed opacity-50';\nconst PANEL_WRAPPER_CLASSES = 'pt-4';\nconst PANEL_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] p-4 text-sm text-[var(--cxs-color-on-surface)]';\n\n@Component({\n selector: 'cxs-tabs',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTabsComponent implements AfterContentInit {\n @Input() ariaLabel = 'Tabs';\n @Input() activeId?: string;\n\n @Output() activeIdChange = new EventEmitter<string>();\n\n @ContentChildren(CxsTabPanelComponent)\n private readonly panels?: QueryList<CxsTabPanelComponent>;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get tabListClass(): string {\n return TAB_LIST_CLASSES;\n }\n\n get tabButtonBaseClass(): string {\n return TAB_BUTTON_BASE_CLASSES;\n }\n\n get tabButtonInactiveClass(): string {\n return TAB_BUTTON_INACTIVE_CLASSES;\n }\n\n get tabButtonActiveClass(): string {\n return TAB_BUTTON_ACTIVE_CLASSES;\n }\n\n get tabButtonDisabledClass(): string {\n return TAB_BUTTON_DISABLED_CLASSES;\n }\n\n get panelWrapperClass(): string {\n return PANEL_WRAPPER_CLASSES;\n }\n\n get panelClass(): string {\n return PANEL_CLASSES;\n }\n\n get panelList(): CxsTabPanelComponent[] {\n return this.panels?.toArray() ?? [];\n }\n\n get activePanel(): CxsTabPanelComponent | null {\n return this.resolveActivePanel();\n }\n\n ngAfterContentInit(): void {\n this.ensureActiveTab();\n this.panels?.changes.subscribe(() => this.ensureActiveTab());\n }\n\n isActive(panel: CxsTabPanelComponent): boolean {\n return this.activeId === panel.resolvedId;\n }\n\n tabButtonClass(panel: CxsTabPanelComponent): string {\n return [\n TAB_BUTTON_BASE_CLASSES,\n this.isActive(panel) ? TAB_BUTTON_ACTIVE_CLASSES : TAB_BUTTON_INACTIVE_CLASSES,\n panel.disabled ? TAB_BUTTON_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n selectTab(panel: CxsTabPanelComponent): void {\n if (panel.disabled) {\n return;\n }\n\n this.activeId = panel.resolvedId;\n this.activeIdChange.emit(panel.resolvedId);\n }\n\n panelLabel(panel: CxsTabPanelComponent): string {\n return panel.label ?? panel.resolvedId;\n }\n\n private ensureActiveTab(): void {\n const nextActive = this.resolveActivePanel();\n if (!nextActive) {\n return;\n }\n\n if (this.activeId !== nextActive.resolvedId) {\n this.activeId = nextActive.resolvedId;\n this.activeIdChange.emit(nextActive.resolvedId);\n }\n }\n\n private resolveActivePanel(): CxsTabPanelComponent | null {\n const panels = this.panelList;\n if (!panels.length) {\n return null;\n }\n\n if (this.activeId) {\n const active = panels.find((panel) => panel.resolvedId === this.activeId);\n if (active && !active.disabled) {\n return active;\n }\n }\n\n return panels.find((panel) => !panel.disabled) ?? panels[0];\n }\n}\n","<div [class]=\"wrapperClass\">\n <div [class]=\"tabListClass\" role=\"tablist\" [attr.aria-label]=\"ariaLabel\">\n @for (panel of panelList; track panel.resolvedId) {\n <button\n type=\"button\"\n [class]=\"tabButtonClass(panel)\"\n role=\"tab\"\n [attr.id]=\"panel.tabId\"\n [attr.aria-controls]=\"panel.panelId\"\n [attr.aria-selected]=\"isActive(panel) ? 'true' : 'false'\"\n [disabled]=\"panel.disabled\"\n (click)=\"selectTab(panel)\"\n >\n @if (panel.labelTemplate) {\n <ng-container [ngTemplateOutlet]=\"panel.labelTemplate.templateRef\"></ng-container>\n } @else {\n <span>{{ panelLabel(panel) }}</span>\n }\n </button>\n }\n </div>\n\n @if (activePanel) {\n <div [class]=\"panelWrapperClass\">\n <div\n [class]=\"panelClass\"\n role=\"tabpanel\"\n [attr.id]=\"activePanel.panelId\"\n [attr.aria-labelledby]=\"activePanel.tabId\"\n >\n <ng-container [ngTemplateOutlet]=\"activePanel.templateRef\"></ng-container>\n </div>\n </div>\n }\n</div>\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsRadioSize = 'sm' | 'md' | 'lg';\r\nexport type CxsRadioVariant = 'primary' | 'secondary';\r\n\r\nconst WRAPPER_BASE = 'inline-flex items-center gap-2 select-none';\r\nconst WRAPPER_ENABLED = 'cursor-pointer';\r\nconst WRAPPER_DISABLED = 'cursor-not-allowed opacity-60';\r\n\r\nconst LABEL_BASE = 'text-[var(--cxs-color-on-surface)]';\r\nconst LABEL_DISABLED = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst LABEL_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'text-sm',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst CONTROL_BASE =\r\n \"relative flex shrink-0 items-center justify-center rounded-full border \" +\r\n \"bg-[var(--cxs-color-surface)] transition-colors \" +\r\n \"after:absolute after:inset-0 after:m-auto after:rounded-full after:content-[''] \" +\r\n 'after:transition-transform after:scale-0 peer-checked:after:scale-100 ' +\r\n 'peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 ' +\r\n 'peer-focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\nconst CONTROL_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6'\r\n};\r\n\r\nconst CONTROL_VARIANT_CLASSES: Record<CxsRadioVariant, string> = {\r\n primary:\r\n 'peer-checked:border-[var(--cxs-color-primary)] after:bg-[var(--cxs-color-primary)]',\r\n secondary:\r\n 'peer-checked:border-[var(--cxs-color-on-surface)] after:bg-[var(--cxs-color-on-surface)]'\r\n};\r\n\r\nconst DOT_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'after:h-2 after:w-2',\r\n md: 'after:h-2.5 after:w-2.5',\r\n lg: 'after:h-3 after:w-3'\r\n};\r\n\r\nconst INVALID_CLASSES =\r\n 'border-[var(--cxs-color-danger)] peer-checked:border-[var(--cxs-color-danger)] ' +\r\n 'after:bg-[var(--cxs-color-danger)]';\r\n\r\n@Component({\r\n selector: 'cxs-radio',\r\n standalone: true,\r\n templateUrl: './radio.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsRadioComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsRadioComponent implements ControlValueAccessor {\r\n @Input() value = '';\r\n @Input() name?: string;\r\n @Input() variant: CxsRadioVariant = 'primary';\r\n @Input() size: CxsRadioSize = 'md';\r\n @Input() disabled = false;\r\n @Input() required = false;\r\n @Input() invalid = false;\r\n @Input() autofocus = false;\r\n\r\n @Input() id?: string;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaDescribedby?: string;\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n private selectedValue: string | null = null;\r\n private disabledFromControl = false;\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get isChecked(): boolean {\r\n return this.selectedValue !== null && this.selectedValue === this.value;\r\n }\r\n\r\n get wrapperClass(): string {\r\n return [\r\n WRAPPER_BASE,\r\n this.isDisabled ? WRAPPER_DISABLED : WRAPPER_ENABLED\r\n ].join(' ');\r\n }\r\n\r\n get labelClass(): string {\r\n return [\r\n LABEL_BASE,\r\n LABEL_SIZE_CLASSES[this.size],\r\n this.isDisabled ? LABEL_DISABLED : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get controlClass(): string {\r\n return [\r\n CONTROL_BASE,\r\n CONTROL_SIZE_CLASSES[this.size],\r\n DOT_SIZE_CLASSES[this.size],\r\n CONTROL_VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n this.selectedValue = value ?? null;\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onRadioChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n if (!target.checked) {\r\n return;\r\n }\r\n\r\n this.selectedValue = this.value;\r\n this.onChange(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<label [class]=\"wrapperClass\">\r\n <input\r\n class=\"peer sr-only\"\r\n type=\"radio\"\r\n [attr.id]=\"id\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\r\n [attr.autofocus]=\"autofocus ? true : null\"\r\n [checked]=\"isChecked\"\r\n [disabled]=\"isDisabled\"\r\n [required]=\"required\"\r\n (change)=\"onRadioChange($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <span [class]=\"controlClass\" aria-hidden=\"true\"></span>\r\n <span [class]=\"labelClass\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsSelectVariant = 'outline' | 'filled';\r\nexport type CxsSelectSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\n 'w-full appearance-none rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst VARIANT_CLASSES: Record<CxsSelectVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsSelectSize, string> = {\n sm: 'h-8 pl-3 pr-9 text-sm',\n md: 'h-10 pl-3 pr-9 text-sm',\n lg: 'h-12 pl-4 pr-10 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsSelectSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\r\n@Component({\r\n selector: 'cxs-select',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './select.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() variant: CxsSelectVariant = 'outline';\n @Input() size: CxsSelectSize = 'md';\n @Input() disabled = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() label?: string;\n @Input() placeholder?: string;\n @Input() placeholderValue = '';\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\r\n @Output() valueChange = new EventEmitter<string>();\n\n readonly instanceId = `cxs-select-${CxsSelectComponent.nextId++}`;\n\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get selectClass(): string {\n return [\r\n BASE_CLASSES,\r\n SIZE_CLASSES[this.size],\r\n VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get selectId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.selectId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get selectValue(): string {\n if (this.placeholder && this.value === '') {\n return this.placeholderValue;\n }\r\n\r\n return this.value;\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n this.value = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onSelectChange(event: Event): void {\r\n const target = event.target as HTMLSelectElement;\r\n const nextValue = target.value;\r\n\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\n <label *ngIf=\"label\" [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"selectId\">\n {{ label }}\n </label>\n <div class=\"relative\">\n <select\n [class]=\"selectClass\"\n [attr.id]=\"selectId\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [disabled]=\"isDisabled\"\n [required]=\"required\"\n [value]=\"selectValue\"\n (change)=\"onSelectChange($event)\"\n (blur)=\"onBlur()\"\n >\n <option *ngIf=\"placeholder\" [value]=\"placeholderValue\" disabled>\n {{ placeholder }}\n </option>\n <ng-content></ng-content>\n </select>\n <span\n class=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-[var(--cxs-color-on-surface-muted)]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"h-4 w-4\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 0 1 1.06.02L10 10.94l3.71-3.71a.75.75 0 1 1 1.06 1.06l-4.24 4.25a.75.75 0 0 1-1.06 0L5.21 8.29a.75.75 0 0 1 .02-1.08Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n</div>\n","import { Attribute, ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type CxsTableAlign = 'left' | 'center' | 'right';\n\nexport interface CxsTableColumn {\n key: string;\n label: string;\n align?: CxsTableAlign;\n width?: string;\n headerClass?: string;\n cellClass?: string;\n}\n\nconst WRAPPER_BASE_CLASSES = 'w-full overflow-hidden';\nconst WRAPPER_BORDERED_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)]';\n\nconst TABLE_BASE_CLASSES = 'w-full border-collapse text-sm text-[var(--cxs-color-on-surface)]';\nconst TABLE_COMPACT_CLASSES = 'text-xs';\n\nconst HEADER_ROW_CLASSES =\n 'border-b border-[var(--cxs-color-border)] text-xs uppercase tracking-[0.2em] ' +\n 'text-[var(--cxs-color-on-surface-muted)]';\nconst HEADER_CELL_BASE_CLASSES = 'px-3 py-2 text-left font-semibold';\n\nconst BODY_ROW_BASE_CLASSES = 'border-b border-[var(--cxs-color-border)] last:border-b-0';\nconst BODY_ROW_STRIPED_CLASSES = 'odd:bg-[var(--cxs-color-surface)] even:bg-[var(--cxs-color-surface-hover)]';\n\nconst BODY_CELL_BASE_CLASSES = 'px-3 py-2 align-top';\nconst BODY_CELL_COMPACT_CLASSES = 'px-2 py-1.5';\n\nconst ALIGN_CLASSES: Record<CxsTableAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst EMPTY_ROW_CLASSES = 'text-sm text-[var(--cxs-color-on-surface-muted)]';\n\n@Component({\n selector: 'cxs-table',\n standalone: true,\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTableComponent {\n @Input() columns: CxsTableColumn[] = [];\n @Input() data: Array<Record<string, unknown>> = [];\n @Input() caption?: string;\n @Input() ariaLabel = 'Table';\n @Input() striped = false;\n @Input() bordered = false;\n @Input() compact = false;\n @Input() emptyMessage = 'No data available';\n @Input() emptyCell = '—';\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get wrapperClass(): string {\n return [\n WRAPPER_BASE_CLASSES,\n this.bordered ? WRAPPER_BORDERED_CLASSES : '',\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get tableClass(): string {\n return [TABLE_BASE_CLASSES, this.compact ? TABLE_COMPACT_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get headerRowClass(): string {\n return HEADER_ROW_CLASSES;\n }\n\n get bodyRowClass(): string {\n return [\n BODY_ROW_BASE_CLASSES,\n this.striped ? BODY_ROW_STRIPED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get emptyRowClass(): string {\n return EMPTY_ROW_CLASSES;\n }\n\n get colSpan(): number {\n return Math.max(this.columns.length, 1);\n }\n\n headerCellClass(column: CxsTableColumn): string {\n return [\n HEADER_CELL_BASE_CLASSES,\n ALIGN_CLASSES[column.align ?? 'left'],\n column.headerClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n bodyCellClass(column: CxsTableColumn): string {\n return [\n BODY_CELL_BASE_CLASSES,\n this.compact ? BODY_CELL_COMPACT_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.cellClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n cellValue(row: Record<string, unknown>, column: CxsTableColumn): string {\n const value = row[column.key];\n if (value === null || value === undefined || value === '') {\n return this.emptyCell;\n }\n\n return String(value);\n }\n}\n","<div [class]=\"wrapperClass\">\n <table [class]=\"tableClass\" [attr.aria-label]=\"ariaLabel\">\n @if (caption) {\n <caption class=\"sr-only\">{{ caption }}</caption>\n }\n <thead>\n <tr [class]=\"headerRowClass\">\n @for (column of columns; track column) {\n <th\n [class]=\"headerCellClass(column)\"\n [style.width]=\"column.width ?? null\"\n scope=\"col\"\n >\n {{ column.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (data.length === 0) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">{{ emptyMessage }}</span>\n </td>\n </tr>\n } @else {\n @for (row of data; track row; let rowIndex = $index) {\n <tr [class]=\"bodyRowClass\">\n @for (column of columns; track column) {\n <td [class]=\"bodyCellClass(column)\">\n {{ cellValue(row, column) }}\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nexport type CxsToggleSize = 'sm' | 'md' | 'lg';\n\nconst WRAPPER_CLASSES = 'inline-flex items-center gap-2';\nconst LABEL_BASE_CLASSES = 'text-sm text-[var(--cxs-color-on-surface)] select-none';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst TRACK_BASE_CLASSES =\n 'relative inline-flex items-center rounded-full border transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:pointer-events-none disabled:opacity-60';\n\nconst TRACK_SIZE_CLASSES: Record<CxsToggleSize, string> = {\n sm: 'h-6 w-11 p-0.5',\n md: 'h-6 w-11 p-0.5',\n lg: 'h-6 w-11 p-0.5'\n};\n\nconst TRACK_STATE_CLASSES = {\n on: 'bg-[var(--cxs-color-primary)] border-[var(--cxs-color-primary)]',\n off: 'bg-[var(--cxs-color-surface-hover)] border-[var(--cxs-color-border)]'\n};\n\nconst THUMB_BASE_CLASSES =\n 'absolute left-0.5 top-1/2 -translate-y-1/2 rounded-full transition-transform duration-200 ease-out';\n\nconst THUMB_SIZE_CLASSES: Record<CxsToggleSize, string> = {\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-5 w-5'\n};\n\nconst THUMB_STATE_CLASSES = {\n on: {\n sm: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]',\n md: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]',\n lg: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]'\n },\n off: 'translate-x-0 bg-[var(--cxs-color-surface)]'\n};\n\n@Component({\n selector: 'cxs-toggle',\n standalone: true,\n templateUrl: './toggle.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsToggleComponent {\n private static nextId = 0;\n\n @Input() checked = false;\n @Input() disabled = false;\n @Input() size: CxsToggleSize = 'md';\n @Input() label?: string;\n @Input() ariaLabel = 'Toggle';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n readonly labelId = `cxs-toggle-label-${CxsToggleComponent.nextId++}`;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [LABEL_BASE_CLASSES, this.disabled ? LABEL_DISABLED_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get trackClass(): string {\n return [\n TRACK_BASE_CLASSES,\n TRACK_SIZE_CLASSES[this.size],\n this.checked ? TRACK_STATE_CLASSES.on : TRACK_STATE_CLASSES.off\n ].join(' ');\n }\n\n get thumbClass(): string {\n const thumbState = this.checked\n ? THUMB_STATE_CLASSES.on[this.size]\n : THUMB_STATE_CLASSES.off;\n\n return [THUMB_BASE_CLASSES, THUMB_SIZE_CLASSES[this.size], thumbState].join(' ');\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checkedChange.emit(!this.checked);\n }\n}\n","<div [class]=\"wrapperClass\">\n <button\n type=\"button\"\n [class]=\"trackClass\"\n role=\"switch\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"checked ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"label ? labelId : null\"\n [attr.aria-label]=\"ariaLabelValue\"\n (click)=\"toggle()\"\n >\n <span [class]=\"thumbClass\" aria-hidden=\"true\"></span>\n </button>\n @if (label) {\n <span [id]=\"labelId\" [class]=\"labelClass\">{{ label }}</span>\n }\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nexport type CxsToastVariant = 'info' | 'neutral' | 'danger';\nexport type CxsToastCloseReason = 'dismiss' | 'timeout';\nexport type CxsToastPosition =\n | 'bottom-right'\n | 'bottom'\n | 'bottom-left'\n | 'top-right'\n | 'top'\n | 'top-left'\n | 'right'\n | 'left'\n | 'center';\nexport type CxsToastMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'none';\n\nconst HOST_BASE_CLASSES = 'pointer-events-none';\nconst POSITION_CLASSES: Record<CxsToastPosition, string> = {\n 'bottom-right': 'fixed bottom-6 right-6 items-end',\n bottom: 'fixed bottom-6 left-1/2 -translate-x-1/2 items-end',\n 'bottom-left': 'fixed bottom-6 left-6 items-start',\n 'top-right': 'fixed top-6 right-6 items-end',\n top: 'fixed top-6 left-1/2 -translate-x-1/2 items-start',\n 'top-left': 'fixed top-6 left-6 items-start',\n right: 'fixed right-6 top-1/2 -translate-y-1/2 items-end',\n left: 'fixed left-6 top-1/2 -translate-y-1/2 items-start',\n center: 'fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 items-center'\n};\n\nconst BASE_CLASSES =\n 'pointer-events-auto flex w-full items-start gap-3 rounded-[var(--cxs-radius-md)] ' +\n 'border px-4 py-3 shadow-[var(--cxs-shadow-sm)]';\n\nconst WIDTH_CLASSES: Record<CxsToastMaxWidth, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n none: 'max-w-none'\n};\n\nconst VARIANT_CLASSES: Record<CxsToastVariant, string> = {\n info:\n 'border-[var(--cxs-color-primary)] bg-[var(--cxs-color-primary-ghost)] ' +\n 'text-[var(--cxs-color-on-surface)]',\n neutral:\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\n 'text-[var(--cxs-color-on-surface)]',\n danger:\n 'border-[var(--cxs-color-danger)] bg-[var(--cxs-color-surface)] ' +\n 'text-[var(--cxs-color-on-surface)]'\n};\n\nconst TITLE_CLASSES = 'text-sm font-semibold';\nconst MESSAGE_CLASSES = 'mt-1 text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst ACTIONS_CLASSES = 'mt-3 flex flex-wrap items-center gap-2 empty:hidden';\nconst CLOSE_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\n@Component({\n selector: 'cxs-toast',\n standalone: true,\n templateUrl: './toast.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsToastComponent implements OnChanges, OnDestroy {\n @Input() open = false;\n @Input() title?: string;\n @Input() message?: string;\n @Input() ariaLabel = 'Notification';\n @Input() variant: CxsToastVariant = 'info';\n @Input() dismissible = true;\n @Input() duration = 0;\n @Input() position: CxsToastPosition = 'bottom-right';\n @Input() maxWidth: CxsToastMaxWidth = 'sm';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() dismissed = new EventEmitter<CxsToastCloseReason>();\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open'] || changes['duration']) {\n this.resetTimer();\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n get hostClassName(): string {\n return [HOST_BASE_CLASSES, POSITION_CLASSES[this.position]].join(' ');\n }\n\n get toastClass(): string {\n return [\n BASE_CLASSES,\n WIDTH_CLASSES[this.maxWidth],\n VARIANT_CLASSES[this.variant],\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get titleClass(): string {\n return TITLE_CLASSES;\n }\n\n get messageClass(): string {\n return MESSAGE_CLASSES;\n }\n\n get actionsClass(): string {\n return ACTIONS_CLASSES;\n }\n\n get closeButtonClass(): string {\n return CLOSE_BUTTON_CLASSES;\n }\n\n get role(): 'status' | 'alert' {\n return this.variant === 'danger' ? 'alert' : 'status';\n }\n\n get ariaLive(): 'polite' | 'assertive' {\n return this.variant === 'danger' ? 'assertive' : 'polite';\n }\n\n get ariaLabelValue(): string | null {\n if (this.title) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n requestClose(reason: CxsToastCloseReason): void {\n this.openChange.emit(false);\n this.dismissed.emit(reason);\n }\n\n private resetTimer(): void {\n this.clearTimer();\n\n if (this.open && this.duration > 0) {\n this.timeoutId = setTimeout(() => {\n this.requestClose('timeout');\n }, this.duration);\n }\n }\n\n private clearTimer(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","@if (open) {\n <div [class]=\"hostClassName\">\n <div\n [class]=\"toastClass\"\n [attr.role]=\"role\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-label]=\"ariaLabelValue\"\n >\n <div class=\"flex-1\">\n @if (title) {\n <p [class]=\"titleClass\">{{ title }}</p>\n }\n @if (message) {\n <p [class]=\"messageClass\">{{ message }}</p>\n }\n <ng-content></ng-content>\n <div [class]=\"actionsClass\">\n <ng-content select=\"[cxsToastAction]\"></ng-content>\n </div>\n </div>\n @if (dismissible) {\n <button\n type=\"button\"\n [class]=\"closeButtonClass\"\n aria-label=\"Dismiss notification\"\n (click)=\"requestClose('dismiss')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" />\n </svg>\n\n </button>\n }\n </div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input\n} from '@angular/core';\n\nexport type CxsTooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nconst WRAPPER_CLASSES = 'relative inline-flex';\nconst TOOLTIP_BASE_CLASSES =\n 'pointer-events-none absolute z-50 max-w-xs rounded-[var(--cxs-radius-md)] px-2 py-1 text-xs ' +\n 'text-[var(--cxs-color-on-primary)] bg-[var(--cxs-color-on-surface)] shadow-[var(--cxs-shadow-sm)]';\n\nconst TOOLTIP_POSITION_CLASSES: Record<CxsTooltipPosition, string> = {\n top: 'bottom-full left-1/2 mb-2 -translate-x-1/2',\n right: 'left-full top-1/2 ml-2 -translate-y-1/2',\n bottom: 'top-full left-1/2 mt-2 -translate-x-1/2',\n left: 'right-full top-1/2 mr-2 -translate-y-1/2'\n};\n\n@Component({\n selector: 'cxs-tooltip',\n standalone: true,\n templateUrl: './tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTooltipComponent {\n private static nextId = 0;\n\n @Input() text = '';\n @Input() position: CxsTooltipPosition = 'top';\n @Input() disabled = false;\n\n open = false;\n readonly tooltipId = `cxs-tooltip-${CxsTooltipComponent.nextId++}`;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get tooltipClass(): string {\n return [TOOLTIP_BASE_CLASSES, TOOLTIP_POSITION_CLASSES[this.position]].join(' ');\n }\n\n get describedBy(): string | null {\n if (!this.text || this.disabled) {\n return null;\n }\n\n return this.tooltipId;\n }\n\n show(): void {\n if (this.disabled || !this.text) {\n return;\n }\n\n this.open = true;\n }\n\n hide(): void {\n this.open = false;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.hide();\n }\n\n @HostListener('focusin')\n onFocusIn(): void {\n this.show();\n }\n\n @HostListener('focusout')\n onFocusOut(): void {\n this.hide();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.hide();\n }\n }\n}\n","<span [class]=\"wrapperClass\">\n <span [attr.aria-describedby]=\"describedBy\">\n <ng-content></ng-content>\n </span>\n @if (open) {\n <span [id]=\"tooltipId\" role=\"tooltip\" [class]=\"tooltipClass\">\n {{ text }}\n </span>\n }\n</span>\n","import { Directive, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\r\n\r\nexport type CxsThemeMode = 'light' | 'dark' | 'system';\r\n\r\nconst DEFAULT_DARK_CLASS = 'cxs-theme-dark';\r\n\r\n@Directive({\r\n selector: '[cxsTheme]',\r\n standalone: true\r\n})\r\nexport class CxsThemeDirective implements OnDestroy {\r\n private mode: CxsThemeMode = 'light';\r\n private darkClass = DEFAULT_DARK_CLASS;\r\n private mediaQuery: MediaQueryList | null = null;\r\n private mediaListener: ((event: MediaQueryListEvent) => void) | null = null;\r\n\r\n constructor(\r\n private readonly host: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n @Input()\r\n set cxsTheme(value: CxsThemeMode | null | undefined) {\r\n this.mode = value ?? 'light';\r\n this.applyTheme();\r\n }\r\n\r\n @Input()\r\n set cxsThemeDarkClass(value: string | null | undefined) {\r\n const nextClass = value?.trim() || DEFAULT_DARK_CLASS;\r\n if (nextClass === this.darkClass) {\r\n return;\r\n }\r\n\r\n const previousClass = this.darkClass;\r\n this.darkClass = nextClass;\r\n this.renderer.removeClass(this.host.nativeElement, previousClass);\r\n this.applyTheme();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detachMediaListener();\r\n }\r\n\r\n private applyTheme(): void {\r\n if (this.mode === 'system') {\r\n this.attachMediaListener();\r\n } else {\r\n this.detachMediaListener();\r\n }\r\n\r\n const shouldEnableDark =\r\n this.mode === 'dark' || (this.mode === 'system' && this.prefersDark());\r\n\r\n if (shouldEnableDark) {\r\n this.renderer.addClass(this.host.nativeElement, this.darkClass);\r\n } else {\r\n this.renderer.removeClass(this.host.nativeElement, this.darkClass);\r\n }\r\n }\r\n\r\n private prefersDark(): boolean {\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n return false;\r\n }\r\n\r\n if (!this.mediaQuery) {\r\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n }\r\n\r\n return this.mediaQuery.matches;\r\n }\r\n\r\n private attachMediaListener(): void {\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n return;\r\n }\r\n\r\n if (!this.mediaQuery) {\r\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n }\r\n\r\n if (this.mediaListener) {\r\n return;\r\n }\r\n\r\n this.mediaListener = () => this.applyTheme();\r\n\r\n if (typeof this.mediaQuery.addEventListener === 'function') {\r\n this.mediaQuery.addEventListener('change', this.mediaListener);\r\n } else if (typeof this.mediaQuery.addListener === 'function') {\r\n this.mediaQuery.addListener(this.mediaListener);\r\n }\r\n }\r\n\r\n private detachMediaListener(): void {\r\n if (!this.mediaQuery || !this.mediaListener) {\r\n this.mediaListener = null;\r\n return;\r\n }\r\n\r\n if (typeof this.mediaQuery.removeEventListener === 'function') {\r\n this.mediaQuery.removeEventListener('change', this.mediaListener);\r\n } else if (typeof this.mediaQuery.removeListener === 'function') {\r\n this.mediaQuery.removeListener(this.mediaListener);\r\n }\r\n\r\n this.mediaListener = null;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of cerxos-ui\r\n */\r\n\r\nexport * from './lib/cerxos-ui';\nexport * from './lib/components/action-menu/action-menu.component';\nexport * from './lib/components/alert/alert.component';\nexport * from './lib/components/accordion/accordion.component';\nexport * from './lib/components/accordion/accordion-item.component';\nexport * from './lib/components/badge/badge.component';\nexport * from './lib/components/avatar/avatar.component';\nexport * from './lib/components/breadcrumb/breadcrumb.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/card/card.component';\nexport * from './lib/components/checkbox/checkbox.component';\nexport * from './lib/components/carousel/carousel.component';\nexport * from './lib/components/data-table/data-table-cell.directive';\nexport * from './lib/components/data-table/data-table.component';\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/datepicker/datepicker.component';\nexport * from './lib/components/input/input.component';\nexport * from './lib/components/menubar/menubar.component';\nexport * from './lib/components/multi-select/multi-select.component';\nexport * from './lib/components/tabs/tabs.component';\nexport * from './lib/components/tabs/tab-panel.component';\nexport * from './lib/components/tabs/tab-label.directive';\nexport * from './lib/components/radio/radio.component';\nexport * from './lib/components/select/select.component';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/toggle/toggle.component';\nexport * from './lib/components/toast/toast.component';\nexport * from './lib/components/tooltip/tooltip.component';\nexport * from './lib/directives/theme/theme.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ITEM_BASE_CLASSES","ITEM_DISABLED_CLASSES","EMPTY_STATE_CLASSES","BASE_CLASSES","VARIANT_CLASSES","CLOSE_BUTTON_CLASSES","SIZE_CLASSES","WRAPPER_BASE","WRAPPER_ENABLED","WRAPPER_DISABLED","LABEL_BASE","LABEL_DISABLED","LABEL_SIZE_CLASSES","CONTROL_BASE","CONTROL_SIZE_CLASSES","WRAPPER_BASE_CLASSES","WRAPPER_BORDERED_CLASSES","TABLE_BASE_CLASSES","TABLE_COMPACT_CLASSES","HEADER_ROW_CLASSES","HEADER_CELL_BASE_CLASSES","BODY_ROW_BASE_CLASSES","BODY_ROW_STRIPED_CLASSES","BODY_CELL_BASE_CLASSES","BODY_CELL_COMPACT_CLASSES","ALIGN_CLASSES","EMPTY_ROW_CLASSES","TITLE_CLASSES","ACTIONS_CLASSES","WRAPPER_CLASSES","LABEL_BASE_CLASSES","LABEL_DISABLED_CLASSES","INVALID_CLASSES","PANEL_CLASSES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cerxos-ui.mjs","sources":["../../../projects/cerxos-ui/src/lib/cerxos-ui.ts","../../../projects/cerxos-ui/src/lib/components/action-menu/action-menu.component.ts","../../../projects/cerxos-ui/src/lib/components/action-menu/action-menu.component.html","../../../projects/cerxos-ui/src/lib/components/alert/alert.component.ts","../../../projects/cerxos-ui/src/lib/components/alert/alert.component.html","../../../projects/cerxos-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/cerxos-ui/src/lib/components/accordion/accordion.component.html","../../../projects/cerxos-ui/src/lib/components/accordion/accordion-item.component.ts","../../../projects/cerxos-ui/src/lib/components/accordion/accordion-item.component.html","../../../projects/cerxos-ui/src/lib/components/badge/badge.component.ts","../../../projects/cerxos-ui/src/lib/components/badge/badge.component.html","../../../projects/cerxos-ui/src/lib/components/avatar/avatar.component.ts","../../../projects/cerxos-ui/src/lib/components/avatar/avatar.component.html","../../../projects/cerxos-ui/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/cerxos-ui/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/cerxos-ui/src/lib/components/button/button.component.ts","../../../projects/cerxos-ui/src/lib/components/button/button.component.html","../../../projects/cerxos-ui/src/lib/components/card/card.component.ts","../../../projects/cerxos-ui/src/lib/components/card/card.component.html","../../../projects/cerxos-ui/src/lib/components/checkbox/checkbox.component.ts","../../../projects/cerxos-ui/src/lib/components/checkbox/checkbox.component.html","../../../projects/cerxos-ui/src/lib/components/carousel/carousel.component.ts","../../../projects/cerxos-ui/src/lib/components/carousel/carousel.component.html","../../../projects/cerxos-ui/src/lib/components/data-table/data-table-cell.directive.ts","../../../projects/cerxos-ui/src/lib/components/data-table/data-table.component.ts","../../../projects/cerxos-ui/src/lib/components/data-table/data-table.component.html","../../../projects/cerxos-ui/src/lib/components/dialog/dialog.component.ts","../../../projects/cerxos-ui/src/lib/components/dialog/dialog.component.html","../../../projects/cerxos-ui/src/lib/components/datepicker/datepicker.component.ts","../../../projects/cerxos-ui/src/lib/components/datepicker/datepicker.component.html","../../../projects/cerxos-ui/src/lib/components/input/input.component.ts","../../../projects/cerxos-ui/src/lib/components/input/input.component.html","../../../projects/cerxos-ui/src/lib/components/menubar/menubar.component.ts","../../../projects/cerxos-ui/src/lib/components/menubar/menubar.component.html","../../../projects/cerxos-ui/src/lib/components/multi-select/multi-select.component.ts","../../../projects/cerxos-ui/src/lib/components/multi-select/multi-select.component.html","../../../projects/cerxos-ui/src/lib/components/tabs/tab-label.directive.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tab-panel.component.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tab-panel.component.html","../../../projects/cerxos-ui/src/lib/components/tabs/tabs.component.ts","../../../projects/cerxos-ui/src/lib/components/tabs/tabs.component.html","../../../projects/cerxos-ui/src/lib/components/radio/radio.component.ts","../../../projects/cerxos-ui/src/lib/components/radio/radio.component.html","../../../projects/cerxos-ui/src/lib/components/select/select.component.ts","../../../projects/cerxos-ui/src/lib/components/select/select.component.html","../../../projects/cerxos-ui/src/lib/components/table/table.component.ts","../../../projects/cerxos-ui/src/lib/components/table/table.component.html","../../../projects/cerxos-ui/src/lib/components/toggle/toggle.component.ts","../../../projects/cerxos-ui/src/lib/components/toggle/toggle.component.html","../../../projects/cerxos-ui/src/lib/components/toast/toast.component.ts","../../../projects/cerxos-ui/src/lib/components/toast/toast.component.html","../../../projects/cerxos-ui/src/lib/components/tooltip/tooltip.component.ts","../../../projects/cerxos-ui/src/lib/components/tooltip/tooltip.component.html","../../../projects/cerxos-ui/src/lib/directives/theme/theme.directive.ts","../../../projects/cerxos-ui/src/public-api.ts","../../../projects/cerxos-ui/src/cerxos-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cxs-cerxos-ui',\r\n imports: [],\r\n template: `\r\n <p>\r\n cerxos-ui works!\r\n </p>\r\n `,\r\n styles: ``,\r\n})\r\nexport class CerxosUi {\r\n\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nexport type CxsActionMenuAlign = 'start' | 'end';\nexport type CxsActionMenuItemTone = 'default' | 'danger';\n\nexport interface CxsActionMenuItem {\n label: string;\n value: string;\n disabled?: boolean;\n tone?: CxsActionMenuItemTone;\n}\n\nconst TRIGGER_BASE_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] p-1.5 ' +\n 'text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'hover:bg-[var(--cxs-color-surface-hover)] hover:text-[var(--cxs-color-on-surface)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst TRIGGER_DISABLED_CLASSES = 'pointer-events-none opacity-60';\n\nconst MENU_BASE_CLASSES =\n 'min-w-[10rem] rounded-[var(--cxs-radius-md)] ' +\n 'border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] py-1 ' +\n 'shadow-[var(--cxs-shadow-sm)]';\n\nconst MENU_POSITION_CLASSES = 'absolute z-40 mt-2';\nconst MENU_FLOATING_CLASSES = 'fixed z-50';\n\nconst MENU_ALIGN_CLASSES: Record<CxsActionMenuAlign, string> = {\n start: 'left-0 origin-top-left',\n end: 'right-0 origin-top-right'\n};\n\nconst ITEM_BASE_CLASSES =\n 'flex w-full items-center gap-2 rounded-[var(--cxs-radius-sm)] px-3 py-2 text-left text-sm ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst ITEM_DEFAULT_CLASSES =\n 'text-[var(--cxs-color-on-surface)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DANGER_CLASSES =\n 'text-[var(--cxs-color-danger)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DISABLED_CLASSES = 'pointer-events-none opacity-60';\nconst EMPTY_STATE_CLASSES = 'block px-3 py-2 text-sm text-[var(--cxs-color-on-surface-muted)]';\n\n@Component({\n selector: 'cxs-action-menu',\n standalone: true,\n templateUrl: './action-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsActionMenuComponent {\n private static nextId = 0;\n\n @Input() items: CxsActionMenuItem[] = [];\n @Input() align: CxsActionMenuAlign = 'end';\n @Input() ariaLabel = 'Open actions menu';\n @Input() menuLabel = 'Actions';\n @Input() disabled = false;\n @Input() floating = false;\n\n @Output() itemSelected = new EventEmitter<CxsActionMenuItem>();\n\n @ViewChild('trigger', { read: ElementRef }) private trigger?: ElementRef<HTMLButtonElement>;\n @ViewChild('menu', { read: ElementRef }) private menu?: ElementRef<HTMLDivElement>;\n @ViewChildren('menuItem', { read: ElementRef }) private menuItems?: QueryList<ElementRef<HTMLElement>>;\n\n readonly menuId = `cxs-action-menu-${CxsActionMenuComponent.nextId++}`;\n isOpen = false;\n menuPosition: { top: number; left: number } | null = null;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n get triggerClass(): string {\n return [TRIGGER_BASE_CLASSES, this.disabled ? TRIGGER_DISABLED_CLASSES : ''].filter(Boolean).join(' ');\n }\n\n get menuClass(): string {\n return [\n MENU_BASE_CLASSES,\n this.floating ? MENU_FLOATING_CLASSES : MENU_POSITION_CLASSES,\n !this.floating ? MENU_ALIGN_CLASSES[this.align] : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get emptyStateClass(): string {\n return EMPTY_STATE_CLASSES;\n }\n\n isItemDisabled(item: CxsActionMenuItem): boolean {\n return this.disabled || !!item.disabled;\n }\n\n getItemClass(item: CxsActionMenuItem): string {\n return [\n ITEM_BASE_CLASSES,\n item.tone === 'danger' ? ITEM_DANGER_CLASSES : ITEM_DEFAULT_CLASSES,\n this.isItemDisabled(item) ? ITEM_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled) {\n return;\n }\n\n this.isOpen = true;\n this.updateMenuPosition();\n this.focusFirstItem();\n }\n\n close(): void {\n this.isOpen = false;\n this.menuPosition = null;\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.open();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.focusTrigger();\n return;\n }\n\n const items = this.getFocusableItems();\n if (!items.length) {\n return;\n }\n\n const currentIndex = items.findIndex((item) => item === document.activeElement);\n let nextIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowDown':\n nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n break;\n case 'ArrowUp':\n nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n items[nextIndex]?.focus();\n }\n\n onItemClick(item: CxsActionMenuItem): void {\n if (this.isItemDisabled(item)) {\n return;\n }\n\n this.itemSelected.emit(item);\n this.close();\n this.focusTrigger();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n if (!this.isOpen) {\n return;\n }\n\n this.updateMenuPosition();\n }\n\n private focusFirstItem(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n setTimeout(() => {\n const items = this.getFocusableItems();\n items[0]?.focus();\n }, 0);\n }\n\n private focusTrigger(): void {\n this.trigger?.nativeElement.focus();\n }\n\n private updateMenuPosition(): void {\n if (!this.floating) {\n return;\n }\n\n if (typeof window === 'undefined') {\n return;\n }\n\n const trigger = this.trigger?.nativeElement;\n if (!trigger) {\n return;\n }\n\n const rect = trigger.getBoundingClientRect();\n const offset = 8;\n\n setTimeout(() => {\n const menuEl = this.menu?.nativeElement;\n const menuRect = menuEl?.getBoundingClientRect();\n const menuWidth = menuRect?.width ?? 160;\n const menuHeight = menuRect?.height ?? 0;\n\n let top = rect.bottom + offset;\n let left = this.align === 'end' ? rect.right - menuWidth : rect.left;\n\n if (top + menuHeight > window.innerHeight) {\n top = rect.top - menuHeight - offset;\n }\n\n if (top < offset) {\n top = offset;\n }\n\n if (left + menuWidth > window.innerWidth - offset) {\n left = Math.max(offset, window.innerWidth - menuWidth - offset);\n }\n\n if (left < offset) {\n left = offset;\n }\n\n this.menuPosition = { top, left };\n }, 0);\n }\n\n private getFocusableItems(): HTMLElement[] {\n return (this.menuItems?.toArray() ?? [])\n .map((item) => item.nativeElement)\n .filter((item) => !item.hasAttribute('disabled') && !item.hasAttribute('data-disabled'));\n }\n}\n","<div class=\"relative inline-flex\">\n <button\n #trigger\n type=\"button\"\n [class]=\"triggerClass\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"ariaLabel\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n <svg class=\"h-4 w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <circle cx=\"4\" cy=\"10\" r=\"1.5\"></circle>\n <circle cx=\"10\" cy=\"10\" r=\"1.5\"></circle>\n <circle cx=\"16\" cy=\"10\" r=\"1.5\"></circle>\n </svg>\n </button>\n\n @if (isOpen) {\n <div\n #menu\n [class]=\"menuClass\"\n [attr.id]=\"menuId\"\n role=\"menu\"\n [attr.aria-label]=\"menuLabel\"\n [style.top.px]=\"menuPosition?.top\"\n [style.left.px]=\"menuPosition?.left\"\n (keydown)=\"onMenuKeydown($event)\"\n >\n @if (items.length) {\n @for (item of items; track item.value) {\n <button\n #menuItem\n type=\"button\"\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n [attr.aria-disabled]=\"isItemDisabled(item) ? 'true' : null\"\n [disabled]=\"isItemDisabled(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.label }}\n </button>\n }\n } @else {\n <span [class]=\"emptyStateClass\">No actions</span>\n }\n </div>\n }\n</div>\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nexport type CxsAlertVariant = 'info' | 'neutral' | 'danger';\r\n\r\nconst BASE_CLASSES =\r\n 'relative flex w-full gap-3 rounded-[var(--cxs-radius-md)] border border-l-4 px-4 py-3 text-sm ' +\r\n 'text-[var(--cxs-color-on-surface)]';\r\n\r\nconst VARIANT_CLASSES: Record<CxsAlertVariant, string> = {\r\n info:\r\n 'border-[var(--cxs-color-primary)] border-l-[var(--cxs-color-primary)] ' +\r\n 'bg-[var(--cxs-color-primary-ghost)]',\r\n neutral:\r\n 'border-[var(--cxs-color-border)] border-l-[var(--cxs-color-border)] ' +\r\n 'bg-[var(--cxs-color-surface)]',\r\n danger:\r\n 'border-[var(--cxs-color-danger)] border-l-[var(--cxs-color-danger)] ' +\r\n 'bg-[var(--cxs-color-surface)]'\r\n};\r\n\r\nconst TITLE_BASE = 'font-semibold';\r\n\r\nconst TITLE_VARIANT: Record<CxsAlertVariant, string> = {\r\n info: 'text-[var(--cxs-color-primary)]',\r\n neutral: 'text-[var(--cxs-color-on-surface)]',\r\n danger: 'text-[var(--cxs-color-danger)]'\r\n};\r\n\r\nconst CLOSE_BUTTON_CLASSES =\r\n 'ml-auto inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\r\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\r\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\r\n 'focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\n@Component({\r\n selector: 'cxs-alert',\r\n standalone: true,\r\n templateUrl: './alert.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsAlertComponent {\r\n @Input() variant: CxsAlertVariant = 'info';\r\n @Input() title?: string;\r\n @Input() dismissible = false;\r\n\r\n @Output() closed = new EventEmitter<void>();\r\n\r\n isVisible = true;\r\n\r\n get alertClass(): string {\r\n return [BASE_CLASSES, VARIANT_CLASSES[this.variant]].join(' ');\r\n }\r\n\r\n get titleClass(): string {\r\n return [TITLE_BASE, TITLE_VARIANT[this.variant]].join(' ');\r\n }\r\n\r\n get closeButtonClass(): string {\r\n return CLOSE_BUTTON_CLASSES;\r\n }\r\n\r\n onClose(): void {\r\n this.isVisible = false;\r\n this.closed.emit();\r\n }\r\n}\r\n","@if (isVisible) {\r\n <div [class]=\"alertClass\" role=\"status\" aria-live=\"polite\">\r\n <div class=\"flex flex-col gap-1\">\r\n @if (title) {\r\n <div [class]=\"titleClass\">{{ title }}</div>\r\n }\r\n <div class=\"text-[var(--cxs-color-on-surface)]\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n @if (dismissible) {\r\n <button\r\n type=\"button\"\r\n [class]=\"closeButtonClass\"\r\n aria-label=\"Dismiss alert\"\r\n (click)=\"onClose()\"\r\n >\r\n x\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type CxsAccordionSpacing = 'sm' | 'md' | 'lg';\n\nconst BASE_CLASSES = 'grid';\nconst SPACING_CLASSES: Record<CxsAccordionSpacing, string> = {\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4'\n};\n\n@Component({\n selector: 'cxs-accordion',\n standalone: true,\n templateUrl: './accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAccordionComponent {\n @Input() spacing: CxsAccordionSpacing = 'md';\n\n get accordionClass(): string {\n return [BASE_CLASSES, SPACING_CLASSES[this.spacing]].join(' ');\n }\n}\n","<div [class]=\"accordionClass\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nexport type CxsAccordionItemSize = 'sm' | 'md' | 'lg';\n\nconst ITEM_BASE =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)]';\nconst ITEM_DISABLED = 'opacity-60';\n\nconst HEADER_BASE =\n 'flex w-full items-center justify-between gap-3 text-left font-medium transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\nconst HEADER_HOVER = 'hover:bg-[var(--cxs-color-surface-hover)]';\nconst HEADER_DISABLED = 'cursor-not-allowed';\n\nconst CONTENT_BASE = 'text-(--cxs-color-on-surface-muted)';\n\nconst SIZE_HEADER_CLASSES: Record<CxsAccordionItemSize, string> = {\n sm: 'px-3 py-2 text-sm',\n md: 'px-4 py-3 text-sm',\n lg: 'px-5 py-4 text-base'\n};\n\nconst SIZE_CONTENT_CLASSES: Record<CxsAccordionItemSize, string> = {\n sm: 'px-3 pb-3 text-sm',\n md: 'px-4 pb-4 text-sm',\n lg: 'px-5 pb-5 text-base'\n};\n\n@Component({\n selector: 'cxs-accordion-item',\n standalone: true,\n imports: [],\n templateUrl: './accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAccordionItemComponent {\n private static nextId = 0;\n\n @Input() title?: string;\n @Input() expanded = false;\n @Input() disabled = false;\n @Input() size: CxsAccordionItemSize = 'md';\n\n @Output() expandedChange = new EventEmitter<boolean>();\n\n readonly buttonId = `cxs-accordion-button-${++CxsAccordionItemComponent.nextId}`;\n readonly contentId = `cxs-accordion-panel-${CxsAccordionItemComponent.nextId}`;\n\n get itemClass(): string {\n return [ITEM_BASE, this.disabled ? ITEM_DISABLED : ''].filter(Boolean).join(' ');\n }\n\n get headerClass(): string {\n return [\n HEADER_BASE,\n SIZE_HEADER_CLASSES[this.size],\n this.disabled ? HEADER_DISABLED : HEADER_HOVER\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get contentClass(): string {\n return [CONTENT_BASE, SIZE_CONTENT_CLASSES[this.size]].join(' ');\n }\n\n get iconClass(): string {\n return [\n 'h-4 w-4 shrink-0 text-(--cxs-color-on-surface-muted) transition-transform',\n this.expanded ? 'rotate-180' : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","<div [class]=\"itemClass\">\n <button\n type=\"button\"\n [class]=\"headerClass\"\n [id]=\"buttonId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"contentId\"\n (click)=\"toggle()\"\n >\n <span class=\"flex min-w-0 flex-1 items-center gap-2\">\n <ng-content select=\"[cxsAccordionTitle]\"></ng-content>\n @if (title) {\n <span class=\"truncate\">{{ title }}</span>\n }\n </span>\n <svg aria-hidden=\"true\" [class]=\"iconClass\" viewBox=\"0 0 20 20\">\n <path\n d=\"M5 7l5 5 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.5\"\n ></path>\n </svg>\n </button>\n\n <div\n [id]=\"contentId\"\n role=\"region\"\n [attr.aria-labelledby]=\"buttonId\"\n [class]=\"contentClass\"\n [hidden]=\"!expanded\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsBadgeVariant = 'primary' | 'neutral' | 'danger';\r\nexport type CxsBadgeSize = 'sm' | 'md';\r\n\r\nconst BASE_CLASSES =\r\n 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-md)] border px-2.5 py-0.5 text-xs font-medium ' +\r\n 'leading-none';\r\n\r\nconst VARIANT_CLASSES: Record<CxsBadgeVariant, string> = {\r\n primary:\r\n 'border-[var(--cxs-color-primary)] bg-[var(--cxs-color-primary-ghost)] ' +\r\n 'text-[var(--cxs-color-primary)]',\r\n neutral:\r\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\r\n 'text-[var(--cxs-color-on-surface)]',\r\n danger:\r\n 'border-[var(--cxs-color-danger)] bg-[var(--cxs-color-surface)] ' +\r\n 'text-[var(--cxs-color-danger)]'\r\n};\r\n\r\nconst SIZE_CLASSES: Record<CxsBadgeSize, string> = {\r\n sm: 'text-[11px]',\r\n md: 'text-xs'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-badge',\r\n standalone: true,\r\n templateUrl: './badge.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsBadgeComponent {\r\n @Input() variant: CxsBadgeVariant = 'primary';\r\n @Input() size: CxsBadgeSize = 'md';\r\n\r\n get badgeClass(): string {\r\n return [BASE_CLASSES, VARIANT_CLASSES[this.variant], SIZE_CLASSES[this.size]].join(' ');\r\n }\r\n}\r\n","<span [class]=\"badgeClass\">\r\n <ng-content></ng-content>\r\n</span>\r\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Input\n} from '@angular/core';\n\nexport type CxsAvatarSize = 'sm' | 'md' | 'lg';\nexport type CxsAvatarShape = 'circle' | 'square';\n\nconst BASE_CLASSES =\n 'inline-flex items-center justify-center overflow-hidden border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-primary-ghost)] text-[var(--cxs-color-primary)] font-semibold uppercase ' +\n 'select-none';\n\nconst SIZE_CLASSES: Record<CxsAvatarSize, string> = {\n sm: 'h-8 w-8 text-[11px]',\n md: 'h-10 w-10 text-xs',\n lg: 'h-14 w-14 text-sm'\n};\n\nconst SHAPE_CLASSES: Record<CxsAvatarShape, string> = {\n circle: 'rounded-full',\n square: 'rounded-[var(--cxs-radius-md)]'\n};\n\nconst FALLBACK_CLASSES = 'leading-none';\n\n@Component({\n selector: 'cxs-avatar',\n standalone: true,\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsAvatarComponent {\n private _src?: string;\n\n @Input()\n set src(value: string | undefined) {\n if (value !== this._src) {\n this._src = value;\n this.imageError = false;\n }\n }\n\n get src(): string | undefined {\n return this._src;\n }\n @Input() name?: string;\n @Input() alt?: string;\n @Input() size: CxsAvatarSize = 'md';\n @Input() shape: CxsAvatarShape = 'circle';\n\n imageError = false;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get avatarClass(): string {\n return [BASE_CLASSES, SIZE_CLASSES[this.size], SHAPE_CLASSES[this.shape], this.hostClass]\n .filter(Boolean)\n .join(' ');\n }\n\n get fallbackClass(): string {\n return FALLBACK_CLASSES;\n }\n\n get altText(): string {\n if (this.alt !== undefined) {\n return this.alt;\n }\n\n if (this.name) {\n return this.name;\n }\n\n return 'Avatar';\n }\n\n get fallbackLabel(): string {\n if (this.name) {\n return this.name;\n }\n\n if (this.alt && this.alt.trim().length > 0) {\n return this.alt;\n }\n\n return 'Avatar';\n }\n\n get fallbackText(): string {\n if (!this.name) {\n return '?';\n }\n\n return this.getInitials(this.name);\n }\n\n get showImage(): boolean {\n return !!this.src && !this.imageError;\n }\n\n onImageError(): void {\n this.imageError = true;\n }\n\n private getInitials(value: string): string {\n const parts = value\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n\n const word = parts[0] ?? '';\n return word.slice(0, 2).toUpperCase() || '?';\n }\n}\n","<div\n [class]=\"avatarClass\"\n [attr.role]=\"showImage ? null : 'img'\"\n [attr.aria-label]=\"showImage ? null : fallbackLabel\"\n>\n @if (showImage) {\n <img\n [attr.src]=\"src\"\n [attr.alt]=\"altText\"\n class=\"h-full w-full object-cover\"\n (error)=\"onImageError()\"\n />\n } @else {\n <span [class]=\"fallbackClass\" aria-hidden=\"true\">{{ fallbackText }}</span>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsBreadcrumbSize = 'sm' | 'md' | 'lg';\r\nexport type CxsBreadcrumbVariant = 'default' | 'muted';\r\n\r\nexport interface CxsBreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n target?: string;\r\n rel?: string;\r\n ariaLabel?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst BASE_CLASSES = 'flex flex-wrap items-center gap-x-1 gap-y-1';\r\nconst ITEM_CLASSES = 'flex items-center gap-1';\r\nconst LINK_BASE_CLASSES =\r\n 'rounded-[var(--cxs-radius-md)] transition-colors focus-visible:outline focus-visible:outline-2 ' +\r\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\r\nconst NON_LINK_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst SEPARATOR_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] select-none';\r\nconst DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] opacity-60';\r\n\r\nconst SIZE_CLASSES: Record<CxsBreadcrumbSize, string> = {\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst LINK_VARIANT_CLASSES: Record<CxsBreadcrumbVariant, string> = {\r\n default:\r\n 'text-[var(--cxs-color-primary)] hover:text-[var(--cxs-color-primary-hover)]',\r\n muted:\r\n 'text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]'\r\n};\r\n\r\nconst CURRENT_VARIANT_CLASSES: Record<CxsBreadcrumbVariant, string> = {\r\n default: 'text-[var(--cxs-color-on-surface)]',\r\n muted: 'text-[var(--cxs-color-on-surface-muted)]'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-breadcrumb',\r\n standalone: true,\r\n templateUrl: './breadcrumb.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsBreadcrumbComponent {\r\n @Input() items: CxsBreadcrumbItem[] = [];\r\n @Input() separator = '/';\r\n @Input() ariaLabel = 'Breadcrumb';\r\n @Input() size: CxsBreadcrumbSize = 'md';\r\n @Input() variant: CxsBreadcrumbVariant = 'default';\r\n @Input() disabled = false;\r\n\r\n get listClass(): string {\r\n return [BASE_CLASSES, SIZE_CLASSES[this.size], this.disabled ? 'opacity-60' : '']\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get itemClass(): string {\r\n return ITEM_CLASSES;\r\n }\r\n\r\n get separatorClass(): string {\r\n return SEPARATOR_CLASSES;\r\n }\r\n\r\n isLink(item: CxsBreadcrumbItem, isLast: boolean): boolean {\r\n return !!item.href && !isLast && !item.disabled && !this.disabled;\r\n }\r\n\r\n getLinkClass(item: CxsBreadcrumbItem): string {\r\n return [\r\n LINK_BASE_CLASSES,\r\n LINK_VARIANT_CLASSES[this.variant],\r\n item.disabled || this.disabled ? DISABLED_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n getLabelClass(item: CxsBreadcrumbItem, isLast: boolean): string {\r\n if (isLast) {\r\n return [\r\n CURRENT_VARIANT_CLASSES[this.variant],\r\n item.disabled || this.disabled ? DISABLED_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n return [NON_LINK_CLASSES, item.disabled || this.disabled ? DISABLED_CLASSES : '']\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n getItemRel(item: CxsBreadcrumbItem): string | null {\r\n if (item.target === '_blank') {\r\n return item.rel ?? 'noopener noreferrer';\r\n }\r\n\r\n return item.rel ?? null;\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel\">\r\n <ol [class]=\"listClass\">\r\n @for (item of items; track item; let last = $last) {\r\n <li [class]=\"itemClass\">\r\n @if (isLink(item, last)) {\r\n <a\r\n [class]=\"getLinkClass(item)\"\r\n [attr.href]=\"item.href\"\r\n [attr.target]=\"item.target ?? null\"\r\n [attr.rel]=\"getItemRel(item)\"\r\n [attr.aria-label]=\"item.ariaLabel ?? null\"\r\n >\r\n {{ item.label }}\r\n </a>\r\n } @else {\r\n <span\r\n [class]=\"getLabelClass(item, last)\"\r\n [attr.aria-current]=\"last ? 'page' : null\"\r\n >\r\n {{ item.label }}\r\n </span>\r\n }\r\n @if (!last && separator) {\r\n <span [class]=\"separatorClass\" aria-hidden=\"true\">{{ separator }}</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","import { Attribute, ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsButtonVariant = 'primary' | 'secondary' | 'ghost';\nexport type CxsButtonSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\r\n 'relative inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors ' +\r\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\r\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:pointer-events-none disabled:opacity-50';\r\n\r\nconst VARIANT_CLASSES: Record<CxsButtonVariant, string> = {\n primary:\n 'bg-[var(--cxs-color-primary)] text-[var(--cxs-color-on-primary)] ' +\n 'hover:bg-[var(--cxs-color-primary-hover)] shadow-[var(--cxs-shadow-sm)]',\n secondary:\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'border border-[var(--cxs-color-border)] hover:bg-[var(--cxs-color-surface-hover)]',\n ghost:\n 'bg-transparent text-[var(--cxs-color-primary)] hover:bg-[var(--cxs-color-primary-ghost)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsButtonSize, string> = {\r\n sm: 'h-8 px-3 text-sm rounded-[var(--cxs-radius-md)]',\r\n md: 'h-10 px-4 text-sm rounded-[var(--cxs-radius-md)]',\r\n lg: 'h-12 px-5 text-base rounded-[var(--cxs-radius-md)]'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-button',\r\n standalone: true,\r\n templateUrl: './button.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsButtonComponent {\r\n @Input() variant: CxsButtonVariant = 'primary';\r\n @Input() size: CxsButtonSize = 'md';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\r\n\r\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.loading;\r\n }\r\n\r\n get buttonClass(): string {\r\n return [BASE_CLASSES, SIZE_CLASSES[this.size], VARIANT_CLASSES[this.variant], this.hostClass]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n}\r\n","<button\r\n [class]=\"buttonClass\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"isDisabled\"\r\n [attr.aria-busy]=\"loading ? 'true' : null\"\r\n>\r\n @if (loading) {\n <span\n class=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\"\n aria-hidden=\"true\"\n ></span>\n }\n <ng-content select=\"[cxsButtonIcon]\"></ng-content>\n <span class=\"truncate\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nexport type CxsCardVariant = 'surface' | 'muted' | 'outline';\r\nexport type CxsCardSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\r\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\r\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)]';\r\n\r\nconst VARIANT_CLASSES: Record<CxsCardVariant, string> = {\r\n surface: 'bg-[var(--cxs-color-surface)]',\r\n muted: 'bg-[var(--cxs-color-surface-hover)]',\r\n outline: 'bg-transparent'\r\n};\r\n\r\nconst SIZE_CLASSES: Record<CxsCardSize, string> = {\r\n sm: 'p-3',\r\n md: 'p-5',\r\n lg: 'p-7'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-card',\r\n standalone: true,\r\n templateUrl: './card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CxsCardComponent {\r\n @Input() variant: CxsCardVariant = 'surface';\r\n @Input() size: CxsCardSize = 'md';\r\n @Input() elevated = true;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaLabelledby?: string;\r\n\r\n get cardClass(): string {\r\n return [\r\n BASE_CLASSES,\r\n VARIANT_CLASSES[this.variant],\r\n SIZE_CLASSES[this.size],\r\n this.elevated ? 'shadow-[var(--cxs-shadow-sm)]' : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n}\r\n","<section\r\n [class]=\"cardClass\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n>\r\n <ng-content></ng-content>\r\n</section>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsCheckboxSize = 'sm' | 'md' | 'lg';\r\n\r\nconst WRAPPER_BASE = 'inline-flex items-center gap-2 select-none';\r\nconst WRAPPER_ENABLED = 'cursor-pointer';\r\nconst WRAPPER_DISABLED = 'cursor-not-allowed opacity-60';\r\n\r\nconst LABEL_BASE = 'text-[var(--cxs-color-on-surface)]';\r\nconst LABEL_DISABLED = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst LABEL_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'text-sm',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst CONTROL_BASE =\r\n \"relative flex shrink-0 items-center justify-center rounded-[var(--cxs-radius-md)] border \" +\r\n \"border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-primary)] \" +\r\n \"transition-colors after:absolute after:origin-center after:rotate-45 after:content-[''] \" +\r\n 'after:opacity-0 after:transition-opacity after:border-b-2 after:border-r-2 after:border-current ' +\r\n \"before:absolute before:content-[''] before:opacity-0 before:transition-opacity before:bg-current \" +\r\n 'peer-checked:bg-[var(--cxs-color-primary)] peer-checked:border-[var(--cxs-color-primary)] ' +\r\n 'peer-checked:after:opacity-100 ' +\r\n 'peer-indeterminate:bg-[var(--cxs-color-primary)] peer-indeterminate:border-[var(--cxs-color-primary)] ' +\r\n 'peer-indeterminate:before:opacity-100 peer-indeterminate:after:opacity-0 ' +\r\n 'peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 ' +\r\n 'peer-focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\nconst CONTROL_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6'\r\n};\r\n\r\nconst MARK_SIZE_CLASSES: Record<CxsCheckboxSize, string> = {\r\n sm: 'after:h-2 after:w-1 before:h-0.5 before:w-2',\r\n md: 'after:h-2.5 after:w-1.5 before:h-0.5 before:w-3',\r\n lg: 'after:h-3 after:w-2 before:h-0.5 before:w-4'\r\n};\r\n\r\n@Component({\r\n selector: 'cxs-checkbox',\r\n standalone: true,\r\n templateUrl: './checkbox.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsCheckboxComponent implements ControlValueAccessor {\r\n @Input() checked = false;\r\n @Input() indeterminate = false;\r\n @Input() disabled = false;\r\n @Input() label?: string;\r\n @Input() size: CxsCheckboxSize = 'md';\r\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() required = false;\r\n @Input() autofocus = false;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaDescribedby?: string;\r\n\r\n @Output() valueChange = new EventEmitter<boolean>();\r\n\r\n private disabledFromControl = false;\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get wrapperClass(): string {\r\n return [\r\n WRAPPER_BASE,\r\n this.isDisabled ? WRAPPER_DISABLED : WRAPPER_ENABLED\r\n ].join(' ');\r\n }\r\n\r\n get labelClass(): string {\r\n return [\r\n LABEL_BASE,\r\n LABEL_SIZE_CLASSES[this.size],\r\n this.isDisabled ? LABEL_DISABLED : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get controlClass(): string {\r\n return [\r\n CONTROL_BASE,\r\n CONTROL_SIZE_CLASSES[this.size],\r\n MARK_SIZE_CLASSES[this.size]\r\n ].join(' ');\r\n }\r\n\r\n get ariaChecked(): 'mixed' | null {\r\n return this.indeterminate ? 'mixed' : null;\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n this.checked = value ?? false;\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const nextValue = target.checked;\r\n\r\n this.indeterminate = false;\r\n this.checked = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<label [class]=\"wrapperClass\">\r\n <input\r\n class=\"peer sr-only\"\r\n type=\"checkbox\"\r\n [attr.id]=\"id\"\r\n [attr.name]=\"name\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-checked]=\"ariaChecked\"\r\n [attr.autofocus]=\"autofocus ? true : null\"\r\n [checked]=\"checked\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"isDisabled\"\r\n [required]=\"required\"\r\n (change)=\"onCheckboxChange($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <span [class]=\"controlClass\" aria-hidden=\"true\"></span>\r\n @if (label) {\r\n <span [class]=\"labelClass\">{{ label }}</span>\r\n } @else {\r\n <span [class]=\"labelClass\">\r\n <ng-content></ng-content>\r\n </span>\r\n }\r\n</label>\r\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nexport interface CxsCarouselItem {\n title?: string;\n description?: string;\n image?: string;\n alt?: string;\n}\n\nconst WRAPPER_BASE_CLASSES = 'relative overflow-hidden rounded-[var(--cxs-radius-md)]';\nconst TRACK_CLASSES = 'flex transition-transform duration-500 ease-out';\nconst SLIDE_BASE_CLASSES = 'w-full flex-shrink-0';\nconst IMAGE_CLASSES = 'h-56 w-full object-cover';\nconst CONTENT_CLASSES =\n 'absolute inset-x-0 bottom-0 bg-[rgba(15,23,42,0.6)] px-4 py-3 text-sm text-white';\n\nconst CONTROL_CLASSES =\n 'absolute top-1/2 -translate-y-1/2 inline-flex h-9 w-9 items-center justify-center rounded-full ' +\n 'bg-[rgba(15,23,42,0.7)] text-white transition hover:bg-[rgba(15,23,42,0.85)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst INDICATOR_CONTAINER_CLASSES =\n 'absolute bottom-3 left-1/2 flex -translate-x-1/2 items-center gap-2';\nconst INDICATOR_BASE_CLASSES =\n 'h-2 w-2 rounded-full bg-white/50 transition-colors';\nconst INDICATOR_ACTIVE_CLASSES = 'bg-white';\n\n@Component({\n selector: 'cxs-carousel',\n standalone: true,\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsCarouselComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() items: CxsCarouselItem[] = [];\n @Input() activeIndex = 0;\n @Input() autoplay = false;\n @Input() interval = 4000;\n @Input() loop = true;\n @Input() showControls = true;\n @Input() showIndicators = true;\n @Input() ariaLabel = 'Carousel';\n\n @Output() activeIndexChange = new EventEmitter<number>();\n\n private timerId: ReturnType<typeof setInterval> | null = null;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] || changes['autoplay'] || changes['interval']) {\n this.resetAutoplay();\n }\n if (changes['activeIndex']) {\n this.activeIndex = this.clampIndex(this.activeIndex);\n }\n }\n\n ngAfterViewInit(): void {\n this.resetAutoplay();\n }\n\n ngOnDestroy(): void {\n this.clearAutoplay();\n }\n\n get wrapperClass(): string {\n return [WRAPPER_BASE_CLASSES, this.hostClass].filter(Boolean).join(' ');\n }\n\n get trackStyle(): string {\n return `translateX(-${this.activeIndex * 100}%)`;\n }\n\n get trackClass(): string {\n return TRACK_CLASSES;\n }\n\n get slideClass(): string {\n return SLIDE_BASE_CLASSES;\n }\n\n get imageClass(): string {\n return IMAGE_CLASSES;\n }\n\n get contentClass(): string {\n return CONTENT_CLASSES;\n }\n\n get controlClass(): string {\n return CONTROL_CLASSES;\n }\n\n get indicatorContainerClass(): string {\n return INDICATOR_CONTAINER_CLASSES;\n }\n\n indicatorClass(isActive: boolean): string {\n return [INDICATOR_BASE_CLASSES, isActive ? INDICATOR_ACTIVE_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n previous(): void {\n this.goTo(this.activeIndex - 1);\n }\n\n next(): void {\n this.goTo(this.activeIndex + 1);\n }\n\n goTo(index: number): void {\n const nextIndex = this.normalizeIndex(index);\n this.activeIndex = nextIndex;\n this.activeIndexChange.emit(nextIndex);\n }\n\n private normalizeIndex(index: number): number {\n if (!this.items.length) {\n return 0;\n }\n\n if (this.loop) {\n const total = this.items.length;\n return (index + total) % total;\n }\n\n return this.clampIndex(index);\n }\n\n private clampIndex(index: number): number {\n if (!this.items.length) {\n return 0;\n }\n\n return Math.min(Math.max(0, index), this.items.length - 1);\n }\n\n private resetAutoplay(): void {\n this.clearAutoplay();\n\n if (!this.autoplay || this.items.length <= 1) {\n return;\n }\n\n const intervalMs = Math.max(1000, this.interval);\n this.timerId = setInterval(() => {\n this.next();\n }, intervalMs);\n }\n\n private clearAutoplay(): void {\n if (this.timerId) {\n clearInterval(this.timerId);\n this.timerId = null;\n }\n }\n}\n","<div [class]=\"wrapperClass\" [attr.aria-label]=\"ariaLabel\">\n <div [class]=\"trackClass\" [style.transform]=\"trackStyle\">\n @for (item of items; track item) {\n <div [class]=\"slideClass\">\n @if (item.image) {\n <img\n [class]=\"imageClass\"\n [attr.src]=\"item.image\"\n [attr.alt]=\"item.alt ?? item.title ?? 'Carousel image'\"\n />\n }\n @if (item.title || item.description) {\n <div [class]=\"contentClass\">\n @if (item.title) {\n <div class=\"text-base font-semibold\">{{ item.title }}</div>\n }\n @if (item.description) {\n <div class=\"text-sm text-white/80\">{{ item.description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (showControls && items.length > 1) {\n <button\n type=\"button\"\n [class]=\"controlClass\"\n style=\"left: 12px\"\n aria-label=\"Previous slide\"\n (click)=\"previous()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" />\n </svg>\n </button>\n <button\n type=\"button\"\n [class]=\"controlClass\"\n style=\"right: 12px\"\n aria-label=\"Next slide\"\n (click)=\"next()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" />\n </svg>\n\n </button>\n }\n\n @if (showIndicators && items.length > 1) {\n <div [class]=\"indicatorContainerClass\">\n @for (item of items; track item; let index = $index) {\n <button\n type=\"button\"\n [class]=\"indicatorClass(index === activeIndex)\"\n [attr.aria-label]=\"'Go to slide ' + (index + 1)\"\n (click)=\"goTo(index)\"\n ></button>\n }\n </div>\n }\n</div>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport type { CxsDataTableColumn } from './data-table.component';\n\nexport interface CxsDataTableCellContext {\n $implicit: Record<string, unknown>;\n value: unknown;\n column: CxsDataTableColumn;\n}\n\n@Directive({\n selector: '[cxsDataTableCell]',\n standalone: true\n})\nexport class CxsDataTableCellDirective {\n @Input('cxsDataTableCell') columnKey = '';\n\n constructor(public readonly template: TemplateRef<CxsDataTableCellContext>) {}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { CxsDataTableCellDirective } from './data-table-cell.directive';\nimport type { CxsDataTableCellContext } from './data-table-cell.directive';\n\nexport type CxsDataTableAlign = 'left' | 'center' | 'right';\nexport type CxsDataTableSortDirection = 'asc' | 'desc';\nexport type CxsDataTableFilterType = 'text' | 'select' | 'number';\nexport type CxsDataTablePin = 'left' | 'right';\n\nexport interface CxsDataTableColumn {\n key: string;\n label: string;\n align?: CxsDataTableAlign;\n width?: string;\n sortable?: boolean;\n filterable?: boolean;\n filterType?: CxsDataTableFilterType;\n filterOptions?: Array<{ label: string; value: string }>;\n resizable?: boolean;\n pinned?: CxsDataTablePin;\n visible?: boolean;\n minWidth?: number;\n headerClass?: string;\n cellClass?: string;\n formatter?: (value: unknown, row: Record<string, unknown>) => string;\n}\n\nexport interface CxsDataTableSort {\n key: string;\n direction: CxsDataTableSortDirection;\n}\n\nconst WRAPPER_BASE_CLASSES = 'w-full overflow-x-auto';\nconst WRAPPER_OVERFLOW_HIDDEN_CLASSES = 'overflow-y-hidden';\nconst WRAPPER_OVERFLOW_VISIBLE_CLASSES = 'overflow-y-visible';\nconst WRAPPER_BORDERED_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)]';\n\nconst TABLE_BASE_CLASSES =\n 'w-full min-w-[max-content] border-collapse text-sm text-[var(--cxs-color-on-surface)]';\nconst TABLE_COMPACT_CLASSES = 'text-xs';\n\nconst HEADER_ROW_CLASSES =\n 'border-b border-[var(--cxs-color-border)] text-xs font-semibold ' +\n 'text-[var(--cxs-color-on-surface-muted)]';\nconst HEADER_CELL_BASE_CLASSES = 'px-3 py-2 text-left';\nconst COLUMN_BORDER_CLASSES = 'border-l border-[var(--cxs-color-border)] first:border-l-0';\nconst HEADER_BUTTON_CLASSES =\n 'inline-flex items-center gap-2 rounded-[var(--cxs-radius-md)] px-2 py-1 ' +\n 'transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\nconst HEADER_FILTER_INPUT_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] px-2 py-1 text-xs text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst BODY_ROW_BASE_CLASSES = 'border-b border-[var(--cxs-color-border)] last:border-b-0';\nconst BODY_ROW_STRIPED_CLASSES = 'odd:bg-[var(--cxs-color-surface)] even:bg-[var(--cxs-color-surface-hover)]';\n\nconst BODY_CELL_BASE_CLASSES = 'px-3 py-2 align-top';\nconst BODY_CELL_COMPACT_CLASSES = 'px-2 py-1.5';\n\nconst ALIGN_CLASSES: Record<CxsDataTableAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst EMPTY_ROW_CLASSES = 'text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst PAGINATION_CLASSES =\n 'mt-4 flex flex-wrap items-center justify-between gap-3 text-sm text-[var(--cxs-color-on-surface)]';\nconst PAGE_BUTTON_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'px-3 py-1.5 text-sm transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'disabled:cursor-not-allowed disabled:opacity-60';\nconst PAGE_SELECT_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\n 'px-2 py-1 text-sm';\nconst TOOLBAR_CLASSES =\n 'mb-3 flex flex-wrap items-center justify-between gap-3 text-sm text-[var(--cxs-color-on-surface)]';\nconst TOOLBAR_GROUP_CLASSES = 'flex flex-wrap items-center gap-2';\nconst TOOLBAR_INPUT_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] pl-9 pr-3 py-2 text-sm text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\nconst TOOLBAR_INPUT_INLINE_CLASSES =\n 'w-full sm:w-64 rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] pl-9 pr-3 py-2 text-sm text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] focus-visible:outline focus-visible:outline-2 ' +\n 'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';\nconst TOOLBAR_INPUT_WRAPPER_CLASSES = 'relative';\nconst TOOLBAR_INPUT_ICON_CLASSES =\n 'pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-(--cxs-color-on-surface-muted)';\nconst TOOLBAR_BUTTON_CLASSES =\n 'inline-flex items-center justify-center rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'px-3 py-2 text-sm transition-colors hover:bg-[var(--cxs-color-surface-hover)]';\nconst TITLE_BAR_CLASSES = 'mb-3 flex flex-wrap items-start justify-between gap-3';\nconst TITLE_TEXT_CLASSES = 'text-base font-semibold text-(--cxs-color-on-surface)';\nconst SUBTITLE_TEXT_CLASSES = 'text-sm text-(--cxs-color-on-surface-muted)';\nconst BULK_BAR_CLASSES =\n 'mb-3 flex flex-wrap items-center justify-between gap-3 rounded-[var(--cxs-radius-md)] ' +\n 'border border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] px-3 py-2 text-sm';\nconst RESIZE_HANDLE_CLASSES =\n 'absolute right-0 top-0 h-full w-2 cursor-col-resize touch-none';\n\n@Component({\n selector: 'cxs-data-table',\n standalone: true,\n templateUrl: './data-table.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsDataTableComponent implements OnChanges {\n @Input() columns: CxsDataTableColumn[] = [];\n @Input() data: Array<Record<string, unknown>> = [];\n @Input() caption?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() ariaLabel = 'Data table';\n @Input() striped = false;\n @Input() bordered = false;\n @Input() compact = false;\n @Input() loading = false;\n @Input() emptyMessage = 'No data available';\n @Input() emptyCell = '—';\n @Input() allowOverflow = false;\n @Input() columnBorders = false;\n\n @Input() pageSize = 10;\n @Input() pageIndex = 1;\n @Input() pageSizeOptions: number[] = [10, 20, 50];\n @Input() showPagination = true;\n @Input() showPageSize = true;\n @Input() manualPagination = false;\n @Input() total?: number;\n\n @Input() sortKey?: string;\n @Input() sortDirection: CxsDataTableSortDirection = 'asc';\n @Input() manualSort = false;\n\n @Input() showToolbar = true;\n @Input() showFilters = true;\n @Input() showColumnVisibility = true;\n @Input() showGlobalSearch = true;\n @Input() manualFilter = false;\n\n @Input() selectable = false;\n @Input() rowKey = 'id';\n @Input() selectedKeys: Array<string | number> = [];\n @Input() bulkActions: Array<{ id: string; label: string }> = [];\n\n @Output() pageChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n @Output() sortChange = new EventEmitter<CxsDataTableSort>();\n @Output() filterChange = new EventEmitter<{\n global: string;\n columns: Record<string, string>;\n }>();\n @Output() selectionChange = new EventEmitter<Array<string | number>>();\n @Output() bulkAction = new EventEmitter<{\n id: string;\n selected: Array<Record<string, unknown>>;\n }>();\n\n @ContentChildren(CxsDataTableCellDirective)\n private readonly cellTemplates?: QueryList<CxsDataTableCellDirective>;\n\n protected currentPage = 1;\n protected currentPageSize = 10;\n protected globalFilter = '';\n protected columnFilters: Record<string, string> = {};\n protected columnVisibility: Record<string, boolean> = {};\n protected columnWidths: Record<string, string> = {};\n protected isResizing = false;\n protected resizingColumn?: string;\n protected pinnedOffsetsLeft: Record<string, number> = {};\n protected pinnedOffsetsRight: Record<string, number> = {};\n protected filtersOpen = true;\n\n private resizeStartX = 0;\n private resizeStartWidth = 0;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pageIndex']) {\n this.currentPage = Math.max(1, this.pageIndex);\n }\n if (changes['pageSize']) {\n this.currentPageSize = Math.max(1, this.pageSize);\n }\n if (changes['columns']) {\n this.initializeVisibility();\n this.initializeWidths();\n this.updatePinnedOffsets();\n }\n if (changes['showFilters']) {\n this.filtersOpen = this.showFilters;\n }\n if (changes['selectedKeys']) {\n this.selectedKeys = [...this.selectedKeys];\n }\n }\n\n get wrapperClass(): string {\n return [\n WRAPPER_BASE_CLASSES,\n this.allowOverflow ? WRAPPER_OVERFLOW_VISIBLE_CLASSES : WRAPPER_OVERFLOW_HIDDEN_CLASSES,\n this.bordered ? WRAPPER_BORDERED_CLASSES : '',\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get tableClass(): string {\n return [TABLE_BASE_CLASSES, this.compact ? TABLE_COMPACT_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get headerRowClass(): string {\n return HEADER_ROW_CLASSES;\n }\n\n get bodyRowClass(): string {\n return [\n BODY_ROW_BASE_CLASSES,\n this.striped ? BODY_ROW_STRIPED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get emptyRowClass(): string {\n return EMPTY_ROW_CLASSES;\n }\n\n get paginationClass(): string {\n return PAGINATION_CLASSES;\n }\n\n get pageButtonClass(): string {\n return PAGE_BUTTON_CLASSES;\n }\n\n get pageSelectClass(): string {\n return PAGE_SELECT_CLASSES;\n }\n\n get toolbarClass(): string {\n return TOOLBAR_CLASSES;\n }\n\n get toolbarGroupClass(): string {\n return TOOLBAR_GROUP_CLASSES;\n }\n\n get toolbarInputClass(): string {\n return TOOLBAR_INPUT_CLASSES;\n }\n\n get toolbarInputInlineClass(): string {\n return TOOLBAR_INPUT_INLINE_CLASSES;\n }\n\n get toolbarInputWrapperClass(): string {\n return TOOLBAR_INPUT_WRAPPER_CLASSES;\n }\n\n get toolbarInputIconClass(): string {\n return TOOLBAR_INPUT_ICON_CLASSES;\n }\n\n get toolbarButtonClass(): string {\n return TOOLBAR_BUTTON_CLASSES;\n }\n\n get titleBarClass(): string {\n return TITLE_BAR_CLASSES;\n }\n\n get titleTextClass(): string {\n return TITLE_TEXT_CLASSES;\n }\n\n get subtitleTextClass(): string {\n return SUBTITLE_TEXT_CLASSES;\n }\n\n get bulkBarClass(): string {\n return BULK_BAR_CLASSES;\n }\n\n get resizeHandleClass(): string {\n return RESIZE_HANDLE_CLASSES;\n }\n\n get colSpan(): number {\n return Math.max(this.visibleColumns.length + (this.selectable ? 1 : 0), 1);\n }\n\n get totalItems(): number {\n if (this.manualPagination && this.total !== undefined) {\n return this.total;\n }\n\n return this.data.length;\n }\n\n get totalPages(): number {\n return Math.max(1, Math.ceil(this.totalItems / this.currentPageSize));\n }\n\n get pageLabel(): string {\n return `Page ${this.currentPage} of ${this.totalPages}`;\n }\n\n get displayRows(): Array<Record<string, unknown>> {\n const filtered = this.manualFilter ? this.data : this.getFilteredData(this.data);\n const sorted = this.manualSort ? filtered : this.getSortedData(filtered);\n if (this.manualPagination) {\n return sorted;\n }\n\n const start = (this.currentPage - 1) * this.currentPageSize;\n return sorted.slice(start, start + this.currentPageSize);\n }\n\n get visibleColumns(): CxsDataTableColumn[] {\n return this.columns.filter((column) => this.columnVisibility[column.key] !== false);\n }\n\n get selectedCount(): number {\n return this.selectedKeys.length;\n }\n\n get hasTitleBlock(): boolean {\n return Boolean(this.title || this.subtitle);\n }\n\n get allVisibleSelected(): boolean {\n if (!this.displayRows.length) {\n return false;\n }\n\n return this.displayRows.every((row) => this.isSelected(row));\n }\n\n get someVisibleSelected(): boolean {\n return this.displayRows.some((row) => this.isSelected(row)) && !this.allVisibleSelected;\n }\n\n headerCellClass(column: CxsDataTableColumn): string {\n return [\n HEADER_CELL_BASE_CLASSES,\n this.columnBorders ? COLUMN_BORDER_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.headerClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n headerButtonClass(): string {\n return HEADER_BUTTON_CLASSES;\n }\n\n headerFilterInputClass(): string {\n return HEADER_FILTER_INPUT_CLASSES;\n }\n\n bodyCellClass(column: CxsDataTableColumn): string {\n return [\n BODY_CELL_BASE_CLASSES,\n this.compact ? BODY_CELL_COMPACT_CLASSES : '',\n this.columnBorders ? COLUMN_BORDER_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.cellClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n cellTemplate(columnKey: string): TemplateRef<CxsDataTableCellContext> | null {\n if (!this.cellTemplates) {\n return null;\n }\n\n return this.cellTemplates.find((template) => template.columnKey === columnKey)?.template ?? null;\n }\n\n cellValue(row: Record<string, unknown>, column: CxsDataTableColumn): string {\n const value = row[column.key];\n if (column.formatter) {\n return column.formatter(value, row);\n }\n\n if (value === null || value === undefined || value === '') {\n return this.emptyCell;\n }\n\n return String(value);\n }\n\n columnWidth(column: CxsDataTableColumn): string | null {\n return this.columnWidths[column.key] ?? column.width ?? null;\n }\n\n columnMinWidth(column: CxsDataTableColumn): string | null {\n if (column.minWidth) {\n return `${column.minWidth}px`;\n }\n return null;\n }\n\n pinnedStyle(column: CxsDataTableColumn): Record<string, string> | null {\n if (!column.pinned) {\n return null;\n }\n\n if (column.pinned === 'left') {\n return { left: `${this.pinnedOffsetsLeft[column.key] ?? 0}px` };\n }\n\n return { right: `${this.pinnedOffsetsRight[column.key] ?? 0}px` };\n }\n\n pinnedLeft(column: CxsDataTableColumn): string | null {\n const style = this.pinnedStyle(column);\n return style ? style['left'] ?? null : null;\n }\n\n pinnedRight(column: CxsDataTableColumn): string | null {\n const style = this.pinnedStyle(column);\n return style ? style['right'] ?? null : null;\n }\n\n pinnedClass(column: CxsDataTableColumn): string {\n if (!column.pinned) {\n return '';\n }\n\n return 'sticky z-10';\n }\n\n ariaSort(column: CxsDataTableColumn): 'ascending' | 'descending' | 'none' | null {\n if (!column.sortable) {\n return null;\n }\n\n if (this.sortKey !== column.key) {\n return 'none';\n }\n\n return this.sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n onSort(column: CxsDataTableColumn): void {\n if (!column.sortable) {\n return;\n }\n\n if (this.sortKey === column.key) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortKey = column.key;\n this.sortDirection = 'asc';\n }\n\n this.sortChange.emit({\n key: this.sortKey,\n direction: this.sortDirection\n });\n }\n\n goToPage(page: number): void {\n const nextPage = Math.min(Math.max(1, page), this.totalPages);\n this.currentPage = nextPage;\n this.pageChange.emit(nextPage);\n }\n\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n onPageSizeChange(value: string): void {\n const nextSize = Number(value);\n if (!Number.isFinite(nextSize) || nextSize <= 0) {\n return;\n }\n\n this.currentPageSize = nextSize;\n this.pageSizeChange.emit(nextSize);\n this.goToPage(1);\n }\n\n onGlobalFilterChange(value: string): void {\n this.globalFilter = value;\n this.emitFilterChange();\n this.goToPage(1);\n }\n\n onColumnFilterChange(columnKey: string, value: string): void {\n this.columnFilters[columnKey] = value;\n this.emitFilterChange();\n this.goToPage(1);\n }\n\n columnFilterValue(columnKey: string): string {\n return this.columnFilters[columnKey] || '';\n }\n\n toggleColumnVisibility(columnKey: string): void {\n this.columnVisibility[columnKey] = !this.columnVisibility[columnKey];\n this.updatePinnedOffsets();\n }\n\n toggleSelectAll(): void {\n if (this.allVisibleSelected) {\n this.selectedKeys = this.selectedKeys.filter(\n (key) => !this.displayRows.some((row) => this.rowIdentifier(row) === key)\n );\n } else {\n const keysToAdd = this.displayRows\n .map((row) => this.rowIdentifier(row))\n .filter((key) => !this.selectedKeys.includes(key));\n this.selectedKeys = [...this.selectedKeys, ...keysToAdd];\n }\n\n this.selectionChange.emit([...this.selectedKeys]);\n }\n\n toggleRowSelection(row: Record<string, unknown>): void {\n const key = this.rowIdentifier(row);\n if (this.selectedKeys.includes(key)) {\n this.selectedKeys = this.selectedKeys.filter((id) => id !== key);\n } else {\n this.selectedKeys = [...this.selectedKeys, key];\n }\n\n this.selectionChange.emit([...this.selectedKeys]);\n }\n\n isSelected(row: Record<string, unknown>): boolean {\n return this.selectedKeys.includes(this.rowIdentifier(row));\n }\n\n runBulkAction(actionId: string): void {\n this.bulkAction.emit({\n id: actionId,\n selected: this.data.filter((row) => this.selectedKeys.includes(this.rowIdentifier(row)))\n });\n }\n\n onResizeStart(event: MouseEvent, column: CxsDataTableColumn): void {\n if (column.resizable === false) {\n return;\n }\n\n event.preventDefault();\n const header = (event.target as HTMLElement).closest('th') as HTMLElement | null;\n if (!header) {\n return;\n }\n\n this.isResizing = true;\n this.resizingColumn = column.key;\n this.resizeStartX = event.clientX;\n this.resizeStartWidth = header.getBoundingClientRect().width;\n\n const onMove = (moveEvent: MouseEvent) => {\n if (!this.isResizing || !this.resizingColumn) {\n return;\n }\n const delta = moveEvent.clientX - this.resizeStartX;\n const minWidth = column.minWidth ?? 80;\n const nextWidth = Math.max(minWidth, this.resizeStartWidth + delta);\n this.columnWidths[this.resizingColumn] = `${Math.round(nextWidth)}px`;\n this.updatePinnedOffsets();\n };\n\n const onUp = () => {\n this.isResizing = false;\n this.resizingColumn = undefined;\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n };\n\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n }\n\n private getSortedData(rows: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n if (!this.sortKey) {\n return rows;\n }\n\n const direction = this.sortDirection === 'asc' ? 1 : -1;\n return [...rows].sort((a, b) => {\n const valueA = a[this.sortKey ?? ''];\n const valueB = b[this.sortKey ?? ''];\n const normalizedA = valueA === null || valueA === undefined ? '' : String(valueA);\n const normalizedB = valueB === null || valueB === undefined ? '' : String(valueB);\n return normalizedA.localeCompare(normalizedB, undefined, { numeric: true }) * direction;\n });\n }\n\n private getFilteredData(rows: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n const global = this.globalFilter.trim().toLowerCase();\n const filters = this.columnFilters;\n\n return rows.filter((row) => {\n if (global) {\n const matchesGlobal = this.visibleColumns.some((column) => {\n const value = row[column.key];\n return String(value ?? '').toLowerCase().includes(global);\n });\n if (!matchesGlobal) {\n return false;\n }\n }\n\n return this.visibleColumns.every((column) => {\n if (!column.filterable) {\n return true;\n }\n const filterValue = (filters[column.key] ?? '').trim().toLowerCase();\n if (!filterValue) {\n return true;\n }\n const raw = row[column.key];\n const normalized = String(raw ?? '').toLowerCase();\n if (column.filterType === 'select') {\n return normalized === filterValue;\n }\n return normalized.includes(filterValue);\n });\n });\n }\n\n private emitFilterChange(): void {\n this.filterChange.emit({\n global: this.globalFilter,\n columns: { ...this.columnFilters }\n });\n }\n\n private initializeVisibility(): void {\n this.columnVisibility = this.columns.reduce((acc, column) => {\n acc[column.key] = column.visible !== false;\n return acc;\n }, {} as Record<string, boolean>);\n }\n\n private initializeWidths(): void {\n this.columnWidths = this.columns.reduce((acc, column) => {\n if (column.width) {\n acc[column.key] = column.width;\n }\n return acc;\n }, {} as Record<string, string>);\n }\n\n private updatePinnedOffsets(): void {\n const leftOffsets: Record<string, number> = {};\n const rightOffsets: Record<string, number> = {};\n let left = 0;\n let right = 0;\n const columns = this.visibleColumns;\n\n columns.forEach((column) => {\n if (column.pinned === 'left') {\n leftOffsets[column.key] = left;\n left += this.getWidthValue(column);\n }\n });\n\n [...columns].reverse().forEach((column) => {\n if (column.pinned === 'right') {\n rightOffsets[column.key] = right;\n right += this.getWidthValue(column);\n }\n });\n\n this.pinnedOffsetsLeft = leftOffsets;\n this.pinnedOffsetsRight = rightOffsets;\n }\n\n private getWidthValue(column: CxsDataTableColumn): number {\n const width = this.columnWidths[column.key] ?? column.width;\n if (!width) {\n return 160;\n }\n const match = width.match(/(\\d+)(px)?/);\n if (match) {\n return Number(match[1]);\n }\n return 160;\n }\n\n private rowIdentifier(row: Record<string, unknown>): string | number {\n const value = row[this.rowKey];\n if (value === undefined || value === null) {\n return JSON.stringify(row);\n }\n return value as string | number;\n }\n}\n","@if (hasTitleBlock) {\n <div [class]=\"titleBarClass\">\n <div class=\"min-w-0\">\n @if (title) {\n <div [class]=\"titleTextClass\">{{ title }}</div>\n }\n @if (subtitle) {\n <div [class]=\"subtitleTextClass\">{{ subtitle }}</div>\n }\n </div>\n @if (showToolbar) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @if (showGlobalSearch) {\n <div [class]=\"toolbarInputWrapperClass\">\n <svg\n [class]=\"toolbarInputIconClass\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"m21 21-4.35-4.35m1.85-5.65a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z\"\n />\n </svg>\n <input\n type=\"search\"\n [class]=\"toolbarInputInlineClass\"\n placeholder=\"Search...\"\n [value]=\"globalFilter\"\n (input)=\"onGlobalFilterChange($any($event.target).value)\"\n />\n </div>\n }\n @if (showFilters) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"filtersOpen = !filtersOpen\">\n Filters\n </button>\n }\n @if (showColumnVisibility) {\n <details class=\"relative\">\n <summary [class]=\"toolbarButtonClass\">Columns</summary>\n <div\n class=\"absolute right-0 mt-2 w-48 rounded-(--cxs-radius-md) border border-(--cxs-color-border) bg-(--cxs-color-surface) p-2 shadow-(--cxs-shadow-sm)\"\n >\n @for (column of columns; track column) {\n <label class=\"flex items-center gap-2 px-2 py-1 text-sm\">\n <input\n type=\"checkbox\"\n [checked]=\"columnVisibility[column.key]\"\n (change)=\"toggleColumnVisibility(column.key)\"\n />\n <span>{{ column.label }}</span>\n </label>\n }\n </div>\n </details>\n }\n </div>\n }\n </div>\n} @else if (showToolbar) {\n <div [class]=\"toolbarClass\">\n <div [class]=\"toolbarGroupClass\">\n @if (showGlobalSearch) {\n <div [class]=\"toolbarInputWrapperClass\">\n <svg\n [class]=\"toolbarInputIconClass\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"m21 21-4.35-4.35m1.85-5.65a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z\"\n />\n </svg>\n <input\n type=\"search\"\n [class]=\"toolbarInputClass\"\n placeholder=\"Search...\"\n [value]=\"globalFilter\"\n (input)=\"onGlobalFilterChange($any($event.target).value)\"\n />\n </div>\n }\n </div>\n <div [class]=\"toolbarGroupClass\">\n @if (showFilters) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"filtersOpen = !filtersOpen\">\n Filters\n </button>\n }\n @if (showColumnVisibility) {\n <details class=\"relative\">\n <summary [class]=\"toolbarButtonClass\">Columns</summary>\n <div\n class=\"absolute right-0 mt-2 w-48 rounded-(--cxs-radius-md) border border-(--cxs-color-border) bg-(--cxs-color-surface) p-2 shadow-(--cxs-shadow-sm)\"\n >\n @for (column of columns; track column) {\n <label class=\"flex items-center gap-2 px-2 py-1 text-sm\">\n <input\n type=\"checkbox\"\n [checked]=\"columnVisibility[column.key]\"\n (change)=\"toggleColumnVisibility(column.key)\"\n />\n <span>{{ column.label }}</span>\n </label>\n }\n </div>\n </details>\n }\n </div>\n </div>\n}\n\n@if (selectable && selectedCount > 0 && bulkActions.length > 0) {\n <div [class]=\"bulkBarClass\">\n <span>{{ selectedCount }} selected</span>\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (action of bulkActions; track action) {\n <button type=\"button\" [class]=\"toolbarButtonClass\" (click)=\"runBulkAction(action.id)\">\n {{ action.label }}\n </button>\n }\n </div>\n </div>\n}\n\n<div [class]=\"wrapperClass\">\n <table [class]=\"tableClass\" [attr.aria-label]=\"ariaLabel\">\n @if (caption) {\n <caption class=\"sr-only\">{{ caption }}</caption>\n }\n <thead>\n <tr [class]=\"headerRowClass\">\n @if (selectable) {\n <th class=\"px-3 py-2 text-left\">\n <input\n type=\"checkbox\"\n [checked]=\"allVisibleSelected\"\n [indeterminate]=\"someVisibleSelected\"\n (change)=\"toggleSelectAll()\"\n aria-label=\"Select all rows\"\n />\n </th>\n }\n @for (column of visibleColumns; track column) {\n <th\n class=\"relative\"\n [class]=\"headerCellClass(column) + ' ' + pinnedClass(column)\"\n [style.width]=\"columnWidth(column)\"\n [style.minWidth]=\"columnMinWidth(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n >\n @if (column.sortable) {\n <button\n type=\"button\"\n [class]=\"headerButtonClass()\"\n (click)=\"onSort(column)\"\n >\n <span>{{ column.label }}</span>\n @if (sortKey === column.key) {\n @if (sortDirection === 'asc') {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-4 w-4 text-(--cxs-color-on-surface-muted)\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\"\n />\n </svg>\n } @else {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-4 w-4 text-(--cxs-color-on-surface-muted)\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\"\n />\n </svg>\n }\n }\n </button>\n } @else {\n {{ column.label }}\n }\n @if (column.resizable !== false) {\n <span\n [class]=\"resizeHandleClass\"\n (mousedown)=\"onResizeStart($event, column)\"\n ></span>\n }\n </th>\n }\n </tr>\n @if (showFilters && filtersOpen) {\n <tr [class]=\"headerRowClass\">\n @if (selectable) {\n <th class=\"px-3 py-2 text-left\"></th>\n }\n @for (column of visibleColumns; track column) {\n <th\n [class]=\"headerCellClass(column) + ' ' + pinnedClass(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n >\n @if (column.filterable) {\n @if (column.filterType === 'select') {\n <select\n [class]=\"headerFilterInputClass()\"\n [value]=\"columnFilterValue(column.key)\"\n (change)=\"onColumnFilterChange(column.key, $any($event.target).value)\"\n >\n <option value=\"\">All</option>\n @for (option of column.filterOptions ?? []; track option) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n } @else {\n <input\n [class]=\"headerFilterInputClass()\"\n [attr.type]=\"column.filterType === 'number' ? 'number' : 'text'\"\n [value]=\"columnFilterValue(column.key)\"\n (input)=\"onColumnFilterChange(column.key, $any($event.target).value)\"\n />\n }\n }\n </th>\n }\n </tr>\n }\n </thead>\n <tbody>\n @if (loading) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">Loading...</span>\n </td>\n </tr>\n } @else if (displayRows.length === 0) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">{{ emptyMessage }}</span>\n </td>\n </tr>\n } @else {\n @for (row of displayRows; track row) {\n <tr [class]=\"bodyRowClass\">\n @if (selectable) {\n <td class=\"px-3 py-2\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (change)=\"toggleRowSelection(row)\"\n aria-label=\"Select row\"\n />\n </td>\n }\n @for (column of visibleColumns; track column) {\n <td\n [class]=\"bodyCellClass(column) + ' ' + pinnedClass(column)\"\n [style.left]=\"pinnedLeft(column)\"\n [style.right]=\"pinnedRight(column)\"\n >\n @if (cellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: row, value: row[column.key], column }\"\n ></ng-container>\n } @else {\n {{ cellValue(row, column) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (showPagination) {\n <div [class]=\"paginationClass\">\n <div class=\"flex items-center gap-2\">\n <button\n type=\"button\"\n [class]=\"pageButtonClass\"\n [disabled]=\"currentPage <= 1\"\n (click)=\"previousPage()\"\n >\n Previous\n </button>\n <button\n type=\"button\"\n [class]=\"pageButtonClass\"\n [disabled]=\"currentPage >= totalPages\"\n (click)=\"nextPage()\"\n >\n Next\n </button>\n <span class=\"text-(--cxs-color-on-surface-muted)\">{{ pageLabel }}</span>\n </div>\n @if (showPageSize) {\n <label class=\"flex items-center gap-2 text-(--cxs-color-on-surface-muted)\">\n <span>Rows</span>\n <select\n #pageSizeSelect\n [class]=\"pageSelectClass\"\n [value]=\"currentPageSize\"\n (change)=\"onPageSizeChange(pageSizeSelect.value)\"\n >\n @for (size of pageSizeOptions; track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </label>\n }\n </div>\n}\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nexport type CxsDialogSize = 'sm' | 'md' | 'lg';\nexport type CxsDialogCloseReason = 'dismiss' | 'backdrop' | 'escape';\n\nconst OVERLAY_CLASSES =\n 'fixed inset-0 z-50 flex items-center justify-center bg-[rgba(15,23,42,0.45)] p-4';\nconst PANEL_BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] shadow-[var(--cxs-shadow-sm)] ' +\n 'p-6 outline-none';\n\nconst PANEL_SIZE_CLASSES: Record<CxsDialogSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-2xl'\n};\n\nconst TITLE_CLASSES = 'text-lg font-semibold';\nconst DESCRIPTION_CLASSES = 'mt-1 text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst BODY_CLASSES = 'mt-4 text-sm text-[var(--cxs-color-on-surface)]';\nconst ACTIONS_CLASSES =\n 'mt-6 flex flex-wrap items-center justify-end gap-2 ' +\n '[&>*]:flex [&>*]:flex-wrap [&>*]:items-center [&>*]:justify-end [&>*]:gap-2';\nconst CLOSE_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\n@Component({\n selector: 'cxs-dialog',\n standalone: true,\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsDialogComponent implements OnChanges, AfterViewInit {\n private static nextId = 0;\n\n @Input() open = false;\n @Input() title?: string;\n @Input() description?: string;\n @Input() ariaLabel = 'Dialog';\n @Input() size: CxsDialogSize = 'md';\n @Input() dismissible = true;\n @Input() closeOnBackdrop = true;\n @Input() closeOnEscape = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() closed = new EventEmitter<CxsDialogCloseReason>();\n\n @ViewChild('dialogPanel') private readonly dialogPanel?: ElementRef<HTMLElement>;\n\n readonly titleId = `cxs-dialog-title-${CxsDialogComponent.nextId++}`;\n readonly descriptionId = `cxs-dialog-description-${CxsDialogComponent.nextId++}`;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open']?.currentValue) {\n this.focusPanelSoon();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.open) {\n this.focusPanelSoon();\n }\n }\n\n get overlayClass(): string {\n return OVERLAY_CLASSES;\n }\n\n get panelClass(): string {\n return [PANEL_BASE_CLASSES, PANEL_SIZE_CLASSES[this.size], this.hostClass]\n .filter(Boolean)\n .join(' ');\n }\n\n get titleClass(): string {\n return TITLE_CLASSES;\n }\n\n get descriptionClass(): string {\n return DESCRIPTION_CLASSES;\n }\n\n get bodyClass(): string {\n return BODY_CLASSES;\n }\n\n get actionsClass(): string {\n return ACTIONS_CLASSES;\n }\n\n get closeButtonClass(): string {\n return CLOSE_BUTTON_CLASSES;\n }\n\n get ariaLabelValue(): string | null {\n if (this.title) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n requestClose(reason: CxsDialogCloseReason): void {\n this.openChange.emit(false);\n this.closed.emit(reason);\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (!this.closeOnBackdrop || !this.open) {\n return;\n }\n\n if (event.target === event.currentTarget) {\n this.requestClose('backdrop');\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.closeOnEscape || !this.open) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.requestClose('escape');\n }\n }\n\n private focusPanelSoon(): void {\n queueMicrotask(() => {\n this.dialogPanel?.nativeElement.focus();\n });\n }\n}\n","@if (open) {\n <div [class]=\"overlayClass\" (click)=\"onBackdropClick($event)\">\n <div\n #dialogPanel\n [class]=\"panelClass\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"title ? titleId : null\"\n [attr.aria-describedby]=\"description ? descriptionId : null\"\n [attr.aria-label]=\"ariaLabelValue\"\n tabindex=\"-1\"\n (keydown)=\"onKeydown($event)\"\n >\n <div class=\"flex items-start gap-3\">\n <div class=\"flex-1\">\n @if (title) {\n <h2 [id]=\"titleId\" [class]=\"titleClass\">{{ title }}</h2>\n }\n @if (description) {\n <p [id]=\"descriptionId\" [class]=\"descriptionClass\">{{ description }}</p>\n }\n </div>\n @if (dismissible) {\n <button\n type=\"button\"\n [class]=\"closeButtonClass\"\n aria-label=\"Close dialog\"\n (click)=\"requestClose('dismiss')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" />\n </svg>\n </button>\n }\n </div>\n\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n\n <div [class]=\"actionsClass\">\n <ng-content select=\"[cxsDialogActions]\"></ng-content>\n </div>\n </div>\n </div>\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsDatepickerVariant = 'outline' | 'filled';\r\nexport type CxsDatepickerSize = 'sm' | 'md' | 'lg';\r\n\r\ntype CxsCalendarDay = {\r\n date: Date;\r\n label: string;\r\n inMonth: boolean;\r\n disabled: boolean;\r\n isToday: boolean;\r\n key: string;\r\n};\r\n\r\nconst BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst VARIANT_CLASSES: Record<CxsDatepickerVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsDatepickerSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsDatepickerSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\r\nconst POPOVER_CLASSES =\r\n 'absolute left-0 top-full z-10 mt-2 w-full rounded-[var(--cxs-radius-md)] border ' +\r\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] p-3 shadow-[var(--cxs-shadow-sm)]';\r\n\r\nconst NAV_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst SELECT_CLASSES =\n 'h-8 rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] text-xs px-2 ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst DAY_BUTTON_BASE =\n 'flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] text-xs ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:cursor-not-allowed disabled:opacity-40';\n\r\nconst DAY_OUTSIDE_MONTH = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst DAY_TODAY = 'border border-[var(--cxs-color-primary)]';\r\nconst DAY_SELECTED = 'bg-[var(--cxs-color-primary)] text-[var(--cxs-color-on-primary)]';\r\nconst DAY_HOVER = 'hover:bg-[var(--cxs-color-surface-hover)]';\r\n\r\n@Component({\r\n selector: 'cxs-datepicker',\r\n standalone: true,\r\n templateUrl: './datepicker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsDatepickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsDatepickerComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() variant: CxsDatepickerVariant = 'outline';\n @Input() size: CxsDatepickerSize = 'md';\n @Input() useNative = true;\n @Input() disabled = false;\n @Input() readonly = false;\r\n @Input() required = false;\n @Input() invalid = false;\n @Input() autofocus = false;\n @Input() label?: string;\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() min?: string;\r\n @Input() max?: string;\r\n @Input() placeholder?: string;\r\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n readonly instanceId = `cxs-datepicker-${CxsDatepickerComponent.nextId++}`;\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\r\n isOpen = false;\n displayMonth = new Date();\n calendarDays: CxsCalendarDay[] = [];\n readonly weekDayLabels = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n readonly monthOptions = Array.from({ length: 12 }, (_, index) => ({\n value: index,\n label: new Date(2020, index, 1).toLocaleString('en-US', { month: 'short' })\n }));\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get panelId(): string {\n return `${this.inputId ?? this.instanceId}-panel`;\n }\n\n get inputClass(): string {\n return [\r\n BASE_CLASSES,\r\n SIZE_CLASSES[this.size],\r\n VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get popoverClass(): string {\r\n return POPOVER_CLASSES;\r\n }\r\n\r\n get navButtonClass(): string {\n return NAV_BUTTON_CLASSES;\n }\n\n get selectClass(): string {\n return SELECT_CLASSES;\n }\n\n get displayMonthLabel(): string {\n return this.displayMonth.toLocaleString('en-US', { month: 'long', year: 'numeric' });\n }\n\n get yearOptions(): number[] {\n const baseYear = this.displayMonth.getFullYear();\n const minYear = this.parseDate(this.min)?.getFullYear() ?? baseYear - 10;\n const maxYear = this.parseDate(this.max)?.getFullYear() ?? baseYear + 10;\n\n const start = Math.min(minYear, maxYear);\n const end = Math.max(minYear, maxYear);\n\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n }\n\n writeValue(value: string | null): void {\r\n this.value = value ?? '';\r\n this.syncDisplayMonthWithValue();\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const nextValue = target.value;\r\n\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onDateSelect(day: CxsCalendarDay): void {\r\n if (day.disabled || this.isDisabled) {\r\n return;\r\n }\r\n\r\n const nextValue = this.formatDate(day.date);\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n this.isOpen = false;\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n open(): void {\r\n if (this.isDisabled || this.useNative) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n this.syncDisplayMonthWithValue();\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen) {\r\n this.isOpen = false;\r\n return;\r\n }\r\n this.open();\r\n }\r\n\r\n prevMonth(): void {\n this.displayMonth = new Date(this.displayMonth.getFullYear(), this.displayMonth.getMonth() - 1, 1);\n this.updateCalendar();\n }\n\n nextMonth(): void {\n this.displayMonth = new Date(this.displayMonth.getFullYear(), this.displayMonth.getMonth() + 1, 1);\n this.updateCalendar();\n }\n\n onMonthChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const nextMonth = Number(target.value);\n if (Number.isNaN(nextMonth)) {\n return;\n }\n this.displayMonth = new Date(this.displayMonth.getFullYear(), nextMonth, 1);\n this.updateCalendar();\n }\n\n onYearChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const nextYear = Number(target.value);\n if (Number.isNaN(nextYear)) {\n return;\n }\n this.displayMonth = new Date(nextYear, this.displayMonth.getMonth(), 1);\n this.updateCalendar();\n }\n\n dayButtonClass(day: CxsCalendarDay): string {\r\n return [\r\n DAY_BUTTON_BASE,\r\n day.inMonth ? '' : DAY_OUTSIDE_MONTH,\r\n day.isToday ? DAY_TODAY : '',\r\n this.isSelected(day.date) ? DAY_SELECTED : DAY_HOVER\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n if (this.useNative || !this.isOpen) {\r\n return;\r\n }\r\n const target = event.target as HTMLElement | null;\r\n if (target && !target.closest(`#${this.panelId}`) && !target.closest(`[data-cxs-datepicker=\"${this.panelId}\"]`)) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape(): void {\r\n if (this.useNative || !this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = false;\r\n }\r\n\r\n private syncDisplayMonthWithValue(): void {\r\n const selected = this.parseDate(this.value);\r\n this.displayMonth = selected ?? new Date();\r\n this.updateCalendar();\r\n }\r\n\r\n private updateCalendar(): void {\r\n const year = this.displayMonth.getFullYear();\r\n const month = this.displayMonth.getMonth();\r\n const startOfMonth = new Date(year, month, 1);\r\n const startDay = startOfMonth.getDay();\r\n const calendarStart = new Date(year, month, 1 - startDay);\r\n const minDate = this.parseDate(this.min);\r\n const maxDate = this.parseDate(this.max);\r\n const today = this.stripTime(new Date());\r\n\r\n this.calendarDays = Array.from({ length: 42 }, (_, index) => {\r\n const date = new Date(\r\n calendarStart.getFullYear(),\r\n calendarStart.getMonth(),\r\n calendarStart.getDate() + index\r\n );\r\n const dayValue = this.stripTime(date);\r\n const disabled =\r\n (minDate && dayValue < minDate) || (maxDate && dayValue > maxDate) || this.isDisabled;\r\n\r\n return {\r\n date,\r\n label: String(date.getDate()),\r\n inMonth: date.getMonth() === month,\r\n disabled,\r\n isToday: dayValue.getTime() === today.getTime(),\r\n key: this.formatDate(date)\r\n };\r\n });\r\n }\r\n\r\n private isSelected(date: Date): boolean {\r\n const selected = this.parseDate(this.value);\r\n if (!selected) {\r\n return false;\r\n }\r\n return (\r\n selected.getFullYear() === date.getFullYear() &&\r\n selected.getMonth() === date.getMonth() &&\r\n selected.getDate() === date.getDate()\r\n );\r\n }\r\n\r\n private parseDate(value?: string): Date | null {\r\n if (!value) {\r\n return null;\r\n }\r\n const [year, month, day] = value.split('-').map(Number);\r\n if (!year || !month || !day) {\r\n return null;\r\n }\r\n return new Date(year, month - 1, day);\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = `${date.getMonth() + 1}`.padStart(2, '0');\r\n const day = `${date.getDate()}`.padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n private stripTime(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n @if (useNative) {\n <input\n type=\"date\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n } @else {\n <div class=\"relative w-full\">\n <input\n type=\"text\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\"\n [attr.aria-controls]=\"panelId\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.data-cxs-datepicker]=\"panelId\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [readonly]=\"true\"\n [required]=\"required\"\n (click)=\"open()\"\n (focus)=\"open()\"\n (blur)=\"onBlur()\"\n />\n @if (isOpen) {\n <div [class]=\"popoverClass\" [attr.id]=\"panelId\" role=\"dialog\" aria-label=\"Choose date\">\n <div class=\"flex items-center justify-between\">\n <button type=\"button\" [class]=\"navButtonClass\" aria-label=\"Previous month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" />\n </svg>\n </button>\n <div class=\"flex items-center gap-2\">\n <select\n [class]=\"selectClass\"\n [disabled]=\"isDisabled\"\n [value]=\"displayMonth.getMonth()\"\n aria-label=\"Month\"\n (change)=\"onMonthChange($event)\"\n >\n @for (month of monthOptions; track month.value) {\n <option [value]=\"month.value\">{{ month.label }}</option>\n }\n </select>\n <select\n [class]=\"selectClass\"\n [disabled]=\"isDisabled\"\n [value]=\"displayMonth.getFullYear()\"\n aria-label=\"Year\"\n (change)=\"onYearChange($event)\"\n >\n @for (year of yearOptions; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n </div>\n <button type=\"button\" [class]=\"navButtonClass\" aria-label=\"Next month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" />\n </svg>\n </button>\n </div>\n\n <div class=\"mt-3 grid grid-cols-7 gap-1 text-center text-xs text-(--cxs-color-on-surface-muted)\">\n @for (label of weekDayLabels; track label) {\n <div>{{ label }}</div>\n }\n </div>\n\n <div class=\"mt-2 grid grid-cols-7 gap-1\" role=\"grid\">\n @for (day of calendarDays; track day.key) {\n <button\n type=\"button\"\n [class]=\"dayButtonClass(day)\"\n [disabled]=\"day.disabled\"\n [attr.data-date]=\"day.key\"\n [attr.aria-selected]=\"day.key === value ? 'true' : 'false'\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n (click)=\"onDateSelect(day)\"\n >\n {{ day.label }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CxsInputVariant = 'outline' | 'filled';\nexport type CxsInputSize = 'sm' | 'md' | 'lg';\nexport type CxsInputType =\n | 'text'\n | 'email'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'number';\n\nconst BASE_CLASSES =\n 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\nconst ERROR_BASE_CLASSES = 'text-[var(--cxs-color-danger)]';\n\nconst VARIANT_CLASSES: Record<CxsInputVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\nconst SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst ERROR_SIZE_CLASSES: Record<CxsInputSize, string> = {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\n@Component({\n selector: 'cxs-input',\n standalone: true,\n templateUrl: './input.component.html',\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CxsInputComponent),\n multi: true\n }\n ]\n})\nexport class CxsInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() type: CxsInputType = 'text';\n @Input() variant: CxsInputVariant = 'outline';\n @Input() size: CxsInputSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() autofocus = false;\n @Input() label?: string;\n\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() autocomplete?: string;\n @Input() inputmode?: string;\n @Input() spellcheck: boolean | null = null;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\n @Output() valueChange = new EventEmitter<string>();\n\n readonly instanceId = `cxs-input-${CxsInputComponent.nextId++}`;\n\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n get isDisabled(): boolean {\n return this.disabled || this.disabledFromControl;\n }\n\n get inputClass(): string {\n return [\n BASE_CLASSES,\n SIZE_CLASSES[this.size],\n VARIANT_CLASSES[this.variant],\n this.invalid ? INVALID_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get errorId(): string {\n return `${this.instanceId}-error`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get ariaDescribedbyValue(): string | null {\n const tokens = [this.ariaDescribedby].filter(Boolean) as string[];\n\n if (this.invalid) {\n tokens.push(this.errorId);\n }\n\n return tokens.length > 0 ? tokens.join(' ') : null;\n }\n\n get errorClass(): string {\n return [ERROR_BASE_CLASSES, ERROR_SIZE_CLASSES[this.size]].join(' ');\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledFromControl = isDisabled;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const nextValue = target.value;\n\n this.value = nextValue;\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n <input\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.inputmode]=\"inputmode\"\n [attr.spellcheck]=\"spellcheck === null ? null : spellcheck\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedbyValue\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (invalid) {\n <div [class]=\"errorClass\" [attr.id]=\"errorId\" aria-live=\"polite\">\n <ng-content select=\"[cxsInputError]\"></ng-content>\n </div>\n }\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\n\nexport type CxsMenubarSize = 'sm' | 'md' | 'lg';\nexport type CxsMenubarVariant = 'default' | 'surface';\n\nexport interface CxsMenubarItem {\n label: string;\n href?: string;\n target?: string;\n rel?: string;\n ariaLabel?: string;\n disabled?: boolean;\n active?: boolean;\n}\n\nconst BAR_BASE_CLASSES =\n 'm-0 flex list-none flex-wrap items-center gap-1 rounded-[var(--cxs-radius-md)] border border-transparent p-1';\n\nconst BAR_SIZE_CLASSES: Record<CxsMenubarSize, string> = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst BAR_VARIANT_CLASSES: Record<CxsMenubarVariant, string> = {\n default: 'bg-transparent',\n surface:\n 'bg-[var(--cxs-color-surface)] border-[var(--cxs-color-border)] shadow-[var(--cxs-shadow-sm)]'\n};\n\nconst ITEM_BASE_CLASSES =\n 'inline-flex items-center gap-2 rounded-[var(--cxs-radius-md)] px-3 py-1.5 font-medium ' +\n 'transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\nconst ITEM_SIZE_CLASSES: Record<CxsMenubarSize, string> = {\n sm: 'px-2.5 py-1 text-xs',\n md: 'px-3 py-1.5 text-sm',\n lg: 'px-4 py-2 text-base'\n};\n\nconst ITEM_ACTIVE_CLASSES =\n 'bg-[var(--cxs-color-primary-ghost)] text-[var(--cxs-color-primary)]';\nconst ITEM_INACTIVE_CLASSES =\n 'text-[var(--cxs-color-on-surface)] hover:bg-[var(--cxs-color-surface-hover)]';\nconst ITEM_DISABLED_CLASSES =\n 'text-[var(--cxs-color-on-surface-muted)] opacity-60 pointer-events-none';\n\n@Component({\n selector: 'cxs-menubar',\n standalone: true,\n templateUrl: './menubar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsMenubarComponent {\n @Input() items: CxsMenubarItem[] = [];\n @Input() ariaLabel = 'Menubar';\n @Input() size: CxsMenubarSize = 'md';\n @Input() variant: CxsMenubarVariant = 'default';\n @Input() disabled = false;\n\n @Output() itemSelected = new EventEmitter<CxsMenubarItem>();\n\n @ViewChildren('menuItem', { read: ElementRef })\n private readonly menuItems?: QueryList<ElementRef<HTMLElement>>;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get menubarClass(): string {\n return [\n BAR_BASE_CLASSES,\n BAR_SIZE_CLASSES[this.size],\n BAR_VARIANT_CLASSES[this.variant],\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isItemDisabled(item: CxsMenubarItem): boolean {\n return this.disabled || !!item.disabled;\n }\n\n getItemClass(item: CxsMenubarItem): string {\n return [\n ITEM_BASE_CLASSES,\n ITEM_SIZE_CLASSES[this.size],\n item.active ? ITEM_ACTIVE_CLASSES : ITEM_INACTIVE_CLASSES,\n this.isItemDisabled(item) ? ITEM_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n getItemHref(item: CxsMenubarItem): string | null {\n if (item.href && !this.isItemDisabled(item)) {\n return item.href;\n }\n\n return null;\n }\n\n getItemRel(item: CxsMenubarItem): string | null {\n if (item.target === '_blank') {\n return item.rel ?? 'noopener noreferrer';\n }\n\n return item.rel ?? null;\n }\n\n onItemClick(item: CxsMenubarItem, event: Event): void {\n if (this.isItemDisabled(item)) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.itemSelected.emit(item);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (typeof document === 'undefined') {\n return;\n }\n\n const keys = ['ArrowRight', 'ArrowLeft', 'Home', 'End'];\n if (!keys.includes(event.key)) {\n return;\n }\n\n const items = this.getFocusableItems();\n if (!items.length) {\n return;\n }\n\n const currentIndex = items.findIndex((item) => item === document.activeElement);\n let nextIndex = 0;\n\n switch (event.key) {\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n case 'ArrowRight':\n nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n break;\n case 'ArrowLeft':\n nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n break;\n }\n\n items[nextIndex]?.focus();\n event.preventDefault();\n }\n\n private getFocusableItems(): HTMLElement[] {\n return (this.menuItems?.toArray() ?? [])\n .map((item) => item.nativeElement)\n .filter((item) => !item.hasAttribute('data-disabled'));\n }\n}\n","<nav [attr.aria-label]=\"ariaLabel\">\n <ul [class]=\"menubarClass\" role=\"menubar\" (keydown)=\"onKeydown($event)\">\n @for (item of items; track item) {\n <li>\n @if (item.href) {\n <a\n #menuItem\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [attr.href]=\"getItemHref(item)\"\n [attr.target]=\"item.target ?? null\"\n [attr.rel]=\"getItemRel(item)\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [attr.aria-disabled]=\"isItemDisabled(item) ? 'true' : null\"\n [attr.tabindex]=\"isItemDisabled(item) ? -1 : null\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n (click)=\"onItemClick(item, $event)\"\n >\n {{ item.label }}\n </a>\n } @else {\n <button\n #menuItem\n type=\"button\"\n role=\"menuitem\"\n [class]=\"getItemClass(item)\"\n [disabled]=\"isItemDisabled(item)\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [attr.data-disabled]=\"isItemDisabled(item) ? '' : null\"\n (click)=\"onItemClick(item, $event)\"\n >\n {{ item.label }}\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CxsMultiSelectOption = {\n label: string;\n value: string;\n};\n\nexport type CxsMultiSelectVariant = 'outline' | 'filled';\nexport type CxsMultiSelectSize = 'sm' | 'md' | 'lg';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst CONTROL_BASE_CLASSES =\n 'flex w-full flex-wrap items-center gap-2 rounded-[var(--cxs-radius-md)] border ' +\n 'border-[var(--cxs-color-border)] transition-colors ' +\n 'focus-within:outline focus-within:outline-2 focus-within:outline-offset-2 ' +\n 'focus-within:outline-[var(--cxs-color-focus)] focus-within:border-[var(--cxs-color-focus)]';\n\nconst CONTROL_DISABLED_CLASSES = 'pointer-events-none cursor-not-allowed opacity-60';\n\nconst VARIANT_CLASSES: Record<CxsMultiSelectVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\nconst CONTROL_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'min-h-8 px-2 py-1 text-sm',\n md: 'min-h-10 px-3 py-1.5 text-sm',\n lg: 'min-h-12 px-4 py-2 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INPUT_CLASSES =\n 'flex-1 min-w-[6rem] bg-transparent outline-none placeholder:text-[var(--cxs-color-on-surface-muted)]';\n\nconst CHIP_BASE_CLASSES =\n 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-sm)] ' +\n 'bg-[var(--cxs-color-surface-hover)] text-[var(--cxs-color-on-surface)]';\n\nconst CHIP_SIZE_CLASSES: Record<CxsMultiSelectSize, string> = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2 py-0.5 text-xs',\n lg: 'px-2.5 py-1 text-sm'\n};\n\nconst CHIP_REMOVE_CLASSES =\n 'inline-flex h-4 w-4 items-center justify-center rounded-full ' +\n 'text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]';\n\nconst PANEL_CLASSES =\n 'absolute left-0 top-full z-10 mt-2 w-full rounded-[var(--cxs-radius-md)] border ' +\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] p-1 shadow-[var(--cxs-shadow-sm)]';\n\nconst OPTION_BASE_CLASSES =\n 'flex w-full items-center justify-between rounded-[var(--cxs-radius-sm)] px-3 py-2 text-left ' +\n 'text-sm text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)]';\n\nconst OPTION_DISABLED_CLASSES = 'cursor-not-allowed opacity-50 hover:bg-transparent';\n\nconst EMPTY_STATE_CLASSES = 'px-3 py-2 text-sm text-[var(--cxs-color-on-surface-muted)]';\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-within:border-[var(--cxs-color-danger)] ' +\n 'focus-within:outline-[var(--cxs-color-danger)]';\n\n@Component({\n selector: 'cxs-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './multi-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CxsMultiSelectComponent),\n multi: true\n }\n ]\n})\nexport class CxsMultiSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() options: CxsMultiSelectOption[] = [];\n @Input() value: string[] = [];\n @Input() variant: CxsMultiSelectVariant = 'outline';\n @Input() size: CxsMultiSelectSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() invalid = false;\n @Input() placeholder?: string;\n @Input() label?: string;\n @Input() maxSelections?: number;\n\n @Input() id?: string;\n @Input() name?: string;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\n @Output() valueChange = new EventEmitter<string[]>();\n\n @ViewChild('inputEl') inputEl?: ElementRef<HTMLInputElement>;\n\n readonly instanceId = `cxs-multi-select-${CxsMultiSelectComponent.nextId++}`;\n readonly listId = `${this.instanceId}-list`;\n\n query = '';\n isOpen = false;\n\n private disabledFromControl = false;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n get isDisabled(): boolean {\n return this.disabled || this.disabledFromControl;\n }\n\n get isAtMax(): boolean {\n return this.maxSelections !== undefined &&\n this.maxSelections !== null &&\n this.value.length >= this.maxSelections;\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get controlClass(): string {\n return [\n CONTROL_BASE_CLASSES,\n CONTROL_SIZE_CLASSES[this.size],\n VARIANT_CLASSES[this.variant],\n this.invalid ? INVALID_CLASSES : '',\n this.isDisabled ? CONTROL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get inputClass(): string {\n return INPUT_CLASSES;\n }\n\n get chipClass(): string {\n return [CHIP_BASE_CLASSES, CHIP_SIZE_CLASSES[this.size]].join(' ');\n }\n\n get chipRemoveClass(): string {\n return CHIP_REMOVE_CLASSES;\n }\n\n get panelClass(): string {\n return PANEL_CLASSES;\n }\n\n get optionClass(): string {\n return OPTION_BASE_CLASSES;\n }\n\n get optionDisabledClass(): string {\n return OPTION_DISABLED_CLASSES;\n }\n\n get emptyStateClass(): string {\n return EMPTY_STATE_CLASSES;\n }\n\n get inputId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.inputId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get selectedOptions(): CxsMultiSelectOption[] {\n const optionsByValue = new Map(this.options.map((option) => [option.value, option]));\n return this.value.map((val) => optionsByValue.get(val) ?? { label: val, value: val });\n }\n\n get filteredOptions(): CxsMultiSelectOption[] {\n const selected = new Set(this.value);\n const query = this.query.trim().toLowerCase();\n\n return this.options.filter((option) => {\n if (selected.has(option.value)) {\n return false;\n }\n if (!query) {\n return true;\n }\n return option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query);\n });\n }\n\n writeValue(value: string[] | null): void {\n this.value = value ? [...value] : [];\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledFromControl = isDisabled;\n }\n\n focusInput(): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n this.inputEl?.nativeElement.focus();\n }\n\n open(): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n this.isOpen = true;\n }\n\n close(): void {\n this.isOpen = false;\n }\n\n onQueryInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.query = target.value;\n this.open();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Backspace' && !this.query && this.value.length > 0) {\n this.removeValue(this.value[this.value.length - 1]);\n }\n }\n\n selectOption(option: CxsMultiSelectOption): void {\n if (this.isDisabled || this.readonly || this.isAtMax) {\n return;\n }\n if (this.value.includes(option.value)) {\n return;\n }\n\n const nextValue = [...this.value, option.value];\n this.updateValue(nextValue);\n this.query = '';\n this.open();\n this.focusInput();\n }\n\n removeValue(value: string): void {\n if (this.isDisabled || this.readonly) {\n return;\n }\n\n const nextValue = this.value.filter((item) => item !== value);\n this.updateValue(nextValue);\n }\n\n onOptionMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onChipMouseDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n private updateValue(nextValue: string[]): void {\n this.value = [...nextValue];\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n}\n","<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n }\n <div class=\"relative\">\n <div [class]=\"controlClass\" (click)=\"focusInput()\">\n @for (chip of selectedOptions; track chip.value) {\n <span [class]=\"chipClass\">\n <span>{{ chip.label }}</span>\n <button\n type=\"button\"\n [class]=\"chipRemoveClass\"\n [attr.aria-label]=\"'Remove ' + chip.label\"\n (mousedown)=\"onChipMouseDown($event)\"\n (click)=\"removeValue(chip.value)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n stroke=\"currentColor\" class=\"size-3\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"/>\n</svg>\n </button>\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputClass\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly || isAtMax\"\n [value]=\"query\"\n (input)=\"onQueryInput($event)\"\n (focus)=\"open()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n @if (isOpen) {\n <div [class]=\"panelClass\" [attr.id]=\"listId\" role=\"listbox\">\n @if (filteredOptions.length === 0) {\n <div [class]=\"emptyStateClass\">\n No matches\n </div>\n } @else {\n @for (option of filteredOptions; track option.value) {\n <button\n type=\"button\"\n [class]=\"optionClass + (isAtMax || readonly ? ' ' + optionDisabledClass : '')\"\n [disabled]=\"isAtMax || readonly\"\n role=\"option\"\n (mousedown)=\"onOptionMouseDown($event)\"\n (click)=\"selectOption(option)\"\n >\n <span>{{ option.label }}</span>\n </button>\n }\n }\n </div>\n }\n </div>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[cxsTabLabel]',\n standalone: true\n})\nexport class CxsTabLabelDirective {\n constructor(public readonly templateRef: TemplateRef<unknown>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CxsTabLabelDirective } from './tab-label.directive';\n\n@Component({\n selector: 'cxs-tab-panel',\n standalone: true,\n templateUrl: './tab-panel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTabPanelComponent {\n private static nextId = 0;\n\n @Input() id?: string;\n @Input() label?: string;\n @Input() disabled = false;\n\n @ContentChild(CxsTabLabelDirective) labelTemplate?: CxsTabLabelDirective;\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n readonly instanceId = `cxs-tab-${CxsTabPanelComponent.nextId++}`;\n\n get resolvedId(): string {\n return this.id ?? this.instanceId;\n }\n\n get tabId(): string {\n return `${this.resolvedId}-tab`;\n }\n\n get panelId(): string {\n return `${this.resolvedId}-panel`;\n }\n}\n","<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport { CxsTabPanelComponent } from './tab-panel.component';\n\nconst WRAPPER_CLASSES = 'w-full';\nconst TAB_LIST_CLASSES =\n 'flex flex-wrap items-center gap-6 border-b border-[var(--cxs-color-border)]';\nconst TAB_BUTTON_BASE_CLASSES =\n 'inline-flex items-center gap-2 border-b-2 pb-3 text-sm font-medium transition-colors';\nconst TAB_BUTTON_INACTIVE_CLASSES =\n 'border-transparent text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]';\nconst TAB_BUTTON_ACTIVE_CLASSES =\n 'border-[var(--cxs-color-primary)] text-[var(--cxs-color-primary)]';\nconst TAB_BUTTON_DISABLED_CLASSES = 'cursor-not-allowed opacity-50';\nconst PANEL_WRAPPER_CLASSES = 'pt-4';\nconst PANEL_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] p-4 text-sm text-[var(--cxs-color-on-surface)]';\n\n@Component({\n selector: 'cxs-tabs',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTabsComponent implements AfterContentInit {\n @Input() ariaLabel = 'Tabs';\n @Input() activeId?: string;\n\n @Output() activeIdChange = new EventEmitter<string>();\n\n @ContentChildren(CxsTabPanelComponent)\n private readonly panels?: QueryList<CxsTabPanelComponent>;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get tabListClass(): string {\n return TAB_LIST_CLASSES;\n }\n\n get tabButtonBaseClass(): string {\n return TAB_BUTTON_BASE_CLASSES;\n }\n\n get tabButtonInactiveClass(): string {\n return TAB_BUTTON_INACTIVE_CLASSES;\n }\n\n get tabButtonActiveClass(): string {\n return TAB_BUTTON_ACTIVE_CLASSES;\n }\n\n get tabButtonDisabledClass(): string {\n return TAB_BUTTON_DISABLED_CLASSES;\n }\n\n get panelWrapperClass(): string {\n return PANEL_WRAPPER_CLASSES;\n }\n\n get panelClass(): string {\n return PANEL_CLASSES;\n }\n\n get panelList(): CxsTabPanelComponent[] {\n return this.panels?.toArray() ?? [];\n }\n\n get activePanel(): CxsTabPanelComponent | null {\n return this.resolveActivePanel();\n }\n\n ngAfterContentInit(): void {\n this.ensureActiveTab();\n this.panels?.changes.subscribe(() => this.ensureActiveTab());\n }\n\n isActive(panel: CxsTabPanelComponent): boolean {\n return this.activeId === panel.resolvedId;\n }\n\n tabButtonClass(panel: CxsTabPanelComponent): string {\n return [\n TAB_BUTTON_BASE_CLASSES,\n this.isActive(panel) ? TAB_BUTTON_ACTIVE_CLASSES : TAB_BUTTON_INACTIVE_CLASSES,\n panel.disabled ? TAB_BUTTON_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n selectTab(panel: CxsTabPanelComponent): void {\n if (panel.disabled) {\n return;\n }\n\n this.activeId = panel.resolvedId;\n this.activeIdChange.emit(panel.resolvedId);\n }\n\n panelLabel(panel: CxsTabPanelComponent): string {\n return panel.label ?? panel.resolvedId;\n }\n\n private ensureActiveTab(): void {\n const nextActive = this.resolveActivePanel();\n if (!nextActive) {\n return;\n }\n\n if (this.activeId !== nextActive.resolvedId) {\n this.activeId = nextActive.resolvedId;\n this.activeIdChange.emit(nextActive.resolvedId);\n }\n }\n\n private resolveActivePanel(): CxsTabPanelComponent | null {\n const panels = this.panelList;\n if (!panels.length) {\n return null;\n }\n\n if (this.activeId) {\n const active = panels.find((panel) => panel.resolvedId === this.activeId);\n if (active && !active.disabled) {\n return active;\n }\n }\n\n return panels.find((panel) => !panel.disabled) ?? panels[0];\n }\n}\n","<div [class]=\"wrapperClass\">\n <div [class]=\"tabListClass\" role=\"tablist\" [attr.aria-label]=\"ariaLabel\">\n @for (panel of panelList; track panel.resolvedId) {\n <button\n type=\"button\"\n [class]=\"tabButtonClass(panel)\"\n role=\"tab\"\n [attr.id]=\"panel.tabId\"\n [attr.aria-controls]=\"panel.panelId\"\n [attr.aria-selected]=\"isActive(panel) ? 'true' : 'false'\"\n [disabled]=\"panel.disabled\"\n (click)=\"selectTab(panel)\"\n >\n @if (panel.labelTemplate) {\n <ng-container [ngTemplateOutlet]=\"panel.labelTemplate.templateRef\"></ng-container>\n } @else {\n <span>{{ panelLabel(panel) }}</span>\n }\n </button>\n }\n </div>\n\n @if (activePanel) {\n <div [class]=\"panelWrapperClass\">\n <div\n [class]=\"panelClass\"\n role=\"tabpanel\"\n [attr.id]=\"activePanel.panelId\"\n [attr.aria-labelledby]=\"activePanel.tabId\"\n >\n <ng-container [ngTemplateOutlet]=\"activePanel.templateRef\"></ng-container>\n </div>\n </div>\n }\n</div>\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsRadioSize = 'sm' | 'md' | 'lg';\r\nexport type CxsRadioVariant = 'primary' | 'secondary';\r\n\r\nconst WRAPPER_BASE = 'inline-flex items-center gap-2 select-none';\r\nconst WRAPPER_ENABLED = 'cursor-pointer';\r\nconst WRAPPER_DISABLED = 'cursor-not-allowed opacity-60';\r\n\r\nconst LABEL_BASE = 'text-[var(--cxs-color-on-surface)]';\r\nconst LABEL_DISABLED = 'text-[var(--cxs-color-on-surface-muted)]';\r\nconst LABEL_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'text-sm',\r\n md: 'text-sm',\r\n lg: 'text-base'\r\n};\r\n\r\nconst CONTROL_BASE =\r\n \"relative flex shrink-0 items-center justify-center rounded-full border \" +\r\n \"bg-[var(--cxs-color-surface)] transition-colors \" +\r\n \"after:absolute after:inset-0 after:m-auto after:rounded-full after:content-[''] \" +\r\n 'after:transition-transform after:scale-0 peer-checked:after:scale-100 ' +\r\n 'peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 ' +\r\n 'peer-focus-visible:outline-[var(--cxs-color-focus)]';\r\n\r\nconst CONTROL_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6'\r\n};\r\n\r\nconst CONTROL_VARIANT_CLASSES: Record<CxsRadioVariant, string> = {\r\n primary:\r\n 'peer-checked:border-[var(--cxs-color-primary)] after:bg-[var(--cxs-color-primary)]',\r\n secondary:\r\n 'peer-checked:border-[var(--cxs-color-on-surface)] after:bg-[var(--cxs-color-on-surface)]'\r\n};\r\n\r\nconst DOT_SIZE_CLASSES: Record<CxsRadioSize, string> = {\r\n sm: 'after:h-2 after:w-2',\r\n md: 'after:h-2.5 after:w-2.5',\r\n lg: 'after:h-3 after:w-3'\r\n};\r\n\r\nconst INVALID_CLASSES =\r\n 'border-[var(--cxs-color-danger)] peer-checked:border-[var(--cxs-color-danger)] ' +\r\n 'after:bg-[var(--cxs-color-danger)]';\r\n\r\n@Component({\r\n selector: 'cxs-radio',\r\n standalone: true,\r\n templateUrl: './radio.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsRadioComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsRadioComponent implements ControlValueAccessor {\r\n @Input() value = '';\r\n @Input() name?: string;\r\n @Input() variant: CxsRadioVariant = 'primary';\r\n @Input() size: CxsRadioSize = 'md';\r\n @Input() disabled = false;\r\n @Input() required = false;\r\n @Input() invalid = false;\r\n @Input() autofocus = false;\r\n\r\n @Input() id?: string;\r\n @Input() ariaLabel?: string;\r\n @Input() ariaDescribedby?: string;\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n private selectedValue: string | null = null;\r\n private disabledFromControl = false;\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get isChecked(): boolean {\r\n return this.selectedValue !== null && this.selectedValue === this.value;\r\n }\r\n\r\n get wrapperClass(): string {\r\n return [\r\n WRAPPER_BASE,\r\n this.isDisabled ? WRAPPER_DISABLED : WRAPPER_ENABLED\r\n ].join(' ');\r\n }\r\n\r\n get labelClass(): string {\r\n return [\r\n LABEL_BASE,\r\n LABEL_SIZE_CLASSES[this.size],\r\n this.isDisabled ? LABEL_DISABLED : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n get controlClass(): string {\r\n return [\r\n CONTROL_BASE,\r\n CONTROL_SIZE_CLASSES[this.size],\r\n DOT_SIZE_CLASSES[this.size],\r\n CONTROL_VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n this.selectedValue = value ?? null;\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onRadioChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n if (!target.checked) {\r\n return;\r\n }\r\n\r\n this.selectedValue = this.value;\r\n this.onChange(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<label [class]=\"wrapperClass\">\r\n <input\r\n class=\"peer sr-only\"\r\n type=\"radio\"\r\n [attr.id]=\"id\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\r\n [attr.autofocus]=\"autofocus ? true : null\"\r\n [checked]=\"isChecked\"\r\n [disabled]=\"isDisabled\"\r\n [required]=\"required\"\r\n (change)=\"onRadioChange($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <span [class]=\"controlClass\" aria-hidden=\"true\"></span>\r\n <span [class]=\"labelClass\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport type CxsSelectVariant = 'outline' | 'filled';\r\nexport type CxsSelectSize = 'sm' | 'md' | 'lg';\r\n\r\nconst BASE_CLASSES =\n 'w-full appearance-none rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +\n 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +\n 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n\nconst WRAPPER_CLASSES = 'flex w-full flex-col gap-1';\nconst LABEL_BASE_CLASSES = 'font-medium text-(--cxs-color-on-surface)';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst VARIANT_CLASSES: Record<CxsSelectVariant, string> = {\n outline: 'bg-[var(--cxs-color-surface)]',\n filled: 'bg-[var(--cxs-color-surface-hover)]'\n};\n\r\nconst SIZE_CLASSES: Record<CxsSelectSize, string> = {\n sm: 'h-8 pl-3 pr-9 text-sm',\n md: 'h-10 pl-3 pr-9 text-sm',\n lg: 'h-12 pl-4 pr-10 text-base'\n};\n\nconst LABEL_SIZE_CLASSES: Record<CxsSelectSize, string> = {\n sm: 'text-sm',\n md: 'text-sm',\n lg: 'text-base'\n};\n\nconst INVALID_CLASSES =\n 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +\n 'focus-visible:outline-[var(--cxs-color-danger)]';\n\r\n@Component({\r\n selector: 'cxs-select',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './select.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CxsSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CxsSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n @Input() value = '';\n @Input() variant: CxsSelectVariant = 'outline';\n @Input() size: CxsSelectSize = 'md';\n @Input() disabled = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() label?: string;\n @Input() placeholder?: string;\n @Input() placeholderValue = '';\n\r\n @Input() id?: string;\r\n @Input() name?: string;\r\n @Input() ariaLabel?: string;\n @Input() ariaDescribedby?: string;\n\r\n @Output() valueChange = new EventEmitter<string>();\n\n readonly instanceId = `cxs-select-${CxsSelectComponent.nextId++}`;\n\n private disabledFromControl = false;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledFromControl;\r\n }\r\n\r\n get selectClass(): string {\n return [\r\n BASE_CLASSES,\r\n SIZE_CLASSES[this.size],\r\n VARIANT_CLASSES[this.variant],\r\n this.invalid ? INVALID_CLASSES : ''\r\n ]\r\n .filter(Boolean)\n .join(' ');\n }\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [\n LABEL_BASE_CLASSES,\n LABEL_SIZE_CLASSES[this.size],\n this.isDisabled ? LABEL_DISABLED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get selectId(): string | null {\n if (this.id) {\n return this.id;\n }\n\n return this.label ? this.instanceId : null;\n }\n\n get labelId(): string | null {\n if (!this.label) {\n return null;\n }\n\n return `${this.selectId}-label`;\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel ?? null;\n }\n\n get selectValue(): string {\n if (this.placeholder && this.value === '') {\n return this.placeholderValue;\n }\r\n\r\n return this.value;\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n this.value = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromControl = isDisabled;\r\n }\r\n\r\n onSelectChange(event: Event): void {\r\n const target = event.target as HTMLSelectElement;\r\n const nextValue = target.value;\r\n\r\n this.value = nextValue;\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\n <label *ngIf=\"label\" [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"selectId\">\n {{ label }}\n </label>\n <div class=\"relative\">\n <select\n [class]=\"selectClass\"\n [attr.id]=\"selectId\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [disabled]=\"isDisabled\"\n [required]=\"required\"\n [value]=\"selectValue\"\n (change)=\"onSelectChange($event)\"\n (blur)=\"onBlur()\"\n >\n <option *ngIf=\"placeholder\" [value]=\"placeholderValue\" disabled>\n {{ placeholder }}\n </option>\n <ng-content></ng-content>\n </select>\n <span\n class=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-[var(--cxs-color-on-surface-muted)]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"h-4 w-4\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 0 1 1.06.02L10 10.94l3.71-3.71a.75.75 0 1 1 1.06 1.06l-4.24 4.25a.75.75 0 0 1-1.06 0L5.21 8.29a.75.75 0 0 1 .02-1.08Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n</div>\n","import { Attribute, ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type CxsTableAlign = 'left' | 'center' | 'right';\n\nexport interface CxsTableColumn {\n key: string;\n label: string;\n align?: CxsTableAlign;\n width?: string;\n headerClass?: string;\n cellClass?: string;\n}\n\nconst WRAPPER_BASE_CLASSES = 'w-full overflow-hidden';\nconst WRAPPER_BORDERED_CLASSES =\n 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)]';\n\nconst TABLE_BASE_CLASSES = 'w-full border-collapse text-sm text-[var(--cxs-color-on-surface)]';\nconst TABLE_COMPACT_CLASSES = 'text-xs';\n\nconst HEADER_ROW_CLASSES =\n 'border-b border-[var(--cxs-color-border)] text-xs uppercase tracking-[0.2em] ' +\n 'text-[var(--cxs-color-on-surface-muted)]';\nconst HEADER_CELL_BASE_CLASSES = 'px-3 py-2 text-left font-semibold';\n\nconst BODY_ROW_BASE_CLASSES = 'border-b border-[var(--cxs-color-border)] last:border-b-0';\nconst BODY_ROW_STRIPED_CLASSES = 'odd:bg-[var(--cxs-color-surface)] even:bg-[var(--cxs-color-surface-hover)]';\n\nconst BODY_CELL_BASE_CLASSES = 'px-3 py-2 align-top';\nconst BODY_CELL_COMPACT_CLASSES = 'px-2 py-1.5';\n\nconst ALIGN_CLASSES: Record<CxsTableAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst EMPTY_ROW_CLASSES = 'text-sm text-[var(--cxs-color-on-surface-muted)]';\n\n@Component({\n selector: 'cxs-table',\n standalone: true,\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTableComponent {\n @Input() columns: CxsTableColumn[] = [];\n @Input() data: Array<Record<string, unknown>> = [];\n @Input() caption?: string;\n @Input() ariaLabel = 'Table';\n @Input() striped = false;\n @Input() bordered = false;\n @Input() compact = false;\n @Input() emptyMessage = 'No data available';\n @Input() emptyCell = '—';\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n get wrapperClass(): string {\n return [\n WRAPPER_BASE_CLASSES,\n this.bordered ? WRAPPER_BORDERED_CLASSES : '',\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get tableClass(): string {\n return [TABLE_BASE_CLASSES, this.compact ? TABLE_COMPACT_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get headerRowClass(): string {\n return HEADER_ROW_CLASSES;\n }\n\n get bodyRowClass(): string {\n return [\n BODY_ROW_BASE_CLASSES,\n this.striped ? BODY_ROW_STRIPED_CLASSES : ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get emptyRowClass(): string {\n return EMPTY_ROW_CLASSES;\n }\n\n get colSpan(): number {\n return Math.max(this.columns.length, 1);\n }\n\n headerCellClass(column: CxsTableColumn): string {\n return [\n HEADER_CELL_BASE_CLASSES,\n ALIGN_CLASSES[column.align ?? 'left'],\n column.headerClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n bodyCellClass(column: CxsTableColumn): string {\n return [\n BODY_CELL_BASE_CLASSES,\n this.compact ? BODY_CELL_COMPACT_CLASSES : '',\n ALIGN_CLASSES[column.align ?? 'left'],\n column.cellClass ?? ''\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n cellValue(row: Record<string, unknown>, column: CxsTableColumn): string {\n const value = row[column.key];\n if (value === null || value === undefined || value === '') {\n return this.emptyCell;\n }\n\n return String(value);\n }\n}\n","<div [class]=\"wrapperClass\">\n <table [class]=\"tableClass\" [attr.aria-label]=\"ariaLabel\">\n @if (caption) {\n <caption class=\"sr-only\">{{ caption }}</caption>\n }\n <thead>\n <tr [class]=\"headerRowClass\">\n @for (column of columns; track column) {\n <th\n [class]=\"headerCellClass(column)\"\n [style.width]=\"column.width ?? null\"\n scope=\"col\"\n >\n {{ column.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (data.length === 0) {\n <tr [class]=\"bodyRowClass\">\n <td [class]=\"bodyCellClass({ key: '', label: '' })\" [attr.colspan]=\"colSpan\">\n <span [class]=\"emptyRowClass\">{{ emptyMessage }}</span>\n </td>\n </tr>\n } @else {\n @for (row of data; track row; let rowIndex = $index) {\n <tr [class]=\"bodyRowClass\">\n @for (column of columns; track column) {\n <td [class]=\"bodyCellClass(column)\">\n {{ cellValue(row, column) }}\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nexport type CxsToggleSize = 'sm' | 'md' | 'lg';\n\nconst WRAPPER_CLASSES = 'inline-flex items-center gap-2';\nconst LABEL_BASE_CLASSES = 'text-sm text-[var(--cxs-color-on-surface)] select-none';\nconst LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';\n\nconst TRACK_BASE_CLASSES =\n 'relative inline-flex items-center rounded-full border transition-colors ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)] disabled:pointer-events-none disabled:opacity-60';\n\nconst TRACK_SIZE_CLASSES: Record<CxsToggleSize, string> = {\n sm: 'h-6 w-11 p-0.5',\n md: 'h-6 w-11 p-0.5',\n lg: 'h-6 w-11 p-0.5'\n};\n\nconst TRACK_STATE_CLASSES = {\n on: 'bg-[var(--cxs-color-primary)] border-[var(--cxs-color-primary)]',\n off: 'bg-[var(--cxs-color-surface-hover)] border-[var(--cxs-color-border)]'\n};\n\nconst THUMB_BASE_CLASSES =\n 'absolute left-0.5 top-1/2 -translate-y-1/2 rounded-full transition-transform duration-200 ease-out';\n\nconst THUMB_SIZE_CLASSES: Record<CxsToggleSize, string> = {\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-5 w-5'\n};\n\nconst THUMB_STATE_CLASSES = {\n on: {\n sm: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]',\n md: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]',\n lg: 'translate-x-[20px] bg-[var(--cxs-color-on-primary)]'\n },\n off: 'translate-x-0 bg-[var(--cxs-color-surface)]'\n};\n\n@Component({\n selector: 'cxs-toggle',\n standalone: true,\n templateUrl: './toggle.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsToggleComponent {\n private static nextId = 0;\n\n @Input() checked = false;\n @Input() disabled = false;\n @Input() size: CxsToggleSize = 'md';\n @Input() label?: string;\n @Input() ariaLabel = 'Toggle';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n readonly labelId = `cxs-toggle-label-${CxsToggleComponent.nextId++}`;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get labelClass(): string {\n return [LABEL_BASE_CLASSES, this.disabled ? LABEL_DISABLED_CLASSES : '']\n .filter(Boolean)\n .join(' ');\n }\n\n get trackClass(): string {\n return [\n TRACK_BASE_CLASSES,\n TRACK_SIZE_CLASSES[this.size],\n this.checked ? TRACK_STATE_CLASSES.on : TRACK_STATE_CLASSES.off\n ].join(' ');\n }\n\n get thumbClass(): string {\n const thumbState = this.checked\n ? THUMB_STATE_CLASSES.on[this.size]\n : THUMB_STATE_CLASSES.off;\n\n return [THUMB_BASE_CLASSES, THUMB_SIZE_CLASSES[this.size], thumbState].join(' ');\n }\n\n get ariaLabelValue(): string | null {\n if (this.label) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checkedChange.emit(!this.checked);\n }\n}\n","<div [class]=\"wrapperClass\">\n <button\n type=\"button\"\n [class]=\"trackClass\"\n role=\"switch\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"checked ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"label ? labelId : null\"\n [attr.aria-label]=\"ariaLabelValue\"\n (click)=\"toggle()\"\n >\n <span [class]=\"thumbClass\" aria-hidden=\"true\"></span>\n </button>\n @if (label) {\n <span [id]=\"labelId\" [class]=\"labelClass\">{{ label }}</span>\n }\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nexport type CxsToastVariant = 'info' | 'neutral' | 'danger';\nexport type CxsToastCloseReason = 'dismiss' | 'timeout';\nexport type CxsToastPosition =\n | 'bottom-right'\n | 'bottom'\n | 'bottom-left'\n | 'top-right'\n | 'top'\n | 'top-left'\n | 'right'\n | 'left'\n | 'center';\nexport type CxsToastMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'none';\n\nconst HOST_BASE_CLASSES = 'pointer-events-none';\nconst POSITION_CLASSES: Record<CxsToastPosition, string> = {\n 'bottom-right': 'fixed bottom-6 right-6 items-end',\n bottom: 'fixed bottom-6 left-1/2 -translate-x-1/2 items-end',\n 'bottom-left': 'fixed bottom-6 left-6 items-start',\n 'top-right': 'fixed top-6 right-6 items-end',\n top: 'fixed top-6 left-1/2 -translate-x-1/2 items-start',\n 'top-left': 'fixed top-6 left-6 items-start',\n right: 'fixed right-6 top-1/2 -translate-y-1/2 items-end',\n left: 'fixed left-6 top-1/2 -translate-y-1/2 items-start',\n center: 'fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 items-center'\n};\n\nconst BASE_CLASSES =\n 'pointer-events-auto flex w-full items-start gap-3 rounded-[var(--cxs-radius-md)] ' +\n 'border px-4 py-3 shadow-[var(--cxs-shadow-sm)]';\n\nconst WIDTH_CLASSES: Record<CxsToastMaxWidth, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n none: 'max-w-none'\n};\n\nconst VARIANT_CLASSES: Record<CxsToastVariant, string> = {\n info:\n 'border-[var(--cxs-color-primary)] bg-[var(--cxs-color-primary-ghost)] ' +\n 'text-[var(--cxs-color-on-surface)]',\n neutral:\n 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +\n 'text-[var(--cxs-color-on-surface)]',\n danger:\n 'border-[var(--cxs-color-danger)] bg-[var(--cxs-color-surface)] ' +\n 'text-[var(--cxs-color-on-surface)]'\n};\n\nconst TITLE_CLASSES = 'text-sm font-semibold';\nconst MESSAGE_CLASSES = 'mt-1 text-sm text-[var(--cxs-color-on-surface-muted)]';\nconst ACTIONS_CLASSES = 'mt-3 flex flex-wrap items-center gap-2 empty:hidden';\nconst CLOSE_BUTTON_CLASSES =\n 'inline-flex h-8 w-8 items-center justify-center rounded-[var(--cxs-radius-md)] ' +\n 'text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)] ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +\n 'focus-visible:outline-[var(--cxs-color-focus)]';\n\n@Component({\n selector: 'cxs-toast',\n standalone: true,\n templateUrl: './toast.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsToastComponent implements OnChanges, OnDestroy {\n @Input() open = false;\n @Input() title?: string;\n @Input() message?: string;\n @Input() ariaLabel = 'Notification';\n @Input() variant: CxsToastVariant = 'info';\n @Input() dismissible = true;\n @Input() duration = 0;\n @Input() position: CxsToastPosition = 'bottom-right';\n @Input() maxWidth: CxsToastMaxWidth = 'sm';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() dismissed = new EventEmitter<CxsToastCloseReason>();\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(@Attribute('class') private readonly hostClass: string | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open'] || changes['duration']) {\n this.resetTimer();\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n get hostClassName(): string {\n return [HOST_BASE_CLASSES, POSITION_CLASSES[this.position]].join(' ');\n }\n\n get toastClass(): string {\n return [\n BASE_CLASSES,\n WIDTH_CLASSES[this.maxWidth],\n VARIANT_CLASSES[this.variant],\n this.hostClass\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get titleClass(): string {\n return TITLE_CLASSES;\n }\n\n get messageClass(): string {\n return MESSAGE_CLASSES;\n }\n\n get actionsClass(): string {\n return ACTIONS_CLASSES;\n }\n\n get closeButtonClass(): string {\n return CLOSE_BUTTON_CLASSES;\n }\n\n get role(): 'status' | 'alert' {\n return this.variant === 'danger' ? 'alert' : 'status';\n }\n\n get ariaLive(): 'polite' | 'assertive' {\n return this.variant === 'danger' ? 'assertive' : 'polite';\n }\n\n get ariaLabelValue(): string | null {\n if (this.title) {\n return null;\n }\n\n return this.ariaLabel;\n }\n\n requestClose(reason: CxsToastCloseReason): void {\n this.openChange.emit(false);\n this.dismissed.emit(reason);\n }\n\n private resetTimer(): void {\n this.clearTimer();\n\n if (this.open && this.duration > 0) {\n this.timeoutId = setTimeout(() => {\n this.requestClose('timeout');\n }, this.duration);\n }\n }\n\n private clearTimer(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","@if (open) {\n <div [class]=\"hostClassName\">\n <div\n [class]=\"toastClass\"\n [attr.role]=\"role\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-label]=\"ariaLabelValue\"\n >\n <div class=\"flex-1\">\n @if (title) {\n <p [class]=\"titleClass\">{{ title }}</p>\n }\n @if (message) {\n <p [class]=\"messageClass\">{{ message }}</p>\n }\n <ng-content></ng-content>\n <div [class]=\"actionsClass\">\n <ng-content select=\"[cxsToastAction]\"></ng-content>\n </div>\n </div>\n @if (dismissible) {\n <button\n type=\"button\"\n [class]=\"closeButtonClass\"\n aria-label=\"Dismiss notification\"\n (click)=\"requestClose('dismiss')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" />\n </svg>\n\n </button>\n }\n </div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input\n} from '@angular/core';\n\nexport type CxsTooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nconst WRAPPER_CLASSES = 'relative inline-flex';\nconst TOOLTIP_BASE_CLASSES =\n 'pointer-events-none absolute z-50 max-w-xs rounded-[var(--cxs-radius-md)] px-2 py-1 text-xs ' +\n 'text-[var(--cxs-color-on-primary)] bg-[var(--cxs-color-on-surface)] shadow-[var(--cxs-shadow-sm)]';\n\nconst TOOLTIP_POSITION_CLASSES: Record<CxsTooltipPosition, string> = {\n top: 'bottom-full left-1/2 mb-2 -translate-x-1/2',\n right: 'left-full top-1/2 ml-2 -translate-y-1/2',\n bottom: 'top-full left-1/2 mt-2 -translate-x-1/2',\n left: 'right-full top-1/2 mr-2 -translate-y-1/2'\n};\n\n@Component({\n selector: 'cxs-tooltip',\n standalone: true,\n templateUrl: './tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CxsTooltipComponent {\n private static nextId = 0;\n\n @Input() text = '';\n @Input() position: CxsTooltipPosition = 'top';\n @Input() disabled = false;\n\n open = false;\n readonly tooltipId = `cxs-tooltip-${CxsTooltipComponent.nextId++}`;\n\n get wrapperClass(): string {\n return WRAPPER_CLASSES;\n }\n\n get tooltipClass(): string {\n return [TOOLTIP_BASE_CLASSES, TOOLTIP_POSITION_CLASSES[this.position]].join(' ');\n }\n\n get describedBy(): string | null {\n if (!this.text || this.disabled) {\n return null;\n }\n\n return this.tooltipId;\n }\n\n show(): void {\n if (this.disabled || !this.text) {\n return;\n }\n\n this.open = true;\n }\n\n hide(): void {\n this.open = false;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.hide();\n }\n\n @HostListener('focusin')\n onFocusIn(): void {\n this.show();\n }\n\n @HostListener('focusout')\n onFocusOut(): void {\n this.hide();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.hide();\n }\n }\n}\n","<span [class]=\"wrapperClass\">\n <span [attr.aria-describedby]=\"describedBy\">\n <ng-content></ng-content>\n </span>\n @if (open) {\n <span [id]=\"tooltipId\" role=\"tooltip\" [class]=\"tooltipClass\">\n {{ text }}\n </span>\n }\n</span>\n","import { Directive, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\r\n\r\nexport type CxsThemeMode = 'light' | 'dark' | 'system';\r\n\r\nconst DEFAULT_DARK_CLASS = 'cxs-theme-dark';\r\n\r\n@Directive({\r\n selector: '[cxsTheme]',\r\n standalone: true\r\n})\r\nexport class CxsThemeDirective implements OnDestroy {\r\n private mode: CxsThemeMode = 'light';\r\n private darkClass = DEFAULT_DARK_CLASS;\r\n private mediaQuery: MediaQueryList | null = null;\r\n private mediaListener: ((event: MediaQueryListEvent) => void) | null = null;\r\n\r\n constructor(\r\n private readonly host: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n @Input()\r\n set cxsTheme(value: CxsThemeMode | null | undefined) {\r\n this.mode = value ?? 'light';\r\n this.applyTheme();\r\n }\r\n\r\n @Input()\r\n set cxsThemeDarkClass(value: string | null | undefined) {\r\n const nextClass = value?.trim() || DEFAULT_DARK_CLASS;\r\n if (nextClass === this.darkClass) {\r\n return;\r\n }\r\n\r\n const previousClass = this.darkClass;\r\n this.darkClass = nextClass;\r\n this.renderer.removeClass(this.host.nativeElement, previousClass);\r\n this.applyTheme();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detachMediaListener();\r\n }\r\n\r\n private applyTheme(): void {\r\n if (this.mode === 'system') {\r\n this.attachMediaListener();\r\n } else {\r\n this.detachMediaListener();\r\n }\r\n\r\n const shouldEnableDark =\r\n this.mode === 'dark' || (this.mode === 'system' && this.prefersDark());\r\n\r\n if (shouldEnableDark) {\r\n this.renderer.addClass(this.host.nativeElement, this.darkClass);\r\n } else {\r\n this.renderer.removeClass(this.host.nativeElement, this.darkClass);\r\n }\r\n }\r\n\r\n private prefersDark(): boolean {\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n return false;\r\n }\r\n\r\n if (!this.mediaQuery) {\r\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n }\r\n\r\n return this.mediaQuery.matches;\r\n }\r\n\r\n private attachMediaListener(): void {\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n return;\r\n }\r\n\r\n if (!this.mediaQuery) {\r\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n }\r\n\r\n if (this.mediaListener) {\r\n return;\r\n }\r\n\r\n this.mediaListener = () => this.applyTheme();\r\n\r\n if (typeof this.mediaQuery.addEventListener === 'function') {\r\n this.mediaQuery.addEventListener('change', this.mediaListener);\r\n } else if (typeof this.mediaQuery.addListener === 'function') {\r\n this.mediaQuery.addListener(this.mediaListener);\r\n }\r\n }\r\n\r\n private detachMediaListener(): void {\r\n if (!this.mediaQuery || !this.mediaListener) {\r\n this.mediaListener = null;\r\n return;\r\n }\r\n\r\n if (typeof this.mediaQuery.removeEventListener === 'function') {\r\n this.mediaQuery.removeEventListener('change', this.mediaListener);\r\n } else if (typeof this.mediaQuery.removeListener === 'function') {\r\n this.mediaQuery.removeListener(this.mediaListener);\r\n }\r\n\r\n this.mediaListener = null;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of cerxos-ui\r\n */\r\n\r\nexport * from './lib/cerxos-ui';\nexport * from './lib/components/action-menu/action-menu.component';\nexport * from './lib/components/alert/alert.component';\nexport * from './lib/components/accordion/accordion.component';\nexport * from './lib/components/accordion/accordion-item.component';\nexport * from './lib/components/badge/badge.component';\nexport * from './lib/components/avatar/avatar.component';\nexport * from './lib/components/breadcrumb/breadcrumb.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/card/card.component';\nexport * from './lib/components/checkbox/checkbox.component';\nexport * from './lib/components/carousel/carousel.component';\nexport * from './lib/components/data-table/data-table-cell.directive';\nexport * from './lib/components/data-table/data-table.component';\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/datepicker/datepicker.component';\nexport * from './lib/components/input/input.component';\nexport * from './lib/components/menubar/menubar.component';\nexport * from './lib/components/multi-select/multi-select.component';\nexport * from './lib/components/tabs/tabs.component';\nexport * from './lib/components/tabs/tab-panel.component';\nexport * from './lib/components/tabs/tab-label.directive';\nexport * from './lib/components/radio/radio.component';\nexport * from './lib/components/select/select.component';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/toggle/toggle.component';\nexport * from './lib/components/toast/toast.component';\nexport * from './lib/components/tooltip/tooltip.component';\nexport * from './lib/directives/theme/theme.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ITEM_BASE_CLASSES","ITEM_DISABLED_CLASSES","EMPTY_STATE_CLASSES","BASE_CLASSES","VARIANT_CLASSES","CLOSE_BUTTON_CLASSES","SIZE_CLASSES","WRAPPER_BASE","WRAPPER_ENABLED","WRAPPER_DISABLED","LABEL_BASE","LABEL_DISABLED","LABEL_SIZE_CLASSES","CONTROL_BASE","CONTROL_SIZE_CLASSES","WRAPPER_BASE_CLASSES","WRAPPER_BORDERED_CLASSES","TABLE_BASE_CLASSES","TABLE_COMPACT_CLASSES","HEADER_ROW_CLASSES","HEADER_CELL_BASE_CLASSES","BODY_ROW_BASE_CLASSES","BODY_ROW_STRIPED_CLASSES","BODY_CELL_BASE_CLASSES","BODY_CELL_COMPACT_CLASSES","ALIGN_CLASSES","EMPTY_ROW_CLASSES","TITLE_CLASSES","ACTIONS_CLASSES","WRAPPER_CLASSES","LABEL_BASE_CLASSES","LABEL_DISABLED_CLASSES","INVALID_CLASSES","PANEL_CLASSES"],"mappings":";;;;;;MAYa,QAAQ,CAAA;wGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPT,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,EAAE,EAAA,QAAA,EACD,CAAA;;;;AAIT,EAAA,CAAA,EAAA;;;ACcH,MAAM,oBAAoB,GACxB,+EAA+E;IAC/E,6DAA6D;IAC7D,qFAAqF;IACrF,+EAA+E;AAC/E,IAAA,gDAAgD;AAElD,MAAM,wBAAwB,GAAG,gCAAgC;AAEjE,MAAM,iBAAiB,GACrB,+CAA+C;IAC/C,6EAA6E;AAC7E,IAAA,+BAA+B;AAEjC,MAAM,qBAAqB,GAAG,oBAAoB;AAClD,MAAM,qBAAqB,GAAG,YAAY;AAE1C,MAAM,kBAAkB,GAAuC;AAC7D,IAAA,KAAK,EAAE,wBAAwB;AAC/B,IAAA,GAAG,EAAE;CACN;AAED,MAAMA,mBAAiB,GACrB,4FAA4F;IAC5F,iGAAiG;AACjG,IAAA,gDAAgD;AAElD,MAAM,oBAAoB,GACxB,8EAA8E;AAChF,MAAM,mBAAmB,GACvB,0EAA0E;AAC5E,MAAMC,uBAAqB,GAAG,gCAAgC;AAC9D,MAAMC,qBAAmB,GAAG,kEAAkE;MAQjF,sBAAsB,CAAA;AAoBJ,IAAA,UAAA;AAnBrB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,KAAK,GAAwB,EAAE;IAC/B,KAAK,GAAuB,KAAK;IACjC,SAAS,GAAG,mBAAmB;IAC/B,SAAS,GAAG,SAAS;IACrB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;AAEf,IAAA,YAAY,GAAG,IAAI,YAAY,EAAqB;AAEV,IAAA,OAAO;AACV,IAAA,IAAI;AACG,IAAA,SAAS;AAExD,IAAA,MAAM,GAAG,CAAA,gBAAA,EAAmB,sBAAsB,CAAC,MAAM,EAAE,EAAE;IACtE,MAAM,GAAG,KAAK;IACd,YAAY,GAAyC,IAAI;AAEzD,IAAA,WAAA,CAA6B,UAAmC,EAAA;QAAnC,IAAA,CAAA,UAAU,GAAV,UAAU;IAA4B;AAEnE,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,GAAG,wBAAwB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACxG;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;YACL,iBAAiB;YACjB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,GAAG,qBAAqB;AAC7D,YAAA,CAAC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AACnD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAOA,qBAAmB;IAC5B;AAEA,IAAA,cAAc,CAAC,IAAuB,EAAA;QACpC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;IACzC;AAEA,IAAA,YAAY,CAAC,IAAuB,EAAA;QAClC,OAAO;YACLF,mBAAiB;YACjB,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,mBAAmB,GAAG,oBAAoB;AACnE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAGC,uBAAqB,GAAG;AACrD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE;YACb;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE;YACnB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;QAC/E,IAAI,SAAS,GAAG,YAAY;AAE5B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBACrE;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBACnG;AACF,YAAA,KAAK,MAAM;gBACT,SAAS,GAAG,CAAC;gBACb;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC5B;AACF,YAAA;gBACE;;QAGJ,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE;IAC3B;AAEA,IAAA,WAAW,CAAC,IAAuB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,YAAY,EAAE;IACrB;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,QAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;QAEA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC;QACF;QAEA,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtC,YAAA,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;QACnB,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE;IACrC;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAC5C,MAAM,MAAM,GAAG,CAAC;QAEhB,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa;AACvC,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,qBAAqB,EAAE;AAChD,YAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,KAAK,IAAI,GAAG;AACxC,YAAA,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC;AAExC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM;YAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI;YAEpE,IAAI,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE;gBACzC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,MAAM;YACtC;AAEA,YAAA,IAAI,GAAG,GAAG,MAAM,EAAE;gBAChB,GAAG,GAAG,MAAM;YACd;YAEA,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE;AACjD,gBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;YACjE;AAEA,YAAA,IAAI,IAAI,GAAG,MAAM,EAAE;gBACjB,IAAI,GAAG,MAAM;YACf;YAEA,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;QACnC,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,iBAAiB,GAAA;QACvB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;aACpC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa;aAChC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC5F;wGAvOW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,wbAYH,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACb,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACH,UAAU,6BC7E9C,0hDAmDA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDYa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0hDAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBACzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBACtC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAmI7C,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAYzC,YAAY;uBAAC,eAAe;;;AElN/B,MAAME,cAAY,GAChB,gGAAgG;AAChG,IAAA,oCAAoC;AAEtC,MAAMC,iBAAe,GAAoC;AACvD,IAAA,IAAI,EACF,wEAAwE;QACxE,qCAAqC;AACvC,IAAA,OAAO,EACL,sEAAsE;QACtE,+BAA+B;AACjC,IAAA,MAAM,EACJ,sEAAsE;QACtE;CACH;AAED,MAAM,UAAU,GAAG,eAAe;AAElC,MAAM,aAAa,GAAoC;AACrD,IAAA,IAAI,EAAE,iCAAiC;AACvC,IAAA,OAAO,EAAE,oCAAoC;AAC7C,IAAA,MAAM,EAAE;CACT;AAED,MAAMC,sBAAoB,GACxB,yFAAyF;IACzF,iGAAiG;IACjG,+EAA+E;AAC/E,IAAA,gDAAgD;MAQrC,iBAAiB,CAAA;IACnB,OAAO,GAAoB,MAAM;AACjC,IAAA,KAAK;IACL,WAAW,GAAG,KAAK;AAElB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;IAE3C,SAAS,GAAG,IAAI;AAEhB,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAACF,cAAY,EAAEC,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAChE;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5D;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAOC,sBAAoB;IAC7B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;wGAxBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gLC9C9B,gmBAsBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDwBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gmBAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBAEA;;;AE/CH,MAAMF,cAAY,GAAG,MAAM;AAC3B,MAAM,eAAe,GAAwC;AAC3D,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE;CACL;MAQY,qBAAqB,CAAA;IACvB,OAAO,GAAwB,IAAI;AAE5C,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,CAACA,cAAY,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAChE;wGALW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yGCjBlC,yEAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yEAAA,EAAA;;sBAG9C;;;AEbH,MAAM,SAAS,GACb,yEAAyE;AACzE,IAAA,kEAAkE;AACpE,MAAM,aAAa,GAAG,YAAY;AAElC,MAAM,WAAW,GACf,yFAAyF;IACzF,+EAA+E;AAC/E,IAAA,gDAAgD;AAClD,MAAM,YAAY,GAAG,2CAA2C;AAChE,MAAM,eAAe,GAAG,oBAAoB;AAE5C,MAAM,YAAY,GAAG,qCAAqC;AAE1D,MAAM,mBAAmB,GAAyC;AAChE,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE;CACL;AAED,MAAM,oBAAoB,GAAyC;AACjE,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE;CACL;MASY,yBAAyB,CAAA;AAC5B,IAAA,OAAO,MAAM,GAAG,CAAC;AAEhB,IAAA,KAAK;IACL,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,IAAI,GAAyB,IAAI;AAEhC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE7C,IAAA,QAAQ,GAAG,CAAA,qBAAA,EAAwB,EAAE,yBAAyB,CAAC,MAAM,EAAE;AACvE,IAAA,SAAS,GAAG,CAAA,oBAAA,EAAuB,yBAAyB,CAAC,MAAM,EAAE;AAE9E,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACL,WAAW;AACX,YAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,eAAe,GAAG;AACnC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClE;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;YACL,2EAA2E;YAC3E,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG;AAChC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC;wGA/CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mNCtCtC,o+BAsCA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDAa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAEM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o+BAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBACA;;sBAEA;;;AEzCH,MAAMA,cAAY,GAChB,yGAAyG;AACzG,IAAA,cAAc;AAEhB,MAAMC,iBAAe,GAAoC;AACvD,IAAA,OAAO,EACL,wEAAwE;QACxE,iCAAiC;AACnC,IAAA,OAAO,EACL,iEAAiE;QACjE,oCAAoC;AACtC,IAAA,MAAM,EACJ,iEAAiE;QACjE;CACH;AAED,MAAME,cAAY,GAAiC;AACjD,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,EAAE,EAAE;CACL;MAQY,iBAAiB,CAAA;IACnB,OAAO,GAAoB,SAAS;IACpC,IAAI,GAAiB,IAAI;AAElC,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,CAACH,cAAY,EAAEC,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAEE,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzF;wGANW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mHChC9B,6EAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD6Ba,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6EAAA,EAAA;;sBAG9C;;sBACA;;;AExBH,MAAMH,cAAY,GAChB,kGAAkG;IAClG,8FAA8F;AAC9F,IAAA,aAAa;AAEf,MAAMG,cAAY,GAAkC;AAClD,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE;CACL;AAED,MAAM,aAAa,GAAmC;AACpD,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,MAAM,EAAE;CACT;AAED,MAAM,gBAAgB,GAAG,cAAc;MAQ1B,kBAAkB,CAAA;AAqBoB,IAAA,SAAA;AApBzC,IAAA,IAAI;IAEZ,IACI,GAAG,CAAC,KAAyB,EAAA;AAC/B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;IACF;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;AACS,IAAA,IAAI;AACJ,IAAA,GAAG;IACH,IAAI,GAAkB,IAAI;IAC1B,KAAK,GAAmB,QAAQ;IAEzC,UAAU,GAAG,KAAK;AAElB,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,CAACH,cAAY,EAAEG,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS;aACrF,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC,GAAG;QACjB;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,IAAI;QAClB;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,IAAI;QAClB;AAEA,QAAA,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,GAAG;QACjB;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,GAAG;QACZ;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;IACvC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAA;QAC/B,MAAM,KAAK,GAAG;AACX,aAAA,IAAI;aACJ,KAAK,CAAC,KAAK;aACX,MAAM,CAAC,OAAO,CAAC;AAElB,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,OAAO,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE;QACrD;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG;IAC9C;AArFW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAqBN,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AArBnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,sJClC/B,uaAgBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDkBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uaAAA,EAAA;;0BAuBlC,SAAS;2BAAC,OAAO;;sBAlB7B;;sBAWA;;sBACA;;sBACA;;sBACA;;;AErCH,MAAMH,cAAY,GAAG,6CAA6C;AAClE,MAAM,YAAY,GAAG,yBAAyB;AAC9C,MAAM,iBAAiB,GACrB,iGAAiG;AACjG,IAAA,+EAA+E;AACjF,MAAM,gBAAgB,GAAG,0CAA0C;AACnE,MAAM,iBAAiB,GAAG,sDAAsD;AAChF,MAAM,gBAAgB,GAAG,qDAAqD;AAE9E,MAAMG,cAAY,GAAsC;AACtD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,oBAAoB,GAAyC;AACjE,IAAA,OAAO,EACL,6EAA6E;AAC/E,IAAA,KAAK,EACH;CACH;AAED,MAAM,uBAAuB,GAAyC;AACpE,IAAA,OAAO,EAAE,oCAAoC;AAC7C,IAAA,KAAK,EAAE;CACR;MAQY,sBAAsB,CAAA;IACxB,KAAK,GAAwB,EAAE;IAC/B,SAAS,GAAG,GAAG;IACf,SAAS,GAAG,YAAY;IACxB,IAAI,GAAsB,IAAI;IAC9B,OAAO,GAAyB,SAAS;IACzC,QAAQ,GAAG,KAAK;AAEzB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAACH,cAAY,EAAEG,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,EAAE;aAC7E,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,iBAAiB;IAC1B;IAEA,MAAM,CAAC,IAAuB,EAAE,MAAe,EAAA;AAC7C,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;IACnE;AAEA,IAAA,YAAY,CAAC,IAAuB,EAAA;QAClC,OAAO;YACL,iBAAiB;AACjB,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG;AACrD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,aAAa,CAAC,IAAuB,EAAE,MAAe,EAAA;QACpD,IAAI,MAAM,EAAE;YACV,OAAO;AACL,gBAAA,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,gBAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG;AACrD;iBACE,MAAM,CAAC,OAAO;iBACd,IAAI,CAAC,GAAG,CAAC;QACd;AAEA,QAAA,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,EAAE;aAC7E,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,UAAU,CAAC,IAAuB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,GAAG,IAAI,qBAAqB;QAC1C;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI;IACzB;wGAzDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8MC/CnC,m5BA6BA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDkBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m5BAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEhDH,MAAMH,cAAY,GAChB,yGAAyG;IACzG,+EAA+E;AAC/E,IAAA,iGAAiG;AAEnG,MAAMC,iBAAe,GAAqC;AACxD,IAAA,OAAO,EACL,mEAAmE;QACnE,yEAAyE;AAC3E,IAAA,SAAS,EACP,mEAAmE;QACnE,mFAAmF;AACrF,IAAA,KAAK,EACH;CACH;AAED,MAAME,cAAY,GAAkC;AAClD,IAAA,EAAE,EAAE,iDAAiD;AACrD,IAAA,EAAE,EAAE,kDAAkD;AACtD,IAAA,EAAE,EAAE;CACL;MAQY,kBAAkB,CAAA;AAOoB,IAAA,SAAA;IANxC,OAAO,GAAqB,SAAS;IACrC,IAAI,GAAkB,IAAI;IAC1B,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,IAAI,GAAkC,QAAQ;AAEvD,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;IACtC;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,CAACH,cAAY,EAAEG,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAEF,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS;aACzF,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAjBW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAON,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAPnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,4KCjC/B,idAiBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDgBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,idAAA,EAAA;;0BASlC,SAAS;2BAAC,OAAO;;sBAN7B;;sBACA;;sBACA;;sBACA;;sBACA;;;AEjCH,MAAMD,cAAY,GAChB,yEAAyE;AACzE,IAAA,kEAAkE;AAEpE,MAAMC,iBAAe,GAAmC;AACtD,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,KAAK,EAAE,qCAAqC;AAC5C,IAAA,OAAO,EAAE;CACV;AAED,MAAME,cAAY,GAAgC;AAChD,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE;CACL;MAQY,gBAAgB,CAAA;IAClB,OAAO,GAAmB,SAAS;IACnC,IAAI,GAAgB,IAAI;IACxB,QAAQ,GAAG,IAAI;AACf,IAAA,SAAS;AACT,IAAA,cAAc;AAEvB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;YACLH,cAAY;AACZ,YAAAC,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,YAAAE,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,+BAA+B,GAAG;AACnD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;wGAhBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,kMC3B7B,+KAOA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDoBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+KAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;;AEpBH,MAAMC,cAAY,GAAG,4CAA4C;AACjE,MAAMC,iBAAe,GAAG,gBAAgB;AACxC,MAAMC,kBAAgB,GAAG,+BAA+B;AAExD,MAAMC,YAAU,GAAG,oCAAoC;AACvD,MAAMC,gBAAc,GAAG,0CAA0C;AACjE,MAAMC,oBAAkB,GAAoC;AAC1D,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAMC,cAAY,GAChB,2FAA2F;IAC3F,oGAAoG;IACpG,0FAA0F;IAC1F,kGAAkG;IAClG,mGAAmG;IACnG,4FAA4F;IAC5F,iCAAiC;IACjC,wGAAwG;IACxG,2EAA2E;IAC3E,8FAA8F;AAC9F,IAAA,qDAAqD;AAEvD,MAAMC,sBAAoB,GAAoC;AAC5D,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,iBAAiB,GAAoC;AACzD,IAAA,EAAE,EAAE,6CAA6C;AACjD,IAAA,EAAE,EAAE,iDAAiD;AACrD,IAAA,EAAE,EAAE;CACL;MAeY,oBAAoB,CAAA;IACtB,OAAO,GAAG,KAAK;IACf,aAAa,GAAG,KAAK;IACrB,QAAQ,GAAG,KAAK;AAChB,IAAA,KAAK;IACL,IAAI,GAAoB,IAAI;AAE5B,IAAA,EAAE;AACF,IAAA,IAAI;IACJ,QAAQ,GAAG,KAAK;IAChB,SAAS,GAAG,KAAK;AACjB,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAW;IAE3C,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACLP,cAAY;YACZ,IAAI,CAAC,UAAU,GAAGE,kBAAgB,GAAGD;AACtC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACLE,YAAU;AACV,YAAAE,oBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAGD,gBAAc,GAAG;AACpC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACLE,cAAY;AACZ,YAAAC,sBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI;AAC5B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,IAAI;IAC5C;AAEA,IAAA,UAAU,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,KAAK;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO;AAEhC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAjFW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DH,gzBA0BA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDoCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,gzBAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;AExDH,MAAMC,sBAAoB,GAAG,yDAAyD;AACtF,MAAM,aAAa,GAAG,iDAAiD;AACvE,MAAM,kBAAkB,GAAG,sBAAsB;AACjD,MAAM,aAAa,GAAG,0BAA0B;AAChD,MAAM,eAAe,GACnB,kFAAkF;AAEpF,MAAM,eAAe,GACnB,iGAAiG;IACjG,+EAA+E;IAC/E,+EAA+E;AAC/E,IAAA,gDAAgD;AAElD,MAAM,2BAA2B,GAC/B,qEAAqE;AACvE,MAAM,sBAAsB,GAC1B,oDAAoD;AACtD,MAAM,wBAAwB,GAAG,UAAU;MAQ9B,oBAAoB,CAAA;AAckB,IAAA,SAAA;IAbxC,KAAK,GAAsB,EAAE;IAC7B,WAAW,GAAG,CAAC;IACf,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,IAAI;IACf,IAAI,GAAG,IAAI;IACX,YAAY,GAAG,IAAI;IACnB,cAAc,GAAG,IAAI;IACrB,SAAS,GAAG,UAAU;AAErB,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;IAEhD,OAAO,GAA0C,IAAI;AAE7D,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YAClE,IAAI,CAAC,aAAa,EAAE;QACtB;AACA,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QACtD;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAACA,sBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzE;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,eAAe,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI;IAClD;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,2BAA2B;IACpC;AAEA,IAAA,cAAc,CAAC,QAAiB,EAAA;AAC9B,QAAA,OAAO,CAAC,sBAAsB,EAAE,QAAQ,GAAG,wBAAwB,GAAG,EAAE;aACrE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACjC;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACjC;AAEA,IAAA,IAAI,CAAC,KAAa,EAAA;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACtB,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAC/B,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK;QAChC;AAEA,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACtB,YAAA,OAAO,CAAC;QACV;QAEA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAK;YAC9B,IAAI,CAAC,IAAI,EAAE;QACb,CAAC,EAAE,UAAU,CAAC;IAChB;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;IACF;AA5HW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAcR,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAdnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4VC7CjC,2oEAgEA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDnBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2oEAAA,EAAA;;0BAgBlC,SAAS;2BAAC,OAAO;;sBAb7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;ME1CU,yBAAyB,CAAA;AAGR,IAAA,QAAA;IAFD,SAAS,GAAG,EAAE;AAEzC,IAAA,WAAA,CAA4B,QAA8C,EAAA;QAA9C,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAyC;wGAHlE,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAEE,KAAK;uBAAC,kBAAkB;;;AC+B3B,MAAMA,sBAAoB,GAAG,wBAAwB;AACrD,MAAM,+BAA+B,GAAG,mBAAmB;AAC3D,MAAM,gCAAgC,GAAG,oBAAoB;AAC7D,MAAMC,0BAAwB,GAC5B,wEAAwE;AAE1E,MAAMC,oBAAkB,GACtB,uFAAuF;AACzF,MAAMC,uBAAqB,GAAG,SAAS;AAEvC,MAAMC,oBAAkB,GACtB,kEAAkE;AAClE,IAAA,0CAA0C;AAC5C,MAAMC,0BAAwB,GAAG,qBAAqB;AACtD,MAAM,qBAAqB,GAAG,4DAA4D;AAC1F,MAAM,qBAAqB,GACzB,0EAA0E;IAC1E,8DAA8D;IAC9D,+EAA+E;AAC/E,IAAA,gDAAgD;AAClD,MAAM,2BAA2B,GAC/B,gFAAgF;IAChF,qFAAqF;IACrF,qGAAqG;AACrG,IAAA,+EAA+E;AAEjF,MAAMC,uBAAqB,GAAG,2DAA2D;AACzF,MAAMC,0BAAwB,GAAG,4EAA4E;AAE7G,MAAMC,wBAAsB,GAAG,qBAAqB;AACpD,MAAMC,2BAAyB,GAAG,aAAa;AAE/C,MAAMC,eAAa,GAAsC;AACvD,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,KAAK,EAAE;CACR;AAED,MAAMC,mBAAiB,GAAG,kDAAkD;AAC5E,MAAM,kBAAkB,GACtB,mGAAmG;AACrG,MAAM,mBAAmB,GACvB,iHAAiH;IACjH,kFAAkF;AAClF,IAAA,iDAAiD;AACnD,MAAM,mBAAmB,GACvB,uGAAuG;AACvG,IAAA,mBAAmB;AACrB,MAAM,eAAe,GACnB,mGAAmG;AACrG,MAAM,qBAAqB,GAAG,mCAAmC;AACjE,MAAM,qBAAqB,GACzB,gFAAgF;IAChF,0FAA0F;IAC1F,qGAAqG;AACrG,IAAA,+EAA+E;AACjF,MAAM,4BAA4B,GAChC,wFAAwF;IACxF,0FAA0F;IAC1F,qGAAqG;AACrG,IAAA,+EAA+E;AACjF,MAAM,6BAA6B,GAAG,UAAU;AAChD,MAAM,0BAA0B,GAC9B,0GAA0G;AAC5G,MAAM,sBAAsB,GAC1B,iHAAiH;AACjH,IAAA,+EAA+E;AACjF,MAAM,iBAAiB,GAAG,uDAAuD;AACjF,MAAM,kBAAkB,GAAG,uDAAuD;AAClF,MAAM,qBAAqB,GAAG,6CAA6C;AAC3E,MAAM,gBAAgB,GACpB,wFAAwF;AACxF,IAAA,yFAAyF;AAC3F,MAAM,qBAAqB,GACzB,gEAAgE;MASrD,qBAAqB,CAAA;AAsEiB,IAAA,SAAA;IArExC,OAAO,GAAyB,EAAE;IAClC,IAAI,GAAmC,EAAE;AACzC,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,QAAQ;IACR,SAAS,GAAG,YAAY;IACxB,OAAO,GAAG,KAAK;IACf,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,OAAO,GAAG,KAAK;IACf,YAAY,GAAG,mBAAmB;IAClC,SAAS,GAAG,GAAG;IACf,aAAa,GAAG,KAAK;IACrB,aAAa,GAAG,KAAK;IAErB,QAAQ,GAAG,EAAE;IACb,SAAS,GAAG,CAAC;IACb,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxC,cAAc,GAAG,IAAI;IACrB,YAAY,GAAG,IAAI;IACnB,gBAAgB,GAAG,KAAK;AACxB,IAAA,KAAK;AAEL,IAAA,OAAO;IACP,aAAa,GAA8B,KAAK;IAChD,UAAU,GAAG,KAAK;IAElB,WAAW,GAAG,IAAI;IAClB,WAAW,GAAG,IAAI;IAClB,oBAAoB,GAAG,IAAI;IAC3B,gBAAgB,GAAG,IAAI;IACvB,YAAY,GAAG,KAAK;IAEpB,UAAU,GAAG,KAAK;IAClB,MAAM,GAAG,IAAI;IACb,YAAY,GAA2B,EAAE;IACzC,WAAW,GAAyC,EAAE;AAErD,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAU;AAC3C,IAAA,UAAU,GAAG,IAAI,YAAY,EAAoB;AACjD,IAAA,YAAY,GAAG,IAAI,YAAY,EAGrC;AACM,IAAA,eAAe,GAAG,IAAI,YAAY,EAA0B;AAC5D,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AAGa,IAAA,aAAa;IAEpB,WAAW,GAAG,CAAC;IACf,eAAe,GAAG,EAAE;IACpB,YAAY,GAAG,EAAE;IACjB,aAAa,GAA2B,EAAE;IAC1C,gBAAgB,GAA4B,EAAE;IAC9C,YAAY,GAA2B,EAAE;IACzC,UAAU,GAAG,KAAK;AAClB,IAAA,cAAc;IACd,iBAAiB,GAA2B,EAAE;IAC9C,kBAAkB,GAA2B,EAAE;IAC/C,WAAW,GAAG,IAAI;IAEpB,YAAY,GAAG,CAAC;IAChB,gBAAgB,GAAG,CAAC;AAE5B,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QAChD;AACA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;QACnD;AACA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;AACA,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QACrC;AACA,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C;IACF;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACLX,sBAAoB;YACpB,IAAI,CAAC,aAAa,GAAG,gCAAgC,GAAG,+BAA+B;YACvF,IAAI,CAAC,QAAQ,GAAGC,0BAAwB,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC;AACN;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAACC,oBAAkB,EAAE,IAAI,CAAC,OAAO,GAAGC,uBAAqB,GAAG,EAAE;aAClE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAOC,oBAAkB;IAC3B;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACLE,uBAAqB;YACrB,IAAI,CAAC,OAAO,GAAGC,0BAAwB,GAAG;AAC3C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAOI,mBAAiB;IAC1B;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,4BAA4B;IACrC;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,6BAA6B;IACtC;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,0BAA0B;IACnC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,sBAAsB;IAC/B;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,iBAAiB;IAC1B;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YACrD,OAAO,IAAI,CAAC,KAAK;QACnB;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;IACzB;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACvE;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,UAAU,CAAA,CAAE;IACzD;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAChF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACxE,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe;AAC3D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;IAC1D;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;IACrF;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM;IACjC;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;IAC7C;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9D;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;IACzF;AAEA,IAAA,eAAe,CAAC,MAA0B,EAAA;QACxC,OAAO;YACLN,0BAAwB;YACxB,IAAI,CAAC,aAAa,GAAG,qBAAqB,GAAG,EAAE;AAC/C,YAAAK,eAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YACrC,MAAM,CAAC,WAAW,IAAI;AACvB;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,qBAAqB;IAC9B;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,2BAA2B;IACpC;AAEA,IAAA,aAAa,CAAC,MAA0B,EAAA;QACtC,OAAO;YACLF,wBAAsB;YACtB,IAAI,CAAC,OAAO,GAAGC,2BAAyB,GAAG,EAAE;YAC7C,IAAI,CAAC,aAAa,GAAG,qBAAqB,GAAG,EAAE;AAC/C,YAAAC,eAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YACrC,MAAM,CAAC,SAAS,IAAI;AACrB;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,QAAQ,IAAI,IAAI;IAClG;IAEA,SAAS,CAAC,GAA4B,EAAE,MAA0B,EAAA;QAChE,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;QACrC;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,SAAS;QACvB;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,WAAW,CAAC,MAA0B,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;IAC9D;AAEA,IAAA,cAAc,CAAC,MAA0B,EAAA;AACvC,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,CAAA,EAAG,MAAM,CAAC,QAAQ,IAAI;QAC/B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CAAC,MAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5B,YAAA,OAAO,EAAE,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,EAAE;QACjE;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,EAAE;IACnE;AAEA,IAAA,UAAU,CAAC,MAA0B,EAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtC,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI;IAC7C;AAEA,IAAA,WAAW,CAAC,MAA0B,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtC,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI;IAC9C;AAEA,IAAA,WAAW,CAAC,MAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,QAAQ,CAAC,MAA0B,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,EAAE;AAC/B,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY;IAClE;AAEA,IAAA,MAAM,CAAC,MAA0B,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpB;QACF;QAEA,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK;QACpE;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC5B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,SAAS,EAAE,IAAI,CAAC;AACjB,SAAA,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACrC;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACrC;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;YAC/C;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;IAEA,oBAAoB,CAAC,SAAiB,EAAE,KAAa,EAAA;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,KAAK;QACrC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;AAEA,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE;IAC5C;AAEA,IAAA,sBAAsB,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACpE,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAC1C,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAC1E;QACH;aAAO;AACL,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC;AACpB,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACpC,iBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC;QAC1D;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD;AAEA,IAAA,kBAAkB,CAAC,GAA4B,EAAA;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QACnC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC;QAClE;aAAO;YACL,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;QACjD;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD;AAEA,IAAA,UAAU,CAAC,GAA4B,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5D;AAEA,IAAA,aAAa,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACxF,SAAA,CAAC;IACJ;IAEA,aAAa,CAAC,KAAiB,EAAE,MAA0B,EAAA;AACzD,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE;YAC9B;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,IAAI,CAAuB;QAChF,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAE5D,QAAA,MAAM,MAAM,GAAG,CAAC,SAAqB,KAAI;YACvC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC5C;YACF;YACA,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;AACnD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE;AACtC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACnE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;YACrE,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC;QAED,MAAM,IAAI,GAAG,MAAK;AAChB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC;AAC/C,YAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC;AAC7C,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC;AAC5C,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;IAC1C;AAEQ,IAAA,aAAa,CAAC,IAAoC,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;YACjF,MAAM,WAAW,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACjF,YAAA,OAAO,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS;AACzF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,IAAoC,EAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAElC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;YACzB,IAAI,MAAM,EAAE;gBACV,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;oBACxD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,oBAAA,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3D,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,OAAO,KAAK;gBACd;YACF;YAEA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,KAAI;AAC1C,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACtB,oBAAA,OAAO,IAAI;gBACb;AACA,gBAAA,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpE,IAAI,CAAC,WAAW,EAAE;AAChB,oBAAA,OAAO,IAAI;gBACb;gBACA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;AAClD,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;oBAClC,OAAO,UAAU,KAAK,WAAW;gBACnC;AACA,gBAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,YAAY;AACzB,YAAA,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa;AACjC,SAAA,CAAC;IACJ;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;YAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK;AAC1C,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAA6B,CAAC;IACnC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AACtD,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK;YAChC;AACA,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAA4B,CAAC;IAClC;IAEQ,mBAAmB,GAAA;QACzB,MAAM,WAAW,GAA2B,EAAE;QAC9C,MAAM,YAAY,GAA2B,EAAE;QAC/C,IAAI,IAAI,GAAG,CAAC;QACZ,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AAEnC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5B,gBAAA,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;AAC9B,gBAAA,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YACpC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACxC,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;AAC7B,gBAAA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAChC,gBAAA,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YACrC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY;IACxC;AAEQ,IAAA,aAAa,CAAC,MAA0B,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK;QAC3D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,GAAG;QACZ;QACA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB;AACA,QAAA,OAAO,GAAG;IACZ;AAEQ,IAAA,aAAa,CAAC,GAA4B,EAAA;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAC5B;AACA,QAAA,OAAO,KAAwB;IACjC;AAvlBW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAsET,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAtEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAoDf,yBAAyB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpL5C,mlYAuVA,4CD1NY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EAEP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mlYAAA,EAAA;;0BAwElC,SAAS;2BAAC,OAAO;;sBArE7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAIA;;sBACA;;sBAKA,eAAe;uBAAC,yBAAyB;;;AEnK5C,MAAM,eAAe,GACnB,kFAAkF;AACpF,MAAM,kBAAkB,GACtB,gFAAgF;IAChF,iGAAiG;AACjG,IAAA,kBAAkB;AAEpB,MAAM,kBAAkB,GAAkC;AACxD,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE;CACL;AAED,MAAME,eAAa,GAAG,uBAAuB;AAC7C,MAAM,mBAAmB,GAAG,uDAAuD;AACnF,MAAM,YAAY,GAAG,iDAAiD;AACtE,MAAMC,iBAAe,GACnB,qDAAqD;AACrD,IAAA,6EAA6E;AAC/E,MAAMvB,sBAAoB,GACxB,iFAAiF;IACjF,iGAAiG;IACjG,+EAA+E;AAC/E,IAAA,gDAAgD;MAQrC,kBAAkB,CAAA;AAoBoB,IAAA,SAAA;AAnBzC,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,IAAI,GAAG,KAAK;AACZ,IAAA,KAAK;AACL,IAAA,WAAW;IACX,SAAS,GAAG,QAAQ;IACpB,IAAI,GAAkB,IAAI;IAC1B,WAAW,GAAG,IAAI;IAClB,eAAe,GAAG,IAAI;IACtB,aAAa,GAAG,IAAI;AAEnB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAwB;AAEhB,IAAA,WAAW;AAE7C,IAAA,OAAO,GAAG,CAAA,iBAAA,EAAoB,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAC3D,IAAA,aAAa,GAAG,CAAA,uBAAA,EAA0B,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAEhF,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE;YACjC,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS;aACtE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAOsB,eAAa;IACtB;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOC,iBAAe;IACxB;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAOvB,sBAAoB;IAC7B;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,YAAY,CAAC,MAA4B,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B;AAEA,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACvC;QACF;QAEA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAC/B;IACF;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACrC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC7B;IACF;IAEQ,cAAc,GAAA;QACpB,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,EAAE;AACzC,QAAA,CAAC,CAAC;IACJ;AAtGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAoBN,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AApBnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,4cChD/B,8gDA8CA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8gDAAA,EAAA;;0BAsBlC,SAAS;2BAAC,OAAO;;sBAjB7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;;AExC1B,MAAMF,cAAY,GAChB,gFAAgF;IAChF,mEAAmE;IACnE,yEAAyE;IACzE,+EAA+E;IAC/E,+FAA+F;AAC/F,IAAA,8EAA8E;AAEhF,MAAM0B,iBAAe,GAAG,4BAA4B;AACpD,MAAMC,oBAAkB,GAAG,2CAA2C;AACtE,MAAMC,wBAAsB,GAAG,0CAA0C;AAEzE,MAAM3B,iBAAe,GAAyC;AAC5D,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE;CACT;AAED,MAAME,cAAY,GAAsC;AACtD,IAAA,EAAE,EAAE,kBAAkB;AACtB,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE;CACL;AAED,MAAMM,oBAAkB,GAAsC;AAC5D,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAMoB,iBAAe,GACnB,kFAAkF;AAClF,IAAA,iDAAiD;AAEnD,MAAM,eAAe,GACnB,kFAAkF;AAClF,IAAA,kGAAkG;AAEpG,MAAM,kBAAkB,GACtB,iFAAiF;IACjF,iGAAiG;IACjG,+EAA+E;AAC/E,IAAA,gDAAgD;AAElD,MAAM,cAAc,GAClB,6EAA6E;IAC7E,gFAAgF;IAChF,iGAAiG;AACjG,IAAA,gDAAgD;AAElD,MAAM,eAAe,GACnB,kFAAkF;IAClF,iGAAiG;AACjG,IAAA,gGAAgG;AAElG,MAAM,iBAAiB,GAAG,0CAA0C;AACpE,MAAM,SAAS,GAAG,0CAA0C;AAC5D,MAAM,YAAY,GAAG,kEAAkE;AACvF,MAAM,SAAS,GAAG,2CAA2C;MAehD,sBAAsB,CAAA;AACzB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,KAAK,GAAG,EAAE;IACV,OAAO,GAAyB,SAAS;IACzC,IAAI,GAAsB,IAAI;IAC9B,SAAS,GAAG,IAAI;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,SAAS,GAAG,KAAK;AACjB,IAAA,KAAK;AAEL,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,GAAG;AACH,IAAA,GAAG;AACH,IAAA,WAAW;AACX,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AAEzC,IAAA,UAAU,GAAG,CAAA,eAAA,EAAkB,sBAAsB,CAAC,MAAM,EAAE,EAAE;IACjE,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,MAAM,GAAG,KAAK;AACd,IAAA,YAAY,GAAG,IAAI,IAAI,EAAE;IACzB,YAAY,GAAqB,EAAE;AAC1B,IAAA,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1D,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM;AAChE,QAAA,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3E,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAA,MAAA,CAAQ;IACnD;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACL7B,cAAY;AACZ,YAAAG,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAAF,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG4B,iBAAe,GAAG;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOH,iBAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACLC,oBAAkB;AAClB,YAAAlB,oBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAGmB,wBAAsB,GAAG;AAC5C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,EAAE;QAChB;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,QAAQ;IAChC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IAC/B;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,cAAc;IACvB;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAChD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,QAAQ,GAAG,EAAE;AACxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,QAAQ,GAAG,EAAE;QAExE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;QAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC;IAC7E;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;AAEA,IAAA,YAAY,CAAC,GAAmB,EAAA;QAC9B,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACnC;QACF;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACnB;QACF;QACA,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC1B;QACF;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA,IAAA,cAAc,CAAC,GAAmB,EAAA;QAChC,OAAO;YACL,eAAe;YACf,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,iBAAiB;YACpC,GAAG,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG;AAC5C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC;QACF;AACA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;QACjD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,OAAO,CAAA,EAAA,CAAI,CAAC,EAAE;AAC/G,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;IACF;IAGA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;IAEQ,yBAAyB,GAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,QAAQ,IAAI,IAAI,IAAI,EAAE;QAC1C,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC1C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE;AACtC,QAAA,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;AAExC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;YAC1D,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,aAAa,CAAC,WAAW,EAAE,EAC3B,aAAa,CAAC,QAAQ,EAAE,EACxB,aAAa,CAAC,OAAO,EAAE,GAAG,KAAK,CAChC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACrC,MAAM,QAAQ,GACZ,CAAC,OAAO,IAAI,QAAQ,GAAG,OAAO,MAAM,OAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU;YAEvF,OAAO;gBACL,IAAI;AACJ,gBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7B,gBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK;gBAClC,QAAQ;gBACR,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;AAC/C,gBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC1B;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,UAAU,CAAC,IAAU,EAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,KAAK;QACd;QACA,QACE,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;AAC7C,YAAA,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;YACvC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;IAEzC;AAEQ,IAAA,SAAS,CAAC,KAAc,EAAA;QAC9B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAC3B,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;IACvC;AAEQ,IAAA,UAAU,CAAC,IAAU,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACvD,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,EAAE;IAClC;AAEQ,IAAA,SAAS,CAAC,IAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACtE;wGArTW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EARtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7FH,s6IAkHA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDnBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,s6IAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAuMA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAWzC,YAAY;uBAAC,yBAAyB;;;AEjTzC,MAAM5B,cAAY,GAChB,gFAAgF;IAChF,mEAAmE;IACnE,yEAAyE;IACzE,+EAA+E;IAC/E,+FAA+F;AAC/F,IAAA,8EAA8E;AAEhF,MAAM0B,iBAAe,GAAG,4BAA4B;AACpD,MAAMC,oBAAkB,GAAG,2CAA2C;AACtE,MAAMC,wBAAsB,GAAG,0CAA0C;AACzE,MAAM,kBAAkB,GAAG,gCAAgC;AAE3D,MAAM3B,iBAAe,GAAoC;AACvD,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE;CACT;AAED,MAAME,cAAY,GAAiC;AACjD,IAAA,EAAE,EAAE,kBAAkB;AACtB,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE;CACL;AAED,MAAMM,oBAAkB,GAAiC;AACvD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,kBAAkB,GAAiC;AACvD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAMoB,iBAAe,GACnB,kFAAkF;AAClF,IAAA,iDAAiD;MAgBtC,iBAAiB,CAAA;AACpB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,KAAK,GAAG,EAAE;IACV,IAAI,GAAiB,MAAM;IAC3B,OAAO,GAAoB,SAAS;IACpC,IAAI,GAAiB,IAAI;IACzB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,SAAS,GAAG,KAAK;AACjB,IAAA,KAAK;AAEL,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,WAAW;AACX,IAAA,YAAY;AACZ,IAAA,SAAS;IACT,UAAU,GAAmB,IAAI;AACjC,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AAEzC,IAAA,UAAU,GAAG,CAAA,UAAA,EAAa,iBAAiB,CAAC,MAAM,EAAE,EAAE;IAEvD,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACL7B,cAAY;AACZ,YAAAG,cAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAAF,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG4B,iBAAe,GAAG;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOH,iBAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACLC,oBAAkB;AAClB,YAAAlB,oBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAGmB,wBAAsB,GAAG;AAC5C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,EAAE;QAChB;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,QAAQ;IAChC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,QAAQ;IACnC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IAC/B;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa;AAEjE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IACpD;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtE;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAjIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1EH,4iCAiCA,2CDiCY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EAEP,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,4iCAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;AE1EH,MAAM,gBAAgB,GACpB,8GAA8G;AAEhH,MAAM,gBAAgB,GAAmC;AACvD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,mBAAmB,GAAsC;AAC7D,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,OAAO,EACL;CACH;AAED,MAAM,iBAAiB,GACrB,wFAAwF;IACxF,iGAAiG;AACjG,IAAA,gDAAgD;AAElD,MAAM,iBAAiB,GAAmC;AACxD,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE;CACL;AAED,MAAM,mBAAmB,GACvB,qEAAqE;AACvE,MAAM,qBAAqB,GACzB,8EAA8E;AAChF,MAAM,qBAAqB,GACzB,yEAAyE;MAQ9D,mBAAmB,CAAA;AAYmB,IAAA,SAAA;IAXxC,KAAK,GAAqB,EAAE;IAC5B,SAAS,GAAG,SAAS;IACrB,IAAI,GAAmB,IAAI;IAC3B,OAAO,GAAsB,SAAS;IACtC,QAAQ,GAAG,KAAK;AAEf,IAAA,YAAY,GAAG,IAAI,YAAY,EAAkB;AAG1C,IAAA,SAAS;AAE1B,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,gBAAgB;AAChB,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,YAAA,IAAI,CAAC;AACN;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,cAAc,CAAC,IAAoB,EAAA;QACjC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;IACzC;AAEA,IAAA,YAAY,CAAC,IAAoB,EAAA;QAC/B,OAAO;YACL,iBAAiB;AACjB,YAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,mBAAmB,GAAG,qBAAqB;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,qBAAqB,GAAG;AACrD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,WAAW,CAAC,IAAoB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,IAAI;QAClB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,UAAU,CAAC,IAAoB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,GAAG,IAAI,qBAAqB;QAC1C;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI;IACzB;IAEA,WAAW,CAAC,IAAoB,EAAE,KAAY,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC;QACF;QAEA,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;QAC/E,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,MAAM;gBACT,SAAS,GAAG,CAAC;gBACb;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC5B;AACF,YAAA,KAAK,YAAY;gBACf,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBACrE;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBACnG;;AAGJ,QAAA,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE;QACzB,KAAK,CAAC,cAAc,EAAE;IACxB;IAEQ,iBAAiB,GAAA;QACvB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;aACpC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa;AAChC,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1D;AA/GW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAYP,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAZnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EASI,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzE9C,i8CAwCA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDwBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i8CAAA,EAAA;;0BAclC,SAAS;2BAAC,OAAO;;sBAX7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;AEnDhD,MAAMF,iBAAe,GAAG,4BAA4B;AACpD,MAAMC,oBAAkB,GAAG,2CAA2C;AACtE,MAAMC,wBAAsB,GAAG,0CAA0C;AAEzE,MAAM,oBAAoB,GACxB,iFAAiF;IACjF,qDAAqD;IACrD,4EAA4E;AAC5E,IAAA,4FAA4F;AAE9F,MAAM,wBAAwB,GAAG,mDAAmD;AAEpF,MAAM3B,iBAAe,GAA0C;AAC7D,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE;CACT;AAED,MAAMU,sBAAoB,GAAuC;AAC/D,IAAA,EAAE,EAAE,2BAA2B;AAC/B,IAAA,EAAE,EAAE,8BAA8B;AAClC,IAAA,EAAE,EAAE;CACL;AAED,MAAMF,oBAAkB,GAAuC;AAC7D,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,aAAa,GACjB,sGAAsG;AAExG,MAAM,iBAAiB,GACrB,gEAAgE;AAChE,IAAA,wEAAwE;AAE1E,MAAM,iBAAiB,GAAuC;AAC5D,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE;CACL;AAED,MAAM,mBAAmB,GACvB,+DAA+D;AAC/D,IAAA,mFAAmF;AAErF,MAAMqB,eAAa,GACjB,kFAAkF;AAClF,IAAA,kGAAkG;AAEpG,MAAM,mBAAmB,GACvB,8FAA8F;AAC9F,IAAA,wGAAwG;AAE1G,MAAM,uBAAuB,GAAG,oDAAoD;AAEpF,MAAM,mBAAmB,GAAG,4DAA4D;AAExF,MAAMD,iBAAe,GACnB,iFAAiF;AACjF,IAAA,gDAAgD;MAgBrC,uBAAuB,CAAA;AAiCL,IAAA,UAAA;AAhCrB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,OAAO,GAA2B,EAAE;IACpC,KAAK,GAAa,EAAE;IACpB,OAAO,GAA0B,SAAS;IAC1C,IAAI,GAAuB,IAAI;IAC/B,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;AACf,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,aAAa;AAEb,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAY;AAE9B,IAAA,OAAO;AAEpB,IAAA,UAAU,GAAG,CAAA,iBAAA,EAAoB,uBAAuB,CAAC,MAAM,EAAE,EAAE;AACnE,IAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,OAAO;IAE3C,KAAK,GAAG,EAAE;IACV,MAAM,GAAG,KAAK;IAEN,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA8B,MAAK,EAAE,CAAC;AAC9C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,CAA6B,UAAmC,EAAA;QAAnC,IAAA,CAAA,UAAU,GAAV,UAAU;IAA4B;AAEnE,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS;YACrC,IAAI,CAAC,aAAa,KAAK,IAAI;YAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa;IAC3C;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOH,iBAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACLC,oBAAkB;AAClB,YAAAlB,oBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAGmB,wBAAsB,GAAG;AAC5C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,oBAAoB;AACpB,YAAAjB,sBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAAV,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG4B,iBAAe,GAAG,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,wBAAwB,GAAG;AAC9C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpE;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAOC,eAAa;IACtB;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,uBAAuB;IAChC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,EAAE;QAChB;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,QAAQ;IAChC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IAC/B;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACpF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACvF;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;YACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,OAAO,KAAK;YACd;YACA,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI;YACb;YACA,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjG,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE;IACtC;AAEA,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;IAEA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE;IACrC;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QACzB,IAAI,CAAC,IAAI,EAAE;IACb;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD;IACF;AAEA,IAAA,YAAY,CAAC,MAA4B,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD;QACF;QACA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACrC;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;IAC7B;AAEA,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;IACxB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;AAEQ,IAAA,WAAW,CAAC,SAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,QAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,EAAE;QACd;IACF;wGAnPW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,SAAA,EARvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChGH,i+EAuEA,2CDgBY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,i+EAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,SAAS;;sBAoNnB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MErU/B,oBAAoB,CAAA;AACH,IAAA,WAAA;AAA5B,IAAA,WAAA,CAA4B,WAAiC,EAAA;QAAjC,IAAA,CAAA,WAAW,GAAX,WAAW;IAAyB;wGADrD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCWY,oBAAoB,CAAA;AACvB,IAAA,OAAO,MAAM,GAAG,CAAC;AAEhB,IAAA,EAAE;AACF,IAAA,KAAK;IACL,QAAQ,GAAG,KAAK;AAEW,IAAA,aAAa;AACT,IAAA,WAAW;AAE1C,IAAA,UAAU,GAAG,CAAA,QAAA,EAAW,oBAAoB,CAAC,MAAM,EAAE,EAAE;AAEhE,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU;IACnC;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,MAAM;IACjC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,QAAQ;IACnC;wGAtBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOjB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBpC,uEAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDaa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uEAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBAEA,YAAY;uBAAC,oBAAoB;;sBACjC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEXxC,MAAMJ,iBAAe,GAAG,QAAQ;AAChC,MAAM,gBAAgB,GACpB,6EAA6E;AAC/E,MAAM,uBAAuB,GAC3B,sFAAsF;AACxF,MAAM,2BAA2B,GAC/B,sGAAsG;AACxG,MAAM,yBAAyB,GAC7B,mEAAmE;AACrE,MAAM,2BAA2B,GAAG,+BAA+B;AACnE,MAAM,qBAAqB,GAAG,MAAM;AACpC,MAAM,aAAa,GACjB,yEAAyE;AACzE,IAAA,8EAA8E;MASnE,gBAAgB,CAAA;IAClB,SAAS,GAAG,MAAM;AAClB,IAAA,QAAQ;AAEP,IAAA,cAAc,GAAG,IAAI,YAAY,EAAU;AAGpC,IAAA,MAAM;AAEvB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOA,iBAAe;IACxB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,uBAAuB;IAChC;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,2BAA2B;IACpC;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,yBAAyB;IAClC;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,2BAA2B;IACpC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IACrC;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IAClC;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9D;AAEA,IAAA,QAAQ,CAAC,KAA2B,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,UAAU;IAC3C;AAEA,IAAA,cAAc,CAAC,KAA2B,EAAA;QACxC,OAAO;YACL,uBAAuB;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,yBAAyB,GAAG,2BAA2B;YAC9E,KAAK,CAAC,QAAQ,GAAG,2BAA2B,GAAG;AAChD;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,SAAS,CAAC,KAA2B,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,KAA2B,EAAA;AACpC,QAAA,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU;IACxC;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAC5C,IAAI,CAAC,UAAU,EAAE;YACf;QACF;QAEA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,UAAU,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,UAAU;YACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACjD;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC;AACzE,YAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9B,gBAAA,OAAO,MAAM;YACf;QACF;AAEA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAC7D;wGA3GW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAMV,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCvC,0mCAmCA,2CDJY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0mCAAA,EAAA;;sBAG9C;;sBACA;;sBAEA;;sBAEA,eAAe;uBAAC,oBAAoB;;;AE5BvC,MAAM,YAAY,GAAG,4CAA4C;AACjE,MAAM,eAAe,GAAG,gBAAgB;AACxC,MAAM,gBAAgB,GAAG,+BAA+B;AAExD,MAAM,UAAU,GAAG,oCAAoC;AACvD,MAAM,cAAc,GAAG,0CAA0C;AACjE,MAAMjB,oBAAkB,GAAiC;AACvD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,YAAY,GAChB,yEAAyE;IACzE,kDAAkD;IAClD,kFAAkF;IAClF,wEAAwE;IACxE,8FAA8F;AAC9F,IAAA,qDAAqD;AAEvD,MAAM,oBAAoB,GAAiC;AACzD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,uBAAuB,GAAoC;AAC/D,IAAA,OAAO,EACL,oFAAoF;AACtF,IAAA,SAAS,EACP;CACH;AAED,MAAM,gBAAgB,GAAiC;AACrD,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,EAAE,EAAE,yBAAyB;AAC7B,IAAA,EAAE,EAAE;CACL;AAED,MAAMoB,iBAAe,GACnB,iFAAiF;AACjF,IAAA,oCAAoC;MAezB,iBAAiB,CAAA;IACnB,KAAK,GAAG,EAAE;AACV,IAAA,IAAI;IACJ,OAAO,GAAoB,SAAS;IACpC,IAAI,GAAiB,IAAI;IACzB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,SAAS,GAAG,KAAK;AAEjB,IAAA,EAAE;AACF,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;IAE1C,aAAa,GAAkB,IAAI;IACnC,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK;IACzE;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,YAAY;YACZ,IAAI,CAAC,UAAU,GAAG,gBAAgB,GAAG;AACtC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACL,UAAU;AACV,YAAApB,oBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG;AACpC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,YAAY;AACZ,YAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,OAAO,GAAGoB,iBAAe,GAAG;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,IAAI;IACpC;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAvFW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnEH,usBAsBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD+Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,usBAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;;AErEH,MAAM7B,cAAY,GAChB,gGAAgG;IAChG,mEAAmE;IACnE,yEAAyE;IACzE,+EAA+E;IAC/E,+FAA+F;AAC/F,IAAA,8EAA8E;AAEhF,MAAM0B,iBAAe,GAAG,4BAA4B;AACpD,MAAMC,oBAAkB,GAAG,2CAA2C;AACtE,MAAMC,wBAAsB,GAAG,0CAA0C;AAEzE,MAAM3B,iBAAe,GAAqC;AACxD,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE;CACT;AAED,MAAM,YAAY,GAAkC;AAClD,IAAA,EAAE,EAAE,uBAAuB;AAC3B,IAAA,EAAE,EAAE,wBAAwB;AAC5B,IAAA,EAAE,EAAE;CACL;AAED,MAAM,kBAAkB,GAAkC;AACxD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,eAAe,GACnB,kFAAkF;AAClF,IAAA,iDAAiD;MAgBtC,kBAAkB,CAAA;AACrB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,KAAK,GAAG,EAAE;IACV,OAAO,GAAqB,SAAS;IACrC,IAAI,GAAkB,IAAI;IAC1B,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;AACf,IAAA,KAAK;AACL,IAAA,WAAW;IACX,gBAAgB,GAAG,EAAE;AAErB,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,eAAe;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AAEzC,IAAA,UAAU,GAAG,CAAA,WAAA,EAAc,kBAAkB,CAAC,MAAM,EAAE,EAAE;IAEzD,mBAAmB,GAAG,KAAK;AAC3B,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACLD,cAAY;AACZ,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAAC,iBAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,eAAe,GAAG;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOyB,iBAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACLC,oBAAkB;AAClB,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAGC,wBAAsB,GAAG;AAC5C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,EAAE;QAChB;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,QAAQ;IACjC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IAC/B;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;YACzC,OAAO,IAAI,CAAC,gBAAgB;QAC9B;QAEA,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;IACvC;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAlHW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DH,20CAsCA,4CDYY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAEE,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,20CAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;;AElEH,MAAM,oBAAoB,GAAG,wBAAwB;AACrD,MAAM,wBAAwB,GAC5B,wEAAwE;AAE1E,MAAM,kBAAkB,GAAG,mEAAmE;AAC9F,MAAM,qBAAqB,GAAG,SAAS;AAEvC,MAAM,kBAAkB,GACtB,+EAA+E;AAC/E,IAAA,0CAA0C;AAC5C,MAAM,wBAAwB,GAAG,mCAAmC;AAEpE,MAAM,qBAAqB,GAAG,2DAA2D;AACzF,MAAM,wBAAwB,GAAG,4EAA4E;AAE7G,MAAM,sBAAsB,GAAG,qBAAqB;AACpD,MAAM,yBAAyB,GAAG,aAAa;AAE/C,MAAM,aAAa,GAAkC;AACnD,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,KAAK,EAAE;CACR;AAED,MAAM,iBAAiB,GAAG,kDAAkD;MAQ/D,iBAAiB,CAAA;AAWqB,IAAA,SAAA;IAVxC,OAAO,GAAqB,EAAE;IAC9B,IAAI,GAAmC,EAAE;AACzC,IAAA,OAAO;IACP,SAAS,GAAG,OAAO;IACnB,OAAO,GAAG,KAAK;IACf,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAG,KAAK;IACf,YAAY,GAAG,mBAAmB;IAClC,SAAS,GAAG,GAAG;AAExB,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,oBAAoB;YACpB,IAAI,CAAC,QAAQ,GAAG,wBAAwB,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC;AACN;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,GAAG,qBAAqB,GAAG,EAAE;aAClE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,qBAAqB;YACrB,IAAI,CAAC,OAAO,GAAG,wBAAwB,GAAG;AAC3C;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,iBAAiB;IAC1B;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC;AAEA,IAAA,eAAe,CAAC,MAAsB,EAAA;QACpC,OAAO;YACL,wBAAwB;AACxB,YAAA,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YACrC,MAAM,CAAC,WAAW,IAAI;AACvB;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,aAAa,CAAC,MAAsB,EAAA;QAClC,OAAO;YACL,sBAAsB;YACtB,IAAI,CAAC,OAAO,GAAG,yBAAyB,GAAG,EAAE;AAC7C,YAAA,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YACrC,MAAM,CAAC,SAAS,IAAI;AACrB;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,SAAS,CAAC,GAA4B,EAAE,MAAsB,EAAA;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,SAAS;QACvB;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;AA9EW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAWL,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAXnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mRC7C9B,2qCAuCA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2qCAAA,EAAA;;0BAalC,SAAS;2BAAC,OAAO;;sBAV7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AE5CH,MAAMF,iBAAe,GAAG,gCAAgC;AACxD,MAAM,kBAAkB,GAAG,wDAAwD;AACnF,MAAM,sBAAsB,GAAG,0CAA0C;AAEzE,MAAM,kBAAkB,GACtB,0EAA0E;IAC1E,+EAA+E;AAC/E,IAAA,iGAAiG;AAEnG,MAAM,kBAAkB,GAAkC;AACxD,IAAA,EAAE,EAAE,gBAAgB;AACpB,IAAA,EAAE,EAAE,gBAAgB;AACpB,IAAA,EAAE,EAAE;CACL;AAED,MAAM,mBAAmB,GAAG;AAC1B,IAAA,EAAE,EAAE,iEAAiE;AACrE,IAAA,GAAG,EAAE;CACN;AAED,MAAM,kBAAkB,GACtB,oGAAoG;AAEtG,MAAM,kBAAkB,GAAkC;AACxD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE;CACL;AAED,MAAM,mBAAmB,GAAG;AAC1B,IAAA,EAAE,EAAE;AACF,QAAA,EAAE,EAAE,qDAAqD;AACzD,QAAA,EAAE,EAAE,qDAAqD;AACzD,QAAA,EAAE,EAAE;AACL,KAAA;AACD,IAAA,GAAG,EAAE;CACN;MAQY,kBAAkB,CAAA;AACrB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,OAAO,GAAG,KAAK;IACf,QAAQ,GAAG,KAAK;IAChB,IAAI,GAAkB,IAAI;AAC1B,IAAA,KAAK;IACL,SAAS,GAAG,QAAQ;AAEnB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAE5C,IAAA,OAAO,GAAG,CAAA,iBAAA,EAAoB,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAEpE,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAOA,iBAAe;IACxB;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,GAAG,sBAAsB,GAAG,EAAE;aACpE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACL,kBAAkB;AAClB,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,EAAE,GAAG,mBAAmB,CAAC;AAC7D,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC;cACpB,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAClC,cAAE,mBAAmB,CAAC,GAAG;AAE3B,QAAA,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClF;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC;wGArDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,+NCtD/B,wfAiBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDqCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wfAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;AErCH,MAAM,iBAAiB,GAAG,qBAAqB;AAC/C,MAAM,gBAAgB,GAAqC;AACzD,IAAA,cAAc,EAAE,kCAAkC;AAClD,IAAA,MAAM,EAAE,oDAAoD;AAC5D,IAAA,aAAa,EAAE,mCAAmC;AAClD,IAAA,WAAW,EAAE,+BAA+B;AAC5C,IAAA,GAAG,EAAE,mDAAmD;AACxD,IAAA,UAAU,EAAE,gCAAgC;AAC5C,IAAA,KAAK,EAAE,kDAAkD;AACzD,IAAA,IAAI,EAAE,mDAAmD;AACzD,IAAA,MAAM,EAAE;CACT;AAED,MAAM,YAAY,GAChB,mFAAmF;AACnF,IAAA,gDAAgD;AAElD,MAAM,aAAa,GAAqC;AACtD,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,IAAI,EAAE;CACP;AAED,MAAM,eAAe,GAAoC;AACvD,IAAA,IAAI,EACF,wEAAwE;QACxE,oCAAoC;AACtC,IAAA,OAAO,EACL,iEAAiE;QACjE,oCAAoC;AACtC,IAAA,MAAM,EACJ,iEAAiE;QACjE;CACH;AAED,MAAM,aAAa,GAAG,uBAAuB;AAC7C,MAAM,eAAe,GAAG,uDAAuD;AAC/E,MAAM,eAAe,GAAG,qDAAqD;AAC7E,MAAM,oBAAoB,GACxB,iFAAiF;IACjF,iGAAiG;IACjG,+EAA+E;AAC/E,IAAA,gDAAgD;MAQrC,iBAAiB,CAAA;AAgBqB,IAAA,SAAA;IAfxC,IAAI,GAAG,KAAK;AACZ,IAAA,KAAK;AACL,IAAA,OAAO;IACP,SAAS,GAAG,cAAc;IAC1B,OAAO,GAAoB,MAAM;IACjC,WAAW,GAAG,IAAI;IAClB,QAAQ,GAAG,CAAC;IACZ,QAAQ,GAAqB,cAAc;IAC3C,QAAQ,GAAqB,IAAI;AAEhC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;AACxC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;IAErD,SAAS,GAAyC,IAAI;AAE9D,IAAA,WAAA,CAAiD,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE5E,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1C,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACvE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;YACL,YAAY;AACZ,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,YAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,YAAA,IAAI,CAAC;AACN;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,oBAAoB;IAC7B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;IACvD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,WAAW,GAAG,QAAQ;IAC3D;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC9B,YAAA,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;QACnB;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;AA/FW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAgBL,OAAO,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAhBnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,iWC9E9B,wmCAoCA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD0Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wmCAAA,EAAA;;0BAkBlC,SAAS;2BAAC,OAAO;;sBAf7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;AEjFH,MAAM,eAAe,GAAG,sBAAsB;AAC9C,MAAM,oBAAoB,GACxB,8FAA8F;AAC9F,IAAA,mGAAmG;AAErG,MAAM,wBAAwB,GAAuC;AACnE,IAAA,GAAG,EAAE,4CAA4C;AACjD,IAAA,KAAK,EAAE,yCAAyC;AAChD,IAAA,MAAM,EAAE,yCAAyC;AACjD,IAAA,IAAI,EAAE;CACP;MAQY,mBAAmB,CAAA;AACtB,IAAA,OAAO,MAAM,GAAG,CAAC;IAEhB,IAAI,GAAG,EAAE;IACT,QAAQ,GAAuB,KAAK;IACpC,QAAQ,GAAG,KAAK;IAEzB,IAAI,GAAG,KAAK;AACH,IAAA,SAAS,GAAG,CAAA,YAAA,EAAe,mBAAmB,CAAC,MAAM,EAAE,EAAE;AAElE,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;IACnB;IAGA,YAAY,GAAA;QACV,IAAI,CAAC,IAAI,EAAE;IACb;IAGA,YAAY,GAAA;QACV,IAAI,CAAC,IAAI,EAAE;IACb;IAGA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,EAAE;IACb;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,IAAI,EAAE;IACb;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,IAAI,EAAE;QACb;IACF;wGA/DW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4TC3BhC,qQAUA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDiBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qQAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBAiCA,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,SAAS;;sBAKtB,YAAY;uBAAC,UAAU;;sBAKvB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEjFrC,MAAM,kBAAkB,GAAG,gBAAgB;MAM9B,iBAAiB,CAAA;AAOT,IAAA,IAAA;AACA,IAAA,QAAA;IAPX,IAAI,GAAiB,OAAO;IAC5B,SAAS,GAAG,kBAAkB;IAC9B,UAAU,GAA0B,IAAI;IACxC,aAAa,GAAkD,IAAI;IAE3E,WAAA,CACmB,IAA6B,EAC7B,QAAmB,EAAA;QADnB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACxB;IAEH,IACI,QAAQ,CAAC,KAAsC,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,OAAO;QAC5B,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,IACI,iBAAiB,CAAC,KAAgC,EAAA;QACpD,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,kBAAkB;AACrD,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;YAChC;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;QACjE,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,mBAAmB,EAAE;QAC5B;aAAO;YACL,IAAI,CAAC,mBAAmB,EAAE;QAC5B;QAEA,MAAM,gBAAgB,GACpB,IAAI,CAAC,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAExE,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;QACjE;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;QACpE;IACF;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;QACrE;AAEA,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO;IAChC;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;YAC5E;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;QACrE;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;QAEA,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;QAE5C,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,KAAK,UAAU,EAAE;YAC1D,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;QAChE;aAAO,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE;YAC5D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACjD;IACF;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC3C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YACzB;QACF;QAEA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,UAAU,EAAE;YAC7D,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;QACnE;aAAO,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,UAAU,EAAE;YAC/D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;QACpD;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;wGAlGW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAYE;;sBAMA;;;AC3BH;;AAEG;;ACFH;;AAEG;;;;"}
|