@a2ui/angular 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,46 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Type, InjectionToken, OnDestroy, Signal, OnInit, DestroyRef, NgZone } from '@angular/core';
3
- import { Catalog, ComponentApi, A2uiClientAction, A2uiMessage, SurfaceGroupModel, ComponentContext, Signal as Signal$1, FunctionImplementation } from '@a2ui/web_core/v0_9';
2
+ import { Signal, Type, InjectionToken, OnDestroy, DestroyRef, NgZone } from '@angular/core';
3
+ import * as _a2ui_web_core_v0_9 from '@a2ui/web_core/v0_9';
4
+ import { ComponentApi, Catalog, A2uiClientAction, A2uiMessage, SurfaceGroupModel, ComponentContext, DataBindingSchema, FunctionCallSchema, Signal as Signal$1, FunctionImplementation } from '@a2ui/web_core/v0_9';
4
5
  export { signal as preactSignal } from '@a2ui/web_core/v0_9';
6
+ import * as _a2ui_angular_src_v0_9 from '@a2ui/angular/src/v0_9';
7
+ import * as zod from 'zod';
8
+ import { z } from 'zod';
9
+ import { TextApi, RowApi, ColumnApi, ButtonApi, TextFieldApi, ImageApi, IconApi, VideoApi, AudioPlayerApi, ListApi, CardApi, TabsApi, ModalApi, DividerApi, CheckBoxApi, ChoicePickerApi, SliderApi, DateTimeInputApi } from '@a2ui/web_core/v0_9/basic_catalog';
5
10
  export { BASIC_FUNCTIONS } from '@a2ui/web_core/v0_9/basic_catalog';
6
11
 
12
+ /** Describes the properties that a Catalog component needs to implement. For ease of use, please extend CatalogComponent. */
13
+ interface CatalogComponentInstance {
14
+ readonly props: Signal<Record<string, unknown>>;
15
+ readonly surfaceId: Signal<string>;
16
+ readonly componentId: Signal<string>;
17
+ readonly dataContextPath: Signal<string>;
18
+ }
19
+ /**
20
+ * Base class for A2UI catalog component in Angular.
21
+ *
22
+ * All Angular catalog components should extend this base class,
23
+ * which provides type safe access to props() and other common
24
+ * fields.
25
+ */
26
+ declare abstract class CatalogComponent<Api extends ComponentApi> implements CatalogComponentInstance {
27
+ /**
28
+ * Reactive properties resolved from the A2UI ComponentModel.
29
+ */
30
+ readonly props: _angular_core.InputSignal<_a2ui_angular_src_v0_9.ExtendedProps<zod.TypeOf<Api["schema"]>> extends infer T ? { [K in keyof T]: K extends "children" ? _a2ui_angular_src_v0_9.BoundProperty<_a2ui_angular_src_v0_9.Child[]> : K extends "child" | "trigger" | "content" ? _a2ui_angular_src_v0_9.BoundProperty<_a2ui_angular_src_v0_9.Child> : _a2ui_angular_src_v0_9.BoundProperty<Exclude<T[K], {
31
+ path: string;
32
+ } | {
33
+ call: string;
34
+ args: Record<string, any>;
35
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
36
+ }>>; } : never>;
37
+ readonly surfaceId: _angular_core.InputSignal<string>;
38
+ readonly componentId: _angular_core.InputSignal<string>;
39
+ readonly dataContextPath: _angular_core.InputSignal<string>;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CatalogComponent<any>, never>;
41
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CatalogComponent<any>, never, never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": true; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
42
+ }
43
+
7
44
  /**
8
45
  * Copyright 2026 Google LLC
9
46
  *
@@ -20,6 +57,14 @@ export { BASIC_FUNCTIONS } from '@a2ui/web_core/v0_9/basic_catalog';
20
57
  * limitations under the License.
21
58
  */
22
59
 
60
+ /**
61
+ * Temporary type used during basic catalog schema alignment to bypass strict type checking.
62
+ *
63
+ * To be removed once all properties implemented in Angular basic catalog components conform
64
+ * to the basic catalog schema.
65
+ * @see https://github.com/google/A2UI/issues/1303
66
+ */
67
+ type AnyDuringSchemaAlignment = any;
23
68
  /**
24
69
  * Extends the generic {@link ComponentApi} to include Angular-specific component metadata.
25
70
  */
@@ -30,7 +75,7 @@ interface AngularComponentImplementation extends ComponentApi {
30
75
  * This class must be an Angular {@link Type} (e.g., a standalone component class)
31
76
  * that accepts `props`, `surfaceId`, and `dataContextPath` as inputs.
32
77
  */
33
- readonly component: Type<any>;
78
+ readonly component: Type<CatalogComponentInstance>;
34
79
  }
35
80
  /**
36
81
  * A collection of Angular component and function implementations mapped to
@@ -108,6 +153,33 @@ declare class A2uiRendererService implements OnDestroy {
108
153
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<A2uiRendererService>;
109
154
  }
110
155
 
156
+ /** Represents a reference to a child component. */
157
+ interface Child {
158
+ id: string;
159
+ basePath: string;
160
+ }
161
+ /**
162
+ * Binds A2UI ComponentModel properties to reactive Angular Signals.
163
+ *
164
+ * This service is used by {@link ComponentHostComponent} to resolve data bindings
165
+ * from the A2UI DataContext and expose them as Angular Signals. It ensures that
166
+ * property updates from the A2UI protocol are correctly reflected in Angular
167
+ * components and provides callbacks for updating the data model.
168
+ */
169
+ declare class ComponentBinder {
170
+ private destroyRef;
171
+ private ngZone;
172
+ /**
173
+ * Binds all properties of a component to an object of Angular Signals.
174
+ *
175
+ * @param context The ComponentContext containing the model and data context.
176
+ * @returns An object where each key corresponds to a component prop and its value is an Angular Signal.
177
+ */
178
+ bind(context: ComponentContext): Record<string, BoundProperty>;
179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentBinder, never>;
180
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ComponentBinder>;
181
+ }
182
+
111
183
  /**
112
184
  * Copyright 2026 Google LLC
113
185
  *
@@ -124,6 +196,11 @@ declare class A2uiRendererService implements OnDestroy {
124
196
  * limitations under the License.
125
197
  */
126
198
 
199
+ /** Data structure that represents a template used to render a collection of children. */
200
+ interface ComponentTemplate {
201
+ id?: string;
202
+ path?: string;
203
+ }
127
204
  /**
128
205
  * Represents a component property bound to an Angular Signal and update logic.
129
206
  *
@@ -133,7 +210,7 @@ declare class A2uiRendererService implements OnDestroy {
133
210
  *
134
211
  * @template T The type of the property value.
135
212
  */
136
- interface BoundProperty<T = any> {
213
+ interface BoundProperty<T = unknown> {
137
214
  /**
138
215
  * The reactive Angular Signal containing the current resolved value.
139
216
  *
@@ -146,7 +223,9 @@ interface BoundProperty<T = any> {
146
223
  *
147
224
  * This may be a literal value or a data binding path object.
148
225
  */
149
- readonly raw: any;
226
+ readonly raw: unknown;
227
+ /** This field is present for "children" props that define their children using a template. */
228
+ readonly template?: ComponentTemplate;
150
229
  /**
151
230
  * Callback to update the value in the A2UI DataContext.
152
231
  *
@@ -156,6 +235,36 @@ interface BoundProperty<T = any> {
156
235
  */
157
236
  readonly onUpdate: (newValue: T) => void;
158
237
  }
238
+ type DataBindingType = z.infer<typeof DataBindingSchema>;
239
+ type FunctionCallType = z.infer<typeof FunctionCallSchema>;
240
+ type DynamicSchemaValueToRaw<Input> = Exclude<Input, DataBindingType | FunctionCallType>;
241
+ type InferredInterfaceToProps<InferredSchema> = {
242
+ [K in keyof InferredSchema]: K extends 'children' ? BoundProperty<Child[]> : K extends 'child' | 'trigger' | 'content' ? BoundProperty<Child> : BoundProperty<DynamicSchemaValueToRaw<InferredSchema[K]>>;
243
+ };
244
+ interface CheckProps {
245
+ isValid: boolean;
246
+ validationErrors: string[];
247
+ }
248
+ /** The binder can add some properties to the Props object. This util adds them to the type. */
249
+ type ExtendedProps<ComponentProps extends {
250
+ [key: string]: unknown;
251
+ }> = 'checks' extends keyof ComponentProps ? Omit<ComponentProps, 'checks'> & CheckProps : ComponentProps;
252
+ /**
253
+ * Utility to convert a component Api Type to the props Type, where the
254
+ * values are wrapped in BoundProperty. This is used to correctly type the props()
255
+ * in a UI component
256
+ *
257
+ * @example
258
+ * export const TextComponentApi = {
259
+ * name: 'Text',
260
+ * schema: z.object({
261
+ * text: z.string(),
262
+ * })
263
+ * .strict(),
264
+ * } satisfies ComponentApi;
265
+ * export type TextComponentProps = ComponentApiToProps<typeof TextComponentApi>; // outputs { text: BoundProperty<string>; }
266
+ */
267
+ type ComponentApiToProps<Api extends ComponentApi> = InferredInterfaceToProps<ExtendedProps<z.infer<Api['schema']>>>;
159
268
 
160
269
  /**
161
270
  * Dynamically renders an A2UI component as defined in the current surface model.
@@ -167,7 +276,7 @@ interface BoundProperty<T = any> {
167
276
  * Usually, you'll use the higher-level {@link SurfaceComponent} which automatically
168
277
  * sets up a host for the 'root' component.
169
278
  */
170
- declare class ComponentHostComponent implements OnInit {
279
+ declare class ComponentHostComponent {
171
280
  /** The key of the component to render, either an ID string or an object with ID and basePath. Defaults to 'root'. */
172
281
  componentKey: _angular_core.InputSignal<string | {
173
282
  id: string;
@@ -179,15 +288,22 @@ declare class ComponentHostComponent implements OnInit {
179
288
  private readonly binder;
180
289
  private readonly destroyRef;
181
290
  private readonly cdr;
182
- protected componentType: Type<any> | null;
291
+ protected componentType: Type<unknown> | null;
183
292
  protected props: Record<string, BoundProperty>;
184
293
  private context?;
185
- protected weight: _angular_core.WritableSignal<string | number | null>;
186
- get flexStyle(): string;
187
294
  protected resolvedComponentId: string;
188
295
  protected resolvedDataContextPath: string;
189
- ngOnInit(): void;
296
+ private propsSub?;
297
+ private createSub?;
298
+ constructor();
299
+ private setupComponent;
190
300
  private initializeComponent;
301
+ /**
302
+ * Resets the component host state, unsubscribing from active subscriptions
303
+ * and clearing component properties to avoid rendering stale data while
304
+ * a new component is being loaded.
305
+ */
306
+ private resetState;
191
307
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentHostComponent, never>;
192
308
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ComponentHostComponent, "a2ui-v09-component-host", never, { "componentKey": { "alias": "componentKey"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
193
309
  }
@@ -211,33 +327,6 @@ declare class SurfaceComponent {
211
327
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SurfaceComponent, "a2ui-v09-surface", never, { "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
212
328
  }
213
329
 
214
- /** Represents a reference to a child component. */
215
- interface Child {
216
- id: string;
217
- basePath: string;
218
- }
219
- /**
220
- * Binds A2UI ComponentModel properties to reactive Angular Signals.
221
- *
222
- * This service is used by {@link ComponentHostComponent} to resolve data bindings
223
- * from the A2UI DataContext and expose them as Angular Signals. It ensures that
224
- * property updates from the A2UI protocol are correctly reflected in Angular
225
- * components and provides callbacks for updating the data model.
226
- */
227
- declare class ComponentBinder {
228
- private destroyRef;
229
- private ngZone;
230
- /**
231
- * Binds all properties of a component to an object of Angular Signals.
232
- *
233
- * @param context The ComponentContext containing the model and data context.
234
- * @returns An object where each key corresponds to a component prop and its value is an Angular Signal.
235
- */
236
- bind(context: ComponentContext): Record<string, BoundProperty>;
237
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentBinder, never>;
238
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<ComponentBinder>;
239
- }
240
-
241
330
  /**
242
331
  * Copyright 2026 Google LLC
243
332
  *
@@ -266,7 +355,7 @@ declare function toAngularSignal<T>(preactSignal: Signal$1<T>, destroyRef: Destr
266
355
  * @param index The index of the child component.
267
356
  * @returns A fully normalized absolute path for the indexed child.
268
357
  */
269
- declare function getNormalizedPath(path: string, dataContextPath: string, index: number): string;
358
+ declare function getNormalizedPath(path: string | undefined, dataContextPath: string, index: number): string;
270
359
 
271
360
  interface MarkdownRendererOptions {
272
361
  tagClassMap?: Record<string, string>;
@@ -294,6 +383,7 @@ declare function provideMarkdownRenderer(renderFn?: (markdown: string, options?:
294
383
 
295
384
  /**
296
385
  * The set of default Angular implementations for each component in the basic catalog.
386
+ * Using string literals as keys, to survive property renaming, as these names need to match the JSON payload.
297
387
  */
298
388
  declare const DEFAULT_COMPONENT_IMPLEMENTATIONS: Record<string, AngularComponentImplementation>;
299
389
  /**
@@ -344,28 +434,33 @@ declare class BasicCatalog extends BasicCatalogBase {
344
434
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<BasicCatalog>;
345
435
  }
346
436
 
347
- /**
348
- * Copyright 2026 Google LLC
349
- *
350
- * Licensed under the Apache License, Version 2.0 (the "License");
351
- * you may not use this file except in compliance with the License.
352
- * You may obtain a copy of the License at
353
- *
354
- * http://www.apache.org/licenses/LICENSE-2.0
355
- *
356
- * Unless required by applicable law or agreed to in writing, software
357
- * distributed under the License is distributed on an "AS IS" BASIS,
358
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
359
- * See the License for the specific language governing permissions and
360
- * limitations under the License.
361
- */
362
437
  /**
363
438
  * Base class for A2UI basic catalog components in Angular.
364
439
  *
365
440
  * Automatically injects the basic catalog styles when the component is instantiated.
366
- */
367
- declare abstract class BasicCatalogComponent {
441
+ * Also binds the primary brand color to the host element.
442
+ */
443
+ declare abstract class BasicCatalogComponent<Api extends ComponentApi> extends CatalogComponent<Api> {
444
+ protected rendererService: A2uiRendererService;
445
+ readonly surface: _angular_core.Signal<_a2ui_web_core_v0_9.SurfaceModel<_a2ui_angular_src_v0_9.AngularComponentImplementation> | undefined>;
446
+ readonly theme: _angular_core.Signal<any>;
447
+ readonly primaryColor: _angular_core.Signal<any>;
448
+ /** Weight is applied as flex css property on the component host HTML element. */
449
+ protected readonly weight: _angular_core.Signal<NonNullable<Exclude<_a2ui_angular_src_v0_9.ExtendedProps<zod.TypeOf<Api["schema"]>>[string], {
450
+ path: string;
451
+ } | {
452
+ call: string;
453
+ args: Record<string, any>;
454
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
455
+ }>> | null>;
368
456
  constructor();
457
+ /**
458
+ * Binds the flex style to the host element based on the weight.
459
+ */
460
+ get flexStyle(): string | null;
461
+ get primaryColorStyle(): string | null;
462
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BasicCatalogComponent<any>, never>;
463
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BasicCatalogComponent<any>, never, never, {}, {}, never, never, true, never>;
369
464
  }
370
465
 
371
466
  /**
@@ -384,26 +479,15 @@ declare abstract class BasicCatalogComponent {
384
479
  * - `--a2ui-text-a-font-weight`: Controls the font weight for links.
385
480
  * - Font sizes: `--a2ui-font-size-2xl`, `--a2ui-font-size-xl`, `--a2ui-font-size-l`, `--a2ui-font-size-m`, `--a2ui-font-size-s`, `--a2ui-font-size-xs`.
386
481
  */
387
- declare class TextComponent extends BasicCatalogComponent {
388
- /**
389
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
390
- *
391
- * Expected properties:
392
- * - `text`: The string content to display.
393
- * - `variant`: A hint for the base text style ('h1', 'h2', 'h3', 'h4', 'h5', 'caption', 'body').
394
- */
395
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
396
- surfaceId: _angular_core.InputSignal<string>;
397
- componentId: _angular_core.InputSignal<string | undefined>;
398
- dataContextPath: _angular_core.InputSignal<string>;
482
+ declare class TextComponent extends BasicCatalogComponent<typeof TextApi> {
399
483
  private markdownRenderer;
400
- variant: _angular_core.Signal<any>;
401
- text: _angular_core.Signal<any>;
484
+ readonly variant: _angular_core.Signal<"h1" | "h2" | "h3" | "h4" | "h5" | "caption" | "body">;
485
+ readonly text: _angular_core.Signal<string>;
402
486
  resolvedText: _angular_core.WritableSignal<string>;
403
487
  private renderRequestId;
404
488
  constructor();
405
489
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextComponent, never>;
406
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextComponent, "a2ui-v09-text", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
490
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextComponent, "a2ui-v09-text", never, {}, {}, never, never, true, never>;
407
491
  }
408
492
 
409
493
  /**
@@ -415,31 +499,19 @@ declare class TextComponent extends BasicCatalogComponent {
415
499
  * Supported CSS variables:
416
500
  * - `--a2ui-row-gap`: Controls the gap between items in the row. Defaults to `--a2ui-spacing-m` (16px).
417
501
  */
418
- declare class RowComponent extends BasicCatalogComponent {
419
- /**
420
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
421
- *
422
- * Expected properties:
423
- * - `children`: A list of component IDs OR a repeating collection definition.
424
- * - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').
425
- * - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').
426
- */
427
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
428
- surfaceId: _angular_core.InputSignal<string>;
429
- componentId: _angular_core.InputSignal<string | undefined>;
430
- dataContextPath: _angular_core.InputSignal<string>;
431
- protected justify: _angular_core.Signal<any>;
432
- protected align: _angular_core.Signal<any>;
433
- protected children: _angular_core.Signal<any[]>;
434
- protected isRepeating: _angular_core.Signal<boolean>;
435
- protected templateId: _angular_core.Signal<any>;
436
- protected normalizedChildren: _angular_core.Signal<{
502
+ declare class RowComponent extends BasicCatalogComponent<typeof RowApi> {
503
+ protected readonly justify: _angular_core.Signal<string | undefined>;
504
+ protected readonly align: _angular_core.Signal<string | undefined>;
505
+ protected readonly children: _angular_core.Signal<_a2ui_angular_src_v0_9.Child[]>;
506
+ protected readonly isRepeating: _angular_core.Signal<boolean>;
507
+ protected readonly templateId: _angular_core.Signal<string | undefined>;
508
+ protected readonly normalizedChildren: _angular_core.Signal<{
437
509
  id: string;
438
510
  basePath: string;
439
511
  }[]>;
440
512
  protected getNormalizedPath(index: number): string;
441
513
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RowComponent, never>;
442
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RowComponent, "a2ui-v09-row", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
514
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RowComponent, "a2ui-v09-row", never, {}, {}, never, never, true, never>;
443
515
  }
444
516
 
445
517
  /**
@@ -451,31 +523,19 @@ declare class RowComponent extends BasicCatalogComponent {
451
523
  * Supported CSS variables:
452
524
  * - `--a2ui-column-gap`: Controls the gap between items in the column. Defaults to `--a2ui-spacing-m` (16px).
453
525
  */
454
- declare class ColumnComponent extends BasicCatalogComponent {
455
- /**
456
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
457
- *
458
- * Expected properties:
459
- * - `children`: A list of component IDs OR a repeating collection definition.
460
- * - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').
461
- * - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').
462
- */
463
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
464
- surfaceId: _angular_core.InputSignal<string>;
465
- componentId: _angular_core.InputSignal<string | undefined>;
466
- dataContextPath: _angular_core.InputSignal<string>;
467
- protected justify: _angular_core.Signal<any>;
468
- protected align: _angular_core.Signal<any>;
469
- protected children: _angular_core.Signal<any[]>;
470
- protected isRepeating: _angular_core.Signal<boolean>;
471
- protected templateId: _angular_core.Signal<any>;
472
- protected normalizedChildren: _angular_core.Signal<{
526
+ declare class ColumnComponent extends BasicCatalogComponent<typeof ColumnApi> {
527
+ protected readonly justify: _angular_core.Signal<string | undefined>;
528
+ protected readonly align: _angular_core.Signal<string | undefined>;
529
+ protected readonly children: _angular_core.Signal<_a2ui_angular_src_v0_9.Child[]>;
530
+ protected readonly isRepeating: _angular_core.Signal<boolean>;
531
+ protected readonly templateId: _angular_core.Signal<string | undefined>;
532
+ protected readonly normalizedChildren: _angular_core.Signal<{
473
533
  id: string;
474
534
  basePath: string;
475
535
  }[]>;
476
536
  protected getNormalizedPath(index: number): string;
477
537
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnComponent, never>;
478
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColumnComponent, "a2ui-v09-column", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
538
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColumnComponent, "a2ui-v09-column", never, {}, {}, never, never, true, never>;
479
539
  }
480
540
 
481
541
  /**
@@ -493,27 +553,30 @@ declare class ColumnComponent extends BasicCatalogComponent {
493
553
  * - `--a2ui-button-box-shadow`: Controls the box shadow.
494
554
  * - `--a2ui-button-font-weight`: Controls the font weight.
495
555
  */
496
- declare class ButtonComponent extends BasicCatalogComponent {
497
- /**
498
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
499
- *
500
- * Expected properties:
501
- * - `child`: The ID of the component to render inside the button.
502
- * - `variant`: Button style variant ('default', 'primary', 'borderless').
503
- * - `action`: The A2UI action to dispatch on click.
504
- * - `checks`: Optional validation rules.
505
- */
506
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
507
- surfaceId: _angular_core.InputSignal<string>;
508
- componentId: _angular_core.InputSignal<string>;
509
- dataContextPath: _angular_core.InputSignal<string>;
510
- private rendererService;
511
- variant: _angular_core.Signal<any>;
512
- child: _angular_core.Signal<any>;
513
- action: _angular_core.Signal<any>;
556
+ declare class ButtonComponent extends BasicCatalogComponent<typeof ButtonApi> {
557
+ readonly variant: _angular_core.Signal<"default" | "primary" | "borderless">;
558
+ readonly child: _angular_core.Signal<_a2ui_angular_src_v0_9.Child>;
559
+ readonly action: _angular_core.Signal<{
560
+ event: {
561
+ name: string;
562
+ context?: Record<string, string | number | boolean | any[] | {
563
+ path: string;
564
+ } | {
565
+ call: string;
566
+ args: Record<string, any>;
567
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
568
+ }> | undefined;
569
+ };
570
+ } | {
571
+ functionCall: {
572
+ call: string;
573
+ args: Record<string, any>;
574
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
575
+ };
576
+ }>;
514
577
  handleClick(): void;
515
578
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
516
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "a2ui-v09-button", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": true; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
579
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "a2ui-v09-button", never, {}, {}, never, never, true, never>;
517
580
  }
518
581
 
519
582
  /**
@@ -533,29 +596,15 @@ declare class ButtonComponent extends BasicCatalogComponent {
533
596
  * - `--a2ui-textfield-label-font-size`: Controls the font size of the label.
534
597
  * - `--a2ui-textfield-label-font-weight`: Controls the font weight of the label.
535
598
  */
536
- declare class TextFieldComponent extends BasicCatalogComponent {
537
- /**
538
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
539
- *
540
- * Expected properties:
541
- * - `value`: The current string value of the input.
542
- * - `label`: Optional label text to display above the input.
543
- * - `placeholder`: Hint text shown when the input is empty.
544
- * - `variant`: Input type variant ('default', 'obscured' (password), 'number').
545
- * - `checks`: Optional validation rules.
546
- */
547
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
548
- surfaceId: _angular_core.InputSignal<string>;
549
- componentId: _angular_core.InputSignal<string | undefined>;
550
- dataContextPath: _angular_core.InputSignal<string>;
551
- label: _angular_core.Signal<any>;
552
- value: _angular_core.Signal<any>;
553
- placeholder: _angular_core.Signal<any>;
554
- variant: _angular_core.Signal<any>;
555
- inputType: _angular_core.Signal<"text" | "password" | "number">;
599
+ declare class TextFieldComponent extends BasicCatalogComponent<typeof TextFieldApi> {
600
+ readonly label: _angular_core.Signal<string>;
601
+ readonly value: _angular_core.Signal<string>;
602
+ readonly placeholder: _angular_core.Signal<any>;
603
+ readonly variant: _angular_core.Signal<"number" | "shortText" | "longText" | "obscured" | undefined>;
604
+ readonly inputType: _angular_core.Signal<"text" | "number" | "password">;
556
605
  handleInput(event: Event): void;
557
606
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
558
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "a2ui-v09-text-field", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
607
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "a2ui-v09-text-field", never, {}, {}, never, never, true, never>;
559
608
  }
560
609
 
561
610
  /**
@@ -571,26 +620,13 @@ declare class TextFieldComponent extends BasicCatalogComponent {
571
620
  * - `--a2ui-image-large-feature-size`: Max-height of largeFeature variant.
572
621
  * - `--a2ui-image-header-size`: Height of header variant.
573
622
  */
574
- declare class ImageComponent extends BasicCatalogComponent {
575
- /**
576
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
577
- *
578
- * Expected properties:
579
- * - `url`: The absolute URL of the image.
580
- * - `description`: Accessibility text for the image.
581
- * - `fit`: Object-fit mode ('cover', 'contain', 'fill', 'none', 'scale-down').
582
- * - `variant`: Style variant ('default', 'circle', 'rounded', 'icon', 'avatar', 'smallFeature', 'mediumFeature', 'largeFeature', 'header').
583
- */
584
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
585
- surfaceId: _angular_core.InputSignal<string>;
586
- componentId: _angular_core.InputSignal<string | undefined>;
587
- dataContextPath: _angular_core.InputSignal<string>;
588
- url: _angular_core.Signal<any>;
589
- description: _angular_core.Signal<any>;
590
- fit: _angular_core.Signal<any>;
591
- variant: _angular_core.Signal<any>;
623
+ declare class ImageComponent extends BasicCatalogComponent<typeof ImageApi> {
624
+ readonly url: _angular_core.Signal<string>;
625
+ readonly description: _angular_core.Signal<string>;
626
+ readonly fit: _angular_core.Signal<"fill" | "contain" | "cover" | "none" | "scaleDown">;
627
+ readonly variant: _angular_core.Signal<"default" | "icon" | "avatar" | "smallFeature" | "mediumFeature" | "largeFeature" | "header">;
592
628
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImageComponent, never>;
593
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImageComponent, "a2ui-v09-image", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImageComponent, "a2ui-v09-image", never, {}, {}, never, never, true, never>;
594
630
  }
595
631
 
596
632
  /**
@@ -604,26 +640,16 @@ declare class ImageComponent extends BasicCatalogComponent {
604
640
  * - `--a2ui-icon-color`: Controls the color of the icon.
605
641
  * - `--a2ui-icon-font-variation-settings`: Controls font variation settings (e.g. FILL).
606
642
  */
607
- declare class IconComponent extends BasicCatalogComponent {
608
- /**
609
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
610
- *
611
- * Expected properties:
612
- * - `name`: The name of the icon (e.g., 'home', 'settings') OR an object
613
- * with a `path` property for SVG icons.
614
- * - `color`: The CSS color to apply to the icon.
615
- */
616
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
617
- surfaceId: _angular_core.InputSignal<string>;
618
- componentId: _angular_core.InputSignal<string | undefined>;
619
- dataContextPath: _angular_core.InputSignal<string>;
620
- color: _angular_core.Signal<any>;
621
- iconNameRaw: _angular_core.Signal<any>;
622
- isPath: _angular_core.Signal<boolean>;
623
- path: _angular_core.Signal<any>;
624
- iconName: _angular_core.Signal<string>;
643
+ declare class IconComponent extends BasicCatalogComponent<typeof IconApi> {
644
+ readonly color: _angular_core.Signal<any>;
645
+ readonly iconNameRaw: _angular_core.Signal<"search" | "event" | "play" | "rewind" | "favoriteOff" | "starOff" | "accountCircle" | "add" | "arrowBack" | "arrowForward" | "attachFile" | "calendarToday" | "call" | "camera" | "check" | "close" | "delete" | "download" | "edit" | "error" | "fastForward" | "favorite" | "folder" | "help" | "home" | "info" | "locationOn" | "lock" | "lockOpen" | "mail" | "menu" | "moreVert" | "moreHoriz" | "notificationsOff" | "notifications" | "pause" | "payment" | "person" | "phone" | "photo" | "print" | "refresh" | "send" | "settings" | "share" | "shoppingCart" | "skipNext" | "skipPrevious" | "star" | "starHalf" | "stop" | "upload" | "visibility" | "visibilityOff" | "volumeDown" | "volumeMute" | "volumeOff" | "volumeUp" | "warning" | {
646
+ svgPath: string;
647
+ }>;
648
+ readonly isSvgPath: _angular_core.Signal<boolean>;
649
+ readonly svgPath: _angular_core.Signal<string>;
650
+ readonly iconName: _angular_core.Signal<string>;
625
651
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
626
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "a2ui-v09-icon", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
652
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "a2ui-v09-icon", never, {}, {}, never, never, true, never>;
627
653
  }
628
654
 
629
655
  /**
@@ -634,22 +660,11 @@ declare class IconComponent extends BasicCatalogComponent {
634
660
  * Supported CSS variables:
635
661
  * - `--a2ui-video-border-radius`: Controls the border radius of the video element.
636
662
  */
637
- declare class VideoComponent extends BasicCatalogComponent {
638
- /**
639
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
640
- *
641
- * Expected properties:
642
- * - `url`: The absolute URL of the video file.
643
- * - `posterUrl`: The URL of an image to show before the video starts.
644
- */
645
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
646
- surfaceId: _angular_core.InputSignal<string>;
647
- componentId: _angular_core.InputSignal<string | undefined>;
648
- dataContextPath: _angular_core.InputSignal<string>;
649
- url: _angular_core.Signal<any>;
650
- posterUrl: _angular_core.Signal<any>;
663
+ declare class VideoComponent extends BasicCatalogComponent<typeof VideoApi> {
664
+ readonly url: _angular_core.Signal<string>;
665
+ readonly posterUrl: _angular_core.Signal<any>;
651
666
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoComponent, never>;
652
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoComponent, "a2ui-v09-video", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
667
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoComponent, "a2ui-v09-video", never, {}, {}, never, never, true, never>;
653
668
  }
654
669
 
655
670
  /**
@@ -662,59 +677,36 @@ declare class VideoComponent extends BasicCatalogComponent {
662
677
  * - `--a2ui-audioplayer-border-radius`: Controls the border radius. Defaults to `0`.
663
678
  * - `--a2ui-audioplayer-padding`: Controls the padding. Defaults to `0`.
664
679
  */
665
- declare class AudioPlayerComponent extends BasicCatalogComponent {
666
- /**
667
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
668
- *
669
- * Expected properties:
670
- * - `url`: The absolute URL of the audio file.
671
- * - `description`: Optional text to display above the player.
672
- */
673
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
674
- surfaceId: _angular_core.InputSignal<string | undefined>;
675
- componentId: _angular_core.InputSignal<string | undefined>;
676
- dataContextPath: _angular_core.InputSignal<string | undefined>;
677
- description: _angular_core.Signal<any>;
678
- url: _angular_core.Signal<any>;
680
+ declare class AudioPlayerComponent extends BasicCatalogComponent<typeof AudioPlayerApi> {
681
+ readonly description: _angular_core.Signal<string | undefined>;
682
+ readonly url: _angular_core.Signal<string>;
679
683
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AudioPlayerComponent, never>;
680
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AudioPlayerComponent, "a2ui-v09-audio-player", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": false; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
684
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AudioPlayerComponent, "a2ui-v09-audio-player", never, {}, {}, never, never, true, never>;
681
685
  }
682
686
 
683
687
  /**
684
688
  * Angular implementation of the A2UI List component (v0.9).
685
689
  *
686
690
  * Renders a list of child components with support for ordered, unordered,
687
- * and unstyled layouts in both vertical and horizontal orientations.
691
+ * and unstyled layouts in both vertical and horizontal directions.
688
692
  *
689
693
  * Supported CSS variables:
690
694
  * - `--a2ui-list-gap`: Controls the gap between items.
691
695
  * - `--a2ui-list-padding`: Controls the padding (applied to padding-inline-start).
692
696
  */
693
- declare class ListComponent extends BasicCatalogComponent {
694
- /**
695
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
696
- *
697
- * Expected properties:
698
- * - `children`: A list of component IDs to render as list items.
699
- * - `listStyle`: The type of list ('ordered', 'unordered', 'none').
700
- * - `orientation`: The layout direction ('vertical', 'horizontal').
701
- */
702
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
703
- surfaceId: _angular_core.InputSignal<string>;
704
- componentId: _angular_core.InputSignal<string | undefined>;
705
- dataContextPath: _angular_core.InputSignal<string>;
706
- listStyle: _angular_core.Signal<any>;
707
- orientation: _angular_core.Signal<any>;
708
- children: _angular_core.Signal<any[]>;
709
- listTag: _angular_core.Signal<"ol" | "ul" | "div">;
710
- styleType: _angular_core.Signal<"" | "none">;
697
+ declare class ListComponent extends BasicCatalogComponent<typeof ListApi> {
698
+ readonly listStyle: _angular_core.Signal<"none" | "ordered" | "unordered" | undefined>;
699
+ readonly direction: _angular_core.Signal<"horizontal" | "vertical">;
700
+ readonly children: _angular_core.Signal<Child[]>;
701
+ readonly listTag: _angular_core.Signal<"ol" | "ul" | "div">;
702
+ readonly styleType: _angular_core.Signal<"" | "none">;
711
703
  /**
712
704
  * Track-by function to ensure stable change detection for list items.
713
705
  * Uses the full resolved path (`basePath/id`) to uniquely identify items.
714
706
  */
715
707
  readonly trackBy: (index: number, item: Child) => string;
716
708
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListComponent, never>;
717
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListComponent, "a2ui-v09-list", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
709
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListComponent, "a2ui-v09-list", never, {}, {}, never, never, true, never>;
718
710
  }
719
711
 
720
712
  /**
@@ -730,20 +722,10 @@ declare class ListComponent extends BasicCatalogComponent {
730
722
  * - `--a2ui-card-border`: Controls the border.
731
723
  * - `--a2ui-card-margin`: Controls the margin.
732
724
  */
733
- declare class CardComponent extends BasicCatalogComponent {
734
- /**
735
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
736
- *
737
- * Expected properties:
738
- * - `child`: The component ID to render inside the card.
739
- */
740
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
741
- surfaceId: _angular_core.InputSignal<string>;
742
- componentId: _angular_core.InputSignal<string | undefined>;
743
- dataContextPath: _angular_core.InputSignal<string>;
744
- child: _angular_core.Signal<any>;
725
+ declare class CardComponent extends BasicCatalogComponent<typeof CardApi> {
726
+ readonly child: _angular_core.Signal<_a2ui_angular_src_v0_9.Child>;
745
727
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
746
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "a2ui-v09-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
728
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "a2ui-v09-card", never, {}, {}, never, never, true, never>;
747
729
  }
748
730
 
749
731
  /**
@@ -760,27 +742,35 @@ declare class CardComponent extends BasicCatalogComponent {
760
742
  * - `--a2ui-tabs-header-color-active`: Controls the text color of the active tab button.
761
743
  * - `--a2ui-tabs-content-padding`: Controls the padding of the tab content.
762
744
  */
763
- declare class TabsComponent extends BasicCatalogComponent {
764
- /**
765
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
766
- *
767
- * Expected properties:
768
- * - `tabs`: A list of tab objects, each containing a `label` and `content` ID.
769
- */
770
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
771
- surfaceId: _angular_core.InputSignal<string>;
772
- componentId: _angular_core.InputSignal<string | undefined>;
773
- dataContextPath: _angular_core.InputSignal<string>;
745
+ declare class TabsComponent extends BasicCatalogComponent<typeof TabsApi> {
774
746
  activeTabIndex: _angular_core.WritableSignal<number>;
775
- tabs: _angular_core.Signal<any>;
776
- activeTab: _angular_core.Signal<any>;
777
- protected normalizedActiveTabContent: _angular_core.Signal<{
747
+ readonly tabs: _angular_core.Signal<{
748
+ title: string | {
749
+ path: string;
750
+ } | {
751
+ call: string;
752
+ args: Record<string, any>;
753
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
754
+ };
755
+ child: string;
756
+ }[]>;
757
+ readonly activeTab: _angular_core.Signal<{
758
+ title: string | {
759
+ path: string;
760
+ } | {
761
+ call: string;
762
+ args: Record<string, any>;
763
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
764
+ };
765
+ child: string;
766
+ }>;
767
+ protected readonly normalizedActiveTabChild: _angular_core.Signal<{
778
768
  id: string;
779
769
  basePath: string;
780
770
  } | null>;
781
771
  setActiveTab(index: number): void;
782
772
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
783
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "a2ui-v09-tabs", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
773
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "a2ui-v09-tabs", never, {}, {}, never, never, true, never>;
784
774
  }
785
775
 
786
776
  /**
@@ -795,25 +785,14 @@ declare class TabsComponent extends BasicCatalogComponent {
795
785
  * - `--a2ui-modal-box-shadow`: Controls the box shadow of the modal content.
796
786
  * - `--a2ui-modal-backdrop-bg`: Controls the background of the backdrop.
797
787
  */
798
- declare class ModalComponent extends BasicCatalogComponent {
799
- /**
800
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
801
- *
802
- * Expected properties:
803
- * - `trigger`: The ID of the component that opens the modal.
804
- * - `content`: The ID of the component to display inside the modal.
805
- */
806
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
807
- surfaceId: _angular_core.InputSignal<string>;
808
- componentId: _angular_core.InputSignal<string | undefined>;
809
- dataContextPath: _angular_core.InputSignal<string>;
788
+ declare class ModalComponent extends BasicCatalogComponent<typeof ModalApi> {
810
789
  isOpen: _angular_core.WritableSignal<boolean>;
811
- trigger: _angular_core.Signal<any>;
812
- content: _angular_core.Signal<any>;
790
+ readonly trigger: _angular_core.Signal<_a2ui_angular_src_v0_9.Child>;
791
+ readonly content: _angular_core.Signal<_a2ui_angular_src_v0_9.Child>;
813
792
  openModal(): void;
814
793
  closeModal(): void;
815
794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
816
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "a2ui-v09-modal", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
795
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "a2ui-v09-modal", never, {}, {}, never, never, true, never>;
817
796
  }
818
797
 
819
798
  /**
@@ -825,20 +804,10 @@ declare class ModalComponent extends BasicCatalogComponent {
825
804
  * - `--a2ui-divider-border`: Controls the border of the divider (horizontal and vertical).
826
805
  * - `--a2ui-divider-spacing`: Controls the margin around the divider.
827
806
  */
828
- declare class DividerComponent extends BasicCatalogComponent {
829
- /**
830
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
831
- *
832
- * Expected properties:
833
- * - `axis`: The orientation of the divider ('horizontal' (default) or 'vertical').
834
- */
835
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
836
- surfaceId: _angular_core.InputSignal<string>;
837
- componentId: _angular_core.InputSignal<string | undefined>;
838
- dataContextPath: _angular_core.InputSignal<string>;
839
- axis: _angular_core.Signal<any>;
807
+ declare class DividerComponent extends BasicCatalogComponent<typeof DividerApi> {
808
+ readonly axis: _angular_core.Signal<"horizontal" | "vertical">;
840
809
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
841
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "a2ui-v09-divider", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
810
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "a2ui-v09-divider", never, {}, {}, never, never, true, never>;
842
811
  }
843
812
 
844
813
  /**
@@ -858,23 +827,12 @@ declare class DividerComponent extends BasicCatalogComponent {
858
827
  * - `--a2ui-checkbox-border-radius`: Controls the border radius of the checkbox.
859
828
  * - `--a2ui-checkbox-color-error`: Controls the color for error states.
860
829
  */
861
- declare class CheckBoxComponent extends BasicCatalogComponent {
862
- /**
863
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
864
- *
865
- * Expected properties:
866
- * - `label`: The text to display next to the checkbox.
867
- * - `value`: Boolean indicating whether the checkbox is checked.
868
- */
869
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
870
- surfaceId: _angular_core.InputSignal<string>;
871
- componentId: _angular_core.InputSignal<string | undefined>;
872
- dataContextPath: _angular_core.InputSignal<string>;
873
- value: _angular_core.Signal<boolean>;
874
- label: _angular_core.Signal<any>;
830
+ declare class CheckBoxComponent extends BasicCatalogComponent<typeof CheckBoxApi> {
831
+ readonly value: _angular_core.Signal<boolean>;
832
+ readonly label: _angular_core.Signal<string>;
875
833
  handleChange(event: Event): void;
876
834
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckBoxComponent, never>;
877
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckBoxComponent, "a2ui-v09-check-box", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
835
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckBoxComponent, "a2ui-v09-check-box", never, {}, {}, never, never, true, never>;
878
836
  }
879
837
 
880
838
  /**
@@ -893,31 +851,27 @@ declare class CheckBoxComponent extends BasicCatalogComponent {
893
851
  * - `--a2ui-choicepicker-chip-background`: Controls background of chips.
894
852
  * - `--a2ui-choicepicker-chip-background-selected`: Controls background of selected chips.
895
853
  */
896
- declare class ChoicePickerComponent extends BasicCatalogComponent {
897
- /**
898
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
899
- *
900
- * Expected properties:
901
- * - `value`: The currently selected value(s).
902
- * - `choices` or `options`: List of choice objects (label and value).
903
- * - `displayStyle`: How to render the choices ('default' or 'chips').
904
- * - `variant`: Selection mode ('singleSelection' or 'multipleSelection').
905
- */
906
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
907
- surfaceId: _angular_core.InputSignal<string>;
908
- componentId: _angular_core.InputSignal<string | undefined>;
909
- dataContextPath: _angular_core.InputSignal<string>;
910
- displayStyle: _angular_core.Signal<any>;
911
- choices: _angular_core.Signal<any>;
912
- variant: _angular_core.Signal<any>;
913
- selectedValue: _angular_core.Signal<any>;
854
+ declare class ChoicePickerComponent extends BasicCatalogComponent<typeof ChoicePickerApi> {
855
+ readonly displayStyle: _angular_core.Signal<"checkbox" | "chips" | undefined>;
856
+ readonly options: _angular_core.Signal<{
857
+ value: string;
858
+ label: string | {
859
+ path: string;
860
+ } | {
861
+ call: string;
862
+ args: Record<string, any>;
863
+ returnType: "string" | "number" | "boolean" | "object" | "array" | "void" | "any";
864
+ };
865
+ }[]>;
866
+ readonly variant: _angular_core.Signal<"multipleSelection" | "mutuallyExclusive" | undefined>;
867
+ readonly selectedValue: _angular_core.Signal<string[]>;
914
868
  isMultiple(): boolean;
915
869
  isSelected(value: string): boolean;
916
870
  onCheckChange(value: string, event: Event): void;
917
871
  toggleActive(value: string): void;
918
872
  private updateValue;
919
873
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChoicePickerComponent, never>;
920
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChoicePickerComponent, "a2ui-v09-choice-picker", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
874
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChoicePickerComponent, "a2ui-v09-choice-picker", never, {}, {}, never, never, true, never>;
921
875
  }
922
876
 
923
877
  /**
@@ -932,29 +886,15 @@ declare class ChoicePickerComponent extends BasicCatalogComponent {
932
886
  * - `--a2ui-slider-thumb-color`: Controls the accent color of the thumb.
933
887
  * - `--a2ui-slider-track-color`: Controls the background of the track.
934
888
  */
935
- declare class SliderComponent extends BasicCatalogComponent {
936
- /**
937
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
938
- *
939
- * Expected properties:
940
- * - `value`: The current numeric value.
941
- * - `label`: Label text to display.
942
- * - `min`: Minimum value (default: 0).
943
- * - `max`: Maximum value (default: 100).
944
- * - `step`: Increment step (default: 1).
945
- */
946
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
947
- surfaceId: _angular_core.InputSignal<string>;
948
- componentId: _angular_core.InputSignal<string | undefined>;
949
- dataContextPath: _angular_core.InputSignal<string>;
950
- label: _angular_core.Signal<any>;
951
- value: _angular_core.Signal<any>;
952
- min: _angular_core.Signal<any>;
953
- max: _angular_core.Signal<any>;
954
- step: _angular_core.Signal<any>;
889
+ declare class SliderComponent extends BasicCatalogComponent<typeof SliderApi> {
890
+ readonly label: _angular_core.Signal<string | undefined>;
891
+ readonly value: _angular_core.Signal<number>;
892
+ readonly min: _angular_core.Signal<number>;
893
+ readonly max: _angular_core.Signal<number>;
894
+ readonly step: _angular_core.Signal<number>;
955
895
  handleInput(event: Event): void;
956
896
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
957
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "a2ui-v09-slider", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
897
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "a2ui-v09-slider", never, {}, {}, never, never, true, never>;
958
898
  }
959
899
 
960
900
  /**
@@ -972,31 +912,18 @@ declare class SliderComponent extends BasicCatalogComponent {
972
912
  * - `--a2ui-datetimeinput-label-font-size`: Controls the font size of the label.
973
913
  * - `--a2ui-datetimeinput-label-font-weight`: Controls the font weight of the label.
974
914
  */
975
- declare class DateTimeInputComponent extends BasicCatalogComponent {
976
- /**
977
- * Reactive properties resolved from the A2UI {@link ComponentModel}.
978
- *
979
- * Expected properties:
980
- * - `value`: The current ISO date/time string.
981
- * - `label`: Optional label text.
982
- * - `enableDate`: Whether to show the date picker (default: true).
983
- * - `enableTime`: Whether to show the time picker (default: false).
984
- */
985
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
986
- surfaceId: _angular_core.InputSignal<string>;
987
- componentId: _angular_core.InputSignal<string | undefined>;
988
- dataContextPath: _angular_core.InputSignal<string>;
989
- label: _angular_core.Signal<any>;
990
- enableDate: _angular_core.Signal<any>;
991
- enableTime: _angular_core.Signal<any>;
992
- private rawValue;
993
- dateValue: _angular_core.Signal<any>;
994
- timeValue: _angular_core.Signal<any>;
915
+ declare class DateTimeInputComponent extends BasicCatalogComponent<typeof DateTimeInputApi> {
916
+ readonly label: _angular_core.Signal<string | undefined>;
917
+ readonly enableDate: _angular_core.Signal<boolean>;
918
+ readonly enableTime: _angular_core.Signal<boolean>;
919
+ private readonly rawValue;
920
+ readonly dateValue: _angular_core.Signal<string>;
921
+ readonly timeValue: _angular_core.Signal<string>;
995
922
  handleDateChange(event: Event): void;
996
923
  handleTimeChange(event: Event): void;
997
924
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeInputComponent, never>;
998
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeInputComponent, "a2ui-v09-date-time-input", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "dataContextPath": { "alias": "dataContextPath"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
925
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeInputComponent, "a2ui-v09-date-time-input", never, {}, {}, never, never, true, never>;
999
926
  }
1000
927
 
1001
- export { A2UI_RENDERER_CONFIG, A2uiRendererService, AngularCatalog, AudioPlayerComponent, BASIC_COMPONENTS, BasicCatalog, BasicCatalogBase, ButtonComponent, CardComponent, CheckBoxComponent, ChoicePickerComponent, ColumnComponent, ComponentBinder, ComponentHostComponent, DateTimeInputComponent, DefaultMarkdownRenderer, DividerComponent, IconComponent, ImageComponent, ListComponent, MarkdownRenderer, ModalComponent, RowComponent, SliderComponent, SurfaceComponent, TabsComponent, TextComponent, TextFieldComponent, VideoComponent, getNormalizedPath, provideMarkdownRenderer, toAngularSignal };
1002
- export type { AngularComponentImplementation, BasicCatalogOptions, BoundProperty, Child, MarkdownRendererOptions, RendererConfiguration };
928
+ export { A2UI_RENDERER_CONFIG, A2uiRendererService, AngularCatalog, AudioPlayerComponent, BASIC_COMPONENTS, BasicCatalog, BasicCatalogBase, ButtonComponent, CardComponent, CatalogComponent, CheckBoxComponent, ChoicePickerComponent, ColumnComponent, ComponentBinder, ComponentHostComponent, DateTimeInputComponent, DefaultMarkdownRenderer, DividerComponent, IconComponent, ImageComponent, ListComponent, MarkdownRenderer, ModalComponent, RowComponent, SliderComponent, SurfaceComponent, TabsComponent, TextComponent, TextFieldComponent, VideoComponent, getNormalizedPath, provideMarkdownRenderer, toAngularSignal };
929
+ export type { AngularComponentImplementation, AnyDuringSchemaAlignment, BasicCatalogOptions, BoundProperty, CatalogComponentInstance, Child, ComponentApiToProps, ComponentTemplate, ExtendedProps, MarkdownRendererOptions, RendererConfiguration };