@thl-ui/angular 0.0.0-stage → 0.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.
@@ -0,0 +1,1665 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, PipeTransform, Signal, EnvironmentProviders, DestroyRef, ElementRef, TemplateRef, model } from '@angular/core';
3
+ import * as _thl_ui_core from '@thl-ui/core';
4
+ import { ThlConfig, ThlComponentDefaults, ThlInstance, TParams, Modifiers, ToastManager, Toast, ThlUserConfig, Store, ThlSemanticColor, Placement, BreadcrumbItem, StepItem, TabsItem, TimelineItem, SelectOption, UploadFile, Rule, ColumnDef, MenuItem, LayoutMode, ColorMode, skins } from '@thl-ui/core';
5
+ export { MenuItem, ThlConfig, ThlUserConfig, createThl, rules } from '@thl-ui/core';
6
+ import * as _thl_ui_locales from '@thl-ui/locales';
7
+ import { SafeHtml } from '@angular/platform-browser';
8
+ import { IconRegistry } from '@thl-ui/icons';
9
+ import * as _thl_ui_charts from '@thl-ui/charts';
10
+ import { Series } from '@thl-ui/charts';
11
+ import { ControlValueAccessor, AbstractControl, ValidatorFn } from '@angular/forms';
12
+
13
+ declare const THL_CONFIG: InjectionToken<Partial<Omit<ThlConfig, "components" | "messages">> & {
14
+ components?: Partial<ThlComponentDefaults>;
15
+ messages?: Record<string, _thl_ui_locales.Messages>;
16
+ loadLocale?: (locale: string) => Promise<_thl_ui_locales.Messages | {
17
+ default: _thl_ui_locales.Messages;
18
+ }>;
19
+ } & {
20
+ icons?: IconRegistry;
21
+ instance?: ThlInstance;
22
+ }>;
23
+ /** Bridge a core Store to an Angular signal. */
24
+ declare function storeSignal<T>(store: Store<T>, destroyRef?: DestroyRef): Signal<T>;
25
+ /** Global config service (signals). */
26
+ declare class ThlConfigService {
27
+ private readonly opts;
28
+ readonly instance: ThlInstance;
29
+ private readonly _config;
30
+ readonly config: Signal<ThlConfig>;
31
+ readonly prefix: Signal<string>;
32
+ readonly toast: ToastManager;
33
+ readonly toasts: Signal<Toast[]>;
34
+ constructor();
35
+ set(patch: Partial<ThlConfig>): void;
36
+ /** BEM class builder bound to current prefix. */
37
+ bem(block: string): _thl_ui_core.Bem;
38
+ defaults<K extends keyof ThlComponentDefaults>(name: K, props?: Record<string, unknown>): NonNullable<ThlComponentDefaults[K]>;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlConfigService, never>;
40
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThlConfigService>;
41
+ }
42
+ /** i18n service — `t()` is signal-tracked so templates/computed re-evaluate on locale change. */
43
+ declare class ThlI18nService {
44
+ private readonly cfg;
45
+ private readonly rev;
46
+ readonly locale: _angular_core.WritableSignal<string>;
47
+ constructor();
48
+ t(key: string, params?: TParams): string;
49
+ te(key: string): boolean;
50
+ n(v: number, o?: Intl.NumberFormatOptions): string;
51
+ d(v: Date | number | string, o?: Intl.DateTimeFormatOptions): string;
52
+ intlLocale(): string;
53
+ setLocale(l: string): void;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlI18nService, never>;
55
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThlI18nService>;
56
+ }
57
+ /** `{{ 'common.ok' | thlT }}` / `{{ 'pagination.total' | thlT: { count: 5 } }}` */
58
+ declare class ThlTranslatePipe implements PipeTransform {
59
+ private readonly i18n;
60
+ transform(key: string, params?: TParams): string;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTranslatePipe, never>;
62
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<ThlTranslatePipe, "thlT", true>;
63
+ }
64
+ /** `[class]="'btn' | thlBem: { primary: true }"` */
65
+ declare class ThlBemPipe implements PipeTransform {
66
+ private readonly cfg;
67
+ transform(block: string, modsOrEl?: Modifiers | string, mods?: Modifiers): string;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlBemPipe, never>;
69
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<ThlBemPipe, "thlBem", true>;
70
+ }
71
+ /** Toast service. Render <thl-toaster/> once (included in <thl-app-layout/>). */
72
+ declare class ThlToastService {
73
+ private readonly cfg;
74
+ show: (...a: Parameters<ToastManager["show"]>) => string;
75
+ success: (...a: Parameters<ToastManager["success"]>) => string;
76
+ info: (...a: Parameters<ToastManager["info"]>) => string;
77
+ warning: (...a: Parameters<ToastManager["warning"]>) => string;
78
+ error: (...a: Parameters<ToastManager["error"]>) => string;
79
+ dismiss: (id: string) => void;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlToastService, never>;
81
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThlToastService>;
82
+ }
83
+ /** Standalone providers: `bootstrapApplication(App, { providers: [provideThlUI({ locale: 'vi', theme: 'green-dark' })] })` */
84
+ declare function provideThlUI(config?: ThlUserConfig & {
85
+ icons?: IconRegistry;
86
+ instance?: ThlInstance;
87
+ }): EnvironmentProviders;
88
+ /** <thl-icon name="bell" /> */
89
+ declare class ThlIconComponent {
90
+ private readonly san;
91
+ readonly name: _angular_core.InputSignal<string>;
92
+ readonly size: _angular_core.InputSignal<string | number>;
93
+ readonly label: _angular_core.InputSignal<string | undefined>;
94
+ readonly strokeWidth: _angular_core.InputSignal<number>;
95
+ readonly svg: Signal<SafeHtml>;
96
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlIconComponent, never>;
97
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlIconComponent, "thl-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
98
+ }
99
+
100
+ /** <button thl-button variant="primary"> or <a thl-button href=...> — attribute component keeps native semantics. */
101
+ declare class ThlButtonComponent {
102
+ private readonly cfg;
103
+ private readonly el;
104
+ readonly isButton: boolean;
105
+ readonly variant: _angular_core.InputSignal<string | undefined>;
106
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xs" | "xl" | undefined>;
107
+ readonly outline: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
108
+ readonly rounded: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
109
+ readonly circle: _angular_core.InputSignalWithTransform<boolean, unknown>;
110
+ readonly block: _angular_core.InputSignalWithTransform<boolean, unknown>;
111
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
112
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
113
+ readonly noRipple: _angular_core.InputSignalWithTransform<boolean, unknown>;
114
+ readonly icon: _angular_core.InputSignal<string | undefined>;
115
+ readonly iconRight: _angular_core.InputSignal<string | undefined>;
116
+ readonly label: _angular_core.InputSignal<string | undefined>;
117
+ readonly b: (el: string) => string;
118
+ readonly cls: _angular_core.Signal<string>;
119
+ ripple(e: MouseEvent): void;
120
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlButtonComponent, never>;
121
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlButtonComponent, "button[thl-button], a[thl-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "circle": { "alias": "circle"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "noRipple": { "alias": "noRipple"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconRight": { "alias": "iconRight"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
122
+ }
123
+ declare class ThlButtonGroupComponent {
124
+ private readonly cfg;
125
+ readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
126
+ readonly justified: _angular_core.InputSignalWithTransform<boolean, unknown>;
127
+ readonly cls: _angular_core.Signal<string>;
128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlButtonGroupComponent, never>;
129
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlButtonGroupComponent, "thl-button-group", never, { "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "justified": { "alias": "justified"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
130
+ }
131
+ declare class ThlBadgeComponent {
132
+ private readonly cfg;
133
+ readonly color: _angular_core.InputSignal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse">;
134
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "xs">;
135
+ readonly dot: _angular_core.InputSignalWithTransform<boolean, unknown>;
136
+ readonly pill: _angular_core.InputSignalWithTransform<boolean, unknown>;
137
+ readonly cls: _angular_core.Signal<string>;
138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlBadgeComponent, never>;
139
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlBadgeComponent, "thl-badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "pill": { "alias": "pill"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
140
+ }
141
+ declare class ThlLabelComponent {
142
+ private readonly cfg;
143
+ readonly color: _angular_core.InputSignal<string>;
144
+ readonly rounded: _angular_core.InputSignalWithTransform<boolean, unknown>;
145
+ readonly outline: _angular_core.InputSignalWithTransform<boolean, unknown>;
146
+ readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
147
+ readonly closed: _angular_core.OutputEmitterRef<void>;
148
+ readonly b: (e: string) => string;
149
+ readonly cls: _angular_core.Signal<string>;
150
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlLabelComponent, never>;
151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlLabelComponent, "thl-label", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
152
+ }
153
+ declare class ThlAvatarComponent {
154
+ private readonly cfg;
155
+ readonly src: _angular_core.InputSignal<string | undefined>;
156
+ readonly name: _angular_core.InputSignal<string | undefined>;
157
+ readonly size: _angular_core.InputSignal<number | "sm" | "md" | "lg" | "xs" | "xl">;
158
+ readonly status: _angular_core.InputSignal<"online" | "offline" | "away" | "busy" | undefined>;
159
+ readonly shape: _angular_core.InputSignal<"rounded" | "circle" | "square">;
160
+ readonly initials: _angular_core.Signal<string>;
161
+ readonly px: _angular_core.Signal<string | null>;
162
+ readonly cls: _angular_core.Signal<string>;
163
+ readonly statusCls: _angular_core.Signal<string>;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlAvatarComponent, never>;
165
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlAvatarComponent, "thl-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
166
+ }
167
+ declare class ThlSpinnerComponent {
168
+ private readonly cfg;
169
+ private readonly i18n;
170
+ readonly aria: _angular_core.Signal<string>;
171
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
172
+ readonly label: _angular_core.InputSignal<string | undefined>;
173
+ readonly cls: _angular_core.Signal<string>;
174
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSpinnerComponent, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSpinnerComponent, "thl-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
176
+ }
177
+ /** Marker for <div thlCardActions> projected into the card header. */
178
+ declare class ThlCardActionsDirective {
179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCardActionsDirective, never>;
180
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlCardActionsDirective, "[thlCardActions]", never, {}, {}, never, never, true, never>;
181
+ }
182
+ declare class ThlCardComponent {
183
+ private readonly cfg;
184
+ readonly title: _angular_core.InputSignal<string | undefined>;
185
+ readonly subtitle: _angular_core.InputSignal<string | undefined>;
186
+ readonly shadow: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
187
+ readonly bordered: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
188
+ readonly flush: _angular_core.InputSignalWithTransform<boolean, unknown>;
189
+ readonly actions: _angular_core.Signal<ThlCardActionsDirective | undefined>;
190
+ readonly b: (e: string) => string;
191
+ readonly cls: _angular_core.Signal<string>;
192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCardComponent, never>;
193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCardComponent, "thl-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; }, {}, ["actions"], ["[thlCardMedia]", "[thlCardActions]", "*", "[thlCardFooter]"], true, never>;
194
+ }
195
+ declare class ThlPanelComponent {
196
+ private readonly cfg;
197
+ readonly prefix: _angular_core.Signal<string>;
198
+ readonly title: _angular_core.InputSignal<string | undefined>;
199
+ readonly color: _angular_core.InputSignal<string>;
200
+ readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
201
+ readonly collapsed: _angular_core.InputSignal<boolean | undefined>;
202
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
203
+ readonly expandable: _angular_core.InputSignalWithTransform<boolean, unknown>;
204
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
205
+ readonly loadingText: _angular_core.InputSignal<string | undefined>;
206
+ readonly collapsedChange: _angular_core.OutputEmitterRef<boolean>;
207
+ readonly dismissed: _angular_core.OutputEmitterRef<void>;
208
+ readonly inner: _angular_core.WritableSignal<boolean>;
209
+ readonly gone: _angular_core.WritableSignal<boolean>;
210
+ readonly full: _angular_core.WritableSignal<boolean>;
211
+ readonly isCollapsed: _angular_core.Signal<boolean>;
212
+ readonly b: (e: string) => string;
213
+ readonly cls: _angular_core.Signal<string>;
214
+ toggle(): void;
215
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPanelComponent, never>;
216
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPanelComponent, "thl-panel", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; }, { "collapsedChange": "collapsedChange"; "dismissed": "dismissed"; }, never, ["[thlPanelActions]", "*", "[thlPanelFooter]"], true, never>;
217
+ }
218
+ declare class ThlWellComponent {
219
+ private readonly cfg;
220
+ readonly size: _angular_core.InputSignal<"sm" | "lg" | undefined>;
221
+ readonly cls: _angular_core.Signal<string>;
222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlWellComponent, never>;
223
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlWellComponent, "thl-well", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
224
+ }
225
+ declare class ThlRibbonComponent {
226
+ private readonly cfg;
227
+ readonly prefix: _angular_core.Signal<string>;
228
+ readonly text: _angular_core.InputSignal<string>;
229
+ readonly color: _angular_core.InputSignal<string>;
230
+ readonly variant: _angular_core.InputSignal<"default" | "badge" | "bookmark" | "corner" | "vertical-left" | "vertical-right">;
231
+ readonly position: _angular_core.InputSignal<"left" | "right">;
232
+ readonly placement: _angular_core.InputSignal<"top" | "bottom">;
233
+ private readonly vert;
234
+ readonly wrap: _angular_core.Signal<string>;
235
+ readonly rib: _angular_core.Signal<string>;
236
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlRibbonComponent, never>;
237
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlRibbonComponent, "thl-ribbon", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
238
+ }
239
+ declare class ThlAlertComponent {
240
+ private readonly cfg;
241
+ readonly type: _angular_core.InputSignal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse">;
242
+ readonly title: _angular_core.InputSignal<string | undefined>;
243
+ readonly icon: _angular_core.InputSignal<string | boolean | undefined>;
244
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
245
+ readonly soft: _angular_core.InputSignalWithTransform<boolean, unknown>;
246
+ readonly image: _angular_core.InputSignal<string | undefined>;
247
+ readonly closed: _angular_core.OutputEmitterRef<void>;
248
+ readonly open: _angular_core.WritableSignal<boolean>;
249
+ readonly b: (e: string) => string;
250
+ readonly role: _angular_core.Signal<"status" | "alert">;
251
+ readonly iconName: _angular_core.Signal<string | undefined>;
252
+ readonly cls: _angular_core.Signal<string>;
253
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlAlertComponent, never>;
254
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlAlertComponent, "thl-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "soft": { "alias": "soft"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
255
+ }
256
+
257
+ declare class ThlModalComponent {
258
+ private readonly cfg;
259
+ private readonly host;
260
+ private readonly injector;
261
+ readonly open: _angular_core.ModelSignal<boolean>;
262
+ readonly title: _angular_core.InputSignal<string | undefined>;
263
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl" | "full" | undefined>;
264
+ readonly closeOnBackdrop: _angular_core.InputSignal<boolean | undefined>;
265
+ readonly closeOnEsc: _angular_core.InputSignal<boolean | undefined>;
266
+ readonly centered: _angular_core.InputSignal<boolean | undefined>;
267
+ readonly scrollable: _angular_core.InputSignalWithTransform<boolean, unknown>;
268
+ readonly hideClose: _angular_core.InputSignalWithTransform<boolean, unknown>;
269
+ readonly modalClass: _angular_core.InputSignal<string | undefined>;
270
+ readonly closed: _angular_core.OutputEmitterRef<void>;
271
+ readonly dlg: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
272
+ readonly titleId: string;
273
+ readonly d: _angular_core.Signal<{
274
+ size?: "sm" | "md" | "lg";
275
+ closeOnBackdrop?: boolean;
276
+ closeOnEsc?: boolean;
277
+ centered?: boolean;
278
+ }>;
279
+ readonly b: (e: string) => string;
280
+ readonly backdropCls: _angular_core.Signal<string>;
281
+ readonly dialogCls: _angular_core.Signal<string>;
282
+ private release;
283
+ private onKey;
284
+ constructor();
285
+ private teardown;
286
+ onBackdrop(e: MouseEvent): void;
287
+ close(): void;
288
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlModalComponent, never>;
289
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlModalComponent, "thl-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "centered": { "alias": "centered"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["[thlModalTitle]", "*", "[thlModalFooter]"], true, never>;
290
+ }
291
+ interface ConfirmOptions {
292
+ title?: string;
293
+ text?: string;
294
+ icon?: 'warning' | 'danger' | 'success' | 'info' | 'question';
295
+ confirmText?: string;
296
+ cancelText?: string;
297
+ confirmVariant?: ThlSemanticColor;
298
+ showCancel?: boolean;
299
+ }
300
+ declare class ThlModalService {
301
+ readonly state: _angular_core.WritableSignal<(ConfirmOptions & {
302
+ resolve: (v: boolean) => void;
303
+ }) | null>;
304
+ hosts: number;
305
+ confirm(opts?: ConfirmOptions): Promise<boolean>;
306
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlModalService, never>;
307
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThlModalService>;
308
+ }
309
+ declare class ThlConfirmHostComponent {
310
+ readonly svc: ThlModalService;
311
+ private readonly cfg;
312
+ readonly prefix: _angular_core.Signal<string>;
313
+ readonly ic: _angular_core.Signal<"success" | "info" | "warning" | "danger" | "question">;
314
+ readonly iconName: _angular_core.Signal<string>;
315
+ readonly iconCls: _angular_core.Signal<string>;
316
+ readonly confirmVariant: _angular_core.Signal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse">;
317
+ constructor();
318
+ done(v: boolean): void;
319
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlConfirmHostComponent, never>;
320
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlConfirmHostComponent, "thl-confirm-host", never, {}, {}, never, never, true, never>;
321
+ }
322
+ declare class ThlDrawerComponent {
323
+ private readonly cfg;
324
+ readonly prefix: _angular_core.Signal<string>;
325
+ readonly open: _angular_core.ModelSignal<boolean>;
326
+ readonly title: _angular_core.InputSignal<string | undefined>;
327
+ readonly side: _angular_core.InputSignal<"start" | "end">;
328
+ readonly wide: _angular_core.InputSignalWithTransform<boolean, unknown>;
329
+ readonly panel: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
330
+ readonly b: (e: string) => string;
331
+ readonly cls: _angular_core.Signal<string>;
332
+ private onKey;
333
+ constructor();
334
+ close(): void;
335
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlDrawerComponent, never>;
336
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlDrawerComponent, "thl-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "wide": { "alias": "wide"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
337
+ }
338
+ declare abstract class FloatingBase {
339
+ protected readonly cfg: ThlConfigService;
340
+ protected readonly host: ElementRef<any>;
341
+ readonly placement: _angular_core.InputSignal<Placement>;
342
+ readonly visible: _angular_core.WritableSignal<boolean>;
343
+ readonly pos: _angular_core.WritableSignal<{
344
+ top: string;
345
+ left: string;
346
+ }>;
347
+ readonly id: string;
348
+ readonly float: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
349
+ protected update: () => void;
350
+ constructor();
351
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FloatingBase, never>;
352
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FloatingBase, never, never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
353
+ }
354
+ declare class ThlTooltipComponent extends FloatingBase {
355
+ readonly content: _angular_core.InputSignal<string>;
356
+ readonly color: _angular_core.InputSignal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse" | undefined>;
357
+ readonly delay: _angular_core.InputSignal<number | undefined>;
358
+ private timer?;
359
+ readonly cls: _angular_core.Signal<string>;
360
+ show(): void;
361
+ hide(): void;
362
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTooltipComponent, never>;
363
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTooltipComponent, "thl-tooltip", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
364
+ }
365
+ declare class ThlPopoverComponent extends FloatingBase {
366
+ readonly placement: _angular_core.InputSignal<Placement>;
367
+ readonly title: _angular_core.InputSignal<string | undefined>;
368
+ readonly content: _angular_core.InputSignal<string | undefined>;
369
+ readonly contentTpl: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
370
+ readonly color: _angular_core.InputSignal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse" | undefined>;
371
+ readonly trigger: _angular_core.InputSignal<"click" | "hover">;
372
+ readonly b: (e: string) => string;
373
+ readonly cls: _angular_core.Signal<string>;
374
+ private off;
375
+ constructor();
376
+ toggle(): void;
377
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPopoverComponent, never>;
378
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPopoverComponent, "thl-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "contentTpl": { "alias": "contentTpl"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
379
+ }
380
+ interface DropdownItem {
381
+ key: string;
382
+ label?: string;
383
+ icon?: string;
384
+ href?: string;
385
+ disabled?: boolean;
386
+ danger?: boolean;
387
+ divider?: boolean;
388
+ header?: boolean;
389
+ }
390
+ declare class ThlDropdownComponent {
391
+ private readonly cfg;
392
+ private readonly host;
393
+ readonly prefix: _angular_core.Signal<string>;
394
+ readonly items: _angular_core.InputSignal<DropdownItem[]>;
395
+ readonly align: _angular_core.InputSignal<"start" | "end">;
396
+ readonly placement: _angular_core.InputSignal<"top" | "bottom">;
397
+ readonly menuClass: _angular_core.InputSignal<string | undefined>;
398
+ readonly animation: _angular_core.InputSignal<string | undefined>;
399
+ readonly selected: _angular_core.OutputEmitterRef<string>;
400
+ readonly open: _angular_core.WritableSignal<boolean>;
401
+ readonly hi: _angular_core.WritableSignal<number>;
402
+ readonly enabled: _angular_core.Signal<DropdownItem[]>;
403
+ readonly m: (e: string, mods?: Record<string, unknown>) => string;
404
+ readonly menuCls: _angular_core.Signal<string>;
405
+ itemCls(it: DropdownItem): string;
406
+ private off;
407
+ readonly menuId: string;
408
+ readonly trig: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
409
+ /** ARIA belongs on the actual trigger element (first projected child), not on the wrapper. */
410
+ private triggerEl;
411
+ constructor();
412
+ close(): void;
413
+ choose(it: DropdownItem): void;
414
+ onKey(e: KeyboardEvent): void;
415
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlDropdownComponent, never>;
416
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlDropdownComponent, "thl-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "menuClass": { "alias": "menuClass"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["[thlDropdownTrigger]", "*"], true, never>;
417
+ }
418
+ declare class ThlToasterComponent {
419
+ readonly cfg: ThlConfigService;
420
+ readonly icons: Record<string, string>;
421
+ readonly groups: _angular_core.Signal<[string, _thl_ui_core.Toast[]][]>;
422
+ groupCls(pos: string): string;
423
+ toastCls(type: string): string;
424
+ constructor();
425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlToasterComponent, never>;
426
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlToasterComponent, "thl-toaster", never, {}, {}, never, never, true, never>;
427
+ }
428
+ declare class ThlProgressComponent {
429
+ private readonly cfg;
430
+ private readonly i18n;
431
+ readonly value: _angular_core.InputSignal<number>;
432
+ readonly max: _angular_core.InputSignal<number>;
433
+ readonly color: _angular_core.InputSignal<string>;
434
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xs" | undefined>;
435
+ readonly striped: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
436
+ readonly animated: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
437
+ readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
438
+ readonly label: _angular_core.InputSignal<string | boolean | undefined>;
439
+ readonly bar: string;
440
+ readonly d: _angular_core.Signal<{
441
+ size?: "sm" | "md" | "lg";
442
+ striped?: boolean;
443
+ animated?: boolean;
444
+ }>;
445
+ readonly pct: _angular_core.Signal<number>;
446
+ readonly text: _angular_core.Signal<string>;
447
+ readonly aria: _angular_core.Signal<string>;
448
+ readonly cls: _angular_core.Signal<string>;
449
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlProgressComponent, never>;
450
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlProgressComponent, "thl-progress", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
451
+ }
452
+ declare class ThlProgressCircleComponent {
453
+ readonly cfg: ThlConfigService;
454
+ readonly value: _angular_core.InputSignal<number>;
455
+ readonly max: _angular_core.InputSignal<number>;
456
+ readonly size: _angular_core.InputSignal<number>;
457
+ readonly stroke: _angular_core.InputSignal<number>;
458
+ readonly color: _angular_core.InputSignal<string>;
459
+ readonly label: _angular_core.InputSignal<string | undefined>;
460
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
461
+ readonly i18n: ThlI18nService;
462
+ readonly r: _angular_core.Signal<number>;
463
+ readonly c: _angular_core.Signal<number>;
464
+ readonly pct: _angular_core.Signal<number>;
465
+ readonly b: (e?: string) => string;
466
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlProgressCircleComponent, never>;
467
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlProgressCircleComponent, "thl-progress-circle", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stroke": { "alias": "stroke"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
468
+ }
469
+
470
+ /** <ng-template thlTab="key">…</ng-template> provides a tab panel. */
471
+ declare class ThlTabPanelDirective {
472
+ readonly key: _angular_core.InputSignal<string>;
473
+ readonly tpl: TemplateRef<any>;
474
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTabPanelDirective, never>;
475
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlTabPanelDirective, "ng-template[thlTab]", never, { "key": { "alias": "thlTab"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
476
+ }
477
+ declare class ThlTabsComponent {
478
+ private readonly cfg;
479
+ readonly items: _angular_core.InputSignal<TabsItem[]>;
480
+ readonly active: _angular_core.ModelSignal<string | undefined>;
481
+ readonly variant: _angular_core.InputSignal<"default" | "vertical" | "underline" | "filled" | "pills" | "pills-rounded" | "line" | undefined>;
482
+ readonly justified: _angular_core.InputSignalWithTransform<boolean, unknown>;
483
+ readonly keepMounted: _angular_core.InputSignalWithTransform<boolean, unknown>;
484
+ readonly panels: _angular_core.Signal<readonly ThlTabPanelDirective[]>;
485
+ readonly list: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
486
+ private readonly baseId;
487
+ readonly api: {
488
+ state: _thl_ui_core.Store<string>;
489
+ active: () => string;
490
+ select: (key: string) => void;
491
+ setItems: (next: _thl_ui_core.TabsOptions["items"]) => void;
492
+ onKeyDown(e: {
493
+ key: string;
494
+ preventDefault(): void;
495
+ }, orientation?: "horizontal" | "vertical"): boolean;
496
+ ids: (base: string, key: string) => {
497
+ tab: string;
498
+ panel: string;
499
+ };
500
+ };
501
+ readonly current: _angular_core.Signal<string>;
502
+ readonly v: _angular_core.Signal<string>;
503
+ readonly vertical: _angular_core.Signal<boolean>;
504
+ readonly cls: _angular_core.Signal<string>;
505
+ readonly b: (e: string) => string;
506
+ constructor();
507
+ ids(k: string): {
508
+ tab: string;
509
+ panel: string;
510
+ };
511
+ tabCls(k: string): string;
512
+ onKey(e: KeyboardEvent): void;
513
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTabsComponent, never>;
514
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTabsComponent, "thl-tabs", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "justified": { "alias": "justified"; "required": false; "isSignal": true; }; "keepMounted": { "alias": "keepMounted"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["panels"], never, true, never>;
515
+ }
516
+ declare class ThlBreadcrumbComponent {
517
+ private readonly cfg;
518
+ readonly items: _angular_core.InputSignal<BreadcrumbItem[]>;
519
+ readonly b: (e?: string) => string;
520
+ itemCls(last: boolean): string;
521
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlBreadcrumbComponent, never>;
522
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlBreadcrumbComponent, "thl-breadcrumb", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
523
+ }
524
+ declare class ThlPaginationComponent {
525
+ readonly cfg: ThlConfigService;
526
+ readonly page: _angular_core.ModelSignal<number>;
527
+ readonly pageSize: _angular_core.ModelSignal<number>;
528
+ readonly total: _angular_core.InputSignal<number>;
529
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
530
+ readonly maxPages: _angular_core.InputSignal<number | undefined>;
531
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
532
+ readonly showTotal: _angular_core.InputSignal<boolean | undefined>;
533
+ readonly showFirstLast: _angular_core.InputSignalWithTransform<boolean, unknown>;
534
+ readonly split: _angular_core.InputSignalWithTransform<boolean, unknown>;
535
+ readonly rounded: _angular_core.InputSignalWithTransform<boolean, unknown>;
536
+ readonly pageSizes: _angular_core.InputSignal<number[] | undefined>;
537
+ readonly d: _angular_core.Signal<{
538
+ maxPages?: number;
539
+ showTotal?: boolean;
540
+ }>;
541
+ readonly showTotalD: _angular_core.Signal<boolean>;
542
+ readonly m: _angular_core.Signal<{
543
+ page: number;
544
+ pageCount: number;
545
+ items: _thl_ui_core.PageItem[];
546
+ from: number;
547
+ to: number;
548
+ hasPrev: boolean;
549
+ hasNext: boolean;
550
+ }>;
551
+ readonly b: (e?: string, mods?: Record<string, unknown>) => string;
552
+ readonly listCls: _angular_core.Signal<string>;
553
+ pageCls(active: boolean): string;
554
+ go(p: number): void;
555
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPaginationComponent, never>;
556
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPaginationComponent, "thl-pagination", never, { "page": { "alias": "page"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "maxPages": { "alias": "maxPages"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showTotal": { "alias": "showTotal"; "required": false; "isSignal": true; }; "showFirstLast": { "alias": "showFirstLast"; "required": false; "isSignal": true; }; "split": { "alias": "split"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "pageSizes": { "alias": "pageSizes"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; }, never, never, true, never>;
557
+ }
558
+ declare class ThlStepsComponent {
559
+ readonly cfg: ThlConfigService;
560
+ readonly items: _angular_core.InputSignal<StepItem[]>;
561
+ readonly current: _angular_core.ModelSignal<number>;
562
+ readonly variant: _angular_core.InputSignal<"default" | "line" | "no-bg" | "thin">;
563
+ readonly clickable: _angular_core.InputSignalWithTransform<boolean, unknown>;
564
+ readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
565
+ readonly b: (e: string) => string;
566
+ readonly cls: _angular_core.Signal<string>;
567
+ status(i: number): "done" | "active" | "pending";
568
+ itemCls(i: number): string;
569
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlStepsComponent, never>;
570
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlStepsComponent, "thl-steps", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, { "current": "currentChange"; }, never, never, true, never>;
571
+ }
572
+ declare class ThlTimelineComponent {
573
+ private readonly cfg;
574
+ readonly items: _angular_core.InputSignal<TimelineItem[]>;
575
+ readonly variant: _angular_core.InputSignal<"left" | "alternate">;
576
+ /** heading level of item titles (match the surrounding outline) */
577
+ readonly headingLevel: _angular_core.InputSignal<2 | 3 | 4 | 5 | 6>;
578
+ readonly b: (e: string, m?: Record<string, unknown>) => string;
579
+ readonly cls: _angular_core.Signal<string>;
580
+ badgeCls(c?: string): string;
581
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTimelineComponent, never>;
582
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTimelineComponent, "thl-timeline", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
583
+ }
584
+ declare class ThlActivityFeedComponent {
585
+ readonly cfg: ThlConfigService;
586
+ readonly items: _angular_core.InputSignal<{
587
+ avatar?: string;
588
+ icon?: string;
589
+ title: string;
590
+ time?: string;
591
+ content?: string;
592
+ color?: string;
593
+ }[]>;
594
+ readonly b: (e?: string) => string;
595
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlActivityFeedComponent, never>;
596
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlActivityFeedComponent, "thl-activity-feed", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
597
+ }
598
+ declare class ThlHorizontalTimelineComponent {
599
+ private readonly cfg;
600
+ readonly items: _angular_core.InputSignal<{
601
+ date: string;
602
+ title: string;
603
+ content?: string;
604
+ }[]>;
605
+ readonly headingLevel: _angular_core.InputSignal<2 | 3 | 4 | 5 | 6>;
606
+ readonly i: _angular_core.WritableSignal<number>;
607
+ readonly btn: string;
608
+ readonly b: (e?: string) => string;
609
+ dotCls(k: number): string;
610
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlHorizontalTimelineComponent, never>;
611
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlHorizontalTimelineComponent, "thl-horizontal-timeline", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
612
+ }
613
+ declare class ThlCarouselComponent {
614
+ private readonly cfg;
615
+ readonly slides: _angular_core.InputSignal<{
616
+ image?: string;
617
+ caption?: string;
618
+ alt?: string;
619
+ }[]>;
620
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
621
+ readonly i18n: ThlI18nService;
622
+ readonly interval: _angular_core.InputSignal<number>;
623
+ readonly fade: _angular_core.InputSignalWithTransform<boolean, unknown>;
624
+ readonly arrows: _angular_core.InputSignalWithTransform<boolean, unknown>;
625
+ readonly dots: _angular_core.InputSignalWithTransform<boolean, unknown>;
626
+ readonly height: _angular_core.InputSignal<string | undefined>;
627
+ readonly api: {
628
+ state: _thl_ui_core.Store<number>;
629
+ index: () => number;
630
+ next: () => void;
631
+ prev: () => void;
632
+ goTo: (i: number) => void;
633
+ setCount: (n: number) => void;
634
+ play(): void;
635
+ pause(): void;
636
+ destroy(): void;
637
+ };
638
+ readonly idx: _angular_core.Signal<number>;
639
+ readonly b: (e?: string, m?: Record<string, unknown>) => string;
640
+ readonly cls: _angular_core.Signal<string>;
641
+ slideCls(i: number): string;
642
+ constructor();
643
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCarouselComponent, never>;
644
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCarouselComponent, "thl-carousel", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "fade": { "alias": "fade"; "required": false; "isSignal": true; }; "arrows": { "alias": "arrows"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
645
+ }
646
+
647
+ /** Base for components implementing ControlValueAccessor with a `value` model signal. */
648
+ declare abstract class CvaBase<T> implements ControlValueAccessor {
649
+ abstract readonly value: ReturnType<typeof model<T>>;
650
+ readonly disabledByForm: _angular_core.WritableSignal<boolean>;
651
+ protected onChange: (v: T) => void;
652
+ protected onTouched: () => void;
653
+ writeValue(v: T): void;
654
+ registerOnChange(fn: (v: T) => void): void;
655
+ registerOnTouched(fn: () => void): void;
656
+ setDisabledState(d: boolean): void;
657
+ protected emit(v: T): void;
658
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CvaBase<any>, never>;
659
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CvaBase<any>, never, never, {}, {}, never, never, true, never>;
660
+ }
661
+ /** Adapt thl-ui core rules (returning i18n keys) to Angular ValidatorFn: `new FormControl('', thlValidators(rules.required(), rules.email()))` */
662
+ declare function thlValidators(...list: Rule[]): ValidatorFn;
663
+ declare class ThlFieldComponent {
664
+ private readonly cfg;
665
+ private readonly i18n;
666
+ readonly label: _angular_core.InputSignal<string | undefined>;
667
+ readonly help: _angular_core.InputSignal<string | undefined>;
668
+ readonly error: _angular_core.InputSignal<string | undefined>;
669
+ readonly for: _angular_core.InputSignal<string | undefined>;
670
+ readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
671
+ readonly status: _angular_core.InputSignal<"success" | "warning" | "error" | undefined>;
672
+ /** Reactive-forms control: shows localized error from thlValidators / built-in validators once touched. */
673
+ readonly control: _angular_core.InputSignal<AbstractControl<any, any, any> | null | undefined>;
674
+ private readonly tick;
675
+ readonly id: string;
676
+ private readonly lab;
677
+ private readonly box;
678
+ constructor();
679
+ readonly errorText: _angular_core.Signal<string | undefined>;
680
+ readonly b: (e: string) => string;
681
+ readonly cls: _angular_core.Signal<string>;
682
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlFieldComponent, never>;
683
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlFieldComponent, "thl-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "help": { "alias": "help"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "for": { "alias": "for"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
684
+ }
685
+ declare class ThlInputDirective {
686
+ private readonly cfg;
687
+ private readonly el;
688
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
689
+ readonly variant: _angular_core.InputSignal<"default" | "line" | "material" | undefined>;
690
+ readonly rounded: _angular_core.InputSignalWithTransform<boolean, unknown>;
691
+ readonly cls: _angular_core.Signal<string>;
692
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlInputDirective, never>;
693
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlInputDirective, "input[thlInput], textarea[thlInput], select[thlInput]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
694
+ }
695
+ declare class ThlInputGroupComponent {
696
+ readonly cfg: ThlConfigService;
697
+ readonly prepend: _angular_core.InputSignal<string | undefined>;
698
+ readonly append: _angular_core.InputSignal<string | undefined>;
699
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlInputGroupComponent, never>;
700
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlInputGroupComponent, "thl-input-group", never, { "prepend": { "alias": "prepend"; "required": false; "isSignal": true; }; "append": { "alias": "append"; "required": false; "isSignal": true; }; }, {}, never, ["[thlPrepend]", "*", "[thlAppend]"], true, never>;
701
+ }
702
+ declare class ThlCheckboxComponent extends CvaBase<boolean> {
703
+ private readonly cfg;
704
+ readonly value: _angular_core.ModelSignal<boolean>;
705
+ readonly label: _angular_core.InputSignal<string | undefined>;
706
+ readonly color: _angular_core.InputSignal<string | undefined>;
707
+ readonly skin: _angular_core.InputSignal<"default" | "flat" | "circle" | "square">;
708
+ readonly indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
709
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
710
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
711
+ readonly changed: _angular_core.OutputEmitterRef<boolean>;
712
+ readonly box: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
713
+ readonly lid: string;
714
+ constructor();
715
+ /** host is not a <label>: clicking the text toggles like a native label would */
716
+ onHostClick(e: MouseEvent): void;
717
+ readonly b: (e: string) => string;
718
+ readonly cls: _angular_core.Signal<string>;
719
+ toggle(c: boolean): void;
720
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCheckboxComponent, never>;
721
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCheckboxComponent, "thl-checkbox", never, { "value": { "alias": "checked"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "skin": { "alias": "skin"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; "changed": "changed"; }, never, ["*"], true, never>;
722
+ }
723
+ declare class ThlRadioGroupComponent extends CvaBase<unknown> {
724
+ private readonly cfg;
725
+ readonly value: _angular_core.ModelSignal<unknown>;
726
+ readonly options: _angular_core.InputSignal<{
727
+ label: string;
728
+ value: unknown;
729
+ disabled?: boolean;
730
+ }[]>;
731
+ readonly color: _angular_core.InputSignal<string | undefined>;
732
+ readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
733
+ readonly name: string;
734
+ readonly b: (e: string) => string;
735
+ readonly cls: _angular_core.Signal<string>;
736
+ itemCls(dis?: boolean): string;
737
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlRadioGroupComponent, never>;
738
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlRadioGroupComponent, "thl-radio-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
739
+ }
740
+ declare class ThlCheckboxGroupComponent extends CvaBase<unknown[] | null> {
741
+ private readonly cfg;
742
+ /** null when a FormControl is reset without a default */
743
+ readonly value: _angular_core.ModelSignal<unknown[] | null>;
744
+ readonly options: _angular_core.InputSignal<{
745
+ label: string;
746
+ value: unknown;
747
+ disabled?: boolean;
748
+ }[]>;
749
+ readonly color: _angular_core.InputSignal<string | undefined>;
750
+ readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
751
+ readonly b: (e: string) => string;
752
+ readonly cls: _angular_core.Signal<string>;
753
+ itemCls(dis?: boolean): string;
754
+ toggle(v: unknown, c: boolean): void;
755
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCheckboxGroupComponent, never>;
756
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCheckboxGroupComponent, "thl-checkbox-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
757
+ }
758
+ declare class ThlSwitchComponent extends CvaBase<boolean> {
759
+ private readonly cfg;
760
+ readonly value: _angular_core.ModelSignal<boolean>;
761
+ readonly label: _angular_core.InputSignal<string | undefined>;
762
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
763
+ readonly color: _angular_core.InputSignal<string | undefined>;
764
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
765
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
766
+ readonly lid: string;
767
+ readonly box: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
768
+ onHostClick(e: MouseEvent): void;
769
+ readonly b: (e: string) => string;
770
+ readonly cls: _angular_core.Signal<string>;
771
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSwitchComponent, never>;
772
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSwitchComponent, "thl-switch", never, { "value": { "alias": "checked"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; }, never, never, true, never>;
773
+ }
774
+ declare class ThlNumberInputComponent extends CvaBase<number | null> {
775
+ readonly cfg: ThlConfigService;
776
+ readonly value: _angular_core.ModelSignal<number | null>;
777
+ readonly min: _angular_core.InputSignal<number | undefined>;
778
+ readonly max: _angular_core.InputSignal<number | undefined>;
779
+ readonly stepSize: _angular_core.InputSignal<number>;
780
+ readonly prefix: _angular_core.InputSignal<string | undefined>;
781
+ readonly suffix: _angular_core.InputSignal<string | undefined>;
782
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
783
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
784
+ readonly dis: _angular_core.Signal<boolean>;
785
+ readonly b: (e: string) => string;
786
+ step(d: 1 | -1): void;
787
+ onInput(s: string): void;
788
+ onBlur(): void;
789
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlNumberInputComponent, never>;
790
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlNumberInputComponent, "thl-number-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "stepSize": { "alias": "step"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
791
+ }
792
+ declare class ThlSliderComponent extends CvaBase<number | [number, number]> {
793
+ private readonly cfg;
794
+ readonly value: _angular_core.ModelSignal<number | [number, number]>;
795
+ readonly min: _angular_core.InputSignal<number>;
796
+ readonly max: _angular_core.InputSignal<number>;
797
+ readonly step: _angular_core.InputSignal<number>;
798
+ readonly color: _angular_core.InputSignal<string | undefined>;
799
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
800
+ readonly showTip: _angular_core.InputSignalWithTransform<boolean, unknown>;
801
+ readonly showScale: _angular_core.InputSignalWithTransform<boolean, unknown>;
802
+ readonly format: _angular_core.InputSignal<(n: number) => string>;
803
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
804
+ private readonly i18n;
805
+ thumbLabel(i: number): string;
806
+ readonly rail: _angular_core.Signal<ElementRef<HTMLElement>>;
807
+ readonly dis: _angular_core.Signal<boolean>;
808
+ readonly vals: _angular_core.Signal<number[]>;
809
+ readonly lo: _angular_core.Signal<number>;
810
+ readonly hi: _angular_core.Signal<number>;
811
+ readonly mid: _angular_core.Signal<number>;
812
+ readonly b: (e: string) => string;
813
+ readonly cls: _angular_core.Signal<string>;
814
+ pct(v: number): number;
815
+ fmt(v: number): string;
816
+ private fromX;
817
+ private update;
818
+ railDown(e: PointerEvent): void;
819
+ drag(i: number, e: PointerEvent): void;
820
+ key(i: number, v: number, e: KeyboardEvent): void;
821
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSliderComponent, never>;
822
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSliderComponent, "thl-slider", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showTip": { "alias": "showTip"; "required": false; "isSignal": true; }; "showScale": { "alias": "showScale"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
823
+ }
824
+ declare class ThlSelectComponent extends CvaBase<unknown> {
825
+ readonly cfg: ThlConfigService;
826
+ private readonly i18n;
827
+ private readonly host;
828
+ readonly value: _angular_core.ModelSignal<unknown>;
829
+ readonly options: _angular_core.InputSignal<SelectOption<any>[]>;
830
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
831
+ readonly searchable: _angular_core.InputSignal<boolean | undefined>;
832
+ readonly clearable: _angular_core.InputSignal<boolean | undefined>;
833
+ readonly creatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
834
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
835
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
836
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
837
+ readonly search: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
838
+ readonly listId: string;
839
+ readonly api: {
840
+ state: _thl_ui_core.Store<{
841
+ open: boolean;
842
+ query: string;
843
+ highlighted: number;
844
+ value: any;
845
+ }>;
846
+ filtered: () => SelectOption<any>[];
847
+ isSelected: (v: any) => boolean;
848
+ configure(patch: {
849
+ multiple?: boolean;
850
+ creatable?: boolean;
851
+ max?: number;
852
+ onChange?: ((v: any) => void) | undefined;
853
+ }): void;
854
+ setOptions(next: SelectOption<any>[]): void;
855
+ selectedOptions: () => SelectOption<any>[];
856
+ open: () => void;
857
+ close: () => void;
858
+ toggle: () => void;
859
+ setQuery: (query: string) => void;
860
+ setValue(v: any): void;
861
+ select(v: any): void;
862
+ remove(v: any): void;
863
+ clear(): void;
864
+ create(): void;
865
+ onKeyDown(e: {
866
+ key: string;
867
+ preventDefault(): void;
868
+ }): boolean;
869
+ };
870
+ readonly st: _angular_core.Signal<{
871
+ open: boolean;
872
+ query: string;
873
+ highlighted: number;
874
+ value: any;
875
+ }>;
876
+ readonly dis: _angular_core.Signal<boolean>;
877
+ readonly d: _angular_core.Signal<{
878
+ searchable?: boolean;
879
+ clearable?: boolean;
880
+ }>;
881
+ readonly canType: _angular_core.Signal<boolean>;
882
+ readonly clearableD: _angular_core.Signal<boolean>;
883
+ readonly ph: _angular_core.Signal<string>;
884
+ readonly selected: _angular_core.Signal<SelectOption<any>[]>;
885
+ readonly filtered: _angular_core.Signal<SelectOption<any>[]>;
886
+ readonly b: (e: string) => string;
887
+ readonly cls: _angular_core.Signal<string>;
888
+ readonly ctrlCls: _angular_core.Signal<string>;
889
+ optCls(o: SelectOption<any>, i: number): string;
890
+ private off;
891
+ constructor();
892
+ openIt(): void;
893
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSelectComponent, never>;
894
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSelectComponent, "thl-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "creatable": { "alias": "creatable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
895
+ }
896
+ declare abstract class PopBase {
897
+ protected readonly host: ElementRef<any>;
898
+ readonly open: _angular_core.WritableSignal<boolean>;
899
+ private off;
900
+ private onKey;
901
+ constructor();
902
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopBase, never>;
903
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopBase, never, never, {}, {}, never, never, true, never>;
904
+ }
905
+ declare class ThlCalendarGridComponent {
906
+ private readonly cfg;
907
+ private readonly i18n;
908
+ readonly month: _angular_core.InputSignal<Date>;
909
+ readonly selected: _angular_core.InputSignal<Date | null | undefined>;
910
+ readonly rangeStart: _angular_core.InputSignal<Date | null | undefined>;
911
+ readonly rangeEnd: _angular_core.InputSignal<Date | null | undefined>;
912
+ readonly hover: _angular_core.InputSignal<Date | null | undefined>;
913
+ readonly min: _angular_core.InputSignal<Date | null | undefined>;
914
+ readonly max: _angular_core.InputSignal<Date | null | undefined>;
915
+ readonly monthChange: _angular_core.OutputEmitterRef<Date>;
916
+ readonly pick: _angular_core.OutputEmitterRef<Date>;
917
+ readonly hoverDay: _angular_core.OutputEmitterRef<Date>;
918
+ readonly ws: _angular_core.Signal<0 | 1>;
919
+ readonly names: _angular_core.Signal<string[]>;
920
+ readonly weeks: _angular_core.Signal<_thl_ui_core.DayCell[][]>;
921
+ readonly title: _angular_core.Signal<string>;
922
+ readonly b: (e?: string) => string;
923
+ shift(n: number): Date;
924
+ full(d: Date): string;
925
+ isDis(d: Date): boolean;
926
+ isSel(d: Date): boolean;
927
+ dayCls(c: {
928
+ date: Date;
929
+ inMonth: boolean;
930
+ today: boolean;
931
+ }): string;
932
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCalendarGridComponent, never>;
933
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCalendarGridComponent, "thl-calendar-grid", never, { "month": { "alias": "month"; "required": true; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "rangeStart": { "alias": "rangeStart"; "required": false; "isSignal": true; }; "rangeEnd": { "alias": "rangeEnd"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, { "monthChange": "monthChange"; "pick": "pick"; "hoverDay": "hoverDay"; }, never, never, true, never>;
934
+ }
935
+ declare class ThlDatePickerComponent extends PopBase implements ControlValueAccessor {
936
+ readonly cfg: ThlConfigService;
937
+ private readonly i18n;
938
+ readonly value: _angular_core.ModelSignal<string | null>;
939
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
940
+ readonly min: _angular_core.InputSignal<string | undefined>;
941
+ readonly max: _angular_core.InputSignal<string | undefined>;
942
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
943
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
944
+ readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
945
+ readonly disabledByForm: _angular_core.WritableSignal<boolean>;
946
+ readonly dis: _angular_core.Signal<boolean>;
947
+ readonly date: _angular_core.Signal<Date | null>;
948
+ readonly minD: _angular_core.Signal<Date | null>;
949
+ readonly maxD: _angular_core.Signal<Date | null>;
950
+ readonly month: _angular_core.WritableSignal<Date>;
951
+ readonly display: _angular_core.Signal<string>;
952
+ onChange: (v: string | null) => void;
953
+ onTouched: () => void;
954
+ constructor();
955
+ today(): Date;
956
+ emit(v: string | null): void;
957
+ choose(d: Date): void;
958
+ writeValue(v: string | null): void;
959
+ registerOnChange(fn: (v: string | null) => void): void;
960
+ registerOnTouched(fn: () => void): void;
961
+ setDisabledState(d: boolean): void;
962
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlDatePickerComponent, never>;
963
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlDatePickerComponent, "thl-date-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
964
+ }
965
+ declare class ThlDateRangePickerComponent extends PopBase implements ControlValueAccessor {
966
+ readonly cfg: ThlConfigService;
967
+ private readonly i18n;
968
+ readonly value: _angular_core.ModelSignal<[string | null, string | null]>;
969
+ readonly presets: _angular_core.InputSignalWithTransform<boolean, unknown>;
970
+ readonly ranges: [string, [Date, Date]][];
971
+ readonly start: _angular_core.Signal<Date | null>;
972
+ readonly end: _angular_core.Signal<Date | null>;
973
+ readonly month: _angular_core.WritableSignal<Date>;
974
+ readonly next: _angular_core.Signal<Date>;
975
+ readonly pending: _angular_core.WritableSignal<Date | null>;
976
+ readonly hover: _angular_core.WritableSignal<Date | null>;
977
+ readonly display: _angular_core.Signal<string>;
978
+ onChange: (v: [string | null, string | null]) => void;
979
+ prev(d: Date): Date;
980
+ isPreset(r: [Date, Date]): boolean;
981
+ set(a: Date, b: Date): void;
982
+ pick(d: Date): void;
983
+ writeValue(v: [string | null, string | null]): void;
984
+ registerOnChange(fn: (v: [string | null, string | null]) => void): void;
985
+ registerOnTouched(): void;
986
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlDateRangePickerComponent, never>;
987
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlDateRangePickerComponent, "thl-date-range-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
988
+ }
989
+ declare class ThlTimePickerComponent extends PopBase implements ControlValueAccessor {
990
+ readonly cfg: ThlConfigService;
991
+ private readonly i18n;
992
+ readonly value: _angular_core.ModelSignal<string | null>;
993
+ readonly step: _angular_core.InputSignal<number>;
994
+ readonly hours: number[];
995
+ readonly minutes: _angular_core.Signal<number[]>;
996
+ readonly hh: _angular_core.Signal<number | null>;
997
+ readonly mm: _angular_core.Signal<number | null>;
998
+ readonly display: _angular_core.Signal<string>;
999
+ onChange: (v: string | null) => void;
1000
+ pad(n: number): string;
1001
+ set(h: number, m: number): void;
1002
+ now(): void;
1003
+ writeValue(v: string | null): void;
1004
+ registerOnChange(fn: (v: string | null) => void): void;
1005
+ registerOnTouched(): void;
1006
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTimePickerComponent, never>;
1007
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTimePickerComponent, "thl-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1008
+ }
1009
+ declare class ThlColorPickerComponent extends PopBase implements ControlValueAccessor {
1010
+ readonly cfg: ThlConfigService;
1011
+ readonly value: _angular_core.ModelSignal<string>;
1012
+ readonly palette: _angular_core.InputSignal<string[]>;
1013
+ onChange: (v: string) => void;
1014
+ emit(v: string): void;
1015
+ writeValue(v: string): void;
1016
+ registerOnChange(fn: (v: string) => void): void;
1017
+ registerOnTouched(): void;
1018
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlColorPickerComponent, never>;
1019
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlColorPickerComponent, "thl-color-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1020
+ }
1021
+ declare class ThlUploadComponent {
1022
+ readonly cfg: ThlConfigService;
1023
+ private readonly i18n;
1024
+ readonly accept: _angular_core.InputSignal<string | undefined>;
1025
+ readonly maxSize: _angular_core.InputSignal<number | undefined>;
1026
+ readonly multiple: _angular_core.InputSignal<boolean | undefined>;
1027
+ readonly maxFiles: _angular_core.InputSignal<number | undefined>;
1028
+ readonly request: _angular_core.InputSignal<((file: File, onProgress: (p: number) => void) => Promise<unknown>) | undefined>;
1029
+ readonly variant: _angular_core.InputSignal<"list" | "single">;
1030
+ readonly hint: _angular_core.InputSignal<string | undefined>;
1031
+ readonly filesChange: _angular_core.OutputEmitterRef<UploadFile[]>;
1032
+ readonly multi: _angular_core.Signal<boolean>;
1033
+ readonly api: {
1034
+ state: _thl_ui_core.Store<{
1035
+ files: UploadFile[];
1036
+ dragging: boolean;
1037
+ errors: Array<{
1038
+ key: string;
1039
+ params: Record<string, string>;
1040
+ }>;
1041
+ }>;
1042
+ configure(patch: Partial<_thl_ui_core.UploadOptions>): void;
1043
+ add(list: FileList | File[]): UploadFile[];
1044
+ remove(id: string): void;
1045
+ clear(): void;
1046
+ upload: (id: string) => Promise<void>;
1047
+ uploadAll: () => Promise<void[]>;
1048
+ dragHandlers: {
1049
+ onDragEnter: (e: DragEvent) => void;
1050
+ onDragOver: (e: DragEvent) => void;
1051
+ onDragLeave: (e: DragEvent) => void;
1052
+ onDrop: (e: DragEvent) => void;
1053
+ };
1054
+ };
1055
+ readonly st: _angular_core.Signal<{
1056
+ files: UploadFile[];
1057
+ dragging: boolean;
1058
+ errors: Array<{
1059
+ key: string;
1060
+ params: Record<string, string>;
1061
+ }>;
1062
+ }>;
1063
+ readonly single: _angular_core.Signal<UploadFile | undefined>;
1064
+ readonly b: (e?: string) => string;
1065
+ readonly zoneCls: _angular_core.Signal<string>;
1066
+ constructor();
1067
+ fileCls(f: UploadFile): string;
1068
+ size(n: number): string;
1069
+ status(f: UploadFile): string;
1070
+ onFiles(el: HTMLInputElement): void;
1071
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlUploadComponent, never>;
1072
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlUploadComponent, "thl-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "request": { "alias": "request"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, { "filesChange": "filesChange"; }, never, never, true, never>;
1073
+ }
1074
+ declare class ThlEditorComponent extends CvaBase<string> {
1075
+ private readonly cfg;
1076
+ readonly value: _angular_core.ModelSignal<string>;
1077
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
1078
+ readonly minHeight: _angular_core.InputSignal<number | undefined>;
1079
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
1080
+ readonly area: _angular_core.Signal<ElementRef<HTMLElement>>;
1081
+ readonly tools: Array<[string, string, string?]>;
1082
+ readonly b: (e?: string) => string;
1083
+ constructor();
1084
+ cmd(c: string, arg?: string): void;
1085
+ onInput(): void;
1086
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlEditorComponent, never>;
1087
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlEditorComponent, "thl-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1088
+ }
1089
+
1090
+ declare class ThlTableDirective {
1091
+ private readonly cfg;
1092
+ readonly striped: _angular_core.InputSignalWithTransform<boolean, unknown>;
1093
+ readonly hover: _angular_core.InputSignalWithTransform<boolean, unknown>;
1094
+ readonly bordered: _angular_core.InputSignal<string | boolean | undefined>;
1095
+ readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
1096
+ readonly color: _angular_core.InputSignal<string | undefined>;
1097
+ readonly full: _angular_core.InputSignal<string | undefined>;
1098
+ readonly cls: _angular_core.Signal<string>;
1099
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTableDirective, never>;
1100
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlTableDirective, "table[thlTable]", never, { "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "full": { "alias": "full"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1101
+ }
1102
+ /** <ng-template thlCell="name" let-row let-value="value">…</ng-template> */
1103
+ declare class ThlCellDirective {
1104
+ readonly key: _angular_core.InputSignal<string>;
1105
+ readonly tpl: TemplateRef<any>;
1106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCellDirective, never>;
1107
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlCellDirective, "ng-template[thlCell]", never, { "key": { "alias": "thlCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1108
+ }
1109
+ declare class ThlDataTableComponent {
1110
+ private readonly cfg;
1111
+ readonly p: _angular_core.Signal<string>;
1112
+ readonly data: _angular_core.InputSignal<any[]>;
1113
+ readonly columns: _angular_core.InputSignal<ColumnDef<any>[]>;
1114
+ readonly rowKey: _angular_core.InputSignal<string | ((r: any) => string | number) | undefined>;
1115
+ readonly pageSize: _angular_core.InputSignal<number | undefined>;
1116
+ readonly paginate: _angular_core.InputSignalWithTransform<boolean, unknown>;
1117
+ readonly searchable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1118
+ readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1119
+ readonly striped: _angular_core.InputSignal<boolean | undefined>;
1120
+ readonly hover: _angular_core.InputSignal<boolean | undefined>;
1121
+ readonly bordered: _angular_core.InputSignal<boolean | undefined>;
1122
+ readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
1123
+ readonly stack: _angular_core.InputSignalWithTransform<boolean, unknown>;
1124
+ readonly color: _angular_core.InputSignal<"default" | "red" | "purple" | "dark" | "success" | "info" | "warning" | "primary" | "danger" | "inverse" | undefined>;
1125
+ readonly emptyText: _angular_core.InputSignal<string | undefined>;
1126
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1127
+ readonly selectionChange: _angular_core.OutputEmitterRef<any[]>;
1128
+ readonly cellEdit: _angular_core.OutputEmitterRef<{
1129
+ rowKey: string | number;
1130
+ key: string;
1131
+ value: unknown;
1132
+ data: any[];
1133
+ }>;
1134
+ readonly cells: _angular_core.Signal<readonly ThlCellDirective[]>;
1135
+ readonly api: {
1136
+ state: _thl_ui_core.Store<_thl_ui_core.TableState>;
1137
+ columns: () => ColumnDef<any>[];
1138
+ setData(next: any[]): void;
1139
+ setColumns(next: ColumnDef<any>[]): void;
1140
+ view(): {
1141
+ rows: {
1142
+ row: any;
1143
+ key: string | number;
1144
+ }[];
1145
+ total: number;
1146
+ page: number;
1147
+ pageSize: number;
1148
+ pageCount: number;
1149
+ };
1150
+ value: (c: ColumnDef<any>, row: any) => any;
1151
+ toggleSort(key: string): void;
1152
+ sortDir: (key: string) => _thl_ui_core.SortDir | null;
1153
+ setSearch: (search: string) => void;
1154
+ setFilter: (key: string, value: unknown) => void;
1155
+ setPage: (page: number) => void;
1156
+ setPageSize: (pageSize: number) => void;
1157
+ isSelected: (k: string | number) => boolean;
1158
+ toggleRow(k: string | number): void;
1159
+ toggleAll(): void;
1160
+ allSelected(): boolean | "indeterminate";
1161
+ selectedRows: () => any[];
1162
+ updateCell(rowKey: string | number, colKey: string, value: unknown): any[];
1163
+ };
1164
+ readonly st: _angular_core.Signal<_thl_ui_core.TableState>;
1165
+ readonly view: _angular_core.Signal<{
1166
+ rows: {
1167
+ row: any;
1168
+ key: string | number;
1169
+ }[];
1170
+ total: number;
1171
+ page: number;
1172
+ pageSize: number;
1173
+ pageCount: number;
1174
+ }>;
1175
+ readonly total: _angular_core.Signal<number>;
1176
+ readonly from: _angular_core.Signal<number>;
1177
+ readonly to: _angular_core.Signal<number>;
1178
+ readonly all: _angular_core.Signal<boolean | "indeterminate">;
1179
+ readonly d: _angular_core.Signal<{
1180
+ striped?: boolean;
1181
+ hover?: boolean;
1182
+ bordered?: boolean;
1183
+ pageSize?: number;
1184
+ pageSizes?: number[];
1185
+ }>;
1186
+ private readonly i18n;
1187
+ readonly showParts: _angular_core.Signal<string[]>;
1188
+ readonly sizes: _angular_core.Signal<number[]>;
1189
+ readonly b: (e?: string) => string;
1190
+ readonly tableCls: _angular_core.Signal<string>;
1191
+ readonly editing: _angular_core.WritableSignal<{
1192
+ row: string | number;
1193
+ key: string;
1194
+ value: string;
1195
+ } | null>;
1196
+ private sizeInit;
1197
+ constructor();
1198
+ tpl(key: string): TemplateRef<any> | undefined;
1199
+ hide(c: ColumnDef): string;
1200
+ ariaSort(k: string): "ascending" | "descending" | null;
1201
+ sortCls(k: string): string;
1202
+ isEditing(r: string | number, k: string): boolean;
1203
+ startEdit(r: string | number, k: string, row: any): void;
1204
+ editValue(v: string): void;
1205
+ commit(): void;
1206
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlDataTableComponent, never>;
1207
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlDataTableComponent, "thl-data-table", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "paginate": { "alias": "paginate"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "cellEdit": "cellEdit"; }, ["cells"], ["[thlToolbar]"], true, never>;
1208
+ }
1209
+ declare class ThlListComponent {
1210
+ private readonly cfg;
1211
+ readonly p: _angular_core.Signal<string>;
1212
+ readonly items: _angular_core.InputSignal<{
1213
+ avatar?: string;
1214
+ icon?: string;
1215
+ iconColor?: string;
1216
+ title: string;
1217
+ description?: string;
1218
+ meta?: string;
1219
+ }[]>;
1220
+ readonly hover: _angular_core.InputSignalWithTransform<boolean, unknown>;
1221
+ readonly itemClick: _angular_core.OutputEmitterRef<any>;
1222
+ readonly b: (e: string) => string;
1223
+ readonly cls: _angular_core.Signal<string>;
1224
+ iconCls(c?: string): string;
1225
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlListComponent, never>;
1226
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlListComponent, "thl-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
1227
+ }
1228
+ declare class ThlGalleryComponent {
1229
+ private readonly cfg;
1230
+ readonly images: _angular_core.InputSignal<{
1231
+ src: string;
1232
+ thumb?: string;
1233
+ alt?: string;
1234
+ caption?: string;
1235
+ }[]>;
1236
+ readonly idx: _angular_core.WritableSignal<number | null>;
1237
+ readonly g: (e?: string) => string;
1238
+ readonly l: (e?: string) => string;
1239
+ move(d: number): void;
1240
+ onKey(e: KeyboardEvent): void;
1241
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlGalleryComponent, never>;
1242
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlGalleryComponent, "thl-gallery", never, { "images": { "alias": "images"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1243
+ }
1244
+ declare class ThlInfoBoxComponent {
1245
+ private readonly cfg;
1246
+ readonly icon: _angular_core.InputSignal<string | undefined>;
1247
+ readonly value: _angular_core.InputSignal<string | number | undefined>;
1248
+ readonly title: _angular_core.InputSignal<string | undefined>;
1249
+ readonly color: _angular_core.InputSignal<string>;
1250
+ readonly filled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1251
+ readonly soft: _angular_core.InputSignalWithTransform<boolean, unknown>;
1252
+ readonly b: (e: string) => string;
1253
+ readonly cls: _angular_core.Signal<string>;
1254
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlInfoBoxComponent, never>;
1255
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlInfoBoxComponent, "thl-info-box", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "soft": { "alias": "soft"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1256
+ }
1257
+ declare class ThlStatBoxComponent {
1258
+ private readonly cfg;
1259
+ readonly title: _angular_core.InputSignal<string | undefined>;
1260
+ readonly value: _angular_core.InputSignal<string | number | undefined>;
1261
+ readonly icon: _angular_core.InputSignal<string | undefined>;
1262
+ readonly color: _angular_core.InputSignal<string>;
1263
+ readonly trend: _angular_core.InputSignal<"up" | "down">;
1264
+ readonly delta: _angular_core.InputSignal<string | undefined>;
1265
+ readonly progress: _angular_core.InputSignal<number | undefined>;
1266
+ readonly b: (e: string) => string;
1267
+ readonly cls: _angular_core.Signal<string>;
1268
+ readonly deltaCls: _angular_core.Signal<string>;
1269
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlStatBoxComponent, never>;
1270
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlStatBoxComponent, "thl-stat-box", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1271
+ }
1272
+ declare class ThlColorBoxComponent {
1273
+ private readonly cfg;
1274
+ readonly color: _angular_core.InputSignal<string>;
1275
+ readonly icon: _angular_core.InputSignal<string | undefined>;
1276
+ readonly label: _angular_core.InputSignal<string | undefined>;
1277
+ readonly value: _angular_core.InputSignal<string | number | undefined>;
1278
+ readonly b: (e: string) => string;
1279
+ readonly cls: _angular_core.Signal<string>;
1280
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlColorBoxComponent, never>;
1281
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlColorBoxComponent, "thl-color-box", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1282
+ }
1283
+ declare class ThlStatsRowComponent {
1284
+ private readonly cfg;
1285
+ readonly items: _angular_core.InputSignal<{
1286
+ label: string;
1287
+ value: string | number;
1288
+ }[]>;
1289
+ readonly b: (e?: string) => string;
1290
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlStatsRowComponent, never>;
1291
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlStatsRowComponent, "thl-stats-row", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1292
+ }
1293
+ interface PricingPlanData {
1294
+ name: string;
1295
+ price: string | number;
1296
+ currency?: string;
1297
+ period?: string;
1298
+ features: Array<{
1299
+ icon?: string;
1300
+ text: string;
1301
+ }>;
1302
+ featured?: boolean;
1303
+ tag?: string;
1304
+ cta?: string;
1305
+ ctaVariant?: string;
1306
+ }
1307
+ declare class ThlPricingTableComponent {
1308
+ readonly cfg: ThlConfigService;
1309
+ readonly plans: _angular_core.InputSignal<PricingPlanData[]>;
1310
+ readonly selected: _angular_core.OutputEmitterRef<PricingPlanData>;
1311
+ readonly b: (e: string) => string;
1312
+ planCls(f?: boolean): string;
1313
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPricingTableComponent, never>;
1314
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPricingTableComponent, "thl-pricing-table", never, { "plans": { "alias": "plans"; "required": true; "isSignal": true; }; }, { "selected": "selected"; }, never, never, true, never>;
1315
+ }
1316
+ declare class ThlUserCardComponent {
1317
+ private readonly cfg;
1318
+ readonly image: _angular_core.InputSignal<string>;
1319
+ readonly name: _angular_core.InputSignal<string | undefined>;
1320
+ readonly subtitle: _angular_core.InputSignal<string | undefined>;
1321
+ readonly b: (e?: string) => string;
1322
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlUserCardComponent, never>;
1323
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlUserCardComponent, "thl-user-card", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; }, {}, never, ["[thlActions]"], true, never>;
1324
+ }
1325
+ declare class ThlProfileCardComponent {
1326
+ private readonly cfg;
1327
+ readonly cover: _angular_core.InputSignal<string | undefined>;
1328
+ readonly avatar: _angular_core.InputSignal<string | undefined>;
1329
+ readonly name: _angular_core.InputSignal<string | undefined>;
1330
+ readonly email: _angular_core.InputSignal<string | undefined>;
1331
+ readonly stats: _angular_core.InputSignal<{
1332
+ label: string;
1333
+ value: string | number;
1334
+ }[] | undefined>;
1335
+ readonly b: (e?: string) => string;
1336
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlProfileCardComponent, never>;
1337
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlProfileCardComponent, "thl-profile-card", never, { "cover": { "alias": "cover"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "stats": { "alias": "stats"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1338
+ }
1339
+ declare class ThlChatComponent {
1340
+ readonly cfg: ThlConfigService;
1341
+ readonly messages: _angular_core.InputSignal<{
1342
+ id: string | number;
1343
+ from: string;
1344
+ avatar?: string;
1345
+ text: string;
1346
+ time?: string;
1347
+ me?: boolean;
1348
+ }[]>;
1349
+ readonly composer: _angular_core.InputSignalWithTransform<boolean, unknown>;
1350
+ readonly send: _angular_core.OutputEmitterRef<string>;
1351
+ readonly b: (e?: string) => string;
1352
+ msgCls(me?: boolean): string;
1353
+ submit(el: HTMLInputElement): void;
1354
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlChatComponent, never>;
1355
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlChatComponent, "thl-chat", never, { "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "composer": { "alias": "composer"; "required": false; "isSignal": true; }; }, { "send": "send"; }, never, never, true, never>;
1356
+ }
1357
+ declare class ThlTodoListComponent {
1358
+ readonly cfg: ThlConfigService;
1359
+ readonly items: _angular_core.InputSignal<{
1360
+ id: string | number;
1361
+ text: string;
1362
+ done?: boolean;
1363
+ badge?: {
1364
+ text: string;
1365
+ color?: string;
1366
+ };
1367
+ }[]>;
1368
+ readonly addable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1369
+ readonly toggle: _angular_core.OutputEmitterRef<string | number>;
1370
+ readonly remove: _angular_core.OutputEmitterRef<string | number>;
1371
+ readonly add: _angular_core.OutputEmitterRef<string>;
1372
+ readonly b: (e?: string) => string;
1373
+ itemCls(done?: boolean): string;
1374
+ submit(el: HTMLInputElement): void;
1375
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTodoListComponent, never>;
1376
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTodoListComponent, "thl-todo-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "addable": { "alias": "addable"; "required": false; "isSignal": true; }; }, { "toggle": "toggle"; "remove": "remove"; "add": "add"; }, never, never, true, never>;
1377
+ }
1378
+ declare class ThlWeatherComponent {
1379
+ readonly cfg: ThlConfigService;
1380
+ readonly city: _angular_core.InputSignal<string | undefined>;
1381
+ readonly temp: _angular_core.InputSignal<number | undefined>;
1382
+ readonly condition: _angular_core.InputSignal<string | undefined>;
1383
+ readonly icon: _angular_core.InputSignal<string>;
1384
+ readonly days: _angular_core.InputSignal<{
1385
+ day: string;
1386
+ temp: number;
1387
+ icon?: string;
1388
+ }[] | undefined>;
1389
+ readonly b: (e?: string) => string;
1390
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlWeatherComponent, never>;
1391
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlWeatherComponent, "thl-weather", never, { "city": { "alias": "city"; "required": false; "isSignal": true; }; "temp": { "alias": "temp"; "required": false; "isSignal": true; }; "condition": { "alias": "condition"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "days": { "alias": "days"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1392
+ }
1393
+ declare abstract class ResponsiveChart {
1394
+ protected readonly cfg: ThlConfigService;
1395
+ protected readonly i18n: ThlI18nService;
1396
+ readonly width: _angular_core.WritableSignal<number>;
1397
+ constructor();
1398
+ fmt(v: number): string;
1399
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ResponsiveChart, never>;
1400
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ResponsiveChart, never, never, {}, {}, never, never, true, never>;
1401
+ }
1402
+ declare class ThlLineChartComponent extends ResponsiveChart {
1403
+ readonly cfg: ThlConfigService;
1404
+ readonly series: _angular_core.InputSignal<Series[]>;
1405
+ readonly labels: _angular_core.InputSignal<string[]>;
1406
+ readonly height: _angular_core.InputSignal<number>;
1407
+ readonly area: _angular_core.InputSignalWithTransform<boolean, unknown>;
1408
+ readonly smooth: _angular_core.InputSignalWithTransform<boolean, unknown>;
1409
+ readonly legend: _angular_core.InputSignalWithTransform<boolean, unknown>;
1410
+ readonly hover: _angular_core.WritableSignal<number | null>;
1411
+ readonly c: _angular_core.Signal<_thl_ui_charts.XYChart>;
1412
+ readonly band: _angular_core.Signal<number>;
1413
+ readonly aria: _angular_core.Signal<string>;
1414
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlLineChartComponent, never>;
1415
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlLineChartComponent, "thl-line-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1416
+ }
1417
+ declare class ThlBarChartComponent extends ResponsiveChart {
1418
+ readonly cfg: ThlConfigService;
1419
+ readonly series: _angular_core.InputSignal<Series[]>;
1420
+ readonly labels: _angular_core.InputSignal<string[]>;
1421
+ readonly height: _angular_core.InputSignal<number>;
1422
+ readonly stacked: _angular_core.InputSignalWithTransform<boolean, unknown>;
1423
+ readonly legend: _angular_core.InputSignalWithTransform<boolean, unknown>;
1424
+ readonly c: _angular_core.Signal<_thl_ui_charts.BarChart>;
1425
+ readonly aria: _angular_core.Signal<string>;
1426
+ color(i: number, s: Series): string;
1427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlBarChartComponent, never>;
1428
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlBarChartComponent, "thl-bar-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1429
+ }
1430
+ declare class ThlPieChartComponent {
1431
+ readonly cfg: ThlConfigService;
1432
+ readonly data: _angular_core.InputSignal<{
1433
+ label: string;
1434
+ value: number;
1435
+ color?: string;
1436
+ }[]>;
1437
+ readonly size: _angular_core.InputSignal<number>;
1438
+ readonly donut: _angular_core.InputSignal<number>;
1439
+ readonly legend: _angular_core.InputSignalWithTransform<boolean, unknown>;
1440
+ readonly hover: _angular_core.WritableSignal<number | null>;
1441
+ readonly slices: _angular_core.Signal<_thl_ui_charts.PieSlice[]>;
1442
+ readonly aria: _angular_core.Signal<string>;
1443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPieChartComponent, never>;
1444
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPieChartComponent, "thl-pie-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "donut": { "alias": "donut"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1445
+ }
1446
+ declare class ThlSparklineComponent {
1447
+ private readonly cfg;
1448
+ readonly data: _angular_core.InputSignal<number[]>;
1449
+ readonly width: _angular_core.InputSignal<number>;
1450
+ readonly height: _angular_core.InputSignal<number>;
1451
+ readonly type: _angular_core.InputSignal<"area" | "line" | "bar">;
1452
+ readonly color: _angular_core.InputSignal<string>;
1453
+ readonly s: _angular_core.Signal<{
1454
+ bars: {
1455
+ x: number;
1456
+ y: number;
1457
+ width: number;
1458
+ height: number;
1459
+ value: number;
1460
+ }[];
1461
+ line: string;
1462
+ area: string;
1463
+ last?: undefined;
1464
+ } | {
1465
+ bars: never[];
1466
+ line: string;
1467
+ area: string;
1468
+ last: [number, number];
1469
+ }>;
1470
+ readonly c: _angular_core.Signal<string>;
1471
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSparklineComponent, never>;
1472
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSparklineComponent, "thl-sparkline", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1473
+ }
1474
+ interface CalendarEvent {
1475
+ id: string | number;
1476
+ title: string;
1477
+ date: string;
1478
+ color?: string;
1479
+ }
1480
+ declare class ThlCalendarComponent {
1481
+ readonly cfg: ThlConfigService;
1482
+ private readonly i18n;
1483
+ readonly events: _angular_core.InputSignal<CalendarEvent[]>;
1484
+ readonly eventMove: _angular_core.OutputEmitterRef<{
1485
+ id: string | number;
1486
+ date: string;
1487
+ }>;
1488
+ readonly dateClick: _angular_core.OutputEmitterRef<string>;
1489
+ readonly eventClick: _angular_core.OutputEmitterRef<CalendarEvent>;
1490
+ readonly month: _angular_core.WritableSignal<Date>;
1491
+ readonly drop: _angular_core.WritableSignal<string | null>;
1492
+ readonly ws: _angular_core.Signal<0 | 1>;
1493
+ readonly names: _angular_core.Signal<string[]>;
1494
+ readonly cells: _angular_core.Signal<_thl_ui_core.DayCell[]>;
1495
+ readonly title: _angular_core.Signal<string>;
1496
+ fullDate(d: Date): string;
1497
+ readonly byDate: _angular_core.Signal<Partial<Record<string, CalendarEvent[]>>>;
1498
+ readonly b: (e?: string) => string;
1499
+ iso(d: Date): string;
1500
+ shift(n: number): void;
1501
+ today(): void;
1502
+ cellCls(c: {
1503
+ date: Date;
1504
+ inMonth: boolean;
1505
+ today: boolean;
1506
+ }): string;
1507
+ evCls(color?: string): string;
1508
+ onDrop(e: DragEvent, date: string): void;
1509
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlCalendarComponent, never>;
1510
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlCalendarComponent, "thl-calendar", never, { "events": { "alias": "events"; "required": true; "isSignal": true; }; }, { "eventMove": "eventMove"; "dateClick": "dateClick"; "eventClick": "eventClick"; }, never, never, true, never>;
1511
+ }
1512
+
1513
+ /** Custom link rendering (e.g. routerLink): <ng-template thlMenuLink let-item let-cls="cls">…</ng-template> */
1514
+ declare class ThlMenuLinkDirective {
1515
+ readonly tpl: TemplateRef<any>;
1516
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlMenuLinkDirective, never>;
1517
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ThlMenuLinkDirective, "ng-template[thlMenuLink]", never, {}, {}, never, never, true, never>;
1518
+ }
1519
+ declare class ThlSideMenuComponent {
1520
+ private readonly cfg;
1521
+ protected readonly i18n: ThlI18nService;
1522
+ readonly items: _angular_core.InputSignal<MenuItem[]>;
1523
+ readonly currentPath: _angular_core.InputSignal<string | undefined>;
1524
+ readonly accordion: _angular_core.InputSignalWithTransform<boolean, unknown>;
1525
+ /** One-row menu: top-level items that do not fit move into a "More" dropdown. */
1526
+ readonly horizontal: _angular_core.InputSignalWithTransform<boolean, unknown>;
1527
+ private readonly host;
1528
+ readonly visible: _angular_core.WritableSignal<number>;
1529
+ readonly overflow: _angular_core.Signal<boolean>;
1530
+ readonly rest: _angular_core.Signal<MenuItem[]>;
1531
+ isHidden(depth: number, idx: number): boolean;
1532
+ moreCls(): string;
1533
+ readonly linkTpl: _angular_core.Signal<ThlMenuLinkDirective | undefined>;
1534
+ readonly trail: _angular_core.Signal<string[]>;
1535
+ readonly open: _angular_core.WritableSignal<string[]>;
1536
+ constructor();
1537
+ readonly b: (e?: string) => string;
1538
+ label(l: string): string;
1539
+ isOpen(k: string): boolean;
1540
+ isCurrent(k: string): boolean;
1541
+ linkCls(k: string): string;
1542
+ collapseCls(k: string): string;
1543
+ toggle(k: string, sib: MenuItem[]): void;
1544
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSideMenuComponent, never>;
1545
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSideMenuComponent, "thl-side-menu", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "currentPath": { "alias": "currentPath"; "required": false; "isSignal": true; }; "accordion": { "alias": "accordion"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; }, {}, ["linkTpl"], never, true, never>;
1546
+ }
1547
+ declare class ThlSettingsPanelComponent {
1548
+ readonly cfg: ThlConfigService;
1549
+ readonly open: _angular_core.ModelSignal<boolean>;
1550
+ readonly c: _angular_core.Signal<_thl_ui_core.ThlConfig>;
1551
+ readonly layouts: LayoutMode[];
1552
+ readonly modes: Array<[ColorMode, string]>;
1553
+ readonly bases: Array<keyof typeof skins>;
1554
+ readonly s: (e?: string) => string;
1555
+ skinCls(k: string): string;
1556
+ grad(k: keyof typeof skins): string;
1557
+ setDark(k: string): void;
1558
+ name(l: string): string;
1559
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlSettingsPanelComponent, never>;
1560
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlSettingsPanelComponent, "thl-settings-panel", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
1561
+ }
1562
+ interface ThlTopbarNotification {
1563
+ id: string | number;
1564
+ title: string;
1565
+ text?: string;
1566
+ time?: string;
1567
+ avatar?: string;
1568
+ icon?: string;
1569
+ status?: string;
1570
+ }
1571
+ declare class ThlTopbarMessagesComponent {
1572
+ readonly cfg: ThlConfigService;
1573
+ readonly items: _angular_core.InputSignal<ThlTopbarNotification[]>;
1574
+ readonly icon: _angular_core.InputSignal<string>;
1575
+ readonly title: _angular_core.InputSignal<string | undefined>;
1576
+ readonly footer: _angular_core.InputSignal<string | undefined>;
1577
+ readonly footerHref: _angular_core.InputSignal<string>;
1578
+ readonly tb: (e?: string) => string;
1579
+ readonly mc: (e?: string) => string;
1580
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlTopbarMessagesComponent, never>;
1581
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlTopbarMessagesComponent, "thl-topbar-messages", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; "footerHref": { "alias": "footerHref"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1582
+ }
1583
+ interface ThlLayoutUser {
1584
+ name: string;
1585
+ avatar?: string;
1586
+ role?: string;
1587
+ menu?: DropdownItem[];
1588
+ }
1589
+ declare class ThlAppLayoutComponent {
1590
+ readonly cfg: ThlConfigService;
1591
+ readonly i18n: ThlI18nService;
1592
+ readonly p: _angular_core.Signal<string>;
1593
+ readonly c: _angular_core.Signal<_thl_ui_core.ThlConfig>;
1594
+ readonly menu: _angular_core.InputSignal<MenuItem[]>;
1595
+ readonly currentPath: _angular_core.InputSignal<string | undefined>;
1596
+ readonly brand: _angular_core.InputSignal<string>;
1597
+ readonly brandHref: _angular_core.InputSignal<string>;
1598
+ readonly user: _angular_core.InputSignal<ThlLayoutUser | undefined>;
1599
+ readonly searchable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1600
+ readonly settings: _angular_core.InputSignalWithTransform<boolean, unknown>;
1601
+ readonly footer: _angular_core.InputSignal<string | false | undefined>;
1602
+ readonly search: _angular_core.OutputEmitterRef<string>;
1603
+ readonly userSelect: _angular_core.OutputEmitterRef<string>;
1604
+ readonly year: number;
1605
+ readonly panel: _angular_core.WritableSignal<boolean>;
1606
+ readonly sidebar: {
1607
+ state: _thl_ui_core.Store<_thl_ui_core.SidebarState>;
1608
+ toggle(): void;
1609
+ setMini: (mini: boolean) => void;
1610
+ closeMobile: () => void;
1611
+ destroy(): void;
1612
+ };
1613
+ readonly sb: _angular_core.Signal<_thl_ui_core.SidebarState>;
1614
+ readonly horizontal: _angular_core.Signal<boolean>;
1615
+ readonly appCls: _angular_core.Signal<string>;
1616
+ readonly tb: (e?: string) => string;
1617
+ readonly modeIcon: _angular_core.Signal<"sun" | "moon" | "monitor">;
1618
+ readonly localeItems: _angular_core.Signal<{
1619
+ key: string;
1620
+ label: string;
1621
+ }[]>;
1622
+ readonly userItems: _angular_core.Signal<DropdownItem[]>;
1623
+ constructor();
1624
+ cycleMode(): void;
1625
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlAppLayoutComponent, never>;
1626
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlAppLayoutComponent, "thl-app-layout", never, { "menu": { "alias": "menu"; "required": true; "isSignal": true; }; "currentPath": { "alias": "currentPath"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "brandHref": { "alias": "brandHref"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; }, { "search": "search"; "userSelect": "userSelect"; }, never, ["[thlBrandIcon]", "[thlTopbarLeft]", "[thlTopbarRight]", "[thlMenuLink]", "[thlSidebarFooter]", "*"], true, never>;
1627
+ }
1628
+ declare class ThlPageComponent {
1629
+ readonly p: _angular_core.Signal<string>;
1630
+ readonly title: _angular_core.InputSignal<string | undefined>;
1631
+ readonly breadcrumb: _angular_core.InputSignal<{
1632
+ label: string;
1633
+ href?: string;
1634
+ }[] | undefined>;
1635
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlPageComponent, never>;
1636
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlPageComponent, "thl-page", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; }, {}, never, ["[thlPageActions]", "*"], true, never>;
1637
+ }
1638
+ declare class ThlAuthLayoutComponent {
1639
+ readonly cfg: ThlConfigService;
1640
+ readonly title: _angular_core.InputSignal<string | undefined>;
1641
+ readonly avatar: _angular_core.InputSignal<string | undefined>;
1642
+ readonly b: (e?: string) => string;
1643
+ name(l: string): string;
1644
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlAuthLayoutComponent, never>;
1645
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlAuthLayoutComponent, "thl-auth-layout", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[thlAuthFooter]"], true, never>;
1646
+ }
1647
+ declare class ThlErrorLayoutComponent {
1648
+ private readonly cfg;
1649
+ readonly code: _angular_core.InputSignal<number>;
1650
+ readonly title: _angular_core.InputSignal<string | undefined>;
1651
+ readonly text: _angular_core.InputSignal<string | undefined>;
1652
+ readonly homeHref: _angular_core.InputSignal<string>;
1653
+ readonly known: _angular_core.Signal<boolean>;
1654
+ readonly year: number;
1655
+ readonly b: (e?: string) => string;
1656
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThlErrorLayoutComponent, never>;
1657
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThlErrorLayoutComponent, "thl-error-layout", never, { "code": { "alias": "code"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "homeHref": { "alias": "homeHref"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1658
+ }
1659
+
1660
+ /** Every standalone component/directive/pipe — `imports: [THL_UI]` for convenience. */
1661
+ declare const THL_UI: readonly [typeof ThlTranslatePipe, typeof ThlBemPipe, typeof ThlIconComponent, ...any[]];
1662
+
1663
+ export { THL_CONFIG, THL_UI, ThlActivityFeedComponent, ThlAlertComponent, ThlAppLayoutComponent, ThlAuthLayoutComponent, ThlAvatarComponent, ThlBadgeComponent, ThlBarChartComponent, ThlBemPipe, ThlBreadcrumbComponent, ThlButtonComponent, ThlButtonGroupComponent, ThlCalendarComponent, ThlCalendarGridComponent, ThlCardActionsDirective, ThlCardComponent, ThlCarouselComponent, ThlCellDirective, ThlChatComponent, ThlCheckboxComponent, ThlCheckboxGroupComponent, ThlColorBoxComponent, ThlColorPickerComponent, ThlConfigService, ThlConfirmHostComponent, ThlDataTableComponent, ThlDatePickerComponent, ThlDateRangePickerComponent, ThlDrawerComponent, ThlDropdownComponent, ThlEditorComponent, ThlErrorLayoutComponent, ThlFieldComponent, ThlGalleryComponent, ThlHorizontalTimelineComponent, ThlI18nService, ThlIconComponent, ThlInfoBoxComponent, ThlInputDirective, ThlInputGroupComponent, ThlLabelComponent, ThlLineChartComponent, ThlListComponent, ThlMenuLinkDirective, ThlModalComponent, ThlModalService, ThlNumberInputComponent, ThlPageComponent, ThlPaginationComponent, ThlPanelComponent, ThlPieChartComponent, ThlPopoverComponent, ThlPricingTableComponent, ThlProfileCardComponent, ThlProgressCircleComponent, ThlProgressComponent, ThlRadioGroupComponent, ThlRibbonComponent, ThlSelectComponent, ThlSettingsPanelComponent, ThlSideMenuComponent, ThlSliderComponent, ThlSparklineComponent, ThlSpinnerComponent, ThlStatBoxComponent, ThlStatsRowComponent, ThlStepsComponent, ThlSwitchComponent, ThlTabPanelDirective, ThlTableDirective, ThlTabsComponent, ThlTimePickerComponent, ThlTimelineComponent, ThlToastService, ThlToasterComponent, ThlTodoListComponent, ThlTooltipComponent, ThlTopbarMessagesComponent, ThlTranslatePipe, ThlUploadComponent, ThlUserCardComponent, ThlWeatherComponent, ThlWellComponent, provideThlUI, storeSignal, thlValidators };
1664
+ export type { CalendarEvent, ConfirmOptions, DropdownItem, PricingPlanData, ThlLayoutUser, ThlTopbarNotification };
1665
+ //# sourceMappingURL=thl-ui-angular.d.ts.map