@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.
- package/LICENSE +25 -1
- package/README.md +9 -9
- package/fesm2022/a2ui-angular-src-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-src-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-src-v0_9.mjs +333 -533
- package/fesm2022/a2ui-angular-src-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_9.mjs +333 -533
- package/fesm2022/a2ui-angular-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular.mjs +65 -59
- package/fesm2022/a2ui-angular.mjs.map +1 -1
- package/package.json +3 -3
- package/types/a2ui-angular-src-v0_8.d.ts +159 -106
- package/types/a2ui-angular-src-v0_9.d.ts +299 -372
- package/types/a2ui-angular-v0_8.d.ts +159 -106
- package/types/a2ui-angular-v0_9.d.ts +299 -372
- package/types/a2ui-angular.d.ts +159 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2ui-angular-v0_9.mjs","sources":["../../v0_9/core/a2ui-renderer.service.ts","../../v0_9/core/utils.ts","../../v0_9/core/component-binder.service.ts","../../v0_9/core/component-host.component.ts","../../v0_9/core/surface.component.ts","../../v0_9/core/types.ts","../../v0_9/core/markdown.ts","../../v0_9/catalog/types.ts","../../v0_9/catalog/basic/basic-catalog-component.ts","../../v0_9/catalog/basic/text.component.ts","../../v0_9/catalog/basic/utils.ts","../../v0_9/catalog/basic/row.component.ts","../../v0_9/catalog/basic/column.component.ts","../../v0_9/catalog/basic/button.component.ts","../../v0_9/catalog/basic/text-field.component.ts","../../v0_9/catalog/basic/image.component.ts","../../v0_9/catalog/basic/icon.component.ts","../../v0_9/catalog/basic/video.component.ts","../../v0_9/catalog/basic/audio-player.component.ts","../../v0_9/catalog/basic/list.component.ts","../../v0_9/catalog/basic/card.component.ts","../../v0_9/catalog/basic/tabs.component.ts","../../v0_9/catalog/basic/modal.component.ts","../../v0_9/catalog/basic/divider.component.ts","../../v0_9/catalog/basic/check-box.component.ts","../../v0_9/catalog/basic/choice-picker.component.ts","../../v0_9/catalog/basic/slider.component.ts","../../v0_9/catalog/basic/date-time-input.component.ts","../../v0_9/catalog/basic/basic-catalog.ts","../../v0_9/public-api.ts","../../v0_9/a2ui-angular-v0_9.ts"],"sourcesContent":["/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, OnDestroy, InjectionToken, Inject } from '@angular/core';\nimport {\n MessageProcessor,\n SurfaceGroupModel,\n ActionListener as ActionHandler,\n A2uiMessage,\n A2uiClientAction as Action,\n} from '@a2ui/web_core/v0_9';\nimport { AngularComponentImplementation, AngularCatalog } from '../catalog/types';\n\n/**\n * Configuration for the A2UI renderer.\n */\nexport interface RendererConfiguration {\n /** The catalogs containing the available components and functions. */\n catalogs: AngularCatalog[];\n /**\n * Optional handler for actions dispatched from any surface.\n *\n * This callback is invoked whenever a component in any surface triggers an action\n * (e.g., clicking a button with an `onTap` property).\n */\n actionHandler?: (action: Action) => void;\n}\n\n/**\n * Injection token for the A2UI renderer configuration.\n */\nexport const A2UI_RENDERER_CONFIG = new InjectionToken<RendererConfiguration>(\n 'A2UI_RENDERER_CONFIG',\n);\n\n/**\n * Manages A2UI v0.9 rendering sessions by bridging the MessageProcessor to Angular.\n *\n * This service is the central entry point for the A2UI renderer. It maintains a\n * {@link MessageProcessor} that turns A2UI protocol messages into a reactive\n * {@link SurfaceGroupModel}.\n */\n@Injectable()\nexport class A2uiRendererService implements OnDestroy {\n private _messageProcessor: MessageProcessor<AngularComponentImplementation>;\n private _catalogs: AngularCatalog[] = [];\n\n constructor(@Inject(A2UI_RENDERER_CONFIG) private config: RendererConfiguration) {\n this._catalogs = this.config.catalogs;\n\n this._messageProcessor = new MessageProcessor<AngularComponentImplementation>(\n this._catalogs,\n this.config.actionHandler as ActionHandler,\n );\n }\n\n /**\n * Processes a list of A2UI messages and updates the internal surface models.\n *\n * This should be called whenever new messages arrive from an agent or orchestrator.\n *\n * @param messages The list of {@link A2uiMessage}s to process.\n */\n processMessages(messages: A2uiMessage[]): void {\n this._messageProcessor.processMessages(messages);\n }\n\n /**\n * The current surface group model containing all active surfaces.\n *\n * Surfaces can be retrieved from this group using their `surfaceId`.\n */\n get surfaceGroup(): SurfaceGroupModel<AngularComponentImplementation> {\n return this._messageProcessor.model;\n }\n\n ngOnDestroy(): void {\n this._messageProcessor.model.dispose();\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DestroyRef, Signal, signal as angularSignal } from '@angular/core';\nimport { Signal as PreactSignal, effect, signal as preactSignal } from '@a2ui/web_core/v0_9';\nexport { preactSignal };\n\n/**\n * Bridges a Preact Signal (from A2UI web_core) to a reactive Angular Signal.\n *\n * This utility handles the lifecycle mapping between Preact and Angular,\n * ensuring that updates from the A2UI data model are propagated correctly\n * to Angular's change detection, and resources are cleaned up when the\n * component is destroyed.\n *\n * @param preactSignal The source Preact Signal.\n * @param destroyRef Angular DestroyRef for lifecycle management.\n * @param ngZone Optional NgZone to ensure updates run within the Angular zone\n * (necessary for correct change detection in OnPush components).\n * @returns A read-only Angular Signal.\n */\nimport { NgZone } from '@angular/core';\n\nexport function toAngularSignal<T>(\n preactSignal: PreactSignal<T>,\n destroyRef: DestroyRef,\n ngZone?: NgZone,\n): Signal<T> {\n const s = angularSignal(preactSignal.peek());\n\n const dispose = effect(() => {\n if (ngZone) {\n ngZone.run(() => s.set(preactSignal.value));\n } else {\n s.set(preactSignal.value);\n }\n });\n\n destroyRef.onDestroy(() => {\n dispose();\n // Some signals returned by DataContext.resolveSignal have a custom unsubscribe for AbortControllers\n if ((preactSignal as any).unsubscribe) {\n (preactSignal as any).unsubscribe();\n }\n });\n\n return s.asReadonly();\n}\n\n/**\n * Normalizes a data model path by combining a relative path with a base context.\n *\n * This is used to create unique absolute paths for components within a repeating\n * collection or nested structure.\n *\n * @param path The relative or absolute path from the component properties.\n * @param dataContextPath The current base data context path.\n * @param index The index of the child component.\n * @returns A fully normalized absolute path for the indexed child.\n */\nexport function getNormalizedPath(path: string, dataContextPath: string, index: number): string {\n let normalized = path || '';\n if (!normalized.startsWith('/')) {\n const base = dataContextPath === '/' ? '' : dataContextPath;\n normalized = `${base}/${normalized}`;\n }\n if (normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n return `${normalized}/${index}`;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DestroyRef, Injectable, inject, NgZone } from '@angular/core';\nimport { ComponentContext, computed } from '@a2ui/web_core/v0_9';\nimport { toAngularSignal } from './utils';\nimport { BoundProperty } from './types';\n\n/** Represents a reference to a child component. */\nexport interface Child {\n id: string;\n basePath: string;\n}\n\n/**\n * Binds A2UI ComponentModel properties to reactive Angular Signals.\n *\n * This service is used by {@link ComponentHostComponent} to resolve data bindings\n * from the A2UI DataContext and expose them as Angular Signals. It ensures that\n * property updates from the A2UI protocol are correctly reflected in Angular\n * components and provides callbacks for updating the data model.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ComponentBinder {\n private destroyRef = inject(DestroyRef);\n private ngZone = inject(NgZone);\n\n /**\n * Binds all properties of a component to an object of Angular Signals.\n *\n * @param context The ComponentContext containing the model and data context.\n * @returns An object where each key corresponds to a component prop and its value is an Angular Signal.\n */\n bind(context: ComponentContext): Record<string, BoundProperty> {\n const props = context.componentModel.properties;\n const bound: Record<string, any> = {};\n\n for (const key of Object.keys(props)) {\n const value = props[key];\n\n let preactSig;\n const isChildListTemplate = value && typeof value === 'object' && 'componentId' in value && 'path' in value;\n const isBoundPath = value && typeof value === 'object' && 'path' in value && !('componentId' in value);\n\n if (isChildListTemplate) {\n const listSig = context.dataContext.resolveSignal({ path: value.path });\n const listContext = context.dataContext.nested(value.path);\n preactSig = computed(() => {\n const arr = listSig.value;\n const currentArr = Array.isArray(arr) ? arr : [];\n return currentArr.map((_, i) => ({\n id: value.componentId,\n basePath: listContext.nested(String(i)).path,\n }));\n });\n } else {\n preactSig = context.dataContext.resolveSignal(value);\n }\n\n if (['child', 'trigger', 'content'].includes(key)) {\n const originalSig = preactSig;\n preactSig = computed(() => {\n const val = originalSig.value;\n if (!val) return null;\n if (typeof val === 'object' && val !== null && 'id' in val) {\n return val;\n }\n return { id: val, basePath: context.dataContext.path };\n });\n } else if (key === 'children') {\n const originalSig = preactSig;\n preactSig = computed(() => {\n const val = originalSig.value;\n const arr = Array.isArray(val) ? val : [];\n return arr.map(item => {\n if (typeof item === 'object' && item !== null && 'id' in item) {\n return item;\n }\n return { id: item, basePath: context.dataContext.path };\n });\n });\n }\n\n const angSig = toAngularSignal(preactSig as any, this.destroyRef, this.ngZone);\n\n bound[key] = {\n value: angSig,\n raw: value,\n onUpdate: isBoundPath\n ? (newValue: any) => context.dataContext.set(value.path, newValue)\n : () => {}, // No-op for non-bound values\n };\n\n if (key === 'checks') {\n const checksArray = Array.isArray(value) ? value : [];\n\n const ruleResults = checksArray.map((rule: any) => {\n const condition = rule.condition || rule;\n const message = rule.message || 'Validation failed';\n const conditionSig = context.dataContext.resolveSignal(condition);\n return { conditionSig, message };\n });\n\n const isValidPreactSig = computed(() => {\n return ruleResults.every((r: any) => !!r.conditionSig.value);\n });\n\n const validationErrorsPreactSig = computed(() => {\n return ruleResults\n .filter((r: any) => !r.conditionSig.value)\n .map((r: any) => r.message);\n });\n\n bound['isValid'] = {\n value: toAngularSignal(isValidPreactSig, this.destroyRef, this.ngZone),\n raw: null,\n onUpdate: () => {},\n };\n\n bound['validationErrors'] = {\n value: toAngularSignal(validationErrorsPreactSig, this.destroyRef, this.ngZone),\n raw: null,\n onUpdate: () => {},\n };\n }\n }\n\n return bound;\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n HostBinding,\n OnInit,\n Type,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ComponentContext, ComponentModel, SurfaceModel } from '@a2ui/web_core/v0_9';\nimport { A2uiRendererService } from './a2ui-renderer.service';\nimport { AngularCatalog } from '../catalog/types';\nimport { ComponentBinder } from './component-binder.service';\nimport {BoundProperty} from './types';\n\n/**\n * Dynamically renders an A2UI component as defined in the current surface model.\n *\n * This component acts as a bridge between the A2UI surface model and Angular components.\n * It resolves the appropriate component from the catalog based on the component's type,\n * and uses {@link ComponentBinder} to create reactive property bindings.\n *\n * Usually, you'll use the higher-level {@link SurfaceComponent} which automatically\n * sets up a host for the 'root' component.\n */\n@Component({\n selector: 'a2ui-v09-component-host',\n imports: [NgComponentOutlet],\n host: {\n 'style': 'display: contents;'\n },\n template: `\n @if (componentType) {\n <ng-container\n *ngComponentOutlet=\"\n componentType;\n inputs: {\n props: props,\n surfaceId: surfaceId(),\n componentId: resolvedComponentId,\n dataContextPath: resolvedDataContextPath,\n }\n \"\n ></ng-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComponentHostComponent implements OnInit {\n /** The key of the component to render, either an ID string or an object with ID and basePath. Defaults to 'root'. */\n componentKey = input<string | { id: string; basePath: string }>('root');\n\n /** The unique identifier of the surface this component belongs to. */\n surfaceId = input.required<string>();\n\n private readonly rendererService = inject(A2uiRendererService);\n private readonly binder = inject(ComponentBinder);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n protected componentType: Type<any> | null = null;\n protected props: Record<string, BoundProperty> = {};\n private context?: ComponentContext;\n protected weight = signal<string | number | null>(null);\n\n // TODO(#1199): Move weight handling to the catalog specification.\n @HostBinding('style.flex')\n get flexStyle() {\n const w = this.weight();\n return w ? `${w}` : '';\n }\n protected resolvedComponentId: string = '';\n protected resolvedDataContextPath: string = '/';\n\n ngOnInit(): void {\n const surface = this.rendererService.surfaceGroup?.getSurface(this.surfaceId());\n\n if (!surface) {\n console.warn(`Surface ${this.surfaceId()} not found`);\n return;\n }\n\n const key = this.componentKey();\n let id: string;\n let basePath: string;\n\n if (typeof key === 'object' && key !== null && 'id' in key) {\n id = key.id;\n basePath = key.basePath || '/';\n } else {\n id = key;\n basePath = '/';\n }\n\n this.resolvedComponentId = id;\n\n const componentModel = surface.componentsModel.get(id);\n\n if (!componentModel) {\n console.warn(`Component ${id} not found in surface ${this.surfaceId()}. Waiting for it...`);\n\n const sub = surface.componentsModel.onCreated.subscribe((comp) => {\n if (comp.id === id) {\n this.initializeComponent(surface, comp, id, basePath);\n this.cdr.markForCheck();\n sub.unsubscribe();\n }\n });\n\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n return;\n }\n\n this.initializeComponent(surface, componentModel, id, basePath);\n }\n\n private initializeComponent(\n surface: SurfaceModel<any>,\n componentModel: ComponentModel,\n id: string,\n basePath: string,\n ): void {\n // Resolve component from the surface's catalog\n const catalog = surface.catalog as AngularCatalog;\n const api = catalog.components.get(componentModel.type);\n\n if (!api) {\n console.error(`Component type \"${componentModel.type}\" not found in catalog \"${catalog.id}\"`);\n return;\n }\n this.componentType = api.component;\n\n // Create context\n this.context = new ComponentContext(surface, id, basePath);\n this.props = this.binder.bind(this.context);\n this.resolvedDataContextPath = this.context.dataContext.path;\n\n // Subscribes to updates to the component model properties, to get the\n // component to react when a new prop is added after creation.\n const onPropsUpdateSub = componentModel.onUpdated.subscribe(() => {\n this.props = this.binder.bind(this.context!);\n // TODO(#1199): Move weight handling to the catalog specification.\n this.weight.set(componentModel.properties['weight'] || null);\n this.cdr.markForCheck();\n });\n\n this.weight.set(componentModel.properties['weight'] || null);\n\n this.destroyRef.onDestroy(() => {\n // ComponentContext itself doesn't have a dispose, but its inner components might.\n // However, SurfaceModel takes care of component disposal.\n onPropsUpdateSub.unsubscribe();\n });\n\n this.cdr.markForCheck();\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ComponentHostComponent } from './component-host.component';\n\n/**\n * High-level component for rendering an entire A2UI surface.\n *\n * This component handles the boilerplate of setting up a {@link ComponentHostComponent}\n * for the 'root' component of a surface. It is the recommended way to embed an\n * A2UI surface in an Angular application.\n */\n@Component({\n selector: 'a2ui-v09-surface',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n 'style': 'display: contents;'\n },\n template: `\n <a2ui-v09-component-host\n [componentKey]=\"{ id: 'root', basePath: dataContextPath() }\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SurfaceComponent {\n /** The unique identifier of the surface to render. */\n surfaceId = input.required<string>();\n\n /**\n * The path within the surface's data model that represents the current state.\n * Defaults to the root ('/').\n */\n dataContextPath = input<string>('/');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Signal } from '@angular/core';\n\n/**\n * Represents a component property bound to an Angular Signal and update logic.\n *\n * This interface is used by {@link ComponentBinder} to expose properties to\n * Angular components. It contains the current value as a Signal, the raw\n * property definition, and an update function.\n *\n * @template T The type of the property value.\n */\nexport interface BoundProperty<T = any> {\n /**\n * The reactive Angular Signal containing the current resolved value.\n *\n * This signal automatically updates whenever the underlying A2UI data\n * model changes.\n */\n readonly value: Signal<T>;\n\n /**\n * The raw value from the A2UI ComponentModel.\n *\n * This may be a literal value or a data binding path object.\n */\n readonly raw: any;\n\n /**\n * Callback to update the value in the A2UI DataContext.\n *\n * If the property is bound to a path in the data model, calling this\n * will update that path. If the property is a literal value, this\n * is typically a no-op.\n */\n readonly onUpdate: (newValue: T) => void;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\nexport interface MarkdownRendererOptions {\n tagClassMap?: Record<string, string>;\n}\n\nexport abstract class MarkdownRenderer {\n abstract render(markdown: string, options?: MarkdownRendererOptions): Promise<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultMarkdownRenderer extends MarkdownRenderer {\n private static warningLogged = false;\n\n override async render(\n markdown: string,\n options?: MarkdownRendererOptions,\n ): Promise<string> {\n try {\n // @ts-ignore - optional peer dependency\n const { renderMarkdown } = await import('@a2ui/markdown-it');\n return await renderMarkdown(markdown, options as any);\n } catch (e) {\n if (!DefaultMarkdownRenderer.warningLogged) {\n console.warn(\"[DefaultMarkdownRenderer] Failed to load optional `@a2ui/markdown-it` renderer. Using fallback.\");\n DefaultMarkdownRenderer.warningLogged = true;\n }\n return markdown;\n }\n }\n}\n\nexport function provideMarkdownRenderer(renderFn?: (markdown: string, options?: MarkdownRendererOptions) => Promise<string>) {\n if (renderFn) {\n return {\n provide: MarkdownRenderer,\n useValue: {\n render: renderFn,\n },\n };\n }\n return { provide: MarkdownRenderer, useClass: DefaultMarkdownRenderer };\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Type } from '@angular/core';\nimport { Catalog, ComponentApi } from '@a2ui/web_core/v0_9';\n\n/**\n * Extends the generic {@link ComponentApi} to include Angular-specific component metadata.\n */\nexport interface AngularComponentImplementation extends ComponentApi {\n /**\n * The Angular component class used to render this component.\n *\n * This class must be an Angular {@link Type} (e.g., a standalone component class)\n * that accepts `props`, `surfaceId`, and `dataContextPath` as inputs.\n */\n readonly component: Type<any>;\n}\n\n/**\n * A collection of Angular component and function implementations mapped to\n * A2UI protocol types.\n *\n * Catalogs are used by the {@link MessageProcessor} to resolve component\n * definitions and by {@link ComponentHostComponent} to instantiate the\n * correct Angular components.\n */\nexport class AngularCatalog extends Catalog<AngularComponentImplementation> {}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { injectBasicCatalogStyles } from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Base class for A2UI basic catalog components in Angular.\n *\n * Automatically injects the basic catalog styles when the component is instantiated.\n */\nexport abstract class BasicCatalogComponent {\n constructor() {\n injectBasicCatalogStyles();\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy, inject, signal, effect } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { MarkdownRenderer } from '../../core/markdown';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Text component (v0.9).\n *\n * Renders text with support for simple Markdown.\n *\n * Supported CSS variables:\n * - `--a2ui-text-color-text`: Controls the text color.\n * - `--a2ui-text-margin`: Controls the margin of text elements.\n * - `--a2ui-font-family-title`: Controls the font family for titles.\n * - `--a2ui-line-height-headings`: Controls the line height for headings.\n * - `--a2ui-line-height-body`: Controls the line height for body text.\n * - `--a2ui-text-caption-color`: Controls the color for caption text.\n * - `--a2ui-text-a-color`: Controls the color for links.\n * - `--a2ui-text-a-font-weight`: Controls the font weight for links.\n * - 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`.\n */\n@Component({\n selector: 'a2ui-v09-text',\n standalone: true,\n template: `\n <span [class]=\"'a2ui-text ' + variant()\" [innerHTML]=\"resolvedText()\">\n </span>\n `,\n // We use :host ::ng-deep because the template content is injected via innerHTML (Markdown).\n // Angular's default view encapsulation cannot target elements injected via innerHTML because they lack the scoping attributes generated at compile time.\n // ::ng-deep allows styles to reach into the injected HTML, while :host keeps them scoped to this component.\n styles: [\n `\n :host ::ng-deep .a2ui-text p,\n :host ::ng-deep .a2ui-text h1,\n :host ::ng-deep .a2ui-text h2,\n :host ::ng-deep .a2ui-text h3,\n :host ::ng-deep .a2ui-text h4,\n :host ::ng-deep .a2ui-text h5,\n :host ::ng-deep .a2ui-text h6,\n :host ::ng-deep .a2ui-text ol,\n :host ::ng-deep .a2ui-text ul,\n :host ::ng-deep .a2ui-text li,\n :host ::ng-deep .a2ui-text blockquote,\n :host ::ng-deep .a2ui-text pre {\n margin: var(--_a2ui-text-margin, 0);\n }\n :host ::ng-deep .a2ui-text {\n color: var(--_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)));\n }\n :host ::ng-deep .a2ui-text h1,\n :host ::ng-deep .a2ui-text h2,\n :host ::ng-deep .a2ui-text h3,\n :host ::ng-deep .a2ui-text h4,\n :host ::ng-deep .a2ui-text h5,\n :host ::ng-deep .a2ui-text h6 {\n font-family: var(--a2ui-font-family-title, inherit);\n line-height: var(--a2ui-line-height-headings, 1.2);\n }\n :host ::ng-deep .a2ui-text h1 { font-size: var(--a2ui-font-size-2xl); }\n :host ::ng-deep .a2ui-text h2 { font-size: var(--a2ui-font-size-xl); }\n :host ::ng-deep .a2ui-text h3 { font-size: var(--a2ui-font-size-l); }\n :host ::ng-deep .a2ui-text p, :host ::ng-deep .a2ui-text h4 { font-size: var(--a2ui-font-size-m); }\n :host ::ng-deep .a2ui-text h5 { font-size: var(--a2ui-font-size-s); }\n :host ::ng-deep .a2ui-text p {\n line-height: var(--a2ui-line-height-body, 1.5);\n }\n :host ::ng-deep .a2ui-text.caption {\n font-size: var(--a2ui-font-size-xs);\n color: var(--a2ui-text-caption-color, light-dark(#666, #aaa));\n }\n :host ::ng-deep .a2ui-text a {\n color: var(--a2ui-text-a-color, inherit);\n font-weight: var(--a2ui-text-a-font-weight, inherit);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `text`: The string content to display.\n * - `variant`: A hint for the base text style ('h1', 'h2', 'h3', 'h4', 'h5', 'caption', 'body').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n private markdownRenderer = inject(MarkdownRenderer);\n\n variant = computed(() => this.props()['variant']?.value() || 'body');\n text = computed(() => this.props()['text']?.value() || '');\n\n resolvedText = signal<string>('');\n private renderRequestId = 0;\n\n constructor() {\n super();\n effect(() => {\n const text = this.text();\n const variant = this.variant();\n let value = text;\n\n switch (variant) {\n case 'h1': value = `# ${text}`; break;\n case 'h2': value = `## ${text}`; break;\n case 'h3': value = `### ${text}`; break;\n case 'h4': value = `#### ${text}`; break;\n case 'h5': value = `##### ${text}`; break;\n case 'caption': value = `*${text}*`; break;\n }\n\n const requestId = ++this.renderRequestId;\n this.markdownRenderer.render(value).then(rendered => {\n if (requestId === this.renderRequestId) {\n this.resolvedText.set(rendered);\n }\n });\n });\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Maps A2UI justification values to CSS justify-content values.\n */\nexport const JUSTIFY_MAP: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n spaceEvenly: 'space-evenly',\n stretch: 'stretch',\n};\n\n/**\n * Maps A2UI alignment values to CSS align-items values.\n */\nexport const ALIGN_MAP: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\nimport { getNormalizedPath } from '../../core/utils';\nimport { BasicCatalogComponent } from './basic-catalog-component';\nimport { JUSTIFY_MAP, ALIGN_MAP } from './utils';\n\n/**\n * Angular implementation of the A2UI Row component (v0.9).\n *\n * Arranges child components in a horizontal flex layout. Supports both static\n * lists of children and repeating templates bound to a data collection.\n *\n * Supported CSS variables:\n * - `--a2ui-row-gap`: Controls the gap between items in the row. Defaults to `--a2ui-spacing-m` (16px).\n */\n@Component({\n selector: 'a2ui-v09-row',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n '[style.display]': '\"flex\"',\n '[style.flex-direction]': '\"row\"',\n '[style.gap]': '\"var(--a2ui-row-gap, var(--a2ui-spacing-m, 16px))\"',\n '[style.justify-content]': 'justify()',\n '[style.align-items]': 'align()'\n },\n template: `\n @if (!isRepeating()) {\n @for (child of normalizedChildren(); track child.id) {\n <a2ui-v09-component-host\n [componentKey]=\"child\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n\n @if (isRepeating()) {\n @for (item of children(); track item; let i = $index) {\n <a2ui-v09-component-host\n [componentKey]=\"{ id: templateId()!, basePath: getNormalizedPath(i) }\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RowComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `children`: A list of component IDs OR a repeating collection definition.\n * - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').\n * - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n protected justify = computed(() => {\n const val = this.props()['justify']?.value();\n return val ? (JUSTIFY_MAP[val] || val) : undefined;\n });\n protected align = computed(() => {\n const val = this.props()['align']?.value();\n return val ? (ALIGN_MAP[val] || val) : undefined;\n });\n\n protected children = computed(() => {\n const raw = this.props()['children']?.value() || [];\n return Array.isArray(raw) ? raw : [];\n });\n\n protected isRepeating = computed(() => {\n return !!this.props()['children']?.raw?.componentId;\n });\n\n protected templateId = computed(() => {\n return this.props()['children']?.raw?.componentId;\n });\n\n protected normalizedChildren = computed(() => {\n if (this.isRepeating()) return [];\n return this.children().map(child => {\n if (typeof child === 'object' && child !== null && 'id' in child) {\n return child as { id: string; basePath: string };\n }\n return { id: child as string, basePath: this.dataContextPath() };\n });\n });\n\n protected getNormalizedPath(index: number) {\n return getNormalizedPath(this.props()['children']?.raw?.path, this.dataContextPath(), index);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\n\nimport { getNormalizedPath } from '../../core/utils';\nimport { BasicCatalogComponent } from './basic-catalog-component';\nimport { JUSTIFY_MAP, ALIGN_MAP } from './utils';\n\n/**\n * Angular implementation of the A2UI Column component (v0.9).\n *\n * Arranges child components in a vertical flex layout. Supports both static\n * lists of children and repeating templates bound to a data collection.\n *\n * Supported CSS variables:\n * - `--a2ui-column-gap`: Controls the gap between items in the column. Defaults to `--a2ui-spacing-m` (16px).\n */\n@Component({\n selector: 'a2ui-v09-column',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n '[style.display]': '\"flex\"',\n '[style.flex-direction]': '\"column\"',\n '[style.width]': '\"100%\"',\n '[style.gap]': '\"var(--a2ui-column-gap, var(--a2ui-spacing-m, 16px))\"',\n '[style.justify-content]': 'justify()',\n '[style.align-items]': 'align()'\n },\n template: `\n @if (!isRepeating()) {\n @for (child of normalizedChildren(); track child.id) {\n <a2ui-v09-component-host\n [componentKey]=\"child\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n\n @if (isRepeating()) {\n @for (item of children(); track item; let i = $index) {\n <a2ui-v09-component-host\n [componentKey]=\"{ id: templateId()!, basePath: getNormalizedPath(i) }\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `children`: A list of component IDs OR a repeating collection definition.\n * - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').\n * - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n protected justify = computed(() => {\n const val = this.props()['justify']?.value();\n return val ? (JUSTIFY_MAP[val] || val) : undefined;\n });\n protected align = computed(() => {\n const val = this.props()['align']?.value();\n return val ? (ALIGN_MAP[val] || val) : undefined;\n });\n\n protected children = computed(() => {\n const raw = this.props()['children']?.value() || [];\n return Array.isArray(raw) ? raw : [];\n });\n\n protected isRepeating = computed(() => {\n return !!this.props()['children']?.raw?.componentId;\n });\n\n protected templateId = computed(() => {\n return this.props()['children']?.raw?.componentId;\n });\n\n protected normalizedChildren = computed(() => {\n if (this.isRepeating()) return [];\n return this.children().map(child => {\n if (typeof child === 'object' && child !== null && 'id' in child) {\n return child as { id: string; basePath: string };\n }\n return { id: child as string, basePath: this.dataContextPath() };\n });\n });\n\n protected getNormalizedPath(index: number) {\n return getNormalizedPath(this.props()['children']?.raw?.path, this.dataContextPath(), index);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n input,\n computed,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { DataContext } from '@a2ui/web_core/v0_9';\nimport { A2uiRendererService } from '../../core/a2ui-renderer.service';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Button component (v0.9).\n *\n * Renders a clickable button with a single child component (usually Text).\n * Dispatches an action when clicked if an `action` property is provided.\n *\n * Supported CSS variables:\n * - `--a2ui-button-padding`: Controls the padding.\n * - `--a2ui-button-border-radius`: Controls the border radius.\n * - `--a2ui-button-border`: Controls the border.\n * - `--a2ui-button-margin`: Controls the margin.\n * - `--a2ui-button-background`: Controls the background color.\n * - `--a2ui-button-box-shadow`: Controls the box shadow.\n * - `--a2ui-button-font-weight`: Controls the font weight.\n */\n@Component({\n selector: 'a2ui-v09-button',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <button\n [type]=\"variant() === 'primary' ? 'submit' : 'button'\"\n [class]=\"'a2ui-button ' + variant()\"\n (click)=\"handleClick()\"\n [disabled]=\"props()['isValid']?.value() === false\"\n >\n @if (child()) {\n <a2ui-v09-component-host\n [componentKey]=\"child()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n </button>\n `,\n styles: [\n `\n .a2ui-button {\n padding: var(--a2ui-button-padding, var(--a2ui-spacing-m, 0.5rem) var(--a2ui-spacing-l, 1rem));\n border-radius: var(--a2ui-button-border-radius, var(--a2ui-spacing-s, 0.25rem));\n border: var(--a2ui-button-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));\n cursor: pointer;\n margin: var(--a2ui-button-margin, var(--a2ui-spacing-m, 0.5rem));\n background: var(--a2ui-button-background, var(--a2ui-color-surface, #fff));\n box-shadow: var(--a2ui-button-box-shadow, none);\n font-weight: var(--a2ui-button-font-weight, normal);\n --_a2ui-text-margin: 0;\n --_a2ui-text-color: var(--a2ui-color-on-secondary, #333);\n color: var(--_a2ui-text-color);\n }\n .a2ui-button.primary {\n background-color: var(--a2ui-color-primary, #17e);\n --_a2ui-text-color: var(--a2ui-color-on-primary, #fff);\n color: var(--_a2ui-text-color);\n border-color: var(--a2ui-color-primary-hover, #0069d9);\n }\n .a2ui-button.borderless {\n background: none;\n border: none;\n padding: 0;\n color: var(--a2ui-color-primary, #17e);\n }\n .a2ui-button:disabled {\n background-color: #e9ecef;\n color: #6c757d;\n border-color: #ced4da;\n cursor: not-allowed;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `child`: The ID of the component to render inside the button.\n * - `variant`: Button style variant ('default', 'primary', 'borderless').\n * - `action`: The A2UI action to dispatch on click.\n * - `checks`: Optional validation rules.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input.required<string>();\n dataContextPath = input<string>('/');\n\n private rendererService = inject(A2uiRendererService);\n\n variant = computed(() => this.props()['variant']?.value() ?? 'default');\n child = computed(() => this.props()['child']?.value());\n action = computed(() => this.props()['action']?.value());\n\n\n\n handleClick() {\n const action = this.action();\n if (action) {\n const surface = this.rendererService.surfaceGroup?.getSurface(this.surfaceId());\n if (surface) {\n const dataContext = new DataContext(surface, this.dataContextPath());\n const resolvedAction = dataContext.resolveAction(action);\n surface.dispatchAction(resolvedAction, this.componentId());\n }\n }\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI TextField component (v0.9).\n *\n * Renders a text input field with an optional label and placeholder.\n * Updates the bound data model property on every input change.\n *\n * Supported CSS variables:\n * - `--a2ui-color-input`: Controls the background color of the input.\n * - `--a2ui-color-on-input`: Controls the text color of the input.\n * - `--a2ui-textfield-border`: Controls the border of the input.\n * - `--a2ui-textfield-border-radius`: Controls the border radius of the input.\n * - `--a2ui-textfield-padding`: Controls the padding of the input.\n * - `--a2ui-textfield-color-border-focus`: Controls the border color on focus.\n * - `--a2ui-textfield-color-error`: Controls the border and text color for error states.\n * - `--a2ui-textfield-label-font-size`: Controls the font size of the label.\n * - `--a2ui-textfield-label-font-weight`: Controls the font weight of the label.\n */\n@Component({\n selector: 'a2ui-v09-text-field',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-text-field-container\">\n @if (label()) {\n <label>{{ label() }}</label>\n }\n <input\n [type]=\"inputType()\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [class.invalid]=\"props()['isValid']?.value() === false\"\n />\n @for (message of props()['validationErrors']?.value(); track message) {\n <div class=\"a2ui-error-message\">{{ message }}</div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-text-field-container {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n margin: var(--a2ui-spacing-xs, 4px);\n }\n label {\n font-size: var(--a2ui-textfield-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));\n font-weight: var(--a2ui-textfield-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n input {\n padding: var(--a2ui-textfield-padding, 8px);\n border: var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));\n border-radius: var(--a2ui-textfield-border-radius, 4px);\n background-color: var(--a2ui-color-input, #fff);\n color: var(--a2ui-color-on-input, #333);\n }\n input:focus {\n border-color: var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));\n outline: none;\n }\n input.invalid {\n border-color: var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));\n }\n .a2ui-error-message {\n color: var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));\n font-size: var(--a2ui-font-size-xs, 12px);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFieldComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `value`: The current string value of the input.\n * - `label`: Optional label text to display above the input.\n * - `placeholder`: Hint text shown when the input is empty.\n * - `variant`: Input type variant ('default', 'obscured' (password), 'number').\n * - `checks`: Optional validation rules.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n label = computed(() => this.props()['label']?.value());\n value = computed(() => this.props()['value']?.value() || '');\n placeholder = computed(() => this.props()['placeholder']?.value() || '');\n variant = computed(() => this.props()['variant']?.value());\n\n inputType = computed(() => {\n switch (this.variant()) {\n case 'obscured':\n return 'password';\n case 'number':\n return 'number';\n default:\n return 'text';\n }\n });\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n // Update the data path. If anything is listening to this path, it will be\n // notified.\n this.props()['value']?.onUpdate(value);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Image component (v0.9).\n *\n * Renders an image with configurable fit and shape variants.\n *\n * Supported CSS variables:\n * - `--a2ui-image-border-radius`: Controls the rounded corners.\n * - `--a2ui-image-icon-size`: Size of the icon variant.\n * - `--a2ui-image-avatar-size`: Size of the avatar variant.\n * - `--a2ui-image-small-feature-size`: Max-width of smallFeature variant.\n * - `--a2ui-image-large-feature-size`: Max-height of largeFeature variant.\n * - `--a2ui-image-header-size`: Height of header variant.\n */\n@Component({\n selector: 'a2ui-v09-image',\n standalone: true,\n imports: [],\n template: `\n <img\n [src]=\"url()\"\n [alt]=\"description()\"\n [style.object-fit]=\"fit()\"\n [class]=\"'a2ui-image ' + variant()\"\n />\n `,\n styles: [\n `\n .a2ui-image {\n display: block;\n max-width: 100%;\n height: auto;\n }\n .a2ui-image.circle {\n border-radius: 50%;\n aspect-ratio: 1 / 1;\n }\n .a2ui-image.rounded {\n border-radius: var(--a2ui-image-border-radius, var(--a2ui-border-radius, 8px));\n }\n .a2ui-image.icon {\n width: var(--a2ui-image-icon-size, 24px);\n height: var(--a2ui-image-icon-size, 24px);\n }\n .a2ui-image.avatar {\n width: var(--a2ui-image-avatar-size, 40px);\n height: var(--a2ui-image-avatar-size, 40px);\n border-radius: 50%;\n }\n .a2ui-image.smallFeature {\n max-width: var(--a2ui-image-small-feature-size, 100px);\n }\n .a2ui-image.mediumFeature {\n max-width: 300px;\n height: auto;\n }\n .a2ui-image.largeFeature {\n width: 100%;\n max-height: var(--a2ui-image-large-feature-size, 400px);\n }\n .a2ui-image.header {\n width: 100%;\n height: var(--a2ui-image-header-size, 200px);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `url`: The absolute URL of the image.\n * - `description`: Accessibility text for the image.\n * - `fit`: Object-fit mode ('cover', 'contain', 'fill', 'none', 'scale-down').\n * - `variant`: Style variant ('default', 'circle', 'rounded', 'icon', 'avatar', 'smallFeature', 'mediumFeature', 'largeFeature', 'header').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n url = computed(() => this.props()['url']?.value());\n description = computed(() => this.props()['description']?.value() || '');\n fit = computed(() => this.props()['fit']?.value() || 'cover');\n variant = computed(() => this.props()['variant']?.value() || 'default');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Icon component (v0.9).\n *\n * Supports both Material Icons (by name) and custom SVG icons (by path).\n *\n * Supported CSS variables:\n * - `--a2ui-icon-size`: Controls the width, height, and font size of the icon.\n * - `--a2ui-icon-font-family`: Controls the font family for icon fonts.\n * - `--a2ui-icon-color`: Controls the color of the icon.\n * - `--a2ui-icon-font-variation-settings`: Controls font variation settings (e.g. FILL).\n */\n@Component({\n selector: 'a2ui-v09-icon',\n standalone: true,\n imports: [],\n template: `\n @if (isPath()) {\n <svg class=\"a2ui-icon svg\" viewBox=\"0 0 24 24\" [style.fill]=\"color() || 'currentColor'\">\n <path [attr.d]=\"path()\"></path>\n </svg>\n } @else {\n <i class=\"material-icons a2ui-icon\" [style.color]=\"color()\">\n {{ iconName() }}\n </i>\n }\n `,\n styles: [\n `\n .a2ui-icon {\n display: inline-block;\n width: var(--a2ui-icon-size, 24px);\n height: var(--a2ui-icon-size, 24px);\n font-size: var(--a2ui-icon-size, 24px);\n font-family: var(--a2ui-icon-font-family, 'Material Icons');\n color: var(--a2ui-icon-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333)));\n font-variation-settings: var(--a2ui-icon-font-variation-settings, \"FILL\" 1);\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n vertical-align: middle;\n }\n .a2ui-icon.svg {\n fill: currentColor;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `name`: The name of the icon (e.g., 'home', 'settings') OR an object\n * with a `path` property for SVG icons.\n * - `color`: The CSS color to apply to the icon.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n color = computed(() => this.props()['color']?.value());\n iconNameRaw = computed(() => this.props()['name']?.value());\n\n isPath = computed(() => {\n const name = this.iconNameRaw();\n return typeof name === 'object' && name !== null && 'path' in name;\n });\n\n path = computed(() => {\n const name = this.iconNameRaw();\n return (name as any)?.path || '';\n });\n\n iconName = computed(() => {\n const name = this.iconNameRaw();\n if (typeof name !== 'string') return '';\n // Convert camelCase to snake_case for Material Icons\n return name.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n });\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Video component (v0.9).\n *\n * Renders a video player with standard controls and an optional poster image.\n *\n * Supported CSS variables:\n * - `--a2ui-video-border-radius`: Controls the border radius of the video element.\n */\n@Component({\n selector: 'a2ui-v09-video',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-video-container\">\n <video\n [attr.src]=\"url() || null\"\n controls\n [attr.poster]=\"posterUrl() || null\"\n class=\"a2ui-video\"\n >\n Your browser does not support the video tag.\n </video>\n </div>\n `,\n styles: [\n `\n .a2ui-video-container {\n width: 100%;\n max-width: 100%;\n }\n .a2ui-video {\n width: 100%;\n height: auto;\n display: block;\n border-radius: var(--a2ui-video-border-radius, 0);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `url`: The absolute URL of the video file.\n * - `posterUrl`: The URL of an image to show before the video starts.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n url = computed(() => this.props()['url']?.value());\n posterUrl = computed(() => this.props()['posterUrl']?.value());\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI AudioPlayer component (v0.9).\n *\n * Renders an audio player with standard controls and an optional description.\n *\n * Supported CSS variables:\n * - `--a2ui-audioplayer-background`: Controls the background of the player. Defaults to `transparent`.\n * - `--a2ui-audioplayer-border-radius`: Controls the border radius. Defaults to `0`.\n * - `--a2ui-audioplayer-padding`: Controls the padding. Defaults to `0`.\n */\n@Component({\n selector: 'a2ui-v09-audio-player',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-audio-player\">\n @if (description()) {\n <div class=\"a2ui-audio-description\">\n {{ description() }}\n </div>\n }\n <audio [attr.src]=\"url() || null\" controls class=\"a2ui-audio\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n `,\n styles: [\n `\n .a2ui-audio-player {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 0.25rem);\n background: var(--a2ui-audioplayer-background, transparent);\n border-radius: var(--a2ui-audioplayer-border-radius, 0);\n padding: var(--a2ui-audioplayer-padding, 0);\n width: 100%;\n }\n .a2ui-audio-description {\n font-size: var(--a2ui-font-size-s, 0.875rem);\n color: var(--a2ui-text-caption-color, light-dark(#666, #aaa));\n }\n .a2ui-audio {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AudioPlayerComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `url`: The absolute URL of the audio file.\n * - `description`: Optional text to display above the player.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input<string>();\n componentId = input<string>();\n dataContextPath = input<string>();\n\n description = computed(() => this.props()['description']?.value());\n url = computed(() => this.props()['url']?.value());\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\nimport { Child } from '../../core/component-binder.service';\n\n/**\n * Angular implementation of the A2UI List component (v0.9).\n *\n * Renders a list of child components with support for ordered, unordered,\n * and unstyled layouts in both vertical and horizontal orientations.\n *\n * Supported CSS variables:\n * - `--a2ui-list-gap`: Controls the gap between items.\n * - `--a2ui-list-padding`: Controls the padding (applied to padding-inline-start).\n */\n@Component({\n selector: 'a2ui-v09-list',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n @switch (listTag()) {\n @case ('ol') {\n <ol [class]=\"'a2ui-list ' + orientation()\" [style.list-style-type]=\"styleType()\">\n @for (child of children(); track trackBy($index, child)) {\n <li>\n <a2ui-v09-component-host\n [componentKey]=\"child\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n </li>\n }\n </ol>\n }\n @case ('ul') {\n <ul [class]=\"'a2ui-list ' + orientation()\" [style.list-style-type]=\"styleType()\">\n @for (child of children(); track trackBy($index, child)) {\n <li>\n <a2ui-v09-component-host\n [componentKey]=\"child\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n </li>\n }\n </ul>\n }\n @default {\n <div [class]=\"'a2ui-list ' + orientation()\" style=\"list-style-type: none;\">\n @for (child of children(); track trackBy($index, child)) {\n <div class=\"a2ui-list-item-none\">\n <a2ui-v09-component-host\n [componentKey]=\"child\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n </div>\n }\n </div>\n }\n }\n `,\n styles: [\n `\n .a2ui-list {\n display: flex;\n padding-inline-start: var(--a2ui-list-padding, var(--a2ui-spacing-l, 24px));\n margin: 0;\n }\n .a2ui-list.vertical {\n flex-direction: column;\n gap: var(--a2ui-list-gap, var(--a2ui-spacing-s, 8px));\n }\n .a2ui-list.horizontal {\n flex-direction: row;\n gap: var(--a2ui-list-gap, var(--a2ui-spacing-m, 16px));\n list-style-position: inside;\n }\n .a2ui-list-item-none {\n display: block;\n }\n .horizontal .a2ui-list-item-none {\n display: inline-block;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `children`: A list of component IDs to render as list items.\n * - `listStyle`: The type of list ('ordered', 'unordered', 'none').\n * - `orientation`: The layout direction ('vertical', 'horizontal').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n listStyle = computed(() => this.props()['listStyle']?.value());\n orientation = computed(() => this.props()['orientation']?.value() || 'vertical');\n children = computed(() => {\n const raw = this.props()['children']?.value();\n return Array.isArray(raw) ? raw : [];\n });\n\n listTag = computed(() => {\n const style = this.listStyle();\n if (style === 'ordered') return 'ol';\n if (style === 'unordered') return 'ul';\n return 'div';\n });\n\n styleType = computed(() => {\n const style = this.listStyle();\n if (style === 'none') return 'none';\n return '';\n });\n\n /**\n * Track-by function to ensure stable change detection for list items.\n * Uses the full resolved path (`basePath/id`) to uniquely identify items.\n */\n readonly trackBy = (index: number, item: Child) => `${item.basePath}/${item.id}`;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Card component (v0.9).\n *\n * Renders a container with a shadow and rounded corners for grouping related content.\n *\n * Supported CSS variables:\n * - `--a2ui-card-padding`: Controls the padding.\n * - `--a2ui-card-border-radius`: Controls the border radius.\n * - `--a2ui-card-box-shadow`: Controls the box shadow.\n * - `--a2ui-card-background`: Controls the background color.\n * - `--a2ui-card-border`: Controls the border.\n * - `--a2ui-card-margin`: Controls the margin.\n */\n@Component({\n selector: 'a2ui-v09-card',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-card\">\n @if (child()) {\n <a2ui-v09-component-host\n [componentKey]=\"child()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-card {\n padding: var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));\n border-radius: var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));\n box-shadow: var(--a2ui-card-box-shadow, 0 2px 4px rgba(0,0,0,0.1));\n background-color: var(--a2ui-card-background, var(--a2ui-color-surface, #fff));\n border: var(--a2ui-card-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));\n margin: var(--a2ui-card-margin, var(--a2ui-spacing-m, 16px));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `child`: The component ID to render inside the card.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n child = computed(() => this.props()['child']?.value());\n\n\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Tabs component (v0.9).\n *\n * Renders a set of tabs where each tab has a label and associated content.\n * Manages the active tab state internally.\n *\n * Supported CSS variables:\n * - `--a2ui-tabs-border`: Controls the border of the tab bar.\n * - `--a2ui-tabs-header-background`: Controls the background of tab buttons.\n * - `--a2ui-tabs-header-color`: Controls the text color of tab buttons.\n * - `--a2ui-tabs-header-background-active`: Controls the background of the active tab button.\n * - `--a2ui-tabs-header-color-active`: Controls the text color of the active tab button.\n * - `--a2ui-tabs-content-padding`: Controls the padding of the tab content.\n */\n@Component({\n selector: 'a2ui-v09-tabs',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-tabs\">\n <div class=\"a2ui-tab-bar\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n class=\"a2ui-tab-button\"\n [class.active]=\"activeTabIndex() === i\"\n (click)=\"setActiveTab(i)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n @if (normalizedActiveTabContent()) {\n <div class=\"a2ui-tab-content\">\n <a2ui-v09-component-host\n [componentKey]=\"normalizedActiveTabContent()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-tabs {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n .a2ui-tab-bar {\n display: flex;\n border-bottom: var(--a2ui-tabs-border, 2px solid var(--a2ui-color-border, #eee));\n gap: var(--a2ui-spacing-m, 16px);\n }\n .a2ui-tab-button {\n padding: var(--a2ui-spacing-s, 8px) var(--a2ui-spacing-m, 16px);\n border: none;\n background: var(--a2ui-tabs-header-background, transparent);\n cursor: pointer;\n font-weight: 500;\n color: var(--a2ui-tabs-header-color, var(--a2ui-text-caption-color, #666));\n border-bottom: 2px solid transparent;\n margin-bottom: -2px;\n }\n .a2ui-tab-button.active {\n background: var(--a2ui-tabs-header-background-active, transparent);\n color: var(--a2ui-tabs-header-color-active, var(--a2ui-color-primary, #007bff));\n border-bottom: 2px solid var(--a2ui-color-primary, #007bff);\n }\n .a2ui-tab-content {\n padding: var(--a2ui-tabs-content-padding, var(--a2ui-spacing-m, 16px) 0);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `tabs`: A list of tab objects, each containing a `label` and `content` ID.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n activeTabIndex = signal(0);\n\n tabs = computed(() => this.props()['tabs']?.value() || []);\n activeTab = computed(() => this.tabs()[this.activeTabIndex()]);\n\n protected normalizedActiveTabContent = computed(() => {\n const content = this.activeTab()?.content;\n if (!content) return null;\n if (typeof content === 'object' && content !== null && 'id' in content) {\n return content as { id: string; basePath: string };\n }\n return { id: content as string, basePath: this.dataContextPath() };\n });\n\n setActiveTab(index: number) {\n this.activeTabIndex.set(index);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { ComponentHostComponent } from '../../core/component-host.component';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Modal component (v0.9).\n *\n * Renders a trigger component that opening an overlay containing a content component.\n *\n * Supported CSS variables:\n * - `--a2ui-modal-background`: Controls the background of the modal content.\n * - `--a2ui-modal-padding`: Controls the padding of the modal content.\n * - `--a2ui-modal-border-radius`: Controls the border radius of the modal content.\n * - `--a2ui-modal-box-shadow`: Controls the box shadow of the modal content.\n * - `--a2ui-modal-backdrop-bg`: Controls the background of the backdrop.\n */\n@Component({\n selector: 'a2ui-v09-modal',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-modal-wrapper\">\n <div (click)=\"openModal()\" class=\"a2ui-modal-trigger\">\n @if (trigger()) {\n <a2ui-v09-component-host\n [componentKey]=\"trigger()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n </div>\n\n @if (isOpen()) {\n <div class=\"a2ui-modal-overlay\" (click)=\"closeModal()\">\n <div class=\"a2ui-modal-content\" (click)=\"$event.stopPropagation()\">\n <button class=\"a2ui-modal-close\" (click)=\"closeModal()\">×</button>\n @if (content()) {\n <a2ui-v09-component-host\n [componentKey]=\"content()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n </div>\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-modal-wrapper {\n display: inline-block;\n }\n .a2ui-modal-trigger {\n cursor: pointer;\n }\n .a2ui-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: var(--a2ui-modal-backdrop-bg, rgba(0, 0, 0, 0.5));\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n .a2ui-modal-content {\n background: var(--a2ui-modal-background, var(--a2ui-color-surface, white));\n padding: var(--a2ui-modal-padding, var(--a2ui-spacing-xl, 32px));\n border-radius: var(--a2ui-modal-border-radius, var(--a2ui-border-radius, 8px));\n position: relative;\n min-width: 300px;\n max-width: 80%;\n max-height: 80%;\n overflow-y: auto;\n box-shadow: var(--a2ui-modal-box-shadow, 0 10px 25px rgba(0, 0, 0, 0.2));\n }\n .a2ui-modal-close {\n position: absolute;\n top: 10px;\n right: 15px;\n border: none;\n background: none;\n font-size: 24px;\n cursor: pointer;\n color: var(--a2ui-text-caption-color, #999);\n }\n .a2ui-modal-close:hover {\n color: var(--a2ui-text-color, #333);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `trigger`: The ID of the component that opens the modal.\n * - `content`: The ID of the component to display inside the modal.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n isOpen = signal(false);\n\n trigger = computed(() => this.props()['trigger']?.value());\n content = computed(() => this.props()['content']?.value());\n\n\n\n openModal() {\n this.isOpen.set(true);\n }\n\n closeModal() {\n this.isOpen.set(false);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Divider component (v0.9).\n *\n * Renders a horizontal or vertical line to separate content.\n *\n * Supported CSS variables:\n * - `--a2ui-divider-border`: Controls the border of the divider (horizontal and vertical).\n * - `--a2ui-divider-spacing`: Controls the margin around the divider.\n */\n@Component({\n selector: 'a2ui-v09-divider',\n standalone: true,\n imports: [],\n host: {\n '[style.display]': '\"block\"',\n '[style.width]': 'axis() === \"horizontal\" ? \"100%\" : \"auto\"',\n },\n template: `\n <hr\n class=\"a2ui-divider\"\n [class.horizontal]=\"axis() === 'horizontal'\"\n [class.vertical]=\"axis() === 'vertical'\"\n />\n `,\n styles: [\n `\n .a2ui-divider {\n border: 0;\n border-top: var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));\n margin: var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;\n width: 100%;\n }\n .a2ui-divider.vertical {\n width: var(--a2ui-border-width, 1px);\n height: 100%;\n margin: 0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));\n border-top: 0;\n border-left: var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `axis`: The orientation of the divider ('horizontal' (default) or 'vertical').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n axis = computed(() => this.props()['axis']?.value() ?? 'horizontal');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI CheckBox component (v0.9).\n *\n * Renders a checkbox with a label. Updates the bound data model property\n * when the checked state changes.\n *\n * Supported CSS variables:\n * - `--a2ui-checkbox-margin`: Controls the margin.\n * - `--a2ui-checkbox-gap`: Controls the gap between checkbox and label.\n * - `--a2ui-checkbox-label-font-size`: Controls the font size of the label.\n * - `--a2ui-checkbox-label-font-weight`: Controls the font weight of the label.\n * - `--a2ui-checkbox-size`: Controls the width and height of the checkbox.\n * - `--a2ui-checkbox-background`: Controls the background of the checkbox.\n * - `--a2ui-checkbox-border`: Controls the border of the checkbox.\n * - `--a2ui-checkbox-border-radius`: Controls the border radius of the checkbox.\n * - `--a2ui-checkbox-color-error`: Controls the color for error states.\n */\n@Component({\n selector: 'a2ui-v09-check-box',\n standalone: true,\n imports: [],\n template: `\n <label class=\"a2ui-check-box-label\">\n <input\n type=\"checkbox\"\n [checked]=\"value()\"\n (change)=\"handleChange($event)\"\n class=\"a2ui-check-box-input\"\n />\n <span class=\"a2ui-check-box-text\">{{ label() }}</span>\n </label>\n `,\n styles: [\n `\n .a2ui-check-box-label {\n display: flex;\n align-items: center;\n gap: var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, 0.5rem));\n cursor: pointer;\n padding: 4px 0;\n margin: var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-check-box-input {\n width: var(--a2ui-checkbox-size, 1rem);\n height: var(--a2ui-checkbox-size, 1rem);\n cursor: pointer;\n background: var(--a2ui-checkbox-background, inherit);\n border: var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);\n border-radius: var(--a2ui-checkbox-border-radius, 4px);\n }\n .a2ui-check-box-text {\n font-size: var(--a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px)));\n font-weight: var(--a2ui-checkbox-label-font-weight, bold);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckBoxComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `label`: The text to display next to the checkbox.\n * - `value`: Boolean indicating whether the checkbox is checked.\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n value = computed(() => this.props()['value']?.value() === true);\n label = computed(() => this.props()['label']?.value());\n\n handleChange(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.props()['value']?.onUpdate(checked);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI ChoicePicker component (v0.9).\n *\n * Renders a set of options as either radio buttons/checkboxes or chips.\n * Supports both single and multiple selection.\n *\n * Supported CSS variables:\n * - `--a2ui-choicepicker-gap`: Controls spacing between options/chips.\n * - `--a2ui-choicepicker-padding`: Controls padding of the container.\n * - `--a2ui-choicepicker-checkbox-size`: Controls size of checkboxes/radios.\n * - `--a2ui-choicepicker-chip-padding`: Controls padding of chips.\n * - `--a2ui-choicepicker-chip-border-radius`: Controls border radius of chips.\n * - `--a2ui-choicepicker-chip-border`: Controls border of chips.\n * - `--a2ui-choicepicker-chip-background`: Controls background of chips.\n * - `--a2ui-choicepicker-chip-background-selected`: Controls background of selected chips.\n */\n@Component({\n selector: 'a2ui-v09-choice-picker',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-choice-picker\">\n <!-- Chips Variant -->\n @if (displayStyle() === 'chips') {\n <div class=\"a2ui-chips-group\">\n @for (choice of choices(); track choice.value) {\n <button\n class=\"a2ui-chip\"\n [class.active]=\"isSelected(choice.value)\"\n (click)=\"toggleActive(choice.value)\"\n >\n {{ choice.label }}\n </button>\n }\n </div>\n } @else {\n <!-- Checkbox/Radio Variant -->\n <div class=\"a2ui-options-group\">\n @for (choice of choices(); track choice.value) {\n <label class=\"a2ui-option-label\">\n <input\n [type]=\"isMultiple() ? 'checkbox' : 'radio'\"\n [name]=\"componentId()\"\n [value]=\"choice.value\"\n [checked]=\"isSelected(choice.value)\"\n (change)=\"onCheckChange(choice.value, $event)\"\n class=\"a2ui-option-input\"\n />\n <span class=\"a2ui-option-text\">{{ choice.label }}</span>\n </label>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-choice-picker {\n width: 100%;\n padding: var(--a2ui-choicepicker-padding, 0);\n }\n .a2ui-options-group {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-option-label {\n display: flex;\n align-items: center;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n cursor: pointer;\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-option-input {\n width: var(--a2ui-choicepicker-checkbox-size, 1rem);\n height: var(--a2ui-choicepicker-checkbox-size, 1rem);\n }\n .a2ui-chips-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-chip {\n padding: var(--a2ui-choicepicker-chip-padding, var(--a2ui-spacing-s, 0.5rem) var(--a2ui-spacing-m, 1rem));\n border-radius: var(--a2ui-choicepicker-chip-border-radius, 100px);\n border: var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));\n background: var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));\n cursor: pointer;\n transition: all 0.2s;\n }\n .a2ui-chip.active {\n background-color: var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e));\n color: var(--a2ui-color-on-primary, #fff);\n border-color: var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChoicePickerComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `value`: The currently selected value(s).\n * - `choices` or `options`: List of choice objects (label and value).\n * - `displayStyle`: How to render the choices ('default' or 'chips').\n * - `variant`: Selection mode ('singleSelection' or 'multipleSelection').\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n displayStyle = computed(() => this.props()['displayStyle']?.value());\n choices = computed(\n () => this.props()['choices']?.value() || this.props()['options']?.value() || [],\n );\n variant = computed(() => this.props()['variant']?.value());\n selectedValue = computed(() => this.props()['value']?.value());\n\n isMultiple(): boolean {\n return this.variant() === 'multipleSelection';\n }\n\n isSelected(value: string): boolean {\n const selected = this.selectedValue();\n if (Array.isArray(selected)) {\n return selected.includes(value);\n }\n return selected === value;\n }\n\n onCheckChange(value: string, event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.updateValue(value, checked);\n }\n\n toggleActive(value: string) {\n const current = this.isSelected(value);\n this.updateValue(value, !current);\n }\n\n private updateValue(value: string, active: boolean) {\n const current = this.selectedValue();\n if (this.isMultiple()) {\n let next = Array.isArray(current) ? [...current] : [];\n if (active) {\n if (!next.includes(value)) next.push(value);\n } else {\n next = next.filter((v: any) => v !== value);\n }\n this.props()['value']?.onUpdate(next);\n } else {\n if (active) {\n this.props()['value']?.onUpdate(value);\n }\n }\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI Slider component (v0.9).\n *\n * Renders a range input slider with a label and its current value.\n *\n * Supported CSS variables:\n * - `--a2ui-slider-margin`: Controls the margin of the container.\n * - `--a2ui-slider-label-font-size`: Controls the font size of the label.\n * - `--a2ui-slider-label-font-weight`: Controls the font weight of the label.\n * - `--a2ui-slider-thumb-color`: Controls the accent color of the thumb.\n * - `--a2ui-slider-track-color`: Controls the background of the track.\n */\n@Component({\n selector: 'a2ui-v09-slider',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-slider-container\">\n <div class=\"a2ui-slider-header\">\n <span class=\"a2ui-slider-label\">{{ label() }}</span>\n <span class=\"a2ui-slider-value\">{{ value() }}</span>\n </div>\n <input\n type=\"range\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value() ?? min()\"\n (input)=\"handleInput($event)\"\n class=\"a2ui-slider\"\n />\n </div>\n `,\n styles: [\n `\n .a2ui-slider-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n margin: var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px));\n }\n .a2ui-slider-header {\n display: flex;\n justify-content: space-between;\n font-size: var(--a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));\n font-weight: var(--a2ui-slider-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-slider {\n width: 100%;\n cursor: pointer;\n accent-color: var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));\n background: var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SliderComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `value`: The current numeric value.\n * - `label`: Label text to display.\n * - `min`: Minimum value (default: 0).\n * - `max`: Maximum value (default: 100).\n * - `step`: Increment step (default: 1).\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n label = computed(() => this.props()['label']?.value());\n value = computed(() => this.props()['value']?.value());\n min = computed(() => this.props()['min']?.value() ?? 0);\n max = computed(() => this.props()['max']?.value() ?? 100);\n step = computed(() => this.props()['step']?.value() ?? 1);\n\n handleInput(event: Event) {\n const val = Number((event.target as HTMLInputElement).value);\n this.props()['value']?.onUpdate(val);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BoundProperty } from '../../core/types';\nimport { BasicCatalogComponent } from './basic-catalog-component';\n\n/**\n * Angular implementation of the A2UI DateTimeInput component (v0.9).\n *\n * Renders date and/or time input fields. Combines them into an ISO string\n * for the bound data model property.\n *\n * Supported CSS variables:\n * - `--a2ui-datetimeinput-background`: Controls the background of inputs.\n * - `--a2ui-datetimeinput-color`: Controls the text color of inputs.\n * - `--a2ui-datetimeinput-border`: Controls the border of inputs.\n * - `--a2ui-datetimeinput-border-radius`: Controls the border radius of inputs.\n * - `--a2ui-datetimeinput-padding`: Controls the padding of inputs.\n * - `--a2ui-datetimeinput-label-font-size`: Controls the font size of the label.\n * - `--a2ui-datetimeinput-label-font-weight`: Controls the font weight of the label.\n */\n@Component({\n selector: 'a2ui-v09-date-time-input',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-date-time-container\">\n @if (label()) {\n <label class=\"a2ui-date-time-label\">\n {{ label() }}\n </label>\n }\n <div class=\"a2ui-date-time-inputs\">\n @if (enableDate()) {\n <input\n type=\"date\"\n [value]=\"dateValue()\"\n (change)=\"handleDateChange($event)\"\n class=\"a2ui-date-time-input\"\n />\n }\n @if (enableTime()) {\n <input\n type=\"time\"\n [value]=\"timeValue()\"\n (change)=\"handleTimeChange($event)\"\n class=\"a2ui-date-time-input\"\n />\n }\n </div>\n </div>\n `,\n styles: [\n `\n .a2ui-date-time-container {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n width: 100%;\n }\n .a2ui-date-time-label {\n font-size: var(--a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));\n font-weight: var(--a2ui-datetimeinput-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-date-time-inputs {\n display: flex;\n gap: var(--a2ui-spacing-s, 8px);\n width: 100%;\n }\n .a2ui-date-time-input {\n padding: var(--a2ui-datetimeinput-padding, 8px);\n border-radius: var(--a2ui-datetimeinput-border-radius, 4px);\n border: var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));\n background-color: var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));\n color: var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));\n font-family: inherit;\n flex: 1;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateTimeInputComponent extends BasicCatalogComponent {\n /**\n * Reactive properties resolved from the A2UI {@link ComponentModel}.\n *\n * Expected properties:\n * - `value`: The current ISO date/time string.\n * - `label`: Optional label text.\n * - `enableDate`: Whether to show the date picker (default: true).\n * - `enableTime`: Whether to show the time picker (default: false).\n */\n props = input<Record<string, BoundProperty>>({});\n surfaceId = input.required<string>();\n componentId = input<string>();\n dataContextPath = input<string>('/');\n\n label = computed(() => this.props()['label']?.value());\n enableDate = computed(() => this.props()['enableDate']?.value() ?? true);\n enableTime = computed(() => this.props()['enableTime']?.value() ?? false);\n\n private rawValue = computed(() => this.props()['value']?.value() || '');\n\n dateValue = computed(() => {\n const val = this.rawValue();\n if (!val) return '';\n return val.includes('T') ? val.split('T')[0] : val;\n });\n\n timeValue = computed(() => {\n const val = this.rawValue();\n if (!val || !val.includes('T')) return '';\n return val.split('T')[1].substring(0, 5);\n });\n\n handleDateChange(event: Event) {\n const date = (event.target as HTMLInputElement).value;\n const current = this.rawValue();\n if (this.enableTime()) {\n const time = current.includes('T') ? current.split('T')[1] : '00:00:00';\n this.props()['value']?.onUpdate(`${date}T${time}`);\n } else {\n this.props()['value']?.onUpdate(date);\n }\n }\n\n handleTimeChange(event: Event) {\n const time = (event.target as HTMLInputElement).value;\n const current = this.rawValue();\n const date = current.includes('T')\n ? current.split('T')[0]\n : current || new Date().toISOString().split('T')[0];\n this.props()['value']?.onUpdate(`${date}T${time}:00`);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AngularCatalog, AngularComponentImplementation } from '../types';\nimport { TextComponent } from './text.component';\nimport { RowComponent } from './row.component';\nimport { ColumnComponent } from './column.component';\nimport { ButtonComponent } from './button.component';\nimport { TextFieldComponent } from './text-field.component';\nimport { ImageComponent } from './image.component';\nimport { IconComponent } from './icon.component';\nimport { VideoComponent } from './video.component';\nimport { AudioPlayerComponent } from './audio-player.component';\nimport { ListComponent } from './list.component';\nimport { CardComponent } from './card.component';\nimport { TabsComponent } from './tabs.component';\nimport { ModalComponent } from './modal.component';\nimport { DividerComponent } from './divider.component';\nimport { CheckBoxComponent } from './check-box.component';\nimport { ChoicePickerComponent } from './choice-picker.component';\nimport { SliderComponent } from './slider.component';\nimport { DateTimeInputComponent } from './date-time-input.component';\n\nimport {\n BASIC_FUNCTIONS,\n TextApi,\n RowApi,\n ColumnApi,\n ButtonApi,\n TextFieldApi,\n ImageApi,\n IconApi,\n VideoApi,\n AudioPlayerApi,\n ListApi,\n CardApi,\n TabsApi,\n ModalApi,\n DividerApi,\n CheckBoxApi,\n ChoicePickerApi,\n SliderApi,\n DateTimeInputApi,\n} from '@a2ui/web_core/v0_9/basic_catalog';\nimport { FunctionImplementation } from '@a2ui/web_core/v0_9';\n\n/**\n * The set of default Angular implementations for each component in the basic catalog.\n */\nconst DEFAULT_COMPONENT_IMPLEMENTATIONS: Record<string, AngularComponentImplementation> = {\n text: { ...TextApi, component: TextComponent },\n row: { ...RowApi, component: RowComponent },\n column: { ...ColumnApi, component: ColumnComponent },\n button: { ...ButtonApi, component: ButtonComponent },\n textField: { ...TextFieldApi, component: TextFieldComponent },\n image: { ...ImageApi, component: ImageComponent },\n icon: { ...IconApi, component: IconComponent },\n video: { ...VideoApi, component: VideoComponent },\n audioPlayer: { ...AudioPlayerApi, component: AudioPlayerComponent },\n list: { ...ListApi, component: ListComponent },\n card: { ...CardApi, component: CardComponent },\n tabs: { ...TabsApi, component: TabsComponent },\n modal: { ...ModalApi, component: ModalComponent },\n divider: { ...DividerApi, component: DividerComponent },\n checkBox: { ...CheckBoxApi, component: CheckBoxComponent },\n choicePicker: { ...ChoicePickerApi, component: ChoicePickerComponent },\n slider: { ...SliderApi, component: SliderComponent },\n dateTimeInput: { ...DateTimeInputApi, component: DateTimeInputComponent },\n} as const;\n\n/**\n * Interface for specifying overrides and configuration for the basic catalog.\n */\nexport interface BasicCatalogOptions {\n /**\n * An optional override for the catalog's unique identifier.\n */\n id?: string;\n\n /**\n * Optional overrides for individual components in the catalog.\n */\n components?: Partial<{\n [K in keyof typeof DEFAULT_COMPONENT_IMPLEMENTATIONS]: AngularComponentImplementation;\n }>;\n\n /**\n * Optional additional components to include in the catalog beyond\n * the standard basic catalog components.\n */\n extraComponents?: AngularComponentImplementation[];\n\n /**\n * An optional set of function implementations to use instead of the defaults.\n */\n functions?: FunctionImplementation[];\n}\n\n/**\n * The set of Angular UI components provided by the basic catalog.\n */\nexport const BASIC_COMPONENTS: AngularComponentImplementation[] = Object.values(\n DEFAULT_COMPONENT_IMPLEMENTATIONS,\n);\n\n/**\n * The set of client-side functions provided by the basic catalog.\n */\nexport { BASIC_FUNCTIONS };\n\n/**\n * A base class for basic catalogs, providing extensibility for non-DI use cases.\n */\nexport class BasicCatalogBase extends AngularCatalog {\n constructor(options: BasicCatalogOptions = {}) {\n const id = options.id ?? 'https://a2ui.org/specification/v0_9/basic_catalog.json';\n const functions = options.functions ?? BASIC_FUNCTIONS;\n\n const overrides = options.components ?? {};\n const components: AngularComponentImplementation[] = [\n ...Object.entries(DEFAULT_COMPONENT_IMPLEMENTATIONS).map(([key, defaultValue]) => {\n const impl = (overrides as any)[key] ?? defaultValue;\n return { ...impl, name: impl.name || key };\n }),\n ...(options.extraComponents ?? []),\n ];\n\n super(id, components, functions);\n }\n}\n\n/**\n * A basic catalog of components and functions for v0.9 verification.\n *\n * This catalog includes a wide range of UI components (Text, Button, Row, etc.)\n * and utility functions (capitalize, formatString) defined in the A2UI v0.9\n * basic catalog specification.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class BasicCatalog extends BasicCatalogBase {\n constructor() {\n super();\n }\n}\n","/*\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Public API surface for A2UI Angular Renderer v0.9.\n *\n * This module provides the core services, components, and catalogs required\n * to render A2UI surfaces using the v0.9 protocol.\n *\n * @module v0.9\n */\n\n// Core Services and Components\nexport * from './core/a2ui-renderer.service';\nexport * from './core/component-host.component';\nexport * from './core/surface.component';\nexport * from './core/component-binder.service';\nexport * from './core/types';\nexport * from './core/utils';\nexport * from './core/markdown';\n\n// Catalog Types and Implementations\nexport * from './catalog/types';\nexport * from './catalog/basic/basic-catalog';\n\n// Basic Catalog Components\nexport * from './catalog/basic/text.component';\nexport * from './catalog/basic/row.component';\nexport * from './catalog/basic/column.component';\nexport * from './catalog/basic/button.component';\nexport * from './catalog/basic/text-field.component';\nexport * from './catalog/basic/image.component';\nexport * from './catalog/basic/icon.component';\nexport * from './catalog/basic/video.component';\nexport * from './catalog/basic/audio-player.component';\nexport * from './catalog/basic/list.component';\nexport * from './catalog/basic/card.component';\nexport * from './catalog/basic/tabs.component';\nexport * from './catalog/basic/modal.component';\nexport * from './catalog/basic/divider.component';\nexport * from './catalog/basic/check-box.component';\nexport * from './catalog/basic/choice-picker.component';\nexport * from './catalog/basic/slider.component';\nexport * from './catalog/basic/date-time-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["angularSignal","computed","effect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"a2ui-angular-v0_9.mjs","sources":["../../v0_9/core/a2ui-renderer.service.ts","../../v0_9/core/utils.ts","../../v0_9/core/component-binder.service.ts","../../v0_9/core/component-host.component.ts","../../v0_9/core/surface.component.ts","../../v0_9/core/catalog_component.ts","../../v0_9/core/types.ts","../../v0_9/core/markdown.ts","../../v0_9/catalog/types.ts","../../v0_9/catalog/basic/basic-catalog-component.ts","../../v0_9/catalog/basic/text.component.ts","../../v0_9/catalog/basic/utils.ts","../../v0_9/catalog/basic/row.component.ts","../../v0_9/catalog/basic/column.component.ts","../../v0_9/catalog/basic/button.component.ts","../../v0_9/catalog/basic/text-field.component.ts","../../v0_9/catalog/basic/image.component.ts","../../v0_9/catalog/basic/icon.component.ts","../../v0_9/catalog/basic/video.component.ts","../../v0_9/catalog/basic/audio-player.component.ts","../../v0_9/catalog/basic/list.component.ts","../../v0_9/catalog/basic/card.component.ts","../../v0_9/catalog/basic/tabs.component.ts","../../v0_9/catalog/basic/modal.component.ts","../../v0_9/catalog/basic/divider.component.ts","../../v0_9/catalog/basic/check-box.component.ts","../../v0_9/catalog/basic/choice-picker.component.ts","../../v0_9/catalog/basic/slider.component.ts","../../v0_9/catalog/basic/date-time-input.component.ts","../../v0_9/catalog/basic/basic-catalog.ts","../../v0_9/public-api.ts","../../v0_9/a2ui-angular-v0_9.ts"],"sourcesContent":["/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy, InjectionToken, Inject} from '@angular/core';\nimport {\n MessageProcessor,\n SurfaceGroupModel,\n ActionListener as ActionHandler,\n A2uiMessage,\n A2uiClientAction as Action,\n} from '@a2ui/web_core/v0_9';\nimport {AngularComponentImplementation, AngularCatalog} from '../catalog/types';\n\n/**\n * Configuration for the A2UI renderer.\n */\nexport interface RendererConfiguration {\n /** The catalogs containing the available components and functions. */\n catalogs: AngularCatalog[];\n /**\n * Optional handler for actions dispatched from any surface.\n *\n * This callback is invoked whenever a component in any surface triggers an action\n * (e.g., clicking a button with an `onTap` property).\n */\n actionHandler?: (action: Action) => void;\n}\n\n/**\n * Injection token for the A2UI renderer configuration.\n */\nexport const A2UI_RENDERER_CONFIG = new InjectionToken<RendererConfiguration>(\n 'A2UI_RENDERER_CONFIG',\n);\n\n/**\n * Manages A2UI v0.9 rendering sessions by bridging the MessageProcessor to Angular.\n *\n * This service is the central entry point for the A2UI renderer. It maintains a\n * {@link MessageProcessor} that turns A2UI protocol messages into a reactive\n * {@link SurfaceGroupModel}.\n */\n@Injectable()\nexport class A2uiRendererService implements OnDestroy {\n private _messageProcessor: MessageProcessor<AngularComponentImplementation>;\n private _catalogs: AngularCatalog[] = [];\n\n constructor(@Inject(A2UI_RENDERER_CONFIG) private config: RendererConfiguration) {\n this._catalogs = this.config.catalogs;\n\n this._messageProcessor = new MessageProcessor<AngularComponentImplementation>(\n this._catalogs,\n this.config.actionHandler as ActionHandler,\n );\n }\n\n /**\n * Processes a list of A2UI messages and updates the internal surface models.\n *\n * This should be called whenever new messages arrive from an agent or orchestrator.\n *\n * @param messages The list of {@link A2uiMessage}s to process.\n */\n processMessages(messages: A2uiMessage[]): void {\n this._messageProcessor.processMessages(messages);\n }\n\n /**\n * The current surface group model containing all active surfaces.\n *\n * Surfaces can be retrieved from this group using their `surfaceId`.\n */\n get surfaceGroup(): SurfaceGroupModel<AngularComponentImplementation> {\n return this._messageProcessor.model;\n }\n\n ngOnDestroy(): void {\n this._messageProcessor.model.dispose();\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DestroyRef, Signal, signal as angularSignal} from '@angular/core';\nimport {Signal as PreactSignal, effect, signal as preactSignal} from '@a2ui/web_core/v0_9';\nexport {preactSignal};\n\n/**\n * Bridges a Preact Signal (from A2UI web_core) to a reactive Angular Signal.\n *\n * This utility handles the lifecycle mapping between Preact and Angular,\n * ensuring that updates from the A2UI data model are propagated correctly\n * to Angular's change detection, and resources are cleaned up when the\n * component is destroyed.\n *\n * @param preactSignal The source Preact Signal.\n * @param destroyRef Angular DestroyRef for lifecycle management.\n * @param ngZone Optional NgZone to ensure updates run within the Angular zone\n * (necessary for correct change detection in OnPush components).\n * @returns A read-only Angular Signal.\n */\nimport {NgZone} from '@angular/core';\n\nexport function toAngularSignal<T>(\n preactSignal: PreactSignal<T>,\n destroyRef: DestroyRef,\n ngZone?: NgZone,\n): Signal<T> {\n const s = angularSignal(preactSignal.peek());\n\n const dispose = effect(() => {\n if (ngZone) {\n ngZone.run(() => s.set(preactSignal.value));\n } else {\n s.set(preactSignal.value);\n }\n });\n\n destroyRef.onDestroy(() => {\n dispose();\n // Some signals returned by DataContext.resolveSignal have a custom unsubscribe for AbortControllers\n if ((preactSignal as any).unsubscribe) {\n (preactSignal as any).unsubscribe();\n }\n });\n\n return s.asReadonly();\n}\n\n/**\n * Normalizes a data model path by combining a relative path with a base context.\n *\n * This is used to create unique absolute paths for components within a repeating\n * collection or nested structure.\n *\n * @param path The relative or absolute path from the component properties.\n * @param dataContextPath The current base data context path.\n * @param index The index of the child component.\n * @returns A fully normalized absolute path for the indexed child.\n */\nexport function getNormalizedPath(\n path: string | undefined,\n dataContextPath: string,\n index: number,\n): string {\n let normalized = path || '';\n if (!normalized.startsWith('/')) {\n const base = dataContextPath === '/' ? '' : dataContextPath;\n normalized = `${base}/${normalized}`;\n }\n if (normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n return `${normalized}/${index}`;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DestroyRef, Injectable, inject, NgZone} from '@angular/core';\nimport {ComponentContext, computed} from '@a2ui/web_core/v0_9';\nimport {toAngularSignal} from './utils';\nimport {BoundProperty, ComponentTemplate} from './types';\n\n/** Represents a reference to a child component. */\nexport interface Child {\n id: string;\n basePath: string;\n}\n\n/**\n * Binds A2UI ComponentModel properties to reactive Angular Signals.\n *\n * This service is used by {@link ComponentHostComponent} to resolve data bindings\n * from the A2UI DataContext and expose them as Angular Signals. It ensures that\n * property updates from the A2UI protocol are correctly reflected in Angular\n * components and provides callbacks for updating the data model.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ComponentBinder {\n private destroyRef = inject(DestroyRef);\n private ngZone = inject(NgZone);\n\n /**\n * Binds all properties of a component to an object of Angular Signals.\n *\n * @param context The ComponentContext containing the model and data context.\n * @returns An object where each key corresponds to a component prop and its value is an Angular Signal.\n */\n bind(context: ComponentContext): Record<string, BoundProperty> {\n const props = context.componentModel.properties;\n const bound: Record<string, BoundProperty<any>> = {};\n let template: ComponentTemplate | undefined = undefined;\n\n for (const key of Object.keys(props)) {\n const value = props[key];\n\n let preactSig;\n const isChildListTemplate =\n value && typeof value === 'object' && 'componentId' in value && 'path' in value;\n const isBoundPath =\n value && typeof value === 'object' && 'path' in value && !('componentId' in value);\n\n if (isChildListTemplate) {\n const listSig = context.dataContext.resolveSignal({path: value.path});\n const listContext = context.dataContext.nested(value.path);\n preactSig = computed(() => {\n const arr = listSig.value;\n const currentArr = Array.isArray(arr) ? arr : [];\n return currentArr.map((_, i) => ({\n id: value.componentId,\n basePath: listContext.nested(String(i)).path,\n }));\n });\n } else {\n preactSig = context.dataContext.resolveSignal(value);\n }\n\n if (['child', 'trigger', 'content'].includes(key)) {\n const originalSig = preactSig;\n preactSig = computed(() => {\n const val = originalSig.value;\n if (!val) return null;\n if (typeof val === 'object' && val !== null && 'id' in val) {\n return val;\n }\n return {id: val, basePath: context.dataContext.path};\n });\n } else if (key === 'children') {\n const originalSig = preactSig;\n const id = value.componentId;\n const path = value.path;\n if (id && path) {\n template = {id, path};\n }\n preactSig = computed(() => {\n const val = originalSig.value;\n const arr = Array.isArray(val) ? val : [];\n return arr.map(item => {\n if (typeof item === 'object' && item !== null && 'id' in item) {\n return item;\n }\n return {id: item, basePath: context.dataContext.path};\n });\n });\n }\n\n const angSig = toAngularSignal(preactSig as any, this.destroyRef, this.ngZone);\n\n bound[key] = {\n value: angSig,\n raw: value,\n template,\n onUpdate: isBoundPath\n ? (newValue: any) => context.dataContext.set(value.path, newValue)\n : () => {}, // No-op for non-bound values\n };\n\n if (key === 'checks') {\n const checksArray = Array.isArray(value) ? value : [];\n\n const ruleResults = checksArray.map((rule: any) => {\n const condition = rule.condition || rule;\n const message = rule.message || 'Validation failed';\n const conditionSig = context.dataContext.resolveSignal(condition);\n return {conditionSig, message};\n });\n\n const isValidPreactSig = computed(() => {\n return ruleResults.every((r: any) => !!r.conditionSig.value);\n });\n\n const validationErrorsPreactSig = computed(() => {\n return ruleResults.filter((r: any) => !r.conditionSig.value).map((r: any) => r.message);\n });\n\n bound['isValid'] = {\n value: toAngularSignal(isValidPreactSig, this.destroyRef, this.ngZone),\n raw: null,\n onUpdate: () => {},\n };\n\n bound['validationErrors'] = {\n value: toAngularSignal(validationErrorsPreactSig, this.destroyRef, this.ngZone),\n raw: null,\n onUpdate: () => {},\n };\n }\n }\n\n return bound;\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Type,\n inject,\n input,\n effect,\n} from '@angular/core';\nimport {NgComponentOutlet} from '@angular/common';\nimport {ComponentContext, ComponentModel, SurfaceModel, Subscription} from '@a2ui/web_core/v0_9';\nimport {A2uiRendererService} from './a2ui-renderer.service';\nimport {AngularCatalog} from '../catalog/types';\nimport {ComponentBinder} from './component-binder.service';\nimport {BoundProperty} from './types';\n\n/**\n * Dynamically renders an A2UI component as defined in the current surface model.\n *\n * This component acts as a bridge between the A2UI surface model and Angular components.\n * It resolves the appropriate component from the catalog based on the component's type,\n * and uses {@link ComponentBinder} to create reactive property bindings.\n *\n * Usually, you'll use the higher-level {@link SurfaceComponent} which automatically\n * sets up a host for the 'root' component.\n */\n@Component({\n selector: 'a2ui-v09-component-host',\n imports: [NgComponentOutlet],\n host: {\n style: 'display: contents;',\n },\n template: `\n @if (componentType) {\n <ng-container\n *ngComponentOutlet=\"\n componentType;\n inputs: {\n props: props,\n surfaceId: surfaceId(),\n componentId: resolvedComponentId,\n dataContextPath: resolvedDataContextPath,\n }\n \"\n ></ng-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComponentHostComponent {\n /** The key of the component to render, either an ID string or an object with ID and basePath. Defaults to 'root'. */\n componentKey = input<string | {id: string; basePath: string}>('root');\n\n /** The unique identifier of the surface this component belongs to. */\n surfaceId = input.required<string>();\n\n private readonly rendererService = inject(A2uiRendererService);\n private readonly binder = inject(ComponentBinder);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n protected componentType: Type<unknown> | null = null;\n protected props: Record<string, BoundProperty> = {};\n private context?: ComponentContext;\n\n protected resolvedComponentId: string = '';\n protected resolvedDataContextPath: string = '/';\n\n private propsSub?: Subscription;\n private createSub?: Subscription;\n\n constructor() {\n effect(() => {\n const key = this.componentKey();\n const surfaceId = this.surfaceId();\n this.setupComponent(key, surfaceId);\n });\n\n this.destroyRef.onDestroy(() => {\n this.propsSub?.unsubscribe();\n this.createSub?.unsubscribe();\n });\n }\n\n private setupComponent(key: string | {id: string; basePath: string}, surfaceId: string) {\n this.resetState();\n\n const surface = this.rendererService.surfaceGroup?.getSurface(surfaceId);\n\n if (!surface) {\n console.warn(`Surface ${surfaceId} not found`);\n return;\n }\n\n let id: string;\n let basePath: string;\n\n if (typeof key === 'object' && key !== null && 'id' in key) {\n id = key.id;\n basePath = key.basePath || '/';\n } else {\n id = key;\n basePath = '/';\n }\n\n this.resolvedComponentId = id;\n\n const componentModel = surface.componentsModel.get(id);\n\n if (!componentModel) {\n console.warn(`Component ${id} not found in surface ${surfaceId}. Waiting for it...`);\n\n const sub = surface.componentsModel.onCreated.subscribe(comp => {\n if (comp.id === id) {\n this.initializeComponent(surface, comp, id, basePath);\n sub.unsubscribe();\n }\n });\n this.createSub = sub;\n return;\n }\n\n this.initializeComponent(surface, componentModel, id, basePath);\n }\n\n private initializeComponent(\n surface: SurfaceModel,\n componentModel: ComponentModel,\n id: string,\n basePath: string,\n ): void {\n // Resolve component from the surface's catalog\n const catalog = surface.catalog as AngularCatalog;\n const api = catalog.components.get(componentModel.type);\n\n if (!api) {\n console.error(`Component type \"${componentModel.type}\" not found in catalog \"${catalog.id}\"`);\n return;\n }\n this.componentType = api.component;\n\n // Create context\n this.context = new ComponentContext(surface, id, basePath);\n this.props = this.binder.bind(this.context);\n this.resolvedDataContextPath = this.context.dataContext.path;\n\n // Subscribes to updates to the component model properties, to get the\n // component to react when a new prop is added after creation.\n this.propsSub = componentModel.onUpdated.subscribe(() => {\n this.props = this.binder.bind(this.context!);\n this.cdr.markForCheck();\n });\n\n this.cdr.markForCheck();\n }\n\n /**\n * Resets the component host state, unsubscribing from active subscriptions\n * and clearing component properties to avoid rendering stale data while\n * a new component is being loaded.\n */\n private resetState(): void {\n this.propsSub?.unsubscribe();\n this.createSub?.unsubscribe();\n\n this.componentType = null;\n this.props = {};\n this.resolvedDataContextPath = '/';\n this.cdr.markForCheck();\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {ComponentHostComponent} from './component-host.component';\n\n/**\n * High-level component for rendering an entire A2UI surface.\n *\n * This component handles the boilerplate of setting up a {@link ComponentHostComponent}\n * for the 'root' component of a surface. It is the recommended way to embed an\n * A2UI surface in an Angular application.\n */\n@Component({\n selector: 'a2ui-v09-surface',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n style: 'display: contents;',\n },\n template: `\n <a2ui-v09-component-host\n [componentKey]=\"{id: 'root', basePath: dataContextPath()}\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SurfaceComponent {\n /** The unique identifier of the surface to render. */\n surfaceId = input.required<string>();\n\n /**\n * The path within the surface's data model that represents the current state.\n * Defaults to the root ('/').\n */\n dataContextPath = input<string>('/');\n}\n","/*\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ComponentApi} from '@a2ui/web_core/v0_9';\nimport {Directive, input, Signal} from '@angular/core';\nimport {ComponentApiToProps} from './types';\n\n/** Describes the properties that a Catalog component needs to implement. For ease of use, please extend CatalogComponent. */\nexport interface CatalogComponentInstance {\n readonly props: Signal<Record<string, unknown>>;\n readonly surfaceId: Signal<string>;\n readonly componentId: Signal<string>;\n readonly dataContextPath: Signal<string>;\n}\n\n/**\n * Base class for A2UI catalog component in Angular.\n *\n * All Angular catalog components should extend this base class,\n * which provides type safe access to props() and other common\n * fields.\n */\n@Directive()\nexport abstract class CatalogComponent<\n Api extends ComponentApi,\n> implements CatalogComponentInstance {\n /**\n * Reactive properties resolved from the A2UI ComponentModel.\n */\n readonly props = input<ComponentApiToProps<Api>>({} as ComponentApiToProps<Api>);\n readonly surfaceId = input.required<string>();\n readonly componentId = input.required<string>();\n readonly dataContextPath = input<string>('/');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Signal} from '@angular/core';\nimport {z} from 'zod';\nimport {ComponentApi, DataBindingSchema, FunctionCallSchema} from '@a2ui/web_core/v0_9';\nimport {Child} from './component-binder.service';\n\n/** Data structure that represents a template used to render a collection of children. */\nexport interface ComponentTemplate {\n id?: string;\n path?: string;\n}\n\n/**\n * Represents a component property bound to an Angular Signal and update logic.\n *\n * This interface is used by {@link ComponentBinder} to expose properties to\n * Angular components. It contains the current value as a Signal, the raw\n * property definition, and an update function.\n *\n * @template T The type of the property value.\n */\nexport interface BoundProperty<T = unknown> {\n /**\n * The reactive Angular Signal containing the current resolved value.\n *\n * This signal automatically updates whenever the underlying A2UI data\n * model changes.\n */\n readonly value: Signal<T>;\n\n /**\n * The raw value from the A2UI ComponentModel.\n *\n * This may be a literal value or a data binding path object.\n */\n readonly raw: unknown;\n\n /** This field is present for \"children\" props that define their children using a template. */\n readonly template?: ComponentTemplate;\n\n /**\n * Callback to update the value in the A2UI DataContext.\n *\n * If the property is bound to a path in the data model, calling this\n * will update that path. If the property is a literal value, this\n * is typically a no-op.\n */\n readonly onUpdate: (newValue: T) => void;\n}\n\ntype DataBindingType = z.infer<typeof DataBindingSchema>;\ntype FunctionCallType = z.infer<typeof FunctionCallSchema>;\ntype DynamicSchemaValueToRaw<Input> = Exclude<Input, DataBindingType | FunctionCallType>;\n\ntype InferredInterfaceToProps<InferredSchema> = {\n [K in keyof InferredSchema]: K extends 'children'\n ? BoundProperty<Child[]>\n : K extends 'child' | 'trigger' | 'content'\n ? BoundProperty<Child>\n : BoundProperty<DynamicSchemaValueToRaw<InferredSchema[K]>>;\n};\n\ninterface CheckProps {\n isValid: boolean;\n validationErrors: string[];\n}\n\n/** The binder can add some properties to the Props object. This util adds them to the type. */\nexport type ExtendedProps<ComponentProps extends {[key: string]: unknown}> =\n 'checks' extends keyof ComponentProps\n ? Omit<ComponentProps, 'checks'> & CheckProps\n : ComponentProps;\n\n/**\n * Utility to convert a component Api Type to the props Type, where the\n * values are wrapped in BoundProperty. This is used to correctly type the props()\n * in a UI component\n *\n * @example\n * export const TextComponentApi = {\n * name: 'Text',\n * schema: z.object({\n * text: z.string(),\n * })\n * .strict(),\n * } satisfies ComponentApi;\n * export type TextComponentProps = ComponentApiToProps<typeof TextComponentApi>; // outputs { text: BoundProperty<string>; }\n */\nexport type ComponentApiToProps<Api extends ComponentApi> = InferredInterfaceToProps<\n ExtendedProps<z.infer<Api['schema']>>\n>;\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\nexport interface MarkdownRendererOptions {\n tagClassMap?: Record<string, string>;\n}\n\nexport abstract class MarkdownRenderer {\n abstract render(markdown: string, options?: MarkdownRendererOptions): Promise<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultMarkdownRenderer extends MarkdownRenderer {\n private static warningLogged = false;\n\n override async render(markdown: string, options?: MarkdownRendererOptions): Promise<string> {\n try {\n // @ts-ignore - optional peer dependency\n const {renderMarkdown} = await import('@a2ui/markdown-it');\n return await renderMarkdown(markdown, options as any);\n } catch (e) {\n if (!DefaultMarkdownRenderer.warningLogged) {\n console.warn(\n '[DefaultMarkdownRenderer] Failed to load optional `@a2ui/markdown-it` renderer. Using fallback.',\n );\n DefaultMarkdownRenderer.warningLogged = true;\n }\n return markdown;\n }\n }\n}\n\nexport function provideMarkdownRenderer(\n renderFn?: (markdown: string, options?: MarkdownRendererOptions) => Promise<string>,\n) {\n if (renderFn) {\n return {\n provide: MarkdownRenderer,\n useValue: {\n render: renderFn,\n },\n };\n }\n return {provide: MarkdownRenderer, useClass: DefaultMarkdownRenderer};\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Type} from '@angular/core';\nimport {Catalog, ComponentApi} from '@a2ui/web_core/v0_9';\nimport {CatalogComponentInstance} from '../core/catalog_component';\n\n/**\n * Temporary type used during basic catalog schema alignment to bypass strict type checking.\n *\n * To be removed once all properties implemented in Angular basic catalog components conform\n * to the basic catalog schema.\n * @see https://github.com/google/A2UI/issues/1303\n */\nexport type AnyDuringSchemaAlignment = any;\n\n/**\n * Extends the generic {@link ComponentApi} to include Angular-specific component metadata.\n */\nexport interface AngularComponentImplementation extends ComponentApi {\n /**\n * The Angular component class used to render this component.\n *\n * This class must be an Angular {@link Type} (e.g., a standalone component class)\n * that accepts `props`, `surfaceId`, and `dataContextPath` as inputs.\n */\n readonly component: Type<CatalogComponentInstance>;\n}\n\n/**\n * A collection of Angular component and function implementations mapped to\n * A2UI protocol types.\n *\n * Catalogs are used by the {@link MessageProcessor} to resolve component\n * definitions and by {@link ComponentHostComponent} to instantiate the\n * correct Angular components.\n */\nexport class AngularCatalog extends Catalog<AngularComponentImplementation> {}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Directive, computed, HostBinding, inject} from '@angular/core';\nimport {injectBasicCatalogStyles} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {A2uiRendererService} from '../../core/a2ui-renderer.service';\nimport {ComponentApi} from '@a2ui/web_core/v0_9';\nimport {CatalogComponent} from '../../core/catalog_component';\n\n/**\n * Base class for A2UI basic catalog components in Angular.\n *\n * Automatically injects the basic catalog styles when the component is instantiated.\n * Also binds the primary brand color to the host element.\n */\n@Directive()\nexport abstract class BasicCatalogComponent<\n Api extends ComponentApi,\n> extends CatalogComponent<Api> {\n protected rendererService = inject(A2uiRendererService);\n\n readonly surface = computed(() => {\n return this.rendererService.surfaceGroup.getSurface(this.surfaceId());\n });\n\n readonly theme = computed(() => {\n return this.surface()?.theme;\n });\n\n readonly primaryColor = computed(() => {\n return this.theme()?.primaryColor;\n });\n\n /** Weight is applied as flex css property on the component host HTML element. */\n protected readonly weight = computed(() => this.props()['weight']?.value() ?? null);\n\n constructor() {\n super();\n injectBasicCatalogStyles();\n }\n\n /**\n * Binds the flex style to the host element based on the weight.\n */\n @HostBinding('style.flex')\n get flexStyle() {\n return this.weight() !== null ? `${this.weight()}` : null;\n }\n\n @HostBinding('style.--a2ui-color-primary')\n get primaryColorStyle(): string | null {\n return this.primaryColor() || null;\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy, inject, signal, effect} from '@angular/core';\nimport {MarkdownRenderer} from '../../core/markdown';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {TextApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Text component (v0.9).\n *\n * Renders text with support for simple Markdown.\n *\n * Supported CSS variables:\n * - `--a2ui-text-color-text`: Controls the text color.\n * - `--a2ui-text-margin`: Controls the margin of text elements.\n * - `--a2ui-font-family-title`: Controls the font family for titles.\n * - `--a2ui-line-height-headings`: Controls the line height for headings.\n * - `--a2ui-line-height-body`: Controls the line height for body text.\n * - `--a2ui-text-caption-color`: Controls the color for caption text.\n * - `--a2ui-text-a-color`: Controls the color for links.\n * - `--a2ui-text-a-font-weight`: Controls the font weight for links.\n * - 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`.\n */\n@Component({\n selector: 'a2ui-v09-text',\n standalone: true,\n template: ` <span [class]=\"'a2ui-text ' + variant()\" [innerHTML]=\"resolvedText()\"> </span> `,\n // We use :host ::ng-deep because the template content is injected via innerHTML (Markdown).\n // Angular's default view encapsulation cannot target elements injected via innerHTML because they lack the scoping attributes generated at compile time.\n // ::ng-deep allows styles to reach into the injected HTML, while :host keeps them scoped to this component.\n styles: [\n `\n :host ::ng-deep .a2ui-text p,\n :host ::ng-deep .a2ui-text h1,\n :host ::ng-deep .a2ui-text h2,\n :host ::ng-deep .a2ui-text h3,\n :host ::ng-deep .a2ui-text h4,\n :host ::ng-deep .a2ui-text h5,\n :host ::ng-deep .a2ui-text h6,\n :host ::ng-deep .a2ui-text ol,\n :host ::ng-deep .a2ui-text ul,\n :host ::ng-deep .a2ui-text li,\n :host ::ng-deep .a2ui-text blockquote,\n :host ::ng-deep .a2ui-text pre {\n margin: var(--_a2ui-text-margin, 0);\n }\n :host ::ng-deep .a2ui-text {\n color: var(\n --_a2ui-text-color,\n var(--a2ui-text-color-text, var(--a2ui-color-on-background))\n );\n }\n :host ::ng-deep .a2ui-text h1,\n :host ::ng-deep .a2ui-text h2,\n :host ::ng-deep .a2ui-text h3,\n :host ::ng-deep .a2ui-text h4,\n :host ::ng-deep .a2ui-text h5,\n :host ::ng-deep .a2ui-text h6 {\n font-family: var(--a2ui-font-family-title, inherit);\n line-height: var(--a2ui-line-height-headings, 1.2);\n }\n :host ::ng-deep .a2ui-text h1 {\n font-size: var(--a2ui-font-size-2xl);\n }\n :host ::ng-deep .a2ui-text h2 {\n font-size: var(--a2ui-font-size-xl);\n }\n :host ::ng-deep .a2ui-text h3 {\n font-size: var(--a2ui-font-size-l);\n }\n :host ::ng-deep .a2ui-text p,\n :host ::ng-deep .a2ui-text h4 {\n font-size: var(--a2ui-font-size-m);\n }\n :host ::ng-deep .a2ui-text h5 {\n font-size: var(--a2ui-font-size-s);\n }\n :host ::ng-deep .a2ui-text p {\n line-height: var(--a2ui-line-height-body, 1.5);\n }\n :host ::ng-deep .a2ui-text.caption {\n font-size: var(--a2ui-font-size-xs);\n color: var(--a2ui-text-caption-color, light-dark(#666, #aaa));\n }\n :host ::ng-deep .a2ui-text a {\n color: var(--a2ui-text-a-color, inherit);\n font-weight: var(--a2ui-text-a-font-weight, inherit);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent extends BasicCatalogComponent<typeof TextApi> {\n private markdownRenderer = inject(MarkdownRenderer);\n\n readonly variant = computed(() => this.props()['variant']?.value() || 'body');\n readonly text = computed(() => this.props()['text']?.value() || '');\n\n resolvedText = signal<string>('');\n private renderRequestId = 0;\n\n constructor() {\n super();\n effect(() => {\n const text = this.text();\n const variant = this.variant();\n let value = text;\n\n switch (variant) {\n case 'h1':\n value = `# ${text}`;\n break;\n case 'h2':\n value = `## ${text}`;\n break;\n case 'h3':\n value = `### ${text}`;\n break;\n case 'h4':\n value = `#### ${text}`;\n break;\n case 'h5':\n value = `##### ${text}`;\n break;\n case 'caption':\n value = `*${text}*`;\n break;\n }\n\n const requestId = ++this.renderRequestId;\n this.markdownRenderer.render(value).then(rendered => {\n if (requestId === this.renderRequestId) {\n this.resolvedText.set(rendered);\n }\n });\n });\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Maps A2UI justification values to CSS justify-content values.\n */\nexport const JUSTIFY_MAP: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n spaceEvenly: 'space-evenly',\n stretch: 'stretch',\n};\n\n/**\n * Maps A2UI alignment values to CSS align-items values.\n */\nexport const ALIGN_MAP: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {getNormalizedPath} from '../../core/utils';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {JUSTIFY_MAP, ALIGN_MAP} from './utils';\nimport {RowApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Row component (v0.9).\n *\n * Arranges child components in a horizontal flex layout. Supports both static\n * lists of children and repeating templates bound to a data collection.\n *\n * Supported CSS variables:\n * - `--a2ui-row-gap`: Controls the gap between items in the row. Defaults to `--a2ui-spacing-m` (16px).\n */\n@Component({\n selector: 'a2ui-v09-row',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n '[style.display]': '\"flex\"',\n '[style.flex-direction]': '\"row\"',\n '[style.gap]': '\"var(--a2ui-row-gap, var(--a2ui-spacing-m, 16px))\"',\n '[style.justify-content]': 'justify()',\n '[style.align-items]': 'align()',\n },\n template: `\n @if (!isRepeating()) {\n @for (child of normalizedChildren(); track child.id) {\n <a2ui-v09-component-host [componentKey]=\"child\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n }\n\n @if (isRepeating()) {\n @for (item of children(); track item; let i = $index) {\n <a2ui-v09-component-host\n [componentKey]=\"{id: templateId()!, basePath: getNormalizedPath(i)}\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RowComponent extends BasicCatalogComponent<typeof RowApi> {\n protected readonly justify = computed(() => {\n const val = this.props()['justify']?.value();\n return val ? JUSTIFY_MAP[val] || val : undefined;\n });\n protected readonly align = computed(() => {\n const val = this.props()['align']?.value();\n return val ? ALIGN_MAP[val] || val : undefined;\n });\n\n protected readonly children = computed(() => this.props()['children'].value() || []);\n\n protected readonly isRepeating = computed(() => {\n return !!this.props()['children'].template;\n });\n\n protected readonly templateId = computed(() => {\n return this.props()['children'].template?.id;\n });\n\n protected readonly normalizedChildren = computed(() => {\n if (this.isRepeating()) return [];\n return this.children().map(child => {\n if (typeof child === 'object' && child !== null && 'id' in child) {\n return child as {id: string; basePath: string};\n }\n return {id: child as string, basePath: this.dataContextPath()};\n });\n });\n\n protected getNormalizedPath(index: number) {\n return getNormalizedPath(\n this.props()['children'].template?.path,\n this.dataContextPath(),\n index,\n );\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\n\nimport {getNormalizedPath} from '../../core/utils';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {JUSTIFY_MAP, ALIGN_MAP} from './utils';\nimport {ColumnApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Column component (v0.9).\n *\n * Arranges child components in a vertical flex layout. Supports both static\n * lists of children and repeating templates bound to a data collection.\n *\n * Supported CSS variables:\n * - `--a2ui-column-gap`: Controls the gap between items in the column. Defaults to `--a2ui-spacing-m` (16px).\n */\n@Component({\n selector: 'a2ui-v09-column',\n standalone: true,\n imports: [ComponentHostComponent],\n host: {\n '[style.display]': '\"flex\"',\n '[style.flex-direction]': '\"column\"',\n '[style.width]': '\"100%\"',\n '[style.gap]': '\"var(--a2ui-column-gap, var(--a2ui-spacing-m, 16px))\"',\n '[style.justify-content]': 'justify()',\n '[style.align-items]': 'align()',\n },\n template: `\n @if (!isRepeating()) {\n @for (child of normalizedChildren(); track child.id) {\n <a2ui-v09-component-host [componentKey]=\"child\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n }\n\n @if (isRepeating()) {\n @for (item of children(); track item; let i = $index) {\n <a2ui-v09-component-host\n [componentKey]=\"{id: templateId()!, basePath: getNormalizedPath(i)}\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnComponent extends BasicCatalogComponent<typeof ColumnApi> {\n protected readonly justify = computed(() => {\n const val = this.props()['justify']?.value();\n return val ? JUSTIFY_MAP[val] || val : undefined;\n });\n protected readonly align = computed(() => {\n const val = this.props()['align']?.value();\n return val ? ALIGN_MAP[val] || val : undefined;\n });\n\n protected readonly children = computed(() => this.props()['children'].value() || []);\n\n protected readonly isRepeating = computed(() => {\n return !!this.props()['children'].template;\n });\n\n protected readonly templateId = computed(() => {\n return this.props()['children'].template?.id;\n });\n\n protected readonly normalizedChildren = computed(() => {\n if (this.isRepeating()) return [];\n return this.children().map(child => {\n if (typeof child === 'object' && child !== null && 'id' in child) {\n return child as {id: string; basePath: string};\n }\n return {id: child as string, basePath: this.dataContextPath()};\n });\n });\n\n protected getNormalizedPath(index: number) {\n return getNormalizedPath(\n this.props()['children'].template?.path,\n this.dataContextPath(),\n index,\n );\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {DataContext} from '@a2ui/web_core/v0_9';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {ButtonApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Button component (v0.9).\n *\n * Renders a clickable button with a single child component (usually Text).\n * Dispatches an action when clicked if an `action` property is provided.\n *\n * Supported CSS variables:\n * - `--a2ui-button-padding`: Controls the padding.\n * - `--a2ui-button-border-radius`: Controls the border radius.\n * - `--a2ui-button-border`: Controls the border.\n * - `--a2ui-button-margin`: Controls the margin.\n * - `--a2ui-button-background`: Controls the background color.\n * - `--a2ui-button-box-shadow`: Controls the box shadow.\n * - `--a2ui-button-font-weight`: Controls the font weight.\n */\n@Component({\n selector: 'a2ui-v09-button',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <button\n [type]=\"variant() === 'primary' ? 'submit' : 'button'\"\n [class]=\"'a2ui-button ' + variant()\"\n (click)=\"handleClick()\"\n [disabled]=\"props()['isValid']?.value() === false\"\n >\n @if (child()) {\n <a2ui-v09-component-host [componentKey]=\"child()!\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n </button>\n `,\n styles: [\n `\n .a2ui-button {\n padding: var(\n --a2ui-button-padding,\n var(--a2ui-spacing-m, 0.5rem) var(--a2ui-spacing-l, 1rem)\n );\n border-radius: var(--a2ui-button-border-radius, var(--a2ui-spacing-s, 0.25rem));\n border: var(\n --a2ui-button-border,\n var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n );\n cursor: pointer;\n margin: var(--a2ui-button-margin, var(--a2ui-spacing-m, 0.5rem));\n background: var(--a2ui-button-background, var(--a2ui-color-surface, #fff));\n box-shadow: var(--a2ui-button-box-shadow, none);\n font-weight: var(--a2ui-button-font-weight, normal);\n --_a2ui-text-margin: 0;\n --_a2ui-text-color: var(--a2ui-color-on-secondary, #333);\n color: var(--_a2ui-text-color);\n }\n .a2ui-button.primary {\n background: var(--a2ui-color-primary, #17e);\n --_a2ui-text-color: var(--a2ui-color-on-primary, #fff);\n color: var(--_a2ui-text-color);\n border: none;\n }\n .a2ui-button.borderless {\n background: none;\n border: none;\n padding: 0;\n color: var(--a2ui-color-primary, #17e);\n }\n .a2ui-button:disabled {\n background-color: #e9ecef;\n color: #6c757d;\n border-color: #ced4da;\n cursor: not-allowed;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent extends BasicCatalogComponent<typeof ButtonApi> {\n readonly variant = computed(() => this.props()['variant']?.value() ?? 'default');\n readonly child = computed(() => this.props()['child']?.value());\n readonly action = computed(() => this.props()['action']?.value());\n\n handleClick() {\n const action = this.action();\n if (action) {\n const surface = this.surface();\n if (surface) {\n const dataContext = new DataContext(surface, this.dataContextPath());\n const resolvedAction = dataContext.resolveAction(action);\n surface.dispatchAction(resolvedAction, this.componentId());\n }\n }\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {TextFieldApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {AnyDuringSchemaAlignment} from '../types';\n\n/**\n * Angular implementation of the A2UI TextField component (v0.9).\n *\n * Renders a text input field with an optional label and placeholder.\n * Updates the bound data model property on every input change.\n *\n * Supported CSS variables:\n * - `--a2ui-color-input`: Controls the background color of the input.\n * - `--a2ui-color-on-input`: Controls the text color of the input.\n * - `--a2ui-textfield-border`: Controls the border of the input.\n * - `--a2ui-textfield-border-radius`: Controls the border radius of the input.\n * - `--a2ui-textfield-padding`: Controls the padding of the input.\n * - `--a2ui-textfield-color-border-focus`: Controls the border color on focus.\n * - `--a2ui-textfield-color-error`: Controls the border and text color for error states.\n * - `--a2ui-textfield-label-font-size`: Controls the font size of the label.\n * - `--a2ui-textfield-label-font-weight`: Controls the font weight of the label.\n */\n@Component({\n selector: 'a2ui-v09-text-field',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-text-field-container\">\n @if (label()) {\n <label>{{ label() }}</label>\n }\n <input\n [type]=\"inputType()\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [class.invalid]=\"props()['isValid']?.value() === false\"\n />\n @for (message of props()['validationErrors']?.value(); track message) {\n <div class=\"a2ui-error-message\">{{ message }}</div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-text-field-container {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n margin: var(--a2ui-spacing-xs, 4px);\n }\n label {\n font-size: var(\n --a2ui-textfield-label-font-size,\n var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px))\n );\n font-weight: var(--a2ui-textfield-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n input {\n padding: var(--a2ui-textfield-padding, 8px);\n border: var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));\n border-radius: var(--a2ui-textfield-border-radius, 4px);\n background-color: var(--a2ui-color-input, #fff);\n color: var(--a2ui-color-on-input, #333);\n }\n input:focus {\n border-color: var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));\n outline: none;\n }\n input.invalid {\n border-color: var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));\n }\n .a2ui-error-message {\n color: var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));\n font-size: var(--a2ui-font-size-xs, 12px);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFieldComponent extends BasicCatalogComponent<typeof TextFieldApi> {\n readonly label = computed(() => this.props()['label']?.value());\n readonly value = computed(() => this.props()['value']?.value() || '');\n readonly placeholder = computed(\n () => (this.props() as AnyDuringSchemaAlignment)['placeholder']?.value() || '',\n );\n readonly variant = computed(() => this.props()['variant']?.value());\n\n readonly inputType = computed(() => {\n switch (this.variant()) {\n case 'obscured':\n return 'password';\n case 'number':\n return 'number';\n default:\n return 'text';\n }\n });\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n // Update the data path. If anything is listening to this path, it will be\n // notified.\n this.props()['value']?.onUpdate(value);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {ImageApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Image component (v0.9).\n *\n * Renders an image with configurable fit and shape variants.\n *\n * Supported CSS variables:\n * - `--a2ui-image-border-radius`: Controls the rounded corners.\n * - `--a2ui-image-icon-size`: Size of the icon variant.\n * - `--a2ui-image-avatar-size`: Size of the avatar variant.\n * - `--a2ui-image-small-feature-size`: Max-width of smallFeature variant.\n * - `--a2ui-image-large-feature-size`: Max-height of largeFeature variant.\n * - `--a2ui-image-header-size`: Height of header variant.\n */\n@Component({\n selector: 'a2ui-v09-image',\n standalone: true,\n imports: [],\n template: `\n <img\n [src]=\"url()\"\n [alt]=\"description()\"\n [style.object-fit]=\"fit()\"\n [class]=\"'a2ui-image ' + variant()\"\n />\n `,\n styles: [\n `\n .a2ui-image {\n display: block;\n max-width: 100%;\n height: auto;\n border-radius: var(--a2ui-image-border-radius, var(--a2ui-border-radius, 8px));\n }\n .a2ui-image.icon {\n width: var(--a2ui-image-icon-size, 24px);\n height: var(--a2ui-image-icon-size, 24px);\n }\n .a2ui-image.avatar {\n width: var(--a2ui-image-avatar-size, 40px);\n height: var(--a2ui-image-avatar-size, 40px);\n border-radius: 50%;\n }\n .a2ui-image.smallFeature {\n max-width: var(--a2ui-image-small-feature-size, 100px);\n }\n .a2ui-image.largeFeature {\n max-height: var(--a2ui-image-large-feature-size, 400px);\n }\n .a2ui-image.header {\n height: var(--a2ui-image-header-size, 200px);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageComponent extends BasicCatalogComponent<typeof ImageApi> {\n readonly url = computed(() => this.props()['url']?.value());\n readonly description = computed(() => this.props()['description']?.value() || '');\n readonly fit = computed(() => this.props()['fit']?.value() || 'cover');\n readonly variant = computed(() => this.props()['variant']?.value() || 'default');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {IconApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {AnyDuringSchemaAlignment} from '../types';\n\nconst ICON_NAME_OVERRIDES: Record<string, string> = {\n play: 'play_arrow',\n rewind: 'fast_rewind',\n favoriteOff: 'favorite_border',\n starOff: 'star_border',\n};\n\n/**\n * Angular implementation of the A2UI Icon component (v0.9).\n *\n * Supports both Material Icons (by name) and custom SVG icons (by path).\n *\n * Supported CSS variables:\n * - `--a2ui-icon-size`: Controls the width, height, and font size of the icon.\n * - `--a2ui-icon-font-family`: Controls the font family for icon fonts.\n * - `--a2ui-icon-color`: Controls the color of the icon.\n * - `--a2ui-icon-font-variation-settings`: Controls font variation settings (e.g. FILL).\n */\n@Component({\n selector: 'a2ui-v09-icon',\n standalone: true,\n imports: [],\n template: `\n @if (isSvgPath()) {\n <svg class=\"a2ui-icon svg\" viewBox=\"0 0 24 24\" [style.fill]=\"color() || 'currentColor'\">\n <path [attr.d]=\"svgPath()\"></path>\n </svg>\n } @else {\n <i class=\"material-icons a2ui-icon\" [style.color]=\"color()\">\n {{ iconName() }}\n </i>\n }\n `,\n styles: [\n `\n .a2ui-icon {\n display: inline-block;\n width: var(--a2ui-icon-size, 24px);\n height: var(--a2ui-icon-size, 24px);\n font-size: var(--a2ui-icon-size, 24px);\n font-family: var(--a2ui-icon-font-family, 'Material Icons');\n color: var(\n --a2ui-icon-color,\n var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))\n );\n font-variation-settings: var(--a2ui-icon-font-variation-settings, 'FILL' 1);\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n vertical-align: middle;\n }\n .a2ui-icon.svg {\n fill: currentColor;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent extends BasicCatalogComponent<typeof IconApi> {\n readonly color = computed(() => (this.props() as AnyDuringSchemaAlignment)['color']?.value());\n readonly iconNameRaw = computed(() => this.props()['name']?.value());\n\n readonly isSvgPath = computed(() => {\n const name = this.iconNameRaw();\n return typeof name === 'object' && name !== null && 'svgPath' in name;\n });\n\n readonly svgPath = computed(() => {\n const name = this.iconNameRaw();\n if (typeof name === 'object' && name !== null && 'svgPath' in name) {\n return name.svgPath;\n }\n return '';\n });\n\n readonly iconName = computed(() => {\n const name = this.iconNameRaw();\n if (typeof name !== 'string') return '';\n if (ICON_NAME_OVERRIDES[name]) return ICON_NAME_OVERRIDES[name];\n // Convert camelCase to snake_case for Material Icons\n return name.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);\n });\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {VideoApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {AnyDuringSchemaAlignment} from '../types';\n\n/**\n * Angular implementation of the A2UI Video component (v0.9).\n *\n * Renders a video player with standard controls and an optional poster image.\n *\n * Supported CSS variables:\n * - `--a2ui-video-border-radius`: Controls the border radius of the video element.\n */\n@Component({\n selector: 'a2ui-v09-video',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-video-container\">\n <video\n [attr.src]=\"url() || null\"\n controls\n [attr.poster]=\"posterUrl() || null\"\n class=\"a2ui-video\"\n >\n Your browser does not support the video tag.\n </video>\n </div>\n `,\n styles: [\n `\n .a2ui-video-container {\n width: 100%;\n max-width: 100%;\n }\n .a2ui-video {\n width: 100%;\n height: auto;\n display: block;\n border-radius: var(--a2ui-video-border-radius, 0);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoComponent extends BasicCatalogComponent<typeof VideoApi> {\n readonly url = computed(() => this.props()['url']?.value());\n readonly posterUrl = computed(() =>\n (this.props() as AnyDuringSchemaAlignment)['posterUrl']?.value(),\n );\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {AudioPlayerApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI AudioPlayer component (v0.9).\n *\n * Renders an audio player with standard controls and an optional description.\n *\n * Supported CSS variables:\n * - `--a2ui-audioplayer-background`: Controls the background of the player. Defaults to `transparent`.\n * - `--a2ui-audioplayer-border-radius`: Controls the border radius. Defaults to `0`.\n * - `--a2ui-audioplayer-padding`: Controls the padding. Defaults to `0`.\n */\n@Component({\n selector: 'a2ui-v09-audio-player',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-audio-player\">\n @if (description()) {\n <div class=\"a2ui-audio-description\">\n {{ description() }}\n </div>\n }\n <audio [attr.src]=\"url() || null\" controls class=\"a2ui-audio\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n `,\n styles: [\n `\n .a2ui-audio-player {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 0.25rem);\n background: var(--a2ui-audioplayer-background, transparent);\n border-radius: var(--a2ui-audioplayer-border-radius, 0);\n padding: var(--a2ui-audioplayer-padding, 0);\n width: 100%;\n }\n .a2ui-audio-description {\n font-size: var(--a2ui-font-size-s, 0.875rem);\n color: var(--a2ui-text-caption-color, light-dark(#666, #aaa));\n }\n .a2ui-audio {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AudioPlayerComponent extends BasicCatalogComponent<typeof AudioPlayerApi> {\n readonly description = computed(() => this.props()['description']?.value());\n readonly url = computed(() => this.props()['url']?.value());\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {Child} from '../../core/component-binder.service';\nimport {ListApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI List component (v0.9).\n *\n * Renders a list of child components with support for ordered, unordered,\n * and unstyled layouts in both vertical and horizontal directions.\n *\n * Supported CSS variables:\n * - `--a2ui-list-gap`: Controls the gap between items.\n * - `--a2ui-list-padding`: Controls the padding (applied to padding-inline-start).\n */\n@Component({\n selector: 'a2ui-v09-list',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n @switch (listTag()) {\n @case ('ol') {\n <ol [class]=\"'a2ui-list ' + direction()\" [style.list-style-type]=\"styleType()\">\n @for (child of children(); track trackBy($index, child)) {\n <li>\n <a2ui-v09-component-host [componentKey]=\"child\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n </li>\n }\n </ol>\n }\n @case ('ul') {\n <ul [class]=\"'a2ui-list ' + direction()\" [style.list-style-type]=\"styleType()\">\n @for (child of children(); track trackBy($index, child)) {\n <li>\n <a2ui-v09-component-host [componentKey]=\"child\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n </li>\n }\n </ul>\n }\n @default {\n <div [class]=\"'a2ui-list ' + direction()\" style=\"list-style-type: none;\">\n @for (child of children(); track trackBy($index, child)) {\n <div class=\"a2ui-list-item-none\">\n <a2ui-v09-component-host [componentKey]=\"child\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n </div>\n }\n </div>\n }\n }\n `,\n styles: [\n `\n .a2ui-list {\n display: flex;\n padding-inline-start: var(--a2ui-list-padding, var(--a2ui-spacing-l, 24px));\n margin: 0;\n }\n .a2ui-list.vertical {\n flex-direction: column;\n gap: var(--a2ui-list-gap, var(--a2ui-spacing-s, 8px));\n }\n .a2ui-list.horizontal {\n flex-direction: row;\n gap: var(--a2ui-list-gap, var(--a2ui-spacing-m, 16px));\n list-style-position: inside;\n }\n .a2ui-list-item-none {\n display: block;\n }\n .horizontal .a2ui-list-item-none {\n display: inline-block;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListComponent extends BasicCatalogComponent<typeof ListApi> {\n readonly listStyle = computed(() => this.props()['listStyle']?.value());\n readonly direction = computed(() => this.props()['direction']?.value() || 'vertical');\n readonly children = computed(() => this.props()['children'].value());\n\n readonly listTag = computed(() => {\n const style = this.listStyle();\n if (style === 'ordered') return 'ol';\n if (style === 'unordered') return 'ul';\n return 'div';\n });\n\n readonly styleType = computed(() => {\n const style = this.listStyle();\n if (style === 'none') return 'none';\n return '';\n });\n\n /**\n * Track-by function to ensure stable change detection for list items.\n * Uses the full resolved path (`basePath/id`) to uniquely identify items.\n */\n readonly trackBy = (index: number, item: Child) => `${item.basePath}/${item.id}`;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {CardApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Card component (v0.9).\n *\n * Renders a container with a shadow and rounded corners for grouping related content.\n *\n * Supported CSS variables:\n * - `--a2ui-card-padding`: Controls the padding.\n * - `--a2ui-card-border-radius`: Controls the border radius.\n * - `--a2ui-card-box-shadow`: Controls the box shadow.\n * - `--a2ui-card-background`: Controls the background color.\n * - `--a2ui-card-border`: Controls the border.\n * - `--a2ui-card-margin`: Controls the margin.\n */\n@Component({\n selector: 'a2ui-v09-card',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-card\">\n @if (child()) {\n <a2ui-v09-component-host [componentKey]=\"child()!\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-card {\n padding: var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));\n border-radius: var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));\n box-shadow: var(--a2ui-card-box-shadow, 0 2px 4px rgba(0, 0, 0, 0.1));\n background: var(--a2ui-card-background, var(--a2ui-color-surface, #fff));\n border: var(\n --a2ui-card-border,\n var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n );\n margin: var(--a2ui-card-margin, var(--a2ui-spacing-m, 16px));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent extends BasicCatalogComponent<typeof CardApi> {\n readonly child = computed(() => this.props()['child']?.value());\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy, signal} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {TabsApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Tabs component (v0.9).\n *\n * Renders a set of tabs where each tab has a label and associated content.\n * Manages the active tab state internally.\n *\n * Supported CSS variables:\n * - `--a2ui-tabs-border`: Controls the border of the tab bar.\n * - `--a2ui-tabs-header-background`: Controls the background of tab buttons.\n * - `--a2ui-tabs-header-color`: Controls the text color of tab buttons.\n * - `--a2ui-tabs-header-background-active`: Controls the background of the active tab button.\n * - `--a2ui-tabs-header-color-active`: Controls the text color of the active tab button.\n * - `--a2ui-tabs-content-padding`: Controls the padding of the tab content.\n */\n@Component({\n selector: 'a2ui-v09-tabs',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-tabs\">\n <div class=\"a2ui-tab-bar\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n class=\"a2ui-tab-button\"\n [class.active]=\"activeTabIndex() === i\"\n (click)=\"setActiveTab(i)\"\n >\n {{ tab.title }}\n </button>\n }\n </div>\n @if (normalizedActiveTabChild()) {\n <div class=\"a2ui-tab-content\">\n <a2ui-v09-component-host\n [componentKey]=\"normalizedActiveTabChild()!\"\n [surfaceId]=\"surfaceId()\"\n >\n </a2ui-v09-component-host>\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-tabs {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n .a2ui-tab-bar {\n display: flex;\n border-bottom: var(--a2ui-tabs-border, 2px solid var(--a2ui-color-border, #eee));\n gap: var(--a2ui-spacing-m, 16px);\n }\n .a2ui-tab-button {\n padding: var(--a2ui-spacing-s, 8px) var(--a2ui-spacing-m, 16px);\n border: none;\n background: var(--a2ui-tabs-header-background, transparent);\n cursor: pointer;\n font-weight: 500;\n color: var(--a2ui-tabs-header-color, var(--a2ui-text-caption-color, #666));\n border-bottom: 2px solid transparent;\n margin-bottom: -2px;\n }\n .a2ui-tab-button.active {\n background: var(--a2ui-tabs-header-background-active, transparent);\n color: var(--a2ui-tabs-header-color-active, var(--a2ui-color-primary, #007bff));\n border-bottom: 2px solid var(--a2ui-color-primary, #007bff);\n }\n .a2ui-tab-content {\n padding: var(--a2ui-tabs-content-padding, var(--a2ui-spacing-m, 16px) 0);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent extends BasicCatalogComponent<typeof TabsApi> {\n activeTabIndex = signal(0);\n\n readonly tabs = computed(() => this.props()['tabs']?.value() || []);\n readonly activeTab = computed(() => this.tabs()[this.activeTabIndex()]);\n\n protected readonly normalizedActiveTabChild = computed(() => {\n const child = this.activeTab()?.child;\n if (!child) return null;\n if (typeof child === 'object' && child !== null && 'id' in child) {\n return child as {id: string; basePath: string};\n }\n return {id: child as string, basePath: this.dataContextPath()};\n });\n\n setActiveTab(index: number) {\n this.activeTabIndex.set(index);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy, signal} from '@angular/core';\nimport {ComponentHostComponent} from '../../core/component-host.component';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {ModalApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Modal component (v0.9).\n *\n * Renders a trigger component that opening an overlay containing a content component.\n *\n * Supported CSS variables:\n * - `--a2ui-modal-background`: Controls the background of the modal content.\n * - `--a2ui-modal-padding`: Controls the padding of the modal content.\n * - `--a2ui-modal-border-radius`: Controls the border radius of the modal content.\n * - `--a2ui-modal-box-shadow`: Controls the box shadow of the modal content.\n * - `--a2ui-modal-backdrop-bg`: Controls the background of the backdrop.\n */\n@Component({\n selector: 'a2ui-v09-modal',\n standalone: true,\n imports: [ComponentHostComponent],\n template: `\n <div class=\"a2ui-modal-wrapper\">\n <div (click)=\"openModal()\" class=\"a2ui-modal-trigger\">\n @if (trigger()) {\n <a2ui-v09-component-host [componentKey]=\"trigger()!\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n </div>\n\n @if (isOpen()) {\n <div class=\"a2ui-modal-overlay\" (click)=\"closeModal()\">\n <div class=\"a2ui-modal-content\" (click)=\"$event.stopPropagation()\">\n <button class=\"a2ui-modal-close\" (click)=\"closeModal()\">×</button>\n @if (content()) {\n <a2ui-v09-component-host [componentKey]=\"content()!\" [surfaceId]=\"surfaceId()\">\n </a2ui-v09-component-host>\n }\n </div>\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-modal-wrapper {\n display: inline-block;\n }\n .a2ui-modal-trigger {\n cursor: pointer;\n }\n .a2ui-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: var(--a2ui-modal-backdrop-bg, rgba(0, 0, 0, 0.5));\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n .a2ui-modal-content {\n background: var(--a2ui-modal-background, var(--a2ui-color-surface, white));\n padding: var(--a2ui-modal-padding, var(--a2ui-spacing-xl, 32px));\n border-radius: var(--a2ui-modal-border-radius, var(--a2ui-border-radius, 8px));\n position: relative;\n min-width: 300px;\n max-width: 80%;\n max-height: 80%;\n overflow-y: auto;\n box-shadow: var(--a2ui-modal-box-shadow, 0 10px 25px rgba(0, 0, 0, 0.2));\n }\n .a2ui-modal-close {\n position: absolute;\n top: 10px;\n right: 15px;\n border: none;\n background: none;\n font-size: 24px;\n cursor: pointer;\n color: var(--a2ui-text-caption-color, #999);\n }\n .a2ui-modal-close:hover {\n color: var(--a2ui-text-color, #333);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent extends BasicCatalogComponent<typeof ModalApi> {\n isOpen = signal(false);\n\n readonly trigger = computed(() => this.props()['trigger']?.value());\n readonly content = computed(() => this.props()['content']?.value());\n\n openModal() {\n this.isOpen.set(true);\n }\n\n closeModal() {\n this.isOpen.set(false);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {DividerApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Divider component (v0.9).\n *\n * Renders a horizontal or vertical line to separate content.\n *\n * Supported CSS variables:\n * - `--a2ui-divider-border`: Controls the border of the divider (horizontal and vertical).\n * - `--a2ui-divider-spacing`: Controls the margin around the divider.\n */\n@Component({\n selector: 'a2ui-v09-divider',\n standalone: true,\n imports: [],\n host: {\n '[style.display]': '\"block\"',\n '[style.width]': 'axis() === \"horizontal\" ? \"100%\" : \"auto\"',\n },\n template: `\n <hr\n class=\"a2ui-divider\"\n [class.horizontal]=\"axis() === 'horizontal'\"\n [class.vertical]=\"axis() === 'vertical'\"\n />\n `,\n styles: [\n `\n .a2ui-divider {\n border: 0;\n border-top: var(\n --a2ui-divider-border,\n var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n );\n margin: var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;\n width: 100%;\n }\n .a2ui-divider.vertical {\n width: var(--a2ui-border-width, 1px);\n height: 100%;\n margin: 0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));\n border-top: 0;\n border-left: var(\n --a2ui-divider-border,\n var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n );\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent extends BasicCatalogComponent<typeof DividerApi> {\n readonly axis = computed(() => this.props()['axis']?.value() ?? 'horizontal');\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {CheckBoxApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI CheckBox component (v0.9).\n *\n * Renders a checkbox with a label. Updates the bound data model property\n * when the checked state changes.\n *\n * Supported CSS variables:\n * - `--a2ui-checkbox-margin`: Controls the margin.\n * - `--a2ui-checkbox-gap`: Controls the gap between checkbox and label.\n * - `--a2ui-checkbox-label-font-size`: Controls the font size of the label.\n * - `--a2ui-checkbox-label-font-weight`: Controls the font weight of the label.\n * - `--a2ui-checkbox-size`: Controls the width and height of the checkbox.\n * - `--a2ui-checkbox-background`: Controls the background of the checkbox.\n * - `--a2ui-checkbox-border`: Controls the border of the checkbox.\n * - `--a2ui-checkbox-border-radius`: Controls the border radius of the checkbox.\n * - `--a2ui-checkbox-color-error`: Controls the color for error states.\n */\n@Component({\n selector: 'a2ui-v09-check-box',\n standalone: true,\n imports: [],\n template: `\n <label class=\"a2ui-check-box-label\">\n <input\n type=\"checkbox\"\n [checked]=\"value()\"\n (change)=\"handleChange($event)\"\n class=\"a2ui-check-box-input\"\n />\n <span class=\"a2ui-check-box-text\">{{ label() }}</span>\n </label>\n `,\n styles: [\n `\n .a2ui-check-box-label {\n display: flex;\n align-items: center;\n gap: var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, 0.5rem));\n cursor: pointer;\n padding: 4px 0;\n margin: var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-check-box-input {\n width: var(--a2ui-checkbox-size, 1rem);\n height: var(--a2ui-checkbox-size, 1rem);\n cursor: pointer;\n background: var(--a2ui-checkbox-background, inherit);\n border: var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);\n border-radius: var(--a2ui-checkbox-border-radius, 4px);\n accent-color: var(--a2ui-color-primary);\n }\n .a2ui-check-box-text {\n font-size: var(\n --a2ui-checkbox-label-font-size,\n var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px))\n );\n font-weight: var(--a2ui-checkbox-label-font-weight, bold);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckBoxComponent extends BasicCatalogComponent<typeof CheckBoxApi> {\n readonly value = computed(() => this.props()['value']?.value() === true);\n readonly label = computed(() => this.props()['label']?.value());\n\n handleChange(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.props()['value']?.onUpdate(checked);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {ChoicePickerApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI ChoicePicker component (v0.9).\n *\n * Renders a set of options as either radio buttons/checkboxes or chips.\n * Supports both single and multiple selection.\n *\n * Supported CSS variables:\n * - `--a2ui-choicepicker-gap`: Controls spacing between options/chips.\n * - `--a2ui-choicepicker-padding`: Controls padding of the container.\n * - `--a2ui-choicepicker-checkbox-size`: Controls size of checkboxes/radios.\n * - `--a2ui-choicepicker-chip-padding`: Controls padding of chips.\n * - `--a2ui-choicepicker-chip-border-radius`: Controls border radius of chips.\n * - `--a2ui-choicepicker-chip-border`: Controls border of chips.\n * - `--a2ui-choicepicker-chip-background`: Controls background of chips.\n * - `--a2ui-choicepicker-chip-background-selected`: Controls background of selected chips.\n */\n@Component({\n selector: 'a2ui-v09-choice-picker',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-choice-picker\">\n <!-- Chips Variant -->\n @if (displayStyle() === 'chips') {\n <div class=\"a2ui-chips-group\">\n @for (option of options(); track option.value) {\n <button\n class=\"a2ui-chip\"\n [class.active]=\"isSelected(option.value)\"\n (click)=\"toggleActive(option.value)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n } @else {\n <!-- Checkbox/Radio Variant -->\n <div class=\"a2ui-options-group\">\n @for (option of options(); track option.value) {\n <label class=\"a2ui-option-label\">\n <input\n [type]=\"isMultiple() ? 'checkbox' : 'radio'\"\n [name]=\"componentId()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n (change)=\"onCheckChange(option.value, $event)\"\n class=\"a2ui-option-input\"\n />\n <span class=\"a2ui-option-text\">{{ option.label }}</span>\n </label>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-choice-picker {\n width: 100%;\n padding: var(--a2ui-choicepicker-padding, 0);\n }\n .a2ui-options-group {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-option-label {\n display: flex;\n align-items: center;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n cursor: pointer;\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-option-input {\n width: var(--a2ui-choicepicker-checkbox-size, 1rem);\n height: var(--a2ui-choicepicker-checkbox-size, 1rem);\n }\n .a2ui-chips-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-chip {\n padding: var(\n --a2ui-choicepicker-chip-padding,\n var(--a2ui-spacing-s, 0.5rem) var(--a2ui-spacing-m, 1rem)\n );\n border-radius: var(--a2ui-choicepicker-chip-border-radius, 100px);\n border: var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));\n background: var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));\n cursor: pointer;\n transition: all 0.2s;\n }\n .a2ui-chip.active {\n background-color: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n color: var(--a2ui-color-on-primary, #fff);\n border-color: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChoicePickerComponent extends BasicCatalogComponent<typeof ChoicePickerApi> {\n readonly displayStyle = computed(() => this.props()['displayStyle']?.value());\n readonly options = computed(() => this.props()['options']?.value() || []);\n readonly variant = computed(() => this.props()['variant']?.value());\n readonly selectedValue = computed(() => this.props()['value']?.value());\n\n isMultiple(): boolean {\n return this.variant() === 'multipleSelection';\n }\n\n isSelected(value: string): boolean {\n const selected = this.selectedValue();\n if (Array.isArray(selected)) {\n return selected.includes(value);\n }\n return selected === value;\n }\n\n onCheckChange(value: string, event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.updateValue(value, checked);\n }\n\n toggleActive(value: string) {\n const current = this.isSelected(value);\n this.updateValue(value, !current);\n }\n\n private updateValue(value: string, active: boolean) {\n const current = this.selectedValue();\n if (this.isMultiple()) {\n let next = Array.isArray(current) ? [...current] : [];\n if (active) {\n if (!next.includes(value)) next.push(value);\n } else {\n next = next.filter((v: any) => v !== value);\n }\n this.props()['value']?.onUpdate(next);\n } else {\n if (active) {\n this.props()['value']?.onUpdate([value]);\n }\n }\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {SliderApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI Slider component (v0.9).\n *\n * Renders a range input slider with a label and its current value.\n *\n * Supported CSS variables:\n * - `--a2ui-slider-margin`: Controls the margin of the container.\n * - `--a2ui-slider-label-font-size`: Controls the font size of the label.\n * - `--a2ui-slider-label-font-weight`: Controls the font weight of the label.\n * - `--a2ui-slider-thumb-color`: Controls the accent color of the thumb.\n * - `--a2ui-slider-track-color`: Controls the background of the track.\n */\n@Component({\n selector: 'a2ui-v09-slider',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-slider-container\">\n <div class=\"a2ui-slider-header\">\n <span class=\"a2ui-slider-label\">{{ label() }}</span>\n <span class=\"a2ui-slider-value\">{{ value() }}</span>\n </div>\n <input\n type=\"range\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n class=\"a2ui-slider\"\n />\n </div>\n `,\n styles: [\n `\n .a2ui-slider-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n margin: var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px));\n }\n .a2ui-slider-header {\n display: flex;\n justify-content: space-between;\n font-size: var(\n --a2ui-slider-label-font-size,\n var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px))\n );\n font-weight: var(--a2ui-slider-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-slider {\n width: 100%;\n cursor: pointer;\n accent-color: var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));\n background: var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef));\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SliderComponent extends BasicCatalogComponent<typeof SliderApi> {\n readonly label = computed(() => this.props()['label']?.value());\n readonly value = computed(() => this.props()['value']?.value());\n readonly min = computed(() => this.props()['min']?.value() ?? 0);\n readonly max = computed(() => this.props()['max']?.value() ?? 100);\n readonly step = computed(() => this.props()['step']?.value() ?? 1);\n\n handleInput(event: Event) {\n const val = Number((event.target as HTMLInputElement).value);\n this.props()['value']?.onUpdate(val);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, computed, ChangeDetectionStrategy} from '@angular/core';\nimport {BasicCatalogComponent} from './basic-catalog-component';\nimport {DateTimeInputApi} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Angular implementation of the A2UI DateTimeInput component (v0.9).\n *\n * Renders date and/or time input fields. Combines them into an ISO string\n * for the bound data model property.\n *\n * Supported CSS variables:\n * - `--a2ui-datetimeinput-background`: Controls the background of inputs.\n * - `--a2ui-datetimeinput-color`: Controls the text color of inputs.\n * - `--a2ui-datetimeinput-border`: Controls the border of inputs.\n * - `--a2ui-datetimeinput-border-radius`: Controls the border radius of inputs.\n * - `--a2ui-datetimeinput-padding`: Controls the padding of inputs.\n * - `--a2ui-datetimeinput-label-font-size`: Controls the font size of the label.\n * - `--a2ui-datetimeinput-label-font-weight`: Controls the font weight of the label.\n */\n@Component({\n selector: 'a2ui-v09-date-time-input',\n standalone: true,\n imports: [],\n template: `\n <div class=\"a2ui-date-time-container\">\n @if (label()) {\n <label class=\"a2ui-date-time-label\">\n {{ label() }}\n </label>\n }\n <div class=\"a2ui-date-time-inputs\">\n @if (enableDate()) {\n <input\n type=\"date\"\n [value]=\"dateValue()\"\n (change)=\"handleDateChange($event)\"\n class=\"a2ui-date-time-input\"\n />\n }\n @if (enableTime()) {\n <input\n type=\"time\"\n [value]=\"timeValue()\"\n (change)=\"handleTimeChange($event)\"\n class=\"a2ui-date-time-input\"\n />\n }\n </div>\n </div>\n `,\n styles: [\n `\n .a2ui-date-time-container {\n display: flex;\n flex-direction: column;\n gap: var(--a2ui-spacing-xs, 4px);\n width: 100%;\n }\n .a2ui-date-time-label {\n font-size: var(\n --a2ui-datetimeinput-label-font-size,\n var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px))\n );\n font-weight: var(--a2ui-datetimeinput-label-font-weight, bold);\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n }\n .a2ui-date-time-inputs {\n display: flex;\n gap: var(--a2ui-spacing-s, 8px);\n width: 100%;\n }\n .a2ui-date-time-input {\n padding: var(--a2ui-datetimeinput-padding, 8px);\n border-radius: var(--a2ui-datetimeinput-border-radius, 4px);\n border: var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));\n background-color: var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));\n color: var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));\n font-family: inherit;\n flex: 1;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateTimeInputComponent extends BasicCatalogComponent<typeof DateTimeInputApi> {\n readonly label = computed(() => this.props()['label']?.value());\n readonly enableDate = computed(() => this.props()['enableDate']?.value() ?? true);\n readonly enableTime = computed(() => this.props()['enableTime']?.value() ?? false);\n\n private readonly rawValue = computed(() => this.props()['value']?.value() || '');\n\n readonly dateValue = computed(() => {\n const val = this.rawValue();\n if (!val) return '';\n return val.includes('T') ? val.split('T')[0] : val;\n });\n\n readonly timeValue = computed(() => {\n const val = this.rawValue();\n if (!val || !val.includes('T')) return '';\n return val.split('T')[1].substring(0, 5);\n });\n\n handleDateChange(event: Event) {\n const date = (event.target as HTMLInputElement).value;\n const current = this.rawValue();\n if (this.enableTime()) {\n const time = current.includes('T') ? current.split('T')[1] : '00:00:00';\n this.props()['value']?.onUpdate(`${date}T${time}`);\n } else {\n this.props()['value']?.onUpdate(date);\n }\n }\n\n handleTimeChange(event: Event) {\n const time = (event.target as HTMLInputElement).value;\n const current = this.rawValue();\n const date = current.includes('T')\n ? current.split('T')[0]\n : current || new Date().toISOString().split('T')[0];\n this.props()['value']?.onUpdate(`${date}T${time}:00`);\n }\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {AngularCatalog, AngularComponentImplementation} from '../types';\nimport {TextComponent} from './text.component';\nimport {RowComponent} from './row.component';\nimport {ColumnComponent} from './column.component';\nimport {ButtonComponent} from './button.component';\nimport {TextFieldComponent} from './text-field.component';\nimport {ImageComponent} from './image.component';\nimport {IconComponent} from './icon.component';\nimport {VideoComponent} from './video.component';\nimport {AudioPlayerComponent} from './audio-player.component';\nimport {ListComponent} from './list.component';\nimport {CardComponent} from './card.component';\nimport {TabsComponent} from './tabs.component';\nimport {ModalComponent} from './modal.component';\nimport {DividerComponent} from './divider.component';\nimport {CheckBoxComponent} from './check-box.component';\nimport {ChoicePickerComponent} from './choice-picker.component';\nimport {SliderComponent} from './slider.component';\nimport {DateTimeInputComponent} from './date-time-input.component';\n\nimport {\n BASIC_FUNCTIONS,\n TextApi,\n RowApi,\n ColumnApi,\n ButtonApi,\n TextFieldApi,\n ImageApi,\n IconApi,\n VideoApi,\n AudioPlayerApi,\n ListApi,\n CardApi,\n TabsApi,\n ModalApi,\n DividerApi,\n CheckBoxApi,\n ChoicePickerApi,\n SliderApi,\n DateTimeInputApi,\n} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {FunctionImplementation} from '@a2ui/web_core/v0_9';\n\n/**\n * The set of default Angular implementations for each component in the basic catalog.\n * Using string literals as keys, to survive property renaming, as these names need to match the JSON payload.\n */\n// Ignore Prettier to preserve quoted keys, needed to survive property renaming.\n// prettier-ignore\nconst DEFAULT_COMPONENT_IMPLEMENTATIONS: Record<string, AngularComponentImplementation> = {\n 'text': {...TextApi, component: TextComponent},\n 'row': {...RowApi, component: RowComponent},\n 'column': {...ColumnApi, component: ColumnComponent},\n 'button': {...ButtonApi, component: ButtonComponent},\n 'textField': {...TextFieldApi, component: TextFieldComponent},\n 'image': {...ImageApi, component: ImageComponent},\n 'icon': {...IconApi, component: IconComponent},\n 'video': {...VideoApi, component: VideoComponent},\n 'audioPlayer': {...AudioPlayerApi, component: AudioPlayerComponent},\n 'list': {...ListApi, component: ListComponent},\n 'card': {...CardApi, component: CardComponent},\n 'tabs': {...TabsApi, component: TabsComponent},\n 'modal': {...ModalApi, component: ModalComponent},\n 'divider': {...DividerApi, component: DividerComponent},\n 'checkBox': {...CheckBoxApi, component: CheckBoxComponent},\n 'choicePicker': {...ChoicePickerApi, component: ChoicePickerComponent},\n 'slider': {...SliderApi, component: SliderComponent},\n 'dateTimeInput': {...DateTimeInputApi, component: DateTimeInputComponent},\n} as const;\n\n/**\n * Interface for specifying overrides and configuration for the basic catalog.\n */\nexport interface BasicCatalogOptions {\n /**\n * An optional override for the catalog's unique identifier.\n */\n id?: string;\n\n /**\n * Optional overrides for individual components in the catalog.\n */\n components?: Partial<{\n [K in keyof typeof DEFAULT_COMPONENT_IMPLEMENTATIONS]: AngularComponentImplementation;\n }>;\n\n /**\n * Optional additional components to include in the catalog beyond\n * the standard basic catalog components.\n */\n extraComponents?: AngularComponentImplementation[];\n\n /**\n * An optional set of function implementations to use instead of the defaults.\n */\n functions?: FunctionImplementation[];\n}\n\n/**\n * The set of Angular UI components provided by the basic catalog.\n */\nexport const BASIC_COMPONENTS: AngularComponentImplementation[] = Object.values(\n DEFAULT_COMPONENT_IMPLEMENTATIONS,\n);\n\n/**\n * The set of client-side functions provided by the basic catalog.\n */\nexport {BASIC_FUNCTIONS};\n\n/**\n * A base class for basic catalogs, providing extensibility for non-DI use cases.\n */\nexport class BasicCatalogBase extends AngularCatalog {\n constructor(options: BasicCatalogOptions = {}) {\n const id = options.id ?? 'https://a2ui.org/specification/v0_9/basic_catalog.json';\n const functions = options.functions ?? BASIC_FUNCTIONS;\n\n const overrides = options.components ?? {};\n const components: AngularComponentImplementation[] = [\n ...Object.entries(DEFAULT_COMPONENT_IMPLEMENTATIONS).map(([key, defaultValue]) => {\n const impl = (overrides as any)[key] ?? defaultValue;\n return {...impl, name: impl.name || key};\n }),\n ...(options.extraComponents ?? []),\n ];\n\n super(id, components, functions);\n }\n}\n\n/**\n * A basic catalog of components and functions for v0.9 verification.\n *\n * This catalog includes a wide range of UI components (Text, Button, Row, etc.)\n * and utility functions (capitalize, formatString) defined in the A2UI v0.9\n * basic catalog specification.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class BasicCatalog extends BasicCatalogBase {\n constructor() {\n super();\n }\n}\n","/*\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Public API surface for A2UI Angular Renderer v0.9.\n *\n * This module provides the core services, components, and catalogs required\n * to render A2UI surfaces using the v0.9 protocol.\n *\n * @module v0.9\n */\n\n// Core Services and Components\nexport * from './core/a2ui-renderer.service';\nexport * from './core/component-host.component';\nexport * from './core/surface.component';\nexport * from './core/catalog_component';\nexport * from './core/component-binder.service';\nexport * from './core/types';\nexport * from './core/utils';\nexport * from './core/markdown';\n\n// Catalog Types and Implementations\nexport * from './catalog/types';\nexport * from './catalog/basic/basic-catalog';\n\n// Basic Catalog Components\nexport * from './catalog/basic/text.component';\nexport * from './catalog/basic/row.component';\nexport * from './catalog/basic/column.component';\nexport * from './catalog/basic/button.component';\nexport * from './catalog/basic/text-field.component';\nexport * from './catalog/basic/image.component';\nexport * from './catalog/basic/icon.component';\nexport * from './catalog/basic/video.component';\nexport * from './catalog/basic/audio-player.component';\nexport * from './catalog/basic/list.component';\nexport * from './catalog/basic/card.component';\nexport * from './catalog/basic/tabs.component';\nexport * from './catalog/basic/modal.component';\nexport * from './catalog/basic/divider.component';\nexport * from './catalog/basic/check-box.component';\nexport * from './catalog/basic/choice-picker.component';\nexport * from './catalog/basic/slider.component';\nexport * from './catalog/basic/date-time-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["angularSignal","effect","computed"],"mappings":"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"}
|