@eagami/ui 3.2.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,6 +7,7 @@
7
7
  <p align="center">
8
8
  <a href="https://www.npmjs.com/package/@eagami/ui"><img src="https://img.shields.io/npm/v/@eagami/ui.svg" alt="npm version" /></a>
9
9
  <a href="https://github.com/mwiraszka/eagami/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@eagami/ui.svg" alt="license" /></a>
10
+ <a href="https://main--6a14a63d5cab2ebad17871ff.chromatic.com"><img src="https://img.shields.io/badge/Storybook-FF4785?logo=storybook&logoColor=white" alt="Storybook" /></a>
10
11
  </p>
11
12
 
12
13
  `@eagami/ui` is a lightweight, accessible Angular component library. Sensible defaults out of the box, with a fully customizable design to fit any brand.
@@ -94,7 +95,7 @@ Every brand-role pairing is checked against WCAG 2.1 AA at bootstrap; a contrast
94
95
 
95
96
  ## Internationalization
96
97
 
97
- Built-in strings ship in English, French (France), Greek, Polish, and Spanish (Spain), with runtime switching via `EagamiI18nService`. See [internationalization](https://eagami.com/ui/i18n) for setup and per-string overrides.
98
+ Built-in strings ship in ten languages, with runtime switching via `EagamiI18nService`. English is bundled by default; register the other languages you use with `provideEagamiUi({ locales: [...] })` (or pass `EAGAMI_ALL_LOCALES` for all of them) so you ship only what you need. See [internationalization](https://eagami.com/ui/i18n) for setup and per-string overrides.
98
99
 
99
100
  ## Server-side rendering
100
101
 
@@ -5,22 +5,35 @@ import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
 
7
7
  /**
8
- * Supported locales for language switchers: English pinned first (default
9
- * fallback), then alphabetical by each language's own name (Latin scripts
10
- * first, then Greek and Chinese).
8
+ * Display name and flag for every built-in locale, in language-switcher order:
9
+ * English first (the default fallback), then alphabetical by each language's own
10
+ * name (Latin scripts first, then Greek and Chinese). Keyed by `EagamiLocale` so
11
+ * a locale added to the union without an entry fails to compile, keeping this
12
+ * single source exhaustive.
11
13
  */
12
- const EAGAMI_LOCALES = [
13
- 'en',
14
- 'de',
15
- 'es-ES',
16
- 'fr-FR',
17
- 'is',
18
- 'nl',
19
- 'pl',
20
- 'pt-BR',
21
- 'el',
22
- 'zh-CN',
23
- ];
14
+ const LOCALE_DISPLAY = {
15
+ en: { label: 'English', flag: '🇬🇧' },
16
+ de: { label: 'Deutsch', flag: '🇩🇪' },
17
+ 'es-ES': { label: 'Español', flag: '🇪🇸' },
18
+ 'fr-FR': { label: 'Français', flag: '🇫🇷' },
19
+ is: { label: 'Íslenska', flag: '🇮🇸' },
20
+ nl: { label: 'Nederlands', flag: '🇳🇱' },
21
+ pl: { label: 'Polski', flag: '🇵🇱' },
22
+ 'pt-BR': { label: 'Português (Brasil)', flag: '🇧🇷' },
23
+ el: { label: 'Ελληνικά', flag: '🇬🇷' },
24
+ 'zh-CN': { label: '中文', flag: '🇨🇳' },
25
+ };
26
+ /**
27
+ * Display metadata for every built-in locale. The single source the Storybook
28
+ * locale toolbar and any consumer-built language switcher derive from, so the
29
+ * displayed list never drifts from the locales the library ships.
30
+ */
31
+ const EAGAMI_LOCALE_META = Object.keys(LOCALE_DISPLAY).map(locale => ({ locale, ...LOCALE_DISPLAY[locale] }));
32
+ /**
33
+ * Supported locales for language switchers, in display order. Derived from
34
+ * `EAGAMI_LOCALE_META` so the two never drift.
35
+ */
36
+ const EAGAMI_LOCALES = EAGAMI_LOCALE_META.map(m => m.locale);
24
37
 
25
38
  const STYLE_TAG_ID = 'eagami-palette';
26
39
  /**
@@ -337,10 +350,13 @@ const EAGAMI_I18N_CONFIG = new InjectionToken('EAGAMI_I18N_CONFIG');
337
350
  * Configures Eagami UI for the application.
338
351
  *
339
352
  * ```ts
353
+ * import { frFR, provideEagamiUi } from '@eagami/ui';
354
+ *
340
355
  * bootstrapApplication(AppComponent, {
341
356
  * providers: [
342
357
  * provideEagamiUi({
343
358
  * locale: 'fr-FR',
359
+ * locales: [frFR],
344
360
  * palette: { primary: { base: '#3674a1' } },
345
361
  * }),
346
362
  * ],
@@ -348,11 +364,13 @@ const EAGAMI_I18N_CONFIG = new InjectionToken('EAGAMI_I18N_CONFIG');
348
364
  * ```
349
365
  *
350
366
  * Optional. Without it, the library defaults to English and ships its
351
- * built-in brand colours.
367
+ * built-in brand colours. Only English is bundled until you register more
368
+ * languages via `locales` (pass `EAGAMI_ALL_LOCALES` for all of them).
352
369
  */
353
370
  function provideEagamiUi(config = {}) {
354
371
  const i18nConfig = {
355
372
  locale: config.locale,
373
+ locales: config.locales,
356
374
  messages: config.messages,
357
375
  };
358
376
  return makeEnvironmentProviders([
@@ -384,7 +402,7 @@ function provideEagamiUi(config = {}) {
384
402
  const _eagamiI18nLocaleOverride = signal(null, ...(ngDevMode ? [{ debugName: "_eagamiI18nLocaleOverride" }] : /* istanbul ignore next */ []));
385
403
 
386
404
  /** German messages. */
387
- const de = {
405
+ const messages$9 = {
388
406
  alert: {
389
407
  dismiss: 'Schließen',
390
408
  },
@@ -548,9 +566,13 @@ const de = {
548
566
  tagline: 'elegantes Webdesign',
549
567
  },
550
568
  };
569
+ const de = {
570
+ locale: 'de',
571
+ messages: messages$9,
572
+ };
551
573
 
552
574
  /** Greek messages. */
553
- const el = {
575
+ const messages$8 = {
554
576
  alert: {
555
577
  dismiss: 'Απόρριψη',
556
578
  },
@@ -714,9 +736,13 @@ const el = {
714
736
  tagline: 'κομψός σχεδιασμός ιστού',
715
737
  },
716
738
  };
739
+ const el = {
740
+ locale: 'el',
741
+ messages: messages$8,
742
+ };
717
743
 
718
744
  /** English (default / fallback) messages. */
719
- const en = {
745
+ const messages$7 = {
720
746
  alert: {
721
747
  dismiss: 'Dismiss',
722
748
  },
@@ -880,9 +906,13 @@ const en = {
880
906
  tagline: 'elegant web design',
881
907
  },
882
908
  };
909
+ const en = {
910
+ locale: 'en',
911
+ messages: messages$7,
912
+ };
883
913
 
884
914
  /** Spanish (Spain) messages. */
885
- const esES = {
915
+ const messages$6 = {
886
916
  alert: {
887
917
  dismiss: 'Descartar',
888
918
  },
@@ -1046,9 +1076,13 @@ const esES = {
1046
1076
  tagline: 'diseño web elegante',
1047
1077
  },
1048
1078
  };
1079
+ const esES = {
1080
+ locale: 'es-ES',
1081
+ messages: messages$6,
1082
+ };
1049
1083
 
1050
1084
  /** French (France) messages. */
1051
- const frFR = {
1085
+ const messages$5 = {
1052
1086
  alert: {
1053
1087
  dismiss: 'Fermer',
1054
1088
  },
@@ -1212,9 +1246,13 @@ const frFR = {
1212
1246
  tagline: 'design web élégant',
1213
1247
  },
1214
1248
  };
1249
+ const frFR = {
1250
+ locale: 'fr-FR',
1251
+ messages: messages$5,
1252
+ };
1215
1253
 
1216
1254
  /** Icelandic messages. */
1217
- const is = {
1255
+ const messages$4 = {
1218
1256
  alert: {
1219
1257
  dismiss: 'Loka',
1220
1258
  },
@@ -1378,9 +1416,13 @@ const is = {
1378
1416
  tagline: 'glæsileg vefhönnun',
1379
1417
  },
1380
1418
  };
1419
+ const is = {
1420
+ locale: 'is',
1421
+ messages: messages$4,
1422
+ };
1381
1423
 
1382
1424
  /** Dutch messages. */
1383
- const nl = {
1425
+ const messages$3 = {
1384
1426
  alert: {
1385
1427
  dismiss: 'Sluiten',
1386
1428
  },
@@ -1544,9 +1586,13 @@ const nl = {
1544
1586
  tagline: 'elegant webontwerp',
1545
1587
  },
1546
1588
  };
1589
+ const nl = {
1590
+ locale: 'nl',
1591
+ messages: messages$3,
1592
+ };
1547
1593
 
1548
1594
  /** Polish messages. */
1549
- const pl = {
1595
+ const messages$2 = {
1550
1596
  alert: {
1551
1597
  dismiss: 'Zamknij',
1552
1598
  },
@@ -1710,9 +1756,13 @@ const pl = {
1710
1756
  tagline: 'elegancki projekt stron',
1711
1757
  },
1712
1758
  };
1759
+ const pl = {
1760
+ locale: 'pl',
1761
+ messages: messages$2,
1762
+ };
1713
1763
 
1714
1764
  /** Brazilian Portuguese messages. */
1715
- const ptBR = {
1765
+ const messages$1 = {
1716
1766
  alert: {
1717
1767
  dismiss: 'Dispensar',
1718
1768
  },
@@ -1876,9 +1926,13 @@ const ptBR = {
1876
1926
  tagline: 'web design elegante',
1877
1927
  },
1878
1928
  };
1929
+ const ptBR = {
1930
+ locale: 'pt-BR',
1931
+ messages: messages$1,
1932
+ };
1879
1933
 
1880
1934
  /** Simplified Chinese messages. */
1881
- const zhCN = {
1935
+ const messages = {
1882
1936
  alert: {
1883
1937
  dismiss: '关闭',
1884
1938
  },
@@ -2042,20 +2096,27 @@ const zhCN = {
2042
2096
  tagline: '优雅的网页设计',
2043
2097
  },
2044
2098
  };
2099
+ const zhCN = {
2100
+ locale: 'zh-CN',
2101
+ messages,
2102
+ };
2045
2103
 
2046
- /** Built-in message dictionaries, keyed by locale. */
2047
- const EAGAMI_MESSAGES = {
2104
+ /**
2105
+ * Every built-in locale bundle. Registering this pulls all shipped languages
2106
+ * into the bundle; import individual locales instead to keep it lean.
2107
+ */
2108
+ const EAGAMI_ALL_LOCALES = [
2048
2109
  en,
2049
- 'fr-FR': frFR,
2110
+ frFR,
2050
2111
  el,
2051
2112
  pl,
2052
- 'es-ES': esES,
2113
+ esES,
2053
2114
  de,
2054
- 'pt-BR': ptBR,
2055
- 'zh-CN': zhCN,
2115
+ ptBR,
2116
+ zhCN,
2056
2117
  is,
2057
2118
  nl,
2058
- };
2119
+ ];
2059
2120
 
2060
2121
  /** Shallow-merges per-component override groups over a complete base dictionary. */
2061
2122
  function applyOverrides(base, overrides) {
@@ -2067,13 +2128,17 @@ function applyOverrides(base, overrides) {
2067
2128
  }
2068
2129
  /**
2069
2130
  * Holds the active locale and resolves the matching message dictionary for
2070
- * every Eagami UI component. The `locale` signal is reactive, so changing it
2071
- * at runtime re-renders all components with the new strings. Unknown locales
2072
- * (or missing keys via partial overrides) fall back to English.
2131
+ * every Eagami UI component. English is always available; other languages are
2132
+ * the ones registered via `provideEagamiUi({ locales })`. The `locale` signal
2133
+ * is reactive, so changing it at runtime re-renders all components. Unknown or
2134
+ * unregistered locales fall back to English.
2073
2135
  */
2074
2136
  class EagamiI18nService {
2075
2137
  config = inject(EAGAMI_I18N_CONFIG, { optional: true });
2076
- _locale = signal(_eagamiI18nLocaleOverride() ?? this.config?.locale ?? 'en', ...(ngDevMode ? [{ debugName: "_locale" }] : /* istanbul ignore next */ []));
2138
+ // English is baked in; consumer-registered locales extend it. A locale that
2139
+ // was never registered resolves to English rather than to missing strings.
2140
+ registered = new Map([en, ...(this.config?.locales ?? [])].map((bundle) => [bundle.locale, bundle.messages]));
2141
+ _locale = signal(this.resolveInitialLocale(), ...(ngDevMode ? [{ debugName: "_locale" }] : /* istanbul ignore next */ []));
2077
2142
  /** The currently active locale. Read it reactively or call `setLocale()`. */
2078
2143
  locale = this._locale.asReadonly();
2079
2144
  constructor() {
@@ -2081,20 +2146,24 @@ class EagamiI18nService {
2081
2146
  // override signal is null in production, so this effect is a no-op there.
2082
2147
  effect(() => {
2083
2148
  const override = _eagamiI18nLocaleOverride();
2084
- if (override !== null && EAGAMI_MESSAGES[override]) {
2149
+ if (override !== null && this.registered.has(override)) {
2085
2150
  this._locale.set(override);
2086
2151
  }
2087
2152
  });
2088
2153
  }
2089
2154
  /** The resolved message dictionary for the active locale. */
2090
2155
  messages = computed(() => {
2091
- const base = EAGAMI_MESSAGES[this._locale()] ?? en;
2156
+ const base = this.registered.get(this._locale()) ?? en.messages;
2092
2157
  const overrides = this.config?.messages;
2093
2158
  return overrides ? applyOverrides(base, overrides) : base;
2094
2159
  }, ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
2095
- /** Switches the active locale; falls back to English if unsupported. */
2160
+ /** Switches the active locale; falls back to English if it is not registered. */
2096
2161
  setLocale(locale) {
2097
- this._locale.set(EAGAMI_MESSAGES[locale] ? locale : 'en');
2162
+ this._locale.set(this.registered.has(locale) ? locale : 'en');
2163
+ }
2164
+ resolveInitialLocale() {
2165
+ const want = _eagamiI18nLocaleOverride() ?? this.config?.locale ?? 'en';
2166
+ return this.registered.has(want) ? want : 'en';
2098
2167
  }
2099
2168
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: EagamiI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2100
2169
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: EagamiI18nService, providedIn: 'root' });
@@ -10195,7 +10264,7 @@ class RadioGroupComponent {
10195
10264
  useExisting: forwardRef(() => RadioGroupComponent),
10196
10265
  multi: true,
10197
10266
  },
10198
- ], ngImport: i0, template: "<div class=\"ea-radio-group-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [labelId]=\"id() + '-label'\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-radio-group\"\n [class.ea-radio-group--horizontal]=\"orientation() === 'horizontal'\"\n [class.ea-radio-group--vertical]=\"orientation() === 'vertical'\"\n role=\"radiogroup\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : 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 <ng-content />\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-radio-group-field{display:flex;flex-direction:column;gap:var(--space-1-5)}.ea-radio-group{display:flex}.ea-radio-group--vertical{flex-direction:column;gap:var(--space-2)}.ea-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-4)}\n"], dependencies: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10267
+ ], ngImport: i0, template: "<div class=\"ea-radio-group-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [labelId]=\"id() + '-label'\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-radio-group\"\n [class.ea-radio-group--horizontal]=\"orientation() === 'horizontal'\"\n [class.ea-radio-group--vertical]=\"orientation() === 'vertical'\"\n role=\"radiogroup\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : 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 <ng-content />\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-radio-group-field{display:flex;flex-direction:column;gap:var(--space-1-5)}.ea-radio-group{display:flex;flex-direction:column;gap:var(--space-2)}.ea-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-4)}\n"], dependencies: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10199
10268
  }
10200
10269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: RadioGroupComponent, decorators: [{
10201
10270
  type: Component,
@@ -10205,7 +10274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
10205
10274
  useExisting: forwardRef(() => RadioGroupComponent),
10206
10275
  multi: true,
10207
10276
  },
10208
- ], template: "<div class=\"ea-radio-group-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [labelId]=\"id() + '-label'\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-radio-group\"\n [class.ea-radio-group--horizontal]=\"orientation() === 'horizontal'\"\n [class.ea-radio-group--vertical]=\"orientation() === 'vertical'\"\n role=\"radiogroup\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : 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 <ng-content />\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-radio-group-field{display:flex;flex-direction:column;gap:var(--space-1-5)}.ea-radio-group{display:flex}.ea-radio-group--vertical{flex-direction:column;gap:var(--space-2)}.ea-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-4)}\n"] }]
10277
+ ], template: "<div class=\"ea-radio-group-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [labelId]=\"id() + '-label'\"\n [required]=\"required()\" />\n }\n\n <div\n class=\"ea-radio-group\"\n [class.ea-radio-group--horizontal]=\"orientation() === 'horizontal'\"\n [class.ea-radio-group--vertical]=\"orientation() === 'vertical'\"\n role=\"radiogroup\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : 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 <ng-content />\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-radio-group-field{display:flex;flex-direction:column;gap:var(--space-1-5)}.ea-radio-group{display:flex;flex-direction:column;gap:var(--space-2)}.ea-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-4)}\n"] }]
10209
10278
  }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", 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 }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
10210
10279
 
10211
10280
  /**
@@ -33978,5 +34047,5 @@ const ICONS = [
33978
34047
  * Generated bundle index. Do not edit.
33979
34048
  */
33980
34049
 
33981
- export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkIconComponent, BottleIconComponent, BoxIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, 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_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_MESSAGES, 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, FlagIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FramerIconComponent, FrownIconComponent, 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, LeftHalfStarIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, 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, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RatingComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SoccerBallIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TargetIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TimePickerComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, TransferListComponent, Trash2IconComponent, TrashIconComponent, TreeComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VirtualListComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WCAG_AA, WatchIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, applyPalette, computePopoverPosition, contrastRatio, derivePalette, el, en, esES, formatViolations, frFR, frenchSpacing, hexToOklch, iconDisplayName, oklchToHex, pl, provideEagamiUi, relativeLuminance, validatePalette, visibleNodeIds, walkTree };
34050
+ export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkIconComponent, BottleIconComponent, BoxIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, 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, FlagIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FramerIconComponent, FrownIconComponent, 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, LeftHalfStarIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, 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, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RatingComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SoccerBallIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TargetIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TimePickerComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, TransferListComponent, Trash2IconComponent, TrashIconComponent, TreeComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VirtualListComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WCAG_AA, WatchIconComponent, 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 };
33982
34051
  //# sourceMappingURL=eagami-ui.mjs.map