@atelier-ui/angular 0.2.21 → 0.2.23

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.
@@ -220,6 +220,11 @@ const ATL_ICON_GEOMETRY = {
220
220
  'chevron-down': { kind: 'stroke', paths: ['M6 9L12 15L18 9'] },
221
221
  'chevron-left': { kind: 'stroke', paths: ['M15 6L9 12L15 18'] },
222
222
  'chevron-right': { kind: 'stroke', paths: ['M9 6L15 12L9 18'] },
223
+ // Two chevrons, for "jump to the first / last page" as against "one step".
224
+ // AtlPagination drew these as the guillemets « and », which are quotation marks
225
+ // in typography and were arrows only by resemblance (ADR-0055).
226
+ 'chevron-double-left': { kind: 'stroke', paths: ['M18 6L12 12L18 18', 'M11 6L5 12L11 18'] },
227
+ 'chevron-double-right': { kind: 'stroke', paths: ['M6 6L12 12L6 18', 'M13 6L19 12L13 18'] },
223
228
  'arrow-left': { kind: 'stroke', paths: ['M19 12H5', 'M11 6L5 12L11 18'] },
224
229
  'arrow-right': { kind: 'stroke', paths: ['M5 12H19', 'M13 6L19 12L13 18'] },
225
230
  // ── sorting — two solid triangles, used separately by AtlTable ────────────
@@ -411,7 +416,14 @@ class AtlInput {
411
416
  /** @internal */
412
417
  errorId = `atl-input-errors-${nextId$d++}`;
413
418
  /** @internal */
414
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
419
+ /**
420
+ * The message renders when there is a message. Gating it on `touched` as well was
421
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
422
+ * no equivalent, so the same four fields showed their errors at three different
423
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
424
+ * form layer, which is where `touched` lives (ADR-0055).
425
+ */
426
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
415
427
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
416
428
  /** @internal */
417
429
  hostClasses = computed(() => {
@@ -541,7 +553,14 @@ class AtlTextarea {
541
553
  /** @internal */
542
554
  errorId = `atl-textarea-errors-${nextId$c++}`;
543
555
  /** @internal */
544
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
556
+ /**
557
+ * The message renders when there is a message. Gating it on `touched` as well was
558
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
559
+ * no equivalent, so the same four fields showed their errors at three different
560
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
561
+ * form layer, which is where `touched` lives (ADR-0055).
562
+ */
563
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
545
564
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
546
565
  /** @internal */
547
566
  hostClasses = computed(() => {
@@ -673,7 +692,14 @@ class AtlCheckbox {
673
692
  nativeInput = viewChild('nativeInput', /* @ts-ignore */
674
693
  ...(ngDevMode ? [{ debugName: "nativeInput" }] : /* istanbul ignore next */ []));
675
694
  /** @internal */
676
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
695
+ /**
696
+ * The message renders when there is a message. Gating it on `touched` as well was
697
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
698
+ * no equivalent, so the same four fields showed their errors at three different
699
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
700
+ * form layer, which is where `touched` lives (ADR-0055).
701
+ */
702
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
677
703
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
678
704
  /** @internal */
679
705
  hostClasses = computed(() => {
@@ -934,7 +960,14 @@ class AtlRadioGroup {
934
960
  /** @internal */
935
961
  keyManager = null;
936
962
  /** @internal */
937
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
963
+ /**
964
+ * The message renders when there is a message. Gating it on `touched` as well was
965
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
966
+ * no equivalent, so the same four fields showed their errors at three different
967
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
968
+ * form layer, which is where `touched` lives (ADR-0055).
969
+ */
970
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
938
971
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
939
972
  /** @internal */
940
973
  hostClasses = computed(() => {
@@ -1060,7 +1093,14 @@ class AtlToggle {
1060
1093
  /** @internal */
1061
1094
  errorId = `atl-toggle-errors-${nextId$8++}`;
1062
1095
  /** @internal */
1063
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
1096
+ /**
1097
+ * The message renders when there is a message. Gating it on `touched` as well was
1098
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
1099
+ * no equivalent, so the same four fields showed their errors at three different
1100
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
1101
+ * form layer, which is where `touched` lives (ADR-0055).
1102
+ */
1103
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
1064
1104
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
1065
1105
  /** @internal */
1066
1106
  hostClasses = computed(() => {
@@ -1322,7 +1362,14 @@ class AtlSelect {
1322
1362
  selectedLabel = computed(() => this.optionsList().find((o) => o.value === this.value())?.labelText ?? '', /* @ts-ignore */
1323
1363
  ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
1324
1364
  /** @internal */
1325
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
1365
+ /**
1366
+ * The message renders when there is a message. Gating it on `touched` as well was
1367
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
1368
+ * no equivalent, so the same four fields showed their errors at three different
1369
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
1370
+ * form layer, which is where `touched` lives (ADR-0055).
1371
+ */
1372
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
1326
1373
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
1327
1374
  /** @internal */
1328
1375
  hostClasses = computed(() => {
@@ -1502,12 +1549,20 @@ class AtlSelect {
1502
1549
  [attr.aria-controls]="panelId"
1503
1550
  [attr.aria-activedescendant]="activeOptionId()"
1504
1551
  [attr.aria-invalid]="invalid() || null"
1552
+ [attr.aria-describedby]="showErrors() ? errorId : null"
1505
1553
  [attr.disabled]="disabled() || null"
1506
1554
  (click)="onTriggerClick()"
1507
1555
  (blur)="onTriggerBlur()"
1508
1556
  >
1509
1557
  <span class="trigger-text">{{ selectedLabel() || placeholder() }}</span>
1510
- <span class="trigger-icon" aria-hidden="true">▾</span>
1558
+ <!-- The slot is always in the flex row so the label's truncation point does not
1559
+ move when the state flips; only its content is conditional. -->
1560
+ <span class="invalid-slot" aria-hidden="true">
1561
+ @if (invalid()) {
1562
+ <atl-icon name="danger" size="sm" class="invalid-icon" />
1563
+ }
1564
+ </span>
1565
+ <span class="trigger-icon" aria-hidden="true"><atl-icon name="chevron-down" size="sm" /></span>
1511
1566
  </button>
1512
1567
 
1513
1568
  <div
@@ -1527,11 +1582,11 @@ class AtlSelect {
1527
1582
  }
1528
1583
  </div>
1529
1584
  }
1530
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;cursor:pointer;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast)}.trigger:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.trigger:focus-visible,:host(.is-open) .trigger{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}.trigger:disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-invalid) .trigger{border-color:var(--ui-color-input-border-invalid)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}.trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trigger-icon{flex-shrink:0;margin-left:var(--ui-spacing-2);color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast)}:host(.is-open) .trigger-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);display:none}.panel.is-open{display:block}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1585
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;cursor:pointer;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast)}.trigger:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.trigger:focus-visible,:host(.is-open) .trigger{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}.trigger:disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-invalid) .trigger{border-color:var(--ui-color-input-border-invalid)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}.trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trigger-icon{flex-shrink:0;margin-left:var(--ui-spacing-1);color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast)}:host(.is-open) .trigger-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);display:none}.panel.is-open{display:block}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text)}.invalid-slot{flex-shrink:0;width:1rem;height:1rem;margin-left:var(--ui-spacing-2)}:host(.is-invalid) .invalid-icon{color:var(--ui-color-danger);pointer-events:none}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1531
1586
  }
1532
1587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlSelect, decorators: [{
1533
1588
  type: Component,
1534
- args: [{ selector: 'atl-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
1589
+ args: [{ selector: 'atl-select', standalone: true, imports: [AtlIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: `
1535
1590
  <button
1536
1591
  type="button"
1537
1592
  class="trigger"
@@ -1541,12 +1596,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
1541
1596
  [attr.aria-controls]="panelId"
1542
1597
  [attr.aria-activedescendant]="activeOptionId()"
1543
1598
  [attr.aria-invalid]="invalid() || null"
1599
+ [attr.aria-describedby]="showErrors() ? errorId : null"
1544
1600
  [attr.disabled]="disabled() || null"
1545
1601
  (click)="onTriggerClick()"
1546
1602
  (blur)="onTriggerBlur()"
1547
1603
  >
1548
1604
  <span class="trigger-text">{{ selectedLabel() || placeholder() }}</span>
1549
- <span class="trigger-icon" aria-hidden="true">▾</span>
1605
+ <!-- The slot is always in the flex row so the label's truncation point does not
1606
+ move when the state flips; only its content is conditional. -->
1607
+ <span class="invalid-slot" aria-hidden="true">
1608
+ @if (invalid()) {
1609
+ <atl-icon name="danger" size="sm" class="invalid-icon" />
1610
+ }
1611
+ </span>
1612
+ <span class="trigger-icon" aria-hidden="true"><atl-icon name="chevron-down" size="sm" /></span>
1550
1613
  </button>
1551
1614
 
1552
1615
  <div
@@ -1570,7 +1633,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
1570
1633
  role: 'combobox',
1571
1634
  '[class]': 'hostClasses()',
1572
1635
  '(keydown)': 'onKeydown($event)',
1573
- }, providers: [{ provide: ATL_SELECT, useExisting: AtlSelect }], styles: [":host,:host *{box-sizing:border-box}:host{display:inline-block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;cursor:pointer;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast)}.trigger:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.trigger:focus-visible,:host(.is-open) .trigger{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}.trigger:disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-invalid) .trigger{border-color:var(--ui-color-input-border-invalid)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}.trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trigger-icon{flex-shrink:0;margin-left:var(--ui-spacing-2);color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast)}:host(.is-open) .trigger-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);display:none}.panel.is-open{display:block}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text)}\n"] }]
1636
+ }, providers: [{ provide: ATL_SELECT, useExisting: AtlSelect }], styles: [":host,:host *{box-sizing:border-box}:host{display:inline-block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;cursor:pointer;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast)}.trigger:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.trigger:focus-visible,:host(.is-open) .trigger{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}.trigger:disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-invalid) .trigger{border-color:var(--ui-color-input-border-invalid)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}.trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trigger-icon{flex-shrink:0;margin-left:var(--ui-spacing-1);color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast)}:host(.is-open) .trigger-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);display:none}.panel.is-open{display:block}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text)}.invalid-slot{flex-shrink:0;width:1rem;height:1rem;margin-left:var(--ui-spacing-2)}:host(.is-invalid) .invalid-icon{color:var(--ui-color-danger);pointer-events:none}\n"] }]
1574
1637
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }] } });
1575
1638
 
1576
1639
  let nextOptionId = 0;
@@ -1749,7 +1812,14 @@ class AtlCombobox {
1749
1812
  }, /* @ts-ignore */
1750
1813
  ...(ngDevMode ? [{ debugName: "activeOptionId" }] : /* istanbul ignore next */ []));
1751
1814
  /** @internal */
1752
- showErrors = computed(() => this.touched() && this.invalid() && this.errors().length > 0, /* @ts-ignore */
1815
+ /**
1816
+ * The message renders when there is a message. Gating it on `touched` as well was
1817
+ * an Angular-only rule: `touched` is not in the spec contract and React and Vue have
1818
+ * no equivalent, so the same four fields showed their errors at three different
1819
+ * moments depending on the framework. Deciding *when* to pass errors belongs to the
1820
+ * form layer, which is where `touched` lives (ADR-0055).
1821
+ */
1822
+ showErrors = computed(() => this.errors().length > 0, /* @ts-ignore */
1753
1823
  ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
1754
1824
  /** @internal */
1755
1825
  hostClasses = computed(() => {
@@ -1897,6 +1967,7 @@ class AtlCombobox {
1897
1967
  aria-autocomplete="list"
1898
1968
  [attr.aria-activedescendant]="activeOptionId()"
1899
1969
  [attr.aria-invalid]="invalid() || null"
1970
+ [attr.aria-describedby]="showErrors() ? errorId : null"
1900
1971
  [attr.disabled]="disabled() || null"
1901
1972
  [attr.required]="required() || null"
1902
1973
  [attr.name]="name() || null"
@@ -1952,7 +2023,7 @@ class AtlCombobox {
1952
2023
  }
1953
2024
  </div>
1954
2025
  }
1955
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.combobox-wrapper{position:relative;display:flex;align-items:center}.combobox-input{width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-8) calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast);cursor:text}.combobox-input::placeholder{color:var(--ui-color-placeholder)}.combobox-input:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.combobox-input:focus-visible,:host(.is-open) .combobox-input{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}:host(.is-invalid) .combobox-input{border-color:var(--ui-color-input-border-invalid)}:host(.is-invalid) .combobox-input:focus-visible{border-color:var(--ui-color-input-border-invalid);box-shadow:var(--ui-focus-ring-danger)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-disabled) .combobox-input{cursor:not-allowed}.combobox-icon{position:absolute;right:var(--ui-spacing-4);pointer-events:none;color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast);display:flex;align-items:center}:host(.is-open) .combobox-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);list-style:none}.option{display:flex;align-items:center;justify-content:space-between;min-height:var(--ui-row-height-sm);padding-block:0;line-height:var(--ui-line-height-tight);padding-inline:var(--ui-spacing-4);cursor:pointer;color:var(--ui-color-text);font-size:var(--ui-font-size-md);transition:background-color var(--ui-transition-fast)}.option:hover:not(.is-disabled){background-color:var(--ui-color-surface-sunken)}.option.is-active{background-color:var(--ui-color-primary-light);color:var(--ui-color-primary)}.option.is-selected{font-weight:var(--ui-font-weight-semibold)}.option.is-disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}.option-check{color:var(--ui-color-primary);flex-shrink:0}.no-results{padding:var(--ui-spacing-4);text-align:center;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm)}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text);line-height:var(--ui-line-height-normal)}:host(.is-readonly) .atl-combobox-input{border-color:transparent;cursor:default}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2026
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.combobox-wrapper{position:relative;display:flex;align-items:center}.combobox-input{width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) calc(var(--ui-spacing-4) + 1.25rem + var(--ui-spacing-5)) calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast);cursor:text}.combobox-input::placeholder{color:var(--ui-color-placeholder)}.combobox-input:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.combobox-input:focus-visible,:host(.is-open) .combobox-input{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}:host(.is-invalid) .combobox-input{border-color:var(--ui-color-input-border-invalid)}:host(.is-invalid) .combobox-input:focus-visible{border-color:var(--ui-color-input-border-invalid);box-shadow:var(--ui-focus-ring-danger)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-disabled) .combobox-input{cursor:not-allowed}.combobox-icon{position:absolute;inset-inline-end:var(--ui-spacing-4);pointer-events:none;color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast);display:flex;align-items:center}:host(.is-open) .combobox-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);list-style:none}.option{display:flex;align-items:center;justify-content:space-between;min-height:var(--ui-row-height-sm);padding-block:0;line-height:var(--ui-line-height-tight);padding-inline:var(--ui-spacing-4);cursor:pointer;color:var(--ui-color-text);font-size:var(--ui-font-size-md);transition:background-color var(--ui-transition-fast)}.option:hover:not(.is-disabled){background-color:var(--ui-color-surface-sunken)}.option.is-active{background-color:var(--ui-color-primary-light);color:var(--ui-color-primary)}.option.is-selected{font-weight:var(--ui-font-weight-semibold)}.option.is-disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}.option-check{color:var(--ui-color-primary);flex-shrink:0}.no-results{padding:var(--ui-spacing-4);text-align:center;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm)}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text);line-height:var(--ui-line-height-normal)}:host(.is-readonly) .atl-combobox-input{border-color:transparent;cursor:default}:host(.is-invalid) .invalid-icon{position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:calc(var(--ui-spacing-4) + var(--ui-spacing-5));color:var(--ui-color-danger);pointer-events:none}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1956
2027
  }
1957
2028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlCombobox, decorators: [{
1958
2029
  type: Component,
@@ -1970,6 +2041,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
1970
2041
  aria-autocomplete="list"
1971
2042
  [attr.aria-activedescendant]="activeOptionId()"
1972
2043
  [attr.aria-invalid]="invalid() || null"
2044
+ [attr.aria-describedby]="showErrors() ? errorId : null"
1973
2045
  [attr.disabled]="disabled() || null"
1974
2046
  [attr.required]="required() || null"
1975
2047
  [attr.name]="name() || null"
@@ -2027,7 +2099,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
2027
2099
  }
2028
2100
  `, host: {
2029
2101
  '[class]': 'hostClasses()',
2030
- }, styles: [":host,:host *{box-sizing:border-box}:host{display:block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.combobox-wrapper{position:relative;display:flex;align-items:center}.combobox-input{width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-8) calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast);cursor:text}.combobox-input::placeholder{color:var(--ui-color-placeholder)}.combobox-input:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.combobox-input:focus-visible,:host(.is-open) .combobox-input{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}:host(.is-invalid) .combobox-input{border-color:var(--ui-color-input-border-invalid)}:host(.is-invalid) .combobox-input:focus-visible{border-color:var(--ui-color-input-border-invalid);box-shadow:var(--ui-focus-ring-danger)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-disabled) .combobox-input{cursor:not-allowed}.combobox-icon{position:absolute;right:var(--ui-spacing-4);pointer-events:none;color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast);display:flex;align-items:center}:host(.is-open) .combobox-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);list-style:none}.option{display:flex;align-items:center;justify-content:space-between;min-height:var(--ui-row-height-sm);padding-block:0;line-height:var(--ui-line-height-tight);padding-inline:var(--ui-spacing-4);cursor:pointer;color:var(--ui-color-text);font-size:var(--ui-font-size-md);transition:background-color var(--ui-transition-fast)}.option:hover:not(.is-disabled){background-color:var(--ui-color-surface-sunken)}.option.is-active{background-color:var(--ui-color-primary-light);color:var(--ui-color-primary)}.option.is-selected{font-weight:var(--ui-font-weight-semibold)}.option.is-disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}.option-check{color:var(--ui-color-primary);flex-shrink:0}.no-results{padding:var(--ui-spacing-4);text-align:center;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm)}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text);line-height:var(--ui-line-height-normal)}:host(.is-readonly) .atl-combobox-input{border-color:transparent;cursor:default}\n"] }]
2102
+ }, styles: [":host,:host *{box-sizing:border-box}:host{display:block;position:relative;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-size:var(--ui-font-size-md)}.combobox-wrapper{position:relative;display:flex;align-items:center}.combobox-input{width:100%;min-height:var(--ui-control-height-md);box-sizing:border-box;line-height:var(--ui-line-height-tight);padding:calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) calc(var(--ui-spacing-4) + 1.25rem + var(--ui-spacing-5)) calc((var(--ui-control-height-md) - var(--ui-line-height-tight) * var(--ui-font-size-md)) / 2 - var(--ui-border-width)) var(--ui-spacing-4);font-family:inherit;font-size:inherit;color:var(--ui-color-text);background-color:var(--ui-color-input-bg);border:var(--ui-border-width) solid var(--ui-color-input-border);border-radius:var(--ui-radius-md);outline:none;transition:border-color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),background-color var(--ui-transition-fast);cursor:text}.combobox-input::placeholder{color:var(--ui-color-placeholder)}.combobox-input:hover:not(:disabled){border-color:var(--ui-color-input-border-hover)}.combobox-input:focus-visible,:host(.is-open) .combobox-input{border-color:var(--ui-color-input-border-focus);box-shadow:var(--ui-focus-ring)}:host(.is-invalid) .combobox-input{border-color:var(--ui-color-input-border-invalid)}:host(.is-invalid) .combobox-input:focus-visible{border-color:var(--ui-color-input-border-invalid);box-shadow:var(--ui-focus-ring-danger)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed}:host(.is-disabled) .combobox-input{cursor:not-allowed}.combobox-icon{position:absolute;inset-inline-end:var(--ui-spacing-4);pointer-events:none;color:var(--ui-color-text-muted);transition:transform var(--ui-transition-fast);display:flex;align-items:center}:host(.is-open) .combobox-icon{transform:rotate(180deg)}.panel{position:absolute;left:0;top:calc(100% + var(--ui-spacing-2));width:100%;max-height:16rem;overflow-y:auto;margin:0;padding:var(--ui-spacing-2) 0;background-color:var(--ui-color-surface-raised);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-lg);z-index:var(--ui-z-dropdown);list-style:none}.option{display:flex;align-items:center;justify-content:space-between;min-height:var(--ui-row-height-sm);padding-block:0;line-height:var(--ui-line-height-tight);padding-inline:var(--ui-spacing-4);cursor:pointer;color:var(--ui-color-text);font-size:var(--ui-font-size-md);transition:background-color var(--ui-transition-fast)}.option:hover:not(.is-disabled){background-color:var(--ui-color-surface-sunken)}.option.is-active{background-color:var(--ui-color-primary-light);color:var(--ui-color-primary)}.option.is-selected{font-weight:var(--ui-font-weight-semibold)}.option.is-disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}.option-check{color:var(--ui-color-primary);flex-shrink:0}.no-results{padding:var(--ui-spacing-4);text-align:center;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm)}.errors{margin-top:var(--ui-spacing-2)}.error-message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-error-text);line-height:var(--ui-line-height-normal)}:host(.is-readonly) .atl-combobox-input{border-color:transparent;cursor:default}:host(.is-invalid) .invalid-icon{position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:calc(var(--ui-spacing-4) + var(--ui-spacing-5));color:var(--ui-color-danger);pointer-events:none}\n"] }]
2031
2103
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], inputEl: [{ type: i0.ViewChild, args: ['inputEl', { isSignal: true }] }] } });
2032
2104
 
2033
2105
  const ATL_DIALOG = new InjectionToken('ATL_DIALOG');
@@ -3255,7 +3327,7 @@ class AtlAvatar {
3255
3327
  @if (status()) {
3256
3328
  <span [class]="'status-dot status-' + status()" aria-hidden="true"></span>
3257
3329
  }
3258
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:.625rem}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:.5625rem}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3330
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:var(--ui-font-size-2xs)}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:var(--ui-font-size-2xs)}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3259
3331
  }
3260
3332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlAvatar, decorators: [{
3261
3333
  type: Component,
@@ -3275,7 +3347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3275
3347
  '[class]': 'hostClasses()',
3276
3348
  role: 'img',
3277
3349
  '[attr.aria-label]': 'ariaLabel()',
3278
- }, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:.625rem}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:.5625rem}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"] }]
3350
+ }, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:var(--ui-font-size-2xs)}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:var(--ui-font-size-2xs)}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"] }]
3279
3351
  }], ctorParameters: () => [], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }] } });
3280
3352
  /**
3281
3353
  * Groups multiple avatars with overlap and an overflow count badge.
@@ -3314,7 +3386,7 @@ class AtlAvatarGroup {
3314
3386
  @if (overflowCount() > 0) {
3315
3387
  <span [class]="'overflow-badge size-' + size()">+{{ overflowCount() }}</span>
3316
3388
  }
3317
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:.625rem}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:.5625rem}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3389
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:var(--ui-font-size-2xs)}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:var(--ui-font-size-2xs)}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3318
3390
  }
3319
3391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlAvatarGroup, decorators: [{
3320
3392
  type: Component,
@@ -3326,7 +3398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3326
3398
  `, host: {
3327
3399
  class: 'group',
3328
3400
  '[class]': '"group size-" + size()',
3329
- }, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:.625rem}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:.5625rem}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"] }]
3401
+ }, styles: [":host,:host *{box-sizing:border-box}:host{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;flex-shrink:0;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight);font-weight:var(--ui-font-weight-semibold);background-color:color-mix(in srgb,var(--ui-color-primary) 12%,var(--ui-color-surface-sunken));color:var(--ui-color-primary);-webkit-user-select:none;user-select:none}:host(.size-xs){width:24px;height:24px;font-size:var(--ui-font-size-2xs)}:host(.size-sm){width:32px;height:32px;font-size:var(--ui-font-size-xs)}:host(.size-md){width:40px;height:40px;font-size:var(--ui-font-size-sm)}:host(.size-lg){width:48px;height:48px;font-size:var(--ui-font-size-md)}:host(.size-xl){width:64px;height:64px;font-size:var(--ui-font-size-lg)}:host(.shape-circle){border-radius:var(--ui-radius-full)}:host(.shape-square){border-radius:var(--ui-radius-md)}img{width:100%;height:100%;object-fit:cover;display:block}.initials{line-height:1;letter-spacing:.02em}atl-icon.icon{width:55%;height:55%;opacity:.6}.status-dot{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:6px;min-height:6px;max-width:14px;max-height:14px;border-radius:var(--ui-radius-full);border:var(--ui-border-width-thick) solid var(--ui-color-surface);box-sizing:content-box}.status-dot.status-online{background-color:var(--ui-color-success)}.status-dot.status-offline{background-color:var(--ui-color-text-muted)}.status-dot.status-away{background-color:var(--ui-color-warning)}.status-dot.status-busy{background-color:var(--ui-color-danger)}:host(.group){display:inline-flex;align-items:center;background:none;overflow:visible;padding-inline-start:4px}:host-context(atl-avatar-group){box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text-muted);border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-full);font-weight:var(--ui-font-weight-semibold);box-shadow:0 0 0 2px var(--ui-color-surface);margin-inline-start:-8px}.overflow-badge.size-xs{width:24px;height:24px;font-size:var(--ui-font-size-2xs)}.overflow-badge.size-sm{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.overflow-badge.size-md{width:40px;height:40px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-lg{width:48px;height:48px;font-size:var(--ui-font-size-sm)}.overflow-badge.size-xl{width:64px;height:64px;font-size:var(--ui-font-size-md)}\n"] }]
3330
3402
  }], ctorParameters: () => [], propDecorators: { max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], avatarEls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AtlAvatar), { ...{ read: ElementRef }, isSignal: true }] }] } });
3331
3403
 
3332
3404
  /**
@@ -3596,7 +3668,7 @@ class AtlPagination {
3596
3668
  [disabled]="page() <= 1"
3597
3669
  aria-label="First page"
3598
3670
  (click)="goFirst()"
3599
- >«</button>
3671
+ ><atl-icon name="chevron-double-left" size="sm" /></button>
3600
3672
  </li>
3601
3673
  }
3602
3674
  <li>
@@ -3606,7 +3678,7 @@ class AtlPagination {
3606
3678
  [disabled]="page() <= 1"
3607
3679
  aria-label="Previous page"
3608
3680
  (click)="goPrev()"
3609
- >‹</button>
3681
+ ><atl-icon name="chevron-left" size="sm" /></button>
3610
3682
  </li>
3611
3683
 
3612
3684
  @for (item of pageItems(); track $index) {
@@ -3634,7 +3706,7 @@ class AtlPagination {
3634
3706
  [disabled]="page() >= pageCount()"
3635
3707
  aria-label="Next page"
3636
3708
  (click)="goNext()"
3637
- >›</button>
3709
+ ><atl-icon name="chevron-right" size="sm" /></button>
3638
3710
  </li>
3639
3711
  @if (showFirstLast()) {
3640
3712
  <li>
@@ -3644,16 +3716,16 @@ class AtlPagination {
3644
3716
  [disabled]="page() >= pageCount()"
3645
3717
  aria-label="Last page"
3646
3718
  (click)="goLast()"
3647
- >»</button>
3719
+ ><atl-icon name="chevron-double-right" size="sm" /></button>
3648
3720
  </li>
3649
3721
  }
3650
3722
  </ul>
3651
3723
  </nav>
3652
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:block;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.page-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-spacing-2);list-style:none;margin:0;padding:0}.page-btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;padding:0 var(--ui-spacing-2);border-radius:var(--ui-radius-md);border:var(--ui-border-width) solid transparent;background:transparent;color:var(--ui-color-text);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast)}.page-btn:hover:not(:disabled){background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text)}.page-btn:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.page-btn.is-active{background-color:var(--ui-color-primary);border-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);font-weight:var(--ui-font-weight-semibold)}.page-btn.is-active:hover{background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover)}.page-btn.is-disabled,.page-btn:disabled{opacity:var(--ui-opacity-disabled);pointer-events:none;cursor:default}.ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm);-webkit-user-select:none;user-select:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3724
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}:host{display:block;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.page-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-spacing-2);list-style:none;margin:0;padding:0}.page-btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;padding:0 var(--ui-spacing-2);border-radius:var(--ui-radius-md);border:var(--ui-border-width) solid transparent;background:transparent;color:var(--ui-color-text);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast)}.page-btn:hover:not(:disabled){background-color:var(--ui-color-surface-sunken);color:var(--ui-color-text)}.page-btn:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.page-btn.is-active{background-color:var(--ui-color-primary);border-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);font-weight:var(--ui-font-weight-semibold)}.page-btn.is-active:hover{background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover)}.page-btn.is-disabled,.page-btn:disabled{opacity:var(--ui-opacity-disabled);pointer-events:none;cursor:default}.ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-sm);-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3653
3725
  }
3654
3726
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlPagination, decorators: [{
3655
3727
  type: Component,
3656
- args: [{ selector: 'atl-pagination', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
3728
+ args: [{ selector: 'atl-pagination', standalone: true, imports: [AtlIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: `
3657
3729
  <nav aria-label="Pagination">
3658
3730
  <ul role="list" class="page-list">
3659
3731
  @if (showFirstLast()) {
@@ -3664,7 +3736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3664
3736
  [disabled]="page() <= 1"
3665
3737
  aria-label="First page"
3666
3738
  (click)="goFirst()"
3667
- >«</button>
3739
+ ><atl-icon name="chevron-double-left" size="sm" /></button>
3668
3740
  </li>
3669
3741
  }
3670
3742
  <li>
@@ -3674,7 +3746,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3674
3746
  [disabled]="page() <= 1"
3675
3747
  aria-label="Previous page"
3676
3748
  (click)="goPrev()"
3677
- >‹</button>
3749
+ ><atl-icon name="chevron-left" size="sm" /></button>
3678
3750
  </li>
3679
3751
 
3680
3752
  @for (item of pageItems(); track $index) {
@@ -3702,7 +3774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3702
3774
  [disabled]="page() >= pageCount()"
3703
3775
  aria-label="Next page"
3704
3776
  (click)="goNext()"
3705
- >›</button>
3777
+ ><atl-icon name="chevron-right" size="sm" /></button>
3706
3778
  </li>
3707
3779
  @if (showFirstLast()) {
3708
3780
  <li>
@@ -3712,7 +3784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
3712
3784
  [disabled]="page() >= pageCount()"
3713
3785
  aria-label="Last page"
3714
3786
  (click)="goLast()"
3715
- >»</button>
3787
+ ><atl-icon name="chevron-double-right" size="sm" /></button>
3716
3788
  </li>
3717
3789
  }
3718
3790
  </ul>
@@ -4629,7 +4701,7 @@ class AtlCodeBlock {
4629
4701
  {{ code() }}
4630
4702
  }</code></pre>
4631
4703
  </div>
4632
- `, isInline: true, styles: [":host,:host *{box-sizing:border-box}.atl-code-block{display:block;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.code-block-header{display:flex;align-items:center;justify-content:space-between;line-height:var(--ui-line-height-tight);padding:0 var(--ui-spacing-4);background:var(--ui-color-surface-raised);border-bottom:var(--ui-border-width) solid var(--ui-color-border);min-height:var(--ui-control-height-md)}.code-block-label{font-family:var(--ui-font-mono);font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--ui-color-text-muted);text-transform:lowercase;-webkit-user-select:none;user-select:none}.code-block-copy{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-color-text-muted);font-family:inherit;font-size:.72rem;font-weight:500;cursor:pointer;transition:color var(--ui-transition-fast),background var(--ui-transition-fast),border-color var(--ui-transition-fast);white-space:nowrap}.code-block-copy:hover{color:var(--ui-color-text);background:var(--ui-color-surface);border-color:var(--ui-color-input-border)}.code-block-copy:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.code-block-body{background:var(--ui-color-surface);overflow-x:auto}.code-block-pre{margin:0;padding:var(--ui-spacing-4);font-family:var(--ui-font-mono);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-code);color:var(--ui-color-text);white-space:pre;tab-size:2}.code-line{display:flex}.code-line-number{display:inline-block;min-width:2rem;padding-right:var(--ui-spacing-3);color:var(--ui-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none;border-right:var(--ui-border-width) solid var(--ui-color-border);margin-right:var(--ui-spacing-3);flex-shrink:0;opacity:.6}.code-line-text{flex:1}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4704
+ `, isInline: true, styles: [":host,:host *{box-sizing:border-box}.atl-code-block{display:block;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.code-block-header{display:flex;align-items:center;justify-content:space-between;line-height:var(--ui-line-height-tight);padding:0 var(--ui-spacing-4);background:var(--ui-color-surface-raised);border-bottom:var(--ui-border-width) solid var(--ui-color-border);min-height:var(--ui-control-height-md)}.code-block-label{font-family:var(--ui-font-mono);font-size:var(--ui-font-size-xs);font-weight:600;letter-spacing:.03em;color:var(--ui-color-text-muted);text-transform:lowercase;-webkit-user-select:none;user-select:none}.code-block-copy{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-color-text-muted);font-family:inherit;font-size:var(--ui-font-size-xs);font-weight:500;cursor:pointer;transition:color var(--ui-transition-fast),background var(--ui-transition-fast),border-color var(--ui-transition-fast);white-space:nowrap}.code-block-copy:hover{color:var(--ui-color-text);background:var(--ui-color-surface);border-color:var(--ui-color-input-border)}.code-block-copy:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.code-block-body{background:var(--ui-color-surface);overflow-x:auto}.code-block-pre{margin:0;padding:var(--ui-spacing-4);font-family:var(--ui-font-mono);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-code);color:var(--ui-color-text);white-space:pre;tab-size:2}.code-line{display:flex}.code-line-number{display:inline-block;min-width:2rem;padding-right:var(--ui-spacing-3);color:var(--ui-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none;border-right:var(--ui-border-width) solid var(--ui-color-border);margin-right:var(--ui-spacing-3);flex-shrink:0;opacity:.6}.code-line-text{flex:1}\n"], dependencies: [{ kind: "component", type: AtlIcon, selector: "atl-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4633
4705
  }
4634
4706
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AtlCodeBlock, decorators: [{
4635
4707
  type: Component,
@@ -4667,7 +4739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
4667
4739
  </div>
4668
4740
  `, host: {
4669
4741
  '[class]': '"atl-code-block"',
4670
- }, styles: [":host,:host *{box-sizing:border-box}.atl-code-block{display:block;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.code-block-header{display:flex;align-items:center;justify-content:space-between;line-height:var(--ui-line-height-tight);padding:0 var(--ui-spacing-4);background:var(--ui-color-surface-raised);border-bottom:var(--ui-border-width) solid var(--ui-color-border);min-height:var(--ui-control-height-md)}.code-block-label{font-family:var(--ui-font-mono);font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--ui-color-text-muted);text-transform:lowercase;-webkit-user-select:none;user-select:none}.code-block-copy{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-color-text-muted);font-family:inherit;font-size:.72rem;font-weight:500;cursor:pointer;transition:color var(--ui-transition-fast),background var(--ui-transition-fast),border-color var(--ui-transition-fast);white-space:nowrap}.code-block-copy:hover{color:var(--ui-color-text);background:var(--ui-color-surface);border-color:var(--ui-color-input-border)}.code-block-copy:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.code-block-body{background:var(--ui-color-surface);overflow-x:auto}.code-block-pre{margin:0;padding:var(--ui-spacing-4);font-family:var(--ui-font-mono);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-code);color:var(--ui-color-text);white-space:pre;tab-size:2}.code-line{display:flex}.code-line-number{display:inline-block;min-width:2rem;padding-right:var(--ui-spacing-3);color:var(--ui-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none;border-right:var(--ui-border-width) solid var(--ui-color-border);margin-right:var(--ui-spacing-3);flex-shrink:0;opacity:.6}.code-line-text{flex:1}\n"] }]
4742
+ }, styles: [":host,:host *{box-sizing:border-box}.atl-code-block{display:block;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden;font-family:var(--ui-font-family);line-height:var(--ui-line-height-tight)}.code-block-header{display:flex;align-items:center;justify-content:space-between;line-height:var(--ui-line-height-tight);padding:0 var(--ui-spacing-4);background:var(--ui-color-surface-raised);border-bottom:var(--ui-border-width) solid var(--ui-color-border);min-height:var(--ui-control-height-md)}.code-block-label{font-family:var(--ui-font-mono);font-size:var(--ui-font-size-xs);font-weight:600;letter-spacing:.03em;color:var(--ui-color-text-muted);text-transform:lowercase;-webkit-user-select:none;user-select:none}.code-block-copy{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border:var(--ui-border-width) solid var(--ui-color-border);border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-color-text-muted);font-family:inherit;font-size:var(--ui-font-size-xs);font-weight:500;cursor:pointer;transition:color var(--ui-transition-fast),background var(--ui-transition-fast),border-color var(--ui-transition-fast);white-space:nowrap}.code-block-copy:hover{color:var(--ui-color-text);background:var(--ui-color-surface);border-color:var(--ui-color-input-border)}.code-block-copy:focus-visible{outline:none;box-shadow:var(--ui-focus-ring)}.code-block-body{background:var(--ui-color-surface);overflow-x:auto}.code-block-pre{margin:0;padding:var(--ui-spacing-4);font-family:var(--ui-font-mono);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-code);color:var(--ui-color-text);white-space:pre;tab-size:2}.code-line{display:flex}.code-line-number{display:inline-block;min-width:2rem;padding-right:var(--ui-spacing-3);color:var(--ui-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none;border-right:var(--ui-border-width) solid var(--ui-color-border);margin-right:var(--ui-spacing-3);flex-shrink:0;opacity:.6}.code-line-text{flex:1}\n"] }]
4671
4743
  }], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], filename: [{ type: i0.Input, args: [{ isSignal: true, alias: "filename", required: false }] }], copyable: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyable", required: false }] }], showLineNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLineNumbers", required: false }] }] } });
4672
4744
 
4673
4745
  const ATL_CHAT = new InjectionToken('ATL_CHAT');