@adia-ai/web-components 0.4.6 → 0.4.7

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 (284) hide show
  1. package/USAGE.md +29 -9
  2. package/components/accordion/accordion.d.ts +17 -0
  3. package/components/accordion/accordion.js +10 -117
  4. package/components/accordion/class.js +132 -0
  5. package/components/action-list/action-list.d.ts +15 -0
  6. package/components/action-list/action-list.js +9 -140
  7. package/components/action-list/class.js +156 -0
  8. package/components/agent-artifact/agent-artifact.d.ts +25 -0
  9. package/components/agent-artifact/agent-artifact.js +8 -181
  10. package/components/agent-artifact/class.js +200 -0
  11. package/components/agent-feedback-bar/agent-feedback-bar.d.ts +21 -0
  12. package/components/agent-feedback-bar/agent-feedback-bar.js +8 -143
  13. package/components/agent-feedback-bar/class.js +162 -0
  14. package/components/agent-questions/agent-questions.d.ts +23 -0
  15. package/components/agent-questions/agent-questions.js +8 -180
  16. package/components/agent-questions/class.js +199 -0
  17. package/components/agent-reasoning/agent-reasoning.d.ts +23 -0
  18. package/components/agent-reasoning/agent-reasoning.js +8 -494
  19. package/components/agent-reasoning/class.js +513 -0
  20. package/components/agent-suggestions/agent-suggestions.d.ts +21 -0
  21. package/components/agent-suggestions/agent-suggestions.js +8 -78
  22. package/components/agent-suggestions/class.js +97 -0
  23. package/components/agent-trace/agent-trace.d.ts +19 -0
  24. package/components/alert/alert.d.ts +29 -0
  25. package/components/alert/alert.js +8 -175
  26. package/components/alert/class.js +194 -0
  27. package/components/avatar/avatar.d.ts +27 -0
  28. package/components/avatar/avatar.js +9 -159
  29. package/components/avatar/class.js +173 -0
  30. package/components/badge/badge.d.ts +27 -0
  31. package/components/badge/badge.js +9 -75
  32. package/components/badge/class.js +93 -0
  33. package/components/block/block.d.ts +19 -0
  34. package/components/block/block.js +9 -15
  35. package/components/block/class.js +33 -0
  36. package/components/breadcrumb/breadcrumb.d.ts +23 -0
  37. package/components/breadcrumb/breadcrumb.js +8 -113
  38. package/components/breadcrumb/class.js +132 -0
  39. package/components/button/button.d.ts +34 -0
  40. package/components/button/button.js +15 -66
  41. package/components/button/class.js +80 -0
  42. package/components/calendar-picker/calendar-picker.a2ui.json +6 -1
  43. package/components/calendar-picker/calendar-picker.js +8 -332
  44. package/components/calendar-picker/calendar-picker.yaml +51 -177
  45. package/components/calendar-picker/class.js +351 -0
  46. package/components/canvas/canvas.a2ui.json +6 -1
  47. package/components/canvas/canvas.d.ts +17 -0
  48. package/components/canvas/canvas.yaml +19 -36
  49. package/components/card/card.a2ui.json +3 -0
  50. package/components/card/card.d.ts +27 -0
  51. package/components/card/card.js +9 -50
  52. package/components/card/card.yaml +171 -433
  53. package/components/card/class.js +68 -0
  54. package/components/chart/chart.d.ts +41 -0
  55. package/components/chart/chart.js +8 -2131
  56. package/components/chart/class.js +2150 -0
  57. package/components/chart-legend/chart-legend.d.ts +27 -0
  58. package/components/chart-legend/chart-legend.js +8 -197
  59. package/components/chart-legend/class.js +215 -0
  60. package/components/chat-thread/chat-thread.d.ts +17 -0
  61. package/components/chat-thread/chat-thread.js +8 -157
  62. package/components/chat-thread/class.js +176 -0
  63. package/components/check/check.js +11 -52
  64. package/components/check/class.js +68 -0
  65. package/components/code/class.js +501 -0
  66. package/components/code/code.js +8 -482
  67. package/components/col/class.js +30 -0
  68. package/components/col/col.d.ts +23 -0
  69. package/components/col/col.js +10 -13
  70. package/components/color-picker/class.js +550 -0
  71. package/components/color-picker/color-picker.js +8 -531
  72. package/components/command/class.js +364 -0
  73. package/components/command/command.a2ui.json +3 -0
  74. package/components/command/command.d.ts +19 -0
  75. package/components/command/command.js +8 -345
  76. package/components/command/command.yaml +105 -124
  77. package/components/demo-toggle/class.js +153 -0
  78. package/components/demo-toggle/demo-toggle.d.ts +23 -0
  79. package/components/demo-toggle/demo-toggle.js +8 -135
  80. package/components/description-list/class.js +86 -0
  81. package/components/description-list/description-list.d.ts +21 -0
  82. package/components/description-list/description-list.js +8 -67
  83. package/components/divider/class.js +57 -0
  84. package/components/divider/divider.d.ts +19 -0
  85. package/components/divider/divider.js +10 -40
  86. package/components/drawer/class.js +306 -0
  87. package/components/drawer/drawer.d.ts +25 -0
  88. package/components/drawer/drawer.js +8 -287
  89. package/components/embed/class.js +73 -0
  90. package/components/embed/embed.d.ts +23 -0
  91. package/components/embed/embed.js +9 -55
  92. package/components/empty-state/class.js +108 -0
  93. package/components/empty-state/empty-state.d.ts +21 -0
  94. package/components/empty-state/empty-state.js +9 -90
  95. package/components/feed/class.js +381 -0
  96. package/components/feed/feed.d.ts +19 -0
  97. package/components/feed/feed.js +9 -367
  98. package/components/field/class.js +266 -0
  99. package/components/field/field.d.ts +23 -0
  100. package/components/field/field.js +8 -247
  101. package/components/fields/class.js +106 -0
  102. package/components/fields/fields.d.ts +19 -0
  103. package/components/fields/fields.js +8 -87
  104. package/components/grid/class.js +31 -0
  105. package/components/grid/grid.d.ts +23 -0
  106. package/components/grid/grid.js +10 -14
  107. package/components/heatmap/class.js +305 -0
  108. package/components/heatmap/heatmap.d.ts +31 -0
  109. package/components/heatmap/heatmap.js +8 -286
  110. package/components/icon/class.js +54 -0
  111. package/components/icon/icon.d.ts +23 -0
  112. package/components/icon/icon.js +13 -40
  113. package/components/image/class.js +112 -0
  114. package/components/image/image.d.ts +33 -0
  115. package/components/image/image.js +9 -94
  116. package/components/input/class.js +773 -0
  117. package/components/input/input.a2ui.json +3 -0
  118. package/components/input/input.js +8 -755
  119. package/components/input/input.yaml +171 -442
  120. package/components/inspector/class.js +142 -0
  121. package/components/inspector/inspector.a2ui.json +8 -1
  122. package/components/inspector/inspector.d.ts +17 -0
  123. package/components/inspector/inspector.js +8 -124
  124. package/components/inspector/inspector.yaml +15 -30
  125. package/components/kbd/class.js +34 -0
  126. package/components/kbd/kbd.a2ui.json +3 -0
  127. package/components/kbd/kbd.d.ts +17 -0
  128. package/components/kbd/kbd.js +10 -17
  129. package/components/kbd/kbd.yaml +54 -185
  130. package/components/link/class.js +187 -0
  131. package/components/link/link.d.ts +55 -0
  132. package/components/link/link.js +8 -168
  133. package/components/list/class.js +249 -0
  134. package/components/list/list.d.ts +23 -0
  135. package/components/list/list.js +9 -231
  136. package/components/menu/class.js +332 -0
  137. package/components/menu/menu.d.ts +21 -0
  138. package/components/menu/menu.js +11 -316
  139. package/components/modal/class.js +231 -0
  140. package/components/modal/modal.a2ui.json +5 -1
  141. package/components/modal/modal.d.ts +23 -0
  142. package/components/modal/modal.js +8 -212
  143. package/components/modal/modal.yaml +19 -39
  144. package/components/nav/class.js +150 -0
  145. package/components/nav/nav.d.ts +31 -0
  146. package/components/nav/nav.js +8 -131
  147. package/components/nav-group/class.js +152 -0
  148. package/components/nav-group/nav-group.d.ts +35 -0
  149. package/components/nav-group/nav-group.js +9 -134
  150. package/components/nav-item/class.js +86 -0
  151. package/components/nav-item/nav-item.d.ts +37 -0
  152. package/components/nav-item/nav-item.js +10 -69
  153. package/components/noodles/class.js +510 -0
  154. package/components/noodles/noodles.d.ts +33 -0
  155. package/components/noodles/noodles.js +9 -493
  156. package/components/option-card/class.js +167 -0
  157. package/components/option-card/option-card.js +8 -149
  158. package/components/otp-input/class.js +180 -0
  159. package/components/otp-input/otp-input.a2ui.json +5 -1
  160. package/components/otp-input/otp-input.js +9 -162
  161. package/components/otp-input/otp-input.yaml +45 -174
  162. package/components/page/class.js +97 -0
  163. package/components/page/page.d.ts +46 -0
  164. package/components/page/page.js +8 -79
  165. package/components/pagination/class.js +195 -0
  166. package/components/pagination/pagination.d.ts +23 -0
  167. package/components/pagination/pagination.js +9 -177
  168. package/components/pane/class.js +186 -0
  169. package/components/pane/pane.a2ui.json +12 -1
  170. package/components/pane/pane.d.ts +31 -0
  171. package/components/pane/pane.js +8 -167
  172. package/components/pane/pane.yaml +57 -157
  173. package/components/pipeline-status/class.js +189 -0
  174. package/components/pipeline-status/pipeline-status.a2ui.json +7 -1
  175. package/components/pipeline-status/pipeline-status.d.ts +21 -0
  176. package/components/pipeline-status/pipeline-status.js +9 -172
  177. package/components/pipeline-status/pipeline-status.yaml +34 -72
  178. package/components/popover/class.js +194 -0
  179. package/components/popover/popover.d.ts +23 -0
  180. package/components/popover/popover.js +9 -176
  181. package/components/progress/class.js +74 -0
  182. package/components/progress/progress.a2ui.json +3 -0
  183. package/components/progress/progress.d.ts +19 -0
  184. package/components/progress/progress.js +10 -57
  185. package/components/progress/progress.yaml +124 -287
  186. package/components/progress-row/class.js +110 -0
  187. package/components/progress-row/progress-row.d.ts +23 -0
  188. package/components/progress-row/progress-row.js +8 -92
  189. package/components/radio/class.js +83 -0
  190. package/components/radio/radio.js +11 -67
  191. package/components/range/class.js +194 -0
  192. package/components/range/range.js +9 -176
  193. package/components/rating/class.js +148 -0
  194. package/components/rating/rating.js +9 -130
  195. package/components/richtext/class.js +87 -0
  196. package/components/richtext/richtext.a2ui.json +7 -1
  197. package/components/richtext/richtext.d.ts +19 -0
  198. package/components/richtext/richtext.js +8 -68
  199. package/components/richtext/richtext.yaml +30 -65
  200. package/components/row/class.js +50 -0
  201. package/components/row/row.d.ts +27 -0
  202. package/components/row/row.js +10 -33
  203. package/components/search/class.js +134 -0
  204. package/components/search/search.js +10 -117
  205. package/components/segment/class.js +62 -0
  206. package/components/segment/segment.d.ts +25 -0
  207. package/components/segment/segment.js +10 -45
  208. package/components/segmented/class.js +165 -0
  209. package/components/segmented/segmented.a2ui.json +4 -0
  210. package/components/segmented/segmented.js +10 -148
  211. package/components/segmented/segmented.yaml +41 -59
  212. package/components/select/class.js +408 -0
  213. package/components/select/select.js +15 -396
  214. package/components/skeleton/class.js +52 -0
  215. package/components/skeleton/skeleton.d.ts +23 -0
  216. package/components/skeleton/skeleton.js +8 -34
  217. package/components/slider/class.js +184 -0
  218. package/components/slider/slider.js +9 -166
  219. package/components/stack/class.js +28 -0
  220. package/components/stack/stack.d.ts +17 -0
  221. package/components/stack/stack.js +10 -11
  222. package/components/step-progress/class.js +98 -0
  223. package/components/step-progress/step-progress.d.ts +27 -0
  224. package/components/step-progress/step-progress.js +8 -79
  225. package/components/stepper/class.js +126 -0
  226. package/components/stepper/stepper.d.ts +19 -0
  227. package/components/stepper/stepper.js +9 -112
  228. package/components/stream/class.js +109 -0
  229. package/components/stream/stream.d.ts +19 -0
  230. package/components/stream/stream.js +8 -90
  231. package/components/swatch/class.js +131 -0
  232. package/components/swatch/swatch.d.ts +28 -0
  233. package/components/swatch/swatch.js +8 -112
  234. package/components/swiper/class.js +373 -0
  235. package/components/swiper/swiper.a2ui.json +4 -0
  236. package/components/swiper/swiper.d.ts +31 -0
  237. package/components/swiper/swiper.js +8 -354
  238. package/components/swiper/swiper.yaml +68 -212
  239. package/components/switch/class.js +63 -0
  240. package/components/switch/switch.a2ui.json +6 -1
  241. package/components/switch/switch.js +11 -47
  242. package/components/switch/switch.yaml +70 -265
  243. package/components/table/class.js +1453 -0
  244. package/components/table/table.d.ts +37 -0
  245. package/components/table/table.js +8 -1435
  246. package/components/table-toolbar/class.js +680 -0
  247. package/components/table-toolbar/table-toolbar.d.ts +33 -0
  248. package/components/table-toolbar/table-toolbar.js +8 -689
  249. package/components/tabs/class.js +242 -0
  250. package/components/tabs/tabs.d.ts +21 -0
  251. package/components/tabs/tabs.js +8 -223
  252. package/components/tag/class.js +99 -0
  253. package/components/tag/tag.d.ts +27 -0
  254. package/components/tag/tag.js +8 -80
  255. package/components/text/class.js +46 -0
  256. package/components/text/text.d.ts +25 -0
  257. package/components/text/text.js +9 -28
  258. package/components/textarea/class.js +134 -0
  259. package/components/textarea/textarea.js +11 -118
  260. package/components/timeline/class.js +176 -0
  261. package/components/timeline/timeline.d.ts +19 -0
  262. package/components/timeline/timeline.js +9 -162
  263. package/components/toast/class.js +92 -0
  264. package/components/toast/toast.d.ts +23 -0
  265. package/components/toast/toast.js +9 -76
  266. package/components/toggle-group/class.js +154 -0
  267. package/components/toggle-group/toggle-group.d.ts +19 -0
  268. package/components/toggle-group/toggle-group.js +11 -140
  269. package/components/toggle-scheme/class.js +286 -0
  270. package/components/toggle-scheme/toggle-scheme.d.ts +41 -0
  271. package/components/toggle-scheme/toggle-scheme.js +8 -268
  272. package/components/toolbar/class.js +388 -0
  273. package/components/toolbar/toolbar.d.ts +23 -0
  274. package/components/toolbar/toolbar.js +10 -376
  275. package/components/tooltip/class.js +299 -0
  276. package/components/tooltip/tooltip.d.ts +27 -0
  277. package/components/tooltip/tooltip.js +8 -280
  278. package/components/tree/class.js +245 -0
  279. package/components/tree/tree.d.ts +15 -0
  280. package/components/tree/tree.js +9 -244
  281. package/components/upload/class.js +199 -0
  282. package/components/upload/upload.js +11 -183
  283. package/index.d.ts +159 -5
  284. package/package.json +5 -1
@@ -1,40 +1,37 @@
1
- # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
- # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
1
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
2
  name: UIInput
5
3
  tag: input-ui
6
4
  component: Input
7
5
  category: input
8
6
  version: 1
9
- description: Text input field with contenteditable surface. Supports prefix/suffix icons,
10
- label, form participation, and a `type="number"` mode that renders [+]/[-] stepper buttons,
11
- numeric input filtering, and ARIA spinbutton semantics no native `<input type="number">`
12
- under the hood. Password type uses a native `<input>` (only path that still wraps native,
13
- for `-webkit-text-security` disc masking).
7
+ description: Text input field with contenteditable surface. Supports prefix/suffix icons, label, form participation, and a
8
+ `type="number"` mode that renders [+]/[-] stepper buttons, numeric input filtering, and ARIA spinbutton semantics — no native
9
+ `<input type="number">` under the hood. Password type uses a native `<input>` (only path that still wraps native, for `-webkit-text-security`
10
+ disc masking).
14
11
  props:
15
12
  name:
16
13
  description: Form control name for form data submission
17
14
  type: string
18
- default: ""
15
+ default: ''
19
16
  type:
20
- description: Input type. `password` wraps a native `<input>` for disc masking; `number` renders
21
- a contenteditable + stepper buttons (no native input). All other types use plain contenteditable.
17
+ description: Input type. `password` wraps a native `<input>` for disc masking; `number` renders a contenteditable + stepper
18
+ buttons (no native input). All other types use plain contenteditable.
22
19
  type: string
23
20
  default: text
24
21
  enum:
25
- - text
26
- - email
27
- - password
28
- - number
29
- - tel
30
- - url
31
- - search
32
- - date
33
- - datetime-local
34
- - time
35
- - month
36
- - week
37
- - color
22
+ - text
23
+ - email
24
+ - password
25
+ - number
26
+ - tel
27
+ - url
28
+ - search
29
+ - date
30
+ - datetime-local
31
+ - time
32
+ - month
33
+ - week
34
+ - color
38
35
  required:
39
36
  description: Marks the field as required for form validation. Sets aria-required.
40
37
  type: boolean
@@ -46,16 +43,14 @@ props:
46
43
  default: false
47
44
  reflect: true
48
45
  error:
49
- description: Validation error message. Set automatically by constraint validation or manually via
50
- setInvalid().
46
+ description: Validation error message. Set automatically by constraint validation or manually via setInvalid().
51
47
  type: string
52
- default: ""
48
+ default: ''
53
49
  label:
54
- description: Inline label rendered as a leading caption inside the input chrome,
55
- between any prefix and the value. Wires aria-labelledby on the editable
56
- surface. For stacked label / hint / error compositions, wrap with field-ui.
50
+ description: Inline label rendered as a leading caption inside the input chrome, between any prefix and the value. Wires
51
+ aria-labelledby on the editable surface. For stacked label / hint / error compositions, wrap with field-ui.
57
52
  type: string
58
- default: ""
53
+ default: ''
59
54
  maxlength:
60
55
  description: Maximum character length for validation
61
56
  type: number
@@ -65,61 +60,65 @@ props:
65
60
  type: number
66
61
  default: null
67
62
  inputmode:
68
- description: >-
69
- Mobile keyboard hint per HTML inputmode spec. Routed via setAttribute
70
- to the host element. Values: text, decimal, numeric, tel, search, email, url.
63
+ description: 'Mobile keyboard hint per HTML inputmode spec. Routed via setAttribute to the host element. Values: text,
64
+ decimal, numeric, tel, search, email, url.'
71
65
  type: string
72
66
  default: null
73
- enum: [text, decimal, numeric, tel, search, email, url, none]
67
+ enum:
68
+ - text
69
+ - decimal
70
+ - numeric
71
+ - tel
72
+ - search
73
+ - email
74
+ - url
75
+ - none
74
76
  autocomplete:
75
- description: >-
76
- Browser autofill behavior per HTML autocomplete spec. Routed via
77
- setAttribute to the host element. Common values: off, on, cc-number,
78
- cc-exp, cc-csc, cc-name, email, username, current-password, new-password,
79
- one-time-code, given-name, family-name, street-address, postal-code.
77
+ description: 'Browser autofill behavior per HTML autocomplete spec. Routed via setAttribute to the host element. Common
78
+ values: off, on, cc-number, cc-exp, cc-csc, cc-name, email, username, current-password, new-password, one-time-code,
79
+ given-name, family-name, street-address, postal-code.'
80
80
  type: string
81
- default: ""
81
+ default: ''
82
82
  min:
83
- description: Minimum numeric value. Applies when `type="number"`. Clamps + drives aria-valuemin
84
- + the [-] button's disabled state.
83
+ description: Minimum numeric value. Applies when `type="number"`. Clamps + drives aria-valuemin + the [-] button's disabled
84
+ state.
85
85
  type: number
86
86
  default: null
87
87
  max:
88
- description: Maximum numeric value. Applies when `type="number"`. Clamps + drives aria-valuemax
89
- + the [+] button's disabled state.
88
+ description: Maximum numeric value. Applies when `type="number"`. Clamps + drives aria-valuemax + the [+] button's disabled
89
+ state.
90
90
  type: number
91
91
  default: null
92
92
  step:
93
- description: Stepper increment for `type="number"`. Drives ↑/↓ ArrowUp/Down + [+]/[-] button
94
- magnitude. Also determines decimal-count for value formatting unless `precision` is set.
93
+ description: Stepper increment for `type="number"`. Drives ↑/↓ ArrowUp/Down + [+]/[-] button magnitude. Also determines
94
+ decimal-count for value formatting unless `precision` is set.
95
95
  type: number
96
96
  default: 1
97
97
  precision:
98
- description: Decimal places to display + clamp to, when `type="number"`. Overrides the implicit
99
- decimal-count from `step` — e.g. `step=1 precision=2` formats "10.00".
98
+ description: Decimal places to display + clamp to, when `type="number"`. Overrides the implicit decimal-count from `step`
99
+ — e.g. `step=1 precision=2` formats "10.00".
100
100
  type: number
101
101
  default: null
102
102
  locale:
103
- description: BCP-47 locale tag for `type="number"`, e.g. `de-DE`, `fr-FR`, `en-IN`. When set,
104
- the input accepts both `.` AND the locale's decimal separator (e.g. `,` in de-DE), uses
105
- `Intl.NumberFormat` for display, and groups thousands on blur (e.g. en-US `1,234,567.89`,
106
- de-DE `1.234.567,89`). On focus, the input reverts to ungrouped form for easy editing.
107
- `.value` always stores the ungrouped, locale-decimal form so `Number(#toCanonical(v))`
108
- round-trips. Default empty = en-US-equivalent path (no behavior change).
103
+ description: BCP-47 locale tag for `type="number"`, e.g. `de-DE`, `fr-FR`, `en-IN`. When set, the input accepts both `.`
104
+ AND the locale's decimal separator (e.g. `,` in de-DE), uses `Intl.NumberFormat` for display, and groups thousands on
105
+ blur (e.g. en-US `1,234,567.89`, de-DE `1.234.567,89`). On focus, the input reverts to ungrouped form for easy editing.
106
+ `.value` always stores the ungrouped, locale-decimal form so `Number(#toCanonical(v))` round-trips. Default empty =
107
+ en-US-equivalent path (no behavior change).
109
108
  type: string
110
- default: ""
109
+ default: ''
111
110
  pattern:
112
111
  description: Regex pattern for validation. Tested as ^(?:pattern)$ against the value.
113
112
  type: string
114
- default: ""
113
+ default: ''
115
114
  placeholder:
116
115
  description: Placeholder text shown when the input is empty, via ::before content
117
116
  type: string
118
- default: ""
117
+ default: ''
119
118
  prefix:
120
119
  description: Prefix text or icon rendered before the text surface (e.g., unit label, search icon)
121
120
  type: string
122
- default: ""
121
+ default: ''
123
122
  raw:
124
123
  description: Strips visual chrome (border, background) from the input
125
124
  type: boolean
@@ -133,19 +132,19 @@ props:
133
132
  suffix:
134
133
  description: Suffix text rendered after the text surface (e.g., unit like 'kg')
135
134
  type: string
136
- default: ""
135
+ default: ''
137
136
  value:
138
- description: Current input value, synced with contenteditable text surface. For `type="number"`,
139
- this is the formatted numeric string; read `el.valueAsNumber` for the parsed Number.
137
+ description: Current input value, synced with contenteditable text surface. For `type="number"`, this is the formatted
138
+ numeric string; read `el.valueAsNumber` for the parsed Number.
140
139
  type: string
141
- default: ""
140
+ default: ''
142
141
  events:
143
142
  change:
144
143
  description: Fired on blur, Enter, or a stepper-button click (bubbles)
145
144
  input:
146
145
  description: Fired on each keystroke or stepper-button increment (bubbles)
147
146
  submit:
148
- description: "Fired when Enter commits the value."
147
+ description: Fired when Enter commits the value.
149
148
  slots:
150
149
  leading:
151
150
  description: Leading icon slot, sized to --content-height. Collapses text inline padding when present.
@@ -154,16 +153,16 @@ slots:
154
153
  trailing:
155
154
  description: Trailing icon slot, sized to --content-height. Collapses text inline padding when present.
156
155
  states:
157
- - name: idle
158
- description: Default, ready for interaction.
159
- - name: disabled
160
- description: Non-interactive; dimmed.
161
- attribute: disabled
162
- - name: focused
163
- description: Keyboard focus ring.
164
- selector: :focus-visible
156
+ - name: idle
157
+ description: Default, ready for interaction.
158
+ - name: disabled
159
+ description: Non-interactive; dimmed.
160
+ attribute: disabled
161
+ - name: focused
162
+ description: Keyboard focus ring.
163
+ selector: :focus-visible
165
164
  traits:
166
- - focusable
165
+ - focusable
167
166
  tokens:
168
167
  --density:
169
168
  description: Inherited multiplier for padding
@@ -207,380 +206,110 @@ a2ui:
207
206
  rules: []
208
207
  anti_patterns: []
209
208
  examples:
210
- - name: quantity-stepper
211
- description: Number input with [+]/[-] stepper buttons, min/max bounds, and a quantity label.
212
- Use for product quantity, item count, or any bounded integer input.
213
- a2ui: >-
214
- [
215
- {"id": "root", "component": "Field", "label": "Quantity",
216
- "children": ["qty"]},
217
- {"id": "qty", "component": "Input", "type": "number",
218
- "name": "quantity", "value": "1", "min": 0, "max": 99, "step": 1}
219
- ]
220
- - name: price-with-currency
221
- description: Currency number input with $ prefix, 2-decimal precision, and step 0.01.
222
- The stepper buttons increment by one cent.
223
- a2ui: >-
224
- [
225
- {"id": "root", "component": "Field", "label": "Price",
226
- "children": ["price"]},
227
- {"id": "price", "component": "Input", "type": "number",
228
- "name": "price", "value": "9.99", "min": 0, "step": 0.01,
229
- "precision": 2, "prefix": "$"}
230
- ]
231
- - name: weight-with-unit
232
- description: Weight number input with a kg suffix and 0.1 step for decigram precision.
233
- a2ui: >-
234
- [
235
- {"id": "root", "component": "Field", "label": "Weight",
236
- "children": ["weight"]},
237
- {"id": "weight", "component": "Input", "type": "number",
238
- "name": "weight", "value": "70", "min": 0, "max": 500,
239
- "step": 0.1, "suffix": "kg"}
240
- ]
241
- - name: percent-bounded
242
- description: Percent number input bounded 0..100 with a % suffix.
243
- a2ui: >-
244
- [
245
- {"id": "root", "component": "Field", "label": "Discount",
246
- "children": ["pct"]},
247
- {"id": "pct", "component": "Input", "type": "number",
248
- "name": "discount", "value": "25", "min": 0, "max": 100,
249
- "step": 5, "suffix": "%"}
250
- ]
251
- - name: temperature-negative
252
- description: Number input allowing negative values, e.g. temperature offset.
253
- a2ui: >-
254
- [
255
- {"id": "root", "component": "Field", "label": "Temperature offset",
256
- "children": ["temp"]},
257
- {"id": "temp", "component": "Input", "type": "number",
258
- "name": "temp", "value": "0", "min": -100, "max": 100,
259
- "step": 1, "suffix": "°C"}
260
- ]
261
- - name: chat-interface
262
- description: Chat interface with message bubbles containing avatar and text pairs, plus an input footer.
263
- a2ui: >-
264
- [
265
- {
266
- "id": "root",
267
- "component": "Card",
268
- "children": [
269
- "hdr",
270
- "sec",
271
- "ftr"
272
- ]
273
- },
274
- {
275
- "id": "hdr",
276
- "component": "Header",
277
- "children": [
278
- "title"
279
- ]
280
- },
281
- {
282
- "id": "title",
283
- "component": "Text",
284
- "slot": "heading",
285
- "textContent": "Chat"
286
- },
287
- {
288
- "id": "sec",
289
- "component": "Section",
290
- "children": [
291
- "messages"
292
- ]
293
- },
294
- {
295
- "id": "messages",
296
- "component": "Column",
297
- "gap": "3",
298
- "children": [
299
- "msg1",
300
- "msg2",
301
- "msg3",
302
- "msg4"
303
- ]
304
- },
305
- {
306
- "id": "msg1",
307
- "component": "Row",
308
- "gap": "2",
309
- "children": [
310
- "a1",
311
- "t1"
312
- ]
313
- },
314
- {
315
- "id": "a1",
316
- "component": "Avatar",
317
- "name": "User",
318
- "size": "sm"
319
- },
320
- {
321
- "id": "t1",
322
- "component": "Text",
323
- "variant": "body",
324
- "textContent": "Hello! Can you help me with something?"
325
- },
326
- {
327
- "id": "msg2",
328
- "component": "Row",
329
- "gap": "2",
330
- "children": [
331
- "a2",
332
- "t2"
333
- ]
334
- },
335
- {
336
- "id": "a2",
337
- "component": "Avatar",
338
- "name": "Assistant",
339
- "size": "sm"
340
- },
341
- {
342
- "id": "t2",
343
- "component": "Text",
344
- "variant": "body",
345
- "textContent": "Of course! I'd be happy to help. What do you need?"
346
- },
347
- {
348
- "id": "msg3",
349
- "component": "Row",
350
- "gap": "2",
351
- "children": [
352
- "a3",
353
- "t3"
354
- ]
355
- },
356
- {
357
- "id": "a3",
358
- "component": "Avatar",
359
- "name": "User",
360
- "size": "sm"
361
- },
362
- {
363
- "id": "t3",
364
- "component": "Text",
365
- "variant": "body",
366
- "textContent": "I need to build a dashboard layout."
367
- },
368
- {
369
- "id": "msg4",
370
- "component": "Row",
371
- "gap": "2",
372
- "children": [
373
- "a4",
374
- "t4"
375
- ]
376
- },
377
- {
378
- "id": "a4",
379
- "component": "Avatar",
380
- "name": "Assistant",
381
- "size": "sm"
382
- },
383
- {
384
- "id": "t4",
385
- "component": "Text",
386
- "variant": "body",
387
- "textContent": "Great choice! Let me suggest some patterns for that."
388
- },
389
- {
390
- "id": "ftr",
391
- "component": "Footer",
392
- "children": [
393
- "input-row"
394
- ]
395
- },
396
- {
397
- "id": "input-row",
398
- "component": "Row",
399
- "gap": "2",
400
- "children": [
401
- "chat-input",
402
- "send-btn"
403
- ]
404
- },
405
- {
406
- "id": "chat-input",
407
- "component": "Input",
408
- "placeholder": "Type a message..."
409
- },
410
- {
411
- "id": "send-btn",
412
- "component": "Button",
413
- "text": "Send",
414
- "icon": "send",
415
- "variant": "primary"
416
- }
417
- ]
418
- - name: command-palette
419
- description: Command palette card with search input and a list of command options.
420
- a2ui: >-
421
- [
422
- {
423
- "id": "root",
424
- "component": "Card",
425
- "children": [
426
- "hdr",
427
- "sec"
428
- ]
429
- },
430
- {
431
- "id": "hdr",
432
- "component": "Header",
433
- "children": [
434
- "search"
435
- ]
436
- },
437
- {
438
- "id": "search",
439
- "component": "Input",
440
- "placeholder": "Type a command or search...",
441
- "icon": "search"
442
- },
443
- {
444
- "id": "sec",
445
- "component": "Section",
446
- "children": [
447
- "options"
448
- ]
449
- },
450
- {
451
- "id": "options",
452
- "component": "Column",
453
- "gap": "1",
454
- "children": [
455
- "opt1",
456
- "opt2",
457
- "opt3",
458
- "opt4",
459
- "opt5"
460
- ]
461
- },
462
- {
463
- "id": "opt1",
464
- "component": "Row",
465
- "gap": "2",
466
- "children": [
467
- "i1",
468
- "l1"
469
- ]
470
- },
471
- {
472
- "id": "i1",
473
- "component": "Icon",
474
- "name": "file"
475
- },
476
- {
477
- "id": "l1",
478
- "component": "Text",
479
- "textContent": "Open File"
480
- },
481
- {
482
- "id": "opt2",
483
- "component": "Row",
484
- "gap": "2",
485
- "children": [
486
- "i2",
487
- "l2"
488
- ]
489
- },
490
- {
491
- "id": "i2",
492
- "component": "Icon",
493
- "name": "gear"
494
- },
495
- {
496
- "id": "l2",
497
- "component": "Text",
498
- "textContent": "Settings"
499
- },
500
- {
501
- "id": "opt3",
502
- "component": "Row",
503
- "gap": "2",
504
- "children": [
505
- "i3",
506
- "l3"
507
- ]
508
- },
509
- {
510
- "id": "i3",
511
- "component": "Icon",
512
- "name": "palette"
513
- },
514
- {
515
- "id": "l3",
516
- "component": "Text",
517
- "textContent": "Change Theme"
518
- },
519
- {
520
- "id": "opt4",
521
- "component": "Row",
522
- "gap": "2",
523
- "children": [
524
- "i4",
525
- "l4"
526
- ]
527
- },
528
- {
529
- "id": "i4",
530
- "component": "Icon",
531
- "name": "users"
532
- },
533
- {
534
- "id": "l4",
535
- "component": "Text",
536
- "textContent": "Manage Users"
537
- },
538
- {
539
- "id": "opt5",
540
- "component": "Row",
541
- "gap": "2",
542
- "children": [
543
- "i5",
544
- "l5"
545
- ]
546
- },
547
- {
548
- "id": "i5",
549
- "component": "Icon",
550
- "name": "sign-out"
551
- },
552
- {
553
- "id": "l5",
554
- "component": "Text",
555
- "textContent": "Sign Out"
556
- }
557
- ]
209
+ - name: quantity-stepper
210
+ description: Number input with [+]/[-] stepper buttons, min/max bounds, and a quantity label. Use for product quantity,
211
+ item count, or any bounded integer input.
212
+ a2ui: "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Quantity\",\n \"children\": [\"qty\"]},\n {\"id\"\
213
+ : \"qty\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"quantity\", \"value\": \"1\", \"min\": 0, \"\
214
+ max\": 99, \"step\": 1}\n]"
215
+ - name: price-with-currency
216
+ description: Currency number input with $ prefix, 2-decimal precision, and step 0.01. The stepper buttons increment by one
217
+ cent.
218
+ a2ui: "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Price\",\n \"children\": [\"price\"]},\n {\"id\"\
219
+ : \"price\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"price\", \"value\": \"9.99\", \"min\": 0,\
220
+ \ \"step\": 0.01,\n \"precision\": 2, \"prefix\": \"$\"}\n]"
221
+ - name: weight-with-unit
222
+ description: Weight number input with a kg suffix and 0.1 step for decigram precision.
223
+ a2ui: "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Weight\",\n \"children\": [\"weight\"]},\n {\"\
224
+ id\": \"weight\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"weight\", \"value\": \"70\", \"min\"\
225
+ : 0, \"max\": 500,\n \"step\": 0.1, \"suffix\": \"kg\"}\n]"
226
+ - name: percent-bounded
227
+ description: Percent number input bounded 0..100 with a % suffix.
228
+ a2ui: "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Discount\",\n \"children\": [\"pct\"]},\n {\"id\"\
229
+ : \"pct\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"discount\", \"value\": \"25\", \"min\": 0,\
230
+ \ \"max\": 100,\n \"step\": 5, \"suffix\": \"%\"}\n]"
231
+ - name: temperature-negative
232
+ description: Number input allowing negative values, e.g. temperature offset.
233
+ a2ui: "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Temperature offset\",\n \"children\": [\"temp\"\
234
+ ]},\n {\"id\": \"temp\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"temp\", \"value\": \"0\", \"\
235
+ min\": -100, \"max\": 100,\n \"step\": 1, \"suffix\": \"°C\"}\n]"
236
+ - name: chat-interface
237
+ description: Chat interface with message bubbles containing avatar and text pairs, plus an input footer.
238
+ a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\",\n\
239
+ \ \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"\
240
+ title\"\n ]\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\"\
241
+ : \"Chat\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"messages\"\n\
242
+ \ ]\n },\n {\n \"id\": \"messages\",\n \"component\": \"Column\",\n \"gap\": \"3\",\n \"children\": [\n\
243
+ \ \"msg1\",\n \"msg2\",\n \"msg3\",\n \"msg4\"\n ]\n },\n {\n \"id\": \"msg1\",\n \"component\"\
244
+ : \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a1\",\n \"t1\"\n ]\n },\n {\n \"id\": \"a1\"\
245
+ ,\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t1\",\n \
246
+ \ \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Hello! Can you help me with something?\"\
247
+ \n },\n {\n \"id\": \"msg2\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a2\"\
248
+ ,\n \"t2\"\n ]\n },\n {\n \"id\": \"a2\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n\
249
+ \ \"size\": \"sm\"\n },\n {\n \"id\": \"t2\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"\
250
+ textContent\": \"Of course! I'd be happy to help. What do you need?\"\n },\n {\n \"id\": \"msg3\",\n \"component\"\
251
+ : \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a3\",\n \"t3\"\n ]\n },\n {\n \"id\": \"a3\"\
252
+ ,\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t3\",\n \
253
+ \ \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"I need to build a dashboard layout.\"\n\
254
+ \ },\n {\n \"id\": \"msg4\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a4\"\
255
+ ,\n \"t4\"\n ]\n },\n {\n \"id\": \"a4\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n\
256
+ \ \"size\": \"sm\"\n },\n {\n \"id\": \"t4\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"\
257
+ textContent\": \"Great choice! Let me suggest some patterns for that.\"\n },\n {\n \"id\": \"ftr\",\n \"component\"\
258
+ : \"Footer\",\n \"children\": [\n \"input-row\"\n ]\n },\n {\n \"id\": \"input-row\",\n \"component\"\
259
+ : \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"chat-input\",\n \"send-btn\"\n ]\n },\n {\n \
260
+ \ \"id\": \"chat-input\",\n \"component\": \"Input\",\n \"placeholder\": \"Type a message...\"\n },\n {\n \
261
+ \ \"id\": \"send-btn\",\n \"component\": \"Button\",\n \"text\": \"Send\",\n \"icon\": \"send\",\n \"variant\"\
262
+ : \"primary\"\n }\n]"
263
+ - name: command-palette
264
+ description: Command palette card with search input and a list of command options.
265
+ a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\"\n\
266
+ \ ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"search\"\n ]\n\
267
+ \ },\n {\n \"id\": \"search\",\n \"component\": \"Input\",\n \"placeholder\": \"Type a command or search...\"\
268
+ ,\n \"icon\": \"search\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \
269
+ \ \"options\"\n ]\n },\n {\n \"id\": \"options\",\n \"component\": \"Column\",\n \"gap\": \"1\",\n \
270
+ \ \"children\": [\n \"opt1\",\n \"opt2\",\n \"opt3\",\n \"opt4\",\n \"opt5\"\n ]\n },\n\
271
+ \ {\n \"id\": \"opt1\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"i1\",\n \
272
+ \ \"l1\"\n ]\n },\n {\n \"id\": \"i1\",\n \"component\": \"Icon\",\n \"name\": \"file\"\n },\n {\n\
273
+ \ \"id\": \"l1\",\n \"component\": \"Text\",\n \"textContent\": \"Open File\"\n },\n {\n \"id\": \"opt2\"\
274
+ ,\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"i2\",\n \"l2\"\n ]\n },\n \
275
+ \ {\n \"id\": \"i2\",\n \"component\": \"Icon\",\n \"name\": \"gear\"\n },\n {\n \"id\": \"l2\",\n \"\
276
+ component\": \"Text\",\n \"textContent\": \"Settings\"\n },\n {\n \"id\": \"opt3\",\n \"component\": \"Row\"\
277
+ ,\n \"gap\": \"2\",\n \"children\": [\n \"i3\",\n \"l3\"\n ]\n },\n {\n \"id\": \"i3\",\n \"\
278
+ component\": \"Icon\",\n \"name\": \"palette\"\n },\n {\n \"id\": \"l3\",\n \"component\": \"Text\",\n \"\
279
+ textContent\": \"Change Theme\"\n },\n {\n \"id\": \"opt4\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n\
280
+ \ \"children\": [\n \"i4\",\n \"l4\"\n ]\n },\n {\n \"id\": \"i4\",\n \"component\": \"Icon\"\
281
+ ,\n \"name\": \"users\"\n },\n {\n \"id\": \"l4\",\n \"component\": \"Text\",\n \"textContent\": \"Manage\
282
+ \ Users\"\n },\n {\n \"id\": \"opt5\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \
283
+ \ \"i5\",\n \"l5\"\n ]\n },\n {\n \"id\": \"i5\",\n \"component\": \"Icon\",\n \"name\": \"sign-out\"\
284
+ \n },\n {\n \"id\": \"l5\",\n \"component\": \"Text\",\n \"textContent\": \"Sign Out\"\n }\n]"
558
285
  keywords:
559
- - input
560
- - field
561
- - chip
562
- - tag
286
+ - input
287
+ - field
288
+ - chip
289
+ - tag
563
290
  synonyms:
564
291
  tag:
565
- - tag
566
- - input
567
- - badge
292
+ - tag
293
+ - input
294
+ - badge
568
295
  chip:
569
- - badge
570
- - tag
571
- - input
296
+ - badge
297
+ - tag
298
+ - input
572
299
  field:
573
- - form
574
- - create
575
- - input
300
+ - form
301
+ - create
302
+ - input
576
303
  input:
577
- - form
578
- - create
579
- - tag
580
- - input
304
+ - form
305
+ - create
306
+ - tag
307
+ - input
308
+ tags:
309
+ - TextField
581
310
  related:
582
- - avatar
583
- - button
584
- - table
585
- - pagination
586
- - check-box
311
+ - avatar
312
+ - button
313
+ - table
314
+ - pagination
315
+ - check-box