@elvora/angular 1.0.0-rc.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.
@@ -0,0 +1,2636 @@
1
+ import * as _elvora_core from '@elvora/core';
2
+ import { ElvoraVariant, ElvoraSize, ElvoraTheme, ElvoraStatus, Orientation, ElvoraTone, Placement, ErrorCorrection, Direction as Direction$1 } from '@elvora/core';
3
+ export { Direction, ElvoraSize, ElvoraStatus, ElvoraTheme, ElvoraTone, ElvoraVariant, IntentScale, Orientation, Placement, ThemeColors } from '@elvora/core';
4
+ import * as _angular_core from '@angular/core';
5
+ import { EventEmitter, Signal, OnDestroy, TemplateRef, AfterContentInit, ElementRef, AfterViewInit, InjectionToken } from '@angular/core';
6
+ import * as _elvora_icons from '@elvora/icons';
7
+ import { IconName } from '@elvora/icons';
8
+
9
+ /**
10
+ * Angular Elvora Button — standalone component.
11
+ *
12
+ * Usage:
13
+ * ```html
14
+ * <elvora-button variant="primary" size="md" (press)="onClick()">
15
+ * Click me
16
+ * </elvora-button>
17
+ * ```
18
+ *
19
+ * Implements WAI-ARIA Button pattern; identical visual contract as the React,
20
+ * RN, and Vue adapters.
21
+ */
22
+ declare class ElvoraButton {
23
+ private readonly themeService;
24
+ variant: ElvoraVariant;
25
+ size: ElvoraSize;
26
+ intent: keyof ElvoraTheme['colors']['intent'] | undefined;
27
+ fullWidth: boolean;
28
+ isLoading: boolean;
29
+ isDisabled: boolean;
30
+ loadingText: string;
31
+ press: EventEmitter<MouseEvent>;
32
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
33
+ protected readonly pressed: _angular_core.WritableSignal<boolean>;
34
+ protected readonly focusVisible: _angular_core.WritableSignal<boolean>;
35
+ protected readonly inert: Signal<boolean>;
36
+ protected readonly style: Signal<_elvora_core.ButtonStyle>;
37
+ protected readonly rootStyle: Signal<Record<string, string | number | undefined>>;
38
+ protected readonly labelStyle: Signal<Record<string, string | number | undefined>>;
39
+ protected readonly spinnerColor: Signal<string>;
40
+ protected readonly spinnerSize: Signal<number>;
41
+ handleClick(event: MouseEvent): void;
42
+ }
43
+
44
+ /**
45
+ * Square icon-only button. `ariaLabel` is REQUIRED — icon-only buttons must
46
+ * announce a name to assistive tech.
47
+ */
48
+ declare class ElvoraIconButton {
49
+ private readonly themeService;
50
+ ariaLabel: string;
51
+ variant: ElvoraVariant;
52
+ size: ElvoraSize;
53
+ intent: keyof ElvoraTheme['colors']['intent'] | undefined;
54
+ isLoading: boolean;
55
+ isDisabled: boolean;
56
+ press: EventEmitter<MouseEvent>;
57
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
58
+ protected readonly pressed: _angular_core.WritableSignal<boolean>;
59
+ protected readonly focusVisible: _angular_core.WritableSignal<boolean>;
60
+ protected readonly inert: Signal<boolean>;
61
+ protected readonly rootStyle: Signal<{
62
+ width: string;
63
+ minWidth: string;
64
+ paddingLeft: string;
65
+ paddingRight: string;
66
+ }>;
67
+ handleClick(event: MouseEvent): void;
68
+ }
69
+
70
+ /** Text input. Two-way binding via `[(value)]`. */
71
+ declare class ElvoraInput {
72
+ private readonly themeService;
73
+ value: string | null;
74
+ type: 'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number';
75
+ placeholder?: string;
76
+ size: ElvoraSize;
77
+ status: ElvoraStatus;
78
+ isReadOnly: boolean;
79
+ isDisabled: boolean;
80
+ isRequired: boolean;
81
+ isInvalid: boolean;
82
+ valueChange: EventEmitter<string>;
83
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
84
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
85
+ protected readonly style: _angular_core.Signal<Record<string, string | number | undefined>>;
86
+ onInput(event: Event): void;
87
+ }
88
+
89
+ /** Multi-line text input. Two-way binding via `[(value)]`. */
90
+ declare class ElvoraTextarea {
91
+ private readonly themeService;
92
+ value: string | null;
93
+ placeholder?: string;
94
+ rows: number;
95
+ isResizable: boolean;
96
+ size: ElvoraSize;
97
+ status: ElvoraStatus;
98
+ isReadOnly: boolean;
99
+ isDisabled: boolean;
100
+ isRequired: boolean;
101
+ isInvalid: boolean;
102
+ valueChange: EventEmitter<string>;
103
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
104
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
105
+ protected readonly combinedStyle: _angular_core.Signal<Record<string, string | number | undefined>>;
106
+ onInput(event: Event): void;
107
+ }
108
+
109
+ declare const sizeMap$3: {
110
+ sm: {
111
+ box: number;
112
+ icon: number;
113
+ font: number;
114
+ };
115
+ md: {
116
+ box: number;
117
+ icon: number;
118
+ font: number;
119
+ };
120
+ lg: {
121
+ box: number;
122
+ icon: number;
123
+ font: number;
124
+ };
125
+ };
126
+ type CheckboxSize = keyof typeof sizeMap$3;
127
+ /** Checkbox. Use `[(isChecked)]` for two-way binding. */
128
+ declare class ElvoraCheckbox {
129
+ private readonly themeService;
130
+ size: CheckboxSize;
131
+ isDisabled: boolean;
132
+ isInvalid: boolean;
133
+ isChecked: boolean;
134
+ isIndeterminate: boolean;
135
+ /** Set to true when content is projected (Angular has no clean way to detect). */
136
+ hasLabelHint: boolean;
137
+ isCheckedChange: EventEmitter<boolean>;
138
+ get dims(): {
139
+ box: number;
140
+ icon: number;
141
+ font: number;
142
+ } | {
143
+ box: number;
144
+ icon: number;
145
+ font: number;
146
+ } | {
147
+ box: number;
148
+ icon: number;
149
+ font: number;
150
+ };
151
+ protected hasLabel(): boolean;
152
+ protected readonly fg: _angular_core.Signal<string>;
153
+ protected readonly boxStyle: _angular_core.Signal<{
154
+ display: string;
155
+ alignItems: string;
156
+ justifyContent: string;
157
+ width: string;
158
+ height: string;
159
+ border: string;
160
+ borderRadius: string;
161
+ backgroundColor: string;
162
+ color: string;
163
+ transition: string;
164
+ cursor: string;
165
+ opacity: string;
166
+ flexShrink: string;
167
+ }>;
168
+ onToggle(event: Event): void;
169
+ }
170
+
171
+ declare const sizeMap$2: {
172
+ sm: {
173
+ outer: number;
174
+ inner: number;
175
+ font: number;
176
+ };
177
+ md: {
178
+ outer: number;
179
+ inner: number;
180
+ font: number;
181
+ };
182
+ lg: {
183
+ outer: number;
184
+ inner: number;
185
+ font: number;
186
+ };
187
+ };
188
+ type RadioSize = keyof typeof sizeMap$2;
189
+ /**
190
+ * Radio group container. Provides shared name/value/size to nested
191
+ * `<elvora-radio>` items via DI.
192
+ */
193
+ declare class ElvoraRadioGroup {
194
+ name: string;
195
+ value?: string;
196
+ isDisabled: boolean;
197
+ size: RadioSize;
198
+ label?: string;
199
+ valueChange: EventEmitter<string>;
200
+ readonly valueSignal: _angular_core.WritableSignal<string | undefined>;
201
+ ngOnChanges(): void;
202
+ setValue(v: string): void;
203
+ }
204
+ /** Single radio option. Must be a descendant of `<elvora-radio-group>`. */
205
+ declare class ElvoraRadio {
206
+ private readonly themeService;
207
+ readonly group: ElvoraRadioGroup;
208
+ value: string;
209
+ isDisabled: boolean;
210
+ hasLabelHint: boolean;
211
+ get dims(): {
212
+ outer: number;
213
+ inner: number;
214
+ font: number;
215
+ } | {
216
+ outer: number;
217
+ inner: number;
218
+ font: number;
219
+ } | {
220
+ outer: number;
221
+ inner: number;
222
+ font: number;
223
+ };
224
+ protected isChecked(): boolean;
225
+ protected disabled(): boolean;
226
+ protected readonly fg: _angular_core.Signal<string>;
227
+ protected readonly outerStyle: _angular_core.Signal<{
228
+ display: string;
229
+ alignItems: string;
230
+ justifyContent: string;
231
+ width: string;
232
+ height: string;
233
+ border: string;
234
+ borderRadius: string;
235
+ backgroundColor: string;
236
+ transition: string;
237
+ flexShrink: string;
238
+ }>;
239
+ protected readonly innerStyle: _angular_core.Signal<{
240
+ width: string;
241
+ height: string;
242
+ borderRadius: string;
243
+ backgroundColor: string;
244
+ transform: string;
245
+ transition: string;
246
+ }>;
247
+ onChange(): void;
248
+ }
249
+
250
+ declare const sizeMap$1: {
251
+ sm: {
252
+ trackW: number;
253
+ trackH: number;
254
+ thumb: number;
255
+ };
256
+ md: {
257
+ trackW: number;
258
+ trackH: number;
259
+ thumb: number;
260
+ };
261
+ lg: {
262
+ trackW: number;
263
+ trackH: number;
264
+ thumb: number;
265
+ };
266
+ };
267
+ type SwitchSize = keyof typeof sizeMap$1;
268
+ /** Toggle switch. Use `[(isChecked)]` for two-way binding. */
269
+ declare class ElvoraSwitch {
270
+ private readonly themeService;
271
+ size: SwitchSize;
272
+ isDisabled: boolean;
273
+ isChecked: boolean;
274
+ hasLabelHint: boolean;
275
+ isCheckedChange: EventEmitter<boolean>;
276
+ protected readonly fg: _angular_core.Signal<string>;
277
+ protected readonly trackStyle: _angular_core.Signal<{
278
+ position: string;
279
+ display: string;
280
+ width: string;
281
+ height: string;
282
+ backgroundColor: string;
283
+ border: string;
284
+ borderRadius: string;
285
+ transition: string;
286
+ cursor: string;
287
+ opacity: string;
288
+ flexShrink: string;
289
+ }>;
290
+ protected readonly thumbStyle: _angular_core.Signal<{
291
+ position: string;
292
+ top: string;
293
+ left: string;
294
+ transform: string;
295
+ width: string;
296
+ height: string;
297
+ backgroundColor: string;
298
+ borderRadius: string;
299
+ boxShadow: string;
300
+ transition: string;
301
+ }>;
302
+ onToggle(event: Event): void;
303
+ }
304
+
305
+ interface ElvoraSelectOption {
306
+ label: string;
307
+ value: string;
308
+ disabled?: boolean;
309
+ }
310
+ /** Native `<select>` styled with Elvora tokens. */
311
+ declare class ElvoraSelect {
312
+ private readonly themeService;
313
+ options: ElvoraSelectOption[];
314
+ value: string | null;
315
+ placeholder?: string;
316
+ size: ElvoraSize;
317
+ status: ElvoraStatus;
318
+ isDisabled: boolean;
319
+ isRequired: boolean;
320
+ isInvalid: boolean;
321
+ valueChange: EventEmitter<string>;
322
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
323
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
324
+ protected readonly style: _angular_core.Signal<{
325
+ appearance: string;
326
+ paddingRight: number;
327
+ }>;
328
+ protected readonly chevronStyle: _angular_core.Signal<{
329
+ position: string;
330
+ right: string;
331
+ top: string;
332
+ transform: string;
333
+ color: string;
334
+ pointerEvents: string;
335
+ display: string;
336
+ }>;
337
+ onChange(event: Event): void;
338
+ }
339
+
340
+ declare const sizeMap: {
341
+ xs: {
342
+ fontSize: number;
343
+ gap: number;
344
+ };
345
+ sm: {
346
+ fontSize: number;
347
+ gap: number;
348
+ };
349
+ md: {
350
+ fontSize: number;
351
+ gap: number;
352
+ };
353
+ lg: {
354
+ fontSize: number;
355
+ gap: number;
356
+ };
357
+ };
358
+ type LabelSize = keyof typeof sizeMap;
359
+ /** Form label. Use `for` attribute to associate with a form control. */
360
+ declare class ElvoraLabel {
361
+ private readonly themeService;
362
+ for?: string;
363
+ isRequired: boolean;
364
+ size: LabelSize;
365
+ protected readonly rootStyle: _angular_core.Signal<{
366
+ display: string;
367
+ alignItems: string;
368
+ gap: string;
369
+ color: string;
370
+ fontFamily: "\"Inter\", \"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif";
371
+ fontSize: string;
372
+ fontWeight: string;
373
+ lineHeight: string;
374
+ userSelect: string;
375
+ }>;
376
+ protected readonly dangerFg: _angular_core.Signal<string>;
377
+ }
378
+
379
+ /** Renders an SVG icon from `@elvora/icons` by name. */
380
+ declare class ElvoraIcon {
381
+ name: IconName;
382
+ size: number;
383
+ color: string;
384
+ label?: string;
385
+ def(): _elvora_icons.IconDef | null;
386
+ }
387
+
388
+ /**
389
+ * Visual separator. Set `withLabel` to true and project content for an
390
+ * "OR"-style inline divider.
391
+ */
392
+ declare class ElvoraDivider {
393
+ private readonly themeService;
394
+ orientation: Orientation;
395
+ thickness: number;
396
+ withLabel: boolean;
397
+ isDecorative?: boolean;
398
+ get role(): "presentation" | "separator";
399
+ protected readonly wrapperStyle: _angular_core.Signal<{
400
+ display: string;
401
+ alignItems: string;
402
+ gap: string;
403
+ color: string;
404
+ fontSize: string;
405
+ }>;
406
+ protected readonly lineFlex: _angular_core.Signal<{
407
+ flex: string;
408
+ borderTop: string;
409
+ }>;
410
+ protected readonly lineStyle: _angular_core.Signal<{
411
+ width: string;
412
+ alignSelf: string;
413
+ backgroundColor: string;
414
+ height?: undefined;
415
+ } | {
416
+ height: string;
417
+ width: string;
418
+ backgroundColor: string;
419
+ alignSelf?: undefined;
420
+ }>;
421
+ }
422
+
423
+ /** User avatar. Falls back gracefully: image → initials → custom fallback. */
424
+ declare class ElvoraAvatar {
425
+ private readonly themeService;
426
+ private readonly imgFailed;
427
+ src?: string;
428
+ alt?: string;
429
+ name?: string;
430
+ size: ElvoraSize;
431
+ shape: 'circle' | 'square';
432
+ get initials(): string;
433
+ protected showImage(): boolean;
434
+ protected onImgError(): void;
435
+ protected readonly containerStyle: _angular_core.Signal<{
436
+ display: string;
437
+ alignItems: string;
438
+ justifyContent: string;
439
+ width: string;
440
+ height: string;
441
+ flexShrink: string;
442
+ overflow: string;
443
+ borderRadius: string;
444
+ backgroundColor: string;
445
+ color: string;
446
+ fontFamily: "\"Inter\", \"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif";
447
+ fontSize: string;
448
+ fontWeight: string;
449
+ userSelect: string;
450
+ }>;
451
+ }
452
+
453
+ type BadgeSize = Exclude<ElvoraSize, 'xl'>;
454
+ /** Small status indicator (e.g. notification count, status pip). */
455
+ declare class ElvoraBadge {
456
+ private readonly themeService;
457
+ status: ElvoraStatus;
458
+ size: BadgeSize;
459
+ tone: ElvoraTone;
460
+ isDot: boolean;
461
+ private resolveColors;
462
+ protected readonly dotStyle: _angular_core.Signal<{
463
+ display: string;
464
+ width: string;
465
+ height: string;
466
+ backgroundColor: string;
467
+ borderRadius: string;
468
+ border: string;
469
+ }>;
470
+ protected readonly badgeStyle: _angular_core.Signal<{
471
+ display: string;
472
+ alignItems: string;
473
+ justifyContent: string;
474
+ paddingLeft: string;
475
+ paddingRight: string;
476
+ paddingTop: string;
477
+ paddingBottom: string;
478
+ minHeight: string;
479
+ borderRadius: string;
480
+ borderWidth: string;
481
+ borderStyle: string;
482
+ borderColor: string;
483
+ backgroundColor: string;
484
+ color: string;
485
+ fontFamily: "\"Inter\", \"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif";
486
+ fontSize: string;
487
+ fontWeight: string;
488
+ lineHeight: string;
489
+ whiteSpace: string;
490
+ }>;
491
+ }
492
+
493
+ type TagSize = Exclude<ElvoraSize, 'xl'>;
494
+ /** Tag — a labeled chip. Optionally dismissible via `(close)`. */
495
+ declare class ElvoraTag {
496
+ private readonly themeService;
497
+ status: ElvoraStatus;
498
+ size: TagSize;
499
+ tone: ElvoraTone;
500
+ dismissible: boolean;
501
+ closeLabel: string;
502
+ close: EventEmitter<MouseEvent>;
503
+ get dims(): {
504
+ padX: number;
505
+ padY: number;
506
+ font: number;
507
+ height: number;
508
+ } | {
509
+ padX: number;
510
+ padY: number;
511
+ font: number;
512
+ height: number;
513
+ } | {
514
+ padX: number;
515
+ padY: number;
516
+ font: number;
517
+ height: number;
518
+ } | {
519
+ padX: number;
520
+ padY: number;
521
+ font: number;
522
+ height: number;
523
+ };
524
+ private resolveColors;
525
+ protected readonly rootColor: _angular_core.Signal<string>;
526
+ protected readonly rootStyle: _angular_core.Signal<{
527
+ display: string;
528
+ alignItems: string;
529
+ gap: string;
530
+ paddingLeft: string;
531
+ paddingRight: string;
532
+ paddingTop: string;
533
+ paddingBottom: string;
534
+ minHeight: string;
535
+ borderRadius: string;
536
+ borderWidth: string;
537
+ borderStyle: string;
538
+ borderColor: string;
539
+ backgroundColor: string;
540
+ color: string;
541
+ fontFamily: "\"Inter\", \"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif";
542
+ fontSize: string;
543
+ fontWeight: string;
544
+ lineHeight: string;
545
+ whiteSpace: string;
546
+ }>;
547
+ protected readonly closeBtnStyle: _angular_core.Signal<{
548
+ display: string;
549
+ alignItems: string;
550
+ justifyContent: string;
551
+ width: string;
552
+ height: string;
553
+ border: string;
554
+ background: string;
555
+ color: string;
556
+ cursor: string;
557
+ borderRadius: string;
558
+ padding: string;
559
+ marginLeft: string;
560
+ }>;
561
+ }
562
+
563
+ /** Spinner — accessible loading indicator. */
564
+ declare class ElvoraSpinner {
565
+ size: ElvoraSize | number;
566
+ color: string;
567
+ label: string;
568
+ thickness: number;
569
+ get px(): number;
570
+ }
571
+
572
+ type ProgressSize = Exclude<ElvoraSize, 'xl'>;
573
+ /** Linear progress bar. Omit `value` for indeterminate. */
574
+ declare class ElvoraProgress {
575
+ private readonly themeService;
576
+ value?: number;
577
+ max: number;
578
+ min: number;
579
+ size: ProgressSize;
580
+ status: ElvoraStatus;
581
+ label?: string;
582
+ get indeterminate(): boolean;
583
+ get clamped(): number;
584
+ get pct(): number;
585
+ protected readonly trackStyle: _angular_core.Signal<{
586
+ position: string;
587
+ width: string;
588
+ height: string;
589
+ backgroundColor: string;
590
+ borderRadius: string;
591
+ overflow: string;
592
+ }>;
593
+ protected readonly fillStyle: _angular_core.Signal<{
594
+ position: string;
595
+ inset: string;
596
+ width: string;
597
+ backgroundColor: string;
598
+ borderRadius: string;
599
+ transition: string;
600
+ animation: string;
601
+ }>;
602
+ }
603
+
604
+ /**
605
+ * Tooltip directive. Apply to any focusable element; shows `label` on hover/
606
+ * focus. Adds `aria-describedby` for assistive tech. For richer positioning,
607
+ * compose with a popover library in Phase 2.
608
+ *
609
+ * ```html
610
+ * <button elvoraTooltip="Save changes">💾</button>
611
+ * ```
612
+ */
613
+ declare class ElvoraTooltip implements OnDestroy {
614
+ private readonly el;
615
+ private readonly renderer;
616
+ private readonly themeService;
617
+ label: string;
618
+ placement: Placement;
619
+ openDelay: number;
620
+ closeDelay: number;
621
+ private readonly id;
622
+ private tip;
623
+ private timer;
624
+ onEnter(): void;
625
+ onLeave(): void;
626
+ onFocus(): void;
627
+ onBlur(): void;
628
+ private scheduleShow;
629
+ private scheduleHide;
630
+ private show;
631
+ private applyPlacement;
632
+ private hide;
633
+ ngOnDestroy(): void;
634
+ }
635
+
636
+ /** Box — universal layout primitive. Accepts shorthand style inputs. */
637
+ declare class ElvoraBox {
638
+ p?: number | string;
639
+ px?: number | string;
640
+ py?: number | string;
641
+ pt?: number | string;
642
+ pr?: number | string;
643
+ pb?: number | string;
644
+ pl?: number | string;
645
+ m?: number | string;
646
+ mx?: number | string;
647
+ my?: number | string;
648
+ mt?: number | string;
649
+ mr?: number | string;
650
+ mb?: number | string;
651
+ ml?: number | string;
652
+ w?: number | string;
653
+ h?: number | string;
654
+ bg?: string;
655
+ color?: string;
656
+ rounded?: number | string;
657
+ shadow?: string;
658
+ get resolvedStyle(): Record<string, string | number>;
659
+ }
660
+
661
+ type Direction = 'row' | 'column' | 'row-reverse' | 'column-reverse';
662
+ /** Stack — flex container with `gap`, `direction`, `align`, `justify`. */
663
+ declare class ElvoraStack {
664
+ direction: Direction;
665
+ gap: number | string;
666
+ align?: string;
667
+ justify?: string;
668
+ wrap: boolean;
669
+ inline: boolean;
670
+ get resolvedStyle(): Record<string, string | number>;
671
+ }
672
+ /** HStack — horizontal Stack convenience component. */
673
+ declare class ElvoraHStack {
674
+ gap: number | string;
675
+ align?: string;
676
+ justify?: string;
677
+ }
678
+ /** VStack — vertical Stack convenience component. */
679
+ declare class ElvoraVStack {
680
+ gap: number | string;
681
+ align?: string;
682
+ justify?: string;
683
+ }
684
+
685
+ /** Grid — CSS Grid container. */
686
+ declare class ElvoraGrid {
687
+ columns: number | string;
688
+ gap: number | string;
689
+ rows?: number | string;
690
+ autoFlow?: string;
691
+ get resolvedStyle(): Record<string, string | number>;
692
+ }
693
+ /** GridItem — child of `<elvora-grid>` with span controls. */
694
+ declare class ElvoraGridItem {
695
+ colSpan?: number;
696
+ rowSpan?: number;
697
+ colStart?: number;
698
+ colEnd?: number;
699
+ get resolvedStyle(): Record<string, string | number>;
700
+ }
701
+
702
+ /** Container — centered, max-width container. */
703
+ declare class ElvoraContainer {
704
+ size: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
705
+ padding: number | string;
706
+ centerContent: boolean;
707
+ get resolvedStyle(): Record<string, string | number>;
708
+ }
709
+
710
+ /** Card — content container with elevation, padding, rounded corners. */
711
+ declare class ElvoraCard {
712
+ private readonly themeService;
713
+ variant: 'outline' | 'elevated' | 'filled';
714
+ padding: number | string;
715
+ protected readonly cardStyle: _angular_core.Signal<{
716
+ backgroundColor: string;
717
+ border: string;
718
+ boxShadow: string;
719
+ borderRadius: string;
720
+ padding: string;
721
+ }>;
722
+ }
723
+ declare class ElvoraCardHeader {
724
+ private readonly themeService;
725
+ protected readonly style: _angular_core.Signal<{
726
+ paddingBottom: string;
727
+ borderBottom: string;
728
+ marginBottom: string;
729
+ }>;
730
+ }
731
+ declare class ElvoraCardBody {
732
+ }
733
+ declare class ElvoraCardFooter {
734
+ private readonly themeService;
735
+ protected readonly style: _angular_core.Signal<{
736
+ paddingTop: string;
737
+ borderTop: string;
738
+ marginTop: string;
739
+ }>;
740
+ }
741
+
742
+ /** Alert — banner-style feedback message. */
743
+ declare class ElvoraAlert {
744
+ private readonly themeService;
745
+ status: ElvoraStatus;
746
+ tone: ElvoraTone;
747
+ title?: string;
748
+ description?: string;
749
+ closeable: boolean;
750
+ closeLabel: string;
751
+ readonly close: EventEmitter<void>;
752
+ protected iconName(): IconName;
753
+ protected roleAttr(): "alert" | "status";
754
+ protected readonly rootStyle: _angular_core.Signal<{
755
+ display: string;
756
+ alignItems: string;
757
+ gap: string;
758
+ padding: string;
759
+ borderRadius: string;
760
+ backgroundColor: string;
761
+ color: string;
762
+ borderWidth: string;
763
+ borderStyle: string;
764
+ borderColor: string;
765
+ }>;
766
+ protected readonly titleStyle: _angular_core.Signal<{
767
+ fontWeight: string;
768
+ fontSize: string;
769
+ marginBottom: string;
770
+ }>;
771
+ }
772
+
773
+ /** Skeleton — placeholder block with optional pulsing animation. */
774
+ declare class ElvoraSkeleton {
775
+ private readonly themeService;
776
+ width: number | string;
777
+ height: number | string;
778
+ rounded?: number | string;
779
+ animated: boolean;
780
+ protected readonly boxStyle: _angular_core.Signal<{
781
+ width: string;
782
+ height: string;
783
+ borderRadius: string;
784
+ backgroundColor: string;
785
+ animation: string;
786
+ }>;
787
+ }
788
+
789
+ /** Empty — placeholder for no-data states. */
790
+ declare class ElvoraEmpty {
791
+ private readonly themeService;
792
+ title: string;
793
+ description?: string;
794
+ protected fgSubtle(): string;
795
+ protected readonly wrapperStyle: _angular_core.Signal<{
796
+ display: string;
797
+ flexDirection: string;
798
+ alignItems: string;
799
+ gap: string;
800
+ padding: string;
801
+ textAlign: string;
802
+ }>;
803
+ protected readonly iconStyle: _angular_core.Signal<{
804
+ color: string;
805
+ }>;
806
+ protected readonly titleStyle: _angular_core.Signal<{
807
+ color: string;
808
+ fontWeight: string;
809
+ fontSize: string;
810
+ }>;
811
+ protected readonly descStyle: _angular_core.Signal<{
812
+ color: string;
813
+ fontSize: string;
814
+ }>;
815
+ }
816
+
817
+ type ElvoraResultStatus = ElvoraStatus | '404' | '500' | '403';
818
+ /** Result — page-level status component. */
819
+ declare class ElvoraResult {
820
+ private readonly themeService;
821
+ status: ElvoraResultStatus;
822
+ title?: string;
823
+ subtitle?: string;
824
+ hasExtra: boolean;
825
+ protected iconName(): IconName;
826
+ protected iconColor(): string;
827
+ protected readonly wrapperStyle: _angular_core.Signal<{
828
+ display: string;
829
+ flexDirection: string;
830
+ alignItems: string;
831
+ gap: string;
832
+ padding: string;
833
+ textAlign: string;
834
+ }>;
835
+ protected readonly iconWrapStyle: _angular_core.Signal<{
836
+ color: string;
837
+ }>;
838
+ protected readonly titleStyle: _angular_core.Signal<{
839
+ color: string;
840
+ fontWeight: string;
841
+ fontSize: string;
842
+ }>;
843
+ protected readonly subtitleStyle: _angular_core.Signal<{
844
+ color: string;
845
+ fontSize: string;
846
+ }>;
847
+ }
848
+
849
+ /** Modal — centered overlay dialog. Renders inline (no portal). */
850
+ declare class ElvoraModal {
851
+ private readonly themeService;
852
+ isOpen: boolean;
853
+ size: 'sm' | 'md' | 'lg' | 'xl' | 'full';
854
+ title?: string;
855
+ showCloseButton: boolean;
856
+ closeOnEscape: boolean;
857
+ closeOnOverlayClick: boolean;
858
+ hasFooter: boolean;
859
+ closeLabel: string;
860
+ close: EventEmitter<void>;
861
+ constructor();
862
+ onEscape(): void;
863
+ onOverlayClick(_e: MouseEvent): void;
864
+ protected readonly overlayStyle: _angular_core.Signal<{
865
+ position: string;
866
+ inset: string;
867
+ backgroundColor: string;
868
+ display: string;
869
+ alignItems: string;
870
+ justifyContent: string;
871
+ padding: string;
872
+ zIndex: string;
873
+ }>;
874
+ protected readonly dialogStyle: _angular_core.Signal<{
875
+ backgroundColor: string;
876
+ color: string;
877
+ borderRadius: string;
878
+ boxShadow: "0 20px 25px -5px rgba(15, 23, 42, 0.10), 0 8px 10px -6px rgba(15, 23, 42, 0.10)";
879
+ width: string;
880
+ maxWidth: "380px" | "520px" | "720px" | "960px" | "95vw";
881
+ maxHeight: string;
882
+ display: string;
883
+ flexDirection: string;
884
+ overflow: string;
885
+ }>;
886
+ protected readonly headerStyle: _angular_core.Signal<{
887
+ display: string;
888
+ alignItems: string;
889
+ gap: string;
890
+ padding: string;
891
+ borderBottom: string;
892
+ }>;
893
+ protected readonly footerStyle: _angular_core.Signal<{
894
+ display: string;
895
+ gap: string;
896
+ justifyContent: string;
897
+ padding: string;
898
+ borderTop: string;
899
+ }>;
900
+ }
901
+
902
+ /** Drawer — edge-anchored overlay panel. */
903
+ declare class ElvoraDrawer {
904
+ private readonly themeService;
905
+ isOpen: boolean;
906
+ placement: 'left' | 'right' | 'top' | 'bottom';
907
+ size: number | string;
908
+ title?: string;
909
+ showCloseButton: boolean;
910
+ closeOnEscape: boolean;
911
+ closeOnOverlayClick: boolean;
912
+ hasFooter: boolean;
913
+ closeLabel: string;
914
+ close: EventEmitter<void>;
915
+ constructor();
916
+ onEscape(): void;
917
+ onOverlayClick(): void;
918
+ protected readonly overlayStyle: _angular_core.Signal<{
919
+ position: string;
920
+ inset: string;
921
+ backgroundColor: string;
922
+ display: string;
923
+ alignItems: string;
924
+ justifyContent: string;
925
+ zIndex: string;
926
+ }>;
927
+ protected readonly panelStyle: _angular_core.Signal<{
928
+ backgroundColor: string;
929
+ color: string;
930
+ boxShadow: "0 20px 25px -5px rgba(15, 23, 42, 0.10), 0 8px 10px -6px rgba(15, 23, 42, 0.10)";
931
+ display: string;
932
+ flexDirection: string;
933
+ width: string;
934
+ height: string;
935
+ maxWidth: string;
936
+ maxHeight: string;
937
+ overflow: string;
938
+ }>;
939
+ protected readonly headerStyle: _angular_core.Signal<{
940
+ display: string;
941
+ alignItems: string;
942
+ gap: string;
943
+ padding: string;
944
+ borderBottom: string;
945
+ }>;
946
+ protected readonly footerStyle: _angular_core.Signal<{
947
+ display: string;
948
+ gap: string;
949
+ justifyContent: string;
950
+ padding: string;
951
+ borderTop: string;
952
+ }>;
953
+ }
954
+
955
+ /**
956
+ * Popover — content overlay anchored to a host element. Project the trigger
957
+ * inside `<elvora-popover>` and the panel content into the `[slot=content]`
958
+ * projection slot.
959
+ */
960
+ declare class ElvoraPopover {
961
+ private readonly themeService;
962
+ private readonly host;
963
+ isOpen: boolean;
964
+ placement: 'top' | 'bottom' | 'left' | 'right';
965
+ openChange: EventEmitter<boolean>;
966
+ toggle(event: MouseEvent): void;
967
+ onDocClick(event: MouseEvent): void;
968
+ onEsc(): void;
969
+ protected readonly panelStyle: _angular_core.Signal<Record<string, string>>;
970
+ }
971
+
972
+ interface ElvoraToastOptions {
973
+ id?: string;
974
+ status?: ElvoraStatus;
975
+ title?: string;
976
+ description?: string;
977
+ /** Duration in ms. `null` for sticky. */
978
+ duration?: number | null;
979
+ }
980
+ interface ToastInstance {
981
+ id: string;
982
+ status: ElvoraStatus;
983
+ title?: string;
984
+ description?: string;
985
+ duration: number | null;
986
+ }
987
+ /**
988
+ * Global toast service. Inject anywhere and call `show()`. Mount
989
+ * `<elvora-toast-host></elvora-toast-host>` once at the application root.
990
+ */
991
+ declare class ElvoraToastService {
992
+ private readonly toastsSignal;
993
+ readonly toasts: _angular_core.Signal<ToastInstance[]>;
994
+ defaultDuration: number;
995
+ show(opts: ElvoraToastOptions): string;
996
+ dismiss(id: string): void;
997
+ dismissAll(): void;
998
+ }
999
+ /**
1000
+ * Toast viewport. Mount once near the application root.
1001
+ *
1002
+ * ```html
1003
+ * <elvora-toast-host placement="top-right"></elvora-toast-host>
1004
+ * ```
1005
+ */
1006
+ declare class ElvoraToastHost {
1007
+ private readonly themeService;
1008
+ private readonly service;
1009
+ toasts: _angular_core.Signal<ToastInstance[]>;
1010
+ /** Position the stack appears in. */
1011
+ placement: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';
1012
+ protected readonly containerStyle: _angular_core.Signal<Record<string, string>>;
1013
+ trackById(_idx: number, item: ToastInstance): string;
1014
+ dismiss(id: string): void;
1015
+ }
1016
+
1017
+ /** Tab definition. Use as a child of `<elvora-tabs>`. */
1018
+ declare class ElvoraTabTemplate {
1019
+ value: string;
1020
+ label: string;
1021
+ isDisabled: boolean;
1022
+ readonly template: TemplateRef<unknown>;
1023
+ }
1024
+ type Variant = 'underline' | 'pill' | 'solid';
1025
+ /**
1026
+ * Tabs — WAI-ARIA Tabs pattern with keyboard navigation. Use with
1027
+ * `<elvora-tab-template>` children which carry a `value`, `label`, and panel
1028
+ * template content.
1029
+ */
1030
+ declare class ElvoraTabs implements AfterContentInit {
1031
+ private readonly themeService;
1032
+ private static counter;
1033
+ protected readonly baseId: string;
1034
+ value: string;
1035
+ variant: Variant;
1036
+ orientation: Orientation;
1037
+ activation: 'automatic' | 'manual';
1038
+ valueChange: EventEmitter<string>;
1039
+ private tabRefs?;
1040
+ protected readonly templatesSignal: _angular_core.WritableSignal<ElvoraTabTemplate[]>;
1041
+ protected get templates(): ElvoraTabTemplate[];
1042
+ constructor();
1043
+ ngAfterContentInit(): void;
1044
+ protected onClick(value: string, disabled: boolean): void;
1045
+ protected onKey(event: KeyboardEvent, index: number): void;
1046
+ protected readonly listStyle: _angular_core.Signal<{
1047
+ display: string;
1048
+ flexDirection: string;
1049
+ gap: string;
1050
+ borderBottom: string;
1051
+ }>;
1052
+ protected tabStyle(active: boolean, disabled?: boolean): Record<string, string>;
1053
+ }
1054
+
1055
+ interface ElvoraMenuItem {
1056
+ value: string;
1057
+ label: string;
1058
+ isDisabled?: boolean;
1059
+ hasSeparatorBefore?: boolean;
1060
+ }
1061
+ /**
1062
+ * Dropdown menu. Project the trigger as the default slot. Items are passed as
1063
+ * an input.
1064
+ */
1065
+ declare class ElvoraMenu {
1066
+ private readonly themeService;
1067
+ private readonly host;
1068
+ items: ElvoraMenuItem[];
1069
+ placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
1070
+ select: EventEmitter<string>;
1071
+ isOpen: boolean;
1072
+ toggle(): void;
1073
+ onSelect(item: ElvoraMenuItem): void;
1074
+ onDocClick(event: MouseEvent): void;
1075
+ onEsc(): void;
1076
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1077
+ protected itemStyle(disabled?: boolean): Record<string, string>;
1078
+ protected readonly separatorStyle: _angular_core.Signal<{
1079
+ height: string;
1080
+ margin: string;
1081
+ backgroundColor: string;
1082
+ }>;
1083
+ }
1084
+
1085
+ interface ElvoraBreadcrumbItem {
1086
+ label: string;
1087
+ href?: string;
1088
+ isCurrent?: boolean;
1089
+ }
1090
+ /** Breadcrumb — navigation trail. */
1091
+ declare class ElvoraBreadcrumb {
1092
+ private readonly themeService;
1093
+ items: ElvoraBreadcrumbItem[];
1094
+ activate: EventEmitter<number>;
1095
+ emit(i: number, e: MouseEvent): void;
1096
+ protected readonly listStyle: _angular_core.Signal<{
1097
+ listStyle: string;
1098
+ margin: string;
1099
+ padding: string;
1100
+ display: string;
1101
+ alignItems: string;
1102
+ flexWrap: string;
1103
+ gap: string;
1104
+ fontSize: string;
1105
+ }>;
1106
+ protected linkStyle(current: boolean): {
1107
+ color: string;
1108
+ textDecoration: string;
1109
+ };
1110
+ protected separatorColor(): string;
1111
+ }
1112
+
1113
+ /** Pagination — accessible page navigator. */
1114
+ declare class ElvoraPagination {
1115
+ private readonly themeService;
1116
+ total: number;
1117
+ pageSize: number;
1118
+ current: number;
1119
+ siblingCount: number;
1120
+ showFirstLast: boolean;
1121
+ hideOnSinglePage: boolean;
1122
+ currentChange: EventEmitter<number>;
1123
+ get totalPages(): number;
1124
+ get visible(): boolean;
1125
+ get pages(): (number | "gap")[];
1126
+ numberOf(p: number | 'gap'): number;
1127
+ go(next: number): void;
1128
+ protected btnStyle(active: boolean, disabled?: boolean): {
1129
+ appearance: string;
1130
+ minWidth: string;
1131
+ height: string;
1132
+ padding: string;
1133
+ borderRadius: string;
1134
+ border: string;
1135
+ backgroundColor: string;
1136
+ color: string;
1137
+ cursor: string;
1138
+ opacity: string;
1139
+ fontSize: string;
1140
+ fontWeight: string;
1141
+ display: string;
1142
+ alignItems: string;
1143
+ justifyContent: string;
1144
+ };
1145
+ protected gapStyle: _angular_core.Signal<{
1146
+ padding: string;
1147
+ color: string;
1148
+ }>;
1149
+ }
1150
+
1151
+ interface ElvoraStep {
1152
+ title: string;
1153
+ description?: string;
1154
+ status?: 'wait' | 'process' | 'finish' | 'error';
1155
+ }
1156
+ /** Steps — multi-step progress indicator. */
1157
+ declare class ElvoraSteps {
1158
+ private readonly themeService;
1159
+ steps: ElvoraStep[];
1160
+ current: number;
1161
+ orientation: 'horizontal' | 'vertical';
1162
+ change: EventEmitter<number>;
1163
+ get clickable(): boolean;
1164
+ resolveStatus(i: number, override?: ElvoraStep['status']): 'wait' | 'process' | 'finish' | 'error';
1165
+ onClick(i: number): void;
1166
+ protected readonly listStyle: _angular_core.Signal<{
1167
+ listStyle: string;
1168
+ margin: string;
1169
+ padding: string;
1170
+ display: string;
1171
+ flexDirection: string;
1172
+ gap: string;
1173
+ alignItems: string;
1174
+ }>;
1175
+ protected readonly itemStyle: _angular_core.Signal<{
1176
+ display: string;
1177
+ flex: string;
1178
+ flexDirection: string;
1179
+ alignItems: string;
1180
+ gap: string;
1181
+ }>;
1182
+ protected dotStyle(status: 'wait' | 'process' | 'finish' | 'error'): Record<string, string>;
1183
+ protected readonly textWrapStyle: _angular_core.Signal<{
1184
+ textAlign: string;
1185
+ }>;
1186
+ protected titleStyle(status: 'wait' | 'process' | 'finish' | 'error'): {
1187
+ fontSize: string;
1188
+ fontWeight: string;
1189
+ color: string;
1190
+ };
1191
+ protected readonly descStyle: _angular_core.Signal<{
1192
+ fontSize: string;
1193
+ color: string;
1194
+ marginTop: string;
1195
+ }>;
1196
+ protected connectorStyle(status: 'wait' | 'process' | 'finish' | 'error'): {
1197
+ flex: string;
1198
+ height: string;
1199
+ backgroundColor: string;
1200
+ alignSelf: string;
1201
+ marginTop: string;
1202
+ width?: undefined;
1203
+ minHeight?: undefined;
1204
+ marginLeft?: undefined;
1205
+ } | {
1206
+ width: string;
1207
+ minHeight: string;
1208
+ backgroundColor: string;
1209
+ marginLeft: string;
1210
+ flex?: undefined;
1211
+ height?: undefined;
1212
+ alignSelf?: undefined;
1213
+ marginTop?: undefined;
1214
+ };
1215
+ }
1216
+
1217
+ interface ElvoraAnchorLink {
1218
+ href: string;
1219
+ label: string;
1220
+ children?: ElvoraAnchorLink[];
1221
+ }
1222
+ /** Anchor — in-page navigation. */
1223
+ declare class ElvoraAnchor {
1224
+ private readonly themeService;
1225
+ protected readonly activeHref: _angular_core.WritableSignal<string | null>;
1226
+ links: ElvoraAnchorLink[];
1227
+ offsetTop: number;
1228
+ smooth: boolean;
1229
+ onScroll(): void;
1230
+ onActivate(event: MouseEvent, href: string): void;
1231
+ protected linkStyle(href: string, depth: number): {
1232
+ display: string;
1233
+ padding: string;
1234
+ paddingLeft: string;
1235
+ color: string;
1236
+ fontSize: string;
1237
+ textDecoration: string;
1238
+ borderLeft: string;
1239
+ backgroundColor: string;
1240
+ };
1241
+ }
1242
+
1243
+ /** BackTop — floating "scroll to top" button. */
1244
+ declare class ElvoraBackTop {
1245
+ private readonly themeService;
1246
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
1247
+ visibilityHeight: number;
1248
+ bottom: number;
1249
+ right: number;
1250
+ smooth: boolean;
1251
+ label: string;
1252
+ onScroll(): void;
1253
+ onClick(): void;
1254
+ protected readonly btnStyle: _angular_core.Signal<{
1255
+ position: string;
1256
+ bottom: string;
1257
+ right: string;
1258
+ width: string;
1259
+ height: string;
1260
+ borderRadius: string;
1261
+ border: string;
1262
+ backgroundColor: string;
1263
+ color: string;
1264
+ boxShadow: string;
1265
+ cursor: string;
1266
+ display: string;
1267
+ alignItems: string;
1268
+ justifyContent: string;
1269
+ zIndex: string;
1270
+ }>;
1271
+ }
1272
+
1273
+ declare class ElvoraFormState {
1274
+ layout: _angular_core.WritableSignal<"vertical" | "horizontal">;
1275
+ labelWidth: _angular_core.WritableSignal<string | number | null>;
1276
+ errors: _angular_core.WritableSignal<Record<string, string | undefined>>;
1277
+ setLayout(value: 'vertical' | 'horizontal'): void;
1278
+ setLabelWidth(value: number | string | null): void;
1279
+ setFieldError(name: string, error: string | undefined): void;
1280
+ errorFor(name: string): string | undefined;
1281
+ }
1282
+ declare class ElvoraForm {
1283
+ private readonly state;
1284
+ set layout(value: 'vertical' | 'horizontal');
1285
+ get layout(): "vertical" | "horizontal";
1286
+ set labelWidth(value: number | string | null);
1287
+ get labelWidth(): number | string | null;
1288
+ readonly onSubmit: EventEmitter<Event>;
1289
+ }
1290
+ declare class ElvoraFormField {
1291
+ private readonly themeService;
1292
+ private readonly state;
1293
+ name: string;
1294
+ label?: string;
1295
+ hint?: string;
1296
+ error?: string;
1297
+ isRequired: boolean;
1298
+ readonly displayedError: _angular_core.Signal<string | undefined>;
1299
+ protected readonly wrapperStyle: _angular_core.Signal<Record<string, string>>;
1300
+ protected readonly labelStyle: _angular_core.Signal<Record<string, string>>;
1301
+ protected readonly hintStyle: _angular_core.Signal<Record<string, string>>;
1302
+ protected readonly errorStyle: _angular_core.Signal<Record<string, string>>;
1303
+ }
1304
+
1305
+ declare class ElvoraNumberInput {
1306
+ private readonly themeService;
1307
+ value: number | null;
1308
+ min?: number;
1309
+ max?: number;
1310
+ step: number;
1311
+ precision?: number;
1312
+ isDisabled: boolean;
1313
+ isReadOnly: boolean;
1314
+ isInvalid: boolean;
1315
+ hideSteppers: boolean;
1316
+ placeholder?: string;
1317
+ readonly valueChange: EventEmitter<number | null>;
1318
+ protected text: string;
1319
+ private setValue;
1320
+ protected increment(delta: number): void;
1321
+ protected onInput(e: Event): void;
1322
+ protected onBlur(): void;
1323
+ protected onKeyDown(e: KeyboardEvent): void;
1324
+ protected readonly wrapperStyle: _angular_core.Signal<Record<string, string>>;
1325
+ protected readonly inputStyle: _angular_core.Signal<Record<string, string>>;
1326
+ protected readonly stepperContainerStyle: _angular_core.Signal<Record<string, string>>;
1327
+ protected stepperBtnStyle(top: boolean): Record<string, string>;
1328
+ }
1329
+
1330
+ interface ElvoraSegmentedOption {
1331
+ value: string;
1332
+ label: string;
1333
+ isDisabled?: boolean;
1334
+ }
1335
+ declare class ElvoraSegmented {
1336
+ private readonly themeService;
1337
+ options: ElvoraSegmentedOption[];
1338
+ value: string;
1339
+ size: 'sm' | 'md' | 'lg';
1340
+ isDisabled: boolean;
1341
+ readonly valueChange: EventEmitter<string>;
1342
+ protected select(opt: ElvoraSegmentedOption): void;
1343
+ protected readonly containerStyle: _angular_core.Signal<Record<string, string>>;
1344
+ protected btnStyle(active: boolean): Record<string, string>;
1345
+ }
1346
+
1347
+ declare class ElvoraSlider {
1348
+ private readonly themeService;
1349
+ private trackRef?;
1350
+ value: number;
1351
+ min: number;
1352
+ max: number;
1353
+ step: number;
1354
+ isDisabled: boolean;
1355
+ readonly valueChange: EventEmitter<number>;
1356
+ readonly valueChangeEnd: EventEmitter<number>;
1357
+ private dragging;
1358
+ private commit;
1359
+ private valueFromClient;
1360
+ protected onPointerDown(e: PointerEvent): void;
1361
+ protected onPointerMove(e: PointerEvent): void;
1362
+ protected onPointerUp(e: PointerEvent): void;
1363
+ protected onGlobalUp(): void;
1364
+ protected onKeyDown(e: KeyboardEvent): void;
1365
+ protected readonly wrapperStyle: _angular_core.Signal<Record<string, string>>;
1366
+ protected readonly trackStyle: _angular_core.Signal<Record<string, string>>;
1367
+ protected readonly fillStyle: _angular_core.Signal<Record<string, string>>;
1368
+ protected readonly thumbStyle: _angular_core.Signal<Record<string, string>>;
1369
+ }
1370
+
1371
+ declare class ElvoraRate {
1372
+ private readonly themeService;
1373
+ value: number;
1374
+ count: number;
1375
+ allowHalf: boolean;
1376
+ isDisabled: boolean;
1377
+ ariaLabel: string;
1378
+ readonly valueChange: EventEmitter<number>;
1379
+ protected readonly hover: _angular_core.WritableSignal<number | null>;
1380
+ protected get slots(): unknown[];
1381
+ protected setValue(next: number): void;
1382
+ protected onHover(e: MouseEvent, i: number): void;
1383
+ protected onPick(e: MouseEvent, i: number): void;
1384
+ protected onKey(e: KeyboardEvent): void;
1385
+ protected readonly containerStyle: _angular_core.Signal<Record<string, string>>;
1386
+ protected starStyle(i: number): Record<string, string>;
1387
+ }
1388
+
1389
+ interface ElvoraUploadFile {
1390
+ id: string;
1391
+ file: File;
1392
+ status: 'pending' | 'uploading' | 'done' | 'error';
1393
+ progress?: number;
1394
+ error?: string;
1395
+ }
1396
+ declare class ElvoraUpload {
1397
+ private readonly themeService;
1398
+ files: ElvoraUploadFile[];
1399
+ multiple: boolean;
1400
+ accept?: string;
1401
+ description?: string;
1402
+ isDisabled: boolean;
1403
+ readonly filesChange: EventEmitter<ElvoraUploadFile[]>;
1404
+ readonly upload: EventEmitter<File[]>;
1405
+ protected readonly dragOver: _angular_core.WritableSignal<boolean>;
1406
+ protected onInput(e: Event): void;
1407
+ protected onDragOver(e: DragEvent): void;
1408
+ protected onDrop(e: DragEvent): void;
1409
+ private handleFiles;
1410
+ protected remove(id: string): void;
1411
+ protected readonly dropzoneStyle: _angular_core.Signal<Record<string, string>>;
1412
+ protected readonly hintStyle: _angular_core.Signal<Record<string, string>>;
1413
+ protected readonly rowStyle: _angular_core.Signal<Record<string, string>>;
1414
+ }
1415
+
1416
+ interface ElvoraAutoCompleteOption {
1417
+ value: string;
1418
+ label?: string;
1419
+ }
1420
+ declare class ElvoraAutoComplete {
1421
+ private readonly themeService;
1422
+ private readonly host;
1423
+ value: string;
1424
+ options: ElvoraAutoCompleteOption[];
1425
+ placeholder?: string;
1426
+ isDisabled: boolean;
1427
+ isInvalid: boolean;
1428
+ readonly valueChange: EventEmitter<string>;
1429
+ readonly selected: EventEmitter<ElvoraAutoCompleteOption>;
1430
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1431
+ protected readonly highlight: _angular_core.WritableSignal<number>;
1432
+ protected readonly filtered: _angular_core.Signal<ElvoraAutoCompleteOption[]>;
1433
+ protected onInput(e: Event): void;
1434
+ protected open(): void;
1435
+ protected select(opt: ElvoraAutoCompleteOption): void;
1436
+ protected onKeyDown(e: KeyboardEvent): void;
1437
+ protected onDocMouse(e: MouseEvent): void;
1438
+ protected readonly inputStyle: _angular_core.Signal<Record<string, string>>;
1439
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1440
+ protected itemStyle(active: boolean): Record<string, string>;
1441
+ }
1442
+
1443
+ declare class ElvoraColorPicker {
1444
+ private readonly themeService;
1445
+ private readonly host;
1446
+ set value(v: string);
1447
+ get value(): string;
1448
+ private _value;
1449
+ presets: string[];
1450
+ isDisabled: boolean;
1451
+ readonly valueChange: EventEmitter<string>;
1452
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1453
+ protected readonly hexInput: _angular_core.WritableSignal<string>;
1454
+ protected readonly currentValue: _angular_core.Signal<string>;
1455
+ protected toggle(): void;
1456
+ protected set(next: string): void;
1457
+ protected onPick(e: Event): void;
1458
+ protected onHexInput(e: Event): void;
1459
+ protected onDocMouse(e: MouseEvent): void;
1460
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1461
+ protected swatchStyle(color: string, button?: boolean): Record<string, string>;
1462
+ protected readonly popoverStyle: _angular_core.Signal<Record<string, string>>;
1463
+ }
1464
+
1465
+ declare class ElvoraDatePicker {
1466
+ private readonly themeService;
1467
+ private readonly host;
1468
+ value: Date | null;
1469
+ min?: Date;
1470
+ max?: Date;
1471
+ placeholder?: string;
1472
+ isDisabled: boolean;
1473
+ isInvalid: boolean;
1474
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
1475
+ format: (d: Date) => string;
1476
+ readonly valueChange: EventEmitter<Date | null>;
1477
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1478
+ protected readonly view: _angular_core.WritableSignal<Date>;
1479
+ protected get weekdays(): string[];
1480
+ protected toggle(): void;
1481
+ protected prev(): void;
1482
+ protected next(): void;
1483
+ protected pick(d: Date): void;
1484
+ protected isInRange(d: Date): boolean;
1485
+ protected readonly monthLabel: _angular_core.Signal<string>;
1486
+ protected readonly flatMatrix: _angular_core.Signal<Date[]>;
1487
+ protected onDocMouse(e: MouseEvent): void;
1488
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1489
+ protected readonly popoverStyle: _angular_core.Signal<Record<string, string>>;
1490
+ protected dayStyle(d: Date): Record<string, string>;
1491
+ }
1492
+
1493
+ interface ElvoraTimeValue {
1494
+ hours: number;
1495
+ minutes: number;
1496
+ seconds?: number;
1497
+ }
1498
+ declare class ElvoraTimePicker {
1499
+ private readonly themeService;
1500
+ private readonly host;
1501
+ value: ElvoraTimeValue | null;
1502
+ showSeconds: boolean;
1503
+ use12Hours: boolean;
1504
+ minuteStep: number;
1505
+ placeholder?: string;
1506
+ isDisabled: boolean;
1507
+ readonly valueChange: EventEmitter<ElvoraTimeValue | null>;
1508
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1509
+ protected readonly pad: (n: number) => string;
1510
+ protected get hours(): number[];
1511
+ protected get minutes(): number[];
1512
+ protected get seconds(): number[];
1513
+ protected get activeHour(): number | undefined;
1514
+ protected display(h: number): string;
1515
+ protected formatted: _angular_core.Signal<string>;
1516
+ protected setHour(h: number): void;
1517
+ protected setMinute(m: number): void;
1518
+ protected setSecond(s: number): void;
1519
+ protected setPeriod(p: string): void;
1520
+ protected periodStyle(p: string): Record<string, string>;
1521
+ private emit;
1522
+ protected onDocMouse(e: MouseEvent): void;
1523
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1524
+ protected readonly popoverStyle: _angular_core.Signal<Record<string, string>>;
1525
+ protected readonly colStyle: _angular_core.Signal<Record<string, string>>;
1526
+ protected cellStyle(active: boolean): Record<string, string>;
1527
+ }
1528
+
1529
+ interface ElvoraDateRange {
1530
+ start: Date | null;
1531
+ end: Date | null;
1532
+ }
1533
+ declare class ElvoraDateRangePicker {
1534
+ private readonly themeService;
1535
+ private readonly host;
1536
+ value: ElvoraDateRange | null;
1537
+ min?: Date;
1538
+ max?: Date;
1539
+ isDisabled: boolean;
1540
+ isInvalid: boolean;
1541
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
1542
+ format: (d: Date) => string;
1543
+ placeholder?: {
1544
+ start?: string;
1545
+ end?: string;
1546
+ };
1547
+ readonly valueChange: EventEmitter<ElvoraDateRange>;
1548
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1549
+ protected readonly view: _angular_core.WritableSignal<Date>;
1550
+ private pendingStart;
1551
+ protected toggle(): void;
1552
+ protected prev(): void;
1553
+ protected next(): void;
1554
+ protected pickDay(d: Date): void;
1555
+ protected isInRange(d: Date): boolean;
1556
+ protected get weekdays(): string[];
1557
+ protected monthLabel(offset: number): string;
1558
+ protected flatMatrix(offset: number): Date[];
1559
+ protected onDocMouse(e: MouseEvent): void;
1560
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1561
+ protected readonly popoverStyle: _angular_core.Signal<Record<string, string>>;
1562
+ protected dayStyle(d: Date, offset: number): Record<string, string>;
1563
+ }
1564
+
1565
+ interface ElvoraCascaderOption {
1566
+ value: string;
1567
+ label: string;
1568
+ children?: ElvoraCascaderOption[];
1569
+ isDisabled?: boolean;
1570
+ }
1571
+ declare class ElvoraCascader {
1572
+ private readonly themeService;
1573
+ private readonly host;
1574
+ options: ElvoraCascaderOption[];
1575
+ value: string[];
1576
+ placeholder?: string;
1577
+ displaySeparator: string;
1578
+ isDisabled: boolean;
1579
+ readonly valueChange: EventEmitter<{
1580
+ value: string[];
1581
+ path: ElvoraCascaderOption[];
1582
+ }>;
1583
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1584
+ private activePath;
1585
+ protected readonly columns: _angular_core.Signal<ElvoraCascaderOption[][]>;
1586
+ protected readonly displayed: _angular_core.Signal<string>;
1587
+ protected toggle(): void;
1588
+ protected onSelectAtLevel(level: number, opt: ElvoraCascaderOption): void;
1589
+ protected onDocMouse(e: MouseEvent): void;
1590
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1591
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1592
+ protected colStyle(i: number, total: number): Record<string, string>;
1593
+ protected itemStyle(level: number, opt: ElvoraCascaderOption): Record<string, string>;
1594
+ }
1595
+
1596
+ interface ElvoraTreeNode$1 {
1597
+ value: string;
1598
+ label: string;
1599
+ children?: ElvoraTreeNode$1[];
1600
+ isDisabled?: boolean;
1601
+ }
1602
+ interface FlatNode {
1603
+ node: ElvoraTreeNode$1;
1604
+ depth: number;
1605
+ hasChildren: boolean;
1606
+ }
1607
+ declare class ElvoraTreeSelect {
1608
+ private readonly themeService;
1609
+ private readonly host;
1610
+ options: ElvoraTreeNode$1[];
1611
+ value: string | string[];
1612
+ multiple: boolean;
1613
+ placeholder?: string;
1614
+ isDisabled: boolean;
1615
+ defaultExpanded: string[];
1616
+ readonly valueChange: EventEmitter<string | string[]>;
1617
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1618
+ protected readonly expanded: _angular_core.WritableSignal<Set<string>>;
1619
+ protected readonly flat: _angular_core.Signal<FlatNode[]>;
1620
+ protected readonly displayLabel: _angular_core.Signal<string>;
1621
+ protected toggle(): void;
1622
+ protected toggleExpand(e: Event, v: string): void;
1623
+ protected onSelect(n: ElvoraTreeNode$1): void;
1624
+ protected isSelected(v: string): boolean;
1625
+ protected onDocMouse(e: MouseEvent): void;
1626
+ protected readonly triggerStyle: _angular_core.Signal<Record<string, string>>;
1627
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1628
+ protected rowStyle(f: FlatNode): Record<string, string>;
1629
+ protected caretStyle(): Record<string, string>;
1630
+ protected checkStyle(v: string): Record<string, string>;
1631
+ }
1632
+
1633
+ interface ElvoraMentionItem {
1634
+ value: string;
1635
+ label?: string;
1636
+ }
1637
+ declare class ElvoraMentions {
1638
+ private readonly themeService;
1639
+ private textarea?;
1640
+ value: string;
1641
+ options: ElvoraMentionItem[];
1642
+ trigger: string;
1643
+ isDisabled: boolean;
1644
+ readonly valueChange: EventEmitter<string>;
1645
+ protected readonly active: _angular_core.WritableSignal<boolean>;
1646
+ protected readonly highlight: _angular_core.WritableSignal<number>;
1647
+ protected readonly query: _angular_core.WritableSignal<string>;
1648
+ private start;
1649
+ protected readonly suggestions: _angular_core.Signal<ElvoraMentionItem[]>;
1650
+ protected onInput(e: Event): void;
1651
+ protected onKeyDown(e: KeyboardEvent): void;
1652
+ protected insert(item: ElvoraMentionItem): void;
1653
+ protected readonly textareaStyle: _angular_core.Signal<Record<string, string>>;
1654
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1655
+ protected itemStyle(active: boolean): Record<string, string>;
1656
+ }
1657
+
1658
+ interface ElvoraTransferItem {
1659
+ key: string;
1660
+ label: string;
1661
+ isDisabled?: boolean;
1662
+ }
1663
+ declare class ElvoraTransfer {
1664
+ private readonly themeService;
1665
+ dataSource: ElvoraTransferItem[];
1666
+ value: string[];
1667
+ titles?: [string, string];
1668
+ showSearch: boolean;
1669
+ isDisabled: boolean;
1670
+ readonly valueChange: EventEmitter<string[]>;
1671
+ protected readonly leftSelected: _angular_core.WritableSignal<Set<string>>;
1672
+ protected readonly rightSelected: _angular_core.WritableSignal<Set<string>>;
1673
+ protected readonly leftQuery: _angular_core.WritableSignal<string>;
1674
+ protected readonly rightQuery: _angular_core.WritableSignal<string>;
1675
+ protected readonly leftItems: _angular_core.Signal<ElvoraTransferItem[]>;
1676
+ protected readonly rightItems: _angular_core.Signal<ElvoraTransferItem[]>;
1677
+ protected readonly filteredLeft: _angular_core.Signal<ElvoraTransferItem[]>;
1678
+ protected readonly filteredRight: _angular_core.Signal<ElvoraTransferItem[]>;
1679
+ protected readonly allCheckedLeft: _angular_core.Signal<boolean>;
1680
+ protected readonly allCheckedRight: _angular_core.Signal<boolean>;
1681
+ protected toggleLeft(it: ElvoraTransferItem): void;
1682
+ protected toggleRight(it: ElvoraTransferItem): void;
1683
+ protected toggleAllLeft(): void;
1684
+ protected toggleAllRight(): void;
1685
+ protected moveRight(): void;
1686
+ protected moveLeft(): void;
1687
+ protected readonly listStyle: _angular_core.Signal<Record<string, string>>;
1688
+ protected readonly headerStyle: _angular_core.Signal<Record<string, string>>;
1689
+ protected readonly searchStyle: _angular_core.Signal<Record<string, string>>;
1690
+ protected readonly searchInputStyle: _angular_core.Signal<Record<string, string>>;
1691
+ protected itemStyle(checked: boolean, it: ElvoraTransferItem): Record<string, string>;
1692
+ protected readonly arrowStyle: _angular_core.Signal<Record<string, string>>;
1693
+ }
1694
+
1695
+ type ElvoraSortOrder = 'asc' | 'desc' | null;
1696
+ interface ElvoraTableColumn<Row = Record<string, unknown>> {
1697
+ key: string;
1698
+ title: string;
1699
+ dataIndex?: keyof Row | string;
1700
+ sortable?: boolean;
1701
+ sorter?: (a: Row, b: Row) => number;
1702
+ width?: number | string;
1703
+ align?: 'left' | 'center' | 'right';
1704
+ }
1705
+ declare class ElvoraTable<Row extends Record<string, unknown> = Record<string, unknown>> {
1706
+ private readonly themeService;
1707
+ columns: ElvoraTableColumn<Row>[];
1708
+ set dataSource(value: Row[]);
1709
+ get dataSource(): Row[];
1710
+ size: 'sm' | 'md' | 'lg';
1711
+ bordered: boolean;
1712
+ striped: boolean;
1713
+ readonly rowClick: EventEmitter<{
1714
+ row: Row;
1715
+ index: number;
1716
+ }>;
1717
+ protected readonly sortKey: _angular_core.WritableSignal<string | null>;
1718
+ protected readonly sortOrder: _angular_core.WritableSignal<ElvoraSortOrder>;
1719
+ private readonly _data;
1720
+ protected readonly sorted: _angular_core.Signal<Row[]>;
1721
+ protected primary(): string;
1722
+ protected muted(): string;
1723
+ protected onSort(col: ElvoraTableColumn<Row>): void;
1724
+ protected cell(row: Row, col: ElvoraTableColumn<Row>): unknown;
1725
+ protected tableStyle(): {
1726
+ width: string;
1727
+ borderCollapse: string;
1728
+ borderSpacing: number;
1729
+ fontSize: string;
1730
+ color: string;
1731
+ background: string;
1732
+ border: string | undefined;
1733
+ borderRadius: string;
1734
+ overflow: string;
1735
+ };
1736
+ protected theadStyle(): {
1737
+ background: string;
1738
+ };
1739
+ protected thStyle(col: ElvoraTableColumn<Row>): {
1740
+ textAlign: "center" | "right" | "left";
1741
+ padding: string;
1742
+ fontWeight: string;
1743
+ borderBottom: string;
1744
+ width: string | number | undefined;
1745
+ cursor: string | undefined;
1746
+ userSelect: string;
1747
+ };
1748
+ protected tdStyle(col: ElvoraTableColumn<Row>): {
1749
+ padding: string;
1750
+ borderBottom: string;
1751
+ textAlign: "center" | "right" | "left";
1752
+ };
1753
+ protected rowStyle(rowIndex: number): {
1754
+ background: string | undefined;
1755
+ };
1756
+ }
1757
+
1758
+ interface ElvoraTreeNode {
1759
+ key: string;
1760
+ label: string;
1761
+ children?: ElvoraTreeNode[];
1762
+ isDisabled?: boolean;
1763
+ }
1764
+ declare class ElvoraTree {
1765
+ private readonly themeService;
1766
+ treeData: ElvoraTreeNode[];
1767
+ set expandedKeys(value: string[]);
1768
+ set selectedKeys(value: string[]);
1769
+ multiple: boolean;
1770
+ readonly expandedKeysChange: EventEmitter<string[]>;
1771
+ readonly selectedKeysChange: EventEmitter<string[]>;
1772
+ readonly nodeSelect: EventEmitter<ElvoraTreeNode>;
1773
+ protected readonly expanded: _angular_core.WritableSignal<Set<string>>;
1774
+ protected readonly selected: _angular_core.WritableSignal<Set<string>>;
1775
+ protected onClick(node: ElvoraTreeNode): void;
1776
+ protected rowStyle(node: ElvoraTreeNode, depth: number): {
1777
+ display: string;
1778
+ alignItems: string;
1779
+ gap: string;
1780
+ padding: string;
1781
+ marginLeft: string;
1782
+ borderRadius: string;
1783
+ background: string | undefined;
1784
+ color: string;
1785
+ cursor: string;
1786
+ };
1787
+ }
1788
+
1789
+ declare class ElvoraList<T = unknown> {
1790
+ private readonly themeService;
1791
+ dataSource: T[];
1792
+ header?: string;
1793
+ footer?: string;
1794
+ bordered: boolean;
1795
+ size: 'sm' | 'md' | 'lg';
1796
+ divided: boolean;
1797
+ emptyMessage?: string;
1798
+ itemTemplate?: TemplateRef<{
1799
+ $implicit: T;
1800
+ index: number;
1801
+ }>;
1802
+ private padding;
1803
+ protected containerStyle(): {
1804
+ border: string | undefined;
1805
+ borderRadius: string | undefined;
1806
+ background: string;
1807
+ color: string;
1808
+ overflow: string;
1809
+ };
1810
+ protected headerStyle(): {
1811
+ padding: string;
1812
+ fontWeight: string;
1813
+ borderBottom: string;
1814
+ };
1815
+ protected footerStyle(): {
1816
+ padding: string;
1817
+ borderTop: string;
1818
+ color: string;
1819
+ };
1820
+ protected paddingStyle(): {
1821
+ padding: string;
1822
+ };
1823
+ protected rowStyle(isLast: boolean): {
1824
+ padding: string;
1825
+ borderBottom: string | undefined;
1826
+ };
1827
+ }
1828
+
1829
+ interface ElvoraDescriptionItem {
1830
+ key: string;
1831
+ label: string;
1832
+ value: string;
1833
+ span?: number;
1834
+ }
1835
+ declare class ElvoraDescriptions {
1836
+ private readonly themeService;
1837
+ items: ElvoraDescriptionItem[];
1838
+ title?: string;
1839
+ columns: number;
1840
+ layout: 'horizontal' | 'vertical';
1841
+ bordered: boolean;
1842
+ size: 'sm' | 'md' | 'lg';
1843
+ private padding;
1844
+ protected rootStyle(): {
1845
+ color: string;
1846
+ };
1847
+ protected gridStyle(): {
1848
+ display: string;
1849
+ gridTemplateColumns: string;
1850
+ border: string | undefined;
1851
+ borderRadius: string | undefined;
1852
+ overflow: string;
1853
+ };
1854
+ protected itemStyle(item: ElvoraDescriptionItem): {
1855
+ gridColumn: string;
1856
+ display: string;
1857
+ gridTemplateColumns: string;
1858
+ borderTop: string | undefined;
1859
+ padding?: undefined;
1860
+ borderRight?: undefined;
1861
+ } | {
1862
+ gridColumn: string;
1863
+ padding: string;
1864
+ borderTop: string | undefined;
1865
+ borderRight: string | undefined;
1866
+ display?: undefined;
1867
+ gridTemplateColumns?: undefined;
1868
+ };
1869
+ protected labelStyle(): {
1870
+ padding: string;
1871
+ background: string | undefined;
1872
+ fontWeight: string;
1873
+ borderRight: string | undefined;
1874
+ };
1875
+ protected valueStyle(): {
1876
+ padding: string;
1877
+ };
1878
+ protected verticalLabelStyle(): {
1879
+ fontWeight: string;
1880
+ color: string;
1881
+ marginBottom: string;
1882
+ };
1883
+ }
1884
+
1885
+ declare class ElvoraCalendar {
1886
+ private readonly themeService;
1887
+ value: Date | null;
1888
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
1889
+ locale?: string;
1890
+ readonly valueChange: EventEmitter<Date>;
1891
+ protected readonly view: _angular_core.WritableSignal<Date>;
1892
+ protected readonly weekdays: string[];
1893
+ protected readonly matrix: _angular_core.Signal<Date[]>;
1894
+ protected readonly monthLabel: _angular_core.Signal<string>;
1895
+ protected rootStyle(): {
1896
+ background: string;
1897
+ color: string;
1898
+ borderRadius: string;
1899
+ border: string;
1900
+ padding: string;
1901
+ minWidth: string;
1902
+ display: string;
1903
+ };
1904
+ protected dayStyle(d: Date): {
1905
+ minHeight: string;
1906
+ padding: string;
1907
+ border: string;
1908
+ borderRadius: string;
1909
+ cursor: string;
1910
+ background: string;
1911
+ color: string;
1912
+ };
1913
+ protected prev(): void;
1914
+ protected next(): void;
1915
+ protected pick(d: Date): void;
1916
+ }
1917
+
1918
+ declare class ElvoraStatistic {
1919
+ private readonly themeService;
1920
+ title?: string;
1921
+ value: number | string;
1922
+ precision?: number;
1923
+ prefix?: string;
1924
+ suffix?: string;
1925
+ groupSeparator: boolean;
1926
+ tone: 'default' | 'success' | 'danger' | 'warning' | 'primary';
1927
+ protected formatted(): string;
1928
+ protected rootStyle(): {
1929
+ color: string;
1930
+ };
1931
+ protected titleStyle(): {
1932
+ color: string;
1933
+ fontSize: string;
1934
+ marginBottom: string;
1935
+ };
1936
+ protected toneColor(): string;
1937
+ protected valueRowStyle(): {
1938
+ display: string;
1939
+ alignItems: string;
1940
+ gap: string;
1941
+ color: string;
1942
+ fontSize: string;
1943
+ fontWeight: string;
1944
+ lineHeight: string;
1945
+ };
1946
+ }
1947
+
1948
+ declare class ElvoraCarousel implements OnDestroy {
1949
+ private readonly themeService;
1950
+ items: string[];
1951
+ set autoplay(value: number);
1952
+ arrows: boolean;
1953
+ dots: boolean;
1954
+ loop: boolean;
1955
+ height: number;
1956
+ readonly currentChange: EventEmitter<number>;
1957
+ protected readonly current: _angular_core.WritableSignal<number>;
1958
+ private timer;
1959
+ protected rootStyle(): {
1960
+ position: string;
1961
+ overflow: string;
1962
+ borderRadius: string;
1963
+ background: string;
1964
+ };
1965
+ protected trackStyle(): {
1966
+ display: string;
1967
+ width: string;
1968
+ height: string;
1969
+ transform: string;
1970
+ transition: string;
1971
+ };
1972
+ protected slideStyle(): {
1973
+ width: string;
1974
+ flex: string;
1975
+ display: string;
1976
+ alignItems: string;
1977
+ justifyContent: string;
1978
+ };
1979
+ protected dotStyle(i: number): {
1980
+ width: string;
1981
+ height: string;
1982
+ borderRadius: string;
1983
+ border: string;
1984
+ background: string;
1985
+ cursor: string;
1986
+ };
1987
+ protected prev(): void;
1988
+ protected next(): void;
1989
+ protected goTo(idx: number): void;
1990
+ private clearTimer;
1991
+ ngOnDestroy(): void;
1992
+ }
1993
+
1994
+ declare class ElvoraImage {
1995
+ private readonly themeService;
1996
+ src: string;
1997
+ alt: string;
1998
+ fallback?: string;
1999
+ placeholder?: string;
2000
+ preview: boolean;
2001
+ width?: number | string;
2002
+ height?: number | string;
2003
+ fit: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
2004
+ rounded: boolean;
2005
+ protected readonly loaded: _angular_core.WritableSignal<boolean>;
2006
+ protected readonly errored: _angular_core.WritableSignal<boolean>;
2007
+ protected readonly showPreview: _angular_core.WritableSignal<boolean>;
2008
+ protected actualSrc(): string;
2009
+ protected onClick(): void;
2010
+ protected wrapperStyle(): {
2011
+ position: string;
2012
+ display: string;
2013
+ width: string | undefined;
2014
+ height: string | undefined;
2015
+ borderRadius: string | undefined;
2016
+ overflow: string;
2017
+ background: string;
2018
+ };
2019
+ protected imgStyle(): {
2020
+ width: string;
2021
+ height: string;
2022
+ objectFit: "none" | "fill" | "cover" | "contain" | "scale-down";
2023
+ display: string;
2024
+ cursor: string | undefined;
2025
+ };
2026
+ protected overlayStyle(): {
2027
+ position: string;
2028
+ inset: string;
2029
+ display: string;
2030
+ alignItems: string;
2031
+ justifyContent: string;
2032
+ color: string;
2033
+ };
2034
+ protected previewStyle(): {
2035
+ position: string;
2036
+ inset: string;
2037
+ background: string;
2038
+ display: string;
2039
+ alignItems: string;
2040
+ justifyContent: string;
2041
+ zIndex: string;
2042
+ cursor: string;
2043
+ };
2044
+ }
2045
+
2046
+ type ElvoraTimelineStatus = 'default' | 'success' | 'danger' | 'warning' | 'info' | 'primary';
2047
+ interface ElvoraTimelineItem {
2048
+ key: string;
2049
+ content: string;
2050
+ label?: string;
2051
+ status?: ElvoraTimelineStatus;
2052
+ }
2053
+ declare class ElvoraTimeline {
2054
+ private readonly themeService;
2055
+ items: ElvoraTimelineItem[];
2056
+ reverse: boolean;
2057
+ protected resolved(): ElvoraTimelineItem[];
2058
+ protected dotStyle(item: ElvoraTimelineItem): {
2059
+ width: string;
2060
+ height: string;
2061
+ borderRadius: string;
2062
+ background: string;
2063
+ flex: string;
2064
+ };
2065
+ protected lineStyle(): {
2066
+ flex: string;
2067
+ width: string;
2068
+ background: string;
2069
+ marginTop: string;
2070
+ };
2071
+ protected labelStyle(): {
2072
+ color: string;
2073
+ marginBottom: string;
2074
+ };
2075
+ private colorFor;
2076
+ }
2077
+
2078
+ interface ElvoraCollapseItem {
2079
+ key: string;
2080
+ header: string;
2081
+ content: string;
2082
+ extra?: string;
2083
+ isDisabled?: boolean;
2084
+ }
2085
+ declare class ElvoraCollapse {
2086
+ private readonly themeService;
2087
+ items: ElvoraCollapseItem[];
2088
+ set activeKeys(value: string[]);
2089
+ accordion: boolean;
2090
+ bordered: boolean;
2091
+ size: 'sm' | 'md' | 'lg';
2092
+ readonly activeKeysChange: EventEmitter<string[]>;
2093
+ protected readonly active: _angular_core.WritableSignal<Set<string>>;
2094
+ protected togglePanel(key: string): void;
2095
+ private padding;
2096
+ protected rootStyle(): {
2097
+ border: string | undefined;
2098
+ borderRadius: string | undefined;
2099
+ background: string;
2100
+ color: string;
2101
+ overflow: string;
2102
+ };
2103
+ protected headerStyle(item: ElvoraCollapseItem, isLast: boolean): {
2104
+ width: string;
2105
+ display: string;
2106
+ alignItems: string;
2107
+ gap: string;
2108
+ padding: string;
2109
+ background: string;
2110
+ color: string;
2111
+ border: string;
2112
+ cursor: string;
2113
+ textAlign: string;
2114
+ fontSize: string;
2115
+ opacity: number;
2116
+ borderBottom: string | undefined;
2117
+ };
2118
+ protected panelStyle(isLast: boolean): {
2119
+ padding: string;
2120
+ borderBottom: string | undefined;
2121
+ background: string;
2122
+ };
2123
+ protected extraStyle(): {
2124
+ color: string;
2125
+ };
2126
+ }
2127
+
2128
+ type ElvoraAccordionItem = ElvoraCollapseItem;
2129
+ declare class ElvoraAccordion {
2130
+ items: ElvoraAccordionItem[];
2131
+ activeKeys: string[];
2132
+ bordered: boolean;
2133
+ size: 'sm' | 'md' | 'lg';
2134
+ readonly activeKeysChange: EventEmitter<string[]>;
2135
+ }
2136
+
2137
+ interface ElvoraTourStep {
2138
+ /** CSS selector for the element to spotlight. */
2139
+ target?: string;
2140
+ title: string;
2141
+ description?: string;
2142
+ }
2143
+ declare class ElvoraTour {
2144
+ private readonly themeService;
2145
+ open: boolean;
2146
+ steps: ElvoraTourStep[];
2147
+ mask: boolean;
2148
+ finishLabel: string;
2149
+ readonly openChange: EventEmitter<boolean>;
2150
+ readonly currentChange: EventEmitter<number>;
2151
+ protected readonly current: _angular_core.WritableSignal<number>;
2152
+ protected currentStep(): ElvoraTourStep | undefined;
2153
+ protected close(): void;
2154
+ protected next(): void;
2155
+ protected prev(): void;
2156
+ protected maskStyle(): {
2157
+ position: string;
2158
+ inset: string;
2159
+ background: string;
2160
+ zIndex: string;
2161
+ };
2162
+ protected popoverStyle(): {
2163
+ position: string;
2164
+ top: string;
2165
+ left: string;
2166
+ transform: string;
2167
+ minWidth: string;
2168
+ maxWidth: string;
2169
+ zIndex: string;
2170
+ background: string;
2171
+ color: string;
2172
+ border: string;
2173
+ borderRadius: string;
2174
+ padding: string;
2175
+ boxShadow: string;
2176
+ };
2177
+ protected descStyle(): {
2178
+ color: string;
2179
+ marginBottom: string;
2180
+ };
2181
+ protected counterStyle(): {
2182
+ color: string;
2183
+ fontSize: string;
2184
+ };
2185
+ protected prevBtnStyle(): {
2186
+ padding: string;
2187
+ borderRadius: string;
2188
+ border: string;
2189
+ background: string;
2190
+ color: string;
2191
+ cursor: string;
2192
+ };
2193
+ protected nextBtnStyle(): {
2194
+ padding: string;
2195
+ borderRadius: string;
2196
+ border: string;
2197
+ background: string;
2198
+ color: string;
2199
+ cursor: string;
2200
+ };
2201
+ }
2202
+
2203
+ type ElvoraFloatButtonTone = 'primary' | 'neutral' | 'danger' | 'success';
2204
+ declare class ElvoraFloatButton {
2205
+ private readonly themeService;
2206
+ label?: string;
2207
+ size: number;
2208
+ right: number;
2209
+ bottom: number;
2210
+ tone: ElvoraFloatButtonTone;
2211
+ extended: boolean;
2212
+ isDisabled: boolean;
2213
+ ariaLabel?: string;
2214
+ readonly pressed: EventEmitter<void>;
2215
+ protected buttonStyle(): Record<string, string>;
2216
+ }
2217
+
2218
+ declare class ElvoraWatermark {
2219
+ private readonly _content;
2220
+ set content(value: string | string[]);
2221
+ font: string;
2222
+ fontSize: number;
2223
+ color: string;
2224
+ rotate: number;
2225
+ gapX: number;
2226
+ gapY: number;
2227
+ protected readonly dataUri: _angular_core.Signal<string>;
2228
+ protected rootStyle(): Record<string, string>;
2229
+ private buildDataUri;
2230
+ }
2231
+
2232
+ declare class ElvoraQrCode {
2233
+ private readonly _value;
2234
+ private readonly _level;
2235
+ set value(v: string);
2236
+ set level(l: ErrorCorrection);
2237
+ size: number;
2238
+ foreground: string;
2239
+ background: string;
2240
+ ariaLabel?: string;
2241
+ protected readonly matrixData: _angular_core.Signal<_elvora_core.QRMatrix>;
2242
+ protected readonly matrix: _angular_core.Signal<boolean[][]>;
2243
+ protected readonly matrixSize: _angular_core.Signal<number>;
2244
+ }
2245
+
2246
+ declare class ElvoraSplitter {
2247
+ private readonly themeService;
2248
+ protected readonly Math: Math;
2249
+ container: ElementRef<HTMLDivElement>;
2250
+ direction: 'horizontal' | 'vertical';
2251
+ set splitRatio(value: number);
2252
+ minRatio: number;
2253
+ maxRatio: number;
2254
+ handleSize: number;
2255
+ readonly splitRatioChange: EventEmitter<number>;
2256
+ protected readonly split: _angular_core.WritableSignal<number>;
2257
+ private dragging;
2258
+ private startCoord;
2259
+ private startSplit;
2260
+ protected rootStyle(): Record<string, string>;
2261
+ protected firstPaneStyle(): Record<string, string>;
2262
+ protected secondPaneStyle(): Record<string, string>;
2263
+ protected handleStyle(): Record<string, string>;
2264
+ protected onPointerDown(event: PointerEvent): void;
2265
+ private onPointerMove;
2266
+ protected onKeyDown(event: KeyboardEvent): void;
2267
+ }
2268
+
2269
+ declare class ElvoraAffix implements AfterViewInit, OnDestroy {
2270
+ placeholder: ElementRef<HTMLDivElement>;
2271
+ wrapper: ElementRef<HTMLDivElement>;
2272
+ offsetTop?: number;
2273
+ offsetBottom?: number;
2274
+ readonly affixedChange: EventEmitter<boolean>;
2275
+ protected readonly affixed: _angular_core.WritableSignal<boolean>;
2276
+ private size;
2277
+ private boundUpdate;
2278
+ protected placeholderStyle(): Record<string, string | undefined>;
2279
+ protected wrapperStyle(): Record<string, string | undefined>;
2280
+ ngAfterViewInit(): void;
2281
+ ngOnDestroy(): void;
2282
+ private update;
2283
+ }
2284
+
2285
+ interface ElvoraSpeedDialAction {
2286
+ key: string;
2287
+ label: string;
2288
+ isDisabled?: boolean;
2289
+ }
2290
+ declare class ElvoraSpeedDial {
2291
+ private readonly themeService;
2292
+ actions: ElvoraSpeedDialAction[];
2293
+ right: number;
2294
+ bottom: number;
2295
+ direction: 'up' | 'down' | 'left' | 'right';
2296
+ ariaLabel?: string;
2297
+ readonly openChange: EventEmitter<boolean>;
2298
+ readonly actionPress: EventEmitter<ElvoraSpeedDialAction>;
2299
+ protected readonly open: _angular_core.WritableSignal<boolean>;
2300
+ protected toggle(): void;
2301
+ protected onAction(action: ElvoraSpeedDialAction): void;
2302
+ protected triggerStyle(): Record<string, string>;
2303
+ protected actionStyle(idx: number): {
2304
+ right: string;
2305
+ bottom: string;
2306
+ } | {
2307
+ right: string;
2308
+ top: string;
2309
+ } | {
2310
+ bottom: string;
2311
+ left: string;
2312
+ };
2313
+ }
2314
+
2315
+ declare class ElvoraBackdrop {
2316
+ private readonly themeService;
2317
+ open: boolean;
2318
+ tint?: string;
2319
+ invisible: boolean;
2320
+ readonly closed: EventEmitter<void>;
2321
+ protected rootStyle(): Record<string, string>;
2322
+ }
2323
+
2324
+ interface ElvoraImageListItem {
2325
+ key: string;
2326
+ src?: string;
2327
+ alt?: string;
2328
+ caption?: string;
2329
+ cols?: number;
2330
+ rows?: number;
2331
+ }
2332
+ declare class ElvoraImageList {
2333
+ private readonly themeService;
2334
+ items: ElvoraImageListItem[];
2335
+ cols: number;
2336
+ gap: number;
2337
+ rowHeight: number;
2338
+ protected rootStyle(): Record<string, string>;
2339
+ protected cellStyle(item: ElvoraImageListItem): Record<string, string | undefined>;
2340
+ protected imageStyle(): Record<string, string>;
2341
+ protected captionStyle(): Record<string, string>;
2342
+ }
2343
+
2344
+ declare class ElvoraSimplePagination {
2345
+ private readonly themeService;
2346
+ private readonly _total;
2347
+ private readonly _pageSize;
2348
+ private readonly _current;
2349
+ set total(v: number);
2350
+ set pageSize(v: number);
2351
+ get pageSize(): number;
2352
+ set current(v: number);
2353
+ showJumper: boolean;
2354
+ showSizeChanger: boolean;
2355
+ pageSizeOptions: number[];
2356
+ readonly currentChange: EventEmitter<number>;
2357
+ readonly pageSizeChange: EventEmitter<number>;
2358
+ protected totalPages(): number;
2359
+ protected currentPage(): number;
2360
+ protected goTo(page: number): void;
2361
+ protected onSizeChange(event: Event): void;
2362
+ protected onJump(event: Event): void;
2363
+ protected rootStyle(): Record<string, string>;
2364
+ protected btnStyle(disabled: boolean): Record<string, string>;
2365
+ protected labelStyle(): Record<string, string>;
2366
+ protected selectStyle(): Record<string, string>;
2367
+ protected jumperStyle(): {
2368
+ fontSize: string;
2369
+ color: string;
2370
+ display: string;
2371
+ alignItems: string;
2372
+ gap: string;
2373
+ };
2374
+ protected inputStyle(): Record<string, string>;
2375
+ }
2376
+ declare class ElvoraMiniPagination {
2377
+ private readonly themeService;
2378
+ private readonly _total;
2379
+ private readonly _pageSize;
2380
+ private readonly _current;
2381
+ set total(v: number);
2382
+ set pageSize(v: number);
2383
+ set current(v: number);
2384
+ readonly currentChange: EventEmitter<number>;
2385
+ protected totalPages(): number;
2386
+ protected currentPage(): number;
2387
+ protected goTo(page: number): void;
2388
+ protected rootStyle(): Record<string, string>;
2389
+ protected btnStyle(disabled: boolean): Record<string, string>;
2390
+ }
2391
+
2392
+ interface ElvoraStepperStep {
2393
+ key: string;
2394
+ label: string;
2395
+ description?: string;
2396
+ optional?: boolean;
2397
+ }
2398
+ declare class ElvoraStepper {
2399
+ private readonly themeService;
2400
+ private readonly _active;
2401
+ steps: ElvoraStepperStep[];
2402
+ set active(value: number);
2403
+ orientation: 'horizontal' | 'vertical';
2404
+ showNavigation: boolean;
2405
+ nextLabel: string;
2406
+ prevLabel: string;
2407
+ finishLabel: string;
2408
+ readonly activeChange: EventEmitter<number>;
2409
+ readonly finished: EventEmitter<void>;
2410
+ protected activeStep(): number;
2411
+ protected goTo(idx: number): void;
2412
+ protected next(): void;
2413
+ protected prev(): void;
2414
+ protected trackStyle(): Record<string, string>;
2415
+ protected stepStyle(): Record<string, string | undefined>;
2416
+ protected circleStyle(idx: number): Record<string, string>;
2417
+ protected labelStyle(idx: number): Record<string, string>;
2418
+ protected descStyle(): Record<string, string>;
2419
+ protected connectorStyle(idx: number): Record<string, string>;
2420
+ protected navStyle(): Record<string, string>;
2421
+ protected navBtnStyle(variant: 'primary' | 'outline'): Record<string, string>;
2422
+ }
2423
+
2424
+ declare class ElvoraToggleButton {
2425
+ private readonly themeService;
2426
+ value?: string;
2427
+ size: ElvoraSize;
2428
+ isDisabled: boolean;
2429
+ set selectedValue(value: boolean);
2430
+ readonly selectedChange: EventEmitter<boolean>;
2431
+ protected readonly selected: _angular_core.WritableSignal<boolean>;
2432
+ protected onToggle(): void;
2433
+ protected buttonStyle(): Record<string, string>;
2434
+ private sizePadding;
2435
+ }
2436
+
2437
+ declare class ElvoraButtonGroup {
2438
+ orientation: 'horizontal' | 'vertical';
2439
+ protected rootStyle(): Record<string, string>;
2440
+ }
2441
+
2442
+ declare class ElvoraChipInput {
2443
+ private readonly themeService;
2444
+ inputEl: ElementRef<HTMLInputElement>;
2445
+ set value(v: string[]);
2446
+ placeholder?: string;
2447
+ isDisabled: boolean;
2448
+ unique: boolean;
2449
+ maxChips?: number;
2450
+ ariaLabel?: string;
2451
+ readonly valueChange: EventEmitter<string[]>;
2452
+ protected readonly chips: _angular_core.WritableSignal<string[]>;
2453
+ protected readonly draft: _angular_core.WritableSignal<string>;
2454
+ protected focusInput(): void;
2455
+ protected onInput(event: Event): void;
2456
+ protected onKeyDown(event: KeyboardEvent): void;
2457
+ protected commit(): void;
2458
+ protected addChip(raw: string): void;
2459
+ protected remove(idx: number): void;
2460
+ protected rootStyle(): Record<string, string>;
2461
+ protected chipStyle(): Record<string, string>;
2462
+ protected closeBtnStyle(): Record<string, string>;
2463
+ protected inputStyle(): Record<string, string>;
2464
+ }
2465
+
2466
+ interface ElvoraProTableColumn<Row = Record<string, unknown>> extends ElvoraTableColumn<Row> {
2467
+ searchable?: boolean;
2468
+ }
2469
+ declare class ElvoraProTable<Row extends Record<string, unknown> = Record<string, unknown>> {
2470
+ private readonly themeService;
2471
+ title: string;
2472
+ columns: ElvoraProTableColumn<Row>[];
2473
+ set dataSource(value: Row[]);
2474
+ get dataSource(): Row[];
2475
+ search: boolean;
2476
+ searchPlaceholder: string;
2477
+ empty: string;
2478
+ readonly rowClick: EventEmitter<{
2479
+ row: Row;
2480
+ index: number;
2481
+ }>;
2482
+ protected readonly query: _angular_core.WritableSignal<string>;
2483
+ private readonly _data;
2484
+ protected readonly filtered: _angular_core.Signal<Row[]>;
2485
+ protected fgColor(): string;
2486
+ protected mutedColor(): string;
2487
+ }
2488
+
2489
+ type ElvoraProFormFieldType = 'text' | 'password' | 'email' | 'number' | 'textarea' | 'switch' | 'checkbox' | 'select';
2490
+ interface ElvoraProFormField {
2491
+ name: string;
2492
+ label?: string;
2493
+ type: ElvoraProFormFieldType;
2494
+ placeholder?: string;
2495
+ hint?: string;
2496
+ required?: boolean;
2497
+ disabled?: boolean;
2498
+ defaultValue?: unknown;
2499
+ options?: ElvoraSelectOption[];
2500
+ validate?: (value: unknown, values: Record<string, unknown>) => string | undefined;
2501
+ }
2502
+ declare class ElvoraProForm {
2503
+ private readonly themeService;
2504
+ fields: ElvoraProFormField[];
2505
+ set initialValues(value: Record<string, unknown> | null | undefined);
2506
+ submitLabel: string;
2507
+ resetLabel?: string;
2508
+ isSubmitting: boolean;
2509
+ readonly formSubmit: EventEmitter<Record<string, unknown>>;
2510
+ readonly valuesChange: EventEmitter<Record<string, unknown>>;
2511
+ private readonly _initial;
2512
+ private readonly _values;
2513
+ private readonly _errors;
2514
+ protected strValue(name: string): string;
2515
+ protected numberValue(name: string): number;
2516
+ protected boolValue(name: string): boolean;
2517
+ protected error(name: string): string | undefined;
2518
+ protected mutedColor(): string;
2519
+ protected dangerColor(): string;
2520
+ setValue(name: string, value: unknown): void;
2521
+ reset(): void;
2522
+ handleSubmit(): void;
2523
+ }
2524
+
2525
+ interface ElvoraProLayoutMenuItem {
2526
+ key: string;
2527
+ label: string;
2528
+ icon?: IconName;
2529
+ children?: ElvoraProLayoutMenuItem[];
2530
+ }
2531
+ interface ElvoraProLayoutUser {
2532
+ name: string;
2533
+ avatar?: string;
2534
+ caption?: string;
2535
+ }
2536
+ declare class ElvoraProLayout {
2537
+ private readonly themeService;
2538
+ brand?: string;
2539
+ menu: ElvoraProLayoutMenuItem[];
2540
+ user?: ElvoraProLayoutUser;
2541
+ sidebarWidth: number;
2542
+ headerVisible: boolean;
2543
+ set selectedKey(value: string | null | undefined);
2544
+ readonly selectionChange: EventEmitter<string>;
2545
+ protected readonly active: _angular_core.WritableSignal<string | null>;
2546
+ onSelect(key: string): void;
2547
+ protected bg(): string;
2548
+ protected surface(): string;
2549
+ protected border(): string;
2550
+ protected fg(): string;
2551
+ protected muted(): string;
2552
+ protected primarySubtle(): string;
2553
+ protected primaryFg(): string;
2554
+ }
2555
+
2556
+ type ElvoraDataGridSortOrder = 'asc' | 'desc' | null;
2557
+ interface ElvoraDataGridColumn<Row = Record<string, unknown>> {
2558
+ key: string;
2559
+ title: string;
2560
+ dataIndex?: keyof Row | string;
2561
+ width?: number;
2562
+ sortable?: boolean;
2563
+ sorter?: (a: Row, b: Row) => number;
2564
+ align?: 'left' | 'center' | 'right';
2565
+ }
2566
+ declare class ElvoraDataGrid<Row extends Record<string, unknown> = Record<string, unknown>> {
2567
+ private readonly themeService;
2568
+ columns: ElvoraDataGridColumn<Row>[];
2569
+ set dataSource(value: Row[]);
2570
+ get dataSource(): Row[];
2571
+ rowHeight: number;
2572
+ height: number;
2573
+ overscan: number;
2574
+ empty: string;
2575
+ readonly rowClick: EventEmitter<{
2576
+ row: Row;
2577
+ index: number;
2578
+ }>;
2579
+ private readonly _data;
2580
+ protected readonly sortKey: _angular_core.WritableSignal<string | null>;
2581
+ protected readonly sortOrder: _angular_core.WritableSignal<ElvoraDataGridSortOrder>;
2582
+ protected readonly scrollTop: _angular_core.WritableSignal<number>;
2583
+ protected readonly sorted: _angular_core.Signal<Row[]>;
2584
+ protected readonly totalHeight: _angular_core.Signal<number>;
2585
+ protected readonly visible: _angular_core.Signal<{
2586
+ row: Row;
2587
+ index: number;
2588
+ top: number;
2589
+ key: string;
2590
+ }[]>;
2591
+ trackEntry: (_: number, entry: {
2592
+ key: string;
2593
+ }) => string;
2594
+ protected onScroll(target: HTMLElement): void;
2595
+ toggleSort(key: string): void;
2596
+ protected cell(row: Row, col: ElvoraDataGridColumn<Row>): unknown;
2597
+ protected border(): string;
2598
+ protected surface(): string;
2599
+ protected headerBg(): string;
2600
+ protected mutedColor(): string;
2601
+ }
2602
+
2603
+ /**
2604
+ * Provide a theme to an Angular app:
2605
+ *
2606
+ * ```ts
2607
+ * import { ApplicationConfig } from '@angular/core';
2608
+ * import { provideElvoraTheme } from '@elvora/angular';
2609
+ * import { darkTheme } from '@elvora/themes';
2610
+ *
2611
+ * export const appConfig: ApplicationConfig = {
2612
+ * providers: [provideElvoraTheme(darkTheme)],
2613
+ * };
2614
+ * ```
2615
+ */
2616
+ declare const ELVORA_THEME: InjectionToken<ElvoraTheme>;
2617
+ declare const ELVORA_DIRECTION: InjectionToken<Direction$1>;
2618
+ declare function provideElvoraTheme(theme?: ElvoraTheme, direction?: Direction$1): ({
2619
+ provide: InjectionToken<ElvoraTheme>;
2620
+ useValue: ElvoraTheme;
2621
+ } | {
2622
+ provide: InjectionToken<Direction$1>;
2623
+ useValue: Direction$1;
2624
+ })[];
2625
+ declare class ElvoraThemeService {
2626
+ private readonly providedTheme;
2627
+ private readonly providedDirection;
2628
+ private readonly themeSignal;
2629
+ private readonly directionSignal;
2630
+ readonly theme: Signal<ElvoraTheme>;
2631
+ readonly direction: Signal<Direction$1>;
2632
+ setTheme(theme: ElvoraTheme): void;
2633
+ setDirection(direction: Direction$1): void;
2634
+ }
2635
+
2636
+ export { ELVORA_DIRECTION, ELVORA_THEME, ElvoraAccordion, type ElvoraAccordionItem, ElvoraAffix, ElvoraAlert, ElvoraAnchor, type ElvoraAnchorLink, ElvoraAutoComplete, type ElvoraAutoCompleteOption, ElvoraAvatar, ElvoraBackTop, ElvoraBackdrop, ElvoraBadge, ElvoraBox, ElvoraBreadcrumb, type ElvoraBreadcrumbItem, ElvoraButton, ElvoraButtonGroup, ElvoraCalendar, ElvoraCard, ElvoraCardBody, ElvoraCardFooter, ElvoraCardHeader, ElvoraCarousel, ElvoraCascader, type ElvoraCascaderOption, ElvoraCheckbox, ElvoraChipInput, ElvoraCollapse, type ElvoraCollapseItem, ElvoraColorPicker, ElvoraContainer, ElvoraDataGrid, type ElvoraDataGridColumn, type ElvoraDataGridSortOrder, ElvoraDatePicker, type ElvoraDateRange, ElvoraDateRangePicker, type ElvoraDescriptionItem, ElvoraDescriptions, ElvoraDivider, ElvoraDrawer, ElvoraEmpty, ElvoraFloatButton, type ElvoraFloatButtonTone, ElvoraForm, ElvoraFormField, ElvoraFormState, ElvoraGrid, ElvoraGridItem, ElvoraHStack, ElvoraIcon, ElvoraIconButton, ElvoraImage, ElvoraImageList, type ElvoraImageListItem, ElvoraInput, ElvoraLabel, ElvoraList, type ElvoraMentionItem, ElvoraMentions, ElvoraMenu, type ElvoraMenuItem, ElvoraMiniPagination, ElvoraModal, ElvoraNumberInput, ElvoraPagination, ElvoraPopover, ElvoraProForm, type ElvoraProFormField, type ElvoraProFormFieldType, ElvoraProLayout, type ElvoraProLayoutMenuItem, type ElvoraProLayoutUser, ElvoraProTable, type ElvoraProTableColumn, ElvoraProgress, ElvoraQrCode, ElvoraRadio, ElvoraRadioGroup, ElvoraRate, ElvoraResult, type ElvoraResultStatus, ElvoraSegmented, type ElvoraSegmentedOption, ElvoraSelect, type ElvoraSelectOption, ElvoraSimplePagination, ElvoraSkeleton, ElvoraSlider, type ElvoraSortOrder, ElvoraSpeedDial, type ElvoraSpeedDialAction, ElvoraSpinner, ElvoraSplitter, ElvoraStack, ElvoraStatistic, type ElvoraStep, ElvoraStepper, type ElvoraStepperStep, ElvoraSteps, ElvoraSwitch, ElvoraTabTemplate, ElvoraTable, type ElvoraTableColumn, ElvoraTabs, ElvoraTag, ElvoraTextarea, ElvoraThemeService, ElvoraTimePicker, type ElvoraTimeValue, ElvoraTimeline, type ElvoraTimelineItem, type ElvoraTimelineStatus, ElvoraToastHost, type ElvoraToastOptions, ElvoraToastService, ElvoraToggleButton, ElvoraTooltip, ElvoraTour, type ElvoraTourStep, ElvoraTransfer, type ElvoraTransferItem, ElvoraTree, type ElvoraTreeNode as ElvoraTreeDataNode, type ElvoraTreeNode$1 as ElvoraTreeNode, ElvoraTreeSelect, ElvoraUpload, type ElvoraUploadFile, ElvoraVStack, ElvoraWatermark, provideElvoraTheme };