@adia-ai/web-components 0.6.21 → 0.6.23

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 (248) 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.yaml +26 -0
  93. package/components/fields/fields.yaml +7 -1
  94. package/components/footer/footer.a2ui.json +7 -1
  95. package/components/footer/footer.yaml +27 -2
  96. package/components/grid/class.js +57 -0
  97. package/components/grid/grid.a2ui.json +3 -3
  98. package/components/grid/grid.d.ts +3 -3
  99. package/components/grid/grid.yaml +22 -8
  100. package/components/header/header.a2ui.json +8 -1
  101. package/components/header/header.yaml +30 -2
  102. package/components/heatmap/heatmap.yaml +7 -1
  103. package/components/icon/icon.a2ui.json +9 -2
  104. package/components/icon/icon.d.ts +1 -1
  105. package/components/icon/icon.yaml +32 -3
  106. package/components/image/image.yaml +7 -1
  107. package/components/input/input.yaml +29 -1
  108. package/components/inspector/inspector.a2ui.json +7 -2
  109. package/components/inspector/inspector.d.ts +9 -1
  110. package/components/inspector/inspector.yaml +23 -3
  111. package/components/kbd/kbd.a2ui.json +1 -1
  112. package/components/kbd/kbd.d.ts +1 -1
  113. package/components/kbd/kbd.yaml +11 -2
  114. package/components/list/list-item.a2ui.json +21 -3
  115. package/components/list/list-item.yaml +25 -0
  116. package/components/list/list.a2ui.json +7 -2
  117. package/components/list/list.d.ts +9 -1
  118. package/components/list/list.yaml +21 -3
  119. package/components/menu/menu-divider.a2ui.json +17 -3
  120. package/components/menu/menu-divider.yaml +35 -0
  121. package/components/menu/menu-item.a2ui.json +19 -3
  122. package/components/menu/menu-item.yaml +42 -0
  123. package/components/menu/menu.a2ui.json +7 -1
  124. package/components/menu/menu.yaml +33 -2
  125. package/components/modal/modal.a2ui.json +7 -2
  126. package/components/modal/modal.d.ts +10 -1
  127. package/components/modal/modal.yaml +48 -3
  128. package/components/nav/nav.a2ui.json +16 -2
  129. package/components/nav/nav.yaml +40 -3
  130. package/components/nav-group/nav-group.a2ui.json +12 -2
  131. package/components/nav-group/nav-group.yaml +37 -3
  132. package/components/nav-item/nav-item.a2ui.json +13 -2
  133. package/components/nav-item/nav-item.yaml +40 -3
  134. package/components/noodles/noodles.a2ui.json +12 -2
  135. package/components/noodles/noodles.yaml +14 -3
  136. package/components/option-card/option-card.yaml +27 -1
  137. package/components/otp-input/otp-input.yaml +24 -1
  138. package/components/page/page.a2ui.json +7 -1
  139. package/components/page/page.yaml +9 -2
  140. package/components/pagination/pagination.a2ui.json +1 -1
  141. package/components/pagination/pagination.d.ts +1 -1
  142. package/components/pagination/pagination.yaml +13 -2
  143. package/components/pane/pane.a2ui.json +1 -1
  144. package/components/pane/pane.d.ts +7 -1
  145. package/components/pane/pane.yaml +33 -2
  146. package/components/pipeline-status/pipeline-status.a2ui.json +6 -2
  147. package/components/pipeline-status/pipeline-status.d.ts +1 -1
  148. package/components/pipeline-status/pipeline-status.yaml +18 -3
  149. package/components/popover/popover.yaml +30 -1
  150. package/components/progress/progress.a2ui.json +1 -1
  151. package/components/progress/progress.d.ts +1 -1
  152. package/components/progress/progress.yaml +13 -2
  153. package/components/progress-row/progress-row.a2ui.json +12 -2
  154. package/components/progress-row/progress-row.yaml +13 -3
  155. package/components/radio/radio.a2ui.json +1 -1
  156. package/components/radio/radio.yaml +9 -1
  157. package/components/range/range.yaml +7 -1
  158. package/components/rating/rating.a2ui.json +4 -1
  159. package/components/rating/rating.yaml +10 -2
  160. package/components/richtext/richtext.a2ui.json +6 -2
  161. package/components/richtext/richtext.d.ts +9 -1
  162. package/components/richtext/richtext.yaml +20 -3
  163. package/components/row/class.js +50 -0
  164. package/components/row/row.a2ui.json +17 -6
  165. package/components/row/row.d.ts +14 -5
  166. package/components/row/row.yaml +36 -8
  167. package/components/search/search.a2ui.json +5 -1
  168. package/components/search/search.yaml +11 -2
  169. package/components/section/section.a2ui.json +7 -1
  170. package/components/section/section.yaml +36 -2
  171. package/components/segment/segment.a2ui.json +8 -2
  172. package/components/segment/segment.d.ts +7 -1
  173. package/components/segment/segment.yaml +16 -3
  174. package/components/segmented/segmented.a2ui.json +6 -1
  175. package/components/segmented/segmented.css +5 -0
  176. package/components/segmented/segmented.yaml +12 -2
  177. package/components/select/select.a2ui.json +1 -1
  178. package/components/select/select.yaml +34 -2
  179. package/components/skeleton/skeleton.a2ui.json +7 -2
  180. package/components/skeleton/skeleton.d.ts +1 -1
  181. package/components/skeleton/skeleton.yaml +17 -3
  182. package/components/slider/slider.yaml +7 -1
  183. package/components/stack/stack.a2ui.json +14 -3
  184. package/components/stack/stack.d.ts +9 -1
  185. package/components/stack/stack.yaml +22 -4
  186. package/components/stat/stat.a2ui.json +6 -2
  187. package/components/stat/stat.css +5 -2
  188. package/components/stat/stat.d.ts +1 -1
  189. package/components/stat/stat.yaml +16 -3
  190. package/components/step-progress/step-progress.yaml +7 -1
  191. package/components/stepper/stepper-item.a2ui.json +20 -3
  192. package/components/stepper/stepper-item.yaml +24 -0
  193. package/components/stepper/stepper.a2ui.json +1 -1
  194. package/components/stepper/stepper.d.ts +1 -1
  195. package/components/stepper/stepper.yaml +13 -2
  196. package/components/stream/stream.a2ui.json +12 -2
  197. package/components/stream/stream.yaml +15 -3
  198. package/components/swatch/swatch.yaml +7 -1
  199. package/components/swiper/swiper.yaml +7 -1
  200. package/components/switch/switch.a2ui.json +6 -2
  201. package/components/switch/switch.yaml +16 -2
  202. package/components/table/cell-types.js +23 -10
  203. package/components/table/class.js +6 -2
  204. package/components/table/table.css +49 -1
  205. package/components/table/table.yaml +27 -1
  206. package/components/table-toolbar/table-toolbar.yaml +27 -1
  207. package/components/tabs/tab.a2ui.json +17 -3
  208. package/components/tabs/tab.yaml +39 -0
  209. package/components/tabs/tabs.a2ui.json +1 -1
  210. package/components/tabs/tabs.d.ts +1 -1
  211. package/components/tabs/tabs.yaml +36 -2
  212. package/components/tag/tag.a2ui.json +6 -2
  213. package/components/tag/tag.d.ts +9 -1
  214. package/components/tag/tag.yaml +38 -3
  215. package/components/text/class.js +13 -0
  216. package/components/text/text.a2ui.json +9 -2
  217. package/components/text/text.d.ts +1 -1
  218. package/components/text/text.yaml +12 -5
  219. package/components/textarea/textarea.a2ui.json +15 -3
  220. package/components/textarea/textarea.yaml +41 -4
  221. package/components/timeline/timeline-item.a2ui.json +20 -3
  222. package/components/timeline/timeline-item.yaml +24 -0
  223. package/components/timeline/timeline.a2ui.json +8 -1
  224. package/components/timeline/timeline.yaml +9 -2
  225. package/components/toast/toast.a2ui.json +6 -2
  226. package/components/toast/toast.yaml +19 -3
  227. package/components/toggle-group/toggle-group.a2ui.json +13 -3
  228. package/components/toggle-group/toggle-group.d.ts +1 -1
  229. package/components/toggle-group/toggle-group.yaml +19 -4
  230. package/components/toggle-group/toggle-option.a2ui.json +18 -3
  231. package/components/toggle-group/toggle-option.yaml +23 -0
  232. package/components/toggle-scheme/toggle-scheme.yaml +4 -0
  233. package/components/toolbar/toolbar-group.a2ui.json +18 -3
  234. package/components/toolbar/toolbar-group.yaml +23 -0
  235. package/components/toolbar/toolbar.yaml +7 -1
  236. package/components/tooltip/tooltip.yaml +24 -1
  237. package/components/tree/tree-item.a2ui.json +19 -3
  238. package/components/tree/tree-item.yaml +42 -0
  239. package/components/tree/tree.a2ui.json +6 -1
  240. package/components/tree/tree.yaml +31 -2
  241. package/components/upload/upload.yaml +7 -1
  242. package/core/index.js +1 -0
  243. package/core/responsive.d.ts +29 -0
  244. package/core/responsive.js +120 -0
  245. package/core/responsive.test.js +121 -0
  246. package/package.json +1 -1
  247. package/styles/tokens.css +6 -6
  248. package/styles/typography.css +1 -0
@@ -87,7 +87,11 @@
87
87
  "menu"
88
88
  ],
89
89
  "name": "UINavGroup",
90
- "related": [],
90
+ "related": [
91
+ "Nav",
92
+ "NavItem",
93
+ "Accordion"
94
+ ],
91
95
  "slots": {
92
96
  "default": {
93
97
  "description": "Children — typically <nav-item-ui> rows."
@@ -106,7 +110,13 @@
106
110
  "name": "open"
107
111
  }
108
112
  ],
109
- "synonyms": {},
113
+ "synonyms": {
114
+ "nav-group": [
115
+ "nav-section",
116
+ "sidebar-group",
117
+ "menu-group"
118
+ ]
119
+ },
110
120
  "tag": "nav-group-ui",
111
121
  "tokens": {},
112
122
  "traits": [],
@@ -72,10 +72,44 @@ states:
72
72
  traits: []
73
73
  tokens: {}
74
74
  a2ui:
75
- rules: []
75
+ rules:
76
+ - >-
77
+ Composition: <nav-group-ui> MUST be a direct child of <nav-ui>
78
+ (or standalone with explicit variant="section" outside a rail).
79
+ Default slot accepts <nav-item-ui> children; do NOT wrap them in
80
+ layout primitives — selection, keyboard, and the section-variant
81
+ cascade all rely on direct descendancy.
82
+ - >-
83
+ Variant cascade: when parent <nav-ui variant="section">, this
84
+ group inherits section styling (static kicker header, children
85
+ always visible) via CSS — without touching its JS state. Set
86
+ [variant="section"] explicitly only when there is no <nav-ui>
87
+ parent, OR to override a primary-rail context.
88
+ - >-
89
+ Collapsibility: primary variant — [collapsible] (default true)
90
+ toggles [open] via header click / Enter / Space; fires
91
+ `group-toggle` event with detail {text, open}. When the parent
92
+ <nav-ui> is collapsed to icon-only, the header opens a popover
93
+ with this group's children instead. Section variant ignores
94
+ [open] / [collapsible] (children always visible).
95
+ - >-
96
+ Decision rule: use <nav-group-ui> to group ≥2 related navigation
97
+ links under one label inside <nav-ui>. For a single link, use
98
+ <nav-item-ui> directly. For switching sub-views inside one page,
99
+ use <tabs-ui> / <tab-ui>, never <nav-group-ui>.
100
+ - >-
101
+ Anti-patterns: do NOT nest <nav-group-ui> inside another
102
+ <nav-group-ui> (flatten the hierarchy or split into two groups).
103
+ Do NOT place non-<nav-item-ui> content in the default slot. Do
104
+ NOT use it as a generic disclosure — for that use <accordion-ui>
105
+ or <details>.
76
106
  anti_patterns: []
77
107
  examples: []
78
108
 
79
109
  keywords: [nav, navigation, group, sidebar, menu]
80
- synonyms: {}
81
- related: []
110
+ synonyms:
111
+ nav-group: [nav-section, sidebar-group, menu-group]
112
+ related:
113
+ - Nav
114
+ - NavItem
115
+ - Accordion
@@ -95,7 +95,12 @@
95
95
  "sidebar"
96
96
  ],
97
97
  "name": "UINavItem",
98
- "related": [],
98
+ "related": [
99
+ "Nav",
100
+ "NavGroup",
101
+ "Button",
102
+ "Tab"
103
+ ],
99
104
  "slots": {
100
105
  "default": {
101
106
  "description": "Optional override of the default icon + text + badge stamping."
@@ -115,7 +120,13 @@
115
120
  "name": "disabled"
116
121
  }
117
122
  ],
118
- "synonyms": {},
123
+ "synonyms": {
124
+ "nav-item": [
125
+ "nav-link",
126
+ "sidebar-item",
127
+ "menu-link"
128
+ ]
129
+ },
119
130
  "tag": "nav-item-ui",
120
131
  "tokens": {},
121
132
  "traits": [],
@@ -78,10 +78,47 @@ states:
78
78
  traits: []
79
79
  tokens: {}
80
80
  a2ui:
81
- rules: []
81
+ rules:
82
+ - >-
83
+ Composition: <nav-item-ui> MUST be a direct child of <nav-ui> or
84
+ <nav-group-ui>. Never wrap in <col-ui> / <row-ui> / <li> / <a> —
85
+ the item is already a focusable, accessible link element;
86
+ wrapping breaks selection, ARIA, and the section-variant CSS
87
+ cascade.
88
+ - >-
89
+ Variant cascade: when an ancestor <nav-ui variant="section"> (or
90
+ sibling-group with section variant) is present, this item
91
+ inherits section styling (flat row, no reserved icon space when
92
+ icon absent, left-edge selected accent) via CSS. Set
93
+ [variant="section"] explicitly only when used standalone outside
94
+ a section rail, or [variant="primary"] to override the cascade
95
+ for a single highlighted item.
96
+ - >-
97
+ Selection: [selected] is set by the parent <nav-ui>'s select()
98
+ method; do NOT set it on multiple items simultaneously. Provide
99
+ [value] as a route or anchor; consumers listen for `nav-select`
100
+ on <nav-ui> rather than per-item.
101
+ - >-
102
+ Decision rule: use <nav-item-ui> for a single navigable link
103
+ (route or anchor). For an in-page view toggle, use <tab-ui>. For
104
+ a popover menu action, use <menu-item-ui>. For an action button
105
+ styled like a nav row, use <button-ui variant="ghost"> — not
106
+ <nav-item-ui>.
107
+ - >-
108
+ Authoring options: default stamping renders icon+text+badge from
109
+ attributes. Named slots `icon`, `text`, `trailing` are also
110
+ supported for custom content (e.g. a `<kbd slot="trailing">⌘K</kbd>`
111
+ shortcut hint on a command-trigger item — see the admin-shell
112
+ playground). Do NOT nest <nav-item-ui> inside another
113
+ <nav-item-ui>.
82
114
  anti_patterns: []
83
115
  examples: []
84
116
 
85
117
  keywords: [nav, navigation, item, link, sidebar]
86
- synonyms: {}
87
- related: []
118
+ synonyms:
119
+ nav-item: [nav-link, sidebar-item, menu-link]
120
+ related:
121
+ - Nav
122
+ - NavGroup
123
+ - Button
124
+ - Tab
@@ -156,7 +156,10 @@
156
156
  "noodles"
157
157
  ],
158
158
  "name": "UINoodles",
159
- "related": [],
159
+ "related": [
160
+ "Canvas",
161
+ "EditorCanvas"
162
+ ],
160
163
  "slots": {},
161
164
  "states": [
162
165
  {
@@ -169,7 +172,14 @@
169
172
  "name": "disabled"
170
173
  }
171
174
  ],
172
- "synonyms": {},
175
+ "synonyms": {
176
+ "noodles": [
177
+ "connection-curve",
178
+ "wire",
179
+ "edge-line",
180
+ "bezier-wire"
181
+ ]
182
+ },
173
183
  "tag": "noodles-ui",
174
184
  "tokens": {
175
185
  "--noodles-duration": {
@@ -118,7 +118,15 @@ tokens:
118
118
  --noodles-easing:
119
119
  description: Easing function for noodle animations
120
120
  a2ui:
121
- rules: []
121
+ rules:
122
+ - rule: 'SVG connection lines between children with declared ports — bezier (default), step, or straight curves.'
123
+ reason: 'Node-graph connector primitive.'
124
+ - rule: 'Place inside <canvas-ui> with port-declaring children (nodes); noodles draws connections between matching port refs.'
125
+ reason: 'Canvas + ports composition.'
126
+ - rule: 'editable attribute enables drag-to-connect interactions; default is render-only.'
127
+ reason: 'Read vs write mode.'
128
+ - rule: 'For data-flow visualizations only — for general-purpose lines/shapes use raw SVG.'
129
+ reason: 'Scope discipline.'
122
130
  anti_patterns: []
123
131
  examples:
124
132
  - name: basic-noodles
@@ -146,5 +154,8 @@ examples:
146
154
  ]
147
155
  keywords:
148
156
  - noodles
149
- synonyms: {}
150
- related: []
157
+ synonyms:
158
+ noodles: [connection-curve, wire, edge-line, bezier-wire]
159
+ related:
160
+ - Canvas
161
+ - EditorCanvas
@@ -160,7 +160,33 @@ tokens:
160
160
  --option-card-easing:
161
161
  description: Transition easing.
162
162
  a2ui:
163
- rules: []
163
+ rules:
164
+ - >-
165
+ Use <option-card-ui> for one-of-N choices where each option
166
+ needs a heading + description, a leading icon, or both
167
+ (onboarding personas, plan tiers, source pickers). Use
168
+ <radio-ui> for dense forms with short labels and no
169
+ descriptions. Use <segmented-ui> for compact horizontal
170
+ single-select with short labels.
171
+ - >-
172
+ Group siblings by sharing the same [name] attribute — they
173
+ auto-form a radiogroup. Form participation is implicit via
174
+ UIFormElement: submits `name=value` with parent form. Wrap the
175
+ group in <col-ui gap="2"> for default layout or <grid-ui> for
176
+ [layout="tile"] hero pickers.
177
+ - >-
178
+ Set [checked] on the recommended / default option. Never leave
179
+ the group with zero checked at first paint unless [required] is
180
+ set and the form intentionally demands a deliberate choice.
181
+ - >-
182
+ Use [layout="tile"] only for hero pickers (3–4 options max)
183
+ where the icon is a primary brand cue (plan tiers, role pickers).
184
+ Use [layout="default"] (left-indicator) for everything else.
185
+ - >-
186
+ Put conditional follow-up inputs (a <textarea-ui> on "Other", a
187
+ <select-ui> on "Custom") in the default slot — the spillover
188
+ content auto-hides when the card is not checked. Do NOT
189
+ duplicate this visibility logic in JS.
164
190
  anti_patterns: []
165
191
  examples:
166
192
  - name: use-case-picker
@@ -54,7 +54,30 @@ states:
54
54
  traits: []
55
55
  tokens: {}
56
56
  a2ui:
57
- rules: []
57
+ rules:
58
+ - >-
59
+ Use <otp-input-ui> for any fixed-length verification code (TOTP,
60
+ email / SMS OTP, MFA enrollment) — NOT <input-ui type="number">.
61
+ otp-input-ui provides per-digit focus management, paste-splitting
62
+ of full codes, and the `complete` event that fires exactly once
63
+ when all digits are filled.
64
+ - >-
65
+ Always set [autocomplete="one-time-code"] so iOS / Android
66
+ keyboards surface inbound SMS codes via the platform autofill UI.
67
+ - >-
68
+ Listen for `complete` to auto-submit (fires exactly once per
69
+ fill cycle), and `change` / `input` for live validation. Form
70
+ participation is implicit via UIFormElement: [name] for
71
+ FormData; [disabled] reflects.
72
+ - >-
73
+ Default [length=6]. Use [length=4] only for legacy 4-digit SMS
74
+ codes and [length=8] for backup codes. Never compose two
75
+ <otp-input-ui> side-by-side — use a single one with the right
76
+ length.
77
+ - >-
78
+ Canonical placement: inside a <col-ui align="center"> beneath a
79
+ description text. Do NOT wrap in <field-ui> — otp-input-ui has
80
+ no label slot and visual centering is the canonical chrome.
58
81
  anti_patterns: []
59
82
  examples:
60
83
  - name: otp-form
@@ -99,7 +99,13 @@
99
99
  "name": "header-stuck"
100
100
  }
101
101
  ],
102
- "synonyms": {},
102
+ "synonyms": {
103
+ "page": [
104
+ "page-container",
105
+ "route-surface",
106
+ "content-surface"
107
+ ]
108
+ },
103
109
  "tag": "page-ui",
104
110
  "tokens": {},
105
111
  "traits": [],
@@ -74,7 +74,13 @@ states:
74
74
  traits: []
75
75
  tokens: {}
76
76
  a2ui:
77
- rules: []
77
+ rules:
78
+ - rule: 'Top-level page container — wraps an entire route''s content surface.'
79
+ reason: 'Page-level chrome primitive.'
80
+ - rule: 'Inside <admin-shell-ui>, <chat-shell-ui>, or <editor-shell-ui>, use the shell''s own body slot instead; page-ui is for standalone routes without shell chrome.'
81
+ reason: 'Shell hosting precedence.'
82
+ - rule: 'Hosts arbitrary children — no enforced child contract.'
83
+ reason: 'Generic container.'
78
84
  anti_patterns: []
79
85
  examples:
80
86
  - name: prose-page
@@ -139,7 +145,8 @@ keywords:
139
145
  - padding
140
146
  - prose-page
141
147
  - dashboard-page
142
- synonyms: {}
148
+ synonyms:
149
+ page: [page-container, route-surface, content-surface]
143
150
  related:
144
151
  - app-shell
145
152
  - card
@@ -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/Pagination.json",
4
4
  "title": "Pagination",
5
- "description": "Page navigation with prev/next buttons, page numbers, and ellipsis.",
5
+ "description": "Page navigation with prev/next buttons, page numbers, and ellipsis. Emits page-change events when buttons are clicked; visible page-number range is automatically truncated for high page counts. Use below tables, card grids, or list views; for cursor-based pagination use a custom load-more <button-ui> instead.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<pagination-ui>` — Page navigation with prev/next buttons, page numbers, and ellipsis.
2
+ * `<pagination-ui>` — Page navigation with prev/next buttons, page numbers, and ellipsis. Emits page-change events when buttons are clicked; visible page-number range is automatically truncated for high page counts. Use below tables, card grids, or list views; for cursor-based pagination use a custom load-more <button-ui> instead.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/pagination
5
5
  *
@@ -6,7 +6,12 @@ tag: pagination-ui
6
6
  component: Pagination
7
7
  category: navigation
8
8
  version: 1
9
- description: Page navigation with prev/next buttons, page numbers, and ellipsis.
9
+ description: >-
10
+ Page navigation with prev/next buttons, page numbers, and ellipsis.
11
+ Emits page-change events when buttons are clicked; visible page-number
12
+ range is automatically truncated for high page counts. Use below tables,
13
+ card grids, or list views; for cursor-based pagination use a custom
14
+ load-more <button-ui> instead.
10
15
  props:
11
16
  page:
12
17
  description: Current active page number.
@@ -38,7 +43,13 @@ states:
38
43
  traits: []
39
44
  tokens: {}
40
45
  a2ui:
41
- rules: []
46
+ rules:
47
+ - rule: 'Renders below tables, card grids, or list views for paginated data. Emits page-change events.'
48
+ reason: 'Standard pagination affordance.'
49
+ - rule: 'For cursor-based / infinite-scroll patterns use a custom load-more <button-ui> instead; pagination-ui is offset-based.'
50
+ reason: 'Pagination model boundary.'
51
+ - rule: 'Page-number range auto-truncates with ellipsis for high counts; set siblings= to control visible window size.'
52
+ reason: 'Layout knob.'
42
53
  anti_patterns: []
43
54
  examples:
44
55
  - name: data-table-view
@@ -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/Pane.json",
4
4
  "title": "Pane",
5
- "description": "Collapsible, resizable panel.",
5
+ "description": "Collapsible, resizable content panel — drag-resize handle on the\ninner edge when [side=\"leading\"] / [side=\"trailing\"], [resizable]\nopt-in. Used standalone for resizable two-pane layouts, or wrapped\nby <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the\ninner pane-ui rather than reimplementing it. See pane.yaml's\na2ui.rules for the full composition contract.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -1,5 +1,11 @@
1
1
  /**
2
- * `<pane-ui>` — Collapsible, resizable panel.
2
+ * `<pane-ui>` — Collapsible, resizable content panel — drag-resize handle on the
3
+ inner edge when [side="leading"] / [side="trailing"], [resizable]
4
+ opt-in. Used standalone for resizable two-pane layouts, or wrapped
5
+ by <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the
6
+ inner pane-ui rather than reimplementing it. See pane.yaml's
7
+ a2ui.rules for the full composition contract.
8
+
3
9
  *
4
10
  * @see https://ui-kit.exe.xyz/site/components/pane
5
11
  *
@@ -4,7 +4,13 @@ tag: pane-ui
4
4
  component: Pane
5
5
  category: layout
6
6
  version: 1
7
- description: Collapsible, resizable panel.
7
+ description: |
8
+ Collapsible, resizable content panel — drag-resize handle on the
9
+ inner edge when [side="leading"] / [side="trailing"], [resizable]
10
+ opt-in. Used standalone for resizable two-pane layouts, or wrapped
11
+ by <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the
12
+ inner pane-ui rather than reimplementing it. See pane.yaml's
13
+ a2ui.rules for the full composition contract.
8
14
  # Per ADR-0027 — primitives that programmatically create other primitives
9
15
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
10
16
  composes:
@@ -63,7 +69,32 @@ tokens: {}
63
69
  requiredIcons:
64
70
  - caret-right
65
71
  a2ui:
66
- rules: []
72
+ rules:
73
+ - >-
74
+ pane-ui is a resizable / collapsible content panel. As a standalone
75
+ primitive (no [side] attribute), it carries its own four-sided
76
+ chrome and a right-edge resize grabber. As a horizontal-sibling
77
+ child of a layout container (set [side="leading"] or
78
+ [side="trailing"]), the chrome and grabber move to the inner
79
+ edge so adjacent panes share a single seam.
80
+ - >-
81
+ Wrapped by <editor-sidebar slot="leading|trailing"> inside
82
+ <editor-shell>, and by <admin-sidebar slot="leading|trailing">
83
+ inside <admin-shell>. The bespoke sidebar owns [collapsed] /
84
+ [resizing] reflected state + localStorage persistence; the inner
85
+ pane-ui owns the physical drag. Don't reimplement drag in the
86
+ bespoke sidebar — delegate to <pane-ui resizable>.
87
+ - >-
88
+ Inner shape inside a pane-ui is the conventional
89
+ <header> + <section> + optional <footer> slot pattern. Headers
90
+ carry [slot="action"] button clusters; sections hold the
91
+ navigator tree, inspector form rows, or other primary content.
92
+ - >-
93
+ For a standalone resizable two-pane layout (no shell), nest panes
94
+ directly inside a flex row — both with [side]-typed chrome —
95
+ and the resize handle will live on the seam between them. For
96
+ a non-resizable summary pane (a fixed-width detail rail), drop
97
+ [resizable] and pane-ui collapses to a static container.
67
98
  anti_patterns: []
68
99
  examples:
69
100
  - name: markdown-editor
@@ -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/PipelineStatus.json",
4
4
  "title": "PipelineStatus",
5
- "description": "<pipeline-status-ui> — Single updating pipeline status indicator.",
5
+ "description": "Single updating pipeline status indicator showing current step and progress. Renders inline as a status pill with optional progress bar; updates via the status property. Use for long-running agent or build pipelines; for multi-step wizards use <stepper-ui> instead.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -70,7 +70,11 @@
70
70
  "status"
71
71
  ],
72
72
  "name": "UIPipelineStatus",
73
- "related": [],
73
+ "related": [
74
+ "AgentTrace",
75
+ "Stepper",
76
+ "StepProgress"
77
+ ],
74
78
  "slots": {
75
79
  "default": {
76
80
  "description": "Default slot — primary child content."
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<pipeline-status-ui>` — <pipeline-status-ui> — Single updating pipeline status indicator.
2
+ * `<pipeline-status-ui>` — Single updating pipeline status indicator showing current step and progress. Renders inline as a status pill with optional progress bar; updates via the status property. Use for long-running agent or build pipelines; for multi-step wizards use <stepper-ui> instead.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/pipeline-status
5
5
  *
@@ -4,7 +4,11 @@ tag: pipeline-status-ui
4
4
  component: PipelineStatus
5
5
  category: agent
6
6
  version: 1
7
- description: <pipeline-status-ui> — Single updating pipeline status indicator.
7
+ description: >-
8
+ Single updating pipeline status indicator showing current step and
9
+ progress. Renders inline as a status pill with optional progress bar;
10
+ updates via the status property. Use for long-running agent or build
11
+ pipelines; for multi-step wizards use <stepper-ui> instead.
8
12
  props:
9
13
  complete:
10
14
  description: 'Component property: complete.'
@@ -28,7 +32,15 @@ states:
28
32
  traits: []
29
33
  tokens: {}
30
34
  a2ui:
31
- rules: []
35
+ rules:
36
+ - rule: 'Single updating pipeline status indicator — status pill with optional progress bar.'
37
+ reason: 'Long-running task indicator.'
38
+ - rule: 'stage + complete + message attributes drive the current display state.'
39
+ reason: 'State contract.'
40
+ - rule: 'For multi-step wizards use <stepper-ui>; for chronological history use <timeline-ui>; pipeline-status is a single current-state pill.'
41
+ reason: 'Sibling boundary.'
42
+ - rule: 'Renders inline — place inside toolbars, status bars, or agent message bodies.'
43
+ reason: 'Composition contract.'
32
44
  anti_patterns: []
33
45
  examples:
34
46
  - name: basic-pipeline-status
@@ -58,4 +70,7 @@ synonyms:
58
70
  - job-status
59
71
  - deploy-status
60
72
  - pipeline-indicator
61
- related: []
73
+ related:
74
+ - AgentTrace
75
+ - Stepper
76
+ - StepProgress
@@ -46,7 +46,36 @@ states:
46
46
  traits: []
47
47
  tokens: {}
48
48
  a2ui:
49
- rules: []
49
+ rules:
50
+ - >-
51
+ <popover-ui> wraps a focusable trigger (slot="trigger", typically
52
+ <button-ui>) + arbitrary interactive content (slot="content").
53
+ Never put bare text in slot="trigger" — it must be focusable so
54
+ keyboard users can open the popover.
55
+ - >-
56
+ Decision rule vs adjacent surfaces. (a) For a list of action
57
+ items use <menu-ui> instead — menu-ui is the specialized
58
+ popover with role=menu + roving tabindex. (b) For read-only
59
+ hover hints use <tooltip-ui>. (c) For centered focus-trapping
60
+ dialogs use <modal-ui>. (d) For edge-anchored multi-field forms
61
+ use <drawer-ui>. popover-ui is the GENERAL anchored surface for
62
+ everything else (inline forms, color pickers, theme panels,
63
+ export menus with non-action content).
64
+ - >-
65
+ Use [placement="bottom-end"] for topbar overflow / settings
66
+ buttons; [placement="bottom-start"] for inline form fields;
67
+ top-* variants when trigger sits low in the viewport
68
+ (statusbar). [gap] (default 4px) controls offset from anchor.
69
+ - >-
70
+ [trigger="hover"] is for non-essential disclosure only — never
71
+ use it for popovers containing inputs, destructive actions, or
72
+ anything the user must interact with via keyboard. Default
73
+ [trigger="click"] for everything interactive.
74
+ - >-
75
+ Do NOT nest <modal-ui> or <drawer-ui> inside slot="content";
76
+ popovers are non-modal anchored surfaces, not dialog hosts.
77
+ Stacking dialog surfaces inside a popover breaks focus
78
+ management.
50
79
  anti_patterns: []
51
80
  examples:
52
81
  - name: popover-demo
@@ -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/Progress.json",
4
4
  "title": "Progress",
5
- "description": "Progress indicator. Bar (default) or spinner. Value < 0 = indeterminate.",
5
+ "description": "Progress indicator with bar (default) or spinner variant. Value < 0 marks indeterminate state showing animated activity instead of a fill. Use inside <progress-row-ui> for labeled task lists or standalone for global loading indicators; for percent-complete inline displays use <stat-ui> instead.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<progress-ui>` — Progress indicator. Bar (default) or spinner. Value < 0 = indeterminate.
2
+ * `<progress-ui>` — Progress indicator with bar (default) or spinner variant. Value < 0 marks indeterminate state showing animated activity instead of a fill. Use inside <progress-row-ui> for labeled task lists or standalone for global loading indicators; for percent-complete inline displays use <stat-ui> instead.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/progress
5
5
  *
@@ -4,7 +4,12 @@ tag: progress-ui
4
4
  component: Progress
5
5
  category: display
6
6
  version: 1
7
- description: Progress indicator. Bar (default) or spinner. Value < 0 = indeterminate.
7
+ description: >-
8
+ Progress indicator with bar (default) or spinner variant. Value < 0
9
+ marks indeterminate state showing animated activity instead of a fill.
10
+ Use inside <progress-row-ui> for labeled task lists or standalone for
11
+ global loading indicators; for percent-complete inline displays use
12
+ <stat-ui> instead.
8
13
  props:
9
14
  value:
10
15
  description: Current progress. 0..max (or 0..1 when max omitted). null = indeterminate (legacy -1 accepted for back-compat).
@@ -36,7 +41,13 @@ states:
36
41
  traits: []
37
42
  tokens: {}
38
43
  a2ui:
39
- rules: []
44
+ rules:
45
+ - rule: 'Use for in-progress task feedback with known or indeterminate state. Value < 0 = indeterminate animation.'
46
+ reason: 'Same primitive for both modes; consumer controls via value.'
47
+ - rule: 'For labeled task lists (multiple progress bars with row labels), use <progress-row-ui> instead.'
48
+ reason: 'Progress-row composes <progress-ui> + label + value display.'
49
+ - rule: 'Spinner variant (variant=''spinner'') for circular loading indicators; bar variant default for linear.'
50
+ reason: 'Two visual modes.'
40
51
  anti_patterns: []
41
52
  examples:
42
53
  - name: dashboard
@@ -70,7 +70,11 @@
70
70
  "row"
71
71
  ],
72
72
  "name": "UIProgressRow",
73
- "related": [],
73
+ "related": [
74
+ "Progress",
75
+ "StepProgress",
76
+ "List"
77
+ ],
74
78
  "slots": {
75
79
  "label": {
76
80
  "description": "Label region — control label."
@@ -85,7 +89,13 @@
85
89
  "name": "idle"
86
90
  }
87
91
  ],
88
- "synonyms": {},
92
+ "synonyms": {
93
+ "progress-row": [
94
+ "task-row",
95
+ "progress-line",
96
+ "labeled-progress"
97
+ ]
98
+ },
89
99
  "tag": "progress-row-ui",
90
100
  "tokens": {},
91
101
  "traits": [],
@@ -48,7 +48,13 @@ states:
48
48
  traits: []
49
49
  tokens: {}
50
50
  a2ui:
51
- rules: []
51
+ rules:
52
+ - rule: 'Labeled progress row — composes a label + <progress-ui> + optional value display in one horizontal row.'
53
+ reason: 'Common form for task-list progress.'
54
+ - rule: 'For standalone progress bars without a row context use <progress-ui> directly.'
55
+ reason: 'Composition boundary.'
56
+ - rule: 'Inside lists (multiple tasks with progress) stack multiple progress-rows in a <col-ui>.'
57
+ reason: 'Composition pattern.'
52
58
  anti_patterns: []
53
59
  examples:
54
60
  - name: basic-progress-row
@@ -80,5 +86,9 @@ keywords:
80
86
  - progress-row
81
87
  - progress
82
88
  - row
83
- synonyms: {}
84
- related: []
89
+ synonyms:
90
+ progress-row: [task-row, progress-line, labeled-progress]
91
+ related:
92
+ - Progress
93
+ - StepProgress
94
+ - List