@globalart/platform-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/globalart-platform-ui.mjs +6070 -0
- package/fesm2022/globalart-platform-ui.mjs.map +1 -0
- package/globalart-platform-ui.d.ts.map +1 -0
- package/index.d.ts +43 -0
- package/index.d.ts.map +1 -0
- package/lib/actions/ui-sticky-actions.component.d.ts +10 -0
- package/lib/actions/ui-sticky-actions.component.d.ts.map +1 -0
- package/lib/alert/ui-alert.component.d.ts +21 -0
- package/lib/alert/ui-alert.component.d.ts.map +1 -0
- package/lib/avatar/ui-avatar.component.d.ts +19 -0
- package/lib/avatar/ui-avatar.component.d.ts.map +1 -0
- package/lib/badge/ui-badge.component.d.ts +11 -0
- package/lib/badge/ui-badge.component.d.ts.map +1 -0
- package/lib/button/ui-button.directive.d.ts +37 -0
- package/lib/button/ui-button.directive.d.ts.map +1 -0
- package/lib/card/ui-card.component.d.ts +10 -0
- package/lib/card/ui-card.component.d.ts.map +1 -0
- package/lib/chip/ui-chip.component.d.ts +29 -0
- package/lib/chip/ui-chip.component.d.ts.map +1 -0
- package/lib/copy/ui-copy-button.component.d.ts +29 -0
- package/lib/copy/ui-copy-button.component.d.ts.map +1 -0
- package/lib/data-table/ui-data-table.component.d.ts +108 -0
- package/lib/data-table/ui-data-table.component.d.ts.map +1 -0
- package/lib/data-table/ui-data-table.labels.d.ts +15 -0
- package/lib/data-table/ui-data-table.labels.d.ts.map +1 -0
- package/lib/description-list/ui-description-list.component.d.ts +14 -0
- package/lib/description-list/ui-description-list.component.d.ts.map +1 -0
- package/lib/dialog/ui-dialog.component.d.ts +23 -0
- package/lib/dialog/ui-dialog.component.d.ts.map +1 -0
- package/lib/feedback/ui-feedback.components.d.ts +42 -0
- package/lib/feedback/ui-feedback.components.d.ts.map +1 -0
- package/lib/file-drop/ui-file-drop.component.d.ts +38 -0
- package/lib/file-drop/ui-file-drop.component.d.ts.map +1 -0
- package/lib/form/ui-field-array.component.d.ts +45 -0
- package/lib/form/ui-field-array.component.d.ts.map +1 -0
- package/lib/form/ui-field-error.component.d.ts +24 -0
- package/lib/form/ui-field-error.component.d.ts.map +1 -0
- package/lib/form/ui-fieldset.component.d.ts +13 -0
- package/lib/form/ui-fieldset.component.d.ts.map +1 -0
- package/lib/form/ui-form-field.component.d.ts +57 -0
- package/lib/form/ui-form-field.component.d.ts.map +1 -0
- package/lib/form/ui-form-grid.directive.d.ts +15 -0
- package/lib/form/ui-form-grid.directive.d.ts.map +1 -0
- package/lib/form/ui-form.directives.d.ts +49 -0
- package/lib/form/ui-form.directives.d.ts.map +1 -0
- package/lib/form/ui-password-input.component.d.ts +29 -0
- package/lib/form/ui-password-input.component.d.ts.map +1 -0
- package/lib/form/ui-search-field.component.d.ts +43 -0
- package/lib/form/ui-search-field.component.d.ts.map +1 -0
- package/lib/form/ui-switch.component.d.ts +27 -0
- package/lib/form/ui-switch.component.d.ts.map +1 -0
- package/lib/form/ui-validation-messages.d.ts +14 -0
- package/lib/form/ui-validation-messages.d.ts.map +1 -0
- package/lib/icon/ui-icon.component.d.ts +10 -0
- package/lib/icon/ui-icon.component.d.ts.map +1 -0
- package/lib/icon/ui-icons.d.ts +54 -0
- package/lib/icon/ui-icons.d.ts.map +1 -0
- package/lib/menu/ui-menu.component.d.ts +33 -0
- package/lib/menu/ui-menu.component.d.ts.map +1 -0
- package/lib/modal/ui-modal.component.d.ts +93 -0
- package/lib/modal/ui-modal.component.d.ts.map +1 -0
- package/lib/page/ui-page-header.component.d.ts +9 -0
- package/lib/page/ui-page-header.component.d.ts.map +1 -0
- package/lib/select/ui-select.component.d.ts +58 -0
- package/lib/select/ui-select.component.d.ts.map +1 -0
- package/lib/select/ui-select.directives.d.ts +27 -0
- package/lib/select/ui-select.directives.d.ts.map +1 -0
- package/lib/shell/ui-nav.model.d.ts +14 -0
- package/lib/shell/ui-nav.model.d.ts.map +1 -0
- package/lib/shell/ui-shell.component.d.ts +22 -0
- package/lib/shell/ui-shell.component.d.ts.map +1 -0
- package/lib/shell/ui-sidebar-nav.component.d.ts +18 -0
- package/lib/shell/ui-sidebar-nav.component.d.ts.map +1 -0
- package/lib/stat/ui-stat.component.d.ts +12 -0
- package/lib/stat/ui-stat.component.d.ts.map +1 -0
- package/lib/table/ui-table.directives.d.ts +32 -0
- package/lib/table/ui-table.directives.d.ts.map +1 -0
- package/lib/tabs/ui-tabs.component.d.ts +16 -0
- package/lib/tabs/ui-tabs.component.d.ts.map +1 -0
- package/lib/text/ui-text.directives.d.ts +18 -0
- package/lib/text/ui-text.directives.d.ts.map +1 -0
- package/lib/theme/ui-theme.service.d.ts +13 -0
- package/lib/theme/ui-theme.service.d.ts.map +1 -0
- package/lib/toast/ui-toast.component.d.ts +33 -0
- package/lib/toast/ui-toast.component.d.ts.map +1 -0
- package/lib/toast/ui-toast.config.d.ts +4 -0
- package/lib/toast/ui-toast.config.d.ts.map +1 -0
- package/lib/tooltip/ui-tooltip.directive.d.ts +36 -0
- package/lib/tooltip/ui-tooltip.directive.d.ts.map +1 -0
- package/package.json +43 -0
- package/src/styles/base.css +207 -0
- package/src/styles/theme.css +211 -0
- package/styles.css +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalart-platform-ui.mjs","sources":["../../../../libs/ui/src/lib/actions/ui-sticky-actions.component.ts","../../../../libs/ui/src/lib/icon/ui-icon.component.ts","../../../../libs/ui/src/lib/alert/ui-alert.component.ts","../../../../libs/ui/src/lib/avatar/ui-avatar.component.ts","../../../../libs/ui/src/lib/badge/ui-badge.component.ts","../../../../libs/ui/src/lib/feedback/ui-feedback.components.ts","../../../../libs/ui/src/lib/button/ui-button.directive.ts","../../../../libs/ui/src/lib/card/ui-card.component.ts","../../../../libs/ui/src/lib/chip/ui-chip.component.ts","../../../../libs/ui/src/lib/copy/ui-copy-button.component.ts","../../../../libs/ui/src/lib/data-table/ui-data-table.labels.ts","../../../../libs/ui/src/lib/data-table/ui-data-table.component.ts","../../../../libs/ui/src/lib/description-list/ui-description-list.component.ts","../../../../libs/ui/src/lib/dialog/ui-dialog.component.ts","../../../../libs/ui/src/lib/file-drop/ui-file-drop.component.ts","../../../../libs/ui/src/lib/form/ui-field-array.component.ts","../../../../libs/ui/src/lib/form/ui-validation-messages.ts","../../../../libs/ui/src/lib/form/ui-field-error.component.ts","../../../../libs/ui/src/lib/form/ui-fieldset.component.ts","../../../../libs/ui/src/lib/form/ui-form-field.component.ts","../../../../libs/ui/src/lib/form/ui-form-grid.directive.ts","../../../../libs/ui/src/lib/form/ui-form.directives.ts","../../../../libs/ui/src/lib/form/ui-password-input.component.ts","../../../../libs/ui/src/lib/form/ui-search-field.component.ts","../../../../libs/ui/src/lib/form/ui-switch.component.ts","../../../../libs/ui/src/lib/icon/ui-icons.ts","../../../../libs/ui/src/lib/menu/ui-menu.component.ts","../../../../libs/ui/src/lib/modal/ui-modal.component.ts","../../../../libs/ui/src/lib/page/ui-page-header.component.ts","../../../../libs/ui/src/lib/select/ui-select.directives.ts","../../../../libs/ui/src/lib/select/ui-select.component.ts","../../../../libs/ui/src/lib/shell/ui-sidebar-nav.component.ts","../../../../libs/ui/src/lib/shell/ui-shell.component.ts","../../../../libs/ui/src/lib/stat/ui-stat.component.ts","../../../../libs/ui/src/lib/table/ui-table.directives.ts","../../../../libs/ui/src/lib/tabs/ui-tabs.component.ts","../../../../libs/ui/src/lib/text/ui-text.directives.ts","../../../../libs/ui/src/lib/theme/ui-theme.service.ts","../../../../libs/ui/src/lib/toast/ui-toast.component.ts","../../../../libs/ui/src/lib/toast/ui-toast.config.ts","../../../../libs/ui/src/lib/tooltip/ui-tooltip.directive.ts","../../../../libs/ui/src/globalart-platform-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type UiStickyActionsAlign = 'between' | 'end';\n\nconst BAR =\n 'flex flex-wrap items-center gap-x-4 gap-y-2 border-t border-line bg-surface px-5 py-3 shadow-overlay transition-[transform,opacity] duration-150 ease-out motion-reduce:transition-none';\n\n@Component({\n selector: 'ui-sticky-actions',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'sticky bottom-0 z-30 block',\n '[class.pointer-events-none]': '!visible',\n '[attr.inert]': 'visible ? null : \"\"',\n },\n template: `\n <div [class]=\"barClass\">\n <div class=\"min-w-0 text-base text-ink-muted\">\n <ng-content select=\"[stickyMessage]\"></ng-content>\n </div>\n <div class=\"flex flex-wrap items-center gap-2\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n})\nexport class UiStickyActionsComponent {\n @Input() align: UiStickyActionsAlign = 'between';\n @Input() visible = true;\n\n get barClass(): string {\n const justify = this.align === 'end' ? 'justify-end' : 'justify-between';\n const state = this.visible\n ? 'translate-y-0 opacity-100'\n : 'translate-y-full opacity-0';\n\n return `${BAR} ${justify} ${state}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LucideAngularModule } from 'lucide-angular';\nimport type { UiIconName } from './ui-icons';\n\n@Component({\n selector: 'ui-icon',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex shrink-0 items-center justify-center' },\n template: `\n <lucide-icon\n [name]=\"name\"\n [size]=\"size\"\n [strokeWidth]=\"strokeWidth\"\n class=\"block\"></lucide-icon>\n `,\n})\nexport class UiIconComponent {\n @Input({ required: true }) name!: UiIconName;\n @Input() size = 16;\n @Input() strokeWidth = 1.75;\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\n\nexport type UiAlertTone = 'info' | 'ok' | 'warn' | 'danger';\n\nconst HOST_BASE = 'flex w-full items-start gap-3 text-base';\n\nconst SURFACES: Record<UiAlertTone, string> = {\n info: 'border-info/25 bg-info-soft',\n ok: 'border-ok/25 bg-ok-soft',\n warn: 'border-warn/25 bg-warn-soft',\n danger: 'border-danger/25 bg-danger-soft',\n};\n\nconst ICONS: Record<UiAlertTone, UiIconName> = {\n info: 'info',\n ok: 'check-circle-2',\n warn: 'triangle-alert',\n danger: 'circle-alert',\n};\n\nconst ICON_TONES: Record<UiAlertTone, string> = {\n info: 'text-info',\n ok: 'text-ok',\n warn: 'text-warn',\n danger: 'text-danger',\n};\n\nconst HEADING_TONES: Record<UiAlertTone, string> = {\n info: 'text-info-ink',\n ok: 'text-ok-ink',\n warn: 'text-warn-ink',\n danger: 'text-danger-ink',\n};\n\n@Component({\n selector: 'ui-alert',\n standalone: true,\n imports: [NgIf, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClass',\n '[attr.role]': 'role',\n },\n template: `\n <ui-icon [name]=\"iconName\" [size]=\"16\" [class]=\"iconClass\"></ui-icon>\n\n <div class=\"flex min-w-0 flex-1 flex-col\">\n <p *ngIf=\"heading\" [class]=\"headingClass\">{{ heading }}</p>\n <div class=\"text-ink\">\n <ng-content></ng-content>\n </div>\n <div class=\"mt-2 flex flex-wrap items-center gap-2 empty:hidden\">\n <ng-content select=\"[alertActions]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"dismissible\"\n type=\"button\"\n class=\"-mr-1 flex size-6 shrink-0 items-center justify-center rounded-control text-ink-muted opacity-80 transition-colors duration-100 hover:bg-ink/5 hover:text-ink hover:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal\"\n [attr.aria-label]=\"dismissLabel || null\"\n (click)=\"dismissed.emit()\"\n >\n <ui-icon name=\"x\" [size]=\"14\"></ui-icon>\n </button>\n `,\n})\nexport class UiAlertComponent {\n @Input() tone: UiAlertTone = 'info';\n @Input() heading = '';\n @Input() icon?: UiIconName;\n @Input() subtle = false;\n @Input() dismissible = false;\n @Input() dismissLabel = '';\n\n @Output() readonly dismissed = new EventEmitter<void>();\n\n get role(): string {\n return this.tone === 'warn' || this.tone === 'danger' ? 'alert' : 'status';\n }\n\n get iconName(): UiIconName {\n return this.icon ?? ICONS[this.tone];\n }\n\n get hostClass(): string {\n return this.subtle\n ? HOST_BASE\n : `${HOST_BASE} rounded-panel border p-3 ${SURFACES[this.tone]}`;\n }\n\n get iconClass(): string {\n return `mt-0.5 ${ICON_TONES[this.tone]}`;\n }\n\n get headingClass(): string {\n return `mb-0.5 font-medium ${HEADING_TONES[this.tone]}`;\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nexport type UiAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst SIZE_PX: Record<UiAvatarSize, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 64,\n xl: 80,\n};\n\nconst SIZES: Record<UiAvatarSize, string> = {\n xs: 'size-6 text-xs',\n sm: 'size-8 text-sm',\n md: 'size-10 text-base',\n lg: 'size-16 text-2xl',\n xl: 'size-20 text-3xl',\n};\n\nfunction resolveSource(source: string, pixelSize: number): string {\n if (!source) {\n return '';\n }\n\n try {\n const url = new URL(source);\n url.searchParams.set('s', String(pixelSize));\n return url.toString();\n } catch {\n return source;\n }\n}\n\nfunction toInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) {\n return '';\n }\n\n const first = Array.from(parts[0])[0] ?? '';\n const last =\n parts.length > 1 ? Array.from(parts[parts.length - 1])[0] ?? '' : '';\n\n return (first + last).toUpperCase();\n}\n\n@Component({\n selector: 'ui-avatar',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]':\n '\"inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-signal-soft font-medium text-signal-ink \" + sizeClass',\n },\n template: `\n <img\n *ngIf=\"showImage\"\n class=\"size-full object-cover\"\n [src]=\"resolvedSrc\"\n [alt]=\"name\"\n (error)=\"onImageError()\"\n />\n <span\n *ngIf=\"!showImage\"\n [attr.role]=\"name ? 'img' : null\"\n [attr.aria-label]=\"name || null\"\n >{{ initials }}</span\n >\n `,\n})\nexport class UiAvatarComponent implements OnChanges {\n @Input() src = '';\n @Input() name = '';\n @Input() size: UiAvatarSize = 'md';\n\n resolvedSrc = '';\n initials = '';\n\n private failed = false;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['src'] || changes['size']) {\n this.failed = false;\n this.resolvedSrc = resolveSource(this.src, this.pixelSize);\n }\n\n if (changes['name']) {\n this.initials = toInitials(this.name);\n }\n }\n\n get pixelSize(): number {\n return SIZE_PX[this.size] * 2;\n }\n\n get sizeClass(): string {\n return SIZES[this.size];\n }\n\n get showImage(): boolean {\n return !!this.resolvedSrc && !this.failed;\n }\n\n onImageError(): void {\n this.failed = true;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type UiBadgeTone =\n | 'neutral'\n | 'ok'\n | 'warn'\n | 'danger'\n | 'info'\n | 'signal';\n\nconst TONES: Record<UiBadgeTone, string> = {\n neutral: 'bg-ground-sunken text-ink-muted',\n ok: 'bg-ok-soft text-ok-ink',\n warn: 'bg-warn-soft text-warn-ink',\n danger: 'bg-danger-soft text-danger-ink',\n info: 'bg-info-soft text-info-ink',\n signal: 'bg-signal-soft text-signal-ink',\n};\n\nconst DOTS: Record<UiBadgeTone, string> = {\n neutral: 'bg-ink-faint',\n ok: 'bg-ok',\n warn: 'bg-warn',\n danger: 'bg-danger',\n info: 'bg-info',\n signal: 'bg-signal',\n};\n\n@Component({\n selector: 'ui-badge',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]':\n '\"inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-sm \" + toneClass',\n },\n template: `\n <span *ngIf=\"dot\" class=\"size-1.5 rounded-full\" [class]=\"dotClass\"></span>\n <ng-content></ng-content>\n `,\n})\nexport class UiBadgeComponent {\n @Input() tone: UiBadgeTone = 'neutral';\n @Input() dot = false;\n\n get toneClass(): string {\n return TONES[this.tone];\n }\n\n get dotClass(): string {\n return DOTS[this.tone];\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\n\nexport type UiFeedbackTone = 'neutral' | 'danger' | 'warn';\nexport type UiLoadingStateSize = 'sm' | 'md' | 'lg';\n\nconst MEDALLION_BASE =\n 'flex size-12 shrink-0 items-center justify-center rounded-panel border';\n\nconst MEDALLIONS: Record<UiFeedbackTone, string> = {\n neutral: 'border-line bg-ground-sunken text-ink-faint',\n danger: 'border-danger/25 bg-danger-soft text-danger',\n warn: 'border-warn/25 bg-warn-soft text-warn',\n};\n\nconst LOADING_PADDINGS: Record<UiLoadingStateSize, string> = {\n sm: 'py-8',\n md: 'py-12',\n lg: 'py-16',\n};\n\nconst LOADING_SPINNERS: Record<UiLoadingStateSize, number> = {\n sm: 16,\n md: 20,\n lg: 28,\n};\n\n@Component({\n selector: 'ui-skeleton',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block animate-pulse rounded bg-ground-sunken',\n '[style.width]': 'width',\n '[style.height]': 'height',\n },\n template: '',\n})\nexport class UiSkeletonComponent {\n @Input() width = '100%';\n @Input() height = '1rem';\n}\n\n@Component({\n selector: 'ui-spinner',\n standalone: true,\n imports: [UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex text-ink-muted' },\n template: `<ui-icon\n name=\"loader-2\"\n [size]=\"size\"\n class=\"animate-spin\"></ui-icon>`,\n})\nexport class UiSpinnerComponent {\n @Input() size = 16;\n}\n\n@Component({\n selector: 'ui-loading-state',\n standalone: true,\n imports: [NgIf, UiSpinnerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'status',\n '[class]':\n '\"flex flex-col items-center justify-center gap-3 px-6 text-center \" + paddingClass',\n },\n template: `\n <ui-spinner [size]=\"spinnerSize\"></ui-spinner>\n <p *ngIf=\"caption\" class=\"max-w-sm text-base text-ink-muted\">\n {{ caption }}\n </p>\n `,\n})\nexport class UiLoadingStateComponent {\n @Input() size: UiLoadingStateSize = 'md';\n @Input() caption?: string;\n\n get paddingClass(): string {\n return LOADING_PADDINGS[this.size];\n }\n\n get spinnerSize(): number {\n return LOADING_SPINNERS[this.size];\n }\n}\n\n@Component({\n selector: 'ui-empty-state',\n standalone: true,\n imports: [NgIf, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'flex flex-col items-center justify-center gap-2 px-6 py-14 text-center',\n },\n template: `\n <div [class]=\"medallionClass\">\n <ui-icon [name]=\"icon\" [size]=\"22\"></ui-icon>\n </div>\n <p class=\"text-lg text-ink\">{{ heading }}</p>\n <p *ngIf=\"description\" class=\"max-w-sm text-base text-ink-muted\">\n {{ description }}\n </p>\n <div class=\"mt-3 flex items-center gap-2\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class UiEmptyStateComponent {\n @Input({ required: true }) heading!: string;\n @Input() description?: string;\n @Input() icon: UiIconName = 'file-text';\n @Input() tone: UiFeedbackTone = 'neutral';\n\n get medallionClass(): string {\n return `mb-1 ${MEDALLION_BASE} ${MEDALLIONS[this.tone]}`;\n }\n}\n\n@Component({\n selector: 'ui-status-panel',\n standalone: true,\n imports: [NgIf, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'flex min-h-dvh w-full flex-col items-center justify-center gap-3 bg-ground px-4 py-16 text-center',\n },\n template: `\n <div [class]=\"medallionClass\">\n <ui-icon [name]=\"icon\" [size]=\"22\"></ui-icon>\n </div>\n <h1 class=\"text-2xl text-ink\">{{ heading }}</h1>\n <p *ngIf=\"description\" class=\"max-w-md text-base text-ink-muted\">\n {{ description }}\n </p>\n <div class=\"mt-3 flex items-center gap-2\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class UiStatusPanelComponent {\n @Input({ required: true }) heading!: string;\n @Input() description?: string;\n @Input() icon: UiIconName = 'triangle-alert';\n @Input() tone: UiFeedbackTone = 'danger';\n\n get medallionClass(): string {\n return `${MEDALLION_BASE} ${MEDALLIONS[this.tone]}`;\n }\n}\n","import {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { UiSpinnerComponent } from '../feedback/ui-feedback.components';\n\nexport type UiButtonVariant =\n | 'primary'\n | 'tonal'\n | 'secondary'\n | 'text'\n | 'ghost'\n | 'ghost-danger'\n | 'danger';\nexport type UiButtonSize = 'sm' | 'md' | 'icon' | 'icon-sm';\n\nconst BASE =\n 'inline-flex items-center justify-center gap-2 rounded-control font-medium whitespace-nowrap transition-colors duration-100 disabled:pointer-events-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal';\n\nconst DISABLED = 'pointer-events-none opacity-40';\n\nconst BUSY = 'pointer-events-none [&>*:not([data-ui-busy])]:hidden';\n\nconst VARIANTS: Record<UiButtonVariant, string> = {\n primary:\n 'bg-signal text-ink-inverse hover:bg-signal-hover active:bg-signal-hover',\n tonal: 'bg-signal-soft text-signal-ink hover:bg-signal-soft/70',\n secondary:\n 'border border-line bg-surface text-signal hover:bg-signal-soft active:bg-signal-soft',\n text: 'text-signal hover:bg-signal-soft',\n ghost: 'text-ink-muted hover:bg-surface-hover hover:text-ink',\n 'ghost-danger':\n 'text-ink-muted hover:bg-danger-soft hover:text-danger active:bg-danger-soft',\n danger:\n 'border border-line bg-surface text-danger hover:bg-danger-soft active:bg-danger-soft',\n};\n\nconst SIZES: Record<UiButtonSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-9 px-4 text-base',\n icon: 'h-9 w-9',\n 'icon-sm': 'h-8 w-8',\n};\n\nconst SPINNER_SIZES: Record<UiButtonSize, number> = {\n sm: 14,\n md: 16,\n icon: 16,\n 'icon-sm': 14,\n};\n\nconst LOADING_LABEL_SIZES: Record<UiButtonSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n icon: 'text-base',\n 'icon-sm': 'text-sm',\n};\n\nconst BUSY_NODE = 'data-ui-busy';\n\n@Directive({\n selector: 'button[uiButton], a[uiButton]',\n standalone: true,\n})\nexport class UiButtonDirective implements OnChanges, OnDestroy {\n @Input() variant: UiButtonVariant = 'secondary';\n @Input() size: UiButtonSize = 'md';\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input() loadingLabel?: string;\n\n private readonly hostRef: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly isNativeButton =\n this.hostRef.nativeElement.tagName.toLowerCase() === 'button';\n\n private spinner: ComponentRef<UiSpinnerComponent> | null = null;\n private labelNode: HTMLElement | null = null;\n private previousAriaLabel: string | null = null;\n private ownsAriaLabel = false;\n\n @HostBinding('class')\n get classes(): string {\n return [BASE, VARIANTS[this.variant], SIZES[this.size], this.stateClass]\n .filter((token) => token.length > 0)\n .join(' ');\n }\n\n @HostBinding('attr.disabled')\n get disabledAttribute(): string | null {\n return this.isNativeButton && this.isInactive ? '' : null;\n }\n\n @HostBinding('attr.aria-disabled')\n get ariaDisabled(): string | null {\n return !this.isNativeButton && this.isInactive ? 'true' : null;\n }\n\n @HostBinding('attr.aria-busy')\n get ariaBusy(): string | null {\n return this.loading ? 'true' : null;\n }\n\n ngOnChanges(): void {\n this.renderBusyState();\n }\n\n ngOnDestroy(): void {\n this.clearBusyState();\n }\n\n private get isInactive(): boolean {\n return this.disabled || this.loading;\n }\n\n private get stateClass(): string {\n if (this.loading) {\n return BUSY;\n }\n\n return this.disabled ? DISABLED : '';\n }\n\n private renderBusyState(): void {\n if (!this.loading) {\n this.clearBusyState();\n return;\n }\n\n const spinner = this.mountSpinner();\n\n if (this.loadingLabel) {\n this.mountLabel(this.loadingLabel, spinner);\n } else {\n this.clearLabel();\n }\n }\n\n private mountSpinner(): HTMLElement {\n const host = this.hostRef.nativeElement;\n let spinner = this.spinner;\n\n if (!spinner) {\n spinner = this.viewContainer.createComponent(UiSpinnerComponent);\n this.spinner = spinner;\n const element = spinner.location.nativeElement as HTMLElement;\n this.renderer.setAttribute(element, BUSY_NODE, '');\n this.renderer.insertBefore(host, element, host.firstChild);\n }\n\n spinner.setInput('size', SPINNER_SIZES[this.size]);\n\n return spinner.location.nativeElement as HTMLElement;\n }\n\n private mountLabel(text: string, spinner: HTMLElement): void {\n const host = this.hostRef.nativeElement;\n\n if (!this.labelNode) {\n const node: HTMLElement = this.renderer.createElement('span');\n this.renderer.setAttribute(node, BUSY_NODE, '');\n this.renderer.insertBefore(host, node, spinner.nextSibling);\n this.labelNode = node;\n }\n\n this.renderer.setAttribute(\n this.labelNode,\n 'class',\n LOADING_LABEL_SIZES[this.size]\n );\n this.renderer.setProperty(this.labelNode, 'textContent', text);\n this.renderer.setStyle(host, 'font-size', '0');\n\n if (!this.ownsAriaLabel) {\n this.previousAriaLabel = host.getAttribute('aria-label');\n this.ownsAriaLabel = true;\n }\n\n this.renderer.setAttribute(host, 'aria-label', text);\n }\n\n private clearBusyState(): void {\n if (this.spinner) {\n this.spinner.destroy();\n this.spinner = null;\n }\n\n this.clearLabel();\n }\n\n private clearLabel(): void {\n const host = this.hostRef.nativeElement;\n\n if (this.labelNode) {\n this.renderer.removeChild(host, this.labelNode);\n this.labelNode = null;\n }\n\n this.renderer.removeStyle(host, 'font-size');\n\n if (!this.ownsAriaLabel) {\n return;\n }\n\n if (this.previousAriaLabel === null) {\n this.renderer.removeAttribute(host, 'aria-label');\n } else {\n this.renderer.setAttribute(host, 'aria-label', this.previousAriaLabel);\n }\n\n this.ownsAriaLabel = false;\n this.previousAriaLabel = null;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'ui-card',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'flex flex-col overflow-hidden rounded-panel border border-line bg-surface',\n },\n template: `\n <header\n *ngIf=\"heading || eyebrow\"\n class=\"flex min-h-14 items-center justify-between gap-4 border-b border-line px-5 py-3\">\n <div class=\"flex flex-col gap-0.5\">\n <span\n *ngIf=\"eyebrow\"\n class=\"text-eyebrow uppercase text-ink-faint\"\n >{{ eyebrow }}</span\n >\n <h2 *ngIf=\"heading\" class=\"text-lg font-medium text-ink\">{{ heading }}</h2>\n </div>\n <ng-content select=\"[cardActions]\"></ng-content>\n </header>\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class UiCardComponent {\n @Input() heading?: string;\n @Input() eyebrow?: string;\n @Input() padded = true;\n\n get bodyClass(): string {\n return this.padded ? 'flex-1 p-5' : 'flex-1';\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\n\nconst HOST_BASE =\n 'inline-flex h-8 max-w-full items-center rounded-full border transition-colors duration-100';\n\nconst CONTENT_BASE =\n 'flex h-full min-w-0 items-center gap-1.5 rounded-full text-base transition-colors duration-100 disabled:pointer-events-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal';\n\nconst REMOVE_BASE =\n 'mr-1 flex size-6 shrink-0 items-center justify-center rounded-full opacity-70 transition-colors duration-100 hover:bg-ink/5 hover:opacity-100 disabled:pointer-events-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal';\n\n@Directive({\n selector: '[uiChipRow]',\n standalone: true,\n host: {\n class: 'flex flex-wrap items-center gap-2',\n role: 'group',\n '[attr.aria-label]': 'label || null',\n },\n})\nexport class UiChipRowDirective {\n @Input() label = '';\n}\n\n@Component({\n selector: 'ui-chip',\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClass' },\n template: `\n <button\n *ngIf=\"selectable; else plain\"\n type=\"button\"\n [class]=\"contentClass\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"selected\"\n (click)=\"toggle()\"\n >\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </button>\n\n <ng-template #plain>\n <span [class]=\"contentClass\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </span>\n </ng-template>\n\n <ng-template #body>\n <ui-icon *ngIf=\"icon\" [name]=\"icon\" [size]=\"14\"></ui-icon>\n <span class=\"truncate\">{{ label }}</span>\n <span\n *ngIf=\"count !== undefined && count !== null\"\n [class]=\"countClass\"\n >{{ count }}</span\n >\n </ng-template>\n\n <button\n *ngIf=\"removable\"\n type=\"button\"\n [class]=\"removeClass\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"removeLabel || null\"\n (click)=\"emitRemove($event)\"\n >\n <ui-icon name=\"x\" [size]=\"14\"></ui-icon>\n </button>\n `,\n})\nexport class UiChipComponent {\n @Input() label = '';\n @Input() icon?: UiIconName;\n @Input() count?: number | string;\n @Input() selected = false;\n @Input() selectable = true;\n @Input() disabled = false;\n @Input() removable = false;\n @Input() removeLabel = '';\n\n @Output() readonly selectedChange = new EventEmitter<boolean>();\n @Output() readonly removed = new EventEmitter<void>();\n\n get hostClass(): string {\n const tone = this.selected\n ? 'border-transparent bg-signal-soft text-signal-ink'\n : 'border-line bg-surface text-ink';\n const hover =\n this.selectable && !this.disabled && !this.selected\n ? ' hover:bg-surface-hover'\n : '';\n const state = this.disabled ? ' opacity-40' : '';\n return `${HOST_BASE} ${tone}${hover}${state}`;\n }\n\n get contentClass(): string {\n const left = this.icon ? 'pl-2.5' : 'pl-3';\n const right = this.removable ? 'pr-1' : 'pr-3';\n return `${CONTENT_BASE} ${left} ${right}`;\n }\n\n get removeClass(): string {\n return REMOVE_BASE;\n }\n\n get countClass(): string {\n const tone = this.selected ? 'text-signal-ink/70' : 'text-ink-muted';\n return `tabular shrink-0 text-sm ${tone}`;\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n this.selectedChange.emit(!this.selected);\n }\n\n emitRemove(event: Event): void {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.removed.emit();\n }\n}\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n inject,\n} from '@angular/core';\nimport {\n UiButtonDirective,\n type UiButtonSize,\n type UiButtonVariant,\n} from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type UiCopyButtonSize = 'sm' | 'md';\n\nconst COPIED_DURATION = 2000;\n\n@Component({\n selector: 'ui-copy-button',\n standalone: true,\n imports: [NgIf, UiButtonDirective, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex' },\n template: `\n <button\n uiButton\n type=\"button\"\n [variant]=\"variant\"\n [size]=\"buttonSize\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"label ? null : ariaLabel || null\"\n (click)=\"copy()\">\n <ui-icon [name]=\"isCopied ? 'check' : 'copy'\" [size]=\"iconSize\"></ui-icon>\n <span *ngIf=\"label\">{{\n isCopied && copiedLabel ? copiedLabel : label\n }}</span>\n </button>\n `,\n})\nexport class UiCopyButtonComponent implements OnDestroy {\n @Input({ required: true }) value = '';\n @Input() label = '';\n @Input() copiedLabel = '';\n @Input('aria-label') ariaLabel = '';\n @Input() variant: UiButtonVariant = 'secondary';\n @Input() size: UiCopyButtonSize = 'md';\n @Input() disabled = false;\n\n @Output() readonly copied = new EventEmitter<string>();\n @Output() readonly failed = new EventEmitter<void>();\n\n protected isCopied = false;\n\n private readonly document = inject(DOCUMENT);\n private readonly cdr = inject(ChangeDetectorRef);\n private timer: ReturnType<typeof setTimeout> | null = null;\n\n protected get buttonSize(): UiButtonSize {\n if (this.label) {\n return this.size;\n }\n return this.size === 'sm' ? 'icon-sm' : 'icon';\n }\n\n protected get iconSize(): number {\n return this.size === 'sm' ? 14 : 15;\n }\n\n async copy(): Promise<void> {\n if (this.disabled) {\n return;\n }\n\n const value = this.value ?? '';\n if (!value) {\n this.failed.emit();\n return;\n }\n\n const written = await this.write(value);\n if (!written) {\n this.failed.emit();\n return;\n }\n\n this.isCopied = true;\n this.cdr.markForCheck();\n this.copied.emit(value);\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.isCopied = false;\n this.timer = null;\n this.cdr.markForCheck();\n }, COPIED_DURATION);\n }\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n private clearTimer(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n private async write(value: string): Promise<boolean> {\n const clipboard = this.document.defaultView?.navigator?.clipboard;\n if (clipboard?.writeText) {\n try {\n await clipboard.writeText(value);\n return true;\n } catch {\n return this.writeWithCommand(value);\n }\n }\n return this.writeWithCommand(value);\n }\n\n private writeWithCommand(value: string): boolean {\n const body = this.document.body;\n if (!body) {\n return false;\n }\n\n const area = this.document.createElement('textarea');\n area.value = value;\n area.setAttribute('readonly', '');\n area.style.position = 'fixed';\n area.style.top = '0';\n area.style.left = '-9999px';\n body.appendChild(area);\n\n const selection = this.document.getSelection();\n const previous =\n selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;\n\n let copied = false;\n try {\n area.select();\n area.setSelectionRange(0, value.length);\n copied = this.document.execCommand('copy');\n } catch {\n copied = false;\n }\n\n area.remove();\n\n if (selection && previous) {\n selection.removeAllRanges();\n selection.addRange(previous);\n }\n\n return copied;\n }\n}\n","import { InjectionToken, type Provider } from '@angular/core';\n\nexport interface UiDataTableLabels {\n searchPlaceholder: string;\n emptyHeading: string;\n emptyDescription?: string;\n emptySearchHeading: string;\n emptySearchDescription?: string;\n previousPageLabel: string;\n nextPageLabel: string;\n pageSizeLabel: string;\n}\n\nexport const UI_DATA_TABLE_DEFAULT_LABELS: UiDataTableLabels = {\n searchPlaceholder: '',\n emptyHeading: '',\n emptySearchHeading: '',\n previousPageLabel: '',\n nextPageLabel: '',\n pageSizeLabel: '',\n};\n\nexport const UI_DATA_TABLE_LABELS = new InjectionToken<UiDataTableLabels>(\n 'UI_DATA_TABLE_LABELS',\n { providedIn: 'root', factory: () => UI_DATA_TABLE_DEFAULT_LABELS }\n);\n\nexport const provideUiDataTableLabels = (\n labels: Partial<UiDataTableLabels>\n): Provider => ({\n provide: UI_DATA_TABLE_LABELS,\n useValue: { ...UI_DATA_TABLE_DEFAULT_LABELS, ...labels },\n});\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport { Observable, Subject, Subscription, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiEmptyStateComponent } from '../feedback/ui-feedback.components';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\nimport { UI_DATA_TABLE_LABELS } from './ui-data-table.labels';\n\nexport type UiSortDirection = 'asc' | 'desc';\n\nexport interface UiTableSort {\n key: string;\n direction: UiSortDirection;\n}\n\nexport interface UiColumn {\n title: string;\n align?: 'left' | 'right' | 'center';\n width?: string;\n sortable?: boolean;\n sortKey?: string;\n}\n\nexport interface UiTableQuery {\n offset: number;\n limit: number;\n search: string;\n sort: UiTableSort | null;\n}\n\nexport interface UiTablePage<T> {\n data: T[];\n total: number;\n}\n\nexport type UiTableFetch<T> = (\n query: UiTableQuery\n) => Observable<UiTablePage<T>>;\n\nexport interface UiTablePageItem {\n key: string;\n page: number;\n gap: boolean;\n}\n\nconst ALIGNMENTS: Record<\n NonNullable<UiColumn['align']>,\n { header: string; control: string }\n> = {\n left: { header: 'text-left', control: 'justify-start' },\n center: { header: 'text-center', control: 'justify-center' },\n right: { header: 'text-right', control: 'justify-end' },\n};\n\nconst SORT_ICONS: Record<UiSortDirection, UiIconName> = {\n asc: 'chevron-up',\n desc: 'chevron-down',\n};\n\nconst ARIA_SORT: Record<UiSortDirection, string> = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst compareValues = (a: unknown, b: unknown): number => {\n const emptyA = a === null || a === undefined || a === '';\n const emptyB = b === null || b === undefined || b === '';\n if (emptyA || emptyB) {\n return emptyA && emptyB ? 0 : emptyA ? -1 : 1;\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n }\n if (typeof a === 'boolean' && typeof b === 'boolean') {\n return a === b ? 0 : a ? 1 : -1;\n }\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() - b.getTime();\n }\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n};\n\n@Component({\n selector: 'ui-data-table',\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n NgTemplateOutlet,\n UiIconComponent,\n UiButtonDirective,\n UiEmptyStateComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'flex flex-col overflow-hidden rounded-panel border border-line bg-surface',\n },\n template: `\n <header\n *ngIf=\"searchable || heading\"\n class=\"flex min-h-14 flex-wrap items-center justify-between gap-3 border-b border-line px-4 py-3\">\n <div class=\"flex flex-col gap-0.5\">\n <span\n *ngIf=\"eyebrow\"\n class=\"text-eyebrow uppercase text-ink-faint\"\n >{{ eyebrow }}</span\n >\n <h2 *ngIf=\"heading\" class=\"text-lg text-ink\">{{ heading }}</h2>\n </div>\n\n <div class=\"flex items-center gap-2\">\n <div *ngIf=\"searchable\" class=\"relative\">\n <ui-icon\n name=\"search\"\n [size]=\"15\"\n class=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-ink-faint\"></ui-icon>\n <input\n type=\"search\"\n [placeholder]=\"searchPlaceholderText\"\n [value]=\"search\"\n (input)=\"onSearch($any($event.target).value)\"\n class=\"h-9 w-full rounded-control border border-line bg-surface pl-9 pr-3 text-base text-ink placeholder:text-ink-faint hover:border-line-strong focus:border-signal focus:shadow-[inset_0_0_0_1px_var(--ds-signal)] focus:outline-none sm:w-64\" />\n </div>\n <ng-content select=\"[tableActions]\"></ng-content>\n </div>\n </header>\n\n <div class=\"relative w-full overflow-x-auto\">\n <div\n *ngIf=\"loading\"\n role=\"status\"\n class=\"absolute inset-0 z-10 flex items-start justify-center bg-surface/65 pt-16\">\n <ui-icon\n name=\"loader-2\"\n [size]=\"20\"\n class=\"animate-spin text-ink-muted\"></ui-icon>\n </div>\n\n <table *ngIf=\"visibleRows.length\" class=\"w-full border-collapse text-base\">\n <thead>\n <tr>\n <th\n *ngFor=\"let column of columns\"\n [style.width]=\"column.width\"\n [class]=\"headerClass(column)\"\n [attr.aria-sort]=\"ariaSort(column)\">\n <button\n *ngIf=\"isSortable(column); else plainTitle\"\n type=\"button\"\n [class]=\"sortControlClass(column)\"\n (click)=\"toggleSort(column)\">\n <span>{{ column.title }}</span>\n <ui-icon\n [name]=\"sortIcon(column)\"\n [size]=\"14\"\n [class]=\"sortIconClass(column)\"></ui-icon>\n </button>\n <ng-template #plainTitle>{{ column.title }}</ng-template>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let row of visibleRows; let index = index\"\n class=\"transition-colors duration-75 hover:bg-surface-hover\">\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: row, index: index }\n \"></ng-container>\n </tr>\n </tbody>\n </table>\n </div>\n\n <ui-empty-state\n *ngIf=\"!visibleRows.length && !loading\"\n [icon]=\"emptyIcon\"\n [heading]=\"emptyStateHeading\"\n [description]=\"emptyStateDescription\">\n <ng-content select=\"[tableEmptyActions]\"></ng-content>\n </ui-empty-state>\n\n <footer\n *ngIf=\"showFooter\"\n class=\"flex flex-wrap items-center justify-between gap-3 border-t border-line px-4 py-3\">\n <div class=\"flex items-center gap-3\">\n <span class=\"tabular text-sm text-ink-muted\">\n {{ rangeStart }}–{{ rangeEnd }} / {{ total }}\n </span>\n <select\n *ngIf=\"showPageSizeControl\"\n [attr.aria-label]=\"pageSizeLabelText || null\"\n (change)=\"onPageSizeChange($any($event.target).value)\"\n class=\"h-8 rounded-control border border-line bg-surface px-2 text-sm text-ink hover:border-line-strong focus:border-signal focus:outline-none\">\n <option\n *ngFor=\"let option of pageSizeOptions\"\n [value]=\"option\"\n [selected]=\"option === pageSize\">\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"flex items-center gap-1.5\">\n <button\n uiButton\n variant=\"secondary\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-label]=\"previousPageLabelText || null\"\n [disabled]=\"page === 0\"\n (click)=\"goTo(page - 1)\">\n <ui-icon name=\"chevron-left\" [size]=\"15\"></ui-icon>\n </button>\n\n <ng-container *ngIf=\"showNumberedPages; else pageStatus\">\n <ng-container *ngFor=\"let item of pageItems; trackBy: trackPageItem\">\n <span *ngIf=\"item.gap\" class=\"px-1 text-sm text-ink-faint\">…</span>\n <button\n *ngIf=\"!item.gap\"\n uiButton\n [variant]=\"item.page === page ? 'tonal' : 'ghost'\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-current]=\"item.page === page ? 'page' : null\"\n (click)=\"goTo(item.page)\">\n {{ item.page + 1 }}\n </button>\n </ng-container>\n </ng-container>\n <ng-template #pageStatus>\n <span class=\"tabular px-2 text-sm text-ink-muted\">\n {{ page + 1 }} / {{ pageCount }}\n </span>\n </ng-template>\n\n <button\n uiButton\n variant=\"secondary\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-label]=\"nextPageLabelText || null\"\n [disabled]=\"page >= pageCount - 1\"\n (click)=\"goTo(page + 1)\">\n <ui-icon name=\"chevron-right\" [size]=\"15\"></ui-icon>\n </button>\n </div>\n </footer>\n `,\n})\nexport class UiDataTableComponent<T = unknown>\n implements OnInit, OnChanges, OnDestroy\n{\n @Input({ required: true }) columns: UiColumn[] = [];\n @Input({ required: true }) rowTemplate!: TemplateRef<unknown>;\n\n @Input() fetch?: UiTableFetch<T>;\n @Input() rows?: T[] | null;\n @Input() rowSearch?: (row: T, search: string) => boolean;\n @Input() rowSortValue?: (row: T, key: string) => unknown;\n\n @Input() heading?: string;\n @Input() eyebrow?: string;\n @Input() pageSize = 10;\n @Input() pageSizeOptions: number[] = [];\n @Input() showPageNumbers = false;\n @Input() sort: UiTableSort | null = null;\n @Input() searchable = true;\n @Input() searchPlaceholder = '';\n @Input() emptyIcon: UiIconName = 'file-text';\n @Input() emptyHeading = '';\n @Input() emptyDescription?: string;\n @Input() emptySearchHeading = '';\n @Input() emptySearchDescription?: string;\n @Input() previousPageLabel = '';\n @Input() nextPageLabel = '';\n @Input() pageSizeLabel = '';\n @Input() reload?: EventEmitter<unknown>;\n\n @Output() readonly sortChange = new EventEmitter<UiTableSort | null>();\n @Output() readonly pageSizeChange = new EventEmitter<number>();\n\n visibleRows: T[] = [];\n pageItems: UiTablePageItem[] = [];\n total = 0;\n page = 0;\n search = '';\n loading = true;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly labels = inject(UI_DATA_TABLE_LABELS);\n private readonly searchInput = new Subject<string>();\n private readonly subscriptions: Subscription[] = [];\n private request?: Subscription;\n\n ngOnInit(): void {\n this.assertSource();\n this.assertColumns();\n\n this.subscriptions.push(\n this.searchInput\n .pipe(debounceTime(300), distinctUntilChanged())\n .subscribe((value) => {\n this.search = value;\n this.page = 0;\n this.load();\n })\n );\n\n if (this.reload) {\n this.subscriptions.push(this.reload.subscribe(() => this.load()));\n }\n\n this.load();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns']) {\n this.assertColumns();\n }\n\n const reloads = ['rows', 'pageSize', 'sort'].some(\n (input) => changes[input] && !changes[input].firstChange\n );\n\n if (reloads) {\n this.page = 0;\n this.load();\n }\n }\n\n ngOnDestroy(): void {\n this.request?.unsubscribe();\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n get pageCount(): number {\n return Math.max(1, Math.ceil(this.total / this.pageSize));\n }\n\n get rangeStart(): number {\n return this.total === 0 ? 0 : this.page * this.pageSize + 1;\n }\n\n get rangeEnd(): number {\n return Math.min(this.total, (this.page + 1) * this.pageSize);\n }\n\n get showPageSizeControl(): boolean {\n return this.pageSizeOptions.length > 1;\n }\n\n get showNumberedPages(): boolean {\n return this.showPageNumbers && this.pageCount > 1;\n }\n\n get showFooter(): boolean {\n return this.total > this.pageSize || this.showPageSizeControl;\n }\n\n get searchPlaceholderText(): string {\n return this.searchPlaceholder || this.labels.searchPlaceholder;\n }\n\n get previousPageLabelText(): string {\n return this.previousPageLabel || this.labels.previousPageLabel;\n }\n\n get nextPageLabelText(): string {\n return this.nextPageLabel || this.labels.nextPageLabel;\n }\n\n get pageSizeLabelText(): string {\n return this.pageSizeLabel || this.labels.pageSizeLabel;\n }\n\n get emptyStateHeading(): string {\n const empty = this.emptyHeading || this.labels.emptyHeading;\n if (!this.search) {\n return empty;\n }\n return this.emptySearchHeading || this.labels.emptySearchHeading || empty;\n }\n\n get emptyStateDescription(): string | undefined {\n return this.search\n ? this.emptySearchDescription ?? this.labels.emptySearchDescription\n : this.emptyDescription ?? this.labels.emptyDescription;\n }\n\n headerClass(column: UiColumn): string {\n const align = ALIGNMENTS[column.align ?? 'left'].header;\n return `border-b border-line px-4 py-3 text-sm font-medium whitespace-nowrap text-ink-muted ${align}`;\n }\n\n isSortable(column: UiColumn): boolean {\n return column.sortable === true;\n }\n\n isSorted(column: UiColumn): boolean {\n return (\n this.isSortable(column) &&\n this.sort !== null &&\n this.sort.key === column.sortKey\n );\n }\n\n ariaSort(column: UiColumn): string | null {\n if (!this.isSortable(column)) {\n return null;\n }\n return this.isSorted(column) && this.sort\n ? ARIA_SORT[this.sort.direction]\n : 'none';\n }\n\n sortIcon(column: UiColumn): UiIconName {\n return this.isSorted(column) && this.sort\n ? SORT_ICONS[this.sort.direction]\n : SORT_ICONS.asc;\n }\n\n sortControlClass(column: UiColumn): string {\n const base = `group inline-flex w-full items-center gap-1 rounded-control transition-colors duration-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal ${\n ALIGNMENTS[column.align ?? 'left'].control\n }`;\n return this.isSorted(column)\n ? `${base} text-ink`\n : `${base} text-ink-muted hover:text-ink`;\n }\n\n sortIconClass(column: UiColumn): string {\n return this.isSorted(column)\n ? 'text-signal'\n : 'invisible text-ink-faint group-hover:visible group-focus-visible:visible';\n }\n\n toggleSort(column: UiColumn): void {\n if (!this.isSortable(column)) {\n return;\n }\n\n const key = column.sortKey ?? '';\n const current = this.sort && this.sort.key === key ? this.sort : null;\n const next: UiTableSort | null =\n current === null\n ? { key, direction: 'asc' }\n : current.direction === 'asc'\n ? { key, direction: 'desc' }\n : null;\n\n this.sort = next;\n this.page = 0;\n this.sortChange.emit(next);\n this.load();\n }\n\n onSearch(value: string): void {\n this.searchInput.next(value.trim());\n }\n\n onPageSizeChange(value: string | number): void {\n const size = Number(value);\n if (!Number.isFinite(size) || size <= 0 || size === this.pageSize) {\n return;\n }\n\n this.pageSize = size;\n this.page = 0;\n this.pageSizeChange.emit(size);\n this.load();\n }\n\n goTo(page: number): void {\n if (page < 0 || page >= this.pageCount || page === this.page) {\n return;\n }\n this.page = page;\n this.load();\n }\n\n readonly trackPageItem = (_: number, item: UiTablePageItem): string =>\n item.key;\n\n load(): void {\n this.request?.unsubscribe();\n this.loading = true;\n this.cdr.markForCheck();\n\n const query: UiTableQuery = {\n offset: this.page * this.pageSize,\n limit: this.pageSize,\n search: this.search,\n sort: this.sort,\n };\n\n const source = this.fetch ?? ((next: UiTableQuery) => this.queryRows(next));\n\n this.request = source(query).subscribe({\n next: (result) => {\n this.apply(result.data ?? [], result.total ?? 0);\n },\n error: () => {\n this.apply([], 0);\n },\n });\n }\n\n private apply(data: T[], total: number): void {\n this.visibleRows = data;\n this.total = total;\n this.loading = false;\n this.buildPageItems();\n this.cdr.markForCheck();\n\n if (this.page > 0 && !data.length && total > 0) {\n this.goTo(this.pageCount - 1);\n }\n }\n\n private buildPageItems(): void {\n const count = this.pageCount;\n const candidates = [\n 0,\n count - 1,\n this.page - 1,\n this.page,\n this.page + 1,\n ].filter((page) => page >= 0 && page < count);\n const pages = [...new Set(candidates)].sort((a, b) => a - b);\n\n const items: UiTablePageItem[] = [];\n let previous = -1;\n\n for (const page of pages) {\n if (previous >= 0 && page - previous > 1) {\n items.push({ key: `gap-${page}`, page: -1, gap: true });\n }\n items.push({ key: `page-${page}`, page, gap: false });\n previous = page;\n }\n\n this.pageItems = items;\n }\n\n private queryRows(query: UiTableQuery): Observable<UiTablePage<T>> {\n const source = this.rows ?? [];\n const term = query.search.toLowerCase();\n const filtered = term\n ? source.filter((row) => this.matchesSearch(row, term))\n : [...source];\n\n if (query.sort) {\n const { key, direction } = query.sort;\n const factor = direction === 'asc' ? 1 : -1;\n filtered.sort(\n (a, b) =>\n factor * compareValues(this.sortValue(a, key), this.sortValue(b, key))\n );\n }\n\n return of({\n data: filtered.slice(query.offset, query.offset + query.limit),\n total: filtered.length,\n });\n }\n\n private matchesSearch(row: T, term: string): boolean {\n if (this.rowSearch) {\n return this.rowSearch(row, term);\n }\n\n if (row === null || row === undefined) {\n return false;\n }\n\n if (typeof row !== 'object') {\n return String(row).toLowerCase().includes(term);\n }\n\n return Object.values(row as Record<string, unknown>).some(\n (value) =>\n (typeof value === 'string' || typeof value === 'number') &&\n String(value).toLowerCase().includes(term)\n );\n }\n\n private sortValue(row: T, key: string): unknown {\n if (this.rowSortValue) {\n return this.rowSortValue(row, key);\n }\n\n return key\n .split('.')\n .reduce<unknown>(\n (value, part) =>\n value === null || value === undefined\n ? undefined\n : (value as Record<string, unknown>)[part],\n row\n );\n }\n\n private assertSource(): void {\n const hasFetch = this.fetch !== undefined && this.fetch !== null;\n const hasRows = this.rows !== undefined;\n\n if (hasFetch === hasRows) {\n throw new Error(\n 'ui-data-table needs exactly one data source: bind either [fetch] or [rows], never both and never neither.'\n );\n }\n }\n\n private assertColumns(): void {\n const broken = this.columns.find(\n (column) => column.sortable === true && !column.sortKey\n );\n\n if (broken) {\n throw new Error(\n `ui-data-table: column \"${broken.title}\" is marked sortable but has no sortKey.`\n );\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type UiDescriptionListDensity = 'comfortable' | 'compact';\n\nconst DENSITIES: Record<UiDescriptionListDensity, string> = {\n comfortable: '[&_ui-description-row]:py-4',\n compact: '[&_ui-description-row]:py-2',\n};\n\n@Component({\n selector: 'ui-description-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block' },\n template: `\n <dl [class]=\"'flex flex-col ' + densityClass\">\n <ng-content></ng-content>\n </dl>\n `,\n})\nexport class UiDescriptionListComponent {\n @Input() density: UiDescriptionListDensity = 'comfortable';\n\n get densityClass(): string {\n return DENSITIES[this.density];\n }\n}\n\n@Component({\n selector: 'ui-description-row',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'grid grid-cols-1 gap-1 border-b border-line py-4 last:border-b-0 sm:grid-cols-[220px_minmax(0,1fr)] sm:items-start sm:gap-6',\n },\n template: `\n <dt class=\"text-sm text-ink-muted\">{{ label }}</dt>\n <dd class=\"flex min-w-0 items-start justify-between text-base text-ink\">\n <div class=\"min-w-0\">\n <ng-content></ng-content>\n </div>\n <div class=\"shrink-0 pl-3\">\n <ng-content select=\"[rowAction]\"></ng-content>\n </div>\n </dd>\n `,\n})\nexport class UiDescriptionRowComponent {\n @Input() label = '';\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type UiDialogSize = 'sm' | 'md' | 'lg' | 'xl';\n\nlet dialogCount = 0;\n\nconst SIZES: Record<UiDialogSize, string> = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n};\n\n@Component({\n selector: 'ui-dialog',\n standalone: true,\n imports: [NgIf, UiIconComponent, UiButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n *ngIf=\"open\"\n class=\"fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-ink/45 p-4 pt-[8vh]\"\n (click)=\"onBackdrop($event)\">\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"title ? titleId : null\"\n [attr.aria-label]=\"title ? null : closeLabel || null\"\n [class]=\"panelClass\"\n (click)=\"$event.stopPropagation()\">\n <header\n class=\"flex items-start justify-between gap-4 border-b border-line px-5 py-4\">\n <h2 [id]=\"titleId\" class=\"text-xl font-normal text-ink\">\n {{ title }}\n </h2>\n <button\n *ngIf=\"showHeaderClose\"\n uiButton\n variant=\"ghost\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel\"\n (click)=\"requestClose()\">\n <ui-icon name=\"x\" [size]=\"16\"></ui-icon>\n </button>\n </header>\n\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n\n <footer\n class=\"flex flex-wrap items-center justify-end gap-2 border-t border-line px-5 py-4\">\n <ng-content select=\"[dialogFooter]\"></ng-content>\n </footer>\n </div>\n </div>\n `,\n})\nexport class UiDialogComponent {\n @Input() open = false;\n @Input() title = '';\n @Input() size: UiDialogSize = 'lg';\n @Input() closeLabel = '';\n @Input() closeOnBackdrop = true;\n @Input() closeOnEscape = true;\n @Input() showHeaderClose = true;\n @Input() fullscreen = false;\n\n readonly titleId = `ui-dialog-${++dialogCount}`;\n\n @Output() readonly closed = new EventEmitter<void>();\n\n get panelClass(): string {\n const width = this.fullscreen ? 'max-w-[95vw]' : SIZES[this.size];\n return `flex w-full ${width} flex-col overflow-hidden rounded-panel border border-line bg-surface shadow-overlay`;\n }\n\n get bodyClass(): string {\n const height = this.fullscreen ? 'max-h-[78vh]' : 'max-h-[62vh]';\n return `overflow-y-auto px-5 py-5 ${height}`;\n }\n\n onBackdrop(event: MouseEvent): void {\n if (this.closeOnBackdrop && event.target === event.currentTarget) {\n this.requestClose();\n }\n }\n\n requestClose(): void {\n this.closed.emit();\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open && this.closeOnEscape) {\n this.requestClose();\n }\n }\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type UiFileDropReason = 'type' | 'size';\n\nexport interface UiFileDropRejection {\n file: File;\n reason: UiFileDropReason;\n}\n\nconst UNITS = ['B', 'KB', 'MB', 'GB', 'TB'];\n\n@Component({\n selector: 'ui-file-drop',\n standalone: true,\n imports: [NgFor, NgIf, UiIconComponent, UiButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block' },\n template: `\n <button\n type=\"button\"\n [class]=\"zoneClass\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel || null\"\n (click)=\"openPicker()\"\n (dragenter)=\"onDragOver($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\">\n <span [class]=\"iconClass\">\n <ui-icon name=\"upload\" [size]=\"18\"></ui-icon>\n </span>\n <span *ngIf=\"heading\" class=\"pointer-events-none text-base text-ink\">{{\n heading\n }}</span>\n <span *ngIf=\"hint\" class=\"pointer-events-none text-xs text-ink-muted\">{{\n hint\n }}</span>\n </button>\n\n <input\n #picker\n type=\"file\"\n class=\"hidden\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onPicked($event)\" />\n\n <ul *ngIf=\"files.length\" class=\"mt-3 flex flex-col gap-1\">\n <li\n *ngFor=\"let file of files; let i = index\"\n class=\"flex items-center gap-3 rounded-control border border-line bg-surface py-1.5 pl-3 pr-1.5\">\n <ui-icon name=\"file-text\" [size]=\"14\" class=\"text-ink-faint\"></ui-icon>\n <span class=\"truncate text-base text-ink\">{{ file.name }}</span>\n <span class=\"tabular ml-auto shrink-0 text-xs text-ink-muted\">\n {{ formatSize(file.size) }}\n </span>\n <button\n uiButton\n variant=\"ghost\"\n size=\"icon-sm\"\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"removeLabel || null\"\n (click)=\"remove(i)\">\n <ui-icon name=\"x\" [size]=\"14\"></ui-icon>\n </button>\n </li>\n </ul>\n `,\n})\nexport class UiFileDropComponent {\n @Input() heading = '';\n @Input() hint = '';\n @Input() accept = '';\n @Input() multiple = false;\n @Input() maxSizeBytes = 0;\n @Input() disabled = false;\n @Input() dragActive = false;\n @Input() files: File[] = [];\n @Input() removeLabel = '';\n @Input('aria-label') ariaLabel = '';\n\n @Output() readonly accepted = new EventEmitter<File[]>();\n @Output() readonly rejected = new EventEmitter<UiFileDropRejection[]>();\n @Output() readonly removed = new EventEmitter<File>();\n @Output() readonly filesChange = new EventEmitter<File[]>();\n\n @ViewChild('picker') private readonly picker?: ElementRef<HTMLInputElement>;\n\n get zoneClass(): string {\n const base =\n 'flex w-full flex-col items-center justify-center gap-1.5 rounded-panel border border-dashed bg-ground-sunken px-6 py-8 text-center transition-colors duration-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal disabled:cursor-not-allowed disabled:opacity-40';\n const state = this.dragActive\n ? 'border-signal bg-signal-soft'\n : 'border-line-strong hover:border-signal';\n return `${base} ${state}`;\n }\n\n get iconClass(): string {\n const base =\n 'pointer-events-none mb-0.5 flex size-10 items-center justify-center rounded-full border border-line bg-surface transition-colors duration-100';\n return `${base} ${this.dragActive ? 'text-signal' : 'text-ink-muted'}`;\n }\n\n formatSize(bytes: number): string {\n if (!bytes || bytes < 0) {\n return `0 ${UNITS[0]}`;\n }\n const exponent = Math.min(\n Math.floor(Math.log(bytes) / Math.log(1024)),\n UNITS.length - 1\n );\n const size = bytes / Math.pow(1024, exponent);\n const rounded =\n exponent === 0 || size >= 10\n ? Math.round(size)\n : Math.round(size * 10) / 10;\n return `${rounded} ${UNITS[exponent]}`;\n }\n\n openPicker(): void {\n if (this.disabled) {\n return;\n }\n this.picker?.nativeElement.click();\n }\n\n onPicked(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.collect(input.files);\n input.value = '';\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.disabled) {\n return;\n }\n this.dragActive = true;\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.dragActive = false;\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragActive = false;\n if (this.disabled) {\n return;\n }\n this.collect(event.dataTransfer ? event.dataTransfer.files : null);\n }\n\n remove(index: number): void {\n const file = this.files[index];\n if (!file) {\n return;\n }\n this.files = this.files.filter((_, position) => position !== index);\n this.filesChange.emit(this.files);\n this.removed.emit(file);\n }\n\n private collect(list: FileList | null): void {\n const incoming = list ? Array.from(list) : [];\n if (!incoming.length) {\n return;\n }\n const picked = this.multiple ? incoming : incoming.slice(0, 1);\n const accepted: File[] = [];\n const rejected: UiFileDropRejection[] = [];\n\n for (const file of picked) {\n if (!this.matchesAccept(file)) {\n rejected.push({ file, reason: 'type' });\n } else if (this.maxSizeBytes > 0 && file.size > this.maxSizeBytes) {\n rejected.push({ file, reason: 'size' });\n } else {\n accepted.push(file);\n }\n }\n\n if (accepted.length) {\n this.files = this.multiple ? [...this.files, ...accepted] : accepted;\n this.filesChange.emit(this.files);\n this.accepted.emit(accepted);\n }\n if (rejected.length) {\n this.rejected.emit(rejected);\n }\n }\n\n private matchesAccept(file: File): boolean {\n const tokens = this.accept\n .split(',')\n .map((token) => token.trim().toLowerCase())\n .filter((token) => token.length > 0);\n if (!tokens.length) {\n return true;\n }\n const name = file.name.toLowerCase();\n const type = (file.type || '').toLowerCase();\n return tokens.some((token) => {\n if (token.startsWith('.')) {\n return name.endsWith(token);\n }\n if (token.endsWith('/*')) {\n return type.startsWith(token.slice(0, -1));\n }\n return type === token;\n });\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n EventEmitter,\n Input,\n IterableDiffer,\n IterableDiffers,\n Output,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface UiFieldArrayRowContext<T> {\n $implicit: T;\n row: T;\n index: number;\n first: boolean;\n last: boolean;\n}\n\n@Directive({ selector: 'ng-template[uiFieldArrayRow]', standalone: true })\nexport class UiFieldArrayRowDirective<T = unknown> {\n readonly template =\n inject<TemplateRef<UiFieldArrayRowContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n directive: UiFieldArrayRowDirective<T>,\n context: unknown\n ): context is UiFieldArrayRowContext<T> {\n return true;\n }\n}\n\n@Component({\n selector: 'ui-field-array',\n standalone: true,\n imports: [NgFor, NgIf, NgTemplateOutlet, UiButtonDirective, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col gap-2.5',\n role: 'group',\n '[attr.aria-label]': 'label || null',\n },\n template: `\n <div\n *ngIf=\"label || addLabel\"\n class=\"flex items-center justify-between gap-3\">\n <span *ngIf=\"label\" class=\"text-eyebrow uppercase text-ink-faint\">\n {{ label }}\n </span>\n <button\n *ngIf=\"addLabel\"\n uiButton\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n class=\"ml-auto shrink-0\"\n [disabled]=\"!canAdd\"\n (click)=\"add.emit()\">\n <ui-icon name=\"plus\" [size]=\"14\"></ui-icon>\n {{ addLabel }}\n </button>\n </div>\n\n <div *ngIf=\"rows.length; else emptyRow\" class=\"flex flex-col gap-2\">\n <div\n *ngFor=\"\n let row of rows;\n let index = index;\n let first = first;\n let last = last;\n trackBy: trackByIndex\n \"\n class=\"flex items-start gap-2\">\n <div class=\"min-w-0 flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: {\n $implicit: row,\n row: row,\n index: index,\n first: first,\n last: last\n }\n \"></ng-container>\n </div>\n <button\n *ngIf=\"removable\"\n uiButton\n variant=\"ghost\"\n size=\"icon\"\n type=\"button\"\n class=\"shrink-0 hover:text-danger\"\n [disabled]=\"!canRemove\"\n [attr.aria-label]=\"removeLabel || null\"\n (click)=\"remove.emit(index)\">\n <ui-icon name=\"trash-2\" [size]=\"15\"></ui-icon>\n </button>\n </div>\n </div>\n\n <ng-template #emptyRow>\n <p\n class=\"rounded-control border border-dashed border-line px-3 py-4 text-center text-base text-ink-muted\">\n {{ emptyLabel }}\n </p>\n </ng-template>\n\n <p *ngIf=\"error\" class=\"text-xs text-danger\">{{ error }}</p>\n <p *ngIf=\"!error && atMax && maxLabel\" class=\"text-xs text-ink-muted\">\n {{ maxLabel }}\n </p>\n <p *ngIf=\"!error && !atMax && hint\" class=\"text-xs text-ink-muted\">\n {{ hint }}\n </p>\n `,\n})\nexport class UiFieldArrayComponent<T = unknown> implements DoCheck {\n @Input({ required: true }) rows: readonly T[] = [];\n @Input() label = '';\n @Input() hint = '';\n @Input() addLabel = '';\n @Input() removeLabel = '';\n @Input() emptyLabel = '';\n @Input() maxLabel = '';\n @Input() error = '';\n @Input() min = 0;\n @Input() max = 0;\n @Input() removable = true;\n @Input() disabled = false;\n\n @Output() readonly add = new EventEmitter<void>();\n @Output() readonly remove = new EventEmitter<number>();\n\n @ContentChild(UiFieldArrayRowDirective)\n protected readonly row?: UiFieldArrayRowDirective<T>;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly differs = inject(IterableDiffers);\n private differ: IterableDiffer<T> | null = null;\n\n ngDoCheck(): void {\n this.differ = this.differ ?? this.differs.find(this.rows).create<T>();\n\n if (this.differ.diff(this.rows)) {\n this.cdr.markForCheck();\n }\n }\n\n protected get rowTemplate(): TemplateRef<UiFieldArrayRowContext<T>> | null {\n return this.row?.template ?? null;\n }\n\n get atMax(): boolean {\n return this.max > 0 && this.rows.length >= this.max;\n }\n\n get canAdd(): boolean {\n return !this.disabled && !this.atMax;\n }\n\n get canRemove(): boolean {\n return !this.disabled && this.rows.length > this.min;\n }\n\n protected trackByIndex(index: number): number {\n return index;\n }\n}\n\nexport const UI_FIELD_ARRAY = [\n UiFieldArrayComponent,\n UiFieldArrayRowDirective,\n] as const;\n","import {\n InjectionToken,\n makeEnvironmentProviders,\n type EnvironmentProviders,\n} from '@angular/core';\nimport type { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport type UiValidationMessage = string | ((error: unknown) => string);\n\nexport type UiValidationMessages = Record<string, UiValidationMessage>;\n\nexport type UiValidationMessagesSource =\n | UiValidationMessages\n | (() => UiValidationMessages);\n\nexport type UiValidationTrigger = 'touched' | 'dirty' | 'always';\n\nconst PRIORITY: readonly string[] = [\n 'required',\n 'requiredTrue',\n 'email',\n 'pattern',\n 'min',\n 'max',\n 'minlength',\n 'maxlength',\n];\n\nexport const UI_VALIDATION_MESSAGES =\n new InjectionToken<UiValidationMessagesSource>('UI_VALIDATION_MESSAGES', {\n providedIn: 'root',\n factory: (): UiValidationMessages => ({}),\n });\n\nexport function provideUiValidationMessages(\n messages: UiValidationMessagesSource\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: UI_VALIDATION_MESSAGES, useValue: messages },\n ]);\n}\n\nexport function uiValidationMessages(\n source: UiValidationMessagesSource\n): UiValidationMessages {\n return typeof source === 'function' ? source() : source;\n}\n\nexport function uiValidationErrorKeys(\n errors: ValidationErrors | null\n): string[] {\n if (!errors) {\n return [];\n }\n\n const keys = Object.keys(errors);\n\n return [\n ...PRIORITY.filter((key) => keys.includes(key)),\n ...keys.filter((key) => !PRIORITY.includes(key)),\n ];\n}\n\nexport function uiValidationMessageFor(\n key: string,\n error: unknown,\n ...sources: readonly UiValidationMessages[]\n): string {\n for (const source of sources) {\n const message = source[key];\n\n if (typeof message === 'function') {\n return message(error);\n }\n\n if (message) {\n return message;\n }\n }\n\n return '';\n}\n\nexport function uiResolveValidationMessage(\n errors: ValidationErrors | null,\n keys: readonly string[],\n ...sources: readonly UiValidationMessages[]\n): string {\n if (!errors) {\n return '';\n }\n\n const candidates = keys.length ? keys : uiValidationErrorKeys(errors);\n\n for (const key of candidates) {\n if (errors[key] === undefined) {\n continue;\n }\n\n const message = uiValidationMessageFor(key, errors[key], ...sources);\n\n if (message) {\n return message;\n }\n }\n\n return '';\n}\n\nexport function uiValidationTriggered(\n control: AbstractControl,\n trigger: UiValidationTrigger\n): boolean {\n if (trigger === 'always') {\n return true;\n }\n\n return trigger === 'dirty' ? control.dirty : control.touched;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n type OnChanges,\n type OnDestroy,\n type SimpleChanges,\n} from '@angular/core';\nimport type { AbstractControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport {\n UI_VALIDATION_MESSAGES,\n uiResolveValidationMessage,\n uiValidationMessages,\n uiValidationTriggered,\n type UiValidationMessages,\n type UiValidationTrigger,\n} from './ui-validation-messages';\n\nconst VISIBLE = 'mt-1.5 text-xs text-danger';\n\n@Component({\n selector: 'ui-field-error',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClass' },\n template: `{{ message }}`,\n})\nexport class UiFieldErrorComponent implements OnChanges, OnDestroy {\n @Input() control: AbstractControl | null = null;\n @Input() group: AbstractControl | null = null;\n @Input() groupErrorKeys: readonly string[] = [];\n @Input() messages: UiValidationMessages = {};\n @Input() error = '';\n @Input() fallback = '';\n @Input() showWhen: UiValidationTrigger = 'touched';\n\n private readonly defaults = inject(UI_VALIDATION_MESSAGES);\n private readonly cdr = inject(ChangeDetectorRef);\n private watched = new Subscription();\n\n get message(): string {\n if (this.error) {\n return this.error;\n }\n\n const control = this.control;\n\n if (!control || !uiValidationTriggered(control, this.showWhen)) {\n return '';\n }\n\n const sources = [this.messages, uiValidationMessages(this.defaults)];\n const own = uiResolveValidationMessage(control.errors, [], ...sources);\n\n if (own) {\n return own;\n }\n\n if (control.errors) {\n return this.fallback;\n }\n\n return uiResolveValidationMessage(\n this.group ? this.group.errors : null,\n this.groupErrorKeys,\n ...sources\n );\n }\n\n get hostClass(): string {\n return this.message ? VISIBLE : 'hidden';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['control'] || changes['group']) {\n this.watch();\n }\n }\n\n ngOnDestroy(): void {\n this.watched.unsubscribe();\n }\n\n private watch(): void {\n this.watched.unsubscribe();\n this.watched = new Subscription();\n\n const notify = (): void => this.cdr.markForCheck();\n\n if (this.control) {\n this.watched.add(this.control.events.subscribe(notify));\n }\n\n if (this.group && this.group !== this.control) {\n this.watched.add(this.group.events.subscribe(notify));\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type UiFieldsetLayout = 'wrap' | 'stack' | 'grid';\n\nconst LAYOUTS: Record<UiFieldsetLayout, string> = {\n wrap: 'flex flex-wrap gap-x-8 gap-y-3',\n stack: 'flex flex-col gap-3',\n grid: 'grid grid-cols-1 gap-x-8 gap-y-3 sm:grid-cols-2',\n};\n\nlet nextId = 0;\n\n@Component({\n selector: 'ui-fieldset',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block' },\n template: `\n <fieldset\n class=\"group m-0 min-w-0 border-0 p-0\"\n [disabled]=\"disabled\"\n [attr.aria-describedby]=\"description ? descriptionId : null\">\n <legend\n *ngIf=\"legend\"\n class=\"p-0 text-eyebrow uppercase text-ink-faint group-disabled:opacity-60\">\n {{ legend }}\n </legend>\n <p\n *ngIf=\"description\"\n class=\"mt-1 text-xs text-ink-muted group-disabled:opacity-60\"\n [id]=\"descriptionId\">\n {{ description }}\n </p>\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n </fieldset>\n `,\n})\nexport class UiFieldsetComponent {\n @Input() legend = '';\n @Input() description = '';\n @Input() layout: UiFieldsetLayout = 'wrap';\n @Input() disabled = false;\n\n readonly descriptionId = `ui-fieldset-${++nextId}-description`;\n\n get bodyClass(): string {\n const spacing = this.legend || this.description ? 'mt-3 ' : '';\n return spacing + LAYOUTS[this.layout];\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n inject,\n type AfterContentChecked,\n type OnChanges,\n type OnDestroy,\n type SimpleChanges,\n} from '@angular/core';\nimport type { AbstractControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { UiFieldErrorComponent } from './ui-field-error.component';\nimport {\n uiValidationTriggered,\n type UiValidationMessages,\n type UiValidationTrigger,\n} from './ui-validation-messages';\n\nexport type UiFormFieldLayout = 'stacked' | 'inline';\n\nconst HOSTS: Record<UiFormFieldLayout, string> = {\n stacked: 'flex flex-col',\n inline: 'flex flex-col sm:flex-row sm:items-start sm:gap-4',\n};\n\nconst LABELS: Record<UiFormFieldLayout, string> = {\n stacked: 'mb-1.5 block text-sm font-medium text-ink',\n inline:\n 'mb-1.5 block text-sm font-medium text-ink sm:mb-0 sm:w-48 sm:shrink-0 sm:pt-2',\n};\n\nconst BODIES: Record<UiFormFieldLayout, string> = {\n stacked: 'contents',\n inline: 'flex min-w-0 flex-1 flex-col',\n};\n\nconst LABELABLE = 'input,select,textarea';\n\nconst INVALID_CONTROL: readonly string[] = [\n 'border-danger',\n 'focus:border-danger',\n];\n\nconst INVALID_SELECT: readonly string[] = [\n '[&_.ng-select-container]:border-danger',\n];\n\nlet sequence = 0;\n\n@Component({\n selector: 'ui-form-field',\n standalone: true,\n imports: [NgIf, UiFieldErrorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'hostClass' },\n template: `\n <label\n *ngIf=\"label\"\n [class]=\"labelClass\"\n [attr.id]=\"labelId\"\n [attr.for]=\"labelFor\"\n >\n {{ label }}\n <span *ngIf=\"required\" class=\"text-danger\" aria-hidden=\"true\">*</span>\n </label>\n\n <div [class]=\"bodyClass\">\n <span #slot class=\"contents\"><ng-content></ng-content></span>\n\n <ui-field-error\n [attr.id]=\"errorId\"\n [control]=\"control\"\n [group]=\"group\"\n [groupErrorKeys]=\"groupErrorKeys\"\n [messages]=\"messages\"\n [error]=\"error\"\n [fallback]=\"fallback\"\n [showWhen]=\"showErrorWhen\"\n ></ui-field-error>\n\n <span\n *ngIf=\"hint\"\n [attr.id]=\"hintId\"\n class=\"mt-1.5 text-xs text-ink-muted\"\n >{{ hint }}</span\n >\n </div>\n `,\n})\nexport class UiFormFieldComponent\n implements OnChanges, AfterContentChecked, OnDestroy\n{\n @Input() control: AbstractControl | null = null;\n @Input() group: AbstractControl | null = null;\n @Input() groupErrorKeys: readonly string[] = [];\n @Input() label = '';\n @Input() hint = '';\n @Input() error = '';\n @Input() fallback = '';\n @Input() messages: UiValidationMessages = {};\n @Input() required = false;\n @Input() invalid: boolean | null = null;\n @Input() controlId = '';\n @Input() layout: UiFormFieldLayout = 'stacked';\n @Input() showErrorWhen: UiValidationTrigger = 'touched';\n\n @ViewChild('slot', { static: true })\n private readonly slot?: ElementRef<HTMLElement>;\n\n private readonly renderer = inject(Renderer2);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly fieldId = `ui-field-${++sequence}`;\n\n private labelable: HTMLElement | null = null;\n private described: HTMLElement | null = null;\n private select: HTMLElement | null = null;\n private resolvedId = '';\n private appliedLabelledBy = '';\n private appliedDescribedBy = '';\n private appliedInvalid = false;\n private appliedRequired = false;\n private watched = new Subscription();\n\n get hostClass(): string {\n return HOSTS[this.layout];\n }\n\n get labelClass(): string {\n return LABELS[this.layout];\n }\n\n get bodyClass(): string {\n return BODIES[this.layout];\n }\n\n get labelId(): string {\n return `${this.fieldId}-label`;\n }\n\n get hintId(): string {\n return `${this.fieldId}-hint`;\n }\n\n get errorId(): string {\n return `${this.fieldId}-error`;\n }\n\n get labelFor(): string | null {\n return this.resolvedId || null;\n }\n\n get isInvalid(): boolean {\n return this.invalid ?? this.derivedInvalid;\n }\n\n private get derivedInvalid(): boolean {\n const control = this.control;\n\n return (\n !!control &&\n control.invalid &&\n uiValidationTriggered(control, this.showErrorWhen)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['control'] || changes['group']) {\n this.watch();\n }\n\n if (changes['controlId']) {\n this.resolvedId = '';\n }\n }\n\n ngAfterContentChecked(): void {\n this.sync();\n }\n\n ngOnDestroy(): void {\n this.watched.unsubscribe();\n }\n\n private watch(): void {\n this.watched.unsubscribe();\n this.watched = new Subscription();\n\n const notify = (): void => this.cdr.markForCheck();\n\n if (this.control) {\n this.watched.add(this.control.events.subscribe(notify));\n }\n\n if (this.group && this.group !== this.control) {\n this.watched.add(this.group.events.subscribe(notify));\n }\n }\n\n private sync(): void {\n const slot = this.slot ? this.slot.nativeElement : null;\n\n if (!slot) {\n return;\n }\n\n if (!this.described || !this.described.isConnected) {\n this.collect(slot);\n }\n\n this.syncId();\n this.syncDescribedBy();\n this.syncRequired();\n this.syncInvalid();\n }\n\n private collect(slot: HTMLElement): void {\n this.labelable = slot.querySelector<HTMLElement>(LABELABLE);\n this.select = slot.querySelector<HTMLElement>('ui-select');\n this.described =\n this.labelable ?? (slot.firstElementChild as HTMLElement | null);\n this.resolvedId = '';\n this.appliedLabelledBy = '';\n this.appliedDescribedBy = '';\n this.appliedInvalid = false;\n this.appliedRequired = false;\n }\n\n private syncId(): void {\n const labelable = this.labelable;\n\n if (!labelable) {\n this.resolvedId = '';\n this.syncLabelledBy();\n\n return;\n }\n\n const id =\n this.controlId ||\n labelable.getAttribute('id') ||\n `${this.fieldId}-control`;\n\n if (labelable.getAttribute('id') !== id) {\n this.renderer.setAttribute(labelable, 'id', id);\n }\n\n this.resolvedId = id;\n }\n\n private syncLabelledBy(): void {\n const target = this.described;\n const labelledBy = this.label ? this.labelId : '';\n\n if (!target || labelledBy === this.appliedLabelledBy) {\n return;\n }\n\n this.appliedLabelledBy = labelledBy;\n\n if (labelledBy) {\n this.renderer.setAttribute(target, 'aria-labelledby', labelledBy);\n } else {\n this.renderer.removeAttribute(target, 'aria-labelledby');\n }\n }\n\n private syncDescribedBy(): void {\n const target = this.described;\n\n if (!target) {\n return;\n }\n\n const ids: string[] = [];\n\n if (this.isInvalid || this.error) {\n ids.push(this.errorId);\n }\n\n if (this.hint) {\n ids.push(this.hintId);\n }\n\n const describedBy = ids.join(' ');\n\n if (describedBy === this.appliedDescribedBy) {\n return;\n }\n\n this.appliedDescribedBy = describedBy;\n\n if (describedBy) {\n this.renderer.setAttribute(target, 'aria-describedby', describedBy);\n } else {\n this.renderer.removeAttribute(target, 'aria-describedby');\n }\n }\n\n private syncRequired(): void {\n const target = this.described;\n\n if (!target || this.required === this.appliedRequired) {\n return;\n }\n\n this.appliedRequired = this.required;\n\n if (this.required) {\n this.renderer.setAttribute(target, 'aria-required', 'true');\n } else {\n this.renderer.removeAttribute(target, 'aria-required');\n }\n }\n\n private syncInvalid(): void {\n const target = this.described;\n const invalid = this.isInvalid;\n\n if (!target || invalid === this.appliedInvalid) {\n return;\n }\n\n this.appliedInvalid = invalid;\n\n if (invalid) {\n this.renderer.setAttribute(target, 'aria-invalid', 'true');\n } else {\n this.renderer.removeAttribute(target, 'aria-invalid');\n }\n\n this.paint(this.labelable, INVALID_CONTROL, invalid);\n this.paint(this.select, INVALID_SELECT, invalid);\n }\n\n private paint(\n target: HTMLElement | null,\n classes: readonly string[],\n add: boolean\n ): void {\n if (!target) {\n return;\n }\n\n for (const name of classes) {\n if (add) {\n this.renderer.addClass(target, name);\n } else {\n this.renderer.removeClass(target, name);\n }\n }\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nexport type UiFormGridColumns = 1 | 2 | 3;\n\nconst COLUMNS: Record<UiFormGridColumns, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n};\n\n@Directive({ selector: '[uiFormGrid]', standalone: true })\nexport class UiFormGridDirective {\n @Input() columns: UiFormGridColumns = 2;\n\n @HostBinding('class')\n get classes(): string {\n return `grid gap-5 ${COLUMNS[this.columns]}`;\n }\n}\n\n@Directive({ selector: '[uiFormGridSpan]', standalone: true })\nexport class UiFormGridSpanDirective {\n @HostBinding('class')\n readonly classes = 'col-span-full';\n}\n\nexport const UI_FORM_GRID_DIRECTIVES = [\n UiFormGridDirective,\n UiFormGridSpanDirective,\n] as const;\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\n\nexport type UiTriState = 'unchecked' | 'checked' | 'indeterminate';\n\nexport function uiTriState(selected: number, total: number): UiTriState {\n if (total <= 0 || selected <= 0) {\n return 'unchecked';\n }\n return selected >= total ? 'checked' : 'indeterminate';\n}\n\nconst CONTROL =\n 'block w-full rounded-control border border-line bg-surface px-3 text-base text-ink transition-colors duration-100 placeholder:text-ink-faint hover:border-line-strong focus:border-signal focus:shadow-[inset_0_0_0_1px_var(--ds-signal)] focus:outline-none disabled:cursor-not-allowed disabled:bg-ground-sunken disabled:text-ink-faint';\n\n@Directive({ selector: 'input[uiInput], textarea[uiInput]', standalone: true })\nexport class UiInputDirective {\n @Input() invalid = false;\n\n @HostBinding('class')\n get classes(): string {\n const size = 'py-2 min-h-9';\n const state = this.invalid ? 'border-danger focus:border-danger' : '';\n return `${CONTROL} ${size} ${state}`;\n }\n}\n\n@Directive({ selector: 'select[uiSelect]', standalone: true })\nexport class UiSelectDirective {\n @Input() invalid = false;\n\n @HostBinding('class')\n get classes(): string {\n const state = this.invalid ? 'border-danger focus:border-danger' : '';\n return `${CONTROL} h-9 cursor-pointer appearance-none bg-[length:14px] bg-[right_0.65rem_center] bg-no-repeat pr-9 ${state}`;\n }\n\n @HostBinding('style.backgroundImage')\n readonly backgroundImage =\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%235f6368' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\\\")\";\n}\n\n@Directive({ selector: 'input[uiCheckbox]', standalone: true })\nexport class UiCheckboxDirective {\n @Input() indeterminate = false;\n\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n @HostBinding('class')\n readonly classes = 'ui-checkbox';\n\n @HostBinding('indeterminate')\n get nativeIndeterminate(): boolean {\n return this.indeterminate;\n }\n\n @HostBinding('attr.aria-checked')\n get ariaChecked(): string | null {\n return this.indeterminate ? 'mixed' : null;\n }\n\n @HostListener('change')\n onNativeChange(): void {\n if (!this.indeterminate) {\n return;\n }\n this.indeterminate = false;\n this.indeterminateChange.emit(false);\n }\n}\n\n@Directive({ selector: 'label[uiLabel]', standalone: true })\nexport class UiLabelDirective {\n @HostBinding('class')\n readonly classes = 'mb-1.5 block text-sm font-medium text-ink';\n}\n\n@Directive({ selector: '[uiField]', standalone: true })\nexport class UiFieldDirective {\n @HostBinding('class')\n readonly classes = 'flex flex-col';\n}\n\n@Directive({ selector: '[uiHint]', standalone: true })\nexport class UiHintDirective {\n @HostBinding('class')\n readonly classes = 'mt-1.5 text-xs text-ink-muted';\n}\n\n@Directive({ selector: '[uiError]', standalone: true })\nexport class UiErrorDirective {\n @HostBinding('class')\n readonly classes = 'mt-1.5 text-xs text-danger';\n}\n\nexport const UI_FORM_DIRECTIVES = [\n UiInputDirective,\n UiSelectDirective,\n UiCheckboxDirective,\n UiLabelDirective,\n UiFieldDirective,\n UiHintDirective,\n UiErrorDirective,\n] as const;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { UiInputDirective } from './ui-form.directives';\n\n@Component({\n selector: 'ui-password-input',\n standalone: true,\n imports: [UiIconComponent, UiInputDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UiPasswordInputComponent),\n multi: true,\n },\n ],\n host: { class: 'block' },\n template: `\n <div class=\"relative\">\n <input\n #field\n uiInput\n class=\"pr-10\"\n [type]=\"revealed ? 'text' : 'password'\"\n [invalid]=\"invalid\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.id]=\"inputId || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.autocomplete]=\"autocomplete || null\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n (input)=\"onInput($any($event.target).value)\"\n (blur)=\"onBlur()\" />\n <button\n type=\"button\"\n class=\"absolute inset-y-0 right-0 flex w-9 items-center justify-center rounded-control text-ink-muted transition-colors duration-100 hover:text-ink focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal disabled:cursor-not-allowed disabled:text-ink-faint\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-pressed]=\"revealed\"\n [attr.aria-controls]=\"inputId || null\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"toggle()\">\n <ui-icon [name]=\"revealed ? 'eye-off' : 'eye'\" [size]=\"16\"></ui-icon>\n </button>\n </div>\n `,\n})\nexport class UiPasswordInputComponent implements ControlValueAccessor {\n @Input() value = '';\n @Input() placeholder = '';\n @Input() autocomplete = '';\n @Input() inputId = '';\n @Input('aria-label') ariaLabel = '';\n @Input() invalid = false;\n @Input() disabled = false;\n @Input() revealed = false;\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly revealedChange = new EventEmitter<boolean>();\n\n @ViewChild('field') private readonly field?: ElementRef<HTMLInputElement>;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: string): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onInput(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n toggle(): void {\n if (this.disabled) {\n return;\n }\n\n const field = this.field?.nativeElement;\n const start = field ? field.selectionStart : null;\n const end = field ? field.selectionEnd : null;\n\n this.revealed = !this.revealed;\n this.revealedChange.emit(this.revealed);\n this.cdr.detectChanges();\n\n if (field && start !== null && end !== null) {\n field.setSelectionRange(start, end);\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\nimport { UiInputDirective } from './ui-form.directives';\n\ntype Trailing = 'none' | 'single' | 'double';\n\nconst TRAILING: Record<Trailing, string> = {\n none: 'pr-3',\n single: 'pr-10',\n double: 'pr-20',\n};\n\n@Component({\n selector: 'ui-search-field',\n standalone: true,\n imports: [NgIf, UiIconComponent, UiInputDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UiSearchFieldComponent),\n multi: true,\n },\n ],\n host: { class: 'block' },\n template: `\n <div class=\"relative\">\n <ui-icon\n [name]=\"icon\"\n [size]=\"15\"\n class=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-ink-faint\"></ui-icon>\n <input\n #field\n uiInput\n type=\"search\"\n [class]=\"fieldClass\"\n [invalid]=\"invalid\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.id]=\"inputId || null\"\n [attr.name]=\"name || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.autocomplete]=\"autocomplete || null\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n (input)=\"onInput($any($event.target).value)\"\n (keydown.escape)=\"clear()\"\n (blur)=\"onBlur()\" />\n <div class=\"absolute inset-y-0 right-0 flex items-center gap-0.5 pr-1\">\n <span\n *ngIf=\"loading\"\n class=\"flex size-8 items-center justify-center text-ink-muted\">\n <ui-icon name=\"loader-2\" [size]=\"15\" class=\"animate-spin\"></ui-icon>\n </span>\n <button\n *ngIf=\"showClear\"\n type=\"button\"\n class=\"flex size-8 items-center justify-center rounded-control text-ink-muted transition-colors duration-100 hover:bg-surface-hover hover:text-ink focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-signal\"\n [attr.aria-label]=\"clearLabel || null\"\n [attr.aria-controls]=\"inputId || null\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"clear()\">\n <ui-icon name=\"x\" [size]=\"15\"></ui-icon>\n </button>\n </div>\n </div>\n `,\n})\nexport class UiSearchFieldComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() value = '';\n @Input() placeholder = '';\n @Input() inputId = '';\n @Input() name = '';\n @Input() autocomplete = 'off';\n @Input('aria-label') ariaLabel = '';\n @Input() clearLabel = '';\n @Input() icon: UiIconName = 'search';\n @Input() debounce = 300;\n @Input() clearable = true;\n @Input() loading = false;\n @Input() invalid = false;\n @Input() disabled = false;\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly search = new EventEmitter<string>();\n\n @ViewChild('field') private readonly field?: ElementRef<HTMLInputElement>;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly typed = new Subject<string>();\n private subscription?: Subscription;\n private emitted = '';\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n ngOnInit(): void {\n this.emitted = this.value.trim();\n this.subscription = this.typed\n .pipe(\n switchMap((value) =>\n timer(Math.max(0, this.debounce)).pipe(map(() => value.trim()))\n )\n )\n .subscribe((value) => this.emitSearch(value));\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n get showClear(): boolean {\n return this.clearable && !this.disabled && this.value.length > 0;\n }\n\n get fieldClass(): string {\n const trailing: Trailing =\n this.loading && this.showClear\n ? 'double'\n : this.loading || this.showClear\n ? 'single'\n : 'none';\n return `pl-9 ${TRAILING[trailing]} [&::-webkit-search-cancel-button]:appearance-none`;\n }\n\n writeValue(value: string): void {\n this.value = value ?? '';\n this.emitted = this.value.trim();\n this.cdr.markForCheck();\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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onInput(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n this.typed.next(value);\n this.cdr.markForCheck();\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n clear(): void {\n if (this.disabled || !this.value) {\n return;\n }\n\n this.value = '';\n this.onChange('');\n this.valueChange.emit('');\n this.typed.next('');\n this.emitSearch('');\n this.cdr.markForCheck();\n this.field?.nativeElement.focus();\n }\n\n private emitSearch(value: string): void {\n if (value === this.emitted) {\n return;\n }\n\n this.emitted = value;\n this.search.emit(value);\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UiTriState } from './ui-form.directives';\n\nconst TRACKS: Record<UiTriState, string> = {\n unchecked: 'bg-line-strong',\n checked: 'bg-signal-soft',\n indeterminate: 'bg-signal-soft',\n};\n\nconst THUMBS: Record<UiTriState, string> = {\n unchecked: 'border-line bg-surface',\n checked: 'translate-x-4 border-signal bg-signal',\n indeterminate: 'translate-x-2 border-signal bg-signal',\n};\n\n@Component({\n selector: 'ui-switch',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UiSwitchComponent),\n multi: true,\n },\n ],\n host: { class: 'inline-flex' },\n template: `\n <label class=\"inline-flex cursor-pointer items-center gap-2.5\">\n <input\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\n [attr.aria-label]=\"label ? null : ariaLabel || null\"\n (change)=\"onToggle($any($event.target).checked)\" />\n <span\n class=\"relative h-4 w-9 shrink-0 rounded-full transition-colors duration-150 peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-signal peer-disabled:opacity-40\"\n [class]=\"trackClass\">\n <span\n class=\"absolute -top-1 left-0 flex size-6 items-center justify-center rounded-full border shadow-overlay transition-all duration-150\"\n [class]=\"thumbClass\">\n <span\n *ngIf=\"indeterminate\"\n class=\"h-0.5 w-2.5 rounded-full bg-ink-inverse\"></span>\n </span>\n </span>\n <span *ngIf=\"label\" class=\"text-base text-ink\">{{ label }}</span>\n </label>\n `,\n})\nexport class UiSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input('aria-label') ariaLabel = '';\n @Input() disabled = false;\n @Input() checked = false;\n @Input() indeterminate = false;\n\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n private readonly cdr = inject(ChangeDetectorRef);\n private onChange: (value: boolean) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get state(): UiTriState {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n get trackClass(): string {\n return TRACKS[this.state];\n }\n\n get thumbClass(): string {\n return THUMBS[this.state];\n }\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onToggle(checked: boolean): void {\n const wasIndeterminate = this.indeterminate;\n\n this.checked = checked;\n this.indeterminate = false;\n this.onChange(checked);\n this.onTouched();\n\n if (wasIndeterminate) {\n this.indeterminateChange.emit(false);\n }\n\n this.checkedChange.emit(checked);\n }\n}\n","import { EnvironmentProviders, importProvidersFrom } from '@angular/core';\nimport {\n Activity,\n ArrowLeft,\n ArrowRight,\n ArrowUpRight,\n Ban,\n Bell,\n Check,\n CheckCircle2,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n CircleAlert,\n Copy,\n Ellipsis,\n ExternalLink,\n Eye,\n EyeOff,\n FileText,\n Filter,\n Globe,\n Info,\n KeyRound,\n Languages,\n LayoutDashboard,\n Loader2,\n LogOut,\n LucideAngularModule,\n Mail,\n Menu,\n Moon,\n Pencil,\n Plus,\n Radio,\n RefreshCw,\n Search,\n Send,\n Settings,\n Shield,\n ShieldCheck,\n Sun,\n Trash2,\n TriangleAlert,\n Upload,\n User,\n UserPlus,\n Users,\n Variable,\n X,\n} from 'lucide-angular';\n\nexport const UI_ICONS = {\n Activity,\n ArrowLeft,\n ArrowRight,\n ArrowUpRight,\n Ban,\n Bell,\n Check,\n CheckCircle2,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n CircleAlert,\n Copy,\n Ellipsis,\n ExternalLink,\n Eye,\n EyeOff,\n FileText,\n Filter,\n Globe,\n Info,\n KeyRound,\n Languages,\n LayoutDashboard,\n Loader2,\n LogOut,\n Mail,\n Menu,\n Moon,\n Pencil,\n Plus,\n Radio,\n RefreshCw,\n Search,\n Send,\n Settings,\n Shield,\n ShieldCheck,\n Sun,\n Trash2,\n TriangleAlert,\n Upload,\n User,\n UserPlus,\n Users,\n Variable,\n X,\n};\n\nexport type UiIconName =\n | 'activity'\n | 'arrow-left'\n | 'arrow-right'\n | 'arrow-up-right'\n | 'ban'\n | 'bell'\n | 'check'\n | 'check-circle-2'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevron-up'\n | 'circle-alert'\n | 'copy'\n | 'ellipsis'\n | 'external-link'\n | 'eye'\n | 'eye-off'\n | 'file-text'\n | 'filter'\n | 'globe'\n | 'info'\n | 'key-round'\n | 'languages'\n | 'layout-dashboard'\n | 'loader-2'\n | 'log-out'\n | 'mail'\n | 'menu'\n | 'moon'\n | 'pencil'\n | 'plus'\n | 'radio'\n | 'refresh-cw'\n | 'search'\n | 'send'\n | 'settings'\n | 'shield'\n | 'shield-check'\n | 'sun'\n | 'trash-2'\n | 'triangle-alert'\n | 'upload'\n | 'user'\n | 'user-plus'\n | 'users'\n | 'variable'\n | 'x';\n\nexport function provideUiIcons(): EnvironmentProviders {\n return importProvidersFrom(LucideAngularModule.pick(UI_ICONS));\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'ui-menu',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'relative inline-flex' },\n template: `\n <div (click)=\"toggle()\" class=\"contents\">\n <ng-content select=\"[menuTrigger]\"></ng-content>\n </div>\n <div\n *ngIf=\"open()\"\n role=\"menu\"\n [class]=\"panelClass\"\n (click)=\"close()\">\n <ng-content select=\"[menuContent]\"></ng-content>\n </div>\n `,\n})\nexport class UiMenuComponent {\n @Input() align: 'start' | 'end' = 'end';\n @Input() width = 'w-64';\n\n readonly open = signal(false);\n\n constructor(private readonly host: ElementRef<HTMLElement>) {}\n\n get panelClass(): string {\n const side = this.align === 'end' ? 'right-0' : 'left-0';\n return `absolute top-[calc(100%+0.375rem)] ${side} ${this.width} z-50 overflow-hidden rounded-panel border border-line bg-surface-raised py-1.5 shadow-overlay`;\n }\n\n toggle(): void {\n this.open.update((value) => !value);\n }\n\n close(): void {\n this.open.set(false);\n }\n\n @HostListener('document:click', ['$event.target'])\n onDocumentClick(target: HTMLElement): void {\n if (this.open() && !this.host.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.close();\n }\n}\n\n@Directive({ selector: '[uiMenuItem]', standalone: true })\nexport class UiMenuItemDirective {\n @HostBinding('class')\n readonly classes =\n 'flex w-full cursor-pointer items-center gap-3 px-4 py-2.5 text-left text-base text-ink transition-colors duration-75 hover:bg-surface-hover';\n @HostBinding('attr.role') readonly role = 'menuitem';\n}\n\n@Directive({ selector: '[uiMenuSeparator]', standalone: true })\nexport class UiMenuSeparatorDirective {\n @HostBinding('class') readonly classes = 'my-1.5 block h-px bg-line';\n}\n\n@Directive({ selector: '[uiMenuLabel]', standalone: true })\nexport class UiMenuLabelDirective {\n @HostBinding('class')\n readonly classes =\n 'block px-4 pb-1 pt-2 text-left text-eyebrow uppercase text-ink-faint';\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n inject,\n} from '@angular/core';\nimport {\n UiButtonDirective,\n type UiButtonVariant,\n} from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\n\nexport type UiModalSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport type UiModalCloseReason = 'backdrop' | 'escape' | 'header' | 'button';\n\nexport interface UiModalButton {\n id?: string;\n label?: string;\n loadingLabel?: string;\n variant?: UiButtonVariant;\n visible?: boolean;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport interface UiModalConfig {\n title?: string;\n size?: UiModalSize;\n fullscreen?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n showHeaderClose?: boolean;\n closeButton?: UiModalButton;\n confirmButton?: UiModalButton;\n extraButtons?: UiModalButton[];\n}\n\nexport interface UiModalFooterButton {\n id: string;\n label: string;\n variant: UiButtonVariant;\n disabled: boolean;\n}\n\nexport const UI_MODAL_CLOSE_ID = 'close';\nexport const UI_MODAL_CONFIRM_ID = 'confirm';\n\nconst SIZES: Record<UiModalSize, string> = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n};\n\nlet nextModalId = 0;\n\nfunction sameFooter(\n current: readonly UiModalFooterButton[],\n next: readonly UiModalFooterButton[],\n): boolean {\n return (\n current.length === next.length &&\n current.every(\n (button, index) =>\n button.id === next[index].id &&\n button.label === next[index].label &&\n button.variant === next[index].variant &&\n button.disabled === next[index].disabled,\n )\n );\n}\n\n@Component({\n selector: 'ui-modal',\n standalone: true,\n imports: [NgIf, NgFor, UiButtonDirective, UiIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n *ngIf=\"open\"\n class=\"fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-ink/45 p-4 pt-[8vh]\"\n (click)=\"onBackdrop($event)\">\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n [class]=\"panelClass\"\n (click)=\"$event.stopPropagation()\">\n <header\n class=\"flex items-start justify-between gap-4 border-b border-line px-5 py-4\">\n <h2 [id]=\"titleId\" class=\"text-xl font-normal text-ink\">\n {{ config.title }}\n </h2>\n <button\n *ngIf=\"showHeaderClose\"\n uiButton\n variant=\"ghost\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel\"\n (click)=\"closed.emit('header')\">\n <ui-icon name=\"x\" [size]=\"16\"></ui-icon>\n </button>\n </header>\n\n <div [class]=\"bodyClass\">\n <ng-content></ng-content>\n </div>\n\n <footer\n *ngIf=\"footerButtons.length\"\n class=\"flex flex-wrap items-center justify-end gap-2 border-t border-line px-5 py-4\">\n <button\n *ngFor=\"let button of footerButtons; trackBy: trackButton\"\n uiButton\n type=\"button\"\n [variant]=\"button.variant\"\n [disabled]=\"button.disabled\"\n (click)=\"press(button.id)\">\n {{ button.label }}\n </button>\n </footer>\n </div>\n </div>\n `,\n})\nexport class UiModalComponent implements DoCheck {\n @Input() open = false;\n @Input() config: UiModalConfig = {};\n @Input() loading = false;\n @Input() closeLabel = '';\n\n @Output() readonly action = new EventEmitter<string>();\n @Output() readonly closed = new EventEmitter<UiModalCloseReason>();\n\n readonly titleId = `ui-modal-title-${(nextModalId += 1)}`;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private buttons: readonly UiModalFooterButton[] = [];\n\n get footerButtons(): readonly UiModalFooterButton[] {\n return this.buttons;\n }\n\n get showHeaderClose(): boolean {\n return this.config.showHeaderClose !== false;\n }\n\n get closeOnBackdrop(): boolean {\n return this.config.closeOnBackdrop !== false;\n }\n\n get closeOnEscape(): boolean {\n return this.config.closeOnEscape !== false;\n }\n\n get panelClass(): string {\n const width = this.config.fullscreen\n ? 'max-w-[95vw]'\n : SIZES[this.config.size ?? 'lg'];\n return `flex w-full ${width} flex-col overflow-hidden rounded-panel border border-line bg-surface shadow-overlay`;\n }\n\n get bodyClass(): string {\n const height = this.config.fullscreen ? 'max-h-[78vh]' : 'max-h-[62vh]';\n return `overflow-y-auto px-5 py-5 ${height}`;\n }\n\n ngDoCheck(): void {\n const next = this.buildFooter();\n if (!sameFooter(this.buttons, next)) {\n this.buttons = next;\n this.cdr.markForCheck();\n }\n }\n\n press(id: string): void {\n this.action.emit(id);\n if (id === UI_MODAL_CLOSE_ID) {\n this.closed.emit('button');\n }\n }\n\n onBackdrop(event: MouseEvent): void {\n if (this.closeOnBackdrop && event.target === event.currentTarget) {\n this.closed.emit('backdrop');\n }\n }\n\n trackButton(index: number, button: UiModalFooterButton): string {\n return button.id;\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open && this.closeOnEscape) {\n this.closed.emit('escape');\n }\n }\n\n private buildFooter(): UiModalFooterButton[] {\n const footer: UiModalFooterButton[] = [];\n\n (this.config.extraButtons ?? []).forEach((button, index) => {\n this.push(footer, button, `extra-${index}`, 'secondary');\n });\n\n if (this.config.closeButton) {\n this.push(\n footer,\n this.config.closeButton,\n UI_MODAL_CLOSE_ID,\n 'secondary',\n );\n }\n\n if (this.config.confirmButton) {\n this.push(\n footer,\n this.config.confirmButton,\n UI_MODAL_CONFIRM_ID,\n 'primary',\n );\n }\n\n return footer;\n }\n\n private push(\n footer: UiModalFooterButton[],\n button: UiModalButton,\n fallbackId: string,\n fallbackVariant: UiButtonVariant,\n ): void {\n if (button.visible === false) {\n return;\n }\n\n const busy = this.loading || button.loading === true;\n const label =\n busy && button.loadingLabel ? button.loadingLabel : button.label;\n\n footer.push({\n id: button.id ?? fallbackId,\n label: label ?? '',\n variant: button.variant ?? fallbackVariant,\n disabled: busy || button.disabled === true,\n });\n }\n}\n\nexport interface UiConfirmModalOptions {\n title?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n confirmLoadingLabel?: string;\n size?: UiModalSize;\n destructive?: boolean;\n loading?: boolean;\n}\n\nexport function uiConfirmModalConfig(\n options: UiConfirmModalOptions = {},\n): UiModalConfig {\n return {\n title: options.title ?? '',\n size: options.size ?? 'sm',\n closeButton: {\n id: UI_MODAL_CLOSE_ID,\n label: options.cancelLabel ?? '',\n variant: 'secondary',\n },\n confirmButton: {\n id: UI_MODAL_CONFIRM_ID,\n label: options.confirmLabel ?? '',\n loadingLabel: options.confirmLoadingLabel,\n variant: options.destructive === false ? 'primary' : 'danger',\n loading: options.loading === true,\n },\n };\n}\n\n@Component({\n selector: 'ui-confirm-modal',\n standalone: true,\n imports: [NgIf, UiIconComponent, UiModalComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ui-modal\n [open]=\"open\"\n [config]=\"config\"\n [loading]=\"loading\"\n [closeLabel]=\"closeLabel\"\n (action)=\"onAction($event)\"\n (closed)=\"closed.emit()\">\n <div class=\"flex items-start gap-4\">\n <span *ngIf=\"icon\" [class]=\"iconClass\">\n <ui-icon [name]=\"icon\" [size]=\"19\"></ui-icon>\n </span>\n <div class=\"flex flex-col gap-1\">\n <span *ngIf=\"question\" class=\"text-lg font-medium text-ink\">\n {{ question }}\n </span>\n <span *ngIf=\"description\" class=\"text-base text-ink-muted\">\n {{ description }}\n </span>\n <ng-content></ng-content>\n </div>\n </div>\n </ui-modal>\n `,\n})\nexport class UiConfirmModalComponent implements OnChanges {\n @Input() open = false;\n @Input() title = '';\n @Input() question = '';\n @Input() description = '';\n @Input() confirmLabel = '';\n @Input() cancelLabel = '';\n @Input() confirmLoadingLabel = '';\n @Input() closeLabel = '';\n @Input() icon: UiIconName | null = 'trash-2';\n @Input() destructive = true;\n @Input() loading = false;\n @Input() size: UiModalSize = 'sm';\n\n @Output() readonly confirmed = new EventEmitter<void>();\n @Output() readonly closed = new EventEmitter<void>();\n\n protected config: UiModalConfig = uiConfirmModalConfig();\n\n get iconClass(): string {\n const tone = this.destructive\n ? 'border-danger/25 bg-danger-soft text-danger'\n : 'border-signal/25 bg-signal-soft text-signal';\n return `flex size-11 shrink-0 items-center justify-center rounded-panel border ${tone}`;\n }\n\n ngOnChanges(): void {\n this.config = uiConfirmModalConfig({\n title: this.title,\n confirmLabel: this.confirmLabel,\n cancelLabel: this.cancelLabel,\n confirmLoadingLabel: this.confirmLoadingLabel,\n size: this.size,\n destructive: this.destructive,\n });\n }\n\n protected onAction(id: string): void {\n if (id === UI_MODAL_CONFIRM_ID) {\n this.confirmed.emit();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'ui-page-header',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-wrap items-end justify-between gap-4 pb-6',\n },\n template: `\n <div class=\"flex flex-col gap-1\">\n <span\n *ngIf=\"eyebrow\"\n class=\"text-eyebrow uppercase text-ink-faint\"\n >{{ eyebrow }}</span\n >\n <div class=\"flex flex-wrap items-center gap-3\">\n <h1 class=\"text-3xl text-ink\">{{ heading }}</h1>\n <ng-content select=\"[headerMeta]\"></ng-content>\n </div>\n <p *ngIf=\"description\" class=\"max-w-2xl text-base text-ink-muted\">\n {{ description }}\n </p>\n </div>\n <div class=\"flex items-center gap-2\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class UiPageHeaderComponent {\n @Input({ required: true }) heading!: string;\n @Input() eyebrow?: string;\n @Input() description?: string;\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { NgOption } from '@ng-select/ng-select';\n\nexport interface UiSelectOptionContext {\n $implicit: unknown;\n item: unknown;\n item$: NgOption;\n index: number;\n searchTerm: string;\n}\n\nexport interface UiSelectLabelContext {\n $implicit: unknown;\n item: unknown;\n label: string;\n clear: (item: unknown) => void;\n}\n\n@Directive({\n selector: 'ng-template[uiSelectOption], ng-template[ng-option-tmp]',\n standalone: true,\n})\nexport class UiSelectOptionTemplateDirective {\n readonly template: TemplateRef<UiSelectOptionContext> = inject(TemplateRef);\n}\n\n@Directive({\n selector: 'ng-template[uiSelectLabel], ng-template[ng-label-tmp]',\n standalone: true,\n})\nexport class UiSelectLabelTemplateDirective {\n readonly template: TemplateRef<UiSelectLabelContext> = inject(TemplateRef);\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport {\n NgLabelTemplateDirective,\n NgOptionComponent,\n NgOptionTemplateDirective,\n NgSelectComponent,\n} from '@ng-select/ng-select';\nimport { Subject, merge } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport {\n UiSelectLabelTemplateDirective,\n UiSelectOptionTemplateDirective,\n} from './ui-select.directives';\n\nexport type UiSelectValue = unknown;\n\nexport interface UiSelectProjectedOption {\n $ngOptionValue: unknown;\n $ngOptionLabel: string;\n disabled: boolean;\n}\n\nconst PROJECTED_BIND_LABEL = 'label';\n\nfunction toProjectedOptions(\n options: readonly NgOptionComponent[]\n): readonly UiSelectProjectedOption[] {\n return options.map((option) => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.label,\n disabled: option.disabled,\n }));\n}\n\nfunction projectionEquals(\n a: readonly UiSelectProjectedOption[] | null,\n b: readonly UiSelectProjectedOption[]\n): boolean {\n if (!a || a.length !== b.length) {\n return false;\n }\n\n return b.every(\n (option, index) =>\n option.$ngOptionValue === a[index].$ngOptionValue &&\n option.$ngOptionLabel === a[index].$ngOptionLabel &&\n option.disabled === a[index].disabled\n );\n}\n\n@Component({\n selector: 'ui-select',\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n NgSelectComponent,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n FormsModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UiSelectComponent),\n multi: true,\n },\n ],\n host: {\n '[class]': '\"block \" + stateClass',\n '[attr.aria-invalid]': 'invalid ? \"true\" : null',\n },\n template: `\n <ng-select\n [items]=\"resolvedItems\"\n [bindLabel]=\"resolvedBindLabel\"\n [bindValue]=\"resolvedBindValue\"\n [placeholder]=\"placeholder\"\n [searchable]=\"searchable\"\n [clearable]=\"clearable\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [ariaLabel]=\"ariaLabel || undefined\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"modelOptions\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onValueChange($event)\"\n (blur)=\"onBlur()\">\n <ng-container *ngIf=\"optionTemplate as option\">\n <ng-template\n ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\"\n let-searchTerm=\"searchTerm\">\n <ng-container\n *ngTemplateOutlet=\"\n option;\n context: {\n $implicit: item,\n item: item,\n item$: item$,\n index: index,\n searchTerm: searchTerm\n }\n \"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"labelTemplate as selected\">\n <ng-template\n ng-label-tmp\n let-item=\"item\"\n let-clear=\"clear\"\n let-itemLabel=\"label\">\n <ng-container\n *ngTemplateOutlet=\"\n selected;\n context: {\n $implicit: item,\n item: item,\n clear: clear,\n label: itemLabel\n }\n \"></ng-container>\n </ng-template>\n </ng-container>\n </ng-select>\n `,\n})\nexport class UiSelectComponent\n implements AfterContentInit, ControlValueAccessor, OnDestroy\n{\n @Input() items: readonly unknown[] = [];\n @Input() bindLabel = '';\n @Input() bindValue = '';\n @Input() placeholder = '';\n @Input() searchable = false;\n @Input() clearable = true;\n @Input() multiple = false;\n @Input() loading = false;\n @Input() disabled = false;\n @Input() invalid = false;\n @Input('aria-label') ariaLabel = '';\n @Input() value: UiSelectValue = null;\n\n @Output() readonly valueChange = new EventEmitter<UiSelectValue>();\n\n @ContentChild(UiSelectOptionTemplateDirective)\n optionSlot?: UiSelectOptionTemplateDirective;\n\n @ContentChild(UiSelectLabelTemplateDirective)\n labelSlot?: UiSelectLabelTemplateDirective;\n\n @ContentChildren(NgOptionComponent, { descendants: true })\n projectedOptions?: QueryList<NgOptionComponent>;\n\n readonly modelOptions = { standalone: true };\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyed = new Subject<void>();\n private readonly resubscribe = new Subject<void>();\n private projected: readonly UiSelectProjectedOption[] | null = null;\n private onChange: (value: UiSelectValue) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get stateClass(): string {\n return this.invalid ? '[&_.ng-select-container]:border-danger' : '';\n }\n\n get optionTemplate(): TemplateRef<unknown> | null {\n return this.optionSlot?.template ?? null;\n }\n\n get labelTemplate(): TemplateRef<unknown> | null {\n return this.labelSlot?.template ?? null;\n }\n\n get resolvedItems(): readonly unknown[] {\n return this.projected ?? this.items;\n }\n\n get resolvedBindLabel(): string {\n return this.projected ? PROJECTED_BIND_LABEL : this.bindLabel;\n }\n\n get resolvedBindValue(): string {\n return this.projected ? '' : this.bindValue;\n }\n\n ngAfterContentInit(): void {\n const options = this.projectedOptions;\n\n if (!options) {\n return;\n }\n\n options.changes\n .pipe(startWith(options), takeUntil(this.destroyed))\n .subscribe(() => this.readProjectedOptions(options));\n }\n\n ngOnDestroy(): void {\n this.resubscribe.next();\n this.resubscribe.complete();\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n writeValue(value: UiSelectValue): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: UiSelectValue) => 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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange(value: UiSelectValue): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n private readProjectedOptions(options: QueryList<NgOptionComponent>): void {\n this.resubscribe.next();\n\n const current = options.toArray();\n this.projected = current.length ? toProjectedOptions(current) : null;\n this.cdr.markForCheck();\n\n if (!current.length) {\n return;\n }\n\n merge(...current.map((option) => option.stateChange$))\n .pipe(takeUntil(merge(this.resubscribe, this.destroyed)))\n .subscribe(() => this.refreshProjectedLabels(current));\n }\n\n private refreshProjectedLabels(options: readonly NgOptionComponent[]): void {\n const next = toProjectedOptions(options);\n\n if (projectionEquals(this.projected, next)) {\n return;\n }\n\n this.projected = next;\n this.cdr.detectChanges();\n }\n}\n\nexport const UI_SELECT_DIRECTIVES = [\n UiSelectComponent,\n UiSelectOptionTemplateDirective,\n UiSelectLabelTemplateDirective,\n NgOptionComponent,\n] as const;\n","import { NgClass, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiNavLink, UiNavSection } from './ui-nav.model';\n\nconst LINK =\n 'group relative flex h-10 items-center gap-4 border-l-[3px] border-transparent pl-5 pr-3 text-base text-ink-muted transition-colors duration-100 hover:bg-surface-hover hover:text-ink';\nconst LINK_ACTIVE = 'border-signal bg-signal-soft font-medium text-signal';\n\n@Component({\n selector: 'ui-sidebar-nav',\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n NgClass,\n NgTemplateOutlet,\n RouterLink,\n RouterLinkActive,\n UiIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'flex flex-col gap-4 py-3' },\n template: `\n <div *ngFor=\"let section of sections\" class=\"flex flex-col gap-0.5\">\n <span\n *ngIf=\"section.label && !collapsed\"\n class=\"mb-1 px-5 text-eyebrow uppercase text-ink-faint\">\n {{ section.label }}\n </span>\n <hr\n *ngIf=\"section.label && collapsed\"\n class=\"mx-4 mb-1 border-t border-line\" />\n\n <ng-container *ngFor=\"let item of section.items\">\n <a\n *ngIf=\"item.route && !item.children?.length\"\n [routerLink]=\"item.route\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [class]=\"rla.isActive ? linkClass + ' ' + activeClass : linkClass\"\n [title]=\"collapsed ? item.label : ''\">\n <ng-container\n *ngTemplateOutlet=\"content; context: { $implicit: item }\"></ng-container>\n </a>\n\n <a\n *ngIf=\"item.href\"\n [href]=\"item.href\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [class]=\"linkClass\"\n [title]=\"collapsed ? item.label : ''\">\n <ng-container\n *ngTemplateOutlet=\"content; context: { $implicit: item }\"></ng-container>\n <ui-icon\n *ngIf=\"!collapsed\"\n name=\"arrow-up-right\"\n [size]=\"13\"\n class=\"text-ink-faint\"></ui-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length\">\n <button\n type=\"button\"\n (click)=\"toggle(item.label)\"\n [class]=\"\n isGroupActive(item) ? linkClass + ' text-ink' : linkClass\n \"\n [title]=\"collapsed ? item.label : ''\">\n <ng-container\n *ngTemplateOutlet=\"\n content;\n context: { $implicit: item }\n \"></ng-container>\n <ui-icon\n *ngIf=\"!collapsed\"\n name=\"chevron-down\"\n [size]=\"14\"\n class=\"text-ink-faint transition-transform duration-150\"\n [ngClass]=\"{ 'rotate-180': isOpen(item) }\"></ui-icon>\n </button>\n\n <div\n *ngIf=\"isOpen(item) && !collapsed\"\n class=\"ml-8 flex flex-col gap-0.5 border-l border-line pl-2\">\n <a\n *ngFor=\"let child of item.children\"\n [routerLink]=\"child.route\"\n routerLinkActive\n #crla=\"routerLinkActive\"\n [class]=\"\n crla.isActive\n ? 'flex h-9 items-center rounded-control px-3 text-base font-medium text-signal bg-signal-soft'\n : 'flex h-9 items-center rounded-control px-3 text-base text-ink-muted transition-colors duration-100 hover:bg-surface-hover hover:text-ink'\n \">\n {{ child.label }}\n </a>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <ng-template #content let-item>\n <ui-icon\n *ngIf=\"item.icon\"\n [name]=\"item.icon\"\n [size]=\"20\"\n class=\"shrink-0\"></ui-icon>\n <span *ngIf=\"!collapsed\" class=\"flex-1 truncate text-left\">{{\n item.label\n }}</span>\n </ng-template>\n `,\n})\nexport class UiSidebarNavComponent {\n @Input({ required: true }) sections: UiNavSection[] = [];\n @Input() collapsed = false;\n\n readonly linkClass = LINK;\n readonly activeClass = LINK_ACTIVE;\n\n private readonly overrides = signal<ReadonlyMap<string, boolean>>(new Map());\n\n constructor(private readonly router: Router) {}\n\n isGroupActive(item: UiNavLink): boolean {\n return (item.children ?? []).some(\n (child) => !!child.route && this.router.isActive(child.route, false)\n );\n }\n\n isOpen(item: UiNavLink): boolean {\n return this.overrides().get(item.label) ?? this.isGroupActive(item);\n }\n\n toggle(label: string): void {\n const item = this.sections\n .flatMap((section) => section.items)\n .find((candidate) => candidate.label === label);\n if (!item) {\n return;\n }\n const next = new Map(this.overrides());\n next.set(label, !this.isOpen(item));\n this.overrides.set(next);\n }\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n signal,\n} from '@angular/core';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiNavSection } from './ui-nav.model';\nimport { UiSidebarNavComponent } from './ui-sidebar-nav.component';\n\n@Component({\n selector: 'ui-shell',\n standalone: true,\n imports: [\n NgIf,\n NgClass,\n UiIconComponent,\n UiButtonDirective,\n UiSidebarNavComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'flex h-dvh w-full flex-col overflow-hidden bg-ground' },\n template: `\n <header\n class=\"flex h-topbar shrink-0 items-center gap-2 border-b border-line bg-ground px-2 lg:px-4\">\n <button\n uiButton\n variant=\"ghost\"\n size=\"icon\"\n type=\"button\"\n [attr.aria-label]=\"menuLabel\"\n (click)=\"toggleMenu()\">\n <ui-icon name=\"menu\" [size]=\"20\"></ui-icon>\n </button>\n\n <a\n [href]=\"brandHref\"\n class=\"flex min-w-0 items-center gap-3 rounded-control px-2\">\n <span class=\"truncate text-xl text-ink\">{{ brand }}</span>\n <span *ngIf=\"section\" class=\"truncate text-xl font-light text-ink-muted\">\n {{ section }}\n </span>\n </a>\n\n <div class=\"flex min-w-0 flex-1 items-center gap-3\">\n <ng-content select=\"[shellTopbarStart]\"></ng-content>\n </div>\n <div class=\"flex items-center gap-1\">\n <ng-content select=\"[shellTopbarEnd]\"></ng-content>\n </div>\n </header>\n\n <div class=\"flex min-h-0 flex-1\">\n <div\n *ngIf=\"drawerOpen()\"\n class=\"fixed inset-0 z-30 bg-ink/40 lg:hidden\"\n (click)=\"closeDrawer()\"></div>\n\n <aside\n class=\"fixed inset-y-0 left-0 z-40 flex shrink-0 flex-col border-r border-line bg-ground transition-[width,transform] duration-200 lg:static lg:translate-x-0\"\n [ngClass]=\"[\n collapsed() ? 'w-sidebar-rail' : 'w-sidebar',\n drawerOpen() ? 'translate-x-0' : '-translate-x-full'\n ]\">\n <nav class=\"flex-1 overflow-y-auto overscroll-contain\">\n <ui-sidebar-nav\n [sections]=\"sections\"\n [collapsed]=\"collapsed()\"\n (click)=\"closeDrawer()\"></ui-sidebar-nav>\n </nav>\n\n <div class=\"border-t border-line p-3\">\n <ng-content select=\"[shellSidebarFooter]\"></ng-content>\n </div>\n </aside>\n\n <main class=\"min-w-0 flex-1 overflow-y-auto\">\n <div class=\"mx-auto w-full max-w-[1440px] px-4 py-6 lg:px-10 lg:py-8\">\n <ng-content></ng-content>\n </div>\n </main>\n </div>\n `,\n})\nexport class UiShellComponent {\n @Input({ required: true }) sections: UiNavSection[] = [];\n @Input() brand = 'Platform';\n @Input() section = '';\n @Input() brandHref = '/';\n @Input() expandLabel = '';\n @Input() collapseLabel = '';\n @Input() openMenuLabel = '';\n @Input() closeMenuLabel = '';\n\n readonly collapsed = signal(false);\n readonly drawerOpen = signal(false);\n\n get menuLabel(): string {\n if (this.isCompact) {\n return this.drawerOpen() ? this.closeMenuLabel : this.openMenuLabel;\n }\n return this.collapsed() ? this.expandLabel : this.collapseLabel;\n }\n\n toggleMenu(): void {\n if (this.isCompact) {\n this.drawerOpen.update((value) => !value);\n return;\n }\n this.collapsed.update((value) => !value);\n }\n\n closeDrawer(): void {\n this.drawerOpen.set(false);\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.closeDrawer();\n }\n\n private get isCompact(): boolean {\n return (\n typeof window !== 'undefined' &&\n window.matchMedia('(max-width: 1023px)').matches\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nexport type UiStatTone = 'signal' | 'ok' | 'info' | 'danger' | 'neutral';\n\nconst HINTS: Record<UiStatTone, string> = {\n signal: 'text-signal',\n ok: 'text-ok',\n info: 'text-info',\n danger: 'text-danger',\n neutral: 'text-ink-muted',\n};\n\n@Component({\n selector: 'ui-stat',\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class:\n 'flex flex-col gap-1 rounded-panel border border-line bg-surface px-5 py-5',\n },\n template: `\n <span class=\"text-eyebrow uppercase text-ink-faint\">{{ label }}</span>\n <span class=\"tabular text-metric text-ink\">{{ value }}</span>\n <span *ngIf=\"hint\" [class]=\"'text-sm ' + hintClass\">{{ hint }}</span>\n `,\n})\nexport class UiStatComponent {\n @Input({ required: true }) label!: string;\n @Input({ required: true }) value!: string | number;\n @Input() hint?: string;\n @Input() tone: UiStatTone = 'neutral';\n\n get hintClass(): string {\n return HINTS[this.tone];\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nexport type UiTableAlign = 'start' | 'center' | 'end';\n\nconst ALIGNMENTS: Record<UiTableAlign, string> = {\n start: 'text-left',\n center: 'text-center',\n end: 'text-right',\n};\n\nconst TH =\n 'border-b border-line px-4 py-3 text-sm font-medium text-ink-muted whitespace-nowrap';\n\nconst TD = 'border-b border-line px-4 py-3.5 align-middle text-ink';\n\nconst ROW_ACTIONS = 'whitespace-nowrap space-x-1 [&>*]:align-middle';\n\n@Directive({ selector: '[uiTableWrap]', standalone: true })\nexport class UiTableWrapDirective {\n @HostBinding('class')\n readonly classes = 'w-full overflow-x-auto';\n}\n\n@Directive({ selector: 'table[uiTable]', standalone: true })\nexport class UiTableDirective {\n @HostBinding('class')\n readonly classes = 'w-full border-collapse text-base';\n}\n\n@Directive({ selector: 'th[uiTh]', standalone: true })\nexport class UiThDirective {\n @Input() align: UiTableAlign = 'start';\n\n @HostBinding('class')\n get classes(): string {\n return `${TH} ${ALIGNMENTS[this.align]}`;\n }\n}\n\n@Directive({ selector: 'td[uiTd]', standalone: true })\nexport class UiTdDirective {\n @Input() align?: UiTableAlign;\n @Input() actions = false;\n\n @HostBinding('class')\n get classes(): string {\n const align = this.align ?? (this.actions ? 'end' : undefined);\n const alignment = align ? ALIGNMENTS[align] : '';\n const mode = this.actions ? ROW_ACTIONS : '';\n\n return `${TD} ${alignment} ${mode}`;\n }\n}\n\n@Directive({ selector: 'tr[uiTr]', standalone: true })\nexport class UiTrDirective {\n @HostBinding('class')\n readonly classes = 'transition-colors duration-75 hover:bg-surface-hover';\n}\n\nexport const UI_TABLE_DIRECTIVES = [\n UiTableWrapDirective,\n UiTableDirective,\n UiThDirective,\n UiTdDirective,\n UiTrDirective,\n] as const;\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nexport interface UiTab {\n id: string;\n label: string;\n badge?: string | number;\n}\n\n@Component({\n selector: 'ui-tabs',\n standalone: true,\n imports: [NgFor, NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block border-b border-line' },\n template: `\n <div class=\"flex gap-1\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"tab.id === active\"\n [class]=\"tabClass(tab.id)\"\n (click)=\"activeChange.emit(tab.id)\">\n {{ tab.label }}\n <span\n *ngIf=\"tab.badge !== undefined && tab.badge !== null\"\n class=\"rounded bg-ground-sunken px-1.5 py-0.5 text-eyebrow text-ink-muted\">\n {{ tab.badge }}\n </span>\n </button>\n </div>\n `,\n})\nexport class UiTabsComponent {\n @Input({ required: true }) tabs: UiTab[] = [];\n @Input() active = '';\n\n @Output() readonly activeChange = new EventEmitter<string>();\n\n tabClass(id: string): string {\n const base =\n 'relative -mb-px flex items-center gap-2 px-3 pb-3 pt-1 text-base transition-colors duration-100';\n return id === this.active\n ? `${base} font-medium text-ink after:absolute after:inset-x-0 after:bottom-0 after:h-rail after:bg-signal`\n : `${base} text-ink-muted hover:text-ink`;\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nexport type UiMonoSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type UiMonoTone = 'default' | 'muted' | 'faint';\n\nconst MONO_SIZES: Record<UiMonoSize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nconst MONO_TONES: Record<UiMonoTone, string> = {\n default: 'text-ink',\n muted: 'text-ink-muted',\n faint: 'text-ink-faint',\n};\n\n@Directive({ selector: '[uiMono]', standalone: true })\nexport class UiMonoDirective {\n @Input() size: UiMonoSize = 'sm';\n @Input() tone: UiMonoTone = 'default';\n @Input() tabular = false;\n\n @HostBinding('class')\n get classes(): string {\n const digits = this.tabular ? 'tabular' : '';\n return `font-mono ${MONO_SIZES[this.size]} ${MONO_TONES[this.tone]} ${digits}`;\n }\n}\n\n@Directive({ selector: '[uiEyebrow]', standalone: true })\nexport class UiEyebrowDirective {\n @HostBinding('class')\n readonly classes = 'text-eyebrow uppercase text-ink-faint';\n}\n\nexport const UI_TEXT_DIRECTIVES = [\n UiMonoDirective,\n UiEyebrowDirective,\n] as const;\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, inject, signal } from '@angular/core';\n\nexport type UiTheme = 'light' | 'dark';\n\nconst STORAGE_KEY = 'platform-theme';\n\n@Injectable({ providedIn: 'root' })\nexport class UiThemeService {\n private readonly document = inject(DOCUMENT);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n readonly theme = signal<UiTheme>('light');\n\n init(): void {\n if (!this.isBrowser) {\n return;\n }\n const stored = localStorage.getItem(STORAGE_KEY) as UiTheme | null;\n const prefersDark = window.matchMedia?.(\n '(prefers-color-scheme: dark)'\n ).matches;\n this.apply(stored ?? (prefersDark ? 'dark' : 'light'));\n }\n\n toggle(): void {\n this.apply(this.theme() === 'dark' ? 'light' : 'dark');\n }\n\n apply(theme: UiTheme): void {\n this.theme.set(theme);\n this.document.documentElement.setAttribute('data-theme', theme);\n if (this.isBrowser) {\n localStorage.setItem(STORAGE_KEY, theme);\n }\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Injector,\n Input,\n NgZone,\n Optional,\n Output,\n} from '@angular/core';\nimport {\n DefaultNoComponentGlobalConfig,\n Toast,\n ToastPackage,\n ToastRef,\n ToastrService,\n type IndividualConfig,\n} from 'ngx-toastr';\nimport { UiButtonDirective } from '../button/ui-button.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport type { UiIconName } from '../icon/ui-icons';\n\nexport type UiToastTone = 'ok' | 'danger' | 'warn' | 'info';\n\nexport interface UiToastPayload {\n tone?: UiToastTone;\n icon?: UiIconName;\n actionLabel?: string;\n closeLabel?: string;\n}\n\nexport const UI_TOAST_TYPES: Record<\n 'success' | 'error' | 'warning' | 'info',\n string\n> = {\n success: 'ui-toast-ok',\n error: 'ui-toast-danger',\n warning: 'ui-toast-warn',\n info: 'ui-toast-info',\n};\n\nconst HOST =\n 'pointer-events-auto relative mb-2 flex w-[380px] max-w-[calc(100vw-1.5rem)] items-start gap-3 overflow-hidden rounded-panel border border-line bg-surface-raised py-3 pl-4 pr-2 text-base shadow-overlay';\n\nconst ICONS: Record<UiToastTone, UiIconName> = {\n ok: 'check-circle-2',\n danger: 'circle-alert',\n warn: 'triangle-alert',\n info: 'info',\n};\n\nconst ICON_TONES: Record<UiToastTone, string> = {\n ok: 'text-ok',\n danger: 'text-danger',\n warn: 'text-warn',\n info: 'text-info',\n};\n\nconst EDGE_TONES: Record<UiToastTone, string> = {\n ok: 'bg-ok',\n danger: 'bg-danger',\n warn: 'bg-warn',\n info: 'bg-info',\n};\n\nconst TONE_BY_TYPE: Record<string, UiToastTone> = {\n [UI_TOAST_TYPES.success]: 'ok',\n [UI_TOAST_TYPES.error]: 'danger',\n [UI_TOAST_TYPES.warning]: 'warn',\n [UI_TOAST_TYPES.info]: 'info',\n 'toast-success': 'ok',\n 'toast-error': 'danger',\n 'toast-warning': 'warn',\n 'toast-info': 'info',\n};\n\nconst detachedService = { remove: () => false } as unknown as ToastrService;\n\nconst detachedPackage = (): ToastPackage =>\n new ToastPackage(\n 0,\n {\n ...DefaultNoComponentGlobalConfig,\n toastClass: '',\n titleClass: '',\n messageClass: '',\n timeOut: 0,\n extendedTimeOut: 0,\n disableTimeOut: true,\n progressBar: false,\n tapToDismiss: false,\n } as IndividualConfig,\n '',\n '',\n '',\n new ToastRef(null as unknown as ConstructorParameters<typeof ToastRef>[0])\n );\n\n@Component({\n selector: 'ui-toast',\n standalone: true,\n imports: [NgIf, UiIconComponent, UiButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: HOST, '[attr.role]': 'role' },\n animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition(\n 'inactive => active',\n animate('{{ easeTime }}ms {{ easing }}')\n ),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}')),\n ]),\n ],\n template: `\n <span\n aria-hidden=\"true\"\n class=\"absolute inset-y-0 left-0 w-rail\"\n [class]=\"edgeClass\"\n ></span>\n\n <ui-icon [name]=\"iconName\" [size]=\"16\" [class]=\"iconClass\"></ui-icon>\n\n <div class=\"flex min-w-0 flex-1 flex-col gap-0.5 py-0.5\">\n <p *ngIf=\"title\" class=\"font-medium wrap-break-word text-ink\">\n {{ title }}\n </p>\n <p *ngIf=\"message\" class=\"wrap-break-word text-ink-muted\">\n {{ message }}\n </p>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-1\">\n <button\n *ngIf=\"actionLabel\"\n uiButton\n variant=\"text\"\n size=\"sm\"\n type=\"button\"\n (click)=\"onActionClick($event)\"\n >\n {{ actionLabel }}\n </button>\n <button\n *ngIf=\"closable\"\n uiButton\n variant=\"ghost\"\n size=\"icon-sm\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel\"\n (click)=\"onCloseClick($event)\"\n >\n <ui-icon name=\"x\" [size]=\"16\"></ui-icon>\n </button>\n </div>\n `,\n})\nexport class UiToastComponent extends Toast {\n @Input() tone: UiToastTone = 'info';\n @Input() override title = '';\n @Input() override message: string | null = '';\n @Input() icon?: UiIconName;\n @Input() actionLabel = '';\n @Input() closeLabel = '';\n @Input() closable = true;\n\n @Output() readonly action = new EventEmitter<void>();\n @Output() readonly closed = new EventEmitter<void>();\n\n constructor(\n @Optional() @Inject(ToastPackage) toastPackage: ToastPackage | null,\n injector: Injector,\n ngZone: NgZone\n ) {\n super(\n toastPackage ? injector.get(ToastrService) : detachedService,\n toastPackage ?? detachedPackage(),\n ngZone\n );\n\n this.toastClasses = HOST;\n\n if (!toastPackage) {\n this.state.set({\n value: 'active',\n params: { easeTime: 0, easing: 'ease-in' },\n });\n return;\n }\n\n const payload = (toastPackage.config.payload ?? {}) as UiToastPayload;\n\n this.title = toastPackage.title ?? '';\n this.message = toastPackage.message ?? '';\n this.tone = payload.tone ?? TONE_BY_TYPE[toastPackage.toastType] ?? 'info';\n this.icon = payload.icon;\n this.actionLabel = payload.actionLabel ?? '';\n this.closeLabel = payload.closeLabel ?? '';\n this.closable = toastPackage.config.closeButton !== false;\n }\n\n get role(): 'alert' | 'status' {\n return this.tone === 'danger' || this.tone === 'warn' ? 'alert' : 'status';\n }\n\n get iconName(): UiIconName {\n return this.icon ?? ICONS[this.tone];\n }\n\n get iconClass(): string {\n return `mt-0.5 ${ICON_TONES[this.tone]}`;\n }\n\n get edgeClass(): string {\n return EDGE_TONES[this.tone];\n }\n\n onActionClick(event: Event): void {\n event.stopPropagation();\n this.toastPackage.triggerAction();\n this.action.emit();\n }\n\n onCloseClick(event: Event): void {\n event.stopPropagation();\n this.remove();\n this.closed.emit();\n }\n}\n","import type { GlobalConfig } from 'ngx-toastr';\nimport { UI_TOAST_TYPES, UiToastComponent } from './ui-toast.component';\n\nexport const UI_TOAST_CONFIG: Partial<GlobalConfig> = {\n toastComponent: UiToastComponent,\n positionClass: 'toast-top-right',\n toastClass: '',\n titleClass: '',\n messageClass: '',\n iconClasses: UI_TOAST_TYPES,\n closeButton: true,\n tapToDismiss: false,\n progressBar: false,\n newestOnTop: true,\n timeOut: 5000,\n extendedTimeOut: 2000,\n easeTime: 150,\n maxOpened: 4,\n autoDismiss: true,\n preventDuplicates: true,\n includeTitleDuplicates: true,\n};\n\nexport const uiToastConfig = (\n overrides: Partial<GlobalConfig> = {}\n): Partial<GlobalConfig> => ({ ...UI_TOAST_CONFIG, ...overrides });\n","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\n\nexport type UiTooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nconst BUBBLE_CLASS =\n 'pointer-events-none fixed z-50 max-w-64 wrap-break-word rounded-control bg-ink p-2 text-sm text-ink-inverse shadow-overlay';\n\nconst GAP = 8;\nconst EDGE = 8;\n\nlet tooltipCounter = 0;\n\n@Directive({\n selector: '[uiTooltip]',\n standalone: true,\n})\nexport class UiTooltipDirective implements OnChanges, OnDestroy {\n @Input('uiTooltip') text = '';\n @Input() uiTooltipPlacement: UiTooltipPlacement = 'top';\n @Input() uiTooltipDelay = 150;\n\n private readonly id = `ui-tooltip-${++tooltipCounter}`;\n\n private bubble: HTMLElement | null = null;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private previousDescribedBy: string | null = null;\n private detachers: (() => void)[] = [];\n\n constructor(\n private readonly hostRef: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n @Inject(DOCUMENT) private readonly doc: Document\n ) {}\n\n ngOnChanges(): void {\n if (!this.bubble) {\n return;\n }\n\n const text = this.label();\n\n if (!text) {\n this.hide();\n return;\n }\n\n this.renderer.setProperty(this.bubble, 'textContent', text);\n this.position();\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter')\n onPointerEnter(): void {\n this.scheduleShow(this.uiTooltipDelay);\n }\n\n @HostListener('mouseleave')\n onPointerLeave(): void {\n this.hide();\n }\n\n @HostListener('focusin')\n onFocusIn(): void {\n if (this.isKeyboardFocus()) {\n this.scheduleShow(0);\n }\n }\n\n @HostListener('focusout')\n onFocusOut(): void {\n this.hide();\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.hide();\n }\n\n private label(): string {\n return (this.text || '').trim();\n }\n\n private isKeyboardFocus(): boolean {\n try {\n return this.hostRef.nativeElement.matches(':focus-visible');\n } catch {\n return true;\n }\n }\n\n private scheduleShow(delay: number): void {\n if (this.bubble || !this.label()) {\n return;\n }\n\n this.clearTimer();\n\n if (delay <= 0) {\n this.show();\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n this.timer = setTimeout(() => {\n this.timer = null;\n this.show();\n }, delay);\n });\n }\n\n private show(): void {\n const text = this.label();\n\n if (this.bubble || !text) {\n return;\n }\n\n const bubble: HTMLElement = this.renderer.createElement('div');\n this.renderer.setAttribute(bubble, 'role', 'tooltip');\n this.renderer.setAttribute(bubble, 'id', this.id);\n this.renderer.setProperty(bubble, 'className', BUBBLE_CLASS);\n this.renderer.setProperty(bubble, 'textContent', text);\n this.renderer.setStyle(bubble, 'left', '0px');\n this.renderer.setStyle(bubble, 'top', '0px');\n this.renderer.appendChild(this.doc.body, bubble);\n this.bubble = bubble;\n\n const host = this.hostRef.nativeElement;\n this.previousDescribedBy = host.getAttribute('aria-describedby');\n this.renderer.setAttribute(\n host,\n 'aria-describedby',\n this.previousDescribedBy\n ? `${this.previousDescribedBy} ${this.id}`\n : this.id\n );\n\n this.position();\n this.trackViewport();\n }\n\n private hide(): void {\n this.clearTimer();\n\n for (const detach of this.detachers) {\n detach();\n }\n this.detachers = [];\n\n if (!this.bubble) {\n return;\n }\n\n this.renderer.removeChild(this.doc.body, this.bubble);\n this.bubble = null;\n\n const host = this.hostRef.nativeElement;\n\n if (this.previousDescribedBy) {\n this.renderer.setAttribute(\n host,\n 'aria-describedby',\n this.previousDescribedBy\n );\n } else {\n this.renderer.removeAttribute(host, 'aria-describedby');\n }\n\n this.previousDescribedBy = null;\n }\n\n private position(): void {\n const view = this.doc.defaultView;\n\n if (!this.bubble || !view) {\n return;\n }\n\n const host = this.hostRef.nativeElement.getBoundingClientRect();\n const bubble = this.bubble.getBoundingClientRect();\n\n let top: number;\n let left: number;\n\n switch (this.uiTooltipPlacement) {\n case 'bottom':\n top = host.bottom + GAP;\n left = host.left + (host.width - bubble.width) / 2;\n break;\n case 'left':\n top = host.top + (host.height - bubble.height) / 2;\n left = host.left - bubble.width - GAP;\n break;\n case 'right':\n top = host.top + (host.height - bubble.height) / 2;\n left = host.right + GAP;\n break;\n default:\n top = host.top - bubble.height - GAP;\n left = host.left + (host.width - bubble.width) / 2;\n }\n\n const maxLeft = view.innerWidth - bubble.width - EDGE;\n const maxTop = view.innerHeight - bubble.height - EDGE;\n\n left = Math.max(EDGE, Math.min(left, Math.max(EDGE, maxLeft)));\n top = Math.max(EDGE, Math.min(top, Math.max(EDGE, maxTop)));\n\n this.renderer.setStyle(this.bubble, 'left', `${Math.round(left)}px`);\n this.renderer.setStyle(this.bubble, 'top', `${Math.round(top)}px`);\n }\n\n private trackViewport(): void {\n this.zone.runOutsideAngular(() => {\n const view = this.doc.defaultView;\n\n if (!view) {\n return;\n }\n\n const update = () => this.position();\n\n view.addEventListener('scroll', update, true);\n view.addEventListener('resize', update);\n\n this.detachers.push(() => {\n view.removeEventListener('scroll', update, true);\n view.removeEventListener('resize', update);\n });\n });\n }\n\n private clearTimer(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["HOST_BASE","ICONS","ICON_TONES","SIZES","ALIGNMENTS","i1"],"mappings":"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"}
|