@eagami/ui 2.9.0 → 2.11.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eagami/ui",
3
- "version": "2.9.0",
3
+ "version": "2.11.0",
4
4
  "description": "Lightweight, accessible Angular UI component library built on CSS custom properties",
5
5
  "author": "Michal Wiraszka <michal@eagami.com>",
6
6
  "license": "MIT",
@@ -77,10 +77,18 @@
77
77
  --color-bg-base: var(--color-neutral-0);
78
78
  --color-bg-subtle: var(--color-neutral-50);
79
79
  --color-bg-stripe: var(--color-neutral-50);
80
+ // Zebra-stripe fill for table rows: a mid-tone between the base row and the
81
+ // header tint so striped rows read as lighter than the header, not identical to
82
+ // it. Dark mode overrides the ratio to stay equally subtle.
83
+ --color-bg-stripe-subtle: color-mix(
84
+ in srgb,
85
+ var(--color-bg-base) 30%,
86
+ var(--color-bg-stripe)
87
+ );
80
88
  --color-bg-muted: var(--color-neutral-100);
81
- // Stronger neutral fill for placeholder surfaces (e.g. avatar) that must read
82
- // clearly against the page; muted is too faint on a white base
83
- --color-bg-emphasis: var(--color-neutral-300);
89
+ // Soft neutral fill for placeholder surfaces (e.g. avatar initials) when no
90
+ // image is set; light enough to sit gently on a white page
91
+ --color-bg-emphasis: var(--color-neutral-100);
84
92
  --color-bg-elevated: var(--color-neutral-0);
85
93
  --color-bg-overlay: rgba(0, 0, 0, 0.5);
86
94
 
@@ -169,6 +177,13 @@
169
177
  --color-bg-base: var(--color-neutral-800);
170
178
  --color-bg-subtle: var(--color-neutral-700);
171
179
  --color-bg-stripe: var(--color-neutral-900);
180
+ // The dark base-to-stripe gap reads stronger than the light one, so weight the
181
+ // stripe mix toward the base row to keep zebra striping subtle.
182
+ --color-bg-stripe-subtle: color-mix(
183
+ in srgb,
184
+ var(--color-bg-base) 62.5%,
185
+ var(--color-bg-stripe)
186
+ );
172
187
  --color-bg-elevated: var(--color-neutral-700);
173
188
  // Opaque muted surface for static fills (disabled fields, slider/progress
174
189
  // tracks, skeletons). Hover/active fills route through the translucent
@@ -526,7 +526,6 @@ type AutocompleteSize = EaSize;
526
526
  */
527
527
  declare class AutocompleteComponent implements ControlValueAccessor {
528
528
  private readonly inputEl;
529
- private readonly hostEl;
530
529
  private readonly i18n;
531
530
  readonly label: _angular_core.InputSignal<string | undefined>;
532
531
  readonly placeholder: _angular_core.InputSignal<string>;
@@ -590,7 +589,6 @@ declare class AutocompleteComponent implements ControlValueAccessor {
590
589
  /** Moves keyboard focus to the underlying text input. */
591
590
  focus(): void;
592
591
  private moveFocus;
593
- onDocumentClick(event: Event): void;
594
592
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
595
593
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent, "ea-autocomplete", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxResults": { "alias": "maxResults"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "selected": "selected"; "changed": "changed"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
596
594
  }
@@ -1274,6 +1272,7 @@ declare class CodeInputComponent implements ControlValueAccessor {
1274
1272
  readonly digitEls: _angular_core.Signal<readonly ElementRef<HTMLInputElement>[]>;
1275
1273
  protected readonly i18n: EagamiI18nService;
1276
1274
  readonly label: _angular_core.InputSignal<string | undefined>;
1275
+ /** Placeholder text spread one character per cell (cell i shows character i). */
1277
1276
  readonly placeholder: _angular_core.InputSignal<string>;
1278
1277
  readonly length: _angular_core.InputSignal<number>;
1279
1278
  readonly size: _angular_core.InputSignal<EaSize>;
@@ -1282,6 +1281,8 @@ declare class CodeInputComponent implements ControlValueAccessor {
1282
1281
  readonly disabled: _angular_core.InputSignal<boolean>;
1283
1282
  readonly readonly: _angular_core.InputSignal<boolean>;
1284
1283
  readonly required: _angular_core.InputSignal<boolean>;
1284
+ /** Allow any non-whitespace character; when false (default) only digits are accepted. */
1285
+ readonly allowAllChars: _angular_core.InputSignal<boolean>;
1285
1286
  readonly id: _angular_core.InputSignal<string>;
1286
1287
  readonly value: _angular_core.ModelSignal<string>;
1287
1288
  readonly focusedIndex: _angular_core.WritableSignal<number>;
@@ -1295,6 +1296,7 @@ declare class CodeInputComponent implements ControlValueAccessor {
1295
1296
  readonly showError: _angular_core.Signal<boolean>;
1296
1297
  readonly showHint: _angular_core.Signal<boolean>;
1297
1298
  readonly digits: _angular_core.Signal<string[]>;
1299
+ readonly placeholders: _angular_core.Signal<string[]>;
1298
1300
  readonly indices: _angular_core.Signal<number[]>;
1299
1301
  writeValue(val: string): void;
1300
1302
  registerOnChange(fn: (value: string) => void): void;
@@ -1307,9 +1309,10 @@ declare class CodeInputComponent implements ControlValueAccessor {
1307
1309
  handleBlur(): void;
1308
1310
  /** Moves keyboard focus to the next empty digit (or the last one when full). */
1309
1311
  focus(): void;
1312
+ private sanitize;
1310
1313
  private focusDigit;
1311
1314
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeInputComponent, never>;
1312
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
1315
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "allowAllChars": { "alias": "allowAllChars"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
1313
1316
  }
1314
1317
 
1315
1318
  /** Visual size of the date picker trigger. */