@adia-ai/web-components 0.0.28 → 0.0.33

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 (349) hide show
  1. package/README.md +4 -8
  2. package/a2ui/index.js +1 -1
  3. package/components/accordion/accordion.a2ui.json +1 -1
  4. package/components/accordion/accordion.js +6 -6
  5. package/components/accordion/accordion.yaml +1 -1
  6. package/components/action-list/action-list.a2ui.json +1 -1
  7. package/components/action-list/action-list.js +6 -6
  8. package/components/action-list/action-list.yaml +1 -1
  9. package/components/agent-artifact/agent-artifact.a2ui.json +1 -1
  10. package/components/agent-artifact/agent-artifact.js +4 -4
  11. package/components/agent-artifact/agent-artifact.yaml +1 -1
  12. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +1 -1
  13. package/components/agent-feedback-bar/agent-feedback-bar.js +4 -4
  14. package/components/agent-feedback-bar/agent-feedback-bar.yaml +1 -1
  15. package/components/agent-questions/agent-questions.a2ui.json +1 -1
  16. package/components/agent-questions/agent-questions.js +4 -4
  17. package/components/agent-questions/agent-questions.yaml +1 -1
  18. package/components/agent-reasoning/agent-reasoning.a2ui.json +3 -3
  19. package/components/agent-reasoning/agent-reasoning.js +4 -4
  20. package/components/agent-reasoning/agent-reasoning.yaml +3 -3
  21. package/components/agent-suggestions/agent-suggestions.a2ui.json +1 -1
  22. package/components/agent-suggestions/agent-suggestions.js +4 -4
  23. package/components/agent-suggestions/agent-suggestions.yaml +1 -1
  24. package/components/agent-trace/agent-trace.a2ui.json +1 -1
  25. package/components/agent-trace/agent-trace.js +4 -4
  26. package/components/agent-trace/agent-trace.yaml +1 -1
  27. package/components/alert/alert.a2ui.json +1 -1
  28. package/components/alert/alert.js +4 -4
  29. package/components/alert/alert.yaml +1 -1
  30. package/components/aside/aside.a2ui.json +1 -1
  31. package/components/aside/aside.yaml +1 -1
  32. package/components/avatar/avatar.a2ui.json +1 -1
  33. package/components/avatar/avatar.js +8 -8
  34. package/components/avatar/avatar.yaml +1 -1
  35. package/components/badge/badge.a2ui.json +1 -1
  36. package/components/badge/badge.js +4 -4
  37. package/components/badge/badge.yaml +1 -1
  38. package/components/block/block.a2ui.json +1 -1
  39. package/components/block/block.js +4 -4
  40. package/components/block/block.yaml +1 -1
  41. package/components/breadcrumb/breadcrumb.a2ui.json +1 -1
  42. package/components/breadcrumb/breadcrumb.js +4 -4
  43. package/components/breadcrumb/breadcrumb.yaml +1 -1
  44. package/components/button/button.a2ui.json +1 -1
  45. package/components/button/button.js +4 -4
  46. package/components/button/button.yaml +1 -1
  47. package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
  48. package/components/calendar-picker/calendar-picker.js +6 -6
  49. package/components/calendar-picker/calendar-picker.yaml +1 -1
  50. package/components/canvas/canvas.a2ui.json +1 -1
  51. package/components/canvas/canvas.js +5 -5
  52. package/components/canvas/canvas.yaml +1 -1
  53. package/components/card/card.a2ui.json +1 -1
  54. package/components/card/card.js +4 -4
  55. package/components/card/card.yaml +1 -1
  56. package/components/chart/chart.a2ui.json +1 -1
  57. package/components/chart/chart.js +5 -5
  58. package/components/chart/chart.yaml +1 -1
  59. package/components/chart-legend/chart-legend.a2ui.json +1 -1
  60. package/components/chart-legend/chart-legend.js +7 -7
  61. package/components/chart-legend/chart-legend.yaml +1 -1
  62. package/components/{chat → chat-thread}/chat-input.js +5 -5
  63. package/components/{chat/chat.a2ui.json → chat-thread/chat-thread.a2ui.json} +6 -6
  64. package/components/{chat/chat.css → chat-thread/chat-thread.css} +2 -2
  65. package/components/{chat/chat.js → chat-thread/chat-thread.js} +7 -7
  66. package/components/{chat/chat.yaml → chat-thread/chat-thread.yaml} +4 -4
  67. package/components/check/check.a2ui.json +1 -1
  68. package/components/check/check.js +5 -5
  69. package/components/check/check.yaml +1 -1
  70. package/components/code/code.a2ui.json +1 -1
  71. package/components/code/code.js +4 -4
  72. package/components/code/code.yaml +1 -1
  73. package/components/col/col.a2ui.json +1 -1
  74. package/components/col/col.js +4 -4
  75. package/components/col/col.yaml +1 -1
  76. package/components/color-picker/color-picker.a2ui.json +1 -1
  77. package/components/color-picker/color-picker.js +6 -6
  78. package/components/color-picker/color-picker.yaml +1 -1
  79. package/components/command/command.a2ui.json +1 -1
  80. package/components/command/command.js +5 -5
  81. package/components/command/command.yaml +1 -1
  82. package/components/description-list/description-list.a2ui.json +1 -1
  83. package/components/description-list/description-list.js +4 -4
  84. package/components/description-list/description-list.yaml +1 -1
  85. package/components/divider/divider.a2ui.json +1 -1
  86. package/components/divider/divider.js +4 -4
  87. package/components/divider/divider.yaml +1 -1
  88. package/components/drawer/drawer.a2ui.json +1 -1
  89. package/components/drawer/drawer.js +4 -4
  90. package/components/drawer/drawer.yaml +1 -1
  91. package/components/embed/embed.a2ui.json +1 -1
  92. package/components/embed/embed.js +4 -4
  93. package/components/embed/embed.yaml +1 -1
  94. package/components/empty-state/empty-state.a2ui.json +1 -1
  95. package/components/empty-state/empty-state.js +4 -4
  96. package/components/empty-state/empty-state.yaml +1 -1
  97. package/components/feed/feed-item.yaml +2 -2
  98. package/components/feed/feed.a2ui.json +2 -2
  99. package/components/feed/feed.css +21 -3
  100. package/components/feed/feed.js +140 -31
  101. package/components/feed/feed.yaml +2 -2
  102. package/components/field/field.a2ui.json +1 -1
  103. package/components/field/field.js +10 -10
  104. package/components/field/field.yaml +2 -2
  105. package/components/footer/footer.a2ui.json +1 -1
  106. package/components/footer/footer.yaml +1 -1
  107. package/components/grid/grid.a2ui.json +1 -1
  108. package/components/grid/grid.js +4 -4
  109. package/components/grid/grid.yaml +1 -1
  110. package/components/header/header.a2ui.json +1 -1
  111. package/components/header/header.yaml +1 -1
  112. package/components/heatmap/heatmap.a2ui.json +1 -1
  113. package/components/heatmap/heatmap.js +4 -4
  114. package/components/heatmap/heatmap.yaml +1 -1
  115. package/components/icon/icon.a2ui.json +1 -1
  116. package/components/icon/icon.js +4 -4
  117. package/components/icon/icon.yaml +1 -1
  118. package/components/image/image.a2ui.json +1 -1
  119. package/components/image/image.js +4 -4
  120. package/components/image/image.yaml +1 -1
  121. package/components/index.js +88 -85
  122. package/components/input/input.a2ui.json +1 -1
  123. package/components/input/input.js +7 -7
  124. package/components/input/input.yaml +1 -1
  125. package/components/inspector/inspector.a2ui.json +1 -1
  126. package/components/inspector/inspector.js +4 -4
  127. package/components/inspector/inspector.yaml +1 -1
  128. package/components/kbd/kbd.a2ui.json +1 -1
  129. package/components/kbd/kbd.js +4 -4
  130. package/components/kbd/kbd.yaml +1 -1
  131. package/components/list/list.a2ui.json +1 -1
  132. package/components/list/list.js +6 -6
  133. package/components/list/list.yaml +1 -1
  134. package/components/menu/menu.a2ui.json +1 -1
  135. package/components/menu/menu.js +8 -8
  136. package/components/menu/menu.yaml +1 -1
  137. package/components/modal/modal.a2ui.json +1 -1
  138. package/components/modal/modal.js +4 -4
  139. package/components/modal/modal.yaml +1 -1
  140. package/components/nav/nav.a2ui.json +98 -0
  141. package/components/nav/nav.css +133 -0
  142. package/components/nav/nav.js +140 -0
  143. package/components/nav/nav.test.js +428 -0
  144. package/components/nav/nav.yaml +114 -0
  145. package/components/nav-group/nav-group.a2ui.json +100 -0
  146. package/{patterns/app-nav-group/app-nav-group.css → components/nav-group/nav-group.css} +71 -18
  147. package/{patterns/app-nav-group/app-nav-group.js → components/nav-group/nav-group.js} +51 -25
  148. package/components/nav-group/nav-group.yaml +69 -0
  149. package/components/nav-item/nav-item.a2ui.json +106 -0
  150. package/{patterns/app-nav-item/app-nav-item.css → components/nav-item/nav-item.css} +42 -10
  151. package/components/nav-item/nav-item.js +76 -0
  152. package/components/nav-item/nav-item.yaml +73 -0
  153. package/components/noodles/noodles.a2ui.json +1 -1
  154. package/components/noodles/noodles.js +4 -4
  155. package/components/noodles/noodles.yaml +1 -1
  156. package/components/option-card/option-card.a2ui.json +1 -1
  157. package/components/option-card/option-card.js +6 -6
  158. package/components/option-card/option-card.yaml +1 -1
  159. package/components/otp-input/otp-input.a2ui.json +1 -1
  160. package/components/otp-input/otp-input.js +5 -5
  161. package/components/otp-input/otp-input.yaml +1 -1
  162. package/components/page/page.a2ui.json +3 -3
  163. package/components/page/page.js +4 -4
  164. package/components/page/page.yaml +3 -3
  165. package/components/pagination/pagination.a2ui.json +1 -1
  166. package/components/pagination/pagination.js +4 -4
  167. package/components/pagination/pagination.yaml +1 -1
  168. package/components/pane/pane.a2ui.json +1 -1
  169. package/components/pane/pane.js +4 -4
  170. package/components/pane/pane.yaml +1 -1
  171. package/components/pipeline-status/pipeline-status.a2ui.json +1 -1
  172. package/components/pipeline-status/pipeline-status.js +4 -4
  173. package/components/pipeline-status/pipeline-status.yaml +1 -1
  174. package/components/popover/popover.a2ui.json +1 -1
  175. package/components/popover/popover.js +4 -4
  176. package/components/popover/popover.yaml +1 -1
  177. package/components/progress/progress.a2ui.json +1 -1
  178. package/components/progress/progress.js +4 -4
  179. package/components/progress/progress.yaml +1 -1
  180. package/components/progress-row/progress-row.a2ui.json +1 -1
  181. package/components/progress-row/progress-row.js +4 -4
  182. package/components/progress-row/progress-row.yaml +1 -1
  183. package/components/radio/radio.a2ui.json +1 -1
  184. package/components/radio/radio.js +5 -5
  185. package/components/radio/radio.yaml +1 -1
  186. package/components/range/range.a2ui.json +1 -1
  187. package/components/range/range.js +7 -7
  188. package/components/range/range.yaml +1 -1
  189. package/components/rating/rating.a2ui.json +1 -1
  190. package/components/rating/rating.js +6 -6
  191. package/components/rating/rating.yaml +1 -1
  192. package/components/richtext/richtext.a2ui.json +1 -1
  193. package/components/richtext/richtext.js +4 -4
  194. package/components/richtext/richtext.yaml +1 -1
  195. package/components/row/row.a2ui.json +1 -1
  196. package/components/row/row.js +4 -4
  197. package/components/row/row.yaml +1 -1
  198. package/components/search/search.a2ui.json +1 -1
  199. package/components/search/search.js +5 -5
  200. package/components/search/search.yaml +1 -1
  201. package/components/section/section.a2ui.json +1 -1
  202. package/components/section/section.yaml +1 -1
  203. package/components/segment/segment.a2ui.json +1 -1
  204. package/components/segment/segment.js +4 -4
  205. package/components/segment/segment.yaml +1 -1
  206. package/components/segmented/segmented.a2ui.json +1 -1
  207. package/components/segmented/segmented.css +6 -0
  208. package/components/segmented/segmented.js +7 -7
  209. package/components/segmented/segmented.yaml +1 -1
  210. package/components/select/select.a2ui.json +1 -1
  211. package/components/select/select.js +5 -5
  212. package/components/select/select.yaml +1 -1
  213. package/components/skeleton/skeleton.a2ui.json +1 -1
  214. package/components/skeleton/skeleton.js +4 -4
  215. package/components/skeleton/skeleton.yaml +1 -1
  216. package/components/slider/slider.a2ui.json +1 -1
  217. package/components/slider/slider.js +7 -7
  218. package/components/slider/slider.yaml +1 -1
  219. package/components/stack/stack.a2ui.json +1 -1
  220. package/components/stack/stack.js +4 -4
  221. package/components/stack/stack.yaml +1 -1
  222. package/components/stat/stat.a2ui.json +1 -1
  223. package/components/stat/stat.js +4 -4
  224. package/components/stat/stat.yaml +1 -1
  225. package/components/stepper/stepper.a2ui.json +1 -1
  226. package/components/stepper/stepper.js +6 -6
  227. package/components/stepper/stepper.yaml +1 -1
  228. package/components/stream/stream.a2ui.json +1 -1
  229. package/components/stream/stream.js +4 -4
  230. package/components/stream/stream.yaml +1 -1
  231. package/components/swatch/swatch.a2ui.json +1 -1
  232. package/components/swatch/swatch.js +4 -4
  233. package/components/swatch/swatch.yaml +1 -1
  234. package/components/swiper/swiper.a2ui.json +1 -1
  235. package/components/swiper/swiper.js +4 -4
  236. package/components/swiper/swiper.yaml +1 -1
  237. package/components/switch/switch.a2ui.json +1 -1
  238. package/components/switch/switch.js +5 -5
  239. package/components/switch/switch.yaml +1 -1
  240. package/components/table/table.a2ui.json +1 -1
  241. package/components/table/table.js +4 -4
  242. package/components/table/table.yaml +1 -1
  243. package/components/table-toolbar/table-toolbar.a2ui.json +1 -1
  244. package/components/table-toolbar/table-toolbar.js +4 -4
  245. package/components/table-toolbar/table-toolbar.yaml +1 -1
  246. package/components/tabs/tab.js +4 -4
  247. package/components/tabs/tabs.a2ui.json +1 -1
  248. package/components/tabs/tabs.js +5 -5
  249. package/components/tabs/tabs.yaml +1 -1
  250. package/components/tag/tag.a2ui.json +1 -1
  251. package/components/tag/tag.js +4 -4
  252. package/components/tag/tag.yaml +1 -1
  253. package/components/text/text.a2ui.json +1 -1
  254. package/components/text/text.js +4 -4
  255. package/components/text/text.yaml +1 -1
  256. package/components/textarea/textarea.a2ui.json +1 -1
  257. package/components/textarea/textarea.js +5 -5
  258. package/components/textarea/textarea.yaml +1 -1
  259. package/components/timeline/timeline.a2ui.json +1 -1
  260. package/components/timeline/timeline.js +6 -6
  261. package/components/timeline/timeline.yaml +1 -1
  262. package/components/toast/toast.a2ui.json +1 -1
  263. package/components/toast/toast.js +54 -184
  264. package/components/toast/toast.yaml +1 -1
  265. package/components/toggle-group/toggle-group.a2ui.json +1 -1
  266. package/components/toggle-group/toggle-group.js +6 -6
  267. package/components/toggle-group/toggle-group.yaml +1 -1
  268. package/components/toolbar/toolbar.a2ui.json +1 -1
  269. package/components/toolbar/toolbar.js +6 -6
  270. package/components/toolbar/toolbar.yaml +1 -1
  271. package/components/tooltip/tooltip.a2ui.json +1 -1
  272. package/components/tooltip/tooltip.js +7 -7
  273. package/components/tooltip/tooltip.yaml +1 -1
  274. package/components/tree/tree.a2ui.json +1 -1
  275. package/components/tree/tree.js +6 -6
  276. package/components/tree/tree.yaml +1 -1
  277. package/components/upload/upload.a2ui.json +1 -1
  278. package/components/upload/upload.js +6 -6
  279. package/components/upload/upload.yaml +1 -1
  280. package/core/element.js +4 -4
  281. package/core/element.test.js +18 -18
  282. package/core/form.js +9 -9
  283. package/core/index.js +2 -2
  284. package/core/provider.js +7 -7
  285. package/core/template.js +1 -1
  286. package/index.css +3 -2
  287. package/index.js +17 -7
  288. package/package.json +1 -5
  289. package/styles/components.css +10 -6
  290. package/styles/resets.css +1 -1
  291. package/traits/define.js +2 -2
  292. package/patterns/a2ui-root/a2ui-root.a2ui.json +0 -125
  293. package/patterns/a2ui-root/a2ui-root.js +0 -191
  294. package/patterns/a2ui-root/a2ui-root.yaml +0 -87
  295. package/patterns/adia-chat/adia-chat.a2ui.json +0 -149
  296. package/patterns/adia-chat/adia-chat.css +0 -10
  297. package/patterns/adia-chat/adia-chat.js +0 -297
  298. package/patterns/adia-chat/adia-chat.yaml +0 -118
  299. package/patterns/adia-chat/css/adia-chat.empty.css +0 -12
  300. package/patterns/adia-chat/css/adia-chat.layout.css +0 -60
  301. package/patterns/adia-chat/css/adia-chat.markdown.css +0 -74
  302. package/patterns/adia-chat/css/adia-chat.messages.css +0 -87
  303. package/patterns/adia-chat/css/adia-chat.streaming.css +0 -30
  304. package/patterns/adia-chat/css/adia-chat.tokens.css +0 -95
  305. package/patterns/adia-editor/adia-editor.a2ui.json +0 -73
  306. package/patterns/adia-editor/adia-editor.css +0 -6
  307. package/patterns/adia-editor/adia-editor.js +0 -56
  308. package/patterns/adia-editor/adia-editor.yaml +0 -59
  309. package/patterns/adia-editor/css/adia-editor.layout.css +0 -171
  310. package/patterns/adia-editor/css/adia-editor.tokens.css +0 -28
  311. package/patterns/app-nav/app-nav.a2ui.json +0 -89
  312. package/patterns/app-nav/app-nav.css +0 -92
  313. package/patterns/app-nav/app-nav.js +0 -112
  314. package/patterns/app-nav/app-nav.yaml +0 -54
  315. package/patterns/app-nav-group/app-nav-group.a2ui.json +0 -82
  316. package/patterns/app-nav-group/app-nav-group.yaml +0 -59
  317. package/patterns/app-nav-item/app-nav-item.a2ui.json +0 -83
  318. package/patterns/app-nav-item/app-nav-item.js +0 -42
  319. package/patterns/app-nav-item/app-nav-item.yaml +0 -62
  320. package/patterns/app-shell/app-shell.a2ui.json +0 -129
  321. package/patterns/app-shell/app-shell.css +0 -14
  322. package/patterns/app-shell/app-shell.js +0 -251
  323. package/patterns/app-shell/app-shell.yaml +0 -89
  324. package/patterns/app-shell/css/app-shell.collapsed.css +0 -86
  325. package/patterns/app-shell/css/app-shell.helpers.css +0 -42
  326. package/patterns/app-shell/css/app-shell.main.css +0 -172
  327. package/patterns/app-shell/css/app-shell.shell.css +0 -44
  328. package/patterns/app-shell/css/app-shell.sidebar.css +0 -161
  329. package/patterns/app-shell/css/app-shell.templates.css +0 -214
  330. package/patterns/app-shell/css/app-shell.tokens.css +0 -119
  331. package/patterns/gen-ui/gen-ui.a2ui.json +0 -72
  332. package/patterns/gen-ui/gen-ui.css +0 -83
  333. package/patterns/gen-ui/gen-ui.js +0 -136
  334. package/patterns/gen-ui/gen-ui.yaml +0 -43
  335. package/patterns/index.js +0 -11
  336. package/patterns/section-nav/section-nav.a2ui.json +0 -91
  337. package/patterns/section-nav/section-nav.css +0 -60
  338. package/patterns/section-nav/section-nav.js +0 -42
  339. package/patterns/section-nav/section-nav.yaml +0 -58
  340. package/patterns/section-nav-group/section-nav-group.a2ui.json +0 -95
  341. package/patterns/section-nav-group/section-nav-group.css +0 -74
  342. package/patterns/section-nav-group/section-nav-group.js +0 -84
  343. package/patterns/section-nav-group/section-nav-group.yaml +0 -66
  344. package/patterns/section-nav-item/section-nav-item.a2ui.json +0 -97
  345. package/patterns/section-nav-item/section-nav-item.css +0 -106
  346. package/patterns/section-nav-item/section-nav-item.js +0 -66
  347. package/patterns/section-nav-item/section-nav-item.yaml +0 -70
  348. package/styles/layouts/admin.css +0 -7
  349. /package/components/{chat → chat-thread}/chat-input.css +0 -0
@@ -5,22 +5,22 @@
5
5
  Safari < 18 is below the §1 floor (ADR-0007); fix protects opt-in
6
6
  consumers extending below the floor and is harmlessly redundant on
7
7
  engines without the bug. */
8
- app-nav-item-ui:hover {
8
+ nav-item-ui:hover {
9
9
  background: var(--nav-item-bg-hover);
10
10
  color: var(--nav-item-fg-hover);
11
11
  }
12
- app-nav-item-ui:hover [slot="icon"] {
12
+ nav-item-ui:hover [slot="icon"] {
13
13
  color: var(--nav-item-fg-hover);
14
14
  }
15
- app-nav-item-ui[selected] {
15
+ nav-item-ui[selected] {
16
16
  background: var(--nav-item-bg-selected);
17
17
  color: var(--nav-item-fg-selected);
18
18
  font-weight: var(--nav-item-selected-weight);
19
19
  }
20
- app-nav-item-ui[selected] [slot="icon"] {
20
+ nav-item-ui[selected] [slot="icon"] {
21
21
  color: var(--nav-item-icon-fg-selected);
22
22
  }
23
- app-nav-item-ui[selected] [slot="icon"]:empty::before {
23
+ nav-item-ui[selected] [slot="icon"]:empty::before {
24
24
  content: '';
25
25
  width: 2px;
26
26
  height: 1em;
@@ -28,7 +28,7 @@ app-nav-item-ui[selected] [slot="icon"]:empty::before {
28
28
  background: var(--nav-item-accent);
29
29
  }
30
30
 
31
- @scope (app-nav-item-ui) {
31
+ @scope (nav-item-ui) {
32
32
  :where(:scope) {
33
33
  --nav-item-accent: var(--a-accent);
34
34
  --nav-item-row-height: var(--a-size);
@@ -125,13 +125,13 @@ app-nav-item-ui[selected] [slot="icon"]:empty::before {
125
125
  }
126
126
 
127
127
  /* ── Collapsed nav: hide text, badge, trailing ── */
128
- app-nav-ui[collapsed] & [slot="text"],
129
- app-nav-ui[collapsed] & [slot="badge"],
130
- app-nav-ui[collapsed] & [slot="trailing"] {
128
+ nav-ui[collapsed] & [slot="text"],
129
+ nav-ui[collapsed] & [slot="badge"],
130
+ nav-ui[collapsed] & [slot="trailing"] {
131
131
  display: none;
132
132
  }
133
133
 
134
- app-nav-ui[collapsed] & {
134
+ nav-ui[collapsed] & {
135
135
  justify-content: center;
136
136
  padding: 0;
137
137
  }
@@ -160,3 +160,35 @@ app-nav-item-ui[selected] [slot="icon"]:empty::before {
160
160
  --nav-item-font-size: var(--nav-item-font-size-lg);
161
161
  }
162
162
  }
163
+
164
+ /* ── Section variant — items render flat (no icon space, no indent) ──
165
+ The prior <section-nav-item-ui> didn't reserve space for an absent icon
166
+ and used a left-edge accent bar for the selected state. Restore that
167
+ shape so subnav rails read as plain links rather than a primary-style
168
+ row with a hidden icon slot.
169
+
170
+ Two ways to enable: either
171
+ (a) `<nav-item-ui variant="section">` directly, or
172
+ (b) `<nav-ui variant="section"> … nav-item-ui` (cascade from parent).
173
+ */
174
+
175
+ nav-item-ui[variant="section"] [slot="icon"]:empty,
176
+ nav-ui[variant="section"] nav-item-ui:not([variant]) [slot="icon"]:empty {
177
+ display: none;
178
+ }
179
+
180
+ /* When an explicit icon IS present, keep it but at a smaller scale. */
181
+ nav-item-ui[variant="section"] [slot="icon"]:not(:empty),
182
+ nav-ui[variant="section"] nav-item-ui:not([variant]) [slot="icon"]:not(:empty) {
183
+ width: 1em;
184
+ height: 1em;
185
+ }
186
+
187
+ /* Selected indicator — section variant relies on the row-level
188
+ background fill + text color + medium weight (no left-edge bar,
189
+ no in-icon accent). Suppress the in-icon accent that the primary
190
+ variant paints into the empty icon slot. */
191
+ nav-item-ui[variant="section"][selected] [slot="icon"]:empty::before,
192
+ nav-ui[variant="section"] nav-item-ui:not([variant])[selected] [slot="icon"]:empty::before {
193
+ content: none;
194
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * <nav-item-ui> — Single navigation link inside <nav-ui> (optionally
3
+ * nested under <nav-group-ui>). Consolidates the prior
4
+ * `app-nav-item-ui` + `section-nav-item-ui` per ADR-0015 § Nav consolidation.
5
+ *
6
+ * Supports icon, label, optional badge, selected/disabled state, and
7
+ * keyboard activation (Enter/Space). Selection is managed by the parent
8
+ * <nav-ui>; clicking or keyboard-activating an item calls nav.select(this)
9
+ * and dispatches `nav-select` (bubbles, detail: { item, text, value }).
10
+ */
11
+
12
+ import { UIElement } from '../../core/element.js';
13
+
14
+ class UINavItem extends UIElement {
15
+ static properties = {
16
+ text: { type: String, default: '', reflect: true },
17
+ icon: { type: String, default: '', reflect: true },
18
+ value: { type: String, default: '', reflect: true },
19
+ badge: { type: String, default: '', reflect: true },
20
+ selected: { type: Boolean, default: false, reflect: true },
21
+ disabled: { type: Boolean, default: false, reflect: true },
22
+ variant: { type: String, default: '', reflect: true },
23
+ };
24
+
25
+ static template = () => null;
26
+
27
+ #onClick = (e) => {
28
+ if (this.disabled) { e.preventDefault(); return; }
29
+ const parent = this.closest('nav-ui');
30
+ parent?.select?.(this);
31
+ this.dispatchEvent(new CustomEvent('nav-select', {
32
+ bubbles: true,
33
+ detail: { item: this, text: this.text, value: this.value },
34
+ }));
35
+ };
36
+
37
+ #onKey = (e) => {
38
+ if (this.disabled) return;
39
+ if (e.key === 'Enter' || e.key === ' ') {
40
+ e.preventDefault();
41
+ this.#onClick(e);
42
+ }
43
+ };
44
+
45
+ connected() {
46
+ this.setAttribute('role', 'link');
47
+ this.setAttribute('tabindex', this.disabled ? '-1' : '0');
48
+
49
+ if (!this.querySelector('[slot="text"]')) {
50
+ this.innerHTML = `
51
+ <span slot="icon">${this.icon ? `<icon-ui name="${this.icon}"></icon-ui>` : ''}</span>
52
+ <span slot="text">${this.text}</span>
53
+ ${this.badge ? `<span slot="badge">${this.badge}</span>` : ''}
54
+ `;
55
+ }
56
+
57
+ this.addEventListener('click', this.#onClick);
58
+ this.addEventListener('keydown', this.#onKey);
59
+ }
60
+
61
+ render() {
62
+ const textEl = this.querySelector('[slot="text"]');
63
+ if (textEl) textEl.textContent = this.text;
64
+ this.setAttribute('tabindex', this.disabled ? '-1' : '0');
65
+ if (this.selected) this.setAttribute('aria-current', 'page');
66
+ else this.removeAttribute('aria-current');
67
+ }
68
+
69
+ disconnected() {
70
+ this.removeEventListener('click', this.#onClick);
71
+ this.removeEventListener('keydown', this.#onKey);
72
+ }
73
+ }
74
+
75
+ customElements.define('nav-item-ui', UINavItem);
76
+ export { UINavItem };
@@ -0,0 +1,73 @@
1
+ $schema: ../../../../scripts/schemas/component.yaml.schema.json
2
+ name: UINavItem
3
+ tag: nav-item-ui
4
+ component: NavItem
5
+ category: layout
6
+ version: 1
7
+ description: |
8
+ Single navigation link inside <nav-ui> (optionally nested under
9
+ <nav-group-ui>). Consolidates the prior `app-nav-item-ui` +
10
+ `section-nav-item-ui` per ADR-0015 § Nav consolidation.
11
+
12
+ Supports icon, label, optional badge, selected/disabled state, and
13
+ keyboard activation (Enter/Space). Selection is managed by the parent
14
+ <nav-ui>; clicking or activating an item calls nav.select(this) and
15
+ bubbles a `nav-select` event.
16
+
17
+ props:
18
+ text:
19
+ type: string
20
+ default: ''
21
+ description: "Visible item label."
22
+ icon:
23
+ type: string
24
+ default: ''
25
+ description: "Optional leading icon name."
26
+ value:
27
+ type: string
28
+ default: ''
29
+ description: "Identifier — typically a route or anchor."
30
+ badge:
31
+ type: string
32
+ default: ''
33
+ description: "Optional trailing badge."
34
+ selected:
35
+ type: boolean
36
+ default: false
37
+ description: "Set by the parent <nav-ui>'s select() method."
38
+ disabled:
39
+ type: boolean
40
+ default: false
41
+ description: "Suppresses click/keyboard activation; greyed visually."
42
+ variant:
43
+ type: string
44
+ default: ''
45
+ enum: ['', section]
46
+ description: "Visual treatment. Default ('') renders as a primary-rail item (reserved icon space, in-icon selected accent). 'section' renders flat — no icon space when absent, left-edge accent bar for selected — matching the prior <section-nav-item-ui>. When the parent <nav-ui> carries variant=\"section\", this item inherits it via CSS cascade unless an explicit variant is set."
47
+
48
+ events:
49
+ nav-select:
50
+ description: "Bubbles when the item is activated. Detail: { item, text, value }."
51
+
52
+ slots:
53
+ default:
54
+ description: "Optional override of the default icon + text + badge stamping."
55
+
56
+ states:
57
+ - name: idle
58
+ description: Default.
59
+ - name: selected
60
+ description: aria-current=page.
61
+ - name: disabled
62
+ description: Suppressed activation.
63
+
64
+ traits: []
65
+ tokens: {}
66
+ a2ui:
67
+ rules: []
68
+ anti_patterns: []
69
+ examples: []
70
+
71
+ keywords: [nav, navigation, item, link, sidebar]
72
+ synonyms: {}
73
+ related: []
@@ -110,7 +110,7 @@
110
110
  "keywords": [
111
111
  "noodles"
112
112
  ],
113
- "name": "AdiaNoodles",
113
+ "name": "UINoodles",
114
114
  "related": [],
115
115
  "slots": {},
116
116
  "states": [
@@ -10,11 +10,11 @@
10
10
  * Supports bezier, step, and straight curve modes.
11
11
  */
12
12
 
13
- import { AdiaElement } from '../../core/element.js';
13
+ import { UIElement } from '../../core/element.js';
14
14
 
15
15
  let nextId = 0;
16
16
 
17
- class AdiaNoodles extends AdiaElement {
17
+ class UINoodles extends UIElement {
18
18
  static properties = {
19
19
  editable: { type: Boolean, default: false, reflect: true },
20
20
  color: { type: String, default: '', reflect: true },
@@ -496,6 +496,6 @@ class AdiaNoodles extends AdiaElement {
496
496
  }
497
497
  }
498
498
 
499
- customElements.define('noodles-ui', AdiaNoodles);
499
+ customElements.define('noodles-ui', UINoodles);
500
500
 
501
- export { AdiaNoodles };
501
+ export { UINoodles };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaNoodles
4
+ name: UINoodles
5
5
  tag: noodles-ui
6
6
  component: Noodles
7
7
  category: agent
@@ -97,7 +97,7 @@
97
97
  "onboarding",
98
98
  "registration"
99
99
  ],
100
- "name": "AdiaOptionCard",
100
+ "name": "UIOptionCard",
101
101
  "related": [
102
102
  "radio",
103
103
  "card",
@@ -27,15 +27,15 @@
27
27
  * </option-card-ui>
28
28
  *
29
29
  * Sibling navigation: arrow keys move focus and selection; Space/Enter
30
- * select. Form-associated via AdiaFormElement, so `name=value` submits
30
+ * select. Form-associated via UIFormElement, so `name=value` submits
31
31
  * with the parent form when the card is checked.
32
32
  */
33
33
 
34
- import { AdiaFormElement } from '../../core/form.js';
34
+ import { UIFormElement } from '../../core/form.js';
35
35
 
36
- class AdiaOptionCard extends AdiaFormElement {
36
+ class UIOptionCard extends UIFormElement {
37
37
  static properties = {
38
- ...AdiaFormElement.properties,
38
+ ...UIFormElement.properties,
39
39
  checked: { type: Boolean, default: false, reflect: true },
40
40
  heading: { type: String, default: '', reflect: true },
41
41
  description: { type: String, default: '', reflect: true },
@@ -153,6 +153,6 @@ class AdiaOptionCard extends AdiaFormElement {
153
153
  }
154
154
  }
155
155
 
156
- customElements.define('option-card-ui', AdiaOptionCard);
156
+ customElements.define('option-card-ui', UIOptionCard);
157
157
 
158
- export { AdiaOptionCard };
158
+ export { UIOptionCard };
@@ -1,6 +1,6 @@
1
1
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
2
2
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
3
- name: AdiaOptionCard
3
+ name: UIOptionCard
4
4
  tag: option-card-ui
5
5
  component: OptionCard
6
6
  category: input
@@ -70,7 +70,7 @@
70
70
  "otp",
71
71
  "input"
72
72
  ],
73
- "name": "AdiaOtpInput",
73
+ "name": "UIOtpInput",
74
74
  "related": [
75
75
  "button"
76
76
  ],
@@ -8,11 +8,11 @@
8
8
  * Events: 'complete' (detail: {value}), 'input'
9
9
  */
10
10
 
11
- import { AdiaFormElement } from '../../core/form.js';
11
+ import { UIFormElement } from '../../core/form.js';
12
12
 
13
- class AdiaOtpInput extends AdiaFormElement {
13
+ class UIOtpInput extends UIFormElement {
14
14
  static properties = {
15
- ...AdiaFormElement.properties,
15
+ ...UIFormElement.properties,
16
16
  length: { type: Number, default: 6, reflect: true },
17
17
  };
18
18
 
@@ -165,6 +165,6 @@ class AdiaOtpInput extends AdiaFormElement {
165
165
  this.#inputs = [];
166
166
  }
167
167
  }
168
- customElements.define('otp-input-ui', AdiaOtpInput);
168
+ customElements.define('otp-input-ui', UIOtpInput);
169
169
 
170
- export { AdiaOtpInput };
170
+ export { UIOtpInput };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaOtpInput
4
+ name: UIOtpInput
5
5
  tag: otp-input-ui
6
6
  component: OtpInput
7
7
  category: input
@@ -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/Page.json",
4
4
  "title": "Page",
5
- "description": "Page container. Holds page-level chrome — header / content / footer —\nand manages max-width clamps, padding scale, optional scroll-container,\nand an optional sticky-header sentinel. Compose with the slot\nprimitives (`<header-ui>`, `<section-ui>`, `<footer-ui>`); the page's\n@scope rules style them. Drop in directly, or nest inside an\n`<app-shell-ui>`'s main column.\n",
5
+ "description": "Page container. Holds page-level chrome — header / content / footer —\nand manages max-width clamps, padding scale, optional scroll-container,\nand an optional sticky-header sentinel. Compose with the slot\nprimitives (`<header-ui>`, `<section-ui>`, `<footer-ui>`); the page's\n@scope rules style them. Drop in directly, or nest inside an\n`<admin-shell>`'s main column.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -34,7 +34,7 @@
34
34
  "default": ""
35
35
  },
36
36
  "scroll": {
37
- "description": "Sets the page as a scroll container. `overflow-y: auto`, full\nheight, contained overscroll. Use when the page IS the scroll\nsurface (standalone pages); leave off when nested inside a parent\nthat already manages scroll (e.g. inside an `<app-shell-ui>`'s\nmain `<section>`).\n",
37
+ "description": "Sets the page as a scroll container. `overflow-y: auto`, full\nheight, contained overscroll. Use when the page IS the scroll\nsurface (standalone pages); leave off when nested inside a parent\nthat already manages scroll (e.g. inside an `<admin-shell>`'s\nmain `<section>`).\n",
38
38
  "type": "boolean",
39
39
  "default": false
40
40
  },
@@ -75,7 +75,7 @@
75
75
  "prose-page",
76
76
  "dashboard-page"
77
77
  ],
78
- "name": "AdiaPage",
78
+ "name": "UIPage",
79
79
  "related": [
80
80
  "app-shell",
81
81
  "card",
@@ -25,9 +25,9 @@
25
25
  * ADR: .brain/adrs/0009-promote-app-shell-and-page-to-components.md.
26
26
  */
27
27
 
28
- import { AdiaElement } from '../../core/element.js';
28
+ import { UIElement } from '../../core/element.js';
29
29
 
30
- class AdiaPage extends AdiaElement {
30
+ class UIPage extends UIElement {
31
31
  static properties = {
32
32
  scroll: { type: Boolean, default: false, reflect: true },
33
33
  maxWidth: { type: String, default: '', attribute: 'max-width', reflect: true },
@@ -83,6 +83,6 @@ class AdiaPage extends AdiaElement {
83
83
  }
84
84
  }
85
85
 
86
- customElements.define('page-ui', AdiaPage);
86
+ customElements.define('page-ui', UIPage);
87
87
 
88
- export { AdiaPage };
88
+ export { UIPage };
@@ -1,6 +1,6 @@
1
1
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
2
2
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
3
- name: AdiaPage
3
+ name: UIPage
4
4
  tag: page-ui
5
5
  component: Page
6
6
  category: container
@@ -11,14 +11,14 @@ description: |
11
11
  and an optional sticky-header sentinel. Compose with the slot
12
12
  primitives (`<header-ui>`, `<section-ui>`, `<footer-ui>`); the page's
13
13
  @scope rules style them. Drop in directly, or nest inside an
14
- `<app-shell-ui>`'s main column.
14
+ `<admin-shell>`'s main column.
15
15
  props:
16
16
  scroll:
17
17
  description: |
18
18
  Sets the page as a scroll container. `overflow-y: auto`, full
19
19
  height, contained overscroll. Use when the page IS the scroll
20
20
  surface (standalone pages); leave off when nested inside a parent
21
- that already manages scroll (e.g. inside an `<app-shell-ui>`'s
21
+ that already manages scroll (e.g. inside an `<admin-shell>`'s
22
22
  main `<section>`).
23
23
  type: boolean
24
24
  default: false
@@ -68,7 +68,7 @@
68
68
  "paginate",
69
69
  "paging"
70
70
  ],
71
- "name": "AdiaPagination",
71
+ "name": "UIPagination",
72
72
  "related": [
73
73
  "input",
74
74
  "table"
@@ -8,9 +8,9 @@
8
8
  * page-change — { detail: { page } }
9
9
  */
10
10
 
11
- import { AdiaElement } from '../../core/element.js';
11
+ import { UIElement } from '../../core/element.js';
12
12
 
13
- class AdiaPagination extends AdiaElement {
13
+ class UIPagination extends UIElement {
14
14
  static properties = {
15
15
  page: { type: Number, default: 1, reflect: true },
16
16
  total: { type: Number, default: 1, reflect: true },
@@ -180,6 +180,6 @@ class AdiaPagination extends AdiaElement {
180
180
  }));
181
181
  };
182
182
  }
183
- customElements.define('pagination-ui', AdiaPagination);
183
+ customElements.define('pagination-ui', UIPagination);
184
184
 
185
- export { AdiaPagination };
185
+ export { UIPagination };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaPagination
4
+ name: UIPagination
5
5
  tag: pagination-ui
6
6
  component: Pagination
7
7
  category: navigation
@@ -70,7 +70,7 @@
70
70
  "keywords": [
71
71
  "pane"
72
72
  ],
73
- "name": "AdiaPane",
73
+ "name": "UIPane",
74
74
  "related": [
75
75
  "text-area"
76
76
  ],
@@ -31,9 +31,9 @@
31
31
  * pane.toggle()
32
32
  */
33
33
 
34
- import { AdiaElement } from '../../core/element.js';
34
+ import { UIElement } from '../../core/element.js';
35
35
 
36
- class AdiaPane extends AdiaElement {
36
+ class UIPane extends UIElement {
37
37
  static properties = {
38
38
  collapsed: { type: Boolean, default: false, reflect: true },
39
39
  resizable: { type: Boolean, default: false, reflect: true },
@@ -147,6 +147,6 @@ class AdiaPane extends AdiaElement {
147
147
  this.#bound = false;
148
148
  }
149
149
  }
150
- customElements.define('pane-ui', AdiaPane);
150
+ customElements.define('pane-ui', UIPane);
151
151
 
152
- export { AdiaPane };
152
+ export { UIPane };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaPane
4
+ name: UIPane
5
5
  tag: pane-ui
6
6
  component: Pane
7
7
  category: layout
@@ -68,7 +68,7 @@
68
68
  "pipeline",
69
69
  "status"
70
70
  ],
71
- "name": "AdiaPipelineStatus",
71
+ "name": "UIPipelineStatus",
72
72
  "related": [],
73
73
  "slots": {
74
74
  "default": {
@@ -1,4 +1,4 @@
1
- import { AdiaElement } from '../../core/element.js';
1
+ import { UIElement } from '../../core/element.js';
2
2
 
3
3
  /**
4
4
  * <pipeline-status-ui> — Single updating pipeline status indicator.
@@ -23,7 +23,7 @@ const STAGE_LABELS = {
23
23
  render: 'Rendering',
24
24
  };
25
25
 
26
- class AdiaPipelineStatus extends AdiaElement {
26
+ class UIPipelineStatus extends UIElement {
27
27
  static properties = {
28
28
  stage: { type: String, default: '', reflect: true },
29
29
  message: { type: String, default: '', reflect: true },
@@ -175,6 +175,6 @@ class AdiaPipelineStatus extends AdiaElement {
175
175
  }
176
176
  }
177
177
 
178
- customElements.define('pipeline-status-ui', AdiaPipelineStatus);
178
+ customElements.define('pipeline-status-ui', UIPipelineStatus);
179
179
 
180
- export { AdiaPipelineStatus };
180
+ export { UIPipelineStatus };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaPipelineStatus
4
+ name: UIPipelineStatus
5
5
  tag: pipeline-status-ui
6
6
  component: PipelineStatus
7
7
  category: agent
@@ -85,7 +85,7 @@
85
85
  "context-menu",
86
86
  "right-click"
87
87
  ],
88
- "name": "AdiaPopover",
88
+ "name": "UIPopover",
89
89
  "related": [
90
90
  "button",
91
91
  "divider"
@@ -13,12 +13,12 @@
13
13
  * Triggers: click | hover | manual. ESC closes click/manual popovers.
14
14
  */
15
15
 
16
- import { AdiaElement } from '../../core/element.js';
16
+ import { UIElement } from '../../core/element.js';
17
17
  import { anchorPopover } from '../../core/anchor.js';
18
18
 
19
19
  const HOVER_CLOSE_DELAY = 120;
20
20
 
21
- class AdiaPopover extends AdiaElement {
21
+ class UIPopover extends UIElement {
22
22
  static properties = {
23
23
  placement: { type: String, default: 'bottom', reflect: true },
24
24
  gap: { type: Number, default: 4, reflect: true },
@@ -180,5 +180,5 @@ class AdiaPopover extends AdiaElement {
180
180
  }
181
181
  }
182
182
 
183
- customElements.define('popover-ui', AdiaPopover);
184
- export { AdiaPopover };
183
+ customElements.define('popover-ui', UIPopover);
184
+ export { UIPopover };
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
- name: AdiaPopover
4
+ name: UIPopover
5
5
  tag: popover-ui
6
6
  component: Popover
7
7
  category: container
@@ -72,7 +72,7 @@
72
72
  "percent",
73
73
  "gamification"
74
74
  ],
75
- "name": "AdiaProgress",
75
+ "name": "UIProgress",
76
76
  "related": [
77
77
  "grid",
78
78
  "button",
@@ -8,9 +8,9 @@
8
8
  * (Legacy `value="-1"` is still treated as indeterminate for back-compat.)
9
9
  */
10
10
 
11
- import { AdiaElement } from '../../core/element.js';
11
+ import { UIElement } from '../../core/element.js';
12
12
 
13
- class AdiaProgress extends AdiaElement {
13
+ class UIProgress extends UIElement {
14
14
  static properties = {
15
15
  value: { type: Number, default: null, reflect: true },
16
16
  variant: { type: String, default: 'bar', reflect: true },
@@ -59,6 +59,6 @@ class AdiaProgress extends AdiaElement {
59
59
  this.#fill = null;
60
60
  }
61
61
  }
62
- customElements.define('progress-ui', AdiaProgress);
62
+ customElements.define('progress-ui', UIProgress);
63
63
 
64
- export { AdiaProgress };
64
+ export { UIProgress };