@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
@@ -1,84 +0,0 @@
1
- /**
2
- * <section-nav-group-ui> — Labeled group inside section-nav-ui.
3
- * When [collapsible], the header row becomes a keyboard-activatable toggle
4
- * that emits `group-toggle` (detail: { text, open }).
5
- */
6
-
7
- import { AdiaElement } from '../../core/element.js';
8
-
9
- class AdiaSectionNavGroup extends AdiaElement {
10
- static properties = {
11
- text: { type: String, default: '', reflect: true },
12
- icon: { type: String, default: '', reflect: true },
13
- collapsible: { type: Boolean, default: false, reflect: true },
14
- open: { type: Boolean, default: false, reflect: true },
15
- };
16
-
17
- static template = () => null;
18
-
19
- #headerEl = null;
20
-
21
- #onHeaderClick = () => {
22
- if (!this.collapsible) return;
23
- this.open = !this.open;
24
- this.dispatchEvent(new CustomEvent('group-toggle', {
25
- bubbles: true,
26
- detail: { text: this.text, open: this.open },
27
- }));
28
- };
29
-
30
- #onHeaderKey = (e) => {
31
- if (!this.collapsible) return;
32
- if (e.key === 'Enter' || e.key === ' ') {
33
- e.preventDefault();
34
- this.#onHeaderClick();
35
- }
36
- };
37
-
38
- connected() {
39
- this.#headerEl = this.querySelector(':scope > [data-section-nav-group-header]');
40
- if (!this.#headerEl) {
41
- this.#headerEl = document.createElement('div');
42
- this.#headerEl.setAttribute('data-section-nav-group-header', '');
43
- this.#buildHeader();
44
- this.insertBefore(this.#headerEl, this.firstChild);
45
- }
46
- if (this.collapsible) {
47
- this.#headerEl.setAttribute('role', 'button');
48
- this.#headerEl.setAttribute('tabindex', '0');
49
- this.#headerEl.setAttribute('aria-expanded', this.open ? 'true' : 'false');
50
- this.#headerEl.addEventListener('click', this.#onHeaderClick);
51
- this.#headerEl.addEventListener('keydown', this.#onHeaderKey);
52
- }
53
- }
54
-
55
- render() {
56
- if (!this.#headerEl) return;
57
- this.#buildHeader();
58
- if (this.collapsible) {
59
- this.#headerEl.setAttribute('aria-expanded', this.open ? 'true' : 'false');
60
- } else {
61
- this.#headerEl.removeAttribute('role');
62
- this.#headerEl.removeAttribute('tabindex');
63
- this.#headerEl.removeAttribute('aria-expanded');
64
- }
65
- }
66
-
67
- #buildHeader() {
68
- const iconHtml = this.icon ? `<icon-ui name="${this.icon}"></icon-ui>` : '';
69
- const caretHtml = this.collapsible
70
- ? `<icon-ui name="caret-right" data-section-nav-group-caret></icon-ui>`
71
- : '';
72
- this.#headerEl.innerHTML =
73
- `${iconHtml}<span data-section-nav-group-label>${this.text}</span>${caretHtml}`;
74
- }
75
-
76
- disconnected() {
77
- this.#headerEl?.removeEventListener('click', this.#onHeaderClick);
78
- this.#headerEl?.removeEventListener('keydown', this.#onHeaderKey);
79
- this.#headerEl = null;
80
- }
81
- }
82
- customElements.define('section-nav-group-ui', AdiaSectionNavGroup);
83
-
84
- export { AdiaSectionNavGroup };
@@ -1,66 +0,0 @@
1
- $schema: ../../../../scripts/schemas/component.yaml.schema.json
2
- name: AdiaSectionNavGroup
3
- tag: section-nav-group-ui
4
- component: SectionNavGroup
5
- category: nav
6
- version: 1
7
- description: |
8
- Optional labeled group inside section-nav-ui. Auto-generates a header row
9
- with label and optional leading icon. When [collapsible], the header row
10
- is a keyboard-activatable toggle that emits `group-toggle`.
11
-
12
- props:
13
- text:
14
- type: string
15
- default: ""
16
- reflect: true
17
- description: Group label rendered in the header row.
18
-
19
- icon:
20
- type: string
21
- default: ""
22
- reflect: true
23
- description: Optional Phosphor icon name (leading).
24
-
25
- collapsible:
26
- type: boolean
27
- default: false
28
- reflect: true
29
- description: When true, the header becomes a click/keyboard toggle that expands and collapses the group.
30
-
31
- open:
32
- type: boolean
33
- default: false
34
- reflect: true
35
- description: Expanded state. Only meaningful when collapsible=true.
36
-
37
- events:
38
- group-toggle:
39
- description: Fired when the group is toggled via header click or keyboard (Enter/Space).
40
- detail:
41
- text: string
42
- open: boolean
43
-
44
- slots:
45
- default:
46
- description: section-nav-item-ui children rendered under the header.
47
-
48
- states:
49
- - name: idle
50
- description: Default.
51
- - name: collapsible
52
- attribute: collapsible
53
- description: Header is interactive.
54
- - name: open
55
- attribute: open
56
- description: Children visible.
57
-
58
- traits: []
59
-
60
- a2ui:
61
- rules:
62
- - Must be a direct child of section-nav-ui.
63
- - Children must be section-nav-item-ui.
64
-
65
- keywords: [section-nav-group, sub-nav-group, nav-section, rail-group]
66
- related: [SectionNav, SectionNavItem]
@@ -1,97 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://adiaui.dev/a2ui/v0_9/components/SectionNavItem.json",
4
- "title": "SectionNavItem",
5
- "description": "Single nav link in a section-nav-ui rail. Icon + label. Supports disabled\nstate and keyboard activation (Enter/Space). Selection updates the\nparent section-nav-ui's selection state.\n",
6
- "type": "object",
7
- "allOf": [
8
- {
9
- "$ref": "common_types.json#/$defs/ComponentCommon"
10
- },
11
- {
12
- "$ref": "common_types.json#/$defs/CatalogComponentCommon"
13
- }
14
- ],
15
- "properties": {
16
- "component": {
17
- "const": "SectionNavItem"
18
- },
19
- "disabled": {
20
- "description": "Non-interactive; tab-skipped; dim visual.",
21
- "type": "boolean",
22
- "default": false
23
- },
24
- "icon": {
25
- "description": "Optional Phosphor icon name (leading).",
26
- "type": "string",
27
- "default": ""
28
- },
29
- "selected": {
30
- "description": "Current selection. Managed by parent section-nav-ui.",
31
- "type": "boolean",
32
- "default": false
33
- },
34
- "text": {
35
- "description": "Item label.",
36
- "type": "string",
37
- "default": ""
38
- },
39
- "value": {
40
- "description": "Unique identifier (route / target id).",
41
- "type": "string",
42
- "default": ""
43
- }
44
- },
45
- "required": [
46
- "component"
47
- ],
48
- "unevaluatedProperties": false,
49
- "x-adiaui": {
50
- "anti_patterns": [],
51
- "category": "nav",
52
- "events": {
53
- "nav-select": {
54
- "description": "Fired on click or Enter/Space (suppressed when disabled).",
55
- "detail": {
56
- "item": "HTMLElement",
57
- "text": "string",
58
- "value": "string"
59
- }
60
- }
61
- },
62
- "examples": [],
63
- "keywords": [
64
- "section-nav-item",
65
- "sub-nav-item",
66
- "nav-link",
67
- "rail-item"
68
- ],
69
- "name": "AdiaSectionNavItem",
70
- "related": [
71
- "SectionNav",
72
- "SectionNavGroup"
73
- ],
74
- "slots": {},
75
- "states": [
76
- {
77
- "description": "Default.",
78
- "name": "idle"
79
- },
80
- {
81
- "description": "Currently selected destination.",
82
- "attribute": "selected",
83
- "name": "selected"
84
- },
85
- {
86
- "description": "Non-interactive.",
87
- "attribute": "disabled",
88
- "name": "disabled"
89
- }
90
- ],
91
- "synonyms": {},
92
- "tag": "section-nav-item-ui",
93
- "tokens": {},
94
- "traits": [],
95
- "version": 1
96
- }
97
- }
@@ -1,106 +0,0 @@
1
- /* Safari 17.x bug: `:scope:hover` (Flavor A) and `:scope[selected]`
2
- (Flavor B — attribute-removal restyle) both fail inside `@scope`.
3
- Selectors moved out. `:focus-visible` matches correctly inside `@scope`,
4
- so the combined `:hover, :focus-visible` rule was split — `:hover`
5
- moves out, `:focus-visible` stays. See docs/BROWSER-COMPAT.md §3a. */
6
- section-nav-item-ui:hover:not([disabled]) {
7
- background: var(--section-nav-item-bg-hover);
8
- color: var(--section-nav-item-fg-hover);
9
- }
10
- section-nav-item-ui:hover:not([disabled]) > icon-ui {
11
- color: var(--section-nav-item-fg-hover);
12
- }
13
- section-nav-item-ui[selected] {
14
- background: var(--section-nav-item-bg-selected);
15
- color: var(--section-nav-item-fg-selected);
16
- font-weight: var(--section-nav-item-selected-weight);
17
- }
18
- section-nav-item-ui[selected] > icon-ui {
19
- color: var(--section-nav-item-icon-fg-selected);
20
- }
21
- section-nav-item-ui[selected]:not(:has(> icon-ui))::before {
22
- content: '';
23
- position: absolute;
24
- inset-inline-start: calc(var(--section-nav-item-row-px) - var(--a-space-1));
25
- inset-block: 25%;
26
- width: 2px;
27
- border-radius: 1px;
28
- background: var(--section-nav-item-accent);
29
- }
30
-
31
- @scope (section-nav-item-ui) {
32
- :where(:scope) {
33
- --section-nav-item-row-height: var(--a-size);
34
- --section-nav-item-row-px: var(--a-ui-px);
35
- --section-nav-item-row-gap: var(--a-space-1);
36
- --section-nav-item-row-radius: var(--a-radius-md);
37
- --section-nav-item-font-size: var(--a-ui-size);
38
- --section-nav-item-icon-size: calc(var(--section-nav-item-row-height) - var(--a-space-2));
39
-
40
- --section-nav-item-fg: var(--a-ui-text-subtle);
41
- --section-nav-item-fg-hover: var(--a-ui-text-hover);
42
- --section-nav-item-fg-selected: var(--a-ui-text-selected);
43
- --section-nav-item-fg-disabled: var(--a-fg-disabled);
44
- --section-nav-item-icon-fg: var(--a-fg-muted);
45
- --section-nav-item-icon-fg-selected: var(--a-accent);
46
- --section-nav-item-bg-hover: var(--a-bg-muted);
47
- --section-nav-item-bg-selected: var(--a-bg-selected);
48
- --section-nav-item-accent: transparent;
49
- --section-nav-item-selected-weight: var(--a-weight-medium);
50
-
51
- --section-nav-item-duration: var(--a-duration-fast);
52
- --section-nav-item-easing: var(--a-easing);
53
- }
54
-
55
- :scope {
56
- position: relative;
57
- box-sizing: border-box;
58
- display: flex;
59
- align-items: center;
60
- gap: var(--section-nav-item-row-gap);
61
- height: var(--section-nav-item-row-height);
62
- padding: 0 var(--section-nav-item-row-px);
63
- border-radius: var(--section-nav-item-row-radius);
64
- font-size: var(--section-nav-item-font-size);
65
- color: var(--section-nav-item-fg);
66
- cursor: pointer;
67
- user-select: none;
68
- white-space: nowrap;
69
- text-decoration: none;
70
- transition:
71
- background var(--section-nav-item-duration) var(--section-nav-item-easing),
72
- color var(--section-nav-item-duration) var(--section-nav-item-easing);
73
- outline: none;
74
- }
75
-
76
- :scope > icon-ui {
77
- width: var(--section-nav-item-icon-size);
78
- height: var(--section-nav-item-icon-size);
79
- flex-shrink: 0;
80
- color: var(--section-nav-item-icon-fg);
81
- transition: color var(--section-nav-item-duration) var(--section-nav-item-easing);
82
- }
83
-
84
- :scope > [data-section-nav-item-label] {
85
- flex: 1;
86
- min-width: 0;
87
- overflow: hidden;
88
- text-overflow: ellipsis;
89
- }
90
-
91
- :scope:focus-visible:not([disabled]) {
92
- background: var(--section-nav-item-bg-hover);
93
- color: var(--section-nav-item-fg-hover);
94
- }
95
- :scope:focus-visible:not([disabled]) > icon-ui {
96
- color: var(--section-nav-item-fg-hover);
97
- }
98
-
99
- /* :scope[selected] rules moved outside @scope — see Safari 17.x bug note at top. */
100
-
101
- :scope[disabled] {
102
- color: var(--section-nav-item-fg-disabled);
103
- cursor: not-allowed;
104
- pointer-events: none;
105
- }
106
- }
@@ -1,66 +0,0 @@
1
- /**
2
- * <section-nav-item-ui> — Single nav link in a section-nav-ui rail.
3
- * Supports icon, label, disabled state, and keyboard activation (Enter/Space).
4
- * Selection updates the parent section-nav-ui's selection state.
5
- * Event: nav-select. detail: { item, text, value }
6
- */
7
-
8
- import { AdiaElement } from '../../core/element.js';
9
-
10
- class AdiaSectionNavItem extends AdiaElement {
11
- static properties = {
12
- text: { type: String, default: '', reflect: true },
13
- value: { type: String, default: '', reflect: true },
14
- icon: { type: String, default: '', reflect: true },
15
- selected: { type: Boolean, default: false, reflect: true },
16
- disabled: { type: Boolean, default: false, reflect: true },
17
- };
18
-
19
- static template = () => null;
20
-
21
- #onClick = (e) => {
22
- if (this.disabled) { e.preventDefault(); return; }
23
- const parent = this.closest('section-nav-ui');
24
- parent?.select(this);
25
- this.dispatchEvent(new CustomEvent('nav-select', {
26
- bubbles: true,
27
- detail: { item: this, text: this.text, value: this.value },
28
- }));
29
- };
30
-
31
- #onKey = (e) => {
32
- if (this.disabled) return;
33
- if (e.key === 'Enter' || e.key === ' ') {
34
- e.preventDefault();
35
- this.#onClick(e);
36
- }
37
- };
38
-
39
- connected() {
40
- this.setAttribute('role', 'link');
41
- this.setAttribute('tabindex', this.disabled ? '-1' : '0');
42
- this.#buildBody();
43
- this.addEventListener('click', this.#onClick);
44
- this.addEventListener('keydown', this.#onKey);
45
- }
46
-
47
- render() {
48
- this.#buildBody();
49
- this.setAttribute('tabindex', this.disabled ? '-1' : '0');
50
- if (this.selected) this.setAttribute('aria-current', 'page');
51
- else this.removeAttribute('aria-current');
52
- }
53
-
54
- #buildBody() {
55
- const iconHtml = this.icon ? `<icon-ui name="${this.icon}"></icon-ui>` : '';
56
- this.innerHTML = `${iconHtml}<span data-section-nav-item-label>${this.text}</span>`;
57
- }
58
-
59
- disconnected() {
60
- this.removeEventListener('click', this.#onClick);
61
- this.removeEventListener('keydown', this.#onKey);
62
- }
63
- }
64
- customElements.define('section-nav-item-ui', AdiaSectionNavItem);
65
-
66
- export { AdiaSectionNavItem };
@@ -1,70 +0,0 @@
1
- $schema: ../../../../scripts/schemas/component.yaml.schema.json
2
- name: AdiaSectionNavItem
3
- tag: section-nav-item-ui
4
- component: SectionNavItem
5
- category: nav
6
- version: 1
7
- description: |
8
- Single nav link in a section-nav-ui rail. Icon + label. Supports disabled
9
- state and keyboard activation (Enter/Space). Selection updates the
10
- parent section-nav-ui's selection state.
11
-
12
- props:
13
- text:
14
- type: string
15
- default: ""
16
- reflect: true
17
- description: Item label.
18
-
19
- value:
20
- type: string
21
- default: ""
22
- reflect: true
23
- description: Unique identifier (route / target id).
24
-
25
- icon:
26
- type: string
27
- default: ""
28
- reflect: true
29
- description: Optional Phosphor icon name (leading).
30
-
31
- selected:
32
- type: boolean
33
- default: false
34
- reflect: true
35
- description: Current selection. Managed by parent section-nav-ui.
36
-
37
- disabled:
38
- type: boolean
39
- default: false
40
- reflect: true
41
- description: Non-interactive; tab-skipped; dim visual.
42
-
43
- events:
44
- nav-select:
45
- description: Fired on click or Enter/Space (suppressed when disabled).
46
- detail:
47
- item: HTMLElement
48
- text: string
49
- value: string
50
-
51
- slots: {}
52
-
53
- states:
54
- - name: idle
55
- description: Default.
56
- - name: selected
57
- attribute: selected
58
- description: Currently selected destination.
59
- - name: disabled
60
- attribute: disabled
61
- description: Non-interactive.
62
-
63
- traits: []
64
-
65
- a2ui:
66
- rules:
67
- - Must be a descendant of section-nav-ui (direct child or via section-nav-group-ui).
68
-
69
- keywords: [section-nav-item, sub-nav-item, nav-link, rail-item]
70
- related: [SectionNav, SectionNavGroup]
@@ -1,7 +0,0 @@
1
- /* Backward-compatible shim — the app shell CSS now lives in patterns/.
2
- This file re-exports it so existing <link> tags in admin.html keep working.
3
- New pages should import patterns/app-shell/app-shell.css directly. */
4
- @import "../../patterns/app-shell/app-shell.css";
5
- @import "../../patterns/app-nav/app-nav.css";
6
- @import "../../patterns/app-nav-group/app-nav-group.css";
7
- @import "../../patterns/app-nav-item/app-nav-item.css";
File without changes