@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/Inspector.json",
4
4
  "title": "Inspector",
5
- "description": "Developer tools pane for inspecting A2UI state.",
5
+ "description": "Developer-tools pane for inspecting A2UI runtime state — composes\n<tabs-ui> + <code-ui> to show the live document JSON, rendered\nHTML, and event log for the bound <canvas-ui> / <a2ui-root>. The\nright-pane inspector of the a2ui-editor app. Use inside an\n<editor-sidebar slot=\"trailing\"> for debugging A2UI playgrounds;\nnot for end-user inspector panes (build those bespoke with\n<field-ui> + form rows per the editor-inspector-pane recipe in\npatterns-recipes.md).\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -46,7 +46,12 @@
46
46
  "inspector"
47
47
  ],
48
48
  "name": "UIInspector",
49
- "related": [],
49
+ "related": [
50
+ "A2uiRoot",
51
+ "EditorSidebar",
52
+ "Code",
53
+ "Tabs"
54
+ ],
50
55
  "slots": {
51
56
  "default": {
52
57
  "description": "Default slot — primary child content."
@@ -1,5 +1,13 @@
1
1
  /**
2
- * `<inspector-ui>` — Developer tools pane for inspecting A2UI state.
2
+ * `<inspector-ui>` — Developer-tools pane for inspecting A2UI runtime state — composes
3
+ <tabs-ui> + <code-ui> to show the live document JSON, rendered
4
+ HTML, and event log for the bound <canvas-ui> / <a2ui-root>. The
5
+ right-pane inspector of the a2ui-editor app. Use inside an
6
+ <editor-sidebar slot="trailing"> for debugging A2UI playgrounds;
7
+ not for end-user inspector panes (build those bespoke with
8
+ <field-ui> + form rows per the editor-inspector-pane recipe in
9
+ patterns-recipes.md).
10
+
3
11
  *
4
12
  * @see https://ui-kit.exe.xyz/site/components/inspector
5
13
  *
@@ -4,7 +4,15 @@ tag: inspector-ui
4
4
  component: Inspector
5
5
  category: agent
6
6
  version: 1
7
- description: Developer tools pane for inspecting A2UI state.
7
+ description: |
8
+ Developer-tools pane for inspecting A2UI runtime state — composes
9
+ <tabs-ui> + <code-ui> to show the live document JSON, rendered
10
+ HTML, and event log for the bound <canvas-ui> / <a2ui-root>. The
11
+ right-pane inspector of the a2ui-editor app. Use inside an
12
+ <editor-sidebar slot="trailing"> for debugging A2UI playgrounds;
13
+ not for end-user inspector panes (build those bespoke with
14
+ <field-ui> + form rows per the editor-inspector-pane recipe in
15
+ patterns-recipes.md).
8
16
  # Per ADR-0027 — primitives that programmatically create other primitives
9
17
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
10
18
  composes:
@@ -26,7 +34,15 @@ states:
26
34
  traits: []
27
35
  tokens: {}
28
36
  a2ui:
29
- rules: []
37
+ rules:
38
+ - rule: 'Developer-tools pane for A2UI runtime state — composes <tabs-ui> + <code-ui> internally.'
39
+ reason: 'Devtools composition.'
40
+ - rule: 'Binds to a <canvas-ui> / <a2ui-root> via value= or implicit selector; shows live doc JSON + rendered HTML + event log.'
41
+ reason: 'Binding contract.'
42
+ - rule: 'Use only in dev/debug surfaces; not for product UI.'
43
+ reason: 'Surface scope.'
44
+ - rule: 'Place in a right-pane inside <editor-shell-ui>''s editor-sidebar slot for editor-style inspector layouts.'
45
+ reason: 'Canonical inspector placement.'
30
46
  anti_patterns: []
31
47
  examples:
32
48
  - name: basic-inspector
@@ -42,4 +58,8 @@ synonyms:
42
58
  - property-grid
43
59
  - record-detail
44
60
  - devtools-pane
45
- related: []
61
+ related:
62
+ - A2uiRoot
63
+ - EditorSidebar
64
+ - Code
65
+ - Tabs
@@ -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/Kbd.json",
4
4
  "title": "Kbd",
5
- "description": "Keyboard key cap. Purely decorative, content from innerHTML.",
5
+ "description": "Keyboard key cap. Purely decorative, content from innerHTML — typically a single key or short chord like \"⌘K\" or \"Ctrl+Shift+P\". Use inline in menu items, tooltips, command hints, and shortcut documentation.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<kbd-ui>` — Keyboard key cap. Purely decorative, content from innerHTML.
2
+ * `<kbd-ui>` — Keyboard key cap. Purely decorative, content from innerHTML — typically a single key or short chord like "⌘K" or "Ctrl+Shift+P". Use inline in menu items, tooltips, command hints, and shortcut documentation.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/kbd
5
5
  *
@@ -4,7 +4,10 @@ tag: kbd-ui
4
4
  component: Kbd
5
5
  category: display
6
6
  version: 1
7
- description: Keyboard key cap. Purely decorative, content from innerHTML.
7
+ description: >-
8
+ Keyboard key cap. Purely decorative, content from innerHTML — typically
9
+ a single key or short chord like "⌘K" or "Ctrl+Shift+P". Use inline in
10
+ menu items, tooltips, command hints, and shortcut documentation.
8
11
  props:
9
12
  size:
10
13
  description: Sizing scale (compact tier — sm / md only).
@@ -24,7 +27,13 @@ states:
24
27
  traits: []
25
28
  tokens: {}
26
29
  a2ui:
27
- rules: []
30
+ rules:
31
+ - rule: 'Inline-only — content from innerHTML, typically one or two key labels.'
32
+ reason: 'Decorative; do not place block content inside.'
33
+ - rule: 'In menu items, use the kbd= attribute on <menu-item-ui> instead of nesting <kbd-ui> directly.'
34
+ reason: 'Menu-item has positioning logic for shortcut hints.'
35
+ - rule: 'Chord notation uses + between keys (Ctrl+Shift+P); platform-symbol variants ⌘⌥⇧ are fine.'
36
+ reason: 'Convention for cross-platform docs.'
28
37
  anti_patterns: []
29
38
  examples:
30
39
  - name: kbd-shortcuts
@@ -39,12 +39,30 @@
39
39
  "composes": [],
40
40
  "events": {},
41
41
  "examples": [],
42
- "keywords": [],
42
+ "keywords": [
43
+ "list-item",
44
+ "list-row",
45
+ "list-entry",
46
+ "item-row",
47
+ "row"
48
+ ],
43
49
  "name": "UIListItem",
44
- "related": [],
50
+ "related": [
51
+ "List",
52
+ "NavItem",
53
+ "MenuItem",
54
+ "TreeItem"
55
+ ],
45
56
  "slots": {},
46
57
  "states": [],
47
- "synonyms": {},
58
+ "synonyms": {
59
+ "list-item": [
60
+ "row",
61
+ "entry",
62
+ "list-row",
63
+ "item"
64
+ ]
65
+ },
48
66
  "tag": "list-item-ui",
49
67
  "tokens": {},
50
68
  "traits": [],
@@ -27,3 +27,28 @@ props:
27
27
  description:
28
28
  description: Secondary line below the primary text. Subtle color.
29
29
  type: string
30
+
31
+ keywords:
32
+ - list-item
33
+ - list-row
34
+ - list-entry
35
+ - item-row
36
+ - row
37
+
38
+ synonyms:
39
+ list-item: [row, entry, list-row, item]
40
+
41
+ related:
42
+ - List
43
+ - NavItem
44
+ - MenuItem
45
+ - TreeItem
46
+
47
+ a2ui:
48
+ rules:
49
+ - rule: 'Child of <list-ui> — one row of generic-list content.'
50
+ reason: 'Cluster contract.'
51
+ - rule: 'For navigation lists use <nav-item-ui> inside <nav-ui>; for menu items use <menu-item-ui>; for tree rows use <tree-item-ui>.'
52
+ reason: 'Per-context list-row primitives — list-item is generic.'
53
+ - rule: 'Interactive list-items should have role=''button'' or be wrapped in <button-ui>; default is non-interactive.'
54
+ reason: 'Accessibility — semantic clarity.'
@@ -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/List.json",
4
4
  "title": "List",
5
- "description": "Styled list with optional icons and dividers.",
5
+ "description": "Styled flat list with optional row dividers and icons — each row\nis a <list-item-ui> child. Selectable mode via [selectable] +\n[selectedKey] / `select` event. Composes <icon-ui> for row leading\nglyphs. Distinct from <nav-ui> (sidebar navigation, route-aware),\n<tree-ui> (hierarchical with arbitrary nesting), and <table-ui>\n(tabular data with columns). Use list-ui for non-navigable,\nnon-tabular vertical rows — comment lists, file lists, message\nstreams outside chat-shell.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -79,7 +79,12 @@
79
79
  "star"
80
80
  ],
81
81
  "name": "UIList",
82
- "related": [],
82
+ "related": [
83
+ "ListItem",
84
+ "Tree",
85
+ "Nav",
86
+ "Table"
87
+ ],
83
88
  "slots": {},
84
89
  "states": [
85
90
  {
@@ -1,5 +1,13 @@
1
1
  /**
2
- * `<list-ui>` — Styled list with optional icons and dividers.
2
+ * `<list-ui>` — Styled flat list with optional row dividers and icons — each row
3
+ is a <list-item-ui> child. Selectable mode via [selectable] +
4
+ [selectedKey] / `select` event. Composes <icon-ui> for row leading
5
+ glyphs. Distinct from <nav-ui> (sidebar navigation, route-aware),
6
+ <tree-ui> (hierarchical with arbitrary nesting), and <table-ui>
7
+ (tabular data with columns). Use list-ui for non-navigable,
8
+ non-tabular vertical rows — comment lists, file lists, message
9
+ streams outside chat-shell.
10
+
3
11
  *
4
12
  * @see https://ui-kit.exe.xyz/site/components/list
5
13
  *
@@ -6,7 +6,15 @@ tag: list-ui
6
6
  component: List
7
7
  category: layout
8
8
  version: 1
9
- description: Styled list with optional icons and dividers.
9
+ description: |
10
+ Styled flat list with optional row dividers and icons — each row
11
+ is a <list-item-ui> child. Selectable mode via [selectable] +
12
+ [selectedKey] / `select` event. Composes <icon-ui> for row leading
13
+ glyphs. Distinct from <nav-ui> (sidebar navigation, route-aware),
14
+ <tree-ui> (hierarchical with arbitrary nesting), and <table-ui>
15
+ (tabular data with columns). Use list-ui for non-navigable,
16
+ non-tabular vertical rows — comment lists, file lists, message
17
+ streams outside chat-shell.
10
18
  # Per ADR-0027 — primitives that programmatically create other primitives
11
19
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
12
20
  composes:
@@ -46,7 +54,13 @@ states:
46
54
  traits: []
47
55
  tokens: {}
48
56
  a2ui:
49
- rules: []
57
+ rules:
58
+ - rule: 'Generic vertical list container — hosts <list-item-ui> or arbitrary children.'
59
+ reason: 'Lowest-friction list primitive.'
60
+ - rule: 'For interactive selection lists use <nav-ui> (single-select navigation) or <menu-ui> (action menu); list-ui is content display.'
61
+ reason: 'Different interaction contracts.'
62
+ - rule: 'For data-grid / sortable / sticky-header needs use <table-ui> instead.'
63
+ reason: 'Table has different semantics.'
50
64
  anti_patterns: []
51
65
  examples:
52
66
  - name: basic-list
@@ -103,4 +117,8 @@ synonyms:
103
117
  - bookmark
104
118
  - list
105
119
  - leaderboard
106
- related: []
120
+ related:
121
+ - ListItem
122
+ - Tree
123
+ - Nav
124
+ - Table
@@ -27,12 +27,26 @@
27
27
  "composes": [],
28
28
  "events": {},
29
29
  "examples": [],
30
- "keywords": [],
30
+ "keywords": [
31
+ "menu-divider",
32
+ "separator",
33
+ "menu-rule"
34
+ ],
31
35
  "name": "UIMenuDivider",
32
- "related": [],
36
+ "related": [
37
+ "Menu",
38
+ "MenuItem",
39
+ "Divider"
40
+ ],
33
41
  "slots": {},
34
42
  "states": [],
35
- "synonyms": {},
43
+ "synonyms": {
44
+ "menu-divider": [
45
+ "menu-separator",
46
+ "menu-rule",
47
+ "popover-divider"
48
+ ]
49
+ },
36
50
  "tag": "menu-divider-ui",
37
51
  "tokens": {},
38
52
  "traits": [],
@@ -13,3 +13,38 @@ category: navigation
13
13
  version: 1
14
14
  description: |-
15
15
  Visual separator between groups of `<menu-item-ui>` rows. Renders as a horizontal rule with role="separator".
16
+
17
+ a2ui:
18
+ rules:
19
+ - >-
20
+ <menu-divider-ui> MUST be a direct child of <menu-ui>; a raw
21
+ <hr> will render OUTSIDE the popover because <menu-ui> only
22
+ hoists <menu-item-ui> and <menu-divider-ui> children via its
23
+ direct-child selector.
24
+ - >-
25
+ Use to group items by semantic tier — primary actions →
26
+ secondary → destructive (danger). Avoid leading / trailing
27
+ dividers and consecutive dividers; they produce visual noise
28
+ without grouping value.
29
+ - >-
30
+ Do not place a divider as the first or last child of <menu-ui> —
31
+ the top / bottom popover padding already provides separation
32
+ from the chrome.
33
+ - >-
34
+ Has no props, slots, or events. Treat as an inert separator with
35
+ role="separator". If you need a labeled group, split into
36
+ multiple <menu-ui> instances stacked, not custom content inside
37
+ a divider.
38
+
39
+ keywords:
40
+ - menu-divider
41
+ - separator
42
+ - menu-rule
43
+
44
+ related:
45
+ - Menu
46
+ - MenuItem
47
+ - Divider
48
+
49
+ synonyms:
50
+ menu-divider: [menu-separator, menu-rule, popover-divider]
@@ -56,9 +56,19 @@
56
56
  "composes": [],
57
57
  "events": {},
58
58
  "examples": [],
59
- "keywords": [],
59
+ "keywords": [
60
+ "menu-item",
61
+ "menu-row",
62
+ "popover-action",
63
+ "dropdown-item"
64
+ ],
60
65
  "name": "UIMenuItem",
61
- "related": [],
66
+ "related": [
67
+ "Menu",
68
+ "MenuDivider",
69
+ "Button",
70
+ "NavItem"
71
+ ],
62
72
  "slots": {
63
73
  "icon": {
64
74
  "description": "Custom leading element override; falls through to `[icon]` prop if not slotted."
@@ -68,7 +78,13 @@
68
78
  }
69
79
  },
70
80
  "states": [],
71
- "synonyms": {},
81
+ "synonyms": {
82
+ "menu-item": [
83
+ "dropdown-item",
84
+ "menu-row",
85
+ "popover-action"
86
+ ]
87
+ },
72
88
  "tag": "menu-item-ui",
73
89
  "tokens": {},
74
90
  "traits": [],
@@ -43,3 +43,45 @@ slots:
43
43
  description: Custom leading element override; falls through to `[icon]` prop if not slotted.
44
44
  text:
45
45
  description: Custom label content; falls through to `[text]` prop if not slotted.
46
+
47
+ a2ui:
48
+ rules:
49
+ - >-
50
+ <menu-item-ui> MUST be a direct child of <menu-ui>; do not place
51
+ inside arbitrary containers or other components — <menu-ui>
52
+ hoists items into its top-layer popover via a `:scope > menu-item-ui`
53
+ selector that requires direct descendancy.
54
+ - >-
55
+ Always set a stable [value] — it is the only identifier surfaced
56
+ on the parent's `action` event detail. [text] is the visible
57
+ label; optional [icon] is a Phosphor icon name shown leading the
58
+ label.
59
+ - >-
60
+ Use [variant="danger"] exclusively for destructive / irreversible
61
+ actions (Delete, Remove). "Sign out" is NOT danger. Pair danger
62
+ items with an explicit confirm flow (<modal-ui> destructive-confirm
63
+ pattern) when the action cannot be undone.
64
+ - >-
65
+ Set [disabled] (not [hidden]) when an action is contextually
66
+ unavailable — disabled items remain visible for affordance
67
+ discoverability but skip roving focus + don't fire `action`.
68
+ - >-
69
+ Prefer [icon] + [text] props over slotted markup for consistency.
70
+ Use slot="icon" / slot="text" only when you need custom markup
71
+ (e.g. <avatar-ui slot="icon">, <kbd slot="trailing"> shortcut
72
+ hint).
73
+
74
+ keywords:
75
+ - menu-item
76
+ - menu-row
77
+ - popover-action
78
+ - dropdown-item
79
+
80
+ related:
81
+ - Menu
82
+ - MenuDivider
83
+ - Button
84
+ - NavItem
85
+
86
+ synonyms:
87
+ menu-item: [dropdown-item, menu-row, popover-action]
@@ -81,7 +81,13 @@
81
81
  "right-click"
82
82
  ],
83
83
  "name": "UIMenu",
84
- "related": [],
84
+ "related": [
85
+ "MenuItem",
86
+ "MenuDivider",
87
+ "Popover",
88
+ "Command",
89
+ "Button"
90
+ ],
85
91
  "slots": {
86
92
  "default": {
87
93
  "description": "Menu items with role=\"menuitem\" and optional <hr> dividers"
@@ -49,7 +49,33 @@ states:
49
49
  traits: []
50
50
  tokens: {}
51
51
  a2ui:
52
- rules: []
52
+ rules:
53
+ - >-
54
+ <menu-ui> MUST have exactly one child with slot="trigger" (typically
55
+ <button-ui>, but any focusable element works). Without it the menu
56
+ cannot open. The trigger lives in light DOM; the items are hoisted
57
+ to a top-layer popover on open.
58
+ - >-
59
+ Default slot accepts only <menu-item-ui> and <menu-divider-ui>
60
+ children — no submenus, headers, or arbitrary content. Roving
61
+ tabindex + Arrow / Home / End / Enter / Escape keyboard nav is
62
+ built in.
63
+ - >-
64
+ Listen for the `action` event on <menu-ui> (or an ancestor —
65
+ bubbles). Detail = { value, text }. Do NOT treat menu-ui as a
66
+ value-holder; for single-select form input use <select-ui>
67
+ instead. Menu fires actions, doesn't store state.
68
+ - >-
69
+ Use <menu-ui> for transient action surfaces (kebab / ⋯ row
70
+ actions, workspace / user switchers, view-as toggles). For
71
+ persistent side navigation use <nav-ui>; for inline (non-popover)
72
+ command lists use <action-list-ui>; for searchable command
73
+ palettes use <command-ui> inside <admin-command>.
74
+ - >-
75
+ Set [placement="top-start"] or [placement="top-end"] when the
76
+ trigger sits near the bottom of the viewport (statusbar / footer
77
+ menus); default [placement="bottom-start"] otherwise. Adjust
78
+ [gap] (default 4px) only when chrome demands it.
53
79
  anti_patterns: []
54
80
  examples:
55
81
  - name: basic-menu
@@ -123,4 +149,9 @@ synonyms:
123
149
  right-click:
124
150
  - popover
125
151
  - menu
126
- related: []
152
+ related:
153
+ - MenuItem
154
+ - MenuDivider
155
+ - Popover
156
+ - Command
157
+ - Button
@@ -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/Modal.json",
4
4
  "title": "Modal",
5
- "description": "Centered dialog overlay using native <dialog>. Focus trapping, Escape key, backdrop.",
5
+ "description": "Centered dialog overlay using native <dialog> — same portal /\nbackdrop / focus-trap / Escape-dismiss primitives as <drawer-ui>,\nbut anchored to the viewport center with size presets. Canonical\ninner shape mirrors drawer / card: <header> + one or more <section>\n+ optional <footer>. The header stamps a built-in title bar from\n[text] plus an auto-close button (unless [permanent]). Use modal-ui\nfor centered confirmations, destructive prompts, transient previews,\nand short focused interactions; use <drawer-ui> instead for\nedge-anchored multi-field editors and mobile sheet patterns.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -67,7 +67,12 @@
67
67
  "modal"
68
68
  ],
69
69
  "name": "UIModal",
70
- "related": [],
70
+ "related": [
71
+ "Drawer",
72
+ "Card",
73
+ "Popover",
74
+ "AdminCommand"
75
+ ],
71
76
  "slots": {
72
77
  "default": {
73
78
  "description": "Content placed inside the modal surface. Accepts any elements (card-ui, command-ui, custom markup)."
@@ -1,5 +1,14 @@
1
1
  /**
2
- * `<modal-ui>` — Centered dialog overlay using native <dialog>. Focus trapping, Escape key, backdrop.
2
+ * `<modal-ui>` — Centered dialog overlay using native <dialog> same portal /
3
+ backdrop / focus-trap / Escape-dismiss primitives as <drawer-ui>,
4
+ but anchored to the viewport center with size presets. Canonical
5
+ inner shape mirrors drawer / card: <header> + one or more <section>
6
+ + optional <footer>. The header stamps a built-in title bar from
7
+ [text] plus an auto-close button (unless [permanent]). Use modal-ui
8
+ for centered confirmations, destructive prompts, transient previews,
9
+ and short focused interactions; use <drawer-ui> instead for
10
+ edge-anchored multi-field editors and mobile sheet patterns.
11
+
3
12
  *
4
13
  * @see https://ui-kit.exe.xyz/site/components/modal
5
14
  *
@@ -4,7 +4,16 @@ tag: modal-ui
4
4
  component: Modal
5
5
  category: container
6
6
  version: 1
7
- description: Centered dialog overlay using native <dialog>. Focus trapping, Escape key, backdrop.
7
+ description: |
8
+ Centered dialog overlay using native <dialog> — same portal /
9
+ backdrop / focus-trap / Escape-dismiss primitives as <drawer-ui>,
10
+ but anchored to the viewport center with size presets. Canonical
11
+ inner shape mirrors drawer / card: <header> + one or more <section>
12
+ + optional <footer>. The header stamps a built-in title bar from
13
+ [text] plus an auto-close button (unless [permanent]). Use modal-ui
14
+ for centered confirmations, destructive prompts, transient previews,
15
+ and short focused interactions; use <drawer-ui> instead for
16
+ edge-anchored multi-field editors and mobile sheet patterns.
8
17
  props:
9
18
  open:
10
19
  description: Controls overlay visibility. Setting to true opens the surface with entry animation.
@@ -57,7 +66,39 @@ tokens:
57
66
  --modal-shadow:
58
67
  description: Override surface box shadow
59
68
  a2ui:
60
- rules: []
69
+ rules:
70
+ - >-
71
+ Reflect modal visibility via the [open] boolean attribute on the
72
+ host (open=true / open=false). Do NOT toggle [hidden], CSS
73
+ display, or wrap in a sibling visibility container — modal-ui
74
+ owns the native <dialog> lifecycle, focus trap, ::backdrop, and
75
+ Escape-dismiss. Listen for the `close` event to react to
76
+ dismiss.
77
+ - >-
78
+ Compose modal-ui with the same triplet as drawer-ui / card-ui:
79
+ <header> (or [slot="header"]) + <section> (or default body) +
80
+ <footer> (or [slot="footer"]). Set the title via [text] (which
81
+ stamps the heading + aria-label) or a <span slot="heading">. Do
82
+ not author your own close button unless using [permanent].
83
+ - >-
84
+ Use modal-ui (centered, interruptive) for short confirmations,
85
+ destructive prompts, and transient previews — typically ≤2 form
86
+ fields or a single decision. For edge-anchored multi-field detail
87
+ editors and mobile sheets, use <drawer-ui> instead. The
88
+ destructive-confirm-modal pattern lives at
89
+ catalog/ui-patterns/app/destructive-confirm-modal/ as the
90
+ canonical reference.
91
+ - >-
92
+ modal-ui is NOT the Cmd+K command palette. The palette is a
93
+ bespoke shell-tier component (<admin-command> under <admin-shell>);
94
+ do not model command palettes as modal-ui surfaces even though
95
+ the visual is overlay-like. The palette owns its own keyboard /
96
+ filter loop.
97
+ - >-
98
+ Use [size] presets (sm = 24rem | md = 32rem | lg = 48rem | xl =
99
+ 95vw) to scale width. Do not override width with inline style or
100
+ wrap modal-ui in a sizing container — the [size] attribute is
101
+ the only supported width contract.
61
102
  anti_patterns: []
62
103
  examples:
63
104
  - name: basic-modal
@@ -70,4 +111,8 @@ keywords:
70
111
  synonyms:
71
112
  tags:
72
113
  - Dialog
73
- related: []
114
+ related:
115
+ - Drawer
116
+ - Card
117
+ - Popover
118
+ - AdminCommand
@@ -93,7 +93,13 @@
93
93
  "links"
94
94
  ],
95
95
  "name": "UINav",
96
- "related": [],
96
+ "related": [
97
+ "NavGroup",
98
+ "NavItem",
99
+ "Tabs",
100
+ "Breadcrumb",
101
+ "AdminSidebar"
102
+ ],
97
103
  "slots": {
98
104
  "default": {
99
105
  "description": "Primary slot — accepts <nav-group-ui> + <nav-item-ui> children, plus <hr data-nav-divider> for hand-placed dividers."
@@ -109,7 +115,15 @@
109
115
  "name": "collapsed"
110
116
  }
111
117
  ],
112
- "synonyms": {},
118
+ "synonyms": {
119
+ "nav": [
120
+ "sidebar",
121
+ "side-nav",
122
+ "navigation-rail",
123
+ "primary-nav",
124
+ "section-nav"
125
+ ]
126
+ },
113
127
  "tag": "nav-ui",
114
128
  "tokens": {},
115
129
  "traits": [],