a2ui-core 0.0.1__py3-none-any.whl

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.
Files changed (41) hide show
  1. a2ui/core/basic_catalog/__init__.py +87 -0
  2. a2ui/core/basic_catalog/components.py +486 -0
  3. a2ui/core/basic_catalog/expression_parser.py +268 -0
  4. a2ui/core/basic_catalog/function_apis.py +214 -0
  5. a2ui/core/basic_catalog/function_impls.py +463 -0
  6. a2ui/core/basic_catalog/locale_config.py +278 -0
  7. a2ui/core/basic_catalog/operator_apis.py +143 -0
  8. a2ui/core/basic_catalog/styles.py +39 -0
  9. a2ui/core/catalog/__init__.py +37 -0
  10. a2ui/core/catalog/catalog.py +232 -0
  11. a2ui/core/catalog/components.py +78 -0
  12. a2ui/core/catalog/functions.py +81 -0
  13. a2ui/core/common/__init__.py +22 -0
  14. a2ui/core/common/events.py +112 -0
  15. a2ui/core/processing/__init__.py +19 -0
  16. a2ui/core/processing/message_processor.py +232 -0
  17. a2ui/core/rendering/__init__.py +24 -0
  18. a2ui/core/rendering/component_context.py +68 -0
  19. a2ui/core/rendering/data_context.py +344 -0
  20. a2ui/core/rendering/generic_binder.py +174 -0
  21. a2ui/core/schema/__init__.py +56 -0
  22. a2ui/core/schema/client_capabilities.py +69 -0
  23. a2ui/core/schema/client_to_server.py +106 -0
  24. a2ui/core/schema/common_types.py +131 -0
  25. a2ui/core/schema/constants.py +27 -0
  26. a2ui/core/schema/server_to_client.py +109 -0
  27. a2ui/core/state/__init__.py +32 -0
  28. a2ui/core/state/component_model.py +53 -0
  29. a2ui/core/state/component_node.py +60 -0
  30. a2ui/core/state/data_model.py +175 -0
  31. a2ui/core/state/surface_components_model.py +55 -0
  32. a2ui/core/state/surface_group_model.py +70 -0
  33. a2ui/core/state/surface_model.py +395 -0
  34. a2ui/core/validating/__init__.py +33 -0
  35. a2ui/core/validating/catalog_validator.py +434 -0
  36. a2ui/core/validating/integrity_checker.py +149 -0
  37. a2ui/core/validating/topology_analyzer.py +88 -0
  38. a2ui/core/validating/validator.py +191 -0
  39. a2ui_core-0.0.1.dist-info/METADATA +105 -0
  40. a2ui_core-0.0.1.dist-info/RECORD +41 -0
  41. a2ui_core-0.0.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,87 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from .components import (
16
+ BASIC_COMPONENTS,
17
+ AudioPlayerComponent,
18
+ ButtonComponent,
19
+ CardComponent,
20
+ CheckBoxComponent,
21
+ ChoicePickerComponent,
22
+ ColumnComponent,
23
+ DateTimeInputComponent,
24
+ DividerComponent,
25
+ IconComponent,
26
+ ImageComponent,
27
+ ListComponent,
28
+ ModalComponent,
29
+ RowComponent,
30
+ SliderComponent,
31
+ TabsComponent,
32
+ TextComponent,
33
+ TextFieldComponent,
34
+ VideoComponent,
35
+ AnyComponent,
36
+ )
37
+ from .function_apis import (
38
+ RequiredApi,
39
+ RegexApi,
40
+ LengthApi,
41
+ NumericApi,
42
+ EmailApi,
43
+ FormatStringApi,
44
+ FormatNumberApi,
45
+ FormatCurrencyApi,
46
+ FormatDateApi,
47
+ PluralizeApi,
48
+ OpenUrlApi,
49
+ AndApi,
50
+ OrApi,
51
+ NotApi,
52
+ )
53
+ from .operator_apis import (
54
+ AddApi,
55
+ SubtractApi,
56
+ MultiplyApi,
57
+ DivideApi,
58
+ EqualsApi,
59
+ NotEqualsApi,
60
+ GreaterThanApi,
61
+ LessThanApi,
62
+ ContainsApi,
63
+ StartsWithApi,
64
+ EndsWithApi,
65
+ )
66
+ from .styles import Theme
67
+ from .function_impls import BASIC_FUNCTION_IMPLEMENTATIONS
68
+ from ..schema.constants import SPEC_VERSION, SPEC_BASE_URL
69
+ from ..catalog import Catalog, ModelComponentApi, FunctionImplementation
70
+
71
+
72
+ def _basic_catalog_id(spec_version: str) -> str:
73
+ return (
74
+ f"{SPEC_BASE_URL}/{spec_version.replace('.', '_')}/catalogs/basic/catalog.json"
75
+ )
76
+
77
+
78
+ class BasicCatalog(Catalog[ModelComponentApi, FunctionImplementation]):
79
+
80
+ def __init__(self):
81
+ super().__init__(
82
+ catalog_id=_basic_catalog_id(SPEC_VERSION),
83
+ spec_version=SPEC_VERSION,
84
+ components=BASIC_COMPONENTS,
85
+ functions=BASIC_FUNCTION_IMPLEMENTATIONS,
86
+ theme_class=Theme,
87
+ )
@@ -0,0 +1,486 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # Auto-generated. Do not edit manually.
16
+ from typing import Any, Dict, List, Literal, Optional, Union, Annotated
17
+ from pydantic import BaseModel, Field, ConfigDict
18
+
19
+ from ..schema.common_types import (
20
+ StrictBaseModel,
21
+ ComponentCommon,
22
+ AccessibilityAttributes,
23
+ DynamicString,
24
+ DynamicNumber,
25
+ DynamicBoolean,
26
+ DynamicStringList,
27
+ ChildList,
28
+ Action,
29
+ CheckRule,
30
+ DataBinding,
31
+ ComponentId,
32
+ )
33
+ from ..catalog.components import ModelComponentApi
34
+
35
+
36
+ class CatalogComponentCommon(ComponentCommon):
37
+ weight: Optional[float] = Field(
38
+ None,
39
+ description="The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.",
40
+ )
41
+
42
+
43
+ class OptionItem(StrictBaseModel):
44
+ label: DynamicString = Field(
45
+ ..., description="The text to display for this option."
46
+ )
47
+ value: str = Field(..., description="The stable value associated with this option.")
48
+
49
+
50
+ class SvgPath(StrictBaseModel):
51
+ svg_path: str = Field(..., alias="svgPath")
52
+
53
+
54
+ class TabItem(StrictBaseModel):
55
+ title: DynamicString = Field(..., description="The tab title.")
56
+ child: ComponentId = Field(
57
+ ...,
58
+ description="The ID of the child component. Do NOT define the component inline.",
59
+ )
60
+
61
+
62
+ class TextComponent(CatalogComponentCommon):
63
+ component: Literal["Text"] = "Text"
64
+ text: DynamicString = Field(
65
+ ...,
66
+ description="The text content to display. While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.",
67
+ )
68
+ variant: Optional[Literal["h1", "h2", "h3", "h4", "h5", "caption", "body"]] = Field(
69
+ description="A hint for the base text style.", default="body"
70
+ )
71
+
72
+
73
+ class ImageComponent(CatalogComponentCommon):
74
+ component: Literal["Image"] = "Image"
75
+ url: DynamicString = Field(..., description="The URL of the image to display.")
76
+ description: Optional[DynamicString] = Field(
77
+ None, description="Accessibility text for the image."
78
+ )
79
+ fit: Optional[Literal["contain", "cover", "fill", "none", "scaleDown"]] = Field(
80
+ description="Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.",
81
+ default="fill",
82
+ )
83
+ variant: Optional[
84
+ Literal[
85
+ "icon", "avatar", "smallFeature", "mediumFeature", "largeFeature", "header"
86
+ ]
87
+ ] = Field(
88
+ description="A hint for the image size and style.", default="mediumFeature"
89
+ )
90
+
91
+
92
+ class IconComponent(CatalogComponentCommon):
93
+ component: Literal["Icon"] = "Icon"
94
+ name: Union[
95
+ Literal[
96
+ "accountCircle",
97
+ "add",
98
+ "arrowBack",
99
+ "arrowForward",
100
+ "attachFile",
101
+ "calendarToday",
102
+ "call",
103
+ "camera",
104
+ "check",
105
+ "close",
106
+ "delete",
107
+ "download",
108
+ "edit",
109
+ "event",
110
+ "error",
111
+ "fastForward",
112
+ "favorite",
113
+ "favoriteOff",
114
+ "folder",
115
+ "help",
116
+ "home",
117
+ "info",
118
+ "locationOn",
119
+ "lock",
120
+ "lockOpen",
121
+ "mail",
122
+ "menu",
123
+ "moreVert",
124
+ "moreHoriz",
125
+ "notificationsOff",
126
+ "notifications",
127
+ "pause",
128
+ "payment",
129
+ "person",
130
+ "phone",
131
+ "photo",
132
+ "play",
133
+ "print",
134
+ "refresh",
135
+ "rewind",
136
+ "search",
137
+ "send",
138
+ "settings",
139
+ "share",
140
+ "shoppingCart",
141
+ "skipNext",
142
+ "skipPrevious",
143
+ "star",
144
+ "starHalf",
145
+ "starOff",
146
+ "stop",
147
+ "upload",
148
+ "visibility",
149
+ "visibilityOff",
150
+ "volumeDown",
151
+ "volumeMute",
152
+ "volumeOff",
153
+ "volumeUp",
154
+ "warning",
155
+ ],
156
+ SvgPath,
157
+ DataBinding,
158
+ ] = Field(..., description="The name of the icon to display.")
159
+
160
+
161
+ class VideoComponent(CatalogComponentCommon):
162
+ component: Literal["Video"] = "Video"
163
+ url: DynamicString = Field(..., description="The URL of the video to display.")
164
+
165
+
166
+ class AudioPlayerComponent(CatalogComponentCommon):
167
+ component: Literal["AudioPlayer"] = "AudioPlayer"
168
+ url: DynamicString = Field(..., description="The URL of the audio to be played.")
169
+ description: Optional[DynamicString] = Field(
170
+ None, description="A description of the audio, such as a title or summary."
171
+ )
172
+
173
+
174
+ class RowComponent(CatalogComponentCommon):
175
+ component: Literal["Row"] = "Row"
176
+ children: ChildList = Field(
177
+ ...,
178
+ description="Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.",
179
+ )
180
+ justify: Optional[
181
+ Literal[
182
+ "center",
183
+ "end",
184
+ "spaceAround",
185
+ "spaceBetween",
186
+ "spaceEvenly",
187
+ "start",
188
+ "stretch",
189
+ ]
190
+ ] = Field(
191
+ description="Defines the arrangement of children along the main axis (horizontally). Use 'spaceBetween' to push items to the edges, or 'start'/'end'/'center' to pack them together.",
192
+ default="start",
193
+ )
194
+ align: Optional[Literal["start", "center", "end", "stretch"]] = Field(
195
+ description="Defines the alignment of children along the cross axis (vertically). This is similar to the CSS 'align-items' property, but uses camelCase values (e.g., 'start').",
196
+ default="stretch",
197
+ )
198
+
199
+
200
+ class ColumnComponent(CatalogComponentCommon):
201
+ component: Literal["Column"] = "Column"
202
+ children: ChildList = Field(
203
+ ...,
204
+ description="Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.",
205
+ )
206
+ justify: Optional[
207
+ Literal[
208
+ "start",
209
+ "center",
210
+ "end",
211
+ "spaceBetween",
212
+ "spaceAround",
213
+ "spaceEvenly",
214
+ "stretch",
215
+ ]
216
+ ] = Field(
217
+ description="Defines the arrangement of children along the main axis (vertically). Use 'spaceBetween' to push items to the edges (e.g. header at top, footer at bottom), or 'start'/'end'/'center' to pack them together.",
218
+ default="start",
219
+ )
220
+ align: Optional[Literal["center", "end", "start", "stretch"]] = Field(
221
+ description="Defines the alignment of children along the cross axis (horizontally). This is similar to the CSS 'align-items' property.",
222
+ default="stretch",
223
+ )
224
+
225
+
226
+ class ListComponent(CatalogComponentCommon):
227
+ component: Literal["List"] = "List"
228
+ children: ChildList = Field(
229
+ ...,
230
+ description="Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list.",
231
+ )
232
+ direction: Optional[Literal["vertical", "horizontal"]] = Field(
233
+ description="The direction in which the list items are laid out.",
234
+ default="vertical",
235
+ )
236
+ align: Optional[Literal["start", "center", "end", "stretch"]] = Field(
237
+ description="Defines the alignment of children along the cross axis.",
238
+ default="stretch",
239
+ )
240
+
241
+
242
+ class CardComponent(CatalogComponentCommon):
243
+ component: Literal["Card"] = "Card"
244
+ child: ComponentId = Field(
245
+ ...,
246
+ description="The ID of the single child component to be rendered inside the card. To display multiple elements, you MUST wrap them in a layout component (like Column or Row) and pass that container's ID here. Do NOT pass multiple IDs or a non-existent ID. Do NOT define the child component inline.",
247
+ )
248
+
249
+
250
+ class TabsComponent(CatalogComponentCommon):
251
+ component: Literal["Tabs"] = "Tabs"
252
+ tabs: List[TabItem] = Field(
253
+ ...,
254
+ description="An array of objects, where each object defines a tab with a title and a child component.",
255
+ )
256
+
257
+
258
+ class ModalComponent(CatalogComponentCommon):
259
+ component: Literal["Modal"] = "Modal"
260
+ trigger: ComponentId = Field(
261
+ ...,
262
+ description="The ID of the component that opens the modal when interacted with (e.g., a button). Do NOT define the component inline.",
263
+ )
264
+ content: ComponentId = Field(
265
+ ...,
266
+ description="The ID of the component to be displayed inside the modal. Do NOT define the component inline.",
267
+ )
268
+
269
+
270
+ class DividerComponent(CatalogComponentCommon):
271
+ component: Literal["Divider"] = "Divider"
272
+ axis: Optional[Literal["horizontal", "vertical"]] = Field(
273
+ description="The orientation of the divider.", default="horizontal"
274
+ )
275
+
276
+
277
+ class ButtonComponent(CatalogComponentCommon):
278
+ component: Literal["Button"] = "Button"
279
+ checks: Optional[List[CheckRule]] = Field(
280
+ None,
281
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
282
+ )
283
+ child: ComponentId = Field(
284
+ ...,
285
+ description="The ID of the child component. Use a 'Text' component for a labeled button. Only use an 'Icon' if the requirements explicitly ask for an icon-only button. Do NOT define the child component inline.",
286
+ )
287
+ variant: Optional[Literal["default", "primary", "borderless"]] = Field(
288
+ description="A hint for the button style. If omitted, a default button style is used. 'primary' indicates this is the main call-to-action button. 'borderless' means the button has no visual border or background, making its child content appear like a clickable link.",
289
+ default="default",
290
+ )
291
+ action: Action = Field(...)
292
+
293
+
294
+ class TextFieldComponent(CatalogComponentCommon):
295
+ component: Literal["TextField"] = "TextField"
296
+ checks: Optional[List[CheckRule]] = Field(
297
+ None,
298
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
299
+ )
300
+ label: DynamicString = Field(..., description="The text label for the input field.")
301
+ value: Optional[DynamicString] = Field(
302
+ None, description="The value of the text field."
303
+ )
304
+ variant: Optional[Literal["longText", "number", "shortText", "obscured"]] = Field(
305
+ description="The type of input field to display.", default="shortText"
306
+ )
307
+ validation_regexp: Optional[str] = Field(
308
+ None,
309
+ alias="validationRegexp",
310
+ description="A regular expression used for client-side validation of the input.",
311
+ )
312
+
313
+
314
+ class CheckBoxComponent(CatalogComponentCommon):
315
+ component: Literal["CheckBox"] = "CheckBox"
316
+ checks: Optional[List[CheckRule]] = Field(
317
+ None,
318
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
319
+ )
320
+ label: DynamicString = Field(
321
+ ..., description="The text to display next to the checkbox."
322
+ )
323
+ value: DynamicBoolean = Field(
324
+ ...,
325
+ description="The current state of the checkbox (true for checked, false for unchecked).",
326
+ )
327
+
328
+
329
+ class ChoicePickerComponent(CatalogComponentCommon):
330
+ component: Literal["ChoicePicker"] = "ChoicePicker"
331
+ checks: Optional[List[CheckRule]] = Field(
332
+ None,
333
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
334
+ )
335
+ label: Optional[DynamicString] = Field(
336
+ None, description="The label for the group of options."
337
+ )
338
+ variant: Optional[Literal["multipleSelection", "mutuallyExclusive"]] = Field(
339
+ description="A hint for how the choice picker should be displayed and behave.",
340
+ default="mutuallyExclusive",
341
+ )
342
+ options: List[OptionItem] = Field(
343
+ ..., description="The list of available options to choose from."
344
+ )
345
+ value: DynamicStringList = Field(
346
+ ...,
347
+ description="The list of currently selected values. This should be bound to a string array in the data model.",
348
+ )
349
+ display_style: Optional[Literal["checkbox", "chips"]] = Field(
350
+ alias="displayStyle",
351
+ description="The display style of the component.",
352
+ default="checkbox",
353
+ )
354
+ filterable: Optional[bool] = Field(
355
+ description="If true, displays a search input to filter the options.",
356
+ default=False,
357
+ )
358
+
359
+
360
+ class SliderComponent(CatalogComponentCommon):
361
+ component: Literal["Slider"] = "Slider"
362
+ checks: Optional[List[CheckRule]] = Field(
363
+ None,
364
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
365
+ )
366
+ label: Optional[DynamicString] = Field(
367
+ None, description="The label for the slider."
368
+ )
369
+ min: Optional[float] = Field(
370
+ description="The minimum value of the slider.", default=0
371
+ )
372
+ max: float = Field(..., description="The maximum value of the slider.")
373
+ value: DynamicNumber = Field(..., description="The current value of the slider.")
374
+
375
+
376
+ class DateTimeInputComponent(CatalogComponentCommon):
377
+ component: Literal["DateTimeInput"] = "DateTimeInput"
378
+ checks: Optional[List[CheckRule]] = Field(
379
+ None,
380
+ description="A list of checks to perform. These are function calls that must return a boolean indicating validity.",
381
+ )
382
+ value: DynamicString = Field(
383
+ ...,
384
+ description="The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string.",
385
+ )
386
+ enable_date: Optional[bool] = Field(
387
+ alias="enableDate",
388
+ description="If true, allows the user to select a date.",
389
+ default=False,
390
+ )
391
+ enable_time: Optional[bool] = Field(
392
+ alias="enableTime",
393
+ description="If true, allows the user to select a time.",
394
+ default=False,
395
+ )
396
+ min: Optional[DynamicString] = Field(
397
+ None, description="The minimum allowed date/time in ISO 8601 format."
398
+ )
399
+ max: Optional[DynamicString] = Field(
400
+ None, description="The maximum allowed date/time in ISO 8601 format."
401
+ )
402
+ label: Optional[DynamicString] = Field(
403
+ None, description="The text label for the input field."
404
+ )
405
+
406
+
407
+ AnyComponent = Annotated[
408
+ Union[
409
+ TextComponent,
410
+ ImageComponent,
411
+ IconComponent,
412
+ VideoComponent,
413
+ AudioPlayerComponent,
414
+ RowComponent,
415
+ ColumnComponent,
416
+ ListComponent,
417
+ CardComponent,
418
+ TabsComponent,
419
+ ModalComponent,
420
+ DividerComponent,
421
+ ButtonComponent,
422
+ TextFieldComponent,
423
+ CheckBoxComponent,
424
+ ChoicePickerComponent,
425
+ SliderComponent,
426
+ DateTimeInputComponent,
427
+ ],
428
+ Field(..., discriminator="component"),
429
+ ]
430
+
431
+ TEXT_COMPONENT_API = ModelComponentApi(TextComponent)
432
+
433
+ IMAGE_COMPONENT_API = ModelComponentApi(ImageComponent)
434
+
435
+ ICON_COMPONENT_API = ModelComponentApi(IconComponent)
436
+
437
+ VIDEO_COMPONENT_API = ModelComponentApi(VideoComponent)
438
+
439
+ AUDIO_PLAYER_COMPONENT_API = ModelComponentApi(AudioPlayerComponent)
440
+
441
+ ROW_COMPONENT_API = ModelComponentApi(RowComponent)
442
+
443
+ COLUMN_COMPONENT_API = ModelComponentApi(ColumnComponent)
444
+
445
+ LIST_COMPONENT_API = ModelComponentApi(ListComponent)
446
+
447
+ CARD_COMPONENT_API = ModelComponentApi(CardComponent)
448
+
449
+ TABS_COMPONENT_API = ModelComponentApi(TabsComponent)
450
+
451
+ MODAL_COMPONENT_API = ModelComponentApi(ModalComponent)
452
+
453
+ DIVIDER_COMPONENT_API = ModelComponentApi(DividerComponent)
454
+
455
+ BUTTON_COMPONENT_API = ModelComponentApi(ButtonComponent)
456
+
457
+ TEXT_FIELD_COMPONENT_API = ModelComponentApi(TextFieldComponent)
458
+
459
+ CHECK_BOX_COMPONENT_API = ModelComponentApi(CheckBoxComponent)
460
+
461
+ CHOICE_PICKER_COMPONENT_API = ModelComponentApi(ChoicePickerComponent)
462
+
463
+ SLIDER_COMPONENT_API = ModelComponentApi(SliderComponent)
464
+
465
+ DATE_TIME_INPUT_COMPONENT_API = ModelComponentApi(DateTimeInputComponent)
466
+
467
+ BASIC_COMPONENTS = [
468
+ TEXT_COMPONENT_API,
469
+ IMAGE_COMPONENT_API,
470
+ ICON_COMPONENT_API,
471
+ VIDEO_COMPONENT_API,
472
+ AUDIO_PLAYER_COMPONENT_API,
473
+ ROW_COMPONENT_API,
474
+ COLUMN_COMPONENT_API,
475
+ LIST_COMPONENT_API,
476
+ CARD_COMPONENT_API,
477
+ TABS_COMPONENT_API,
478
+ MODAL_COMPONENT_API,
479
+ DIVIDER_COMPONENT_API,
480
+ BUTTON_COMPONENT_API,
481
+ TEXT_FIELD_COMPONENT_API,
482
+ CHECK_BOX_COMPONENT_API,
483
+ CHOICE_PICKER_COMPONENT_API,
484
+ SLIDER_COMPONENT_API,
485
+ DATE_TIME_INPUT_COMPONENT_API,
486
+ ]