@momentumcms/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3284 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy, TemplateRef, InjectionToken, ComponentRef, Type, OnInit, Signal, Provider } from '@angular/core';
3
+ import { ConnectedPosition, OverlayRef } from '@angular/cdk/overlay';
4
+ import * as i1 from '@angular/aria/menu';
5
+ import { Menu, MenuItem, MenuBar } from '@angular/aria/menu';
6
+ import * as rxjs from 'rxjs';
7
+ import * as _momentumcms_ui from '@momentumcms/ui';
8
+ import * as i1$1 from '@angular/aria/tabs';
9
+ import { TabPanel } from '@angular/aria/tabs';
10
+ import * as i1$2 from '@angular/aria/accordion';
11
+ import { AccordionTrigger as AccordionTrigger$1, AccordionPanel } from '@angular/aria/accordion';
12
+ import * as i1$3 from '@angular/aria/grid';
13
+ import * as i1$4 from '@angular/aria/listbox';
14
+ import * as i1$5 from '@angular/aria/toolbar';
15
+ import { Toolbar as Toolbar$1, ToolbarWidget as ToolbarWidget$1, ToolbarWidgetGroup as ToolbarWidgetGroup$1 } from '@angular/aria/toolbar';
16
+ import * as i1$6 from '@angular/aria/tree';
17
+ import { Tree as Tree$1, TreeItem as TreeItem$1, TreeItemGroup } from '@angular/aria/tree';
18
+
19
+ type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';
20
+
21
+ /**
22
+ * Badge component for status indicators, counts, and labels.
23
+ *
24
+ * Usage:
25
+ * ```html
26
+ * <mcms-badge>Default</mcms-badge>
27
+ * <mcms-badge variant="success">Active</mcms-badge>
28
+ * <mcms-badge variant="destructive">Error</mcms-badge>
29
+ * <mcms-badge variant="warning">Pending</mcms-badge>
30
+ * ```
31
+ */
32
+ declare class Badge {
33
+ readonly variant: _angular_core.InputSignal<BadgeVariant>;
34
+ readonly class: _angular_core.InputSignal<string>;
35
+ /** Accessible label for screen reader override. */
36
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
37
+ readonly hostClass: _angular_core.Signal<string>;
38
+ readonly variantBg: _angular_core.Signal<string>;
39
+ readonly variantColor: _angular_core.Signal<string>;
40
+ readonly variantBorder: _angular_core.Signal<string>;
41
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Badge, never>;
42
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Badge, "mcms-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
43
+ }
44
+
45
+ /**
46
+ * Label component for form fields.
47
+ *
48
+ * Usage:
49
+ * ```html
50
+ * <mcms-label for="email" [required]="true">Email Address</mcms-label>
51
+ * <mcms-input id="email" />
52
+ * ```
53
+ */
54
+ declare class Label {
55
+ readonly for: _angular_core.InputSignal<string | undefined>;
56
+ readonly required: _angular_core.InputSignal<boolean>;
57
+ readonly disabled: _angular_core.InputSignal<boolean>;
58
+ readonly class: _angular_core.InputSignal<string>;
59
+ private readonly baseClasses;
60
+ readonly hostClasses: _angular_core.Signal<string>;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Label, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Label, "mcms-label", never, { "for": { "alias": "for"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
63
+ }
64
+
65
+ type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link';
66
+ type ButtonSize = 'sm' | 'md' | 'lg' | 'icon';
67
+
68
+ /**
69
+ * Button component with multiple variants and sizes.
70
+ *
71
+ * Usage:
72
+ * ```html
73
+ * <button mcms-button>Default</button>
74
+ * <button mcms-button variant="destructive">Delete</button>
75
+ * <button mcms-button variant="outline" size="sm">Small</button>
76
+ * <a mcms-button [disabled]="true">Disabled Link</a>
77
+ * <button mcms-button [loading]="true">Saving...</button>
78
+ * <button mcms-button size="icon" ariaLabel="Settings"><svg>...</svg></button>
79
+ * ```
80
+ */
81
+ declare class Button {
82
+ private readonly el;
83
+ /** Whether the host element is an anchor tag (determined once at construction). */
84
+ private readonly isAnchor;
85
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
86
+ readonly size: _angular_core.InputSignal<ButtonSize>;
87
+ readonly disabled: _angular_core.InputSignal<boolean>;
88
+ readonly loading: _angular_core.InputSignal<boolean>;
89
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
90
+ readonly class: _angular_core.InputSignal<string>;
91
+ constructor();
92
+ /** Whether the button is effectively disabled (disabled or loading). */
93
+ readonly isEffectivelyDisabled: _angular_core.Signal<boolean>;
94
+ /**
95
+ * Native disabled attribute — only applied to `<button>` elements.
96
+ * `<a>` elements don't support `disabled`; they use `aria-disabled` instead.
97
+ */
98
+ readonly isNativeDisabled: _angular_core.Signal<true | null>;
99
+ readonly sizeHeight: _angular_core.Signal<"2.25rem" | "2.5rem" | "2.75rem">;
100
+ readonly sizePadding: _angular_core.Signal<"0 0.75rem" | "0.5rem 1rem" | "0 2rem" | "0">;
101
+ readonly sizeWidth: _angular_core.Signal<"2.5rem" | null>;
102
+ readonly variantBg: _angular_core.Signal<"hsl(var(--mcms-primary))" | "hsl(var(--mcms-secondary))" | "hsl(var(--mcms-destructive))" | "transparent" | "hsl(var(--mcms-background))">;
103
+ readonly variantColor: _angular_core.Signal<"hsl(var(--mcms-primary))" | "hsl(var(--mcms-primary-foreground))" | "hsl(var(--mcms-secondary-foreground))" | "hsl(var(--mcms-destructive-foreground))" | "hsl(var(--mcms-foreground))">;
104
+ readonly variantHoverBg: _angular_core.Signal<"transparent" | "hsl(var(--mcms-primary) / 0.9)" | "hsl(var(--mcms-secondary) / 0.8)" | "hsl(var(--mcms-destructive) / 0.9)" | "hsl(var(--mcms-accent))">;
105
+ readonly variantBorder: _angular_core.Signal<"transparent" | "hsl(var(--mcms-border))">;
106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Button, never>;
107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Button, "button[mcms-button], a[mcms-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
108
+ }
109
+
110
+ /**
111
+ * Validation error from Signal Forms
112
+ */
113
+ interface ValidationError {
114
+ kind: string;
115
+ message?: string;
116
+ [key: string]: unknown;
117
+ }
118
+ type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
119
+
120
+ /**
121
+ * Text input component compatible with Angular Signal Forms.
122
+ *
123
+ * Implements FormValueControl<string> interface for use with [formField] directive.
124
+ *
125
+ * Usage:
126
+ * ```html
127
+ * <mcms-input [formField]="myForm.email" type="email" placeholder="Enter email" />
128
+ * ```
129
+ */
130
+ declare class Input {
131
+ /** Two-way bound value - Signal Forms binds to this automatically */
132
+ readonly value: _angular_core.ModelSignal<string>;
133
+ /** Disabled state - Signal Forms passes this from field.disabled() */
134
+ readonly disabled: _angular_core.InputSignal<boolean>;
135
+ /** Validation errors - Signal Forms passes this from field.errors() */
136
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
137
+ /** Whether the field has been interacted with (set by [formField] directive) */
138
+ readonly touched: _angular_core.InputSignal<boolean>;
139
+ /** Whether the field is invalid (set by [formField] directive) */
140
+ readonly invalid: _angular_core.InputSignal<boolean>;
141
+ /** Whether the field is readonly (set by [formField] directive) */
142
+ readonly readonly: _angular_core.InputSignal<boolean>;
143
+ /** Whether the field is required (set by [formField] directive) */
144
+ readonly required: _angular_core.InputSignal<boolean>;
145
+ readonly type: _angular_core.InputSignal<InputType>;
146
+ readonly id: _angular_core.InputSignal<string>;
147
+ readonly name: _angular_core.InputSignal<string>;
148
+ readonly placeholder: _angular_core.InputSignal<string>;
149
+ readonly autocomplete: _angular_core.InputSignal<string | undefined>;
150
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
151
+ readonly min: _angular_core.InputSignal<number | undefined>;
152
+ readonly max: _angular_core.InputSignal<number | undefined>;
153
+ readonly step: _angular_core.InputSignal<number | undefined>;
154
+ /** Emitted when the input loses focus */
155
+ readonly blurred: _angular_core.OutputEmitterRef<void>;
156
+ readonly hasError: _angular_core.Signal<boolean>;
157
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Input, never>;
159
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Input, "mcms-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "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; }; }, { "value": "valueChange"; "blurred": "blurred"; }, never, never, true, never>;
160
+ }
161
+
162
+ /**
163
+ * Textarea component compatible with Angular Signal Forms.
164
+ *
165
+ * Implements FormValueControl<string> interface for use with [formField] directive.
166
+ *
167
+ * Usage:
168
+ * ```html
169
+ * <mcms-textarea [formField]="myForm.description" placeholder="Enter description" />
170
+ * ```
171
+ */
172
+ declare class Textarea {
173
+ readonly value: _angular_core.ModelSignal<string>;
174
+ readonly disabled: _angular_core.InputSignal<boolean>;
175
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
176
+ readonly touched: _angular_core.InputSignal<boolean>;
177
+ readonly invalid: _angular_core.InputSignal<boolean>;
178
+ readonly readonly: _angular_core.InputSignal<boolean>;
179
+ readonly required: _angular_core.InputSignal<boolean>;
180
+ readonly id: _angular_core.InputSignal<string>;
181
+ readonly name: _angular_core.InputSignal<string>;
182
+ readonly placeholder: _angular_core.InputSignal<string>;
183
+ readonly rows: _angular_core.InputSignal<number>;
184
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
185
+ /** Emitted when the textarea loses focus */
186
+ readonly blurred: _angular_core.OutputEmitterRef<void>;
187
+ readonly hasError: _angular_core.Signal<boolean>;
188
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
189
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Textarea, never>;
190
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Textarea, "mcms-textarea", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "blurred": "blurred"; }, never, never, true, never>;
191
+ }
192
+
193
+ /**
194
+ * Checkbox component compatible with Angular Signal Forms.
195
+ *
196
+ * Implements FormValueControl<boolean> interface for use with [formField] directive.
197
+ *
198
+ * Usage:
199
+ * ```html
200
+ * <mcms-checkbox [formField]="myForm.acceptTerms">Accept Terms</mcms-checkbox>
201
+ * ```
202
+ */
203
+ declare class Checkbox {
204
+ readonly value: _angular_core.ModelSignal<boolean>;
205
+ readonly disabled: _angular_core.InputSignal<boolean>;
206
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
207
+ readonly touched: _angular_core.InputSignal<boolean>;
208
+ readonly invalid: _angular_core.InputSignal<boolean>;
209
+ readonly readonly: _angular_core.InputSignal<boolean>;
210
+ readonly required: _angular_core.InputSignal<boolean>;
211
+ readonly id: _angular_core.InputSignal<string>;
212
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
213
+ /** Shows a horizontal dash instead of check mark (used for partial selections). */
214
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
215
+ /** Accessible label for the checkbox button (for use without visible label). */
216
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
217
+ readonly hasError: _angular_core.Signal<boolean>;
218
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
219
+ toggle(): void;
220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Checkbox, never>;
221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Checkbox, "mcms-checkbox", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["*"], true, never>;
222
+ }
223
+
224
+ /**
225
+ * Toggle switch component compatible with Angular Signal Forms.
226
+ *
227
+ * Implements FormValueControl<boolean> interface for use with [formField] directive.
228
+ *
229
+ * Usage:
230
+ * ```html
231
+ * <mcms-switch [formField]="myForm.enabled">Enable notifications</mcms-switch>
232
+ * ```
233
+ */
234
+ declare class Switch {
235
+ readonly value: _angular_core.ModelSignal<boolean>;
236
+ readonly disabled: _angular_core.InputSignal<boolean>;
237
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
238
+ readonly id: _angular_core.InputSignal<string>;
239
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
240
+ readonly hasLabel: _angular_core.InputSignal<boolean>;
241
+ readonly hasError: _angular_core.Signal<boolean>;
242
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
243
+ toggle(): void;
244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Switch, never>;
245
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Switch, "mcms-switch", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "hasLabel": { "alias": "hasLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["*"], true, never>;
246
+ }
247
+
248
+ interface SelectOption {
249
+ value: string;
250
+ label: string;
251
+ disabled?: boolean;
252
+ }
253
+
254
+ /**
255
+ * Select dropdown component compatible with Angular Signal Forms.
256
+ *
257
+ * Implements FormValueControl<string> interface for use with [formField] directive.
258
+ *
259
+ * Usage:
260
+ * ```html
261
+ * <mcms-select [formField]="myForm.status" [options]="statusOptions" placeholder="Select status" />
262
+ * ```
263
+ */
264
+ declare class Select {
265
+ readonly value: _angular_core.ModelSignal<string>;
266
+ readonly disabled: _angular_core.InputSignal<boolean>;
267
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
268
+ readonly touched: _angular_core.InputSignal<boolean>;
269
+ readonly invalid: _angular_core.InputSignal<boolean>;
270
+ readonly readonly: _angular_core.InputSignal<boolean>;
271
+ readonly required: _angular_core.InputSignal<boolean>;
272
+ /** Emitted when the select loses focus */
273
+ readonly blurred: _angular_core.OutputEmitterRef<void>;
274
+ readonly id: _angular_core.InputSignal<string>;
275
+ readonly name: _angular_core.InputSignal<string>;
276
+ readonly placeholder: _angular_core.InputSignal<string>;
277
+ readonly options: _angular_core.InputSignal<SelectOption[]>;
278
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
279
+ /** Accessible label for the select element. */
280
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
281
+ readonly hasError: _angular_core.Signal<boolean>;
282
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
283
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select, never>;
284
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select, "mcms-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "blurred": "blurred"; }, never, never, true, never>;
285
+ }
286
+
287
+ interface RadioOption {
288
+ value: string;
289
+ label: string;
290
+ disabled?: boolean;
291
+ }
292
+
293
+ /**
294
+ * Radio group component compatible with Angular Signal Forms.
295
+ *
296
+ * Implements FormValueControl<string> interface for use with [formField] directive.
297
+ *
298
+ * Usage:
299
+ * ```html
300
+ * <mcms-radio-group [formField]="myForm.role" [options]="roleOptions" />
301
+ * ```
302
+ */
303
+ declare class RadioGroup {
304
+ private readonly elementRef;
305
+ readonly value: _angular_core.ModelSignal<string>;
306
+ readonly disabled: _angular_core.InputSignal<boolean>;
307
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
308
+ readonly id: _angular_core.InputSignal<string>;
309
+ readonly name: _angular_core.InputSignal<string>;
310
+ readonly options: _angular_core.InputSignal<RadioOption[]>;
311
+ readonly describedBy: _angular_core.InputSignal<string | undefined>;
312
+ readonly required: _angular_core.InputSignal<boolean>;
313
+ readonly hasError: _angular_core.Signal<boolean>;
314
+ readonly ariaDescribedBy: _angular_core.Signal<string | null>;
315
+ /** Determines which option value should receive tabindex="0" (roving tabindex). */
316
+ protected readonly focusableValue: _angular_core.Signal<string>;
317
+ selectOption(optionValue: string): void;
318
+ protected onKeydown(event: KeyboardEvent): void;
319
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioGroup, never>;
320
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroup, "mcms-radio-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
321
+ }
322
+
323
+ /**
324
+ * Form field wrapper that combines label, input, and error display.
325
+ *
326
+ * Usage:
327
+ * ```html
328
+ * <mcms-form-field id="email" [required]="true" [errors]="loginForm.email().errors()">
329
+ * <span mcmsLabel>Email Address</span>
330
+ * <mcms-input [formField]="loginForm.email" />
331
+ * </mcms-form-field>
332
+ * ```
333
+ */
334
+ declare class McmsFormField {
335
+ readonly id: _angular_core.InputSignal<string>;
336
+ readonly required: _angular_core.InputSignal<boolean>;
337
+ readonly disabled: _angular_core.InputSignal<boolean>;
338
+ readonly errors: _angular_core.InputSignal<readonly ValidationError[]>;
339
+ readonly hint: _angular_core.InputSignal<string | undefined>;
340
+ readonly hasLabel: _angular_core.InputSignal<boolean>;
341
+ readonly errorId: _angular_core.Signal<string>;
342
+ readonly showError: _angular_core.Signal<boolean>;
343
+ readonly errorMessage: _angular_core.Signal<string | null>;
344
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<McmsFormField, never>;
345
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<McmsFormField, "mcms-form-field", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hasLabel": { "alias": "hasLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[mcmsLabel]", "*"], true, never>;
346
+ }
347
+
348
+ /**
349
+ * Card container component.
350
+ *
351
+ * Usage:
352
+ * ```html
353
+ * <mcms-card>
354
+ * <mcms-card-header>
355
+ * <mcms-card-title>Title</mcms-card-title>
356
+ * <mcms-card-description>Description</mcms-card-description>
357
+ * </mcms-card-header>
358
+ * <mcms-card-content>Content here</mcms-card-content>
359
+ * <mcms-card-footer>Footer</mcms-card-footer>
360
+ * </mcms-card>
361
+ * ```
362
+ */
363
+ declare class Card {
364
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Card, never>;
365
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Card, "mcms-card", never, {}, {}, never, ["*"], true, never>;
366
+ }
367
+
368
+ declare class CardHeader {
369
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardHeader, never>;
370
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardHeader, "mcms-card-header", never, {}, {}, never, ["*"], true, never>;
371
+ }
372
+
373
+ declare class CardTitle {
374
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardTitle, never>;
375
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardTitle, "mcms-card-title", never, {}, {}, never, ["*"], true, never>;
376
+ }
377
+
378
+ declare class CardDescription {
379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardDescription, never>;
380
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardDescription, "mcms-card-description", never, {}, {}, never, ["*"], true, never>;
381
+ }
382
+
383
+ declare class CardContent {
384
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardContent, never>;
385
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardContent, "mcms-card-content", never, {}, {}, never, ["*"], true, never>;
386
+ }
387
+
388
+ declare class CardFooter {
389
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardFooter, never>;
390
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardFooter, "mcms-card-footer", never, {}, {}, never, ["*"], true, never>;
391
+ }
392
+
393
+ type AlertVariant = 'default' | 'destructive' | 'success' | 'warning' | 'info';
394
+
395
+ /**
396
+ * Alert component for displaying important messages.
397
+ *
398
+ * Usage:
399
+ * ```html
400
+ * <mcms-alert>
401
+ * <mcms-alert-title>Heads up!</mcms-alert-title>
402
+ * <mcms-alert-description>
403
+ * You can add components to your app using the cli.
404
+ * </mcms-alert-description>
405
+ * </mcms-alert>
406
+ *
407
+ * <mcms-alert variant="destructive">
408
+ * <mcms-alert-title>Error</mcms-alert-title>
409
+ * <mcms-alert-description>Something went wrong.</mcms-alert-description>
410
+ * </mcms-alert>
411
+ * ```
412
+ */
413
+ declare class Alert {
414
+ readonly variant: _angular_core.InputSignal<AlertVariant>;
415
+ readonly class: _angular_core.InputSignal<string>;
416
+ readonly hostClass: _angular_core.Signal<string>;
417
+ readonly ariaLive: _angular_core.Signal<"assertive" | "polite">;
418
+ readonly variantBg: _angular_core.Signal<string>;
419
+ readonly variantBorder: _angular_core.Signal<string>;
420
+ readonly variantColor: _angular_core.Signal<string>;
421
+ readonly variantIconColor: _angular_core.Signal<string>;
422
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
423
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "mcms-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
424
+ }
425
+
426
+ /**
427
+ * Alert title component.
428
+ *
429
+ * Usage:
430
+ * ```html
431
+ * <mcms-alert-title>Important!</mcms-alert-title>
432
+ * ```
433
+ */
434
+ declare class AlertTitle {
435
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertTitle, never>;
436
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertTitle, "mcms-alert-title", never, {}, {}, never, ["*"], true, never>;
437
+ }
438
+
439
+ /**
440
+ * Alert description component.
441
+ *
442
+ * Usage:
443
+ * ```html
444
+ * <mcms-alert-description>
445
+ * This is a detailed description of the alert.
446
+ * </mcms-alert-description>
447
+ * ```
448
+ */
449
+ declare class AlertDescription {
450
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDescription, never>;
451
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDescription, "mcms-alert-description", never, {}, {}, never, ["*"], true, never>;
452
+ }
453
+
454
+ type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';
455
+ declare const TOOLTIP_POSITION_MAP: Record<TooltipPosition, ConnectedPosition[]>;
456
+
457
+ /**
458
+ * Tooltip trigger directive.
459
+ *
460
+ * Apply this directive to any element to show a tooltip on hover/focus.
461
+ *
462
+ * Usage:
463
+ * ```html
464
+ * <button [mcmsTooltip]="'Click to save'">Save</button>
465
+ * <button [mcmsTooltip]="'Delete item'" tooltipPosition="right">Delete</button>
466
+ * ```
467
+ */
468
+ declare class TooltipTrigger implements OnDestroy {
469
+ readonly mcmsTooltip: _angular_core.InputSignal<string>;
470
+ readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
471
+ readonly tooltipDelay: _angular_core.InputSignal<number>;
472
+ readonly tooltipDisabled: _angular_core.InputSignal<boolean>;
473
+ private readonly overlay;
474
+ private readonly elementRef;
475
+ private readonly viewContainerRef;
476
+ private readonly document;
477
+ private overlayRef;
478
+ private showTimeout;
479
+ private hideTimeout;
480
+ readonly isVisible: _angular_core.WritableSignal<boolean>;
481
+ readonly tooltipId: _angular_core.Signal<string | null>;
482
+ private readonly uniqueId;
483
+ private readonly disabledEffect;
484
+ onMouseEnter(): void;
485
+ onMouseLeave(): void;
486
+ onFocus(): void;
487
+ onBlur(): void;
488
+ ngOnDestroy(): void;
489
+ private scheduleShow;
490
+ private scheduleHide;
491
+ private cancelShow;
492
+ private cancelHide;
493
+ private show;
494
+ private hide;
495
+ private createOverlay;
496
+ private getPositionStrategy;
497
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipTrigger, never>;
498
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipTrigger, "[mcmsTooltip]", never, { "mcmsTooltip": { "alias": "mcmsTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; "isSignal": true; }; "tooltipDisabled": { "alias": "tooltipDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
499
+ }
500
+
501
+ /**
502
+ * Internal tooltip content component rendered via CDK portal.
503
+ */
504
+ declare class TooltipContent {
505
+ readonly content: _angular_core.InputSignal<string>;
506
+ readonly id: _angular_core.InputSignal<string>;
507
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipContent, never>;
508
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipContent, "mcms-tooltip-content", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
509
+ }
510
+
511
+ type PopoverSide = 'top' | 'right' | 'bottom' | 'left';
512
+ type PopoverAlign = 'start' | 'center' | 'end';
513
+
514
+ declare function getPopoverPositions(side: PopoverSide, align: PopoverAlign, offset: number): ConnectedPosition[];
515
+
516
+ /**
517
+ * Popover trigger directive.
518
+ *
519
+ * Usage:
520
+ * ```html
521
+ * <button [mcmsPopoverTrigger]="popoverContent">Open Popover</button>
522
+ *
523
+ * <ng-template #popoverContent>
524
+ * <mcms-popover-content>
525
+ * <p>Popover content here</p>
526
+ * </mcms-popover-content>
527
+ * </ng-template>
528
+ * ```
529
+ */
530
+ declare class PopoverTrigger implements OnDestroy {
531
+ readonly mcmsPopoverTrigger: _angular_core.InputSignal<TemplateRef<unknown>>;
532
+ readonly popoverSide: _angular_core.InputSignal<PopoverSide>;
533
+ readonly popoverAlign: _angular_core.InputSignal<PopoverAlign>;
534
+ readonly popoverOffset: _angular_core.InputSignal<number>;
535
+ readonly popoverDisabled: _angular_core.InputSignal<boolean>;
536
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
537
+ readonly opened: _angular_core.OutputEmitterRef<void>;
538
+ readonly closed: _angular_core.OutputEmitterRef<void>;
539
+ private readonly doc;
540
+ private readonly overlay;
541
+ private readonly elementRef;
542
+ private readonly viewContainerRef;
543
+ private overlayRef;
544
+ private readonly disabledEffect;
545
+ toggle(): void;
546
+ open(): void;
547
+ close(): void;
548
+ ngOnDestroy(): void;
549
+ private createOverlay;
550
+ private getPositionStrategy;
551
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTrigger, never>;
552
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTrigger, "[mcmsPopoverTrigger]", ["mcmsPopoverTrigger"], { "mcmsPopoverTrigger": { "alias": "mcmsPopoverTrigger"; "required": true; "isSignal": true; }; "popoverSide": { "alias": "popoverSide"; "required": false; "isSignal": true; }; "popoverAlign": { "alias": "popoverAlign"; "required": false; "isSignal": true; }; "popoverOffset": { "alias": "popoverOffset"; "required": false; "isSignal": true; }; "popoverDisabled": { "alias": "popoverDisabled"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
553
+ }
554
+
555
+ /**
556
+ * Popover content container component.
557
+ *
558
+ * Usage:
559
+ * ```html
560
+ * <mcms-popover-content>
561
+ * <p>Content goes here</p>
562
+ * </mcms-popover-content>
563
+ * ```
564
+ */
565
+ declare class PopoverContent {
566
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverContent, never>;
567
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverContent, "mcms-popover-content", never, {}, {}, never, ["*"], true, never>;
568
+ }
569
+
570
+ type DropdownMenuSide = 'top' | 'right' | 'bottom' | 'left';
571
+ type DropdownMenuAlign = 'start' | 'center' | 'end';
572
+
573
+ declare function getDropdownPositions(side: DropdownMenuSide, align: DropdownMenuAlign, offset: number): ConnectedPosition[];
574
+
575
+ /**
576
+ * Dropdown menu trigger directive.
577
+ *
578
+ * Usage:
579
+ * ```html
580
+ * <button [mcmsDropdownTrigger]="menuContent">Open Menu</button>
581
+ *
582
+ * <ng-template #menuContent>
583
+ * <mcms-dropdown-menu>
584
+ * <button mcms-dropdown-item>Item 1</button>
585
+ * <button mcms-dropdown-item>Item 2</button>
586
+ * </mcms-dropdown-menu>
587
+ * </ng-template>
588
+ * ```
589
+ */
590
+ declare class DropdownTrigger implements OnDestroy {
591
+ readonly mcmsDropdownTrigger: _angular_core.InputSignal<TemplateRef<unknown>>;
592
+ readonly dropdownSide: _angular_core.InputSignal<DropdownMenuSide>;
593
+ readonly dropdownAlign: _angular_core.InputSignal<DropdownMenuAlign>;
594
+ readonly dropdownOffset: _angular_core.InputSignal<number>;
595
+ readonly dropdownDisabled: _angular_core.InputSignal<boolean>;
596
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
597
+ readonly opened: _angular_core.OutputEmitterRef<void>;
598
+ readonly closed: _angular_core.OutputEmitterRef<void>;
599
+ private readonly overlay;
600
+ private readonly elementRef;
601
+ private readonly viewContainerRef;
602
+ private readonly document;
603
+ private overlayRef;
604
+ private readonly disabledEffect;
605
+ toggle(): void;
606
+ open(): void;
607
+ close(): void;
608
+ ngOnDestroy(): void;
609
+ private createOverlay;
610
+ private getPositionStrategy;
611
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownTrigger, never>;
612
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownTrigger, "[mcmsDropdownTrigger]", ["mcmsDropdownTrigger"], { "mcmsDropdownTrigger": { "alias": "mcmsDropdownTrigger"; "required": true; "isSignal": true; }; "dropdownSide": { "alias": "dropdownSide"; "required": false; "isSignal": true; }; "dropdownAlign": { "alias": "dropdownAlign"; "required": false; "isSignal": true; }; "dropdownOffset": { "alias": "dropdownOffset"; "required": false; "isSignal": true; }; "dropdownDisabled": { "alias": "dropdownDisabled"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
613
+ }
614
+
615
+ /**
616
+ * Dropdown menu container component.
617
+ *
618
+ * Uses @angular/aria/menu for keyboard navigation, typeahead search, and accessibility.
619
+ *
620
+ * Usage:
621
+ * ```html
622
+ * <mcms-dropdown-menu>
623
+ * <mcms-dropdown-label>Actions</mcms-dropdown-label>
624
+ * <button mcms-dropdown-item value="edit">Edit</button>
625
+ * <button mcms-dropdown-item value="duplicate">Duplicate</button>
626
+ * <mcms-dropdown-separator />
627
+ * <button mcms-dropdown-item value="delete">Delete</button>
628
+ * </mcms-dropdown-menu>
629
+ * ```
630
+ */
631
+ declare class DropdownMenu {
632
+ protected readonly menu: Menu<any>;
633
+ /** Whether the menu is disabled */
634
+ readonly disabled: _angular_core.InputSignal<boolean>;
635
+ /** Whether navigation wraps around */
636
+ readonly wrap: _angular_core.InputSignal<boolean>;
637
+ /** Typeahead delay in milliseconds */
638
+ readonly typeaheadDelay: _angular_core.InputSignal<number>;
639
+ /** Emits when an item is selected */
640
+ readonly itemSelected: _angular_core.OutputEmitterRef<string>;
641
+ /** Additional CSS classes */
642
+ readonly class: _angular_core.InputSignal<string>;
643
+ protected readonly hostClasses: _angular_core.Signal<string>;
644
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownMenu, never>;
645
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownMenu, "mcms-dropdown-menu", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; }, never, ["*"], true, [{ directive: typeof i1.Menu; inputs: { "disabled": "disabled"; "wrap": "wrap"; "typeaheadDelay": "typeaheadDelay"; }; outputs: {}; }]>;
646
+ }
647
+
648
+ /**
649
+ * Dropdown menu item component.
650
+ *
651
+ * Uses @angular/aria/menu MenuItem for keyboard navigation and accessibility.
652
+ *
653
+ * Usage:
654
+ * ```html
655
+ * <button mcms-dropdown-item value="edit">Edit</button>
656
+ * <button mcms-dropdown-item value="disabled" [disabled]="true">Disabled</button>
657
+ * <button mcms-dropdown-item value="search" shortcut="⌘K">Search</button>
658
+ * ```
659
+ */
660
+ declare class DropdownMenuItem {
661
+ protected readonly menuItem: MenuItem<any>;
662
+ /** The value of the menu item (required for @angular/aria) */
663
+ readonly value: _angular_core.InputSignal<string>;
664
+ /** Whether the menu item is disabled */
665
+ readonly disabled: _angular_core.InputSignal<boolean>;
666
+ /** Keyboard shortcut display text */
667
+ readonly shortcut: _angular_core.InputSignal<string | undefined>;
668
+ /** Emits when the item is selected */
669
+ readonly selected: _angular_core.OutputEmitterRef<void>;
670
+ /** Additional CSS classes */
671
+ readonly class: _angular_core.InputSignal<string>;
672
+ protected readonly hostClasses: _angular_core.Signal<string>;
673
+ onClick(event: Event): void;
674
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownMenuItem, never>;
675
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownMenuItem, "button[mcms-dropdown-item], a[mcms-dropdown-item]", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["*"], true, [{ directive: typeof i1.MenuItem; inputs: { "value": "value"; "disabled": "disabled"; "searchTerm": "searchTerm"; }; outputs: {}; }]>;
676
+ }
677
+
678
+ /**
679
+ * Dropdown menu separator component.
680
+ *
681
+ * Usage:
682
+ * ```html
683
+ * <mcms-dropdown-separator />
684
+ * ```
685
+ */
686
+ declare class DropdownSeparator {
687
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownSeparator, never>;
688
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownSeparator, "mcms-dropdown-separator", never, {}, {}, never, never, true, never>;
689
+ }
690
+
691
+ /**
692
+ * Dropdown menu label component.
693
+ *
694
+ * Usage:
695
+ * ```html
696
+ * <mcms-dropdown-label>Actions</mcms-dropdown-label>
697
+ * ```
698
+ */
699
+ declare class DropdownLabel {
700
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownLabel, never>;
701
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownLabel, "mcms-dropdown-label", never, {}, {}, never, ["*"], true, never>;
702
+ }
703
+
704
+ /**
705
+ * Configuration options for opening a dialog.
706
+ */
707
+ interface DialogConfig<D = unknown> {
708
+ /** Width of the dialog. Default: '28rem' */
709
+ width?: string;
710
+ /** Maximum width of the dialog. */
711
+ maxWidth?: string;
712
+ /** Minimum width of the dialog. */
713
+ minWidth?: string;
714
+ /** Whether clicking the backdrop closes the dialog. Default: true */
715
+ disableClose?: boolean;
716
+ /** Custom data to pass to the dialog component. */
717
+ data?: D;
718
+ /** Aria label for the dialog. */
719
+ ariaLabel?: string;
720
+ /** ID of the element that labels the dialog. */
721
+ ariaLabelledBy?: string;
722
+ /** ID of the element that describes the dialog. */
723
+ ariaDescribedBy?: string;
724
+ /** CSS class(es) to add to the overlay panel. */
725
+ panelClass?: string | string[];
726
+ }
727
+
728
+ /**
729
+ * Injection token for passing data to dialog components.
730
+ */
731
+ declare const DIALOG_DATA: InjectionToken<unknown>;
732
+
733
+ /**
734
+ * Reference to an opened dialog.
735
+ * Use this to close the dialog or subscribe to its lifecycle events.
736
+ */
737
+ declare class DialogRef<R = unknown> {
738
+ private readonly overlayRef;
739
+ private readonly _afterClosed;
740
+ private readonly _backdropClick;
741
+ /** Observable that emits when the dialog is closed. */
742
+ readonly afterClosed: rxjs.Observable<R | undefined>;
743
+ /** Observable that emits when the backdrop is clicked. */
744
+ readonly backdropClick: rxjs.Observable<void>;
745
+ /** The component instance inside the dialog. Set after creation. */
746
+ componentRef: ComponentRef<unknown> | null;
747
+ constructor(overlayRef: OverlayRef);
748
+ /**
749
+ * Close the dialog with an optional result.
750
+ */
751
+ close(result?: R): void;
752
+ /**
753
+ * Update the dialog's width.
754
+ */
755
+ updateSize(width?: string, height?: string): void;
756
+ }
757
+
758
+ /**
759
+ * Service for opening dialogs programmatically.
760
+ *
761
+ * Usage:
762
+ * ```typescript
763
+ * const dialogRef = this.dialog.open(MyDialogComponent, {
764
+ * data: { name: 'World' },
765
+ * width: '400px',
766
+ * });
767
+ *
768
+ * dialogRef.afterClosed.subscribe(result => {
769
+ * console.log('Dialog closed with:', result);
770
+ * });
771
+ * ```
772
+ */
773
+ declare class DialogService {
774
+ private readonly overlay;
775
+ private readonly injector;
776
+ private readonly document;
777
+ private openDialogs;
778
+ private overlayStylesInjected;
779
+ /**
780
+ * Open a dialog with the specified component.
781
+ */
782
+ open<T, D = unknown, R = unknown>(component: Type<T>, config?: DialogConfig<D>): DialogRef<R>;
783
+ /**
784
+ * Close all open dialogs.
785
+ */
786
+ closeAll(): void;
787
+ /**
788
+ * Ensure CDK overlay positioning styles are present.
789
+ * CDK may not inject its styles in all build configurations (e.g. SSR, esbuild).
790
+ */
791
+ private ensureOverlayStyles;
792
+ private getOverlayConfig;
793
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogService, never>;
794
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DialogService>;
795
+ }
796
+
797
+ /**
798
+ * Dialog container component.
799
+ *
800
+ * Usage:
801
+ * ```html
802
+ * <mcms-dialog>
803
+ * <mcms-dialog-header>
804
+ * <mcms-dialog-title>Dialog Title</mcms-dialog-title>
805
+ * <mcms-dialog-description>Optional description</mcms-dialog-description>
806
+ * </mcms-dialog-header>
807
+ * <mcms-dialog-content>
808
+ * Content goes here
809
+ * </mcms-dialog-content>
810
+ * <mcms-dialog-footer>
811
+ * <button mcms-button variant="outline" mcmsDialogClose>Cancel</button>
812
+ * <button mcms-button [mcmsDialogClose]="true">Confirm</button>
813
+ * </mcms-dialog-footer>
814
+ * </mcms-dialog>
815
+ * ```
816
+ */
817
+ declare class Dialog implements OnInit {
818
+ readonly class: _angular_core.InputSignal<string>;
819
+ readonly titleId: _angular_core.WritableSignal<string | null>;
820
+ readonly descriptionId: _angular_core.WritableSignal<string | null>;
821
+ readonly hostClass: _angular_core.Signal<string>;
822
+ private readonly document;
823
+ ngOnInit(): void;
824
+ registerTitle(id: string): void;
825
+ registerDescription(id: string): void;
826
+ private addBackdropStyles;
827
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Dialog, never>;
828
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "mcms-dialog", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
829
+ }
830
+
831
+ /**
832
+ * Dialog header component.
833
+ */
834
+ declare class DialogHeader {
835
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogHeader, never>;
836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogHeader, "mcms-dialog-header", never, {}, {}, never, ["*"], true, never>;
837
+ }
838
+
839
+ /**
840
+ * Dialog title component.
841
+ */
842
+ declare class DialogTitle implements OnInit {
843
+ readonly id: _angular_core.InputSignal<string>;
844
+ private readonly dialog;
845
+ ngOnInit(): void;
846
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogTitle, never>;
847
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogTitle, "mcms-dialog-title", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
848
+ }
849
+
850
+ /**
851
+ * Dialog description component.
852
+ */
853
+ declare class DialogDescription implements OnInit {
854
+ readonly id: _angular_core.InputSignal<string>;
855
+ private readonly dialog;
856
+ ngOnInit(): void;
857
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogDescription, never>;
858
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogDescription, "mcms-dialog-description", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
859
+ }
860
+
861
+ /**
862
+ * Dialog content component.
863
+ */
864
+ declare class DialogContent {
865
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogContent, never>;
866
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogContent, "mcms-dialog-content", never, {}, {}, never, ["*"], true, never>;
867
+ }
868
+
869
+ /**
870
+ * Dialog footer component.
871
+ */
872
+ declare class DialogFooter {
873
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogFooter, never>;
874
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogFooter, "mcms-dialog-footer", never, {}, {}, never, ["*"], true, never>;
875
+ }
876
+
877
+ /**
878
+ * Directive to close a dialog when clicked.
879
+ *
880
+ * Usage:
881
+ * ```html
882
+ * <button mcmsDialogClose>Cancel</button>
883
+ * <button [mcmsDialogClose]="'confirmed'">Confirm</button>
884
+ * ```
885
+ */
886
+ declare class DialogClose<R = unknown> {
887
+ /** Result to pass when closing the dialog. */
888
+ readonly mcmsDialogClose: _angular_core.InputSignal<R | undefined>;
889
+ private readonly dialogRef;
890
+ onClick(): void;
891
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogClose<any>, never>;
892
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DialogClose<any>, "[mcmsDialogClose]", never, { "mcmsDialogClose": { "alias": "mcmsDialogClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
893
+ }
894
+
895
+ type ToastVariant = 'default' | 'destructive' | 'success' | 'warning';
896
+ type ToastPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';
897
+ /**
898
+ * Configuration options for a toast notification.
899
+ */
900
+ interface ToastConfig {
901
+ /** Variant determines the visual style. Default: 'default' */
902
+ variant?: ToastVariant;
903
+ /** Duration in milliseconds. 0 = persistent. Default: 5000 */
904
+ duration?: number;
905
+ /** Optional action button. */
906
+ action?: {
907
+ label: string;
908
+ onClick: () => void;
909
+ };
910
+ /** Whether the toast can be dismissed manually. Default: true */
911
+ dismissible?: boolean;
912
+ }
913
+ /**
914
+ * Internal toast data structure.
915
+ */
916
+ interface Toast {
917
+ id: string;
918
+ title: string;
919
+ description?: string;
920
+ variant: ToastVariant;
921
+ duration: number;
922
+ action?: ToastConfig['action'];
923
+ dismissible: boolean;
924
+ createdAt: number;
925
+ }
926
+
927
+ /**
928
+ * Service for showing toast notifications.
929
+ *
930
+ * Usage:
931
+ * ```typescript
932
+ * // In your component
933
+ * private toast = inject(ToastService);
934
+ *
935
+ * // Show a toast
936
+ * this.toast.show('Changes saved', 'Your changes have been saved successfully.');
937
+ *
938
+ * // Show with variant
939
+ * this.toast.success('Success!', 'Operation completed.');
940
+ * this.toast.error('Error', 'Something went wrong.');
941
+ * this.toast.warning('Warning', 'Please review your input.');
942
+ *
943
+ * // Show with action
944
+ * this.toast.show('File deleted', 'The file has been removed.', {
945
+ * action: {
946
+ * label: 'Undo',
947
+ * onClick: () => this.undoDelete(),
948
+ * },
949
+ * });
950
+ * ```
951
+ *
952
+ * Remember to add <mcms-toast-container /> to your app root.
953
+ */
954
+ declare class ToastService {
955
+ private readonly document;
956
+ private readonly liveAnnouncer;
957
+ /** Current toast position. */
958
+ readonly position: _angular_core.WritableSignal<ToastPosition>;
959
+ /** Maximum number of visible toasts. Default: 5 */
960
+ readonly maxToasts: _angular_core.WritableSignal<number>;
961
+ /** Active toasts. */
962
+ readonly toasts: _angular_core.WritableSignal<Toast[]>;
963
+ /**
964
+ * Show a toast notification.
965
+ * @returns The toast ID for programmatic dismissal.
966
+ */
967
+ show(title: string, description?: string, config?: ToastConfig): string;
968
+ /**
969
+ * Show a success toast.
970
+ */
971
+ success(title: string, description?: string): string;
972
+ /**
973
+ * Show an error toast.
974
+ */
975
+ error(title: string, description?: string): string;
976
+ /**
977
+ * Show a warning toast.
978
+ */
979
+ warning(title: string, description?: string): string;
980
+ /**
981
+ * Dismiss a specific toast by ID.
982
+ */
983
+ dismiss(id: string): void;
984
+ /**
985
+ * Dismiss all toasts.
986
+ */
987
+ dismissAll(): void;
988
+ /**
989
+ * Set the toast position.
990
+ */
991
+ setPosition(position: ToastPosition): void;
992
+ /**
993
+ * Set the maximum number of visible toasts.
994
+ */
995
+ setMaxToasts(max: number): void;
996
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
997
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
998
+ }
999
+
1000
+ /**
1001
+ * Individual toast component.
1002
+ */
1003
+ declare class ToastComponent {
1004
+ readonly toast: _angular_core.InputSignal<Toast>;
1005
+ readonly dismissed: _angular_core.OutputEmitterRef<void>;
1006
+ readonly variantBg: _angular_core.Signal<string>;
1007
+ readonly variantBorder: _angular_core.Signal<string>;
1008
+ readonly variantColor: _angular_core.Signal<string>;
1009
+ dismiss(): void;
1010
+ onAction(): void;
1011
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
1012
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "mcms-toast", never, { "toast": { "alias": "toast"; "required": true; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, never, true, never>;
1013
+ }
1014
+
1015
+ /**
1016
+ * Toast container component.
1017
+ * Add this to your app root to enable toast notifications.
1018
+ *
1019
+ * Usage:
1020
+ * ```html
1021
+ * <!-- In app.component.html -->
1022
+ * <router-outlet />
1023
+ * <mcms-toast-container />
1024
+ * ```
1025
+ */
1026
+ declare class ToastContainer {
1027
+ private readonly toastService;
1028
+ readonly toasts: _angular_core.WritableSignal<_momentumcms_ui.Toast[]>;
1029
+ readonly position: _angular_core.WritableSignal<_momentumcms_ui.ToastPosition>;
1030
+ readonly hostClass: _angular_core.Signal<_momentumcms_ui.ToastPosition>;
1031
+ onDismiss(id: string): void;
1032
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastContainer, never>;
1033
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastContainer, "mcms-toast-container", never, {}, {}, never, never, true, never>;
1034
+ }
1035
+
1036
+ /**
1037
+ * Toast title component (optional, for custom content).
1038
+ */
1039
+ declare class ToastTitle {
1040
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastTitle, never>;
1041
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastTitle, "mcms-toast-title", never, {}, {}, never, ["*"], true, never>;
1042
+ }
1043
+
1044
+ /**
1045
+ * Toast description component (optional, for custom content).
1046
+ */
1047
+ declare class ToastDescription {
1048
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastDescription, never>;
1049
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastDescription, "mcms-toast-description", never, {}, {}, never, ["*"], true, never>;
1050
+ }
1051
+
1052
+ type ConfirmationIcon = 'warning' | 'danger' | 'info' | 'question';
1053
+ type ConfirmationVariant = 'default' | 'destructive';
1054
+ /**
1055
+ * Configuration for a confirmation dialog.
1056
+ */
1057
+ interface ConfirmationConfig {
1058
+ /** Dialog title. */
1059
+ title: string;
1060
+ /** Optional description text. */
1061
+ description?: string;
1062
+ /** Text for the confirm button. Default: 'Confirm' */
1063
+ confirmText?: string;
1064
+ /** Text for the cancel button. Default: 'Cancel' */
1065
+ cancelText?: string;
1066
+ /** Button variant for the confirm button. Default: 'default' */
1067
+ variant?: ConfirmationVariant;
1068
+ /** Optional icon to show. */
1069
+ icon?: ConfirmationIcon;
1070
+ }
1071
+
1072
+ /**
1073
+ * Internal confirmation dialog component.
1074
+ */
1075
+ declare class ConfirmationDialogComponent {
1076
+ readonly config: ConfirmationConfig;
1077
+ private readonly dialogRef;
1078
+ readonly confirmVariant: _angular_core.Signal<"destructive" | "primary">;
1079
+ readonly iconContainerClass: _angular_core.Signal<"flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto" | "flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto bg-warning/10 text-warning" | "flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto bg-destructive/10 text-destructive" | "flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto bg-info/10 text-info" | "flex items-center justify-center w-12 h-12 rounded-full mb-4 mx-auto bg-primary/10 text-primary">;
1080
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
1081
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationDialogComponent, "mcms-confirmation-dialog", never, {}, {}, never, never, true, never>;
1082
+ }
1083
+
1084
+ /**
1085
+ * Service for showing confirmation dialogs.
1086
+ *
1087
+ * Usage:
1088
+ * ```typescript
1089
+ * // In your component
1090
+ * private confirmation = inject(ConfirmationService);
1091
+ *
1092
+ * async onDelete(): Promise<void> {
1093
+ * const confirmed = await this.confirmation.confirm({
1094
+ * title: 'Delete item?',
1095
+ * description: 'This action cannot be undone.',
1096
+ * confirmText: 'Delete',
1097
+ * variant: 'destructive',
1098
+ * });
1099
+ *
1100
+ * if (confirmed) {
1101
+ * // Proceed with deletion
1102
+ * }
1103
+ * }
1104
+ *
1105
+ * // Or use the convenience method
1106
+ * async onDeleteItem(): Promise<void> {
1107
+ * const confirmed = await this.confirmation.delete('this item');
1108
+ * if (confirmed) {
1109
+ * // Proceed
1110
+ * }
1111
+ * }
1112
+ * ```
1113
+ */
1114
+ declare class ConfirmationService {
1115
+ private readonly dialog;
1116
+ /**
1117
+ * Show a confirmation dialog.
1118
+ * @returns Promise that resolves to true if confirmed, false if cancelled.
1119
+ */
1120
+ confirm(config: ConfirmationConfig): Promise<boolean>;
1121
+ /**
1122
+ * Show a delete confirmation dialog.
1123
+ * @param itemName The name of the item being deleted.
1124
+ */
1125
+ delete(itemName: string): Promise<boolean>;
1126
+ /**
1127
+ * Show a discard changes confirmation dialog.
1128
+ */
1129
+ discardChanges(): Promise<boolean>;
1130
+ /**
1131
+ * Show a logout confirmation dialog.
1132
+ */
1133
+ logout(): Promise<boolean>;
1134
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationService, never>;
1135
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConfirmationService>;
1136
+ }
1137
+
1138
+ /**
1139
+ * A visual separator for dividing content.
1140
+ *
1141
+ * @example
1142
+ * ```html
1143
+ * <mcms-separator />
1144
+ * <mcms-separator orientation="vertical" />
1145
+ * <mcms-separator [decorative]="false" />
1146
+ * ```
1147
+ */
1148
+ declare class Separator {
1149
+ /** Orientation of the separator. */
1150
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
1151
+ /** Whether the separator is purely decorative (no semantic meaning). */
1152
+ readonly decorative: _angular_core.InputSignal<boolean>;
1153
+ /** Additional CSS classes. */
1154
+ readonly class: _angular_core.InputSignal<string>;
1155
+ readonly role: _angular_core.Signal<"separator" | "none">;
1156
+ readonly ariaOrientation: _angular_core.Signal<"horizontal" | "vertical" | undefined>;
1157
+ readonly hostClasses: _angular_core.Signal<string>;
1158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Separator, never>;
1159
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Separator, "mcms-separator", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1160
+ }
1161
+
1162
+ type SpinnerSize = 'sm' | 'md' | 'lg';
1163
+ declare const SPINNER_SIZES: Record<SpinnerSize, {
1164
+ width: number;
1165
+ height: number;
1166
+ stroke: number;
1167
+ }>;
1168
+
1169
+ /**
1170
+ * A loading spinner indicator.
1171
+ *
1172
+ * @example
1173
+ * ```html
1174
+ * <mcms-spinner />
1175
+ * <mcms-spinner size="sm" />
1176
+ * <mcms-spinner size="lg" />
1177
+ * ```
1178
+ */
1179
+ declare class Spinner {
1180
+ /** Size of the spinner. */
1181
+ readonly size: _angular_core.InputSignal<SpinnerSize>;
1182
+ /** Accessible label for screen readers. */
1183
+ readonly label: _angular_core.InputSignal<string>;
1184
+ /** Additional CSS classes. */
1185
+ readonly class: _angular_core.InputSignal<string>;
1186
+ readonly dimensions: _angular_core.Signal<{
1187
+ width: number;
1188
+ height: number;
1189
+ stroke: number;
1190
+ }>;
1191
+ readonly hostClasses: _angular_core.Signal<string>;
1192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Spinner, never>;
1193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Spinner, "mcms-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1194
+ }
1195
+
1196
+ /**
1197
+ * A skeleton loading placeholder.
1198
+ *
1199
+ * @example
1200
+ * ```html
1201
+ * <mcms-skeleton class="h-4 w-[200px]" />
1202
+ * <mcms-skeleton class="h-12 w-12 rounded-full" />
1203
+ * <mcms-skeleton class="h-32 w-full" />
1204
+ * ```
1205
+ */
1206
+ declare class Skeleton {
1207
+ /** Additional CSS classes for sizing and shape. */
1208
+ readonly class: _angular_core.InputSignal<string>;
1209
+ readonly hostClasses: _angular_core.Signal<string>;
1210
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Skeleton, never>;
1211
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Skeleton, "mcms-skeleton", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1212
+ }
1213
+
1214
+ /**
1215
+ * A progress bar indicator.
1216
+ *
1217
+ * @example
1218
+ * ```html
1219
+ * <mcms-progress [value]="50" />
1220
+ * <mcms-progress [value]="75" [max]="100" />
1221
+ * <mcms-progress /> <!-- indeterminate -->
1222
+ * ```
1223
+ */
1224
+ declare class Progress {
1225
+ /** Current progress value. Null for indeterminate state. */
1226
+ readonly value: _angular_core.InputSignal<number | null>;
1227
+ /** Maximum value. */
1228
+ readonly max: _angular_core.InputSignal<number>;
1229
+ /** Additional CSS classes. */
1230
+ readonly class: _angular_core.InputSignal<string>;
1231
+ readonly isIndeterminate: _angular_core.Signal<boolean>;
1232
+ readonly progressWidth: _angular_core.Signal<string>;
1233
+ readonly hostClasses: _angular_core.Signal<string>;
1234
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Progress, never>;
1235
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Progress, "mcms-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1236
+ }
1237
+
1238
+ /**
1239
+ * A container that maintains a specific aspect ratio.
1240
+ *
1241
+ * @example
1242
+ * ```html
1243
+ * <mcms-aspect-ratio [ratio]="16 / 9">
1244
+ * <img src="image.jpg" class="object-cover w-full h-full" />
1245
+ * </mcms-aspect-ratio>
1246
+ *
1247
+ * <mcms-aspect-ratio [ratio]="1">
1248
+ * <!-- Square content -->
1249
+ * </mcms-aspect-ratio>
1250
+ * ```
1251
+ */
1252
+ declare class AspectRatio {
1253
+ /** Aspect ratio as width / height (e.g., 16/9, 4/3, 1). */
1254
+ readonly ratio: _angular_core.InputSignal<number>;
1255
+ /** Additional CSS classes. */
1256
+ readonly class: _angular_core.InputSignal<string>;
1257
+ readonly hostClasses: _angular_core.Signal<string>;
1258
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AspectRatio, never>;
1259
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AspectRatio, "mcms-aspect-ratio", never, { "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1260
+ }
1261
+
1262
+ type AvatarSize = 'sm' | 'md' | 'lg';
1263
+ declare const AVATAR_SIZE_CLASSES: Record<AvatarSize, string>;
1264
+
1265
+ /**
1266
+ * Avatar container component.
1267
+ *
1268
+ * @example
1269
+ * ```html
1270
+ * <mcms-avatar>
1271
+ * <mcms-avatar-image src="user.jpg" alt="User" />
1272
+ * <mcms-avatar-fallback>JD</mcms-avatar-fallback>
1273
+ * </mcms-avatar>
1274
+ * ```
1275
+ */
1276
+ declare class Avatar {
1277
+ /** Size of the avatar. */
1278
+ readonly size: _angular_core.InputSignal<AvatarSize>;
1279
+ /** Additional CSS classes. */
1280
+ readonly class: _angular_core.InputSignal<string>;
1281
+ /** Accessible label for the avatar. */
1282
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
1283
+ /** Internal state for image loading status. */
1284
+ readonly imageLoaded: _angular_core.WritableSignal<boolean>;
1285
+ /** Set image loaded state (called by AvatarImage). */
1286
+ setImageLoaded(loaded: boolean): void;
1287
+ readonly hostClasses: _angular_core.Signal<string>;
1288
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Avatar, never>;
1289
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Avatar, "mcms-avatar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1290
+ }
1291
+
1292
+ /**
1293
+ * Avatar image component.
1294
+ *
1295
+ * @example
1296
+ * ```html
1297
+ * <mcms-avatar>
1298
+ * <mcms-avatar-image src="user.jpg" alt="User name" />
1299
+ * <mcms-avatar-fallback>JD</mcms-avatar-fallback>
1300
+ * </mcms-avatar>
1301
+ * ```
1302
+ */
1303
+ declare class AvatarImage {
1304
+ private readonly avatar;
1305
+ /** Image source URL. */
1306
+ readonly src: _angular_core.InputSignal<string>;
1307
+ /** Image alt text. */
1308
+ readonly alt: _angular_core.InputSignal<string>;
1309
+ /** Emitted when image fails to load. */
1310
+ readonly loadError: _angular_core.OutputEmitterRef<void>;
1311
+ readonly hostClasses: _angular_core.Signal<"block" | "hidden">;
1312
+ onLoad(): void;
1313
+ onError(): void;
1314
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarImage, never>;
1315
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarImage, "mcms-avatar-image", never, { "src": { "alias": "src"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, { "loadError": "loadError"; }, never, never, true, never>;
1316
+ }
1317
+
1318
+ /**
1319
+ * Avatar fallback component shown when image fails to load.
1320
+ *
1321
+ * @example
1322
+ * ```html
1323
+ * <mcms-avatar>
1324
+ * <mcms-avatar-image src="user.jpg" alt="User" />
1325
+ * <mcms-avatar-fallback>JD</mcms-avatar-fallback>
1326
+ * </mcms-avatar>
1327
+ * ```
1328
+ */
1329
+ declare class AvatarFallback {
1330
+ private readonly avatar;
1331
+ private readonly document;
1332
+ /** Delay in milliseconds before showing fallback. */
1333
+ readonly delayMs: _angular_core.InputSignal<number>;
1334
+ /** Additional CSS classes. */
1335
+ readonly class: _angular_core.InputSignal<string>;
1336
+ private readonly canRender;
1337
+ constructor();
1338
+ readonly hostClasses: _angular_core.Signal<string>;
1339
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarFallback, never>;
1340
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarFallback, "mcms-avatar-fallback", never, { "delayMs": { "alias": "delayMs"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1341
+ }
1342
+
1343
+ /**
1344
+ * Breadcrumbs navigation container.
1345
+ *
1346
+ * @example
1347
+ * ```html
1348
+ * <mcms-breadcrumbs>
1349
+ * <mcms-breadcrumb-item href="/">Home</mcms-breadcrumb-item>
1350
+ * <mcms-breadcrumb-separator />
1351
+ * <mcms-breadcrumb-item href="/products">Products</mcms-breadcrumb-item>
1352
+ * <mcms-breadcrumb-separator />
1353
+ * <mcms-breadcrumb-item [current]="true">Details</mcms-breadcrumb-item>
1354
+ * </mcms-breadcrumbs>
1355
+ * ```
1356
+ */
1357
+ declare class Breadcrumbs {
1358
+ /** Additional CSS classes. */
1359
+ readonly class: _angular_core.InputSignal<string>;
1360
+ readonly hostClasses: _angular_core.Signal<string>;
1361
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Breadcrumbs, never>;
1362
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Breadcrumbs, "mcms-breadcrumbs", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1363
+ }
1364
+
1365
+ /**
1366
+ * Individual breadcrumb item.
1367
+ *
1368
+ * @example
1369
+ * ```html
1370
+ * <mcms-breadcrumb-item href="/products">Products</mcms-breadcrumb-item>
1371
+ * <mcms-breadcrumb-item [current]="true">Details</mcms-breadcrumb-item>
1372
+ * ```
1373
+ */
1374
+ declare class BreadcrumbItem {
1375
+ /** Link href for navigation (uses routerLink for SPA navigation). */
1376
+ readonly href: _angular_core.InputSignal<string | undefined>;
1377
+ /** Whether this is the current/active page. */
1378
+ readonly current: _angular_core.InputSignal<boolean>;
1379
+ /** Additional CSS classes. */
1380
+ readonly class: _angular_core.InputSignal<string>;
1381
+ readonly hostClasses: _angular_core.Signal<string>;
1382
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbItem, never>;
1383
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbItem, "mcms-breadcrumb-item", never, { "href": { "alias": "href"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1384
+ }
1385
+
1386
+ /**
1387
+ * Breadcrumb separator between items.
1388
+ *
1389
+ * @example
1390
+ * ```html
1391
+ * <mcms-breadcrumb-separator />
1392
+ * <mcms-breadcrumb-separator>/</mcms-breadcrumb-separator>
1393
+ * ```
1394
+ */
1395
+ declare class BreadcrumbSeparator {
1396
+ /** Additional CSS classes. */
1397
+ readonly class: _angular_core.InputSignal<string>;
1398
+ readonly hostClasses: _angular_core.Signal<string>;
1399
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbSeparator, never>;
1400
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbSeparator, "mcms-breadcrumb-separator", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1401
+ }
1402
+
1403
+ /**
1404
+ * Sidebar item configuration for programmatic usage.
1405
+ */
1406
+ interface SidebarNavItemConfig {
1407
+ /** Display label */
1408
+ label: string;
1409
+ /** Navigation URL */
1410
+ href?: string;
1411
+ /** Icon name or SVG */
1412
+ icon?: string;
1413
+ /** Badge content (text or number) */
1414
+ badge?: string | number;
1415
+ /** Whether the item is currently active */
1416
+ active?: boolean;
1417
+ /** Whether the item is disabled */
1418
+ disabled?: boolean;
1419
+ /** Child items for nested navigation */
1420
+ children?: SidebarNavItemConfig[];
1421
+ }
1422
+ /**
1423
+ * Sidebar section configuration for programmatic usage.
1424
+ */
1425
+ interface SidebarSectionConfig {
1426
+ /** Unique identifier */
1427
+ id: string;
1428
+ /** Section title */
1429
+ title?: string;
1430
+ /** Whether the section can be collapsed */
1431
+ collapsible?: boolean;
1432
+ /** Whether the section is expanded by default */
1433
+ defaultExpanded?: boolean;
1434
+ /** Navigation items in this section */
1435
+ items: SidebarNavItemConfig[];
1436
+ }
1437
+
1438
+ /** Sidebar state representing current mode */
1439
+ type SidebarState = 'mobile-open' | 'mobile-closed' | 'collapsed' | 'expanded';
1440
+ /**
1441
+ * Service for managing sidebar state across the application.
1442
+ *
1443
+ * Uses CDK BreakpointObserver for responsive detection and provides
1444
+ * keyboard shortcuts (Cmd+B / Ctrl+B to toggle, Escape to close on mobile).
1445
+ *
1446
+ * @example
1447
+ * ```typescript
1448
+ * export class MyComponent {
1449
+ * private readonly sidebar = inject(SidebarService);
1450
+ *
1451
+ * toggleSidebar(): void {
1452
+ * this.sidebar.toggle();
1453
+ * }
1454
+ * }
1455
+ * ```
1456
+ */
1457
+ declare class SidebarService {
1458
+ private readonly breakpointObserver;
1459
+ private readonly platformId;
1460
+ private readonly destroyRef;
1461
+ private readonly document;
1462
+ /** Whether the sidebar is open (mobile) - starts closed on mobile */
1463
+ readonly open: _angular_core.WritableSignal<boolean>;
1464
+ /** Whether the sidebar is collapsed (desktop) */
1465
+ readonly collapsed: _angular_core.WritableSignal<boolean>;
1466
+ /** Whether we're on a mobile viewport (<768px) */
1467
+ readonly isMobile: Signal<boolean>;
1468
+ /** Current sidebar state */
1469
+ readonly state: Signal<SidebarState>;
1470
+ /** Toggle sidebar - opens/closes on mobile, collapses/expands on desktop */
1471
+ toggle(): void;
1472
+ /** Set sidebar open state (for mobile drawer) */
1473
+ setOpen(open: boolean): void;
1474
+ /** Set sidebar collapsed state (for desktop) */
1475
+ setCollapsed(collapsed: boolean): void;
1476
+ /**
1477
+ * Setup keyboard shortcuts for sidebar control.
1478
+ * - Cmd+B (Mac) / Ctrl+B (Windows): Toggle sidebar
1479
+ * - Escape: Close mobile drawer
1480
+ *
1481
+ * Call this from your root component's ngOnInit.
1482
+ */
1483
+ setupKeyboardShortcuts(): void;
1484
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarService, never>;
1485
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SidebarService>;
1486
+ }
1487
+
1488
+ /**
1489
+ * A responsive sidebar container component with slots for header, content, and footer.
1490
+ *
1491
+ * Features:
1492
+ * - Mobile: Renders as a drawer overlay that slides in from left
1493
+ * - Desktop: Renders as a static sidebar with optional collapsed state
1494
+ * - Uses CDK FocusTrap for accessibility on mobile drawer
1495
+ * - Integrates with SidebarService for app-wide state management
1496
+ *
1497
+ * @example
1498
+ * ```html
1499
+ * <mcms-sidebar>
1500
+ * <div mcmsSidebarHeader>
1501
+ * <h1>Logo</h1>
1502
+ * </div>
1503
+ * <div mcmsSidebarContent>
1504
+ * <mcms-sidebar-nav>
1505
+ * <mcms-sidebar-nav-item label="Dashboard" href="/dashboard" />
1506
+ * </mcms-sidebar-nav>
1507
+ * </div>
1508
+ * <div mcmsSidebarFooter>
1509
+ * <p>Footer content</p>
1510
+ * </div>
1511
+ * </mcms-sidebar>
1512
+ * ```
1513
+ */
1514
+ declare class Sidebar {
1515
+ readonly sidebar: SidebarService;
1516
+ /** Width of the sidebar when expanded. */
1517
+ readonly width: _angular_core.InputSignal<string>;
1518
+ /** Width of the sidebar when collapsed. */
1519
+ readonly collapsedWidth: _angular_core.InputSignal<string>;
1520
+ /**
1521
+ * Whether the sidebar is collapsed.
1522
+ * This input syncs with SidebarService for backward compatibility.
1523
+ */
1524
+ readonly collapsed: _angular_core.InputSignal<boolean>;
1525
+ /** Additional CSS classes. */
1526
+ readonly class: _angular_core.InputSignal<string>;
1527
+ constructor();
1528
+ /** Classes for mobile drawer */
1529
+ readonly mobileClasses: _angular_core.Signal<string>;
1530
+ /** Classes for desktop sidebar */
1531
+ readonly desktopClasses: _angular_core.Signal<string>;
1532
+ /** Width for desktop sidebar */
1533
+ readonly desktopWidth: _angular_core.Signal<string>;
1534
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Sidebar, never>;
1535
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Sidebar, "mcms-sidebar", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["[mcmsSidebarHeader]", "[mcmsSidebarContent]", "[mcmsSidebarFooter]", "*"], true, never>;
1536
+ }
1537
+
1538
+ /**
1539
+ * Header section of the sidebar, typically for branding/logo.
1540
+ *
1541
+ * @example
1542
+ * ```html
1543
+ * <mcms-sidebar-header>
1544
+ * <h1>My App</h1>
1545
+ * </mcms-sidebar-header>
1546
+ * ```
1547
+ */
1548
+ declare class SidebarHeader {
1549
+ /** Additional CSS classes. */
1550
+ readonly class: _angular_core.InputSignal<string>;
1551
+ readonly hostClasses: _angular_core.Signal<string>;
1552
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarHeader, never>;
1553
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarHeader, "mcms-sidebar-header", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1554
+ }
1555
+
1556
+ /**
1557
+ * Main content area of the sidebar, typically for navigation items.
1558
+ * This section is scrollable when content overflows.
1559
+ *
1560
+ * @example
1561
+ * ```html
1562
+ * <mcms-sidebar-content>
1563
+ * <mcms-sidebar-nav>
1564
+ * <mcms-sidebar-nav-item label="Home" href="/" />
1565
+ * </mcms-sidebar-nav>
1566
+ * </mcms-sidebar-content>
1567
+ * ```
1568
+ */
1569
+ declare class SidebarContent {
1570
+ /** Additional CSS classes. */
1571
+ readonly class: _angular_core.InputSignal<string>;
1572
+ readonly hostClasses: _angular_core.Signal<string>;
1573
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarContent, never>;
1574
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarContent, "mcms-sidebar-content", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1575
+ }
1576
+
1577
+ /**
1578
+ * Footer section of the sidebar, typically for user info or actions.
1579
+ *
1580
+ * @example
1581
+ * ```html
1582
+ * <mcms-sidebar-footer>
1583
+ * <div class="flex items-center gap-2">
1584
+ * <mcms-avatar>...</mcms-avatar>
1585
+ * <span>John Doe</span>
1586
+ * </div>
1587
+ * </mcms-sidebar-footer>
1588
+ * ```
1589
+ */
1590
+ declare class SidebarFooter {
1591
+ /** Additional CSS classes. */
1592
+ readonly class: _angular_core.InputSignal<string>;
1593
+ readonly hostClasses: _angular_core.Signal<string>;
1594
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarFooter, never>;
1595
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarFooter, "mcms-sidebar-footer", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1596
+ }
1597
+
1598
+ /**
1599
+ * Container for sidebar navigation items.
1600
+ *
1601
+ * @example
1602
+ * ```html
1603
+ * <mcms-sidebar-nav>
1604
+ * <mcms-sidebar-nav-item label="Dashboard" href="/dashboard" />
1605
+ * <mcms-sidebar-section title="Settings">
1606
+ * <mcms-sidebar-nav-item label="Profile" href="/settings/profile" />
1607
+ * </mcms-sidebar-section>
1608
+ * </mcms-sidebar-nav>
1609
+ * ```
1610
+ */
1611
+ declare class SidebarNav {
1612
+ /** Accessible label for the navigation. */
1613
+ readonly ariaLabel: _angular_core.InputSignal<string>;
1614
+ /** Additional CSS classes. */
1615
+ readonly class: _angular_core.InputSignal<string>;
1616
+ readonly hostClasses: _angular_core.Signal<string>;
1617
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarNav, never>;
1618
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarNav, "mcms-sidebar-nav", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1619
+ }
1620
+
1621
+ /**
1622
+ * A navigation item within the sidebar.
1623
+ *
1624
+ * @example
1625
+ * ```html
1626
+ * <mcms-sidebar-nav-item
1627
+ * label="Dashboard"
1628
+ * href="/dashboard"
1629
+ * icon="heroSquares2x2"
1630
+ * [active]="true"
1631
+ * />
1632
+ *
1633
+ * <mcms-sidebar-nav-item
1634
+ * label="Notifications"
1635
+ * href="/notifications"
1636
+ * icon="heroBell"
1637
+ * [badge]="5"
1638
+ * />
1639
+ * ```
1640
+ */
1641
+ declare class SidebarNavItem {
1642
+ private readonly sidebar;
1643
+ /** Display label for the nav item. */
1644
+ readonly label: _angular_core.InputSignal<string>;
1645
+ /** Navigation URL. If not provided, renders as a button. */
1646
+ readonly href: _angular_core.InputSignal<string | undefined>;
1647
+ /** Icon name from ng-icons (e.g., 'heroSquares2x2', 'heroUsers'). */
1648
+ readonly icon: _angular_core.InputSignal<string | undefined>;
1649
+ /** Badge content to display. */
1650
+ readonly badge: _angular_core.InputSignal<string | number | undefined>;
1651
+ /** Whether this item is currently active. */
1652
+ readonly active: _angular_core.InputSignal<boolean>;
1653
+ /** Whether this item is disabled. */
1654
+ readonly disabled: _angular_core.InputSignal<boolean>;
1655
+ /** Whether to match the route exactly. */
1656
+ readonly exact: _angular_core.InputSignal<boolean>;
1657
+ /** Additional CSS classes. */
1658
+ readonly class: _angular_core.InputSignal<string>;
1659
+ /** Emitted when the item is clicked (for non-link items). */
1660
+ readonly clicked: _angular_core.OutputEmitterRef<void>;
1661
+ readonly hostClasses: _angular_core.Signal<string>;
1662
+ readonly linkClasses: _angular_core.Signal<string>;
1663
+ handleClick(): void;
1664
+ /** Close mobile drawer when navigating */
1665
+ handleNavigation(): void;
1666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarNavItem, never>;
1667
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarNavItem, "mcms-sidebar-nav-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "exact": { "alias": "exact"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1668
+ }
1669
+
1670
+ /**
1671
+ * A collapsible section within the sidebar navigation.
1672
+ *
1673
+ * @example
1674
+ * ```html
1675
+ * <mcms-sidebar-section title="Settings" [collapsible]="true">
1676
+ * <mcms-sidebar-nav-item label="Profile" href="/settings/profile" />
1677
+ * <mcms-sidebar-nav-item label="Security" href="/settings/security" />
1678
+ * </mcms-sidebar-section>
1679
+ * ```
1680
+ */
1681
+ declare class SidebarSection {
1682
+ /** Section title. */
1683
+ readonly title: _angular_core.InputSignal<string | undefined>;
1684
+ /** Whether the section can be collapsed. */
1685
+ readonly collapsible: _angular_core.InputSignal<boolean>;
1686
+ /** Whether the section is expanded (two-way binding). */
1687
+ readonly expanded: _angular_core.ModelSignal<boolean>;
1688
+ /** Emitted when the expanded state changes. */
1689
+ readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
1690
+ /** Additional CSS classes. */
1691
+ readonly class: _angular_core.InputSignal<string>;
1692
+ readonly hostClasses: _angular_core.Signal<string>;
1693
+ toggle(): void;
1694
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarSection, never>;
1695
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarSection, "mcms-sidebar-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "expandedChange": "expandedChange"; }, never, ["*"], true, never>;
1696
+ }
1697
+
1698
+ /**
1699
+ * A trigger button that toggles the sidebar open/closed state.
1700
+ *
1701
+ * Shows a hamburger menu icon when sidebar is closed, and an X icon when open (mobile only).
1702
+ * Automatically connects to the SidebarService for state management.
1703
+ *
1704
+ * @example
1705
+ * ```html
1706
+ * <!-- Basic usage -->
1707
+ * <mcms-sidebar-trigger />
1708
+ *
1709
+ * <!-- With custom classes -->
1710
+ * <mcms-sidebar-trigger class="text-foreground" />
1711
+ * ```
1712
+ */
1713
+ declare class SidebarTrigger {
1714
+ readonly sidebar: SidebarService;
1715
+ /** Additional CSS classes. */
1716
+ readonly class: _angular_core.InputSignal<string>;
1717
+ /** Accessible label for the button. */
1718
+ readonly ariaLabel: _angular_core.Signal<"Close sidebar" | "Open sidebar">;
1719
+ /** Icon to display based on sidebar state. */
1720
+ readonly iconName: _angular_core.Signal<"heroXMark" | "heroBars3">;
1721
+ readonly hostClasses: _angular_core.Signal<string>;
1722
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarTrigger, never>;
1723
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarTrigger, "mcms-sidebar-trigger", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1724
+ }
1725
+
1726
+ type PaginationItem = number | 'ellipsis';
1727
+ /**
1728
+ * Generate pagination items with ellipsis for large page counts.
1729
+ */
1730
+ declare function generatePaginationItems(currentPage: number, totalPages: number, siblingCount?: number): PaginationItem[];
1731
+
1732
+ /**
1733
+ * Pagination navigation component.
1734
+ *
1735
+ * @example
1736
+ * ```html
1737
+ * <mcms-pagination
1738
+ * [currentPage]="currentPage"
1739
+ * [totalPages]="totalPages"
1740
+ * (pageChange)="onPageChange($event)"
1741
+ * />
1742
+ * ```
1743
+ */
1744
+ declare class Pagination {
1745
+ /** Current active page (1-indexed). */
1746
+ readonly currentPage: _angular_core.InputSignal<number>;
1747
+ /** Total number of pages. */
1748
+ readonly totalPages: _angular_core.InputSignal<number>;
1749
+ /** Number of siblings to show on each side of current page. */
1750
+ readonly siblingCount: _angular_core.InputSignal<number>;
1751
+ /** Additional CSS classes. */
1752
+ readonly class: _angular_core.InputSignal<string>;
1753
+ /** Emitted when page changes. */
1754
+ readonly pageChange: _angular_core.OutputEmitterRef<number>;
1755
+ readonly paginationItems: _angular_core.Signal<_momentumcms_ui.PaginationItem[]>;
1756
+ readonly hostClasses: _angular_core.Signal<string>;
1757
+ goToPage(page: number): void;
1758
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Pagination, never>;
1759
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Pagination, "mcms-pagination", never, { "currentPage": { "alias": "currentPage"; "required": true; "isSignal": true; }; "totalPages": { "alias": "totalPages"; "required": true; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
1760
+ }
1761
+
1762
+ type TabsOrientation = 'horizontal' | 'vertical';
1763
+ type TabsSelectionMode = 'follow' | 'explicit';
1764
+
1765
+ /**
1766
+ * Tabs container component.
1767
+ *
1768
+ * @example
1769
+ * ```html
1770
+ * <mcms-tabs>
1771
+ * <mcms-tabs-list [(selectedTab)]="selectedTab">
1772
+ * <mcms-tabs-trigger value="tab1">Tab 1</mcms-tabs-trigger>
1773
+ * <mcms-tabs-trigger value="tab2">Tab 2</mcms-tabs-trigger>
1774
+ * </mcms-tabs-list>
1775
+ * <mcms-tabs-content value="tab1">Content 1</mcms-tabs-content>
1776
+ * <mcms-tabs-content value="tab2">Content 2</mcms-tabs-content>
1777
+ * </mcms-tabs>
1778
+ * ```
1779
+ */
1780
+ declare class Tabs {
1781
+ /** Additional CSS classes. */
1782
+ readonly class: _angular_core.InputSignal<string>;
1783
+ readonly hostClasses: _angular_core.Signal<string>;
1784
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tabs, never>;
1785
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "mcms-tabs", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$1.Tabs; inputs: {}; outputs: {}; }]>;
1786
+ }
1787
+
1788
+ /**
1789
+ * Tabs list container for tab triggers.
1790
+ *
1791
+ * @example
1792
+ * ```html
1793
+ * <mcms-tabs-list [(selectedTab)]="selectedTab" orientation="horizontal">
1794
+ * <mcms-tabs-trigger value="tab1">Tab 1</mcms-tabs-trigger>
1795
+ * <mcms-tabs-trigger value="tab2">Tab 2</mcms-tabs-trigger>
1796
+ * </mcms-tabs-list>
1797
+ * ```
1798
+ */
1799
+ declare class TabsList {
1800
+ /** Orientation of the tab list. */
1801
+ readonly orientation: _angular_core.InputSignal<TabsOrientation>;
1802
+ /** Selection mode: 'follow' auto-selects on focus, 'explicit' requires Enter/Space. */
1803
+ readonly selectionMode: _angular_core.InputSignal<TabsSelectionMode>;
1804
+ /** The currently selected tab value. */
1805
+ readonly selectedTab: _angular_core.ModelSignal<string | undefined>;
1806
+ /** Whether the tab list is disabled. */
1807
+ readonly disabled: _angular_core.InputSignal<boolean>;
1808
+ /** Whether navigation should wrap at edges. */
1809
+ readonly wrap: _angular_core.InputSignal<boolean>;
1810
+ /** Additional CSS classes. */
1811
+ readonly class: _angular_core.InputSignal<string>;
1812
+ readonly hostClasses: _angular_core.Signal<string>;
1813
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsList, never>;
1814
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsList, "mcms-tabs-list", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selectedTab": { "alias": "selectedTab"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "selectedTab": "selectedTabChange"; }, never, ["*"], true, [{ directive: typeof i1$1.TabList; inputs: { "orientation": "orientation"; "selectionMode": "selectionMode"; "selectedTab": "selectedTab"; "disabled": "disabled"; "wrap": "wrap"; }; outputs: { "selectedTabChange": "selectedTabChange"; }; }]>;
1815
+ }
1816
+
1817
+ /**
1818
+ * Individual tab trigger button.
1819
+ *
1820
+ * @example
1821
+ * ```html
1822
+ * <mcms-tabs-trigger value="tab1">Tab 1</mcms-tabs-trigger>
1823
+ * <mcms-tabs-trigger value="tab2" [disabled]="true">Disabled Tab</mcms-tabs-trigger>
1824
+ * ```
1825
+ */
1826
+ declare class TabsTrigger {
1827
+ private readonly tab;
1828
+ /** Unique value identifying this tab. */
1829
+ readonly value: _angular_core.InputSignal<string>;
1830
+ /** Whether the tab is disabled. */
1831
+ readonly disabled: _angular_core.InputSignal<boolean>;
1832
+ /** Additional CSS classes. */
1833
+ readonly class: _angular_core.InputSignal<string>;
1834
+ readonly hostClasses: _angular_core.Signal<string>;
1835
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsTrigger, never>;
1836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsTrigger, "mcms-tabs-trigger", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$1.Tab; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
1837
+ }
1838
+
1839
+ /**
1840
+ * Tab content panel.
1841
+ *
1842
+ * @example
1843
+ * ```html
1844
+ * <mcms-tabs-content value="tab1">
1845
+ * <p>Content for tab 1</p>
1846
+ * </mcms-tabs-content>
1847
+ * ```
1848
+ */
1849
+ declare class TabsContent {
1850
+ readonly tabPanel: TabPanel;
1851
+ /** Unique value identifying this panel (must match a tab's value). */
1852
+ readonly value: _angular_core.InputSignal<string>;
1853
+ /** Additional CSS classes. */
1854
+ readonly class: _angular_core.InputSignal<string>;
1855
+ readonly hostClasses: _angular_core.Signal<string>;
1856
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsContent, never>;
1857
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsContent, "mcms-tabs-content", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$1.TabPanel; inputs: { "value": "value"; }; outputs: {}; }]>;
1858
+ }
1859
+
1860
+ /**
1861
+ * Type for accordion values.
1862
+ */
1863
+ type AccordionValue = string | string[];
1864
+
1865
+ /**
1866
+ * Accordion root component that wraps accordion items.
1867
+ *
1868
+ * @example
1869
+ * ```html
1870
+ * <mcms-accordion>
1871
+ * <mcms-accordion-item>
1872
+ * <mcms-accordion-trigger panelId="item1">Section 1</mcms-accordion-trigger>
1873
+ * <mcms-accordion-content panelId="item1">
1874
+ * Content for section 1
1875
+ * </mcms-accordion-content>
1876
+ * </mcms-accordion-item>
1877
+ * </mcms-accordion>
1878
+ * ```
1879
+ */
1880
+ declare class Accordion {
1881
+ /** Whether multiple items can be expanded at once. */
1882
+ readonly multiExpandable: _angular_core.InputSignal<boolean>;
1883
+ /** Whether the accordion is disabled. */
1884
+ readonly disabled: _angular_core.InputSignal<boolean>;
1885
+ /** Whether keyboard navigation should wrap. */
1886
+ readonly wrap: _angular_core.InputSignal<boolean>;
1887
+ /** Additional CSS classes. */
1888
+ readonly class: _angular_core.InputSignal<string>;
1889
+ readonly hostClasses: _angular_core.Signal<string>;
1890
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Accordion, never>;
1891
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Accordion, "mcms-accordion", never, { "multiExpandable": { "alias": "multiExpandable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$2.AccordionGroup; inputs: { "disabled": "disabled"; "multiExpandable": "multiExpandable"; "wrap": "wrap"; }; outputs: {}; }]>;
1892
+ }
1893
+
1894
+ /**
1895
+ * Accordion item wrapper component.
1896
+ * Contains an accordion trigger and its corresponding content panel.
1897
+ *
1898
+ * @example
1899
+ * ```html
1900
+ * <mcms-accordion-item>
1901
+ * <mcms-accordion-trigger panelId="item1">Section Title</mcms-accordion-trigger>
1902
+ * <mcms-accordion-content panelId="item1">
1903
+ * <p>Section content goes here</p>
1904
+ * </mcms-accordion-content>
1905
+ * </mcms-accordion-item>
1906
+ * ```
1907
+ */
1908
+ declare class AccordionItem {
1909
+ /** Additional CSS classes. */
1910
+ readonly class: _angular_core.InputSignal<string>;
1911
+ readonly hostClasses: _angular_core.Signal<string>;
1912
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionItem, never>;
1913
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionItem, "mcms-accordion-item", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1914
+ }
1915
+
1916
+ /**
1917
+ * Accordion trigger button that toggles the visibility of its panel.
1918
+ *
1919
+ * @example
1920
+ * ```html
1921
+ * <mcms-accordion-trigger panelId="item1">
1922
+ * Section Title
1923
+ * </mcms-accordion-trigger>
1924
+ * ```
1925
+ */
1926
+ declare class AccordionTrigger {
1927
+ readonly trigger: AccordionTrigger$1;
1928
+ /** Unique identifier to match with the corresponding panel. */
1929
+ readonly panelId: _angular_core.InputSignal<string>;
1930
+ /** Whether the trigger is disabled. */
1931
+ readonly disabled: _angular_core.InputSignal<boolean>;
1932
+ /** Whether the panel is expanded. */
1933
+ readonly expanded: _angular_core.ModelSignal<boolean>;
1934
+ /** Additional CSS classes. */
1935
+ readonly class: _angular_core.InputSignal<string>;
1936
+ readonly hostClasses: _angular_core.Signal<string>;
1937
+ readonly iconClasses: _angular_core.Signal<string>;
1938
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionTrigger, never>;
1939
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionTrigger, "mcms-accordion-trigger", never, { "panelId": { "alias": "panelId"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, [{ directive: typeof i1$2.AccordionTrigger; inputs: { "panelId": "panelId"; "disabled": "disabled"; "expanded": "expanded"; }; outputs: { "expandedChange": "expandedChange"; }; }]>;
1940
+ }
1941
+
1942
+ /**
1943
+ * Accordion content panel that shows/hides based on trigger state.
1944
+ *
1945
+ * @example
1946
+ * ```html
1947
+ * <mcms-accordion-content panelId="item1">
1948
+ * <p>This content is shown when the accordion item is expanded.</p>
1949
+ * </mcms-accordion-content>
1950
+ * ```
1951
+ */
1952
+ declare class AccordionContent {
1953
+ readonly panel: AccordionPanel;
1954
+ /** Unique identifier to match with the corresponding trigger. */
1955
+ readonly panelId: _angular_core.InputSignal<string>;
1956
+ /** Additional CSS classes. */
1957
+ readonly class: _angular_core.InputSignal<string>;
1958
+ readonly hostClasses: _angular_core.Signal<string>;
1959
+ readonly contentClasses: _angular_core.Signal<string>;
1960
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionContent, never>;
1961
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionContent, "mcms-accordion-content", never, { "panelId": { "alias": "panelId"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$2.AccordionPanel; inputs: { "panelId": "panelId"; }; outputs: {}; }]>;
1962
+ }
1963
+
1964
+ /**
1965
+ * Table focus mode for keyboard navigation.
1966
+ */
1967
+ type TableFocusMode = 'roving' | 'activedescendant';
1968
+ /**
1969
+ * Table selection mode.
1970
+ */
1971
+ type TableSelectionMode = 'follow' | 'explicit';
1972
+ /**
1973
+ * Table wrap behavior.
1974
+ */
1975
+ type TableWrapMode = 'continuous' | 'loop' | 'nowrap';
1976
+
1977
+ /**
1978
+ * Table component with keyboard navigation and selection support.
1979
+ *
1980
+ * @example
1981
+ * ```html
1982
+ * <mcms-table>
1983
+ * <mcms-table-header>
1984
+ * <mcms-table-row>
1985
+ * <mcms-table-head>Name</mcms-table-head>
1986
+ * <mcms-table-head>Status</mcms-table-head>
1987
+ * </mcms-table-row>
1988
+ * </mcms-table-header>
1989
+ * <mcms-table-body>
1990
+ * <mcms-table-row>
1991
+ * <mcms-table-cell>John</mcms-table-cell>
1992
+ * <mcms-table-cell>Active</mcms-table-cell>
1993
+ * </mcms-table-row>
1994
+ * </mcms-table-body>
1995
+ * </mcms-table>
1996
+ * ```
1997
+ */
1998
+ declare class Table {
1999
+ /** Whether selection is enabled. */
2000
+ readonly enableSelection: _angular_core.InputSignal<boolean>;
2001
+ /** Whether the table is disabled. */
2002
+ readonly disabled: _angular_core.InputSignal<boolean>;
2003
+ /** Focus mode for keyboard navigation. */
2004
+ readonly focusMode: _angular_core.InputSignal<TableFocusMode>;
2005
+ /** Row wrap behavior. */
2006
+ readonly rowWrap: _angular_core.InputSignal<TableWrapMode>;
2007
+ /** Column wrap behavior. */
2008
+ readonly colWrap: _angular_core.InputSignal<TableWrapMode>;
2009
+ /** Whether multiple cells can be selected. */
2010
+ readonly multi: _angular_core.InputSignal<boolean>;
2011
+ /** Selection mode. */
2012
+ readonly selectionMode: _angular_core.InputSignal<TableSelectionMode>;
2013
+ /** Whether range selection is enabled. */
2014
+ readonly enableRangeSelection: _angular_core.InputSignal<boolean>;
2015
+ /** Additional CSS classes for the wrapper. */
2016
+ readonly class: _angular_core.InputSignal<string>;
2017
+ readonly hostClasses: _angular_core.Signal<string>;
2018
+ readonly tableClasses: _angular_core.Signal<string>;
2019
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Table, never>;
2020
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Table, "mcms-table", never, { "enableSelection": { "alias": "enableSelection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "rowWrap": { "alias": "rowWrap"; "required": false; "isSignal": true; }; "colWrap": { "alias": "colWrap"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "enableRangeSelection": { "alias": "enableRangeSelection"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$3.Grid; inputs: { "enableSelection": "enableSelection"; "disabled": "disabled"; "focusMode": "focusMode"; "rowWrap": "rowWrap"; "colWrap": "colWrap"; "multi": "multi"; "selectionMode": "selectionMode"; "enableRangeSelection": "enableRangeSelection"; }; outputs: {}; }]>;
2021
+ }
2022
+
2023
+ /**
2024
+ * Table header (thead) component.
2025
+ *
2026
+ * @example
2027
+ * ```html
2028
+ * <mcms-table-header>
2029
+ * <mcms-table-row>
2030
+ * <mcms-table-head>Column 1</mcms-table-head>
2031
+ * </mcms-table-row>
2032
+ * </mcms-table-header>
2033
+ * ```
2034
+ */
2035
+ declare class TableHeader {
2036
+ /** Additional CSS classes. */
2037
+ readonly class: _angular_core.InputSignal<string>;
2038
+ readonly hostClasses: _angular_core.Signal<string>;
2039
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableHeader, never>;
2040
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableHeader, "mcms-table-header, thead[mcms-table-header]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2041
+ }
2042
+
2043
+ /**
2044
+ * Table body (tbody) component.
2045
+ *
2046
+ * @example
2047
+ * ```html
2048
+ * <mcms-table-body>
2049
+ * <mcms-table-row>
2050
+ * <mcms-table-cell>Cell content</mcms-table-cell>
2051
+ * </mcms-table-row>
2052
+ * </mcms-table-body>
2053
+ * ```
2054
+ */
2055
+ declare class TableBody {
2056
+ /** Additional CSS classes. */
2057
+ readonly class: _angular_core.InputSignal<string>;
2058
+ readonly hostClasses: _angular_core.Signal<string>;
2059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableBody, never>;
2060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableBody, "mcms-table-body", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2061
+ }
2062
+
2063
+ /**
2064
+ * Table row (tr) component with keyboard navigation support.
2065
+ *
2066
+ * @example
2067
+ * ```html
2068
+ * <mcms-table-row>
2069
+ * <mcms-table-cell>Cell 1</mcms-table-cell>
2070
+ * <mcms-table-cell>Cell 2</mcms-table-cell>
2071
+ * </mcms-table-row>
2072
+ * ```
2073
+ */
2074
+ declare class TableRow {
2075
+ /** The row index within the grid. */
2076
+ readonly rowIndex: _angular_core.InputSignal<number | undefined>;
2077
+ /** Whether this row is selected. */
2078
+ readonly selected: _angular_core.InputSignal<boolean>;
2079
+ /** Additional CSS classes. */
2080
+ readonly class: _angular_core.InputSignal<string>;
2081
+ readonly hostClasses: _angular_core.Signal<string>;
2082
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableRow, never>;
2083
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableRow, "mcms-table-row", never, { "rowIndex": { "alias": "rowIndex"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$3.GridRow; inputs: { "rowIndex": "rowIndex"; }; outputs: {}; }]>;
2084
+ }
2085
+
2086
+ /**
2087
+ * Table header cell (th) component.
2088
+ *
2089
+ * Usage: Provide role="columnheader" when using in table headers.
2090
+ *
2091
+ * @example
2092
+ * ```html
2093
+ * <mcms-table-head role="columnheader">Column Name</mcms-table-head>
2094
+ * ```
2095
+ */
2096
+ declare class TableHead {
2097
+ /** Whether this column is disabled. */
2098
+ readonly disabled: _angular_core.InputSignal<boolean>;
2099
+ /** Number of columns to span. */
2100
+ readonly colSpan: _angular_core.InputSignal<number>;
2101
+ /** Number of rows to span. */
2102
+ readonly rowSpan: _angular_core.InputSignal<number>;
2103
+ /** Additional CSS classes. */
2104
+ readonly class: _angular_core.InputSignal<string>;
2105
+ readonly hostClasses: _angular_core.Signal<string>;
2106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableHead, never>;
2107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableHead, "mcms-table-head", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "colSpan": { "alias": "colSpan"; "required": false; "isSignal": true; }; "rowSpan": { "alias": "rowSpan"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$3.GridCell; inputs: { "disabled": "disabled"; "colSpan": "colSpan"; "rowSpan": "rowSpan"; }; outputs: {}; }]>;
2108
+ }
2109
+
2110
+ /**
2111
+ * Table data cell (td) component with selection support.
2112
+ *
2113
+ * @example
2114
+ * ```html
2115
+ * <mcms-table-cell>Cell content</mcms-table-cell>
2116
+ * ```
2117
+ */
2118
+ declare class TableCell {
2119
+ /** Whether this cell is disabled. */
2120
+ readonly disabled: _angular_core.InputSignal<boolean>;
2121
+ /** Whether this cell is selected. */
2122
+ readonly selected: _angular_core.ModelSignal<boolean>;
2123
+ /** Number of columns to span. */
2124
+ readonly colSpan: _angular_core.InputSignal<number>;
2125
+ /** Number of rows to span. */
2126
+ readonly rowSpan: _angular_core.InputSignal<number>;
2127
+ /** Additional CSS classes. */
2128
+ readonly class: _angular_core.InputSignal<string>;
2129
+ readonly hostClasses: _angular_core.Signal<string>;
2130
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCell, never>;
2131
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCell, "mcms-table-cell", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "colSpan": { "alias": "colSpan"; "required": false; "isSignal": true; }; "rowSpan": { "alias": "rowSpan"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; }, never, ["*"], true, [{ directive: typeof i1$3.GridCell; inputs: { "disabled": "disabled"; "selected": "selected"; "colSpan": "colSpan"; "rowSpan": "rowSpan"; }; outputs: { "selectedChange": "selectedChange"; }; }]>;
2132
+ }
2133
+
2134
+ /**
2135
+ * Table caption component.
2136
+ *
2137
+ * @example
2138
+ * ```html
2139
+ * <mcms-table>
2140
+ * <mcms-table-caption>List of users</mcms-table-caption>
2141
+ * <!-- ... -->
2142
+ * </mcms-table>
2143
+ * ```
2144
+ */
2145
+ declare class TableCaption {
2146
+ /** Additional CSS classes. */
2147
+ readonly class: _angular_core.InputSignal<string>;
2148
+ readonly hostClasses: _angular_core.Signal<string>;
2149
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCaption, never>;
2150
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCaption, "mcms-table-caption", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2151
+ }
2152
+
2153
+ /**
2154
+ * Table footer (tfoot) component.
2155
+ *
2156
+ * @example
2157
+ * ```html
2158
+ * <mcms-table-footer>
2159
+ * <mcms-table-row>
2160
+ * <mcms-table-cell>Total</mcms-table-cell>
2161
+ * <mcms-table-cell>$1,000</mcms-table-cell>
2162
+ * </mcms-table-row>
2163
+ * </mcms-table-footer>
2164
+ * ```
2165
+ */
2166
+ declare class TableFooter {
2167
+ /** Additional CSS classes. */
2168
+ readonly class: _angular_core.InputSignal<string>;
2169
+ readonly hostClasses: _angular_core.Signal<string>;
2170
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableFooter, never>;
2171
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableFooter, "mcms-table-footer", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2172
+ }
2173
+
2174
+ /**
2175
+ * Empty state size variants
2176
+ */
2177
+ type EmptyStateSize = 'sm' | 'md' | 'lg';
2178
+
2179
+ /**
2180
+ * Empty state component for displaying placeholder content when there is no data.
2181
+ *
2182
+ * @example
2183
+ * ```html
2184
+ * <mcms-empty-state title="No results found" description="Try adjusting your search criteria">
2185
+ * <svg mcms-empty-state-icon>...</svg>
2186
+ * <button mcms-empty-state-action mcms-button>Create New</button>
2187
+ * </mcms-empty-state>
2188
+ * ```
2189
+ */
2190
+ declare class EmptyState {
2191
+ /** Title text to display */
2192
+ readonly title: _angular_core.InputSignal<string | undefined>;
2193
+ /** Description text to display */
2194
+ readonly description: _angular_core.InputSignal<string | undefined>;
2195
+ /** Size variant */
2196
+ readonly size: _angular_core.InputSignal<EmptyStateSize>;
2197
+ /** Additional CSS classes */
2198
+ readonly class: _angular_core.InputSignal<string>;
2199
+ protected readonly hostClasses: _angular_core.Signal<string>;
2200
+ protected readonly titleClasses: _angular_core.Signal<string>;
2201
+ protected readonly descriptionClasses: _angular_core.Signal<string>;
2202
+ private getPaddingClasses;
2203
+ private getTitleSizeClasses;
2204
+ private getDescriptionSizeClasses;
2205
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyState, never>;
2206
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyState, "mcms-empty-state", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["[mcms-empty-state-icon]", "[mcms-empty-state-description]", "[mcms-empty-state-action]", "*"], true, never>;
2207
+ }
2208
+
2209
+ /**
2210
+ * Column definition for data table.
2211
+ */
2212
+ interface DataTableColumn<T = unknown> {
2213
+ /** Field name from the data object */
2214
+ field: keyof T | string;
2215
+ /** Display header text */
2216
+ header: string;
2217
+ /** Whether the column is sortable */
2218
+ sortable?: boolean;
2219
+ /** Column width (CSS value) */
2220
+ width?: string;
2221
+ /** Minimum column width (CSS value) - prevents column collapse on narrow screens */
2222
+ minWidth?: string;
2223
+ /** Text alignment */
2224
+ align?: 'left' | 'center' | 'right';
2225
+ /** Custom render function for cell value */
2226
+ render?: (value: unknown, item: T) => string;
2227
+ /** Custom template for cell content */
2228
+ template?: TemplateRef<DataTableCellContext<T>>;
2229
+ }
2230
+ /**
2231
+ * Context provided to column templates.
2232
+ */
2233
+ interface DataTableCellContext<T> {
2234
+ /** The cell value */
2235
+ $implicit: unknown;
2236
+ /** The full row item */
2237
+ item: T;
2238
+ /** The column definition */
2239
+ column: DataTableColumn<T>;
2240
+ /** Row index */
2241
+ index: number;
2242
+ }
2243
+ /**
2244
+ * Sort state for the data table.
2245
+ */
2246
+ interface DataTableSort<T = unknown> {
2247
+ /** Field being sorted */
2248
+ field: keyof T | string;
2249
+ /** Sort direction */
2250
+ direction: 'asc' | 'desc';
2251
+ }
2252
+ /**
2253
+ * Row action definition.
2254
+ */
2255
+ interface DataTableRowAction<T = unknown> {
2256
+ /** Action identifier */
2257
+ id: string;
2258
+ /** Display label */
2259
+ label: string;
2260
+ /** Optional icon */
2261
+ icon?: string;
2262
+ /** Action handler */
2263
+ handler?: (item: T) => void;
2264
+ /** Whether the action is visible for an item */
2265
+ visible?: (item: T) => boolean;
2266
+ /** Whether the action is disabled for an item */
2267
+ disabled?: (item: T) => boolean;
2268
+ /** Button variant */
2269
+ variant?: 'default' | 'destructive' | 'ghost';
2270
+ }
2271
+ /**
2272
+ * Event emitted when a row action is triggered.
2273
+ */
2274
+ interface DataTableRowActionEvent<T> {
2275
+ /** The action that was triggered */
2276
+ action: DataTableRowAction<T>;
2277
+ /** The item the action was triggered on */
2278
+ item: T;
2279
+ }
2280
+
2281
+ /**
2282
+ * A feature-rich data table component with search, sorting, pagination, and selection.
2283
+ *
2284
+ * @example
2285
+ * ```html
2286
+ * <mcms-data-table
2287
+ * [data]="users"
2288
+ * [columns]="columns"
2289
+ * [searchable]="true"
2290
+ * [selectable]="true"
2291
+ * [paginated]="true"
2292
+ * (rowClick)="onRowClick($event)"
2293
+ * />
2294
+ * ```
2295
+ */
2296
+ declare class DataTable<T = unknown> {
2297
+ readonly data: _angular_core.InputSignal<T[]>;
2298
+ readonly columns: _angular_core.InputSignal<DataTableColumn<T>[]>;
2299
+ readonly loading: _angular_core.InputSignal<boolean>;
2300
+ readonly searchable: _angular_core.InputSignal<boolean>;
2301
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
2302
+ readonly searchFields: _angular_core.InputSignal<(string | keyof T)[]>;
2303
+ readonly sortable: _angular_core.InputSignal<boolean>;
2304
+ readonly sort: _angular_core.ModelSignal<DataTableSort<T> | undefined>;
2305
+ readonly selectable: _angular_core.InputSignal<boolean>;
2306
+ readonly selectedItems: _angular_core.ModelSignal<T[]>;
2307
+ readonly paginated: _angular_core.InputSignal<boolean>;
2308
+ readonly pageSize: _angular_core.InputSignal<number>;
2309
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
2310
+ readonly currentPage: _angular_core.ModelSignal<number>;
2311
+ readonly totalItems: _angular_core.InputSignal<number | undefined>;
2312
+ readonly emptyTitle: _angular_core.InputSignal<string>;
2313
+ readonly emptyDescription: _angular_core.InputSignal<string>;
2314
+ readonly clickableRows: _angular_core.InputSignal<boolean>;
2315
+ readonly rowActions: _angular_core.InputSignal<DataTableRowAction<T>[]>;
2316
+ readonly trackByFn: _angular_core.InputSignal<(item: T) => unknown>;
2317
+ readonly class: _angular_core.InputSignal<string>;
2318
+ readonly searchChange: _angular_core.OutputEmitterRef<string>;
2319
+ readonly sortChange: _angular_core.OutputEmitterRef<DataTableSort<T> | undefined>;
2320
+ readonly selectionChange: _angular_core.OutputEmitterRef<T[]>;
2321
+ readonly pageChange: _angular_core.OutputEmitterRef<number>;
2322
+ readonly pageSizeChange: _angular_core.OutputEmitterRef<number>;
2323
+ readonly rowClick: _angular_core.OutputEmitterRef<T>;
2324
+ readonly rowAction: _angular_core.OutputEmitterRef<DataTableRowActionEvent<T>>;
2325
+ /** Search query (two-way bindable for parent control) */
2326
+ readonly searchQuery: _angular_core.ModelSignal<string>;
2327
+ readonly hasToolbarSlot = false;
2328
+ readonly skeletonRows: number[];
2329
+ readonly hostClasses: _angular_core.Signal<string>;
2330
+ readonly filteredData: _angular_core.Signal<T[]>;
2331
+ readonly sortedData: _angular_core.Signal<T[]>;
2332
+ readonly displayData: _angular_core.Signal<T[]>;
2333
+ readonly computedTotalItems: _angular_core.Signal<number>;
2334
+ readonly totalPages: _angular_core.Signal<number>;
2335
+ readonly paginationStart: _angular_core.Signal<number>;
2336
+ readonly paginationEnd: _angular_core.Signal<number>;
2337
+ readonly allSelected: _angular_core.Signal<boolean>;
2338
+ readonly someSelected: _angular_core.Signal<boolean>;
2339
+ constructor();
2340
+ getCellValue(item: T, field: keyof T | string): unknown;
2341
+ /**
2342
+ * Safely get a property from an object.
2343
+ * Uses type guard pattern to satisfy strict type checking.
2344
+ */
2345
+ private getObjectProperty;
2346
+ /**
2347
+ * Type guard for Record<string, unknown>.
2348
+ */
2349
+ private isRecord;
2350
+ renderCell(item: T, col: DataTableColumn<T>): string;
2351
+ onSearchChange(value: string): void;
2352
+ toggleSort(field: keyof T | string): void;
2353
+ toggleSelect(item: T): void;
2354
+ toggleSelectAll(): void;
2355
+ isSelected(item: T): boolean;
2356
+ onPageChanged(page: number): void;
2357
+ onRowClicked(item: T): void;
2358
+ getVisibleActions(item: T): DataTableRowAction<T>[];
2359
+ isActionDisabled(item: T, action: DataTableRowAction<T>): boolean;
2360
+ onActionClick(item: T, action: DataTableRowAction<T>): void;
2361
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTable<any>, never>;
2362
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTable<any>, "mcms-data-table", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchFields": { "alias": "searchFields"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "clickableRows": { "alias": "clickableRows"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "selectedItems": "selectedItemsChange"; "currentPage": "currentPageChange"; "searchChange": "searchChange"; "sortChange": "sortChange"; "selectionChange": "selectionChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "rowClick": "rowClick"; "rowAction": "rowAction"; "searchQuery": "searchQueryChange"; }, never, ["[mcmsDataTableToolbar]", "[mcmsDataTableEmpty]"], true, never>;
2363
+ }
2364
+
2365
+ /**
2366
+ * Filter mode for the command component.
2367
+ * - manual: Consumer is responsible for filtering options
2368
+ * - auto-select: Automatically selects first matching option
2369
+ * - highlight: Highlights matching text without changing selection
2370
+ */
2371
+ type CommandFilterMode = 'manual' | 'auto-select' | 'highlight';
2372
+
2373
+ /**
2374
+ * Command component for building command palettes, autocomplete, and searchable lists.
2375
+ *
2376
+ * @example
2377
+ * ```html
2378
+ * <mcms-command>
2379
+ * <mcms-command-input placeholder="Type a command or search..." />
2380
+ * <mcms-command-list>
2381
+ * <mcms-command-empty>No results found.</mcms-command-empty>
2382
+ * <mcms-command-group label="Suggestions">
2383
+ * <mcms-command-item value="calendar">Calendar</mcms-command-item>
2384
+ * <mcms-command-item value="search">Search</mcms-command-item>
2385
+ * </mcms-command-group>
2386
+ * </mcms-command-list>
2387
+ * </mcms-command>
2388
+ * ```
2389
+ */
2390
+ declare class Command {
2391
+ /** Filter mode for search/filter behavior */
2392
+ readonly filterMode: _angular_core.InputSignal<CommandFilterMode>;
2393
+ /** Whether the command is disabled */
2394
+ readonly disabled: _angular_core.InputSignal<boolean>;
2395
+ /** Whether the command list is always expanded */
2396
+ readonly alwaysExpanded: _angular_core.InputSignal<boolean>;
2397
+ /** Additional CSS classes */
2398
+ readonly class: _angular_core.InputSignal<string>;
2399
+ protected readonly hostClasses: _angular_core.Signal<string>;
2400
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Command, never>;
2401
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Command, "mcms-command", never, { "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "alwaysExpanded": { "alias": "alwaysExpanded"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2402
+ }
2403
+
2404
+ /**
2405
+ * Input element for the command component.
2406
+ * Provides search/filter functionality for the command list.
2407
+ *
2408
+ * @example
2409
+ * ```html
2410
+ * <mcms-command-input placeholder="Search..." [(value)]="searchValue" [autofocus]="true" />
2411
+ * ```
2412
+ */
2413
+ declare class CommandInput {
2414
+ private readonly injector;
2415
+ private readonly inputEl;
2416
+ /** Placeholder text for the input */
2417
+ readonly placeholder: _angular_core.InputSignal<string>;
2418
+ /** Current value of the input */
2419
+ readonly value: _angular_core.ModelSignal<string>;
2420
+ /** Whether the input is disabled */
2421
+ readonly disabled: _angular_core.InputSignal<boolean>;
2422
+ /** Whether to autofocus the input on mount */
2423
+ readonly autofocus: _angular_core.InputSignal<boolean>;
2424
+ /** ID of the associated command list for aria-controls */
2425
+ readonly ariaControls: _angular_core.InputSignal<string>;
2426
+ /** Whether the associated list is expanded */
2427
+ readonly ariaExpanded: _angular_core.InputSignal<boolean>;
2428
+ /** Accessible label for the input */
2429
+ readonly ariaLabel: _angular_core.InputSignal<string>;
2430
+ /** Additional CSS classes */
2431
+ readonly class: _angular_core.InputSignal<string>;
2432
+ constructor();
2433
+ protected readonly hostClasses: _angular_core.Signal<string>;
2434
+ protected readonly inputClasses: _angular_core.Signal<string>;
2435
+ protected onInput(event: Event): void;
2436
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandInput, never>;
2437
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandInput, "mcms-command-input", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2438
+ }
2439
+
2440
+ /**
2441
+ * Container for command items. Provides the scrollable list area.
2442
+ *
2443
+ * @example
2444
+ * ```html
2445
+ * <mcms-command-list>
2446
+ * <mcms-command-item value="item1">Item 1</mcms-command-item>
2447
+ * <mcms-command-item value="item2">Item 2</mcms-command-item>
2448
+ * </mcms-command-list>
2449
+ * ```
2450
+ */
2451
+ declare class CommandList {
2452
+ /** Auto-generated unique ID for ARIA association with CommandInput. */
2453
+ readonly listId: string;
2454
+ /** Maximum height of the list */
2455
+ readonly maxHeight: _angular_core.InputSignal<string>;
2456
+ /** Additional CSS classes */
2457
+ readonly class: _angular_core.InputSignal<string>;
2458
+ protected readonly hostClasses: _angular_core.Signal<string>;
2459
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandList, never>;
2460
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandList, "mcms-command-list", never, { "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$4.Listbox; inputs: { "multi": "multi"; "wrap": "wrap"; "focusMode": "focusMode"; "selectionMode": "selectionMode"; "disabled": "disabled"; "values": "values"; }; outputs: { "valuesChange": "valuesChange"; }; }]>;
2461
+ }
2462
+
2463
+ /**
2464
+ * Displayed when there are no results in the command list.
2465
+ *
2466
+ * @example
2467
+ * ```html
2468
+ * <mcms-command-empty>No results found.</mcms-command-empty>
2469
+ * ```
2470
+ */
2471
+ declare class CommandEmpty {
2472
+ /** Additional CSS classes */
2473
+ readonly class: _angular_core.InputSignal<string>;
2474
+ protected readonly hostClasses: _angular_core.Signal<string>;
2475
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandEmpty, never>;
2476
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandEmpty, "mcms-command-empty", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2477
+ }
2478
+
2479
+ declare class CommandGroup {
2480
+ /** Auto-generated unique ID for the label element. */
2481
+ readonly labelId: string;
2482
+ /** Label for the group */
2483
+ readonly label: _angular_core.InputSignal<string | undefined>;
2484
+ /** Additional CSS classes */
2485
+ readonly class: _angular_core.InputSignal<string>;
2486
+ protected readonly hostClasses: _angular_core.Signal<string>;
2487
+ protected readonly labelClasses: _angular_core.Signal<string>;
2488
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandGroup, never>;
2489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandGroup, "mcms-command-group", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2490
+ }
2491
+
2492
+ /**
2493
+ * A selectable item in the command list.
2494
+ *
2495
+ * @example
2496
+ * ```html
2497
+ * <mcms-command-item value="settings" (itemSelect)="onSelect()">
2498
+ * <svg>...</svg>
2499
+ * Settings
2500
+ * <span class="ml-auto text-xs text-muted-foreground">⌘S</span>
2501
+ * </mcms-command-item>
2502
+ * ```
2503
+ */
2504
+ declare class CommandItem {
2505
+ /** The value of the item */
2506
+ readonly value: _angular_core.InputSignal<string>;
2507
+ /** Text label for accessibility and typeahead search */
2508
+ readonly label: _angular_core.InputSignal<string | undefined>;
2509
+ /** Whether the item is disabled */
2510
+ readonly disabled: _angular_core.InputSignal<boolean>;
2511
+ /** Whether the item is selected */
2512
+ readonly selected: _angular_core.InputSignal<boolean>;
2513
+ /** Emits when the item is selected */
2514
+ readonly itemSelect: _angular_core.OutputEmitterRef<void>;
2515
+ /** Additional CSS classes */
2516
+ readonly class: _angular_core.InputSignal<string>;
2517
+ /** Whether the item is currently active (hovered/focused) */
2518
+ protected readonly active: _angular_core.WritableSignal<boolean>;
2519
+ protected readonly hostClasses: _angular_core.Signal<string>;
2520
+ protected onSelect(): void;
2521
+ protected onMouseEnter(): void;
2522
+ protected onMouseLeave(): void;
2523
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandItem, never>;
2524
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandItem, "mcms-command-item", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, ["*"], true, never>;
2525
+ }
2526
+
2527
+ /**
2528
+ * A visual separator between command groups or items.
2529
+ *
2530
+ * @example
2531
+ * ```html
2532
+ * <mcms-command-group label="Navigation">...</mcms-command-group>
2533
+ * <mcms-command-separator />
2534
+ * <mcms-command-group label="Settings">...</mcms-command-group>
2535
+ * ```
2536
+ */
2537
+ declare class CommandSeparator {
2538
+ /** Additional CSS classes */
2539
+ readonly class: _angular_core.InputSignal<string>;
2540
+ protected readonly hostClasses: _angular_core.Signal<string>;
2541
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandSeparator, never>;
2542
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandSeparator, "mcms-command-separator", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2543
+ }
2544
+
2545
+ /**
2546
+ * Toolbar orientation
2547
+ */
2548
+ type ToolbarOrientation = 'horizontal' | 'vertical';
2549
+
2550
+ /**
2551
+ * Toolbar component for grouping related controls.
2552
+ *
2553
+ * Uses @angular/aria/toolbar for keyboard navigation (Arrow keys, Home/End).
2554
+ *
2555
+ * @example
2556
+ * ```html
2557
+ * <mcms-toolbar>
2558
+ * <button mcms-toolbar-widget value="bold">Bold</button>
2559
+ * <button mcms-toolbar-widget value="italic">Italic</button>
2560
+ * <mcms-toolbar-separator />
2561
+ * <button mcms-toolbar-widget value="link">Link</button>
2562
+ * </mcms-toolbar>
2563
+ * ```
2564
+ */
2565
+ declare class Toolbar {
2566
+ protected readonly toolbar: Toolbar$1<any>;
2567
+ /** Toolbar orientation */
2568
+ readonly orientation: _angular_core.InputSignal<ToolbarOrientation>;
2569
+ /** Whether the toolbar is disabled */
2570
+ readonly disabled: _angular_core.InputSignal<boolean>;
2571
+ /** Whether navigation wraps around */
2572
+ readonly wrap: _angular_core.InputSignal<boolean>;
2573
+ /** Selected widget values */
2574
+ readonly values: _angular_core.ModelSignal<string[]>;
2575
+ /** Additional CSS classes */
2576
+ readonly class: _angular_core.InputSignal<string>;
2577
+ protected readonly hostClasses: _angular_core.Signal<string>;
2578
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toolbar, never>;
2579
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toolbar, "mcms-toolbar", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; }, never, ["*"], true, [{ directive: typeof i1$5.Toolbar; inputs: { "orientation": "orientation"; "disabled": "disabled"; "wrap": "wrap"; "softDisabled": "softDisabled"; "values": "values"; }; outputs: { "valuesChange": "valuesChange"; }; }]>;
2580
+ }
2581
+
2582
+ /**
2583
+ * Interactive widget within a toolbar.
2584
+ *
2585
+ * @example
2586
+ * ```html
2587
+ * <button mcms-toolbar-widget value="bold" (click)="toggleBold()">
2588
+ * <svg>...</svg>
2589
+ * </button>
2590
+ * ```
2591
+ */
2592
+ declare class ToolbarWidget {
2593
+ protected readonly widget: ToolbarWidget$1<any>;
2594
+ /** The value identifier for this widget */
2595
+ readonly value: _angular_core.InputSignal<string>;
2596
+ /** Whether the widget is disabled */
2597
+ readonly disabled: _angular_core.InputSignal<boolean>;
2598
+ /** Additional CSS classes */
2599
+ readonly class: _angular_core.InputSignal<string>;
2600
+ protected readonly hostClasses: _angular_core.Signal<string>;
2601
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarWidget, never>;
2602
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToolbarWidget, "button[mcms-toolbar-widget]", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$5.ToolbarWidget; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
2603
+ }
2604
+
2605
+ /**
2606
+ * Groups toolbar widgets for selection (like radio buttons).
2607
+ *
2608
+ * @example
2609
+ * ```html
2610
+ * <mcms-toolbar-widget-group [(value)]="alignment">
2611
+ * <button mcms-toolbar-widget value="left">Left</button>
2612
+ * <button mcms-toolbar-widget value="center">Center</button>
2613
+ * <button mcms-toolbar-widget value="right">Right</button>
2614
+ * </mcms-toolbar-widget-group>
2615
+ * ```
2616
+ */
2617
+ declare class ToolbarWidgetGroup {
2618
+ protected readonly group: ToolbarWidgetGroup$1<any>;
2619
+ /** Whether the group is disabled */
2620
+ readonly disabled: _angular_core.InputSignal<boolean>;
2621
+ /** Whether multiple items can be selected */
2622
+ readonly multi: _angular_core.InputSignal<boolean>;
2623
+ /** Additional CSS classes */
2624
+ readonly class: _angular_core.InputSignal<string>;
2625
+ protected readonly hostClasses: _angular_core.Signal<string>;
2626
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarWidgetGroup, never>;
2627
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToolbarWidgetGroup, "mcms-toolbar-widget-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$5.ToolbarWidgetGroup; inputs: { "disabled": "disabled"; "multi": "multi"; }; outputs: {}; }]>;
2628
+ }
2629
+
2630
+ /**
2631
+ * Visual separator between toolbar widgets.
2632
+ *
2633
+ * @example
2634
+ * ```html
2635
+ * <button mcms-toolbar-widget value="bold">Bold</button>
2636
+ * <mcms-toolbar-separator />
2637
+ * <button mcms-toolbar-widget value="link">Link</button>
2638
+ * ```
2639
+ */
2640
+ declare class ToolbarSeparator {
2641
+ /** Additional CSS classes */
2642
+ readonly class: _angular_core.InputSignal<string>;
2643
+ protected readonly hostClasses: _angular_core.Signal<string>;
2644
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarSeparator, never>;
2645
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToolbarSeparator, "mcms-toolbar-separator", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2646
+ }
2647
+
2648
+ /**
2649
+ * Tree node data structure
2650
+ */
2651
+ interface TreeNode {
2652
+ /** Unique identifier for the node */
2653
+ id: string;
2654
+ /** Display label */
2655
+ label: string;
2656
+ /** Optional icon identifier */
2657
+ icon?: string;
2658
+ /** Whether the node is disabled */
2659
+ disabled?: boolean;
2660
+ /** Whether the node is initially expanded */
2661
+ expanded?: boolean;
2662
+ /** Child nodes */
2663
+ children?: TreeNode[];
2664
+ }
2665
+
2666
+ /**
2667
+ * Tree component for displaying hierarchical data.
2668
+ *
2669
+ * Uses @angular/aria/tree for keyboard navigation (Arrow keys, Home/End, Enter/Space).
2670
+ *
2671
+ * @example
2672
+ * ```html
2673
+ * <mcms-tree [(value)]="selectedItems" [multi]="true">
2674
+ * <mcms-tree-item [parent]="tree" value="folder1" label="Documents">
2675
+ * <mcms-tree-item-group [ownedBy]="documentsItem">
2676
+ * <mcms-tree-item [parent]="documentsGroup" value="file1" label="File 1" />
2677
+ * </mcms-tree-item-group>
2678
+ * </mcms-tree-item>
2679
+ * </mcms-tree>
2680
+ * ```
2681
+ */
2682
+ declare class Tree {
2683
+ readonly ariaTree: Tree$1<any>;
2684
+ /** Whether multiple items can be selected */
2685
+ readonly multi: _angular_core.InputSignal<boolean>;
2686
+ /** Selection mode: 'follow' (select on focus) or 'explicit' (require Enter/Space) */
2687
+ readonly selectionMode: _angular_core.InputSignal<"follow" | "explicit">;
2688
+ /** Whether the tree is disabled */
2689
+ readonly disabled: _angular_core.InputSignal<boolean>;
2690
+ /** Whether navigation wraps around */
2691
+ readonly wrap: _angular_core.InputSignal<boolean>;
2692
+ /** Selected item values */
2693
+ readonly values: _angular_core.ModelSignal<string[]>;
2694
+ /** Additional CSS classes */
2695
+ readonly class: _angular_core.InputSignal<string>;
2696
+ protected readonly hostClasses: _angular_core.Signal<string>;
2697
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tree, never>;
2698
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tree, "mcms-tree", ["mcmsTree"], { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; }, never, ["*"], true, [{ directive: typeof i1$6.Tree; inputs: { "multi": "multi"; "selectionMode": "selectionMode"; "disabled": "disabled"; "wrap": "wrap"; "orientation": "orientation"; "values": "values"; }; outputs: { "valuesChange": "valuesChange"; }; }]>;
2699
+ }
2700
+
2701
+ /**
2702
+ * A single item/node in the tree.
2703
+ *
2704
+ * @example
2705
+ * ```html
2706
+ * <mcms-tree-item
2707
+ * #documentsItem="mcmsTreeItem"
2708
+ * [parent]="tree"
2709
+ * value="documents"
2710
+ * label="Documents"
2711
+ * >
2712
+ * Documents
2713
+ * <mcms-tree-item-group [ownedBy]="documentsItem">
2714
+ * ...children
2715
+ * </mcms-tree-item-group>
2716
+ * </mcms-tree-item>
2717
+ * ```
2718
+ */
2719
+ declare class TreeItem {
2720
+ readonly treeItem: TreeItem$1<any>;
2721
+ /** The value identifier for this item */
2722
+ readonly value: _angular_core.InputSignal<string>;
2723
+ /** Parent tree or tree item group */
2724
+ readonly parent: _angular_core.InputSignal<Tree$1<string> | TreeItemGroup<string>>;
2725
+ /** Text label for accessibility and typeahead */
2726
+ readonly label: _angular_core.InputSignal<string | undefined>;
2727
+ /** Whether the item is disabled */
2728
+ readonly disabled: _angular_core.InputSignal<boolean>;
2729
+ /** Whether the item is expanded */
2730
+ readonly expanded: _angular_core.ModelSignal<boolean>;
2731
+ /** Whether the item is selectable */
2732
+ readonly selectable: _angular_core.InputSignal<boolean>;
2733
+ /** Whether this item has children (should have a tree-item-group) */
2734
+ readonly hasChildren: _angular_core.InputSignal<boolean>;
2735
+ /** Additional CSS classes */
2736
+ readonly class: _angular_core.InputSignal<string>;
2737
+ protected readonly hostClasses: _angular_core.Signal<string>;
2738
+ protected readonly contentClasses: _angular_core.Signal<string>;
2739
+ onClick(event: Event): void;
2740
+ toggleExpanded(event: Event): void;
2741
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeItem, never>;
2742
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeItem, "mcms-tree-item", ["mcmsTreeItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "parent": { "alias": "parent"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "hasChildren": { "alias": "hasChildren"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*", "mcms-tree-item-group, [mcmsTreeItemGroup]"], true, [{ directive: typeof i1$6.TreeItem; inputs: { "value": "value"; "parent": "parent"; "disabled": "disabled"; "expanded": "expanded"; "label": "label"; "selectable": "selectable"; }; outputs: { "expandedChange": "expandedChange"; }; }]>;
2743
+ }
2744
+
2745
+ /**
2746
+ * Groups child tree items under a parent item.
2747
+ *
2748
+ * @example
2749
+ * ```html
2750
+ * <mcms-tree-item #parentItem [parent]="tree" value="folder" label="Folder" [hasChildren]="true">
2751
+ * Folder
2752
+ * <mcms-tree-item-group [ownedBy]="parentItem">
2753
+ * <mcms-tree-item [parent]="childGroup" value="file" label="File">File</mcms-tree-item>
2754
+ * </mcms-tree-item-group>
2755
+ * </mcms-tree-item>
2756
+ * ```
2757
+ */
2758
+ declare class TreeItemGroupComponent {
2759
+ readonly group: TreeItemGroup<any>;
2760
+ /** The parent tree item that owns this group */
2761
+ readonly ownedBy: _angular_core.InputSignal<TreeItem$1<string>>;
2762
+ /** Additional CSS classes */
2763
+ readonly class: _angular_core.InputSignal<string>;
2764
+ protected readonly isExpanded: _angular_core.Signal<boolean>;
2765
+ protected readonly hostClasses: _angular_core.Signal<string>;
2766
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeItemGroupComponent, never>;
2767
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeItemGroupComponent, "mcms-tree-item-group", ["mcmsTreeItemGroup"], { "ownedBy": { "alias": "ownedBy"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1$6.TreeItemGroup; inputs: { "ownedBy": "ownedBy"; }; outputs: {}; }]>;
2768
+ }
2769
+
2770
+ /**
2771
+ * Menubar orientation
2772
+ */
2773
+ type MenubarOrientation = 'horizontal' | 'vertical';
2774
+ /**
2775
+ * Menubar item configuration
2776
+ */
2777
+ interface MenubarItemConfig {
2778
+ /** Unique value identifier */
2779
+ value: string;
2780
+ /** Display label */
2781
+ label: string;
2782
+ /** Whether the item is disabled */
2783
+ disabled?: boolean;
2784
+ /** Keyboard shortcut hint */
2785
+ shortcut?: string;
2786
+ /** Icon identifier */
2787
+ icon?: string;
2788
+ /** Submenu items */
2789
+ children?: MenubarItemConfig[];
2790
+ }
2791
+
2792
+ /**
2793
+ * Application menu bar for File, Edit, View style menus.
2794
+ *
2795
+ * Uses @angular/aria/menu for keyboard navigation (Arrow keys, Enter/Space).
2796
+ *
2797
+ * @example
2798
+ * ```html
2799
+ * <mcms-menubar>
2800
+ * <mcms-menubar-item value="file" label="File" [submenu]="fileMenu">
2801
+ * <mcms-menubar-submenu #fileMenu>
2802
+ * <mcms-menubar-item value="new" label="New" shortcut="⌘N" />
2803
+ * <mcms-menubar-item value="open" label="Open" shortcut="⌘O" />
2804
+ * </mcms-menubar-submenu>
2805
+ * </mcms-menubar-item>
2806
+ * <mcms-menubar-item value="edit" label="Edit" [submenu]="editMenu">
2807
+ * ...
2808
+ * </mcms-menubar-item>
2809
+ * </mcms-menubar>
2810
+ * ```
2811
+ */
2812
+ declare class Menubar {
2813
+ readonly menubar: MenuBar<any>;
2814
+ /** Whether the menubar is disabled */
2815
+ readonly disabled: _angular_core.InputSignal<boolean>;
2816
+ /** Whether navigation wraps around */
2817
+ readonly wrap: _angular_core.InputSignal<boolean>;
2818
+ /** Typeahead delay in milliseconds */
2819
+ readonly typeaheadDelay: _angular_core.InputSignal<number>;
2820
+ /** Selected values (for checkable menu items) */
2821
+ readonly values: _angular_core.ModelSignal<string[]>;
2822
+ /** Additional CSS classes */
2823
+ readonly class: _angular_core.InputSignal<string>;
2824
+ protected readonly hostClasses: _angular_core.Signal<string>;
2825
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Menubar, never>;
2826
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Menubar, "mcms-menubar", ["mcmsMenubar"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; }, never, ["*"], true, [{ directive: typeof i1.MenuBar; inputs: { "disabled": "disabled"; "wrap": "wrap"; "typeaheadDelay": "typeaheadDelay"; "values": "values"; }; outputs: { "valuesChange": "valuesChange"; }; }]>;
2827
+ }
2828
+
2829
+ /**
2830
+ * A submenu dropdown for menubar items.
2831
+ *
2832
+ * @example
2833
+ * ```html
2834
+ * <mcms-menubar-submenu #fileMenu>
2835
+ * <mcms-menubar-submenu-item value="new" label="New" shortcut="⌘N" />
2836
+ * <mcms-menubar-submenu-item value="open" label="Open" shortcut="⌘O" />
2837
+ * <mcms-menubar-separator />
2838
+ * <mcms-menubar-submenu-item value="exit" label="Exit" />
2839
+ * </mcms-menubar-submenu>
2840
+ * ```
2841
+ */
2842
+ declare class MenubarSubmenu {
2843
+ readonly menu: Menu<any>;
2844
+ readonly parent: _angular_core.ModelSignal<MenuItem<string> | undefined>;
2845
+ /** Whether the submenu is disabled */
2846
+ readonly disabled: _angular_core.InputSignal<boolean>;
2847
+ /** Whether navigation wraps around */
2848
+ readonly wrap: _angular_core.InputSignal<boolean>;
2849
+ /** Typeahead delay in milliseconds */
2850
+ readonly typeaheadDelay: _angular_core.InputSignal<number>;
2851
+ /** Additional CSS classes */
2852
+ readonly class: _angular_core.InputSignal<string>;
2853
+ protected readonly hostClasses: _angular_core.Signal<string>;
2854
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenubarSubmenu, never>;
2855
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenubarSubmenu, "mcms-menubar-submenu", ["mcmsMenubarSubmenu"], { "parent": { "alias": "parent"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "parent": "parentChange"; }, never, ["*"], true, [{ directive: typeof i1.Menu; inputs: { "disabled": "disabled"; "wrap": "wrap"; "typeaheadDelay": "typeaheadDelay"; }; outputs: {}; }]>;
2856
+ }
2857
+ /**
2858
+ * A menu item inside a menubar submenu.
2859
+ *
2860
+ * @example
2861
+ * ```html
2862
+ * <mcms-menubar-submenu-item value="new" label="New" shortcut="⌘N" />
2863
+ * ```
2864
+ */
2865
+ declare class MenubarSubmenuItem {
2866
+ readonly menuItem: MenuItem<string>;
2867
+ /** The unique value for this item */
2868
+ readonly value: _angular_core.InputSignal<string>;
2869
+ /** Display label */
2870
+ readonly label: _angular_core.InputSignal<string>;
2871
+ /** Whether the item is disabled */
2872
+ readonly disabled: _angular_core.InputSignal<boolean>;
2873
+ /** Keyboard shortcut hint */
2874
+ readonly shortcut: _angular_core.InputSignal<string | undefined>;
2875
+ /** Text used for typeahead search */
2876
+ readonly searchTerm: _angular_core.ModelSignal<string>;
2877
+ /** Reference to a nested submenu */
2878
+ readonly submenu: _angular_core.InputSignal<MenubarSubmenu | undefined>;
2879
+ /** Additional CSS classes */
2880
+ readonly class: _angular_core.InputSignal<string>;
2881
+ protected readonly hostClasses: _angular_core.Signal<string>;
2882
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenubarSubmenuItem, never>;
2883
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenubarSubmenuItem, "mcms-menubar-submenu-item", ["mcmsMenubarSubmenuItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, ["[mcms-menubar-submenu-item-icon]", "*"], true, [{ directive: typeof i1.MenuItem; inputs: { "value": "value"; "disabled": "disabled"; "searchTerm": "searchTerm"; "submenu": "submenu"; }; outputs: {}; }]>;
2884
+ }
2885
+ /**
2886
+ * Separator line within a menubar submenu.
2887
+ */
2888
+ declare class MenubarSeparator {
2889
+ /** Additional CSS classes */
2890
+ readonly class: _angular_core.InputSignal<string>;
2891
+ protected readonly hostClasses: _angular_core.Signal<string>;
2892
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenubarSeparator, never>;
2893
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenubarSeparator, "mcms-menubar-separator", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2894
+ }
2895
+
2896
+ /**
2897
+ * A top-level item in the menubar.
2898
+ *
2899
+ * @example
2900
+ * ```html
2901
+ * <mcms-menubar-item value="file" label="File" [submenu]="fileMenu">
2902
+ * <mcms-menubar-submenu #fileMenu>
2903
+ * ...submenu content
2904
+ * </mcms-menubar-submenu>
2905
+ * </mcms-menubar-item>
2906
+ * ```
2907
+ */
2908
+ declare class MenubarItem {
2909
+ readonly menuItem: MenuItem<string>;
2910
+ /** The unique value for this item */
2911
+ readonly value: _angular_core.InputSignal<string>;
2912
+ /** Display label */
2913
+ readonly label: _angular_core.InputSignal<string>;
2914
+ /** Whether the item is disabled */
2915
+ readonly disabled: _angular_core.InputSignal<boolean>;
2916
+ /** Text used for typeahead search */
2917
+ readonly searchTerm: _angular_core.ModelSignal<string>;
2918
+ /** Reference to the submenu component */
2919
+ readonly submenu: _angular_core.InputSignal<MenubarSubmenu | undefined>;
2920
+ /** Additional CSS classes */
2921
+ readonly class: _angular_core.InputSignal<string>;
2922
+ protected readonly hostClasses: _angular_core.Signal<string>;
2923
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenubarItem, never>;
2924
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenubarItem, "mcms-menubar-item", ["mcmsMenubarItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, ["[mcms-menubar-item-icon]", "*"], true, [{ directive: typeof i1.MenuItem; inputs: { "value": "value"; "disabled": "disabled"; "searchTerm": "searchTerm"; "submenu": "submenu"; }; outputs: {}; }]>;
2925
+ }
2926
+
2927
+ /**
2928
+ * A search input component with debounce support and clear functionality.
2929
+ *
2930
+ * @example
2931
+ * ```html
2932
+ * <mcms-search-input
2933
+ * placeholder="Search users..."
2934
+ * [debounce]="300"
2935
+ * (searchChange)="onSearch($event)"
2936
+ * />
2937
+ * ```
2938
+ */
2939
+ declare class SearchInput {
2940
+ private readonly document;
2941
+ /** The current search value (two-way binding). */
2942
+ readonly value: _angular_core.ModelSignal<string>;
2943
+ /** Placeholder text. */
2944
+ readonly placeholder: _angular_core.InputSignal<string>;
2945
+ /** Debounce time in milliseconds before emitting search event. */
2946
+ readonly debounce: _angular_core.InputSignal<number>;
2947
+ /** Whether the input is disabled. */
2948
+ readonly disabled: _angular_core.InputSignal<boolean>;
2949
+ /** Accessible label for the search input. */
2950
+ readonly ariaLabel: _angular_core.InputSignal<string>;
2951
+ /** Additional CSS classes. */
2952
+ readonly class: _angular_core.InputSignal<string>;
2953
+ /** Emitted after debounce when search value changes. */
2954
+ readonly searchChange: _angular_core.OutputEmitterRef<string>;
2955
+ /** Emitted when the clear button is clicked. */
2956
+ readonly clear: _angular_core.OutputEmitterRef<void>;
2957
+ readonly hostClasses: _angular_core.Signal<string>;
2958
+ private debounceTimer;
2959
+ constructor();
2960
+ onClear(): void;
2961
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchInput, never>;
2962
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchInput, "mcms-search-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "debounce": { "alias": "debounce"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searchChange": "searchChange"; "clear": "clear"; }, never, never, true, never>;
2963
+ }
2964
+
2965
+ /**
2966
+ * Supported display types for FieldDisplay component.
2967
+ */
2968
+ type FieldDisplayType = 'text' | 'number' | 'date' | 'datetime' | 'boolean' | 'badge' | 'link' | 'email' | 'list' | 'json' | 'html' | 'group' | 'array-table';
2969
+ /**
2970
+ * Badge variant mapping for field values.
2971
+ */
2972
+ interface FieldDisplayBadgeConfig {
2973
+ /** Map of value to variant */
2974
+ variants?: Record<string, 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline'>;
2975
+ /** Default variant if no match found */
2976
+ defaultVariant?: 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline';
2977
+ }
2978
+ /**
2979
+ * Metadata about a sub-field for structured display types (group, array-table).
2980
+ */
2981
+ interface FieldDisplayFieldMeta {
2982
+ /** Sub-field name (used to extract values from objects) */
2983
+ name: string;
2984
+ /** Display label for the sub-field */
2985
+ label?: string;
2986
+ /** Field type from core (text, number, checkbox, etc.) */
2987
+ type: string;
2988
+ }
2989
+ /**
2990
+ * Number format configuration for the display component.
2991
+ * Maps to Intl.NumberFormat options.
2992
+ */
2993
+ interface FieldDisplayNumberFormat {
2994
+ /** Formatting style */
2995
+ style?: 'decimal' | 'currency' | 'percent';
2996
+ /** ISO 4217 currency code (e.g. 'USD') */
2997
+ currency?: string;
2998
+ /** BCP 47 locale tag (e.g. 'en-US') */
2999
+ locale?: string;
3000
+ /** Minimum fraction digits */
3001
+ minimumFractionDigits?: number;
3002
+ /** Maximum fraction digits */
3003
+ maximumFractionDigits?: number;
3004
+ }
3005
+ /**
3006
+ * Date format configuration for the display component.
3007
+ * Maps to Intl.DateTimeFormat options.
3008
+ */
3009
+ interface FieldDisplayDateFormat {
3010
+ /** Preset format style */
3011
+ preset?: 'short' | 'medium' | 'long' | 'full';
3012
+ /** BCP 47 locale tag */
3013
+ locale?: string;
3014
+ /** Whether to include time */
3015
+ includeTime?: boolean;
3016
+ /** Time style when includeTime is true */
3017
+ timePreset?: 'short' | 'medium' | 'long' | 'full';
3018
+ }
3019
+ /**
3020
+ * Configuration options for FieldDisplay.
3021
+ */
3022
+ interface FieldDisplayConfig {
3023
+ /** Label for the field */
3024
+ label?: string;
3025
+ /** Format string for dates (e.g., 'YYYY-MM-DD') */
3026
+ format?: string;
3027
+ /** Text to show when value is empty/null/undefined */
3028
+ emptyText?: string;
3029
+ /** Badge configuration for type='badge' */
3030
+ badgeConfig?: FieldDisplayBadgeConfig;
3031
+ /** Whether to open links in new tab (for link/email types) */
3032
+ openInNewTab?: boolean;
3033
+ /** Maximum items to show for list type before truncating */
3034
+ maxItems?: number;
3035
+ }
3036
+
3037
+ /**
3038
+ * A read-only display component for rendering values with type-aware formatting.
3039
+ *
3040
+ * @example
3041
+ * ```html
3042
+ * <mcms-field-display [value]="user.name" type="text" label="Name" />
3043
+ * <mcms-field-display [value]="user.createdAt" type="date" label="Created" />
3044
+ * <mcms-field-display [value]="user.status" type="badge" [badgeConfig]="statusConfig" />
3045
+ * <mcms-field-display [value]="product.price" type="number"
3046
+ * [numberFormat]="{ style: 'currency', currency: 'USD' }" label="Price" />
3047
+ * <mcms-field-display [value]="product.seo" type="group" [fieldMeta]="seoMeta" label="SEO" />
3048
+ * ```
3049
+ */
3050
+ declare class FieldDisplay {
3051
+ /** The value to display. */
3052
+ readonly value: _angular_core.InputSignal<unknown>;
3053
+ /** The type of display formatting to use. */
3054
+ readonly type: _angular_core.InputSignal<FieldDisplayType>;
3055
+ /** Optional label shown above the value. */
3056
+ readonly label: _angular_core.InputSignal<string | undefined>;
3057
+ /** Format string for dates. */
3058
+ readonly format: _angular_core.InputSignal<string | undefined>;
3059
+ /** Text to show when value is empty/null/undefined. */
3060
+ readonly emptyText: _angular_core.InputSignal<string>;
3061
+ /** Badge configuration for type='badge'. */
3062
+ readonly badgeConfig: _angular_core.InputSignal<FieldDisplayBadgeConfig | undefined>;
3063
+ /** Whether to open links in new tab. */
3064
+ readonly openInNewTab: _angular_core.InputSignal<boolean>;
3065
+ /** Maximum items to show for list/array-table types. */
3066
+ readonly maxItems: _angular_core.InputSignal<number>;
3067
+ /** Additional CSS classes. */
3068
+ readonly class: _angular_core.InputSignal<string>;
3069
+ /** Sub-field metadata for 'group' and 'array-table' display types. */
3070
+ readonly fieldMeta: _angular_core.InputSignal<FieldDisplayFieldMeta[]>;
3071
+ /** Number format options (e.g. currency, percent). */
3072
+ readonly numberFormat: _angular_core.InputSignal<FieldDisplayNumberFormat | undefined>;
3073
+ /** Date format options (e.g. preset style, locale). */
3074
+ readonly dateFormat: _angular_core.InputSignal<FieldDisplayDateFormat | undefined>;
3075
+ readonly hostClasses: _angular_core.Signal<string>;
3076
+ readonly isEmpty: _angular_core.Signal<boolean>;
3077
+ readonly displayValue: _angular_core.Signal<string>;
3078
+ readonly stringValue: _angular_core.Signal<string>;
3079
+ readonly booleanValue: _angular_core.Signal<boolean>;
3080
+ readonly formattedNumber: _angular_core.Signal<string>;
3081
+ readonly formattedDate: _angular_core.Signal<string>;
3082
+ readonly formattedDateTime: _angular_core.Signal<string>;
3083
+ readonly formattedJson: _angular_core.Signal<string>;
3084
+ readonly badgeVariant: _angular_core.Signal<"default" | "secondary" | "destructive" | "outline" | "success" | "warning">;
3085
+ readonly listValue: _angular_core.Signal<unknown[]>;
3086
+ readonly displayList: _angular_core.Signal<unknown[]>;
3087
+ readonly hasMoreItems: _angular_core.Signal<boolean>;
3088
+ readonly remainingItems: _angular_core.Signal<number>;
3089
+ /** Extract a sub-field value from a group object. */
3090
+ getGroupFieldValue(fieldName: string): string;
3091
+ /** Extract a cell value from an array row. */
3092
+ getArrayCellValue(row: unknown, meta: FieldDisplayFieldMeta): string;
3093
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldDisplay, never>;
3094
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldDisplay, "mcms-field-display", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "badgeConfig": { "alias": "badgeConfig"; "required": false; "isSignal": true; }; "openInNewTab": { "alias": "openInNewTab"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "fieldMeta": { "alias": "fieldMeta"; "required": false; "isSignal": true; }; "numberFormat": { "alias": "numberFormat"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3095
+ }
3096
+
3097
+ /**
3098
+ * @deprecated Use `BlockAdminModeService` via `provideBlockAdminMode()` instead.
3099
+ * When provided and true, block renderer shows admin edit overlays on hover.
3100
+ */
3101
+ declare const BLOCK_ADMIN_MODE: InjectionToken<boolean>;
3102
+ /** Registry mapping block type slugs to their renderer components. */
3103
+ declare const BLOCK_COMPONENT_REGISTRY: InjectionToken<Map<string, Type<unknown>>>;
3104
+ /** Optional fallback component rendered for unregistered block types. */
3105
+ declare const BLOCK_FALLBACK_COMPONENT: InjectionToken<Type<unknown>>;
3106
+ /**
3107
+ * Provide block components for the block renderer via DI.
3108
+ *
3109
+ * @example
3110
+ * ```typescript
3111
+ * providers: [
3112
+ * ...provideBlockComponents({
3113
+ * hero: HeroBlockComponent,
3114
+ * textBlock: TextBlockComponent,
3115
+ * feature: FeatureBlockComponent,
3116
+ * }),
3117
+ * ]
3118
+ * ```
3119
+ */
3120
+ declare function provideBlockComponents(registry: Record<string, Type<unknown>>): Provider[];
3121
+
3122
+ /**
3123
+ * Block Admin Mode Service
3124
+ *
3125
+ * Runtime-togglable service controlling whether block admin mode is active.
3126
+ * When active, the BlockRendererComponent shows hover overlays with edit buttons.
3127
+ *
3128
+ * Unlike the deprecated BLOCK_ADMIN_MODE injection token (compile-time boolean),
3129
+ * this service can be toggled at runtime via query param, admin toolbar, or API.
3130
+ *
3131
+ * The `isAdmin` property can be replaced with a computed signal to derive admin
3132
+ * mode from an external reactive source (e.g., auth service).
3133
+ */
3134
+
3135
+ declare class BlockAdminModeService {
3136
+ private readonly _isAdmin;
3137
+ /** Current admin mode state. Can be replaced with a computed for reactive sources. */
3138
+ isAdmin: Signal<boolean>;
3139
+ enable(): void;
3140
+ disable(): void;
3141
+ toggle(): void;
3142
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BlockAdminModeService, never>;
3143
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<BlockAdminModeService>;
3144
+ }
3145
+ /**
3146
+ * Provide BlockAdminModeService with an initial value or reactive signal source.
3147
+ *
3148
+ * @param initialValue - Whether admin mode starts enabled.
3149
+ * Can be a boolean, a factory function (for SSR safety), or a Signal<boolean>
3150
+ * to reactively derive admin mode from an external source.
3151
+ *
3152
+ * @example
3153
+ * ```typescript
3154
+ * // Static value
3155
+ * providers: [...provideBlockAdminMode(true)]
3156
+ *
3157
+ * // Factory function
3158
+ * providers: [...provideBlockAdminMode(() => isInPreviewIframe())]
3159
+ *
3160
+ * // Reactive signal source
3161
+ * providers: [...provideBlockAdminMode(authService.isAdmin)]
3162
+ * ```
3163
+ */
3164
+ declare function provideBlockAdminMode(initialValue?: boolean | (() => boolean) | Signal<boolean>): Provider[];
3165
+
3166
+ declare class BlockOutletComponent {
3167
+ private readonly vcr;
3168
+ private readonly registry;
3169
+ private readonly fallback;
3170
+ /** The block type slug used to look up the component in the registry. */
3171
+ readonly blockType: _angular_core.InputSignal<string>;
3172
+ /** The block data object passed to the instantiated component via setInput. */
3173
+ readonly blockData: _angular_core.InputSignal<Record<string, unknown>>;
3174
+ private componentRef;
3175
+ constructor();
3176
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BlockOutletComponent, never>;
3177
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BlockOutletComponent, "mcms-block-outlet", never, { "blockType": { "alias": "blockType"; "required": true; "isSignal": true; }; "blockData": { "alias": "blockData"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
3178
+ }
3179
+
3180
+ declare class BlockRendererComponent {
3181
+ /** Array of block data records to render. */
3182
+ readonly blocks: _angular_core.InputSignal<Record<string, unknown>[]>;
3183
+ /** Key used to read the block type from each record. Defaults to 'blockType'. */
3184
+ readonly typeField: _angular_core.InputSignal<string>;
3185
+ /** Emitted when an admin clicks the edit button on a block. Payload is the block index. */
3186
+ readonly editBlock: _angular_core.OutputEmitterRef<number>;
3187
+ /** Whether admin mode is active (shows edit overlays). Prefers service over deprecated token. */
3188
+ private readonly adminModeService;
3189
+ private readonly adminModeToken;
3190
+ readonly adminMode: _angular_core.Signal<boolean>;
3191
+ /** Extract the block type string from a block record. */
3192
+ getBlockType(block: Record<string, unknown>): string | null;
3193
+ /**
3194
+ * Read the `_analytics` group from block data and return a tracking descriptor.
3195
+ * Returns null if no tracking is configured (attribute won't be rendered).
3196
+ */
3197
+ getBlockTrack(block: Record<string, unknown>): string | null;
3198
+ onEditBlock(index: number): void;
3199
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BlockRendererComponent, never>;
3200
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BlockRendererComponent, "mcms-block-renderer", never, { "blocks": { "alias": "blocks"; "required": false; "isSignal": true; }; "typeField": { "alias": "typeField"; "required": false; "isSignal": true; }; }, { "editBlock": "editBlock"; }, never, never, true, never>;
3201
+ }
3202
+
3203
+ interface KitchenSinkUser {
3204
+ id: number;
3205
+ name: string;
3206
+ email: string;
3207
+ role: string;
3208
+ status: string;
3209
+ }
3210
+ /**
3211
+ * Kitchen Sink page showcasing all UI components.
3212
+ *
3213
+ * @example
3214
+ * ```typescript
3215
+ * // In routing:
3216
+ * { path: 'kitchen-sink', loadComponent: () => import('@momentumcms/ui').then(m => m.KitchenSinkPage) }
3217
+ * ```
3218
+ */
3219
+ declare class KitchenSinkPage {
3220
+ private readonly toastService;
3221
+ private readonly confirmationService;
3222
+ readonly currentPage: _angular_core.WritableSignal<number>;
3223
+ readonly commandPaletteOpen: _angular_core.WritableSignal<boolean>;
3224
+ readonly searchQuery: _angular_core.WritableSignal<string>;
3225
+ readonly activeIndex: _angular_core.WritableSignal<number>;
3226
+ readonly searchValue: _angular_core.WritableSignal<string>;
3227
+ readonly fieldDisplayJsonData: {
3228
+ theme: string;
3229
+ language: string;
3230
+ version: string;
3231
+ };
3232
+ readonly commandItems: {
3233
+ value: string;
3234
+ label: string;
3235
+ group: string;
3236
+ }[];
3237
+ readonly filteredSuggestions: _angular_core.Signal<{
3238
+ value: string;
3239
+ label: string;
3240
+ group: string;
3241
+ }[]>;
3242
+ readonly filteredSettings: _angular_core.Signal<{
3243
+ value: string;
3244
+ label: string;
3245
+ group: string;
3246
+ }[]>;
3247
+ readonly allFilteredItems: _angular_core.Signal<{
3248
+ value: string;
3249
+ label: string;
3250
+ group: string;
3251
+ }[]>;
3252
+ handleKeyboardShortcut(event: KeyboardEvent): void;
3253
+ handleCommandKeydown(event: KeyboardEvent): void;
3254
+ selectCommandItem(item: {
3255
+ value: string;
3256
+ label: string;
3257
+ }): void;
3258
+ openCommandPalette(): void;
3259
+ closeCommandPalette(): void;
3260
+ readonly selectOptions: {
3261
+ value: string;
3262
+ label: string;
3263
+ }[];
3264
+ readonly radioOptions: {
3265
+ value: string;
3266
+ label: string;
3267
+ }[];
3268
+ readonly tableData: KitchenSinkUser[];
3269
+ readonly tableColumns: DataTableColumn<KitchenSinkUser>[];
3270
+ readonly tableRowActions: DataTableRowAction<KitchenSinkUser>[];
3271
+ readonly selectedTableItems: _angular_core.WritableSignal<KitchenSinkUser[]>;
3272
+ onTableRowAction(event: {
3273
+ action: DataTableRowAction<KitchenSinkUser>;
3274
+ item: KitchenSinkUser;
3275
+ }): void;
3276
+ showToast(type: 'default' | 'success' | 'error' | 'warning'): void;
3277
+ openDialog(): void;
3278
+ showConfirmation(): void;
3279
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KitchenSinkPage, never>;
3280
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KitchenSinkPage, "mcms-kitchen-sink-page", never, {}, {}, never, never, true, never>;
3281
+ }
3282
+
3283
+ export { AVATAR_SIZE_CLASSES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, BLOCK_ADMIN_MODE, BLOCK_COMPONENT_REGISTRY, BLOCK_FALLBACK_COMPONENT, Badge, BlockAdminModeService, BlockOutletComponent, BlockRendererComponent, BreadcrumbItem, BreadcrumbSeparator, Breadcrumbs, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, ConfirmationDialogComponent, ConfirmationService, DIALOG_DATA, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRef, DialogService, DialogTitle, DropdownLabel, DropdownMenu, DropdownMenuItem, DropdownSeparator, DropdownTrigger, EmptyState, FieldDisplay, Input, KitchenSinkPage, Label, McmsFormField, Menubar, MenubarItem, MenubarSeparator, MenubarSubmenu, MenubarSubmenuItem, Pagination, PopoverContent, PopoverTrigger, Progress, RadioGroup, SPINNER_SIZES, SearchInput, Select, Separator, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarNav, SidebarNavItem, SidebarSection, SidebarService, SidebarTrigger, Skeleton, Spinner, Switch, TOOLTIP_POSITION_MAP, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ToastComponent, ToastContainer, ToastDescription, ToastService, ToastTitle, Toolbar, ToolbarSeparator, ToolbarWidget, ToolbarWidgetGroup, TooltipContent, TooltipTrigger, Tree, TreeItem, TreeItemGroupComponent, generatePaginationItems, getDropdownPositions, getPopoverPositions, provideBlockAdminMode, provideBlockComponents };
3284
+ export type { AccordionValue, AlertVariant, AvatarSize, BadgeVariant, ButtonSize, ButtonVariant, CommandFilterMode, ConfirmationConfig, ConfirmationIcon, ConfirmationVariant, DataTableCellContext, DataTableColumn, DataTableRowAction, DataTableRowActionEvent, DataTableSort, DialogConfig, DropdownMenuAlign, DropdownMenuSide, EmptyStateSize, FieldDisplayBadgeConfig, FieldDisplayConfig, FieldDisplayDateFormat, FieldDisplayFieldMeta, FieldDisplayNumberFormat, FieldDisplayType, InputType, MenubarItemConfig, MenubarOrientation, PaginationItem, PopoverAlign, PopoverSide, RadioOption, SelectOption, SidebarNavItemConfig, SidebarSectionConfig, SidebarState, SpinnerSize, TableFocusMode, TableSelectionMode, TableWrapMode, TabsOrientation, TabsSelectionMode, Toast, ToastConfig, ToastPosition, ToastVariant, ToolbarOrientation, TooltipPosition, TreeNode, ValidationError };