@eagami/ui 5.3.0 → 5.5.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.
@@ -519,6 +519,10 @@ const messages$e = {
519
519
  hidePassword: 'إخفاء كلمة المرور',
520
520
  clear: 'مسح',
521
521
  },
522
+ numberInput: {
523
+ increment: 'زيادة',
524
+ decrement: 'إنقاص',
525
+ },
522
526
  menu: {
523
527
  label: 'القائمة',
524
528
  },
@@ -721,6 +725,10 @@ const messages$d = {
721
725
  hidePassword: 'Passwort verbergen',
722
726
  clear: 'Löschen',
723
727
  },
728
+ numberInput: {
729
+ increment: 'Erhöhen',
730
+ decrement: 'Verringern',
731
+ },
724
732
  menu: {
725
733
  label: 'Menü',
726
734
  },
@@ -923,6 +931,10 @@ const messages$c = {
923
931
  hidePassword: 'Απόκρυψη κωδικού πρόσβασης',
924
932
  clear: 'Καθαρισμός',
925
933
  },
934
+ numberInput: {
935
+ increment: 'Αύξηση',
936
+ decrement: 'Μείωση',
937
+ },
926
938
  menu: {
927
939
  label: 'Μενού',
928
940
  },
@@ -1125,6 +1137,10 @@ const messages$b = {
1125
1137
  hidePassword: 'Hide password',
1126
1138
  clear: 'Clear',
1127
1139
  },
1140
+ numberInput: {
1141
+ increment: 'Increment',
1142
+ decrement: 'Decrement',
1143
+ },
1128
1144
  menu: {
1129
1145
  label: 'Menu',
1130
1146
  },
@@ -1327,6 +1343,10 @@ const messages$a = {
1327
1343
  hidePassword: 'Ocultar contraseña',
1328
1344
  clear: 'Borrar',
1329
1345
  },
1346
+ numberInput: {
1347
+ increment: 'Incrementar',
1348
+ decrement: 'Disminuir',
1349
+ },
1330
1350
  menu: {
1331
1351
  label: 'Menú',
1332
1352
  },
@@ -1529,6 +1549,10 @@ const messages$9 = {
1529
1549
  hidePassword: 'Masquer le mot de passe',
1530
1550
  clear: 'Effacer',
1531
1551
  },
1552
+ numberInput: {
1553
+ increment: 'Augmenter',
1554
+ decrement: 'Diminuer',
1555
+ },
1532
1556
  menu: {
1533
1557
  label: 'Menu',
1534
1558
  },
@@ -1731,6 +1755,10 @@ const messages$8 = {
1731
1755
  hidePassword: 'הסתרת סיסמה',
1732
1756
  clear: 'ניקוי',
1733
1757
  },
1758
+ numberInput: {
1759
+ increment: 'הגדלה',
1760
+ decrement: 'הקטנה',
1761
+ },
1734
1762
  menu: {
1735
1763
  label: 'תפריט',
1736
1764
  },
@@ -1933,6 +1961,10 @@ const messages$7 = {
1933
1961
  hidePassword: 'पासवर्ड छिपाएं',
1934
1962
  clear: 'साफ़ करें',
1935
1963
  },
1964
+ numberInput: {
1965
+ increment: 'बढ़ाएँ',
1966
+ decrement: 'घटाएँ',
1967
+ },
1936
1968
  menu: {
1937
1969
  label: 'मेनू',
1938
1970
  },
@@ -2135,6 +2167,10 @@ const messages$6 = {
2135
2167
  hidePassword: 'Fela lykilorð',
2136
2168
  clear: 'Hreinsa',
2137
2169
  },
2170
+ numberInput: {
2171
+ increment: 'Hækka',
2172
+ decrement: 'Lækka',
2173
+ },
2138
2174
  menu: {
2139
2175
  label: 'Valmynd',
2140
2176
  },
@@ -2337,6 +2373,10 @@ const messages$5 = {
2337
2373
  hidePassword: 'Wachtwoord verbergen',
2338
2374
  clear: 'Wissen',
2339
2375
  },
2376
+ numberInput: {
2377
+ increment: 'Verhogen',
2378
+ decrement: 'Verlagen',
2379
+ },
2340
2380
  menu: {
2341
2381
  label: 'Menu',
2342
2382
  },
@@ -2539,6 +2579,10 @@ const messages$4 = {
2539
2579
  hidePassword: 'Ukryj hasło',
2540
2580
  clear: 'Wyczyść',
2541
2581
  },
2582
+ numberInput: {
2583
+ increment: 'Zwiększ',
2584
+ decrement: 'Zmniejsz',
2585
+ },
2542
2586
  menu: {
2543
2587
  label: 'Menu',
2544
2588
  },
@@ -2741,6 +2785,10 @@ const messages$3 = {
2741
2785
  hidePassword: 'Ocultar senha',
2742
2786
  clear: 'Limpar',
2743
2787
  },
2788
+ numberInput: {
2789
+ increment: 'Aumentar',
2790
+ decrement: 'Diminuir',
2791
+ },
2744
2792
  menu: {
2745
2793
  label: 'Menu',
2746
2794
  },
@@ -2943,6 +2991,10 @@ const messages$2 = {
2943
2991
  hidePassword: 'Скрыть пароль',
2944
2992
  clear: 'Очистить',
2945
2993
  },
2994
+ numberInput: {
2995
+ increment: 'Увеличить',
2996
+ decrement: 'Уменьшить',
2997
+ },
2946
2998
  menu: {
2947
2999
  label: 'Меню',
2948
3000
  },
@@ -3145,6 +3197,10 @@ const messages$1 = {
3145
3197
  hidePassword: 'Приховати пароль',
3146
3198
  clear: 'Очистити',
3147
3199
  },
3200
+ numberInput: {
3201
+ increment: 'Збільшити',
3202
+ decrement: 'Зменшити',
3203
+ },
3148
3204
  menu: {
3149
3205
  label: 'Меню',
3150
3206
  },
@@ -3347,6 +3403,10 @@ const messages = {
3347
3403
  hidePassword: '隐藏密码',
3348
3404
  clear: '清除',
3349
3405
  },
3406
+ numberInput: {
3407
+ increment: '增加',
3408
+ decrement: '减少',
3409
+ },
3350
3410
  menu: {
3351
3411
  label: '菜单',
3352
3412
  },
@@ -12192,6 +12252,294 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
12192
12252
  ], template: "<div class=\"ea-multi-select-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"id()\"\n [labelId]=\"id() + '-label'\"\n [required]=\"required()\" />\n }\n\n <div class=\"ea-multi-select\">\n <div\n class=\"ea-multi-select__trigger-wrapper\"\n [ngClass]=\"wrapperClasses()\">\n <div\n #triggerEl\n class=\"ea-multi-select__trigger\"\n [ngClass]=\"triggerClasses()\"\n [id]=\"id()\"\n role=\"combobox\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? listboxId() : null\"\n [attr.aria-activedescendant]=\"isOpen() && !searchable() ? activeOptionId() : null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (click)=\"toggle()\"\n (keydown)=\"handleTriggerKeydown($event)\">\n <span class=\"ea-multi-select__trigger-content\">\n @if (!hasValue()) {\n <span class=\"ea-multi-select__trigger-placeholder\">\n <bdi>{{ resolvedPlaceholder() }}</bdi>\n </span>\n } @else {\n @for (opt of visibleChips(); track opt.value) {\n <ea-tag\n [size]=\"size()\"\n variant=\"default\"\n [removable]=\"!isDisabled() && !readonly()\"\n [removeLabel]=\"i18n.messages().multiSelect.removeOption(opt.label)\"\n (removed)=\"removeChip(opt)\">\n <span>{{ opt.label }}</span>\n </ea-tag>\n }\n @if (hiddenChipCount() > 0) {\n <span class=\"ea-multi-select__more\">+{{ hiddenChipCount() }}</span>\n }\n }\n </span>\n </div>\n @if (hasValue() && !isDisabled() && !readonly()) {\n <button\n type=\"button\"\n class=\"ea-multi-select__clear\"\n [attr.aria-label]=\"i18n.messages().multiSelect.clearAll\"\n (click)=\"clear($event)\">\n <ea-icon-x\n class=\"ea-multi-select__clear-icon\"\n aria-hidden=\"true\" />\n </button>\n }\n <ea-icon-chevron-down\n class=\"ea-multi-select__trigger-icon\"\n aria-hidden=\"true\"\n (click)=\"toggle()\" />\n </div>\n\n <ea-popover\n [anchor]=\"triggerEl\"\n [open]=\"isOpen()\"\n placement=\"bottom-start\"\n [matchAnchorWidth]=\"true\"\n [closeOnEscape]=\"false\"\n scrollBehavior=\"reposition\"\n (closeRequested)=\"onPopoverCloseRequested()\">\n <div\n class=\"ea-multi-select__popover\"\n [ngClass]=\"menuClasses()\">\n @if (searchable()) {\n <div class=\"ea-multi-select__search\">\n <ea-icon-search\n class=\"ea-multi-select__search-icon\"\n aria-hidden=\"true\" />\n <input\n #searchEl\n type=\"text\"\n dir=\"auto\"\n class=\"ea-multi-select__search-input\"\n autocomplete=\"off\"\n [placeholder]=\"resolvedSearchPlaceholder()\"\n [value]=\"searchTerm()\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"handlePopoverKeydown($event)\" />\n </div>\n }\n\n @if (selectAll() && filteredOptions().length > 0) {\n <div\n class=\"ea-multi-select__option ea-multi-select__option--select-all\"\n (click)=\"toggleSelectAll()\">\n <ea-checkbox\n size=\"sm\"\n [checked]=\"selectAllState() === 'all'\"\n [indeterminate]=\"selectAllState() === 'some'\"\n [ariaLabel]=\"i18n.messages().multiSelect.selectAll\" />\n <span class=\"ea-multi-select__option-label\">\n {{ i18n.messages().multiSelect.selectAll }}\n </span>\n </div>\n }\n\n <ul\n class=\"ea-multi-select__list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [id]=\"listboxId()\"\n [attr.aria-label]=\"label() ?? ariaLabel() ?? null\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <li\n class=\"ea-multi-select__option\"\n [class.ea-multi-select__option--focused]=\"focusedIndex() === i\"\n [class.ea-multi-select__option--disabled]=\"opt.disabled\"\n [id]=\"id() + '-opt-' + i\"\n role=\"option\"\n [attr.aria-selected]=\"selectedSet().has(opt.value)\"\n [attr.aria-disabled]=\"opt.disabled || null\"\n (click)=\"onOptionClick(opt, i)\">\n <ea-checkbox\n size=\"sm\"\n inert\n aria-hidden=\"true\"\n [checked]=\"selectedSet().has(opt.value)\"\n [disabled]=\"!!opt.disabled\" />\n <span class=\"ea-multi-select__option-label\">\n {{ opt.label }}\n </span>\n </li>\n } @empty {\n <li class=\"ea-multi-select__empty\">\n {{ i18n.messages().multiSelect.searchEmpty }}\n </li>\n }\n </ul>\n </div>\n </ea-popover>\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-multi-select-field{display:flex;flex-direction:column;gap:var(--space-1-5)}.ea-multi-select{position:relative}.ea-multi-select__trigger-wrapper{position:relative;display:flex;align-items:center;gap:.5em;width:100%;min-height:2.5em;padding:.375em .75em;border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);background-color:var(--color-bg-base);color:var(--color-text-primary);transition:var(--transition-colors),var(--transition-shadow)}.ea-multi-select__trigger-wrapper--xs{font-size:var(--font-size-xs)}.ea-multi-select__trigger-wrapper--sm{font-size:var(--font-size-sm)}.ea-multi-select__trigger-wrapper--md{font-size:var(--font-size-md)}.ea-multi-select__trigger-wrapper--lg{font-size:var(--font-size-lg)}.ea-multi-select__trigger-wrapper--xl{font-size:var(--font-size-xl)}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger:focus-visible){box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--open){border-color:var(--color-border-focus);box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--open){outline:2px solid Highlight;outline-offset:2px}}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--error){border-color:var(--color-error-default)}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--error.ea-multi-select__trigger--open){box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--error.ea-multi-select__trigger--open){outline:2px solid Highlight;outline-offset:2px}}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--disabled){background-color:var(--color-bg-muted);opacity:.6;cursor:not-allowed}.ea-multi-select__trigger{display:flex;align-items:center;flex:1;min-width:0;text-align:start;font-family:var(--font-family-sans);cursor:pointer}.ea-multi-select__trigger:focus-visible{outline:none}.ea-multi-select__trigger--disabled{cursor:not-allowed}.ea-multi-select__trigger-content{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--space-1);flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin}.ea-multi-select__trigger-content ea-tag{flex-shrink:0}.ea-multi-select__trigger-placeholder{color:var(--color-text-tertiary)}.ea-multi-select__trigger-icon{flex-shrink:0;width:1em;height:1em;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-transform)}.ea-multi-select__trigger-wrapper:has(.ea-multi-select__trigger--open) .ea-multi-select__trigger-icon{transform:rotate(180deg)}.ea-multi-select__more{display:inline-flex;flex-shrink:0;align-items:center;padding:0 var(--space-1-5);border-radius:var(--radius-lg);background-color:var(--color-bg-muted);font-size:.85em;font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.ea-multi-select__clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-multi-select__clear>*{font-size:1.25em}.ea-multi-select__clear:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-multi-select__clear:focus-visible{outline:none;box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-multi-select__clear:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-multi-select__clear:disabled{cursor:not-allowed;opacity:.5}.ea-multi-select__clear{flex-shrink:0}.ea-multi-select__clear-icon{width:1em;height:1em}.ea-multi-select__popover{display:flex;flex-direction:column;overflow:hidden;max-height:20rem;border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);background-color:var(--ea-multi-select-popover-background-color, var(--color-bg-elevated))}@media(forced-colors:active){.ea-multi-select__popover{border:1px solid CanvasText}}.ea-multi-select__popover--xs{font-size:var(--font-size-xs)}.ea-multi-select__popover--sm{font-size:var(--font-size-sm)}.ea-multi-select__popover--md{font-size:var(--font-size-md)}.ea-multi-select__popover--lg{font-size:var(--font-size-lg)}.ea-multi-select__popover--xl{font-size:var(--font-size-xl)}.ea-multi-select__search{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;padding:var(--space-2) var(--space-3);border-bottom:var(--border-width-thin) solid var(--color-border-default)}.ea-multi-select__search-icon{flex-shrink:0;width:1em;height:1em;color:var(--color-text-tertiary)}.ea-multi-select__search-input{flex:1;min-width:0;padding:0;border:none;background:none;font-family:var(--font-family-sans);font-size:inherit;color:var(--color-text-primary)}.ea-multi-select__search-input::placeholder{color:var(--color-text-tertiary);opacity:1}.ea-multi-select__search-input:focus{outline:none}.ea-multi-select__list{overflow-y:auto;overscroll-behavior:none;flex:1;margin:0;padding:var(--space-1) 0;list-style:none}.ea-multi-select__option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1-5) var(--space-3);font-size:inherit;font-family:var(--font-family-sans);color:var(--color-text-primary);cursor:pointer;transition:var(--transition-colors)}.ea-multi-select__option--focused{background-color:var(--color-state-hover)}@media(forced-colors:active){.ea-multi-select__option--focused{background-color:Highlight;color:HighlightText}}.ea-multi-select__option--disabled{color:var(--color-text-disabled);cursor:not-allowed}@media(forced-colors:active){.ea-multi-select__option--disabled{color:GrayText}}.ea-multi-select__option--select-all{border-bottom:var(--border-width-thin) solid var(--color-border-default);font-weight:var(--font-weight-medium)}.ea-multi-select__option:hover:not(.ea-multi-select__option--disabled){background-color:var(--color-state-hover)}@media(forced-colors:active){.ea-multi-select__option:hover:not(.ea-multi-select__option--disabled){background-color:Highlight;color:HighlightText}}.ea-multi-select__option ea-checkbox{pointer-events:none;display:inline-flex;align-items:center;line-height:1}.ea-multi-select__option-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ea-multi-select__empty{padding:var(--space-3);font-size:inherit;text-align:center;color:var(--color-text-tertiary);list-style:none}\n"] }]
12193
12253
  }], propDecorators: { triggerEl: [{ type: i0.ViewChild, args: ['triggerEl', { isSignal: true }] }], searchEl: [{ type: i0.ViewChild, args: ['searchEl', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMsg", required: false }] }], errorMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessages", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], selectAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAll", required: false }] }], maxVisibleChips: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleChips", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
12194
12254
 
12255
+ class ChevronUpIconComponent extends IconComponentBase {
12256
+ static slug = 'chevron-up';
12257
+ static category = 'feather';
12258
+ static tags = [
12259
+ 'chevron-up',
12260
+ 'chevron',
12261
+ 'up',
12262
+ 'arrow',
12263
+ 'collapse',
12264
+ 'haut',
12265
+ 'arriba',
12266
+ 'πάνω',
12267
+ 'góra',
12268
+ ];
12269
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChevronUpIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12270
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.16", type: ChevronUpIconComponent, isStandalone: true, selector: "ea-icon-chevron-up", usesInheritance: true, ngImport: i0, template: `
12271
+ <svg
12272
+ viewBox="0 0 24 24"
12273
+ fill="none"
12274
+ stroke="currentColor"
12275
+ [attr.stroke-width]="strokeWidth()"
12276
+ stroke-linecap="round"
12277
+ stroke-linejoin="round"
12278
+ aria-hidden="true"
12279
+ width="100%"
12280
+ height="100%">
12281
+ <polyline points="18 15 12 9 6 15" />
12282
+ </svg>
12283
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12284
+ }
12285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChevronUpIconComponent, decorators: [{
12286
+ type: Component,
12287
+ args: [{
12288
+ selector: 'ea-icon-chevron-up',
12289
+ changeDetection: ChangeDetectionStrategy.OnPush,
12290
+ template: `
12291
+ <svg
12292
+ viewBox="0 0 24 24"
12293
+ fill="none"
12294
+ stroke="currentColor"
12295
+ [attr.stroke-width]="strokeWidth()"
12296
+ stroke-linecap="round"
12297
+ stroke-linejoin="round"
12298
+ aria-hidden="true"
12299
+ width="100%"
12300
+ height="100%">
12301
+ <polyline points="18 15 12 9 6 15" />
12302
+ </svg>
12303
+ `,
12304
+ }]
12305
+ }] });
12306
+
12307
+ /**
12308
+ * Numeric field with increment and decrement steppers, min/max/step bounds, and
12309
+ * the standard label, hint, and error chrome. The native input carries the
12310
+ * `spinbutton` role, so arrow keys step it; the steppers are pointer
12311
+ * affordances. Integrates with Angular forms via `ControlValueAccessor`.
12312
+ */
12313
+ class NumberInputComponent {
12314
+ inputEl = viewChild('inputEl', ...(ngDevMode ? [{ debugName: "inputEl" }] : /* istanbul ignore next */ []));
12315
+ i18n = inject(EagamiI18nService);
12316
+ /** Text label rendered above the field. */
12317
+ label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
12318
+ /** Placeholder shown while the field is empty. */
12319
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
12320
+ /** Visual size of the field. */
12321
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
12322
+ /** Helper text shown below the field; hidden while an error is showing. */
12323
+ hint = input(undefined, ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
12324
+ /** Error message shown below the field; replaces the hint and flags the field invalid. */
12325
+ errorMsg = input(undefined, ...(ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []));
12326
+ /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
12327
+ errorMessages = input(undefined, ...(ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []));
12328
+ /** Disables the field. */
12329
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
12330
+ /** Renders the field read-only. */
12331
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
12332
+ /** Marks the field as required. */
12333
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
12334
+ /** Minimum value; typed values are clamped to it on blur and the steppers respect it. */
12335
+ min = input(undefined, ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
12336
+ /** Maximum value; typed values are clamped to it on blur and the steppers respect it. */
12337
+ max = input(undefined, ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
12338
+ /** Amount each step (arrow key or stepper) adds or subtracts. */
12339
+ step = input(1, ...(ngDevMode ? [{ debugName: "step" }] : /* istanbul ignore next */ []));
12340
+ /** Whether negative values are allowed; when `false` the value floors at 0. */
12341
+ allowNegative = input(true, ...(ngDevMode ? [{ debugName: "allowNegative" }] : /* istanbul ignore next */ []));
12342
+ /** Accessible name for the field when no visible `label` is set. */
12343
+ ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
12344
+ /** `id` applied to the native input and label `for`; auto-generated when omitted. */
12345
+ id = input(uniqueId('ea-number-input'), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
12346
+ /** Current field value; `null` when empty. Two-way bindable via `[(value)]`. */
12347
+ value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
12348
+ /** Fires with the new value whenever it changes. */
12349
+ changed = output();
12350
+ /** Fires when the input receives focus. */
12351
+ focused = output();
12352
+ /** Fires when the input loses focus. */
12353
+ blurred = output();
12354
+ isFocused = signal(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
12355
+ _formDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
12356
+ onChange = () => { };
12357
+ onTouched = () => { };
12358
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
12359
+ isInteractive = computed(() => !this.isDisabled() && !this.readonly(), ...(ngDevMode ? [{ debugName: "isInteractive" }] : /* istanbul ignore next */ []));
12360
+ // The lower bound actually enforced: `min` normally, but floored at 0 when
12361
+ // negatives are disallowed (even if `min` was set lower).
12362
+ effectiveMin = computed(() => {
12363
+ const min = this.min();
12364
+ if (this.allowNegative()) {
12365
+ return min;
12366
+ }
12367
+ return min == null ? 0 : Math.max(min, 0);
12368
+ }, ...(ngDevMode ? [{ debugName: "effectiveMin" }] : /* istanbul ignore next */ []));
12369
+ errorState = injectControlErrorState({
12370
+ errorMsg: this.errorMsg,
12371
+ errorMessages: this.errorMessages,
12372
+ });
12373
+ errorText = this.errorState.error;
12374
+ hasError = this.errorState.hasError;
12375
+ showHint = computed(() => !!this.hint() && !this.hasError(), ...(ngDevMode ? [{ debugName: "showHint" }] : /* istanbul ignore next */ []));
12376
+ canIncrement = computed(() => {
12377
+ if (!this.isInteractive()) {
12378
+ return false;
12379
+ }
12380
+ const max = this.max();
12381
+ return max == null || (this.value() ?? this.min() ?? 0) < max;
12382
+ }, ...(ngDevMode ? [{ debugName: "canIncrement" }] : /* istanbul ignore next */ []));
12383
+ canDecrement = computed(() => {
12384
+ if (!this.isInteractive()) {
12385
+ return false;
12386
+ }
12387
+ const min = this.effectiveMin();
12388
+ return min == null || (this.value() ?? this.max() ?? 0) > min;
12389
+ }, ...(ngDevMode ? [{ debugName: "canDecrement" }] : /* istanbul ignore next */ []));
12390
+ wrapperClasses = computed(() => ({
12391
+ [`ea-number-input-wrapper--${this.size()}`]: true,
12392
+ 'ea-number-input-wrapper--error': this.hasError(),
12393
+ 'ea-number-input-wrapper--focused': this.isFocused(),
12394
+ 'ea-number-input-wrapper--disabled': this.isDisabled(),
12395
+ 'ea-number-input-wrapper--readonly': this.readonly(),
12396
+ }), ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []));
12397
+ constructor() {
12398
+ // Reflect the model onto the native element, but only when they differ
12399
+ // NUMERICALLY: comparing text would clobber an in-progress decimal (typing
12400
+ // "42." parses to 42, and rewriting "42" would drop the trailing dot).
12401
+ effect(() => {
12402
+ const el = this.inputEl()?.nativeElement;
12403
+ if (!el) {
12404
+ return;
12405
+ }
12406
+ const model = this.value();
12407
+ const elValue = el.value === '' || Number.isNaN(el.valueAsNumber) ? null : el.valueAsNumber;
12408
+ if (elValue !== model) {
12409
+ el.value = model == null ? '' : String(model);
12410
+ }
12411
+ });
12412
+ }
12413
+ writeValue(val) {
12414
+ // Do not clamp here: a CVA writeValue cannot call onChange, so clamping now
12415
+ // would diverge the form model (unclamped) from the view. Bounds apply on
12416
+ // interaction (blur after typing, or stepping) instead.
12417
+ this.value.set(val == null || Number.isNaN(Number(val)) ? null : Number(val));
12418
+ }
12419
+ registerOnChange(fn) {
12420
+ this.onChange = fn;
12421
+ }
12422
+ registerOnTouched(fn) {
12423
+ this.onTouched = fn;
12424
+ }
12425
+ setDisabledState(isDisabled) {
12426
+ this._formDisabled.set(isDisabled);
12427
+ }
12428
+ handleInput() {
12429
+ this.commitFromElement(false);
12430
+ }
12431
+ handleFocus(event) {
12432
+ this.isFocused.set(true);
12433
+ this.focused.emit(event);
12434
+ }
12435
+ handleBlur(event) {
12436
+ this.commitFromElement(true);
12437
+ this.isFocused.set(false);
12438
+ this.onTouched();
12439
+ this.blurred.emit(event);
12440
+ }
12441
+ // A focused number input changes value on scroll by default, easy to trigger
12442
+ // by accident while scrolling the page.
12443
+ handleWheel(event) {
12444
+ if (this.isFocused()) {
12445
+ event.preventDefault();
12446
+ }
12447
+ }
12448
+ handleKeydown(event) {
12449
+ // Exponent notation breaks the numeric bounds; block it. Also block the
12450
+ // minus sign when negatives are disallowed.
12451
+ if (event.key === 'e' ||
12452
+ event.key === 'E' ||
12453
+ (!this.allowNegative() && event.key === '-')) {
12454
+ event.preventDefault();
12455
+ }
12456
+ }
12457
+ // Keeps focus in the input while the mouse presses a stepper, so the field
12458
+ // does not blur (and prematurely commit or mark touched) on each click.
12459
+ onStepMousedown(event) {
12460
+ event.preventDefault();
12461
+ }
12462
+ increment() {
12463
+ this.stepBy(el => el.stepUp());
12464
+ }
12465
+ decrement() {
12466
+ this.stepBy(el => el.stepDown());
12467
+ }
12468
+ /** Moves keyboard focus to the underlying native input element. */
12469
+ focus() {
12470
+ this.inputEl()?.nativeElement.focus();
12471
+ }
12472
+ stepBy(apply) {
12473
+ const el = this.inputEl()?.nativeElement;
12474
+ if (!el || !this.isInteractive()) {
12475
+ return;
12476
+ }
12477
+ // Delegates to the native spinbutton so bounds, step, and grid-snapping
12478
+ // match arrow-key stepping exactly.
12479
+ apply(el);
12480
+ this.commitFromElement(true);
12481
+ el.focus();
12482
+ }
12483
+ // Reads the element, optionally clamps into the effective bounds, and emits
12484
+ // only when the value actually changed (so a no-op blur does not dirty a form
12485
+ // control or fire a spurious `changed`).
12486
+ commitFromElement(clamp) {
12487
+ const el = this.inputEl()?.nativeElement;
12488
+ if (!el) {
12489
+ return;
12490
+ }
12491
+ let next = el.value === '' || Number.isNaN(el.valueAsNumber) ? null : el.valueAsNumber;
12492
+ if (clamp && next != null) {
12493
+ const clamped = this.clampToBounds(next);
12494
+ if (clamped !== next) {
12495
+ next = clamped;
12496
+ el.value = String(next);
12497
+ }
12498
+ }
12499
+ if (next === this.value()) {
12500
+ return;
12501
+ }
12502
+ this.value.set(next);
12503
+ this.onChange(next);
12504
+ this.changed.emit(next);
12505
+ }
12506
+ clampToBounds(num) {
12507
+ const min = this.effectiveMin();
12508
+ const max = this.max();
12509
+ if (min != null && num < min) {
12510
+ return min;
12511
+ }
12512
+ if (max != null && num > max) {
12513
+ return max;
12514
+ }
12515
+ return num;
12516
+ }
12517
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12518
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: NumberInputComponent, isStandalone: true, selector: "ea-number-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, errorMsg: { classPropertyName: "errorMsg", publicName: "errorMsg", isSignal: true, isRequired: false, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, allowNegative: { classPropertyName: "allowNegative", publicName: "allowNegative", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed", focused: "focused", blurred: "blurred" }, providers: [
12519
+ {
12520
+ provide: NG_VALUE_ACCESSOR,
12521
+ useExisting: forwardRef(() => NumberInputComponent),
12522
+ multi: true,
12523
+ },
12524
+ ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ea-number-input-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"id()\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-number-input-wrapper\"\n [ngClass]=\"wrapperClasses()\">\n <input\n #inputEl\n type=\"number\"\n class=\"ea-number-input\"\n dir=\"auto\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.min]=\"effectiveMin() ?? null\"\n [attr.max]=\"max() ?? null\"\n [attr.step]=\"step()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n hasError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput()\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n <div class=\"ea-number-input-wrapper__steppers\">\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"ea-number-input-wrapper__step\"\n [disabled]=\"!canIncrement()\"\n [attr.aria-label]=\"i18n.messages().numberInput.increment\"\n (mousedown)=\"onStepMousedown($event)\"\n (click)=\"increment()\">\n <ea-icon-chevron-up class=\"ea-number-input-wrapper__step-icon\" />\n </button>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"ea-number-input-wrapper__step\"\n [disabled]=\"!canDecrement()\"\n [attr.aria-label]=\"i18n.messages().numberInput.decrement\"\n (mousedown)=\"onStepMousedown($event)\"\n (click)=\"decrement()\">\n <ea-icon-chevron-down class=\"ea-number-input-wrapper__step-icon\" />\n </button>\n </div>\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-number-input-field{display:flex;flex-direction:column;gap:var(--space-1-5);color:var(--color-text-secondary)}.ea-number-input-wrapper{overflow:hidden;display:flex;align-items:center;gap:.25em;min-height:2.5em;padding-block:0;padding-inline:.75em .5em;border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);background-color:var(--color-bg-base);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow)}.ea-number-input-wrapper--xs{font-size:var(--font-size-xs)}.ea-number-input-wrapper--sm{font-size:var(--font-size-sm)}.ea-number-input-wrapper--md{font-size:var(--font-size-md)}.ea-number-input-wrapper--lg{font-size:var(--font-size-lg)}.ea-number-input-wrapper--xl{font-size:var(--font-size-xl)}.ea-number-input-wrapper--focused{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-number-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-number-input-wrapper--error{border-color:var(--color-error-default)}.ea-number-input-wrapper--error.ea-number-input-wrapper--focused{box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-number-input-wrapper--error.ea-number-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-number-input-wrapper--disabled{border-color:var(--color-border-default);background-color:var(--color-bg-muted);cursor:not-allowed;opacity:.6}.ea-number-input-wrapper--disabled .ea-number-input{cursor:not-allowed}.ea-number-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-number-input-wrapper__steppers{display:flex;flex-direction:column;flex-shrink:0}.ea-number-input-wrapper__step{display:flex;align-items:center;justify-content:center;width:1.5em;height:1.1em;padding:0;border:none;border-radius:var(--radius-xs);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-number-input-wrapper__step:hover:not(:disabled){background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-number-input-wrapper__step:disabled{cursor:not-allowed;opacity:.4}.ea-number-input-wrapper__step-icon{width:.875em;height:.875em;pointer-events:none}.ea-number-input{flex:1;width:100%;min-width:0;padding:.5em 0;font-family:var(--font-family-sans);line-height:var(--line-height-normal);border:none;outline:none;background:transparent;color:var(--color-text-primary);appearance:textfield;-moz-appearance:textfield}.ea-number-input::placeholder{color:var(--color-text-tertiary);opacity:1}.ea-number-input:disabled{cursor:not-allowed}.ea-number-input::-webkit-inner-spin-button,.ea-number-input::-webkit-outer-spin-button{margin:0;appearance:none;-webkit-appearance:none}\n"], dependencies: [{ kind: "component", type: ChevronDownIconComponent, selector: "ea-icon-chevron-down" }, { kind: "component", type: ChevronUpIconComponent, selector: "ea-icon-chevron-up" }, { kind: "component", type: FieldLabelComponent, selector: "ea-field-label", inputs: ["text", "forId", "required", "labelId"] }, { kind: "component", type: FieldMessagesComponent, selector: "ea-field-messages", inputs: ["id", "error", "hint"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12525
+ }
12526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: NumberInputComponent, decorators: [{
12527
+ type: Component,
12528
+ args: [{ selector: 'ea-number-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12529
+ ChevronDownIconComponent,
12530
+ ChevronUpIconComponent,
12531
+ FieldLabelComponent,
12532
+ FieldMessagesComponent,
12533
+ NgClass,
12534
+ ], providers: [
12535
+ {
12536
+ provide: NG_VALUE_ACCESSOR,
12537
+ useExisting: forwardRef(() => NumberInputComponent),
12538
+ multi: true,
12539
+ },
12540
+ ], template: "<div class=\"ea-number-input-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"id()\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-number-input-wrapper\"\n [ngClass]=\"wrapperClasses()\">\n <input\n #inputEl\n type=\"number\"\n class=\"ea-number-input\"\n dir=\"auto\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.min]=\"effectiveMin() ?? null\"\n [attr.max]=\"max() ?? null\"\n [attr.step]=\"step()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n hasError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput()\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n <div class=\"ea-number-input-wrapper__steppers\">\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"ea-number-input-wrapper__step\"\n [disabled]=\"!canIncrement()\"\n [attr.aria-label]=\"i18n.messages().numberInput.increment\"\n (mousedown)=\"onStepMousedown($event)\"\n (click)=\"increment()\">\n <ea-icon-chevron-up class=\"ea-number-input-wrapper__step-icon\" />\n </button>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"ea-number-input-wrapper__step\"\n [disabled]=\"!canDecrement()\"\n [attr.aria-label]=\"i18n.messages().numberInput.decrement\"\n (mousedown)=\"onStepMousedown($event)\"\n (click)=\"decrement()\">\n <ea-icon-chevron-down class=\"ea-number-input-wrapper__step-icon\" />\n </button>\n </div>\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-number-input-field{display:flex;flex-direction:column;gap:var(--space-1-5);color:var(--color-text-secondary)}.ea-number-input-wrapper{overflow:hidden;display:flex;align-items:center;gap:.25em;min-height:2.5em;padding-block:0;padding-inline:.75em .5em;border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);background-color:var(--color-bg-base);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow)}.ea-number-input-wrapper--xs{font-size:var(--font-size-xs)}.ea-number-input-wrapper--sm{font-size:var(--font-size-sm)}.ea-number-input-wrapper--md{font-size:var(--font-size-md)}.ea-number-input-wrapper--lg{font-size:var(--font-size-lg)}.ea-number-input-wrapper--xl{font-size:var(--font-size-xl)}.ea-number-input-wrapper--focused{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-number-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-number-input-wrapper--error{border-color:var(--color-error-default)}.ea-number-input-wrapper--error.ea-number-input-wrapper--focused{box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-number-input-wrapper--error.ea-number-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-number-input-wrapper--disabled{border-color:var(--color-border-default);background-color:var(--color-bg-muted);cursor:not-allowed;opacity:.6}.ea-number-input-wrapper--disabled .ea-number-input{cursor:not-allowed}.ea-number-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-number-input-wrapper__steppers{display:flex;flex-direction:column;flex-shrink:0}.ea-number-input-wrapper__step{display:flex;align-items:center;justify-content:center;width:1.5em;height:1.1em;padding:0;border:none;border-radius:var(--radius-xs);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-number-input-wrapper__step:hover:not(:disabled){background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-number-input-wrapper__step:disabled{cursor:not-allowed;opacity:.4}.ea-number-input-wrapper__step-icon{width:.875em;height:.875em;pointer-events:none}.ea-number-input{flex:1;width:100%;min-width:0;padding:.5em 0;font-family:var(--font-family-sans);line-height:var(--line-height-normal);border:none;outline:none;background:transparent;color:var(--color-text-primary);appearance:textfield;-moz-appearance:textfield}.ea-number-input::placeholder{color:var(--color-text-tertiary);opacity:1}.ea-number-input:disabled{cursor:not-allowed}.ea-number-input::-webkit-inner-spin-button,.ea-number-input::-webkit-outer-spin-button{margin:0;appearance:none;-webkit-appearance:none}\n"] }]
12541
+ }], ctorParameters: () => [], propDecorators: { inputEl: [{ type: i0.ViewChild, args: ['inputEl', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMsg", required: false }] }], errorMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessages", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], allowNegative: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowNegative", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }] } });
12542
+
12195
12543
  /** Whether the runtime's `Intl` actually has number data for `locale` rather
12196
12544
  * than silently negotiating down to a default (as reduced-ICU builds do). */
12197
12545
  function intlLocalizes(locale) {
@@ -14038,58 +14386,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
14038
14386
  ], template: "<div class=\"ea-textarea-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"id()\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-textarea-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.resize]=\"resize()\"\n [style.min-height]=\"minHeightStyle()\"\n [style.max-height.px]=\"maxHeight() ?? null\">\n <textarea\n #textareaEl\n class=\"ea-textarea\"\n dir=\"auto\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"></textarea>\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-textarea-field{display:flex;flex-direction:column;gap:var(--space-1-5);color:var(--color-text-secondary)}.ea-textarea-wrapper{display:flex;min-width:12em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-textarea-wrapper--xs{font-size:var(--font-size-xs)}.ea-textarea-wrapper--sm{font-size:var(--font-size-sm)}.ea-textarea-wrapper--md{font-size:var(--font-size-md)}.ea-textarea-wrapper--lg{font-size:var(--font-size-lg)}.ea-textarea-wrapper--xl{font-size:var(--font-size-xl)}.ea-textarea-wrapper--focused{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--error{border-color:var(--color-error-default)}.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:not-allowed;opacity:.6}.ea-textarea-wrapper--disabled .ea-textarea{cursor:not-allowed}.ea-textarea-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-textarea{flex:1;width:100%;min-width:0;padding:.75em;background:transparent;border:none;outline:none;resize:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-textarea::placeholder{color:var(--color-text-tertiary)}.ea-textarea:disabled{cursor:not-allowed}\n"] }]
14039
14387
  }], propDecorators: { textareaEl: [{ type: i0.ViewChild, args: ['textareaEl', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMsg", required: false }] }], errorMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessages", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }] } });
14040
14388
 
14041
- class ChevronUpIconComponent extends IconComponentBase {
14042
- static slug = 'chevron-up';
14043
- static category = 'feather';
14044
- static tags = [
14045
- 'chevron-up',
14046
- 'chevron',
14047
- 'up',
14048
- 'arrow',
14049
- 'collapse',
14050
- 'haut',
14051
- 'arriba',
14052
- 'πάνω',
14053
- 'góra',
14054
- ];
14055
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChevronUpIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
14056
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.16", type: ChevronUpIconComponent, isStandalone: true, selector: "ea-icon-chevron-up", usesInheritance: true, ngImport: i0, template: `
14057
- <svg
14058
- viewBox="0 0 24 24"
14059
- fill="none"
14060
- stroke="currentColor"
14061
- [attr.stroke-width]="strokeWidth()"
14062
- stroke-linecap="round"
14063
- stroke-linejoin="round"
14064
- aria-hidden="true"
14065
- width="100%"
14066
- height="100%">
14067
- <polyline points="18 15 12 9 6 15" />
14068
- </svg>
14069
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14070
- }
14071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChevronUpIconComponent, decorators: [{
14072
- type: Component,
14073
- args: [{
14074
- selector: 'ea-icon-chevron-up',
14075
- changeDetection: ChangeDetectionStrategy.OnPush,
14076
- template: `
14077
- <svg
14078
- viewBox="0 0 24 24"
14079
- fill="none"
14080
- stroke="currentColor"
14081
- [attr.stroke-width]="strokeWidth()"
14082
- stroke-linecap="round"
14083
- stroke-linejoin="round"
14084
- aria-hidden="true"
14085
- width="100%"
14086
- height="100%">
14087
- <polyline points="18 15 12 9 6 15" />
14088
- </svg>
14089
- `,
14090
- }]
14091
- }] });
14092
-
14093
14389
  class ClockIconComponent extends IconComponentBase {
14094
14390
  static slug = 'clock';
14095
14391
  static category = 'feather';
@@ -14683,6 +14979,38 @@ function nextTime(current, unit, direction, minuteStep, secondStep) {
14683
14979
  return { hours, minutes, seconds: nextSeconds };
14684
14980
  }
14685
14981
 
14982
+ /**
14983
+ * Vertical or horizontal sequence of events, each a colored node on a connecting
14984
+ * line with an optional heading, timestamp, and description. A single item flagged
14985
+ * `current` is highlighted with the secondary brand color to mark "you are here".
14986
+ */
14987
+ class TimelineComponent {
14988
+ /** The events to render, in order. */
14989
+ items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
14990
+ /** Direction the timeline flows. */
14991
+ orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
14992
+ /** Content placement relative to the line; `alternate` applies to vertical timelines only. */
14993
+ align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
14994
+ /** Visual size; scales nodes, gaps, and text from a single knob. */
14995
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
14996
+ hostClasses = computed(() => ({
14997
+ [`ea-timeline--${this.orientation()}`]: true,
14998
+ [`ea-timeline--${this.size()}`]: true,
14999
+ 'ea-timeline--alternate': this.orientation() === 'vertical' && this.align() === 'alternate',
15000
+ }), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
15001
+ // Node modifier: the current marker always wins the secondary brand; otherwise
15002
+ // the item's semantic color (default when unset).
15003
+ itemModifier(item) {
15004
+ return `ea-timeline__item--${item.current ? 'current' : (item.color ?? 'default')}`;
15005
+ }
15006
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15007
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: TimelineComponent, isStandalone: true, selector: "ea-timeline", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ol\n class=\"ea-timeline\"\n role=\"list\"\n [ngClass]=\"hostClasses()\">\n @for (item of items(); track $index) {\n <li\n class=\"ea-timeline__item\"\n role=\"listitem\"\n [ngClass]=\"itemModifier(item)\"\n [attr.aria-current]=\"item.current ? 'true' : null\">\n <div\n class=\"ea-timeline__marker\"\n aria-hidden=\"true\">\n <span class=\"ea-timeline__node\"></span>\n <span class=\"ea-timeline__connector\"></span>\n </div>\n <div class=\"ea-timeline__content\">\n @if (item.heading) {\n <p class=\"ea-timeline__heading\">{{ item.heading }}</p>\n }\n @if (item.time) {\n <p class=\"ea-timeline__time\">{{ item.time }}</p>\n }\n @if (item.description) {\n <p class=\"ea-timeline__description\">{{ item.description }}</p>\n }\n </div>\n </li>\n }\n</ol>\n", styles: [".ea-timeline{margin:0;padding:0;list-style:none}.ea-timeline--xs{font-size:var(--font-size-xs)}.ea-timeline--sm{font-size:var(--font-size-sm)}.ea-timeline--md{font-size:var(--font-size-md)}.ea-timeline--lg{font-size:var(--font-size-lg)}.ea-timeline--xl{font-size:var(--font-size-xl)}.ea-timeline__marker{display:flex}.ea-timeline__node{flex-shrink:0;width:.875em;height:.875em;border-radius:var(--radius-full);background-color:var(--color-border-strong);transition:var(--transition-colors)}.ea-timeline__connector{background-color:var(--color-border-default)}.ea-timeline__content{display:flex;flex-direction:column;gap:.125em;min-width:0}.ea-timeline__heading{margin:0;font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);color:var(--color-text-primary)}.ea-timeline__time{margin:0;font-size:.8125em;color:var(--color-text-tertiary)}.ea-timeline__description{margin:0;font-size:.875em;color:var(--color-text-secondary)}.ea-timeline__item--primary .ea-timeline__node{background-color:var(--color-brand-default)}.ea-timeline__item--secondary .ea-timeline__node{background-color:var(--color-brand-secondary-default)}.ea-timeline__item--success .ea-timeline__node{background-color:var(--color-success-default)}.ea-timeline__item--warning .ea-timeline__node{background-color:var(--color-warning-default)}.ea-timeline__item--error .ea-timeline__node{background-color:var(--color-error-default)}.ea-timeline__item--current .ea-timeline__node{box-shadow:0 0 0 .25em var(--color-brand-secondary-muted);background-color:var(--color-brand-secondary-default)}@media(forced-colors:active){.ea-timeline__item--current .ea-timeline__node{outline:var(--border-width-thin) solid CanvasText;outline-offset:.125em}}.ea-timeline--vertical .ea-timeline__item{display:grid;grid-template-columns:auto 1fr;column-gap:.875em}.ea-timeline--vertical .ea-timeline__marker{position:relative;flex-direction:column;align-items:center}.ea-timeline--vertical .ea-timeline__node{z-index:1;position:relative;margin-top:.15em}.ea-timeline--vertical .ea-timeline__connector{z-index:0;position:absolute;top:0;bottom:0;left:50%;width:.125em;transform:translate(-50%)}.ea-timeline--vertical .ea-timeline__item:first-child .ea-timeline__connector{top:.5875em}.ea-timeline--vertical .ea-timeline__item:last-child .ea-timeline__connector{top:0;bottom:auto;height:.5875em}.ea-timeline--vertical .ea-timeline__item:only-child .ea-timeline__connector{display:none}.ea-timeline--vertical .ea-timeline__content{padding-bottom:1.5em}.ea-timeline--vertical .ea-timeline__item:last-child .ea-timeline__content{padding-bottom:0}.ea-timeline--alternate .ea-timeline__item{grid-template-columns:1fr auto 1fr}.ea-timeline--alternate .ea-timeline__marker{grid-column:2;grid-row:1}.ea-timeline--alternate .ea-timeline__content{grid-row:1}.ea-timeline--alternate .ea-timeline__item:nth-child(odd) .ea-timeline__content{align-items:flex-end;grid-column:1;text-align:end}.ea-timeline--alternate .ea-timeline__item:nth-child(2n) .ea-timeline__content{grid-column:3}.ea-timeline--horizontal{display:flex;align-items:stretch}.ea-timeline--horizontal .ea-timeline__item{display:flex;flex:1 1 0;flex-direction:column;min-width:0}.ea-timeline--horizontal .ea-timeline__marker{flex-direction:row;align-items:center}.ea-timeline--horizontal .ea-timeline__connector{flex:1 0 auto;height:.125em;min-width:1.5em}.ea-timeline--horizontal .ea-timeline__content{padding-top:.75em;padding-inline-end:.875em}.ea-timeline--horizontal .ea-timeline__item:last-child .ea-timeline__connector{display:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15008
+ }
15009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: TimelineComponent, decorators: [{
15010
+ type: Component,
15011
+ args: [{ selector: 'ea-timeline', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgClass], template: "<ol\n class=\"ea-timeline\"\n role=\"list\"\n [ngClass]=\"hostClasses()\">\n @for (item of items(); track $index) {\n <li\n class=\"ea-timeline__item\"\n role=\"listitem\"\n [ngClass]=\"itemModifier(item)\"\n [attr.aria-current]=\"item.current ? 'true' : null\">\n <div\n class=\"ea-timeline__marker\"\n aria-hidden=\"true\">\n <span class=\"ea-timeline__node\"></span>\n <span class=\"ea-timeline__connector\"></span>\n </div>\n <div class=\"ea-timeline__content\">\n @if (item.heading) {\n <p class=\"ea-timeline__heading\">{{ item.heading }}</p>\n }\n @if (item.time) {\n <p class=\"ea-timeline__time\">{{ item.time }}</p>\n }\n @if (item.description) {\n <p class=\"ea-timeline__description\">{{ item.description }}</p>\n }\n </div>\n </li>\n }\n</ol>\n", styles: [".ea-timeline{margin:0;padding:0;list-style:none}.ea-timeline--xs{font-size:var(--font-size-xs)}.ea-timeline--sm{font-size:var(--font-size-sm)}.ea-timeline--md{font-size:var(--font-size-md)}.ea-timeline--lg{font-size:var(--font-size-lg)}.ea-timeline--xl{font-size:var(--font-size-xl)}.ea-timeline__marker{display:flex}.ea-timeline__node{flex-shrink:0;width:.875em;height:.875em;border-radius:var(--radius-full);background-color:var(--color-border-strong);transition:var(--transition-colors)}.ea-timeline__connector{background-color:var(--color-border-default)}.ea-timeline__content{display:flex;flex-direction:column;gap:.125em;min-width:0}.ea-timeline__heading{margin:0;font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);color:var(--color-text-primary)}.ea-timeline__time{margin:0;font-size:.8125em;color:var(--color-text-tertiary)}.ea-timeline__description{margin:0;font-size:.875em;color:var(--color-text-secondary)}.ea-timeline__item--primary .ea-timeline__node{background-color:var(--color-brand-default)}.ea-timeline__item--secondary .ea-timeline__node{background-color:var(--color-brand-secondary-default)}.ea-timeline__item--success .ea-timeline__node{background-color:var(--color-success-default)}.ea-timeline__item--warning .ea-timeline__node{background-color:var(--color-warning-default)}.ea-timeline__item--error .ea-timeline__node{background-color:var(--color-error-default)}.ea-timeline__item--current .ea-timeline__node{box-shadow:0 0 0 .25em var(--color-brand-secondary-muted);background-color:var(--color-brand-secondary-default)}@media(forced-colors:active){.ea-timeline__item--current .ea-timeline__node{outline:var(--border-width-thin) solid CanvasText;outline-offset:.125em}}.ea-timeline--vertical .ea-timeline__item{display:grid;grid-template-columns:auto 1fr;column-gap:.875em}.ea-timeline--vertical .ea-timeline__marker{position:relative;flex-direction:column;align-items:center}.ea-timeline--vertical .ea-timeline__node{z-index:1;position:relative;margin-top:.15em}.ea-timeline--vertical .ea-timeline__connector{z-index:0;position:absolute;top:0;bottom:0;left:50%;width:.125em;transform:translate(-50%)}.ea-timeline--vertical .ea-timeline__item:first-child .ea-timeline__connector{top:.5875em}.ea-timeline--vertical .ea-timeline__item:last-child .ea-timeline__connector{top:0;bottom:auto;height:.5875em}.ea-timeline--vertical .ea-timeline__item:only-child .ea-timeline__connector{display:none}.ea-timeline--vertical .ea-timeline__content{padding-bottom:1.5em}.ea-timeline--vertical .ea-timeline__item:last-child .ea-timeline__content{padding-bottom:0}.ea-timeline--alternate .ea-timeline__item{grid-template-columns:1fr auto 1fr}.ea-timeline--alternate .ea-timeline__marker{grid-column:2;grid-row:1}.ea-timeline--alternate .ea-timeline__content{grid-row:1}.ea-timeline--alternate .ea-timeline__item:nth-child(odd) .ea-timeline__content{align-items:flex-end;grid-column:1;text-align:end}.ea-timeline--alternate .ea-timeline__item:nth-child(2n) .ea-timeline__content{grid-column:3}.ea-timeline--horizontal{display:flex;align-items:stretch}.ea-timeline--horizontal .ea-timeline__item{display:flex;flex:1 1 0;flex-direction:column;min-width:0}.ea-timeline--horizontal .ea-timeline__marker{flex-direction:row;align-items:center}.ea-timeline--horizontal .ea-timeline__connector{flex:1 0 auto;height:.125em;min-width:1.5em}.ea-timeline--horizontal .ea-timeline__content{padding-top:.75em;padding-inline-end:.875em}.ea-timeline--horizontal .ea-timeline__item:last-child .ea-timeline__connector{display:none}\n"] }]
15012
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
15013
+
14686
15014
  class AlertTriangleIconComponent extends IconComponentBase {
14687
15015
  static slug = 'alert-triangle';
14688
15016
  static category = 'feather';
@@ -38260,5 +38588,5 @@ const ICONS = [
38260
38588
  * Generated bundle index. Do not edit.
38261
38589
  */
38262
38590
 
38263
- export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, AnthropicIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeCheckIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BitcoinIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkCheckIconComponent, BookmarkIconComponent, BotIconComponent, BottleIconComponent, BoxIconComponent, BrainIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarCheckIconComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardCheckIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, CoinsIconComponent, ColorPickerComponent, ColumnsIconComponent, CommandIconComponent, CommandPaletteComponent, CompassIconComponent, CopyIconComponent, CornerDownLeftIconComponent, CornerDownRightIconComponent, CornerLeftDownIconComponent, CornerLeftUpIconComponent, CornerRightDownIconComponent, CornerRightUpIconComponent, CornerUpLeftIconComponent, CornerUpRightIconComponent, CpuIconComponent, CreditCardIconComponent, CropIconComponent, CrosshairIconComponent, DEFAULT_PALETTE_ROLES, DataTableComponent, DatabaseIconComponent, DatePickerComponent, DeleteIconComponent, DialogComponent, DiscIconComponent, DiscordIconComponent, DivideCircleIconComponent, DivideIconComponent, DivideSquareIconComponent, DividerComponent, DockerIconComponent, DollarSignIconComponent, DownloadCloudIconComponent, DownloadIconComponent, DrawerComponent, DribbbleIconComponent, DropboxIconComponent, DropdownComponent, DropletIconComponent, EAGAMI_ALL_LOCALES, EAGAMI_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_LOCALE_META, EagamiI18nService, EagamiIconComponent, EagamiWordmarkComponent, Edit2IconComponent, Edit3IconComponent, EditIconComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, Facebook2IconComponent, FacebookIconComponent, FastForwardIconComponent, FeatherIconComponent, FieldLabelComponent, FieldMessagesComponent, Figma2IconComponent, FigmaIconComponent, FileIconComponent, FileMinusIconComponent, FilePlusIconComponent, FileTextIconComponent, FileUploaderComponent, FilmIconComponent, FilterIconComponent, FilterXIconComponent, FingerprintIconComponent, FlagIconComponent, FlameIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FormFieldComponent, FramerIconComponent, FrownIconComponent, GaugeIconComponent, GeminiIconComponent, GiftIconComponent, GitBranchIconComponent, GitCommitIconComponent, GitMergeIconComponent, GitPullRequestIconComponent, Github2IconComponent, GithubIconComponent, GitlabIconComponent, GlobeIconComponent, GoogleIconComponent, GridIconComponent, HalfCircleIconComponent, HalfHeartIconComponent, HardDriveIconComponent, HashIconComponent, HeadphonesIconComponent, HeartIconComponent, HelpCircleIconComponent, HeptagonIconComponent, HexagonIconComponent, HomeIconComponent, ICONS, IconComponentBase, ImageIconComponent, InboxIconComponent, InfoIconComponent, InputComponent, InstagramIconComponent, ItalicIconComponent, KeyIconComponent, KubernetesIconComponent, LampIconComponent, LayersIconComponent, LayoutIconComponent, LeafIconComponent, LeftHalfStarIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, ListChecksIconComponent, ListIconComponent, LoaderIconComponent, LockIconComponent, LogInIconComponent, LogOutIconComponent, MailIconComponent, MapIconComponent, MapPinIconComponent, MastercardIconComponent, Maximize2IconComponent, MaximizeIconComponent, MehIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MenuTriggerDirective, MessageCircleIconComponent, MessageSquareIconComponent, MicIconComponent, MicOffIconComponent, MicrosoftIconComponent, Minimize2IconComponent, MinimizeIconComponent, MinusCircleIconComponent, MinusIconComponent, MinusSquareIconComponent, MongodbIconComponent, MonitorIconComponent, MoonIconComponent, MoreHorizontalIconComponent, MoreVerticalIconComponent, MousePointerIconComponent, MoveIconComponent, MultiSelectComponent, MusicIconComponent, Navigation2IconComponent, NavigationIconComponent, NetlifyIconComponent, NotionIconComponent, NpmIconComponent, OctagonIconComponent, PackageIconComponent, PaginatorComponent, PaperclipIconComponent, PauseCircleIconComponent, PauseIconComponent, PaypalIconComponent, PenToolIconComponent, PentagonIconComponent, PercentIconComponent, PhoneCallIconComponent, PhoneForwardedIconComponent, PhoneIconComponent, PhoneIncomingIconComponent, PhoneMissedIconComponent, PhoneOffIconComponent, PhoneOutgoingIconComponent, PieChartIconComponent, PlayCircleIconComponent, PlayIconComponent, PlusCircleIconComponent, PlusIconComponent, PlusSquareIconComponent, PocketIconComponent, PopoverComponent, PowerIconComponent, PrinterIconComponent, ProgressBarComponent, QrCodeIconComponent, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RatingComponent, ReactIconComponent, ReceiptIconComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RedoIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RocketIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScanIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SnowflakeIconComponent, SoccerBallIconComponent, SparklesIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TailwindIconComponent, TargetIconComponent, TelegramIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThreadsIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TiktokIconComponent, TimePickerComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, TransferListComponent, Trash2IconComponent, TrashIconComponent, TreeComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UndoIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VirtualListComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WCAG_AA, WalletIconComponent, WandIconComponent, WatchIconComponent, WhatsappIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, applyPalette, computePopoverPosition, contrastRatio, de, derivePalette, el, en, esES, formatViolations, frFR, frenchSpacing, hexToOklch, iconDisplayName, is, nl, oklchToHex, pl, provideEagamiUi, ptBR, relativeLuminance, validatePalette, visibleNodeIds, walkTree, zhCN };
38591
+ export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, AnthropicIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeCheckIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BitcoinIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkCheckIconComponent, BookmarkIconComponent, BotIconComponent, BottleIconComponent, BoxIconComponent, BrainIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarCheckIconComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardCheckIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, CoinsIconComponent, ColorPickerComponent, ColumnsIconComponent, CommandIconComponent, CommandPaletteComponent, CompassIconComponent, CopyIconComponent, CornerDownLeftIconComponent, CornerDownRightIconComponent, CornerLeftDownIconComponent, CornerLeftUpIconComponent, CornerRightDownIconComponent, CornerRightUpIconComponent, CornerUpLeftIconComponent, CornerUpRightIconComponent, CpuIconComponent, CreditCardIconComponent, CropIconComponent, CrosshairIconComponent, DEFAULT_PALETTE_ROLES, DataTableComponent, DatabaseIconComponent, DatePickerComponent, DeleteIconComponent, DialogComponent, DiscIconComponent, DiscordIconComponent, DivideCircleIconComponent, DivideIconComponent, DivideSquareIconComponent, DividerComponent, DockerIconComponent, DollarSignIconComponent, DownloadCloudIconComponent, DownloadIconComponent, DrawerComponent, DribbbleIconComponent, DropboxIconComponent, DropdownComponent, DropletIconComponent, EAGAMI_ALL_LOCALES, EAGAMI_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_LOCALE_META, EagamiI18nService, EagamiIconComponent, EagamiWordmarkComponent, Edit2IconComponent, Edit3IconComponent, EditIconComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, Facebook2IconComponent, FacebookIconComponent, FastForwardIconComponent, FeatherIconComponent, FieldLabelComponent, FieldMessagesComponent, Figma2IconComponent, FigmaIconComponent, FileIconComponent, FileMinusIconComponent, FilePlusIconComponent, FileTextIconComponent, FileUploaderComponent, FilmIconComponent, FilterIconComponent, FilterXIconComponent, FingerprintIconComponent, FlagIconComponent, FlameIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FormFieldComponent, FramerIconComponent, FrownIconComponent, GaugeIconComponent, GeminiIconComponent, GiftIconComponent, GitBranchIconComponent, GitCommitIconComponent, GitMergeIconComponent, GitPullRequestIconComponent, Github2IconComponent, GithubIconComponent, GitlabIconComponent, GlobeIconComponent, GoogleIconComponent, GridIconComponent, HalfCircleIconComponent, HalfHeartIconComponent, HardDriveIconComponent, HashIconComponent, HeadphonesIconComponent, HeartIconComponent, HelpCircleIconComponent, HeptagonIconComponent, HexagonIconComponent, HomeIconComponent, ICONS, IconComponentBase, ImageIconComponent, InboxIconComponent, InfoIconComponent, InputComponent, InstagramIconComponent, ItalicIconComponent, KeyIconComponent, KubernetesIconComponent, LampIconComponent, LayersIconComponent, LayoutIconComponent, LeafIconComponent, LeftHalfStarIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, ListChecksIconComponent, ListIconComponent, LoaderIconComponent, LockIconComponent, LogInIconComponent, LogOutIconComponent, MailIconComponent, MapIconComponent, MapPinIconComponent, MastercardIconComponent, Maximize2IconComponent, MaximizeIconComponent, MehIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MenuTriggerDirective, MessageCircleIconComponent, MessageSquareIconComponent, MicIconComponent, MicOffIconComponent, MicrosoftIconComponent, Minimize2IconComponent, MinimizeIconComponent, MinusCircleIconComponent, MinusIconComponent, MinusSquareIconComponent, MongodbIconComponent, MonitorIconComponent, MoonIconComponent, MoreHorizontalIconComponent, MoreVerticalIconComponent, MousePointerIconComponent, MoveIconComponent, MultiSelectComponent, MusicIconComponent, Navigation2IconComponent, NavigationIconComponent, NetlifyIconComponent, NotionIconComponent, NpmIconComponent, NumberInputComponent, OctagonIconComponent, PackageIconComponent, PaginatorComponent, PaperclipIconComponent, PauseCircleIconComponent, PauseIconComponent, PaypalIconComponent, PenToolIconComponent, PentagonIconComponent, PercentIconComponent, PhoneCallIconComponent, PhoneForwardedIconComponent, PhoneIconComponent, PhoneIncomingIconComponent, PhoneMissedIconComponent, PhoneOffIconComponent, PhoneOutgoingIconComponent, PieChartIconComponent, PlayCircleIconComponent, PlayIconComponent, PlusCircleIconComponent, PlusIconComponent, PlusSquareIconComponent, PocketIconComponent, PopoverComponent, PowerIconComponent, PrinterIconComponent, ProgressBarComponent, QrCodeIconComponent, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RatingComponent, ReactIconComponent, ReceiptIconComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RedoIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RocketIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScanIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SnowflakeIconComponent, SoccerBallIconComponent, SparklesIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TailwindIconComponent, TargetIconComponent, TelegramIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThreadsIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TiktokIconComponent, TimePickerComponent, TimelineComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, TransferListComponent, Trash2IconComponent, TrashIconComponent, TreeComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UndoIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VirtualListComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WCAG_AA, WalletIconComponent, WandIconComponent, WatchIconComponent, WhatsappIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, applyPalette, computePopoverPosition, contrastRatio, de, derivePalette, el, en, esES, formatViolations, frFR, frenchSpacing, hexToOklch, iconDisplayName, is, nl, oklchToHex, pl, provideEagamiUi, ptBR, relativeLuminance, validatePalette, visibleNodeIds, walkTree, zhCN };
38264
38592
  //# sourceMappingURL=eagami-ui.mjs.map