@eagami/ui 0.1.0 → 0.3.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.
@@ -0,0 +1,29 @@
1
+ // =============================================================================
2
+ // TOOLTIP GLOBAL STYLES
3
+ // =============================================================================
4
+
5
+ .ea-tooltip {
6
+ z-index: var(--z-index-tooltip);
7
+ position: absolute;
8
+ padding: var(--space-1-5) var(--space-2-5);
9
+ font-family: var(--font-family-sans);
10
+ font-size: var(--font-size-xs);
11
+ font-weight: var(--font-weight-medium);
12
+ line-height: var(--line-height-normal);
13
+ white-space: nowrap;
14
+ border-radius: var(--radius-md);
15
+ background-color: var(--color-neutral-800);
16
+ color: var(--color-neutral-0);
17
+ pointer-events: none;
18
+ animation: ea-tooltip-fade-in var(--duration-fast) var(--ease-out);
19
+ }
20
+
21
+ @keyframes ea-tooltip-fade-in {
22
+ from {
23
+ opacity: 0;
24
+ }
25
+
26
+ to {
27
+ opacity: 1;
28
+ }
29
+ }
@@ -14,3 +14,4 @@
14
14
 
15
15
  @use 'tokens/index';
16
16
  @use 'reset';
17
+ @use 'tooltip';
@@ -1,8 +1,107 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef } from '@angular/core';
2
+ import { OnDestroy, ElementRef, AfterViewInit } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import * as _eagami_ui from '@eagami/ui';
5
5
 
6
+ type AvatarEditorShape = 'circle' | 'square';
7
+ interface AvatarEditorCropEvent {
8
+ blob: Blob;
9
+ dataUrl: string;
10
+ }
11
+ declare class AvatarEditorComponent implements OnDestroy {
12
+ readonly canvasEl: _angular_core.Signal<ElementRef<HTMLCanvasElement> | undefined>;
13
+ readonly fileInputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
14
+ readonly shape: _angular_core.InputSignal<AvatarEditorShape>;
15
+ readonly canvasSize: _angular_core.InputSignal<number>;
16
+ readonly currentSrc: _angular_core.InputSignal<string | undefined>;
17
+ readonly accept: _angular_core.InputSignal<string>;
18
+ readonly maxFileSize: _angular_core.InputSignal<number>;
19
+ readonly minZoom: _angular_core.InputSignal<number>;
20
+ readonly maxZoom: _angular_core.InputSignal<number>;
21
+ readonly exportQuality: _angular_core.InputSignal<number>;
22
+ readonly exportType: _angular_core.InputSignal<string>;
23
+ readonly cropped: _angular_core.OutputEmitterRef<AvatarEditorCropEvent>;
24
+ readonly fileError: _angular_core.OutputEmitterRef<string>;
25
+ readonly hasImage: _angular_core.WritableSignal<boolean>;
26
+ readonly isDragOver: _angular_core.WritableSignal<boolean>;
27
+ readonly zoom: _angular_core.WritableSignal<number>;
28
+ private image;
29
+ private offsetX;
30
+ private offsetY;
31
+ private dragStartX;
32
+ private dragStartY;
33
+ private isDragging;
34
+ private initialOffsetX;
35
+ private initialOffsetY;
36
+ readonly hostClasses: _angular_core.Signal<{
37
+ [x: string]: boolean;
38
+ 'ea-avatar-editor--has-image': boolean;
39
+ 'ea-avatar-editor--drag-over': boolean;
40
+ }>;
41
+ private readonly boundWheel;
42
+ ngOnDestroy(): void;
43
+ onDragOver(event: DragEvent): void;
44
+ onDragLeave(event: DragEvent): void;
45
+ onDrop(event: DragEvent): void;
46
+ onFileSelected(event: Event): void;
47
+ openFilePicker(): void;
48
+ onMouseDown(event: MouseEvent): void;
49
+ onTouchStart(event: TouchEvent): void;
50
+ private readonly onMouseMoveBound;
51
+ private readonly onMouseUpBound;
52
+ private readonly onTouchMoveBound;
53
+ private readonly onTouchEndBound;
54
+ private onMouseMove;
55
+ private onMouseUp;
56
+ private onTouchMove;
57
+ private onTouchEnd;
58
+ private onWheel;
59
+ setZoom(value: number): void;
60
+ onZoomInput(event: Event): void;
61
+ removeImage(): void;
62
+ exportCrop(): void;
63
+ private loadFile;
64
+ private centerImage;
65
+ private getScale;
66
+ private getDrawParams;
67
+ private clampOffset;
68
+ private draw;
69
+ private clearCanvas;
70
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarEditorComponent, never>;
71
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarEditorComponent, "ea-avatar-editor", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": false; "isSignal": true; }; "currentSrc": { "alias": "currentSrc"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "exportQuality": { "alias": "exportQuality"; "required": false; "isSignal": true; }; "exportType": { "alias": "exportType"; "required": false; "isSignal": true; }; }, { "cropped": "cropped"; "fileError": "fileError"; }, never, never, true, never>;
72
+ }
73
+
74
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
75
+ type AvatarShape = 'circle' | 'square';
76
+ declare class AvatarComponent {
77
+ readonly src: _angular_core.InputSignal<string | undefined>;
78
+ readonly alt: _angular_core.InputSignal<string>;
79
+ readonly initials: _angular_core.InputSignal<string | undefined>;
80
+ readonly size: _angular_core.InputSignal<AvatarSize>;
81
+ readonly shape: _angular_core.InputSignal<AvatarShape>;
82
+ readonly hostClasses: _angular_core.Signal<{
83
+ [x: string]: boolean;
84
+ }>;
85
+ readonly showImage: _angular_core.Signal<boolean>;
86
+ readonly showInitials: _angular_core.Signal<boolean>;
87
+ readonly showFallback: _angular_core.Signal<boolean>;
88
+ handleImageError(event: Event): void;
89
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
90
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "ea-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
91
+ }
92
+
93
+ type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
94
+ type BadgeSize = 'sm' | 'md' | 'lg';
95
+ declare class BadgeComponent {
96
+ readonly variant: _angular_core.InputSignal<BadgeVariant>;
97
+ readonly size: _angular_core.InputSignal<BadgeSize>;
98
+ readonly hostClasses: _angular_core.Signal<{
99
+ [x: string]: boolean;
100
+ }>;
101
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
102
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "ea-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
103
+ }
104
+
6
105
  type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
7
106
  type ButtonSize = 'sm' | 'md' | 'lg';
8
107
  type ButtonType = 'button' | 'submit' | 'reset';
@@ -28,17 +127,19 @@ declare class ButtonComponent {
28
127
  }
29
128
 
30
129
  type CardVariant = 'elevated' | 'outlined' | 'filled';
31
- type CardPadding = 'none' | 'sm' | 'md' | 'lg';
130
+ type CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';
131
+ type CardHeaderAlign = 'start' | 'center' | 'end';
32
132
  declare class CardComponent {
33
133
  readonly variant: _angular_core.InputSignal<CardVariant>;
34
134
  readonly padding: _angular_core.InputSignal<CardPadding>;
35
135
  readonly fullWidth: _angular_core.InputSignal<boolean>;
136
+ readonly headerAlign: _angular_core.InputSignal<CardHeaderAlign>;
36
137
  readonly hostClasses: _angular_core.Signal<{
37
138
  [x: string]: boolean;
38
139
  'ea-card--full-width': boolean;
39
140
  }>;
40
141
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
41
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "ea-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
142
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "ea-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "headerAlign": { "alias": "headerAlign"; "required": false; "isSignal": true; }; }, {}, never, ["[eaCardHeader]", "*", "[eaCardFooter]"], true, never>;
42
143
  }
43
144
 
44
145
  type CheckboxSize = 'sm' | 'md' | 'lg';
@@ -92,6 +193,18 @@ declare class DialogComponent {
92
193
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "ea-dialog", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
93
194
  }
94
195
 
196
+ type DividerOrientation = 'horizontal' | 'vertical';
197
+ declare class DividerComponent {
198
+ readonly orientation: _angular_core.InputSignal<DividerOrientation>;
199
+ readonly label: _angular_core.InputSignal<string | undefined>;
200
+ readonly hostClasses: _angular_core.Signal<{
201
+ [x: string]: boolean;
202
+ 'ea-divider--with-label': boolean;
203
+ }>;
204
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
205
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "ea-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
206
+ }
207
+
95
208
  type DropdownSize = 'sm' | 'md' | 'lg';
96
209
  interface DropdownOption {
97
210
  value: string;
@@ -117,7 +230,7 @@ declare class DropdownComponent implements ControlValueAccessor {
117
230
  private onChange;
118
231
  private onTouched;
119
232
  readonly isDisabled: _angular_core.Signal<boolean>;
120
- readonly resolvedStatus: _angular_core.Signal<"error" | "default">;
233
+ readonly resolvedStatus: _angular_core.Signal<"default" | "error">;
121
234
  readonly showError: _angular_core.Signal<boolean>;
122
235
  readonly showHint: _angular_core.Signal<boolean>;
123
236
  readonly selectedLabel: _angular_core.Signal<string>;
@@ -140,10 +253,55 @@ declare class DropdownComponent implements ControlValueAccessor {
140
253
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "ea-dropdown", 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; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "error"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
141
254
  }
142
255
 
256
+ declare class AlertCircleIconComponent {
257
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertCircleIconComponent, never>;
258
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertCircleIconComponent, "ea-icon-alert-circle", never, {}, {}, never, never, true, never>;
259
+ }
260
+
261
+ declare class CheckIconComponent {
262
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckIconComponent, never>;
263
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckIconComponent, "ea-icon-check", never, {}, {}, never, never, true, never>;
264
+ }
265
+
266
+ declare class EyeOffIconComponent {
267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EyeOffIconComponent, never>;
268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeOffIconComponent, "ea-icon-eye-off", never, {}, {}, never, never, true, never>;
269
+ }
270
+
271
+ declare class EyeIconComponent {
272
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EyeIconComponent, never>;
273
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeIconComponent, "ea-icon-eye", never, {}, {}, never, never, true, never>;
274
+ }
275
+
276
+ declare class GoogleIconComponent {
277
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GoogleIconComponent, never>;
278
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GoogleIconComponent, "ea-icon-google", never, {}, {}, never, never, true, never>;
279
+ }
280
+
281
+ declare class InfoIconComponent {
282
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfoIconComponent, never>;
283
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InfoIconComponent, "ea-icon-info", never, {}, {}, never, never, true, never>;
284
+ }
285
+
286
+ declare class LoaderIconComponent {
287
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoaderIconComponent, never>;
288
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoaderIconComponent, "ea-icon-loader", never, {}, {}, never, never, true, never>;
289
+ }
290
+
291
+ declare class UserIconComponent {
292
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserIconComponent, never>;
293
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserIconComponent, "ea-icon-user", never, {}, {}, never, never, true, never>;
294
+ }
295
+
296
+ declare class XIconComponent {
297
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<XIconComponent, never>;
298
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XIconComponent, "ea-icon-x", never, {}, {}, never, never, true, never>;
299
+ }
300
+
143
301
  type InputSize = 'sm' | 'md' | 'lg';
144
302
  type InputStatus = 'default' | 'error' | 'success';
145
303
  type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
146
- declare class InputComponent implements ControlValueAccessor {
304
+ declare class InputComponent implements ControlValueAccessor, AfterViewInit {
147
305
  readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
148
306
  readonly label: _angular_core.InputSignal<string | undefined>;
149
307
  readonly type: _angular_core.InputSignal<InputType>;
@@ -155,15 +313,20 @@ declare class InputComponent implements ControlValueAccessor {
155
313
  readonly disabled: _angular_core.InputSignal<boolean>;
156
314
  readonly readonly: _angular_core.InputSignal<boolean>;
157
315
  readonly required: _angular_core.InputSignal<boolean>;
316
+ readonly autocomplete: _angular_core.InputSignal<string | undefined>;
317
+ readonly autofocus: _angular_core.InputSignal<boolean>;
318
+ readonly showPasswordToggle: _angular_core.InputSignal<boolean>;
158
319
  readonly id: _angular_core.InputSignal<string>;
159
320
  readonly value: _angular_core.ModelSignal<string>;
160
321
  readonly focused: _angular_core.WritableSignal<boolean>;
322
+ readonly passwordVisible: _angular_core.WritableSignal<boolean>;
161
323
  private readonly _formDisabled;
162
324
  readonly inputFocused: _angular_core.OutputEmitterRef<FocusEvent>;
163
325
  readonly inputBlurred: _angular_core.OutputEmitterRef<FocusEvent>;
164
326
  private onChange;
165
327
  private onTouched;
166
328
  readonly isDisabled: _angular_core.Signal<boolean>;
329
+ readonly effectiveType: _angular_core.Signal<InputType>;
167
330
  readonly resolvedStatus: _angular_core.Signal<InputStatus>;
168
331
  readonly showError: _angular_core.Signal<boolean>;
169
332
  readonly showHint: _angular_core.Signal<boolean>;
@@ -173,6 +336,7 @@ declare class InputComponent implements ControlValueAccessor {
173
336
  'ea-input-wrapper--disabled': boolean;
174
337
  'ea-input-wrapper--readonly': boolean;
175
338
  }>;
339
+ ngAfterViewInit(): void;
176
340
  writeValue(val: string): void;
177
341
  registerOnChange(fn: (value: string) => void): void;
178
342
  registerOnTouched(fn: () => void): void;
@@ -180,9 +344,10 @@ declare class InputComponent implements ControlValueAccessor {
180
344
  handleInput(event: Event): void;
181
345
  handleFocus(event: FocusEvent): void;
182
346
  handleBlur(event: FocusEvent): void;
347
+ togglePasswordVisibility(): void;
183
348
  focus(): void;
184
349
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
185
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "error"; "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"; "inputFocused": "inputFocused"; "inputBlurred": "inputBlurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
350
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "error"; "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; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "showPasswordToggle": { "alias": "showPasswordToggle"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "inputFocused": "inputFocused"; "inputBlurred": "inputBlurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
186
351
  }
187
352
 
188
353
  type RadioSize = 'sm' | 'md' | 'lg';
@@ -228,5 +393,138 @@ declare class RadioComponent {
228
393
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioComponent, "ea-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
229
394
  }
230
395
 
231
- export { ButtonComponent, CardComponent, CheckboxComponent, DialogComponent, DropdownComponent, InputComponent, RadioComponent, RadioGroupComponent };
232
- export type { ButtonSize, ButtonType, ButtonVariant, CardPadding, CardVariant, CheckboxSize, DialogSize, DropdownOption, DropdownSize, InputSize, InputStatus, InputType, RadioOrientation, RadioSize };
396
+ type SpinnerSize = 'sm' | 'md' | 'lg';
397
+ declare class SpinnerComponent {
398
+ readonly size: _angular_core.InputSignal<SpinnerSize>;
399
+ readonly label: _angular_core.InputSignal<string>;
400
+ readonly hostClasses: _angular_core.Signal<{
401
+ [x: string]: boolean;
402
+ }>;
403
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
404
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "ea-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
405
+ }
406
+
407
+ type SwitchSize = 'sm' | 'md' | 'lg';
408
+ declare class SwitchComponent implements ControlValueAccessor {
409
+ readonly label: _angular_core.InputSignal<string | undefined>;
410
+ readonly size: _angular_core.InputSignal<SwitchSize>;
411
+ readonly disabled: _angular_core.InputSignal<boolean>;
412
+ readonly id: _angular_core.InputSignal<string>;
413
+ readonly checked: _angular_core.ModelSignal<boolean>;
414
+ readonly changed: _angular_core.OutputEmitterRef<boolean>;
415
+ private readonly _formDisabled;
416
+ private onChange;
417
+ private onTouched;
418
+ readonly isDisabled: _angular_core.Signal<boolean>;
419
+ readonly hostClasses: _angular_core.Signal<{
420
+ [x: string]: boolean;
421
+ 'ea-switch--checked': boolean;
422
+ 'ea-switch--disabled': boolean;
423
+ }>;
424
+ writeValue(val: boolean): void;
425
+ registerOnChange(fn: (value: boolean) => void): void;
426
+ registerOnTouched(fn: () => void): void;
427
+ setDisabledState(isDisabled: boolean): void;
428
+ handleChange(): void;
429
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
430
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "ea-switch", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
431
+ }
432
+
433
+ type TextareaSize = 'sm' | 'md' | 'lg';
434
+ type TextareaStatus = 'default' | 'error' | 'success';
435
+ type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
436
+ declare class TextareaComponent implements ControlValueAccessor {
437
+ readonly textareaEl: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
438
+ readonly label: _angular_core.InputSignal<string | undefined>;
439
+ readonly placeholder: _angular_core.InputSignal<string>;
440
+ readonly size: _angular_core.InputSignal<TextareaSize>;
441
+ readonly status: _angular_core.InputSignal<TextareaStatus>;
442
+ readonly hint: _angular_core.InputSignal<string | undefined>;
443
+ readonly errorMsg: _angular_core.InputSignal<string | undefined>;
444
+ readonly disabled: _angular_core.InputSignal<boolean>;
445
+ readonly readonly: _angular_core.InputSignal<boolean>;
446
+ readonly required: _angular_core.InputSignal<boolean>;
447
+ readonly rows: _angular_core.InputSignal<number>;
448
+ readonly resize: _angular_core.InputSignal<TextareaResize>;
449
+ readonly maxlength: _angular_core.InputSignal<number | undefined>;
450
+ readonly id: _angular_core.InputSignal<string>;
451
+ readonly value: _angular_core.ModelSignal<string>;
452
+ readonly focused: _angular_core.WritableSignal<boolean>;
453
+ private readonly _formDisabled;
454
+ readonly textareaFocused: _angular_core.OutputEmitterRef<FocusEvent>;
455
+ readonly textareaBlurred: _angular_core.OutputEmitterRef<FocusEvent>;
456
+ private onChange;
457
+ private onTouched;
458
+ readonly isDisabled: _angular_core.Signal<boolean>;
459
+ readonly resolvedStatus: _angular_core.Signal<TextareaStatus>;
460
+ readonly showError: _angular_core.Signal<boolean>;
461
+ readonly showHint: _angular_core.Signal<boolean>;
462
+ readonly wrapperClasses: _angular_core.Signal<{
463
+ [x: string]: boolean;
464
+ 'ea-textarea-wrapper--focused': boolean;
465
+ 'ea-textarea-wrapper--disabled': boolean;
466
+ 'ea-textarea-wrapper--readonly': boolean;
467
+ }>;
468
+ writeValue(val: string): void;
469
+ registerOnChange(fn: (value: string) => void): void;
470
+ registerOnTouched(fn: () => void): void;
471
+ setDisabledState(isDisabled: boolean): void;
472
+ handleInput(event: Event): void;
473
+ handleFocus(event: FocusEvent): void;
474
+ handleBlur(event: FocusEvent): void;
475
+ focus(): void;
476
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
477
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "error"; "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; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "textareaFocused": "textareaFocused"; "textareaBlurred": "textareaBlurred"; }, never, never, true, never>;
478
+ }
479
+
480
+ type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
481
+ interface Toast {
482
+ id: number;
483
+ message: string;
484
+ variant: ToastVariant;
485
+ duration: number;
486
+ }
487
+ interface ToastOptions {
488
+ variant?: ToastVariant;
489
+ duration?: number;
490
+ }
491
+ declare class ToastService {
492
+ private nextId;
493
+ readonly toasts: _angular_core.WritableSignal<Toast[]>;
494
+ show(message: string, options?: ToastOptions): number;
495
+ success(message: string, duration?: number): number;
496
+ error(message: string, duration?: number): number;
497
+ warning(message: string, duration?: number): number;
498
+ info(message: string, duration?: number): number;
499
+ dismiss(id: number): void;
500
+ clear(): void;
501
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
502
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
503
+ }
504
+
505
+ declare class ToastComponent {
506
+ protected readonly toastService: ToastService;
507
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
508
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "ea-toast", never, {}, {}, never, never, true, never>;
509
+ }
510
+
511
+ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
512
+ declare class TooltipDirective implements OnDestroy {
513
+ private readonly el;
514
+ private readonly renderer;
515
+ readonly eaTooltip: _angular_core.InputSignal<string>;
516
+ readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
517
+ private tooltipEl;
518
+ private readonly showHandler;
519
+ private readonly hideHandler;
520
+ constructor();
521
+ ngOnDestroy(): void;
522
+ private show;
523
+ private hide;
524
+ private positionTooltip;
525
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
526
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[eaTooltip]", never, { "eaTooltip": { "alias": "eaTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
527
+ }
528
+
529
+ export { AlertCircleIconComponent, AvatarComponent, AvatarEditorComponent, BadgeComponent, ButtonComponent, CardComponent, CheckIconComponent, CheckboxComponent, DialogComponent, DividerComponent, DropdownComponent, EyeIconComponent, EyeOffIconComponent, GoogleIconComponent, InfoIconComponent, InputComponent, LoaderIconComponent, RadioComponent, RadioGroupComponent, SpinnerComponent, SwitchComponent, TextareaComponent, ToastComponent, ToastService, TooltipDirective, UserIconComponent, XIconComponent };
530
+ export type { AvatarEditorCropEvent, AvatarEditorShape, AvatarShape, AvatarSize, BadgeSize, BadgeVariant, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, DialogSize, DividerOrientation, DropdownOption, DropdownSize, InputSize, InputStatus, InputType, RadioOrientation, RadioSize, SpinnerSize, SwitchSize, TextareaResize, TextareaSize, TextareaStatus, Toast, ToastOptions, ToastVariant, TooltipPosition };