@eagami/ui 0.2.0 → 0.4.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,20 +1,9 @@
1
1
  {
2
2
  "name": "@eagami/ui",
3
+ "version": "0.4.0",
3
4
  "description": "Lightweight, accessible Angular UI component library built on CSS custom properties",
4
5
  "author": "Michal Wiraszka <michal@eagami.com>",
5
- "version": "0.2.0",
6
- "dependencies": {
7
- "@angular/common": "21.2.1",
8
- "@angular/compiler": "21.2.1",
9
- "@angular/core": "21.2.1",
10
- "@angular/forms": "21.2.1",
11
- "@angular/platform-browser": "21.2.1",
12
- "@angular/platform-browser-dynamic": "21.2.1",
13
- "@angular/router": "21.2.1",
14
- "rxjs": "7.8.2",
15
- "tslib": "2.3.0",
16
- "zone.js": "0.16.1"
17
- },
6
+ "license": "MIT",
18
7
  "keywords": [
19
8
  "angular",
20
9
  "ui",
@@ -22,21 +11,24 @@
22
11
  "design-system",
23
12
  "accessible"
24
13
  ],
25
- "license": "MIT",
14
+ "homepage": "https://github.com/mwiraszka/eagami-design-system#readme",
26
15
  "repository": {
27
16
  "type": "git",
28
17
  "url": "https://github.com/mwiraszka/eagami-design-system.git"
29
18
  },
30
- "homepage": "https://github.com/mwiraszka/eagami-design-system#readme",
31
19
  "bugs": {
32
20
  "url": "https://github.com/mwiraszka/eagami-design-system/issues"
33
21
  },
22
+ "sideEffects": false,
34
23
  "peerDependencies": {
35
24
  "@angular/common": "^21.0.0",
36
25
  "@angular/core": "^21.0.0",
37
- "@angular/forms": "^21.0.0"
26
+ "@angular/forms": "^21.0.0",
27
+ "rxjs": "^7.0.0"
28
+ },
29
+ "dependencies": {
30
+ "tslib": "^2.3.0"
38
31
  },
39
- "sideEffects": false,
40
32
  "module": "fesm2022/eagami-ui.mjs",
41
33
  "typings": "types/eagami-ui.d.ts",
42
34
  "exports": {
@@ -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,109 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { AfterViewInit, 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
+ constructor();
43
+ ngOnDestroy(): void;
44
+ onDragOver(event: DragEvent): void;
45
+ onDragLeave(event: DragEvent): void;
46
+ onDrop(event: DragEvent): void;
47
+ onFileSelected(event: Event): void;
48
+ openFilePicker(): void;
49
+ onMouseDown(event: MouseEvent): void;
50
+ onTouchStart(event: TouchEvent): void;
51
+ private readonly onMouseMoveBound;
52
+ private readonly onMouseUpBound;
53
+ private readonly onTouchMoveBound;
54
+ private readonly onTouchEndBound;
55
+ private onMouseMove;
56
+ private onMouseUp;
57
+ private onTouchMove;
58
+ private onTouchEnd;
59
+ private onWheel;
60
+ setZoom(value: number): void;
61
+ onZoomInput(event: Event): void;
62
+ removeImage(): void;
63
+ exportCrop(): void;
64
+ private loadFromUrl;
65
+ private loadFile;
66
+ private centerImage;
67
+ private getScale;
68
+ private getDrawParams;
69
+ private clampOffset;
70
+ private draw;
71
+ private clearCanvas;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarEditorComponent, never>;
73
+ 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>;
74
+ }
75
+
76
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
77
+ type AvatarShape = 'circle' | 'square';
78
+ declare class AvatarComponent {
79
+ readonly src: _angular_core.InputSignal<string | undefined>;
80
+ readonly alt: _angular_core.InputSignal<string>;
81
+ readonly initials: _angular_core.InputSignal<string | undefined>;
82
+ readonly size: _angular_core.InputSignal<AvatarSize>;
83
+ readonly shape: _angular_core.InputSignal<AvatarShape>;
84
+ readonly hostClasses: _angular_core.Signal<{
85
+ [x: string]: boolean;
86
+ }>;
87
+ readonly showImage: _angular_core.Signal<boolean>;
88
+ readonly showInitials: _angular_core.Signal<boolean>;
89
+ readonly showFallback: _angular_core.Signal<boolean>;
90
+ handleImageError(event: Event): void;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
92
+ 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>;
93
+ }
94
+
95
+ type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
96
+ type BadgeSize = 'sm' | 'md' | 'lg';
97
+ declare class BadgeComponent {
98
+ readonly variant: _angular_core.InputSignal<BadgeVariant>;
99
+ readonly size: _angular_core.InputSignal<BadgeSize>;
100
+ readonly hostClasses: _angular_core.Signal<{
101
+ [x: string]: boolean;
102
+ }>;
103
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
104
+ 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>;
105
+ }
106
+
6
107
  type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
7
108
  type ButtonSize = 'sm' | 'md' | 'lg';
8
109
  type ButtonType = 'button' | 'submit' | 'reset';
@@ -28,7 +129,7 @@ declare class ButtonComponent {
28
129
  }
29
130
 
30
131
  type CardVariant = 'elevated' | 'outlined' | 'filled';
31
- type CardPadding = 'none' | 'sm' | 'md' | 'lg';
132
+ type CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';
32
133
  type CardHeaderAlign = 'start' | 'center' | 'end';
33
134
  declare class CardComponent {
34
135
  readonly variant: _angular_core.InputSignal<CardVariant>;
@@ -94,6 +195,18 @@ declare class DialogComponent {
94
195
  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>;
95
196
  }
96
197
 
198
+ type DividerOrientation = 'horizontal' | 'vertical';
199
+ declare class DividerComponent {
200
+ readonly orientation: _angular_core.InputSignal<DividerOrientation>;
201
+ readonly label: _angular_core.InputSignal<string | undefined>;
202
+ readonly hostClasses: _angular_core.Signal<{
203
+ [x: string]: boolean;
204
+ 'ea-divider--with-label': boolean;
205
+ }>;
206
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
207
+ 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>;
208
+ }
209
+
97
210
  type DropdownSize = 'sm' | 'md' | 'lg';
98
211
  interface DropdownOption {
99
212
  value: string;
@@ -119,7 +232,7 @@ declare class DropdownComponent implements ControlValueAccessor {
119
232
  private onChange;
120
233
  private onTouched;
121
234
  readonly isDisabled: _angular_core.Signal<boolean>;
122
- readonly resolvedStatus: _angular_core.Signal<"error" | "default">;
235
+ readonly resolvedStatus: _angular_core.Signal<"default" | "error">;
123
236
  readonly showError: _angular_core.Signal<boolean>;
124
237
  readonly showHint: _angular_core.Signal<boolean>;
125
238
  readonly selectedLabel: _angular_core.Signal<string>;
@@ -147,6 +260,11 @@ declare class AlertCircleIconComponent {
147
260
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertCircleIconComponent, "ea-icon-alert-circle", never, {}, {}, never, never, true, never>;
148
261
  }
149
262
 
263
+ declare class CheckIconComponent {
264
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckIconComponent, never>;
265
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckIconComponent, "ea-icon-check", never, {}, {}, never, never, true, never>;
266
+ }
267
+
150
268
  declare class EyeOffIconComponent {
151
269
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EyeOffIconComponent, never>;
152
270
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeOffIconComponent, "ea-icon-eye-off", never, {}, {}, never, never, true, never>;
@@ -157,6 +275,31 @@ declare class EyeIconComponent {
157
275
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeIconComponent, "ea-icon-eye", never, {}, {}, never, never, true, never>;
158
276
  }
159
277
 
278
+ declare class GoogleIconComponent {
279
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GoogleIconComponent, never>;
280
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GoogleIconComponent, "ea-icon-google", never, {}, {}, never, never, true, never>;
281
+ }
282
+
283
+ declare class InfoIconComponent {
284
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfoIconComponent, never>;
285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InfoIconComponent, "ea-icon-info", never, {}, {}, never, never, true, never>;
286
+ }
287
+
288
+ declare class LoaderIconComponent {
289
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoaderIconComponent, never>;
290
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoaderIconComponent, "ea-icon-loader", never, {}, {}, never, never, true, never>;
291
+ }
292
+
293
+ declare class UserIconComponent {
294
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserIconComponent, never>;
295
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserIconComponent, "ea-icon-user", never, {}, {}, never, never, true, never>;
296
+ }
297
+
298
+ declare class XIconComponent {
299
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<XIconComponent, never>;
300
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XIconComponent, "ea-icon-x", never, {}, {}, never, never, true, never>;
301
+ }
302
+
160
303
  type InputSize = 'sm' | 'md' | 'lg';
161
304
  type InputStatus = 'default' | 'error' | 'success';
162
305
  type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
@@ -252,5 +395,138 @@ declare class RadioComponent {
252
395
  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>;
253
396
  }
254
397
 
255
- export { AlertCircleIconComponent, ButtonComponent, CardComponent, CheckboxComponent, DialogComponent, DropdownComponent, EyeIconComponent, EyeOffIconComponent, InputComponent, RadioComponent, RadioGroupComponent };
256
- export type { ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, DialogSize, DropdownOption, DropdownSize, InputSize, InputStatus, InputType, RadioOrientation, RadioSize };
398
+ type SpinnerSize = 'sm' | 'md' | 'lg';
399
+ declare class SpinnerComponent {
400
+ readonly size: _angular_core.InputSignal<SpinnerSize>;
401
+ readonly label: _angular_core.InputSignal<string>;
402
+ readonly hostClasses: _angular_core.Signal<{
403
+ [x: string]: boolean;
404
+ }>;
405
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
406
+ 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>;
407
+ }
408
+
409
+ type SwitchSize = 'sm' | 'md' | 'lg';
410
+ declare class SwitchComponent implements ControlValueAccessor {
411
+ readonly label: _angular_core.InputSignal<string | undefined>;
412
+ readonly size: _angular_core.InputSignal<SwitchSize>;
413
+ readonly disabled: _angular_core.InputSignal<boolean>;
414
+ readonly id: _angular_core.InputSignal<string>;
415
+ readonly checked: _angular_core.ModelSignal<boolean>;
416
+ readonly changed: _angular_core.OutputEmitterRef<boolean>;
417
+ private readonly _formDisabled;
418
+ private onChange;
419
+ private onTouched;
420
+ readonly isDisabled: _angular_core.Signal<boolean>;
421
+ readonly hostClasses: _angular_core.Signal<{
422
+ [x: string]: boolean;
423
+ 'ea-switch--checked': boolean;
424
+ 'ea-switch--disabled': boolean;
425
+ }>;
426
+ writeValue(val: boolean): void;
427
+ registerOnChange(fn: (value: boolean) => void): void;
428
+ registerOnTouched(fn: () => void): void;
429
+ setDisabledState(isDisabled: boolean): void;
430
+ handleChange(): void;
431
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
432
+ 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>;
433
+ }
434
+
435
+ type TextareaSize = 'sm' | 'md' | 'lg';
436
+ type TextareaStatus = 'default' | 'error' | 'success';
437
+ type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
438
+ declare class TextareaComponent implements ControlValueAccessor {
439
+ readonly textareaEl: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
440
+ readonly label: _angular_core.InputSignal<string | undefined>;
441
+ readonly placeholder: _angular_core.InputSignal<string>;
442
+ readonly size: _angular_core.InputSignal<TextareaSize>;
443
+ readonly status: _angular_core.InputSignal<TextareaStatus>;
444
+ readonly hint: _angular_core.InputSignal<string | undefined>;
445
+ readonly errorMsg: _angular_core.InputSignal<string | undefined>;
446
+ readonly disabled: _angular_core.InputSignal<boolean>;
447
+ readonly readonly: _angular_core.InputSignal<boolean>;
448
+ readonly required: _angular_core.InputSignal<boolean>;
449
+ readonly rows: _angular_core.InputSignal<number>;
450
+ readonly resize: _angular_core.InputSignal<TextareaResize>;
451
+ readonly maxlength: _angular_core.InputSignal<number | undefined>;
452
+ readonly id: _angular_core.InputSignal<string>;
453
+ readonly value: _angular_core.ModelSignal<string>;
454
+ readonly focused: _angular_core.WritableSignal<boolean>;
455
+ private readonly _formDisabled;
456
+ readonly textareaFocused: _angular_core.OutputEmitterRef<FocusEvent>;
457
+ readonly textareaBlurred: _angular_core.OutputEmitterRef<FocusEvent>;
458
+ private onChange;
459
+ private onTouched;
460
+ readonly isDisabled: _angular_core.Signal<boolean>;
461
+ readonly resolvedStatus: _angular_core.Signal<TextareaStatus>;
462
+ readonly showError: _angular_core.Signal<boolean>;
463
+ readonly showHint: _angular_core.Signal<boolean>;
464
+ readonly wrapperClasses: _angular_core.Signal<{
465
+ [x: string]: boolean;
466
+ 'ea-textarea-wrapper--focused': boolean;
467
+ 'ea-textarea-wrapper--disabled': boolean;
468
+ 'ea-textarea-wrapper--readonly': boolean;
469
+ }>;
470
+ writeValue(val: string): void;
471
+ registerOnChange(fn: (value: string) => void): void;
472
+ registerOnTouched(fn: () => void): void;
473
+ setDisabledState(isDisabled: boolean): void;
474
+ handleInput(event: Event): void;
475
+ handleFocus(event: FocusEvent): void;
476
+ handleBlur(event: FocusEvent): void;
477
+ focus(): void;
478
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
479
+ 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>;
480
+ }
481
+
482
+ type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
483
+ interface Toast {
484
+ id: number;
485
+ message: string;
486
+ variant: ToastVariant;
487
+ duration: number;
488
+ }
489
+ interface ToastOptions {
490
+ variant?: ToastVariant;
491
+ duration?: number;
492
+ }
493
+ declare class ToastService {
494
+ private nextId;
495
+ readonly toasts: _angular_core.WritableSignal<Toast[]>;
496
+ show(message: string, options?: ToastOptions): number;
497
+ success(message: string, duration?: number): number;
498
+ error(message: string, duration?: number): number;
499
+ warning(message: string, duration?: number): number;
500
+ info(message: string, duration?: number): number;
501
+ dismiss(id: number): void;
502
+ clear(): void;
503
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
504
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
505
+ }
506
+
507
+ declare class ToastComponent {
508
+ protected readonly toastService: ToastService;
509
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
510
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "ea-toast", never, {}, {}, never, never, true, never>;
511
+ }
512
+
513
+ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
514
+ declare class TooltipDirective implements OnDestroy {
515
+ private readonly el;
516
+ private readonly renderer;
517
+ readonly eaTooltip: _angular_core.InputSignal<string>;
518
+ readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
519
+ private tooltipEl;
520
+ private readonly showHandler;
521
+ private readonly hideHandler;
522
+ constructor();
523
+ ngOnDestroy(): void;
524
+ private show;
525
+ private hide;
526
+ private positionTooltip;
527
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
528
+ 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>;
529
+ }
530
+
531
+ 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 };
532
+ 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 };