@revolist/ui 4.0.5-rc → 4.0.5

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 (356) hide show
  1. package/MIGRATION.md +36 -0
  2. package/OWNERSHIP.md +36 -36
  3. package/README.md +65 -408
  4. package/_button.scss +6 -2
  5. package/_chunks/{calendar-DsXIhybL.js → calendar-BQYQLu8Q.js} +5 -5
  6. package/_chunks/{cell-visuals-E-2oEKHg.js → cell-visuals-r6DOOhGh.js} +7 -7
  7. package/_chunks/{chart-frame-CuZABXVI.js → chart-frame-GprenwEg.js} +17 -13
  8. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  9. package/_chunks/{choice-chips-BhP8MZjs.js → choice-chips-C5OxD0GV.js} +3 -3
  10. package/_chunks/{color-palette-DMJUChWC.js → color-palette-7siNch__.js} +3 -3
  11. package/_chunks/{color-picker-B4TQvxxB.js → color-picker-Cfc9eqZb.js} +4 -4
  12. package/_chunks/{component-qKctqdzk.js → component-C3k_8uIq.js} +44 -45
  13. package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-DlVkpW3h.js} +1 -9
  14. package/_chunks/{configurator-actions-C19O1rda.js → configurator-actions-vRnI54mO.js} +3 -3
  15. package/_chunks/{control-BkWukVt9.js → control-BRfF5DWQ.js} +32 -7
  16. package/_chunks/{controller-hRBm_Lfz.js → controller-BbiQuRt-.js} +5 -5
  17. package/_chunks/{controls-BLQnWEd7.js → controls-B3EgM_DS.js} +160 -132
  18. package/_chunks/{date-control-Cgw5PwlZ.js → date-control-87dcA5br.js} +5 -5
  19. package/_chunks/{date-time-B8rK5gpC.js → date-time-CfiFYodx.js} +316 -293
  20. package/_chunks/{delete-button-CW9vjLnk.js → delete-button-jneO24wa.js} +1 -1
  21. package/_chunks/dialog.parts-NqEEVc9P.js +131 -0
  22. package/_chunks/{duration-DwFXonEV.js → duration-BGZ_qJ99.js} +10 -7
  23. package/_chunks/{editor-commit-Bq3wSgvr.js → editor-commit-Dyo-FMgD.js} +1 -1
  24. package/_chunks/{editor-popup-BaaxL89T.js → editor-popup-NNP9Fh9U.js} +12 -11
  25. package/_chunks/field-configurator-DPulsY3l.js +288 -0
  26. package/_chunks/{field-context-D57PnBbH.js → field-context-C4_WrO2z.js} +1 -1
  27. package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-D4I8HpVp.js} +2 -2
  28. package/_chunks/{icon-toolbar-xbqa0hu9.js → icon-toolbar-BAAdEvr9.js} +41 -35
  29. package/_chunks/{icons-Ci5mADVc.js → icons-B4qN13Yj.js} +1 -1
  30. package/_chunks/{iso-B0YHBK7m.js → iso-CJQl2kmq.js} +1 -1
  31. package/_chunks/{model-mPO2tG2f.js → model-CFrBgRHm.js} +3 -3
  32. package/_chunks/mount-C8CnIW9k.js +267 -0
  33. package/_chunks/{native.view-ByyZ1CT5.js → native-CJm3eq3-.js} +1 -1
  34. package/_chunks/{native-control-DO0d1kgx.js → native-control-um1L1wgZ.js} +124 -111
  35. package/_chunks/{number-input-s9ddPwX6.js → number-input-CKiA4d1N.js} +4 -4
  36. package/_chunks/{picker-AY05b41W.js → picker-igNshTRC.js} +5 -5
  37. package/_chunks/{popup-UXGCiv3n.js → popup-DECYM9FI.js} +21 -10
  38. package/_chunks/{rating-choice-BEs_QFZC.js → rating-choice-CepVfGUq.js} +2 -2
  39. package/_chunks/{render-m5eMMwFR.js → render-bTk3curw.js} +2 -2
  40. package/_chunks/{reorder-list-A49l172e.js → reorder-list-B4w3aARt.js} +2 -2
  41. package/_chunks/{request-trail-DCOfa5zw.js → request-trail-B1zVRPEf.js} +151 -142
  42. package/_chunks/{rich-text-xfMWadGi.js → rich-text-Ci4d6dHn.js} +11 -11
  43. package/_chunks/selection-list-tooltips-m00U3L6z.js +42 -0
  44. package/_chunks/{title-tooltip-Cw6LOZhb.js → title-tooltip-ncldbUwS.js} +2 -2
  45. package/_chunks/{tooltip-D4xkio5G.js → tooltip-h-Z8yFBY.js} +2 -2
  46. package/_chunks/{tooltip-owner-DjdvqKzz.js → tooltip-owner-BYho-vJl.js} +1 -1
  47. package/_chunks/{tooltip-session-B6X6x8G_.js → tooltip-session-CBtRMBPr.js} +3 -3
  48. package/_chunks/{tooltip-text-BXsUEmBH.js → tooltip-text-BN5WdGHn.js} +2 -2
  49. package/_chunks/{top-layer-popup-CNSDdfJV.js → top-layer-popup-CKJ7VJOF.js} +3 -3
  50. package/_dialog.scss +57 -22
  51. package/_form.scss +71 -21
  52. package/_legend.scss +25 -7
  53. package/_variables.scss +34 -32
  54. package/_view-switcher.scss +6 -0
  55. package/activity-message.d.ts +1 -1
  56. package/activity-message.js +1 -1
  57. package/ai/_chat.scss +7 -0
  58. package/ai/_style.scss +27 -20
  59. package/ai/components.d.ts +3 -1
  60. package/ai/index.js +2 -2
  61. package/ai/mount.d.ts +15 -7
  62. package/ai/request-trail.d.ts +9 -3
  63. package/ai/results/_style.scss +3 -0
  64. package/ai/results/index.d.ts +1 -1
  65. package/ai/translations.d.ts +1 -1
  66. package/angular/angular.d.ts +1 -1
  67. package/angular/angular.js +13 -7
  68. package/assignee/assignee.scss +28 -6
  69. package/assignee/index.js +6 -6
  70. package/avatar/avatar.style.scss +23 -6
  71. package/avatar/index.d.ts +25 -2
  72. package/avatar/index.js +2 -2
  73. package/badge.d.ts +1 -1
  74. package/badge.js +1 -1
  75. package/badge.view.d.ts +1 -1
  76. package/brush-range/_brush-range.scss +55 -49
  77. package/brush-range/component.d.ts +1 -3
  78. package/brush-range/component.js +10 -11
  79. package/buttons/delete-button.js +1 -1
  80. package/buttons/delete-button.style.scss +6 -2
  81. package/buttons/remove-button.d.ts +1 -1
  82. package/buttons/remove-button.js +2 -2
  83. package/buttons/remove-button.style.scss +1 -1
  84. package/buttons/svg-button.js +3 -3
  85. package/calendar/_calendar.scss +19 -23
  86. package/calendar/calendar.js +1 -1
  87. package/calendar/day.js +2 -2
  88. package/calendar/header.js +2 -3
  89. package/calendar/index.js +3 -3
  90. package/calendar/model.js +1 -1
  91. package/calendar/month-grid.js +2 -2
  92. package/calendar/translations.js +1 -1
  93. package/calendar/year-grid.js +2 -2
  94. package/cell-input.js +1 -1
  95. package/cell-input.scss +3 -7
  96. package/cell-visuals/badge.style.scss +6 -3
  97. package/cell-visuals/bar-chart.style.scss +2 -1
  98. package/cell-visuals/column-type.style.css +12 -0
  99. package/cell-visuals/index.js +1 -1
  100. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  101. package/cell-visuals/progress-line.style.scss +1 -4
  102. package/cell-visuals/sparkline.style.scss +2 -1
  103. package/cell-visuals/timeline.style.css +4 -2
  104. package/checkbox/checkbox.scss +6 -24
  105. package/checkbox/index.js +1 -1
  106. package/choice-chips/index.js +1 -1
  107. package/color-palette/built-in-palettes.js +1 -1
  108. package/color-palette/chart-palettes.js +1 -1
  109. package/color-palette/color-palette.js +1 -1
  110. package/color-palette/color-palette.style.scss +88 -25
  111. package/color-palette/color-picker.constants.js +1 -1
  112. package/color-palette/color-picker.js +2 -2
  113. package/color-palette/color-picker.style.scss +23 -10
  114. package/color-palette/common-palettes.d.ts +1 -1
  115. package/color-palette/common-palettes.js +2 -2
  116. package/color-palette/gantt-palettes.js +1 -1
  117. package/color-palette/native.d.ts +15 -2
  118. package/color-palette/palette.js +1 -1
  119. package/color-palette/pivot-palettes.js +1 -1
  120. package/color-palette/platform-palettes.js +1 -1
  121. package/color-palette/pro-palettes.js +1 -1
  122. package/color-palette/scheduler-palettes.js +1 -1
  123. package/component-catalog.d.ts +3 -6
  124. package/configurator-actions.d.ts +6 -6
  125. package/configurator-actions.js +1 -1
  126. package/configurator-aggregation-list.d.ts +1 -1
  127. package/configurator-aggregation-list.js +19 -17
  128. package/configurator-drop-zone.d.ts +3 -2
  129. package/configurator-drop-zone.js +34 -32
  130. package/configurator-focus.js +1 -1
  131. package/configurator-sections.d.ts +3 -3
  132. package/configurator-sections.js +1 -1
  133. package/control-attributes.js +1 -1
  134. package/control-presentation.d.ts +8 -2
  135. package/control-presentation.js +2 -2
  136. package/controls.d.ts +11 -0
  137. package/controls.js +4 -4
  138. package/core/anchored-popover.js +1 -1
  139. package/core/control-id.js +1 -1
  140. package/core/editor-popup-position.d.ts +6 -2
  141. package/core/editor-popup.d.ts +4 -0
  142. package/core/editor-popup.js +1 -1
  143. package/core/motion.js +1 -1
  144. package/{_chunks/popover-controller-D-AvKQ7B.js → core/popover-controller.js} +8 -8
  145. package/core/selection-list-tooltips.d.ts +2 -0
  146. package/core/tooltip.d.ts +1 -1
  147. package/core/top-layer-popup.d.ts +1 -1
  148. package/core/top-layer-popup.js +1 -1
  149. package/date-time/attach.d.ts +1 -1
  150. package/date-time/date-control.d.ts +1 -1
  151. package/date-time/field.d.ts +4 -2
  152. package/date-time/index.js +1 -1
  153. package/date-time/style.scss +206 -46
  154. package/date-time/time-selection.d.ts +1 -1
  155. package/date-time/types.d.ts +5 -1
  156. package/dialog/dialog-action-footer.d.ts +17 -2
  157. package/dialog/dialog.dom.d.ts +15 -2
  158. package/dialog/dialog.dom.js +3 -3
  159. package/dialog/dialog.drag.js +1 -1
  160. package/dialog/dialog.parts.d.ts +1 -1
  161. package/dialog/dialog.parts.js +1 -1
  162. package/dialog/dialog.preact.js +1 -1
  163. package/distribution-chart/_distribution-chart.scss +115 -23
  164. package/distribution-chart/area-chart.js +2 -2
  165. package/distribution-chart/bar-chart.js +2 -2
  166. package/distribution-chart/chart-frame.d.ts +1 -1
  167. package/distribution-chart/index.d.ts +1 -1
  168. package/distribution-chart/index.js +1 -1
  169. package/distribution-chart/line-chart.js +2 -2
  170. package/dropdown/content.js +1 -1
  171. package/dropdown/control.js +1 -1
  172. package/dropdown/dropdown.service.js +1 -1
  173. package/dropdown/dropdown.types.d.ts +1 -1
  174. package/dropdown/editor-dropdown.style.scss +19 -9
  175. package/dropdown/index.js +2 -2
  176. package/dropdown/lookup-field.d.ts +5 -0
  177. package/dropdown/lookup-field.js +3 -3
  178. package/dropdown/popup.js +1 -1
  179. package/duration/index.js +1 -1
  180. package/editor-actions.js +2 -2
  181. package/editor-layout/index.d.ts +4 -4
  182. package/editor-layout/index.js +40 -35
  183. package/editor-layout/style.scss +82 -18
  184. package/favicon.svg +9 -0
  185. package/field-configurator.d.ts +22 -3
  186. package/field-configurator.js +1 -1
  187. package/field-reorder.hook.js +1 -1
  188. package/field-reorder.js +1 -1
  189. package/filter/filters/slider/_single-slider.scss +57 -38
  190. package/filter/filters/slider/_slider.scss +41 -16
  191. package/filter/filters/slider/component.js +1 -1
  192. package/filter/filters/slider/control.js +1 -1
  193. package/filter/filters/slider/inputs.js +1 -1
  194. package/filter/filters/slider/logic.js +1 -1
  195. package/filter/filters/slider/preact.js +1 -1
  196. package/filter/filters/slider/runtime.js +3 -3
  197. package/filter/filters/slider/single.js +2 -2
  198. package/filter-badge.js +2 -2
  199. package/filter-controls.d.ts +0 -1
  200. package/filter-controls.js +6 -7
  201. package/form-controls/index.d.ts +10 -2
  202. package/form-controls/index.js +3 -3
  203. package/form-controls/presentation.d.ts +1 -1
  204. package/form-controls/presentation.js +2 -2
  205. package/formatting/index.d.ts +1 -1
  206. package/formatting/index.js +7 -7
  207. package/formatting/styles.scss +13 -11
  208. package/framework.js +201 -205
  209. package/history-controls.js +1 -1
  210. package/html-controls.js +1 -1
  211. package/icon-toolbar.d.ts +6 -2
  212. package/icon-toolbar.js +1 -1
  213. package/icons/icon.d.ts +1 -1
  214. package/icons/icon.js +1 -1
  215. package/legend.d.ts +1 -1
  216. package/legend.js +1 -1
  217. package/masked-input/index.js +4 -4
  218. package/native-control.js +1 -1
  219. package/native-controls.d.ts +54 -2
  220. package/native-styles.css +1 -1
  221. package/native-styles.scss +6 -2
  222. package/native.d.ts +3 -3
  223. package/native.js +35 -35
  224. package/number-input/index.d.ts +1 -1
  225. package/number-input/index.js +1 -1
  226. package/package.json +49 -1
  227. package/pagination.js +12 -12
  228. package/pdf-viewer/controller.js +1 -1
  229. package/pdf-viewer/header.d.ts +1 -1
  230. package/pdf-viewer/index.d.ts +2 -2
  231. package/pdf-viewer/index.js +3 -3
  232. package/pdf-viewer/search-bar.d.ts +1 -1
  233. package/pdf-viewer/status.d.ts +1 -1
  234. package/pdf-viewer/style.scss +203 -42
  235. package/preact-mount.js +1 -1
  236. package/preact.d.ts +6 -10
  237. package/preact.js +108 -70
  238. package/progress/_bar.scss +9 -3
  239. package/progress/_circular.scss +2 -1
  240. package/progress/bar.js +1 -1
  241. package/progress/circular.js +1 -1
  242. package/progress/range.js +1 -1
  243. package/rating-choice.js +1 -1
  244. package/react-adapter.d.ts +4 -2
  245. package/react-control.d.ts +2 -0
  246. package/react-control.js +3 -3
  247. package/react.d.ts +2 -8
  248. package/react.js +55 -56
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-avatar.js +1 -1
  253. package/resource-picker/resource-picker-option.js +1 -1
  254. package/resource-picker/resource-picker-popup.js +2 -2
  255. package/resource-picker/resource-picker.js +74 -72
  256. package/resource-picker/resource-picker.scss +62 -34
  257. package/resource-picker/resource-picker.utils.js +1 -1
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/style.scss +203 -49
  260. package/rich-text/toolbar.d.ts +1 -1
  261. package/robots.txt +4 -0
  262. package/search-input/index.js +2 -2
  263. package/search-input/native.d.ts +21 -2
  264. package/segmented-switch/index.js +1 -1
  265. package/select.js +1 -1
  266. package/selection-list.d.ts +1 -0
  267. package/selection-list.js +3 -1
  268. package/status-feedback/badge.js +2 -2
  269. package/status-feedback/exit-snapshot.js +2 -2
  270. package/status-feedback/header.js +2 -2
  271. package/status-feedback/icons.js +1 -1
  272. package/status-feedback/index.js +1 -1
  273. package/status-feedback/item.js +2 -2
  274. package/status-feedback/motion.js +1 -1
  275. package/status-feedback/placement.js +1 -1
  276. package/status-feedback/popover.js +2 -2
  277. package/status-feedback/render.js +1 -1
  278. package/status-feedback/status-feedback.scss +124 -35
  279. package/styles/_activity-message.scss +24 -7
  280. package/styles/_alert.scss +78 -17
  281. package/styles/_cell-editor-frame.scss +11 -0
  282. package/styles/_compositions.scss +399 -79
  283. package/styles/_control.scss +30 -8
  284. package/styles/_disclosure.scss +15 -5
  285. package/styles/_editor-counter.scss +16 -6
  286. package/styles/_editor-slider.scss +8 -4
  287. package/styles/_field-configurator.scss +194 -42
  288. package/styles/_fields-grid.scss +18 -4
  289. package/styles/_filter-controls.scss +10 -2
  290. package/styles/_icon-action.scss +48 -15
  291. package/styles/_loading.scss +12 -3
  292. package/styles/_motion.scss +32 -9
  293. package/styles/_palette.scss +0 -24
  294. package/styles/_primitives.scss +348 -96
  295. package/styles/_theme.scss +130 -86
  296. package/styles/_thresholds.scss +28 -25
  297. package/styles/_time-grid.scss +8 -3
  298. package/styles/_tokens.scss +6 -1
  299. package/styles/color-roles.js +1 -1
  300. package/styles/configurator-actions.scss +126 -26
  301. package/styles/pagination.css +213 -0
  302. package/styles/{legacy-rating.css → rating.css} +8 -3
  303. package/styles.css +1 -1
  304. package/styles.scss +3 -5
  305. package/surfaces.d.ts +37 -4
  306. package/surfaces.js +8 -8
  307. package/svelte/UiComponent.svelte +44 -11
  308. package/svelte-control.js +1 -1
  309. package/svelte.d.ts +1 -1
  310. package/svelte.js +5 -5
  311. package/switch/index.js +2 -2
  312. package/time-grid.d.ts +0 -1
  313. package/time-grid.js +6 -6
  314. package/timeline-track/_style.scss +96 -24
  315. package/timeline-track/index.js +3 -3
  316. package/timeline-track/model.js +1 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue-badge.js +1 -1
  320. package/vue-control.js +1 -1
  321. package/vue-segmented-switch.js +1 -1
  322. package/vue.d.ts +5 -23
  323. package/vue.js +84 -91
  324. package/_chunks/badge.view-D30pMUfi.js +0 -14
  325. package/_chunks/chevron-right-sxHQMSkq.js +0 -4
  326. package/_chunks/dialog.parts-BSbvnEwX.js +0 -134
  327. package/_chunks/field-configurator-1eQP0tKy.js +0 -223
  328. package/_chunks/mount-D1i5DLRn.js +0 -266
  329. package/_shared/data-query/binding.d.ts +0 -30
  330. package/_shared/data-query/blocks.d.ts +0 -30
  331. package/_shared/data-query/commands.d.ts +0 -47
  332. package/_shared/data-query/contracts.d.ts +0 -106
  333. package/_shared/data-query/cursor-reader.d.ts +0 -25
  334. package/_shared/data-query/direct-binding.d.ts +0 -3
  335. package/_shared/data-query/index.d.ts +0 -23
  336. package/_shared/data-query/infinite-binding.d.ts +0 -18
  337. package/_shared/data-query/keys.d.ts +0 -9
  338. package/_shared/data-query/limiter.d.ts +0 -12
  339. package/_shared/data-query/load-options.d.ts +0 -25
  340. package/_shared/data-query/materialize.d.ts +0 -2
  341. package/_shared/data-query/policy.d.ts +0 -14
  342. package/_shared/data-query/provider-queries.d.ts +0 -22
  343. package/_shared/data-query/reader.d.ts +0 -23
  344. package/_shared/data-query/remote-load.d.ts +0 -7
  345. package/_shared/data-query/source.d.ts +0 -40
  346. package/avatar/index.view.d.ts +0 -25
  347. package/color-palette/native.view.d.ts +0 -15
  348. package/control-presentation.view.d.ts +0 -8
  349. package/dialog/dialog-action-footer.view.d.ts +0 -20
  350. package/dialog/dialog.dom.view.d.ts +0 -15
  351. package/form-controls/index.view.d.ts +0 -10
  352. package/formatting/control-tooltip.d.ts +0 -2
  353. package/native-controls.view.d.ts +0 -54
  354. package/search-input/native.view.d.ts +0 -21
  355. package/styles/legacy-pagination.css +0 -129
  356. package/surfaces.view.d.ts +0 -33
@@ -22,11 +22,11 @@ export declare function useConfiguratorSections(config: ConfiguratorSectionsConf
22
22
  select: (id: string) => void;
23
23
  };
24
24
  /** Shared switch spacing and opaque sticky backdrop for every configurator. */
25
- export declare function ConfiguratorHeader({ children, className }: {
25
+ export declare function ConfiguratorHeader({ children, className, }: {
26
26
  children?: ComponentChildren;
27
27
  className?: string;
28
28
  }): h.JSX.Element;
29
- export declare function ConfiguratorSectionTabs({ sections, active, onChange, prefix, label, className }: {
29
+ export declare function ConfiguratorSectionTabs({ sections, active, onChange, prefix, label, className, }: {
30
30
  sections: readonly ConfiguratorSection[];
31
31
  active?: string;
32
32
  onChange: (id: string) => void;
@@ -35,7 +35,7 @@ export declare function ConfiguratorSectionTabs({ sections, active, onChange, pr
35
35
  className?: string;
36
36
  }): h.JSX.Element;
37
37
  /** Inactive sections retain chat transcripts and host drafts until removed. */
38
- export declare function ConfiguratorSectionPanels({ sections, active, prefix }: {
38
+ export declare function ConfiguratorSectionPanels({ sections, active, prefix, }: {
39
39
  sections: readonly ConfiguratorSection[];
40
40
  active?: string;
41
41
  prefix: string;
@@ -2,7 +2,7 @@ import { i as e } from "./_chunks/preact.module-BBM36DnO.js";
2
2
  import { i as t, r as n, t as r } from "./_chunks/hooks.module-CG3gN83z.js";
3
3
  import { t as i } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
4
4
  import { SegmentedSwitch as a } from "./segmented-switch/index.js";
5
- //#region src/configurator-sections.tsx
5
+ //#region package/configurator-sections.tsx
6
6
  function o(e, n, r = !1) {
7
7
  let i = new Set(n.map((e) => e.id)), a = (e.sections ?? []).filter((e) => !e.id || i.has(e.id) ? !1 : (i.add(e.id), !0)), o = [...n, ...a].filter((e) => !e.hidden).map((e) => r ? {
8
8
  ...e,
@@ -1,4 +1,4 @@
1
- //#region src/control-attributes.ts
1
+ //#region package/control-attributes.ts
2
2
  function e(...e) {
3
3
  e = e.map((e) => e && typeof e == "object" && "value" in e && "subscribe" in e ? e.value : e);
4
4
  let t = e.flatMap((e) => typeof e == "string" ? e.split(/\s+/) : e && typeof e == "object" ? Object.entries(e).filter(([, e]) => e).map(([e]) => e) : []);
@@ -1,2 +1,8 @@
1
- /** Compatibility entry; markup is owned by the Preact TSX implementation. */
2
- export * from './control-presentation.view';
1
+ import { ControlTag, ControlAttributes } from './control-attributes';
2
+ export * from './control-attributes';
3
+ export declare function renderControl<H extends (...args: any[]) => any>(h: H, tag: ControlTag, attributes?: ControlAttributes | null, ...children: any[]): ReturnType<H>;
4
+ export declare function createControl<K extends ControlTag>(document: Document, tag: K, attributes?: ControlAttributes): HTMLElementTagNameMap[K];
5
+ export declare function registerControl<T extends object>(component: T, tag: ControlTag): T;
6
+ export declare function nativeControlTag(type: unknown): string | undefined;
7
+ /** Decorate a native icon control after installing its trusted bundled SVG. */
8
+ export declare function decorateIconAction(element: HTMLElement, label: string): void;
@@ -1,9 +1,9 @@
1
1
  import { c as e } from "./_chunks/preact.module-BBM36DnO.js";
2
2
  import { t } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
3
3
  import { createPreactElement as n } from "./preact-mount.js";
4
- import { n as r } from "./_chunks/popover-controller-D-AvKQ7B.js";
4
+ import { TooltipController as r } from "./core/popover-controller.js";
5
5
  import { controlAttributes as i, controlClassName as a } from "./control-attributes.js";
6
- //#region src/control-presentation.view.tsx
6
+ //#region package/control-presentation.tsx
7
7
  function o(e, t, n, ...r) {
8
8
  let a = n ?? {};
9
9
  if (t === "button" && a.busy === !0) {
package/controls.d.ts CHANGED
@@ -133,6 +133,17 @@ export declare function Submenu({ label, children }: ShellProps & {
133
133
  label: string;
134
134
  }): h.JSX.Element;
135
135
  export declare function ResizeHandle(props: ResizeOptions): h.JSX.Element;
136
+ export interface PanelResizeHandleProps extends Omit<ResizeOptions, 'value' | 'direction'> {
137
+ edge: 'left' | 'right';
138
+ initialWidth: number;
139
+ anchorRef?: {
140
+ current: HTMLDivElement | null;
141
+ };
142
+ /** Measure the outer host when it owns the resized width. */
143
+ resizeParent?: boolean;
144
+ }
145
+ /** Measures the containing panel and places a width control on its physical edge. */
146
+ export declare function PanelResizeHandle({ edge, initialWidth, anchorRef, resizeParent, max, ...props }: PanelResizeHandleProps): h.JSX.Element;
136
147
  export type PaginationDirection = 'first' | 'previous' | 'next' | 'last';
137
148
  export type PaginationButtonOptions = Pick<ButtonProps, 'disabled' | 'variant' | 'className' | 'title'>;
138
149
  export interface PaginationProps {
package/controls.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, N as c, O as l, P as u, S as d, T as f, _ as p, a as m, b as h, c as g, d as _, f as v, g as y, h as b, i as x, j as S, k as C, l as w, m as T, n as E, o as D, p as O, r as k, s as A, t as j, u as M, v as N, w as P, x as F, y as I } from "./_chunks/controls-BLQnWEd7.js";
2
- import { EditorList as L, EditorListGroup as R, EditorListItem as z, EditorListItemContent as B, EditorPane as V, EditorSplitLayout as H } from "./editor-layout/index.js";
3
- import { t as U } from "./_chunks/badge.view-D30pMUfi.js";
4
- export { o as Alert, U as Badge, j as Button, E as ButtonGroup, k as Chip, x as CircularProgress, m as CountBadge, D as DateInput, A as DateTimeInput, g as Disclosure, w as EmptyState, M as FieldError, _ as FieldHint, v as FormSection, O as IconButton, L as Listbox, R as ListboxGroup, z as ListboxOption, B as ListboxOptionContent, T as LoadingOverlay, b as Menu, y as MenuItem, p as MenuSeparator, N as NumberInput, I as NumberStepper, h as Pagination, V as Pane, F as Panel, d as RadioGroup, t as Rating, P as ResizeHandle, f as SegmentedControl, r as Spinner, H as SplitLayout, n as Submenu, l as TabPanel, C as Tabs, e as TextInput, S as Textarea, s as TimeInput, c as ToggleButton, u as Toolbar, i as ToolbarGroup, a as ToolbarSeparator };
1
+ import { t as e } from "./_chunks/selection-list-tooltips-m00U3L6z.js";
2
+ import { A as t, B as n, C as r, D as i, E as a, F as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, _ as g, a as _, b as v, c as y, d as b, f as x, g as S, h as C, i as w, j as T, k as E, l as D, m as O, n as k, o as A, p as j, r as M, s as N, t as P, u as F, v as I, w as L, x as R, y as z } from "./_chunks/controls-B3EgM_DS.js";
3
+ import { EditorList as B, EditorListGroup as V, EditorListItem as H, EditorListItemContent as U, EditorPane as W, EditorSplitLayout as G } from "./editor-layout/index.js";
4
+ export { p as Alert, n as Badge, P as Button, k as ButtonGroup, M as Chip, w as CircularProgress, _ as CountBadge, A as DateInput, N as DateTimeInput, y as Disclosure, D as EmptyState, F as FieldError, b as FieldHint, x as FormSection, j as IconButton, B as Listbox, V as ListboxGroup, H as ListboxOption, U as ListboxOptionContent, O as LoadingOverlay, C as Menu, S as MenuItem, g as MenuSeparator, I as NumberInput, z as NumberStepper, v as Pagination, W as Pane, R as Panel, m as PanelResizeHandle, r as RadioGroup, L as Rating, h as ResizeHandle, a as SegmentedControl, i as Spinner, G as SplitLayout, d as Submenu, E as TabPanel, t as Tabs, T as TextInput, l as Textarea, u as TimeInput, f as ToggleButton, o as Toolbar, s as ToolbarGroup, c as ToolbarSeparator, e as useSelectionListTooltips };
@@ -1,4 +1,4 @@
1
- //#region src/core/anchored-popover.ts
1
+ //#region package/core/anchored-popover.ts
2
2
  function e(e, t, n, r = 4, i = 8) {
3
3
  let a = e.bottom + r, o = e.top - t.height - r, s = a + t.height <= n.height - i || o < i ? "below" : "above", c = e.left, l = e.right - t.width, u = c + t.width <= n.width - i || l < i ? "left" : "right";
4
4
  return {
@@ -1,4 +1,4 @@
1
- //#region src/core/control-id.ts
1
+ //#region package/core/control-id.ts
2
2
  function e(e = "rv-control") {
3
3
  return `${e}-${globalThis.crypto?.randomUUID ? globalThis.crypto.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}`;
4
4
  }
@@ -1,8 +1,12 @@
1
- /** Keep the owning field visible, scrolling the popup on the roomier side when necessary. */
1
+ /** Prefer keeping the field visible, with an optional viewport fit for larger editors. */
2
2
  export declare function calculateEditorPopupPosition(anchor: Pick<DOMRect, 'left' | 'right' | 'top' | 'bottom'>, popup: Pick<DOMRect, 'width' | 'height'>, viewport: {
3
3
  width: number;
4
4
  height: number;
5
- }, gap?: number, inset?: number): {
5
+ }, { gap, inset, fitViewport }?: {
6
+ gap?: number | undefined;
7
+ inset?: number | undefined;
8
+ fitViewport?: boolean | undefined;
9
+ }): {
6
10
  placementY: string;
7
11
  maxHeight: number;
8
12
  top: number;
@@ -6,6 +6,10 @@ export interface EditorPopupHandle {
6
6
  export interface EditorPopupOptions {
7
7
  label: string;
8
8
  className?: string;
9
+ /** Allow overlap with the anchor when the popup needs more vertical room. */
10
+ fitViewport?: boolean;
11
+ /** A separate trigger can toggle the popup without applying the draft. */
12
+ trigger?: HTMLElement;
9
13
  onClose?: () => void;
10
14
  isAvailable?: () => boolean;
11
15
  }
@@ -1 +1 @@
1
- export { t as mountEditorPopup } from "../_chunks/editor-popup-BaaxL89T.js";
1
+ export { t as mountEditorPopup } from "../_chunks/editor-popup-NNP9Fh9U.js";
package/core/motion.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/core/motion.ts
1
+ //#region package/core/motion.ts
2
2
  function e(e) {
3
3
  let t = [];
4
4
  for (let n = e; n;) {
@@ -1,11 +1,11 @@
1
- import { calculateAnchoredPopoverPosition as e } from "../core/anchored-popover.js";
2
- import { t } from "./jsxRuntime.module-F6UFnpT-.js";
1
+ import { calculateAnchoredPopoverPosition as e } from "./anchored-popover.js";
2
+ import { t } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
3
3
  import { createPreactElement as n, releasePreactElement as r } from "../preact-mount.js";
4
- import { o as i, r as a, t as o } from "./top-layer-popup-CNSDdfJV.js";
5
- import { t as s } from "./tooltip-session-B6X6x8G_.js";
6
- import { createControlId as c } from "../core/control-id.js";
7
- import { inheritUiMotion as l } from "../core/motion.js";
8
- //#region src/core/popover-controller.tsx
4
+ import { o as i, r as a, t as o } from "../_chunks/top-layer-popup-CKJ7VJOF.js";
5
+ import { t as s } from "../_chunks/tooltip-session-CBtRMBPr.js";
6
+ import { createControlId as c } from "./control-id.js";
7
+ import { inheritUiMotion as l } from "./motion.js";
8
+ //#region package/core/popover-controller.tsx
9
9
  var u = /* @__PURE__ */ new WeakMap(), d = class {
10
10
  active;
11
11
  get isOpen() {
@@ -99,4 +99,4 @@ var p = class {
99
99
  }
100
100
  };
101
101
  //#endregion
102
- export { p as n, f as r, d as t };
102
+ export { d as PopoverController, p as TooltipController, f as createTooltipElement };
@@ -0,0 +1,2 @@
1
+ /** One delegated binding per list, including options rendered by custom templates. */
2
+ export declare function useSelectionListTooltips(optionSelector?: string): (root: HTMLElement | null) => void;
package/core/tooltip.d.ts CHANGED
@@ -22,7 +22,7 @@ export declare function useControlTooltip(text: string, _floating?: boolean, pre
22
22
  readonly tooltip: h.JSX.Element;
23
23
  };
24
24
  /** Controlled surface adapter retained for existing consumers. */
25
- export declare function ControlTooltip({ id, text, content, visible, anchor, className }: {
25
+ export declare function ControlTooltip({ id, text, content, visible, anchor, className, }: {
26
26
  readonly id: string;
27
27
  readonly text: string;
28
28
  readonly content?: ComponentChildren;
@@ -1,4 +1,4 @@
1
- export { ensureTooltipStyles, prepareTooltipSurface, TOOLTIP_STYLES } from './tooltip-surface';
1
+ export { ensureTooltipStyles, prepareTooltipSurface, TOOLTIP_STYLES, } from './tooltip-surface';
2
2
  export { ownsPopupTarget } from './popup-ownership';
3
3
  export type TopLayerPopupMode = 'popover' | 'fallback';
4
4
  export type TopLayerPopupElement = HTMLElement & {
@@ -1 +1 @@
1
- export { a as TOOLTIP_STYLES, s as ensureTooltipStyles, t as hideTopLayerPopup, i as ownsPopupTarget, n as popupOwnsTarget, c as prepareTooltipSurface, r as showTopLayerPopup } from "../_chunks/top-layer-popup-CNSDdfJV.js";
1
+ export { a as TOOLTIP_STYLES, s as ensureTooltipStyles, t as hideTopLayerPopup, i as ownsPopupTarget, n as popupOwnsTarget, c as prepareTooltipSurface, r as showTopLayerPopup } from "../_chunks/top-layer-popup-CKJ7VJOF.js";
@@ -1,3 +1,3 @@
1
1
  import { TemporalPickerOptions } from './types';
2
- /** Adds the shared picker to an existing native input without changing its draft/commit owner. */
2
+ /** Adds or replaces the shared picker on an existing native input. */
3
3
  export declare function attachTemporalPicker(input: HTMLInputElement, options: TemporalPickerOptions, commit: (value: string) => void): () => void;
@@ -4,7 +4,7 @@ export interface DateInputOptions extends DateEntryOptions {
4
4
  /** Date-only multiple selection uses a semicolon-separated list by default. */
5
5
  multipleSeparator?: string;
6
6
  }
7
- export declare function DateControl({ value, label, options, multiple, invalid, errorId, disabled, readOnly, minDate, maxDate, onChange, onFocus }: {
7
+ export declare function DateControl({ value, label, options, multiple, invalid, errorId, disabled, readOnly, minDate, maxDate, onChange, onFocus, }: {
8
8
  value: string | string[];
9
9
  label: string;
10
10
  options?: DateInputOptions;
@@ -1,11 +1,13 @@
1
1
  import { DateTimeFieldProps, TemporalPickerOptions } from './types';
2
2
  import { TemporalControlValue } from '../_shared/dates/index';
3
- export declare function TemporalDraft({ value, options, apply, cancel, clearable, }: {
3
+ export declare function TemporalDraft({ value, options, apply, cancel, onValidChange, clearable, }: {
4
4
  clearable?: boolean;
5
5
  value: TemporalControlValue;
6
6
  options: TemporalPickerOptions;
7
7
  apply: (value: TemporalControlValue) => void | string;
8
8
  cancel: () => void;
9
+ /** Receives each valid temporal draft value before it is applied. */
10
+ onValidChange?: (value: TemporalControlValue) => void;
9
11
  }): import("../_vendor/preact/src/index").JSX.Element;
10
12
  /** Native text entry plus the original shared CalendarPicker, usable in any product form. */
11
- export declare function DateTimeField({ value, kind, picker, onValueChange, onInput, formatValue, parseValue, ...input }: DateTimeFieldProps): import("../_vendor/preact/src/index").JSX.Element;
13
+ export declare function DateTimeField({ value, kind, picker, livePickerUpdates, onValueChange, onInput, formatValue, parseValue, ...input }: DateTimeFieldProps): import("../_vendor/preact/src/index").JSX.Element;
@@ -1 +1 @@
1
- export { r as DateTimeField, i as TemporalDraft, a as TemporalPicker, n as attachTemporalPicker, o as defaultTemporalPickerText, t as renderTemporalValue, s as temporalPickerLabel } from "../_chunks/date-time-B8rK5gpC.js";
1
+ export { r as DateTimeField, i as TemporalDraft, a as TemporalPicker, n as attachTemporalPicker, o as defaultTemporalPickerText, t as renderTemporalValue, s as temporalPickerLabel } from "../_chunks/date-time-CfiFYodx.js";
@@ -31,6 +31,7 @@
31
31
  .rv-temporal-draft > .rv-alert {
32
32
  inline-size: 0;
33
33
  min-inline-size: 100%;
34
+ white-space: normal;
34
35
  }
35
36
 
36
37
  .rv-date-time-field {
@@ -49,8 +50,14 @@
49
50
  }
50
51
  }
51
52
 
52
- .rv-temporal-picker__dates { margin-block-end: 8px; }
53
- .rv-temporal-picker__dates > input { min-width: 0; width: 100%; flex: 1 1 0; }
53
+ .rv-temporal-picker__dates {
54
+ margin-block-end: 8px;
55
+ }
56
+ .rv-temporal-picker__dates > input {
57
+ min-width: 0;
58
+ width: 100%;
59
+ flex: 1 1 0;
60
+ }
54
61
 
55
62
  .rv-temporal-picker__header {
56
63
  display: flex;
@@ -58,9 +65,17 @@
58
65
  align-items: end;
59
66
  gap: 8px;
60
67
  margin-block-end: 8px;
61
- &:empty { display: none; }
62
- > .rv-temporal-picker__dates { flex: 1 1 112px; margin-block-end: 0; }
63
- > .rv-temporal-picker__time--single { flex: 0 1 132px; min-width: 110px; }
68
+ &:empty {
69
+ display: none;
70
+ }
71
+ > .rv-temporal-picker__dates {
72
+ flex: 1 1 112px;
73
+ margin-block-end: 0;
74
+ }
75
+ > .rv-temporal-picker__time--single {
76
+ flex: 0 1 132px;
77
+ min-width: 110px;
78
+ }
64
79
  }
65
80
 
66
81
  .rv-temporal-picker__header .rv-control,
@@ -69,7 +84,9 @@
69
84
  min-height: var(--rv-control-height, 32px);
70
85
  padding: var(--rv-control-padding, 6px 12px);
71
86
  }
72
- .rv-temporal-picker__dates { flex-wrap: wrap; }
87
+ .rv-temporal-picker__dates {
88
+ flex-wrap: wrap;
89
+ }
73
90
  .rv-temporal-picker__endpoint {
74
91
  display: flex;
75
92
  align-items: center;
@@ -77,25 +94,54 @@
77
94
  flex: 0 1 224px;
78
95
  min-width: 0;
79
96
  // Ten date characters plus the control's horizontal padding and borders.
80
- > .rv-control { flex: 0 0 auto; min-width: 0; width: calc(10ch + 26px); }
81
- > .rv-temporal-picker__time { flex: 0 1 100px; min-width: 86px; }
97
+ > .rv-control {
98
+ flex: 0 0 auto;
99
+ min-width: 0;
100
+ width: calc(10ch + 26px);
101
+ }
102
+ > .rv-temporal-picker__time {
103
+ flex: 0 1 100px;
104
+ min-width: 86px;
105
+ }
106
+ }
107
+ .rv-temporal-picker__endpoint:not(:has(.rv-temporal-picker__time)) {
108
+ flex: 0 0 auto;
82
109
  }
83
- .rv-temporal-picker__endpoint:not(:has(.rv-temporal-picker__time)) { flex: 0 0 auto; }
84
110
 
85
- .rv-temporal-picker .rv-temporal-picker__endpoint > .rv-temporal-picker__time { flex: 0 1 100px; }
111
+ .rv-temporal-picker .rv-temporal-picker__endpoint > .rv-temporal-picker__time {
112
+ flex: 0 1 100px;
113
+ }
86
114
 
87
115
  // Time-only surfaces follow their content rather than the calendar's minimum width.
88
116
  .rv-editor-popup.rv-editor-popup--time {
89
117
  min-width: min(240px, calc(100vw - 16px));
90
118
  width: 240px;
91
119
  }
92
- .rv-temporal-picker__body { display: flex; align-items: start; flex-wrap: wrap; gap: 16px; }
93
- .rv-temporal-picker--datetime .rv-temporal-picker__body { flex-direction: column; align-items: stretch; }
94
- .rv-temporal-picker--datetime .rv-temporal-picker__body > .rv-time-selection { flex: 0 0 auto; }
95
- .rv-temporal-picker--time .rv-temporal-picker__body > .rv-time-selection { flex: 1 1 0; }
96
- .rv-temporal-picker--time .rv-temporal-picker__header { margin: 0; }
97
- .rv-temporal-picker__times { flex-wrap: wrap; }
98
- .rv-temporal-picker__times > .rv-time-selection { flex: 1 1 196px; }
120
+ .rv-temporal-picker__body {
121
+ display: flex;
122
+ align-items: start;
123
+ flex-wrap: wrap;
124
+ gap: 16px;
125
+ }
126
+ .rv-temporal-picker--datetime .rv-temporal-picker__body {
127
+ flex-direction: column;
128
+ align-items: stretch;
129
+ }
130
+ .rv-temporal-picker--datetime .rv-temporal-picker__body > .rv-time-selection {
131
+ flex: 0 0 auto;
132
+ }
133
+ .rv-temporal-picker--time .rv-temporal-picker__body > .rv-time-selection {
134
+ flex: 1 1 0;
135
+ }
136
+ .rv-temporal-picker--time .rv-temporal-picker__header {
137
+ margin: 0;
138
+ }
139
+ .rv-temporal-picker__times {
140
+ flex-wrap: wrap;
141
+ }
142
+ .rv-temporal-picker__times > .rv-time-selection {
143
+ flex: 1 1 196px;
144
+ }
99
145
  .rv-time-selection {
100
146
  max-width: 208px;
101
147
  display: grid;
@@ -103,46 +149,158 @@
103
149
  min-width: 0;
104
150
  width: 100%;
105
151
  font-variant-numeric: tabular-nums;
106
- &__entry-row { display: flex; align-items: end; gap: 4px; min-width: 0; }
107
- &__entry-row > .rv-time-selection__entry { flex: 1 1 0; }
108
- &__clock { display: grid; gap: 12px; min-width: 0; }
109
- &__toggle { flex: 0 0 auto; }
110
- &__toggle[aria-expanded='true'] .rv-svg-icon { transform: rotate(180deg); }
111
- &__entry { display: grid; gap: 6px; min-width: 0; font-size: 12px; font-weight: 500; }
112
- &__entry > .rv-control { width: 100%; min-width: 0; height: var(--rv-control-height, 32px); font: inherit; font-size: var(--rv-control-font-size, 0.875rem); font-weight: 400; }
113
- &__entry input[type='time']::-webkit-calendar-picker-indicator { display: none; }
114
- &__columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
115
- &__columns--seconds { grid-template-columns: repeat(3, minmax(0, 1fr)); }
116
- &__column { display: grid; gap: 6px; min-width: 0; }
117
- &__label { color: var(--rv-ui-text-muted); font-size: 11px; text-align: center; }
118
- &__list.rv-editor-list { position: relative; height: 174px; overflow-y: auto; overscroll-behavior: contain; padding: 3px; border: 1px solid var(--rv-ui-border); border-radius: 6px; scrollbar-width: thin; }
119
- &__list .rv-editor-list__item { min-height: 32px; height: 32px; padding: 4px; text-align: center; font-size: 13px; }
120
- &__list .rv-editor-list__item:disabled { opacity: .35; cursor: default; }
121
- &__period .rv-editor-list { display: flex; height: auto; overflow: visible; }
122
- &__period .rv-editor-list__item { flex: 1 1 0; }
123
- &__empty { margin: 0; color: var(--rv-ui-text-muted); font-size: 12px; }
124
- }
125
- .rv-editor-popup .rv-temporal-draft .rv-editor-actions { position: static; }
126
- .rv-temporal-draft--time .rv-editor-actions { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rv-ui-border); }
127
- .rv-temporal-draft--time .rv-editor-actions__clear { margin-inline-end: auto; }
152
+ &__entry-row {
153
+ display: flex;
154
+ align-items: end;
155
+ gap: 4px;
156
+ min-width: 0;
157
+ }
158
+ &__entry-row > .rv-time-selection__entry {
159
+ flex: 1 1 0;
160
+ }
161
+ &__clock {
162
+ display: grid;
163
+ gap: 12px;
164
+ min-width: 0;
165
+ }
166
+ &__toggle {
167
+ flex: 0 0 auto;
168
+ }
169
+ &__toggle[aria-expanded='true'] .rv-svg-icon {
170
+ transform: rotate(180deg);
171
+ }
172
+ &__entry {
173
+ display: grid;
174
+ gap: 6px;
175
+ min-width: 0;
176
+ font-size: 12px;
177
+ font-weight: 500;
178
+ }
179
+ &__entry > .rv-control {
180
+ width: 100%;
181
+ min-width: 0;
182
+ height: var(--rv-control-height, 32px);
183
+ font: inherit;
184
+ font-size: var(--rv-control-font-size, 0.875rem);
185
+ font-weight: 400;
186
+ }
187
+ &__entry input[type='time']::-webkit-calendar-picker-indicator {
188
+ display: none;
189
+ }
190
+ &__columns {
191
+ display: grid;
192
+ grid-template-columns: repeat(2, minmax(0, 1fr));
193
+ gap: 8px;
194
+ }
195
+ &__columns--seconds {
196
+ grid-template-columns: repeat(3, minmax(0, 1fr));
197
+ }
198
+ &__column {
199
+ display: grid;
200
+ gap: 6px;
201
+ min-width: 0;
202
+ }
203
+ &__label {
204
+ color: var(--rv-ui-text-muted);
205
+ font-size: 11px;
206
+ text-align: center;
207
+ }
208
+ &__list.rv-editor-list {
209
+ position: relative;
210
+ height: 174px;
211
+ overflow-y: auto;
212
+ overscroll-behavior: contain;
213
+ padding: 3px;
214
+ border: 1px solid var(--rv-ui-border);
215
+ border-radius: 6px;
216
+ scrollbar-width: thin;
217
+ }
218
+ &__list .rv-editor-list__item {
219
+ min-height: 32px;
220
+ height: 32px;
221
+ padding: 4px;
222
+ text-align: center;
223
+ font-size: 13px;
224
+ }
225
+ &__list .rv-editor-list__item:disabled {
226
+ opacity: 0.35;
227
+ cursor: default;
228
+ }
229
+ &__period {
230
+ border-block-start: 1px solid var(--rv-ui-border);
231
+ padding-block-start: 6px;
232
+ }
233
+ &__period .rv-editor-list {
234
+ display: flex;
235
+ height: auto;
236
+ overflow: visible;
237
+ }
238
+ &__period .rv-editor-list__item {
239
+ flex: 1 1 0;
240
+ }
241
+ &__empty {
242
+ margin: 0;
243
+ color: var(--rv-ui-text-muted);
244
+ font-size: 12px;
245
+ }
246
+ }
247
+ // Keep validation and actions in scroll order when a calendar and clock are tall.
248
+ .rv-editor-popup--datetime .rv-temporal-draft .rv-editor-actions,
249
+ .rv-editor-popup
250
+ .rv-temporal-draft:has(.rv-temporal-picker--multi-month)
251
+ .rv-editor-actions {
252
+ position: static;
253
+ }
254
+ .rv-temporal-draft--time .rv-editor-actions {
255
+ margin-top: 10px;
256
+ padding-top: 10px;
257
+ border-top: 1px solid var(--rv-ui-border);
258
+ }
259
+ .rv-temporal-draft--time .rv-editor-actions__clear {
260
+ margin-inline-end: auto;
261
+ }
128
262
 
129
263
  // One calendar keeps its clock visible alongside it; multi-month calendars keep
130
264
  // the optional clock below the calendar panels.
131
- .rv-editor-popup:has(.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-time-selection) {
265
+ .rv-editor-popup:has(
266
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
267
+ .rv-time-selection
268
+ ) {
132
269
  width: min(480px, calc(100vw - 16px));
133
270
  }
134
- .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body {
271
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
272
+ .rv-temporal-picker__body {
135
273
  flex-direction: row;
274
+ flex-wrap: nowrap;
275
+ gap: 8px;
136
276
  }
137
- .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body > .rv-time-selection {
277
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
278
+ .rv-temporal-picker__body
279
+ > .rv-time-selection {
138
280
  flex: 0 1 208px;
281
+ border-inline-start: 1px solid var(--rv-ui-border);
282
+ padding-inline-start: 8px;
139
283
  }
140
284
  @media (max-width: 540px) {
141
- .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body { flex-direction: column; }
142
- .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body > .rv-time-selection { flex-basis: auto; }
285
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
286
+ .rv-temporal-picker__body {
287
+ flex-direction: column;
288
+ }
289
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
290
+ .rv-temporal-picker__body
291
+ > .rv-time-selection {
292
+ flex-basis: auto;
293
+ border-inline-start: 0;
294
+ padding-inline-start: 0;
295
+ border-block-start: 1px solid var(--rv-ui-border);
296
+ padding-block-start: 8px;
297
+ }
143
298
  }
144
299
 
145
- .rv-editor-popup:has(.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .revo-calendar--week-numbers):has(.rv-time-selection) {
300
+ .rv-editor-popup:has(
301
+ .rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month)
302
+ .revo-calendar--week-numbers
303
+ ):has(.rv-time-selection) {
146
304
  width: min(512px, calc(100vw - 16px));
147
305
  }
148
306
 
@@ -152,7 +310,9 @@
152
310
  }
153
311
 
154
312
  // Grid adapters and standalone fields share the same compact single-clock size.
155
- .rv-editor-popup:has(.rv-temporal-picker--time):not(:has(.rv-temporal-picker__times)) {
313
+ .rv-editor-popup:has(.rv-temporal-picker--time):not(
314
+ :has(.rv-temporal-picker__times)
315
+ ) {
156
316
  min-width: min(234px, calc(100vw - 16px));
157
317
  width: 234px;
158
318
  }
@@ -14,4 +14,4 @@ export interface TimeSelectionProps {
14
14
  collapsible?: boolean;
15
15
  }
16
16
  /** Shared typed entry and bounded clock columns for time-only and date-time pickers. */
17
- export declare function TimeSelection({ value, label, text, onChange, format, precision, locale, min, max, step, collapsible }: TimeSelectionProps): import("../_vendor/preact/src/index").JSX.Element;
17
+ export declare function TimeSelection({ value, label, text, onChange, format, precision, locale, min, max, step, collapsible, }: TimeSelectionProps): import("../_vendor/preact/src/index").JSX.Element;
@@ -55,6 +55,8 @@ export interface TemporalPickerProps extends TemporalPickerOptions {
55
55
  value: TemporalControlValue;
56
56
  onChange: (value: TemporalControlValue) => void;
57
57
  onValidityChange?: (valid: boolean) => void;
58
+ /** Called for each valid edit, including intermediate edits before selection completes. */
59
+ onValidChange?: (value: TemporalControlValue) => void;
58
60
  /** Complete calendar selection, distinct from an in-progress keyboard draft. */
59
61
  onSelectionComplete?: (value: TemporalControlValue) => void;
60
62
  }
@@ -65,10 +67,12 @@ export interface DateTimeFieldProps extends Omit<JSX.InputHTMLAttributes<HTMLInp
65
67
  disabled?: boolean;
66
68
  readOnly?: boolean;
67
69
  picker?: Omit<TemporalPickerOptions, 'kind' | 'selection'>;
70
+ /** Publish valid popup edits immediately when the picker uses auto-apply. */
71
+ livePickerUpdates?: boolean;
68
72
  onValueChange?: (value: string) => void;
69
73
  /** Existing product text adapters can keep their custom display/parser. */
70
74
  formatValue?: (value: string) => string;
71
75
  parseValue?: (text: string) => string | undefined;
72
76
  }
73
- /** One accessible name for both trigger and popup; chooseDate remains a compatibility fallback. */
77
+ /** One accessible name for both trigger and popup; date and time controls use their own localized action labels. */
74
78
  export declare function temporalPickerLabel(kind: LocalDateControlKind, text?: Partial<TemporalPickerText>): string;
@@ -1,2 +1,17 @@
1
- /** Compatibility entry; markup is owned by the Preact TSX implementation. */
2
- export * from './dialog-action-footer.view';
1
+ import { h } from '../_vendor/preact/src/index';
2
+ export interface NativeDialogAction {
3
+ label?: string;
4
+ disabled?: boolean;
5
+ onClick?: () => void;
6
+ }
7
+ export interface NativeDialogActionFooterProps {
8
+ cancel?: NativeDialogAction | false;
9
+ save?: NativeDialogAction | false;
10
+ deleteAction?: NativeDialogAction | false;
11
+ reset?: NativeDialogAction | false;
12
+ }
13
+ /** One TSX composition for Preact consumers and element-returning host adapters. */
14
+ export declare function ActionFooterView({ cancel, save, deleteAction, reset, start, end, children, actionsClass, class: className, ...props }: Record<string, any>): h.JSX.Element;
15
+ export declare function mountDialogActionFooter(host: HTMLElement, props: NativeDialogActionFooterProps): {
16
+ destroy(): void;
17
+ };
@@ -1,2 +1,15 @@
1
- /** Compatibility entry; markup is owned by the Preact TSX implementation. */
2
- export * from './dialog.dom.view';
1
+ import { DialogButtonVariant, DialogOpenOptions } from './dialog.types';
2
+ export interface DialogElements {
3
+ readonly root: HTMLElement;
4
+ readonly surface: HTMLElement;
5
+ readonly header: HTMLElement;
6
+ readonly body: HTMLElement;
7
+ readonly footer: HTMLElement;
8
+ readonly actions: HTMLElement;
9
+ }
10
+ /** Element-returning native API; shared TSX owns the entire dialog chrome. */
11
+ export declare function createDialogElements(document: Document, options: DialogOpenOptions, close: () => void): DialogElements;
12
+ export declare function createDialogCloseButton(document: Document, label: string, close: () => void): HTMLButtonElement;
13
+ export declare function createDialogButton(document: Document, label: string, action: () => void, variant?: DialogButtonVariant): HTMLButtonElement;
14
+ export declare function trapDialogFocus(root: HTMLElement, event: KeyboardEvent): void;
15
+ export declare function getDialogFocusableElements(root: HTMLElement): HTMLElement[];