@revolist/ui 4.0.2-rc → 4.0.2

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 (343) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/OWNERSHIP.md +32 -32
  4. package/README.md +405 -265
  5. package/_button.scss +6 -2
  6. package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
  7. package/_chunks/calculator-CDWOuAcp.js +4 -0
  8. package/_chunks/{calendar-CpaUK7w1.js → calendar-CgXQgkga.js} +28 -18
  9. package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
  10. package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
  11. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  12. package/_chunks/choice-chips-SkllS5Kl.js +126 -0
  13. package/_chunks/clock-BOhPNlW3.js +4 -0
  14. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-DMJUChWC.js} +20 -22
  15. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-BpCTuIdm.js} +77 -72
  16. package/_chunks/{component-YDcfoOLz.js → component-CfeHXgIw.js} +301 -282
  17. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BKd7U8OW.js} +0 -12
  18. package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
  19. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  20. package/_chunks/control-Dcrjsunl.js +118 -0
  21. package/_chunks/{controls-DIum-E66.js → controls-B_6NJarZ.js} +217 -182
  22. package/_chunks/{date-control-BJSzu79z.js → date-control-C4h4m75W.js} +1 -1
  23. package/_chunks/{date-time-BxPJusp9.js → date-time-CTOSbzb0.js} +344 -307
  24. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  25. package/_chunks/dialog.parts-3w5FR06n.js +131 -0
  26. package/_chunks/{duration-87U2EoMS.js → duration-Bf2OS1V5.js} +19 -18
  27. package/_chunks/editor-popup-ByU7qiub.js +82 -0
  28. package/_chunks/field-configurator-D5dZRhDe.js +288 -0
  29. package/_chunks/field-context-D57PnBbH.js +5 -0
  30. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount-Bk4O_T7T.js} +1 -1
  31. package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
  32. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  33. package/_chunks/minus-BOAR3A1C.js +4 -0
  34. package/_chunks/mount-BRdcG60g.js +267 -0
  35. package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
  36. package/_chunks/native-control-B_fVA5bL.js +649 -0
  37. package/_chunks/{number-input-BeIadZuL.js → number-input-CmM6_2vR.js} +7 -7
  38. package/_chunks/{picker-DpP7iQLA.js → picker-DTqET-2W.js} +2 -2
  39. package/_chunks/plus-CbGRkIGl.js +4 -0
  40. package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
  41. package/_chunks/popup-C35Isk7p.js +378 -0
  42. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-C-6wcb9U.js} +1 -1
  43. package/_chunks/render-m5eMMwFR.js +83 -0
  44. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-DIl1gkV6.js} +1 -1
  45. package/_chunks/request-trail-DrhdpWiH.js +762 -0
  46. package/_chunks/rich-text-BnilBbhU.js +842 -0
  47. package/_chunks/rotate-left-BF6G883o.js +4 -0
  48. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  49. package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
  50. package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
  51. package/_chunks/tooltip-D4xkio5G.js +54 -0
  52. package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
  53. package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
  54. package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
  55. package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
  56. package/_dialog.scss +55 -21
  57. package/_form.scss +71 -21
  58. package/_legend.scss +25 -7
  59. package/_shared/data-query/index.d.ts +2 -2
  60. package/_shared/data-query/load-options.d.ts +2 -2
  61. package/_variables.scss +34 -32
  62. package/_view-switcher.scss +6 -0
  63. package/activity-message.d.ts +1 -1
  64. package/ai/_chat.scss +227 -0
  65. package/ai/_style.scss +170 -39
  66. package/ai/chat.d.ts +65 -0
  67. package/ai/components.d.ts +34 -5
  68. package/ai/index.d.ts +3 -0
  69. package/ai/index.js +3 -3
  70. package/ai/mount.d.ts +59 -6
  71. package/ai/prompt-history.d.ts +13 -0
  72. package/ai/request-trail.d.ts +9 -3
  73. package/ai/results/_style.scss +83 -0
  74. package/ai/results/index.d.ts +11 -0
  75. package/ai/results/metrics.d.ts +5 -0
  76. package/ai/results/table.d.ts +5 -0
  77. package/ai/results/text.d.ts +5 -0
  78. package/ai/results/types.d.ts +29 -0
  79. package/ai/transcript.d.ts +27 -0
  80. package/ai/translations.d.ts +1 -1
  81. package/angular/angular.d.ts +1 -1
  82. package/angular/angular.js +13 -10
  83. package/assignee/assignee.scss +28 -6
  84. package/assignee/index.js +34 -35
  85. package/avatar/avatar.style.scss +23 -6
  86. package/avatar/index.d.ts +25 -2
  87. package/avatar/index.js +33 -32
  88. package/badge.d.ts +1 -1
  89. package/badge.view.d.ts +8 -0
  90. package/brush-range/_brush-range.scss +55 -49
  91. package/brush-range/component.d.ts +1 -3
  92. package/brush-range/component.js +27 -27
  93. package/buttons/delete-button.d.ts +2 -1
  94. package/buttons/delete-button.js +1 -1
  95. package/buttons/delete-button.style.scss +6 -2
  96. package/buttons/remove-button.d.ts +1 -1
  97. package/buttons/remove-button.js +1 -1
  98. package/buttons/remove-button.style.scss +1 -1
  99. package/buttons/svg-button.d.ts +2 -1
  100. package/buttons/svg-button.js +19 -19
  101. package/calendar/_calendar.scss +27 -26
  102. package/calendar/calendar.js +1 -1
  103. package/calendar/header.js +1 -2
  104. package/calendar/index.js +2 -2
  105. package/cell-input.scss +3 -7
  106. package/cell-visuals/badge.style.scss +6 -3
  107. package/cell-visuals/bar-chart.style.scss +2 -1
  108. package/cell-visuals/column-type.style.css +12 -0
  109. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  110. package/cell-visuals/progress-line.style.scss +1 -4
  111. package/cell-visuals/sparkline.style.scss +2 -1
  112. package/cell-visuals/timeline.style.css +4 -2
  113. package/checkbox/checkbox.scss +6 -24
  114. package/choice-chips/index.d.ts +3 -1
  115. package/choice-chips/index.js +1 -1
  116. package/color-palette/color-palette.js +1 -1
  117. package/color-palette/color-palette.style.scss +88 -25
  118. package/color-palette/color-picker.js +2 -2
  119. package/color-palette/color-picker.style.scss +23 -10
  120. package/color-palette/common-palettes.d.ts +1 -1
  121. package/color-palette/common-palettes.js +1 -1
  122. package/color-palette/native.d.ts +15 -2
  123. package/component-catalog.d.ts +24 -11
  124. package/configurator-actions.d.ts +67 -0
  125. package/configurator-actions.js +1 -0
  126. package/configurator-aggregation-list.d.ts +14 -0
  127. package/configurator-aggregation-list.js +63 -0
  128. package/configurator-drop-zone.d.ts +39 -0
  129. package/configurator-drop-zone.js +66 -0
  130. package/configurator-field-icon.d.ts +10 -0
  131. package/configurator-field-icon.js +1 -0
  132. package/configurator-focus.d.ts +4 -0
  133. package/configurator-focus.js +39 -0
  134. package/configurator-sections.d.ts +42 -0
  135. package/configurator-sections.js +71 -0
  136. package/control-attributes.js +7 -7
  137. package/control-presentation.d.ts +8 -2
  138. package/control-presentation.js +25 -20
  139. package/controls.d.ts +19 -7
  140. package/controls.js +4 -3
  141. package/core/editor-popup-position.d.ts +6 -2
  142. package/core/editor-popup.d.ts +4 -0
  143. package/core/editor-popup.js +1 -1
  144. package/core/popover-controller.d.ts +35 -0
  145. package/core/popup-ownership.d.ts +2 -0
  146. package/core/selection-list-tooltips.d.ts +2 -0
  147. package/core/title-tooltip.d.ts +2 -0
  148. package/core/tooltip-session.d.ts +29 -0
  149. package/core/tooltip-surface.d.ts +13 -0
  150. package/core/tooltip-text.d.ts +6 -0
  151. package/core/tooltip.d.ts +35 -0
  152. package/core/top-layer-popup.d.ts +4 -0
  153. package/core/top-layer-popup.js +1 -23
  154. package/date-time/attach.d.ts +1 -1
  155. package/date-time/date-control.d.ts +1 -1
  156. package/date-time/field.d.ts +3 -2
  157. package/date-time/index.js +1 -1
  158. package/date-time/style.scss +242 -39
  159. package/date-time/time-selection.d.ts +3 -1
  160. package/date-time/types.d.ts +5 -1
  161. package/dialog/dialog-action-footer.d.ts +17 -2
  162. package/dialog/dialog.dom.d.ts +15 -2
  163. package/dialog/dialog.dom.js +3 -3
  164. package/dialog/dialog.parts.d.ts +1 -1
  165. package/dialog/dialog.parts.js +1 -1
  166. package/distribution-chart/_distribution-chart.scss +113 -77
  167. package/distribution-chart/area-chart.js +1 -1
  168. package/distribution-chart/bar-chart.d.ts +5 -2
  169. package/distribution-chart/bar-chart.js +7 -3
  170. package/distribution-chart/chart-frame.d.ts +2 -1
  171. package/distribution-chart/index.d.ts +1 -1
  172. package/distribution-chart/line-chart.js +1 -1
  173. package/dropdown/content.d.ts +2 -1
  174. package/dropdown/content.js +1 -142
  175. package/dropdown/control.d.ts +14 -0
  176. package/dropdown/control.js +1 -0
  177. package/dropdown/control.view.d.ts +6 -0
  178. package/dropdown/dropdown.types.d.ts +5 -1
  179. package/dropdown/editor-dropdown.style.scss +54 -16
  180. package/dropdown/index.d.ts +1 -1
  181. package/dropdown/index.js +3 -4
  182. package/dropdown/lookup-field.d.ts +5 -0
  183. package/dropdown/lookup-field.js +2 -1
  184. package/dropdown/popup.d.ts +2 -2
  185. package/dropdown/popup.js +1 -141
  186. package/duration/index.js +1 -1
  187. package/duration/style.scss +1 -1
  188. package/editor-actions.js +1 -1
  189. package/editor-layout/index.d.ts +4 -4
  190. package/editor-layout/index.js +39 -34
  191. package/editor-layout/style.scss +82 -18
  192. package/field-configurator.d.ts +39 -1
  193. package/field-configurator.js +4 -170
  194. package/field-expansion.d.ts +9 -0
  195. package/fieldset.d.ts +3 -0
  196. package/filter/filters/slider/_single-slider.scss +57 -38
  197. package/filter/filters/slider/_slider.scss +41 -33
  198. package/filter/filters/slider/control.js +2 -0
  199. package/filter/filters/slider/runtime.js +49 -22
  200. package/filter/filters/slider/single.js +1 -1
  201. package/filter-badge.js +1 -1
  202. package/filter-controls.d.ts +0 -1
  203. package/filter-controls.js +9 -10
  204. package/form-controls/field-context.d.ts +5 -0
  205. package/form-controls/index.d.ts +10 -2
  206. package/form-controls/index.js +4 -9
  207. package/form-controls/presentation.d.ts +1 -1
  208. package/form-controls/presentation.js +53 -45
  209. package/formatting/index.d.ts +1 -1
  210. package/formatting/index.js +40 -35
  211. package/formatting/styles.scss +14 -57
  212. package/framework.js +237 -226
  213. package/history-controls.d.ts +14 -0
  214. package/history-controls.js +27 -0
  215. package/icon-toolbar.d.ts +62 -0
  216. package/icon-toolbar.js +1 -0
  217. package/icons/icon.d.ts +1 -1
  218. package/legend.d.ts +1 -1
  219. package/masked-input/index.js +1 -1
  220. package/native-control.d.ts +6 -5
  221. package/native-control.js +3 -26
  222. package/native-controls.d.ts +54 -2
  223. package/native-styles.css +1 -1
  224. package/native-styles.scss +6 -2
  225. package/native.d.ts +3 -3
  226. package/native.js +41 -37
  227. package/number-input/index.d.ts +1 -1
  228. package/number-input/index.js +1 -1
  229. package/package.json +88 -14
  230. package/pagination.d.ts +3 -0
  231. package/pagination.js +50 -40
  232. package/pdf-viewer/header.d.ts +1 -1
  233. package/pdf-viewer/index.d.ts +2 -2
  234. package/pdf-viewer/index.js +1 -1
  235. package/pdf-viewer/search-bar.d.ts +1 -1
  236. package/pdf-viewer/status.d.ts +1 -1
  237. package/pdf-viewer/style.scss +205 -45
  238. package/pickers.d.ts +5 -1
  239. package/preact-mount.js +1 -1
  240. package/preact.d.ts +15 -10
  241. package/preact.js +109 -64
  242. package/progress/_bar.scss +9 -3
  243. package/progress/_circular.scss +2 -1
  244. package/rating-choice.js +1 -1
  245. package/react-adapter.d.ts +4 -2
  246. package/react-control.d.ts +1 -0
  247. package/react.d.ts +20 -11
  248. package/react.js +72 -88
  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-popup.js +1 -1
  253. package/resource-picker/resource-picker.js +73 -71
  254. package/resource-picker/resource-picker.scss +66 -35
  255. package/rich-text/engine.d.ts +17 -19
  256. package/rich-text/format-html.d.ts +2 -0
  257. package/rich-text/index.d.ts +11 -7
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/model.d.ts +6 -3
  260. package/rich-text/render-model.d.ts +4 -5
  261. package/rich-text/style.scss +295 -55
  262. package/rich-text/syntax.d.ts +5 -2
  263. package/rich-text/toolbar.d.ts +6 -6
  264. package/rich-text/translations.d.ts +5 -15
  265. package/search-input/index.js +1 -1
  266. package/search-input/native.d.ts +21 -2
  267. package/select.d.ts +22 -0
  268. package/select.js +1 -0
  269. package/selection-list.d.ts +1 -0
  270. package/selection-list.js +3 -1
  271. package/status-feedback/exit-snapshot.js +1 -1
  272. package/status-feedback/index.js +2 -2
  273. package/status-feedback/popover.js +9 -9
  274. package/status-feedback/render.js +3 -44
  275. package/status-feedback/status-feedback.scss +130 -34
  276. package/status-feedback/types.d.ts +4 -0
  277. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  278. package/styles/_activity-message.scss +24 -7
  279. package/styles/_alert.scss +78 -17
  280. package/styles/_cell-editor-frame.scss +11 -0
  281. package/styles/_compositions.scss +404 -82
  282. package/styles/_control.scss +42 -12
  283. package/styles/_disclosure.scss +15 -5
  284. package/styles/_editor-counter.scss +16 -6
  285. package/styles/_editor-slider.scss +8 -4
  286. package/styles/_field-configurator.scss +321 -23
  287. package/styles/_fields-grid.scss +49 -0
  288. package/styles/_filter-controls.scss +10 -2
  289. package/styles/_icon-action.scss +48 -15
  290. package/styles/_loading.scss +12 -3
  291. package/styles/_motion.scss +32 -9
  292. package/styles/_palette.scss +0 -24
  293. package/styles/_primitives.scss +376 -116
  294. package/styles/_theme.scss +130 -86
  295. package/styles/_thresholds.scss +28 -25
  296. package/styles/_time-grid.scss +8 -3
  297. package/styles/_tokens.scss +6 -1
  298. package/styles/configurator-actions.scss +241 -0
  299. package/styles/pagination.css +213 -0
  300. package/styles/{legacy-rating.css → rating.css} +8 -3
  301. package/styles.css +1 -1
  302. package/styles.scss +3 -5
  303. package/surfaces.d.ts +38 -2
  304. package/surfaces.js +37 -134
  305. package/svelte/UiComponent.server.js +1 -48
  306. package/svelte/UiComponent.svelte +44 -32
  307. package/svelte.d.ts +1 -1
  308. package/svelte.js +33 -68
  309. package/switch/index.js +15 -14
  310. package/time-grid.d.ts +0 -1
  311. package/time-grid.js +38 -37
  312. package/timeline-track/_style.scss +96 -24
  313. package/timeline-track/component.d.ts +5 -1
  314. package/timeline-track/index.js +71 -54
  315. package/timeline-track/model.d.ts +9 -0
  316. package/timeline-track/model.js +10 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue.d.ts +51 -35
  320. package/vue.js +149 -178
  321. package/_chunks/chart-frame-BC99KjGa.js +0 -127
  322. package/_chunks/choice-chips-Cs4D-3nH.js +0 -110
  323. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  324. package/_chunks/control-tooltip-ztgmsG7H.js +0 -100
  325. package/_chunks/dialog.parts-DBqo3Qwb.js +0 -134
  326. package/_chunks/dropdown-voWqmwAe.js +0 -357
  327. package/_chunks/editor-popup-D3JdS8l3.js +0 -81
  328. package/_chunks/mount-DZe_6VtR.js +0 -90
  329. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  330. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  331. package/avatar/index.view.d.ts +0 -25
  332. package/color-palette/native.view.d.ts +0 -15
  333. package/control-presentation.view.d.ts +0 -8
  334. package/dialog/dialog-action-footer.view.d.ts +0 -20
  335. package/dialog/dialog.dom.view.d.ts +0 -15
  336. package/form-controls/index.view.d.ts +0 -12
  337. package/formatting/control-tooltip.d.ts +0 -27
  338. package/native-controls.view.d.ts +0 -54
  339. package/react-native-select.d.ts +0 -6
  340. package/search-input/native.view.d.ts +0 -21
  341. package/styles/legacy-pagination.css +0 -112
  342. package/surfaces.view.d.ts +0 -63
  343. package/vue-native-select.d.ts +0 -9
@@ -58,8 +58,11 @@
58
58
  height: 14px;
59
59
  }
60
60
 
61
- .rv-format-color-picker__trigger-swatch--empty .rv-format-color-picker__empty-icon,
62
- .rv-format-color-picker__trigger-swatch--empty .rv-format-color-picker__empty-icon svg {
61
+ .rv-format-color-picker__trigger-swatch--empty
62
+ .rv-format-color-picker__empty-icon,
63
+ .rv-format-color-picker__trigger-swatch--empty
64
+ .rv-format-color-picker__empty-icon
65
+ svg {
63
66
  display: inline-flex;
64
67
  }
65
68
 
@@ -86,14 +89,18 @@
86
89
  max-height: calc(100dvh - 24px);
87
90
  margin: 6px 0 0;
88
91
  padding: 12px;
89
- border: 1px solid var(--rv-format-divider, var(--rv-dialog-border, var(--rv-ui-border)));
92
+ border: 1px solid
93
+ var(--rv-format-divider, var(--rv-dialog-border, var(--rv-ui-border)));
90
94
  border-radius: 10px;
91
95
  background: var(--rv-dialog-bg, var(--rv-ui-surface-elevated));
92
96
  color: var(--rv-dialog-color, var(--rv-ui-text));
93
97
  box-shadow: 0 16px 36px var(--rv-ui-shadow);
94
98
  overflow: auto;
95
99
  scrollbar-gutter: stable;
96
- position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
100
+ position-try-fallbacks:
101
+ flip-block,
102
+ flip-inline,
103
+ flip-block flip-inline;
97
104
  }
98
105
 
99
106
  .rv-format-color-picker__custom-action {
@@ -106,7 +113,8 @@
106
113
  margin: 12px -12px -12px;
107
114
  padding: 9px 12px;
108
115
  border: 0;
109
- border-top: 1px solid var(--rv-format-divider, var(--rv-dialog-border, var(--rv-ui-border)));
116
+ border-top: 1px solid
117
+ var(--rv-format-divider, var(--rv-dialog-border, var(--rv-ui-border)));
110
118
  border-radius: 0 0 10px 10px;
111
119
  background: transparent;
112
120
  color: var(--rv-ui-accent-text, var(--rv-ui-accent));
@@ -166,26 +174,31 @@
166
174
  .rv-format-color-picker__custom-action:disabled,
167
175
  .rv-format-color-picker__native:disabled {
168
176
  cursor: default;
169
- opacity: .55;
177
+ opacity: 0.55;
170
178
  }
171
179
 
172
180
  .rv-format-color-picker__custom-controls[data-selection-only] {
173
181
  grid-template-columns: minmax(0, 1fr);
174
182
  }
175
183
 
176
- .rv-format-color-picker__custom-controls[data-selection-only] .rv-format-color-picker__native {
184
+ .rv-format-color-picker__custom-controls[data-selection-only]
185
+ .rv-format-color-picker__native {
177
186
  width: 100%;
178
187
  }
179
188
 
180
189
  @media (max-width: 520px) {
181
- .rv-format-color-picker__popover { min-width: 258px; }
190
+ .rv-format-color-picker__popover {
191
+ min-width: 258px;
192
+ }
182
193
  }
183
194
 
184
195
  .rv-format-color-picker__trigger,
185
196
  .rv-format-color-picker__custom-action {
186
197
  transition:
187
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease-out),
188
- border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease-out),
198
+ background-color var(--rv-ui-motion-fast, 120ms)
199
+ var(--rv-ui-motion-ease, ease-out),
200
+ border-color var(--rv-ui-motion-fast, 120ms)
201
+ var(--rv-ui-motion-ease, ease-out),
189
202
  opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease-out);
190
203
  }
191
204
 
@@ -737,5 +737,5 @@ export declare const commonPalettes: readonly [{
737
737
  readonly colors: {
738
738
  [k: string]: "linear-gradient(135deg, #7dd3fc, #2563eb)" | "linear-gradient(135deg, #facc15, #b45309)" | "linear-gradient(135deg, #f9a8d4, #be185d)" | "linear-gradient(135deg, #a5b4fc, #4f46e5)" | "linear-gradient(135deg, #86efac, #15803d)" | "linear-gradient(135deg, #fda4af, #be123c)" | "linear-gradient(135deg, #c4b5fd, #7c3aed)" | "linear-gradient(135deg, #fdba74, #c2410c)";
739
739
  };
740
- readonly consumers: readonly ["packages/ui/src/avatar/index.view.tsx", "packages/ui/src/avatar/avatar.style.scss"];
740
+ readonly consumers: readonly ["packages/ui/src/avatar/index.tsx", "packages/ui/src/avatar/avatar.style.scss"];
741
741
  }];
@@ -380,7 +380,7 @@ var e = {
380
380
  title: "Avatar backgrounds",
381
381
  usage: "Indexed avatar gradients shared by runtime background helpers and avatar styles.",
382
382
  colors: Object.fromEntries(t.map((e, t) => [String(t), e])),
383
- consumers: ["packages/ui/src/avatar/index.view.tsx", "packages/ui/src/avatar/avatar.style.scss"]
383
+ consumers: ["packages/ui/src/avatar/index.tsx", "packages/ui/src/avatar/avatar.style.scss"]
384
384
  }];
385
385
  //#endregion
386
386
  export { t as AVATAR_CELL_BACKGROUNDS, e as commonColors, n as commonPalettes };
@@ -1,2 +1,15 @@
1
- /** Compatibility entry; markup is owned by the Preact TSX implementation. */
2
- export * from './native.view';
1
+ export interface NativeColorPickerProps {
2
+ label: string;
3
+ value?: string;
4
+ disabled?: boolean;
5
+ optional?: boolean;
6
+ defaultLabel: string;
7
+ customLabel: string;
8
+ invalidColor?: string;
9
+ colorLabels: Readonly<Record<string, string>>;
10
+ onChange(value: string | undefined): void;
11
+ }
12
+ /** Native mount API; palette markup and interaction belong to ColorPicker. */
13
+ export declare function mountColorPicker(host: HTMLElement, props: NativeColorPickerProps): {
14
+ destroy(): void;
15
+ };
@@ -1,24 +1,34 @@
1
+ import { LookupField } from './dropdown/lookup-field';
1
2
  import { NumberDraft as PreactNumberDraft } from './number-input/index';
2
3
  import { MaskedDraft as PreactMaskedDraft } from './masked-input/index';
3
4
  import { DurationField as PreactDurationField, DurationDraft as PreactDurationDraft } from './duration/index';
4
- import { MarkdownEditor as PreactMarkdownEditor } from './rich-text/index';
5
+ import { HtmlEditor as PreactHtmlEditor } from './rich-text/index';
5
6
  import { TemporalPicker as PreactTemporalPicker, TemporalDraft as PreactTemporalDraft, DateTimeField as PreactDateTimeField } from './date-time/index';
6
7
  import { AssigneePicker as PreactAssigneePicker, AssigneeField as PreactAssigneeField, AssigneePickerLayout as PreactAssigneePickerLayout } from './assignee/index';
7
8
  import * as ui from './preact';
8
9
  export declare const uiComponents: {
10
+ readonly AiChat: typeof ui.AiChat;
11
+ readonly AiChatContent: typeof ui.AiChatContent;
12
+ readonly AiChatComposer: typeof ui.AiChatComposer;
13
+ readonly AiChatEmptyState: typeof ui.AiChatEmptyState;
14
+ readonly AiMessage: typeof ui.AiMessage;
15
+ readonly AiMessageContent: typeof ui.AiMessageContent;
16
+ readonly AiMessageActions: typeof ui.AiMessageActions;
17
+ readonly AiReasoning: typeof ui.AiReasoning;
18
+ readonly AiTask: typeof ui.AiTask;
19
+ readonly AiTaskItem: typeof ui.AiTaskItem;
9
20
  readonly AiPromptInput: typeof ui.AiPromptInput;
10
21
  readonly AiSuggestions: typeof ui.AiSuggestions;
11
22
  readonly AiActionStatus: typeof ui.AiActionStatus;
12
23
  readonly AiResult: typeof ui.AiResult;
24
+ readonly AiResultView: typeof ui.AiResultView;
25
+ readonly AiResultTable: typeof ui.AiResultTable;
26
+ readonly AiResultMetrics: typeof ui.AiResultMetrics;
27
+ readonly AiResultText: typeof ui.AiResultText;
28
+ readonly AiChangePreview: typeof ui.AiChangePreview;
13
29
  readonly AiAssistant: typeof ui.AiAssistant;
14
30
  readonly AiRequestTrail: typeof ui.AiRequestTrail;
15
- readonly Icon: typeof ui.SvgIcon;
16
- readonly RemovableChip: typeof ui.FilterChip;
17
- readonly Slider: typeof ui.SingleValueSlider;
18
- readonly RangeSlider: typeof ui.PreactRangeSlider;
19
- readonly ResourcePicker: typeof ui.SharedResourcePicker;
20
- readonly FeedbackPanel: typeof ui.StatusFeedbackPanel;
21
- readonly Input: import('./_vendor/preact/src/index').FunctionalComponent<import('./_vendor/preact/compat/src/index').PropsWithoutRef<Omit<import("./_vendor/preact/src/index").JSX.InputHTMLAttributes<HTMLInputElement>, "className" | "class" | "ref"> & {
31
+ readonly Input: import('./_vendor/preact/src/index').FunctionalComponent<import('./_vendor/preact/compat/src/index').PropsWithoutRef<Omit<import("./_vendor/preact/src/index").JSX.InputHTMLAttributes<HTMLInputElement>, "ref" | "className" | "class"> & {
22
32
  class?: import("./_vendor/preact/src/index").JSX.Signalish<string | undefined> | Record<string, boolean | undefined>;
23
33
  className?: import("./_vendor/preact/src/index").JSX.Signalish<string | undefined>;
24
34
  }> & {
@@ -26,9 +36,10 @@ export declare const uiComponents: {
26
36
  }>;
27
37
  readonly SvgIcon: typeof ui.SvgIcon;
28
38
  readonly SvgButton: typeof ui.SvgButton;
29
- readonly DeleteButton: ({ onClick, disabled, className, onMouseDown, onDblClick, locale, }: {
39
+ readonly DeleteButton: ({ onClick, disabled, rounded, className, onMouseDown, onDblClick, locale, }: {
30
40
  onClick: (e: MouseEvent) => void;
31
41
  disabled?: boolean;
42
+ rounded?: boolean;
32
43
  onMouseDown?: (event: MouseEvent) => void;
33
44
  onDblClick?: (event: MouseEvent) => void;
34
45
  className?: string;
@@ -90,6 +101,8 @@ export declare const uiComponents: {
90
101
  readonly FieldError: typeof ui.FieldError;
91
102
  readonly FormSection: typeof ui.FormSection;
92
103
  readonly Disclosure: typeof ui.Disclosure;
104
+ readonly CollapsibleSection: typeof ui.CollapsibleSection;
105
+ readonly LookupField: typeof LookupField;
93
106
  readonly Panel: typeof ui.Panel;
94
107
  readonly Toolbar: typeof ui.Toolbar;
95
108
  readonly ToolbarGroup: typeof ui.ToolbarGroup;
@@ -189,6 +202,7 @@ export declare const uiComponents: {
189
202
  readonly ReorderList: typeof ui.ReorderList;
190
203
  readonly ReorderHandle: typeof ui.ReorderHandle;
191
204
  readonly TimelineTrack: typeof ui.TimelineTrack;
205
+ readonly IconToolbar: typeof ui.IconToolbar;
192
206
  readonly ActivityMessage: typeof ui.ActivityMessage;
193
207
  readonly PdfViewer: typeof ui.PdfViewer;
194
208
  readonly PdfViewerToolbar: typeof ui.PdfViewerToolbar;
@@ -196,14 +210,13 @@ export declare const uiComponents: {
196
210
  readonly MaskedDraft: typeof PreactMaskedDraft;
197
211
  readonly DurationField: typeof PreactDurationField;
198
212
  readonly DurationDraft: typeof PreactDurationDraft;
199
- readonly MarkdownEditor: typeof PreactMarkdownEditor;
213
+ readonly HtmlEditor: typeof PreactHtmlEditor;
200
214
  readonly TemporalPicker: typeof PreactTemporalPicker;
201
215
  readonly TemporalDraft: typeof PreactTemporalDraft;
202
216
  readonly DateTimeField: typeof PreactDateTimeField;
203
217
  readonly AssigneePicker: typeof PreactAssigneePicker;
204
218
  readonly AssigneeField: typeof PreactAssigneeField;
205
219
  readonly AssigneePickerLayout: typeof PreactAssigneePickerLayout;
206
- readonly NativeSelect: typeof ui.NativeSelect;
207
220
  };
208
221
  export type UiComponentName = keyof typeof uiComponents;
209
222
  export type UiComponentProps<K extends UiComponentName> = import('./_vendor/preact/src/index').ComponentProps<(typeof uiComponents)[K]>;
@@ -0,0 +1,67 @@
1
+ import { FieldRemoveButton as DeleteButton } from './field-configurator';
2
+ import { h, ComponentChildren, ComponentProps, JSX, Ref } from './_vendor/preact/src/index';
3
+ import { DropdownPopup } from './dropdown/popup';
4
+ import { SearchInput } from './search-input/index';
5
+ type ElementRenderer = (...args: any[]) => any;
6
+ export declare const CONFIGURATOR_AREA_ICONS: {
7
+ rows: string;
8
+ columns: string;
9
+ values: string;
10
+ filters: string;
11
+ };
12
+ type ActionTriggerProps = Omit<JSX.IntrinsicElements['button'], 'children' | 'ref'> & {
13
+ icon: 'plus' | 'gear';
14
+ buttonRef?: Ref<HTMLButtonElement>;
15
+ };
16
+ /** The same control renders in Core Fields cells and Preact panels. */
17
+ export declare function renderConfiguratorActionTrigger(createElement: ElementRenderer, { icon, buttonRef, ...props }: ActionTriggerProps): any;
18
+ /** Native button refs and event handlers stay with the adapter. */
19
+ export declare function ConfiguratorActionTrigger(props: ActionTriggerProps): JSX.Element;
20
+ export declare function ConfiguratorRemoveButton(props: ComponentProps<typeof DeleteButton>): h.JSX.Element;
21
+ /** Shared menu row; integrations supply policy, labels and callbacks. */
22
+ export declare function ConfiguratorActionButton({ text, icon, explanation, checked, ...props }: Omit<JSX.IntrinsicElements['button'], 'children'> & {
23
+ text: string;
24
+ icon?: ComponentChildren;
25
+ explanation?: string;
26
+ checked?: boolean;
27
+ }): h.JSX.Element;
28
+ export declare function ConfiguratorActionIcon({ svg }: {
29
+ svg: string;
30
+ }): h.JSX.Element;
31
+ export declare function ConfiguratorZoneActions({ add, clear, children, }: {
32
+ add: ComponentProps<typeof ConfiguratorActionTrigger>;
33
+ clear?: ComponentProps<typeof ConfiguratorRemoveButton>;
34
+ children?: ComponentChildren;
35
+ }): h.JSX.Element;
36
+ export declare function ConfiguratorFilterStatus({ label }: {
37
+ label: string;
38
+ }): h.JSX.Element;
39
+ export declare function ConfiguratorFieldCaption({ children, annotation, }: {
40
+ children: ComponentChildren;
41
+ annotation?: string;
42
+ }): h.JSX.Element;
43
+ export declare function ConfiguratorHint({ children, }: {
44
+ children: ComponentChildren;
45
+ }): h.JSX.Element;
46
+ export declare function ConfiguratorFieldSearch(props: ComponentProps<typeof SearchInput>): h.JSX.Element;
47
+ export declare function ConfiguratorFieldPicker({ children, emptyText, }: {
48
+ children?: ComponentChildren;
49
+ emptyText?: string;
50
+ }): h.JSX.Element;
51
+ export declare function ConfiguratorActionGroup({ section, children, }: {
52
+ section: 'settings' | 'layout' | 'removal';
53
+ children: ComponentChildren;
54
+ }): h.JSX.Element | null;
55
+ export declare function ConfiguratorActionPanel({ title, accessibleLabel, header, panelRef, onKeyDown, children, ...popup }: Omit<ComponentProps<typeof DropdownPopup>, 'children' | 'popupClassName' | 'topLayer' | 'closeOnClickOutside'> & {
56
+ title: string;
57
+ accessibleLabel?: string;
58
+ header?: ComponentChildren;
59
+ panelRef?: Ref<HTMLDivElement>;
60
+ onKeyDown?: JSX.HTMLAttributes<HTMLDivElement>['onKeyDown'];
61
+ children: ComponentChildren;
62
+ }): h.JSX.Element;
63
+ /** Field identity shared by grid and report authoring controls. */
64
+ export declare function ConfiguratorFieldTypeIcon({ field, }: {
65
+ field?: import('./configurator-field-icon').ConfiguratorFieldMetadata;
66
+ }): h.JSX.Element;
67
+ export {};
@@ -0,0 +1 @@
1
+ export { t as CONFIGURATOR_AREA_ICONS, n as ConfiguratorActionButton, r as ConfiguratorActionGroup, i as ConfiguratorActionIcon, a as ConfiguratorActionPanel, o as ConfiguratorActionTrigger, s as ConfiguratorFieldCaption, c as ConfiguratorFieldPicker, l as ConfiguratorFieldSearch, u as ConfiguratorFieldTypeIcon, d as ConfiguratorFilterStatus, f as ConfiguratorHint, p as ConfiguratorRemoveButton, m as ConfiguratorZoneActions, h as renderConfiguratorActionTrigger } from "./_chunks/configurator-actions-DnStE6Yl.js";
@@ -0,0 +1,14 @@
1
+ import { h } from './_vendor/preact/src/index';
2
+ export interface AggregationListLabels {
3
+ measureAggregation: string;
4
+ aggregationNames: Record<string, string>;
5
+ measureCurrentUnavailable: (operation: string) => string;
6
+ }
7
+ /** Arrow keys explore choices; Enter/Space commit through the existing configuration owner. */
8
+ export declare function ConfiguratorAggregationList({ value, aggregators, i18n, disabled, onChange, }: {
9
+ value: string;
10
+ aggregators: string[];
11
+ i18n: AggregationListLabels;
12
+ disabled?: boolean;
13
+ onChange: (value: string, origin: HTMLButtonElement) => void;
14
+ }): h.JSX.Element;
@@ -0,0 +1,63 @@
1
+ import { i as e } from "./_chunks/hooks.module-CG3gN83z.js";
2
+ import { t } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
3
+ import { t as n } from "./_chunks/native-control-B_fVA5bL.js";
4
+ import { t as r } from "./_chunks/selection-list-tooltips-C5oMJe26.js";
5
+ import "./_chunks/check-BwI7iCAm.js";
6
+ import { t as i } from "./_chunks/calculator-CDWOuAcp.js";
7
+ //#region src/configurator-aggregation-list.tsx
8
+ function a({ value: a, aggregators: o, i18n: s, disabled: c, onChange: l }) {
9
+ let u = r("[role=\"menuitemradio\"]"), d = o.includes(a) ? o : [a, ...o], [f, p] = e(), m = f && o.includes(f) ? f : o.includes(a) ? a : o[0];
10
+ return /* @__PURE__ */ t("section", {
11
+ className: "pivot-aggregation-menu",
12
+ children: [/* @__PURE__ */ t("div", {
13
+ className: "pivot-aggregation-heading",
14
+ children: s.measureAggregation
15
+ }), /* @__PURE__ */ t("div", {
16
+ ref: u,
17
+ role: "menu",
18
+ "aria-label": s.measureAggregation,
19
+ children: d.map((e) => /* @__PURE__ */ t(n, {
20
+ type: "button",
21
+ role: "menuitemradio",
22
+ className: "rv-btn pivot-aggregation-option",
23
+ "data-value": e,
24
+ "aria-checked": e === a,
25
+ disabled: c || !o.includes(e),
26
+ tabIndex: !c && e === m ? 0 : -1,
27
+ onFocus: () => p(e),
28
+ onKeyDown: (e) => {
29
+ if (![
30
+ "ArrowUp",
31
+ "ArrowDown",
32
+ "ArrowLeft",
33
+ "ArrowRight",
34
+ "Home",
35
+ "End"
36
+ ].includes(e.key)) return;
37
+ e.preventDefault(), e.stopPropagation();
38
+ let t = [...e.currentTarget.parentElement.querySelectorAll("button:not(:disabled)")], n = t.indexOf(e.currentTarget);
39
+ t[e.key === "Home" ? 0 : e.key === "End" ? t.length - 1 : (n + (e.key === "ArrowUp" || e.key === "ArrowLeft" ? -1 : 1) + t.length) % t.length]?.focus();
40
+ },
41
+ onClick: (t) => l(e, t.currentTarget),
42
+ children: [
43
+ /* @__PURE__ */ t("span", {
44
+ className: "pivot-field-action-symbol",
45
+ "aria-hidden": "true",
46
+ dangerouslySetInnerHTML: { __html: i }
47
+ }),
48
+ /* @__PURE__ */ t("span", {
49
+ className: "pivot-aggregation-name",
50
+ children: o.includes(e) ? s.aggregationNames[e] ?? e : s.measureCurrentUnavailable(e)
51
+ }),
52
+ e === a && /* @__PURE__ */ t("span", {
53
+ className: "pivot-aggregation-check",
54
+ "aria-hidden": "true",
55
+ dangerouslySetInnerHTML: { __html: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M434.8 70.1c14.3 10.4 17.5 30.4 7.1 44.7l-256 352c-5.5 7.6-14 12.3-23.4 13.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l101.5 101.5 234-321.7c10.4-14.3 30.4-17.5 44.7-7.1z\"/></svg>" }
56
+ })
57
+ ]
58
+ }, e))
59
+ })]
60
+ });
61
+ }
62
+ //#endregion
63
+ export { a as ConfiguratorAggregationList };
@@ -0,0 +1,39 @@
1
+ import { h, JSX, ComponentChildren } from './_vendor/preact/src/index';
2
+ export interface ConfiguratorDropZoneProps<Prop extends string | number, Field extends {
3
+ prop: Prop;
4
+ name?: string;
5
+ }, Area extends string> {
6
+ label?: string;
7
+ id?: string;
8
+ footer?: ComponentChildren;
9
+ removeLabel?: (index: number, prop: Prop) => string;
10
+ title: string | JSX.Element;
11
+ headerActions?: JSX.Element | null;
12
+ renderActions?: (index: number, prop: Prop) => JSX.Element | null;
13
+ allowFieldRemoving?: boolean;
14
+ panel: Area;
15
+ items: Prop[];
16
+ /** Optional stable identities for repeated measure instances; other zones use their field identities. */
17
+ itemKeys?: readonly (string | number)[];
18
+ dimensions: ReadonlyMap<Prop, Field>;
19
+ placeholder?: string;
20
+ i18n: {
21
+ dragHere: string;
22
+ remove: string;
23
+ };
24
+ onRemove: (index: number) => void;
25
+ onDrop: (target: Area, index?: number, event?: DragEvent) => void;
26
+ canDrop?: (event: DragEvent) => boolean;
27
+ onDragOver: (e: Event) => void;
28
+ onDragEnter: (e: Event) => void;
29
+ onItemDragStart: (index: number, prop: Prop, event?: DragEvent) => void;
30
+ onItemDragEnd: () => void;
31
+ renderItem?: (index: number, item?: Field) => ComponentChildren;
32
+ allowFieldDragging?: boolean;
33
+ dragActive?: boolean;
34
+ renderIcon?: (field?: Field) => ComponentChildren;
35
+ }
36
+ export declare function ConfiguratorDropZone<Prop extends string | number, Field extends {
37
+ prop: Prop;
38
+ name?: string;
39
+ }, Area extends string>({ title, label, id, footer, removeLabel, headerActions, renderActions, allowFieldRemoving, panel, items, itemKeys, dimensions, placeholder, i18n, renderItem, onRemove, onDrop, onDragOver, canDrop, onDragEnter, onItemDragStart, onItemDragEnd, allowFieldDragging, dragActive, renderIcon, }: ConfiguratorDropZoneProps<Prop, Field, Area>): h.JSX.Element;
@@ -0,0 +1,66 @@
1
+ import { i as e } from "./_chunks/preact.module-BBM36DnO.js";
2
+ import { t } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
3
+ import { a as n, f as r, o as i, p as a, v as o } from "./_chunks/field-configurator-D5dZRhDe.js";
4
+ import { useFieldDropTarget as s } from "./field-reorder.hook.js";
5
+ //#region src/configurator-drop-zone.tsx
6
+ function c({ title: c, label: l, id: u, footer: d, removeLabel: f, headerActions: p, renderActions: m, allowFieldRemoving: h = !0, panel: g, items: _, itemKeys: v, dimensions: y, placeholder: b, i18n: x, renderItem: S, onRemove: C, onDrop: w, onDragOver: T, canDrop: E = () => !0, onDragEnter: D, onItemDragStart: O, onItemDragEnd: k, allowFieldDragging: A = !0, dragActive: j, renderIcon: M }) {
7
+ let N = _.length === 0, P = s(_.length, {
8
+ enabled: A,
9
+ active: j,
10
+ canDrop: E,
11
+ onDragOver: T,
12
+ onDrop: (e, t) => w(g, e, t)
13
+ });
14
+ return /* @__PURE__ */ t(i, {
15
+ ...P.list,
16
+ id: u,
17
+ tabIndex: u ? -1 : void 0,
18
+ className: "pivot-layout-zone",
19
+ "aria-label": l,
20
+ "data-pivot-area": g,
21
+ heading: c,
22
+ headingClassName: "zone-title",
23
+ actions: p,
24
+ children: [/* @__PURE__ */ t(r, {
25
+ empty: N,
26
+ placeholder: b ?? x.dragHere,
27
+ className: `min-h-[3rem] overflow-auto grow panel-card ${N ? "empty" : ""} ${P.isOver ? "drag-over" : ""}`,
28
+ ...P.list,
29
+ onDragEnter: D,
30
+ children: _.map((r, i) => {
31
+ let s = y.get(r), l = P.position(i);
32
+ return /* @__PURE__ */ t(o, {
33
+ ...P.row(i),
34
+ draggable: A,
35
+ onDragStart: (e) => {
36
+ A ? (e.dataTransfer?.setData("text/plain", String(r)), e.dataTransfer && (e.dataTransfer.effectAllowed = "move"), P.start(i), O(i, r, e)) : e.preventDefault();
37
+ },
38
+ onDragEnd: () => {
39
+ P.clear(), k();
40
+ },
41
+ indicator: l && /* @__PURE__ */ t(n, {
42
+ position: l,
43
+ index: P.boundary ?? void 0,
44
+ className: `pivot-zone-drop-divider ${l}`
45
+ }),
46
+ contentClassName: "pivot-dimension-cell",
47
+ icon: M?.(s),
48
+ label: /* @__PURE__ */ t("span", {
49
+ className: "pivot-zone-field-caption flex grow",
50
+ children: S?.(i, s) ?? s?.name ?? r
51
+ }),
52
+ actions: /* @__PURE__ */ t(e, { children: [m?.(i, r), h && /* @__PURE__ */ t(a, {
53
+ className: "pivot-remove-button",
54
+ onClick: () => C(i),
55
+ locale: {
56
+ title: f?.(i, r) ?? x.remove,
57
+ ariaLabel: f?.(i, r) ?? x.remove
58
+ }
59
+ })] })
60
+ }, v?.[i] ?? `${c}-${i}`);
61
+ })
62
+ }), d]
63
+ });
64
+ }
65
+ //#endregion
66
+ export { c as ConfiguratorDropZone };
@@ -0,0 +1,10 @@
1
+ export interface ConfiguratorFieldMetadata {
2
+ columnType?: string;
3
+ dataType?: 'string' | 'number' | 'date' | 'boolean';
4
+ }
5
+ /** Shared descriptive field identity; never infers or formats source values. */
6
+ export declare function resolveConfiguratorFieldIcon(dimension?: ConfiguratorFieldMetadata): {
7
+ kind: string;
8
+ svg: string;
9
+ label: string;
10
+ };
@@ -0,0 +1 @@
1
+ export { t as resolveConfiguratorFieldIcon } from "./_chunks/configurator-field-icon-CmcM_sPs.js";
@@ -0,0 +1,4 @@
1
+ /** Return focus only from this editor. Release a temporary tab stop on blur or disposal. */
2
+ export declare function focusConfiguratorOrigin(origin: HTMLElement, root: HTMLElement | null): () => void;
3
+ /** A single mounted owner's lease; synchronous focus callbacks cannot revive a disposed lease. */
4
+ export declare function useConfiguratorOriginFocus(): (origin: HTMLElement, root: HTMLElement | null) => void;
@@ -0,0 +1,39 @@
1
+ import { r as e, t } from "./_chunks/hooks.module-CG3gN83z.js";
2
+ //#region src/configurator-focus.ts
3
+ var n = () => {};
4
+ function r(e, t) {
5
+ if (!e.isConnected || !t?.isConnected || e.ownerDocument !== t.ownerDocument) return !1;
6
+ let n = e.ownerDocument.activeElement;
7
+ return !n || n === e.ownerDocument.body || n === e || t.contains(n);
8
+ }
9
+ function i(e, t) {
10
+ if (!r(e, t)) return n;
11
+ let i = e.ownerDocument, a = i.activeElement;
12
+ if (e.focus({ preventScroll: !0 }), i.activeElement === e || e.hasAttribute("tabindex") || !e.isConnected || !t.isConnected || i.activeElement !== a && i.activeElement !== i.body) return n;
13
+ let o = !0, s = () => {
14
+ o && (o = !1, e.removeEventListener("blur", s), e.getAttribute("tabindex") === "-1" && e.removeAttribute("tabindex"));
15
+ };
16
+ e.setAttribute("tabindex", "-1"), e.addEventListener("blur", s);
17
+ try {
18
+ e.focus({ preventScroll: !0 }), (i.activeElement !== e || !e.isConnected || !t.isConnected) && s();
19
+ } catch (e) {
20
+ throw s(), e;
21
+ }
22
+ return s;
23
+ }
24
+ function a() {
25
+ let a = t(n), o = t(0), s = t(!0);
26
+ return e(() => (s.current = !0, () => {
27
+ s.current = !1, o.current++;
28
+ let e = a.current;
29
+ a.current = n, e();
30
+ }), []), (e, t) => {
31
+ if (!s.current || !r(e, t)) return;
32
+ let c = ++o.current, l = a.current;
33
+ if (a.current = n, l(), !s.current || c !== o.current) return;
34
+ let u = i(e, t);
35
+ !s.current || c !== o.current ? u() : a.current = u;
36
+ };
37
+ }
38
+ //#endregion
39
+ export { i as focusConfiguratorOrigin, a as useConfiguratorOriginFocus };
@@ -0,0 +1,42 @@
1
+ import { h, ComponentChildren } from './_vendor/preact/src/index';
2
+ /** Application-owned content. Return cleanup when mounting another framework or UI. */
3
+ export interface ConfiguratorSection {
4
+ id: string;
5
+ label: string;
6
+ hidden?: boolean;
7
+ disabled?: boolean;
8
+ render?: () => ComponentChildren;
9
+ mount?: (host: HTMLElement) => void | (() => void);
10
+ }
11
+ export interface ConfiguratorSectionsConfig {
12
+ /** Custom tabs appended after the built-in tabs. IDs must be unique and cannot replace built-ins. */
13
+ sections?: readonly ConfiguratorSection[];
14
+ initialSection?: string;
15
+ onSectionChange?: (id: string) => void;
16
+ }
17
+ /** Selection follows current availability, without discarding mounted editor drafts. */
18
+ export declare function useConfiguratorSections(config: ConfiguratorSectionsConfig, builtins: readonly ConfiguratorSection[], disabled?: boolean): {
19
+ sections: ConfiguratorSection[];
20
+ custom: ConfiguratorSection[];
21
+ active: string | undefined;
22
+ select: (id: string) => void;
23
+ };
24
+ /** Shared switch spacing and opaque sticky backdrop for every configurator. */
25
+ export declare function ConfiguratorHeader({ children, className, }: {
26
+ children?: ComponentChildren;
27
+ className?: string;
28
+ }): h.JSX.Element;
29
+ export declare function ConfiguratorSectionTabs({ sections, active, onChange, prefix, label, className, }: {
30
+ sections: readonly ConfiguratorSection[];
31
+ active?: string;
32
+ onChange: (id: string) => void;
33
+ prefix: string;
34
+ label: string;
35
+ className?: string;
36
+ }): h.JSX.Element;
37
+ /** Inactive sections retain chat transcripts and host drafts until removed. */
38
+ export declare function ConfiguratorSectionPanels({ sections, active, prefix, }: {
39
+ sections: readonly ConfiguratorSection[];
40
+ active?: string;
41
+ prefix: string;
42
+ }): h.JSX.Element;
@@ -0,0 +1,71 @@
1
+ import { i as e } from "./_chunks/preact.module-BBM36DnO.js";
2
+ import { i as t, r as n, t as r } from "./_chunks/hooks.module-CG3gN83z.js";
3
+ import { t as i } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
4
+ import { SegmentedSwitch as a } from "./segmented-switch/index.js";
5
+ //#region src/configurator-sections.tsx
6
+ function o(e, n, r = !1) {
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
+ ...e,
9
+ disabled: !0
10
+ } : e), [s, c] = t(e.initialSection ?? n[0]?.id), l = o.find((e) => e.id === s && (r || !e.disabled))?.id ?? o.find((e) => !e.disabled)?.id ?? (r ? o[0]?.id : void 0);
11
+ return {
12
+ sections: o,
13
+ custom: o.filter((e) => !n.some((t) => t.id === e.id)),
14
+ active: l,
15
+ select: (t) => {
16
+ t !== l && o.some((e) => e.id === t && !e.disabled) && (c(t), e.onSectionChange?.(t));
17
+ }
18
+ };
19
+ }
20
+ function s({ children: e, className: t = "" }) {
21
+ return /* @__PURE__ */ i("header", {
22
+ className: `rv-configurator-header ${t}`,
23
+ children: e
24
+ });
25
+ }
26
+ function c({ sections: e, active: t, onChange: n, prefix: r, label: o, className: s = "" }) {
27
+ return /* @__PURE__ */ i(a, {
28
+ value: t ?? "",
29
+ ariaLabel: o,
30
+ role: "tablist",
31
+ className: `rv-configurator-section-tabs ${s}`,
32
+ options: e.map((e) => ({
33
+ value: e.id,
34
+ label: e.label,
35
+ disabled: e.disabled,
36
+ id: `${r}-tab-${e.id}`,
37
+ ariaControls: `${r}-panel-${e.id}`
38
+ })),
39
+ onChange: n
40
+ });
41
+ }
42
+ function l({ section: e }) {
43
+ let t = r(null);
44
+ return n(() => {
45
+ if (t.current && e.mount) return e.mount(t.current);
46
+ }, [e.mount]), /* @__PURE__ */ i("div", {
47
+ ref: t,
48
+ class: "rv-configurator-section-content",
49
+ children: e.render?.()
50
+ });
51
+ }
52
+ function u({ sections: t, active: n, prefix: r }) {
53
+ return /* @__PURE__ */ i(e, { children: t.map((e) => /* @__PURE__ */ i(d, {
54
+ section: e,
55
+ active: n === e.id,
56
+ prefix: r
57
+ }, e.id)) });
58
+ }
59
+ function d({ section: e, active: t, prefix: n }) {
60
+ let a = r(!1);
61
+ return t && (a.current = !0), /* @__PURE__ */ i("section", {
62
+ hidden: !t,
63
+ role: "tabpanel",
64
+ id: `${n}-panel-${e.id}`,
65
+ "aria-labelledby": `${n}-tab-${e.id}`,
66
+ class: "rv-configurator-custom-section",
67
+ children: a.current && /* @__PURE__ */ i(l, { section: e })
68
+ });
69
+ }
70
+ //#endregion
71
+ export { s as ConfiguratorHeader, u as ConfiguratorSectionPanels, c as ConfiguratorSectionTabs, o as useConfiguratorSections };