@adia-ai/web-components 0.8.40 → 0.8.41

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 (378) hide show
  1. package/CHANGELOG.md +50 -3
  2. package/MIGRATION.md +1042 -16
  3. package/README.md +25 -30
  4. package/USAGE.md +26 -0
  5. package/bin/audit-template-children.mjs +556 -0
  6. package/components/accordion/accordion-item.a2ui.json +4 -0
  7. package/components/accordion/accordion-item.yaml +2 -0
  8. package/components/accordion/accordion.a2ui.json +4 -0
  9. package/components/accordion/accordion.yaml +2 -0
  10. package/components/action-list/action-item.a2ui.json +24 -2
  11. package/components/action-list/action-item.yaml +28 -3
  12. package/components/action-list/action-list.a2ui.json +6 -1
  13. package/components/action-list/action-list.class.js +52 -11
  14. package/components/action-list/action-list.css +43 -3
  15. package/components/action-list/action-list.d.ts +4 -2
  16. package/components/action-list/action-list.yaml +5 -0
  17. package/components/adia-mark/adia-mark.a2ui.json +1 -0
  18. package/components/adia-wordmark/adia-wordmark.a2ui.json +1 -0
  19. package/components/agent-artifact/agent-artifact.a2ui.json +1 -0
  20. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +6 -5
  21. package/components/agent-feedback-bar/agent-feedback-bar.yaml +6 -2
  22. package/components/agent-questions/agent-questions.a2ui.json +1 -0
  23. package/components/agent-reasoning/agent-reasoning.a2ui.json +6 -5
  24. package/components/agent-reasoning/agent-reasoning.yaml +6 -2
  25. package/components/agent-suggestions/agent-suggestions.a2ui.json +11 -2
  26. package/components/agent-suggestions/agent-suggestions.class.js +2 -1
  27. package/components/agent-suggestions/agent-suggestions.d.ts +4 -4
  28. package/components/agent-suggestions/agent-suggestions.yaml +4 -2
  29. package/components/agent-trace/agent-trace.a2ui.json +6 -5
  30. package/components/agent-trace/agent-trace.yaml +6 -2
  31. package/components/alert/alert.a2ui.json +1 -0
  32. package/components/alert/alert.css +1 -1
  33. package/components/anchor-bar/anchor-bar.a2ui.json +1 -0
  34. package/components/aside/aside.a2ui.json +1 -0
  35. package/components/avatar/avatar-group.a2ui.json +7 -1
  36. package/components/avatar/avatar-group.yaml +1 -0
  37. package/components/avatar/avatar.a2ui.json +12 -11
  38. package/components/avatar/avatar.d.ts +1 -1
  39. package/components/avatar/avatar.yaml +4 -4
  40. package/components/badge/badge.a2ui.json +1 -0
  41. package/components/block/block.a2ui.json +1 -0
  42. package/components/blockquote/blockquote.a2ui.json +1 -0
  43. package/components/breadcrumb/breadcrumb.a2ui.json +1 -0
  44. package/components/button/button.a2ui.json +1 -3
  45. package/components/button/button.yaml +1 -3
  46. package/components/calendar-grid/calendar-grid.a2ui.json +1 -0
  47. package/components/calendar-grid/calendar-grid.class.js +2 -1
  48. package/components/calendar-picker/calendar-picker.a2ui.json +143 -24
  49. package/components/calendar-picker/calendar-picker.class.js +490 -197
  50. package/components/calendar-picker/calendar-picker.css +120 -171
  51. package/components/calendar-picker/calendar-picker.yaml +225 -47
  52. package/components/canvas/canvas.a2ui.json +6 -5
  53. package/components/canvas/canvas.d.ts +37 -0
  54. package/components/canvas/canvas.js +72 -3
  55. package/components/canvas/canvas.yaml +6 -2
  56. package/components/card/card.a2ui.json +25 -2
  57. package/components/card/card.class.js +3 -0
  58. package/components/card/card.css +31 -1
  59. package/components/card/card.d.ts +2 -2
  60. package/components/card/card.examples.md +3 -3
  61. package/components/card/card.yaml +28 -4
  62. package/components/chart/chart.a2ui.json +9 -4
  63. package/components/chart/chart.class.js +6 -6
  64. package/components/chart/chart.css +6 -4
  65. package/components/chart/chart.d.ts +1 -1
  66. package/components/chart/chart.yaml +5 -3
  67. package/components/chart-legend/chart-legend.a2ui.json +1 -0
  68. package/components/chat-thread/chat-input.a2ui.json +1 -0
  69. package/components/chat-thread/chat-thread.a2ui.json +10 -9
  70. package/components/chat-thread/chat-thread.yaml +13 -20
  71. package/components/check/check.a2ui.json +10 -9
  72. package/components/check/check.yaml +4 -4
  73. package/components/code/code.a2ui.json +1 -0
  74. package/components/col/col.a2ui.json +1 -0
  75. package/components/color-input/color-input.a2ui.json +1 -0
  76. package/components/color-picker/color-picker.a2ui.json +1 -0
  77. package/components/combobox/combobox.a2ui.json +3 -2
  78. package/components/combobox/combobox.yaml +2 -2
  79. package/components/command/command.a2ui.json +12 -10
  80. package/components/command/command.class.js +3 -2
  81. package/components/command/command.yaml +17 -4
  82. package/components/context-menu/context-menu.a2ui.json +1 -0
  83. package/components/date-range-picker/date-range-picker.a2ui.json +2 -1
  84. package/components/date-range-picker/date-range-picker.yaml +1 -1
  85. package/components/datetime-picker/datetime-picker.a2ui.json +15 -108
  86. package/components/datetime-picker/datetime-picker.class.js +37 -690
  87. package/components/datetime-picker/datetime-picker.css +11 -183
  88. package/components/datetime-picker/datetime-picker.d.ts +4 -5
  89. package/components/datetime-picker/datetime-picker.yaml +44 -135
  90. package/components/demo-toggle/demo-toggle.a2ui.json +1 -0
  91. package/components/demo-toggle/demo-toggle.css +1 -1
  92. package/components/description-list/description-list.a2ui.json +1 -0
  93. package/components/display-field/display-field.a2ui.json +1 -0
  94. package/components/divider/divider.a2ui.json +1 -0
  95. package/components/drawer/drawer.a2ui.json +1 -3
  96. package/components/drawer/drawer.css +1 -1
  97. package/components/drawer/drawer.yaml +0 -2
  98. package/components/drilldown/drilldown.a2ui.json +22 -20
  99. package/components/drilldown/drilldown.class.js +4 -3
  100. package/components/drilldown/drilldown.css +6 -6
  101. package/components/drilldown/drilldown.yaml +40 -9
  102. package/components/embed/embed.a2ui.json +6 -5
  103. package/components/embed/embed.yaml +2 -2
  104. package/components/empty-state/empty-state.a2ui.json +1 -0
  105. package/components/feed/feed-item.a2ui.json +25 -5
  106. package/components/feed/feed-item.yaml +28 -7
  107. package/components/feed/feed.a2ui.json +9 -2
  108. package/components/feed/feed.class.js +19 -12
  109. package/components/feed/feed.css +8 -8
  110. package/components/feed/feed.yaml +14 -1
  111. package/components/field/field.a2ui.json +1 -0
  112. package/components/field/field.examples.md +1 -1
  113. package/components/fields/fields.a2ui.json +1 -0
  114. package/components/fields/fields.examples.md +1 -1
  115. package/components/footer/footer.a2ui.json +1 -0
  116. package/components/frame/frame.a2ui.json +1 -0
  117. package/components/grid/grid.a2ui.json +1 -0
  118. package/components/header/header.a2ui.json +3 -2
  119. package/components/header/header.yaml +3 -3
  120. package/components/heatmap/heatmap.a2ui.json +2 -1
  121. package/components/heatmap/heatmap.class.js +1 -1
  122. package/components/heatmap/heatmap.css +4 -4
  123. package/components/heatmap/heatmap.yaml +1 -1
  124. package/components/icon/icon.a2ui.json +1 -0
  125. package/components/image/image.a2ui.json +28 -14
  126. package/components/image/image.class.js +38 -23
  127. package/components/image/image.css +18 -8
  128. package/components/image/image.d.ts +2 -2
  129. package/components/image/image.examples.md +3 -3
  130. package/components/image/image.yaml +23 -7
  131. package/components/inline-edit/inline-edit.a2ui.json +1 -0
  132. package/components/inline-message/inline-message.a2ui.json +3 -1
  133. package/components/inline-message/inline-message.class.js +3 -1
  134. package/components/inline-message/inline-message.d.ts +2 -2
  135. package/components/inline-message/inline-message.yaml +2 -1
  136. package/components/input/input.a2ui.json +66 -16
  137. package/components/input/input.class.js +64 -7
  138. package/components/input/input.css +14 -14
  139. package/components/input/input.d.ts +9 -4
  140. package/components/input/input.yaml +83 -10
  141. package/components/inspector/inspector.a2ui.json +1 -0
  142. package/components/integration-card/integration-card.a2ui.json +1 -0
  143. package/components/kbd/kbd.a2ui.json +1 -0
  144. package/components/link/link.a2ui.json +2 -1
  145. package/components/link/link.yaml +1 -1
  146. package/components/list/list-item.a2ui.json +9 -0
  147. package/components/list/list-item.yaml +12 -0
  148. package/components/list/list.a2ui.json +9 -3
  149. package/components/list/list.class.js +14 -1
  150. package/components/list/list.css +12 -1
  151. package/components/list/list.d.ts +7 -5
  152. package/components/list/list.yaml +16 -6
  153. package/components/list-window/list-window.a2ui.json +1 -0
  154. package/components/list-window/list-window.class.js +2 -1
  155. package/components/loading-overlay/loading-overlay.a2ui.json +1 -0
  156. package/components/mark/mark.a2ui.json +2 -1
  157. package/components/mark/mark.yaml +1 -1
  158. package/components/menu/menu-divider.a2ui.json +1 -0
  159. package/components/menu/menu-item.a2ui.json +3 -1
  160. package/components/menu/menu-item.yaml +6 -0
  161. package/components/menu/menu-label.a2ui.json +1 -0
  162. package/components/menu/menu.a2ui.json +3 -2
  163. package/components/menu/menu.class.js +2 -2
  164. package/components/menu/menu.d.ts +2 -2
  165. package/components/menu/menu.yaml +3 -3
  166. package/components/modal/modal.a2ui.json +1 -0
  167. package/components/nav/nav.a2ui.json +1 -0
  168. package/components/nav/nav.class.js +14 -3
  169. package/components/nav-group/nav-group.a2ui.json +1 -0
  170. package/components/nav-group/nav-group.class.js +3 -1
  171. package/components/nav-item/nav-item.a2ui.json +1 -0
  172. package/components/noodles/noodles.a2ui.json +1 -0
  173. package/components/noodles/noodles.class.js +5 -1
  174. package/components/number-format/number-format.a2ui.json +1 -0
  175. package/components/option-card/option-card.a2ui.json +1 -0
  176. package/components/otp-input/otp-input.a2ui.json +3 -2
  177. package/components/otp-input/otp-input.yaml +9 -2
  178. package/components/page/page.a2ui.json +13 -0
  179. package/components/page/page.d.ts +1 -1
  180. package/components/page/page.yaml +1 -0
  181. package/components/pagination/pagination.a2ui.json +1 -0
  182. package/components/pagination/pagination.class.js +3 -2
  183. package/components/pane/pane.a2ui.json +6 -0
  184. package/components/pane/pane.class.js +3 -3
  185. package/components/pane/pane.css +2 -2
  186. package/components/pane/pane.yaml +3 -0
  187. package/components/password-strength/password-strength.a2ui.json +1 -0
  188. package/components/pipeline-status/pipeline-status.a2ui.json +1 -0
  189. package/components/popover/popover.a2ui.json +7 -6
  190. package/components/popover/popover.class.js +2 -2
  191. package/components/popover/popover.d.ts +2 -2
  192. package/components/popover/popover.yaml +4 -4
  193. package/components/preview/preview.a2ui.json +1 -0
  194. package/components/preview/preview.class.js +5 -1
  195. package/components/progress/progress.a2ui.json +47 -24
  196. package/components/progress/progress.class.js +66 -11
  197. package/components/progress/progress.css +44 -26
  198. package/components/progress/progress.d.ts +7 -5
  199. package/components/progress/progress.examples.md +2 -2
  200. package/components/progress/progress.yaml +235 -53
  201. package/components/progress-row/progress-row.a2ui.json +16 -12
  202. package/components/progress-row/progress-row.d.ts +2 -2
  203. package/components/progress-row/progress-row.examples.md +2 -14
  204. package/components/progress-row/progress-row.yaml +28 -36
  205. package/components/qr-code/qr-code.a2ui.json +3 -2
  206. package/components/qr-code/qr-code.class.js +4 -4
  207. package/components/qr-code/qr-code.css +1 -1
  208. package/components/qr-code/qr-code.yaml +5 -3
  209. package/components/radio/radio.a2ui.json +8 -7
  210. package/components/radio/radio.class.js +8 -0
  211. package/components/radio/radio.yaml +3 -3
  212. package/components/radio-group/radio-group.a2ui.json +5 -3
  213. package/components/radio-group/radio-group.class.js +11 -0
  214. package/components/radio-group/radio-group.yaml +7 -1
  215. package/components/range/range.a2ui.json +6 -0
  216. package/components/range/range.class.js +2 -2
  217. package/components/range/range.css +2 -2
  218. package/components/range/range.yaml +3 -0
  219. package/components/rating/rating.a2ui.json +1 -0
  220. package/components/relative-time/relative-time.a2ui.json +1 -0
  221. package/components/richtext/richtext.a2ui.json +2 -1
  222. package/components/richtext/richtext.yaml +1 -1
  223. package/components/row/row.a2ui.json +1 -0
  224. package/components/search/search.a2ui.json +1 -0
  225. package/components/search/search.class.js +4 -1
  226. package/components/section/section.a2ui.json +1 -0
  227. package/components/segment/segment.a2ui.json +21 -10
  228. package/components/segment/segment.css +15 -0
  229. package/components/segment/segment.d.ts +2 -1
  230. package/components/segment/segment.yaml +20 -13
  231. package/components/segmented/segmented.a2ui.json +36 -7
  232. package/components/segmented/segmented.class.js +113 -22
  233. package/components/segmented/segmented.css +3 -0
  234. package/components/segmented/segmented.d.ts +3 -1
  235. package/components/segmented/segmented.yaml +80 -8
  236. package/components/select/select.a2ui.json +18 -13
  237. package/components/select/select.class.js +61 -37
  238. package/components/select/select.css +15 -13
  239. package/components/select/select.yaml +18 -7
  240. package/components/skeleton/skeleton.a2ui.json +8 -7
  241. package/components/skeleton/skeleton.class.js +8 -7
  242. package/components/skeleton/skeleton.css +21 -6
  243. package/components/skeleton/skeleton.d.ts +2 -2
  244. package/components/skeleton/skeleton.examples.md +2 -2
  245. package/components/skeleton/skeleton.yaml +3 -2
  246. package/components/skip-nav/skip-nav.a2ui.json +1 -0
  247. package/components/slider/slider.a2ui.json +6 -0
  248. package/components/slider/slider.class.js +20 -3
  249. package/components/slider/slider.css +2 -2
  250. package/components/slider/slider.yaml +3 -0
  251. package/components/spinner/spinner.a2ui.json +1 -0
  252. package/components/stack/stack.a2ui.json +1 -0
  253. package/components/stat/stat.a2ui.json +1 -0
  254. package/components/stat/stat.js +2 -2
  255. package/components/step-progress/step-progress.a2ui.json +1 -0
  256. package/components/step-progress/step-progress.yaml +1 -1
  257. package/components/stepper/stepper-item.a2ui.json +7 -3
  258. package/components/stepper/stepper-item.yaml +15 -5
  259. package/components/stepper/stepper.a2ui.json +5 -1
  260. package/components/stepper/stepper.class.js +31 -16
  261. package/components/stepper/stepper.d.ts +1 -1
  262. package/components/stepper/stepper.yaml +4 -2
  263. package/components/stream/stream.a2ui.json +1 -0
  264. package/components/swatch/swatch.a2ui.json +1 -0
  265. package/components/swiper/swiper.a2ui.json +1 -0
  266. package/components/swiper/swiper.class.js +5 -1
  267. package/components/switch/switch.a2ui.json +12 -11
  268. package/components/switch/switch.css +1 -1
  269. package/components/switch/switch.yaml +6 -6
  270. package/components/table/table.a2ui.json +1 -0
  271. package/components/table/table.class.js +14 -12
  272. package/components/table/table.css +11 -9
  273. package/components/table-toolbar/table-toolbar.a2ui.json +1 -0
  274. package/components/table-toolbar/table-toolbar.class.js +38 -19
  275. package/components/table-toolbar/table-toolbar.css +1 -1
  276. package/components/tabs/tab.a2ui.json +9 -0
  277. package/components/tabs/tab.js +4 -0
  278. package/components/tabs/tab.yaml +15 -0
  279. package/components/tabs/tabs.a2ui.json +9 -4
  280. package/components/tabs/tabs.class.js +13 -1
  281. package/components/tabs/tabs.css +8 -0
  282. package/components/tabs/tabs.d.ts +2 -0
  283. package/components/tabs/tabs.yaml +9 -2
  284. package/components/tag/tag.a2ui.json +1 -0
  285. package/components/tags-input/tags-input.a2ui.json +22 -17
  286. package/components/tags-input/tags-input.class.js +13 -11
  287. package/components/tags-input/tags-input.css +10 -6
  288. package/components/tags-input/tags-input.d.ts +16 -7
  289. package/components/tags-input/tags-input.examples.md +2 -2
  290. package/components/tags-input/tags-input.yaml +25 -8
  291. package/components/text/text.a2ui.json +6 -5
  292. package/components/text/text.css +10 -5
  293. package/components/text/text.d.ts +2 -2
  294. package/components/text/text.yaml +9 -4
  295. package/components/textarea/textarea.a2ui.json +2 -1
  296. package/components/textarea/textarea.yaml +1 -1
  297. package/components/theme-provider/theme-provider.a2ui.json +2 -1
  298. package/components/theme-provider/theme-provider.d.ts +5 -3
  299. package/components/theme-provider/theme-provider.yaml +5 -3
  300. package/components/time-picker/time-picker.a2ui.json +1 -0
  301. package/components/time-picker/time-picker.class.js +4 -2
  302. package/components/timeline/timeline-item.a2ui.json +26 -3
  303. package/components/timeline/timeline-item.yaml +22 -7
  304. package/components/timeline/timeline.a2ui.json +4 -0
  305. package/components/timeline/timeline.class.js +29 -18
  306. package/components/timeline/timeline.d.ts +3 -3
  307. package/components/timeline/timeline.yaml +2 -0
  308. package/components/toast/toast.a2ui.json +10 -3
  309. package/components/toast/toast.yaml +20 -13
  310. package/components/toc/toc.a2ui.json +1 -0
  311. package/components/toggle-group/toggle-group.a2ui.json +7 -3
  312. package/components/toggle-group/toggle-group.class.js +40 -1
  313. package/components/toggle-group/toggle-group.css +6 -1
  314. package/components/toggle-group/toggle-group.d.ts +2 -2
  315. package/components/toggle-group/toggle-group.yaml +21 -12
  316. package/components/toggle-group/toggle-option.a2ui.json +7 -3
  317. package/components/toggle-group/toggle-option.yaml +13 -7
  318. package/components/toggle-scheme/toggle-scheme.a2ui.json +2 -1
  319. package/components/toggle-scheme/toggle-scheme.yaml +1 -1
  320. package/components/toolbar/toolbar-group.a2ui.json +1 -0
  321. package/components/toolbar/toolbar.a2ui.json +1 -0
  322. package/components/toolbar/toolbar.class.js +3 -0
  323. package/components/tooltip/tooltip.a2ui.json +1 -0
  324. package/components/tour/tour-step.a2ui.json +4 -0
  325. package/components/tour/tour-step.yaml +2 -0
  326. package/components/tour/tour.a2ui.json +4 -0
  327. package/components/tour/tour.yaml +2 -0
  328. package/components/tree/tree-item.a2ui.json +5 -0
  329. package/components/tree/tree-item.yaml +3 -0
  330. package/components/tree/tree.a2ui.json +4 -0
  331. package/components/tree/tree.class.js +2 -1
  332. package/components/tree/tree.yaml +2 -0
  333. package/components/upload/upload.a2ui.json +8 -1
  334. package/components/upload/upload.class.js +35 -5
  335. package/components/upload/upload.css +28 -0
  336. package/components/upload/upload.d.ts +16 -0
  337. package/components/upload/upload.yaml +27 -7
  338. package/components/visually-hidden/visually-hidden.a2ui.json +1 -0
  339. package/core/dom.d.ts +11 -0
  340. package/core/dom.js +34 -0
  341. package/core/form.js +7 -0
  342. package/core/index.d.ts +1 -0
  343. package/core/index.js +1 -0
  344. package/core/responsive.js +16 -4
  345. package/core/template.js +2 -1
  346. package/custom-elements.json +437 -489
  347. package/dist/host.min.css +1 -1
  348. package/dist/host.sheet.js +1 -1
  349. package/dist/theme-provider.min.js +5 -5
  350. package/dist/web-components.min.css +1 -1
  351. package/dist/web-components.min.js +91 -104
  352. package/dist/web-components.sheet.js +1 -1
  353. package/package.json +4 -2
  354. package/patterns/conversion-funnel/conversion-funnel.examples.html +15 -15
  355. package/patterns/inline-dialog/inline-dialog.examples.html +2 -2
  356. package/patterns/inline-dialog/inline-dialog.html +4 -0
  357. package/patterns/timezone-selector/timezone-selector.examples.html +1 -1
  358. package/patterns/timezone-selector/timezone-selector.html +2 -2
  359. package/styles/api/text.css +7 -0
  360. package/traits/_catalog.json +129 -41
  361. package/traits/anchor-positioning/anchor-positioning.js +1 -0
  362. package/traits/announcer/announcer.js +1 -0
  363. package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -0
  364. package/traits/attention-pulse/attention-pulse.js +1 -0
  365. package/traits/count-up/count-up.js +1 -0
  366. package/traits/define.js +78 -0
  367. package/traits/focus-restore/focus-restore.js +2 -1
  368. package/traits/haptic-feedback/haptic-feedback.js +1 -0
  369. package/traits/input-mask/input-mask.js +1 -0
  370. package/traits/intersection-observer/intersection-observer.js +1 -0
  371. package/traits/layout-animation/layout-animation.js +1 -0
  372. package/traits/noise-texture/noise-texture.js +1 -0
  373. package/traits/resize-observer/resize-observer.js +1 -0
  374. package/traits/scroll-progress/scroll-progress.js +1 -0
  375. package/traits/snap-to-grid/snap-to-grid.js +1 -0
  376. package/traits/sound-feedback/sound-feedback.js +1 -0
  377. package/traits/spring-animate/spring-animate.js +1 -0
  378. package/traits/validation/validation.js +1 -0
@@ -3,34 +3,41 @@ name: UIProgress
3
3
  tag: progress-ui
4
4
  status: stable
5
5
  component: Progress
6
- category: display
6
+ category: feedback
7
7
  version: 1
8
8
  description: >-
9
- Progress indicator with bar (default) or spinner variant. Value < 0
10
- marks indeterminate state showing animated activity instead of a fill.
11
- Use inside <progress-row-ui> for labeled task lists or standalone for
12
- global loading indicators; for percent-complete inline displays use
13
- <stat-ui> instead.
9
+ Linear progress bar indicator. Value < 0 marks indeterminate state
10
+ showing animated activity instead of a fill. Bar-only — for circular
11
+ loading indicators use <spinner-ui> instead (the former
12
+ `variant="spinner"` render mode was retired; spinner-ui owns circular).
13
+ Set `label` for a labeled task-list row (label + bar + optional `meta`
14
+ text in one row, e.g. storage quotas, capacity breakdowns) — absorbed
15
+ <progress-row-ui>'s row layout directly; that component is now
16
+ a deprecated alias. Omit `label` for a standalone bar (global loading
17
+ indicators); for percent-complete inline displays use <stat-ui> instead.
14
18
  props:
15
19
  value:
16
- description: Current progress. 0..max (or 0..1 when max omitted). null = indeterminate (legacy -1 accepted for back-compat).
20
+ description: Current progress, 0-100 (clamped). null = indeterminate (legacy -1 accepted for back-compat).
17
21
  type: number
18
22
  default: null
19
- variant:
20
- description: Render mode `bar` (default) or `spinner`. For fill color set
21
- the `--progress-fill` token (defaults to `--md-sys-color-primary`); there is no
22
- variant-as-color (use the token).
23
+ label:
24
+ description: Left-hand label text. Presence (non-empty) switches to the labeled row layout — label + bar + optional `meta` in one row; absent = plain bar. Sanctioned Mode Attribute (component-token-contract.md).
23
25
  type: string
24
- default: bar
25
- enum:
26
- - bar
27
- - spinner
26
+ default: ""
27
+ meta:
28
+ description: Right-hand meta text shown in row layout (e.g. '32 GB', '4.2k / 10k'). No visible effect without `label`.
29
+ type: string
30
+ default: ""
28
31
  events: {}
29
- slots:
32
+ parts:
30
33
  fill:
31
- description: Bar fill element inside track
34
+ description: Bar fill element inside track — template-owned anatomy part, not a light-DOM insertion point (gh#1447)
32
35
  track:
33
- description: Bar track container
36
+ description: Bar track container — template-owned anatomy part, not a light-DOM insertion point (gh#1447)
37
+ label:
38
+ description: "Label region — row-layout left-hand text (active when `label` is set)."
39
+ meta:
40
+ description: "Meta region — row-layout right-hand text (active when `label` is set)."
34
41
  states:
35
42
  - name: idle
36
43
  description: Default, ready for interaction.
@@ -40,46 +47,220 @@ a2ui:
40
47
  rules:
41
48
  - rule: 'Use for in-progress task feedback with known or indeterminate state. Value < 0 = indeterminate animation.'
42
49
  reason: 'Same primitive for both modes; consumer controls via value.'
43
- - rule: 'For labeled task lists (multiple progress bars with row labels), use <progress-row-ui> instead.'
44
- reason: 'Progress-row composes <progress-ui> + label + value display.'
45
- - rule: 'Spinner variant (variant=''spinner'') for circular loading indicators; bar variant default for linear.'
46
- reason: 'Two visual modes.'
47
- anti_patterns: []
50
+ - rule: 'For labeled task lists (multiple progress bars with row labels, e.g. storage/capacity breakdowns), set `label` (and optional `meta`) directly on <progress-ui> — no separate component needed.'
51
+ reason: 'label present activates the row layout in-place (absorbed from <progress-row-ui>, gh#1363 C4).'
52
+ - rule: 'For circular loading indicators, use <spinner-ui> instead <progress-ui> is bar-only.'
53
+ reason: 'Retired the former variant=''spinner'' render mode; spinner-ui owns circular (arc/ring/dots/knight).'
54
+ anti_patterns:
55
+ - wrong: |
56
+ {"component": "Progress", "variant": "spinner"}
57
+ why: |
58
+ Progress no longer has a `variant` prop — the spinner render mode
59
+ was retired. Progress is bar-only now.
60
+ fix: |
61
+ {"component": "Spinner"}
62
+ - wrong: |
63
+ {"component": "ProgressRow", "label": "CPU", "value": 92}
64
+ why: |
65
+ ProgressRow is deprecated — its label+row layout was
66
+ absorbed into Progress directly.
67
+ fix: |
68
+ {"component": "Progress", "label": "CPU", "value": 92}
48
69
  examples:
49
70
  - name: dashboard
50
71
  description: Two-column dashboard with quick actions (buttons) and system status (progress bars).
51
- a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Grid\",\n \"children\": [\n \"c1\",\n \"c2\"\n \
52
- \ ],\n \"columns\": \"2\"\n },\n {\n \"id\": \"c1\",\n \"component\": \"Card\",\n \"children\": [\n \
53
- \ \"c1h\",\n \"c1s\"\n ]\n },\n {\n \"id\": \"c1h\",\n \"component\": \"Header\",\n \"children\"\
54
- : [\n \"c1t\"\n ]\n },\n {\n \"id\": \"c1t\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n\
55
- \ \"textContent\": \"Quick Actions\",\n \"variant\": \"section\"\n },\n {\n \"id\": \"c1s\",\n \"component\"\
56
- : \"Section\",\n \"children\": [\n \"c1col\"\n ]\n },\n {\n \"id\": \"c1col\",\n \"component\": \"\
57
- Column\",\n \"children\": [\n \"b1\",\n \"b2\",\n \"b3\"\n ]\n },\n {\n \"id\": \"b1\",\n \
58
- \ \"component\": \"Button\",\n \"text\": \"New Project\",\n \"variant\": \"solid\",\n \"iconLeading\": \"plus\"\
59
- \n },\n {\n \"id\": \"b2\",\n \"component\": \"Button\",\n \"text\": \"Invite Member\",\n \"variant\": \"\
60
- outline\",\n \"iconLeading\": \"users\"\n },\n {\n \"id\": \"b3\",\n \"component\": \"Button\",\n \"text\"\
61
- : \"View Reports\",\n \"variant\": \"ghost\",\n \"iconLeading\": \"chart\"\n },\n {\n \"id\": \"c2\",\n \
62
- \ \"component\": \"Card\",\n \"children\": [\n \"c2h\",\n \"c2s\"\n ]\n },\n {\n \"id\": \"c2h\"\
63
- ,\n \"component\": \"Header\",\n \"children\": [\n \"c2t\"\n ]\n },\n {\n \"id\": \"c2t\",\n \"\
64
- component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"System Status\",\n \"variant\": \"section\"\
65
- \n },\n {\n \"id\": \"c2s\",\n \"component\": \"Section\",\n \"children\": [\n \"c2col\"\n ]\n },\n\
66
- \ {\n \"id\": \"c2col\",\n \"component\": \"Column\",\n \"children\": [\n \"p1\",\n \"p2\",\n \
67
- \ \"p3\"\n ]\n },\n {\n \"id\": \"p1\",\n \"component\": \"Progress\",\n \"value\": \"92\",\n \"label\"\
68
- : \"CPU\"\n },\n {\n \"id\": \"p2\",\n \"component\": \"Progress\",\n \"value\": \"67\",\n \"label\": \"\
69
- Memory\"\n },\n {\n \"id\": \"p3\",\n \"component\": \"Progress\",\n \"value\": \"34\",\n \"label\": \"\
70
- Disk\"\n }\n]"
72
+ a2ui: >-
73
+ [
74
+ {
75
+ "id": "root",
76
+ "component": "Grid",
77
+ "children": [
78
+ "c1",
79
+ "c2"
80
+ ],
81
+ "columns": "2"
82
+ },
83
+ {
84
+ "id": "c1",
85
+ "component": "Card",
86
+ "children": [
87
+ "c1h",
88
+ "c1s"
89
+ ]
90
+ },
91
+ {
92
+ "id": "c1h",
93
+ "component": "Header",
94
+ "children": [
95
+ "c1t"
96
+ ]
97
+ },
98
+ {
99
+ "id": "c1t",
100
+ "component": "Text",
101
+ "slot": "heading",
102
+ "textContent": "Quick Actions",
103
+ "variant": "section"
104
+ },
105
+ {
106
+ "id": "c1s",
107
+ "component": "Section",
108
+ "children": [
109
+ "c1col"
110
+ ]
111
+ },
112
+ {
113
+ "id": "c1col",
114
+ "component": "Column",
115
+ "children": [
116
+ "b1",
117
+ "b2",
118
+ "b3"
119
+ ]
120
+ },
121
+ {
122
+ "id": "b1",
123
+ "component": "Button",
124
+ "text": "New Project",
125
+ "variant": "solid",
126
+ "icon": "plus"
127
+ },
128
+ {
129
+ "id": "b2",
130
+ "component": "Button",
131
+ "text": "Invite Member",
132
+ "variant": "outline",
133
+ "icon": "users"
134
+ },
135
+ {
136
+ "id": "b3",
137
+ "component": "Button",
138
+ "text": "View Reports",
139
+ "variant": "ghost",
140
+ "icon": "chart"
141
+ },
142
+ {
143
+ "id": "c2",
144
+ "component": "Card",
145
+ "children": [
146
+ "c2h",
147
+ "c2s"
148
+ ]
149
+ },
150
+ {
151
+ "id": "c2h",
152
+ "component": "Header",
153
+ "children": [
154
+ "c2t"
155
+ ]
156
+ },
157
+ {
158
+ "id": "c2t",
159
+ "component": "Text",
160
+ "slot": "heading",
161
+ "textContent": "System Status",
162
+ "variant": "section"
163
+ },
164
+ {
165
+ "id": "c2s",
166
+ "component": "Section",
167
+ "children": [
168
+ "c2col"
169
+ ]
170
+ },
171
+ {
172
+ "id": "c2col",
173
+ "component": "Column",
174
+ "children": [
175
+ "p1",
176
+ "p2",
177
+ "p3"
178
+ ]
179
+ },
180
+ {
181
+ "id": "p1",
182
+ "component": "Progress",
183
+ "value": 92,
184
+ "label": "CPU"
185
+ },
186
+ {
187
+ "id": "p2",
188
+ "component": "Progress",
189
+ "value": 67,
190
+ "label": "Memory"
191
+ },
192
+ {
193
+ "id": "p3",
194
+ "component": "Progress",
195
+ "value": 34,
196
+ "label": "Disk"
197
+ }
198
+ ]
71
199
  - name: onboarding-checklist
72
200
  description: User onboarding checklist with progress and checkbox items.
73
- a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\"\n\
74
- \ ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\"\n ]\n\
75
- \ },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"\
76
- Getting Started\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"col\"\
77
- \n ]\n },\n {\n \"id\": \"col\",\n \"component\": \"Column\",\n \"children\": [\n \"prog\",\n \
78
- \ \"c1\",\n \"c2\",\n \"c3\"\n ],\n \"gap\": \"3\"\n },\n {\n \"id\": \"prog\",\n \"component\"\
79
- : \"Progress\",\n \"value\": 33,\n \"max\": 100\n },\n {\n \"id\": \"c1\",\n \"component\": \"CheckBox\"\
80
- ,\n \"label\": \"Complete your profile\",\n \"checked\": true\n },\n {\n \"id\": \"c2\",\n \"component\"\
81
- : \"CheckBox\",\n \"label\": \"Invite team members\"\n },\n {\n \"id\": \"c3\",\n \"component\": \"CheckBox\"\
82
- ,\n \"label\": \"Create your first project\"\n }\n]"
201
+ a2ui: >-
202
+ [
203
+ {
204
+ "id": "root",
205
+ "component": "Card",
206
+ "children": [
207
+ "hdr",
208
+ "sec"
209
+ ]
210
+ },
211
+ {
212
+ "id": "hdr",
213
+ "component": "Header",
214
+ "children": [
215
+ "title"
216
+ ]
217
+ },
218
+ {
219
+ "id": "title",
220
+ "component": "Text",
221
+ "slot": "heading",
222
+ "textContent": "Getting Started"
223
+ },
224
+ {
225
+ "id": "sec",
226
+ "component": "Section",
227
+ "children": [
228
+ "col"
229
+ ]
230
+ },
231
+ {
232
+ "id": "col",
233
+ "component": "Column",
234
+ "children": [
235
+ "prog",
236
+ "c1",
237
+ "c2",
238
+ "c3"
239
+ ],
240
+ "gap": "3"
241
+ },
242
+ {
243
+ "id": "prog",
244
+ "component": "Progress",
245
+ "value": 33
246
+ },
247
+ {
248
+ "id": "c1",
249
+ "component": "CheckBox",
250
+ "label": "Complete your profile",
251
+ "checked": true
252
+ },
253
+ {
254
+ "id": "c2",
255
+ "component": "CheckBox",
256
+ "label": "Invite team members"
257
+ },
258
+ {
259
+ "id": "c3",
260
+ "component": "CheckBox",
261
+ "label": "Create your first project"
262
+ }
263
+ ]
83
264
  keywords:
84
265
  - progress
85
266
  - monitor
@@ -175,3 +356,4 @@ related:
175
356
  - button
176
357
  - check-box
177
358
  - upload
359
+ - spinner
@@ -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/ProgressRow.json",
4
4
  "title": "ProgressRow",
5
- "description": "Inline labeled progress row with label, progress bar, and meta text. Used for storage quotas, capacity breakdowns, usage indicators.",
5
+ "description": "DEPRECATED (gh#1363 C4) — absorbed into <progress-ui>: set `label` (and optional `meta`) directly on <progress-ui> instead, which activates the identical row layout in place. progress-row-ui keeps working (still composes <progress-ui> internally, unchanged behavior) for existing back-compat markup, but is no longer taught or generated for new work. Was: inline labeled progress row with label, progress bar, and meta text storage quotas, capacity breakdowns, usage indicators.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -28,7 +28,10 @@
28
28
  },
29
29
  "value": {
30
30
  "description": "Progress value 0-100 (null = indeterminate; legacy -1 accepted for back-compat)",
31
- "type": "number",
31
+ "type": [
32
+ "number",
33
+ "null"
34
+ ],
32
35
  "default": null
33
36
  },
34
37
  "variant": {
@@ -48,19 +51,19 @@
48
51
  ],
49
52
  "unevaluatedProperties": false,
50
53
  "x-adiaui": {
51
- "anti_patterns": [],
52
- "category": "data",
54
+ "anti_patterns": [
55
+ {
56
+ "fix": "{\"component\": \"Progress\", \"label\": \"CPU\", \"value\": 92}\n",
57
+ "why": "ProgressRow is deprecated — its row layout was absorbed\ninto Progress directly.\n",
58
+ "wrong": "{\"component\": \"ProgressRow\", \"label\": \"CPU\", \"value\": 92}\n"
59
+ }
60
+ ],
61
+ "category": "feedback",
53
62
  "composes": [
54
63
  "progress-ui"
55
64
  ],
56
65
  "events": {},
57
- "examples": [
58
- {
59
- "description": "Basic ProgressRow usage",
60
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"comp\"\n ]\n },\n {\n \"id\": \"comp\",\n \"component\": \"ProgressRow\",\n \"label\": \"Example ProgressRow\"\n }\n]",
61
- "name": "basic-progress-row"
62
- }
63
- ],
66
+ "examples": [],
64
67
  "keywords": [
65
68
  "progressrow",
66
69
  "progress-row",
@@ -68,6 +71,7 @@
68
71
  "row"
69
72
  ],
70
73
  "name": "UIProgressRow",
74
+ "parts": {},
71
75
  "related": [
72
76
  "Progress",
73
77
  "StepProgress",
@@ -87,7 +91,7 @@
87
91
  "name": "idle"
88
92
  }
89
93
  ],
90
- "status": "stable",
94
+ "status": "deprecated",
91
95
  "synonyms": {
92
96
  "progress-row": [
93
97
  "task-row",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `<progress-row-ui>` — Inline labeled progress row with label, progress bar, and meta text. Used for storage quotas, capacity breakdowns, usage indicators.
2
+ * `<progress-row-ui>` — DEPRECATED (gh#1363 C4) — absorbed into <progress-ui>: set `label` (and optional `meta`) directly on <progress-ui> instead, which activates the identical row layout in place. progress-row-ui keeps working (still composes <progress-ui> internally, unchanged behavior) for existing back-compat markup, but is no longer taught or generated for new work. Was: inline labeled progress row with label, progress bar, and meta text storage quotas, capacity breakdowns, usage indicators.
3
3
  *
4
4
  * @see https://ui-kit.exe.xyz/site/components/progress-row
5
5
  *
@@ -18,7 +18,7 @@ export class UIProgressRow extends UIElement {
18
18
  /** Right-hand meta text (e.g. '32 GB', '4.2k / 10k') */
19
19
  meta: string;
20
20
  /** Progress value 0-100 (null = indeterminate; legacy -1 accepted for back-compat) */
21
- value: number;
21
+ value: number | null;
22
22
  /** Color variant for the progress fill */
23
23
  variant: 'default' | 'success' | 'warning' | 'danger';
24
24
  }
@@ -1,19 +1,7 @@
1
1
  # progress-row — Examples
2
2
 
3
- ## Basic
3
+ ## Basic (back-compat)
4
4
 
5
5
  ```html
6
- <progress-row-ui label="Storage" value="42"></progress-row-ui>
7
- ```
8
-
9
- ## With Meta
10
-
11
- ```html
12
- <progress-row-ui label="Documents" value="65" meta="6.5 GB / 10 GB"></progress-row-ui>
13
- ```
14
-
15
- ## Variants
16
-
17
- ```html
18
- <progress-row-ui label="Healthy" value="30" meta="30%" variant="success"></progress-row-ui>
6
+ <progress-row-ui label="Storage" value="42" meta="42 GB / 100 GB"></progress-row-ui>
19
7
  ```
@@ -3,12 +3,19 @@
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
4
  name: UIProgressRow
5
5
  tag: progress-row-ui
6
- status: stable
6
+ status: deprecated
7
7
  component: ProgressRow
8
- category: data
8
+ category: feedback
9
9
  version: 1
10
- description: Inline labeled progress row with label, progress bar, and meta text. Used for storage
11
- quotas, capacity breakdowns, usage indicators.
10
+ description: >-
11
+ DEPRECATED (gh#1363 C4) absorbed into <progress-ui>: set
12
+ `label` (and optional `meta`) directly on <progress-ui> instead, which
13
+ activates the identical row layout in place. progress-row-ui keeps
14
+ working (still composes <progress-ui> internally, unchanged behavior)
15
+ for existing back-compat markup, but is no longer taught or generated
16
+ for new work. Was: inline labeled progress row with label, progress
17
+ bar, and meta text — storage quotas, capacity breakdowns, usage
18
+ indicators.
12
19
  # Per ADR-0027 — primitives that programmatically create other primitives
13
20
  # do NOT auto-import them. Consumer (or demo shell) must explicitly import.
14
21
  composes:
@@ -48,38 +55,23 @@ traits: []
48
55
  tokens: {}
49
56
  a2ui:
50
57
  rules:
51
- - rule: 'Labeled progress row composes a label + <progress-ui> + optional value display in one horizontal row.'
52
- reason: 'Common form for task-list progress.'
53
- - rule: 'For standalone progress bars without a row context use <progress-ui> directly.'
54
- reason: 'Composition boundary.'
55
- - rule: 'Inside lists (multiple tasks with progress) stack multiple progress-rows in a <col-ui>.'
56
- reason: 'Composition pattern.'
57
- anti_patterns: []
58
- examples:
59
- - name: basic-progress-row
60
- description: Basic ProgressRow usage
61
- a2ui: >-
62
- [
63
- {
64
- "id": "root",
65
- "component": "Card",
66
- "children": [
67
- "sec"
68
- ]
69
- },
70
- {
71
- "id": "sec",
72
- "component": "Section",
73
- "children": [
74
- "comp"
75
- ]
76
- },
77
- {
78
- "id": "comp",
79
- "component": "ProgressRow",
80
- "label": "Example ProgressRow"
81
- }
82
- ]
58
+ - rule: 'DEPRECATED do not generate ProgressRow. Set `label` (and optional `meta`) directly on <progress-ui> instead; label present activates the identical row layout.'
59
+ reason: 'Absorbed progress-row-ui''s row layout into progress-ui (gh#1363 C4); this component is now a back-compat alias only.'
60
+ - rule: 'For standalone progress bars without a row context use <progress-ui> directly (no `label`).'
61
+ reason: 'Composition boundary — unchanged by the absorption.'
62
+ anti_patterns:
63
+ - wrong: |
64
+ {"component": "ProgressRow", "label": "CPU", "value": 92}
65
+ why: |
66
+ ProgressRow is deprecated — its row layout was absorbed
67
+ into Progress directly.
68
+ fix: |
69
+ {"component": "Progress", "label": "CPU", "value": 92}
70
+ # Deliberately empty (gh#1363 C4) — deprecated components carry no
71
+ # A2UI examples: the catalog/corpus must never teach `"component":
72
+ # "ProgressRow"` as a generation target. See progress.yaml's own examples
73
+ # for the equivalent (and current) label+row shape.
74
+ examples: []
83
75
  keywords:
84
76
  - progressrow
85
77
  - progress-row
@@ -71,7 +71,7 @@
71
71
  "anti_patterns": [
72
72
  {
73
73
  "fix": "Drop the ECC level (lower L gives more capacity for the same\nversion), OR shorten the URL (use a URL shortener), OR encode\nwith a BYO encoder library + pass the [matrix]:\n`<qr-code-ui matrix=\"[[1,0,1,...],...]\"></qr-code-ui>`\n",
74
- "why": "Built-in encoder covers versions 1–10. Data beyond v10 capacity\nthrows + renders empty + sets [data-error]. Console warns with\nthe byte length so consumers can diagnose.\n",
74
+ "why": "Built-in encoder covers versions 1–10. Data beyond v10 capacity\nis caught internally: the component renders empty and sets [error]\n(no exception reaches the consumer). Console warns with the value's\nUTF-16 code-unit length (String.length, not UTF-8 bytes) so\nconsumers can diagnose.\n",
75
75
  "wrong": "<qr-code-ui value=\"https://very.long.url.that.exceeds.150.bytes.of.utf8.encoded.length...\"></qr-code-ui>\n"
76
76
  },
77
77
  {
@@ -110,6 +110,7 @@
110
110
  "share-link"
111
111
  ],
112
112
  "name": "UIQRCode",
113
+ "parts": {},
113
114
  "related": [
114
115
  "link",
115
116
  "share"
@@ -122,7 +123,7 @@
122
123
  },
123
124
  {
124
125
  "description": "Auto-encode failed (data too long for v1–10 at requested ECC). Renders an empty placeholder; logs a console warning. Switch to a BYO matrix from an external encoder, or downgrade the ECC level.",
125
- "attribute": "data-error",
126
+ "attribute": "error",
126
127
  "name": "error"
127
128
  }
128
129
  ],
@@ -62,19 +62,19 @@ export class UIQRCode extends UIElement {
62
62
  // BYO matrix wins
63
63
  const byo = this.#parseMatrix(this.matrix);
64
64
  if (byo) {
65
- this.removeAttribute('data-error');
65
+ this.removeAttribute('error');
66
66
  return byo;
67
67
  }
68
68
  if (!this.value) {
69
- this.removeAttribute('data-error');
69
+ this.removeAttribute('error');
70
70
  return null;
71
71
  }
72
72
  try {
73
73
  const result = encodeQR(this.value, { errorCorrection: this.errorCorrection || 'M' });
74
- this.removeAttribute('data-error');
74
+ this.removeAttribute('error');
75
75
  return result.matrix;
76
76
  } catch (e) {
77
- this.setAttribute('data-error', '');
77
+ this.setAttribute('error', '');
78
78
  // eslint-disable-next-line no-console
79
79
  console.warn(`[qr-code-ui] encode failed for value (${this.value?.length || 0} chars at ECC=${this.errorCorrection}): ${e.message}. Lower ECC, shorten input, or supply a precomputed [matrix].`);
80
80
  return null;
@@ -35,7 +35,7 @@
35
35
  the configured ECC. Render an empty placeholder; the warning
36
36
  went to console. Visually: a dashed outline at the requested
37
37
  size so the layout doesn't collapse silently. */
38
- :scope[data-error] {
38
+ :scope[error] {
39
39
  border: 1px dashed var(--a-border-strong);
40
40
  border-radius: var(--a-radius-sm);
41
41
  min-width: 4em;
@@ -111,7 +111,7 @@ states:
111
111
  description: Default — QR rendered (or empty if no value/matrix).
112
112
  - name: error
113
113
  description: Auto-encode failed (data too long for v1–10 at requested ECC). Renders an empty placeholder; logs a console warning. Switch to a BYO matrix from an external encoder, or downgrade the ECC level.
114
- attribute: data-error
114
+ attribute: error
115
115
  traits: []
116
116
  tokens:
117
117
  --qr-code-fg:
@@ -136,8 +136,10 @@ anti_patterns:
136
136
  <qr-code-ui value="https://very.long.url.that.exceeds.150.bytes.of.utf8.encoded.length..."></qr-code-ui>
137
137
  why: |
138
138
  Built-in encoder covers versions 1–10. Data beyond v10 capacity
139
- throws + renders empty + sets [data-error]. Console warns with
140
- the byte length so consumers can diagnose.
139
+ is caught internally: the component renders empty and sets [error]
140
+ (no exception reaches the consumer). Console warns with the value's
141
+ UTF-16 code-unit length (String.length, not UTF-8 bytes) so
142
+ consumers can diagnose.
141
143
  fix: |
142
144
  Drop the ECC level (lower L gives more capacity for the same
143
145
  version), OR shorten the URL (use a URL shortener), OR encode
@@ -101,18 +101,19 @@
101
101
  "poll"
102
102
  ],
103
103
  "name": "UIRadio",
104
- "related": [
105
- "button",
106
- "radio-group"
107
- ],
108
- "slots": {
104
+ "parts": {
109
105
  "dot": {
110
- "description": "Radio dot indicator, sized via --dot-size"
106
+ "description": "Radio dot indicator, sized via --dot-size — template-owned anatomy part, not a light-DOM insertion point"
111
107
  },
112
108
  "label": {
113
- "description": "Label text container, rendered via CSS attr(label) on ::after"
109
+ "description": "Label text beside the dot — set via the `label` attribute (rendered by CSS `attr(label)` on `::after`); template-owned, not a light-DOM insertion point (gh#1435, gh#1447)"
114
110
  }
115
111
  },
112
+ "related": [
113
+ "button",
114
+ "radio-group"
115
+ ],
116
+ "slots": {},
116
117
  "states": [
117
118
  {
118
119
  "description": "Default, ready for interaction.",
@@ -14,6 +14,14 @@
14
14
  /**
15
15
  * <radio-ui> — Radio button. The host IS the control.
16
16
  * Pure CSS dot via [slot="dot"]::after inner circle. No SVG, no inset shadow hack.
17
+ *
18
+ * ADR-0056 exemption (#1363 B7): [checked] — not [selected] — is the
19
+ * state surface here. radio-ui is a native form-control primitive (like
20
+ * option-card-ui's [checked] and accordion-item-ui's [open]); ADR-0056
21
+ * governs the parent-managed selection-item shape (segment-ui,
22
+ * toggle-option-ui), a different convention. radio-ui self-selects on
23
+ * click/keydown and stays independently form-participating per [name] —
24
+ * it is not a child a parent stamps top-down.
17
25
  */
18
26
 
19
27
  import { UIFormElement } from '../../core/form.js';
@@ -56,11 +56,11 @@ props:
56
56
  events:
57
57
  change:
58
58
  description: Fired when this radio becomes selected (bubbles)
59
- slots:
59
+ parts:
60
60
  dot:
61
- description: Radio dot indicator, sized via --dot-size
61
+ description: Radio dot indicator, sized via --dot-size — template-owned anatomy part, not a light-DOM insertion point
62
62
  label:
63
- description: Label text container, rendered via CSS attr(label) on ::after
63
+ description: Label text beside the dot — set via the `label` attribute (rendered by CSS `attr(label)` on `::after`); template-owned, not a light-DOM insertion point (gh#1435, gh#1447)
64
64
  states:
65
65
  - name: idle
66
66
  description: Default, ready for interaction.