@adia-ai/web-components 0.6.20 → 0.6.22

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 (252) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/components/accordion/accordion-item.a2ui.json +20 -3
  3. package/components/accordion/accordion-item.yaml +24 -0
  4. package/components/accordion/accordion.a2ui.json +1 -1
  5. package/components/accordion/accordion.d.ts +8 -1
  6. package/components/accordion/accordion.yaml +15 -2
  7. package/components/action-list/action-item.a2ui.json +19 -3
  8. package/components/action-list/action-item.yaml +24 -0
  9. package/components/action-list/action-list.a2ui.json +12 -2
  10. package/components/action-list/action-list.yaml +13 -3
  11. package/components/agent-artifact/agent-artifact.a2ui.json +9 -2
  12. package/components/agent-artifact/agent-artifact.d.ts +1 -1
  13. package/components/agent-artifact/agent-artifact.yaml +17 -3
  14. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +9 -2
  15. package/components/agent-feedback-bar/agent-feedback-bar.d.ts +8 -1
  16. package/components/agent-feedback-bar/agent-feedback-bar.yaml +19 -3
  17. package/components/agent-questions/agent-questions.a2ui.json +8 -2
  18. package/components/agent-questions/agent-questions.d.ts +8 -1
  19. package/components/agent-questions/agent-questions.yaml +19 -3
  20. package/components/agent-reasoning/agent-reasoning.yaml +9 -1
  21. package/components/agent-suggestions/agent-suggestions.a2ui.json +9 -2
  22. package/components/agent-suggestions/agent-suggestions.d.ts +7 -1
  23. package/components/agent-suggestions/agent-suggestions.yaml +18 -3
  24. package/components/agent-trace/agent-trace.a2ui.json +9 -2
  25. package/components/agent-trace/agent-trace.d.ts +1 -1
  26. package/components/agent-trace/agent-trace.yaml +16 -3
  27. package/components/alert/alert.a2ui.json +1 -1
  28. package/components/alert/alert.css +8 -0
  29. package/components/alert/alert.d.ts +9 -1
  30. package/components/alert/alert.yaml +16 -2
  31. package/components/aside/aside.a2ui.json +7 -1
  32. package/components/aside/aside.yaml +33 -2
  33. package/components/avatar/avatar-group.a2ui.json +20 -3
  34. package/components/avatar/avatar-group.yaml +24 -0
  35. package/components/avatar/avatar.a2ui.json +1 -1
  36. package/components/avatar/avatar.d.ts +7 -1
  37. package/components/avatar/avatar.yaml +14 -2
  38. package/components/badge/badge.a2ui.json +1 -1
  39. package/components/badge/badge.d.ts +7 -1
  40. package/components/badge/badge.yaml +14 -2
  41. package/components/block/block.a2ui.json +9 -4
  42. package/components/block/block.d.ts +9 -3
  43. package/components/block/block.yaml +25 -5
  44. package/components/block/class.js +23 -0
  45. package/components/breadcrumb/breadcrumb.a2ui.json +5 -1
  46. package/components/breadcrumb/breadcrumb.yaml +33 -2
  47. package/components/button/button.a2ui.json +22 -2
  48. package/components/button/button.yaml +21 -3
  49. package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
  50. package/components/calendar-picker/calendar-picker.yaml +13 -2
  51. package/components/canvas/canvas.a2ui.json +6 -2
  52. package/components/canvas/canvas.yaml +20 -3
  53. package/components/card/card.css +23 -2
  54. package/components/card/card.yaml +12 -0
  55. package/components/chart/chart.css +4 -2
  56. package/components/chart/chart.yaml +9 -1
  57. package/components/chart-legend/chart-legend.yaml +7 -1
  58. package/components/chat-thread/chat-thread.a2ui.json +6 -2
  59. package/components/chat-thread/chat-thread.d.ts +8 -1
  60. package/components/chat-thread/chat-thread.yaml +21 -3
  61. package/components/check/check.a2ui.json +13 -3
  62. package/components/check/check.yaml +18 -3
  63. package/components/code/code.a2ui.json +1 -1
  64. package/components/code/code.yaml +13 -2
  65. package/components/col/class.js +39 -0
  66. package/components/col/col.a2ui.json +12 -5
  67. package/components/col/col.d.ts +12 -4
  68. package/components/col/col.yaml +27 -7
  69. package/components/color-input/color-input.yaml +27 -1
  70. package/components/color-picker/color-picker.a2ui.json +8 -2
  71. package/components/color-picker/color-picker.yaml +15 -3
  72. package/components/command/command.a2ui.json +7 -2
  73. package/components/command/command.d.ts +9 -1
  74. package/components/command/command.yaml +39 -3
  75. package/components/demo-toggle/demo-toggle.yaml +7 -1
  76. package/components/description-list/description-list.a2ui.json +5 -1
  77. package/components/description-list/description-list.yaml +11 -2
  78. package/components/divider/divider.a2ui.json +1 -1
  79. package/components/divider/divider.d.ts +8 -1
  80. package/components/divider/divider.yaml +15 -2
  81. package/components/drawer/drawer.yaml +32 -1
  82. package/components/embed/embed.a2ui.json +1 -1
  83. package/components/embed/embed.d.ts +8 -1
  84. package/components/embed/embed.yaml +17 -2
  85. package/components/empty-state/empty-state.a2ui.json +19 -2
  86. package/components/empty-state/empty-state.css +14 -0
  87. package/components/empty-state/empty-state.d.ts +3 -1
  88. package/components/empty-state/empty-state.yaml +50 -3
  89. package/components/feed/feed-item.a2ui.json +21 -3
  90. package/components/feed/feed-item.yaml +25 -0
  91. package/components/feed/feed.a2ui.json +23 -3
  92. package/components/feed/feed.css +9 -4
  93. package/components/feed/feed.yaml +26 -0
  94. package/components/fields/fields.yaml +7 -1
  95. package/components/footer/footer.a2ui.json +7 -1
  96. package/components/footer/footer.yaml +27 -2
  97. package/components/grid/class.js +57 -0
  98. package/components/grid/grid.a2ui.json +3 -3
  99. package/components/grid/grid.d.ts +3 -3
  100. package/components/grid/grid.yaml +22 -8
  101. package/components/header/header.a2ui.json +8 -1
  102. package/components/header/header.yaml +30 -2
  103. package/components/heatmap/heatmap.yaml +7 -1
  104. package/components/icon/icon.a2ui.json +9 -2
  105. package/components/icon/icon.d.ts +1 -1
  106. package/components/icon/icon.yaml +32 -3
  107. package/components/image/image.yaml +7 -1
  108. package/components/input/input.css +8 -1
  109. package/components/input/input.yaml +29 -1
  110. package/components/inspector/inspector.a2ui.json +7 -2
  111. package/components/inspector/inspector.d.ts +9 -1
  112. package/components/inspector/inspector.yaml +23 -3
  113. package/components/kbd/kbd.a2ui.json +1 -1
  114. package/components/kbd/kbd.d.ts +1 -1
  115. package/components/kbd/kbd.yaml +11 -2
  116. package/components/list/list-item.a2ui.json +21 -3
  117. package/components/list/list-item.yaml +25 -0
  118. package/components/list/list.a2ui.json +7 -2
  119. package/components/list/list.d.ts +9 -1
  120. package/components/list/list.yaml +21 -3
  121. package/components/menu/menu-divider.a2ui.json +17 -3
  122. package/components/menu/menu-divider.yaml +35 -0
  123. package/components/menu/menu-item.a2ui.json +19 -3
  124. package/components/menu/menu-item.yaml +42 -0
  125. package/components/menu/menu.a2ui.json +7 -1
  126. package/components/menu/menu.yaml +33 -2
  127. package/components/modal/modal.a2ui.json +7 -2
  128. package/components/modal/modal.d.ts +10 -1
  129. package/components/modal/modal.yaml +48 -3
  130. package/components/nav/nav.a2ui.json +16 -2
  131. package/components/nav/nav.yaml +40 -3
  132. package/components/nav-group/nav-group.a2ui.json +12 -2
  133. package/components/nav-group/nav-group.yaml +37 -3
  134. package/components/nav-item/nav-item.a2ui.json +13 -2
  135. package/components/nav-item/nav-item.yaml +40 -3
  136. package/components/noodles/noodles.a2ui.json +12 -2
  137. package/components/noodles/noodles.yaml +14 -3
  138. package/components/option-card/option-card.yaml +27 -1
  139. package/components/otp-input/otp-input.yaml +24 -1
  140. package/components/page/page.a2ui.json +7 -1
  141. package/components/page/page.yaml +9 -2
  142. package/components/pagination/pagination.a2ui.json +1 -1
  143. package/components/pagination/pagination.d.ts +1 -1
  144. package/components/pagination/pagination.yaml +13 -2
  145. package/components/pane/pane.a2ui.json +1 -1
  146. package/components/pane/pane.d.ts +7 -1
  147. package/components/pane/pane.yaml +33 -2
  148. package/components/pipeline-status/pipeline-status.a2ui.json +6 -2
  149. package/components/pipeline-status/pipeline-status.d.ts +1 -1
  150. package/components/pipeline-status/pipeline-status.yaml +18 -3
  151. package/components/popover/popover.yaml +30 -1
  152. package/components/progress/progress.a2ui.json +1 -1
  153. package/components/progress/progress.d.ts +1 -1
  154. package/components/progress/progress.yaml +13 -2
  155. package/components/progress-row/progress-row.a2ui.json +12 -2
  156. package/components/progress-row/progress-row.yaml +13 -3
  157. package/components/radio/radio.a2ui.json +1 -1
  158. package/components/radio/radio.yaml +9 -1
  159. package/components/range/range.yaml +7 -1
  160. package/components/rating/rating.a2ui.json +4 -1
  161. package/components/rating/rating.yaml +10 -2
  162. package/components/richtext/richtext.a2ui.json +6 -2
  163. package/components/richtext/richtext.d.ts +9 -1
  164. package/components/richtext/richtext.yaml +20 -3
  165. package/components/row/class.js +34 -0
  166. package/components/row/row.a2ui.json +11 -5
  167. package/components/row/row.d.ts +11 -4
  168. package/components/row/row.yaml +25 -7
  169. package/components/search/search.a2ui.json +5 -1
  170. package/components/search/search.yaml +11 -2
  171. package/components/section/section.a2ui.json +7 -1
  172. package/components/section/section.yaml +36 -2
  173. package/components/segment/segment.a2ui.json +8 -2
  174. package/components/segment/segment.d.ts +7 -1
  175. package/components/segment/segment.yaml +16 -3
  176. package/components/segmented/segmented.a2ui.json +6 -1
  177. package/components/segmented/segmented.css +5 -0
  178. package/components/segmented/segmented.yaml +12 -2
  179. package/components/select/select.a2ui.json +1 -1
  180. package/components/select/select.yaml +34 -2
  181. package/components/skeleton/skeleton.a2ui.json +7 -2
  182. package/components/skeleton/skeleton.d.ts +1 -1
  183. package/components/skeleton/skeleton.yaml +17 -3
  184. package/components/slider/slider.yaml +7 -1
  185. package/components/stack/stack.a2ui.json +14 -3
  186. package/components/stack/stack.d.ts +9 -1
  187. package/components/stack/stack.yaml +22 -4
  188. package/components/stat/stat.a2ui.json +6 -2
  189. package/components/stat/stat.css +5 -2
  190. package/components/stat/stat.d.ts +1 -1
  191. package/components/stat/stat.yaml +16 -3
  192. package/components/step-progress/step-progress.yaml +7 -1
  193. package/components/stepper/stepper-item.a2ui.json +20 -3
  194. package/components/stepper/stepper-item.yaml +24 -0
  195. package/components/stepper/stepper.a2ui.json +1 -1
  196. package/components/stepper/stepper.d.ts +1 -1
  197. package/components/stepper/stepper.yaml +13 -2
  198. package/components/stream/stream.a2ui.json +12 -2
  199. package/components/stream/stream.yaml +15 -3
  200. package/components/swatch/swatch.yaml +7 -1
  201. package/components/swiper/swiper.yaml +7 -1
  202. package/components/switch/switch.a2ui.json +6 -2
  203. package/components/switch/switch.yaml +16 -2
  204. package/components/table/cell-types.js +23 -10
  205. package/components/table/class.js +12 -2
  206. package/components/table/table.a2ui.json +6 -1
  207. package/components/table/table.css +68 -1
  208. package/components/table/table.d.ts +3 -1
  209. package/components/table/table.test.js +64 -0
  210. package/components/table/table.yaml +39 -2
  211. package/components/table-toolbar/table-toolbar.yaml +27 -1
  212. package/components/tabs/tab.a2ui.json +17 -3
  213. package/components/tabs/tab.yaml +39 -0
  214. package/components/tabs/tabs.a2ui.json +1 -1
  215. package/components/tabs/tabs.d.ts +1 -1
  216. package/components/tabs/tabs.yaml +36 -2
  217. package/components/tag/tag.a2ui.json +6 -2
  218. package/components/tag/tag.d.ts +9 -1
  219. package/components/tag/tag.yaml +38 -3
  220. package/components/text/class.js +13 -0
  221. package/components/text/text.a2ui.json +9 -2
  222. package/components/text/text.d.ts +1 -1
  223. package/components/text/text.yaml +12 -5
  224. package/components/textarea/textarea.a2ui.json +15 -3
  225. package/components/textarea/textarea.yaml +41 -4
  226. package/components/timeline/timeline-item.a2ui.json +20 -3
  227. package/components/timeline/timeline-item.yaml +24 -0
  228. package/components/timeline/timeline.a2ui.json +8 -1
  229. package/components/timeline/timeline.yaml +9 -2
  230. package/components/toast/toast.a2ui.json +6 -2
  231. package/components/toast/toast.yaml +19 -3
  232. package/components/toggle-group/toggle-group.a2ui.json +13 -3
  233. package/components/toggle-group/toggle-group.d.ts +1 -1
  234. package/components/toggle-group/toggle-group.yaml +19 -4
  235. package/components/toggle-group/toggle-option.a2ui.json +18 -3
  236. package/components/toggle-group/toggle-option.yaml +23 -0
  237. package/components/toggle-scheme/toggle-scheme.yaml +4 -0
  238. package/components/toolbar/toolbar-group.a2ui.json +18 -3
  239. package/components/toolbar/toolbar-group.yaml +23 -0
  240. package/components/toolbar/toolbar.yaml +7 -1
  241. package/components/tooltip/tooltip.yaml +24 -1
  242. package/components/tree/tree-item.a2ui.json +19 -3
  243. package/components/tree/tree-item.yaml +42 -0
  244. package/components/tree/tree.a2ui.json +6 -1
  245. package/components/tree/tree.yaml +31 -2
  246. package/components/upload/upload.yaml +7 -1
  247. package/core/index.js +1 -0
  248. package/core/responsive.d.ts +29 -0
  249. package/core/responsive.js +120 -0
  250. package/core/responsive.test.js +121 -0
  251. package/package.json +1 -1
  252. package/styles/tokens.css +6 -6
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Select.json",
4
4
  "title": "Select",
5
- "description": "Alias for ChoicePicker. Dropdown select with options.",
5
+ "description": "Single-select dropdown primitive — the canonical AdiaUI select\ncontrol. Form-bearing via UIFormElement: [name], [value],\n[required], [disabled], fires `change`. Options via native\n<option> / <optgroup> children, programmatic `.options` array, or\nJSON [data-options] (hydrated by <editor-shell>'s wireSelects).\nUse for single-select with > 4 options; for ≤ 4 options use\n<segmented-ui> or <radio-ui>. Multi-select via [multiple searchable].\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -6,7 +6,14 @@ tag: select-ui
6
6
  component: Select
7
7
  category: input
8
8
  version: 1
9
- description: Alias for ChoicePicker. Dropdown select with options.
9
+ description: |
10
+ Single-select dropdown primitive — the canonical AdiaUI select
11
+ control. Form-bearing via UIFormElement: [name], [value],
12
+ [required], [disabled], fires `change`. Options via native
13
+ <option> / <optgroup> children, programmatic `.options` array, or
14
+ JSON [data-options] (hydrated by <editor-shell>'s wireSelects).
15
+ Use for single-select with > 4 options; for ≤ 4 options use
16
+ <segmented-ui> or <radio-ui>. Multi-select via [multiple searchable].
10
17
  # Per ADR-0027 — primitives that programmatically create other primitives
11
18
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
12
19
  composes:
@@ -166,7 +173,32 @@ tokens: {}
166
173
  requiredIcons:
167
174
  - caret-up-down
168
175
  a2ui:
169
- rules: []
176
+ rules:
177
+ - >-
178
+ Use <select-ui> for single-select with > 4 options or any list
179
+ that benefits from a popover. Prefer <segmented-ui> / <radio-ui>
180
+ when ≤ 4 visible options fit the row.
181
+ - >-
182
+ Compose options via native <option> / <optgroup> children — other
183
+ tag names are silently ignored (per §225 v0.5.9) and warned once
184
+ at runtime. Or set `.options` programmatically as an array of
185
+ `{value, label, disabled?}` (grouped form: `{label, options:[…]}`).
186
+ - >-
187
+ For dynamic option lists rendered inside <editor-shell>, set the
188
+ JSON via the [data-options] attribute — <editor-shell>'s
189
+ wireSelects() finds select-ui[data-options], JSON.parses the
190
+ attribute, and assigns `.options` on connect. Useful for
191
+ static-HTML toolbars where JS hydration would be awkward.
192
+ - >-
193
+ <select-ui> owns its own label / hint / error chrome (via
194
+ [label] / [hint] / [error] props). Only wrap in <field-ui> when
195
+ you need to share the field-chrome stack with sibling inputs in
196
+ the same form row group.
197
+ - >-
198
+ Enable [searchable] for > 10 options; add [free-text] only when
199
+ unmatched values are valid (tag entry, email-with-suggestion).
200
+ Use [multiple searchable] for multi-select rather than
201
+ authoring a separate multi-select primitive.
170
202
  anti_patterns: []
171
203
  examples:
172
204
  - name: bleed-design-settings
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Skeleton.json",
4
4
  "title": "Skeleton",
5
- "description": "Placeholder shimmer for loading states. Purely presentational.",
5
+ "description": "Placeholder shimmer for loading states. Purely presentational — animated pulse background with configurable shape via CSS sizing. Use as a structural placeholder while data loads; for zero-state messaging after loading completes use <empty-state-ui> instead.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -68,7 +68,12 @@
68
68
  "shimmer"
69
69
  ],
70
70
  "name": "UISkeleton",
71
- "related": [],
71
+ "related": [
72
+ "EmptyState",
73
+ "Card",
74
+ "Table",
75
+ "List"
76
+ ],
72
77
  "slots": {},
73
78
  "states": [
74
79
  {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<skeleton-ui>` — Placeholder shimmer for loading states. Purely presentational.
2
+ * `<skeleton-ui>` — Placeholder shimmer for loading states. Purely presentational — animated pulse background with configurable shape via CSS sizing. Use as a structural placeholder while data loads; for zero-state messaging after loading completes use <empty-state-ui> instead.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/skeleton
5
5
  *
@@ -6,7 +6,11 @@ tag: skeleton-ui
6
6
  component: Skeleton
7
7
  category: display
8
8
  version: 1
9
- description: Placeholder shimmer for loading states. Purely presentational.
9
+ description: >-
10
+ Placeholder shimmer for loading states. Purely presentational — animated
11
+ pulse background with configurable shape via CSS sizing. Use as a
12
+ structural placeholder while data loads; for zero-state messaging after
13
+ loading completes use <empty-state-ui> instead.
10
14
  props:
11
15
  height:
12
16
  description: Height of the placeholder.
@@ -38,7 +42,13 @@ states:
38
42
  traits: []
39
43
  tokens: {}
40
44
  a2ui:
41
- rules: []
45
+ rules:
46
+ - rule: 'Use to placeholder content during loading. Shape via CSS sizing (width/height/border-radius); shimmer is automatic.'
47
+ reason: 'Purely structural placeholder.'
48
+ - rule: 'Compose multiple <skeleton-ui> blocks to mock the actual content shape (card-skeleton, row-skeleton, etc.).'
49
+ reason: 'Better UX than single block — preview structure.'
50
+ - rule: 'For post-load empty states use <empty-state-ui> instead; skeleton is pre-load only.'
51
+ reason: 'Different lifecycle phase.'
42
52
  anti_patterns: []
43
53
  examples:
44
54
  - name: loading-skeleton
@@ -145,4 +155,8 @@ synonyms:
145
155
  - loading
146
156
  - skeleton
147
157
  - progress
148
- related: []
158
+ related:
159
+ - EmptyState
160
+ - Card
161
+ - Table
162
+ - List
@@ -92,7 +92,13 @@ tokens:
92
92
  --slider-track-height:
93
93
  description: Full track height (scales via universal [size] attribute)
94
94
  a2ui:
95
- rules: []
95
+ rules:
96
+ - rule: 'Single-handle slider for selecting one value in a range. Form-associated; emits numeric change events.'
97
+ reason: 'Single-value range-input contract.'
98
+ - rule: 'For two-handle range selection use <range-ui> instead.'
99
+ reason: 'Single vs range sibling.'
100
+ - rule: 'Step attribute controls increments; show-value enables an inline value label.'
101
+ reason: 'Standard slider knobs.'
96
102
  anti_patterns: []
97
103
  examples:
98
104
  - name: slider-range
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Stack.json",
4
4
  "title": "Stack",
5
- "description": "Grid overlay layout — children stack on top of each other.",
5
+ "description": "Grid-overlay layout primitive — children stack on TOP of each\nother in a single grid cell (z-axis layering). Distinct from\n<col-ui> (vertical) / <row-ui> (horizontal) / <grid-ui> (2D\ngrid with cells). Use stack-ui for badge overlays on avatars,\nabsolute-positioned UI on top of charts, loading spinners over\ncontent, or any case where children must occupy the same physical\nspace. [align] controls how children align within the shared\ncell.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -42,7 +42,11 @@
42
42
  "stack"
43
43
  ],
44
44
  "name": "UIStack",
45
- "related": [],
45
+ "related": [
46
+ "Col",
47
+ "Row",
48
+ "Grid"
49
+ ],
46
50
  "slots": {
47
51
  "default": {
48
52
  "description": "Default slot — primary child content."
@@ -54,7 +58,14 @@
54
58
  "name": "idle"
55
59
  }
56
60
  ],
57
- "synonyms": {},
61
+ "synonyms": {
62
+ "stack": [
63
+ "overlay-stack",
64
+ "z-stack",
65
+ "grid-overlay",
66
+ "layer"
67
+ ]
68
+ },
58
69
  "tag": "stack-ui",
59
70
  "tokens": {},
60
71
  "traits": [],
@@ -1,5 +1,13 @@
1
1
  /**
2
- * `<stack-ui>` — Grid overlay layout — children stack on top of each other.
2
+ * `<stack-ui>` — Grid-overlay layout primitive — children stack on TOP of each
3
+ other in a single grid cell (z-axis layering). Distinct from
4
+ <col-ui> (vertical) / <row-ui> (horizontal) / <grid-ui> (2D
5
+ grid with cells). Use stack-ui for badge overlays on avatars,
6
+ absolute-positioned UI on top of charts, loading spinners over
7
+ content, or any case where children must occupy the same physical
8
+ space. [align] controls how children align within the shared
9
+ cell.
10
+
3
11
  *
4
12
  * @see https://ui-kit.exe.xyz/site/components/stack
5
13
  *
@@ -6,7 +6,15 @@ tag: stack-ui
6
6
  component: Stack
7
7
  category: layout
8
8
  version: 1
9
- description: Grid overlay layout — children stack on top of each other.
9
+ description: |
10
+ Grid-overlay layout primitive — children stack on TOP of each
11
+ other in a single grid cell (z-axis layering). Distinct from
12
+ <col-ui> (vertical) / <row-ui> (horizontal) / <grid-ui> (2D
13
+ grid with cells). Use stack-ui for badge overlays on avatars,
14
+ absolute-positioned UI on top of charts, loading spinners over
15
+ content, or any case where children must occupy the same physical
16
+ space. [align] controls how children align within the shared
17
+ cell.
10
18
  props:
11
19
  align:
12
20
  description: Alignment of stacked items
@@ -22,7 +30,13 @@ states:
22
30
  traits: []
23
31
  tokens: {}
24
32
  a2ui:
25
- rules: []
33
+ rules:
34
+ - rule: 'Overlay/layer stacking container — children occupy the same area, stacked on the z-axis.'
35
+ reason: 'Different from row/col which lay out side-by-side.'
36
+ - rule: 'Use for overlapping content (image + overlay, badge-over-avatar, drop-shadow stacks).'
37
+ reason: 'Z-axis composition.'
38
+ - rule: 'Do not use for vertical content flow — that''s <col-ui>. Stack-ui is overlap-only.'
39
+ reason: 'Naming pitfall (stack ≠ vstack).'
26
40
  anti_patterns: []
27
41
  examples:
28
42
  - name: basic-stack
@@ -50,5 +64,9 @@ examples:
50
64
  ]
51
65
  keywords:
52
66
  - stack
53
- synonyms: {}
54
- related: []
67
+ synonyms:
68
+ stack: [overlay-stack, z-stack, grid-overlay, layer]
69
+ related:
70
+ - Col
71
+ - Row
72
+ - Grid
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Stat.json",
4
4
  "title": "Stat",
5
- "description": "Metric/KPI display — value + label + optional change indicator and trend.",
5
+ "description": "Metric/KPI display — value + label + optional change indicator and trend icon. Renders as a stacked block with prominent value and small caption; supports positive/negative delta coloring. Use inside dashboard cards or summary headers; for inline percentages or progress use <progress-ui>.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -87,7 +87,11 @@
87
87
  "scoreboard"
88
88
  ],
89
89
  "name": "UIStat",
90
- "related": [],
90
+ "related": [
91
+ "Card",
92
+ "Badge",
93
+ "Progress"
94
+ ],
91
95
  "slots": {
92
96
  "change": {
93
97
  "description": "Child content region for the `change` slot."
@@ -13,8 +13,8 @@
13
13
  --stat-icon-fg: var(--a-fg-muted);
14
14
 
15
15
  /* ── Spacing ── */
16
- --stat-column-gap: var(--a-space-3);
17
- --stat-row-gap: var(--a-space-2);
16
+ --stat-column-gap: var(--a-gap);
17
+ --stat-row-gap: var(--a-gap-sm);
18
18
  }
19
19
 
20
20
  :scope {
@@ -74,6 +74,9 @@
74
74
  color: var(--stat-label-fg);
75
75
  line-height: 1.4;
76
76
  min-width: 0;
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ white-space: nowrap;
77
80
  }
78
81
 
79
82
  /* ── Change delta (under value) ── */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<stat-ui>` — Metric/KPI display — value + label + optional change indicator and trend.
2
+ * `<stat-ui>` — Metric/KPI display — value + label + optional change indicator and trend icon. Renders as a stacked block with prominent value and small caption; supports positive/negative delta coloring. Use inside dashboard cards or summary headers; for inline percentages or progress use <progress-ui>.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/stat
5
5
  *
@@ -9,7 +9,11 @@ composes:
9
9
  component: Stat
10
10
  category: display
11
11
  version: 1
12
- description: Metric/KPI display — value + label + optional change indicator and trend.
12
+ description: >-
13
+ Metric/KPI display — value + label + optional change indicator and trend
14
+ icon. Renders as a stacked block with prominent value and small caption;
15
+ supports positive/negative delta coloring. Use inside dashboard cards or
16
+ summary headers; for inline percentages or progress use <progress-ui>.
13
17
  props:
14
18
  change:
15
19
  description: Change indicator text (e.g. '+12%', '-3%')
@@ -86,7 +90,13 @@ tokens:
86
90
  --stat-value-weight:
87
91
  description: Font weight for the primary value
88
92
  a2ui:
89
- rules: []
93
+ rules:
94
+ - rule: 'Use for prominent metric/KPI displays inside dashboard cards. Value + label + optional delta indicator.'
95
+ reason: 'Canonical metric primitive — dashboard surfaces compose 3-6 of these.'
96
+ - rule: 'For inline percent/progress displays use <progress-ui>; stat is for standalone metrics, progress for completion bars.'
97
+ reason: 'Different visual + semantic role.'
98
+ - rule: 'Delta indicator uses positive/negative semantic tokens; pass change= attribute with sign.'
99
+ reason: 'Built-in trend coloring; no manual styling needed.'
90
100
  anti_patterns: []
91
101
  examples:
92
102
  - name: basic-stat
@@ -220,4 +230,7 @@ synonyms:
220
230
  - metric
221
231
  - chart
222
232
  - stat
223
- related: []
233
+ related:
234
+ - Card
235
+ - Badge
236
+ - Progress
@@ -45,7 +45,13 @@ states:
45
45
  traits: []
46
46
  tokens: {}
47
47
  a2ui:
48
- rules: []
48
+ rules:
49
+ - rule: 'Compact step indicator — N dots/segments showing current step out of total.'
50
+ reason: 'Minimal stepper visualization.'
51
+ - rule: 'Different from <stepper-ui> (labeled, expanded) — step-progress is dense and label-free.'
52
+ reason: 'Density boundary.'
53
+ - rule: 'For multi-task progress bars (multiple labeled rows) use <progress-row-ui> stack.'
54
+ reason: 'Different layout.'
49
55
  anti_patterns: []
50
56
 
51
57
  examples:
@@ -53,9 +53,19 @@
53
53
  "composes": [],
54
54
  "events": {},
55
55
  "examples": [],
56
- "keywords": [],
56
+ "keywords": [
57
+ "stepper-item",
58
+ "step",
59
+ "wizard-step",
60
+ "progress-step",
61
+ "step-row"
62
+ ],
57
63
  "name": "UIStepperItem",
58
- "related": [],
64
+ "related": [
65
+ "Stepper",
66
+ "Timeline",
67
+ "StepProgress"
68
+ ],
59
69
  "slots": {
60
70
  "description": {
61
71
  "description": "Custom description content; falls through to `[description]` prop if not slotted."
@@ -65,7 +75,14 @@
65
75
  }
66
76
  },
67
77
  "states": [],
68
- "synonyms": {},
78
+ "synonyms": {
79
+ "stepper-item": [
80
+ "step",
81
+ "wizard-step",
82
+ "progress-step",
83
+ "checkpoint"
84
+ ]
85
+ },
69
86
  "tag": "stepper-item-ui",
70
87
  "tokens": {},
71
88
  "traits": [],
@@ -43,3 +43,27 @@ slots:
43
43
  description: Custom label content; falls through to `[text]` prop if not slotted.
44
44
  description:
45
45
  description: Custom description content; falls through to `[description]` prop if not slotted.
46
+
47
+ keywords:
48
+ - stepper-item
49
+ - step
50
+ - wizard-step
51
+ - progress-step
52
+ - step-row
53
+
54
+ synonyms:
55
+ stepper-item: [step, wizard-step, progress-step, checkpoint]
56
+
57
+ related:
58
+ - Stepper
59
+ - Timeline
60
+ - StepProgress
61
+
62
+ a2ui:
63
+ rules:
64
+ - rule: 'Child of <stepper-ui> — one numbered step with label + complete/current/upcoming state.'
65
+ reason: 'Cluster contract.'
66
+ - rule: 'State driven by parent''s active-index; do not set state directly on stepper-item.'
67
+ reason: 'Parent owns step progression.'
68
+ - rule: 'For chronological events (no completion semantics) use <timeline-item-ui> instead.'
69
+ reason: 'Stepper is process; timeline is history.'
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Stepper.json",
4
4
  "title": "Stepper",
5
- "description": "Wizard / process stepper — parent step index drives numbered children.",
5
+ "description": "Wizard / process stepper — parent step index drives numbered children's complete/current/upcoming states automatically. Renders horizontally as a labeled step bar with connectors. Use for multi-step forms, onboarding, or pipelines; for read-only event history use <timeline-ui> instead.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<stepper-ui>` — Wizard / process stepper — parent step index drives numbered children.
2
+ * `<stepper-ui>` — Wizard / process stepper — parent step index drives numbered children's complete/current/upcoming states automatically. Renders horizontally as a labeled step bar with connectors. Use for multi-step forms, onboarding, or pipelines; for read-only event history use <timeline-ui> instead.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/stepper
5
5
  *
@@ -6,7 +6,12 @@ tag: stepper-ui
6
6
  component: Stepper
7
7
  category: navigation
8
8
  version: 1
9
- description: Wizard / process stepper — parent step index drives numbered children.
9
+ description: >-
10
+ Wizard / process stepper — parent step index drives numbered children's
11
+ complete/current/upcoming states automatically. Renders horizontally as
12
+ a labeled step bar with connectors. Use for multi-step forms,
13
+ onboarding, or pipelines; for read-only event history use <timeline-ui>
14
+ instead.
10
15
  # Per ADR-0027 — primitives that programmatically create other primitives
11
16
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
12
17
  composes:
@@ -30,7 +35,13 @@ states:
30
35
  traits: []
31
36
  tokens: {}
32
37
  a2ui:
33
- rules: []
38
+ rules:
39
+ - rule: 'Hosts <stepper-item-ui> children with a parent active-index driving complete/current/upcoming states.'
40
+ reason: 'Process visualization cluster.'
41
+ - rule: 'Use for wizards, onboarding flows, multi-step forms.'
42
+ reason: 'Surface examples.'
43
+ - rule: 'For read-only event history use <timeline-ui>; stepper requires forward progress semantics.'
44
+ reason: 'Decision rule vs timeline.'
34
45
  anti_patterns: []
35
46
  examples:
36
47
  - name: basic
@@ -68,7 +68,11 @@
68
68
  "stream"
69
69
  ],
70
70
  "name": "UIStream",
71
- "related": [],
71
+ "related": [
72
+ "ChatThreadUI",
73
+ "Text",
74
+ "Code"
75
+ ],
72
76
  "slots": {
73
77
  "default": {
74
78
  "description": "Default slot — primary child content."
@@ -80,7 +84,13 @@
80
84
  "name": "idle"
81
85
  }
82
86
  ],
83
- "synonyms": {},
87
+ "synonyms": {
88
+ "stream": [
89
+ "streaming-text",
90
+ "live-text",
91
+ "incremental-text"
92
+ ]
93
+ },
84
94
  "tag": "stream-ui",
85
95
  "tokens": {
86
96
  "--stream-color": {
@@ -50,7 +50,15 @@ tokens:
50
50
  --stream-line-height:
51
51
  description: Line height
52
52
  a2ui:
53
- rules: []
53
+ rules:
54
+ - rule: 'Renders an AsyncIterable<string> as streaming text — canonical for LLM token streaming.'
55
+ reason: 'Streaming primitive.'
56
+ - rule: 'Place inside <chat-thread-ui> message bodies for LLM responses; standalone for log tailing.'
57
+ reason: 'Composition pattern.'
58
+ - rule: 'pace attribute controls typewriter-effect speed; hide-cursor disables the blinking caret.'
59
+ reason: 'Visual knobs.'
60
+ - rule: 'For static (post-stream) display use <text-ui> or <richtext-ui>; stream-ui assumes live token feed.'
61
+ reason: 'Live vs static.'
54
62
  anti_patterns: []
55
63
  examples:
56
64
  - name: streaming-response
@@ -87,5 +95,9 @@ examples:
87
95
  ]
88
96
  keywords:
89
97
  - stream
90
- synonyms: {}
91
- related: []
98
+ synonyms:
99
+ stream: [streaming-text, live-text, incremental-text]
100
+ related:
101
+ - ChatThreadUI
102
+ - Text
103
+ - Code
@@ -150,7 +150,13 @@ tokens:
150
150
  --swatch-select-ring:
151
151
  description: Color of the focus + selected ring when [selectable] is set.
152
152
  a2ui:
153
- rules: []
153
+ rules:
154
+ - rule: 'Use to display a single color sample with optional label. For interactive color picking use <color-picker-ui>.'
155
+ reason: 'Swatch is read-only display; picker is input.'
156
+ - rule: 'Inside design-token displays or palette grids; not for general decoration.'
157
+ reason: 'Semantic purpose: color sample.'
158
+ - rule: 'Color value accepts hex, rgb, hsl, or oklch; oklch preferred for AdiaUI token alignment.'
159
+ reason: 'Canonical color space.'
154
160
  anti_patterns: []
155
161
  examples:
156
162
  - name: basic-swatch
@@ -95,7 +95,13 @@ states:
95
95
  traits: []
96
96
  tokens: {}
97
97
  a2ui:
98
- rules: []
98
+ rules:
99
+ - rule: 'Horizontal slide carousel with touch + arrow nav. Hosts arbitrary children as slides.'
100
+ reason: 'Slide-based content discovery.'
101
+ - rule: 'For tab-switched peer views use <tabs-ui>; swiper is for content browsing, not panel switching.'
102
+ reason: 'Different interaction model.'
103
+ - rule: 'Set autoplay attribute for timed-rotation; otherwise user-driven only.'
104
+ reason: 'Affordance knob.'
99
105
  anti_patterns: []
100
106
  examples:
101
107
  - name: image-carousel
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Switch.json",
4
4
  "title": "Switch",
5
- "description": "Toggle switch. The host IS the control.",
5
+ "description": "Toggle switch primitive — binary on/off control where the host IS\nthe control (per ADR-0025, no native <input type=\"checkbox\"> wrapped\nunderneath). Form-bearing via UIFormElement: [name], [value],\n[checked] (reflect), [required], [disabled]. Distinct from <check-ui>\n— use switch-ui for setting-style toggles (notifications on/off,\ndark mode, feature flags), check-ui for opt-in lists, terms\nacceptance, multi-select rows.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -95,7 +95,11 @@
95
95
  "switch"
96
96
  ],
97
97
  "name": "UISwitch",
98
- "related": [],
98
+ "related": [
99
+ "Check",
100
+ "Radio",
101
+ "Field"
102
+ ],
99
103
  "slots": {
100
104
  "hint": {
101
105
  "description": "Help text below the label"
@@ -4,7 +4,14 @@ tag: switch-ui
4
4
  component: Switch
5
5
  category: layout
6
6
  version: 1
7
- description: Toggle switch. The host IS the control.
7
+ description: |
8
+ Toggle switch primitive — binary on/off control where the host IS
9
+ the control (per ADR-0025, no native <input type="checkbox"> wrapped
10
+ underneath). Form-bearing via UIFormElement: [name], [value],
11
+ [checked] (reflect), [required], [disabled]. Distinct from <check-ui>
12
+ — use switch-ui for setting-style toggles (notifications on/off,
13
+ dark mode, feature flags), check-ui for opt-in lists, terms
14
+ acceptance, multi-select rows.
8
15
  props:
9
16
  name:
10
17
  description: Form field name
@@ -86,6 +93,10 @@ a2ui:
86
93
  inline via CSS attr() pattern. For settings rows (label-left, switch-right), put the descriptive text in switch-ui's own
87
94
  [label] attribute; do not introduce a field-ui wrapper. For descriptive helper text below the switch, use <text-ui variant='caption'>
88
95
  as a sibling — not field-ui's hint slot.
96
+ - rule: 'Binary on/off only — no third state. For tri-state controls use <check-ui> with [indeterminate].'
97
+ reason: 'State-model boundary vs check-ui.'
98
+ - rule: 'Use for settings toggles, feature flags, mode switches; for form gates / consent / multi-select use <check-ui> instead.'
99
+ reason: 'Semantic role — switch = setting, check = selection/acceptance.'
89
100
  anti_patterns:
90
101
  - description: Wrapping a switch-ui in field-ui. The widget already self-labels.
91
102
  wrong: "<field-ui inline label=\"Email notifications\">\n <switch-ui></switch-ui>\n</field-ui>\n"
@@ -140,4 +151,7 @@ synonyms:
140
151
  tags:
141
152
  - Toggle
142
153
  - Switch
143
- related: []
154
+ related:
155
+ - Check
156
+ - Radio
157
+ - Field