@life-cockpit/angular-ui-kit 1.0.3 → 1.1.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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { EventEmitter, ElementRef, OnInit, OnDestroy, AfterViewInit, QueryList, Signal, TemplateRef, AfterContentInit } from '@angular/core';
|
|
2
|
+
import { EventEmitter, ElementRef, OnInit, OnDestroy, AfterViewInit, QueryList, Signal, TemplateRef, AfterContentInit, AfterViewChecked } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
-
import { SafeHtml } from '@angular/platform-browser';
|
|
4
|
+
import { SafeHtml, DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Do not edit directly, this file was auto-generated.
|
|
@@ -212,6 +212,13 @@ interface NavigationItem {
|
|
|
212
212
|
/**
|
|
213
213
|
* Accordion component for collapsible content sections.
|
|
214
214
|
*
|
|
215
|
+
* Features:
|
|
216
|
+
* - Expandable/collapsible content panels
|
|
217
|
+
* - Two-way binding for expanded state
|
|
218
|
+
* - Animated expand/collapse transitions
|
|
219
|
+
* - Content projection for custom body content
|
|
220
|
+
* - Accessible with keyboard support
|
|
221
|
+
*
|
|
215
222
|
* @example
|
|
216
223
|
* ```html
|
|
217
224
|
* <lc-accordion title="Section Title" [(expanded)]="isOpen">
|
|
@@ -268,7 +275,14 @@ declare class ButtonComponent {
|
|
|
268
275
|
}
|
|
269
276
|
|
|
270
277
|
/**
|
|
271
|
-
* Card component for content grouping and hierarchy.
|
|
278
|
+
* Card component for content grouping and visual hierarchy.
|
|
279
|
+
*
|
|
280
|
+
* Features:
|
|
281
|
+
* - Variant styles (elevated, outlined, filled)
|
|
282
|
+
* - Configurable padding (none, sm, md, lg)
|
|
283
|
+
* - Border radius options (none, sm, md, lg, xl)
|
|
284
|
+
* - Optional title display
|
|
285
|
+
* - Content projection for flexible body content
|
|
272
286
|
*
|
|
273
287
|
* @example
|
|
274
288
|
* ```html
|
|
@@ -384,7 +398,7 @@ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
|
384
398
|
* - Signal-based reactive API
|
|
385
399
|
* - Support for outline and solid variants
|
|
386
400
|
* - Multiple size options (xs, sm, md, lg, xl)
|
|
387
|
-
* - Custom color support (CSS colors, variables
|
|
401
|
+
* - Custom color support (CSS colors, variables)
|
|
388
402
|
* - Accessibility attributes (ARIA labels, decorative icons)
|
|
389
403
|
* - Dynamic SVG loading from Heroicons
|
|
390
404
|
*
|
|
@@ -399,8 +413,8 @@ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
|
399
413
|
* <!-- With custom color -->
|
|
400
414
|
* <lc-icon name="arrow-right" color="#FF5733" />
|
|
401
415
|
*
|
|
402
|
-
* <!-- With
|
|
403
|
-
* <lc-icon name="star" color="
|
|
416
|
+
* <!-- With CSS variable color -->
|
|
417
|
+
* <lc-icon name="star" color="var(--color-primary-500)" />
|
|
404
418
|
*
|
|
405
419
|
* <!-- With accessibility label -->
|
|
406
420
|
* <lc-icon name="user" ariaLabel="User profile" />
|
|
@@ -437,7 +451,6 @@ declare class IconComponent {
|
|
|
437
451
|
* Can be:
|
|
438
452
|
* - CSS color: "#FF5733", "rgb(255, 87, 51)"
|
|
439
453
|
* - CSS variable: "var(--color-primary-500)"
|
|
440
|
-
* - Tailwind class: "text-primary-500"
|
|
441
454
|
* - "currentColor" (default - inherits from parent)
|
|
442
455
|
* @default "currentColor"
|
|
443
456
|
*/
|
|
@@ -499,11 +512,15 @@ declare class IconComponent {
|
|
|
499
512
|
}
|
|
500
513
|
|
|
501
514
|
/**
|
|
502
|
-
* Logo
|
|
515
|
+
* Logo component for displaying the Life-Cockpit brand identity.
|
|
503
516
|
*
|
|
504
|
-
*
|
|
517
|
+
* Features:
|
|
518
|
+
* - Full logo and emblem-only variants
|
|
519
|
+
* - Multiple size options (sm, md, lg)
|
|
520
|
+
* - SVG-based for crisp rendering at any resolution
|
|
521
|
+
* - Dark mode compatible
|
|
505
522
|
*
|
|
506
|
-
*
|
|
523
|
+
* @example
|
|
507
524
|
* ```html
|
|
508
525
|
* <lc-logo variant="full" size="md"></lc-logo>
|
|
509
526
|
* <lc-logo variant="emblem" size="sm"></lc-logo>
|
|
@@ -629,20 +646,21 @@ declare class MenuComponent {
|
|
|
629
646
|
}
|
|
630
647
|
|
|
631
648
|
/**
|
|
632
|
-
*
|
|
649
|
+
* Input component for single-line text form data entry.
|
|
633
650
|
*
|
|
634
|
-
*
|
|
635
|
-
*
|
|
651
|
+
* Features:
|
|
652
|
+
* - Type variants (text, email, password, number, tel, url)
|
|
653
|
+
* - Size presets (xs, sm, md, lg)
|
|
654
|
+
* - Leading and trailing icon support
|
|
655
|
+
* - Character count display with maxLength
|
|
656
|
+
* - Validation error message display
|
|
657
|
+
* - Helper text support
|
|
658
|
+
* - Disabled and readonly states
|
|
659
|
+
* - ControlValueAccessor integration for reactive forms
|
|
636
660
|
*
|
|
637
661
|
* @example
|
|
638
662
|
* ```html
|
|
639
|
-
* <lc-input
|
|
640
|
-
* label="Email"
|
|
641
|
-
* type="email"
|
|
642
|
-
* placeholder="Enter your email"
|
|
643
|
-
* [(ngModel)]="email"
|
|
644
|
-
* [error]="emailError"
|
|
645
|
-
* ></lc-input>
|
|
663
|
+
* <lc-input label="Email" type="email" placeholder="Enter email" [(ngModel)]="email" />
|
|
646
664
|
* ```
|
|
647
665
|
*/
|
|
648
666
|
declare class InputComponent implements ControlValueAccessor {
|
|
@@ -822,25 +840,22 @@ declare class RadioComponent implements ControlValueAccessor, OnInit, OnDestroy
|
|
|
822
840
|
}
|
|
823
841
|
|
|
824
842
|
/**
|
|
825
|
-
* Typography
|
|
843
|
+
* Typography component for consistent text styling.
|
|
826
844
|
*
|
|
827
|
-
*
|
|
828
|
-
*
|
|
829
|
-
*
|
|
845
|
+
* Features:
|
|
846
|
+
* - Semantic variants (h1–h6, body1, body2, caption, overline)
|
|
847
|
+
* - Automatic HTML element mapping per variant
|
|
848
|
+
* - Text alignment options (left, center, right, justify)
|
|
849
|
+
* - Color variants (primary, secondary, success, warning, error, info)
|
|
850
|
+
* - Font weight overrides (regular, medium, semibold, bold)
|
|
851
|
+
* - Text transform (uppercase, lowercase, capitalize)
|
|
852
|
+
* - Line clamping for text truncation
|
|
853
|
+
* - Gutter bottom margin option
|
|
830
854
|
*
|
|
831
855
|
* @example
|
|
832
856
|
* ```html
|
|
833
|
-
* <lc-typography variant="h1"
|
|
834
|
-
*
|
|
835
|
-
* </lc-typography>
|
|
836
|
-
*
|
|
837
|
-
* <lc-typography variant="body1" gutterBottom>
|
|
838
|
-
* Body text with bottom margin
|
|
839
|
-
* </lc-typography>
|
|
840
|
-
*
|
|
841
|
-
* <lc-typography variant="caption" color="secondary" lineClamp="2">
|
|
842
|
-
* This is a caption that will be truncated after 2 lines...
|
|
843
|
-
* </lc-typography>
|
|
857
|
+
* <lc-typography variant="h1" color="primary">Heading</lc-typography>
|
|
858
|
+
* <lc-typography variant="body1" [lineClamp]="2">Truncated text...</lc-typography>
|
|
844
859
|
* ```
|
|
845
860
|
*/
|
|
846
861
|
declare class TypographyComponent {
|
|
@@ -906,16 +921,21 @@ declare class TypographyComponent {
|
|
|
906
921
|
|
|
907
922
|
type DateValue = Date | string | null;
|
|
908
923
|
/**
|
|
909
|
-
*
|
|
924
|
+
* Datepicker component for date selection with calendar overlay.
|
|
925
|
+
*
|
|
926
|
+
* Features:
|
|
927
|
+
* - Calendar popup with month and year navigation
|
|
928
|
+
* - Min/max date constraints
|
|
929
|
+
* - Disabled specific dates and weekends
|
|
930
|
+
* - Configurable date format string
|
|
931
|
+
* - Variant styles (outline, filled)
|
|
932
|
+
* - Size presets (xs, sm, md, lg)
|
|
933
|
+
* - Disabled and readonly states
|
|
934
|
+
* - ControlValueAccessor integration for reactive forms
|
|
910
935
|
*
|
|
911
936
|
* @example
|
|
912
937
|
* ```html
|
|
913
|
-
* <lc-datepicker
|
|
914
|
-
* variant="outline"
|
|
915
|
-
* size="md"
|
|
916
|
-
* placeholder="Select a date"
|
|
917
|
-
* [(ngModel)]="selectedDate"
|
|
918
|
-
* ></lc-datepicker>
|
|
938
|
+
* <lc-datepicker placeholder="Select date" [(ngModel)]="selectedDate" />
|
|
919
939
|
* ```
|
|
920
940
|
*/
|
|
921
941
|
declare class DatepickerComponent implements ControlValueAccessor {
|
|
@@ -1101,17 +1121,22 @@ interface SelectOptionGroup {
|
|
|
1101
1121
|
}
|
|
1102
1122
|
type SelectValue = string | number | string[] | number[] | null;
|
|
1103
1123
|
/**
|
|
1104
|
-
* Select component for dropdown selection
|
|
1124
|
+
* Select component for dropdown option selection.
|
|
1125
|
+
*
|
|
1126
|
+
* Features:
|
|
1127
|
+
* - Single and multiple selection modes
|
|
1128
|
+
* - Searchable/filterable option list
|
|
1129
|
+
* - Option groups with headers
|
|
1130
|
+
* - Loading state indicator
|
|
1131
|
+
* - Variant styles (outline, filled)
|
|
1132
|
+
* - Size presets (xs, sm, md, lg)
|
|
1133
|
+
* - Keyboard navigation support
|
|
1134
|
+
* - CDK overlay positioning
|
|
1135
|
+
* - ControlValueAccessor integration for reactive forms
|
|
1105
1136
|
*
|
|
1106
1137
|
* @example
|
|
1107
1138
|
* ```html
|
|
1108
|
-
* <lc-select
|
|
1109
|
-
* [options]="options"
|
|
1110
|
-
* variant="outline"
|
|
1111
|
-
* size="md"
|
|
1112
|
-
* placeholder="Select an option"
|
|
1113
|
-
* [(ngModel)]="selectedValue"
|
|
1114
|
-
* ></lc-select>
|
|
1139
|
+
* <lc-select [options]="options" placeholder="Choose" [(ngModel)]="selected" />
|
|
1115
1140
|
* ```
|
|
1116
1141
|
*/
|
|
1117
1142
|
declare class SelectComponent implements ControlValueAccessor {
|
|
@@ -1243,16 +1268,20 @@ declare class SelectComponent implements ControlValueAccessor {
|
|
|
1243
1268
|
}
|
|
1244
1269
|
|
|
1245
1270
|
/**
|
|
1246
|
-
* Switch component for toggle functionality.
|
|
1271
|
+
* Switch component for boolean toggle functionality.
|
|
1272
|
+
*
|
|
1273
|
+
* Features:
|
|
1274
|
+
* - Color variants (primary, secondary, success, warning, danger)
|
|
1275
|
+
* - Size options (sm, md, lg)
|
|
1276
|
+
* - Loading state with spinner
|
|
1277
|
+
* - Configurable label positioning (left/right)
|
|
1278
|
+
* - Keyboard toggle support
|
|
1279
|
+
* - Disabled and required states
|
|
1280
|
+
* - ControlValueAccessor integration for reactive forms
|
|
1247
1281
|
*
|
|
1248
1282
|
* @example
|
|
1249
1283
|
* ```html
|
|
1250
|
-
* <lc-switch
|
|
1251
|
-
* variant="primary"
|
|
1252
|
-
* size="md"
|
|
1253
|
-
* label="Enable notifications"
|
|
1254
|
-
* [(ngModel)]="isEnabled"
|
|
1255
|
-
* ></lc-switch>
|
|
1284
|
+
* <lc-switch label="Enable notifications" [(ngModel)]="isEnabled" />
|
|
1256
1285
|
* ```
|
|
1257
1286
|
*/
|
|
1258
1287
|
declare class SwitchComponent implements ControlValueAccessor {
|
|
@@ -1326,14 +1355,18 @@ declare class SwitchComponent implements ControlValueAccessor {
|
|
|
1326
1355
|
/**
|
|
1327
1356
|
* Textarea component for multi-line text input.
|
|
1328
1357
|
*
|
|
1358
|
+
* Features:
|
|
1359
|
+
* - Variant styles (outline, filled)
|
|
1360
|
+
* - Size presets (xs, sm, md, lg)
|
|
1361
|
+
* - Auto-resize with configurable min/max rows
|
|
1362
|
+
* - Character count display with maxLength
|
|
1363
|
+
* - Validation error message and helper text
|
|
1364
|
+
* - Disabled and readonly states
|
|
1365
|
+
* - ControlValueAccessor integration for reactive forms
|
|
1366
|
+
*
|
|
1329
1367
|
* @example
|
|
1330
1368
|
* ```html
|
|
1331
|
-
* <lc-textarea
|
|
1332
|
-
* variant="outline"
|
|
1333
|
-
* size="md"
|
|
1334
|
-
* placeholder="Enter your message"
|
|
1335
|
-
* [(ngModel)]="message"
|
|
1336
|
-
* ></lc-textarea>
|
|
1369
|
+
* <lc-textarea placeholder="Enter message" [autoResize]="true" [(ngModel)]="message" />
|
|
1337
1370
|
* ```
|
|
1338
1371
|
*/
|
|
1339
1372
|
declare class TextareaComponent implements ControlValueAccessor, AfterViewInit {
|
|
@@ -1641,20 +1674,20 @@ declare class VerificationCodeInputComponent implements ControlValueAccessor, Af
|
|
|
1641
1674
|
}
|
|
1642
1675
|
|
|
1643
1676
|
/**
|
|
1644
|
-
* Email input component with RFC 5322 validation.
|
|
1677
|
+
* Email input component with built-in RFC 5322 validation.
|
|
1645
1678
|
*
|
|
1646
|
-
*
|
|
1647
|
-
*
|
|
1679
|
+
* Features:
|
|
1680
|
+
* - RFC 5322 regex email format validation
|
|
1681
|
+
* - Real-time validation feedback on input
|
|
1682
|
+
* - Valid/invalid visual indicators
|
|
1683
|
+
* - Size presets (xs, sm, md, lg)
|
|
1684
|
+
* - Helper text and error message display
|
|
1685
|
+
* - Disabled and readonly states
|
|
1686
|
+
* - ControlValueAccessor integration for reactive forms
|
|
1648
1687
|
*
|
|
1649
1688
|
* @example
|
|
1650
1689
|
* ```html
|
|
1651
|
-
* <lc-email-input
|
|
1652
|
-
* label="Email Address"
|
|
1653
|
-
* placeholder="you@example.com"
|
|
1654
|
-
* [(ngModel)]="email"
|
|
1655
|
-
* [required]="true"
|
|
1656
|
-
* (validationChange)="handleValidation($event)"
|
|
1657
|
-
* ></lc-email-input>
|
|
1690
|
+
* <lc-email-input label="Email" placeholder="you@example.com" [(ngModel)]="email" />
|
|
1658
1691
|
* ```
|
|
1659
1692
|
*/
|
|
1660
1693
|
declare class EmailInputComponent implements ControlValueAccessor {
|
|
@@ -1785,6 +1818,355 @@ declare class EmailInputComponent implements ControlValueAccessor {
|
|
|
1785
1818
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailInputComponent, "lc-email-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "validateOnInput": { "alias": "validateOnInput"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "validationChange": "validationChange"; "focused": "focused"; "blurred": "blurred"; "enterPressed": "enterPressed"; }, never, never, true, never>;
|
|
1786
1819
|
}
|
|
1787
1820
|
|
|
1821
|
+
type HeroColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'info' | 'warning' | 'accent-orange' | 'accent-purple' | 'accent-violet';
|
|
1822
|
+
type HeroSize = 'sm' | 'md' | 'lg';
|
|
1823
|
+
/**
|
|
1824
|
+
* Hero component for prominent page headers with gradient backgrounds.
|
|
1825
|
+
*
|
|
1826
|
+
* Features:
|
|
1827
|
+
* - Color gradient variants (primary, secondary, success, warning, error, neutral)
|
|
1828
|
+
* - Size options (sm, md, lg)
|
|
1829
|
+
* - Optional label text above the title
|
|
1830
|
+
* - Configurable border radius
|
|
1831
|
+
* - Content projection for body and footer sections
|
|
1832
|
+
* - Footer slot for metadata, stats, or CTAs
|
|
1833
|
+
*
|
|
1834
|
+
* @example
|
|
1835
|
+
* ```html
|
|
1836
|
+
* <lc-hero label="MY APP" title="Welcome" color="primary">
|
|
1837
|
+
* <p>Description text</p>
|
|
1838
|
+
* <div hero-footer>Status: Active</div>
|
|
1839
|
+
* </lc-hero>
|
|
1840
|
+
* ```
|
|
1841
|
+
*/
|
|
1842
|
+
declare class HeroComponent {
|
|
1843
|
+
/**
|
|
1844
|
+
* Small uppercase label displayed above the title.
|
|
1845
|
+
*/
|
|
1846
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
1847
|
+
/**
|
|
1848
|
+
* Main headline text.
|
|
1849
|
+
*/
|
|
1850
|
+
title: _angular_core.InputSignal<string>;
|
|
1851
|
+
/**
|
|
1852
|
+
* Color theme for the gradient background.
|
|
1853
|
+
* @default 'primary'
|
|
1854
|
+
*/
|
|
1855
|
+
color: _angular_core.InputSignal<HeroColor>;
|
|
1856
|
+
/**
|
|
1857
|
+
* Size variant controlling padding and font sizes.
|
|
1858
|
+
* @default 'md'
|
|
1859
|
+
*/
|
|
1860
|
+
size: _angular_core.InputSignal<HeroSize>;
|
|
1861
|
+
/**
|
|
1862
|
+
* Border radius of the hero container.
|
|
1863
|
+
* @default 'lg'
|
|
1864
|
+
*/
|
|
1865
|
+
borderRadius: _angular_core.InputSignal<"sm" | "md" | "lg" | "none">;
|
|
1866
|
+
protected heroClasses: _angular_core.Signal<string>;
|
|
1867
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeroComponent, never>;
|
|
1868
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeroComponent, "lc-hero", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[hero-footer]"], true, never>;
|
|
1869
|
+
}
|
|
1870
|
+
|
|
1871
|
+
type ProgressBarColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
1872
|
+
type ProgressBarSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
1873
|
+
type ProgressBarVariant = 'linear' | 'circular';
|
|
1874
|
+
/**
|
|
1875
|
+
* Progress bar component for displaying completion status.
|
|
1876
|
+
*
|
|
1877
|
+
* Features:
|
|
1878
|
+
* - Linear and circular progress variants
|
|
1879
|
+
* - Color theme options (primary, secondary, success, warning, error)
|
|
1880
|
+
* - Multiple size presets (xs, sm, md, lg)
|
|
1881
|
+
* - Animated value transitions
|
|
1882
|
+
* - Accessible with ARIA progressbar role
|
|
1883
|
+
*
|
|
1884
|
+
* @example
|
|
1885
|
+
* ```html
|
|
1886
|
+
* <lc-progress-bar [value]="75" color="primary" size="md"></lc-progress-bar>
|
|
1887
|
+
* <lc-progress-bar [value]="50" variant="circular" color="success"></lc-progress-bar>
|
|
1888
|
+
* ```
|
|
1889
|
+
*/
|
|
1890
|
+
declare class ProgressBarComponent {
|
|
1891
|
+
/**
|
|
1892
|
+
* Progress value between 0 and 100.
|
|
1893
|
+
* @default 0
|
|
1894
|
+
*/
|
|
1895
|
+
value: _angular_core.InputSignal<number>;
|
|
1896
|
+
/**
|
|
1897
|
+
* Color theme.
|
|
1898
|
+
* @default 'primary'
|
|
1899
|
+
*/
|
|
1900
|
+
color: _angular_core.InputSignal<ProgressBarColor>;
|
|
1901
|
+
/**
|
|
1902
|
+
* Height/thickness of the bar.
|
|
1903
|
+
* @default 'md'
|
|
1904
|
+
*/
|
|
1905
|
+
size: _angular_core.InputSignal<ProgressBarSize>;
|
|
1906
|
+
/**
|
|
1907
|
+
* Visual variant.
|
|
1908
|
+
* @default 'linear'
|
|
1909
|
+
*/
|
|
1910
|
+
variant: _angular_core.InputSignal<ProgressBarVariant>;
|
|
1911
|
+
/**
|
|
1912
|
+
* Whether to show the percentage label.
|
|
1913
|
+
* @default false
|
|
1914
|
+
*/
|
|
1915
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
1916
|
+
/**
|
|
1917
|
+
* Whether the progress is indeterminate (animated, no fixed value).
|
|
1918
|
+
* @default false
|
|
1919
|
+
*/
|
|
1920
|
+
indeterminate: _angular_core.InputSignal<boolean>;
|
|
1921
|
+
/**
|
|
1922
|
+
* Accessible label for screen readers.
|
|
1923
|
+
*/
|
|
1924
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
1925
|
+
protected clampedValue: _angular_core.Signal<number>;
|
|
1926
|
+
protected barClasses: _angular_core.Signal<string>;
|
|
1927
|
+
protected readonly circleRadius = 40;
|
|
1928
|
+
protected readonly circleCircumference: number;
|
|
1929
|
+
protected strokeDashoffset: _angular_core.Signal<number>;
|
|
1930
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
|
|
1931
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "lc-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
type DividerOrientation = 'horizontal' | 'vertical';
|
|
1935
|
+
type DividerVariant = 'solid' | 'dashed' | 'dotted';
|
|
1936
|
+
type DividerSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
1937
|
+
/**
|
|
1938
|
+
* Divider component for visual separation of content.
|
|
1939
|
+
*
|
|
1940
|
+
* Features:
|
|
1941
|
+
* - Horizontal and vertical orientations
|
|
1942
|
+
* - Line style variants (solid, dashed, dotted)
|
|
1943
|
+
* - Configurable spacing (none, sm, md, lg)
|
|
1944
|
+
* - Optional centered text label
|
|
1945
|
+
* - Dark mode support
|
|
1946
|
+
*
|
|
1947
|
+
* @example
|
|
1948
|
+
* ```html
|
|
1949
|
+
* <lc-divider></lc-divider>
|
|
1950
|
+
* <lc-divider orientation="vertical" variant="dashed"></lc-divider>
|
|
1951
|
+
* <lc-divider spacing="lg">OR</lc-divider>
|
|
1952
|
+
* ```
|
|
1953
|
+
*/
|
|
1954
|
+
declare class DividerComponent {
|
|
1955
|
+
/**
|
|
1956
|
+
* Orientation of the divider line.
|
|
1957
|
+
* @default 'horizontal'
|
|
1958
|
+
*/
|
|
1959
|
+
orientation: _angular_core.InputSignal<DividerOrientation>;
|
|
1960
|
+
/**
|
|
1961
|
+
* Line style.
|
|
1962
|
+
* @default 'solid'
|
|
1963
|
+
*/
|
|
1964
|
+
variant: _angular_core.InputSignal<DividerVariant>;
|
|
1965
|
+
/**
|
|
1966
|
+
* Spacing (margin) around the divider.
|
|
1967
|
+
* @default 'md'
|
|
1968
|
+
*/
|
|
1969
|
+
spacing: _angular_core.InputSignal<DividerSpacing>;
|
|
1970
|
+
/**
|
|
1971
|
+
* Optional inline text label (e.g. "OR", "Section").
|
|
1972
|
+
*/
|
|
1973
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
1974
|
+
protected dividerClasses: _angular_core.Signal<string>;
|
|
1975
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
|
|
1976
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "lc-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1977
|
+
}
|
|
1978
|
+
|
|
1979
|
+
type SearchInputSize = 'sm' | 'md' | 'lg';
|
|
1980
|
+
/**
|
|
1981
|
+
* Search input component with integrated search functionality.
|
|
1982
|
+
*
|
|
1983
|
+
* Features:
|
|
1984
|
+
* - Built-in search icon
|
|
1985
|
+
* - Clear button for resetting input
|
|
1986
|
+
* - RxJS-based configurable debounce
|
|
1987
|
+
* - Multiple size variants (sm, md, lg)
|
|
1988
|
+
* - Disabled state support
|
|
1989
|
+
* - Submit event on Enter key
|
|
1990
|
+
*
|
|
1991
|
+
* @example
|
|
1992
|
+
* ```html
|
|
1993
|
+
* <lc-search-input
|
|
1994
|
+
* placeholder="Search..."
|
|
1995
|
+
* [debounceMs]="300"
|
|
1996
|
+
* (searchChange)="onSearch($event)"
|
|
1997
|
+
* ></lc-search-input>
|
|
1998
|
+
* ```
|
|
1999
|
+
*/
|
|
2000
|
+
declare class SearchInputComponent implements OnInit, OnDestroy {
|
|
2001
|
+
/**
|
|
2002
|
+
* Placeholder text.
|
|
2003
|
+
* @default 'Search…'
|
|
2004
|
+
*/
|
|
2005
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
2006
|
+
/**
|
|
2007
|
+
* Size variant.
|
|
2008
|
+
* @default 'md'
|
|
2009
|
+
*/
|
|
2010
|
+
size: _angular_core.InputSignal<SearchInputSize>;
|
|
2011
|
+
/**
|
|
2012
|
+
* Debounce delay in milliseconds. 0 means no debounce.
|
|
2013
|
+
* @default 300
|
|
2014
|
+
*/
|
|
2015
|
+
debounceMs: _angular_core.InputSignal<number>;
|
|
2016
|
+
/**
|
|
2017
|
+
* Whether the search input is disabled.
|
|
2018
|
+
* @default false
|
|
2019
|
+
*/
|
|
2020
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2021
|
+
/**
|
|
2022
|
+
* Emitted when the search value changes (debounced).
|
|
2023
|
+
*/
|
|
2024
|
+
readonly searchChange: _angular_core.OutputEmitterRef<string>;
|
|
2025
|
+
/**
|
|
2026
|
+
* Emitted when the user presses Enter.
|
|
2027
|
+
*/
|
|
2028
|
+
readonly searchSubmit: _angular_core.OutputEmitterRef<string>;
|
|
2029
|
+
protected value: _angular_core.WritableSignal<string>;
|
|
2030
|
+
protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
2031
|
+
protected wrapperClasses: _angular_core.Signal<string>;
|
|
2032
|
+
private readonly input$;
|
|
2033
|
+
private readonly destroy$;
|
|
2034
|
+
ngOnInit(): void;
|
|
2035
|
+
ngOnDestroy(): void;
|
|
2036
|
+
protected onInput(event: Event): void;
|
|
2037
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
2038
|
+
protected clear(): void;
|
|
2039
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchInputComponent, never>;
|
|
2040
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchInputComponent, "lc-search-input", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "searchSubmit": "searchSubmit"; }, never, never, true, never>;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
interface FileUploadFile {
|
|
2044
|
+
file: File;
|
|
2045
|
+
name: string;
|
|
2046
|
+
size: number;
|
|
2047
|
+
type: string;
|
|
2048
|
+
}
|
|
2049
|
+
/**
|
|
2050
|
+
* File upload / dropzone component with drag & drop support.
|
|
2051
|
+
*
|
|
2052
|
+
* @example
|
|
2053
|
+
* ```html
|
|
2054
|
+
* <lc-file-upload
|
|
2055
|
+
* accept=".pdf,.png,.jpg"
|
|
2056
|
+
* [multiple]="true"
|
|
2057
|
+
* [maxSizeBytes]="5242880"
|
|
2058
|
+
* (filesSelected)="onFiles($event)"
|
|
2059
|
+
* ></lc-file-upload>
|
|
2060
|
+
* ```
|
|
2061
|
+
*/
|
|
2062
|
+
declare class FileUploadComponent {
|
|
2063
|
+
/**
|
|
2064
|
+
* Accepted file types (e.g. ".pdf,.jpg,image/*").
|
|
2065
|
+
*/
|
|
2066
|
+
accept: _angular_core.InputSignal<string>;
|
|
2067
|
+
/**
|
|
2068
|
+
* Allow multiple files.
|
|
2069
|
+
* @default false
|
|
2070
|
+
*/
|
|
2071
|
+
multiple: _angular_core.InputSignal<boolean>;
|
|
2072
|
+
/**
|
|
2073
|
+
* Maximum file size in bytes. 0 for unlimited.
|
|
2074
|
+
* @default 0
|
|
2075
|
+
*/
|
|
2076
|
+
maxSizeBytes: _angular_core.InputSignal<number>;
|
|
2077
|
+
/**
|
|
2078
|
+
* Whether the dropzone is disabled.
|
|
2079
|
+
* @default false
|
|
2080
|
+
*/
|
|
2081
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2082
|
+
/**
|
|
2083
|
+
* Hint text shown in the dropzone.
|
|
2084
|
+
* @default 'Drag & drop files here, or click to browse'
|
|
2085
|
+
*/
|
|
2086
|
+
hint: _angular_core.InputSignal<string>;
|
|
2087
|
+
/**
|
|
2088
|
+
* Emitted with selected files after validation.
|
|
2089
|
+
*/
|
|
2090
|
+
readonly filesSelected: _angular_core.OutputEmitterRef<FileUploadFile[]>;
|
|
2091
|
+
/**
|
|
2092
|
+
* Emitted when a file is rejected (too large or wrong type).
|
|
2093
|
+
*/
|
|
2094
|
+
readonly fileRejected: _angular_core.OutputEmitterRef<{
|
|
2095
|
+
file: File;
|
|
2096
|
+
reason: string;
|
|
2097
|
+
}>;
|
|
2098
|
+
protected isDragOver: _angular_core.WritableSignal<boolean>;
|
|
2099
|
+
protected selectedFiles: _angular_core.WritableSignal<FileUploadFile[]>;
|
|
2100
|
+
protected readonly fileInputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
2101
|
+
protected dropzoneClasses: _angular_core.Signal<string>;
|
|
2102
|
+
protected onDragOver(event: DragEvent): void;
|
|
2103
|
+
protected onDragLeave(event: DragEvent): void;
|
|
2104
|
+
protected onDrop(event: DragEvent): void;
|
|
2105
|
+
protected onFileChange(event: Event): void;
|
|
2106
|
+
protected openFilePicker(): void;
|
|
2107
|
+
protected removeFile(index: number): void;
|
|
2108
|
+
protected formatSize(bytes: number): string;
|
|
2109
|
+
private processFiles;
|
|
2110
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
|
|
2111
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "lc-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxSizeBytes": { "alias": "maxSizeBytes"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "fileRejected": "fileRejected"; }, never, never, true, never>;
|
|
2112
|
+
}
|
|
2113
|
+
|
|
2114
|
+
type PopoverPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
2115
|
+
type PopoverTrigger = 'click' | 'hover';
|
|
2116
|
+
/**
|
|
2117
|
+
* Popover component for displaying rich floating content.
|
|
2118
|
+
*
|
|
2119
|
+
* Features:
|
|
2120
|
+
* - Position options (top, bottom, left, right)
|
|
2121
|
+
* - Click or hover trigger modes
|
|
2122
|
+
* - Optional arrow indicator
|
|
2123
|
+
* - Click-outside to close
|
|
2124
|
+
* - Open state change event
|
|
2125
|
+
* - Content projection for trigger and body
|
|
2126
|
+
*
|
|
2127
|
+
* @example
|
|
2128
|
+
* ```html
|
|
2129
|
+
* <lc-popover position="bottom" trigger="click">
|
|
2130
|
+
* <button popover-trigger>Open</button>
|
|
2131
|
+
* <div popover-content>Rich content here</div>
|
|
2132
|
+
* </lc-popover>
|
|
2133
|
+
* ```
|
|
2134
|
+
*/
|
|
2135
|
+
declare class PopoverComponent implements OnDestroy {
|
|
2136
|
+
/**
|
|
2137
|
+
* Position relative to the trigger element.
|
|
2138
|
+
* @default 'bottom'
|
|
2139
|
+
*/
|
|
2140
|
+
position: _angular_core.InputSignal<PopoverPosition>;
|
|
2141
|
+
/**
|
|
2142
|
+
* How the popover is triggered.
|
|
2143
|
+
* @default 'click'
|
|
2144
|
+
*/
|
|
2145
|
+
trigger: _angular_core.InputSignal<PopoverTrigger>;
|
|
2146
|
+
/**
|
|
2147
|
+
* Whether to show an arrow pointing at the trigger.
|
|
2148
|
+
* @default true
|
|
2149
|
+
*/
|
|
2150
|
+
showArrow: _angular_core.InputSignal<boolean>;
|
|
2151
|
+
/**
|
|
2152
|
+
* Emitted when the popover opens or closes.
|
|
2153
|
+
*/
|
|
2154
|
+
readonly openChange: _angular_core.OutputEmitterRef<boolean>;
|
|
2155
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
2156
|
+
protected panelClasses: _angular_core.Signal<string>;
|
|
2157
|
+
private readonly elementRef;
|
|
2158
|
+
onDocumentClick(event: MouseEvent): void;
|
|
2159
|
+
onEscape(): void;
|
|
2160
|
+
ngOnDestroy(): void;
|
|
2161
|
+
protected toggle(): void;
|
|
2162
|
+
protected open(): void;
|
|
2163
|
+
protected close(): void;
|
|
2164
|
+
protected onMouseEnter(): void;
|
|
2165
|
+
protected onMouseLeave(): void;
|
|
2166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
|
|
2167
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "lc-popover", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "showArrow": { "alias": "showArrow"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["[popover-trigger]", "[popover-content]"], true, never>;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
1788
2170
|
type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
1789
2171
|
declare class ContainerComponent {
|
|
1790
2172
|
size: _angular_core.InputSignal<ContainerSize>;
|
|
@@ -1841,6 +2223,14 @@ type AlertVariant = 'success' | 'error' | 'warning' | 'info';
|
|
|
1841
2223
|
/**
|
|
1842
2224
|
* Alert component for inline notifications.
|
|
1843
2225
|
*
|
|
2226
|
+
* Features:
|
|
2227
|
+
* - Semantic variants (success, warning, error, info)
|
|
2228
|
+
* - Optional title and icon display
|
|
2229
|
+
* - Auto-mapped variant icons
|
|
2230
|
+
* - Dismissible with close button
|
|
2231
|
+
* - Content projection for custom body
|
|
2232
|
+
* - Accessible with ARIA alert role
|
|
2233
|
+
*
|
|
1844
2234
|
* @example
|
|
1845
2235
|
* ```html
|
|
1846
2236
|
* <lc-alert variant="success" title="Success!" [dismissible]="true">
|
|
@@ -1921,24 +2311,19 @@ declare class AlertComponent {
|
|
|
1921
2311
|
*/
|
|
1922
2312
|
type ErrorSeverity = 'error' | 'warning' | 'info';
|
|
1923
2313
|
/**
|
|
1924
|
-
* Error display component for authentication error messages.
|
|
2314
|
+
* Error display component for authentication and application error messages.
|
|
1925
2315
|
*
|
|
1926
|
-
*
|
|
1927
|
-
*
|
|
2316
|
+
* Features:
|
|
2317
|
+
* - Automatic Cognito error code mapping to user-friendly messages
|
|
2318
|
+
* - Severity levels (error, warning, info)
|
|
2319
|
+
* - Custom error message override
|
|
2320
|
+
* - Dismissible with close button
|
|
2321
|
+
* - Accepts Error objects or custom error shapes
|
|
1928
2322
|
*
|
|
1929
2323
|
* @example
|
|
1930
2324
|
* ```html
|
|
1931
|
-
*
|
|
1932
|
-
* <lc-error-display
|
|
1933
|
-
* [error]="cognitoError"
|
|
1934
|
-
* [dismissible]="true"
|
|
1935
|
-
* ></lc-error-display>
|
|
1936
|
-
*
|
|
1937
|
-
* <!-- Display custom error -->
|
|
1938
|
-
* <lc-error-display
|
|
1939
|
-
* message="Invalid credentials"
|
|
1940
|
-
* severity="error"
|
|
1941
|
-
* ></lc-error-display>
|
|
2325
|
+
* <lc-error-display [error]="cognitoError" [dismissible]="true" />
|
|
2326
|
+
* <lc-error-display message="Invalid credentials" severity="error" />
|
|
1942
2327
|
* ```
|
|
1943
2328
|
*/
|
|
1944
2329
|
declare class ErrorDisplayComponent {
|
|
@@ -2091,20 +2476,19 @@ declare class ToastService {
|
|
|
2091
2476
|
}
|
|
2092
2477
|
|
|
2093
2478
|
/**
|
|
2094
|
-
* Toast component for displaying ephemeral
|
|
2095
|
-
*
|
|
2479
|
+
* Toast component for displaying ephemeral notification messages.
|
|
2480
|
+
*
|
|
2481
|
+
* Features:
|
|
2482
|
+
* - Semantic variants (success, warning, error, info)
|
|
2483
|
+
* - Auto-dismiss with configurable duration
|
|
2484
|
+
* - Manual dismiss with close button
|
|
2485
|
+
* - Icon display per variant
|
|
2486
|
+
* - Stacked toast positioning via ToastService
|
|
2487
|
+
* - Animated enter/exit transitions
|
|
2096
2488
|
*
|
|
2097
2489
|
* @example
|
|
2098
2490
|
* ```typescript
|
|
2099
|
-
*
|
|
2100
|
-
* constructor(private toastService: ToastService) {}
|
|
2101
|
-
*
|
|
2102
|
-
* showToast() {
|
|
2103
|
-
* this.toastService.show({
|
|
2104
|
-
* message: 'Success!',
|
|
2105
|
-
* variant: 'success'
|
|
2106
|
-
* });
|
|
2107
|
-
* }
|
|
2491
|
+
* this.toastService.show({ message: 'Saved!', variant: 'success' });
|
|
2108
2492
|
* ```
|
|
2109
2493
|
*/
|
|
2110
2494
|
declare class ToastComponent {
|
|
@@ -2151,20 +2535,22 @@ declare class ToastComponent {
|
|
|
2151
2535
|
type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
2152
2536
|
/**
|
|
2153
2537
|
* Modal dialog component for focused user interactions.
|
|
2154
|
-
*
|
|
2538
|
+
*
|
|
2539
|
+
* Features:
|
|
2540
|
+
* - Size presets (sm, md, lg, xl, full)
|
|
2541
|
+
* - Focus trap for keyboard accessibility
|
|
2542
|
+
* - Backdrop click and Escape key to close
|
|
2543
|
+
* - Two-way open binding
|
|
2544
|
+
* - Header, body, and footer content slots
|
|
2545
|
+
* - Optional close button
|
|
2546
|
+
* - Accessible with ARIA dialog role
|
|
2155
2547
|
*
|
|
2156
2548
|
* @example
|
|
2157
2549
|
* ```html
|
|
2158
2550
|
* <lc-modal [(open)]="isOpen" size="md" [closeOnBackdropClick]="true">
|
|
2159
|
-
* <div slot="header">
|
|
2160
|
-
*
|
|
2161
|
-
* </div>
|
|
2162
|
-
* <div slot="body">
|
|
2163
|
-
* <p>Modal content goes here</p>
|
|
2164
|
-
* </div>
|
|
2165
|
-
* <div slot="footer">
|
|
2166
|
-
* <lc-button (click)="closeModal()">Close</lc-button>
|
|
2167
|
-
* </div>
|
|
2551
|
+
* <div slot="header"><h2>Title</h2></div>
|
|
2552
|
+
* <div slot="body">Content</div>
|
|
2553
|
+
* <div slot="footer"><lc-button (click)="close()">Close</lc-button></div>
|
|
2168
2554
|
* </lc-modal>
|
|
2169
2555
|
* ```
|
|
2170
2556
|
*/
|
|
@@ -2562,29 +2948,22 @@ declare class PaginationComponent {
|
|
|
2562
2948
|
type SidenavPosition = 'left' | 'right';
|
|
2563
2949
|
type SidenavMode = 'drawer' | 'docked';
|
|
2564
2950
|
/**
|
|
2565
|
-
* Sidenav
|
|
2566
|
-
*
|
|
2567
|
-
* A navigation component that can work as either a drawer (overlay) or
|
|
2568
|
-
* a docked (persistent) sidebar. Supports section headlines, collapsible
|
|
2569
|
-
* groups, keyboard navigation, and accessibility features.
|
|
2951
|
+
* Sidenav component for application navigation sidebar.
|
|
2570
2952
|
*
|
|
2571
|
-
*
|
|
2572
|
-
*
|
|
2573
|
-
*
|
|
2574
|
-
*
|
|
2575
|
-
*
|
|
2576
|
-
*
|
|
2577
|
-
*
|
|
2578
|
-
*
|
|
2953
|
+
* Features:
|
|
2954
|
+
* - Drawer (overlay) and docked (persistent) modes
|
|
2955
|
+
* - Hierarchical navigation with collapsible groups
|
|
2956
|
+
* - Section headlines for item grouping
|
|
2957
|
+
* - Active route highlighting
|
|
2958
|
+
* - Keyboard navigation support
|
|
2959
|
+
* - Configurable width and position (left/right)
|
|
2960
|
+
* - Optional backdrop overlay
|
|
2961
|
+
* - Accessible with ARIA navigation role
|
|
2579
2962
|
*
|
|
2580
|
-
* @example
|
|
2963
|
+
* @example
|
|
2581
2964
|
* ```html
|
|
2582
|
-
* <lc-sidenav
|
|
2583
|
-
*
|
|
2584
|
-
* mode="docked"
|
|
2585
|
-
* [items]="navItems"
|
|
2586
|
-
* (closed)="sidebarOpen = false">
|
|
2587
|
-
* </lc-sidenav>
|
|
2965
|
+
* <lc-sidenav [isOpen]="isOpen" mode="docked" [items]="navItems"
|
|
2966
|
+
* (closed)="isOpen = false" (itemClicked)="navigate($event)" />
|
|
2588
2967
|
* ```
|
|
2589
2968
|
*/
|
|
2590
2969
|
declare class SidenavComponent {
|
|
@@ -2728,6 +3107,13 @@ declare class TabComponent {
|
|
|
2728
3107
|
/**
|
|
2729
3108
|
* Tabs component for organizing content into switchable views.
|
|
2730
3109
|
*
|
|
3110
|
+
* Features:
|
|
3111
|
+
* - Dynamic tab registration via content projection
|
|
3112
|
+
* - Active tab tracking with two-way binding
|
|
3113
|
+
* - Accessible with ARIA tablist/tab/tabpanel roles
|
|
3114
|
+
* - Keyboard navigation between tabs
|
|
3115
|
+
* - Lazy content rendering per tab
|
|
3116
|
+
*
|
|
2731
3117
|
* @example
|
|
2732
3118
|
* ```html
|
|
2733
3119
|
* <lc-tabs>
|
|
@@ -2830,21 +3216,19 @@ declare class TabsComponent implements AfterContentInit {
|
|
|
2830
3216
|
type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
2831
3217
|
type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';
|
|
2832
3218
|
/**
|
|
2833
|
-
* Avatar
|
|
3219
|
+
* Avatar component for circular user representation.
|
|
2834
3220
|
*
|
|
2835
|
-
*
|
|
2836
|
-
*
|
|
3221
|
+
* Features:
|
|
3222
|
+
* - Image display with fallback to initials
|
|
3223
|
+
* - Auto-generated initials from user name
|
|
3224
|
+
* - Status indicator (online, offline, busy, away)
|
|
3225
|
+
* - Multiple size variants (xs, sm, md, lg, xl)
|
|
3226
|
+
* - Accessible with alt text support
|
|
2837
3227
|
*
|
|
2838
3228
|
* @example
|
|
2839
3229
|
* ```html
|
|
2840
|
-
* <!-- With image -->
|
|
2841
3230
|
* <lc-avatar src="https://example.com/avatar.jpg" alt="John Doe" />
|
|
2842
|
-
*
|
|
2843
|
-
* <!-- With initials -->
|
|
2844
|
-
* <lc-avatar name="John Doe" />
|
|
2845
|
-
*
|
|
2846
|
-
* <!-- With status indicator -->
|
|
2847
|
-
* <lc-avatar name="Jane Smith" status="online" size="lg" />
|
|
3231
|
+
* <lc-avatar name="John Doe" status="online" size="lg" />
|
|
2848
3232
|
* ```
|
|
2849
3233
|
*/
|
|
2850
3234
|
declare class AvatarComponent {
|
|
@@ -2887,9 +3271,13 @@ declare class AvatarComponent {
|
|
|
2887
3271
|
type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
2888
3272
|
type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
2889
3273
|
/**
|
|
2890
|
-
* Badge
|
|
3274
|
+
* Badge component for displaying status, notifications, or counts.
|
|
2891
3275
|
*
|
|
2892
|
-
*
|
|
3276
|
+
* Features:
|
|
3277
|
+
* - Semantic color variants (primary, secondary, success, warning, error, info, neutral)
|
|
3278
|
+
* - Multiple size options (xs, sm, md, lg)
|
|
3279
|
+
* - Pill-shaped rounded mode
|
|
3280
|
+
* - Content projection for labels or count values
|
|
2893
3281
|
*
|
|
2894
3282
|
* @example
|
|
2895
3283
|
* ```html
|
|
@@ -2912,60 +3300,28 @@ declare class BadgeComponent {
|
|
|
2912
3300
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "lc-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2913
3301
|
}
|
|
2914
3302
|
|
|
2915
|
-
type TrendDirection = 'up' | 'down' | 'flat';
|
|
2916
|
-
/**
|
|
2917
|
-
* MetricCard Component
|
|
2918
|
-
*
|
|
2919
|
-
* Displays a single KPI value with label, trend arrow, and optional icon.
|
|
2920
|
-
* Built on top of `lc-card` (outlined variant) for consistent card styling.
|
|
2921
|
-
*
|
|
2922
|
-
* @example
|
|
2923
|
-
* ```html
|
|
2924
|
-
* <lc-metric-card
|
|
2925
|
-
* label="Portfolio Equity"
|
|
2926
|
-
* value="$125,430"
|
|
2927
|
-
* trend="up"
|
|
2928
|
-
* trendValue="+2.4%"
|
|
2929
|
-
* icon="arrow-trending-up"
|
|
2930
|
-
* ></lc-metric-card>
|
|
2931
|
-
* ```
|
|
2932
|
-
*/
|
|
2933
|
-
declare class MetricCardComponent {
|
|
2934
|
-
/** Label displayed above the value */
|
|
2935
|
-
label: _angular_core.InputSignal<string>;
|
|
2936
|
-
/** Formatted value to display */
|
|
2937
|
-
value: _angular_core.InputSignal<string>;
|
|
2938
|
-
/** Trend direction for arrow indicator */
|
|
2939
|
-
trend: _angular_core.InputSignal<TrendDirection>;
|
|
2940
|
-
/** Formatted trend value (e.g., "+2.4%") */
|
|
2941
|
-
trendValue: _angular_core.InputSignal<string>;
|
|
2942
|
-
/** Optional Heroicon name */
|
|
2943
|
-
icon: _angular_core.InputSignal<string>;
|
|
2944
|
-
/** Trend arrow character */
|
|
2945
|
-
trendArrow: _angular_core.Signal<"↑" | "↓" | "→">;
|
|
2946
|
-
/** Tailwind classes for trend color */
|
|
2947
|
-
trendClasses: _angular_core.Signal<"text-green-600 dark:text-green-400" | "text-red-600 dark:text-red-400" | "text-gray-500 dark:text-gray-400">;
|
|
2948
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetricCardComponent, never>;
|
|
2949
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetricCardComponent, "lc-metric-card", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "trendValue": { "alias": "trendValue"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2950
|
-
}
|
|
2951
|
-
|
|
2952
3303
|
interface ToggleOption {
|
|
2953
3304
|
readonly value: string;
|
|
2954
3305
|
readonly label: string;
|
|
2955
3306
|
readonly disabled?: boolean;
|
|
2956
3307
|
}
|
|
2957
3308
|
/**
|
|
2958
|
-
*
|
|
3309
|
+
* Toggle group component for single-option selection from a set.
|
|
2959
3310
|
*
|
|
2960
|
-
*
|
|
2961
|
-
*
|
|
3311
|
+
* Features:
|
|
3312
|
+
* - Multiple segmented toggle buttons
|
|
3313
|
+
* - Active state highlighting
|
|
3314
|
+
* - Size variants (sm, md, lg)
|
|
3315
|
+
* - Two-way selected value binding
|
|
3316
|
+
* - Per-option disabled state
|
|
3317
|
+
* - Dark mode support via CSS custom properties
|
|
2962
3318
|
*
|
|
2963
3319
|
* @example
|
|
2964
3320
|
* ```html
|
|
2965
3321
|
* <lc-toggle-group
|
|
2966
|
-
* [options]="[{value:'1D',label:'1D'},{value:'
|
|
3322
|
+
* [options]="[{value:'1D',label:'1D'},{value:'1W',label:'1W'}]"
|
|
2967
3323
|
* [(selected)]="interval"
|
|
2968
|
-
*
|
|
3324
|
+
* />
|
|
2969
3325
|
* ```
|
|
2970
3326
|
*/
|
|
2971
3327
|
declare class ToggleGroupComponent {
|
|
@@ -3037,10 +3393,15 @@ interface ListItem {
|
|
|
3037
3393
|
[key: string]: any;
|
|
3038
3394
|
}
|
|
3039
3395
|
/**
|
|
3040
|
-
* List
|
|
3396
|
+
* List component for displaying structured item collections.
|
|
3041
3397
|
*
|
|
3042
|
-
*
|
|
3043
|
-
*
|
|
3398
|
+
* Features:
|
|
3399
|
+
* - Vertical and horizontal layout orientations
|
|
3400
|
+
* - Variant styles (default, bordered, card)
|
|
3401
|
+
* - Optional dividers between items
|
|
3402
|
+
* - Icon and avatar support per item
|
|
3403
|
+
* - Action buttons with click events
|
|
3404
|
+
* - Accessible with ARIA list role
|
|
3044
3405
|
*
|
|
3045
3406
|
* @example
|
|
3046
3407
|
* ```html
|
|
@@ -3049,7 +3410,6 @@ interface ListItem {
|
|
|
3049
3410
|
* orientation="vertical"
|
|
3050
3411
|
* [showDividers]="true"
|
|
3051
3412
|
* (itemClick)="handleItemClick($event)"
|
|
3052
|
-
* (actionClick)="handleActionClick($event)"
|
|
3053
3413
|
* />
|
|
3054
3414
|
* ```
|
|
3055
3415
|
*/
|
|
@@ -3091,15 +3451,18 @@ declare class ListComponent {
|
|
|
3091
3451
|
type ChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
3092
3452
|
type ChipSize = 'sm' | 'md' | 'lg';
|
|
3093
3453
|
/**
|
|
3094
|
-
* Chip
|
|
3454
|
+
* Chip component for displaying tags, filters, or selections.
|
|
3095
3455
|
*
|
|
3096
|
-
*
|
|
3097
|
-
*
|
|
3456
|
+
* Features:
|
|
3457
|
+
* - Color variants (primary, secondary, success, warning, error, info, neutral)
|
|
3458
|
+
* - Multiple size options (sm, md, lg)
|
|
3459
|
+
* - Optional leading icon
|
|
3460
|
+
* - Removable with close button and remove event
|
|
3461
|
+
* - Disabled state support
|
|
3098
3462
|
*
|
|
3099
3463
|
* @example
|
|
3100
3464
|
* ```html
|
|
3101
|
-
* <lc-chip variant="primary"
|
|
3102
|
-
* <span lcChipIcon>🏷️</span>
|
|
3465
|
+
* <lc-chip variant="primary" [removable]="true" (remove)="onRemove()">
|
|
3103
3466
|
* Tag Name
|
|
3104
3467
|
* </lc-chip>
|
|
3105
3468
|
* ```
|
|
@@ -3157,39 +3520,52 @@ interface TableColumn {
|
|
|
3157
3520
|
key: string;
|
|
3158
3521
|
label: string;
|
|
3159
3522
|
sortable?: boolean;
|
|
3523
|
+
filterable?: boolean;
|
|
3524
|
+
editable?: boolean;
|
|
3160
3525
|
width?: string;
|
|
3161
3526
|
/** Optional CSS class(es) applied to both th and td cells */
|
|
3162
3527
|
cssClass?: string;
|
|
3163
3528
|
/** Optional tooltip shown on hover over the column header */
|
|
3164
3529
|
tooltip?: string;
|
|
3530
|
+
/** Input type for inline editing (default: text) */
|
|
3531
|
+
editType?: 'text' | 'number' | 'select';
|
|
3532
|
+
/** Options for select edit type */
|
|
3533
|
+
editOptions?: string[];
|
|
3165
3534
|
}
|
|
3166
3535
|
interface SortEvent {
|
|
3167
3536
|
column: string;
|
|
3168
3537
|
direction: 'asc' | 'desc';
|
|
3169
3538
|
}
|
|
3539
|
+
interface CellEditEvent {
|
|
3540
|
+
row: Record<string, unknown>;
|
|
3541
|
+
column: string;
|
|
3542
|
+
oldValue: unknown;
|
|
3543
|
+
newValue: unknown;
|
|
3544
|
+
rowIndex: number;
|
|
3545
|
+
}
|
|
3546
|
+
interface SelectionChangeEvent {
|
|
3547
|
+
selected: Record<string, unknown>[];
|
|
3548
|
+
allSelected: boolean;
|
|
3549
|
+
}
|
|
3170
3550
|
type TableVariant = 'default' | 'striped' | 'bordered';
|
|
3171
3551
|
type TableSize = 'sm' | 'md' | 'lg';
|
|
3172
3552
|
/**
|
|
3173
|
-
* Table
|
|
3553
|
+
* Table component for displaying structured data in rows and columns.
|
|
3174
3554
|
*
|
|
3175
|
-
*
|
|
3555
|
+
* Features:
|
|
3556
|
+
* - Column-based sorting with sort direction indicators
|
|
3557
|
+
* - Variant styles (default, striped, bordered)
|
|
3558
|
+
* - Size presets (sm, md, lg)
|
|
3559
|
+
* - Hoverable row highlighting
|
|
3560
|
+
* - Custom cell templates via content projection
|
|
3561
|
+
* - Responsive horizontal scrolling
|
|
3562
|
+
* - Empty state text for no data
|
|
3563
|
+
* - Accessible with proper table semantics
|
|
3176
3564
|
*
|
|
3177
3565
|
* @example
|
|
3178
3566
|
* ```html
|
|
3179
|
-
* <lc-table
|
|
3180
|
-
*
|
|
3181
|
-
* [data]="data"
|
|
3182
|
-
* variant="striped"
|
|
3183
|
-
* [hoverable]="true"
|
|
3184
|
-
* (sort)="onSort($event)">
|
|
3185
|
-
* </lc-table>
|
|
3186
|
-
*
|
|
3187
|
-
* <!-- With custom cell templates -->
|
|
3188
|
-
* <lc-table [columns]="columns" [data]="data">
|
|
3189
|
-
* <ng-template lcTableCell="status" let-row>
|
|
3190
|
-
* <lc-badge [variant]="row.status">{{ row.status }}</lc-badge>
|
|
3191
|
-
* </ng-template>
|
|
3192
|
-
* </lc-table>
|
|
3567
|
+
* <lc-table [columns]="columns" [data]="data" variant="striped" [hoverable]="true"
|
|
3568
|
+
* (sort)="onSort($event)" (rowClick)="onRowClick($event)" />
|
|
3193
3569
|
* ```
|
|
3194
3570
|
*/
|
|
3195
3571
|
declare class TableComponent {
|
|
@@ -3209,82 +3585,107 @@ declare class TableComponent {
|
|
|
3209
3585
|
responsive: _angular_core.InputSignal<boolean>;
|
|
3210
3586
|
/** Text shown when data is empty */
|
|
3211
3587
|
emptyText: _angular_core.InputSignal<string>;
|
|
3588
|
+
/** Enable pagination */
|
|
3589
|
+
paginate: _angular_core.InputSignal<boolean>;
|
|
3590
|
+
/** Rows per page */
|
|
3591
|
+
pageSize: _angular_core.InputSignal<number>;
|
|
3592
|
+
/** Available page size options */
|
|
3593
|
+
pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
3594
|
+
/** Enable row selection checkboxes */
|
|
3595
|
+
selectable: _angular_core.InputSignal<boolean>;
|
|
3596
|
+
/** Enable per-column text filters */
|
|
3597
|
+
filterable: _angular_core.InputSignal<boolean>;
|
|
3598
|
+
/** Enable inline cell editing on double-click */
|
|
3599
|
+
editable: _angular_core.InputSignal<boolean>;
|
|
3212
3600
|
/** Emitted when a sortable column header is clicked */
|
|
3213
3601
|
readonly sort: _angular_core.OutputEmitterRef<SortEvent>;
|
|
3214
3602
|
/** Emitted when a row is clicked */
|
|
3215
3603
|
readonly rowClick: _angular_core.OutputEmitterRef<Record<string, unknown>>;
|
|
3216
|
-
/**
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
/**
|
|
3221
|
-
* Computed CSS classes for the wrapper element
|
|
3222
|
-
*/
|
|
3223
|
-
wrapperClasses: _angular_core.Signal<string>;
|
|
3224
|
-
/** Current sort state */
|
|
3604
|
+
/** Emitted when a cell is edited */
|
|
3605
|
+
readonly cellEdit: _angular_core.OutputEmitterRef<CellEditEvent>;
|
|
3606
|
+
/** Emitted when row selection changes */
|
|
3607
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<SelectionChangeEvent>;
|
|
3225
3608
|
protected currentSort: _angular_core.WritableSignal<{
|
|
3226
3609
|
column: string;
|
|
3227
3610
|
direction: "asc" | "desc";
|
|
3228
3611
|
} | null>;
|
|
3612
|
+
protected currentPage: _angular_core.WritableSignal<number>;
|
|
3613
|
+
protected internalPageSize: _angular_core.WritableSignal<number>;
|
|
3614
|
+
protected selectedRows: _angular_core.WritableSignal<Set<number>>;
|
|
3615
|
+
protected columnFilters: _angular_core.WritableSignal<Record<string, string>>;
|
|
3616
|
+
protected editingCell: _angular_core.WritableSignal<{
|
|
3617
|
+
rowIndex: number;
|
|
3618
|
+
column: string;
|
|
3619
|
+
} | null>;
|
|
3620
|
+
protected editValue: _angular_core.WritableSignal<string>;
|
|
3229
3621
|
/**
|
|
3230
|
-
*
|
|
3622
|
+
* Filtered data (applies column filters)
|
|
3231
3623
|
*/
|
|
3232
|
-
|
|
3624
|
+
protected readonly filteredData: _angular_core.Signal<Record<string, unknown>[]>;
|
|
3233
3625
|
/**
|
|
3234
|
-
*
|
|
3626
|
+
* Sorted data
|
|
3235
3627
|
*/
|
|
3236
|
-
|
|
3628
|
+
protected readonly sortedData: _angular_core.Signal<Record<string, unknown>[]>;
|
|
3237
3629
|
/**
|
|
3238
|
-
*
|
|
3630
|
+
* Paginated data (or all if pagination disabled)
|
|
3239
3631
|
*/
|
|
3240
|
-
|
|
3632
|
+
protected readonly displayData: _angular_core.Signal<Record<string, unknown>[]>;
|
|
3633
|
+
/** Total pages */
|
|
3634
|
+
protected readonly totalPages: _angular_core.Signal<number>;
|
|
3635
|
+
/** Total filtered row count */
|
|
3636
|
+
protected readonly totalRows: _angular_core.Signal<number>;
|
|
3637
|
+
/** Whether all visible rows are selected */
|
|
3638
|
+
protected readonly allSelected: _angular_core.Signal<boolean>;
|
|
3241
3639
|
/**
|
|
3242
|
-
*
|
|
3640
|
+
* Computed CSS classes for the table element
|
|
3243
3641
|
*/
|
|
3244
|
-
|
|
3642
|
+
tableClasses: _angular_core.Signal<string>;
|
|
3245
3643
|
/**
|
|
3246
|
-
*
|
|
3644
|
+
* Computed CSS classes for the wrapper element
|
|
3247
3645
|
*/
|
|
3646
|
+
wrapperClasses: _angular_core.Signal<string>;
|
|
3647
|
+
handleSort(columnKey: string): void;
|
|
3648
|
+
getSortState(columnKey: string): 'asc' | 'desc' | null;
|
|
3649
|
+
getAriaSort(columnKey: string): string | null;
|
|
3650
|
+
getHeaderClasses(column: TableColumn): string;
|
|
3248
3651
|
getCellValue(row: Record<string, unknown>, columnKey: string): unknown;
|
|
3249
|
-
/**
|
|
3250
|
-
* Get custom template for a column if it exists
|
|
3251
|
-
*/
|
|
3252
3652
|
getCellTemplate(columnKey: string): TableCellDirective | undefined;
|
|
3253
|
-
/**
|
|
3254
|
-
* Check if a column has a custom template
|
|
3255
|
-
*/
|
|
3256
3653
|
hasCustomTemplate(columnKey: string): boolean;
|
|
3257
|
-
/**
|
|
3258
|
-
* Handle row click
|
|
3259
|
-
*/
|
|
3260
3654
|
onRowClick(row: Record<string, unknown>): void;
|
|
3655
|
+
protected goToPage(page: number): void;
|
|
3656
|
+
protected onPageSizeChange(event: Event): void;
|
|
3657
|
+
protected get paginationStart(): number;
|
|
3658
|
+
protected get paginationEnd(): number;
|
|
3659
|
+
protected toggleSelectAll(): void;
|
|
3660
|
+
protected toggleRowSelect(relativeIndex: number): void;
|
|
3661
|
+
protected isRowSelected(relativeIndex: number): boolean;
|
|
3662
|
+
private getAbsoluteIndex;
|
|
3663
|
+
private emitSelectionChange;
|
|
3664
|
+
protected onFilterChange(columnKey: string, event: Event): void;
|
|
3665
|
+
protected getFilterValue(columnKey: string): string;
|
|
3666
|
+
protected startEdit(rowIndex: number, column: string, currentValue: unknown): void;
|
|
3667
|
+
protected isEditing(rowIndex: number, column: string): boolean;
|
|
3668
|
+
protected commitEdit(rowIndex: number, column: string): void;
|
|
3669
|
+
protected cancelEdit(): void;
|
|
3670
|
+
protected onEditKeydown(event: KeyboardEvent, rowIndex: number, column: string): void;
|
|
3261
3671
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
|
|
3262
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "lc-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "sort": "sort"; "rowClick": "rowClick"; }, ["cellTemplates"], never, true, never>;
|
|
3672
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "lc-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "paginate": { "alias": "paginate"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, { "sort": "sort"; "rowClick": "rowClick"; "cellEdit": "cellEdit"; "selectionChange": "selectionChange"; }, ["cellTemplates"], never, true, never>;
|
|
3263
3673
|
}
|
|
3264
3674
|
|
|
3265
3675
|
/**
|
|
3266
|
-
* Field
|
|
3267
|
-
* Useful for read-only data displays like profile pages, detail views, etc.
|
|
3676
|
+
* Field group component for displaying label-value pairs.
|
|
3268
3677
|
*
|
|
3269
|
-
*
|
|
3270
|
-
*
|
|
3271
|
-
*
|
|
3272
|
-
*
|
|
3273
|
-
*
|
|
3274
|
-
*
|
|
3275
|
-
* ```html
|
|
3276
|
-
* <lc-field-group
|
|
3277
|
-
* label="Language"
|
|
3278
|
-
* value="English (US)"
|
|
3279
|
-
* icon="globe-alt">
|
|
3280
|
-
* </lc-field-group>
|
|
3281
|
-
* ```
|
|
3678
|
+
* Features:
|
|
3679
|
+
* - Consistent label-value layout for read-only data
|
|
3680
|
+
* - Optional leading icon from Heroicons
|
|
3681
|
+
* - Compact mode for dense layouts
|
|
3682
|
+
* - Content projection for custom value rendering
|
|
3683
|
+
* - Configurable icon size (xs, sm, md)
|
|
3282
3684
|
*
|
|
3283
|
-
* @example
|
|
3685
|
+
* @example
|
|
3284
3686
|
* ```html
|
|
3285
|
-
* <lc-field-group label="
|
|
3286
|
-
*
|
|
3287
|
-
* </lc-field-group>
|
|
3687
|
+
* <lc-field-group label="Email" value="user@example.com" />
|
|
3688
|
+
* <lc-field-group label="Language" value="English" icon="globe-alt" />
|
|
3288
3689
|
* ```
|
|
3289
3690
|
*/
|
|
3290
3691
|
declare class FieldGroupComponent {
|
|
@@ -3321,24 +3722,21 @@ interface StepperStep {
|
|
|
3321
3722
|
}
|
|
3322
3723
|
type StepState = 'pending' | 'active' | 'completed';
|
|
3323
3724
|
/**
|
|
3324
|
-
* Stepper
|
|
3725
|
+
* Stepper component for multi-step wizard workflows.
|
|
3325
3726
|
*
|
|
3326
|
-
*
|
|
3327
|
-
*
|
|
3727
|
+
* Features:
|
|
3728
|
+
* - Horizontal and vertical orientations
|
|
3729
|
+
* - Active, completed, and pending step states
|
|
3730
|
+
* - Numbered step indicators with checkmark on completion
|
|
3731
|
+
* - Optional step descriptions and "optional" labels
|
|
3732
|
+
* - Linear mode restricting navigation to sequential steps
|
|
3733
|
+
* - Two-way active step binding
|
|
3734
|
+
* - Content projection for step body
|
|
3328
3735
|
*
|
|
3329
3736
|
* @example
|
|
3330
3737
|
* ```html
|
|
3331
|
-
* <lc-stepper
|
|
3332
|
-
*
|
|
3333
|
-
* [(activeStep)]="currentStep"
|
|
3334
|
-
* (stepChange)="onStep($event)"
|
|
3335
|
-
* >
|
|
3336
|
-
* @if (currentStep === 0) {
|
|
3337
|
-
* <div class="step-content">Step 1 content</div>
|
|
3338
|
-
* }
|
|
3339
|
-
* @if (currentStep === 1) {
|
|
3340
|
-
* <div class="step-content">Step 2 content</div>
|
|
3341
|
-
* }
|
|
3738
|
+
* <lc-stepper [steps]="steps" [(activeStep)]="currentStep">
|
|
3739
|
+
* <div>Step content here</div>
|
|
3342
3740
|
* </lc-stepper>
|
|
3343
3741
|
* ```
|
|
3344
3742
|
*/
|
|
@@ -3350,7 +3748,7 @@ declare class StepperComponent {
|
|
|
3350
3748
|
/** Whether completed steps can be clicked to navigate back */
|
|
3351
3749
|
linear: _angular_core.InputSignal<boolean>;
|
|
3352
3750
|
/** Orientation */
|
|
3353
|
-
orientation: _angular_core.InputSignal<"
|
|
3751
|
+
orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
3354
3752
|
/** Emitted when active step changes */
|
|
3355
3753
|
stepChange: _angular_core.OutputEmitterRef<number>;
|
|
3356
3754
|
/** Computed total step count */
|
|
@@ -3399,10 +3797,15 @@ interface FilterValues {
|
|
|
3399
3797
|
[key: string]: string;
|
|
3400
3798
|
}
|
|
3401
3799
|
/**
|
|
3402
|
-
*
|
|
3800
|
+
* Filter bar component for composable data filtering.
|
|
3403
3801
|
*
|
|
3404
|
-
*
|
|
3405
|
-
*
|
|
3802
|
+
* Features:
|
|
3803
|
+
* - Select dropdowns, toggle groups, and search inputs
|
|
3804
|
+
* - Declarative filter configuration via FilterConfig array
|
|
3805
|
+
* - Two-way filter values binding
|
|
3806
|
+
* - Responsive horizontal flex layout
|
|
3807
|
+
* - Size variants (sm, md)
|
|
3808
|
+
* - Dark mode support
|
|
3406
3809
|
*
|
|
3407
3810
|
* @example
|
|
3408
3811
|
* ```html
|
|
@@ -3410,7 +3813,7 @@ interface FilterValues {
|
|
|
3410
3813
|
* [filters]="filterConfig"
|
|
3411
3814
|
* [values]="currentFilters"
|
|
3412
3815
|
* (valuesChange)="onFilterChange($event)"
|
|
3413
|
-
*
|
|
3816
|
+
* />
|
|
3414
3817
|
* ```
|
|
3415
3818
|
*/
|
|
3416
3819
|
declare class FilterBarComponent {
|
|
@@ -3440,21 +3843,19 @@ declare class FilterBarComponent {
|
|
|
3440
3843
|
|
|
3441
3844
|
type SpinnerSize = 'sm' | 'md' | 'lg';
|
|
3442
3845
|
/**
|
|
3443
|
-
* Spinner component for loading
|
|
3846
|
+
* Spinner component for loading state indication.
|
|
3444
3847
|
*
|
|
3445
|
-
*
|
|
3446
|
-
*
|
|
3848
|
+
* Features:
|
|
3849
|
+
* - Animated spinning indicator
|
|
3850
|
+
* - Size variants (sm, md, lg)
|
|
3851
|
+
* - Optional message text below spinner
|
|
3852
|
+
* - Design system color token integration
|
|
3853
|
+
* - Accessible with ARIA status role
|
|
3447
3854
|
*
|
|
3448
3855
|
* @example
|
|
3449
3856
|
* ```html
|
|
3450
|
-
* <!-- Simple spinner -->
|
|
3451
3857
|
* <lc-spinner />
|
|
3452
|
-
*
|
|
3453
|
-
* <!-- With message -->
|
|
3454
|
-
* <lc-spinner message="Loading data..." />
|
|
3455
|
-
*
|
|
3456
|
-
* <!-- Large spinner -->
|
|
3457
|
-
* <lc-spinner size="lg" message="Loading dashboard..." />
|
|
3858
|
+
* <lc-spinner size="lg" message="Loading data..." />
|
|
3458
3859
|
* ```
|
|
3459
3860
|
*/
|
|
3460
3861
|
declare class SpinnerComponent {
|
|
@@ -3476,22 +3877,18 @@ type SkeletonVariant = 'line' | 'circle' | 'rect';
|
|
|
3476
3877
|
/**
|
|
3477
3878
|
* Skeleton loader component for placeholder loading states.
|
|
3478
3879
|
*
|
|
3479
|
-
*
|
|
3480
|
-
*
|
|
3880
|
+
* Features:
|
|
3881
|
+
* - Variant shapes (text, rect, circle)
|
|
3882
|
+
* - Shimmer animation effect
|
|
3883
|
+
* - Custom width, height, and border radius
|
|
3884
|
+
* - Composable for building complex loading layouts
|
|
3885
|
+
* - Dark mode compatible
|
|
3481
3886
|
*
|
|
3482
3887
|
* @example
|
|
3483
3888
|
* ```html
|
|
3484
|
-
* <!-- Text line (default) -->
|
|
3485
3889
|
* <lc-skeleton />
|
|
3486
|
-
*
|
|
3487
|
-
* <!-- Custom width/height -->
|
|
3488
|
-
* <lc-skeleton width="200px" height="1.75rem" />
|
|
3489
|
-
*
|
|
3490
|
-
* <!-- Circle avatar placeholder -->
|
|
3491
3890
|
* <lc-skeleton variant="circle" width="40px" height="40px" />
|
|
3492
|
-
*
|
|
3493
|
-
* <!-- Full-width rectangle (e.g. chart area) -->
|
|
3494
|
-
* <lc-skeleton variant="rect" width="100%" height="400px" borderRadius="0.5rem" />
|
|
3891
|
+
* <lc-skeleton variant="rect" width="100%" height="400px" />
|
|
3495
3892
|
* ```
|
|
3496
3893
|
*/
|
|
3497
3894
|
declare class SkeletonComponent {
|
|
@@ -3517,24 +3914,21 @@ declare class SkeletonComponent {
|
|
|
3517
3914
|
|
|
3518
3915
|
type EmptyStateSize = 'sm' | 'md' | 'lg';
|
|
3519
3916
|
/**
|
|
3520
|
-
* Empty
|
|
3917
|
+
* Empty state component for "no data" placeholder displays.
|
|
3521
3918
|
*
|
|
3522
|
-
*
|
|
3523
|
-
*
|
|
3919
|
+
* Features:
|
|
3920
|
+
* - Compact (sm) and page-level (md, lg) size modes
|
|
3921
|
+
* - Optional icon from Heroicons library
|
|
3922
|
+
* - Heading and description text
|
|
3923
|
+
* - Action slot for projected CTA buttons
|
|
3924
|
+
* - Centered layout with visual hierarchy
|
|
3524
3925
|
*
|
|
3525
3926
|
* @example
|
|
3526
3927
|
* ```html
|
|
3527
|
-
* <!-- Inline / card-level (sm) -->
|
|
3528
|
-
* <lc-empty-state
|
|
3529
|
-
* size="sm"
|
|
3530
|
-
* message="No signals generated for this asset yet." />
|
|
3531
|
-
*
|
|
3532
|
-
* <!-- Page-level with icon + action -->
|
|
3533
3928
|
* <lc-empty-state
|
|
3534
3929
|
* icon="chart-bar"
|
|
3535
|
-
* heading="No
|
|
3536
|
-
* message="
|
|
3537
|
-
* >
|
|
3930
|
+
* heading="No Data"
|
|
3931
|
+
* message="No items found.">
|
|
3538
3932
|
* <lc-button variant="primary">Get Started</lc-button>
|
|
3539
3933
|
* </lc-empty-state>
|
|
3540
3934
|
* ```
|
|
@@ -3568,11 +3962,16 @@ declare class EmptyStateComponent {
|
|
|
3568
3962
|
type DrawerPosition = 'left' | 'right';
|
|
3569
3963
|
type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
3570
3964
|
/**
|
|
3571
|
-
* Drawer
|
|
3965
|
+
* Drawer component for slide-out overlay panels.
|
|
3572
3966
|
*
|
|
3573
|
-
*
|
|
3574
|
-
*
|
|
3575
|
-
*
|
|
3967
|
+
* Features:
|
|
3968
|
+
* - Slide-in from left, right, top, or bottom
|
|
3969
|
+
* - Size presets (sm, md, lg, xl, full)
|
|
3970
|
+
* - Optional backdrop overlay with click-to-close
|
|
3971
|
+
* - Close on Escape key support
|
|
3972
|
+
* - Heading text display
|
|
3973
|
+
* - Content projection for arbitrary body content
|
|
3974
|
+
* - Accessible with ARIA dialog role
|
|
3576
3975
|
*
|
|
3577
3976
|
* @example
|
|
3578
3977
|
* ```html
|
|
@@ -3617,5 +4016,1914 @@ declare class DrawerComponent {
|
|
|
3617
4016
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "lc-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "hasOverlay": { "alias": "hasOverlay"; "required": false; "isSignal": true; }; "closeOnOverlayClick": { "alias": "closeOnOverlayClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
3618
4017
|
}
|
|
3619
4018
|
|
|
3620
|
-
|
|
3621
|
-
|
|
4019
|
+
interface TimelineItem {
|
|
4020
|
+
/** Title of the event */
|
|
4021
|
+
title: string;
|
|
4022
|
+
/** Optional description */
|
|
4023
|
+
description?: string;
|
|
4024
|
+
/** Optional timestamp string */
|
|
4025
|
+
timestamp?: string;
|
|
4026
|
+
/** Optional icon name (heroicon) */
|
|
4027
|
+
icon?: string;
|
|
4028
|
+
/** Optional color for the dot/icon */
|
|
4029
|
+
color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';
|
|
4030
|
+
}
|
|
4031
|
+
type TimelineOrientation = 'vertical' | 'horizontal';
|
|
4032
|
+
/**
|
|
4033
|
+
* Timeline component for chronological event display.
|
|
4034
|
+
*
|
|
4035
|
+
* Features:
|
|
4036
|
+
* - Vertical timeline with connecting line
|
|
4037
|
+
* - Semantic status colors per event (info, success, warning, error)
|
|
4038
|
+
* - Date and description display per item
|
|
4039
|
+
* - Icon support for timeline markers
|
|
4040
|
+
* - Dark mode support
|
|
4041
|
+
*
|
|
4042
|
+
* @example
|
|
4043
|
+
* ```html
|
|
4044
|
+
* <lc-timeline [items]="events"></lc-timeline>
|
|
4045
|
+
* ```
|
|
4046
|
+
*/
|
|
4047
|
+
declare class TimelineComponent {
|
|
4048
|
+
/**
|
|
4049
|
+
* List of timeline events.
|
|
4050
|
+
*/
|
|
4051
|
+
items: _angular_core.InputSignal<TimelineItem[]>;
|
|
4052
|
+
/**
|
|
4053
|
+
* Layout orientation.
|
|
4054
|
+
* @default 'vertical'
|
|
4055
|
+
*/
|
|
4056
|
+
orientation: _angular_core.InputSignal<TimelineOrientation>;
|
|
4057
|
+
/**
|
|
4058
|
+
* Compact mode reduces spacing.
|
|
4059
|
+
* @default false
|
|
4060
|
+
*/
|
|
4061
|
+
compact: _angular_core.InputSignal<boolean>;
|
|
4062
|
+
protected timelineClasses: _angular_core.Signal<string>;
|
|
4063
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineComponent, never>;
|
|
4064
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "lc-timeline", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4065
|
+
}
|
|
4066
|
+
|
|
4067
|
+
interface AvatarGroupItem {
|
|
4068
|
+
/** Image source URL */
|
|
4069
|
+
src?: string;
|
|
4070
|
+
/** Alt text */
|
|
4071
|
+
alt?: string;
|
|
4072
|
+
/** Full name for initials fallback */
|
|
4073
|
+
name?: string;
|
|
4074
|
+
}
|
|
4075
|
+
declare class AvatarGroupComponent {
|
|
4076
|
+
/** List of avatars to show */
|
|
4077
|
+
avatars: _angular_core.InputSignal<AvatarGroupItem[]>;
|
|
4078
|
+
/** Avatar size */
|
|
4079
|
+
size: _angular_core.InputSignal<AvatarSize>;
|
|
4080
|
+
/** Maximum visible avatars before showing overflow count */
|
|
4081
|
+
max: _angular_core.InputSignal<number>;
|
|
4082
|
+
protected visibleAvatars: _angular_core.Signal<AvatarGroupItem[]>;
|
|
4083
|
+
protected overflowCount: _angular_core.Signal<number>;
|
|
4084
|
+
protected groupClasses: _angular_core.Signal<string>;
|
|
4085
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarGroupComponent, never>;
|
|
4086
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarGroupComponent, "lc-avatar-group", never, { "avatars": { "alias": "avatars"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4087
|
+
}
|
|
4088
|
+
|
|
4089
|
+
declare class SliderComponent implements ControlValueAccessor {
|
|
4090
|
+
/** Minimum value */
|
|
4091
|
+
min: _angular_core.InputSignal<number>;
|
|
4092
|
+
/** Maximum value */
|
|
4093
|
+
max: _angular_core.InputSignal<number>;
|
|
4094
|
+
/** Step increment */
|
|
4095
|
+
step: _angular_core.InputSignal<number>;
|
|
4096
|
+
/** Label text */
|
|
4097
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
4098
|
+
/** Whether to show the current value */
|
|
4099
|
+
showValue: _angular_core.InputSignal<boolean>;
|
|
4100
|
+
/** Disabled state */
|
|
4101
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4102
|
+
/** Emits the current value on change */
|
|
4103
|
+
valueChange: _angular_core.OutputEmitterRef<number>;
|
|
4104
|
+
/** Internal value */
|
|
4105
|
+
protected value: _angular_core.WritableSignal<number>;
|
|
4106
|
+
/** Internal disabled state — merged from input + CVA */
|
|
4107
|
+
protected isDisabled: _angular_core.WritableSignal<boolean>;
|
|
4108
|
+
/** Percentage for fill track */
|
|
4109
|
+
protected fillPercentage: _angular_core.Signal<number>;
|
|
4110
|
+
protected sliderClasses: _angular_core.Signal<string>;
|
|
4111
|
+
private onChange;
|
|
4112
|
+
private onTouched;
|
|
4113
|
+
onInput(event: Event): void;
|
|
4114
|
+
onBlur(): void;
|
|
4115
|
+
writeValue(val: number): void;
|
|
4116
|
+
registerOnChange(fn: (val: number) => void): void;
|
|
4117
|
+
registerOnTouched(fn: () => void): void;
|
|
4118
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4119
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
|
|
4120
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "lc-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
4121
|
+
}
|
|
4122
|
+
|
|
4123
|
+
declare class NumberInputComponent implements ControlValueAccessor {
|
|
4124
|
+
/** Minimum value */
|
|
4125
|
+
min: _angular_core.InputSignal<number | undefined>;
|
|
4126
|
+
/** Maximum value */
|
|
4127
|
+
max: _angular_core.InputSignal<number | undefined>;
|
|
4128
|
+
/** Step increment */
|
|
4129
|
+
step: _angular_core.InputSignal<number>;
|
|
4130
|
+
/** Label text */
|
|
4131
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
4132
|
+
/** Placeholder */
|
|
4133
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
4134
|
+
/** Disabled state */
|
|
4135
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4136
|
+
/** Emits value on change */
|
|
4137
|
+
valueChange: _angular_core.OutputEmitterRef<number>;
|
|
4138
|
+
protected value: _angular_core.WritableSignal<number | null>;
|
|
4139
|
+
protected isDisabled: _angular_core.WritableSignal<boolean>;
|
|
4140
|
+
protected containerClasses: _angular_core.Signal<string>;
|
|
4141
|
+
protected canDecrement: _angular_core.Signal<boolean>;
|
|
4142
|
+
protected canIncrement: _angular_core.Signal<boolean>;
|
|
4143
|
+
private onChange;
|
|
4144
|
+
private onTouched;
|
|
4145
|
+
decrement(): void;
|
|
4146
|
+
increment(): void;
|
|
4147
|
+
onInput(event: Event): void;
|
|
4148
|
+
onBlur(): void;
|
|
4149
|
+
private setValue;
|
|
4150
|
+
writeValue(val: number | null): void;
|
|
4151
|
+
registerOnChange(fn: (val: number | null) => void): void;
|
|
4152
|
+
registerOnTouched(fn: () => void): void;
|
|
4153
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInputComponent, never>;
|
|
4155
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInputComponent, "lc-number-input", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
4156
|
+
}
|
|
4157
|
+
|
|
4158
|
+
type CalloutVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';
|
|
4159
|
+
declare class CalloutComponent {
|
|
4160
|
+
/** Visual variant */
|
|
4161
|
+
variant: _angular_core.InputSignal<CalloutVariant>;
|
|
4162
|
+
/** Title text (optional) */
|
|
4163
|
+
title: _angular_core.InputSignal<string | undefined>;
|
|
4164
|
+
/** Whether the callout can be dismissed */
|
|
4165
|
+
dismissible: _angular_core.InputSignal<boolean>;
|
|
4166
|
+
/** Emits when dismiss button is clicked */
|
|
4167
|
+
dismissed: _angular_core.OutputEmitterRef<void>;
|
|
4168
|
+
protected visible: _angular_core.WritableSignal<boolean>;
|
|
4169
|
+
protected calloutClasses: _angular_core.Signal<string>;
|
|
4170
|
+
protected iconName: _angular_core.Signal<string>;
|
|
4171
|
+
dismiss(): void;
|
|
4172
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CalloutComponent, never>;
|
|
4173
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalloutComponent, "lc-callout", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*"], true, never>;
|
|
4174
|
+
}
|
|
4175
|
+
|
|
4176
|
+
type RatingSize = 'sm' | 'md' | 'lg';
|
|
4177
|
+
declare class RatingComponent implements ControlValueAccessor {
|
|
4178
|
+
/** Maximum number of stars */
|
|
4179
|
+
max: _angular_core.InputSignal<number>;
|
|
4180
|
+
/** Size variant */
|
|
4181
|
+
size: _angular_core.InputSignal<RatingSize>;
|
|
4182
|
+
/** Whether the rating is read-only */
|
|
4183
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
4184
|
+
/** Whether the rating is disabled */
|
|
4185
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4186
|
+
/** Whether to allow half-star ratings */
|
|
4187
|
+
allowHalf: _angular_core.InputSignal<boolean>;
|
|
4188
|
+
/** Label text */
|
|
4189
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
4190
|
+
/** Whether to show the numeric value */
|
|
4191
|
+
showValue: _angular_core.InputSignal<boolean>;
|
|
4192
|
+
/** Emits the selected rating */
|
|
4193
|
+
ratingChange: _angular_core.OutputEmitterRef<number>;
|
|
4194
|
+
protected value: _angular_core.WritableSignal<number>;
|
|
4195
|
+
protected hoveredValue: _angular_core.WritableSignal<number>;
|
|
4196
|
+
protected isDisabled: _angular_core.WritableSignal<boolean>;
|
|
4197
|
+
protected stars: _angular_core.Signal<number[]>;
|
|
4198
|
+
protected ratingClasses: _angular_core.Signal<string>;
|
|
4199
|
+
protected getStarState(star: number): 'full' | 'half' | 'empty';
|
|
4200
|
+
protected getStarIcon(star: number): string;
|
|
4201
|
+
protected isStarFilled(star: number): boolean;
|
|
4202
|
+
protected isStarHalf(star: number): boolean;
|
|
4203
|
+
protected onStarClick(star: number): void;
|
|
4204
|
+
protected onStarHover(star: number): void;
|
|
4205
|
+
protected onMouseLeave(): void;
|
|
4206
|
+
private onChange;
|
|
4207
|
+
private onTouched;
|
|
4208
|
+
writeValue(val: number): void;
|
|
4209
|
+
registerOnChange(fn: (val: number) => void): void;
|
|
4210
|
+
registerOnTouched(fn: () => void): void;
|
|
4211
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4212
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingComponent, never>;
|
|
4213
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RatingComponent, "lc-rating", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; }, { "ratingChange": "ratingChange"; }, never, never, true, never>;
|
|
4214
|
+
}
|
|
4215
|
+
|
|
4216
|
+
declare class ColorPickerComponent implements ControlValueAccessor {
|
|
4217
|
+
/** Label text */
|
|
4218
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
4219
|
+
/** Predefined color swatches */
|
|
4220
|
+
swatches: _angular_core.InputSignal<string[]>;
|
|
4221
|
+
/** Whether to show the hex input field */
|
|
4222
|
+
showInput: _angular_core.InputSignal<boolean>;
|
|
4223
|
+
/** Whether the picker is disabled */
|
|
4224
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4225
|
+
/** Emits the selected color hex value */
|
|
4226
|
+
colorChange: _angular_core.OutputEmitterRef<string>;
|
|
4227
|
+
protected value: _angular_core.WritableSignal<string>;
|
|
4228
|
+
protected isDisabled: _angular_core.WritableSignal<boolean>;
|
|
4229
|
+
protected pickerClasses: _angular_core.Signal<string>;
|
|
4230
|
+
private onChange;
|
|
4231
|
+
private onTouched;
|
|
4232
|
+
protected selectSwatch(color: string): void;
|
|
4233
|
+
protected onNativeInput(event: Event): void;
|
|
4234
|
+
protected onHexInput(event: Event): void;
|
|
4235
|
+
protected onBlur(): void;
|
|
4236
|
+
private setValue;
|
|
4237
|
+
writeValue(val: string): void;
|
|
4238
|
+
registerOnChange(fn: (val: string) => void): void;
|
|
4239
|
+
registerOnTouched(fn: () => void): void;
|
|
4240
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4241
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
|
|
4242
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorPickerComponent, "lc-color-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "swatches": { "alias": "swatches"; "required": false; "isSignal": true; }; "showInput": { "alias": "showInput"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "colorChange": "colorChange"; }, never, never, true, never>;
|
|
4243
|
+
}
|
|
4244
|
+
|
|
4245
|
+
type CodeBlockLanguage = 'typescript' | 'javascript' | 'html' | 'css' | 'scss' | 'json' | 'bash' | 'python' | 'java' | 'text';
|
|
4246
|
+
declare class CodeBlockComponent {
|
|
4247
|
+
private sanitizer;
|
|
4248
|
+
/** Code content to display */
|
|
4249
|
+
code: _angular_core.InputSignal<string>;
|
|
4250
|
+
/** Language label */
|
|
4251
|
+
language: _angular_core.InputSignal<CodeBlockLanguage>;
|
|
4252
|
+
/** Optional filename to display */
|
|
4253
|
+
filename: _angular_core.InputSignal<string | undefined>;
|
|
4254
|
+
/** Whether to show line numbers */
|
|
4255
|
+
showLineNumbers: _angular_core.InputSignal<boolean>;
|
|
4256
|
+
/** Whether to show copy button */
|
|
4257
|
+
showCopy: _angular_core.InputSignal<boolean>;
|
|
4258
|
+
/** Whether the code block has a header bar */
|
|
4259
|
+
showHeader: _angular_core.InputSignal<boolean>;
|
|
4260
|
+
protected copied: _angular_core.WritableSignal<boolean>;
|
|
4261
|
+
constructor(sanitizer: DomSanitizer);
|
|
4262
|
+
protected highlightedLines: _angular_core.Signal<SafeHtml[]>;
|
|
4263
|
+
protected lineNumbers: _angular_core.Signal<number[]>;
|
|
4264
|
+
protected headerLabel: _angular_core.Signal<string>;
|
|
4265
|
+
protected codeClasses: _angular_core.Signal<string>;
|
|
4266
|
+
protected copyToClipboard(): Promise<void>;
|
|
4267
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeBlockComponent, never>;
|
|
4268
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeBlockComponent, "lc-code-block", never, { "code": { "alias": "code"; "required": true; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; "showCopy": { "alias": "showCopy"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4269
|
+
}
|
|
4270
|
+
|
|
4271
|
+
interface FooterLink {
|
|
4272
|
+
/** Display label */
|
|
4273
|
+
label: string;
|
|
4274
|
+
/** URL or route */
|
|
4275
|
+
href: string;
|
|
4276
|
+
/** Whether it opens in a new tab */
|
|
4277
|
+
external?: boolean;
|
|
4278
|
+
}
|
|
4279
|
+
interface FooterSection {
|
|
4280
|
+
/** Section heading */
|
|
4281
|
+
title: string;
|
|
4282
|
+
/** Links in this section */
|
|
4283
|
+
links: FooterLink[];
|
|
4284
|
+
}
|
|
4285
|
+
type FooterVariant = 'default' | 'primary' | 'dark' | 'neutral';
|
|
4286
|
+
declare class FooterComponent {
|
|
4287
|
+
/** Footer navigation sections */
|
|
4288
|
+
sections: _angular_core.InputSignal<FooterSection[]>;
|
|
4289
|
+
/** Copyright text */
|
|
4290
|
+
copyright: _angular_core.InputSignal<string | undefined>;
|
|
4291
|
+
/** Whether to show a top border */
|
|
4292
|
+
showBorder: _angular_core.InputSignal<boolean>;
|
|
4293
|
+
/** Compact layout (single row) */
|
|
4294
|
+
compact: _angular_core.InputSignal<boolean>;
|
|
4295
|
+
/** Color variant */
|
|
4296
|
+
variant: _angular_core.InputSignal<FooterVariant>;
|
|
4297
|
+
protected footerClasses: _angular_core.Signal<string>;
|
|
4298
|
+
protected currentYear: number;
|
|
4299
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FooterComponent, never>;
|
|
4300
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FooterComponent, "lc-footer", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "copyright": { "alias": "copyright"; "required": false; "isSignal": true; }; "showBorder": { "alias": "showBorder"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4301
|
+
}
|
|
4302
|
+
|
|
4303
|
+
type SparklineColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
4304
|
+
type SparklineCurve = 'linear' | 'smooth';
|
|
4305
|
+
declare class SparklineComponent {
|
|
4306
|
+
/** Data points to plot. */
|
|
4307
|
+
data: _angular_core.InputSignal<number[]>;
|
|
4308
|
+
/** Stroke color theme. */
|
|
4309
|
+
color: _angular_core.InputSignal<SparklineColor>;
|
|
4310
|
+
/** Width of the SVG in pixels. */
|
|
4311
|
+
width: _angular_core.InputSignal<number>;
|
|
4312
|
+
/** Height of the SVG in pixels. */
|
|
4313
|
+
height: _angular_core.InputSignal<number>;
|
|
4314
|
+
/** Stroke width in pixels. */
|
|
4315
|
+
strokeWidth: _angular_core.InputSignal<number>;
|
|
4316
|
+
/** Show a filled area under the line. */
|
|
4317
|
+
filled: _angular_core.InputSignal<boolean>;
|
|
4318
|
+
/** Curve interpolation mode. */
|
|
4319
|
+
curve: _angular_core.InputSignal<SparklineCurve>;
|
|
4320
|
+
/** Show a dot on the last data point. */
|
|
4321
|
+
showEndDot: _angular_core.InputSignal<boolean>;
|
|
4322
|
+
protected readonly colorVar: _angular_core.Signal<string>;
|
|
4323
|
+
protected readonly fillColorVar: _angular_core.Signal<string>;
|
|
4324
|
+
protected readonly pathD: _angular_core.Signal<string>;
|
|
4325
|
+
protected readonly areaD: _angular_core.Signal<string>;
|
|
4326
|
+
protected readonly endDot: _angular_core.Signal<{
|
|
4327
|
+
cx: number;
|
|
4328
|
+
cy: number;
|
|
4329
|
+
r: number;
|
|
4330
|
+
} | null>;
|
|
4331
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4332
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SparklineComponent, never>;
|
|
4333
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SparklineComponent, "lc-sparkline", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "showEndDot": { "alias": "showEndDot"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4334
|
+
}
|
|
4335
|
+
|
|
4336
|
+
type StatTrendDirection = 'up' | 'down' | 'neutral';
|
|
4337
|
+
declare class StatTrendComponent {
|
|
4338
|
+
/** Main KPI label. */
|
|
4339
|
+
label: _angular_core.InputSignal<string>;
|
|
4340
|
+
/** Main KPI value to display. */
|
|
4341
|
+
value: _angular_core.InputSignal<string>;
|
|
4342
|
+
/** Change value text, e.g. "+12%" or "-3.5%". */
|
|
4343
|
+
change: _angular_core.InputSignal<string>;
|
|
4344
|
+
/** Trend direction for color coding. Auto-detected from change if not set. */
|
|
4345
|
+
direction: _angular_core.InputSignal<StatTrendDirection | undefined>;
|
|
4346
|
+
/** Sparkline data points. If empty, no sparkline is shown. */
|
|
4347
|
+
sparklineData: _angular_core.InputSignal<number[]>;
|
|
4348
|
+
/** Color of the sparkline. Auto-matched to trend direction if not set. */
|
|
4349
|
+
sparklineColor: _angular_core.InputSignal<SparklineColor | undefined>;
|
|
4350
|
+
/** Optional icon name (Heroicon). */
|
|
4351
|
+
icon: _angular_core.InputSignal<string>;
|
|
4352
|
+
protected readonly resolvedDirection: _angular_core.Signal<StatTrendDirection>;
|
|
4353
|
+
protected readonly trendColorClass: _angular_core.Signal<string>;
|
|
4354
|
+
protected readonly resolvedSparklineColor: _angular_core.Signal<SparklineColor>;
|
|
4355
|
+
protected readonly trendIcon: _angular_core.Signal<string>;
|
|
4356
|
+
protected readonly hasSparkline: _angular_core.Signal<boolean>;
|
|
4357
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatTrendComponent, never>;
|
|
4358
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatTrendComponent, "lc-stat-trend", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "change": { "alias": "change"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "sparklineData": { "alias": "sparklineData"; "required": false; "isSignal": true; }; "sparklineColor": { "alias": "sparklineColor"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4359
|
+
}
|
|
4360
|
+
|
|
4361
|
+
interface DonutSegment {
|
|
4362
|
+
value: number;
|
|
4363
|
+
label?: string;
|
|
4364
|
+
color?: string;
|
|
4365
|
+
}
|
|
4366
|
+
type DonutChartSize = 'sm' | 'md' | 'lg';
|
|
4367
|
+
declare class DonutChartComponent {
|
|
4368
|
+
/** Segments to render. */
|
|
4369
|
+
segments: _angular_core.InputSignal<DonutSegment[]>;
|
|
4370
|
+
/** Size preset. */
|
|
4371
|
+
size: _angular_core.InputSignal<DonutChartSize>;
|
|
4372
|
+
/** Thickness of the donut ring (0-1 ratio of radius). */
|
|
4373
|
+
thickness: _angular_core.InputSignal<number>;
|
|
4374
|
+
/** Show the center label area. */
|
|
4375
|
+
showCenter: _angular_core.InputSignal<boolean>;
|
|
4376
|
+
/** Center label text. */
|
|
4377
|
+
centerLabel: _angular_core.InputSignal<string>;
|
|
4378
|
+
/** Center value text (large number). */
|
|
4379
|
+
centerValue: _angular_core.InputSignal<string>;
|
|
4380
|
+
/** Show legend below the chart. */
|
|
4381
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4382
|
+
protected readonly sizeMap: Record<DonutChartSize, number>;
|
|
4383
|
+
protected readonly svgSize: _angular_core.Signal<number>;
|
|
4384
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4385
|
+
protected readonly center: _angular_core.Signal<number>;
|
|
4386
|
+
protected readonly outerRadius: _angular_core.Signal<number>;
|
|
4387
|
+
protected readonly innerRadius: _angular_core.Signal<number>;
|
|
4388
|
+
protected readonly arcs: _angular_core.Signal<{
|
|
4389
|
+
d: string;
|
|
4390
|
+
color: string;
|
|
4391
|
+
label: string;
|
|
4392
|
+
value: number;
|
|
4393
|
+
percentage: number;
|
|
4394
|
+
}[]>;
|
|
4395
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4396
|
+
color: string;
|
|
4397
|
+
label: string;
|
|
4398
|
+
value: number;
|
|
4399
|
+
percentage: number;
|
|
4400
|
+
}[]>;
|
|
4401
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DonutChartComponent, never>;
|
|
4402
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DonutChartComponent, "lc-donut-chart", never, { "segments": { "alias": "segments"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "showCenter": { "alias": "showCenter"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4403
|
+
}
|
|
4404
|
+
|
|
4405
|
+
interface BarChartItem {
|
|
4406
|
+
value: number;
|
|
4407
|
+
label?: string;
|
|
4408
|
+
color?: string;
|
|
4409
|
+
}
|
|
4410
|
+
type BarChartOrientation = 'vertical' | 'horizontal';
|
|
4411
|
+
declare class BarChartComponent {
|
|
4412
|
+
/** Data items. */
|
|
4413
|
+
data: _angular_core.InputSignal<BarChartItem[]>;
|
|
4414
|
+
/** Chart width in pixels. */
|
|
4415
|
+
width: _angular_core.InputSignal<number>;
|
|
4416
|
+
/** Chart height in pixels. */
|
|
4417
|
+
height: _angular_core.InputSignal<number>;
|
|
4418
|
+
/** Bar orientation. */
|
|
4419
|
+
orientation: _angular_core.InputSignal<BarChartOrientation>;
|
|
4420
|
+
/** Show value labels on bars. */
|
|
4421
|
+
showValues: _angular_core.InputSignal<boolean>;
|
|
4422
|
+
/** Show axis labels. */
|
|
4423
|
+
showLabels: _angular_core.InputSignal<boolean>;
|
|
4424
|
+
/** Show grid lines. */
|
|
4425
|
+
showGrid: _angular_core.InputSignal<boolean>;
|
|
4426
|
+
/** Gap between bars as ratio (0-1). */
|
|
4427
|
+
barGap: _angular_core.InputSignal<number>;
|
|
4428
|
+
/** Use a single color for all bars. */
|
|
4429
|
+
color: _angular_core.InputSignal<string>;
|
|
4430
|
+
private readonly PADDING_LEFT;
|
|
4431
|
+
private readonly PADDING_RIGHT;
|
|
4432
|
+
private readonly PADDING_TOP;
|
|
4433
|
+
private readonly PADDING_BOTTOM;
|
|
4434
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4435
|
+
protected readonly maxValue: _angular_core.Signal<number>;
|
|
4436
|
+
protected readonly gridLines: _angular_core.Signal<{
|
|
4437
|
+
y: number;
|
|
4438
|
+
label: string;
|
|
4439
|
+
}[]>;
|
|
4440
|
+
protected readonly bars: _angular_core.Signal<{
|
|
4441
|
+
x: number;
|
|
4442
|
+
y: number;
|
|
4443
|
+
width: number;
|
|
4444
|
+
height: number;
|
|
4445
|
+
color: string;
|
|
4446
|
+
label: string;
|
|
4447
|
+
value: number;
|
|
4448
|
+
labelX: number;
|
|
4449
|
+
labelY: number;
|
|
4450
|
+
valueX: number;
|
|
4451
|
+
valueY: number;
|
|
4452
|
+
}[]>;
|
|
4453
|
+
protected readonly isVertical: _angular_core.Signal<boolean>;
|
|
4454
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
4455
|
+
x1: number;
|
|
4456
|
+
y1: number;
|
|
4457
|
+
x2: number;
|
|
4458
|
+
y2: number;
|
|
4459
|
+
bx1: number;
|
|
4460
|
+
by1: number;
|
|
4461
|
+
bx2: number;
|
|
4462
|
+
by2: number;
|
|
4463
|
+
}>;
|
|
4464
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarChartComponent, never>;
|
|
4465
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarChartComponent, "lc-bar-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "barGap": { "alias": "barGap"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4466
|
+
}
|
|
4467
|
+
|
|
4468
|
+
interface LineChartSeries {
|
|
4469
|
+
label: string;
|
|
4470
|
+
data: number[];
|
|
4471
|
+
color?: string;
|
|
4472
|
+
}
|
|
4473
|
+
declare class LineChartComponent {
|
|
4474
|
+
/** One or more data series. */
|
|
4475
|
+
series: _angular_core.InputSignal<LineChartSeries[]>;
|
|
4476
|
+
/** X-axis labels. */
|
|
4477
|
+
labels: _angular_core.InputSignal<string[]>;
|
|
4478
|
+
/** Chart width in pixels. */
|
|
4479
|
+
width: _angular_core.InputSignal<number>;
|
|
4480
|
+
/** Chart height in pixels. */
|
|
4481
|
+
height: _angular_core.InputSignal<number>;
|
|
4482
|
+
/** Stroke width for lines. */
|
|
4483
|
+
strokeWidth: _angular_core.InputSignal<number>;
|
|
4484
|
+
/** Show dots at data points. */
|
|
4485
|
+
showDots: _angular_core.InputSignal<boolean>;
|
|
4486
|
+
/** Show grid lines. */
|
|
4487
|
+
showGrid: _angular_core.InputSignal<boolean>;
|
|
4488
|
+
/** Show X-axis labels. */
|
|
4489
|
+
showXLabels: _angular_core.InputSignal<boolean>;
|
|
4490
|
+
/** Show Y-axis labels. */
|
|
4491
|
+
showYLabels: _angular_core.InputSignal<boolean>;
|
|
4492
|
+
/** Show area fill under lines. */
|
|
4493
|
+
filled: _angular_core.InputSignal<boolean>;
|
|
4494
|
+
/** Show legend. */
|
|
4495
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4496
|
+
/** Use smooth curves. */
|
|
4497
|
+
smooth: _angular_core.InputSignal<boolean>;
|
|
4498
|
+
private readonly PL;
|
|
4499
|
+
private readonly PR;
|
|
4500
|
+
private readonly PT;
|
|
4501
|
+
private readonly PB;
|
|
4502
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4503
|
+
protected readonly allValues: _angular_core.Signal<number[]>;
|
|
4504
|
+
protected readonly minValue: _angular_core.Signal<number>;
|
|
4505
|
+
protected readonly maxValue: _angular_core.Signal<number>;
|
|
4506
|
+
protected readonly maxDataLength: _angular_core.Signal<number>;
|
|
4507
|
+
protected readonly plotArea: _angular_core.Signal<{
|
|
4508
|
+
x: number;
|
|
4509
|
+
y: number;
|
|
4510
|
+
w: number;
|
|
4511
|
+
h: number;
|
|
4512
|
+
}>;
|
|
4513
|
+
protected readonly gridLines: _angular_core.Signal<{
|
|
4514
|
+
y: number;
|
|
4515
|
+
label: string;
|
|
4516
|
+
}[]>;
|
|
4517
|
+
protected readonly xLabels: _angular_core.Signal<{
|
|
4518
|
+
x: number;
|
|
4519
|
+
y: number;
|
|
4520
|
+
label: string;
|
|
4521
|
+
}[]>;
|
|
4522
|
+
protected readonly renderedSeries: _angular_core.Signal<{
|
|
4523
|
+
label: string;
|
|
4524
|
+
color: string;
|
|
4525
|
+
pathD: string;
|
|
4526
|
+
areaD: string;
|
|
4527
|
+
points: {
|
|
4528
|
+
x: number;
|
|
4529
|
+
y: number;
|
|
4530
|
+
}[];
|
|
4531
|
+
}[]>;
|
|
4532
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
4533
|
+
vx1: number;
|
|
4534
|
+
vy1: number;
|
|
4535
|
+
vx2: number;
|
|
4536
|
+
vy2: number;
|
|
4537
|
+
hx1: number;
|
|
4538
|
+
hy1: number;
|
|
4539
|
+
hx2: number;
|
|
4540
|
+
hy2: number;
|
|
4541
|
+
}>;
|
|
4542
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4543
|
+
label: string;
|
|
4544
|
+
color: string;
|
|
4545
|
+
}[]>;
|
|
4546
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LineChartComponent, never>;
|
|
4547
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LineChartComponent, "lc-line-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXLabels": { "alias": "showXLabels"; "required": false; "isSignal": true; }; "showYLabels": { "alias": "showYLabels"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4548
|
+
}
|
|
4549
|
+
|
|
4550
|
+
type GaugeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
4551
|
+
type GaugeSize = 'sm' | 'md' | 'lg';
|
|
4552
|
+
declare class GaugeComponent {
|
|
4553
|
+
/** Value between 0 and max. */
|
|
4554
|
+
value: _angular_core.InputSignal<number>;
|
|
4555
|
+
/** Maximum value. */
|
|
4556
|
+
max: _angular_core.InputSignal<number>;
|
|
4557
|
+
/** Color theme. */
|
|
4558
|
+
color: _angular_core.InputSignal<GaugeColor>;
|
|
4559
|
+
/** Size preset. */
|
|
4560
|
+
size: _angular_core.InputSignal<GaugeSize>;
|
|
4561
|
+
/** Label text below the value. */
|
|
4562
|
+
label: _angular_core.InputSignal<string>;
|
|
4563
|
+
/** Value suffix (e.g. '%', '°C'). */
|
|
4564
|
+
suffix: _angular_core.InputSignal<string>;
|
|
4565
|
+
/** Show the value in the center. */
|
|
4566
|
+
showValue: _angular_core.InputSignal<boolean>;
|
|
4567
|
+
private readonly SIZE_MAP;
|
|
4568
|
+
protected readonly svgSize: _angular_core.Signal<number>;
|
|
4569
|
+
protected readonly svgHeight: _angular_core.Signal<number>;
|
|
4570
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4571
|
+
protected readonly cx: _angular_core.Signal<number>;
|
|
4572
|
+
protected readonly cy: _angular_core.Signal<number>;
|
|
4573
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
4574
|
+
protected readonly strokeW: _angular_core.Signal<number>;
|
|
4575
|
+
protected readonly fraction: _angular_core.Signal<number>;
|
|
4576
|
+
protected readonly trackD: _angular_core.Signal<string>;
|
|
4577
|
+
protected readonly valueD: _angular_core.Signal<string>;
|
|
4578
|
+
protected readonly displayValue: _angular_core.Signal<string>;
|
|
4579
|
+
protected readonly valueFontSize: _angular_core.Signal<string>;
|
|
4580
|
+
protected readonly labelFontSize: _angular_core.Signal<string>;
|
|
4581
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GaugeComponent, never>;
|
|
4582
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GaugeComponent, "lc-gauge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4583
|
+
}
|
|
4584
|
+
|
|
4585
|
+
interface StackedBarCategory {
|
|
4586
|
+
label: string;
|
|
4587
|
+
values: number[];
|
|
4588
|
+
}
|
|
4589
|
+
interface StackedBarLegend {
|
|
4590
|
+
label: string;
|
|
4591
|
+
color?: string;
|
|
4592
|
+
}
|
|
4593
|
+
type StackedBarOrientation = 'vertical' | 'horizontal';
|
|
4594
|
+
declare class StackedBarChartComponent {
|
|
4595
|
+
/** Categories with stacked values. */
|
|
4596
|
+
categories: _angular_core.InputSignal<StackedBarCategory[]>;
|
|
4597
|
+
/** Legend items mapping to each value index. */
|
|
4598
|
+
legends: _angular_core.InputSignal<StackedBarLegend[]>;
|
|
4599
|
+
width: _angular_core.InputSignal<number>;
|
|
4600
|
+
height: _angular_core.InputSignal<number>;
|
|
4601
|
+
orientation: _angular_core.InputSignal<StackedBarOrientation>;
|
|
4602
|
+
showLabels: _angular_core.InputSignal<boolean>;
|
|
4603
|
+
showValues: _angular_core.InputSignal<boolean>;
|
|
4604
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4605
|
+
showGrid: _angular_core.InputSignal<boolean>;
|
|
4606
|
+
barGap: _angular_core.InputSignal<number>;
|
|
4607
|
+
private readonly PL;
|
|
4608
|
+
private readonly PR;
|
|
4609
|
+
private readonly PT;
|
|
4610
|
+
private readonly PB;
|
|
4611
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4612
|
+
protected readonly maxTotal: _angular_core.Signal<number>;
|
|
4613
|
+
protected readonly gridLines: _angular_core.Signal<{
|
|
4614
|
+
y: number;
|
|
4615
|
+
label: string;
|
|
4616
|
+
}[]>;
|
|
4617
|
+
protected readonly stacks: _angular_core.Signal<{
|
|
4618
|
+
label: string;
|
|
4619
|
+
segments: {
|
|
4620
|
+
color: string;
|
|
4621
|
+
value: number;
|
|
4622
|
+
x: number;
|
|
4623
|
+
y: number;
|
|
4624
|
+
w: number;
|
|
4625
|
+
h: number;
|
|
4626
|
+
}[];
|
|
4627
|
+
labelPos: {
|
|
4628
|
+
x: number;
|
|
4629
|
+
y: number;
|
|
4630
|
+
};
|
|
4631
|
+
total: number;
|
|
4632
|
+
}[]>;
|
|
4633
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4634
|
+
label: string;
|
|
4635
|
+
color: string;
|
|
4636
|
+
}[]>;
|
|
4637
|
+
protected readonly isVertical: _angular_core.Signal<boolean>;
|
|
4638
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
4639
|
+
vx1: number;
|
|
4640
|
+
vy1: number;
|
|
4641
|
+
vx2: number;
|
|
4642
|
+
vy2: number;
|
|
4643
|
+
hx1: number;
|
|
4644
|
+
hy1: number;
|
|
4645
|
+
hx2: number;
|
|
4646
|
+
hy2: number;
|
|
4647
|
+
}>;
|
|
4648
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StackedBarChartComponent, never>;
|
|
4649
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StackedBarChartComponent, "lc-stacked-bar-chart", never, { "categories": { "alias": "categories"; "required": true; "isSignal": true; }; "legends": { "alias": "legends"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "barGap": { "alias": "barGap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4652
|
+
interface AreaChartSeries {
|
|
4653
|
+
label: string;
|
|
4654
|
+
data: number[];
|
|
4655
|
+
color?: string;
|
|
4656
|
+
}
|
|
4657
|
+
declare class AreaChartComponent {
|
|
4658
|
+
series: _angular_core.InputSignal<AreaChartSeries[]>;
|
|
4659
|
+
labels: _angular_core.InputSignal<string[]>;
|
|
4660
|
+
width: _angular_core.InputSignal<number>;
|
|
4661
|
+
height: _angular_core.InputSignal<number>;
|
|
4662
|
+
strokeWidth: _angular_core.InputSignal<number>;
|
|
4663
|
+
showDots: _angular_core.InputSignal<boolean>;
|
|
4664
|
+
showGrid: _angular_core.InputSignal<boolean>;
|
|
4665
|
+
showXLabels: _angular_core.InputSignal<boolean>;
|
|
4666
|
+
showYLabels: _angular_core.InputSignal<boolean>;
|
|
4667
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4668
|
+
smooth: _angular_core.InputSignal<boolean>;
|
|
4669
|
+
/** Opacity for the filled area (0–1). */
|
|
4670
|
+
fillOpacity: _angular_core.InputSignal<number>;
|
|
4671
|
+
/** Stack areas on top of each other. */
|
|
4672
|
+
stacked: _angular_core.InputSignal<boolean>;
|
|
4673
|
+
private readonly PL;
|
|
4674
|
+
private readonly PR;
|
|
4675
|
+
private readonly PT;
|
|
4676
|
+
private readonly PB;
|
|
4677
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4678
|
+
protected readonly plotArea: _angular_core.Signal<{
|
|
4679
|
+
x: number;
|
|
4680
|
+
y: number;
|
|
4681
|
+
w: number;
|
|
4682
|
+
h: number;
|
|
4683
|
+
}>;
|
|
4684
|
+
protected readonly computedSeries: _angular_core.Signal<{
|
|
4685
|
+
computedData: number[];
|
|
4686
|
+
prevData: number[] | null;
|
|
4687
|
+
label: string;
|
|
4688
|
+
data: number[];
|
|
4689
|
+
color?: string;
|
|
4690
|
+
}[]>;
|
|
4691
|
+
protected readonly minValue: _angular_core.Signal<number>;
|
|
4692
|
+
protected readonly maxValue: _angular_core.Signal<number>;
|
|
4693
|
+
protected readonly gridLines: _angular_core.Signal<{
|
|
4694
|
+
y: number;
|
|
4695
|
+
label: string;
|
|
4696
|
+
}[]>;
|
|
4697
|
+
protected readonly xLabelItems: _angular_core.Signal<{
|
|
4698
|
+
x: number;
|
|
4699
|
+
y: number;
|
|
4700
|
+
label: string;
|
|
4701
|
+
}[]>;
|
|
4702
|
+
private toPoints;
|
|
4703
|
+
private buildPath;
|
|
4704
|
+
protected readonly renderedSeries: _angular_core.Signal<{
|
|
4705
|
+
label: string;
|
|
4706
|
+
color: string;
|
|
4707
|
+
lineD: string;
|
|
4708
|
+
areaD: string;
|
|
4709
|
+
points: {
|
|
4710
|
+
x: number;
|
|
4711
|
+
y: number;
|
|
4712
|
+
}[];
|
|
4713
|
+
}[]>;
|
|
4714
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
4715
|
+
vx1: number;
|
|
4716
|
+
vy1: number;
|
|
4717
|
+
vx2: number;
|
|
4718
|
+
vy2: number;
|
|
4719
|
+
hx1: number;
|
|
4720
|
+
hy1: number;
|
|
4721
|
+
hx2: number;
|
|
4722
|
+
hy2: number;
|
|
4723
|
+
}>;
|
|
4724
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4725
|
+
label: string;
|
|
4726
|
+
color: string;
|
|
4727
|
+
}[]>;
|
|
4728
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AreaChartComponent, never>;
|
|
4729
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AreaChartComponent, "lc-area-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXLabels": { "alias": "showXLabels"; "required": false; "isSignal": true; }; "showYLabels": { "alias": "showYLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "fillOpacity": { "alias": "fillOpacity"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4730
|
+
}
|
|
4731
|
+
|
|
4732
|
+
interface HeatmapCell {
|
|
4733
|
+
row: number;
|
|
4734
|
+
col: number;
|
|
4735
|
+
value: number;
|
|
4736
|
+
}
|
|
4737
|
+
declare class HeatmapComponent {
|
|
4738
|
+
/** 2D data: array of rows, each row an array of values. */
|
|
4739
|
+
data: _angular_core.InputSignal<number[][]>;
|
|
4740
|
+
/** Row labels (Y axis). */
|
|
4741
|
+
rowLabels: _angular_core.InputSignal<string[]>;
|
|
4742
|
+
/** Column labels (X axis). */
|
|
4743
|
+
colLabels: _angular_core.InputSignal<string[]>;
|
|
4744
|
+
/** Cell size in pixels. */
|
|
4745
|
+
cellSize: _angular_core.InputSignal<number>;
|
|
4746
|
+
/** Gap between cells in pixels. */
|
|
4747
|
+
cellGap: _angular_core.InputSignal<number>;
|
|
4748
|
+
/** Low-value color. */
|
|
4749
|
+
colorMin: _angular_core.InputSignal<string>;
|
|
4750
|
+
/** High-value color. */
|
|
4751
|
+
colorMax: _angular_core.InputSignal<string>;
|
|
4752
|
+
/** Show values inside cells. */
|
|
4753
|
+
showValues: _angular_core.InputSignal<boolean>;
|
|
4754
|
+
/** Corner radius of cells. */
|
|
4755
|
+
cellRadius: _angular_core.InputSignal<number>;
|
|
4756
|
+
private readonly LABEL_W;
|
|
4757
|
+
private readonly LABEL_H;
|
|
4758
|
+
protected readonly minVal: _angular_core.Signal<number>;
|
|
4759
|
+
protected readonly maxVal: _angular_core.Signal<number>;
|
|
4760
|
+
protected readonly rows: _angular_core.Signal<number>;
|
|
4761
|
+
protected readonly cols: _angular_core.Signal<number>;
|
|
4762
|
+
protected readonly svgWidth: _angular_core.Signal<number>;
|
|
4763
|
+
protected readonly svgHeight: _angular_core.Signal<number>;
|
|
4764
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4765
|
+
protected readonly offsetX: _angular_core.Signal<0 | 60>;
|
|
4766
|
+
protected readonly offsetY: _angular_core.Signal<0 | 20>;
|
|
4767
|
+
protected readonly cells: _angular_core.Signal<{
|
|
4768
|
+
x: number;
|
|
4769
|
+
y: number;
|
|
4770
|
+
w: number;
|
|
4771
|
+
h: number;
|
|
4772
|
+
value: number;
|
|
4773
|
+
opacity: number;
|
|
4774
|
+
}[]>;
|
|
4775
|
+
protected readonly rowLabelItems: _angular_core.Signal<{
|
|
4776
|
+
x: number;
|
|
4777
|
+
y: number;
|
|
4778
|
+
label: string;
|
|
4779
|
+
}[]>;
|
|
4780
|
+
protected readonly colLabelItems: _angular_core.Signal<{
|
|
4781
|
+
x: number;
|
|
4782
|
+
y: number;
|
|
4783
|
+
label: string;
|
|
4784
|
+
}[]>;
|
|
4785
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeatmapComponent, never>;
|
|
4786
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeatmapComponent, "lc-heatmap", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "rowLabels": { "alias": "rowLabels"; "required": false; "isSignal": true; }; "colLabels": { "alias": "colLabels"; "required": false; "isSignal": true; }; "cellSize": { "alias": "cellSize"; "required": false; "isSignal": true; }; "cellGap": { "alias": "cellGap"; "required": false; "isSignal": true; }; "colorMin": { "alias": "colorMin"; "required": false; "isSignal": true; }; "colorMax": { "alias": "colorMax"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "cellRadius": { "alias": "cellRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4787
|
+
}
|
|
4788
|
+
|
|
4789
|
+
interface PieSegment {
|
|
4790
|
+
value: number;
|
|
4791
|
+
label?: string;
|
|
4792
|
+
color?: string;
|
|
4793
|
+
}
|
|
4794
|
+
type PieChartSize = 'sm' | 'md' | 'lg';
|
|
4795
|
+
declare class PieChartComponent {
|
|
4796
|
+
segments: _angular_core.InputSignal<PieSegment[]>;
|
|
4797
|
+
size: _angular_core.InputSignal<PieChartSize>;
|
|
4798
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4799
|
+
private readonly SIZE_MAP;
|
|
4800
|
+
protected readonly svgSize: _angular_core.Signal<number>;
|
|
4801
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4802
|
+
protected readonly center: _angular_core.Signal<number>;
|
|
4803
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
4804
|
+
protected readonly arcs: _angular_core.Signal<{
|
|
4805
|
+
d: string;
|
|
4806
|
+
color: string;
|
|
4807
|
+
label: string;
|
|
4808
|
+
percentage: number;
|
|
4809
|
+
}[]>;
|
|
4810
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4811
|
+
color: string;
|
|
4812
|
+
label: string;
|
|
4813
|
+
percentage: number;
|
|
4814
|
+
}[]>;
|
|
4815
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieChartComponent, never>;
|
|
4816
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChartComponent, "lc-pie-chart", never, { "segments": { "alias": "segments"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4817
|
+
}
|
|
4818
|
+
|
|
4819
|
+
interface RadarChartSeries {
|
|
4820
|
+
label: string;
|
|
4821
|
+
data: number[];
|
|
4822
|
+
color?: string;
|
|
4823
|
+
}
|
|
4824
|
+
declare class RadarChartComponent {
|
|
4825
|
+
series: _angular_core.InputSignal<RadarChartSeries[]>;
|
|
4826
|
+
/** Axis labels. */
|
|
4827
|
+
axes: _angular_core.InputSignal<string[]>;
|
|
4828
|
+
/** Max value for each axis. */
|
|
4829
|
+
max: _angular_core.InputSignal<number>;
|
|
4830
|
+
/** SVG size in pixels. */
|
|
4831
|
+
size: _angular_core.InputSignal<number>;
|
|
4832
|
+
/** Number of concentric grid rings. */
|
|
4833
|
+
rings: _angular_core.InputSignal<number>;
|
|
4834
|
+
/** Show axis labels. */
|
|
4835
|
+
showLabels: _angular_core.InputSignal<boolean>;
|
|
4836
|
+
/** Fill opacity for series polygons. */
|
|
4837
|
+
fillOpacity: _angular_core.InputSignal<number>;
|
|
4838
|
+
/** Show legend. */
|
|
4839
|
+
showLegend: _angular_core.InputSignal<boolean>;
|
|
4840
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4841
|
+
protected readonly center: _angular_core.Signal<number>;
|
|
4842
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
4843
|
+
protected readonly axisCount: _angular_core.Signal<number>;
|
|
4844
|
+
protected readonly gridRings: _angular_core.Signal<string[]>;
|
|
4845
|
+
protected readonly axisLines: _angular_core.Signal<{
|
|
4846
|
+
x2: number;
|
|
4847
|
+
y2: number;
|
|
4848
|
+
}[]>;
|
|
4849
|
+
protected readonly labelItems: _angular_core.Signal<{
|
|
4850
|
+
x: number;
|
|
4851
|
+
y: number;
|
|
4852
|
+
label: string;
|
|
4853
|
+
anchor: string;
|
|
4854
|
+
}[]>;
|
|
4855
|
+
protected readonly seriesPolygons: _angular_core.Signal<{
|
|
4856
|
+
points: string;
|
|
4857
|
+
colorIndex: number;
|
|
4858
|
+
customColor: string | null;
|
|
4859
|
+
label: string;
|
|
4860
|
+
}[]>;
|
|
4861
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
4862
|
+
label: string;
|
|
4863
|
+
colorIndex: number;
|
|
4864
|
+
customColor: string | null;
|
|
4865
|
+
}[]>;
|
|
4866
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadarChartComponent, never>;
|
|
4867
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadarChartComponent, "lc-radar-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "axes": { "alias": "axes"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rings": { "alias": "rings"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "fillOpacity": { "alias": "fillOpacity"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4868
|
+
}
|
|
4869
|
+
|
|
4870
|
+
type ProgressRingColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
4871
|
+
type ProgressRingSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
4872
|
+
declare class ProgressRingComponent {
|
|
4873
|
+
/** Value between 0 and 100. */
|
|
4874
|
+
value: _angular_core.InputSignal<number>;
|
|
4875
|
+
/** Color theme. */
|
|
4876
|
+
color: _angular_core.InputSignal<ProgressRingColor>;
|
|
4877
|
+
/** Size preset. */
|
|
4878
|
+
size: _angular_core.InputSignal<ProgressRingSize>;
|
|
4879
|
+
/** Show percentage text in center. */
|
|
4880
|
+
showValue: _angular_core.InputSignal<boolean>;
|
|
4881
|
+
private readonly SIZE_MAP;
|
|
4882
|
+
private readonly STROKE_MAP;
|
|
4883
|
+
protected readonly svgSize: _angular_core.Signal<number>;
|
|
4884
|
+
protected readonly strokeW: _angular_core.Signal<number>;
|
|
4885
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4886
|
+
protected readonly center: _angular_core.Signal<number>;
|
|
4887
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
4888
|
+
protected readonly circumference: _angular_core.Signal<number>;
|
|
4889
|
+
protected readonly dashOffset: _angular_core.Signal<number>;
|
|
4890
|
+
protected readonly fontSize: _angular_core.Signal<string>;
|
|
4891
|
+
protected readonly displayValue: _angular_core.Signal<string>;
|
|
4892
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressRingComponent, never>;
|
|
4893
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressRingComponent, "lc-progress-ring", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4894
|
+
}
|
|
4895
|
+
|
|
4896
|
+
interface WaterfallItem {
|
|
4897
|
+
label: string;
|
|
4898
|
+
value: number;
|
|
4899
|
+
/** 'total' renders from 0 to value instead of incremental. */
|
|
4900
|
+
type?: 'increase' | 'decrease' | 'total';
|
|
4901
|
+
}
|
|
4902
|
+
declare class WaterfallChartComponent {
|
|
4903
|
+
data: _angular_core.InputSignal<WaterfallItem[]>;
|
|
4904
|
+
width: _angular_core.InputSignal<number>;
|
|
4905
|
+
height: _angular_core.InputSignal<number>;
|
|
4906
|
+
showValues: _angular_core.InputSignal<boolean>;
|
|
4907
|
+
showGrid: _angular_core.InputSignal<boolean>;
|
|
4908
|
+
showConnectors: _angular_core.InputSignal<boolean>;
|
|
4909
|
+
increaseColor: _angular_core.InputSignal<string>;
|
|
4910
|
+
decreaseColor: _angular_core.InputSignal<string>;
|
|
4911
|
+
totalColor: _angular_core.InputSignal<string>;
|
|
4912
|
+
barGap: _angular_core.InputSignal<number>;
|
|
4913
|
+
private readonly PL;
|
|
4914
|
+
private readonly PR;
|
|
4915
|
+
private readonly PT;
|
|
4916
|
+
private readonly PB;
|
|
4917
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
4918
|
+
protected readonly computedBars: _angular_core.Signal<{
|
|
4919
|
+
bars: {
|
|
4920
|
+
x: number;
|
|
4921
|
+
y: number;
|
|
4922
|
+
width: number;
|
|
4923
|
+
height: number;
|
|
4924
|
+
color: string;
|
|
4925
|
+
label: string;
|
|
4926
|
+
value: number;
|
|
4927
|
+
labelX: number;
|
|
4928
|
+
labelY: number;
|
|
4929
|
+
valueY: number;
|
|
4930
|
+
endVal: number;
|
|
4931
|
+
}[];
|
|
4932
|
+
connectors: {
|
|
4933
|
+
x1: number;
|
|
4934
|
+
x2: number;
|
|
4935
|
+
y: number;
|
|
4936
|
+
}[];
|
|
4937
|
+
gridLines: {
|
|
4938
|
+
y: number;
|
|
4939
|
+
label: string;
|
|
4940
|
+
}[];
|
|
4941
|
+
}>;
|
|
4942
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
4943
|
+
vx1: number;
|
|
4944
|
+
vy1: number;
|
|
4945
|
+
vx2: number;
|
|
4946
|
+
vy2: number;
|
|
4947
|
+
hx1: number;
|
|
4948
|
+
hy1: number;
|
|
4949
|
+
hx2: number;
|
|
4950
|
+
hy2: number;
|
|
4951
|
+
}>;
|
|
4952
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WaterfallChartComponent, never>;
|
|
4953
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WaterfallChartComponent, "lc-waterfall-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showConnectors": { "alias": "showConnectors"; "required": false; "isSignal": true; }; "increaseColor": { "alias": "increaseColor"; "required": false; "isSignal": true; }; "decreaseColor": { "alias": "decreaseColor"; "required": false; "isSignal": true; }; "totalColor": { "alias": "totalColor"; "required": false; "isSignal": true; }; "barGap": { "alias": "barGap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4954
|
+
}
|
|
4955
|
+
|
|
4956
|
+
type CalendarView = 'day' | 'week' | 'month';
|
|
4957
|
+
interface CalendarEvent {
|
|
4958
|
+
id: string;
|
|
4959
|
+
title: string;
|
|
4960
|
+
start: Date | string;
|
|
4961
|
+
end: Date | string;
|
|
4962
|
+
color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
4963
|
+
allDay?: boolean;
|
|
4964
|
+
}
|
|
4965
|
+
interface DayCell {
|
|
4966
|
+
date: Date;
|
|
4967
|
+
isToday: boolean;
|
|
4968
|
+
isCurrentMonth: boolean;
|
|
4969
|
+
events: CalendarEvent[];
|
|
4970
|
+
}
|
|
4971
|
+
interface HourSlot {
|
|
4972
|
+
hour: number;
|
|
4973
|
+
label: string;
|
|
4974
|
+
}
|
|
4975
|
+
declare class CalendarComponent {
|
|
4976
|
+
/** Current view mode. */
|
|
4977
|
+
view: _angular_core.InputSignal<CalendarView>;
|
|
4978
|
+
/** Events to display. */
|
|
4979
|
+
events: _angular_core.InputSignal<CalendarEvent[]>;
|
|
4980
|
+
/** First day of week (0=Sunday, 1=Monday). */
|
|
4981
|
+
firstDayOfWeek: _angular_core.InputSignal<number>;
|
|
4982
|
+
/** Locale for date formatting. */
|
|
4983
|
+
locale: _angular_core.InputSignal<string>;
|
|
4984
|
+
/** Start hour for day/week view. */
|
|
4985
|
+
startHour: _angular_core.InputSignal<number>;
|
|
4986
|
+
/** End hour for day/week view. */
|
|
4987
|
+
endHour: _angular_core.InputSignal<number>;
|
|
4988
|
+
/** Emits when an event is clicked. */
|
|
4989
|
+
eventClick: _angular_core.OutputEmitterRef<CalendarEvent>;
|
|
4990
|
+
/** Emits when a date cell is clicked. */
|
|
4991
|
+
dateClick: _angular_core.OutputEmitterRef<Date>;
|
|
4992
|
+
/** Emits when the view changes. */
|
|
4993
|
+
viewChange: _angular_core.OutputEmitterRef<CalendarView>;
|
|
4994
|
+
protected readonly currentDate: _angular_core.WritableSignal<Date>;
|
|
4995
|
+
protected readonly headerTitle: _angular_core.Signal<string>;
|
|
4996
|
+
protected readonly weekDayNames: _angular_core.Signal<string[]>;
|
|
4997
|
+
protected readonly monthGrid: _angular_core.Signal<DayCell[][]>;
|
|
4998
|
+
protected readonly hourSlots: _angular_core.Signal<HourSlot[]>;
|
|
4999
|
+
protected readonly weekDays: _angular_core.Signal<{
|
|
5000
|
+
date: Date;
|
|
5001
|
+
label: string;
|
|
5002
|
+
isToday: boolean;
|
|
5003
|
+
events: {
|
|
5004
|
+
start: Date;
|
|
5005
|
+
end: Date;
|
|
5006
|
+
id: string;
|
|
5007
|
+
title: string;
|
|
5008
|
+
color?: "primary" | "secondary" | "success" | "warning" | "error" | "info";
|
|
5009
|
+
allDay?: boolean;
|
|
5010
|
+
}[];
|
|
5011
|
+
}[]>;
|
|
5012
|
+
protected readonly dayEvents: _angular_core.Signal<{
|
|
5013
|
+
start: Date;
|
|
5014
|
+
end: Date;
|
|
5015
|
+
id: string;
|
|
5016
|
+
title: string;
|
|
5017
|
+
color?: "primary" | "secondary" | "success" | "warning" | "error" | "info";
|
|
5018
|
+
allDay?: boolean;
|
|
5019
|
+
}[]>;
|
|
5020
|
+
private readonly normalizedEvents;
|
|
5021
|
+
protected navigatePrev(): void;
|
|
5022
|
+
protected navigateNext(): void;
|
|
5023
|
+
protected navigateToday(): void;
|
|
5024
|
+
protected setView(v: CalendarView): void;
|
|
5025
|
+
protected onEventClick(event: CalendarEvent, e: MouseEvent): void;
|
|
5026
|
+
protected onDateClick(date: Date): void;
|
|
5027
|
+
protected eventTop(event: CalendarEvent): number;
|
|
5028
|
+
protected eventHeight(event: CalendarEvent): number;
|
|
5029
|
+
private navigate;
|
|
5030
|
+
private weekStart;
|
|
5031
|
+
private isSameDay;
|
|
5032
|
+
private isEventOnDate;
|
|
5033
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CalendarComponent, never>;
|
|
5034
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalendarComponent, "lc-calendar", never, { "view": { "alias": "view"; "required": false; "isSignal": true; }; "events": { "alias": "events"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "startHour": { "alias": "startHour"; "required": false; "isSignal": true; }; "endHour": { "alias": "endHour"; "required": false; "isSignal": true; }; }, { "eventClick": "eventClick"; "dateClick": "dateClick"; "viewChange": "viewChange"; }, never, never, true, never>;
|
|
5035
|
+
}
|
|
5036
|
+
|
|
5037
|
+
interface GanttDependency {
|
|
5038
|
+
from: string;
|
|
5039
|
+
to: string;
|
|
5040
|
+
}
|
|
5041
|
+
interface GanttTask {
|
|
5042
|
+
id: string;
|
|
5043
|
+
title: string;
|
|
5044
|
+
start: Date | string;
|
|
5045
|
+
end: Date | string;
|
|
5046
|
+
progress?: number;
|
|
5047
|
+
color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
5048
|
+
group?: string;
|
|
5049
|
+
}
|
|
5050
|
+
interface NormalizedTask {
|
|
5051
|
+
id: string;
|
|
5052
|
+
title: string;
|
|
5053
|
+
start: Date;
|
|
5054
|
+
end: Date;
|
|
5055
|
+
progress: number;
|
|
5056
|
+
color: string;
|
|
5057
|
+
group: string;
|
|
5058
|
+
}
|
|
5059
|
+
interface BarLayout {
|
|
5060
|
+
task: NormalizedTask;
|
|
5061
|
+
left: number;
|
|
5062
|
+
width: number;
|
|
5063
|
+
top: number;
|
|
5064
|
+
progress: number;
|
|
5065
|
+
colorClass: string;
|
|
5066
|
+
}
|
|
5067
|
+
interface DepLine {
|
|
5068
|
+
x1: number;
|
|
5069
|
+
y1: number;
|
|
5070
|
+
x2: number;
|
|
5071
|
+
y2: number;
|
|
5072
|
+
}
|
|
5073
|
+
declare class GanttChartComponent {
|
|
5074
|
+
/** Tasks to display. */
|
|
5075
|
+
tasks: _angular_core.InputSignal<GanttTask[]>;
|
|
5076
|
+
/** Dependency links between tasks. */
|
|
5077
|
+
dependencies: _angular_core.InputSignal<GanttDependency[]>;
|
|
5078
|
+
/** Row height in px. */
|
|
5079
|
+
rowHeight: _angular_core.InputSignal<number>;
|
|
5080
|
+
/** Width of the label column in px. */
|
|
5081
|
+
labelWidth: _angular_core.InputSignal<number>;
|
|
5082
|
+
/** Column width per day in px. */
|
|
5083
|
+
dayWidth: _angular_core.InputSignal<number>;
|
|
5084
|
+
/** Show today marker. */
|
|
5085
|
+
showToday: _angular_core.InputSignal<boolean>;
|
|
5086
|
+
/** Emits when a task bar is clicked. */
|
|
5087
|
+
taskClick: _angular_core.OutputEmitterRef<GanttTask>;
|
|
5088
|
+
private readonly normalizedTasks;
|
|
5089
|
+
protected readonly timelineStart: _angular_core.Signal<Date>;
|
|
5090
|
+
protected readonly timelineEnd: _angular_core.Signal<Date>;
|
|
5091
|
+
protected readonly totalDays: _angular_core.Signal<number>;
|
|
5092
|
+
protected readonly timelineWidth: _angular_core.Signal<number>;
|
|
5093
|
+
protected readonly dayColumns: _angular_core.Signal<{
|
|
5094
|
+
date: Date;
|
|
5095
|
+
left: number;
|
|
5096
|
+
label: number;
|
|
5097
|
+
isWeekend: boolean;
|
|
5098
|
+
monthLabel: string | null;
|
|
5099
|
+
}[]>;
|
|
5100
|
+
protected readonly monthHeaders: _angular_core.Signal<{
|
|
5101
|
+
label: string;
|
|
5102
|
+
left: number;
|
|
5103
|
+
width: number;
|
|
5104
|
+
}[]>;
|
|
5105
|
+
protected readonly bars: _angular_core.Signal<BarLayout[]>;
|
|
5106
|
+
protected readonly depLines: _angular_core.Signal<DepLine[]>;
|
|
5107
|
+
protected readonly todayLeft: _angular_core.Signal<number>;
|
|
5108
|
+
protected readonly gridHeight: _angular_core.Signal<number>;
|
|
5109
|
+
protected onTaskClick(task: NormalizedTask): void;
|
|
5110
|
+
private startOfDay;
|
|
5111
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GanttChartComponent, never>;
|
|
5112
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GanttChartComponent, "lc-gantt-chart", never, { "tasks": { "alias": "tasks"; "required": true; "isSignal": true; }; "dependencies": { "alias": "dependencies"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "dayWidth": { "alias": "dayWidth"; "required": false; "isSignal": true; }; "showToday": { "alias": "showToday"; "required": false; "isSignal": true; }; }, { "taskClick": "taskClick"; }, never, never, true, never>;
|
|
5113
|
+
}
|
|
5114
|
+
|
|
5115
|
+
type ChatMessageRole = 'user' | 'agent' | 'system';
|
|
5116
|
+
interface ChatMessage {
|
|
5117
|
+
id: string;
|
|
5118
|
+
role: ChatMessageRole;
|
|
5119
|
+
content: string;
|
|
5120
|
+
timestamp?: Date | string;
|
|
5121
|
+
avatar?: string;
|
|
5122
|
+
name?: string;
|
|
5123
|
+
streaming?: boolean;
|
|
5124
|
+
}
|
|
5125
|
+
interface ChatSendEvent {
|
|
5126
|
+
content: string;
|
|
5127
|
+
}
|
|
5128
|
+
declare class ChatComponent implements AfterViewChecked {
|
|
5129
|
+
/** Messages to display. */
|
|
5130
|
+
messages: _angular_core.InputSignal<ChatMessage[]>;
|
|
5131
|
+
/** Placeholder text for the input. */
|
|
5132
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
5133
|
+
/** Title displayed in the header. */
|
|
5134
|
+
title: _angular_core.InputSignal<string>;
|
|
5135
|
+
/** Whether the agent is currently streaming / typing. */
|
|
5136
|
+
isStreaming: _angular_core.InputSignal<boolean>;
|
|
5137
|
+
/** Show the header bar. */
|
|
5138
|
+
showHeader: _angular_core.InputSignal<boolean>;
|
|
5139
|
+
/** Disable the input. */
|
|
5140
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
5141
|
+
/** Show avatars next to messages. */
|
|
5142
|
+
showAvatars: _angular_core.InputSignal<boolean>;
|
|
5143
|
+
/** Show timestamps. */
|
|
5144
|
+
showTimestamps: _angular_core.InputSignal<boolean>;
|
|
5145
|
+
/** Emits when user sends a message. */
|
|
5146
|
+
messageSend: _angular_core.OutputEmitterRef<ChatSendEvent>;
|
|
5147
|
+
protected readonly inputValue: _angular_core.WritableSignal<string>;
|
|
5148
|
+
private shouldScroll;
|
|
5149
|
+
private scrollContainer;
|
|
5150
|
+
protected readonly formattedMessages: _angular_core.Signal<{
|
|
5151
|
+
timestamp: Date | undefined;
|
|
5152
|
+
id: string;
|
|
5153
|
+
role: ChatMessageRole;
|
|
5154
|
+
content: string;
|
|
5155
|
+
avatar?: string;
|
|
5156
|
+
name?: string;
|
|
5157
|
+
streaming?: boolean;
|
|
5158
|
+
}[]>;
|
|
5159
|
+
ngAfterViewChecked(): void;
|
|
5160
|
+
protected onInput(event: Event): void;
|
|
5161
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
5162
|
+
protected send(): void;
|
|
5163
|
+
protected formatTime(date: Date | undefined): string;
|
|
5164
|
+
protected trackById(_: number, msg: ChatMessage): string;
|
|
5165
|
+
private scrollToBottom;
|
|
5166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChatComponent, never>;
|
|
5167
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChatComponent, "lc-chat", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "isStreaming": { "alias": "isStreaming"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showAvatars": { "alias": "showAvatars"; "required": false; "isSignal": true; }; "showTimestamps": { "alias": "showTimestamps"; "required": false; "isSignal": true; }; }, { "messageSend": "messageSend"; }, never, never, true, never>;
|
|
5168
|
+
}
|
|
5169
|
+
|
|
5170
|
+
type DocumentType = 'pdf' | 'markdown' | 'image' | 'text' | 'code' | 'auto';
|
|
5171
|
+
/**
|
|
5172
|
+
* Document viewer component for previewing various file types.
|
|
5173
|
+
*
|
|
5174
|
+
* Features:
|
|
5175
|
+
* - Auto-detects file type from URL extension or explicit type input
|
|
5176
|
+
* - PDF rendering via browser-native iframe viewer
|
|
5177
|
+
* - Markdown parsing and rendering with full formatting support
|
|
5178
|
+
* - Image display with zoom controls (25% – 500%)
|
|
5179
|
+
* - Code display using the built-in code block component
|
|
5180
|
+
* - Plain text display
|
|
5181
|
+
* - Toolbar with filename, type badge, zoom, download, and fullscreen
|
|
5182
|
+
* - Loading and error states
|
|
5183
|
+
* - Dark/light theme support
|
|
5184
|
+
*
|
|
5185
|
+
* @example
|
|
5186
|
+
* ```html
|
|
5187
|
+
* <lc-document-viewer src="https://example.com/report.pdf" />
|
|
5188
|
+
* <lc-document-viewer [content]="markdownString" type="markdown" filename="README.md" />
|
|
5189
|
+
* <lc-document-viewer src="/assets/diagram.png" />
|
|
5190
|
+
* ```
|
|
5191
|
+
*/
|
|
5192
|
+
declare class DocumentViewerComponent implements OnInit, OnDestroy {
|
|
5193
|
+
/** URL of the document to display (for PDF, images, or remote files) */
|
|
5194
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
5195
|
+
/** Direct content string (for markdown, text, or code — takes precedence over src for content-based types) */
|
|
5196
|
+
readonly content: _angular_core.InputSignal<string>;
|
|
5197
|
+
/** File type — set to 'auto' to detect from URL extension */
|
|
5198
|
+
readonly type: _angular_core.InputSignal<DocumentType>;
|
|
5199
|
+
/** Display name shown in the toolbar */
|
|
5200
|
+
readonly filename: _angular_core.InputSignal<string>;
|
|
5201
|
+
/** Code language for syntax highlighting (when type is 'code') */
|
|
5202
|
+
readonly language: _angular_core.InputSignal<CodeBlockLanguage>;
|
|
5203
|
+
/** Whether to display the toolbar */
|
|
5204
|
+
readonly showToolbar: _angular_core.InputSignal<boolean>;
|
|
5205
|
+
/** Whether to show the download button in the toolbar */
|
|
5206
|
+
readonly showDownload: _angular_core.InputSignal<boolean>;
|
|
5207
|
+
/** Height of the viewer container */
|
|
5208
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
5209
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
5210
|
+
protected error: _angular_core.WritableSignal<string | null>;
|
|
5211
|
+
protected fetchedContent: _angular_core.WritableSignal<string>;
|
|
5212
|
+
protected zoom: _angular_core.WritableSignal<number>;
|
|
5213
|
+
protected isFullscreen: _angular_core.WritableSignal<boolean>;
|
|
5214
|
+
private readonly sanitizer;
|
|
5215
|
+
private readonly elementRef;
|
|
5216
|
+
private fullscreenHandler;
|
|
5217
|
+
/** Resolved document type from input or URL extension */
|
|
5218
|
+
protected resolvedType: _angular_core.Signal<DocumentType | "unknown">;
|
|
5219
|
+
/** Display name for the toolbar */
|
|
5220
|
+
protected displayName: _angular_core.Signal<string>;
|
|
5221
|
+
/** Icon name for the document type */
|
|
5222
|
+
protected typeIcon: _angular_core.Signal<string>;
|
|
5223
|
+
/** Type label for the toolbar badge */
|
|
5224
|
+
protected typeLabel: _angular_core.Signal<string>;
|
|
5225
|
+
/** Resolved code language */
|
|
5226
|
+
protected resolvedLanguage: _angular_core.Signal<CodeBlockLanguage>;
|
|
5227
|
+
/** Sanitized src URL for iframe/img embedding */
|
|
5228
|
+
protected safeSrc: _angular_core.Signal<SafeResourceUrl>;
|
|
5229
|
+
/** Effective content: direct content input or fetched content */
|
|
5230
|
+
protected effectiveContent: _angular_core.Signal<string>;
|
|
5231
|
+
/** Rendered markdown HTML */
|
|
5232
|
+
protected renderedMarkdown: _angular_core.Signal<SafeHtml>;
|
|
5233
|
+
/** Image transform style for zoom */
|
|
5234
|
+
protected imageTransform: _angular_core.Signal<string>;
|
|
5235
|
+
/** Whether zoom controls should be shown */
|
|
5236
|
+
protected showZoom: _angular_core.Signal<boolean>;
|
|
5237
|
+
ngOnInit(): void;
|
|
5238
|
+
ngOnDestroy(): void;
|
|
5239
|
+
protected zoomIn(): void;
|
|
5240
|
+
protected zoomOut(): void;
|
|
5241
|
+
protected resetZoom(): void;
|
|
5242
|
+
protected download(): void;
|
|
5243
|
+
protected toggleFullscreen(): void;
|
|
5244
|
+
protected onIframeLoad(): void;
|
|
5245
|
+
protected onImageLoad(): void;
|
|
5246
|
+
protected onImageError(): void;
|
|
5247
|
+
private extractExtension;
|
|
5248
|
+
private fetchContent;
|
|
5249
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DocumentViewerComponent, never>;
|
|
5250
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DocumentViewerComponent, "lc-document-viewer", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5251
|
+
}
|
|
5252
|
+
|
|
5253
|
+
type GalleryLayout = 'grid' | 'masonry';
|
|
5254
|
+
type GallerySize = 'sm' | 'md' | 'lg';
|
|
5255
|
+
interface GalleryItem {
|
|
5256
|
+
/** Image source URL */
|
|
5257
|
+
src: string;
|
|
5258
|
+
/** Thumbnail URL (falls back to src if not provided) */
|
|
5259
|
+
thumbnail?: string;
|
|
5260
|
+
/** Alt text for accessibility */
|
|
5261
|
+
alt?: string;
|
|
5262
|
+
/** Optional caption displayed below the image */
|
|
5263
|
+
caption?: string;
|
|
5264
|
+
/** Optional category for filtering */
|
|
5265
|
+
category?: string;
|
|
5266
|
+
}
|
|
5267
|
+
/**
|
|
5268
|
+
* Gallery component for displaying image collections with lightbox.
|
|
5269
|
+
*
|
|
5270
|
+
* Features:
|
|
5271
|
+
* - Grid and masonry layout modes
|
|
5272
|
+
* - Responsive column count via size presets (sm, md, lg thumbnails)
|
|
5273
|
+
* - Configurable custom column count
|
|
5274
|
+
* - Lightbox overlay with navigation (prev/next)
|
|
5275
|
+
* - Keyboard navigation (Arrow keys, Escape)
|
|
5276
|
+
* - Optional captions and category filtering
|
|
5277
|
+
* - Lazy loading with placeholder shimmer
|
|
5278
|
+
* - Zoom control in lightbox
|
|
5279
|
+
* - Download button in lightbox
|
|
5280
|
+
* - Dark/light theme support
|
|
5281
|
+
*
|
|
5282
|
+
* @example
|
|
5283
|
+
* ```html
|
|
5284
|
+
* <lc-gallery
|
|
5285
|
+
* [items]="images"
|
|
5286
|
+
* layout="grid"
|
|
5287
|
+
* size="md"
|
|
5288
|
+
* [showCaptions]="true" />
|
|
5289
|
+
* ```
|
|
5290
|
+
*/
|
|
5291
|
+
declare class GalleryComponent implements OnDestroy {
|
|
5292
|
+
/** Array of gallery items to display */
|
|
5293
|
+
readonly items: _angular_core.InputSignal<GalleryItem[]>;
|
|
5294
|
+
/** Layout mode */
|
|
5295
|
+
readonly layout: _angular_core.InputSignal<GalleryLayout>;
|
|
5296
|
+
/** Thumbnail size preset — controls column count (sm=4col, md=3col, lg=2col) */
|
|
5297
|
+
readonly size: _angular_core.InputSignal<GallerySize>;
|
|
5298
|
+
/** Custom column count (overrides size preset) */
|
|
5299
|
+
readonly columns: _angular_core.InputSignal<number | null>;
|
|
5300
|
+
/** Whether to show captions below thumbnails */
|
|
5301
|
+
readonly showCaptions: _angular_core.InputSignal<boolean>;
|
|
5302
|
+
/** Whether clicking a thumbnail opens the lightbox */
|
|
5303
|
+
readonly enableLightbox: _angular_core.InputSignal<boolean>;
|
|
5304
|
+
/** Gap between items in pixels */
|
|
5305
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
5306
|
+
/** Aspect ratio for grid items (ignored in masonry mode) */
|
|
5307
|
+
readonly aspectRatio: _angular_core.InputSignal<string>;
|
|
5308
|
+
/** Emitted when lightbox opens with item index */
|
|
5309
|
+
readonly lightboxOpen: _angular_core.OutputEmitterRef<number>;
|
|
5310
|
+
/** Emitted when lightbox closes */
|
|
5311
|
+
readonly lightboxClose: _angular_core.OutputEmitterRef<void>;
|
|
5312
|
+
protected lightboxIndex: _angular_core.WritableSignal<number | null>;
|
|
5313
|
+
protected lightboxZoom: _angular_core.WritableSignal<number>;
|
|
5314
|
+
protected loadedImages: _angular_core.WritableSignal<Set<number>>;
|
|
5315
|
+
protected activeFilter: _angular_core.WritableSignal<string | null>;
|
|
5316
|
+
protected gridColumns: _angular_core.Signal<number>;
|
|
5317
|
+
protected gridStyle: _angular_core.Signal<{
|
|
5318
|
+
'column-count': string;
|
|
5319
|
+
'column-gap': string;
|
|
5320
|
+
display?: undefined;
|
|
5321
|
+
'grid-template-columns'?: undefined;
|
|
5322
|
+
gap?: undefined;
|
|
5323
|
+
} | {
|
|
5324
|
+
display: string;
|
|
5325
|
+
'grid-template-columns': string;
|
|
5326
|
+
gap: string;
|
|
5327
|
+
'column-count'?: undefined;
|
|
5328
|
+
'column-gap'?: undefined;
|
|
5329
|
+
}>;
|
|
5330
|
+
protected itemStyle: _angular_core.Signal<{
|
|
5331
|
+
'aspect-ratio'?: undefined;
|
|
5332
|
+
} | {
|
|
5333
|
+
'aspect-ratio': string;
|
|
5334
|
+
}>;
|
|
5335
|
+
protected categories: _angular_core.Signal<string[]>;
|
|
5336
|
+
protected filteredItems: _angular_core.Signal<GalleryItem[]>;
|
|
5337
|
+
protected showFilters: _angular_core.Signal<boolean>;
|
|
5338
|
+
protected lightboxItem: _angular_core.Signal<GalleryItem | null>;
|
|
5339
|
+
protected lightboxCounter: _angular_core.Signal<string>;
|
|
5340
|
+
protected lightboxTransform: _angular_core.Signal<string>;
|
|
5341
|
+
protected canGoPrev: _angular_core.Signal<boolean>;
|
|
5342
|
+
protected canGoNext: _angular_core.Signal<boolean>;
|
|
5343
|
+
ngOnDestroy(): void;
|
|
5344
|
+
protected openLightbox(index: number): void;
|
|
5345
|
+
protected closeLightbox(): void;
|
|
5346
|
+
protected goToPrev(): void;
|
|
5347
|
+
protected goToNext(): void;
|
|
5348
|
+
protected zoomIn(): void;
|
|
5349
|
+
protected zoomOut(): void;
|
|
5350
|
+
protected resetZoom(): void;
|
|
5351
|
+
protected downloadCurrent(): void;
|
|
5352
|
+
protected setFilter(category: string | null): void;
|
|
5353
|
+
protected onImageLoad(index: number): void;
|
|
5354
|
+
protected isLoaded(index: number): boolean;
|
|
5355
|
+
protected getThumbnail(item: GalleryItem): string;
|
|
5356
|
+
protected trackByIndex(index: number): number;
|
|
5357
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
5358
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GalleryComponent, never>;
|
|
5359
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GalleryComponent, "lc-gallery", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "showCaptions": { "alias": "showCaptions"; "required": false; "isSignal": true; }; "enableLightbox": { "alias": "enableLightbox"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, { "lightboxOpen": "lightboxOpen"; "lightboxClose": "lightboxClose"; }, never, never, true, never>;
|
|
5360
|
+
}
|
|
5361
|
+
|
|
5362
|
+
type DependencyNodeStatus = 'default' | 'active' | 'success' | 'warning' | 'error' | 'muted';
|
|
5363
|
+
type DependencyDirection = 'horizontal' | 'vertical';
|
|
5364
|
+
type DependencyRelation = 'depends' | 'blocks' | 'references' | 'requires' | 'extends' | 'implements' | 'uses';
|
|
5365
|
+
interface DependencyEdgeDef {
|
|
5366
|
+
/** Target node id */
|
|
5367
|
+
id: string;
|
|
5368
|
+
/** Relationship type */
|
|
5369
|
+
relation?: DependencyRelation;
|
|
5370
|
+
}
|
|
5371
|
+
interface DependencyNode {
|
|
5372
|
+
/** Unique identifier */
|
|
5373
|
+
id: string;
|
|
5374
|
+
/** Display label */
|
|
5375
|
+
label: string;
|
|
5376
|
+
/** Optional description */
|
|
5377
|
+
description?: string;
|
|
5378
|
+
/** Optional icon name */
|
|
5379
|
+
icon?: string;
|
|
5380
|
+
/** Visual status / color */
|
|
5381
|
+
status?: DependencyNodeStatus;
|
|
5382
|
+
/** Child nodes: items this node is required for (right / bottom side) */
|
|
5383
|
+
children?: DependencyNode[];
|
|
5384
|
+
/** Dependencies: items this node depends on (shown as cross-reference edges) */
|
|
5385
|
+
dependsOn?: DependencyEdgeDef[];
|
|
5386
|
+
}
|
|
5387
|
+
interface LayoutNode {
|
|
5388
|
+
id: string;
|
|
5389
|
+
label: string;
|
|
5390
|
+
description?: string;
|
|
5391
|
+
icon?: string;
|
|
5392
|
+
status: DependencyNodeStatus;
|
|
5393
|
+
x: number;
|
|
5394
|
+
y: number;
|
|
5395
|
+
width: number;
|
|
5396
|
+
height: number;
|
|
5397
|
+
depth: number;
|
|
5398
|
+
parentId: string | null;
|
|
5399
|
+
incomingCount: number;
|
|
5400
|
+
outgoingCount: number;
|
|
5401
|
+
}
|
|
5402
|
+
interface LayoutEdge {
|
|
5403
|
+
id: string;
|
|
5404
|
+
path: string;
|
|
5405
|
+
sourceId: string;
|
|
5406
|
+
targetId: string;
|
|
5407
|
+
relation?: DependencyRelation;
|
|
5408
|
+
labelX: number;
|
|
5409
|
+
labelY: number;
|
|
5410
|
+
color: string;
|
|
5411
|
+
dashed: boolean;
|
|
5412
|
+
isCrossRef: boolean;
|
|
5413
|
+
}
|
|
5414
|
+
/**
|
|
5415
|
+
* Dependency viewer component for visualizing hierarchical and cross-cutting relationships.
|
|
5416
|
+
*
|
|
5417
|
+
* Features:
|
|
5418
|
+
* - Horizontal (left-to-right) and vertical (top-to-bottom) layout directions
|
|
5419
|
+
* - Bidirectional dependencies: children (right/down) and dependsOn (cross-references)
|
|
5420
|
+
* - Relationship types: depends, blocks, references, requires, extends, implements, uses
|
|
5421
|
+
* - Edge labels showing relationship type
|
|
5422
|
+
* - Dashed vs solid edges per relationship category
|
|
5423
|
+
* - Color-coded edges per relationship type
|
|
5424
|
+
* - Node status colors (default, active, success, warning, error, muted)
|
|
5425
|
+
* - Pan and zoom controls with mouse wheel support
|
|
5426
|
+
* - Collapsible sub-trees
|
|
5427
|
+
* - Interactive node selection with detail panel
|
|
5428
|
+
* - Legend showing active relationship types
|
|
5429
|
+
* - SVG arrowhead markers on cross-reference edges
|
|
5430
|
+
* - Dark/light theme support
|
|
5431
|
+
*
|
|
5432
|
+
* @example
|
|
5433
|
+
* ```html
|
|
5434
|
+
* <lc-dependency-viewer [root]="specTree" direction="horizontal" />
|
|
5435
|
+
* ```
|
|
5436
|
+
*/
|
|
5437
|
+
declare class DependencyViewerComponent {
|
|
5438
|
+
readonly root: _angular_core.InputSignal<DependencyNode>;
|
|
5439
|
+
readonly direction: _angular_core.InputSignal<DependencyDirection>;
|
|
5440
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
5441
|
+
readonly showToolbar: _angular_core.InputSignal<boolean>;
|
|
5442
|
+
readonly showEdgeLabels: _angular_core.InputSignal<boolean>;
|
|
5443
|
+
readonly edgeWidth: _angular_core.InputSignal<number>;
|
|
5444
|
+
protected zoom: _angular_core.WritableSignal<number>;
|
|
5445
|
+
protected panX: _angular_core.WritableSignal<number>;
|
|
5446
|
+
protected panY: _angular_core.WritableSignal<number>;
|
|
5447
|
+
protected selectedNodeId: _angular_core.WritableSignal<string | null>;
|
|
5448
|
+
protected collapsedIds: _angular_core.WritableSignal<Set<string>>;
|
|
5449
|
+
private isPanning;
|
|
5450
|
+
private lastMouseX;
|
|
5451
|
+
private lastMouseY;
|
|
5452
|
+
protected effectiveRoot: _angular_core.Signal<DependencyNode>;
|
|
5453
|
+
private allOriginalNodes;
|
|
5454
|
+
protected layout: _angular_core.Signal<{
|
|
5455
|
+
nodes: LayoutNode[];
|
|
5456
|
+
edges: LayoutEdge[];
|
|
5457
|
+
width: number;
|
|
5458
|
+
height: number;
|
|
5459
|
+
}>;
|
|
5460
|
+
protected svgWidth: _angular_core.Signal<number>;
|
|
5461
|
+
protected svgHeight: _angular_core.Signal<number>;
|
|
5462
|
+
protected viewBox: _angular_core.Signal<string>;
|
|
5463
|
+
protected transform: _angular_core.Signal<string>;
|
|
5464
|
+
protected selectedNode: _angular_core.Signal<LayoutNode | null>;
|
|
5465
|
+
protected selectedDependsOn: _angular_core.Signal<DependencyEdgeDef[]>;
|
|
5466
|
+
protected legendItems: _angular_core.Signal<{
|
|
5467
|
+
relation: DependencyRelation;
|
|
5468
|
+
label: string;
|
|
5469
|
+
color: string;
|
|
5470
|
+
dashed: boolean;
|
|
5471
|
+
}[]>;
|
|
5472
|
+
protected hasChildren(nodeId: string): boolean;
|
|
5473
|
+
protected isCollapsed(nodeId: string): boolean;
|
|
5474
|
+
protected getRelationLabel(relation: DependencyRelation): string;
|
|
5475
|
+
private pruneCollapsed;
|
|
5476
|
+
private findOriginalNode;
|
|
5477
|
+
protected selectNode(id: string, event: Event): void;
|
|
5478
|
+
protected toggleCollapse(id: string, event: Event): void;
|
|
5479
|
+
protected deselectNode(): void;
|
|
5480
|
+
protected zoomIn(): void;
|
|
5481
|
+
protected zoomOut(): void;
|
|
5482
|
+
protected resetZoom(): void;
|
|
5483
|
+
protected onMouseDown(event: MouseEvent): void;
|
|
5484
|
+
protected onMouseMove(event: MouseEvent): void;
|
|
5485
|
+
protected onMouseUp(): void;
|
|
5486
|
+
protected onWheel(event: WheelEvent): void;
|
|
5487
|
+
protected getNodeBg(status: DependencyNodeStatus): string;
|
|
5488
|
+
protected getNodeBorder(status: DependencyNodeStatus): string;
|
|
5489
|
+
protected getNodeText(status: DependencyNodeStatus): string;
|
|
5490
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DependencyViewerComponent, never>;
|
|
5491
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DependencyViewerComponent, "lc-dependency-viewer", never, { "root": { "alias": "root"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showEdgeLabels": { "alias": "showEdgeLabels"; "required": false; "isSignal": true; }; "edgeWidth": { "alias": "edgeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5492
|
+
}
|
|
5493
|
+
|
|
5494
|
+
interface ScatterPoint {
|
|
5495
|
+
x: number;
|
|
5496
|
+
y: number;
|
|
5497
|
+
label?: string;
|
|
5498
|
+
size?: number;
|
|
5499
|
+
}
|
|
5500
|
+
interface ScatterSeries {
|
|
5501
|
+
label: string;
|
|
5502
|
+
data: ScatterPoint[];
|
|
5503
|
+
color?: string;
|
|
5504
|
+
}
|
|
5505
|
+
declare class ScatterPlotComponent {
|
|
5506
|
+
readonly series: _angular_core.InputSignal<ScatterSeries[]>;
|
|
5507
|
+
readonly width: _angular_core.InputSignal<number>;
|
|
5508
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5509
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5510
|
+
readonly showXLabels: _angular_core.InputSignal<boolean>;
|
|
5511
|
+
readonly showYLabels: _angular_core.InputSignal<boolean>;
|
|
5512
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5513
|
+
readonly showTooltip: _angular_core.InputSignal<boolean>;
|
|
5514
|
+
readonly dotRadius: _angular_core.InputSignal<number>;
|
|
5515
|
+
readonly xAxisLabel: _angular_core.InputSignal<string>;
|
|
5516
|
+
readonly yAxisLabel: _angular_core.InputSignal<string>;
|
|
5517
|
+
readonly pointClick: _angular_core.OutputEmitterRef<{
|
|
5518
|
+
series: string;
|
|
5519
|
+
point: ScatterPoint;
|
|
5520
|
+
}>;
|
|
5521
|
+
protected hoveredPoint: _angular_core.WritableSignal<{
|
|
5522
|
+
x: number;
|
|
5523
|
+
y: number;
|
|
5524
|
+
label: string;
|
|
5525
|
+
sx: number;
|
|
5526
|
+
sy: number;
|
|
5527
|
+
} | null>;
|
|
5528
|
+
private readonly PL;
|
|
5529
|
+
private readonly PR;
|
|
5530
|
+
private readonly PT;
|
|
5531
|
+
private readonly PB;
|
|
5532
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
5533
|
+
private readonly allPoints;
|
|
5534
|
+
private readonly xExtent;
|
|
5535
|
+
private readonly yExtent;
|
|
5536
|
+
protected readonly plotArea: _angular_core.Signal<{
|
|
5537
|
+
x: number;
|
|
5538
|
+
y: number;
|
|
5539
|
+
w: number;
|
|
5540
|
+
h: number;
|
|
5541
|
+
}>;
|
|
5542
|
+
protected readonly gridLinesX: _angular_core.Signal<{
|
|
5543
|
+
x: number;
|
|
5544
|
+
label: number;
|
|
5545
|
+
}[]>;
|
|
5546
|
+
protected readonly gridLinesY: _angular_core.Signal<{
|
|
5547
|
+
y: number;
|
|
5548
|
+
label: number;
|
|
5549
|
+
}[]>;
|
|
5550
|
+
protected readonly renderedSeries: _angular_core.Signal<{
|
|
5551
|
+
label: string;
|
|
5552
|
+
color: string;
|
|
5553
|
+
points: {
|
|
5554
|
+
cx: number;
|
|
5555
|
+
cy: number;
|
|
5556
|
+
r: number;
|
|
5557
|
+
label: string;
|
|
5558
|
+
orig: ScatterPoint;
|
|
5559
|
+
}[];
|
|
5560
|
+
}[]>;
|
|
5561
|
+
protected readonly legendItems: _angular_core.Signal<{
|
|
5562
|
+
label: string;
|
|
5563
|
+
color: string;
|
|
5564
|
+
}[]>;
|
|
5565
|
+
protected readonly axisLine: _angular_core.Signal<{
|
|
5566
|
+
vx1: number;
|
|
5567
|
+
vy1: number;
|
|
5568
|
+
vx2: number;
|
|
5569
|
+
vy2: number;
|
|
5570
|
+
hx1: number;
|
|
5571
|
+
hy1: number;
|
|
5572
|
+
hx2: number;
|
|
5573
|
+
hy2: number;
|
|
5574
|
+
}>;
|
|
5575
|
+
protected onDotEnter(cx: number, cy: number, label: string): void;
|
|
5576
|
+
protected onDotLeave(): void;
|
|
5577
|
+
protected onDotClick(seriesLabel: string, point: ScatterPoint): void;
|
|
5578
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScatterPlotComponent, never>;
|
|
5579
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScatterPlotComponent, "lc-scatter-plot", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXLabels": { "alias": "showXLabels"; "required": false; "isSignal": true; }; "showYLabels": { "alias": "showYLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showTooltip": { "alias": "showTooltip"; "required": false; "isSignal": true; }; "dotRadius": { "alias": "dotRadius"; "required": false; "isSignal": true; }; "xAxisLabel": { "alias": "xAxisLabel"; "required": false; "isSignal": true; }; "yAxisLabel": { "alias": "yAxisLabel"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, never, true, never>;
|
|
5580
|
+
}
|
|
5581
|
+
|
|
5582
|
+
interface FunnelStep {
|
|
5583
|
+
label: string;
|
|
5584
|
+
value: number;
|
|
5585
|
+
color?: string;
|
|
5586
|
+
}
|
|
5587
|
+
declare class FunnelChartComponent {
|
|
5588
|
+
readonly steps: _angular_core.InputSignal<FunnelStep[]>;
|
|
5589
|
+
readonly width: _angular_core.InputSignal<number>;
|
|
5590
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5591
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
5592
|
+
readonly showValues: _angular_core.InputSignal<boolean>;
|
|
5593
|
+
readonly showPercentage: _angular_core.InputSignal<boolean>;
|
|
5594
|
+
readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
5595
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
5596
|
+
protected readonly renderedSteps: _angular_core.Signal<{
|
|
5597
|
+
path: string;
|
|
5598
|
+
color: string;
|
|
5599
|
+
label: string;
|
|
5600
|
+
value: number;
|
|
5601
|
+
pct: number;
|
|
5602
|
+
labelX: number;
|
|
5603
|
+
labelY: number;
|
|
5604
|
+
}[]>;
|
|
5605
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FunnelChartComponent, never>;
|
|
5606
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FunnelChartComponent, "lc-funnel-chart", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "showPercentage": { "alias": "showPercentage"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5607
|
+
}
|
|
5608
|
+
|
|
5609
|
+
declare class TagInputComponent implements ControlValueAccessor {
|
|
5610
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
5611
|
+
readonly maxTags: _angular_core.InputSignal<number>;
|
|
5612
|
+
readonly allowDuplicates: _angular_core.InputSignal<boolean>;
|
|
5613
|
+
readonly removable: _angular_core.InputSignal<boolean>;
|
|
5614
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5615
|
+
readonly separator: _angular_core.InputSignal<"enter" | "comma" | "both">;
|
|
5616
|
+
readonly suggestions: _angular_core.InputSignal<string[]>;
|
|
5617
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
5618
|
+
readonly tagAdded: _angular_core.OutputEmitterRef<string>;
|
|
5619
|
+
readonly tagRemoved: _angular_core.OutputEmitterRef<string>;
|
|
5620
|
+
protected tags: _angular_core.WritableSignal<string[]>;
|
|
5621
|
+
protected inputValue: _angular_core.WritableSignal<string>;
|
|
5622
|
+
protected focused: _angular_core.WritableSignal<boolean>;
|
|
5623
|
+
protected readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
5624
|
+
protected readonly filteredSuggestions: _angular_core.Signal<string[]>;
|
|
5625
|
+
protected readonly canAdd: _angular_core.Signal<boolean>;
|
|
5626
|
+
private onChange;
|
|
5627
|
+
private onTouched;
|
|
5628
|
+
writeValue(value: string[] | null): void;
|
|
5629
|
+
registerOnChange(fn: (val: string[]) => void): void;
|
|
5630
|
+
registerOnTouched(fn: () => void): void;
|
|
5631
|
+
protected addTag(value: string): void;
|
|
5632
|
+
protected removeTag(index: number): void;
|
|
5633
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
5634
|
+
protected onInput(event: Event): void;
|
|
5635
|
+
protected onFocus(): void;
|
|
5636
|
+
protected onBlur(): void;
|
|
5637
|
+
protected selectSuggestion(value: string): void;
|
|
5638
|
+
protected focusInput(): void;
|
|
5639
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagInputComponent, never>;
|
|
5640
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagInputComponent, "lc-tag-input", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "maxTags": { "alias": "maxTags"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "tagAdded": "tagAdded"; "tagRemoved": "tagRemoved"; }, never, never, true, never>;
|
|
5641
|
+
}
|
|
5642
|
+
|
|
5643
|
+
interface DateRange {
|
|
5644
|
+
start: Date | null;
|
|
5645
|
+
end: Date | null;
|
|
5646
|
+
}
|
|
5647
|
+
declare class DateRangePickerComponent implements ControlValueAccessor {
|
|
5648
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
5649
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
5650
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5651
|
+
readonly minDate: _angular_core.InputSignal<Date | null>;
|
|
5652
|
+
readonly maxDate: _angular_core.InputSignal<Date | null>;
|
|
5653
|
+
readonly rangeChange: _angular_core.OutputEmitterRef<DateRange>;
|
|
5654
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
5655
|
+
protected range: _angular_core.WritableSignal<DateRange>;
|
|
5656
|
+
protected selecting: _angular_core.WritableSignal<"start" | "end">;
|
|
5657
|
+
protected hoveredDate: _angular_core.WritableSignal<Date | null>;
|
|
5658
|
+
protected viewingMonth: _angular_core.WritableSignal<Date>;
|
|
5659
|
+
private onChange;
|
|
5660
|
+
private onTouched;
|
|
5661
|
+
protected readonly displayValue: _angular_core.Signal<string>;
|
|
5662
|
+
protected readonly monthLabel: _angular_core.Signal<string>;
|
|
5663
|
+
protected readonly weekdays: string[];
|
|
5664
|
+
protected readonly calendarDays: _angular_core.Signal<{
|
|
5665
|
+
date: Date;
|
|
5666
|
+
inMonth: boolean;
|
|
5667
|
+
disabled: boolean;
|
|
5668
|
+
}[]>;
|
|
5669
|
+
writeValue(value: DateRange | null): void;
|
|
5670
|
+
registerOnChange(fn: (val: DateRange) => void): void;
|
|
5671
|
+
registerOnTouched(fn: () => void): void;
|
|
5672
|
+
protected toggle(): void;
|
|
5673
|
+
protected close(): void;
|
|
5674
|
+
protected prevMonth(): void;
|
|
5675
|
+
protected nextMonth(): void;
|
|
5676
|
+
protected selectDate(date: Date): void;
|
|
5677
|
+
protected onDayHover(date: Date): void;
|
|
5678
|
+
protected isStart(date: Date): boolean;
|
|
5679
|
+
protected isEnd(date: Date): boolean;
|
|
5680
|
+
protected isInRange(date: Date): boolean;
|
|
5681
|
+
protected isToday(date: Date): boolean;
|
|
5682
|
+
protected clearRange(event: Event): void;
|
|
5683
|
+
private isDateDisabled;
|
|
5684
|
+
private sameDay;
|
|
5685
|
+
private emitRange;
|
|
5686
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRangePickerComponent, never>;
|
|
5687
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRangePickerComponent, "lc-date-range-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "rangeChange": "rangeChange"; }, never, never, true, never>;
|
|
5688
|
+
}
|
|
5689
|
+
|
|
5690
|
+
type DiffViewMode = 'side-by-side' | 'inline';
|
|
5691
|
+
interface DiffLine {
|
|
5692
|
+
type: 'unchanged' | 'added' | 'removed';
|
|
5693
|
+
leftNum: number | null;
|
|
5694
|
+
rightNum: number | null;
|
|
5695
|
+
content: string;
|
|
5696
|
+
}
|
|
5697
|
+
declare class DiffViewerComponent {
|
|
5698
|
+
readonly oldText: _angular_core.InputSignal<string>;
|
|
5699
|
+
readonly newText: _angular_core.InputSignal<string>;
|
|
5700
|
+
readonly oldLabel: _angular_core.InputSignal<string>;
|
|
5701
|
+
readonly newLabel: _angular_core.InputSignal<string>;
|
|
5702
|
+
readonly mode: _angular_core.InputSignal<DiffViewMode>;
|
|
5703
|
+
readonly showLineNumbers: _angular_core.InputSignal<boolean>;
|
|
5704
|
+
readonly contextLines: _angular_core.InputSignal<number>;
|
|
5705
|
+
protected readonly diffLines: _angular_core.Signal<DiffLine[]>;
|
|
5706
|
+
protected readonly filteredLines: _angular_core.Signal<DiffLine[]>;
|
|
5707
|
+
protected readonly sideBySide: _angular_core.Signal<{
|
|
5708
|
+
left: {
|
|
5709
|
+
num: number | null;
|
|
5710
|
+
content: string;
|
|
5711
|
+
type: string;
|
|
5712
|
+
}[];
|
|
5713
|
+
right: {
|
|
5714
|
+
num: number | null;
|
|
5715
|
+
content: string;
|
|
5716
|
+
type: string;
|
|
5717
|
+
}[];
|
|
5718
|
+
}>;
|
|
5719
|
+
protected readonly stats: _angular_core.Signal<{
|
|
5720
|
+
additions: number;
|
|
5721
|
+
deletions: number;
|
|
5722
|
+
}>;
|
|
5723
|
+
private computeDiff;
|
|
5724
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DiffViewerComponent, never>;
|
|
5725
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DiffViewerComponent, "lc-diff-viewer", never, { "oldText": { "alias": "oldText"; "required": true; "isSignal": true; }; "newText": { "alias": "newText"; "required": true; "isSignal": true; }; "oldLabel": { "alias": "oldLabel"; "required": false; "isSignal": true; }; "newLabel": { "alias": "newLabel"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; "contextLines": { "alias": "contextLines"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5726
|
+
}
|
|
5727
|
+
|
|
5728
|
+
interface KanbanCard {
|
|
5729
|
+
id: string;
|
|
5730
|
+
title: string;
|
|
5731
|
+
description?: string;
|
|
5732
|
+
labels?: KanbanLabel[];
|
|
5733
|
+
assignee?: string;
|
|
5734
|
+
priority?: 'low' | 'medium' | 'high' | 'critical';
|
|
5735
|
+
}
|
|
5736
|
+
interface KanbanLabel {
|
|
5737
|
+
text: string;
|
|
5738
|
+
color?: string;
|
|
5739
|
+
}
|
|
5740
|
+
interface KanbanColumn {
|
|
5741
|
+
id: string;
|
|
5742
|
+
title: string;
|
|
5743
|
+
cards: KanbanCard[];
|
|
5744
|
+
color?: string;
|
|
5745
|
+
limit?: number;
|
|
5746
|
+
}
|
|
5747
|
+
interface KanbanMoveEvent {
|
|
5748
|
+
cardId: string;
|
|
5749
|
+
fromColumnId: string;
|
|
5750
|
+
toColumnId: string;
|
|
5751
|
+
toIndex: number;
|
|
5752
|
+
}
|
|
5753
|
+
declare class KanbanBoardComponent {
|
|
5754
|
+
readonly columns: _angular_core.InputSignal<KanbanColumn[]>;
|
|
5755
|
+
readonly showCardCount: _angular_core.InputSignal<boolean>;
|
|
5756
|
+
readonly showWipLimit: _angular_core.InputSignal<boolean>;
|
|
5757
|
+
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
5758
|
+
readonly cardMoved: _angular_core.OutputEmitterRef<KanbanMoveEvent>;
|
|
5759
|
+
readonly cardClick: _angular_core.OutputEmitterRef<{
|
|
5760
|
+
card: KanbanCard;
|
|
5761
|
+
columnId: string;
|
|
5762
|
+
}>;
|
|
5763
|
+
protected internalColumns: _angular_core.WritableSignal<KanbanColumn[]>;
|
|
5764
|
+
protected draggedCard: _angular_core.WritableSignal<{
|
|
5765
|
+
card: KanbanCard;
|
|
5766
|
+
columnId: string;
|
|
5767
|
+
} | null>;
|
|
5768
|
+
protected dropTargetColumn: _angular_core.WritableSignal<string | null>;
|
|
5769
|
+
protected dropTargetIndex: _angular_core.WritableSignal<number>;
|
|
5770
|
+
protected readonly displayColumns: _angular_core.Signal<KanbanColumn[]>;
|
|
5771
|
+
protected isOverLimit(col: KanbanColumn): boolean;
|
|
5772
|
+
protected getPriorityIcon(priority?: string): string;
|
|
5773
|
+
protected getPriorityColor(priority?: string): string;
|
|
5774
|
+
protected onDragStart(event: DragEvent, card: KanbanCard, columnId: string): void;
|
|
5775
|
+
protected onDragOver(event: DragEvent, columnId: string, index: number): void;
|
|
5776
|
+
protected onDragOverColumn(event: DragEvent, columnId: string): void;
|
|
5777
|
+
protected onDragLeave(): void;
|
|
5778
|
+
protected onDrop(event: DragEvent, toColumnId: string, toIndex?: number): void;
|
|
5779
|
+
protected onDragEnd(): void;
|
|
5780
|
+
protected onCardClick(card: KanbanCard, columnId: string): void;
|
|
5781
|
+
protected trackColumn(_: number, col: KanbanColumn): string;
|
|
5782
|
+
protected trackCard(_: number, card: KanbanCard): string;
|
|
5783
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KanbanBoardComponent, never>;
|
|
5784
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KanbanBoardComponent, "lc-kanban-board", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "showCardCount": { "alias": "showCardCount"; "required": false; "isSignal": true; }; "showWipLimit": { "alias": "showWipLimit"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "cardMoved": "cardMoved"; "cardClick": "cardClick"; }, never, never, true, never>;
|
|
5785
|
+
}
|
|
5786
|
+
|
|
5787
|
+
type NotificationType = 'info' | 'success' | 'warning' | 'error';
|
|
5788
|
+
type NotificationPriority = 'low' | 'normal' | 'high' | 'urgent';
|
|
5789
|
+
interface Notification {
|
|
5790
|
+
id: string;
|
|
5791
|
+
title: string;
|
|
5792
|
+
message?: string;
|
|
5793
|
+
type?: NotificationType;
|
|
5794
|
+
priority?: NotificationPriority;
|
|
5795
|
+
timestamp: Date;
|
|
5796
|
+
read?: boolean;
|
|
5797
|
+
icon?: string;
|
|
5798
|
+
category?: string;
|
|
5799
|
+
actionLabel?: string;
|
|
5800
|
+
actionUrl?: string;
|
|
5801
|
+
}
|
|
5802
|
+
declare class NotificationCenterComponent {
|
|
5803
|
+
readonly notifications: _angular_core.InputSignal<Notification[]>;
|
|
5804
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
5805
|
+
readonly showFilter: _angular_core.InputSignal<boolean>;
|
|
5806
|
+
readonly showTimestamp: _angular_core.InputSignal<boolean>;
|
|
5807
|
+
readonly showPriority: _angular_core.InputSignal<boolean>;
|
|
5808
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
5809
|
+
readonly maxHeight: _angular_core.InputSignal<string>;
|
|
5810
|
+
readonly groupByCategory: _angular_core.InputSignal<boolean>;
|
|
5811
|
+
readonly notificationClick: _angular_core.OutputEmitterRef<Notification>;
|
|
5812
|
+
readonly notificationDismiss: _angular_core.OutputEmitterRef<string>;
|
|
5813
|
+
readonly notificationAction: _angular_core.OutputEmitterRef<Notification>;
|
|
5814
|
+
readonly markAllRead: _angular_core.OutputEmitterRef<void>;
|
|
5815
|
+
readonly clearAll: _angular_core.OutputEmitterRef<void>;
|
|
5816
|
+
protected activeFilter: _angular_core.WritableSignal<"all" | NotificationType>;
|
|
5817
|
+
protected searchQuery: _angular_core.WritableSignal<string>;
|
|
5818
|
+
protected readonly unreadCount: _angular_core.Signal<number>;
|
|
5819
|
+
protected readonly filteredNotifications: _angular_core.Signal<Notification[]>;
|
|
5820
|
+
protected readonly groupedNotifications: _angular_core.Signal<{
|
|
5821
|
+
category: string;
|
|
5822
|
+
items: Notification[];
|
|
5823
|
+
}[] | null>;
|
|
5824
|
+
protected readonly filterCounts: _angular_core.Signal<{
|
|
5825
|
+
all: number;
|
|
5826
|
+
info: number;
|
|
5827
|
+
success: number;
|
|
5828
|
+
warning: number;
|
|
5829
|
+
error: number;
|
|
5830
|
+
}>;
|
|
5831
|
+
protected readonly hasNotifications: _angular_core.Signal<boolean>;
|
|
5832
|
+
protected getTypeIcon(type?: NotificationType): string;
|
|
5833
|
+
protected getPriorityLabel(priority?: NotificationPriority): string;
|
|
5834
|
+
protected formatTime(date: Date): string;
|
|
5835
|
+
protected setFilter(filter: NotificationType | 'all'): void;
|
|
5836
|
+
protected onSearch(event: Event): void;
|
|
5837
|
+
protected onClick(notification: Notification): void;
|
|
5838
|
+
protected onDismiss(id: string, event: Event): void;
|
|
5839
|
+
protected onAction(notification: Notification, event: Event): void;
|
|
5840
|
+
protected onMarkAllRead(): void;
|
|
5841
|
+
protected onClearAll(): void;
|
|
5842
|
+
private priorityWeight;
|
|
5843
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationCenterComponent, never>;
|
|
5844
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationCenterComponent, "lc-notification-center", never, { "notifications": { "alias": "notifications"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showTimestamp": { "alias": "showTimestamp"; "required": false; "isSignal": true; }; "showPriority": { "alias": "showPriority"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "groupByCategory": { "alias": "groupByCategory"; "required": false; "isSignal": true; }; }, { "notificationClick": "notificationClick"; "notificationDismiss": "notificationDismiss"; "notificationAction": "notificationAction"; "markAllRead": "markAllRead"; "clearAll": "clearAll"; }, never, never, true, never>;
|
|
5845
|
+
}
|
|
5846
|
+
|
|
5847
|
+
type RichTextEditorMode = 'rich' | 'markdown' | 'split';
|
|
5848
|
+
type ToolbarAction = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'h1' | 'h2' | 'h3' | 'ul' | 'ol' | 'blockquote' | 'code' | 'codeblock' | 'link' | 'image' | 'hr';
|
|
5849
|
+
interface ToolbarConfig {
|
|
5850
|
+
actions: ToolbarAction[];
|
|
5851
|
+
}
|
|
5852
|
+
/**
|
|
5853
|
+
* Rich Text Editor with Markdown support.
|
|
5854
|
+
*
|
|
5855
|
+
* Supports three modes:
|
|
5856
|
+
* - `rich`: WYSIWYG editing with toolbar
|
|
5857
|
+
* - `markdown`: Raw markdown editing with syntax highlighting
|
|
5858
|
+
* - `split`: Side-by-side markdown and preview
|
|
5859
|
+
*
|
|
5860
|
+
* Implements ControlValueAccessor for reactive form integration.
|
|
5861
|
+
* The value is always stored as Markdown.
|
|
5862
|
+
*
|
|
5863
|
+
* @example
|
|
5864
|
+
* ```html
|
|
5865
|
+
* <lc-rich-text-editor
|
|
5866
|
+
* [(ngModel)]="content"
|
|
5867
|
+
* mode="split"
|
|
5868
|
+
* placeholder="Write something..." />
|
|
5869
|
+
* ```
|
|
5870
|
+
*/
|
|
5871
|
+
declare class RichTextEditorComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {
|
|
5872
|
+
/** Editor mode */
|
|
5873
|
+
mode: _angular_core.InputSignal<RichTextEditorMode>;
|
|
5874
|
+
/** Placeholder text */
|
|
5875
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
5876
|
+
/** Minimum height in px */
|
|
5877
|
+
minHeight: _angular_core.InputSignal<number>;
|
|
5878
|
+
/** Maximum height in px (0 = unlimited) */
|
|
5879
|
+
maxHeight: _angular_core.InputSignal<number>;
|
|
5880
|
+
/** Whether the editor is disabled */
|
|
5881
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
5882
|
+
/** Whether the editor is readonly */
|
|
5883
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
5884
|
+
/** Toolbar configuration */
|
|
5885
|
+
toolbar: _angular_core.InputSignal<ToolbarConfig>;
|
|
5886
|
+
/** Whether to show word count */
|
|
5887
|
+
showWordCount: _angular_core.InputSignal<boolean>;
|
|
5888
|
+
/** Emitted on every content change */
|
|
5889
|
+
readonly contentChange: _angular_core.OutputEmitterRef<string>;
|
|
5890
|
+
editorArea: ElementRef<HTMLTextAreaElement>;
|
|
5891
|
+
richArea: ElementRef<HTMLDivElement>;
|
|
5892
|
+
/** Internal markdown value */
|
|
5893
|
+
protected markdown: _angular_core.WritableSignal<string>;
|
|
5894
|
+
/** Current active mode (can be toggled by user) */
|
|
5895
|
+
protected activeMode: _angular_core.WritableSignal<RichTextEditorMode>;
|
|
5896
|
+
/** Word count */
|
|
5897
|
+
protected wordCount: _angular_core.Signal<number>;
|
|
5898
|
+
/** Character count */
|
|
5899
|
+
protected charCount: _angular_core.Signal<number>;
|
|
5900
|
+
/** Rendered HTML from markdown */
|
|
5901
|
+
protected renderedHtml: _angular_core.Signal<string>;
|
|
5902
|
+
private onChange;
|
|
5903
|
+
private onTouched;
|
|
5904
|
+
ngAfterViewInit(): void;
|
|
5905
|
+
ngOnDestroy(): void;
|
|
5906
|
+
writeValue(value: string): void;
|
|
5907
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
5908
|
+
registerOnTouched(fn: () => void): void;
|
|
5909
|
+
setDisabledState(isDisabled: boolean): void;
|
|
5910
|
+
protected switchMode(mode: RichTextEditorMode): void;
|
|
5911
|
+
protected onToolbarAction(action: ToolbarAction): void;
|
|
5912
|
+
private execRichCommand;
|
|
5913
|
+
private insertMarkdownSyntax;
|
|
5914
|
+
protected onMarkdownInput(event: Event): void;
|
|
5915
|
+
protected onRichInput(): void;
|
|
5916
|
+
protected onBlur(): void;
|
|
5917
|
+
private syncFromRich;
|
|
5918
|
+
private emitChange;
|
|
5919
|
+
private getSelection;
|
|
5920
|
+
protected getActionLabel(action: ToolbarAction): string;
|
|
5921
|
+
protected getActionTitle(action: ToolbarAction): string;
|
|
5922
|
+
protected markdownToHtml(md: string): string;
|
|
5923
|
+
private htmlToMarkdown;
|
|
5924
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorComponent, never>;
|
|
5925
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorComponent, "lc-rich-text-editor", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "showWordCount": { "alias": "showWordCount"; "required": false; "isSignal": true; }; }, { "contentChange": "contentChange"; }, never, never, true, never>;
|
|
5926
|
+
}
|
|
5927
|
+
|
|
5928
|
+
export { AccordionComponent, AlertComponent, AnimationDurationFast, AnimationEasingEaseIn, AnimationEasingEaseInOut, AnimationEasingEaseOut, AreaChartComponent, AvatarComponent, AvatarGroupComponent, BadgeComponent, BarChartComponent, BorderRadius2xl, BorderRadiusFull, BorderRadiusLg, BorderRadiusMd, BorderRadiusNone, BorderRadiusSm, BorderRadiusXl, BreadcrumbsComponent, ButtonComponent, CalendarComponent, CalloutComponent, CardComponent, ChatComponent, CheckboxComponent, ChipComponent, CodeBlockComponent, ColorAccentOrange, ColorAccentPurple, ColorAccentRed, ColorAccentRust, ColorAccentViolet, ColorErrorDark, ColorErrorDefault, ColorErrorLight, ColorInfoDark, ColorInfoDefault, ColorInfoLight, ColorNeutral100, ColorNeutral200, ColorNeutral300, ColorNeutral400, ColorNeutral50, ColorNeutral500, ColorNeutral600, ColorNeutral700, ColorNeutral800, ColorNeutral900, ColorPickerComponent, ColorPrimary100, ColorPrimary200, ColorPrimary300, ColorPrimary400, ColorPrimary50, ColorPrimary500, ColorPrimary600, ColorPrimary700, ColorPrimary800, ColorPrimary900, ColorSecondary100, ColorSecondary200, ColorSecondary300, ColorSecondary400, ColorSecondary50, ColorSecondary500, ColorSecondary600, ColorSecondary700, ColorSecondary800, ColorSecondary900, ColorSuccessDark, ColorSuccessDefault, ColorSuccessLight, ColorWarningDark, ColorWarningDefault, ColorWarningLight, ContainerComponent, DateRangePickerComponent, DatepickerComponent, DependencyViewerComponent, DiffViewerComponent, DividerComponent, DocumentViewerComponent, DonutChartComponent, DrawerComponent, Elevation1, Elevation2, Elevation3, Elevation4, EmailInputComponent, EmptyStateComponent, ErrorDisplayComponent, FieldGroupComponent, FileUploadComponent, FilterBarComponent, FooterComponent, FunnelChartComponent, GalleryComponent, GanttChartComponent, GaugeComponent, HeaderComponent, HeatmapComponent, HeroComponent, IconComponent, InputComponent, KanbanBoardComponent, LineChartComponent, ListComponent, ListItemTemplateDirective, LogoComponent, MenuComponent, ModalComponent, NotificationCenterComponent, NumberInputComponent, PaginationComponent, PasswordInputComponent, PieChartComponent, PopoverComponent, ProgressBarComponent, ProgressRingComponent, RadarChartComponent, RadioComponent, RatingComponent, RichTextEditorComponent, ScatterPlotComponent, SearchInputComponent, SectionComponent, SelectComponent, SidenavComponent, SizeInteractiveLgFontSize, SizeInteractiveLgHeight, SizeInteractiveLgPadding, SizeInteractiveMdFontSize, SizeInteractiveMdHeight, SizeInteractiveMdPadding, SizeInteractiveSmFontSize, SizeInteractiveSmHeight, SizeInteractiveSmPadding, SizeInteractiveXsFontSize, SizeInteractiveXsHeight, SizeInteractiveXsPadding, SizeMinTouchHeight, SizeMinTouchWidth, SkeletonComponent, SliderComponent, SpacerComponent, Spacing0, Spacing05, Spacing1, Spacing10, Spacing11, Spacing12, Spacing14, Spacing15, Spacing16, Spacing2, Spacing25, Spacing3, Spacing35, Spacing4, Spacing5, Spacing6, Spacing7, Spacing8, Spacing9, SparklineComponent, SpinnerComponent, StackComponent, StackedBarChartComponent, StatTrendComponent, StepperComponent, SwitchComponent, TabComponent, TableCellDirective, TableComponent, TabsComponent, TagInputComponent, TextareaComponent, ThemeService, TimelineComponent, ToastComponent, ToastService, ToggleGroupComponent, TooltipContentComponent, TooltipDirective, TypographyComponent, TypographyFontFamilyBase, TypographyFontFamilyMono, TypographyFontSize2xl, TypographyFontSize3xl, TypographyFontSize4xl, TypographyFontSize5xl, TypographyFontSize6xl, TypographyFontSizeBase, TypographyFontSizeLg, TypographyFontSizeSm, TypographyFontSizeXl, TypographyFontSizeXs, TypographyFontWeightBold, TypographyFontWeightMedium, TypographyFontWeightNormal, TypographyFontWeightSemibold, TypographyLineHeightNormal, TypographyLineHeightRelaxed, TypographyLineHeightTight, VerificationCodeInputComponent, WaterfallChartComponent };
|
|
5929
|
+
export type { AlertVariant, AreaChartSeries, AvatarGroupItem, AvatarSize, AvatarStatus, BadgeSize, BadgeVariant, BarChartItem, BarChartOrientation, BreadcrumbItem, BreadcrumbSize, ButtonSize, ButtonType, ButtonVariant, CalendarEvent, CalendarView, CalloutVariant, CellEditEvent, ChatMessage, ChatMessageRole, ChatSendEvent, CheckboxSize, ChipSize, ChipVariant, CodeBlockLanguage, ContainerSize, DateRange, DateValue, DependencyDirection, DependencyEdgeDef, DependencyNode, DependencyNodeStatus, DependencyRelation, DiffViewMode, DividerOrientation, DividerSpacing, DividerVariant, DocumentType, DonutChartSize, DonutSegment, DrawerPosition, DrawerSize, EmptyStateSize, ErrorSeverity, FileUploadFile, FilterConfig, FilterOption, FilterValues, FooterLink, FooterSection, FooterVariant, FunnelStep, GalleryItem, GalleryLayout, GallerySize, GanttDependency, GanttTask, GaugeColor, GaugeSize, HeatmapCell, HeroColor, HeroSize, IconSize, IconVariant, KanbanCard, KanbanColumn, KanbanLabel, KanbanMoveEvent, LineChartSeries, ListItem, ListOrientation, ListVariant, MenuItem, ModalSize, NavigationItem, Notification, NotificationPriority, NotificationType, PaginationSize, PasswordRequirement, PasswordStrength, PieChartSize, PieSegment, PopoverPosition, PopoverTrigger, ProgressBarColor, ProgressBarSize, ProgressBarVariant, ProgressRingColor, ProgressRingSize, RadarChartSeries, RadioSize, RatingSize, RichTextEditorMode, ScatterPoint, ScatterSeries, SearchInputSize, SectionBackground, SectionSpacing, SelectOption, SelectOptionGroup, SelectValue, SelectionChangeEvent, SidenavMode, SidenavPosition, SkeletonVariant, SortEvent, SpacerSize, SparklineColor, SparklineCurve, SpinnerSize, StackAlign, StackDirection, StackGap, StackJustify, StackedBarCategory, StackedBarLegend, StackedBarOrientation, StatTrendDirection, StepState, StepperStep, TabOrientation, TableColumn, TableSize, TableVariant, ThemeConfig, ThemeMode, ThemeState, TimelineItem, TimelineOrientation, Toast, ToastAction, ToastConfig, ToastPosition, ToastVariant, ToggleOption, ToolbarAction, ToolbarConfig, TooltipPosition, WaterfallItem };
|