@revolist/ui 4.0.3-rc → 4.0.3

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 (314) hide show
  1. package/MIGRATION.md +36 -0
  2. package/OWNERSHIP.md +32 -32
  3. package/README.md +136 -78
  4. package/_button.scss +6 -2
  5. package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
  6. package/_chunks/calculator-CDWOuAcp.js +4 -0
  7. package/_chunks/{calendar-xpZ0v3xf.js → calendar-CgXQgkga.js} +19 -19
  8. package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
  9. package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
  10. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  11. package/_chunks/choice-chips-SkllS5Kl.js +126 -0
  12. package/_chunks/{color-palette-D8vyPfld.js → color-palette-DMJUChWC.js} +20 -22
  13. package/_chunks/color-picker-BpCTuIdm.js +143 -0
  14. package/_chunks/{component-C_T2VN5u.js → component-CfeHXgIw.js} +279 -264
  15. package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-BKd7U8OW.js} +0 -8
  16. package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
  17. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  18. package/_chunks/{control-AHKXD5Eu.js → control-Dcrjsunl.js} +42 -17
  19. package/_chunks/controls-B_6NJarZ.js +650 -0
  20. package/_chunks/{date-control-DrVFX13g.js → date-control-C4h4m75W.js} +1 -1
  21. package/_chunks/{date-time-qIhp5vaX.js → date-time-CTOSbzb0.js} +317 -278
  22. package/_chunks/dialog.parts-3w5FR06n.js +131 -0
  23. package/_chunks/{duration-CL68Em0o.js → duration-Bf2OS1V5.js} +5 -5
  24. package/_chunks/editor-popup-ByU7qiub.js +82 -0
  25. package/_chunks/field-configurator-D5dZRhDe.js +288 -0
  26. package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-Bk4O_T7T.js} +1 -1
  27. package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
  28. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  29. package/_chunks/minus-BOAR3A1C.js +4 -0
  30. package/_chunks/mount-BRdcG60g.js +267 -0
  31. package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
  32. package/_chunks/native-control-B_fVA5bL.js +649 -0
  33. package/_chunks/{number-input-BKwA5FnM.js → number-input-CmM6_2vR.js} +7 -7
  34. package/_chunks/{picker-h1P5RUgp.js → picker-DTqET-2W.js} +2 -2
  35. package/_chunks/plus-CbGRkIGl.js +4 -0
  36. package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
  37. package/_chunks/{popup-CT2uD3go.js → popup-C35Isk7p.js} +115 -104
  38. package/_chunks/{rating-choice-DZgmaic0.js → rating-choice-C-6wcb9U.js} +1 -1
  39. package/_chunks/{reorder-list-CSlqAGHw.js → reorder-list-DIl1gkV6.js} +1 -1
  40. package/_chunks/request-trail-DrhdpWiH.js +762 -0
  41. package/_chunks/rich-text-BnilBbhU.js +842 -0
  42. package/_chunks/rotate-left-BF6G883o.js +4 -0
  43. package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
  44. package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
  45. package/_chunks/tooltip-D4xkio5G.js +54 -0
  46. package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
  47. package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
  48. package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
  49. package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
  50. package/_dialog.scss +57 -22
  51. package/_form.scss +71 -21
  52. package/_legend.scss +25 -7
  53. package/_shared/data-query/index.d.ts +2 -2
  54. package/_shared/data-query/load-options.d.ts +2 -2
  55. package/_variables.scss +34 -32
  56. package/_view-switcher.scss +6 -0
  57. package/activity-message.d.ts +1 -1
  58. package/ai/_chat.scss +35 -3
  59. package/ai/_style.scss +76 -16
  60. package/ai/chat.d.ts +3 -1
  61. package/ai/components.d.ts +16 -3
  62. package/ai/index.d.ts +1 -0
  63. package/ai/index.js +3 -3
  64. package/ai/mount.d.ts +30 -6
  65. package/ai/request-trail.d.ts +9 -3
  66. package/ai/results/_style.scss +83 -0
  67. package/ai/results/index.d.ts +11 -0
  68. package/ai/results/metrics.d.ts +5 -0
  69. package/ai/results/table.d.ts +5 -0
  70. package/ai/results/text.d.ts +5 -0
  71. package/ai/results/types.d.ts +29 -0
  72. package/ai/transcript.d.ts +2 -0
  73. package/ai/translations.d.ts +1 -1
  74. package/angular/angular.d.ts +1 -1
  75. package/angular/angular.js +13 -7
  76. package/assignee/assignee.scss +28 -6
  77. package/assignee/index.js +2 -2
  78. package/avatar/avatar.style.scss +23 -6
  79. package/avatar/index.d.ts +25 -2
  80. package/avatar/index.js +33 -32
  81. package/badge.d.ts +1 -1
  82. package/badge.view.d.ts +8 -0
  83. package/brush-range/_brush-range.scss +55 -49
  84. package/brush-range/component.d.ts +1 -3
  85. package/brush-range/component.js +27 -27
  86. package/buttons/delete-button.style.scss +6 -2
  87. package/buttons/remove-button.d.ts +1 -1
  88. package/buttons/remove-button.style.scss +1 -1
  89. package/buttons/svg-button.d.ts +1 -1
  90. package/buttons/svg-button.js +16 -16
  91. package/calendar/_calendar.scss +21 -25
  92. package/calendar/calendar.js +1 -1
  93. package/calendar/header.js +1 -2
  94. package/calendar/index.js +2 -2
  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/progress-line-value.renderer.style.scss +4 -2
  100. package/cell-visuals/progress-line.style.scss +1 -4
  101. package/cell-visuals/sparkline.style.scss +2 -1
  102. package/cell-visuals/timeline.style.css +4 -2
  103. package/checkbox/checkbox.scss +6 -24
  104. package/choice-chips/index.d.ts +3 -1
  105. package/choice-chips/index.js +1 -1
  106. package/color-palette/color-palette.js +1 -1
  107. package/color-palette/color-palette.style.scss +88 -25
  108. package/color-palette/color-picker.js +2 -2
  109. package/color-palette/color-picker.style.scss +23 -10
  110. package/color-palette/common-palettes.d.ts +1 -1
  111. package/color-palette/common-palettes.js +1 -1
  112. package/color-palette/native.d.ts +15 -2
  113. package/component-catalog.d.ts +9 -7
  114. package/configurator-actions.d.ts +67 -0
  115. package/configurator-actions.js +1 -0
  116. package/configurator-aggregation-list.d.ts +14 -0
  117. package/configurator-aggregation-list.js +63 -0
  118. package/configurator-drop-zone.d.ts +39 -0
  119. package/configurator-drop-zone.js +66 -0
  120. package/configurator-field-icon.d.ts +10 -0
  121. package/configurator-field-icon.js +1 -0
  122. package/configurator-focus.d.ts +4 -0
  123. package/configurator-focus.js +39 -0
  124. package/configurator-sections.d.ts +42 -0
  125. package/configurator-sections.js +71 -0
  126. package/control-presentation.d.ts +8 -2
  127. package/control-presentation.js +25 -20
  128. package/controls.d.ts +12 -2
  129. package/controls.js +4 -3
  130. package/core/editor-popup-position.d.ts +6 -2
  131. package/core/editor-popup.d.ts +4 -0
  132. package/core/editor-popup.js +1 -1
  133. package/core/popover-controller.d.ts +35 -0
  134. package/core/popup-ownership.d.ts +2 -0
  135. package/core/selection-list-tooltips.d.ts +2 -0
  136. package/core/title-tooltip.d.ts +2 -0
  137. package/core/tooltip-session.d.ts +29 -0
  138. package/core/tooltip-surface.d.ts +13 -0
  139. package/core/tooltip-text.d.ts +6 -0
  140. package/core/tooltip.d.ts +35 -0
  141. package/core/top-layer-popup.d.ts +4 -0
  142. package/core/top-layer-popup.js +1 -23
  143. package/date-time/attach.d.ts +1 -1
  144. package/date-time/date-control.d.ts +1 -1
  145. package/date-time/field.d.ts +3 -2
  146. package/date-time/index.js +1 -1
  147. package/date-time/style.scss +239 -36
  148. package/date-time/time-selection.d.ts +3 -1
  149. package/date-time/types.d.ts +5 -1
  150. package/dialog/dialog-action-footer.d.ts +17 -2
  151. package/dialog/dialog.dom.d.ts +15 -2
  152. package/dialog/dialog.dom.js +9 -9
  153. package/dialog/dialog.parts.d.ts +1 -1
  154. package/dialog/dialog.parts.js +1 -1
  155. package/distribution-chart/_distribution-chart.scss +113 -77
  156. package/distribution-chart/area-chart.js +1 -1
  157. package/distribution-chart/bar-chart.js +1 -1
  158. package/distribution-chart/chart-frame.d.ts +1 -1
  159. package/distribution-chart/index.d.ts +1 -1
  160. package/distribution-chart/line-chart.js +1 -1
  161. package/dropdown/content.js +1 -1
  162. package/dropdown/control.js +1 -1
  163. package/dropdown/dropdown.types.d.ts +1 -1
  164. package/dropdown/editor-dropdown.style.scss +19 -9
  165. package/dropdown/index.js +2 -2
  166. package/dropdown/lookup-field.d.ts +5 -0
  167. package/dropdown/lookup-field.js +2 -1
  168. package/dropdown/popup.d.ts +2 -2
  169. package/dropdown/popup.js +1 -1
  170. package/duration/index.js +1 -1
  171. package/editor-actions.js +1 -1
  172. package/editor-layout/index.d.ts +4 -4
  173. package/editor-layout/index.js +39 -34
  174. package/editor-layout/style.scss +82 -18
  175. package/field-configurator.d.ts +39 -1
  176. package/field-configurator.js +4 -170
  177. package/field-expansion.d.ts +9 -0
  178. package/filter/filters/slider/_single-slider.scss +57 -38
  179. package/filter/filters/slider/_slider.scss +41 -33
  180. package/filter/filters/slider/control.js +2 -0
  181. package/filter/filters/slider/runtime.js +49 -22
  182. package/filter/filters/slider/single.js +1 -1
  183. package/filter-badge.js +1 -1
  184. package/filter-controls.d.ts +0 -1
  185. package/filter-controls.js +5 -6
  186. package/form-controls/index.d.ts +10 -2
  187. package/form-controls/index.js +7 -7
  188. package/form-controls/presentation.d.ts +1 -1
  189. package/form-controls/presentation.js +12 -12
  190. package/formatting/index.d.ts +1 -1
  191. package/formatting/index.js +22 -21
  192. package/formatting/styles.scss +14 -57
  193. package/framework.js +227 -224
  194. package/history-controls.js +27 -1
  195. package/icon-toolbar.d.ts +62 -0
  196. package/icon-toolbar.js +1 -0
  197. package/icons/icon.d.ts +1 -1
  198. package/legend.d.ts +1 -1
  199. package/masked-input/index.js +1 -1
  200. package/native-control.d.ts +1 -2
  201. package/native-control.js +1 -1
  202. package/native-controls.d.ts +54 -2
  203. package/native-styles.css +1 -1
  204. package/native-styles.scss +6 -2
  205. package/native.d.ts +3 -3
  206. package/native.js +46 -43
  207. package/number-input/index.d.ts +1 -1
  208. package/number-input/index.js +1 -1
  209. package/package.json +71 -2
  210. package/pagination.js +11 -11
  211. package/pdf-viewer/header.d.ts +1 -1
  212. package/pdf-viewer/index.d.ts +2 -2
  213. package/pdf-viewer/index.js +1 -1
  214. package/pdf-viewer/search-bar.d.ts +1 -1
  215. package/pdf-viewer/status.d.ts +1 -1
  216. package/pdf-viewer/style.scss +203 -42
  217. package/pickers.d.ts +5 -1
  218. package/preact-mount.js +1 -1
  219. package/preact.d.ts +13 -10
  220. package/preact.js +109 -64
  221. package/progress/_bar.scss +9 -3
  222. package/progress/_circular.scss +2 -1
  223. package/rating-choice.js +1 -1
  224. package/react-adapter.d.ts +4 -2
  225. package/react-control.d.ts +2 -0
  226. package/react-control.js +2 -2
  227. package/react.d.ts +7 -8
  228. package/react.js +67 -66
  229. package/reorder-list.d.ts +1 -1
  230. package/reorder-list.js +1 -1
  231. package/reorder-list.scss +59 -17
  232. package/resource-picker/resource-picker-popup.js +1 -1
  233. package/resource-picker/resource-picker.js +74 -72
  234. package/resource-picker/resource-picker.scss +62 -34
  235. package/rich-text/engine.d.ts +1 -0
  236. package/rich-text/format-html.d.ts +2 -0
  237. package/rich-text/index.d.ts +4 -0
  238. package/rich-text/index.js +1 -1
  239. package/rich-text/model.d.ts +2 -0
  240. package/rich-text/style.scss +293 -44
  241. package/rich-text/syntax.d.ts +5 -0
  242. package/rich-text/toolbar.d.ts +1 -1
  243. package/rich-text/translations.d.ts +2 -0
  244. package/search-input/index.js +1 -1
  245. package/search-input/native.d.ts +21 -2
  246. package/select.d.ts +3 -1
  247. package/select.js +1 -1
  248. package/selection-list.d.ts +1 -0
  249. package/selection-list.js +3 -1
  250. package/status-feedback/exit-snapshot.js +4 -4
  251. package/status-feedback/popover.js +4 -4
  252. package/status-feedback/status-feedback.scss +124 -35
  253. package/styles/_activity-message.scss +24 -7
  254. package/styles/_alert.scss +78 -17
  255. package/styles/_cell-editor-frame.scss +11 -0
  256. package/styles/_compositions.scss +400 -80
  257. package/styles/_control.scss +30 -8
  258. package/styles/_disclosure.scss +15 -5
  259. package/styles/_editor-counter.scss +16 -6
  260. package/styles/_editor-slider.scss +8 -4
  261. package/styles/_field-configurator.scss +321 -23
  262. package/styles/_fields-grid.scss +49 -0
  263. package/styles/_filter-controls.scss +10 -2
  264. package/styles/_icon-action.scss +48 -15
  265. package/styles/_loading.scss +12 -3
  266. package/styles/_motion.scss +32 -9
  267. package/styles/_palette.scss +0 -24
  268. package/styles/_primitives.scss +369 -110
  269. package/styles/_theme.scss +130 -86
  270. package/styles/_thresholds.scss +28 -25
  271. package/styles/_time-grid.scss +8 -3
  272. package/styles/_tokens.scss +6 -1
  273. package/styles/configurator-actions.scss +241 -0
  274. package/styles/pagination.css +213 -0
  275. package/styles/{legacy-rating.css → rating.css} +8 -3
  276. package/styles.css +1 -1
  277. package/styles.scss +3 -5
  278. package/surfaces.d.ts +38 -2
  279. package/surfaces.js +37 -134
  280. package/svelte/UiComponent.svelte +44 -11
  281. package/svelte.d.ts +1 -1
  282. package/svelte.js +3 -3
  283. package/switch/index.js +15 -14
  284. package/time-grid.d.ts +0 -1
  285. package/time-grid.js +38 -37
  286. package/timeline-track/_style.scss +96 -24
  287. package/timeline-track/index.js +2 -2
  288. package/ui.css +1 -1
  289. package/view-switcher.d.ts +23 -0
  290. package/vue.d.ts +29 -32
  291. package/vue.js +116 -121
  292. package/_chunks/chart-frame-Cmc7xU1i.js +0 -130
  293. package/_chunks/choice-chips-CHQTUdLs.js +0 -110
  294. package/_chunks/color-picker-CudqPYZo.js +0 -138
  295. package/_chunks/control-tooltip-uscKfAnV.js +0 -100
  296. package/_chunks/controls-DsNi8V8I.js +0 -630
  297. package/_chunks/dialog.parts-CKGkC5zP.js +0 -134
  298. package/_chunks/editor-popup-WDdtVDNA.js +0 -81
  299. package/_chunks/history-controls-B3u3INEK.js +0 -27
  300. package/_chunks/mount-DQ1cpppK.js +0 -257
  301. package/_chunks/native-control-C_yok8_-.js +0 -605
  302. package/_chunks/request-trail-DSlFix6i.js +0 -618
  303. package/_chunks/rich-text-CH7gIqOS.js +0 -636
  304. package/avatar/index.view.d.ts +0 -25
  305. package/color-palette/native.view.d.ts +0 -15
  306. package/control-presentation.view.d.ts +0 -8
  307. package/dialog/dialog-action-footer.view.d.ts +0 -20
  308. package/dialog/dialog.dom.view.d.ts +0 -15
  309. package/form-controls/index.view.d.ts +0 -10
  310. package/formatting/control-tooltip.d.ts +0 -27
  311. package/native-controls.view.d.ts +0 -54
  312. package/search-input/native.view.d.ts +0 -21
  313. package/styles/legacy-pagination.css +0 -112
  314. package/surfaces.view.d.ts +0 -63
@@ -1,3 +1,4 @@
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';
@@ -20,16 +21,14 @@ export declare const uiComponents: {
20
21
  readonly AiSuggestions: typeof ui.AiSuggestions;
21
22
  readonly AiActionStatus: typeof ui.AiActionStatus;
22
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;
23
28
  readonly AiChangePreview: typeof ui.AiChangePreview;
24
29
  readonly AiAssistant: typeof ui.AiAssistant;
25
30
  readonly AiRequestTrail: typeof ui.AiRequestTrail;
26
- readonly Icon: typeof ui.SvgIcon;
27
- readonly RemovableChip: typeof ui.FilterChip;
28
- readonly Slider: typeof ui.SingleValueSlider;
29
- readonly RangeSlider: typeof ui.PreactRangeSlider;
30
- readonly ResourcePicker: typeof ui.SharedResourcePicker;
31
- readonly FeedbackPanel: typeof ui.StatusFeedbackPanel;
32
- 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" | "ref" | "class"> & {
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"> & {
33
32
  class?: import("./_vendor/preact/src/index").JSX.Signalish<string | undefined> | Record<string, boolean | undefined>;
34
33
  className?: import("./_vendor/preact/src/index").JSX.Signalish<string | undefined>;
35
34
  }> & {
@@ -102,6 +101,8 @@ export declare const uiComponents: {
102
101
  readonly FieldError: typeof ui.FieldError;
103
102
  readonly FormSection: typeof ui.FormSection;
104
103
  readonly Disclosure: typeof ui.Disclosure;
104
+ readonly CollapsibleSection: typeof ui.CollapsibleSection;
105
+ readonly LookupField: typeof LookupField;
105
106
  readonly Panel: typeof ui.Panel;
106
107
  readonly Toolbar: typeof ui.Toolbar;
107
108
  readonly ToolbarGroup: typeof ui.ToolbarGroup;
@@ -201,6 +202,7 @@ export declare const uiComponents: {
201
202
  readonly ReorderList: typeof ui.ReorderList;
202
203
  readonly ReorderHandle: typeof ui.ReorderHandle;
203
204
  readonly TimelineTrack: typeof ui.TimelineTrack;
205
+ readonly IconToolbar: typeof ui.IconToolbar;
204
206
  readonly ActivityMessage: typeof ui.ActivityMessage;
205
207
  readonly PdfViewer: typeof ui.PdfViewer;
206
208
  readonly PdfViewerToolbar: typeof ui.PdfViewerToolbar;
@@ -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 };
@@ -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,36 +1,41 @@
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 { controlAttributes as r, controlClassName as i } from "./control-attributes.js";
5
- //#region src/control-presentation.view.tsx
6
- function a(e, t, n, ...i) {
4
+ import { n as r } from "./_chunks/popover-controller-D-AvKQ7B.js";
5
+ import { controlAttributes as i, controlClassName as a } from "./control-attributes.js";
6
+ //#region src/control-presentation.tsx
7
+ function o(e, t, n, ...r) {
7
8
  let a = n ?? {};
8
9
  if (t === "button" && a.busy === !0) {
9
- let n = i.length ? i : [a.children];
10
- return e(t, r(t, a), e("span", {
10
+ let n = r.length ? r : [a.children];
11
+ return e(t, i(t, a), e("span", {
11
12
  class: "rv-button-spinner",
12
13
  "aria-hidden": "true"
13
14
  }), ...n);
14
15
  }
15
- return e(t, r(t, a), ...i);
16
+ return e(t, i(t, a), ...r);
16
17
  }
17
- function o(t, r, i = {}) {
18
- let o = a(e, r, i);
19
- return i.onChange && !(r === "button" && i.busy) && Object.assign(o.props, { onChange: i.onChange }), n(t, o);
18
+ function s(t, r, i = {}) {
19
+ let a = o(e, r, i);
20
+ return i.onChange && !(r === "button" && i.busy) && Object.assign(a.props, { onChange: i.onChange }), n(t, a);
20
21
  }
21
- var s = /* @__PURE__ */ new WeakMap();
22
- function c(e, t) {
23
- return s.set(e, t), e;
22
+ var c = /* @__PURE__ */ new WeakMap();
23
+ function l(e, t) {
24
+ return c.set(e, t), e;
24
25
  }
25
- function l(e) {
26
- return typeof e == "string" ? e : e && (typeof e == "function" || typeof e == "object") ? s.get(e) : void 0;
26
+ function u(e) {
27
+ return typeof e == "string" ? e : e && (typeof e == "function" || typeof e == "object") ? c.get(e) : void 0;
27
28
  }
28
- function u(e, r) {
29
- e.classList.add("rv-btn", "rv-btn-ghost", "rv-btn-icon"), e.setAttribute("aria-label", r), e.title = r, e.querySelector(".rv-control-tooltip")?.remove(), e.append(n(e.ownerDocument, /* @__PURE__ */ t("span", {
29
+ var d = /* @__PURE__ */ new WeakMap();
30
+ function f(e, i) {
31
+ e.classList.add("rv-btn", "rv-btn-ghost", "rv-btn-icon"), e.setAttribute("aria-label", i), d.get(e)?.(), e.removeAttribute("title"), e.querySelector(".rv-control-tooltip")?.remove();
32
+ let a = n(e.ownerDocument, /* @__PURE__ */ t("span", {
30
33
  class: "rv-control-tooltip",
31
- "aria-hidden": "true",
32
- children: r
33
- })));
34
+ role: "tooltip",
35
+ hidden: !0,
36
+ children: i
37
+ }));
38
+ e.append(a), d.set(e, new r().bind(e, i, { surface: a }));
34
39
  }
35
40
  //#endregion
36
- export { r as controlAttributes, i as controlClassName, o as createControl, u as decorateIconAction, l as nativeControlTag, c as registerControl, a as renderControl };
41
+ export { i as controlAttributes, a as controlClassName, s as createControl, f as decorateIconAction, u as nativeControlTag, l as registerControl, o as renderControl };
package/controls.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { BadgeOptions } from './badge';
2
1
  import { h, ComponentChildren, JSX } from './_vendor/preact/src/index';
3
2
  import { SegmentedSwitchProps, SegmentedSwitchValue } from './segmented-switch';
4
3
  import { EditorPane, EditorSplitLayout } from './editor-layout';
@@ -106,7 +105,7 @@ export declare function Panel({ children, className, label }: ShellProps): h.JSX
106
105
  export declare function Toolbar({ children, className, label }: ShellProps): h.JSX.Element;
107
106
  export declare function ToolbarGroup({ children, className, label }: ShellProps): h.JSX.Element;
108
107
  export declare function ToolbarSeparator(): h.JSX.Element;
109
- export declare function Badge({ children, className, variant, shape, }: ShellProps & BadgeOptions): h.JSX.Element;
108
+ export { Badge } from './badge.view';
110
109
  export declare function CountBadge({ count, label }: {
111
110
  count: number;
112
111
  label: string;
@@ -134,6 +133,17 @@ export declare function Submenu({ label, children }: ShellProps & {
134
133
  label: string;
135
134
  }): h.JSX.Element;
136
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;
137
147
  export type PaginationDirection = 'first' | 'previous' | 'next' | 'last';
138
148
  export type PaginationButtonOptions = Pick<ButtonProps, 'disabled' | 'variant' | 'className' | 'title'>;
139
149
  export interface PaginationProps {
package/controls.js CHANGED
@@ -1,3 +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, R as d, S as f, T as p, _ as m, a as h, b as g, c as _, d as v, f as y, g as b, h as x, i as S, j as C, k as w, l as T, m as E, n as D, o as O, p as k, r as A, s as j, t as M, u as N, v as P, w as F, x as I, y as L } from "./_chunks/controls-DsNi8V8I.js";
2
- import { EditorList as R, EditorListGroup as z, EditorListItem as B, EditorListItemContent as V, EditorPane as H, EditorSplitLayout as U } from "./editor-layout/index.js";
3
- export { d as Alert, M as Badge, D as Button, A as ButtonGroup, S as Chip, h as CircularProgress, O as CountBadge, j as DateInput, _ as DateTimeInput, T as Disclosure, N as EmptyState, v as FieldError, y as FieldHint, k as FormSection, E as IconButton, R as Listbox, z as ListboxGroup, B as ListboxOption, V as ListboxOptionContent, x as LoadingOverlay, b as Menu, m as MenuItem, P as MenuSeparator, L as NumberInput, g as NumberStepper, I as Pagination, H as Pane, f as Panel, t as RadioGroup, F as Rating, p as ResizeHandle, r as SegmentedControl, n as Spinner, U as SplitLayout, l as Submenu, w as TabPanel, e as Tabs, C as TextInput, s as Textarea, c as TimeInput, u as ToggleButton, i as Toolbar, a as ToolbarGroup, o as ToolbarSeparator };
1
+ import { t as e } from "./_chunks/selection-list-tooltips-C5oMJe26.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-B_6NJarZ.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,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-WDdtVDNA.js";
1
+ export { t as mountEditorPopup } from "../_chunks/editor-popup-ByU7qiub.js";