@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 +2 -1
- package/fesm2022/eagami-ui.mjs +113 -44
- package/fesm2022/eagami-ui.mjs.map +1 -1
- package/package.json +2 -2
- package/types/eagami-ui.d.ts +67 -23
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
|
|
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
|
|
package/fesm2022/eagami-ui.mjs
CHANGED
|
@@ -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
|
-
*
|
|
9
|
-
* fallback), then alphabetical by each language's own
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
'es-ES',
|
|
16
|
-
'fr-FR',
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
'pt-BR',
|
|
21
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
2047
|
-
|
|
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
|
-
|
|
2110
|
+
frFR,
|
|
2050
2111
|
el,
|
|
2051
2112
|
pl,
|
|
2052
|
-
|
|
2113
|
+
esES,
|
|
2053
2114
|
de,
|
|
2054
|
-
|
|
2055
|
-
|
|
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.
|
|
2071
|
-
*
|
|
2072
|
-
*
|
|
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
|
-
|
|
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 &&
|
|
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 =
|
|
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
|
|
2160
|
+
/** Switches the active locale; falls back to English if it is not registered. */
|
|
2096
2161
|
setLocale(locale) {
|
|
2097
|
-
this._locale.set(
|
|
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
|
|
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
|
|
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,
|
|
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
|