@adia-ai/web-components 0.8.39 → 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 (424) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/MIGRATION.md +1269 -3
  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-artifact/agent-artifact.css +1 -1
  21. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +6 -5
  22. package/components/agent-feedback-bar/agent-feedback-bar.yaml +6 -2
  23. package/components/agent-questions/agent-questions.a2ui.json +1 -0
  24. package/components/agent-reasoning/agent-reasoning.a2ui.json +6 -5
  25. package/components/agent-reasoning/agent-reasoning.css +2 -2
  26. package/components/agent-reasoning/agent-reasoning.yaml +6 -2
  27. package/components/agent-suggestions/agent-suggestions.a2ui.json +11 -2
  28. package/components/agent-suggestions/agent-suggestions.class.js +2 -1
  29. package/components/agent-suggestions/agent-suggestions.d.ts +4 -4
  30. package/components/agent-suggestions/agent-suggestions.yaml +4 -2
  31. package/components/agent-trace/agent-trace.a2ui.json +6 -5
  32. package/components/agent-trace/agent-trace.css +3 -3
  33. package/components/agent-trace/agent-trace.yaml +6 -2
  34. package/components/alert/alert.a2ui.json +1 -0
  35. package/components/alert/alert.css +2 -2
  36. package/components/anchor-bar/anchor-bar.a2ui.json +1 -0
  37. package/components/aside/aside.a2ui.json +1 -0
  38. package/components/avatar/avatar-group.a2ui.json +7 -1
  39. package/components/avatar/avatar-group.yaml +1 -0
  40. package/components/avatar/avatar.a2ui.json +12 -11
  41. package/components/avatar/avatar.css +1 -1
  42. package/components/avatar/avatar.d.ts +1 -1
  43. package/components/avatar/avatar.yaml +4 -4
  44. package/components/badge/badge.a2ui.json +1 -0
  45. package/components/badge/badge.css +1 -1
  46. package/components/block/block.a2ui.json +1 -0
  47. package/components/blockquote/blockquote.a2ui.json +1 -0
  48. package/components/breadcrumb/breadcrumb.a2ui.json +1 -0
  49. package/components/button/button.a2ui.json +1 -3
  50. package/components/button/button.css +6 -5
  51. package/components/button/button.yaml +1 -3
  52. package/components/calendar-grid/calendar-grid.a2ui.json +1 -0
  53. package/components/calendar-grid/calendar-grid.class.js +2 -1
  54. package/components/calendar-picker/calendar-picker.a2ui.json +143 -24
  55. package/components/calendar-picker/calendar-picker.class.js +490 -197
  56. package/components/calendar-picker/calendar-picker.css +121 -172
  57. package/components/calendar-picker/calendar-picker.yaml +225 -47
  58. package/components/canvas/canvas.a2ui.json +6 -5
  59. package/components/canvas/canvas.d.ts +37 -0
  60. package/components/canvas/canvas.js +72 -3
  61. package/components/canvas/canvas.yaml +6 -2
  62. package/components/card/card.a2ui.json +25 -2
  63. package/components/card/card.class.js +3 -0
  64. package/components/card/card.css +34 -4
  65. package/components/card/card.d.ts +2 -2
  66. package/components/card/card.examples.md +3 -3
  67. package/components/card/card.yaml +28 -4
  68. package/components/chart/chart.a2ui.json +13 -8
  69. package/components/chart/chart.class.js +10 -10
  70. package/components/chart/chart.css +12 -10
  71. package/components/chart/chart.d.ts +2 -2
  72. package/components/chart/chart.yaml +8 -5
  73. package/components/chart-legend/chart-legend.a2ui.json +1 -0
  74. package/components/chat-thread/chat-input.a2ui.json +1 -0
  75. package/components/chat-thread/chat-thread.a2ui.json +10 -9
  76. package/components/chat-thread/chat-thread.css +1 -1
  77. package/components/chat-thread/chat-thread.yaml +13 -20
  78. package/components/check/check.a2ui.json +10 -9
  79. package/components/check/check.yaml +4 -4
  80. package/components/code/code.a2ui.json +1 -0
  81. package/components/code/code.css +6 -6
  82. package/components/col/col.a2ui.json +1 -0
  83. package/components/color-input/color-input.a2ui.json +1 -0
  84. package/components/color-picker/color-picker.a2ui.json +1 -0
  85. package/components/combobox/combobox.a2ui.json +3 -2
  86. package/components/combobox/combobox.css +2 -2
  87. package/components/combobox/combobox.yaml +2 -2
  88. package/components/command/command.a2ui.json +12 -10
  89. package/components/command/command.class.js +3 -2
  90. package/components/command/command.css +3 -3
  91. package/components/command/command.yaml +17 -4
  92. package/components/context-menu/context-menu.a2ui.json +1 -0
  93. package/components/date-range-picker/date-range-picker.a2ui.json +2 -1
  94. package/components/date-range-picker/date-range-picker.css +1 -1
  95. package/components/date-range-picker/date-range-picker.yaml +1 -1
  96. package/components/datetime-picker/datetime-picker.a2ui.json +15 -108
  97. package/components/datetime-picker/datetime-picker.class.js +37 -690
  98. package/components/datetime-picker/datetime-picker.css +11 -183
  99. package/components/datetime-picker/datetime-picker.d.ts +4 -5
  100. package/components/datetime-picker/datetime-picker.yaml +44 -135
  101. package/components/demo-toggle/demo-toggle.a2ui.json +1 -0
  102. package/components/demo-toggle/demo-toggle.css +1 -1
  103. package/components/description-list/description-list.a2ui.json +1 -0
  104. package/components/description-list/description-list.css +2 -2
  105. package/components/display-field/display-field.a2ui.json +1 -0
  106. package/components/display-field/display-field.css +3 -3
  107. package/components/divider/divider.a2ui.json +1 -0
  108. package/components/divider/divider.css +1 -1
  109. package/components/drawer/drawer.a2ui.json +1 -3
  110. package/components/drawer/drawer.css +3 -3
  111. package/components/drawer/drawer.yaml +0 -2
  112. package/components/drilldown/drilldown.a2ui.json +22 -20
  113. package/components/drilldown/drilldown.class.js +4 -3
  114. package/components/drilldown/drilldown.css +8 -8
  115. package/components/drilldown/drilldown.yaml +40 -9
  116. package/components/embed/embed.a2ui.json +6 -5
  117. package/components/embed/embed.yaml +2 -2
  118. package/components/empty-state/empty-state.a2ui.json +1 -0
  119. package/components/empty-state/empty-state.css +2 -2
  120. package/components/feed/feed-item.a2ui.json +25 -5
  121. package/components/feed/feed-item.yaml +28 -7
  122. package/components/feed/feed.a2ui.json +9 -2
  123. package/components/feed/feed.class.js +19 -12
  124. package/components/feed/feed.css +8 -8
  125. package/components/feed/feed.yaml +14 -1
  126. package/components/field/field.a2ui.json +1 -0
  127. package/components/field/field.css +1 -1
  128. package/components/field/field.examples.md +1 -1
  129. package/components/fields/fields.a2ui.json +1 -0
  130. package/components/fields/fields.examples.md +1 -1
  131. package/components/footer/footer.a2ui.json +1 -0
  132. package/components/frame/frame.a2ui.json +1 -0
  133. package/components/grid/grid.a2ui.json +1 -0
  134. package/components/header/header.a2ui.json +3 -2
  135. package/components/header/header.yaml +3 -3
  136. package/components/heatmap/heatmap.a2ui.json +2 -1
  137. package/components/heatmap/heatmap.class.js +1 -1
  138. package/components/heatmap/heatmap.css +6 -6
  139. package/components/heatmap/heatmap.yaml +1 -1
  140. package/components/icon/icon.a2ui.json +1 -0
  141. package/components/image/image.a2ui.json +28 -14
  142. package/components/image/image.class.js +38 -23
  143. package/components/image/image.css +18 -8
  144. package/components/image/image.d.ts +2 -2
  145. package/components/image/image.examples.md +3 -3
  146. package/components/image/image.yaml +23 -7
  147. package/components/inline-edit/inline-edit.a2ui.json +1 -0
  148. package/components/inline-message/inline-message.a2ui.json +3 -1
  149. package/components/inline-message/inline-message.class.js +3 -1
  150. package/components/inline-message/inline-message.css +1 -1
  151. package/components/inline-message/inline-message.d.ts +2 -2
  152. package/components/inline-message/inline-message.yaml +2 -1
  153. package/components/input/input.a2ui.json +66 -16
  154. package/components/input/input.class.js +64 -7
  155. package/components/input/input.css +19 -18
  156. package/components/input/input.d.ts +9 -4
  157. package/components/input/input.yaml +83 -10
  158. package/components/inspector/inspector.a2ui.json +1 -0
  159. package/components/integration-card/integration-card.a2ui.json +1 -0
  160. package/components/integration-card/integration-card.css +4 -4
  161. package/components/kbd/kbd.a2ui.json +1 -0
  162. package/components/kbd/kbd.css +1 -1
  163. package/components/link/link.a2ui.json +2 -1
  164. package/components/link/link.yaml +1 -1
  165. package/components/list/list-item.a2ui.json +9 -0
  166. package/components/list/list-item.yaml +12 -0
  167. package/components/list/list.a2ui.json +9 -3
  168. package/components/list/list.class.js +14 -1
  169. package/components/list/list.css +14 -3
  170. package/components/list/list.d.ts +7 -5
  171. package/components/list/list.yaml +16 -6
  172. package/components/list-window/list-window.a2ui.json +1 -0
  173. package/components/list-window/list-window.class.js +2 -1
  174. package/components/loading-overlay/loading-overlay.a2ui.json +1 -0
  175. package/components/mark/mark.a2ui.json +2 -1
  176. package/components/mark/mark.yaml +1 -1
  177. package/components/menu/menu-divider.a2ui.json +1 -0
  178. package/components/menu/menu-item.a2ui.json +3 -1
  179. package/components/menu/menu-item.yaml +6 -0
  180. package/components/menu/menu-label.a2ui.json +1 -0
  181. package/components/menu/menu.a2ui.json +3 -2
  182. package/components/menu/menu.class.js +2 -2
  183. package/components/menu/menu.d.ts +2 -2
  184. package/components/menu/menu.yaml +3 -3
  185. package/components/modal/modal.a2ui.json +1 -0
  186. package/components/nav/nav.a2ui.json +1 -0
  187. package/components/nav/nav.class.js +14 -3
  188. package/components/nav/nav.css +2 -2
  189. package/components/nav-group/nav-group.a2ui.json +1 -0
  190. package/components/nav-group/nav-group.class.js +3 -1
  191. package/components/nav-group/nav-group.css +3 -3
  192. package/components/nav-item/nav-item.a2ui.json +1 -0
  193. package/components/nav-item/nav-item.css +2 -2
  194. package/components/noodles/noodles.a2ui.json +1 -0
  195. package/components/noodles/noodles.class.js +5 -1
  196. package/components/number-format/number-format.a2ui.json +1 -0
  197. package/components/option-card/option-card.a2ui.json +1 -0
  198. package/components/option-card/option-card.css +1 -1
  199. package/components/otp-input/otp-input.a2ui.json +3 -2
  200. package/components/otp-input/otp-input.css +1 -1
  201. package/components/otp-input/otp-input.yaml +9 -2
  202. package/components/page/page.a2ui.json +13 -0
  203. package/components/page/page.css +2 -2
  204. package/components/page/page.d.ts +1 -1
  205. package/components/page/page.yaml +1 -0
  206. package/components/pagination/pagination.a2ui.json +1 -0
  207. package/components/pagination/pagination.class.js +3 -2
  208. package/components/pagination/pagination.css +1 -1
  209. package/components/pane/pane.a2ui.json +6 -0
  210. package/components/pane/pane.class.js +3 -3
  211. package/components/pane/pane.css +3 -3
  212. package/components/pane/pane.yaml +3 -0
  213. package/components/password-strength/password-strength.a2ui.json +1 -0
  214. package/components/pipeline-status/pipeline-status.a2ui.json +1 -0
  215. package/components/popover/popover.a2ui.json +7 -6
  216. package/components/popover/popover.class.js +2 -2
  217. package/components/popover/popover.d.ts +2 -2
  218. package/components/popover/popover.yaml +4 -4
  219. package/components/preview/preview.a2ui.json +1 -0
  220. package/components/preview/preview.class.js +5 -1
  221. package/components/progress/progress.a2ui.json +47 -24
  222. package/components/progress/progress.class.js +66 -11
  223. package/components/progress/progress.css +44 -26
  224. package/components/progress/progress.d.ts +7 -5
  225. package/components/progress/progress.examples.md +2 -2
  226. package/components/progress/progress.yaml +235 -53
  227. package/components/progress-row/progress-row.a2ui.json +16 -12
  228. package/components/progress-row/progress-row.css +2 -2
  229. package/components/progress-row/progress-row.d.ts +2 -2
  230. package/components/progress-row/progress-row.examples.md +2 -14
  231. package/components/progress-row/progress-row.yaml +28 -36
  232. package/components/qr-code/qr-code.a2ui.json +13 -12
  233. package/components/qr-code/qr-code.class.js +7 -7
  234. package/components/qr-code/qr-code.css +1 -1
  235. package/components/qr-code/qr-code.d.ts +10 -7
  236. package/components/qr-code/qr-code.yaml +18 -12
  237. package/components/radio/radio.a2ui.json +8 -7
  238. package/components/radio/radio.class.js +8 -0
  239. package/components/radio/radio.yaml +3 -3
  240. package/components/radio-group/radio-group.a2ui.json +5 -3
  241. package/components/radio-group/radio-group.class.js +11 -0
  242. package/components/radio-group/radio-group.yaml +7 -1
  243. package/components/range/range.a2ui.json +6 -0
  244. package/components/range/range.class.js +2 -2
  245. package/components/range/range.css +3 -3
  246. package/components/range/range.yaml +3 -0
  247. package/components/rating/rating.a2ui.json +1 -0
  248. package/components/rating/rating.css +1 -1
  249. package/components/relative-time/relative-time.a2ui.json +1 -0
  250. package/components/richtext/richtext.a2ui.json +2 -1
  251. package/components/richtext/richtext.css +3 -3
  252. package/components/richtext/richtext.yaml +1 -1
  253. package/components/row/row.a2ui.json +1 -0
  254. package/components/search/search.a2ui.json +1 -0
  255. package/components/search/search.class.js +4 -1
  256. package/components/section/section.a2ui.json +1 -0
  257. package/components/segment/segment.a2ui.json +21 -10
  258. package/components/segment/segment.css +20 -4
  259. package/components/segment/segment.d.ts +2 -1
  260. package/components/segment/segment.yaml +20 -13
  261. package/components/segmented/segmented.a2ui.json +36 -7
  262. package/components/segmented/segmented.class.js +113 -22
  263. package/components/segmented/segmented.css +3 -0
  264. package/components/segmented/segmented.d.ts +3 -1
  265. package/components/segmented/segmented.yaml +80 -8
  266. package/components/select/select.a2ui.json +18 -13
  267. package/components/select/select.class.js +61 -37
  268. package/components/select/select.css +18 -16
  269. package/components/select/select.yaml +18 -7
  270. package/components/skeleton/skeleton.a2ui.json +8 -7
  271. package/components/skeleton/skeleton.class.js +8 -7
  272. package/components/skeleton/skeleton.css +21 -6
  273. package/components/skeleton/skeleton.d.ts +2 -2
  274. package/components/skeleton/skeleton.examples.md +2 -2
  275. package/components/skeleton/skeleton.yaml +3 -2
  276. package/components/skip-nav/skip-nav.a2ui.json +1 -0
  277. package/components/slider/slider.a2ui.json +6 -0
  278. package/components/slider/slider.class.js +20 -3
  279. package/components/slider/slider.css +2 -2
  280. package/components/slider/slider.yaml +3 -0
  281. package/components/spinner/spinner.a2ui.json +1 -0
  282. package/components/spinner/spinner.css +1 -1
  283. package/components/stack/stack.a2ui.json +1 -0
  284. package/components/stat/stat.a2ui.json +1 -0
  285. package/components/stat/stat.css +3 -3
  286. package/components/stat/stat.js +2 -2
  287. package/components/step-progress/step-progress.a2ui.json +1 -0
  288. package/components/step-progress/step-progress.css +1 -1
  289. package/components/step-progress/step-progress.yaml +1 -1
  290. package/components/stepper/stepper-item.a2ui.json +7 -3
  291. package/components/stepper/stepper-item.yaml +15 -5
  292. package/components/stepper/stepper.a2ui.json +5 -1
  293. package/components/stepper/stepper.class.js +31 -16
  294. package/components/stepper/stepper.css +2 -2
  295. package/components/stepper/stepper.d.ts +1 -1
  296. package/components/stepper/stepper.yaml +4 -2
  297. package/components/stream/stream.a2ui.json +1 -0
  298. package/components/swatch/swatch.a2ui.json +1 -0
  299. package/components/swatch/swatch.css +2 -2
  300. package/components/swiper/swiper.a2ui.json +1 -0
  301. package/components/swiper/swiper.class.js +5 -1
  302. package/components/switch/switch.a2ui.json +12 -11
  303. package/components/switch/switch.css +1 -1
  304. package/components/switch/switch.yaml +6 -6
  305. package/components/table/table.a2ui.json +1 -10
  306. package/components/table/table.class.js +18 -16
  307. package/components/table/table.css +17 -18
  308. package/components/table/table.d.ts +0 -2
  309. package/components/table/table.yaml +0 -9
  310. package/components/table-toolbar/table-toolbar.a2ui.json +1 -0
  311. package/components/table-toolbar/table-toolbar.class.js +38 -19
  312. package/components/table-toolbar/table-toolbar.css +2 -2
  313. package/components/tabs/tab.a2ui.json +9 -0
  314. package/components/tabs/tab.js +4 -0
  315. package/components/tabs/tab.yaml +15 -0
  316. package/components/tabs/tabs.a2ui.json +9 -4
  317. package/components/tabs/tabs.class.js +13 -1
  318. package/components/tabs/tabs.css +9 -1
  319. package/components/tabs/tabs.d.ts +2 -0
  320. package/components/tabs/tabs.yaml +9 -2
  321. package/components/tag/tag.a2ui.json +1 -0
  322. package/components/tag/tag.css +2 -2
  323. package/components/tags-input/tags-input.a2ui.json +22 -17
  324. package/components/tags-input/tags-input.class.js +13 -11
  325. package/components/tags-input/tags-input.css +11 -7
  326. package/components/tags-input/tags-input.d.ts +16 -7
  327. package/components/tags-input/tags-input.examples.md +2 -2
  328. package/components/tags-input/tags-input.yaml +25 -8
  329. package/components/text/text.a2ui.json +6 -5
  330. package/components/text/text.css +10 -5
  331. package/components/text/text.d.ts +2 -2
  332. package/components/text/text.yaml +9 -4
  333. package/components/textarea/textarea.a2ui.json +2 -1
  334. package/components/textarea/textarea.css +1 -1
  335. package/components/textarea/textarea.yaml +1 -1
  336. package/components/theme-provider/theme-provider.a2ui.json +2 -1
  337. package/components/theme-provider/theme-provider.d.ts +5 -3
  338. package/components/theme-provider/theme-provider.yaml +5 -3
  339. package/components/time-picker/time-picker.a2ui.json +1 -0
  340. package/components/time-picker/time-picker.class.js +4 -2
  341. package/components/time-picker/time-picker.css +1 -1
  342. package/components/timeline/timeline-item.a2ui.json +26 -3
  343. package/components/timeline/timeline-item.yaml +22 -7
  344. package/components/timeline/timeline.a2ui.json +4 -0
  345. package/components/timeline/timeline.class.js +29 -18
  346. package/components/timeline/timeline.css +4 -4
  347. package/components/timeline/timeline.d.ts +3 -3
  348. package/components/timeline/timeline.yaml +2 -0
  349. package/components/toast/toast.a2ui.json +10 -3
  350. package/components/toast/toast.yaml +20 -13
  351. package/components/toc/toc.a2ui.json +1 -0
  352. package/components/toc/toc.css +1 -1
  353. package/components/toggle-group/toggle-group.a2ui.json +7 -3
  354. package/components/toggle-group/toggle-group.class.js +43 -12
  355. package/components/toggle-group/toggle-group.css +7 -4
  356. package/components/toggle-group/toggle-group.d.ts +3 -4
  357. package/components/toggle-group/toggle-group.yaml +22 -16
  358. package/components/toggle-group/toggle-option.a2ui.json +8 -4
  359. package/components/toggle-group/toggle-option.yaml +15 -13
  360. package/components/toggle-scheme/toggle-scheme.a2ui.json +2 -1
  361. package/components/toggle-scheme/toggle-scheme.yaml +1 -1
  362. package/components/toolbar/toolbar-group.a2ui.json +1 -0
  363. package/components/toolbar/toolbar.a2ui.json +1 -0
  364. package/components/toolbar/toolbar.class.js +3 -0
  365. package/components/tooltip/tooltip.a2ui.json +1 -0
  366. package/components/tooltip/tooltip.css +1 -1
  367. package/components/tour/tour-step.a2ui.json +4 -0
  368. package/components/tour/tour-step.yaml +2 -0
  369. package/components/tour/tour.a2ui.json +4 -0
  370. package/components/tour/tour.css +2 -2
  371. package/components/tour/tour.yaml +2 -0
  372. package/components/tree/tree-item.a2ui.json +5 -0
  373. package/components/tree/tree-item.yaml +3 -0
  374. package/components/tree/tree.a2ui.json +4 -0
  375. package/components/tree/tree.class.js +2 -1
  376. package/components/tree/tree.css +1 -1
  377. package/components/tree/tree.yaml +2 -0
  378. package/components/upload/upload.a2ui.json +8 -1
  379. package/components/upload/upload.class.js +35 -5
  380. package/components/upload/upload.css +28 -0
  381. package/components/upload/upload.d.ts +16 -0
  382. package/components/upload/upload.yaml +27 -7
  383. package/components/visually-hidden/visually-hidden.a2ui.json +1 -0
  384. package/core/dom.d.ts +11 -0
  385. package/core/dom.js +34 -0
  386. package/core/form.js +7 -0
  387. package/core/index.d.ts +1 -0
  388. package/core/index.js +1 -0
  389. package/core/responsive.js +16 -4
  390. package/core/template.js +2 -1
  391. package/custom-elements.json +442 -502
  392. package/dist/host.min.css +1 -1
  393. package/dist/host.sheet.js +1 -1
  394. package/dist/theme-provider.min.js +5 -5
  395. package/dist/web-components.min.css +1 -1
  396. package/dist/web-components.min.js +91 -104
  397. package/dist/web-components.sheet.js +1 -1
  398. package/package.json +4 -2
  399. package/patterns/conversion-funnel/conversion-funnel.examples.html +15 -15
  400. package/patterns/inline-dialog/inline-dialog.examples.html +2 -2
  401. package/patterns/inline-dialog/inline-dialog.html +4 -0
  402. package/patterns/timezone-selector/timezone-selector.examples.html +1 -1
  403. package/patterns/timezone-selector/timezone-selector.html +2 -2
  404. package/styles/api/text.css +7 -0
  405. package/styles/type/scale.css +6 -7
  406. package/traits/_catalog.json +129 -41
  407. package/traits/anchor-positioning/anchor-positioning.js +1 -0
  408. package/traits/announcer/announcer.js +1 -0
  409. package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -0
  410. package/traits/attention-pulse/attention-pulse.js +1 -0
  411. package/traits/count-up/count-up.js +1 -0
  412. package/traits/define.js +78 -0
  413. package/traits/focus-restore/focus-restore.js +2 -1
  414. package/traits/haptic-feedback/haptic-feedback.js +1 -0
  415. package/traits/input-mask/input-mask.js +1 -0
  416. package/traits/intersection-observer/intersection-observer.js +1 -0
  417. package/traits/layout-animation/layout-animation.js +1 -0
  418. package/traits/noise-texture/noise-texture.js +1 -0
  419. package/traits/resize-observer/resize-observer.js +1 -0
  420. package/traits/scroll-progress/scroll-progress.js +1 -0
  421. package/traits/snap-to-grid/snap-to-grid.js +1 -0
  422. package/traits/sound-feedback/sound-feedback.js +1 -0
  423. package/traits/spring-animate/spring-animate.js +1 -0
  424. package/traits/validation/validation.js +1 -0
@@ -25,6 +25,7 @@ props:
25
25
  size:
26
26
  description: Forwards to each child <avatar-ui> (sm|md|lg). Empty uses the per-avatar size. For denser or larger sets, set [scale] on an ancestor.
27
27
  type: string
28
+ enum: [sm, md, lg]
28
29
 
29
30
  keywords:
30
31
  - avatar-group
@@ -88,24 +88,25 @@
88
88
  "user"
89
89
  ],
90
90
  "name": "UIAvatar",
91
- "related": [
92
- "input",
93
- "button",
94
- "check-box",
95
- "badge",
96
- "avatar-group"
97
- ],
98
- "slots": {
91
+ "parts": {
99
92
  "icon": {
100
- "description": "Phosphor icon rendered inside the avatar circle (system-event avatars)"
93
+ "description": "Phosphor icon rendered inside the avatar circle (system-event avatars) — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `icon` prop; no consumer override path exists in source."
101
94
  },
102
95
  "img": {
103
- "description": "Avatar image element"
96
+ "description": "Avatar image element — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `src` prop; no consumer override path exists in source."
104
97
  },
105
98
  "initials": {
106
- "description": "Initials text span"
99
+ "description": "Initials text span — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `text` prop; no consumer override path exists in source."
107
100
  }
108
101
  },
102
+ "related": [
103
+ "input",
104
+ "button",
105
+ "check-box",
106
+ "badge",
107
+ "avatar-group"
108
+ ],
109
+ "slots": {},
109
110
  "states": [
110
111
  {
111
112
  "description": "Default, ready for interaction.",
@@ -46,7 +46,7 @@
46
46
  [slot="initials"] {
47
47
  user-select: none;
48
48
  text-transform: uppercase;
49
- line-height: 1;
49
+ line-height: var(--a-font-leading-none);
50
50
  }
51
51
 
52
52
  /* ── Icon (non-person avatar) ──
@@ -35,5 +35,5 @@ export class UIAvatarGroup extends UIElement {
35
35
  /** Maximum avatars to show before the +N overflow indicator. */
36
36
  max: number;
37
37
  /** Forwards to each child <avatar-ui> (sm|md|lg). Empty uses the per-avatar size. For denser or larger sets, set [scale] on an ancestor. */
38
- size: string;
38
+ size: 'sm' | 'md' | 'lg';
39
39
  }
@@ -47,13 +47,13 @@ props:
47
47
  type: string
48
48
  default: ""
49
49
  events: {}
50
- slots:
50
+ parts:
51
51
  icon:
52
- description: Phosphor icon rendered inside the avatar circle (system-event avatars)
52
+ description: Phosphor icon rendered inside the avatar circle (system-event avatars) — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `icon` prop; no consumer override path exists in source.
53
53
  img:
54
- description: Avatar image element
54
+ description: Avatar image element — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `src` prop; no consumer override path exists in source.
55
55
  initials:
56
- description: Initials text span
56
+ description: Initials text span — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `text` prop; no consumer override path exists in source.
57
57
  states:
58
58
  - name: idle
59
59
  description: Default, ready for interaction.
@@ -119,6 +119,7 @@
119
119
  "marker"
120
120
  ],
121
121
  "name": "UIBadge",
122
+ "parts": {},
122
123
  "related": [
123
124
  "button",
124
125
  "grid",
@@ -89,7 +89,7 @@
89
89
  font-family: var(--badge-font-family);
90
90
  font-size: var(--badge-font-size);
91
91
  font-weight: var(--badge-weight);
92
- line-height: 1;
92
+ line-height: var(--a-font-leading-none);
93
93
  /* ── Register (issue 845) — uppercase + tracking + tabular numerals is the
94
94
  badge/tag differentiator now that geometry is shared (see the
95
95
  --badge-radius note above). Tag stays proportional sentence-case at
@@ -71,6 +71,7 @@
71
71
  "developer"
72
72
  ],
73
73
  "name": "UIBlock",
74
+ "parts": {},
74
75
  "related": [
75
76
  "Section",
76
77
  "Col",
@@ -53,6 +53,7 @@
53
53
  "cite"
54
54
  ],
55
55
  "name": "UIBlockquote",
56
+ "parts": {},
56
57
  "related": [
57
58
  "text",
58
59
  "link",
@@ -65,6 +65,7 @@
65
65
  "back"
66
66
  ],
67
67
  "name": "UIBreadcrumb",
68
+ "parts": {},
68
69
  "related": [
69
70
  "AdminTopbar",
70
71
  "Nav",
@@ -124,6 +124,7 @@
124
124
  "icon-button"
125
125
  ],
126
126
  "name": "UIButton",
127
+ "parts": {},
127
128
  "related": [
128
129
  "Link"
129
130
  ],
@@ -131,9 +132,6 @@
131
132
  "icon-trailing": {
132
133
  "description": "Trailing icon, after the label. Stamped from the `icon-trailing` prop, or slot a custom `<icon-ui slot=\"icon-trailing\">` directly (the consumer's element wins over the prop-stamped one). Sized to --content-height."
133
134
  },
134
- "leading": {
135
- "description": "Icon container (start), sized to --content-height"
136
- },
137
135
  "trailing": {
138
136
  "description": "Icon container (end), sized to --content-height"
139
137
  }
@@ -89,10 +89,11 @@ button-ui[variant="ghost"][color="warning"]:not([disabled]):hover { --button-f
89
89
  blocks), but the label's ::after clips to its own line box, so
90
90
  inheriting 1 makes half-leading negative and shears descenders
91
91
  (g/j/p/q/y, parentheses) by ~0.93px at the default size — gh#906.
92
- Snug (1.3) contains the font's content box at every [size]; the
92
+ Normal (1.35) contains the font's content box at every [size]; the
93
93
  precedent is stat.css:174,198 setting leading on the truncating
94
- box rather than on the component root. */
95
- --button-label-line-height: var(--a-leading-snug);
94
+ box rather than on the component root. Value-nearest migration from
95
+ the retired --a-leading-snug (1.3) — ADR-0052. */
96
+ --button-label-line-height: var(--a-font-leading-normal);
96
97
  --button-gap: var(--a-space-1);
97
98
  --button-bg-hover: var(--a-bg-strong); /* neutral fill → neutral -strong surface on hover */
98
99
  --button-fg-hover: var(--a-ui-text-hover);
@@ -160,7 +161,7 @@ button-ui[variant="ghost"][color="warning"]:not([disabled]):hover { --button-f
160
161
  font-family: var(--button-font-family);
161
162
  font-size: var(--button-font-size);
162
163
  font-weight: var(--button-font-weight);
163
- line-height: 1;
164
+ line-height: var(--a-font-leading-none);
164
165
  cursor: pointer;
165
166
  user-select: none;
166
167
  transition:
@@ -211,7 +212,7 @@ button-ui[variant="ghost"][color="warning"]:not([disabled]):hover { --button-f
211
212
  border: 1px solid var(--button-trailing-border);
212
213
  border-radius: var(--button-trailing-radius);
213
214
  padding: 0 var(--button-trailing-px);
214
- line-height: 1;
215
+ line-height: var(--a-font-leading-none);
215
216
  /* Recolor a <kbd-ui slot="trailing"> pill via kbd's OWN tokens so it tracks
216
217
  the button label color on every variant (primary white, ghost subtle,
217
218
  colored fills). kbd-ui's `:scope { color: var(--kbd-fg) }` wins over the
@@ -105,8 +105,6 @@ events:
105
105
  press:
106
106
  description: Fired on complete press (pointer up or Enter/Space)
107
107
  slots:
108
- leading:
109
- description: Icon container (start), sized to --content-height
110
108
  trailing:
111
109
  description: Icon container (end), sized to --content-height
112
110
  icon-trailing:
@@ -167,7 +165,7 @@ a2ui:
167
165
  reason: 'Per existing slot.discipline rule — visual redundancy guard.'
168
166
  - rule: 'For navigation (route-change) use <nav-item-ui> or anchor; button-ui is for actions only.'
169
167
  reason: 'Action vs navigation semantics.'
170
- - rule: 'For toggleable on/off state use <switch-ui>; for multi-select clusters use <toggle-group-ui> + <toggle-option-ui>.'
168
+ - rule: 'For toggleable on/off state use <switch-ui>; for multi-select clusters use <segmented-ui multiple> + <segment-ui> (gh#1369 — <toggle-group-ui>/<toggle-option-ui> are deprecated).'
171
169
  reason: 'Stateless action vs stateful toggle.'
172
170
  anti_patterns:
173
171
  - description: >-
@@ -91,6 +91,7 @@
91
91
  "substrate"
92
92
  ],
93
93
  "name": "UICalendarGrid",
94
+ "parts": {},
94
95
  "related": [
95
96
  "CalendarPicker",
96
97
  "DateRangePicker",
@@ -34,6 +34,7 @@
34
34
  */
35
35
 
36
36
  import { UIElement } from '../../core/element.js';
37
+ import { isElement } from '../../core/dom.js';
37
38
 
38
39
  const DAYS = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];
39
40
  const MONTHS_LONG = [
@@ -273,7 +274,7 @@ export class UICalendarGrid extends UIElement {
273
274
 
274
275
  #onClick = (e) => {
275
276
  if (this.disabled) return;
276
- const target = e.target instanceof Element ? e.target : null;
277
+ const target = isElement(e.target) ? e.target : null;
277
278
  if (!target) return;
278
279
  const prev = target.closest('[data-cal-prev]');
279
280
  if (prev) { e.stopPropagation(); this.navigate(-1); return; }
@@ -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/CalendarPicker.json",
4
4
  "title": "CalendarPicker",
5
- "description": "Date picker with trigger button and popover calendar grid. Form-associated input emitting ISO date string via change events; supports min/max and disabled-date masks. Use for single-date input in forms; for date ranges compose two pickers or use a dedicated range component.",
5
+ "description": "Date (and, per `[precision]`, date+time) picker with trigger button and popover panel. Form-associated input emitting an ISO date (or, when `precision` is `minute`/`second`, ISO datetime) string via change events; supports min/max and disabled-date masks. Use for single-date or single-datetime input in forms; for date ranges use <date-range-picker-ui> instead of composing two calendar-picker instances. gh#1372 (#1363 C3c) folded <datetime-picker-ui>'s surface into this widened `precision` axis — see the deprecated <datetime-picker-ui> alias.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -27,7 +27,7 @@
27
27
  "default": false
28
28
  },
29
29
  "format": {
30
- "description": "Display format for the selected date",
30
+ "description": "Display format for the trigger text. `short`, e.g. `Jan 1, 2026` (+ ` 14:30` when `precision` is minute/second); `long`, e.g. `January 1, 2026`; `iso`, the raw ISO string.",
31
31
  "type": "string",
32
32
  "enum": [
33
33
  "short",
@@ -36,18 +36,28 @@
36
36
  ],
37
37
  "default": "short"
38
38
  },
39
- "label": {
40
- "description": "Label text displayed above the trigger",
39
+ "hourcycle": {
40
+ "description": "Hour cycle for the time pane. Active only when `precision` is\nminute/second. Empty (default) derives from the document locale.\n`h12` forces a 12-hour cycle with an AM/PM (meridiem) segment; `h23`\nforces 24-hour cycle.\n",
41
+ "type": "string",
42
+ "enum": [
43
+ "",
44
+ "h12",
45
+ "h23"
46
+ ],
47
+ "default": ""
48
+ },
49
+ "locale": {
50
+ "description": "BCP-47 locale tag used to derive hour-cycle when `hour-cycle` is empty. Active only when `precision` is minute/second. Falls back to `<html lang>` then to browser default.",
41
51
  "type": "string",
42
52
  "default": ""
43
53
  },
44
54
  "max": {
45
- "description": "Maximum selectable date in ISO format (YYYY-MM-DD)",
55
+ "description": "Maximum selectable date (ISO `YYYY-MM-DD`), or datetime (ISO `YYYY-MM-DDTHH:mm[:ss]`) when `precision` is minute/second.",
46
56
  "type": "string",
47
57
  "default": ""
48
58
  },
49
59
  "min": {
50
- "description": "Minimum selectable date in ISO format (YYYY-MM-DD)",
60
+ "description": "Minimum selectable date (ISO `YYYY-MM-DD`), or datetime (ISO `YYYY-MM-DDTHH:mm[:ss]`) when `precision` is minute/second.",
51
61
  "type": "string",
52
62
  "default": ""
53
63
  },
@@ -81,8 +91,28 @@
81
91
  ],
82
92
  "default": "bottom"
83
93
  },
94
+ "precision": {
95
+ "description": "Mode axis (gh#1372,",
96
+ "type": "string",
97
+ "enum": [
98
+ "date",
99
+ "minute",
100
+ "second"
101
+ ],
102
+ "default": "date"
103
+ },
104
+ "readonly": {
105
+ "description": "Blocks edits; the trigger stays keyboard-focusable for screen-reader inspection but the popover does not open.",
106
+ "type": "boolean",
107
+ "default": false
108
+ },
109
+ "step": {
110
+ "description": "Per-Arrow-keypress increment in seconds for the time pane. Active only when `precision` is minute/second. 60 = minute precision (default), 900 = 15-minute, 1 = second precision.",
111
+ "type": "number",
112
+ "default": 60
113
+ },
84
114
  "value": {
85
- "description": "Selected date (ISO string)",
115
+ "description": "Selected date (ISO string), or datetime (ISO `YYYY-MM-DDTHH:mm[:ss]`) when `precision` is minute/second.",
86
116
  "type": "string",
87
117
  "default": ""
88
118
  }
@@ -92,46 +122,107 @@
92
122
  ],
93
123
  "unevaluatedProperties": false,
94
124
  "x-adiaui": {
95
- "anti_patterns": [],
125
+ "anti_patterns": [
126
+ {
127
+ "fix": "{\"component\": \"CalendarPicker\", \"precision\": \"minute\", \"value\": \"2026-05-24T00:00\"}\n",
128
+ "why": "`value` is a date-only string but `precision` is \"minute\" — no time\ncomponent. The contract requires a full ISO 8601 datetime including\nthe `T` and time segment when `precision` isn't \"date\".\n",
129
+ "wrong": "{\"component\": \"CalendarPicker\", \"precision\": \"minute\", \"value\": \"2026-05-24\"}\n"
130
+ },
131
+ {
132
+ "fix": "{\"component\": \"Field\", \"label\": \"Date\", \"children\": [\"cal\"]}\n",
133
+ "why": "`label` is not a first-class prop on CalendarPicker (#1363 C3d) —\nsiblings all delegate the field label to `<field-ui label>`.\n",
134
+ "wrong": "{\"component\": \"CalendarPicker\", \"label\": \"Date\"}\n"
135
+ }
136
+ ],
96
137
  "category": "input",
97
138
  "composes": [
98
- "button-ui"
139
+ "calendar-grid-ui",
140
+ "time-picker-ui",
141
+ "divider-ui"
99
142
  ],
100
143
  "events": {
101
144
  "change": {
102
- "description": "Fired when a date is selected"
145
+ "description": "Fired when a value commits (date picked, or — when `precision` is minute/second — date picked + time edited, or Apply clicked in an explicit-commit footer)."
146
+ },
147
+ "close": {
148
+ "description": "Popover closed (without commit, or after commit).",
149
+ "detail": {
150
+ "reason": "string"
151
+ }
152
+ },
153
+ "input": {
154
+ "description": "Fired during partial selection (date picked but time still pending, or vice versa — meaningful only when `precision` is minute/second).",
155
+ "detail": {
156
+ "value": "string"
157
+ }
158
+ },
159
+ "invalid": {
160
+ "description": "A constraint failed (out of range, or — when `precision` is minute/second — a parse error).",
161
+ "detail": {
162
+ "reason": "string",
163
+ "value": "string"
164
+ }
165
+ },
166
+ "open": {
167
+ "description": "Popover opened (user clicked the trigger, pressed Enter/Space, or Apply/Cancel in a footer closed then reopened).",
168
+ "detail": {
169
+ "trigger": "string"
170
+ }
103
171
  }
104
172
  },
105
173
  "examples": [
106
174
  {
107
- "description": "Date and time picker form with calendar picker and time selects.",
108
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"col\"\n ]\n },\n {\n \"id\": \"col\",\n \"component\": \"Column\",\n \"children\": [\n \"name\",\n \"cal\",\n \"btn\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"name\",\n \"component\": \"Input\",\n \"label\": \"Event Name\"\n },\n {\n \"id\": \"cal\",\n \"component\": \"CalendarPicker\",\n \"label\": \"Date\"\n },\n {\n \"id\": \"btn\",\n \"component\": \"Button\",\n \"text\": \"Schedule\",\n \"variant\": \"primary\"\n }\n]",
175
+ "description": "Event form with a name field and a date picker, wrapped in Field for its label per",
176
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"col\"\n ]\n },\n {\n \"id\": \"col\",\n \"component\": \"Column\",\n \"children\": [\n \"name\",\n \"field\",\n \"btn\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"name\",\n \"component\": \"Input\",\n \"label\": \"Event Name\"\n },\n {\n \"id\": \"field\",\n \"component\": \"Field\",\n \"label\": \"Date\",\n \"children\": [\n \"cal\"\n ]\n },\n {\n \"id\": \"cal\",\n \"component\": \"CalendarPicker\"\n },\n {\n \"id\": \"btn\",\n \"component\": \"Button\",\n \"text\": \"Schedule\",\n \"variant\": \"primary\"\n }\n]",
109
177
  "name": "date-picker"
110
178
  },
111
179
  {
112
- "description": "Date range selection form with start/end calendar pickers, quick-pick badges, and apply button.",
113
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\",\n \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\"\n ]\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"Select Dates\",\n \"variant\": \"section\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"fields\"\n ]\n },\n {\n \"id\": \"fields\",\n \"component\": \"Column\",\n \"children\": [\n \"calendars-row\",\n \"quick-picks\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"calendars-row\",\n \"component\": \"Row\",\n \"children\": [\n \"start-cal\",\n \"end-cal\"\n ],\n \"gap\": \"3\"\n },\n {\n \"id\": \"start-cal\",\n \"component\": \"CalendarPicker\",\n \"label\": \"Start Date\",\n \"name\": \"startDate\"\n },\n {\n \"id\": \"end-cal\",\n \"component\": \"CalendarPicker\",\n \"label\": \"End Date\",\n \"name\": \"endDate\"\n },\n {\n \"id\": \"quick-picks\",\n \"component\": \"Row\",\n \"children\": [\n \"pick-today\",\n \"pick-week\",\n \"pick-month\",\n \"pick-quarter\"\n ],\n \"gap\": \"2\"\n },\n {\n \"id\": \"pick-today\",\n \"component\": \"Badge\",\n \"textContent\": \"Today\"\n },\n {\n \"id\": \"pick-week\",\n \"component\": \"Badge\",\n \"textContent\": \"This Week\"\n },\n {\n \"id\": \"pick-month\",\n \"component\": \"Badge\",\n \"textContent\": \"This Month\"\n },\n {\n \"id\": \"pick-quarter\",\n \"component\": \"Badge\",\n \"textContent\": \"This Quarter\"\n },\n {\n \"id\": \"ftr\",\n \"component\": \"Footer\",\n \"children\": [\n \"apply-btn\"\n ]\n },\n {\n \"id\": \"apply-btn\",\n \"component\": \"Button\",\n \"text\": \"Apply\",\n \"variant\": \"primary\"\n }\n]",
114
- "name": "date-range-picker"
180
+ "description": "Combined date+time selection via precision the mode gh#1372 folded in from the former <datetime-picker-ui>.",
181
+ "a2ui": "[\n {\n \"id\": \"field\",\n \"component\": \"Field\",\n \"label\": \"Appointment\",\n \"children\": [\"dt\"]\n },\n {\n \"id\": \"dt\",\n \"component\": \"CalendarPicker\",\n \"name\": \"appointment\",\n \"precision\": \"minute\",\n \"min\": \"2026-01-01T00:00\",\n \"max\": \"2026-12-31T23:59\"\n }\n]\n",
182
+ "name": "datetime-picker"
183
+ },
184
+ {
185
+ "description": "Single-date picker constrained to a future booking window via min/max, paired with a submit button.",
186
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"col\"\n ]\n },\n {\n \"id\": \"col\",\n \"component\": \"Column\",\n \"children\": [\n \"field\",\n \"btn\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"field\",\n \"component\": \"Field\",\n \"label\": \"Check-in date\",\n \"children\": [\n \"cal\"\n ]\n },\n {\n \"id\": \"cal\",\n \"component\": \"CalendarPicker\",\n \"name\": \"checkin\",\n \"min\": \"2026-08-16\",\n \"max\": \"2026-12-31\"\n },\n {\n \"id\": \"btn\",\n \"component\": \"Button\",\n \"text\": \"Reserve\",\n \"variant\": \"primary\"\n }\n]",
187
+ "name": "constrained-date"
188
+ },
189
+ {
190
+ "description": "Log-cursor picker with second precision — gh#1372's fold of the former datetime-picker second-precision example.",
191
+ "a2ui": "[\n {\n \"id\": \"dt\",\n \"component\": \"CalendarPicker\",\n \"name\": \"log-cursor\",\n \"precision\": \"second\",\n \"step\": 1,\n \"value\": \"2026-05-24T14:30:45\"\n }\n]\n",
192
+ "name": "second-precision"
115
193
  }
116
194
  ],
117
195
  "keywords": [
118
196
  "calendarpicker",
119
197
  "calendar-picker",
120
198
  "calendar",
121
- "picker"
199
+ "picker",
200
+ "datetimepicker",
201
+ "datetime-picker",
202
+ "datetime",
203
+ "date-time",
204
+ "dateandtime",
205
+ "appointment",
206
+ "schedule",
207
+ "timestamp"
122
208
  ],
123
209
  "name": "UICalendarPicker",
210
+ "parts": {},
124
211
  "related": [
125
212
  "input",
126
213
  "button",
127
- "badge"
214
+ "badge",
215
+ "date-range-picker",
216
+ "time-picker",
217
+ "field",
218
+ "popover"
128
219
  ],
129
220
  "slots": {
130
- "calendar": {
131
- "description": "Popover container for the month grid"
221
+ "footer": {
222
+ "description": "Optional Apply/Cancel buttons for explicit-commit flows. Spans the pane(s) below the calendar (+ time, when `precision` is minute/second)."
132
223
  },
133
- "label": {
134
- "description": "Label element above the trigger"
224
+ "popover": {
225
+ "description": "Popover container for the calendar pane(s) (gh#1461; renamed from the yaml's prior `calendar` key, which matched no real slot=\"…\" attribute — render() stamps this element as slot=\"popover\")."
135
226
  },
136
227
  "trigger": {
137
228
  "description": "Combobox button that opens the calendar popover"
@@ -146,18 +237,46 @@
146
237
  "description": "Non-interactive; dimmed.",
147
238
  "attribute": "disabled",
148
239
  "name": "disabled"
240
+ },
241
+ {
242
+ "description": "Read-only; trigger keyboard-focusable but popover does not open.",
243
+ "attribute": "readonly",
244
+ "name": "readonly"
149
245
  }
150
246
  ],
151
247
  "status": "stable",
152
248
  "synonyms": {
249
+ "appointment": [
250
+ "datetime",
251
+ "meeting",
252
+ "schedule"
253
+ ],
254
+ "datetime": [
255
+ "date-time",
256
+ "timestamp",
257
+ "appointment",
258
+ "schedule"
259
+ ],
153
260
  "tags": [
154
261
  "DateTimeInput",
155
- "DatePicker"
262
+ "DatePicker",
263
+ "DateTimePicker",
264
+ "DatetimeInput",
265
+ "Timestamp"
156
266
  ]
157
267
  },
158
268
  "tag": "calendar-picker-ui",
159
- "tokens": {},
269
+ "tokens": {
270
+ "--calendar-picker-divider": {
271
+ "description": "Pane divider color. Only visible when `precision` is minute/second.",
272
+ "default": "var(--md-sys-color-neutral-outline-variant)"
273
+ },
274
+ "--calendar-picker-popover-gap": {
275
+ "description": "Gap between the calendar pane and the time pane. Only visible when `precision` is minute/second.",
276
+ "default": "var(--a-space-3)"
277
+ }
278
+ },
160
279
  "traits": [],
161
- "version": 1
280
+ "version": 2
162
281
  }
163
282
  }