@eagami/ui 0.2.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.
package/package.json CHANGED
@@ -1,20 +1,9 @@
1
1
  {
2
2
  "name": "@eagami/ui",
3
+ "version": "0.3.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,107 @@
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
+ 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,7 +127,7 @@ 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';
32
131
  type CardHeaderAlign = 'start' | 'center' | 'end';
33
132
  declare class CardComponent {
34
133
  readonly variant: _angular_core.InputSignal<CardVariant>;
@@ -94,6 +193,18 @@ declare class DialogComponent {
94
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>;
95
194
  }
96
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
+
97
208
  type DropdownSize = 'sm' | 'md' | 'lg';
98
209
  interface DropdownOption {
99
210
  value: string;
@@ -119,7 +230,7 @@ declare class DropdownComponent implements ControlValueAccessor {
119
230
  private onChange;
120
231
  private onTouched;
121
232
  readonly isDisabled: _angular_core.Signal<boolean>;
122
- readonly resolvedStatus: _angular_core.Signal<"error" | "default">;
233
+ readonly resolvedStatus: _angular_core.Signal<"default" | "error">;
123
234
  readonly showError: _angular_core.Signal<boolean>;
124
235
  readonly showHint: _angular_core.Signal<boolean>;
125
236
  readonly selectedLabel: _angular_core.Signal<string>;
@@ -147,6 +258,11 @@ declare class AlertCircleIconComponent {
147
258
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertCircleIconComponent, "ea-icon-alert-circle", never, {}, {}, never, never, true, never>;
148
259
  }
149
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
+
150
266
  declare class EyeOffIconComponent {
151
267
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EyeOffIconComponent, never>;
152
268
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeOffIconComponent, "ea-icon-eye-off", never, {}, {}, never, never, true, never>;
@@ -157,6 +273,31 @@ declare class EyeIconComponent {
157
273
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EyeIconComponent, "ea-icon-eye", never, {}, {}, never, never, true, never>;
158
274
  }
159
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
+
160
301
  type InputSize = 'sm' | 'md' | 'lg';
161
302
  type InputStatus = 'default' | 'error' | 'success';
162
303
  type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
@@ -252,5 +393,138 @@ declare class RadioComponent {
252
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>;
253
394
  }
254
395
 
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 };
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 };