@eagami/ui 5.1.0 → 5.2.1
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 +22 -8
- package/fesm2022/eagami-ui.mjs +132 -23
- package/fesm2022/eagami-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles/_form-field.scss +55 -0
- package/src/styles/eagami-ui.scss +1 -0
- package/types/eagami-ui.d.ts +43 -1
package/README.md
CHANGED
|
@@ -8,21 +8,31 @@
|
|
|
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
10
|
<a href="https://main--6a14a63d5cab2ebad17871ff.chromatic.com"><img src="https://img.shields.io/badge/Storybook-FF4785?logo=storybook&logoColor=white" alt="Storybook" /></a>
|
|
11
|
-
<a href="https://eagami.com/ui/accessibility"><img src="https://img.shields.io/badge/WCAG%202.2%20AA-
|
|
11
|
+
<a href="https://eagami.com/ui/accessibility"><img src="https://img.shields.io/badge/WCAG%202.2%20AA-axe--core%20tested-0b7261" alt="WCAG 2.2 AA, tested with axe-core" /></a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
`@eagami/ui` is a lightweight, accessible Angular component library. Sensible defaults out of the box, with a fully customizable design to fit any brand.
|
|
15
15
|
|
|
16
16
|
**Live documentation:** [eagami.com/ui](https://eagami.com/ui)
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Why Eagami UI
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **
|
|
20
|
+
Angular teams usually reach for [Angular Material](https://material.angular.io), [PrimeNG](https://primeng.org), or a Tailwind copy-paste kit like [Spartan](https://spartan.ng). Eagami UI is different where it counts:
|
|
21
|
+
|
|
22
|
+
- **Themes to your brand.** Give it one color per role and it generates a full, accessibility-checked palette; every other style is a CSS variable you can override (see [design tokens](https://eagami.com/ui/design-tokens)). Light and dark are built in and follow the system preference.
|
|
23
|
+
- **Lightweight.** One runtime dependency and no CSS framework to adopt. Components are standalone, so your app ships only what it imports.
|
|
24
|
+
- **Accessible and localized out of the box.** Every component is keyboard-navigable and screen-reader-ready, with built-in text in 15 languages you can switch at runtime.
|
|
25
|
+
- **Yours to own.** Plain Angular and CSS with no lock-in: read, copy, or fork any component like the rest of your app.
|
|
26
|
+
- **Modern Angular.** Signals, native control flow, and SSR-safe rendering throughout.
|
|
27
|
+
|
|
28
|
+
| | Eagami UI | Angular Material | PrimeNG | Spartan |
|
|
29
|
+
|---|---|---|---|---|
|
|
30
|
+
| Styling model | CSS custom properties | Sass / Material 3 tokens | Design tokens + presets | Tailwind, copy-paste |
|
|
31
|
+
| Re-skin to any brand | First-class | Within Material Design | Preset-based | You own the markup |
|
|
32
|
+
| Built-in text i18n | 15 languages, runtime | Provide your own | Provide your own | Your markup |
|
|
33
|
+
| Per-component a11y tests | Yes (axe-core) | Backed by the CDK | Varies by component | Your responsibility |
|
|
34
|
+
| Requires a CSS framework | No | No | No | Tailwind |
|
|
35
|
+
| Runtime dependencies | 1 (`tslib`) | Angular CDK | multiple | Tailwind |
|
|
26
36
|
|
|
27
37
|
## Installation
|
|
28
38
|
|
|
@@ -121,6 +131,10 @@ The library is SSR-safe and renders on the server (Angular Universal / `@angular
|
|
|
121
131
|
- **[eagami-ui-flutter.md](https://github.com/mwiraszka/eagami/blob/main/eagami-ui-flutter.md)** for Flutter projects
|
|
122
132
|
- **[eagami-ui-react.md](https://github.com/mwiraszka/eagami/blob/main/eagami-ui-react.md)** for React projects
|
|
123
133
|
|
|
134
|
+
## Stability and support
|
|
135
|
+
|
|
136
|
+
Eagami UI follows [Semantic Versioning](https://semver.org). Breaking changes ship only in major releases, are listed under a **Breaking** heading in the [changelog](CHANGELOG.md), and are preceded by a deprecation period wherever practical. See [SUPPORT.md](https://github.com/mwiraszka/eagami/blob/main/SUPPORT.md) for the versioning policy, supported versions, deprecation policy, and how to get help.
|
|
137
|
+
|
|
124
138
|
## Compatibility
|
|
125
139
|
|
|
126
140
|
| | |
|
package/fesm2022/eagami-ui.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, provideEnvironmentInitializer, signal, inject, effect, computed, Injectable, input, ChangeDetectionStrategy, Component, HostBinding, Directive, model, output, Injector,
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, provideEnvironmentInitializer, signal, inject, effect, computed, Injectable, input, ChangeDetectionStrategy, Component, HostBinding, Directive, model, output, Injector, afterNextRender, DestroyRef, viewChild, ElementRef, HostListener, forwardRef, Renderer2, untracked, ViewEncapsulation, contentChild, viewChildren, PLATFORM_ID } from '@angular/core';
|
|
3
3
|
import { NgClass, NgComponentOutlet, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
|
|
4
4
|
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Display name, flag, and reading direction for every built-in locale, in
|
|
@@ -4063,33 +4062,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4063
4062
|
* `errorMsg`, a consumer `errorMessages` override, then the library's localized
|
|
4064
4063
|
* default for the active `ValidationErrors` key. Auto-derived messages surface
|
|
4065
4064
|
* only once the bound control is `invalid && touched`, matching the moment a
|
|
4066
|
-
* user expects validation feedback.
|
|
4067
|
-
*
|
|
4068
|
-
*
|
|
4069
|
-
* constructor injection: a control that provides `NG_VALUE_ACCESSOR` cannot
|
|
4070
|
-
* also inject its own `NgControl` directly without a circular dependency.
|
|
4071
|
-
* `afterNextRender` defers resolution to the browser, after the host directive
|
|
4072
|
-
* (`formControl` / `ngModel`) exists, so the server render simply shows no
|
|
4073
|
-
* error (an untouched control never does).
|
|
4065
|
+
* user expects validation feedback. The control arrives as a signal so callers
|
|
4066
|
+
* decide how it is resolved: from the host's own `NgControl` (CVA components)
|
|
4067
|
+
* or from projected content (`<ea-form-field>`).
|
|
4074
4068
|
*/
|
|
4075
|
-
function
|
|
4076
|
-
const injector = inject(Injector);
|
|
4069
|
+
function controlErrorStateFrom(control, config) {
|
|
4077
4070
|
const i18n = inject(EagamiI18nService);
|
|
4078
|
-
const destroyRef = inject(DestroyRef);
|
|
4079
|
-
const control = signal(null, ...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
|
|
4080
4071
|
// Bumped on every status/touched change so the computed re-reads the control.
|
|
4081
4072
|
const revision = signal(0, ...(ngDevMode ? [{ debugName: "revision" }] : /* istanbul ignore next */ []));
|
|
4082
|
-
|
|
4083
|
-
const
|
|
4084
|
-
const ctrl = ngControl?.control ?? null;
|
|
4073
|
+
effect(onCleanup => {
|
|
4074
|
+
const ctrl = control();
|
|
4085
4075
|
if (!ctrl) {
|
|
4086
4076
|
return;
|
|
4087
4077
|
}
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
});
|
|
4092
|
-
}, { injector });
|
|
4078
|
+
const sub = ctrl.events.subscribe(() => revision.update(r => r + 1));
|
|
4079
|
+
onCleanup(() => sub.unsubscribe());
|
|
4080
|
+
});
|
|
4093
4081
|
const autoError = computed(() => {
|
|
4094
4082
|
revision();
|
|
4095
4083
|
const ctrl = control();
|
|
@@ -4102,6 +4090,24 @@ function injectControlErrorState(config) {
|
|
|
4102
4090
|
const hasError = computed(() => error() !== null, ...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
|
|
4103
4091
|
return { error, hasError };
|
|
4104
4092
|
}
|
|
4093
|
+
/**
|
|
4094
|
+
* `controlErrorStateFrom` for a component hosting its own form directive.
|
|
4095
|
+
*
|
|
4096
|
+
* The bound `NgControl` is resolved lazily from the injector rather than via
|
|
4097
|
+
* constructor injection: a control that provides `NG_VALUE_ACCESSOR` cannot
|
|
4098
|
+
* also inject its own `NgControl` directly without a circular dependency.
|
|
4099
|
+
* `afterNextRender` defers resolution to the browser, after the host directive
|
|
4100
|
+
* (`formControl` / `ngModel`) exists, so the server render simply shows no
|
|
4101
|
+
* error (an untouched control never does).
|
|
4102
|
+
*/
|
|
4103
|
+
function injectControlErrorState(config) {
|
|
4104
|
+
const injector = inject(Injector);
|
|
4105
|
+
const control = signal(null, ...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
|
|
4106
|
+
afterNextRender(() => {
|
|
4107
|
+
control.set(injector.get(NgControl, null)?.control ?? null);
|
|
4108
|
+
}, { injector });
|
|
4109
|
+
return controlErrorStateFrom(control, config);
|
|
4110
|
+
}
|
|
4105
4111
|
/**
|
|
4106
4112
|
* Picks the first active error key and resolves its message: a consumer
|
|
4107
4113
|
* override wins, otherwise the localized built-in default (interpolating the
|
|
@@ -10141,6 +10147,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
10141
10147
|
args: [{ selector: 'ea-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, NgComponentOutlet], template: "<div\n class=\"ea-empty-state\"\n [ngClass]=\"hostClasses()\">\n <div class=\"ea-empty-state__media\">\n @if (icon(); as iconComponent) {\n <ng-container *ngComponentOutlet=\"iconComponent\" />\n }\n <ng-content select=\"[slot=media]\" />\n </div>\n\n @if (title()) {\n @switch (headingLevel()) {\n @case ('h2') {\n <h2 class=\"ea-empty-state__title\">{{ title() }}</h2>\n }\n @case ('h3') {\n <h3 class=\"ea-empty-state__title\">{{ title() }}</h3>\n }\n @case ('h4') {\n <h4 class=\"ea-empty-state__title\">{{ title() }}</h4>\n }\n @case ('h5') {\n <h5 class=\"ea-empty-state__title\">{{ title() }}</h5>\n }\n @case ('h6') {\n <h6 class=\"ea-empty-state__title\">{{ title() }}</h6>\n }\n @default {\n <h2 class=\"ea-empty-state__title\">{{ title() }}</h2>\n }\n }\n }\n\n @if (description()) {\n <p class=\"ea-empty-state__description\">{{ description() }}</p>\n }\n\n <div class=\"ea-empty-state__actions\">\n <ng-content select=\"[slot=actions]\" />\n </div>\n</div>\n", styles: [".ea-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75em;padding:2em 1.5em;text-align:center;font-family:var(--font-family-sans);color:var(--color-text-secondary)}.ea-empty-state--xs{font-size:var(--font-size-xs)}.ea-empty-state--sm{font-size:var(--font-size-sm)}.ea-empty-state--md{font-size:var(--font-size-md)}.ea-empty-state--lg{font-size:var(--font-size-lg)}.ea-empty-state--xl{font-size:var(--font-size-xl)}.ea-empty-state--bordered{border:var(--border-width-medium) dashed var(--color-border-default);border-radius:var(--radius-xl)}.ea-empty-state__media{display:flex;align-items:center;justify-content:center;font-size:3em;color:var(--ea-empty-state-media-color, var(--color-text-tertiary))}.ea-empty-state__media:empty{display:none}.ea-empty-state__title{margin:0;font-size:1.125em;font-weight:var(--ea-empty-state-title-font-weight, var(--font-weight-semibold));line-height:var(--line-height-tight);color:var(--ea-empty-state-title-color, var(--color-text-primary))}.ea-empty-state__description{max-width:32em;margin:0;font-size:1em;line-height:var(--line-height-normal);color:var(--ea-empty-state-description-color, var(--color-text-secondary))}.ea-empty-state__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5em;margin-top:.5em}.ea-empty-state__actions:empty{display:none}\n"] }]
|
|
10142
10148
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], headingLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingLevel", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }] } });
|
|
10143
10149
|
|
|
10150
|
+
/**
|
|
10151
|
+
* Wraps a projected native control (`input`, `select`, or `textarea`) in the
|
|
10152
|
+
* library's standard field chrome: a label with required marker, a hint, and
|
|
10153
|
+
* error messages, including localized validation errors auto-derived from a
|
|
10154
|
+
* bound reactive or template-driven control. The label's `for` and the
|
|
10155
|
+
* control's `aria-describedby`, `aria-invalid`, and `aria-required` are wired
|
|
10156
|
+
* automatically. The eagami form components render this chrome themselves; use
|
|
10157
|
+
* this wrapper so native or custom controls read as part of the same form.
|
|
10158
|
+
*
|
|
10159
|
+
* The label and aria wiring attach in the browser after render, since the
|
|
10160
|
+
* projected control can't be reached before it exists; the server ships the
|
|
10161
|
+
* plain markup and the associations complete on hydration.
|
|
10162
|
+
*/
|
|
10163
|
+
class FormFieldComponent {
|
|
10164
|
+
host = inject(ElementRef);
|
|
10165
|
+
/** Text label rendered above the control. */
|
|
10166
|
+
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
10167
|
+
/** Helper text shown below the control; hidden while an error is showing. */
|
|
10168
|
+
hint = input(undefined, ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
10169
|
+
/** Error message shown below the control; replaces the hint and flags the field invalid. */
|
|
10170
|
+
errorMsg = input(undefined, ...(ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []));
|
|
10171
|
+
/** Per-validator-key message overrides for the projected form control (e.g. `{ required: '...' }`). */
|
|
10172
|
+
errorMessages = input(undefined, ...(ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []));
|
|
10173
|
+
/** Marks the field as required. */
|
|
10174
|
+
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
10175
|
+
/** id seed for the label and message wiring; auto-generated when omitted. */
|
|
10176
|
+
id = input(uniqueId('ea-form-field'), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
10177
|
+
ngControl = contentChild(NgControl, ...(ngDevMode ? [{ debugName: "ngControl" }] : /* istanbul ignore next */ []));
|
|
10178
|
+
rendered = signal(false, ...(ngDevMode ? [{ debugName: "rendered" }] : /* istanbul ignore next */ []));
|
|
10179
|
+
controlEl = signal(null, ...(ngDevMode ? [{ debugName: "controlEl" }] : /* istanbul ignore next */ []));
|
|
10180
|
+
// The consumer's own aria-describedby, captured before this component starts
|
|
10181
|
+
// managing the attribute so external references survive message toggling
|
|
10182
|
+
baseDescribedBy = null;
|
|
10183
|
+
controlId = computed(() => this.controlEl()?.id, ...(ngDevMode ? [{ debugName: "controlId" }] : /* istanbul ignore next */ []));
|
|
10184
|
+
boundControl = computed(() => this.rendered() ? (this.ngControl()?.control ?? null) : null, ...(ngDevMode ? [{ debugName: "boundControl" }] : /* istanbul ignore next */ []));
|
|
10185
|
+
errorState = controlErrorStateFrom(this.boundControl, {
|
|
10186
|
+
errorMsg: this.errorMsg,
|
|
10187
|
+
errorMessages: this.errorMessages,
|
|
10188
|
+
});
|
|
10189
|
+
errorText = this.errorState.error;
|
|
10190
|
+
hasError = this.errorState.hasError;
|
|
10191
|
+
showHint = computed(() => !!this.hint() && !this.hasError(), ...(ngDevMode ? [{ debugName: "showHint" }] : /* istanbul ignore next */ []));
|
|
10192
|
+
constructor() {
|
|
10193
|
+
// Browser-only: the server render ships the plain markup and the label and
|
|
10194
|
+
// aria wiring attach after hydration
|
|
10195
|
+
afterNextRender(() => this.rendered.set(true));
|
|
10196
|
+
effect(() => {
|
|
10197
|
+
if (!this.rendered()) {
|
|
10198
|
+
return;
|
|
10199
|
+
}
|
|
10200
|
+
// Re-locate the control when the projected form directive swaps
|
|
10201
|
+
this.ngControl();
|
|
10202
|
+
const el = this.host.nativeElement.querySelector('input, select, textarea');
|
|
10203
|
+
if (el && el !== this.controlEl()) {
|
|
10204
|
+
this.baseDescribedBy = el.getAttribute('aria-describedby');
|
|
10205
|
+
if (!el.id) {
|
|
10206
|
+
el.id = `${this.id()}-control`;
|
|
10207
|
+
}
|
|
10208
|
+
}
|
|
10209
|
+
this.controlEl.set(el);
|
|
10210
|
+
});
|
|
10211
|
+
effect(() => {
|
|
10212
|
+
const el = this.controlEl();
|
|
10213
|
+
if (!el) {
|
|
10214
|
+
return;
|
|
10215
|
+
}
|
|
10216
|
+
const message = this.hasError()
|
|
10217
|
+
? `${this.id()}-error`
|
|
10218
|
+
: this.showHint()
|
|
10219
|
+
? `${this.id()}-hint`
|
|
10220
|
+
: null;
|
|
10221
|
+
const describedBy = [this.baseDescribedBy, message].filter(Boolean).join(' ');
|
|
10222
|
+
if (describedBy) {
|
|
10223
|
+
el.setAttribute('aria-describedby', describedBy);
|
|
10224
|
+
}
|
|
10225
|
+
else {
|
|
10226
|
+
el.removeAttribute('aria-describedby');
|
|
10227
|
+
}
|
|
10228
|
+
if (this.hasError()) {
|
|
10229
|
+
el.setAttribute('aria-invalid', 'true');
|
|
10230
|
+
}
|
|
10231
|
+
else {
|
|
10232
|
+
el.removeAttribute('aria-invalid');
|
|
10233
|
+
}
|
|
10234
|
+
// aria-required rather than the native attribute: the projected control
|
|
10235
|
+
// may already carry reactive-forms validators, so only the state is
|
|
10236
|
+
// conveyed, without altering native constraint validation
|
|
10237
|
+
if (this.required()) {
|
|
10238
|
+
el.setAttribute('aria-required', 'true');
|
|
10239
|
+
}
|
|
10240
|
+
else {
|
|
10241
|
+
el.removeAttribute('aria-required');
|
|
10242
|
+
}
|
|
10243
|
+
});
|
|
10244
|
+
}
|
|
10245
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10246
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FormFieldComponent, isStandalone: true, selector: "ea-form-field", inputs: { label: { classPropertyName: "label", publicName: "label", 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 }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ea-form-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"controlId()\"\n [required]=\"required()\" />\n }\n\n <ng-content />\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-form-field{display:flex;flex-direction:column;gap:var(--space-1-5);color:var(--color-text-secondary)}\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 });
|
|
10247
|
+
}
|
|
10248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
10249
|
+
type: Component,
|
|
10250
|
+
args: [{ selector: 'ea-form-field', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FieldLabelComponent, FieldMessagesComponent], template: "<div class=\"ea-form-field\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [forId]=\"controlId()\"\n [required]=\"required()\" />\n }\n\n <ng-content />\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [".ea-form-field{display:flex;flex-direction:column;gap:var(--space-1-5);color:var(--color-text-secondary)}\n"] }]
|
|
10251
|
+
}], ctorParameters: () => [], propDecorators: { 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 }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ngControl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgControl), { isSignal: true }] }] } });
|
|
10252
|
+
|
|
10144
10253
|
class ArchiveIconComponent extends IconComponentBase {
|
|
10145
10254
|
static slug = 'archive';
|
|
10146
10255
|
static category = 'feather';
|
|
@@ -38137,5 +38246,5 @@ const ICONS = [
|
|
|
38137
38246
|
* Generated bundle index. Do not edit.
|
|
38138
38247
|
*/
|
|
38139
38248
|
|
|
38140
|
-
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, 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 };
|
|
38249
|
+
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 };
|
|
38141
38250
|
//# sourceMappingURL=eagami-ui.mjs.map
|