@a2ui/angular 0.9.1 → 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_v0_9 from '@a2ui/angular/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_v0_9.ExtendedProps<zod.TypeOf<Api["schema"]>> extends infer T ? { [K in keyof T]: K extends "children" ? _a2ui_angular_v0_9.BoundProperty<_a2ui_angular_v0_9.Child[]> : K extends "child" | "trigger" | "content" ? _a2ui_angular_v0_9.BoundProperty<_a2ui_angular_v0_9.Child> : _a2ui_angular_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,13 +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
294
  protected resolvedComponentId: string;
186
295
  protected resolvedDataContextPath: string;
187
- ngOnInit(): void;
296
+ private propsSub?;
297
+ private createSub?;
298
+ constructor();
299
+ private setupComponent;
188
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;
189
307
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentHostComponent, never>;
190
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>;
191
309
  }
@@ -209,33 +327,6 @@ declare class SurfaceComponent {
209
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>;
210
328
  }
211
329
 
212
- /** Represents a reference to a child component. */
213
- interface Child {
214
- id: string;
215
- basePath: string;
216
- }
217
- /**
218
- * Binds A2UI ComponentModel properties to reactive Angular Signals.
219
- *
220
- * This service is used by {@link ComponentHostComponent} to resolve data bindings
221
- * from the A2UI DataContext and expose them as Angular Signals. It ensures that
222
- * property updates from the A2UI protocol are correctly reflected in Angular
223
- * components and provides callbacks for updating the data model.
224
- */
225
- declare class ComponentBinder {
226
- private destroyRef;
227
- private ngZone;
228
- /**
229
- * Binds all properties of a component to an object of Angular Signals.
230
- *
231
- * @param context The ComponentContext containing the model and data context.
232
- * @returns An object where each key corresponds to a component prop and its value is an Angular Signal.
233
- */
234
- bind(context: ComponentContext): Record<string, BoundProperty>;
235
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentBinder, never>;
236
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<ComponentBinder>;
237
- }
238
-
239
330
  /**
240
331
  * Copyright 2026 Google LLC
241
332
  *
@@ -264,7 +355,7 @@ declare function toAngularSignal<T>(preactSignal: Signal$1<T>, destroyRef: Destr
264
355
  * @param index The index of the child component.
265
356
  * @returns A fully normalized absolute path for the indexed child.
266
357
  */
267
- declare function getNormalizedPath(path: string, dataContextPath: string, index: number): string;
358
+ declare function getNormalizedPath(path: string | undefined, dataContextPath: string, index: number): string;
268
359
 
269
360
  interface MarkdownRendererOptions {
270
361
  tagClassMap?: Record<string, string>;
@@ -292,6 +383,7 @@ declare function provideMarkdownRenderer(renderFn?: (markdown: string, options?:
292
383
 
293
384
  /**
294
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.
295
387
  */
296
388
  declare const DEFAULT_COMPONENT_IMPLEMENTATIONS: Record<string, AngularComponentImplementation>;
297
389
  /**
@@ -346,26 +438,29 @@ declare class BasicCatalog extends BasicCatalogBase {
346
438
  * Base class for A2UI basic catalog components in Angular.
347
439
  *
348
440
  * Automatically injects the basic catalog styles when the component is instantiated.
349
- */
350
- declare abstract class BasicCatalogComponent {
351
- /**
352
- * Reactive properties resolved from the A2UI ComponentModel.
353
- */
354
- props: _angular_core.InputSignal<Record<string, BoundProperty<any>>>;
355
- surfaceId: _angular_core.InputSignal<string>;
356
- componentId: _angular_core.InputSignal<string>;
357
- dataContextPath: _angular_core.InputSignal<string>;
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_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_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>;
358
456
  constructor();
359
- /**
360
- * Computes the weight of the component from the properties.
361
- */
362
- protected readonly weight: _angular_core.Signal<any>;
363
457
  /**
364
458
  * Binds the flex style to the host element based on the weight.
365
459
  */
366
460
  get flexStyle(): string | null;
367
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BasicCatalogComponent, never>;
368
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BasicCatalogComponent, 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>;
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,10 +479,10 @@ 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 {
482
+ declare class TextComponent extends BasicCatalogComponent<typeof TextApi> {
388
483
  private markdownRenderer;
389
- readonly variant: _angular_core.Signal<any>;
390
- readonly 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>;
391
486
  resolvedText: _angular_core.WritableSignal<string>;
392
487
  private renderRequestId;
393
488
  constructor();
@@ -404,12 +499,12 @@ declare class TextComponent extends BasicCatalogComponent {
404
499
  * Supported CSS variables:
405
500
  * - `--a2ui-row-gap`: Controls the gap between items in the row. Defaults to `--a2ui-spacing-m` (16px).
406
501
  */
407
- declare class RowComponent extends BasicCatalogComponent {
408
- protected readonly justify: _angular_core.Signal<any>;
409
- protected readonly align: _angular_core.Signal<any>;
410
- protected readonly children: _angular_core.Signal<any[]>;
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_v0_9.Child[]>;
411
506
  protected readonly isRepeating: _angular_core.Signal<boolean>;
412
- protected readonly templateId: _angular_core.Signal<any>;
507
+ protected readonly templateId: _angular_core.Signal<string | undefined>;
413
508
  protected readonly normalizedChildren: _angular_core.Signal<{
414
509
  id: string;
415
510
  basePath: string;
@@ -428,12 +523,12 @@ declare class RowComponent extends BasicCatalogComponent {
428
523
  * Supported CSS variables:
429
524
  * - `--a2ui-column-gap`: Controls the gap between items in the column. Defaults to `--a2ui-spacing-m` (16px).
430
525
  */
431
- declare class ColumnComponent extends BasicCatalogComponent {
432
- protected readonly justify: _angular_core.Signal<any>;
433
- protected readonly align: _angular_core.Signal<any>;
434
- protected readonly children: _angular_core.Signal<any[]>;
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_v0_9.Child[]>;
435
530
  protected readonly isRepeating: _angular_core.Signal<boolean>;
436
- protected readonly templateId: _angular_core.Signal<any>;
531
+ protected readonly templateId: _angular_core.Signal<string | undefined>;
437
532
  protected readonly normalizedChildren: _angular_core.Signal<{
438
533
  id: string;
439
534
  basePath: string;
@@ -458,11 +553,27 @@ declare class ColumnComponent extends BasicCatalogComponent {
458
553
  * - `--a2ui-button-box-shadow`: Controls the box shadow.
459
554
  * - `--a2ui-button-font-weight`: Controls the font weight.
460
555
  */
461
- declare class ButtonComponent extends BasicCatalogComponent {
462
- private rendererService;
463
- readonly variant: _angular_core.Signal<any>;
464
- readonly child: _angular_core.Signal<any>;
465
- readonly 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_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
+ }>;
466
577
  handleClick(): void;
467
578
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
468
579
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "a2ui-v09-button", never, {}, {}, never, never, true, never>;
@@ -485,12 +596,12 @@ declare class ButtonComponent extends BasicCatalogComponent {
485
596
  * - `--a2ui-textfield-label-font-size`: Controls the font size of the label.
486
597
  * - `--a2ui-textfield-label-font-weight`: Controls the font weight of the label.
487
598
  */
488
- declare class TextFieldComponent extends BasicCatalogComponent {
489
- readonly label: _angular_core.Signal<any>;
490
- readonly value: _angular_core.Signal<any>;
599
+ declare class TextFieldComponent extends BasicCatalogComponent<typeof TextFieldApi> {
600
+ readonly label: _angular_core.Signal<string>;
601
+ readonly value: _angular_core.Signal<string>;
491
602
  readonly placeholder: _angular_core.Signal<any>;
492
- readonly variant: _angular_core.Signal<any>;
493
- readonly inputType: _angular_core.Signal<"text" | "password" | "number">;
603
+ readonly variant: _angular_core.Signal<"number" | "shortText" | "longText" | "obscured" | undefined>;
604
+ readonly inputType: _angular_core.Signal<"text" | "number" | "password">;
494
605
  handleInput(event: Event): void;
495
606
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
496
607
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "a2ui-v09-text-field", never, {}, {}, never, never, true, never>;
@@ -509,11 +620,11 @@ declare class TextFieldComponent extends BasicCatalogComponent {
509
620
  * - `--a2ui-image-large-feature-size`: Max-height of largeFeature variant.
510
621
  * - `--a2ui-image-header-size`: Height of header variant.
511
622
  */
512
- declare class ImageComponent extends BasicCatalogComponent {
513
- readonly url: _angular_core.Signal<any>;
514
- readonly description: _angular_core.Signal<any>;
515
- readonly fit: _angular_core.Signal<any>;
516
- readonly 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">;
517
628
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImageComponent, never>;
518
629
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImageComponent, "a2ui-v09-image", never, {}, {}, never, never, true, never>;
519
630
  }
@@ -529,11 +640,13 @@ declare class ImageComponent extends BasicCatalogComponent {
529
640
  * - `--a2ui-icon-color`: Controls the color of the icon.
530
641
  * - `--a2ui-icon-font-variation-settings`: Controls font variation settings (e.g. FILL).
531
642
  */
532
- declare class IconComponent extends BasicCatalogComponent {
643
+ declare class IconComponent extends BasicCatalogComponent<typeof IconApi> {
533
644
  readonly color: _angular_core.Signal<any>;
534
- readonly iconNameRaw: _angular_core.Signal<any>;
535
- readonly isPath: _angular_core.Signal<boolean>;
536
- readonly path: _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>;
537
650
  readonly iconName: _angular_core.Signal<string>;
538
651
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
539
652
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "a2ui-v09-icon", never, {}, {}, never, never, true, never>;
@@ -547,8 +660,8 @@ declare class IconComponent extends BasicCatalogComponent {
547
660
  * Supported CSS variables:
548
661
  * - `--a2ui-video-border-radius`: Controls the border radius of the video element.
549
662
  */
550
- declare class VideoComponent extends BasicCatalogComponent {
551
- readonly url: _angular_core.Signal<any>;
663
+ declare class VideoComponent extends BasicCatalogComponent<typeof VideoApi> {
664
+ readonly url: _angular_core.Signal<string>;
552
665
  readonly posterUrl: _angular_core.Signal<any>;
553
666
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoComponent, never>;
554
667
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoComponent, "a2ui-v09-video", never, {}, {}, never, never, true, never>;
@@ -564,9 +677,9 @@ declare class VideoComponent extends BasicCatalogComponent {
564
677
  * - `--a2ui-audioplayer-border-radius`: Controls the border radius. Defaults to `0`.
565
678
  * - `--a2ui-audioplayer-padding`: Controls the padding. Defaults to `0`.
566
679
  */
567
- declare class AudioPlayerComponent extends BasicCatalogComponent {
568
- readonly description: _angular_core.Signal<any>;
569
- readonly 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>;
570
683
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AudioPlayerComponent, never>;
571
684
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AudioPlayerComponent, "a2ui-v09-audio-player", never, {}, {}, never, never, true, never>;
572
685
  }
@@ -575,16 +688,16 @@ declare class AudioPlayerComponent extends BasicCatalogComponent {
575
688
  * Angular implementation of the A2UI List component (v0.9).
576
689
  *
577
690
  * Renders a list of child components with support for ordered, unordered,
578
- * and unstyled layouts in both vertical and horizontal orientations.
691
+ * and unstyled layouts in both vertical and horizontal directions.
579
692
  *
580
693
  * Supported CSS variables:
581
694
  * - `--a2ui-list-gap`: Controls the gap between items.
582
695
  * - `--a2ui-list-padding`: Controls the padding (applied to padding-inline-start).
583
696
  */
584
- declare class ListComponent extends BasicCatalogComponent {
585
- readonly listStyle: _angular_core.Signal<any>;
586
- readonly orientation: _angular_core.Signal<any>;
587
- readonly children: _angular_core.Signal<any[]>;
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[]>;
588
701
  readonly listTag: _angular_core.Signal<"ol" | "ul" | "div">;
589
702
  readonly styleType: _angular_core.Signal<"" | "none">;
590
703
  /**
@@ -609,8 +722,8 @@ declare class ListComponent extends BasicCatalogComponent {
609
722
  * - `--a2ui-card-border`: Controls the border.
610
723
  * - `--a2ui-card-margin`: Controls the margin.
611
724
  */
612
- declare class CardComponent extends BasicCatalogComponent {
613
- readonly child: _angular_core.Signal<any>;
725
+ declare class CardComponent extends BasicCatalogComponent<typeof CardApi> {
726
+ readonly child: _angular_core.Signal<_a2ui_angular_v0_9.Child>;
614
727
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
615
728
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "a2ui-v09-card", never, {}, {}, never, never, true, never>;
616
729
  }
@@ -629,11 +742,29 @@ declare class CardComponent extends BasicCatalogComponent {
629
742
  * - `--a2ui-tabs-header-color-active`: Controls the text color of the active tab button.
630
743
  * - `--a2ui-tabs-content-padding`: Controls the padding of the tab content.
631
744
  */
632
- declare class TabsComponent extends BasicCatalogComponent {
745
+ declare class TabsComponent extends BasicCatalogComponent<typeof TabsApi> {
633
746
  activeTabIndex: _angular_core.WritableSignal<number>;
634
- readonly tabs: _angular_core.Signal<any>;
635
- readonly activeTab: _angular_core.Signal<any>;
636
- protected readonly 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<{
637
768
  id: string;
638
769
  basePath: string;
639
770
  } | null>;
@@ -654,10 +785,10 @@ declare class TabsComponent extends BasicCatalogComponent {
654
785
  * - `--a2ui-modal-box-shadow`: Controls the box shadow of the modal content.
655
786
  * - `--a2ui-modal-backdrop-bg`: Controls the background of the backdrop.
656
787
  */
657
- declare class ModalComponent extends BasicCatalogComponent {
788
+ declare class ModalComponent extends BasicCatalogComponent<typeof ModalApi> {
658
789
  isOpen: _angular_core.WritableSignal<boolean>;
659
- readonly trigger: _angular_core.Signal<any>;
660
- readonly content: _angular_core.Signal<any>;
790
+ readonly trigger: _angular_core.Signal<_a2ui_angular_v0_9.Child>;
791
+ readonly content: _angular_core.Signal<_a2ui_angular_v0_9.Child>;
661
792
  openModal(): void;
662
793
  closeModal(): void;
663
794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
@@ -673,8 +804,8 @@ declare class ModalComponent extends BasicCatalogComponent {
673
804
  * - `--a2ui-divider-border`: Controls the border of the divider (horizontal and vertical).
674
805
  * - `--a2ui-divider-spacing`: Controls the margin around the divider.
675
806
  */
676
- declare class DividerComponent extends BasicCatalogComponent {
677
- readonly axis: _angular_core.Signal<any>;
807
+ declare class DividerComponent extends BasicCatalogComponent<typeof DividerApi> {
808
+ readonly axis: _angular_core.Signal<"horizontal" | "vertical">;
678
809
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
679
810
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "a2ui-v09-divider", never, {}, {}, never, never, true, never>;
680
811
  }
@@ -696,9 +827,9 @@ declare class DividerComponent extends BasicCatalogComponent {
696
827
  * - `--a2ui-checkbox-border-radius`: Controls the border radius of the checkbox.
697
828
  * - `--a2ui-checkbox-color-error`: Controls the color for error states.
698
829
  */
699
- declare class CheckBoxComponent extends BasicCatalogComponent {
830
+ declare class CheckBoxComponent extends BasicCatalogComponent<typeof CheckBoxApi> {
700
831
  readonly value: _angular_core.Signal<boolean>;
701
- readonly label: _angular_core.Signal<any>;
832
+ readonly label: _angular_core.Signal<string>;
702
833
  handleChange(event: Event): void;
703
834
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckBoxComponent, never>;
704
835
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckBoxComponent, "a2ui-v09-check-box", never, {}, {}, never, never, true, never>;
@@ -720,11 +851,20 @@ declare class CheckBoxComponent extends BasicCatalogComponent {
720
851
  * - `--a2ui-choicepicker-chip-background`: Controls background of chips.
721
852
  * - `--a2ui-choicepicker-chip-background-selected`: Controls background of selected chips.
722
853
  */
723
- declare class ChoicePickerComponent extends BasicCatalogComponent {
724
- readonly displayStyle: _angular_core.Signal<any>;
725
- readonly choices: _angular_core.Signal<any>;
726
- readonly variant: _angular_core.Signal<any>;
727
- readonly 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[]>;
728
868
  isMultiple(): boolean;
729
869
  isSelected(value: string): boolean;
730
870
  onCheckChange(value: string, event: Event): void;
@@ -746,12 +886,12 @@ declare class ChoicePickerComponent extends BasicCatalogComponent {
746
886
  * - `--a2ui-slider-thumb-color`: Controls the accent color of the thumb.
747
887
  * - `--a2ui-slider-track-color`: Controls the background of the track.
748
888
  */
749
- declare class SliderComponent extends BasicCatalogComponent {
750
- readonly label: _angular_core.Signal<any>;
751
- readonly value: _angular_core.Signal<any>;
752
- readonly min: _angular_core.Signal<any>;
753
- readonly max: _angular_core.Signal<any>;
754
- readonly 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>;
755
895
  handleInput(event: Event): void;
756
896
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
757
897
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "a2ui-v09-slider", never, {}, {}, never, never, true, never>;
@@ -772,18 +912,18 @@ declare class SliderComponent extends BasicCatalogComponent {
772
912
  * - `--a2ui-datetimeinput-label-font-size`: Controls the font size of the label.
773
913
  * - `--a2ui-datetimeinput-label-font-weight`: Controls the font weight of the label.
774
914
  */
775
- declare class DateTimeInputComponent extends BasicCatalogComponent {
776
- readonly label: _angular_core.Signal<any>;
777
- readonly enableDate: _angular_core.Signal<any>;
778
- readonly enableTime: _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>;
779
919
  private readonly rawValue;
780
- readonly dateValue: _angular_core.Signal<any>;
781
- readonly timeValue: _angular_core.Signal<any>;
920
+ readonly dateValue: _angular_core.Signal<string>;
921
+ readonly timeValue: _angular_core.Signal<string>;
782
922
  handleDateChange(event: Event): void;
783
923
  handleTimeChange(event: Event): void;
784
924
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeInputComponent, never>;
785
925
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeInputComponent, "a2ui-v09-date-time-input", never, {}, {}, never, never, true, never>;
786
926
  }
787
927
 
788
- 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 };
789
- 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 };