neba 1.13.0 → 1.15.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.
Files changed (332) hide show
  1. package/README.md +22 -30
  2. package/dist/a2ui/catalog.json +1466 -0
  3. package/dist/a2ui/components.d.ts +21 -0
  4. package/dist/a2ui/components.js +1 -0
  5. package/dist/a2ui/index.d.ts +62 -0
  6. package/dist/a2ui/index.js +1 -0
  7. package/dist/a2ui/schema.d.ts +47 -0
  8. package/dist/a2ui/schema.js +1 -0
  9. package/dist/components/accordion/Accordion.d.ts +5 -1
  10. package/dist/components/accordion/Accordion.js +1 -1
  11. package/dist/components/agent-steps/AgentSteps.d.ts +80 -0
  12. package/dist/components/agent-steps/AgentSteps.js +1 -0
  13. package/dist/components/agent-steps/index.d.ts +2 -0
  14. package/dist/components/agent-steps/index.js +1 -0
  15. package/dist/components/alert/Alert.js +1 -1
  16. package/dist/components/anchor/Anchor.d.ts +3 -2
  17. package/dist/components/anchor/Anchor.js +1 -1
  18. package/dist/components/animate-appear/AnimateAppear.js +1 -1
  19. package/dist/components/animate-blink/AnimateBlink.d.ts +3 -0
  20. package/dist/components/animate-blink/AnimateBlink.js +1 -1
  21. package/dist/components/animate-counter/AnimateCounter.d.ts +3 -1
  22. package/dist/components/animate-counter/AnimateCounter.js +1 -1
  23. package/dist/components/animate-fade/AnimateFade.js +1 -1
  24. package/dist/components/animate-float/AnimateFloat.js +1 -1
  25. package/dist/components/animate-grow/AnimateGrow.js +1 -1
  26. package/dist/components/animate-headline/AnimateHeadline.d.ts +9 -2
  27. package/dist/components/animate-headline/AnimateHeadline.js +1 -1
  28. package/dist/components/animate-lighting/AnimateLighting.d.ts +1 -1
  29. package/dist/components/animate-lighting/AnimateLighting.js +1 -1
  30. package/dist/components/animate-marquee/AnimateMarquee.d.ts +15 -6
  31. package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
  32. package/dist/components/animate-reveal/AnimateReveal.js +1 -1
  33. package/dist/components/animate-rotate/AnimateRotate.js +1 -1
  34. package/dist/components/animate-scramble/AnimateScramble.d.ts +5 -3
  35. package/dist/components/animate-scramble/AnimateScramble.js +1 -1
  36. package/dist/components/animate-shake/AnimateShake.js +1 -1
  37. package/dist/components/animate-slide/AnimateSlide.js +1 -1
  38. package/dist/components/animate-split/AnimateSplit.d.ts +3 -1
  39. package/dist/components/animate-split/AnimateSplit.js +1 -1
  40. package/dist/components/animate-typing/AnimateTyping.d.ts +12 -4
  41. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  42. package/dist/components/animate-zoom/AnimateZoom.js +1 -1
  43. package/dist/components/app-logo/AppLogo.js +1 -1
  44. package/dist/components/approval/Approval.d.ts +115 -0
  45. package/dist/components/approval/Approval.js +1 -0
  46. package/dist/components/approval/index.d.ts +2 -0
  47. package/dist/components/approval/index.js +1 -0
  48. package/dist/components/area-chart/AreaChart.js +1 -1
  49. package/dist/components/aspect-ratio/AspectRatio.d.ts +6 -4
  50. package/dist/components/aspect-ratio/AspectRatio.js +1 -1
  51. package/dist/components/avatar/Avatar.js +1 -1
  52. package/dist/components/badge/Badge.js +1 -1
  53. package/dist/components/bar-chart/BarChart.d.ts +1 -1
  54. package/dist/components/bar-chart/BarChart.js +1 -1
  55. package/dist/components/blockquote/Blockquote.js +1 -1
  56. package/dist/components/bottom-navigation/BottomNavigation.d.ts +2 -1
  57. package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
  58. package/dist/components/box/Box.d.ts +5 -0
  59. package/dist/components/box/Box.js +1 -1
  60. package/dist/components/breadcrumb/Breadcrumb.d.ts +10 -0
  61. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  62. package/dist/components/button/Button.d.ts +11 -0
  63. package/dist/components/button/Button.js +1 -1
  64. package/dist/components/button-group/ButtonGroup.js +1 -1
  65. package/dist/components/calendar/Calendar.js +1 -1
  66. package/dist/components/card/Card.js +1 -1
  67. package/dist/components/carousel/Carousel.d.ts +4 -0
  68. package/dist/components/carousel/Carousel.js +1 -1
  69. package/dist/components/chat-bubble/ChatBubble.js +1 -1
  70. package/dist/components/checkbox/Checkbox.js +1 -1
  71. package/dist/components/chip/Chip.d.ts +3 -1
  72. package/dist/components/chip/Chip.js +1 -1
  73. package/dist/components/code-block/CodeBlock.d.ts +6 -3
  74. package/dist/components/code-block/CodeBlock.js +1 -1
  75. package/dist/components/collapsible/Collapsible.d.ts +11 -1
  76. package/dist/components/collapsible/Collapsible.js +1 -1
  77. package/dist/components/color-picker/ColorPicker.js +1 -1
  78. package/dist/components/combobox/Combobox.d.ts +11 -1
  79. package/dist/components/combobox/Combobox.js +1 -1
  80. package/dist/components/command-palette/CommandPalette.js +1 -1
  81. package/dist/components/confirm/Confirm.js +1 -1
  82. package/dist/components/container/Container.js +1 -1
  83. package/dist/components/context-window/ContextWindow.d.ts +103 -0
  84. package/dist/components/context-window/ContextWindow.js +1 -0
  85. package/dist/components/context-window/index.d.ts +2 -0
  86. package/dist/components/context-window/index.js +1 -0
  87. package/dist/components/data-list/DataList.js +1 -1
  88. package/dist/components/data-table/DataTable.d.ts +12 -1
  89. package/dist/components/data-table/DataTable.js +1 -1
  90. package/dist/components/date-picker/DatePicker.js +1 -1
  91. package/dist/components/date-range-picker/DateRangePicker.js +1 -1
  92. package/dist/components/date-time-picker/DateTimePicker.js +1 -1
  93. package/dist/components/dialog/Dialog.d.ts +12 -0
  94. package/dist/components/dialog/Dialog.js +1 -1
  95. package/dist/components/divider/Divider.js +1 -1
  96. package/dist/components/drawer/Drawer.d.ts +7 -0
  97. package/dist/components/drawer/Drawer.js +1 -1
  98. package/dist/components/empty/Empty.js +1 -1
  99. package/dist/components/fieldset/Fieldset.js +1 -1
  100. package/dist/components/file-picker/FilePicker.d.ts +12 -4
  101. package/dist/components/file-picker/FilePicker.js +1 -1
  102. package/dist/components/flex/Flex.d.ts +8 -2
  103. package/dist/components/flex/Flex.js +1 -1
  104. package/dist/components/floating-action-button/FloatingActionButton.d.ts +16 -1
  105. package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
  106. package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
  107. package/dist/components/footer/Footer.d.ts +8 -0
  108. package/dist/components/footer/Footer.js +1 -1
  109. package/dist/components/form/Form.d.ts +4 -2
  110. package/dist/components/form/Form.js +1 -1
  111. package/dist/components/gallery/Gallery.d.ts +56 -3
  112. package/dist/components/gallery/Gallery.js +1 -1
  113. package/dist/components/gallery/GalleryViewer.js +1 -1
  114. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  115. package/dist/components/grid/Grid.js +1 -1
  116. package/dist/components/grid-container/GridContainer.js +1 -1
  117. package/dist/components/header/Header.js +1 -1
  118. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  119. package/dist/components/highlight/Highlight.js +1 -1
  120. package/dist/components/how-to-steps/HowToSteps.d.ts +26 -1
  121. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  122. package/dist/components/icon/Icon.js +1 -1
  123. package/dist/components/icon-button/IconButton.d.ts +0 -20
  124. package/dist/components/icon-button/IconButton.js +1 -1
  125. package/dist/components/image/Image.d.ts +137 -11
  126. package/dist/components/image/Image.js +1 -1
  127. package/dist/components/image/index.d.ts +1 -1
  128. package/dist/components/inline-citation/InlineCitation.d.ts +53 -0
  129. package/dist/components/inline-citation/InlineCitation.js +1 -0
  130. package/dist/components/inline-citation/index.d.ts +2 -0
  131. package/dist/components/inline-citation/index.js +1 -0
  132. package/dist/components/list/List.js +1 -1
  133. package/dist/components/menu/Menu.d.ts +7 -4
  134. package/dist/components/menu/Menu.js +1 -1
  135. package/dist/components/menubar/Menubar.js +1 -1
  136. package/dist/components/meter/Meter.d.ts +6 -0
  137. package/dist/components/meter/Meter.js +1 -1
  138. package/dist/components/mockup/Mockup.js +1 -1
  139. package/dist/components/navigation-menu/NavigationMenu.d.ts +10 -1
  140. package/dist/components/navigation-menu/NavigationMenu.js +1 -1
  141. package/dist/components/number-field/NumberField.d.ts +20 -6
  142. package/dist/components/number-field/NumberField.js +1 -1
  143. package/dist/components/otp-field/OtpField.d.ts +7 -0
  144. package/dist/components/otp-field/OtpField.js +1 -1
  145. package/dist/components/overlay/Overlay.d.ts +1 -1
  146. package/dist/components/overlay/Overlay.js +1 -1
  147. package/dist/components/page-layout/PageLayout.d.ts +11 -0
  148. package/dist/components/page-layout/PageLayout.js +1 -1
  149. package/dist/components/pagination/Pagination.js +1 -1
  150. package/dist/components/panes/Panes.d.ts +11 -0
  151. package/dist/components/panes/Panes.js +1 -1
  152. package/dist/components/pie-chart/PieChart.d.ts +5 -3
  153. package/dist/components/pie-chart/PieChart.js +1 -1
  154. package/dist/components/pill/Pill.d.ts +8 -0
  155. package/dist/components/pill/Pill.js +1 -1
  156. package/dist/components/popconfirm/Popconfirm.d.ts +10 -3
  157. package/dist/components/popconfirm/Popconfirm.js +1 -1
  158. package/dist/components/popover/Popover.d.ts +8 -1
  159. package/dist/components/popover/Popover.js +1 -1
  160. package/dist/components/portal/Portal.js +1 -1
  161. package/dist/components/progress-box/ProgressBox.js +1 -1
  162. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  163. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  164. package/dist/components/prompt-input/PromptInput.d.ts +104 -0
  165. package/dist/components/prompt-input/PromptInput.js +1 -0
  166. package/dist/components/prompt-input/index.d.ts +2 -0
  167. package/dist/components/prompt-input/index.js +1 -0
  168. package/dist/components/provider/NebaProvider.d.ts +3 -3
  169. package/dist/components/provider/NebaProvider.js +1 -1
  170. package/dist/components/radio-group/RadioGroup.js +1 -1
  171. package/dist/components/rating/Rating.d.ts +4 -1
  172. package/dist/components/rating/Rating.js +1 -1
  173. package/dist/components/reasoning/Reasoning.d.ts +78 -0
  174. package/dist/components/reasoning/Reasoning.js +1 -0
  175. package/dist/components/reasoning/index.d.ts +2 -0
  176. package/dist/components/reasoning/index.js +1 -0
  177. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  178. package/dist/components/scroll-area/ScrollArea.js +1 -1
  179. package/dist/components/scroll-zone/ScrollZone.d.ts +10 -0
  180. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  181. package/dist/components/segmented-button/SegmentedButton.js +1 -1
  182. package/dist/components/select/Select.js +1 -1
  183. package/dist/components/shortcut/Shortcut.js +1 -1
  184. package/dist/components/show/Show.d.ts +6 -5
  185. package/dist/components/show/Show.js +1 -1
  186. package/dist/components/sidebar/Sidebar.d.ts +7 -5
  187. package/dist/components/sidebar/Sidebar.js +1 -1
  188. package/dist/components/sidebar/SidebarTrigger.js +1 -1
  189. package/dist/components/skeleton/Skeleton.d.ts +1 -1
  190. package/dist/components/skeleton/Skeleton.js +1 -1
  191. package/dist/components/slider/Slider.d.ts +13 -1
  192. package/dist/components/slider/Slider.js +1 -1
  193. package/dist/components/sources/Sources.d.ts +78 -0
  194. package/dist/components/sources/Sources.js +1 -0
  195. package/dist/components/sources/index.d.ts +2 -0
  196. package/dist/components/sources/index.js +1 -0
  197. package/dist/components/sparkline/Sparkline.js +1 -1
  198. package/dist/components/spoiler/Spoiler.js +1 -1
  199. package/dist/components/stack/Stack.d.ts +2 -2
  200. package/dist/components/stack/Stack.js +1 -1
  201. package/dist/components/statistic/Statistic.js +1 -1
  202. package/dist/components/streaming-text/StreamingText.d.ts +75 -0
  203. package/dist/components/streaming-text/StreamingText.js +1 -0
  204. package/dist/components/streaming-text/index.d.ts +2 -0
  205. package/dist/components/streaming-text/index.js +1 -0
  206. package/dist/components/switch/Switch.js +1 -1
  207. package/dist/components/table/Table.d.ts +8 -2
  208. package/dist/components/table/Table.js +1 -1
  209. package/dist/components/tabs/Tabs.js +1 -1
  210. package/dist/components/text-field/TextField.js +1 -1
  211. package/dist/components/text-link/TextLink.js +1 -1
  212. package/dist/components/time-picker/TimePicker.js +1 -1
  213. package/dist/components/timeline/Timeline.d.ts +8 -0
  214. package/dist/components/timeline/Timeline.js +1 -1
  215. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  216. package/dist/components/toast/Toast.d.ts +9 -3
  217. package/dist/components/toast/Toast.js +1 -1
  218. package/dist/components/toggle/Toggle.js +1 -1
  219. package/dist/components/toggle-group/ToggleGroup.js +1 -1
  220. package/dist/components/tool-call/ToolCall.d.ts +104 -0
  221. package/dist/components/tool-call/ToolCall.js +1 -0
  222. package/dist/components/tool-call/index.d.ts +2 -0
  223. package/dist/components/tool-call/index.js +1 -0
  224. package/dist/components/toolbar/Toolbar.d.ts +8 -0
  225. package/dist/components/toolbar/Toolbar.js +1 -1
  226. package/dist/components/tooltip/Tooltip.js +1 -1
  227. package/dist/components/tour/Tour.d.ts +2 -0
  228. package/dist/components/tour/Tour.js +1 -1
  229. package/dist/components/transfer/Transfer.js +1 -1
  230. package/dist/components/tree-select/TreeSelect.js +1 -1
  231. package/dist/components/tree-view/TreeView.d.ts +6 -0
  232. package/dist/components/tree-view/TreeView.js +1 -1
  233. package/dist/components/typography/Typography.js +1 -1
  234. package/dist/components/visually-hidden/VisuallyHidden.d.ts +9 -7
  235. package/dist/components/visually-hidden/VisuallyHidden.js +1 -1
  236. package/dist/components/window-pane/WindowPane.d.ts +2 -2
  237. package/dist/components/window-pane/WindowPane.js +1 -1
  238. package/dist/hooks/useElementSize.d.ts +3 -1
  239. package/dist/hooks/useElementSize.js +1 -1
  240. package/dist/hooks/useOnScreen.d.ts +3 -0
  241. package/dist/hooks/useOnScreen.js +1 -1
  242. package/dist/index.d.ts +9 -0
  243. package/dist/index.js +1 -1
  244. package/dist/internal/animate.d.ts +63 -16
  245. package/dist/internal/animate.js +1 -1
  246. package/dist/internal/calendar.d.ts +6 -1
  247. package/dist/internal/calendar.js +1 -1
  248. package/dist/internal/chart-frame.d.ts +64 -22
  249. package/dist/internal/chart-frame.js +1 -1
  250. package/dist/internal/chart-line.js +1 -1
  251. package/dist/internal/chart.d.ts +55 -4
  252. package/dist/internal/chart.js +1 -1
  253. package/dist/internal/children.d.ts +15 -0
  254. package/dist/internal/children.js +1 -0
  255. package/dist/internal/color.d.ts +4 -0
  256. package/dist/internal/color.js +1 -1
  257. package/dist/internal/csv.d.ts +12 -1
  258. package/dist/internal/csv.js +1 -1
  259. package/dist/internal/data-table.d.ts +28 -10
  260. package/dist/internal/data-table.js +1 -1
  261. package/dist/internal/date.d.ts +12 -5
  262. package/dist/internal/date.js +1 -1
  263. package/dist/internal/defaults.d.ts +6 -1
  264. package/dist/internal/defaults.js +1 -1
  265. package/dist/internal/drag.d.ts +13 -1
  266. package/dist/internal/drag.js +1 -1
  267. package/dist/internal/drop.d.ts +61 -0
  268. package/dist/internal/drop.js +1 -0
  269. package/dist/internal/fieldset.d.ts +13 -0
  270. package/dist/internal/fieldset.js +1 -0
  271. package/dist/internal/glow.d.ts +58 -0
  272. package/dist/internal/glow.js +1 -0
  273. package/dist/internal/highlight.js +1 -1
  274. package/dist/internal/i18n.d.ts +230 -11
  275. package/dist/internal/i18n.js +1 -1
  276. package/dist/internal/icons.d.ts +13 -2
  277. package/dist/internal/icons.js +1 -1
  278. package/dist/internal/inert.d.ts +13 -0
  279. package/dist/internal/inert.js +1 -0
  280. package/dist/internal/initials.d.ts +8 -3
  281. package/dist/internal/initials.js +1 -1
  282. package/dist/internal/keys.d.ts +13 -0
  283. package/dist/internal/keys.js +1 -1
  284. package/dist/internal/link.d.ts +13 -15
  285. package/dist/internal/link.js +1 -1
  286. package/dist/internal/media.d.ts +9 -17
  287. package/dist/internal/media.js +1 -1
  288. package/dist/internal/menu.d.ts +6 -1
  289. package/dist/internal/mockup.d.ts +5 -4
  290. package/dist/internal/mockup.js +1 -1
  291. package/dist/internal/observe.d.ts +12 -0
  292. package/dist/internal/observe.js +1 -1
  293. package/dist/internal/page-layout.d.ts +10 -8
  294. package/dist/internal/page-layout.js +1 -1
  295. package/dist/internal/picker.d.ts +1 -1
  296. package/dist/internal/picker.js +1 -1
  297. package/dist/internal/progress.d.ts +11 -5
  298. package/dist/internal/progress.js +1 -1
  299. package/dist/internal/responsive.d.ts +0 -8
  300. package/dist/internal/responsive.js +1 -1
  301. package/dist/internal/run.d.ts +71 -0
  302. package/dist/internal/run.js +1 -0
  303. package/dist/internal/screen.d.ts +12 -0
  304. package/dist/internal/screen.js +1 -0
  305. package/dist/internal/styles.d.ts +185 -14
  306. package/dist/internal/styles.js +1 -1
  307. package/dist/internal/text.d.ts +3 -3
  308. package/dist/internal/text.js +1 -1
  309. package/dist/internal/window.js +1 -1
  310. package/dist/locales/ar.js +1 -1
  311. package/dist/locales/de.js +1 -1
  312. package/dist/locales/es.js +1 -1
  313. package/dist/locales/fr.js +1 -1
  314. package/dist/locales/hi.js +1 -1
  315. package/dist/locales/id.js +1 -1
  316. package/dist/locales/it.js +1 -1
  317. package/dist/locales/ja.js +1 -1
  318. package/dist/locales/ko.js +1 -1
  319. package/dist/locales/nl.js +1 -1
  320. package/dist/locales/pl.js +1 -1
  321. package/dist/locales/pt.js +1 -1
  322. package/dist/locales/ru.js +1 -1
  323. package/dist/locales/th.js +1 -1
  324. package/dist/locales/tr.js +1 -1
  325. package/dist/locales/vi.js +1 -1
  326. package/dist/locales/zh-hans.js +1 -1
  327. package/dist/locales/zh-hant.js +1 -1
  328. package/dist/styles.css +1 -1
  329. package/dist/tailwind.css +501 -53
  330. package/dist/types.d.ts +34 -7
  331. package/dist/types.js +0 -8
  332. package/package.json +43 -9
@@ -0,0 +1,1466 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://neba.cdget.com/a2ui/catalog.json",
4
+ "protocolVersion": "1.0",
5
+ "title": "Neba",
6
+ "description": "The subset of the Neba component library an agent can describe: eighteen components whose every prop is a literal, an enumerated value or a reference to another component by ID.",
7
+ "catalogId": "https://neba.cdget.com/a2ui/catalog.json",
8
+ "instructions": "Neba is a React component library. Every component below is a real one, and what you write here is turned into that component rather than into markup.\n\n## Laying a surface out\n\nNothing has a margin of its own. Two components sit beside each other only inside a `Flex`, and the gutter between them is that `Flex`'s `spacing`. Nest a vertical `Flex` inside a horizontal one to build a grid.\n\nA component that takes a child takes an **ID**, never an inline definition, and a `Card` and an `Alert` take exactly one — wrap several in a `Flex` and pass that.\n\n## Colour means something here\n\n`color` is one of six semantic families and never a decorative choice. `success`, `warning` and `danger` say how something went; `info` is a note; `primary` is the product's own accent and `secondary` is the quiet one. Do not reach for a family because a screen needs variety, and do not use `danger` for anything but something that failed or something that destroys.\n\nThere is **one** `solid` control in a view — the action the view exists for. Everything else is `outline` or `text`.\n\n## One ladder\n\n`size` is the same five steps on every component, so an `md` Button, an `md` TextField and an `md` Select are the same height and line up in a row. Pick one size for a screen and stay on it; `density` is the prop for making something tighter, and it changes padding only.\n\n## Fields carry their own words\n\nA `TextField`, a `Select`, a `Checkbox` and the rest each draw their own label, helper line and error message. Never add a `Typography` above a field to label it, and never add one below it to show an error — put the message in the field's own `checks`.\n\n## Text\n\nEvery string a reader sees is a `Typography`. Its `level` says what the text *is* rather than how big it should be: use `h1`…`h6` in order for real headings, and do not pick a heading level because you want larger text.\n\n## Building a sentence out of a value\n\nThere are no operators. `formatString(\"Hello ${/user/name}\")` is how a value is put into a sentence, and `formatNumber`, `formatCurrency`, `formatDate` and `pluralize` are how a number or a date is written in the reader's own language. Never assemble a date out of its parts.",
9
+ "components": {
10
+ "Flex": {
11
+ "type": "object",
12
+ "description": "The layout component. A row or a column of other components, with a gutter between them. Everything that is not one thing on its own goes inside one of these: there is no other way to place two components beside each other.",
13
+ "properties": {
14
+ "component": {
15
+ "const": "Flex"
16
+ },
17
+ "children": {
18
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/ChildList",
19
+ "description": "The components inside it, by ID, in the order they are laid out."
20
+ },
21
+ "direction": {
22
+ "type": "string",
23
+ "enum": ["horizontal", "vertical"],
24
+ "default": "horizontal",
25
+ "description": "Which way the children run. `horizontal` is a row and `vertical` is a column."
26
+ },
27
+ "spacing": {
28
+ "type": "number",
29
+ "default": 0,
30
+ "description": "The gutter between the children, in steps of 0.25rem: `4` is 1rem. It is the only spacing there is — components carry no margins of their own."
31
+ },
32
+ "justifyContent": {
33
+ "type": "string",
34
+ "enum": [
35
+ "start",
36
+ "center",
37
+ "end",
38
+ "space-between",
39
+ "space-around",
40
+ "space-evenly",
41
+ "stretch"
42
+ ],
43
+ "default": "start",
44
+ "description": "How the leftover space along the direction is shared out. `space-between` pushes the first and last child to the ends."
45
+ },
46
+ "alignItems": {
47
+ "type": "string",
48
+ "enum": ["start", "center", "end", "stretch", "baseline"],
49
+ "default": "stretch",
50
+ "description": "Where the children sit across the direction."
51
+ },
52
+ "wrap": {
53
+ "type": "boolean",
54
+ "default": false,
55
+ "description": "Lets the children fall onto another line when they do not fit. Set it on a row of chips or of cards; leave it off on a row of two buttons."
56
+ }
57
+ },
58
+ "required": ["component", "children"]
59
+ },
60
+ "Card": {
61
+ "type": "object",
62
+ "description": "A sheet with a heading on it. Use it to group things that belong together and to give them a name. It holds exactly one child, so put a `Flex` inside it when there is more than one thing to show.",
63
+ "properties": {
64
+ "component": {
65
+ "const": "Card"
66
+ },
67
+ "child": {
68
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Child",
69
+ "description": "The single component inside the card, by ID. Wrap several in a `Flex` and pass that."
70
+ },
71
+ "title": {
72
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
73
+ "description": "The heading. A card with no title is usually a `Flex` with a border and should be one."
74
+ },
75
+ "subtitle": {
76
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
77
+ "description": "One line under the title."
78
+ },
79
+ "variant": {
80
+ "type": "string",
81
+ "enum": ["solid", "outline", "text"],
82
+ "default": "outline",
83
+ "description": "The weight of the sheet. `outline` is a hairline, `solid` a filled panel, `text` no sheet at all."
84
+ },
85
+ "size": {
86
+ "type": "string",
87
+ "enum": ["xs", "sm", "md", "lg", "xl"],
88
+ "default": "md",
89
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
90
+ },
91
+ "color": {
92
+ "type": "string",
93
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
94
+ "default": "primary",
95
+ "description": "The family the edge and the focus ring take. The sheet itself is never dyed: a card holds other people's content, and tinting the paper under it puts every colour on that content on a background nobody chose."
96
+ },
97
+ "density": {
98
+ "type": "string",
99
+ "enum": ["default", "compact"],
100
+ "default": "default",
101
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
102
+ },
103
+ "elevation": {
104
+ "type": "integer",
105
+ "enum": [0, 1, 2, 3],
106
+ "default": 0,
107
+ "description": "How far it sits off the page, as a drop shadow. `0` means no shadow at all, and is right for almost everything: the surface already has an edge. Raise it only for something that genuinely floats over the content around it."
108
+ }
109
+ },
110
+ "required": ["component"]
111
+ },
112
+ "Divider": {
113
+ "type": "object",
114
+ "description": "A rule between two sections, with an optional word set into it. Reach for it only when the space a `Flex` already gives is not enough to separate two things.",
115
+ "properties": {
116
+ "component": {
117
+ "const": "Divider"
118
+ },
119
+ "label": {
120
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
121
+ "description": "A word set into the line — \"or\", \"Today\"."
122
+ },
123
+ "orientation": {
124
+ "type": "string",
125
+ "enum": ["horizontal", "vertical"],
126
+ "default": "horizontal",
127
+ "description": "Which way the rule runs."
128
+ },
129
+ "size": {
130
+ "type": "string",
131
+ "enum": ["xs", "sm", "md", "lg", "xl"],
132
+ "default": "md",
133
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
134
+ }
135
+ },
136
+ "required": ["component"]
137
+ },
138
+ "Typography": {
139
+ "type": "object",
140
+ "description": "Text. Every word a reader sees goes through this: there is no other component that draws a string.",
141
+ "properties": {
142
+ "component": {
143
+ "const": "Typography"
144
+ },
145
+ "text": {
146
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
147
+ "description": "What it says."
148
+ },
149
+ "level": {
150
+ "type": "string",
151
+ "enum": ["h1", "h2", "h3", "h4", "h5", "h6", "body", "lead", "caption", "overline"],
152
+ "default": "body",
153
+ "description": "What the text *is*, not how big it should be. `h1`…`h6` are headings and are drawn as real heading elements, so use them in order and do not pick one for its size; `lead` is the opening paragraph, `caption` a note under something, `overline` a small label above a figure."
154
+ },
155
+ "weight": {
156
+ "type": "string",
157
+ "enum": ["regular", "medium", "semibold", "bold"],
158
+ "default": "regular",
159
+ "description": "How heavy it is. A heading is already heavier than body text, so this is for the rare line that has to stand out inside one weight."
160
+ },
161
+ "align": {
162
+ "type": "string",
163
+ "enum": ["start", "center", "end", "justify"],
164
+ "default": "start",
165
+ "description": "Where the text sits in the width it has."
166
+ },
167
+ "color": {
168
+ "type": "string",
169
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
170
+ "default": "primary",
171
+ "description": "A semantic family, and it is deliberately not set by default: text in a paragraph is the paragraph's colour. Set it only when the colour *means* something — a figure that is over budget."
172
+ },
173
+ "lines": {
174
+ "type": "integer",
175
+ "minimum": 1,
176
+ "description": "Cuts the text off after this many lines with an ellipsis. Do not put it on anything a reader has to read."
177
+ }
178
+ },
179
+ "required": ["component", "text"]
180
+ },
181
+ "Image": {
182
+ "type": "object",
183
+ "description": "A picture. It reserves its space before the file arrives, so nothing on the page moves when it lands.",
184
+ "properties": {
185
+ "component": {
186
+ "const": "Image"
187
+ },
188
+ "src": {
189
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
190
+ "description": "Where the picture is."
191
+ },
192
+ "alt": {
193
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
194
+ "description": "What the picture says for a reader who cannot see it. Write the meaning, not the file name; an empty string is the right answer for a picture that is pure decoration."
195
+ },
196
+ "ratio": {
197
+ "type": "number",
198
+ "description": "The shape of the box, as width over height: `1` is a square, `1.7777` is 16:9. Give it one whenever you know it — it is what stops the page jumping when the picture loads."
199
+ },
200
+ "fit": {
201
+ "type": "string",
202
+ "enum": ["cover", "contain", "fill", "none", "scale-down"],
203
+ "default": "cover",
204
+ "description": "What the picture does inside that box. `cover` crops to fill it and `contain` fits the whole picture inside it."
205
+ },
206
+ "rounded": {
207
+ "type": "string",
208
+ "enum": ["xs", "sm", "md", "lg", "xl"],
209
+ "description": "Rounds the corners by one step of the radius ladder."
210
+ }
211
+ },
212
+ "required": ["component", "src", "alt"]
213
+ },
214
+ "Chip": {
215
+ "type": "object",
216
+ "description": "A short label on a small surface: a tag, a status, a filter that has been applied. One or two words — anything longer is `Typography`.",
217
+ "properties": {
218
+ "component": {
219
+ "const": "Chip"
220
+ },
221
+ "text": {
222
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
223
+ "description": "The label."
224
+ },
225
+ "variant": {
226
+ "type": "string",
227
+ "enum": ["solid", "outline", "text"],
228
+ "default": "outline",
229
+ "description": "The weight of the surface."
230
+ },
231
+ "size": {
232
+ "type": "string",
233
+ "enum": ["xs", "sm", "md", "lg", "xl"],
234
+ "default": "sm",
235
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
236
+ },
237
+ "color": {
238
+ "type": "string",
239
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
240
+ "default": "primary",
241
+ "description": "The family. It is the one thing a chip says beyond its word, so let it mean something: `success` for a state that is good, `danger` for one that is not."
242
+ },
243
+ "count": {
244
+ "type": "number",
245
+ "description": "A number set after the label, for a chip that stands for a group."
246
+ },
247
+ "selected": {
248
+ "type": "boolean",
249
+ "default": false,
250
+ "description": "Draws it as chosen. For a row of filters where some are on."
251
+ }
252
+ },
253
+ "required": ["component", "text"]
254
+ },
255
+ "Avatar": {
256
+ "type": "object",
257
+ "description": "The mark that stands for a person or an organisation. It falls back to the initials of `name` when there is no picture, so `name` is worth giving even when `src` is.",
258
+ "properties": {
259
+ "component": {
260
+ "const": "Avatar"
261
+ },
262
+ "src": {
263
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
264
+ "description": "The photograph."
265
+ },
266
+ "name": {
267
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
268
+ "description": "Whose it is. It becomes the accessible name, and its initials are what is drawn when there is no picture."
269
+ },
270
+ "shape": {
271
+ "type": "string",
272
+ "enum": ["circle", "square"],
273
+ "default": "circle",
274
+ "description": "A circle for a person, a square for an organisation or a thing."
275
+ },
276
+ "size": {
277
+ "type": "string",
278
+ "enum": ["xs", "sm", "md", "lg", "xl"],
279
+ "default": "md",
280
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
281
+ },
282
+ "color": {
283
+ "type": "string",
284
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
285
+ "default": "primary",
286
+ "description": "The family behind the initials, when they are what is drawn."
287
+ }
288
+ },
289
+ "required": ["component"]
290
+ },
291
+ "Statistic": {
292
+ "type": "object",
293
+ "description": "One figure with its name over it, and optionally how it has moved. The right component for a number a reader is meant to take in at a glance; a number inside a sentence is `Typography`.",
294
+ "properties": {
295
+ "component": {
296
+ "const": "Statistic"
297
+ },
298
+ "label": {
299
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
300
+ "description": "What the figure is."
301
+ },
302
+ "value": {
303
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
304
+ "description": "The figure itself."
305
+ },
306
+ "unit": {
307
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
308
+ "description": "What it is measured in, set after the value in smaller type."
309
+ },
310
+ "caption": {
311
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
312
+ "description": "A line under the figure — the period it covers, where it came from."
313
+ },
314
+ "previousValue": {
315
+ "type": "number",
316
+ "description": "What it was before. Giving it is what draws the delta; without it there is nothing to compare against."
317
+ },
318
+ "delta": {
319
+ "type": "string",
320
+ "enum": ["percent", "absolute", "both", "none"],
321
+ "default": "percent",
322
+ "description": "How the change is written."
323
+ },
324
+ "betterWhen": {
325
+ "type": "string",
326
+ "enum": ["up", "down"],
327
+ "default": "up",
328
+ "description": "Which direction is good news, and therefore which colour the delta takes. Set it to `down` for anything that should be falling — failures, latency, cost — or a drop will be drawn in red."
329
+ },
330
+ "size": {
331
+ "type": "string",
332
+ "enum": ["xs", "sm", "md", "lg", "xl"],
333
+ "default": "md",
334
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
335
+ },
336
+ "align": {
337
+ "type": "string",
338
+ "enum": ["start", "center", "end"],
339
+ "default": "start",
340
+ "description": "Where the block sits in the width it has."
341
+ }
342
+ },
343
+ "required": ["component", "value"]
344
+ },
345
+ "DataList": {
346
+ "type": "object",
347
+ "description": "A list of label-and-value pairs: the details of one thing, in a column, with the values lined up. Use it instead of writing \"Status: open\" as a sentence.",
348
+ "properties": {
349
+ "component": {
350
+ "const": "DataList"
351
+ },
352
+ "items": {
353
+ "type": "array",
354
+ "description": "The rows, in the order they are read.",
355
+ "items": {
356
+ "type": "object",
357
+ "properties": {
358
+ "label": {
359
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
360
+ "description": "What the value is called."
361
+ },
362
+ "value": {
363
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
364
+ "description": "The value."
365
+ }
366
+ },
367
+ "required": ["label", "value"],
368
+ "additionalProperties": false
369
+ }
370
+ },
371
+ "orientation": {
372
+ "type": "string",
373
+ "enum": ["horizontal", "vertical"],
374
+ "default": "horizontal",
375
+ "description": "`horizontal` puts the label beside the value, which is what a details panel wants; `vertical` puts it above, for a narrow column or for values long enough that a label beside them would leave the row mostly empty."
376
+ },
377
+ "dividers": {
378
+ "type": "boolean",
379
+ "default": false,
380
+ "description": "Draws a hairline between the rows."
381
+ },
382
+ "size": {
383
+ "type": "string",
384
+ "enum": ["xs", "sm", "md", "lg", "xl"],
385
+ "default": "md",
386
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
387
+ },
388
+ "density": {
389
+ "type": "string",
390
+ "enum": ["default", "compact"],
391
+ "default": "default",
392
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
393
+ }
394
+ },
395
+ "required": ["component", "items"]
396
+ },
397
+ "Alert": {
398
+ "type": "object",
399
+ "description": "A message about something that happened, set into the page it is about. Not a popup and not a toast: it sits where the thing it is about is.",
400
+ "properties": {
401
+ "component": {
402
+ "const": "Alert"
403
+ },
404
+ "child": {
405
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Child",
406
+ "description": "The body, by ID. Usually a `Typography`."
407
+ },
408
+ "title": {
409
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
410
+ "description": "The headline. With it the alert is a heading and the detail under it; without it the body is the whole alert."
411
+ },
412
+ "color": {
413
+ "type": "string",
414
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
415
+ "default": "info",
416
+ "description": "Which kind of message it is, and the one prop here that carries meaning. `info` is a note, `success` something that went right, `warning` something to look at before it goes wrong, `danger` something that failed. The shape of the mark changes with it too, so the message is not carried by colour alone."
417
+ },
418
+ "variant": {
419
+ "type": "string",
420
+ "enum": ["solid", "outline", "text"],
421
+ "default": "outline",
422
+ "description": "The weight of the surface. `text` draws no box, which is right for an alert set among form fields."
423
+ },
424
+ "size": {
425
+ "type": "string",
426
+ "enum": ["xs", "sm", "md", "lg", "xl"],
427
+ "default": "md",
428
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
429
+ },
430
+ "density": {
431
+ "type": "string",
432
+ "enum": ["default", "compact"],
433
+ "default": "default",
434
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
435
+ }
436
+ },
437
+ "required": ["component"]
438
+ },
439
+ "Button": {
440
+ "type": "object",
441
+ "description": "A control that runs something. Use it for an action, never for navigation between pages and never as a way of making text pressable.",
442
+ "allOf": [
443
+ {
444
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
445
+ },
446
+ {
447
+ "type": "object",
448
+ "properties": {
449
+ "component": {
450
+ "const": "Button"
451
+ },
452
+ "text": {
453
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
454
+ "description": "What the button does, as a verb: \"Save\", \"Send the invite\". Not \"OK\"."
455
+ },
456
+ "action": {
457
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Action"
458
+ },
459
+ "variant": {
460
+ "type": "string",
461
+ "enum": ["solid", "outline", "text"],
462
+ "default": "solid",
463
+ "description": "How loud it is. There is **one** `solid` button in a view — the thing the view is for — and everything else is `outline` or `text`. Three filled buttons in a row is three buttons with no answer."
464
+ },
465
+ "size": {
466
+ "type": "string",
467
+ "enum": ["xs", "sm", "md", "lg", "xl"],
468
+ "default": "md",
469
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
470
+ },
471
+ "color": {
472
+ "type": "string",
473
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
474
+ "default": "primary",
475
+ "description": "The family. Use `danger` for something that destroys, and leave the rest alone: a button is not coloured for variety."
476
+ },
477
+ "density": {
478
+ "type": "string",
479
+ "enum": ["default", "compact"],
480
+ "default": "default",
481
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
482
+ },
483
+ "elevation": {
484
+ "type": "integer",
485
+ "enum": [0, 1, 2, 3],
486
+ "default": 0,
487
+ "description": "How far it sits off the page, as a drop shadow. `0` means no shadow at all, and is right for almost everything: the surface already has an edge. Raise it only for something that genuinely floats over the content around it."
488
+ },
489
+ "loading": {
490
+ "type": "boolean",
491
+ "default": false,
492
+ "description": "Shows a turning ring and stops the button running again. For the moment between a press and its answer."
493
+ },
494
+ "disabled": {
495
+ "type": "boolean",
496
+ "default": false,
497
+ "description": "Unavailable. Say why somewhere the reader can see, or a disabled button is a dead end."
498
+ },
499
+ "fullWidth": {
500
+ "type": "boolean",
501
+ "default": false,
502
+ "description": "Stretches it to the width it is given."
503
+ }
504
+ },
505
+ "required": ["component", "text", "action"]
506
+ }
507
+ ]
508
+ },
509
+ "TextField": {
510
+ "type": "object",
511
+ "description": "A field a reader types into. The label, the helper line and the error message are all part of it — do not draw any of them as separate components.",
512
+ "allOf": [
513
+ {
514
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
515
+ },
516
+ {
517
+ "type": "object",
518
+ "properties": {
519
+ "component": {
520
+ "const": "TextField"
521
+ },
522
+ "label": {
523
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
524
+ "description": "What the field is asking for. Always give one: a placeholder is not a label, because it goes away as soon as anything is typed."
525
+ },
526
+ "value": {
527
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
528
+ "description": "What is in it."
529
+ },
530
+ "placeholder": {
531
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
532
+ "description": "An example of what to type, shown while it is empty."
533
+ },
534
+ "description": {
535
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
536
+ "description": "A helper line under the field — the format, the limit, why it is being asked."
537
+ },
538
+ "multiline": {
539
+ "type": "boolean",
540
+ "default": false,
541
+ "description": "Makes it a box rather than a line. For a sentence or more."
542
+ },
543
+ "rows": {
544
+ "type": "integer",
545
+ "minimum": 1,
546
+ "default": 3,
547
+ "description": "How tall a multiline field starts."
548
+ },
549
+ "variant": {
550
+ "type": "string",
551
+ "enum": ["solid", "outline", "text"],
552
+ "default": "outline",
553
+ "description": "The weight of the shell."
554
+ },
555
+ "size": {
556
+ "type": "string",
557
+ "enum": ["xs", "sm", "md", "lg", "xl"],
558
+ "default": "md",
559
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
560
+ },
561
+ "color": {
562
+ "type": "string",
563
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
564
+ "default": "primary",
565
+ "description": "The family the edge, the ring and the caret take."
566
+ },
567
+ "density": {
568
+ "type": "string",
569
+ "enum": ["default", "compact"],
570
+ "default": "default",
571
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
572
+ },
573
+ "required": {
574
+ "type": "boolean",
575
+ "default": false,
576
+ "description": "The field has to be filled in."
577
+ },
578
+ "disabled": {
579
+ "type": "boolean",
580
+ "default": false,
581
+ "description": "Unavailable."
582
+ },
583
+ "readOnly": {
584
+ "type": "boolean",
585
+ "default": false,
586
+ "description": "Shown but not editable. Different from `disabled`: the value still matters and can still be copied."
587
+ },
588
+ "fullWidth": {
589
+ "type": "boolean",
590
+ "default": false,
591
+ "description": "Stretches it to the width it is given."
592
+ }
593
+ },
594
+ "required": ["component", "label"]
595
+ }
596
+ ]
597
+ },
598
+ "NumberField": {
599
+ "type": "object",
600
+ "description": "A field that holds a number, with steppers and a format. Use it rather than a `TextField` whenever the answer is a quantity: it clamps, it steps, and it writes the number in the reader's own language.",
601
+ "allOf": [
602
+ {
603
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
604
+ },
605
+ {
606
+ "type": "object",
607
+ "properties": {
608
+ "component": {
609
+ "const": "NumberField"
610
+ },
611
+ "label": {
612
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
613
+ "description": "What the number is."
614
+ },
615
+ "value": {
616
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber",
617
+ "description": "The number."
618
+ },
619
+ "description": {
620
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
621
+ "description": "A helper line under the field."
622
+ },
623
+ "min": {
624
+ "type": "number",
625
+ "description": "The smallest it may be."
626
+ },
627
+ "max": {
628
+ "type": "number",
629
+ "description": "And the largest."
630
+ },
631
+ "step": {
632
+ "type": "number",
633
+ "default": 1,
634
+ "description": "How much a stepper moves it."
635
+ },
636
+ "variant": {
637
+ "type": "string",
638
+ "enum": ["solid", "outline", "text"],
639
+ "default": "outline",
640
+ "description": "The weight of the shell."
641
+ },
642
+ "size": {
643
+ "type": "string",
644
+ "enum": ["xs", "sm", "md", "lg", "xl"],
645
+ "default": "md",
646
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
647
+ },
648
+ "color": {
649
+ "type": "string",
650
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
651
+ "default": "primary",
652
+ "description": "The family the edge, the ring and the caret take."
653
+ },
654
+ "density": {
655
+ "type": "string",
656
+ "enum": ["default", "compact"],
657
+ "default": "default",
658
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
659
+ },
660
+ "required": {
661
+ "type": "boolean",
662
+ "default": false,
663
+ "description": "The field has to be filled in."
664
+ },
665
+ "disabled": {
666
+ "type": "boolean",
667
+ "default": false,
668
+ "description": "Unavailable."
669
+ },
670
+ "readOnly": {
671
+ "type": "boolean",
672
+ "default": false,
673
+ "description": "Shown but not editable."
674
+ }
675
+ },
676
+ "required": ["component", "label"]
677
+ }
678
+ ]
679
+ },
680
+ "Checkbox": {
681
+ "type": "object",
682
+ "description": "One yes-or-no answer, or one member of a set that can have several. Use it when the answer is submitted with a form; use a `Switch` when it takes effect the moment it is pressed.",
683
+ "allOf": [
684
+ {
685
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
686
+ },
687
+ {
688
+ "type": "object",
689
+ "properties": {
690
+ "component": {
691
+ "const": "Checkbox"
692
+ },
693
+ "label": {
694
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
695
+ "description": "What is being agreed to. Write it so that ticked means yes."
696
+ },
697
+ "checked": {
698
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean",
699
+ "description": "Whether it is ticked."
700
+ },
701
+ "description": {
702
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
703
+ "description": "A helper line under the label."
704
+ },
705
+ "size": {
706
+ "type": "string",
707
+ "enum": ["xs", "sm", "md", "lg", "xl"],
708
+ "default": "md",
709
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
710
+ },
711
+ "color": {
712
+ "type": "string",
713
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
714
+ "default": "primary",
715
+ "description": "The family the tick takes."
716
+ },
717
+ "required": {
718
+ "type": "boolean",
719
+ "default": false,
720
+ "description": "It has to be ticked."
721
+ },
722
+ "disabled": {
723
+ "type": "boolean",
724
+ "default": false,
725
+ "description": "Unavailable."
726
+ }
727
+ },
728
+ "required": ["component", "label"]
729
+ }
730
+ ]
731
+ },
732
+ "Switch": {
733
+ "type": "object",
734
+ "description": "An on-and-off that takes effect the moment it is pressed. The difference from a `Checkbox` is time, not shape: nothing is submitted, so there is no Save to press afterwards.",
735
+ "properties": {
736
+ "component": {
737
+ "const": "Switch"
738
+ },
739
+ "label": {
740
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
741
+ "description": "What is being turned on. Write it as the thing, not as a question."
742
+ },
743
+ "checked": {
744
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean",
745
+ "description": "Whether it is on."
746
+ },
747
+ "description": {
748
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
749
+ "description": "A helper line under the label."
750
+ },
751
+ "size": {
752
+ "type": "string",
753
+ "enum": ["xs", "sm", "md", "lg", "xl"],
754
+ "default": "md",
755
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
756
+ },
757
+ "color": {
758
+ "type": "string",
759
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
760
+ "default": "primary",
761
+ "description": "The family the track takes when it is on."
762
+ },
763
+ "disabled": {
764
+ "type": "boolean",
765
+ "default": false,
766
+ "description": "Unavailable."
767
+ }
768
+ },
769
+ "required": ["component", "label"]
770
+ },
771
+ "RadioGroup": {
772
+ "type": "object",
773
+ "description": "A set of options where exactly one is chosen and all of them are worth reading. Past about five, use a `Select` instead — a list of fifteen radios is a list.",
774
+ "allOf": [
775
+ {
776
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
777
+ },
778
+ {
779
+ "type": "object",
780
+ "properties": {
781
+ "component": {
782
+ "const": "RadioGroup"
783
+ },
784
+ "label": {
785
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
786
+ "description": "What is being chosen."
787
+ },
788
+ "value": {
789
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
790
+ "description": "Which option is taken, by its `value`."
791
+ },
792
+ "options": {
793
+ "type": "array",
794
+ "description": "The options, in the order they are read.",
795
+ "items": {
796
+ "type": "object",
797
+ "properties": {
798
+ "label": {
799
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
800
+ "description": "What this option says."
801
+ },
802
+ "value": {
803
+ "type": "string",
804
+ "description": "What it is worth."
805
+ },
806
+ "description": {
807
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
808
+ "description": "A line under it, for an option that needs explaining."
809
+ },
810
+ "disabled": {
811
+ "type": "boolean",
812
+ "default": false,
813
+ "description": "Offered but not available."
814
+ }
815
+ },
816
+ "required": ["label", "value"],
817
+ "additionalProperties": false
818
+ }
819
+ },
820
+ "description": {
821
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
822
+ "description": "A helper line under the set."
823
+ },
824
+ "orientation": {
825
+ "type": "string",
826
+ "enum": ["horizontal", "vertical"],
827
+ "default": "vertical",
828
+ "description": "Which way the options run. A column is nearly always right; a row only works while every label is one word."
829
+ },
830
+ "size": {
831
+ "type": "string",
832
+ "enum": ["xs", "sm", "md", "lg", "xl"],
833
+ "default": "md",
834
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
835
+ },
836
+ "color": {
837
+ "type": "string",
838
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
839
+ "default": "primary",
840
+ "description": "The family the chosen dot takes."
841
+ },
842
+ "required": {
843
+ "type": "boolean",
844
+ "default": false,
845
+ "description": "One has to be chosen."
846
+ },
847
+ "disabled": {
848
+ "type": "boolean",
849
+ "default": false,
850
+ "description": "Unavailable."
851
+ }
852
+ },
853
+ "required": ["component", "label", "options"]
854
+ }
855
+ ]
856
+ },
857
+ "Select": {
858
+ "type": "object",
859
+ "description": "One value chosen from a list that is folded away until it is opened. Use it when there are more options than a reader wants to read, or when the choice is a detail rather than the point of the screen.",
860
+ "allOf": [
861
+ {
862
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Checkable"
863
+ },
864
+ {
865
+ "type": "object",
866
+ "properties": {
867
+ "component": {
868
+ "const": "Select"
869
+ },
870
+ "label": {
871
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
872
+ "description": "What is being chosen."
873
+ },
874
+ "value": {
875
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
876
+ "description": "Which option is taken, by its `value`."
877
+ },
878
+ "placeholder": {
879
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
880
+ "description": "What the trigger says while nothing is chosen."
881
+ },
882
+ "options": {
883
+ "type": "array",
884
+ "description": "The options, in the order they are listed.",
885
+ "items": {
886
+ "type": "object",
887
+ "properties": {
888
+ "label": {
889
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
890
+ "description": "What this option says. Left out, the value is shown."
891
+ },
892
+ "value": {
893
+ "type": "string",
894
+ "description": "What it is worth."
895
+ },
896
+ "group": {
897
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
898
+ "description": "A heading over this option and the ones next to it that name the same group. A group is a run of adjacent options, so the order of the array is the order of the list."
899
+ },
900
+ "disabled": {
901
+ "type": "boolean",
902
+ "default": false,
903
+ "description": "Listed but not available."
904
+ }
905
+ },
906
+ "required": ["value"],
907
+ "additionalProperties": false
908
+ }
909
+ },
910
+ "description": {
911
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
912
+ "description": "A helper line under the field."
913
+ },
914
+ "variant": {
915
+ "type": "string",
916
+ "enum": ["solid", "outline", "text"],
917
+ "default": "outline",
918
+ "description": "The weight of the trigger, which is a field's shell."
919
+ },
920
+ "size": {
921
+ "type": "string",
922
+ "enum": ["xs", "sm", "md", "lg", "xl"],
923
+ "default": "md",
924
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
925
+ },
926
+ "color": {
927
+ "type": "string",
928
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
929
+ "default": "primary",
930
+ "description": "The family the edge and the ring take."
931
+ },
932
+ "density": {
933
+ "type": "string",
934
+ "enum": ["default", "compact"],
935
+ "default": "default",
936
+ "description": "How tightly it packs its content. Padding only — never a height and never the type scale, so a compact control still lines up with a default one beside it."
937
+ },
938
+ "required": {
939
+ "type": "boolean",
940
+ "default": false,
941
+ "description": "Something has to be chosen."
942
+ },
943
+ "disabled": {
944
+ "type": "boolean",
945
+ "default": false,
946
+ "description": "Unavailable."
947
+ },
948
+ "fullWidth": {
949
+ "type": "boolean",
950
+ "default": false,
951
+ "description": "Stretches it to the width it is given."
952
+ }
953
+ },
954
+ "required": ["component", "label", "options"]
955
+ }
956
+ ]
957
+ },
958
+ "Slider": {
959
+ "type": "object",
960
+ "description": "A number chosen along a range, where roughly right is good enough and the ends mean something. When the exact figure matters, use a `NumberField`.",
961
+ "properties": {
962
+ "component": {
963
+ "const": "Slider"
964
+ },
965
+ "label": {
966
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
967
+ "description": "What is being set."
968
+ },
969
+ "value": {
970
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber",
971
+ "description": "Where it is."
972
+ },
973
+ "min": {
974
+ "type": "number",
975
+ "default": 0,
976
+ "description": "The bottom of the range."
977
+ },
978
+ "max": {
979
+ "type": "number",
980
+ "default": 100,
981
+ "description": "And the top."
982
+ },
983
+ "step": {
984
+ "type": "number",
985
+ "default": 1,
986
+ "description": "What it moves in."
987
+ },
988
+ "description": {
989
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
990
+ "description": "A helper line under it."
991
+ },
992
+ "size": {
993
+ "type": "string",
994
+ "enum": ["xs", "sm", "md", "lg", "xl"],
995
+ "default": "md",
996
+ "description": "How big it is. One ladder for the whole library: an `md` Button, field and Chip are the same height and line up in a row."
997
+ },
998
+ "color": {
999
+ "type": "string",
1000
+ "enum": ["primary", "secondary", "success", "warning", "danger", "info"],
1001
+ "default": "primary",
1002
+ "description": "The family the filled part of the track takes."
1003
+ },
1004
+ "disabled": {
1005
+ "type": "boolean",
1006
+ "default": false,
1007
+ "description": "Unavailable."
1008
+ }
1009
+ },
1010
+ "required": ["component", "label"]
1011
+ }
1012
+ },
1013
+ "functions": {
1014
+ "required": {
1015
+ "type": "object",
1016
+ "description": "True when the value is not empty. The check to put on every field that has to be answered.",
1017
+ "properties": {
1018
+ "call": {
1019
+ "const": "required"
1020
+ },
1021
+ "args": {
1022
+ "type": "object",
1023
+ "properties": {
1024
+ "value": {
1025
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1026
+ }
1027
+ },
1028
+ "required": ["value"],
1029
+ "unevaluatedProperties": false
1030
+ }
1031
+ },
1032
+ "required": ["call", "args"],
1033
+ "returnType": "boolean"
1034
+ },
1035
+ "length": {
1036
+ "type": "object",
1037
+ "description": "True when the value is between `min` and `max` characters long. Either bound may be left out.",
1038
+ "properties": {
1039
+ "call": {
1040
+ "const": "length"
1041
+ },
1042
+ "args": {
1043
+ "type": "object",
1044
+ "properties": {
1045
+ "value": {
1046
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1047
+ },
1048
+ "min": {
1049
+ "type": "number"
1050
+ },
1051
+ "max": {
1052
+ "type": "number"
1053
+ }
1054
+ },
1055
+ "required": ["value"],
1056
+ "unevaluatedProperties": false
1057
+ }
1058
+ },
1059
+ "required": ["call", "args"],
1060
+ "returnType": "boolean"
1061
+ },
1062
+ "regex": {
1063
+ "type": "object",
1064
+ "description": "True when the value matches the pattern. Reach for `email` before writing one of these.",
1065
+ "properties": {
1066
+ "call": {
1067
+ "const": "regex"
1068
+ },
1069
+ "args": {
1070
+ "type": "object",
1071
+ "properties": {
1072
+ "value": {
1073
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1074
+ },
1075
+ "pattern": {
1076
+ "type": "string"
1077
+ }
1078
+ },
1079
+ "required": ["value", "pattern"],
1080
+ "unevaluatedProperties": false
1081
+ }
1082
+ },
1083
+ "required": ["call", "args"],
1084
+ "returnType": "boolean"
1085
+ },
1086
+ "numeric": {
1087
+ "type": "object",
1088
+ "description": "True when the value is a number, and between `min` and `max` if either is given.",
1089
+ "properties": {
1090
+ "call": {
1091
+ "const": "numeric"
1092
+ },
1093
+ "args": {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "value": {
1097
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1098
+ },
1099
+ "min": {
1100
+ "type": "number"
1101
+ },
1102
+ "max": {
1103
+ "type": "number"
1104
+ }
1105
+ },
1106
+ "required": ["value"],
1107
+ "unevaluatedProperties": false
1108
+ }
1109
+ },
1110
+ "required": ["call", "args"],
1111
+ "returnType": "boolean"
1112
+ },
1113
+ "email": {
1114
+ "type": "object",
1115
+ "description": "True when the value looks like an email address.",
1116
+ "properties": {
1117
+ "call": {
1118
+ "const": "email"
1119
+ },
1120
+ "args": {
1121
+ "type": "object",
1122
+ "properties": {
1123
+ "value": {
1124
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1125
+ }
1126
+ },
1127
+ "required": ["value"],
1128
+ "unevaluatedProperties": false
1129
+ }
1130
+ },
1131
+ "required": ["call", "args"],
1132
+ "returnType": "boolean"
1133
+ },
1134
+ "formatString": {
1135
+ "type": "object",
1136
+ "description": "Fills the `${…}` placeholders in the string with what they point at in the data model. It is the only way to build a sentence out of a value: there is no string concatenation anywhere in this catalog.",
1137
+ "properties": {
1138
+ "call": {
1139
+ "const": "formatString"
1140
+ },
1141
+ "args": {
1142
+ "type": "object",
1143
+ "properties": {
1144
+ "value": {
1145
+ "type": "string"
1146
+ }
1147
+ },
1148
+ "required": ["value"],
1149
+ "unevaluatedProperties": false
1150
+ }
1151
+ },
1152
+ "required": ["call", "args"],
1153
+ "returnType": "string"
1154
+ },
1155
+ "formatNumber": {
1156
+ "type": "object",
1157
+ "description": "Writes a number in the reader's own language, with the digit grouping that language uses.",
1158
+ "properties": {
1159
+ "call": {
1160
+ "const": "formatNumber"
1161
+ },
1162
+ "args": {
1163
+ "type": "object",
1164
+ "properties": {
1165
+ "value": {
1166
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber"
1167
+ },
1168
+ "minimumFractionDigits": {
1169
+ "type": "number"
1170
+ },
1171
+ "maximumFractionDigits": {
1172
+ "type": "number"
1173
+ }
1174
+ },
1175
+ "required": ["value"],
1176
+ "unevaluatedProperties": false
1177
+ }
1178
+ },
1179
+ "required": ["call", "args"],
1180
+ "returnType": "string"
1181
+ },
1182
+ "formatCurrency": {
1183
+ "type": "object",
1184
+ "description": "Writes an amount of money, with the symbol and the placement that language uses.",
1185
+ "properties": {
1186
+ "call": {
1187
+ "const": "formatCurrency"
1188
+ },
1189
+ "args": {
1190
+ "type": "object",
1191
+ "properties": {
1192
+ "value": {
1193
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber"
1194
+ },
1195
+ "currency": {
1196
+ "type": "string",
1197
+ "description": "An ISO 4217 code, such as `USD` or `KRW`."
1198
+ }
1199
+ },
1200
+ "required": ["value", "currency"],
1201
+ "unevaluatedProperties": false
1202
+ }
1203
+ },
1204
+ "required": ["call", "args"],
1205
+ "returnType": "string"
1206
+ },
1207
+ "formatDate": {
1208
+ "type": "object",
1209
+ "description": "Writes a date in the reader's own language. Never assemble one out of numbers: the order of the parts is exactly what differs between languages.",
1210
+ "properties": {
1211
+ "call": {
1212
+ "const": "formatDate"
1213
+ },
1214
+ "args": {
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "value": {
1218
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
1219
+ "description": "An ISO 8601 date or date-time."
1220
+ },
1221
+ "dateStyle": {
1222
+ "type": "string",
1223
+ "enum": ["full", "long", "medium", "short"]
1224
+ },
1225
+ "timeStyle": {
1226
+ "type": "string",
1227
+ "enum": ["full", "long", "medium", "short"]
1228
+ }
1229
+ },
1230
+ "required": ["value"],
1231
+ "unevaluatedProperties": false
1232
+ }
1233
+ },
1234
+ "required": ["call", "args"],
1235
+ "returnType": "string"
1236
+ },
1237
+ "pluralize": {
1238
+ "type": "object",
1239
+ "description": "Picks the wording that goes with a count. English has two forms and other languages have up to six, which is why this is a function rather than a ternary.",
1240
+ "properties": {
1241
+ "call": {
1242
+ "const": "pluralize"
1243
+ },
1244
+ "args": {
1245
+ "type": "object",
1246
+ "properties": {
1247
+ "count": {
1248
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber"
1249
+ },
1250
+ "one": {
1251
+ "type": "string"
1252
+ },
1253
+ "other": {
1254
+ "type": "string"
1255
+ }
1256
+ },
1257
+ "required": ["count", "one", "other"],
1258
+ "unevaluatedProperties": false
1259
+ }
1260
+ },
1261
+ "required": ["call", "args"],
1262
+ "returnType": "string"
1263
+ },
1264
+ "openUrl": {
1265
+ "type": "object",
1266
+ "description": "Opens an address. It is an action rather than a value, and it is the renderer that decides whether a new tab is involved.",
1267
+ "properties": {
1268
+ "call": {
1269
+ "const": "openUrl"
1270
+ },
1271
+ "args": {
1272
+ "type": "object",
1273
+ "properties": {
1274
+ "url": {
1275
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
1276
+ }
1277
+ },
1278
+ "required": ["url"],
1279
+ "unevaluatedProperties": false
1280
+ }
1281
+ },
1282
+ "required": ["call", "args"],
1283
+ "returnType": "void",
1284
+ "allowedCallers": "rendererOnly",
1285
+ "requiresUserActivation": true
1286
+ },
1287
+ "and": {
1288
+ "type": "object",
1289
+ "description": "True when every one of them is.",
1290
+ "properties": {
1291
+ "call": {
1292
+ "const": "and"
1293
+ },
1294
+ "args": {
1295
+ "type": "object",
1296
+ "properties": {
1297
+ "values": {
1298
+ "type": "array",
1299
+ "items": {
1300
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean"
1301
+ }
1302
+ }
1303
+ },
1304
+ "required": ["values"],
1305
+ "unevaluatedProperties": false
1306
+ }
1307
+ },
1308
+ "required": ["call", "args"],
1309
+ "returnType": "boolean"
1310
+ },
1311
+ "or": {
1312
+ "type": "object",
1313
+ "description": "True when any one of them is.",
1314
+ "properties": {
1315
+ "call": {
1316
+ "const": "or"
1317
+ },
1318
+ "args": {
1319
+ "type": "object",
1320
+ "properties": {
1321
+ "values": {
1322
+ "type": "array",
1323
+ "items": {
1324
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean"
1325
+ }
1326
+ }
1327
+ },
1328
+ "required": ["values"],
1329
+ "unevaluatedProperties": false
1330
+ }
1331
+ },
1332
+ "required": ["call", "args"],
1333
+ "returnType": "boolean"
1334
+ },
1335
+ "not": {
1336
+ "type": "object",
1337
+ "description": "The opposite.",
1338
+ "properties": {
1339
+ "call": {
1340
+ "const": "not"
1341
+ },
1342
+ "args": {
1343
+ "type": "object",
1344
+ "properties": {
1345
+ "value": {
1346
+ "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean"
1347
+ }
1348
+ },
1349
+ "required": ["value"],
1350
+ "unevaluatedProperties": false
1351
+ }
1352
+ },
1353
+ "required": ["call", "args"],
1354
+ "returnType": "boolean"
1355
+ }
1356
+ },
1357
+ "$defs": {
1358
+ "anyComponent": {
1359
+ "oneOf": [
1360
+ {
1361
+ "$ref": "#/components/Flex"
1362
+ },
1363
+ {
1364
+ "$ref": "#/components/Card"
1365
+ },
1366
+ {
1367
+ "$ref": "#/components/Divider"
1368
+ },
1369
+ {
1370
+ "$ref": "#/components/Typography"
1371
+ },
1372
+ {
1373
+ "$ref": "#/components/Image"
1374
+ },
1375
+ {
1376
+ "$ref": "#/components/Chip"
1377
+ },
1378
+ {
1379
+ "$ref": "#/components/Avatar"
1380
+ },
1381
+ {
1382
+ "$ref": "#/components/Statistic"
1383
+ },
1384
+ {
1385
+ "$ref": "#/components/DataList"
1386
+ },
1387
+ {
1388
+ "$ref": "#/components/Alert"
1389
+ },
1390
+ {
1391
+ "$ref": "#/components/Button"
1392
+ },
1393
+ {
1394
+ "$ref": "#/components/TextField"
1395
+ },
1396
+ {
1397
+ "$ref": "#/components/NumberField"
1398
+ },
1399
+ {
1400
+ "$ref": "#/components/Checkbox"
1401
+ },
1402
+ {
1403
+ "$ref": "#/components/Switch"
1404
+ },
1405
+ {
1406
+ "$ref": "#/components/RadioGroup"
1407
+ },
1408
+ {
1409
+ "$ref": "#/components/Select"
1410
+ },
1411
+ {
1412
+ "$ref": "#/components/Slider"
1413
+ }
1414
+ ],
1415
+ "discriminator": {
1416
+ "propertyName": "component"
1417
+ }
1418
+ },
1419
+ "anyFunction": {
1420
+ "oneOf": [
1421
+ {
1422
+ "$ref": "#/functions/required"
1423
+ },
1424
+ {
1425
+ "$ref": "#/functions/length"
1426
+ },
1427
+ {
1428
+ "$ref": "#/functions/regex"
1429
+ },
1430
+ {
1431
+ "$ref": "#/functions/numeric"
1432
+ },
1433
+ {
1434
+ "$ref": "#/functions/email"
1435
+ },
1436
+ {
1437
+ "$ref": "#/functions/formatString"
1438
+ },
1439
+ {
1440
+ "$ref": "#/functions/formatNumber"
1441
+ },
1442
+ {
1443
+ "$ref": "#/functions/formatCurrency"
1444
+ },
1445
+ {
1446
+ "$ref": "#/functions/formatDate"
1447
+ },
1448
+ {
1449
+ "$ref": "#/functions/pluralize"
1450
+ },
1451
+ {
1452
+ "$ref": "#/functions/openUrl"
1453
+ },
1454
+ {
1455
+ "$ref": "#/functions/and"
1456
+ },
1457
+ {
1458
+ "$ref": "#/functions/or"
1459
+ },
1460
+ {
1461
+ "$ref": "#/functions/not"
1462
+ }
1463
+ ]
1464
+ }
1465
+ }
1466
+ }