@adia-ai/web-components 0.6.33 → 0.6.35

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 (391) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/color/index.js +1 -1
  3. package/components/accordion/accordion-item.yaml +2 -2
  4. package/components/accordion/accordion.css +2 -2
  5. package/components/accordion/accordion.js +1 -1
  6. package/components/action-list/action-item.yaml +2 -2
  7. package/components/action-list/action-list.css +2 -2
  8. package/components/action-list/action-list.js +1 -1
  9. package/components/agent-artifact/{class.js → agent-artifact.class.js} +1 -1
  10. package/components/agent-artifact/agent-artifact.css +31 -31
  11. package/components/agent-artifact/agent-artifact.js +1 -1
  12. package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
  13. package/components/agent-feedback-bar/agent-feedback-bar.js +1 -1
  14. package/components/agent-questions/agent-questions.css +57 -57
  15. package/components/agent-questions/agent-questions.js +1 -1
  16. package/components/agent-reasoning/agent-reasoning.css +62 -62
  17. package/components/agent-reasoning/agent-reasoning.js +1 -1
  18. package/components/agent-suggestions/agent-suggestions.css +4 -4
  19. package/components/agent-suggestions/agent-suggestions.js +1 -1
  20. package/components/agent-trace/agent-trace.css +53 -53
  21. package/components/alert/alert.a2ui.json +64 -1
  22. package/components/alert/{class.js → alert.class.js} +189 -2
  23. package/components/alert/alert.css +119 -41
  24. package/components/alert/alert.d.ts +14 -0
  25. package/components/alert/alert.js +1 -1
  26. package/components/alert/alert.test.js +184 -0
  27. package/components/alert/alert.yaml +114 -1
  28. package/components/avatar/avatar-group.yaml +2 -2
  29. package/components/avatar/avatar.css +27 -27
  30. package/components/avatar/avatar.js +1 -1
  31. package/components/badge/badge.css +27 -27
  32. package/components/badge/badge.js +1 -1
  33. package/components/block/block.css +16 -16
  34. package/components/block/block.js +1 -1
  35. package/components/breadcrumb/breadcrumb.css +23 -23
  36. package/components/breadcrumb/breadcrumb.js +1 -1
  37. package/components/button/button.css +101 -91
  38. package/components/button/button.js +1 -1
  39. package/components/calendar-grid/calendar-grid.a2ui.json +146 -0
  40. package/components/calendar-grid/calendar-grid.class.js +326 -0
  41. package/components/calendar-grid/calendar-grid.css +246 -0
  42. package/components/calendar-grid/calendar-grid.d.ts +41 -0
  43. package/components/calendar-grid/calendar-grid.js +17 -0
  44. package/components/calendar-grid/calendar-grid.yaml +136 -0
  45. package/components/calendar-picker/calendar-picker.css +139 -139
  46. package/components/calendar-picker/calendar-picker.js +1 -1
  47. package/components/canvas/canvas.css +12 -12
  48. package/components/card/card.css +83 -83
  49. package/components/card/card.js +1 -1
  50. package/components/chart/chart.css +224 -224
  51. package/components/chart/chart.js +1 -1
  52. package/components/chart-legend/chart-legend.css +26 -26
  53. package/components/chart-legend/chart-legend.js +1 -1
  54. package/components/chat-thread/chat-input.a2ui.json +1 -1
  55. package/components/chat-thread/chat-input.js +6 -1
  56. package/components/chat-thread/chat-input.yaml +4 -1
  57. package/components/chat-thread/chat-thread.js +1 -1
  58. package/components/check/check.css +40 -40
  59. package/components/check/check.js +1 -1
  60. package/components/code/code.css +125 -125
  61. package/components/code/code.js +1 -1
  62. package/components/col/col.css +15 -15
  63. package/components/col/col.js +1 -1
  64. package/components/color-input/color-input.js +1 -1
  65. package/components/color-picker/color-picker.css +55 -55
  66. package/components/color-picker/color-picker.js +1 -1
  67. package/components/combobox/combobox.a2ui.json +363 -0
  68. package/components/combobox/combobox.class.js +861 -0
  69. package/components/combobox/combobox.css +244 -0
  70. package/components/combobox/combobox.d.ts +113 -0
  71. package/components/combobox/combobox.examples.md +59 -0
  72. package/components/combobox/combobox.js +17 -0
  73. package/components/combobox/combobox.test.js +181 -0
  74. package/components/combobox/combobox.yaml +369 -0
  75. package/components/command/command.css +90 -90
  76. package/components/command/command.js +1 -1
  77. package/components/date-range-picker/date-range-picker.a2ui.json +300 -0
  78. package/components/date-range-picker/date-range-picker.class.js +791 -0
  79. package/components/date-range-picker/date-range-picker.css +224 -0
  80. package/components/date-range-picker/date-range-picker.d.ts +82 -0
  81. package/components/date-range-picker/date-range-picker.examples.md +37 -0
  82. package/components/date-range-picker/date-range-picker.js +17 -0
  83. package/components/date-range-picker/date-range-picker.test.js +387 -0
  84. package/components/date-range-picker/date-range-picker.yaml +285 -0
  85. package/components/datetime-picker/datetime-picker.a2ui.json +334 -0
  86. package/components/datetime-picker/datetime-picker.class.js +706 -0
  87. package/components/datetime-picker/datetime-picker.css +150 -0
  88. package/components/datetime-picker/datetime-picker.d.ts +86 -0
  89. package/components/datetime-picker/datetime-picker.examples.md +46 -0
  90. package/components/datetime-picker/datetime-picker.js +17 -0
  91. package/components/datetime-picker/datetime-picker.test.js +454 -0
  92. package/components/datetime-picker/datetime-picker.yaml +332 -0
  93. package/components/demo-toggle/demo-toggle.css +27 -27
  94. package/components/demo-toggle/demo-toggle.js +1 -1
  95. package/components/description-list/description-list.css +18 -18
  96. package/components/description-list/description-list.js +1 -1
  97. package/components/divider/divider.css +24 -24
  98. package/components/divider/divider.js +1 -1
  99. package/components/drawer/drawer.js +1 -1
  100. package/components/embed/embed.css +6 -6
  101. package/components/embed/embed.js +1 -1
  102. package/components/empty-state/empty-state.css +27 -27
  103. package/components/empty-state/empty-state.js +1 -1
  104. package/components/feed/feed.css +12 -12
  105. package/components/feed/feed.js +1 -1
  106. package/components/field/field.css +28 -28
  107. package/components/field/field.js +1 -1
  108. package/components/field/field.test.js +1 -1
  109. package/components/fields/fields.css +5 -5
  110. package/components/fields/fields.js +1 -1
  111. package/components/grid/grid.css +5 -5
  112. package/components/grid/grid.js +1 -1
  113. package/components/heatmap/heatmap.css +63 -63
  114. package/components/heatmap/heatmap.js +1 -1
  115. package/components/icon/icon.css +12 -12
  116. package/components/icon/icon.js +1 -1
  117. package/components/image/image.css +14 -14
  118. package/components/image/image.js +1 -1
  119. package/components/index.js +11 -0
  120. package/components/inline-message/inline-message.a2ui.json +143 -0
  121. package/components/inline-message/inline-message.class.js +169 -0
  122. package/components/inline-message/inline-message.css +75 -0
  123. package/components/inline-message/inline-message.d.ts +31 -0
  124. package/components/inline-message/inline-message.examples.md +19 -0
  125. package/components/inline-message/inline-message.js +17 -0
  126. package/components/inline-message/inline-message.test.js +203 -0
  127. package/components/inline-message/inline-message.yaml +205 -0
  128. package/components/input/input.css +67 -67
  129. package/components/input/input.js +1 -1
  130. package/components/input/input.yaml +5 -4
  131. package/components/inspector/inspector.css +6 -6
  132. package/components/inspector/inspector.js +1 -1
  133. package/components/integration-card/integration-card.a2ui.json +268 -0
  134. package/components/integration-card/integration-card.class.js +410 -0
  135. package/components/integration-card/integration-card.css +169 -0
  136. package/components/integration-card/integration-card.d.ts +63 -0
  137. package/components/integration-card/integration-card.examples.md +41 -0
  138. package/components/integration-card/integration-card.js +17 -0
  139. package/components/integration-card/integration-card.test.js +306 -0
  140. package/components/integration-card/integration-card.yaml +280 -0
  141. package/components/kbd/kbd.css +32 -32
  142. package/components/kbd/kbd.js +1 -1
  143. package/components/link/link.css +12 -12
  144. package/components/link/link.js +1 -1
  145. package/components/list/list-item.yaml +2 -2
  146. package/components/list/list.css +8 -8
  147. package/components/list/list.js +1 -1
  148. package/components/list-window/list-window.a2ui.json +277 -0
  149. package/components/list-window/list-window.class.js +688 -0
  150. package/components/list-window/list-window.css +124 -0
  151. package/components/list-window/list-window.d.ts +84 -0
  152. package/components/list-window/list-window.examples.md +73 -0
  153. package/components/list-window/list-window.js +17 -0
  154. package/components/list-window/list-window.test.js +303 -0
  155. package/components/list-window/list-window.yaml +270 -0
  156. package/components/loading-overlay/loading-overlay.a2ui.json +176 -0
  157. package/components/loading-overlay/loading-overlay.class.js +203 -0
  158. package/components/loading-overlay/loading-overlay.css +81 -0
  159. package/components/loading-overlay/loading-overlay.d.ts +24 -0
  160. package/components/loading-overlay/loading-overlay.examples.md +50 -0
  161. package/components/loading-overlay/loading-overlay.js +17 -0
  162. package/components/loading-overlay/loading-overlay.test.js +257 -0
  163. package/components/loading-overlay/loading-overlay.yaml +260 -0
  164. package/components/menu/menu-divider.yaml +1 -1
  165. package/components/menu/menu-item.yaml +1 -1
  166. package/components/menu/menu.a2ui.json +3 -0
  167. package/components/menu/menu.css +8 -8
  168. package/components/menu/menu.js +1 -1
  169. package/components/menu/menu.yaml +7 -0
  170. package/components/modal/{class.js → modal.class.js} +12 -1
  171. package/components/modal/modal.css +54 -44
  172. package/components/modal/modal.js +1 -1
  173. package/components/nav/nav.css +40 -40
  174. package/components/nav/nav.js +1 -1
  175. package/components/nav-group/nav-group.css +52 -52
  176. package/components/nav-group/nav-group.js +1 -1
  177. package/components/nav-item/nav-item.css +44 -44
  178. package/components/nav-item/nav-item.js +1 -1
  179. package/components/noodles/noodles.css +31 -31
  180. package/components/noodles/noodles.js +1 -1
  181. package/components/option-card/option-card.css +69 -69
  182. package/components/option-card/option-card.js +1 -1
  183. package/components/otp-input/otp-input.css +30 -30
  184. package/components/otp-input/otp-input.js +1 -1
  185. package/components/page/page.css +18 -18
  186. package/components/page/page.js +1 -1
  187. package/components/pagination/pagination.css +61 -61
  188. package/components/pagination/pagination.js +1 -1
  189. package/components/pane/pane.css +57 -57
  190. package/components/pane/pane.js +1 -1
  191. package/components/pipeline-status/pipeline-status.css +65 -65
  192. package/components/pipeline-status/pipeline-status.js +1 -1
  193. package/components/popover/popover.a2ui.json +8 -1
  194. package/components/popover/popover.css +17 -17
  195. package/components/popover/popover.js +1 -1
  196. package/components/popover/popover.yaml +14 -1
  197. package/components/progress/progress.css +23 -23
  198. package/components/progress/progress.js +1 -1
  199. package/components/progress-row/progress-row.css +17 -17
  200. package/components/progress-row/progress-row.js +1 -1
  201. package/components/radio/radio.css +39 -39
  202. package/components/radio/radio.js +1 -1
  203. package/components/range/range.css +55 -55
  204. package/components/range/range.js +1 -1
  205. package/components/rating/rating.css +28 -28
  206. package/components/rating/rating.js +1 -1
  207. package/components/richtext/richtext.css +133 -133
  208. package/components/richtext/richtext.js +1 -1
  209. package/components/row/row.css +19 -19
  210. package/components/row/row.js +1 -1
  211. package/components/search/search.css +5 -5
  212. package/components/search/search.js +1 -1
  213. package/components/segment/segment.css +24 -24
  214. package/components/segment/segment.js +1 -1
  215. package/components/segmented/segmented.css +25 -25
  216. package/components/segmented/segmented.js +1 -1
  217. package/components/select/select.a2ui.json +58 -4
  218. package/components/select/{class.js → select.class.js} +415 -6
  219. package/components/select/select.css +242 -84
  220. package/components/select/select.d.ts +31 -1
  221. package/components/select/select.js +1 -1
  222. package/components/select/select.test.js +202 -0
  223. package/components/select/select.yaml +126 -5
  224. package/components/skeleton/skeleton.css +14 -14
  225. package/components/skeleton/skeleton.js +1 -1
  226. package/components/slider/slider.css +46 -46
  227. package/components/slider/slider.js +1 -1
  228. package/components/spinner/spinner.a2ui.json +198 -0
  229. package/components/spinner/spinner.class.js +99 -0
  230. package/components/spinner/spinner.css +221 -0
  231. package/components/spinner/spinner.d.ts +26 -0
  232. package/components/spinner/spinner.examples.md +26 -0
  233. package/components/spinner/spinner.js +17 -0
  234. package/components/spinner/spinner.test.js +272 -0
  235. package/components/spinner/spinner.yaml +238 -0
  236. package/components/stack/stack.css +11 -11
  237. package/components/stack/stack.js +1 -1
  238. package/components/stat/stat.css +25 -25
  239. package/components/step-progress/step-progress.css +20 -20
  240. package/components/step-progress/step-progress.js +1 -1
  241. package/components/stepper/stepper-item.yaml +1 -1
  242. package/components/stepper/stepper.css +29 -29
  243. package/components/stepper/stepper.js +1 -1
  244. package/components/stream/stream.css +12 -12
  245. package/components/stream/stream.js +1 -1
  246. package/components/swatch/swatch.css +68 -68
  247. package/components/swatch/swatch.js +1 -1
  248. package/components/swiper/swiper.css +57 -57
  249. package/components/swiper/swiper.js +1 -1
  250. package/components/switch/switch.css +52 -52
  251. package/components/switch/switch.js +1 -1
  252. package/components/table/table.css +163 -163
  253. package/components/table/table.js +1 -1
  254. package/components/table-toolbar/{class.js → table-toolbar.class.js} +1 -1
  255. package/components/table-toolbar/table-toolbar.css +32 -32
  256. package/components/table-toolbar/table-toolbar.js +1 -1
  257. package/components/tabs/tab.yaml +2 -2
  258. package/components/tabs/tabs.css +51 -51
  259. package/components/tabs/tabs.js +1 -1
  260. package/components/tag/tag.css +48 -48
  261. package/components/tag/tag.js +1 -1
  262. package/components/tags-input/tags-input.a2ui.json +337 -0
  263. package/components/tags-input/tags-input.class.js +776 -0
  264. package/components/tags-input/tags-input.css +201 -0
  265. package/components/tags-input/tags-input.d.ts +120 -0
  266. package/components/tags-input/tags-input.examples.md +92 -0
  267. package/components/tags-input/tags-input.js +17 -0
  268. package/components/tags-input/tags-input.test.js +368 -0
  269. package/components/tags-input/tags-input.yaml +367 -0
  270. package/components/text/text.css +44 -44
  271. package/components/text/text.js +1 -1
  272. package/components/textarea/textarea.a2ui.json +1 -1
  273. package/components/textarea/textarea.css +46 -46
  274. package/components/textarea/textarea.js +1 -1
  275. package/components/textarea/textarea.yaml +11 -8
  276. package/components/time-picker/time-picker.a2ui.json +267 -0
  277. package/components/time-picker/time-picker.class.js +693 -0
  278. package/components/time-picker/time-picker.css +122 -0
  279. package/components/time-picker/time-picker.d.ts +75 -0
  280. package/components/time-picker/time-picker.examples.md +35 -0
  281. package/components/time-picker/time-picker.js +17 -0
  282. package/components/time-picker/time-picker.test.js +287 -0
  283. package/components/time-picker/time-picker.yaml +256 -0
  284. package/components/timeline/timeline-item.yaml +2 -2
  285. package/components/timeline/{class.js → timeline.class.js} +1 -1
  286. package/components/timeline/timeline.css +50 -50
  287. package/components/timeline/timeline.js +1 -1
  288. package/components/toast/toast.css +58 -58
  289. package/components/toast/toast.js +1 -1
  290. package/components/toggle-group/toggle-group.css +6 -6
  291. package/components/toggle-group/toggle-group.js +1 -1
  292. package/components/toggle-group/toggle-option.yaml +1 -1
  293. package/components/toggle-scheme/toggle-scheme.css +2 -2
  294. package/components/toggle-scheme/toggle-scheme.js +1 -1
  295. package/components/toolbar/toolbar-group.yaml +1 -1
  296. package/components/toolbar/toolbar.css +17 -17
  297. package/components/toolbar/toolbar.js +1 -1
  298. package/components/tooltip/tooltip.css +2 -2
  299. package/components/tooltip/tooltip.js +1 -1
  300. package/components/tree/tree-item.yaml +1 -1
  301. package/components/tree/tree.css +37 -37
  302. package/components/tree/tree.js +1 -1
  303. package/components/upload/upload.css +49 -49
  304. package/components/upload/upload.js +1 -1
  305. package/dist/web-components.min.css +1 -1
  306. package/dist/web-components.min.js +146 -87
  307. package/package.json +3 -3
  308. package/styles/components.css +11 -0
  309. /package/components/accordion/{class.js → accordion.class.js} +0 -0
  310. /package/components/action-list/{class.js → action-list.class.js} +0 -0
  311. /package/components/agent-feedback-bar/{class.js → agent-feedback-bar.class.js} +0 -0
  312. /package/components/agent-questions/{class.js → agent-questions.class.js} +0 -0
  313. /package/components/agent-reasoning/{class.js → agent-reasoning.class.js} +0 -0
  314. /package/components/agent-suggestions/{class.js → agent-suggestions.class.js} +0 -0
  315. /package/components/avatar/{class.js → avatar.class.js} +0 -0
  316. /package/components/badge/{class.js → badge.class.js} +0 -0
  317. /package/components/block/{class.js → block.class.js} +0 -0
  318. /package/components/breadcrumb/{class.js → breadcrumb.class.js} +0 -0
  319. /package/components/button/{class.js → button.class.js} +0 -0
  320. /package/components/calendar-picker/{class.js → calendar-picker.class.js} +0 -0
  321. /package/components/card/{class.js → card.class.js} +0 -0
  322. /package/components/chart/{class.js → chart.class.js} +0 -0
  323. /package/components/chart-legend/{class.js → chart-legend.class.js} +0 -0
  324. /package/components/chat-thread/{class.js → chat-thread.class.js} +0 -0
  325. /package/components/check/{class.js → check.class.js} +0 -0
  326. /package/components/code/{class.js → code.class.js} +0 -0
  327. /package/components/col/{class.js → col.class.js} +0 -0
  328. /package/components/color-input/{class.js → color-input.class.js} +0 -0
  329. /package/components/color-picker/{class.js → color-picker.class.js} +0 -0
  330. /package/components/command/{class.js → command.class.js} +0 -0
  331. /package/components/demo-toggle/{class.js → demo-toggle.class.js} +0 -0
  332. /package/components/description-list/{class.js → description-list.class.js} +0 -0
  333. /package/components/divider/{class.js → divider.class.js} +0 -0
  334. /package/components/drawer/{class.js → drawer.class.js} +0 -0
  335. /package/components/embed/{class.js → embed.class.js} +0 -0
  336. /package/components/empty-state/{class.js → empty-state.class.js} +0 -0
  337. /package/components/feed/{class.js → feed.class.js} +0 -0
  338. /package/components/field/{class.js → field.class.js} +0 -0
  339. /package/components/fields/{class.js → fields.class.js} +0 -0
  340. /package/components/grid/{class.js → grid.class.js} +0 -0
  341. /package/components/heatmap/{class.js → heatmap.class.js} +0 -0
  342. /package/components/icon/{class.js → icon.class.js} +0 -0
  343. /package/components/image/{class.js → image.class.js} +0 -0
  344. /package/components/input/{class.js → input.class.js} +0 -0
  345. /package/components/inspector/{class.js → inspector.class.js} +0 -0
  346. /package/components/kbd/{class.js → kbd.class.js} +0 -0
  347. /package/components/link/{class.js → link.class.js} +0 -0
  348. /package/components/list/{class.js → list.class.js} +0 -0
  349. /package/components/menu/{class.js → menu.class.js} +0 -0
  350. /package/components/nav/{class.js → nav.class.js} +0 -0
  351. /package/components/nav-group/{class.js → nav-group.class.js} +0 -0
  352. /package/components/nav-item/{class.js → nav-item.class.js} +0 -0
  353. /package/components/noodles/{class.js → noodles.class.js} +0 -0
  354. /package/components/option-card/{class.js → option-card.class.js} +0 -0
  355. /package/components/otp-input/{class.js → otp-input.class.js} +0 -0
  356. /package/components/page/{class.js → page.class.js} +0 -0
  357. /package/components/pagination/{class.js → pagination.class.js} +0 -0
  358. /package/components/pane/{class.js → pane.class.js} +0 -0
  359. /package/components/pipeline-status/{class.js → pipeline-status.class.js} +0 -0
  360. /package/components/popover/{class.js → popover.class.js} +0 -0
  361. /package/components/progress/{class.js → progress.class.js} +0 -0
  362. /package/components/progress-row/{class.js → progress-row.class.js} +0 -0
  363. /package/components/radio/{class.js → radio.class.js} +0 -0
  364. /package/components/range/{class.js → range.class.js} +0 -0
  365. /package/components/rating/{class.js → rating.class.js} +0 -0
  366. /package/components/richtext/{class.js → richtext.class.js} +0 -0
  367. /package/components/row/{class.js → row.class.js} +0 -0
  368. /package/components/search/{class.js → search.class.js} +0 -0
  369. /package/components/segment/{class.js → segment.class.js} +0 -0
  370. /package/components/segmented/{class.js → segmented.class.js} +0 -0
  371. /package/components/skeleton/{class.js → skeleton.class.js} +0 -0
  372. /package/components/slider/{class.js → slider.class.js} +0 -0
  373. /package/components/stack/{class.js → stack.class.js} +0 -0
  374. /package/components/step-progress/{class.js → step-progress.class.js} +0 -0
  375. /package/components/stepper/{class.js → stepper.class.js} +0 -0
  376. /package/components/stream/{class.js → stream.class.js} +0 -0
  377. /package/components/swatch/{class.js → swatch.class.js} +0 -0
  378. /package/components/swiper/{class.js → swiper.class.js} +0 -0
  379. /package/components/switch/{class.js → switch.class.js} +0 -0
  380. /package/components/table/{class.js → table.class.js} +0 -0
  381. /package/components/tabs/{class.js → tabs.class.js} +0 -0
  382. /package/components/tag/{class.js → tag.class.js} +0 -0
  383. /package/components/text/{class.js → text.class.js} +0 -0
  384. /package/components/textarea/{class.js → textarea.class.js} +0 -0
  385. /package/components/toast/{class.js → toast.class.js} +0 -0
  386. /package/components/toggle-group/{class.js → toggle-group.class.js} +0 -0
  387. /package/components/toggle-scheme/{class.js → toggle-scheme.class.js} +0 -0
  388. /package/components/toolbar/{class.js → toolbar.class.js} +0 -0
  389. /package/components/tooltip/{class.js → tooltip.class.js} +0 -0
  390. /package/components/tree/{class.js → tree.class.js} +0 -0
  391. /package/components/upload/{class.js → upload.class.js} +0 -0
@@ -0,0 +1,224 @@
1
+ /* ============================================================
2
+ date-range-picker — two-block @scope per ADR-0003.
3
+ Block 1 (TOKENS): :where(:scope) — token defaults.
4
+ Block 2 (BASE): :scope + descendant selectors.
5
+ Popover surfaces live OUTSIDE @scope because the Popover API
6
+ lifts them into the top layer; custom-property inheritance
7
+ still cascades from the host so --date-range-picker-* tokens
8
+ reach the popover.
9
+ ============================================================ */
10
+
11
+ @scope (date-range-picker-ui) {
12
+ /* ── Block 1 — TOKENS ── */
13
+ :where(:scope) {
14
+ --date-range-picker-bg-default: var(--a-bg);
15
+ --date-range-picker-fg-default: var(--a-fg);
16
+
17
+ /* Popover surface */
18
+ --date-range-picker-popover-bg-default: var(--a-bg-subtle);
19
+ --date-range-picker-popover-border-default: var(--a-border-subtle);
20
+ --date-range-picker-popover-radius-default: var(--a-radius-lg);
21
+ --date-range-picker-popover-shadow-default: var(--a-shadow-lg);
22
+ --date-range-picker-popover-padding-default: var(--a-space-3);
23
+ --date-range-picker-popover-gap-default: var(--a-space-3);
24
+
25
+ /* Preset rail */
26
+ --date-range-picker-preset-bg-default: transparent;
27
+ --date-range-picker-preset-bg-hover-default: var(--a-bg-hover);
28
+ --date-range-picker-preset-min-width-default: 10em;
29
+ --date-range-picker-preset-gap-default: var(--a-space-1);
30
+
31
+ /* Selected / preview day cells (cascade into calendar) */
32
+ --date-range-picker-selected-bg-default: var(--a-accent);
33
+ --date-range-picker-selected-fg-default: var(--a-accent-fg);
34
+ --date-range-picker-preview-bg-default: var(--a-accent-muted);
35
+
36
+ /* Trigger — mirrors the canonical trigger surface used by
37
+ <select-ui> and <calendar-picker-ui> so consumers see a
38
+ consistent open-picker chrome across the input/picker family.
39
+ The values are deliberately the same tokens select/calendar
40
+ cascade onto their own `--*-trigger-*` aliases. */
41
+ --date-range-picker-trigger-min-width-default: 14em;
42
+ --date-range-picker-trigger-height-default: var(--a-size);
43
+ --date-range-picker-trigger-px-default: var(--a-ui-px);
44
+ --date-range-picker-trigger-gap-default: var(--a-space-1);
45
+ --date-range-picker-trigger-radius-default: var(--a-radius);
46
+ --date-range-picker-trigger-bg-default: var(--a-ui-bg);
47
+ --date-range-picker-trigger-bg-hover-default: var(--a-ui-bg-hover);
48
+ --date-range-picker-trigger-fg-default: var(--a-ui-text-subtle);
49
+ --date-range-picker-trigger-border-default: var(--a-ui-border);
50
+ --date-range-picker-trigger-border-hover-default: var(--a-ui-border-hover);
51
+ --date-range-picker-trigger-focus-ring-default: var(--a-focus-ring);
52
+
53
+ /* Popover-internal padding (NOT the trigger — kept distinct from
54
+ --date-range-picker-trigger-px to avoid the historical conflation
55
+ that made the trigger render with --a-space-3 vertical inflation). */
56
+ --date-range-picker-px-default: var(--a-space-3);
57
+ --date-range-picker-py-default: var(--a-space-2);
58
+
59
+ /* Motion */
60
+ --date-range-picker-duration-default: var(--a-duration-fast);
61
+ --date-range-picker-easing-default: var(--a-easing);
62
+ }
63
+
64
+ /* ── Block 2 — BASE ── */
65
+ :scope {
66
+ box-sizing: border-box;
67
+ position: relative;
68
+ display: inline-block;
69
+ background: var(--date-range-picker-bg, var(--date-range-picker-bg-default));
70
+ color: var(--date-range-picker-fg, var(--date-range-picker-fg-default));
71
+ font-size: var(--a-ui-size);
72
+ }
73
+
74
+ /* ── Trigger ──
75
+ Canonical trigger surface matching <select-ui> + <calendar-picker-ui>:
76
+ flex row, --a-size min-height, --a-ui-px padding, --a-radius corner,
77
+ --a-ui-border outline. The trigger is a <button-ui slot="trigger">
78
+ stamped by date-range-picker.class.js — these rules override button-ui's defaults at
79
+ equal specificity so the picker trigger reads as part of the
80
+ input/picker family rather than a generic button. */
81
+ :scope > [slot="trigger"] {
82
+ min-width: var(--date-range-picker-trigger-min-width, var(--date-range-picker-trigger-min-width-default));
83
+ min-height: var(--date-range-picker-trigger-height, var(--date-range-picker-trigger-height-default));
84
+ padding: 0 var(--date-range-picker-trigger-px, var(--date-range-picker-trigger-px-default));
85
+ gap: var(--date-range-picker-trigger-gap, var(--date-range-picker-trigger-gap-default));
86
+ border-radius: var(--date-range-picker-trigger-radius, var(--date-range-picker-trigger-radius-default));
87
+ border: 1px solid var(--date-range-picker-trigger-border, var(--date-range-picker-trigger-border-default));
88
+ background: var(--date-range-picker-trigger-bg, var(--date-range-picker-trigger-bg-default));
89
+ color: var(--date-range-picker-trigger-fg, var(--date-range-picker-trigger-fg-default));
90
+ /* Justify content so leading icon + label sit at start, trailing
91
+ caret at end — same shape select-ui's trigger uses via
92
+ `justify-content: space-between` on a [leading|display|caret]
93
+ slot triplet. button-ui's natural alignment is `center`; our
94
+ leading+text+trailing layout reads better as space-between. */
95
+ justify-content: space-between;
96
+ line-height: 1;
97
+ transition:
98
+ border-color var(--date-range-picker-duration, var(--date-range-picker-duration-default)) var(--date-range-picker-easing, var(--date-range-picker-easing-default)),
99
+ background var(--date-range-picker-duration, var(--date-range-picker-duration-default)) var(--date-range-picker-easing, var(--date-range-picker-easing-default));
100
+ }
101
+ :scope > [slot="trigger"]:hover {
102
+ border-color: var(--date-range-picker-trigger-border-hover, var(--date-range-picker-trigger-border-hover-default));
103
+ background: var(--date-range-picker-trigger-bg-hover, var(--date-range-picker-trigger-bg-hover-default));
104
+ }
105
+ :scope:focus-visible { outline: none; }
106
+ :scope:focus-visible > [slot="trigger"] {
107
+ box-shadow: var(--date-range-picker-trigger-focus-ring, var(--date-range-picker-trigger-focus-ring-default));
108
+ }
109
+
110
+ /* States */
111
+ :scope[disabled] {
112
+ opacity: 0.5;
113
+ pointer-events: none;
114
+ }
115
+ :scope[readonly] > [slot="trigger"] {
116
+ cursor: default;
117
+ }
118
+ }
119
+
120
+ /* ============================================================
121
+ Popover surface — outside @scope (lifted to top layer).
122
+ Custom properties inherit from the host so
123
+ --date-range-picker-* tokens are available here.
124
+ ============================================================ */
125
+
126
+ /* §FB-Wave1-QA — `display: grid` MUST be guarded by `:popover-open` so the
127
+ popover honors the UA `popover` `display: none` while closed. Without
128
+ the guard, the popover renders in normal flow on first paint. Mirrors
129
+ the popover-ui pattern that uses `:not(:popover-open) { display: none }`. */
130
+ date-range-picker-ui [slot="popover"] {
131
+ margin: 0;
132
+ padding: var(--date-range-picker-py, var(--date-range-picker-py-default)) var(--date-range-picker-px, var(--date-range-picker-px-default));
133
+ border: 1px solid var(--date-range-picker-popover-border, var(--date-range-picker-popover-border-default));
134
+ border-radius: var(--date-range-picker-popover-radius, var(--date-range-picker-popover-radius-default));
135
+ background: var(--date-range-picker-popover-bg, var(--date-range-picker-popover-bg-default));
136
+ box-shadow: var(--date-range-picker-popover-shadow, var(--date-range-picker-popover-shadow-default));
137
+ color: var(--a-fg);
138
+ /* Anchor-positioning fallback — popover.css and anchor.js handle
139
+ placement; layout here just sets the grid. */
140
+ inset: auto;
141
+ /* Fade + lift in on first paint via @starting-style. */
142
+ opacity: 1;
143
+ translate: 0 0;
144
+ transition:
145
+ opacity var(--date-range-picker-duration, var(--date-range-picker-duration-default)) var(--date-range-picker-easing, var(--date-range-picker-easing-default)),
146
+ translate var(--date-range-picker-duration, var(--date-range-picker-duration-default)) var(--date-range-picker-easing, var(--date-range-picker-easing-default));
147
+ }
148
+
149
+ date-range-picker-ui [slot="popover"]:popover-open {
150
+ display: grid;
151
+ grid-template-columns: auto 1fr;
152
+ gap: var(--date-range-picker-popover-gap, var(--date-range-picker-popover-gap-default));
153
+ }
154
+
155
+ date-range-picker-ui [slot="popover"]:popover-open {
156
+ @starting-style {
157
+ opacity: 0;
158
+ translate: 0 -4px;
159
+ }
160
+ }
161
+
162
+ @media (prefers-reduced-motion: reduce) {
163
+ date-range-picker-ui [slot="popover"] { transition: none; }
164
+ }
165
+
166
+ /* Preset rail — single-column flex of button-ui buttons. */
167
+ date-range-picker-ui [data-preset-rail],
168
+ date-range-picker-ui [slot="presets"] {
169
+ grid-column: 1;
170
+ display: flex;
171
+ flex-direction: column;
172
+ align-items: stretch;
173
+ gap: var(--date-range-picker-preset-gap, var(--date-range-picker-preset-gap-default));
174
+ min-width: var(--date-range-picker-preset-min-width, var(--date-range-picker-preset-min-width-default));
175
+ }
176
+
177
+ /* When [no-presets] is set OR no preset rail exists, collapse the
178
+ grid to a single column. */
179
+ date-range-picker-ui[no-presets] [slot="popover"],
180
+ date-range-picker-ui [slot="popover"]:not(:has([data-preset-rail])):not(:has([slot="presets"])) {
181
+ grid-template-columns: 1fr;
182
+ }
183
+
184
+ date-range-picker-ui [data-preset-rail] button-ui {
185
+ justify-content: flex-start;
186
+ }
187
+
188
+ /* Calendar area — horizontal layout of two calendar panes. */
189
+ date-range-picker-ui [data-calendar-area] {
190
+ grid-column: 2;
191
+ display: flex;
192
+ gap: var(--a-space-3);
193
+ align-items: flex-start;
194
+ }
195
+
196
+ date-range-picker-ui [data-calendar-area] calendar-grid-ui {
197
+ flex: 0 0 auto;
198
+ }
199
+
200
+ /* Cascade range-aware tokens into the inner calendar panes so the
201
+ linked-range coloring uses the date-range-picker palette.
202
+ §FB-Wave1-QA — now consumes calendar-grid-ui tokens (the extracted
203
+ substrate primitive). */
204
+ date-range-picker-ui calendar-grid-ui {
205
+ --calendar-grid-day-bg-selected: var(--date-range-picker-selected-bg, var(--date-range-picker-selected-bg-default));
206
+ --calendar-grid-day-fg-selected: var(--date-range-picker-selected-fg, var(--date-range-picker-selected-fg-default));
207
+ --calendar-grid-day-bg-hover: var(--date-range-picker-preview-bg, var(--date-range-picker-preview-bg-default));
208
+ }
209
+
210
+ /* Comparison mode — split preset rail visual via the divider. */
211
+ date-range-picker-ui[comparison] [data-preset-rail] [data-preset-divider] {
212
+ margin-block: var(--a-space-1);
213
+ }
214
+
215
+ /* Footer area (author-supplied [slot="footer"]) — spans both columns
216
+ under the calendar area. */
217
+ date-range-picker-ui [slot="footer"] {
218
+ grid-column: 1 / -1;
219
+ display: flex;
220
+ justify-content: flex-end;
221
+ gap: var(--a-space-2);
222
+ padding-block-start: var(--a-space-2);
223
+ border-block-start: 1px solid var(--a-border-subtle);
224
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * `<date-range-picker-ui>` — Compound form primitive for selecting a start + end date pair with optional named preset shortcuts ("Today", "Last 7 days", "This month", ...). Default presentation is a trigger button showing the formatted range; on activation a popover opens with two synchronized calendar panes + a preset side rail. Composes <calendar-picker-ui> twice; emits {from, to} ISO 8601 dates. Optional comparison-range mode emits a secondary range for analytics surfaces.
3
+ *
4
+ * @see https://ui-kit.exe.xyz/site/components/date-range-picker
5
+ *
6
+ * Type declarations generated by scripts/build/dts-codegen.mjs from
7
+ * the component's `.a2ui.json` sidecar(s). Edit the source `.yaml`,
8
+ * run `npm run build:components`, then `npm run codegen:dts` to
9
+ * regenerate; or hand-author this file fully if rich event types are
10
+ * needed beyond what the yaml `events:` block can express.
11
+ */
12
+
13
+ import { UIElement } from '../../core/element.js';
14
+
15
+ export interface DateRangePickerChangeEventDetail {
16
+ compareValue: string;
17
+ presetLabel: string;
18
+ value: string;
19
+ }
20
+
21
+ export type DateRangePickerChangeEvent = CustomEvent<DateRangePickerChangeEventDetail>;
22
+ export interface DateRangePickerCloseEventDetail {
23
+ reason: string;
24
+ }
25
+
26
+ export type DateRangePickerCloseEvent = CustomEvent<DateRangePickerCloseEventDetail>;
27
+ export interface DateRangePickerInputEventDetail {
28
+ value: string;
29
+ }
30
+
31
+ export type DateRangePickerInputEvent = CustomEvent<DateRangePickerInputEventDetail>;
32
+ export interface DateRangePickerInvalidEventDetail {
33
+ reason: string;
34
+ value: string;
35
+ }
36
+
37
+ export type DateRangePickerInvalidEvent = CustomEvent<DateRangePickerInvalidEventDetail>;
38
+ export interface DateRangePickerOpenEventDetail {
39
+ trigger: string;
40
+ }
41
+
42
+ export type DateRangePickerOpenEvent = CustomEvent<DateRangePickerOpenEventDetail>;
43
+
44
+ export class UIDateRangePicker extends UIElement {
45
+ /** Required for validation when inside a `<form>`. */
46
+ required: boolean;
47
+ /** Comparison range when `[comparison]` is set. Same `{from, to}` shape as `value`. */
48
+ compareValue: string;
49
+ /** Enable comparison-range mode. Renders a second preset cluster and emits a secondary range under `<name>-compare`. */
50
+ comparison: boolean;
51
+ /** Block all interaction. Trigger remains rendered but does not open the popover. */
52
+ disabled: boolean;
53
+ /** Trigger button date format. `short`: `Jan 1, 2026`; `long`: `January 1, 2026`; `iso`: `2026-01-01`. */
54
+ format: 'short' | 'long' | 'iso';
55
+ /** Latest selectable ISO date (inclusive). Days after are disabled in both panes. */
56
+ max: string;
57
+ /** Earliest selectable ISO date (inclusive). Days before are disabled in both panes. */
58
+ min: string;
59
+ /** Form field name for form data submission. The selected range serializes as JSON `{"from":"...","to":"..."}` under this key. */
60
+ name: string;
61
+ /** Hide the preset side rail. */
62
+ noPresets: boolean;
63
+ /** Whether the popover is currently open. */
64
+ open: boolean;
65
+ /** Text shown in the trigger when the value is empty. */
66
+ placeholder: string;
67
+ /** Block edits; allow keyboard navigation for screen-reader inspection. */
68
+ readonly: boolean;
69
+ /** Selected range as `{from, to}` ISO 8601 dates. Null when empty. Emitted on commit. */
70
+ value: string;
71
+
72
+ addEventListener<K extends keyof HTMLElementEventMap>(
73
+ type: K,
74
+ listener: (this: UIDateRangePicker, ev: HTMLElementEventMap[K]) => unknown,
75
+ options?: boolean | AddEventListenerOptions,
76
+ ): void;
77
+ addEventListener(type: 'change', listener: (ev: DateRangePickerChangeEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
78
+ addEventListener(type: 'close', listener: (ev: DateRangePickerCloseEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
79
+ addEventListener(type: 'input', listener: (ev: DateRangePickerInputEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
80
+ addEventListener(type: 'invalid', listener: (ev: DateRangePickerInvalidEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
81
+ addEventListener(type: 'open', listener: (ev: DateRangePickerOpenEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
82
+ }
@@ -0,0 +1,37 @@
1
+ # date-range-picker — Examples
2
+
3
+ ## Canonical
4
+
5
+ ```html
6
+ <field-ui label="Report period">
7
+ <date-range-picker-ui
8
+ name="report-period"
9
+ min="2026-01-01"
10
+ max="2026-12-31">
11
+ </date-range-picker-ui>
12
+ </field-ui>
13
+ ```
14
+
15
+ ## Comparison mode
16
+
17
+ ```html
18
+ <date-range-picker-ui
19
+ name="period"
20
+ comparison
21
+ value='{"from":"2026-05-01","to":"2026-05-31"}'
22
+ compare-value='{"from":"2026-04-01","to":"2026-04-30"}'>
23
+ </date-range-picker-ui>
24
+ ```
25
+
26
+ ## Custom presets
27
+
28
+ ```html
29
+ <date-range-picker-ui id="dr" name="period"></date-range-picker-ui>
30
+ <script>
31
+ document.getElementById('dr').presets = [
32
+ { label: 'Q1', range: { from: '2026-01-01', to: '2026-03-31' } },
33
+ { label: 'Q2', range: { from: '2026-04-01', to: '2026-06-30' } },
34
+ { label: 'YTD', range: { from: '2026-01-01', to: '2026-05-24' } },
35
+ ];
36
+ </script>
37
+ ```
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `<date-range-picker-ui>` — auto-registers the tag on import.
3
+ *
4
+ * For non-side-effect class import (test isolation, tag override), use
5
+ * the `class` subpath:
6
+ *
7
+ * import { UIDateRangePicker } from '@adia-ai/web-components/components/date-range-picker/class';
8
+ *
9
+ * @see ../../USAGE.md#registration--auto-vs-explicit
10
+ */
11
+
12
+ import { defineIfFree } from '../../core/register.js';
13
+ import { UIDateRangePicker } from './date-range-picker.class.js';
14
+
15
+ defineIfFree('date-range-picker-ui', UIDateRangePicker);
16
+
17
+ export { UIDateRangePicker };