@revolist/ui 4.0.4-rc → 4.0.4

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 (401) hide show
  1. package/MIGRATION.md +36 -0
  2. package/OWNERSHIP.md +36 -36
  3. package/README.md +65 -392
  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-BQYQLu8Q.js} +23 -23
  8. package/_chunks/{cell-visuals-E-2oEKHg.js → cell-visuals-r6DOOhGh.js} +7 -7
  9. package/_chunks/chart-frame-GprenwEg.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-C5OxD0GV.js +126 -0
  13. package/_chunks/{color-palette-D8vyPfld.js → color-palette-7siNch__.js} +22 -24
  14. package/_chunks/color-picker-Cfc9eqZb.js +143 -0
  15. package/_chunks/{component-C_T2VN5u.js → component-C3k_8uIq.js} +290 -275
  16. package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-DlVkpW3h.js} +1 -9
  17. package/_chunks/configurator-actions-vRnI54mO.js +155 -0
  18. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  19. package/_chunks/control-BRfF5DWQ.js +118 -0
  20. package/_chunks/{controller-hRBm_Lfz.js → controller-BbiQuRt-.js} +5 -5
  21. package/_chunks/controls-B3EgM_DS.js +650 -0
  22. package/_chunks/{date-control-DrVFX13g.js → date-control-87dcA5br.js} +5 -5
  23. package/_chunks/{date-time-qIhp5vaX.js → date-time-CfiFYodx.js} +332 -293
  24. package/_chunks/{delete-button-CW9vjLnk.js → delete-button-jneO24wa.js} +1 -1
  25. package/_chunks/dialog.parts-NqEEVc9P.js +131 -0
  26. package/_chunks/{duration-CL68Em0o.js → duration-BGZ_qJ99.js} +10 -10
  27. package/_chunks/{editor-commit-Bq3wSgvr.js → editor-commit-Dyo-FMgD.js} +1 -1
  28. package/_chunks/editor-popup-NNP9Fh9U.js +82 -0
  29. package/_chunks/field-configurator-DPulsY3l.js +288 -0
  30. package/_chunks/{field-context-D57PnBbH.js → field-context-C4_WrO2z.js} +1 -1
  31. package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-D4I8HpVp.js} +2 -2
  32. package/_chunks/icon-toolbar-BAAdEvr9.js +134 -0
  33. package/_chunks/{icons-Ci5mADVc.js → icons-B4qN13Yj.js} +1 -1
  34. package/_chunks/{iso-B0YHBK7m.js → iso-CJQl2kmq.js} +1 -1
  35. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  36. package/_chunks/minus-BOAR3A1C.js +4 -0
  37. package/_chunks/{model-mPO2tG2f.js → model-CFrBgRHm.js} +3 -3
  38. package/_chunks/mount-C8CnIW9k.js +267 -0
  39. package/_chunks/{native.view-ByyZ1CT5.js → native-CJm3eq3-.js} +1 -1
  40. package/_chunks/native-control-um1L1wgZ.js +649 -0
  41. package/_chunks/{number-input-BKwA5FnM.js → number-input-CKiA4d1N.js} +9 -9
  42. package/_chunks/{picker-h1P5RUgp.js → picker-igNshTRC.js} +5 -5
  43. package/_chunks/plus-CbGRkIGl.js +4 -0
  44. package/_chunks/{popup-CT2uD3go.js → popup-DECYM9FI.js} +116 -105
  45. package/_chunks/{rating-choice-DZgmaic0.js → rating-choice-CepVfGUq.js} +2 -2
  46. package/_chunks/{render-m5eMMwFR.js → render-bTk3curw.js} +2 -2
  47. package/_chunks/{reorder-list-CSlqAGHw.js → reorder-list-B4w3aARt.js} +2 -2
  48. package/_chunks/request-trail-B1zVRPEf.js +762 -0
  49. package/_chunks/rich-text-Ci4d6dHn.js +842 -0
  50. package/_chunks/rotate-left-BF6G883o.js +4 -0
  51. package/_chunks/selection-list-tooltips-m00U3L6z.js +42 -0
  52. package/_chunks/title-tooltip-ncldbUwS.js +11 -0
  53. package/_chunks/tooltip-h-Z8yFBY.js +54 -0
  54. package/_chunks/tooltip-owner-BYho-vJl.js +19 -0
  55. package/_chunks/tooltip-session-CBtRMBPr.js +110 -0
  56. package/_chunks/tooltip-text-BN5WdGHn.js +12 -0
  57. package/_chunks/top-layer-popup-CKJ7VJOF.js +59 -0
  58. package/_dialog.scss +57 -22
  59. package/_form.scss +71 -21
  60. package/_legend.scss +25 -7
  61. package/_variables.scss +34 -32
  62. package/_view-switcher.scss +6 -0
  63. package/activity-message.d.ts +1 -1
  64. package/activity-message.js +1 -1
  65. package/ai/_chat.scss +35 -3
  66. package/ai/_style.scss +76 -16
  67. package/ai/chat.d.ts +3 -1
  68. package/ai/components.d.ts +16 -3
  69. package/ai/index.d.ts +1 -0
  70. package/ai/index.js +3 -3
  71. package/ai/mount.d.ts +30 -6
  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 +2 -0
  80. package/ai/translations.d.ts +1 -1
  81. package/angular/angular.d.ts +1 -1
  82. package/angular/angular.js +13 -7
  83. package/assignee/assignee.scss +28 -6
  84. package/assignee/index.js +6 -6
  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.js +1 -1
  90. package/badge.view.d.ts +8 -0
  91. package/brush-range/_brush-range.scss +55 -49
  92. package/brush-range/component.d.ts +1 -3
  93. package/brush-range/component.js +28 -28
  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 +2 -2
  98. package/buttons/remove-button.style.scss +1 -1
  99. package/buttons/svg-button.d.ts +1 -1
  100. package/buttons/svg-button.js +17 -17
  101. package/calendar/_calendar.scss +21 -25
  102. package/calendar/calendar.js +1 -1
  103. package/calendar/day.js +2 -2
  104. package/calendar/header.js +2 -3
  105. package/calendar/index.js +3 -3
  106. package/calendar/model.js +1 -1
  107. package/calendar/month-grid.js +2 -2
  108. package/calendar/translations.js +1 -1
  109. package/calendar/year-grid.js +2 -2
  110. package/cell-input.js +1 -1
  111. package/cell-input.scss +3 -7
  112. package/cell-visuals/badge.style.scss +6 -3
  113. package/cell-visuals/bar-chart.style.scss +2 -1
  114. package/cell-visuals/column-type.style.css +12 -0
  115. package/cell-visuals/index.js +1 -1
  116. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  117. package/cell-visuals/progress-line.style.scss +1 -4
  118. package/cell-visuals/sparkline.style.scss +2 -1
  119. package/cell-visuals/timeline.style.css +4 -2
  120. package/checkbox/checkbox.scss +6 -24
  121. package/checkbox/index.js +1 -1
  122. package/choice-chips/index.d.ts +3 -1
  123. package/choice-chips/index.js +1 -1
  124. package/color-palette/built-in-palettes.js +1 -1
  125. package/color-palette/chart-palettes.js +1 -1
  126. package/color-palette/color-palette.js +1 -1
  127. package/color-palette/color-palette.style.scss +88 -25
  128. package/color-palette/color-picker.constants.js +1 -1
  129. package/color-palette/color-picker.js +2 -2
  130. package/color-palette/color-picker.style.scss +23 -10
  131. package/color-palette/common-palettes.d.ts +1 -1
  132. package/color-palette/common-palettes.js +2 -2
  133. package/color-palette/gantt-palettes.js +1 -1
  134. package/color-palette/native.d.ts +15 -2
  135. package/color-palette/palette.js +1 -1
  136. package/color-palette/pivot-palettes.js +1 -1
  137. package/color-palette/platform-palettes.js +1 -1
  138. package/color-palette/pro-palettes.js +1 -1
  139. package/color-palette/scheduler-palettes.js +1 -1
  140. package/component-catalog.d.ts +9 -7
  141. package/configurator-actions.d.ts +67 -0
  142. package/configurator-actions.js +1 -0
  143. package/configurator-aggregation-list.d.ts +14 -0
  144. package/configurator-aggregation-list.js +63 -0
  145. package/configurator-drop-zone.d.ts +39 -0
  146. package/configurator-drop-zone.js +66 -0
  147. package/configurator-field-icon.d.ts +10 -0
  148. package/configurator-field-icon.js +1 -0
  149. package/configurator-focus.d.ts +4 -0
  150. package/configurator-focus.js +39 -0
  151. package/configurator-sections.d.ts +42 -0
  152. package/configurator-sections.js +71 -0
  153. package/control-attributes.js +1 -1
  154. package/control-presentation.d.ts +8 -2
  155. package/control-presentation.js +25 -20
  156. package/controls.d.ts +12 -2
  157. package/controls.js +4 -3
  158. package/core/anchored-popover.js +1 -1
  159. package/core/control-id.js +1 -1
  160. package/core/editor-popup-position.d.ts +6 -2
  161. package/core/editor-popup.d.ts +4 -0
  162. package/core/editor-popup.js +1 -1
  163. package/core/motion.js +1 -1
  164. package/core/popover-controller.d.ts +35 -0
  165. package/core/popover-controller.js +102 -0
  166. package/core/popup-ownership.d.ts +2 -0
  167. package/core/selection-list-tooltips.d.ts +2 -0
  168. package/core/title-tooltip.d.ts +2 -0
  169. package/core/tooltip-session.d.ts +29 -0
  170. package/core/tooltip-surface.d.ts +13 -0
  171. package/core/tooltip-text.d.ts +6 -0
  172. package/core/tooltip.d.ts +35 -0
  173. package/core/top-layer-popup.d.ts +4 -0
  174. package/core/top-layer-popup.js +1 -23
  175. package/date-time/attach.d.ts +1 -1
  176. package/date-time/date-control.d.ts +1 -1
  177. package/date-time/field.d.ts +4 -2
  178. package/date-time/index.js +1 -1
  179. package/date-time/style.scss +239 -36
  180. package/date-time/time-selection.d.ts +3 -1
  181. package/date-time/types.d.ts +5 -1
  182. package/dialog/dialog-action-footer.d.ts +17 -2
  183. package/dialog/dialog.dom.d.ts +15 -2
  184. package/dialog/dialog.dom.js +9 -9
  185. package/dialog/dialog.drag.js +1 -1
  186. package/dialog/dialog.parts.d.ts +1 -1
  187. package/dialog/dialog.parts.js +1 -1
  188. package/dialog/dialog.preact.js +1 -1
  189. package/distribution-chart/_distribution-chart.scss +113 -77
  190. package/distribution-chart/area-chart.js +2 -2
  191. package/distribution-chart/bar-chart.js +2 -2
  192. package/distribution-chart/chart-frame.d.ts +1 -1
  193. package/distribution-chart/index.d.ts +1 -1
  194. package/distribution-chart/index.js +1 -1
  195. package/distribution-chart/line-chart.js +2 -2
  196. package/dropdown/content.js +1 -1
  197. package/dropdown/control.js +1 -1
  198. package/dropdown/dropdown.service.js +1 -1
  199. package/dropdown/dropdown.types.d.ts +1 -1
  200. package/dropdown/editor-dropdown.style.scss +19 -9
  201. package/dropdown/index.js +2 -2
  202. package/dropdown/lookup-field.d.ts +5 -0
  203. package/dropdown/lookup-field.js +4 -3
  204. package/dropdown/popup.d.ts +2 -2
  205. package/dropdown/popup.js +1 -1
  206. package/duration/index.js +1 -1
  207. package/editor-actions.js +2 -2
  208. package/editor-layout/index.d.ts +4 -4
  209. package/editor-layout/index.js +40 -35
  210. package/editor-layout/style.scss +82 -18
  211. package/favicon.svg +9 -0
  212. package/field-configurator.d.ts +39 -1
  213. package/field-configurator.js +4 -170
  214. package/field-expansion.d.ts +9 -0
  215. package/field-reorder.hook.js +1 -1
  216. package/field-reorder.js +1 -1
  217. package/filter/filters/slider/_single-slider.scss +57 -38
  218. package/filter/filters/slider/_slider.scss +41 -33
  219. package/filter/filters/slider/component.js +1 -1
  220. package/filter/filters/slider/control.js +3 -1
  221. package/filter/filters/slider/inputs.js +1 -1
  222. package/filter/filters/slider/logic.js +1 -1
  223. package/filter/filters/slider/preact.js +1 -1
  224. package/filter/filters/slider/runtime.js +50 -23
  225. package/filter/filters/slider/single.js +2 -2
  226. package/filter-badge.js +2 -2
  227. package/filter-controls.d.ts +0 -1
  228. package/filter-controls.js +6 -7
  229. package/form-controls/index.d.ts +10 -2
  230. package/form-controls/index.js +7 -7
  231. package/form-controls/presentation.d.ts +1 -1
  232. package/form-controls/presentation.js +13 -13
  233. package/formatting/index.d.ts +1 -1
  234. package/formatting/index.js +26 -25
  235. package/formatting/styles.scss +14 -57
  236. package/framework.js +228 -225
  237. package/history-controls.js +27 -1
  238. package/html-controls.js +1 -1
  239. package/icon-toolbar.d.ts +62 -0
  240. package/icon-toolbar.js +1 -0
  241. package/icons/icon.d.ts +1 -1
  242. package/icons/icon.js +1 -1
  243. package/legend.d.ts +1 -1
  244. package/legend.js +1 -1
  245. package/masked-input/index.js +4 -4
  246. package/native-control.d.ts +1 -2
  247. package/native-control.js +1 -1
  248. package/native-controls.d.ts +54 -2
  249. package/native-styles.css +1 -1
  250. package/native-styles.scss +6 -2
  251. package/native.d.ts +3 -3
  252. package/native.js +48 -45
  253. package/number-input/index.d.ts +1 -1
  254. package/number-input/index.js +1 -1
  255. package/package.json +84 -1
  256. package/pagination.js +12 -12
  257. package/pdf-viewer/controller.js +1 -1
  258. package/pdf-viewer/header.d.ts +1 -1
  259. package/pdf-viewer/index.d.ts +2 -2
  260. package/pdf-viewer/index.js +3 -3
  261. package/pdf-viewer/search-bar.d.ts +1 -1
  262. package/pdf-viewer/status.d.ts +1 -1
  263. package/pdf-viewer/style.scss +203 -42
  264. package/pickers.d.ts +5 -1
  265. package/preact-mount.js +1 -1
  266. package/preact.d.ts +13 -10
  267. package/preact.js +109 -64
  268. package/progress/_bar.scss +9 -3
  269. package/progress/_circular.scss +2 -1
  270. package/progress/bar.js +1 -1
  271. package/progress/circular.js +1 -1
  272. package/progress/range.js +1 -1
  273. package/rating-choice.js +1 -1
  274. package/react-adapter.d.ts +4 -2
  275. package/react-control.d.ts +2 -0
  276. package/react-control.js +3 -3
  277. package/react.d.ts +7 -8
  278. package/react.js +69 -68
  279. package/reorder-list.d.ts +1 -1
  280. package/reorder-list.js +1 -1
  281. package/reorder-list.scss +59 -17
  282. package/resource-picker/resource-picker-avatar.js +1 -1
  283. package/resource-picker/resource-picker-option.js +1 -1
  284. package/resource-picker/resource-picker-popup.js +2 -2
  285. package/resource-picker/resource-picker.js +75 -73
  286. package/resource-picker/resource-picker.scss +62 -34
  287. package/resource-picker/resource-picker.utils.js +1 -1
  288. package/rich-text/engine.d.ts +1 -0
  289. package/rich-text/format-html.d.ts +2 -0
  290. package/rich-text/index.d.ts +4 -0
  291. package/rich-text/index.js +1 -1
  292. package/rich-text/model.d.ts +2 -0
  293. package/rich-text/style.scss +293 -44
  294. package/rich-text/syntax.d.ts +5 -0
  295. package/rich-text/toolbar.d.ts +1 -1
  296. package/rich-text/translations.d.ts +2 -0
  297. package/robots.txt +4 -0
  298. package/search-input/index.js +2 -2
  299. package/search-input/native.d.ts +21 -2
  300. package/segmented-switch/index.js +1 -1
  301. package/select.d.ts +3 -1
  302. package/select.js +1 -1
  303. package/selection-list.d.ts +1 -0
  304. package/selection-list.js +3 -1
  305. package/status-feedback/badge.js +2 -2
  306. package/status-feedback/exit-snapshot.js +5 -5
  307. package/status-feedback/header.js +2 -2
  308. package/status-feedback/icons.js +1 -1
  309. package/status-feedback/index.js +1 -1
  310. package/status-feedback/item.js +2 -2
  311. package/status-feedback/motion.js +1 -1
  312. package/status-feedback/placement.js +1 -1
  313. package/status-feedback/popover.js +5 -5
  314. package/status-feedback/render.js +1 -1
  315. package/status-feedback/status-feedback.scss +124 -35
  316. package/styles/_activity-message.scss +24 -7
  317. package/styles/_alert.scss +78 -17
  318. package/styles/_cell-editor-frame.scss +11 -0
  319. package/styles/_compositions.scss +400 -80
  320. package/styles/_control.scss +30 -8
  321. package/styles/_disclosure.scss +15 -5
  322. package/styles/_editor-counter.scss +16 -6
  323. package/styles/_editor-slider.scss +8 -4
  324. package/styles/_field-configurator.scss +321 -23
  325. package/styles/_fields-grid.scss +49 -0
  326. package/styles/_filter-controls.scss +10 -2
  327. package/styles/_icon-action.scss +48 -15
  328. package/styles/_loading.scss +12 -3
  329. package/styles/_motion.scss +32 -9
  330. package/styles/_palette.scss +0 -24
  331. package/styles/_primitives.scss +369 -110
  332. package/styles/_theme.scss +130 -86
  333. package/styles/_thresholds.scss +28 -25
  334. package/styles/_time-grid.scss +8 -3
  335. package/styles/_tokens.scss +6 -1
  336. package/styles/color-roles.js +1 -1
  337. package/styles/configurator-actions.scss +241 -0
  338. package/styles/pagination.css +213 -0
  339. package/styles/{legacy-rating.css → rating.css} +8 -3
  340. package/styles.css +1 -1
  341. package/styles.scss +3 -5
  342. package/surfaces.d.ts +38 -2
  343. package/surfaces.js +37 -134
  344. package/svelte/UiComponent.svelte +44 -11
  345. package/svelte-control.js +1 -1
  346. package/svelte.d.ts +1 -1
  347. package/svelte.js +5 -5
  348. package/switch/index.js +16 -15
  349. package/time-grid.d.ts +0 -1
  350. package/time-grid.js +39 -38
  351. package/timeline-track/_style.scss +96 -24
  352. package/timeline-track/index.js +3 -3
  353. package/timeline-track/model.js +1 -1
  354. package/ui.css +1 -1
  355. package/view-switcher.d.ts +23 -0
  356. package/vue-badge.js +1 -1
  357. package/vue-control.js +1 -1
  358. package/vue-segmented-switch.js +1 -1
  359. package/vue.d.ts +29 -32
  360. package/vue.js +118 -123
  361. package/_chunks/chart-frame-Cmc7xU1i.js +0 -130
  362. package/_chunks/choice-chips-CHQTUdLs.js +0 -110
  363. package/_chunks/color-picker-CudqPYZo.js +0 -138
  364. package/_chunks/control-AHKXD5Eu.js +0 -93
  365. package/_chunks/control-tooltip-uscKfAnV.js +0 -100
  366. package/_chunks/controls-DsNi8V8I.js +0 -630
  367. package/_chunks/dialog.parts-CKGkC5zP.js +0 -134
  368. package/_chunks/editor-popup-WDdtVDNA.js +0 -81
  369. package/_chunks/history-controls-B3u3INEK.js +0 -27
  370. package/_chunks/mount-DQ1cpppK.js +0 -257
  371. package/_chunks/native-control-C_yok8_-.js +0 -605
  372. package/_chunks/request-trail-DSlFix6i.js +0 -618
  373. package/_chunks/rich-text-CH7gIqOS.js +0 -636
  374. package/_shared/data-query/binding.d.ts +0 -30
  375. package/_shared/data-query/blocks.d.ts +0 -30
  376. package/_shared/data-query/commands.d.ts +0 -47
  377. package/_shared/data-query/contracts.d.ts +0 -106
  378. package/_shared/data-query/cursor-reader.d.ts +0 -25
  379. package/_shared/data-query/direct-binding.d.ts +0 -3
  380. package/_shared/data-query/index.d.ts +0 -23
  381. package/_shared/data-query/infinite-binding.d.ts +0 -18
  382. package/_shared/data-query/keys.d.ts +0 -9
  383. package/_shared/data-query/limiter.d.ts +0 -12
  384. package/_shared/data-query/load-options.d.ts +0 -25
  385. package/_shared/data-query/materialize.d.ts +0 -2
  386. package/_shared/data-query/policy.d.ts +0 -14
  387. package/_shared/data-query/provider-queries.d.ts +0 -22
  388. package/_shared/data-query/reader.d.ts +0 -23
  389. package/_shared/data-query/remote-load.d.ts +0 -7
  390. package/_shared/data-query/source.d.ts +0 -40
  391. package/avatar/index.view.d.ts +0 -25
  392. package/color-palette/native.view.d.ts +0 -15
  393. package/control-presentation.view.d.ts +0 -8
  394. package/dialog/dialog-action-footer.view.d.ts +0 -20
  395. package/dialog/dialog.dom.view.d.ts +0 -15
  396. package/form-controls/index.view.d.ts +0 -10
  397. package/formatting/control-tooltip.d.ts +0 -27
  398. package/native-controls.view.d.ts +0 -54
  399. package/search-input/native.view.d.ts +0 -21
  400. package/styles/legacy-pagination.css +0 -112
  401. package/surfaces.view.d.ts +0 -63
package/_variables.scss CHANGED
@@ -1,3 +1,4 @@
1
+ @use 'styles/built-in-palettes' as palettes;
1
2
  @use './styles/palette';
2
3
  /**
3
4
  * Variables
@@ -5,47 +6,48 @@
5
6
 
6
7
  $rv-font-weight-medium: 500 !default;
7
8
 
8
- $primary-color-light: palette.$legacy-007bff;
9
- $primary-color-dark: palette.$legacy-0d63e8;
9
+ $primary-color-light: palettes.color('common', 'hex007bff');
10
+ $primary-color-dark: palettes.color('common', 'hex0d63e8');
10
11
 
11
- $text-color-light: palette.$legacy-000;
12
- $text-color-light-secondary: palette.$legacy-757575;
12
+ $text-color-light: palettes.color('common', 'hex000');
13
+ $text-color-light-secondary: palettes.color('common', 'hex757575');
13
14
  $text-color-dark: palette.$white;
14
- $text-color-dark-secondary: palette.$legacy-999;
15
- $background-color-light: palette.$legacy-f6f6f7;
15
+ $text-color-dark-secondary: palettes.color('common', 'hex999');
16
+ $background-color-light: palettes.color('common', 'hexf6f6f7');
16
17
 
17
- $button-alt-bg-light: palette.$legacy-ebebef;
18
- $button-alt-bg-light-hover: palette.$legacy-e4e4e9;
18
+ $button-alt-bg-light: palettes.color('common', 'hexebebef');
19
+ $button-alt-bg-light-hover: palettes.color('common', 'hexe4e4e9');
19
20
 
20
- $background-color-dark: palette.$legacy-333333;
21
+ $background-color-dark: palettes.color('common', 'hex333333');
21
22
 
22
- $border-color-light: palette.$legacy-ebebef;
23
- $border-color-dark: palette.$legacy-ebebef;
23
+ $border-color-light: palettes.color('common', 'hexebebef');
24
+ $border-color-dark: palettes.color('common', 'hexebebef');
24
25
 
25
- $rv-badge-bg-color: palette.$legacy-f0f0f0;
26
- $rv-badge-bg-color-dark: palette.$legacy-2d2d2d;
26
+ $rv-badge-bg-color: palettes.color('common', 'hexf0f0f0');
27
+ $rv-badge-bg-color-dark: palettes.color('common', 'hex2d2d2d');
27
28
 
28
29
  $rv-popup-bg-color: palette.$white;
29
- $rv-popup-border-color: palette.$legacy-d4d4d4;
30
+ $rv-popup-border-color: palettes.color('common', 'hexd4d4d4');
30
31
  $rv-popup-border-opacity: 0.5;
31
- $rv-popup-shadow-color: palette.$legacy-shadow-54;
32
- $rv-popup-hover-bg-color: palette.$legacy-f6f6f7;
32
+ $rv-popup-shadow-color: palettes.color('common', 'rgba_0_0_0_0_15');
33
+ $rv-popup-hover-bg-color: palettes.color('common', 'hexf6f6f7');
33
34
  $rv-popup-border-radius: 8px;
34
35
  $rv-popup-padding: 10px;
35
- $rv-popup-box-shadow: 0 4px 12px #{palette.$legacy-shadow-54};
36
- $rv-popup-bg-color-dark: palette.$legacy-1c1c1c;
37
- $rv-popup-border-color-dark: palette.$legacy-686868;
36
+ $rv-popup-box-shadow: 0 4px 12px #{palettes.color('common', 'rgba_0_0_0_0_15')};
37
+ $rv-popup-bg-color-dark: palettes.color('common', 'hex1c1c1c');
38
+ $rv-popup-border-color-dark: palettes.color('common', 'hex686868');
38
39
  $rv-popup-border-opacity-dark: 0;
39
- $rv-popup-shadow-color-dark: palette.$legacy-shadow-57;
40
- $rv-popup-hover-bg-color-dark: palette.$legacy-2c2c2c;
41
- $rv-popup-box-shadow-dark: 0 4px 12px #{palette.$legacy-shadow-57};
42
-
43
- $rv-low-color: palette.$legacy-fa2057;
44
- $rv-medium-color: palette.$legacy-f7c605;
45
- $rv-high-color: palette.$legacy-01c26e;
46
- $rv-critical-color: palette.$legacy-a8183c;
47
- $rv-info-color: palette.$legacy-5555fc;
48
- $rv-neutral-color: palette.$legacy-161a42;
49
-
50
- $rv-progress-bg-color: palette.$legacy-f0f0f0;
51
- $rv-progress-bg-color-dark: palette.$legacy-252525;
40
+ $rv-popup-shadow-color-dark: palettes.color('common', 'rgba_0_0_0_0_5');
41
+ $rv-popup-hover-bg-color-dark: palettes.color('common', 'hex2c2c2c');
42
+ $rv-popup-box-shadow-dark: 0 4px 12px
43
+ #{palettes.color('common', 'rgba_0_0_0_0_5')};
44
+
45
+ $rv-low-color: palettes.color('common', 'hexfa2057');
46
+ $rv-medium-color: palettes.color('common', 'hexf7c605');
47
+ $rv-high-color: palettes.color('common', 'hex01c26e');
48
+ $rv-critical-color: palettes.color('common', 'hexa8183c');
49
+ $rv-info-color: palettes.color('common', 'hex5555fc');
50
+ $rv-neutral-color: palettes.color('common', 'hex161a42');
51
+
52
+ $rv-progress-bg-color: palettes.color('common', 'hexf0f0f0');
53
+ $rv-progress-bg-color-dark: palettes.color('common', 'hex252525');
@@ -0,0 +1,6 @@
1
+ .rv-view-switcher-controls {
2
+ display: flex;
3
+ align-items: center;
4
+ flex-wrap: wrap;
5
+ gap: 0.5rem;
6
+ }
@@ -9,4 +9,4 @@ export interface ActivityMessageProps {
9
9
  details?: ComponentChildren;
10
10
  }
11
11
  /** A compact, composable message with an avatar, timestamp and optional actions. */
12
- export declare function ActivityMessage({ className, avatar, timestamp, header, children, actions, details }: ActivityMessageProps): h.JSX.Element;
12
+ export declare function ActivityMessage({ className, avatar, timestamp, header, children, actions, details, }: ActivityMessageProps): h.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
2
- //#region src/activity-message.tsx
2
+ //#region package/activity-message.tsx
3
3
  function t({ className: t = "", avatar: n, timestamp: r, header: i, children: a, actions: o, details: s }) {
4
4
  return /* @__PURE__ */ e("article", {
5
5
  class: `rv-activity-message ${t}`,
package/ai/_chat.scss CHANGED
@@ -45,13 +45,31 @@
45
45
  color: var(--rv-ui-text-muted);
46
46
  margin-block: 0.5rem;
47
47
  }
48
+ .rv-ai-chat-empty > strong {
49
+ font-size: calc(1em + 2px);
50
+ }
51
+ .rv-ai-chat-empty img {
52
+ max-width: 100%;
53
+ height: auto;
54
+ }
55
+ .rv-ai-mounted-chat .rv-ai-chat-content:has(> .rv-ai-chat-empty:only-child) {
56
+ box-sizing: border-box;
57
+ min-height: 100%;
58
+ }
48
59
  .rv-ai-chat-jump.rv-btn {
49
60
  position: absolute;
50
61
  inset-block-end: 0.75rem;
51
62
  inset-inline-start: 50%;
52
63
  transform: translateX(-50%);
53
- box-shadow: 0 2px 12px var(--rv-ui-focus-ring);
54
- white-space: nowrap;
64
+ width: 2rem;
65
+ min-width: 2rem;
66
+ height: 2rem;
67
+ padding: 0.375rem;
68
+ border: 1px solid var(--rv-ui-border);
69
+ border-radius: 50%;
70
+ background: var(--rv-ui-surface);
71
+ color: var(--rv-ui-text);
72
+ box-shadow: none;
55
73
  }
56
74
  .rv-ai-chat-composer {
57
75
  flex: none;
@@ -65,6 +83,10 @@
65
83
  max-width: 100%;
66
84
  align-self: flex-start;
67
85
  }
86
+ .rv-ai-message--assistant {
87
+ align-self: stretch;
88
+ width: 100%;
89
+ }
68
90
  .rv-ai-message-content {
69
91
  white-space: pre-wrap;
70
92
  overflow-wrap: anywhere;
@@ -127,7 +149,7 @@
127
149
  }
128
150
  .rv-ai-task-icon {
129
151
  display: inline-flex;
130
- width: 1rem;
152
+ width: 1.25rem;
131
153
  height: 1.25rem;
132
154
  flex: none;
133
155
  align-items: center;
@@ -182,6 +204,9 @@
182
204
  .rv-ai-chat-composer {
183
205
  padding: 0.75rem 0 0;
184
206
  }
207
+ .rv-ai-result-actions {
208
+ margin-block-start: 0.75rem;
209
+ }
185
210
  }
186
211
  .rv-ai-chat-result {
187
212
  max-width: 100%;
@@ -193,3 +218,10 @@
193
218
  white-space: pre-wrap;
194
219
  overflow-wrap: anywhere;
195
220
  }
221
+
222
+ .rv-ai-chat-actions {
223
+ display: flex;
224
+ justify-content: flex-end;
225
+ align-items: center;
226
+ gap: 0.25rem;
227
+ }
package/ai/_style.scss CHANGED
@@ -1,4 +1,5 @@
1
1
  @use './chat';
2
+ @use './results/style';
2
3
  .rv-ai-assistant {
3
4
  box-sizing: border-box;
4
5
  width: 100%;
@@ -86,21 +87,6 @@
86
87
  .rv-ai-request-trail {
87
88
  min-width: 0;
88
89
  }
89
- .rv-ai-request-trail .rv-ai-trail-trigger {
90
- color: var(--rv-ui-accent-text);
91
- background: var(--rv-ui-selected-bg);
92
- &:hover:not(:disabled), &:focus-visible {
93
- color: var(--rv-ui-accent-text);
94
- background: var(--rv-ui-selected-bg);
95
- }
96
- }
97
- .rv-ai-trail-trigger .rv-svg-icon {
98
- transition: transform var(--rv-ui-motion-fast, 120ms)
99
- var(--rv-ui-motion-ease, ease);
100
- }
101
- .rv-ai-trail-trigger[aria-expanded='true'] .rv-svg-icon {
102
- transform: rotate(180deg);
103
- }
104
90
  .rv-popover.rv-ai-trail-popover {
105
91
  box-sizing: border-box;
106
92
  width: 22rem;
@@ -161,7 +147,11 @@
161
147
  background: var(--rv-ui-surface-hover);
162
148
  }
163
149
  .rv-ai-step[data-current] .rv-ai-step-chip {
164
- background: color-mix(in srgb, var(--rv-ui-selected-bg) 55%, var(--rv-ui-surface));
150
+ background: color-mix(
151
+ in srgb,
152
+ var(--rv-ui-selected-bg) 55%,
153
+ var(--rv-ui-surface)
154
+ );
165
155
  }
166
156
  .rv-ai-step-number {
167
157
  position: relative;
@@ -321,3 +311,73 @@
321
311
  overflow-wrap: anywhere;
322
312
  font-size: 0.875em;
323
313
  }
314
+ .rv-ai-preview-changes {
315
+ max-width: 100%;
316
+ overflow-x: auto;
317
+ table {
318
+ width: 100%;
319
+ border-collapse: collapse;
320
+ font-size: 0.875rem;
321
+ }
322
+ th,
323
+ td {
324
+ padding: 0.5rem 0.625rem;
325
+ border-bottom: 1px solid var(--rv-ui-border);
326
+ text-align: start;
327
+ vertical-align: top;
328
+ overflow-wrap: anywhere;
329
+ }
330
+ th {
331
+ font-weight: 500;
332
+ }
333
+ thead th {
334
+ color: var(--rv-ui-text-muted);
335
+ }
336
+ td {
337
+ min-width: 4rem;
338
+ }
339
+ }
340
+ .rv-ai-preview-item {
341
+ display: block;
342
+ font-weight: 600;
343
+ margin-bottom: 0.125rem;
344
+ }
345
+ .rv-ai-preview-notice {
346
+ margin: 0;
347
+ color: var(--rv-ui-text-muted);
348
+ }
349
+
350
+ // Opt-in bounded chat surfaces; toolbar mounts keep their natural height.
351
+ .rv-ai-assistant--fill {
352
+ padding: 0;
353
+ flex: 1;
354
+ min-height: 0;
355
+ height: 100%;
356
+ > .rv-ai-mounted-chat {
357
+ flex: 1;
358
+ min-height: 0;
359
+ }
360
+ .rv-ai-chat-viewport {
361
+ max-height: none;
362
+ }
363
+ .rv-ai-result-actions,
364
+ .rv-ai-assistant-footer {
365
+ flex: none;
366
+ }
367
+ .rv-ai-chat-content {
368
+ min-height: 100%;
369
+ box-sizing: border-box;
370
+ }
371
+ }
372
+
373
+ // Keep the trigger compact while giving long requests room in the shared popup.
374
+ .rv-ai-examples-menu {
375
+ box-sizing: border-box;
376
+ width: min(420px, calc(100vw - 16px));
377
+ max-width: calc(100vw - 16px);
378
+
379
+ .dropdown-option {
380
+ min-height: 36px;
381
+ white-space: normal;
382
+ }
383
+ }
package/ai/chat.d.ts CHANGED
@@ -24,8 +24,10 @@ export declare function AiChatContent({ children, className, autoScroll, busy, l
24
24
  export interface AiChatEmptyStateProps extends AiChatPartProps {
25
25
  title?: string;
26
26
  description?: string;
27
+ /** Framework-owned image/text content. Return cleanup for listeners or mounted views. */
28
+ renderContent?(host: HTMLElement): void | (() => void);
27
29
  }
28
- export declare function AiChatEmptyState({ title, description, children, className, translations, }: AiChatEmptyStateProps): h.JSX.Element;
30
+ export declare function AiChatEmptyState({ title, description, children, className, translations, renderContent, }: AiChatEmptyStateProps): h.JSX.Element;
29
31
  /** Existing composer behavior, with chat-specific defaults. */
30
32
  export declare function AiChatComposer(props: AiPromptInputProps): h.JSX.Element;
31
33
  export interface AiMessageProps extends AiChatPartProps {
@@ -32,13 +32,15 @@ export interface AiSuggestionChoice {
32
32
  prompt: string;
33
33
  }
34
34
  export interface AiSuggestionsProps {
35
+ /** Number of inline choices; remaining choices are available under More. Default: 2. */
36
+ maxVisible?: number;
35
37
  translations?: AiUiTranslations;
36
38
  items: readonly (string | AiSuggestionChoice)[];
37
39
  onSelect(value: string): void;
38
40
  disabled?: boolean;
39
41
  label?: string;
40
42
  }
41
- export declare function AiSuggestions({ translations, items, onSelect, disabled, label, }: AiSuggestionsProps): h.JSX.Element | null;
43
+ export declare function AiSuggestions({ translations, items, onSelect, disabled, label, maxVisible, }: AiSuggestionsProps): h.JSX.Element | null;
42
44
  export interface AiActionStatusProps {
43
45
  translations?: AiUiTranslations;
44
46
  phase: AiActionPhase;
@@ -55,6 +57,8 @@ export interface AiResultProps {
55
57
  }
56
58
  export declare function AiResult({ translations, summary, matchedRows, countLabel, actions, children, }: AiResultProps): h.JSX.Element;
57
59
  export interface AiAssistantProps {
60
+ /** Fill a bounded parent, with messages scrolling above the composer. */
61
+ layout?: 'flow' | 'fill';
58
62
  translations?: AiUiTranslations;
59
63
  label?: string;
60
64
  children?: ComponentChildren;
@@ -62,14 +66,23 @@ export interface AiAssistantProps {
62
66
  busy?: boolean;
63
67
  }
64
68
  /** Neutral composition; grid/model/query policy remains in the consuming product. */
65
- export declare function AiAssistant({ translations, label, children, footer, busy, }: AiAssistantProps): h.JSX.Element;
69
+ export declare function AiAssistant({ layout, translations, label, children, footer, busy, }: AiAssistantProps): h.JSX.Element;
70
+ export interface AiPreviewChange {
71
+ /** User-facing record, task or chart name. */
72
+ item?: string;
73
+ label: string;
74
+ before?: string;
75
+ after?: string;
76
+ }
66
77
  export interface AiChangePreviewProps {
67
78
  translations?: AiUiTranslations;
68
79
  summary: string;
69
80
  details?: string;
81
+ changes?: readonly AiPreviewChange[];
82
+ notice?: string;
70
83
  disabled?: boolean;
71
84
  onApply(): void;
72
85
  onCancel(): void;
73
86
  }
74
87
  /** Generic approval surface; the host retains the prepared command and its mutation policy. */
75
- export declare function AiChangePreview({ translations, summary, details, disabled, onApply, onCancel, }: AiChangePreviewProps): h.JSX.Element;
88
+ export declare function AiChangePreview({ translations, summary, details, changes, notice, disabled, onApply, onCancel, }: AiChangePreviewProps): h.JSX.Element;
package/ai/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export * from './translations';
5
5
  export type { AiPromptHistoryOptions } from './prompt-history';
6
6
  export { AiTranslationProvider } from './translation-context';
7
7
  export * from './chat';
8
+ export * from './results';
package/ai/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "../_chunks/mount-DQ1cpppK.js";
2
- import { _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, s as g, t as _, u as v, x as y, y as b } from "../_chunks/request-trail-DSlFix6i.js";
3
- export { r as AI_UI_MESSAGES, o as AiActionStatus, m as AiAssistant, d as AiChangePreview, f as AiChat, h as AiChatComposer, l as AiChatContent, n as AiChatEmptyState, p as AiMessage, g as AiMessageActions, i as AiMessageContent, c as AiPromptInput, u as AiReasoning, _ as AiRequestTrail, s as AiResult, t as AiSuggestions, v as AiTask, a as AiTaskItem, b as AiTranslationProvider, e as mountAiAssistant, y as translateAiText };
1
+ import { t as e } from "../_chunks/mount-C8CnIW9k.js";
2
+ import { C as t, E as n, S as r, T as i, _ as a, a as o, b as s, c, d as l, f as u, g as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S, w as C, x as w, y as T } from "../_chunks/request-trail-B1zVRPEf.js";
3
+ export { i as AI_UI_MESSAGES, u as AiActionStatus, v as AiAssistant, h as AiChangePreview, g as AiChat, y as AiChatComposer, p as AiChatContent, o as AiChatEmptyState, _ as AiMessage, b as AiMessageActions, c as AiMessageContent, f as AiPromptInput, m as AiReasoning, x as AiRequestTrail, d as AiResult, w as AiResultMetrics, r as AiResultTable, s as AiResultText, T as AiResultView, a as AiSuggestions, S as AiTask, l as AiTaskItem, C as AiTranslationProvider, t as formatAiResultValue, e as mountAiAssistant, n as translateAiText };
package/ai/mount.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import { AiResultContent, AiTableRenderer } from './results';
2
+ import { AiChatEmptyStateProps } from './chat';
1
3
  import { AiUiTranslations } from './translations';
2
- import { AiActionPhase, AiPromptInputProps, AiSuggestionChoice } from './components';
4
+ import { AiActionPhase, AiPromptInputProps, AiPreviewChange, AiSuggestionChoice } from './components';
3
5
  import { AiRequestTrailItem, AiRequestTrailProps } from './request-trail';
4
6
  import { AiPromptHistoryOptions } from './prompt-history';
5
7
  export interface AiAssistantMountState {
@@ -14,9 +16,12 @@ export interface AiAssistantMountState {
14
16
  message: string;
15
17
  /** Plain text from a bounded host-owned action result. */
16
18
  resultDetails?: string;
19
+ result?: AiResultContent;
17
20
  pendingAction?: {
18
21
  summary: string;
19
22
  details?: string;
23
+ changes?: readonly AiPreviewChange[];
24
+ notice?: string;
20
25
  };
21
26
  canUndoData?: boolean;
22
27
  canRedoData?: boolean;
@@ -26,10 +31,30 @@ export interface AiAssistantMountState {
26
31
  choices?: readonly AiSuggestionChoice[];
27
32
  steps?: readonly AiRequestTrailItem[];
28
33
  canEditSteps?: boolean;
34
+ /** Host-owned chart view can return to the record grid. */
35
+ canClearChart?: boolean;
36
+ viewSwitching?: boolean;
29
37
  }
30
38
  export interface AiAssistantMountOptions {
39
+ /** Trusted host renderer for tabular results; never supplied by model output. */
40
+ renderTable?: AiTableRenderer;
31
41
  mode?: 'toolbar' | 'chat';
42
+ layout?: 'flow' | 'fill';
43
+ /** Optional host for reactive undo/redo and view controls. Cleaned up on destroy. */
44
+ controlsMountTo?: HTMLElement;
45
+ /** Show the separate New conversation icon. Defaults to true. */
46
+ showNewConversation?: boolean;
47
+ /** @deprecated Use showNewConversation. */
48
+ showClearChat?: boolean;
49
+ /** Request-history popup: hidden by default in chat, visible in toolbar mode. */
50
+ showRequestHistory?: boolean;
51
+ /** Hide native data Undo/Redo controls. Workspace reset belongs to the application. */
52
+ showHistoryControls?: boolean;
53
+ /** Optional welcome content shown only while the local chat transcript is empty. */
54
+ emptyState?: AiChatEmptyStateProps | false;
32
55
  onClearChat?(): void;
56
+ /** Return to the grid while retaining the chart configuration. */
57
+ onClearChart?(): void;
33
58
  /** Local input recall and optional host persistence; never sent to the model automatically. */
34
59
  promptHistory?: AiPromptHistoryOptions;
35
60
  /** Auto-dismiss settled activity messages; disabled unless configured. */
@@ -41,16 +66,15 @@ export interface AiAssistantMountOptions {
41
66
  onRedoData?(): void;
42
67
  onSubmit(prompt: string): void;
43
68
  onStop(): void;
44
- onRestore(): void;
45
- onReset(): void;
46
69
  onRemoveStep?(id: string): void;
47
70
  suggestions?: readonly string[];
71
+ /** Inline choice count; additional choices remain under More. Default: 2. */
72
+ maxVisibleSuggestions?: number;
48
73
  label?: string;
49
74
  footer?: string;
50
- restoreLabel?: string;
51
- resetLabel?: string;
75
+ /** Format the matched-row count in command activity, independently of request history. */
52
76
  countLabel?: (count: number) => string;
53
- trail?: Pick<AiRequestTrailProps, 'label' | 'triggerLabel' | 'clearLabel' | 'clearDescription' | 'removeLabel' | 'countLabel' | 'changedMessage'>;
77
+ trail?: Pick<AiRequestTrailProps, 'label' | 'triggerLabel' | 'removeLabel' | 'countLabel' | 'changedMessage'>;
54
78
  prompt?: Pick<AiPromptInputProps, 'label' | 'placeholder' | 'submitLabel' | 'stopLabel' | 'hint' | 'textareaProps'>;
55
79
  }
56
80
  /** Framework-independent mount of the same TSX used by the public components. */
@@ -1,7 +1,9 @@
1
1
  import { AiUiTranslations } from './translations';
2
- import { h } from '../_vendor/preact/src/index';
2
+ import { h, ComponentChildren } from '../_vendor/preact/src/index';
3
3
  export interface AiRequestTrailItem {
4
4
  id: string;
5
+ /** Hide removal when the host cannot safely undo this individual request. */
6
+ removable?: boolean;
5
7
  label: string;
6
8
  /** Number of earlier requests represented by a grouped step. */
7
9
  count?: number;
@@ -10,8 +12,12 @@ export interface AiRequestTrailProps {
10
12
  translations?: AiUiTranslations;
11
13
  items: readonly AiRequestTrailItem[];
12
14
  onRemove(id: string): void;
13
- onClear(): void;
15
+ onClear?(): void;
14
16
  onEmpty?(): void;
17
+ /** Additional host-owned actions in the steps popup. */
18
+ footer?: ComponentChildren;
19
+ /** Optional application-owned clear action for standalone history presentation. */
20
+ showClear?: boolean;
15
21
  disabled?: boolean;
16
22
  removalsDisabled?: boolean;
17
23
  label?: string;
@@ -23,4 +29,4 @@ export interface AiRequestTrailProps {
23
29
  changedMessage?: string;
24
30
  }
25
31
  /** Applied context only. The host owns replay, persistence and view mutations. */
26
- export declare function AiRequestTrail({ translations, items, onRemove, onClear, onEmpty, disabled, removalsDisabled, label, triggerLabel, clearLabel, clearDescription, removeLabel, countLabel, changedMessage, }: AiRequestTrailProps): h.JSX.Element | null;
32
+ export declare function AiRequestTrail({ translations, items, onRemove, onClear, onEmpty, footer, showClear, disabled, removalsDisabled, label, triggerLabel, clearLabel, clearDescription, removeLabel, countLabel, changedMessage, }: AiRequestTrailProps): h.JSX.Element | null;
@@ -0,0 +1,83 @@
1
+ .rv-ai-result-content {
2
+ box-sizing: border-box;
3
+ width: 100%;
4
+ max-width: 100%;
5
+ min-width: 0;
6
+ border: 1px solid var(--rv-ui-border);
7
+ border-radius: 0.75rem;
8
+ padding: 1rem;
9
+ background: var(--rv-ui-surface);
10
+ overflow-wrap: anywhere;
11
+ }
12
+ .rv-ai-result-table-scroll {
13
+ max-width: 100%;
14
+ overflow: auto;
15
+ }
16
+ .rv-ai-result-content--grid {
17
+ border: 0;
18
+ border-radius: 0;
19
+ padding: 0;
20
+ background: transparent;
21
+ }
22
+ .rv-ai-result-table {
23
+ width: 100%;
24
+ white-space: nowrap;
25
+ overflow-wrap: normal;
26
+ border-collapse: collapse;
27
+ font: inherit;
28
+ caption {
29
+ text-align: start;
30
+ padding-block-end: 0.75rem;
31
+ }
32
+ caption span {
33
+ display: block;
34
+ color: var(--rv-ui-text-muted);
35
+ font-size: 0.8125rem;
36
+ margin-block-start: 0.25rem;
37
+ }
38
+ th,
39
+ td {
40
+ min-width: 6rem;
41
+ padding: 0.625rem;
42
+ text-align: start;
43
+ border-block-end: 1px solid var(--rv-ui-border);
44
+ }
45
+ th {
46
+ color: var(--rv-ui-text-muted);
47
+ font-weight: 500;
48
+ }
49
+ tbody tr:last-child td {
50
+ border: 0;
51
+ }
52
+ .rv-ai-result-number {
53
+ min-width: 4rem;
54
+ text-align: end;
55
+ font-variant-numeric: tabular-nums;
56
+ white-space: nowrap;
57
+ }
58
+ }
59
+ .rv-ai-result-description,
60
+ .rv-ai-result-empty {
61
+ color: var(--rv-ui-text-muted);
62
+ margin-block: 0.25rem 0;
63
+ }
64
+ .rv-ai-result-metrics {
65
+ display: grid;
66
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 8rem), 1fr));
67
+ gap: 1rem;
68
+ margin-block: 1rem 0;
69
+ dt {
70
+ color: var(--rv-ui-text-muted);
71
+ font-size: 0.8125rem;
72
+ }
73
+ dd {
74
+ margin: 0.25rem 0 0;
75
+ font-size: 1.25rem;
76
+ font-weight: 600;
77
+ font-variant-numeric: tabular-nums;
78
+ }
79
+ }
80
+ .rv-ai-result-text {
81
+ margin-block-end: 0;
82
+ white-space: pre-wrap;
83
+ }
@@ -0,0 +1,11 @@
1
+ import { ComponentChildren } from '../../_vendor/preact/src/index';
2
+ import { AiResultContent, AiTableResult } from './types';
3
+ export type AiTableRenderer = (result: AiTableResult) => ComponentChildren;
4
+ export * from './types';
5
+ export * from './table';
6
+ export * from './metrics';
7
+ export * from './text';
8
+ export declare function AiResultView({ result, renderTable, }: {
9
+ result: AiResultContent;
10
+ renderTable?: AiTableRenderer;
11
+ }): ComponentChildren;
@@ -0,0 +1,5 @@
1
+ import { h } from '../../_vendor/preact/src/index';
2
+ import { AiMetricsResult } from './types';
3
+ export declare function AiResultMetrics({ result }: {
4
+ result: AiMetricsResult;
5
+ }): h.JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { h } from '../../_vendor/preact/src/index';
2
+ import { AiTableResult } from './types';
3
+ export declare function AiResultTable({ result }: {
4
+ result: AiTableResult;
5
+ }): h.JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { h } from '../../_vendor/preact/src/index';
2
+ import { AiTextResult } from './types';
3
+ export declare function AiResultText({ result }: {
4
+ result: AiTextResult;
5
+ }): h.JSX.Element;
@@ -0,0 +1,29 @@
1
+ /** Presentation-only values. No HTML, grid records or executable render callbacks. */
2
+ export type AiResultValue = string | number | boolean | null;
3
+ interface ResultBase {
4
+ title: string;
5
+ description?: string;
6
+ }
7
+ export interface AiTableResult extends ResultBase {
8
+ kind: 'table';
9
+ columns: readonly {
10
+ label: string;
11
+ numeric?: boolean;
12
+ }[];
13
+ rows: readonly (readonly AiResultValue[])[];
14
+ }
15
+ export interface AiMetricsResult extends ResultBase {
16
+ kind: 'metrics';
17
+ items: readonly {
18
+ label: string;
19
+ value: AiResultValue;
20
+ }[];
21
+ }
22
+ export interface AiTextResult extends ResultBase {
23
+ kind: 'text';
24
+ text: string;
25
+ }
26
+ /** Add new result kinds here and their renderer in AiResultView. */
27
+ export type AiResultContent = AiTableResult | AiMetricsResult | AiTextResult;
28
+ export declare function formatAiResultValue(value: AiResultValue): string;
29
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { AiAssistantMountState } from './mount';
2
+ import { AiResultContent } from './results';
2
3
  export interface AiTranscriptMessage {
3
4
  id: string;
4
5
  group: string;
@@ -6,6 +7,7 @@ export interface AiTranscriptMessage {
6
7
  text: string;
7
8
  phase?: AiAssistantMountState['phase'];
8
9
  details?: string;
10
+ result?: AiResultContent;
9
11
  pending?: boolean;
10
12
  }
11
13
  /** Local presentation state only. Never supplies model context or persists values. */
@@ -1,4 +1,4 @@
1
1
  /** English message IDs and fallbacks; hosts supply translated values. */
2
- export declare const AI_UI_MESSAGES: readonly ["AI chat", "Clear chat", "Conversation messages", "Jump to latest", "You", "Assistant", "System", "Message actions", "Start a conversation", "Ask a question to get started.", "Message", "Type a message…", "Working…", "Reasoning summary", "Pending", "Running", "Completed", "Failed", "Cancelled", "{seconds}s", "Data history", "Review changes", "Apply changes", "Cancel changes", "Undo data change", "Redo data change", "Ask AI to change this view", "Filter or sort your data…", "Send", "Stop", "Enter to send · Shift+Enter for a new line", "Suggested requests", "More", "Activity", "Collapse activity", "Expand activity", "AI view assistant", "View steps", "Clear all", "Restore the starting view", "Restore previous view", "Reset view", "The view changed manually. Start a new request to continue.", "Remove request: {label}", "{count} step", "{count} steps", "{count} applied request", "{count} applied requests", "{count} matching rows"];
2
+ export declare const AI_UI_MESSAGES: readonly ["AI chat", "No results", "Clear chat", "Restart conversation", "New conversation", "Request history", "Clear chart", "Conversation messages", "Jump to latest", "You", "Assistant", "System", "Message actions", "Start a conversation", "Ask a question to get started.", "Message", "Type a message…", "Working…", "Reasoning summary", "Pending", "Running", "Completed", "Failed", "Cancelled", "{seconds}s", "Data history", "Review changes", "Proposed changes", "Change", "Current", "Proposed", "Apply changes", "Cancel changes", "Undo data change", "Redo data change", "Ask AI to change this view", "Filter or sort your data…", "Send", "Stop", "Enter to send · Shift+Enter for a new line", "Suggested requests", "More", "Search requests", "Activity", "Collapse activity", "Expand activity", "AI view assistant", "View steps", "Clear all", "Restore the starting view", "Restore previous view", "Reset view", "The view changed manually. Start a new request to continue.", "Remove request: {label}", "{count} step", "{count} steps", "{count} applied request", "{count} applied requests", "{count} matching rows"];
3
3
  export type AiUiTranslations = Partial<Record<(typeof AI_UI_MESSAGES)[number], string>>;
4
4
  export declare function translateAiText(text: string, translations?: Readonly<Record<string, string | undefined>>, values?: Readonly<Record<string, string | number>>): string;
@@ -40,5 +40,5 @@ export declare class UiComponent implements AfterContentInit, AfterViewInit, OnC
40
40
  }
41
41
  export type { PdfViewerProps, PdfViewerText } from '../pdf-viewer/component.js';
42
42
  export type { PdfViewerToolbarProps } from '../pdf-viewer/toolbar.js';
43
- export type { PdfViewerButton, PdfViewerButtonOptions, PdfViewerToolbarOptions, PdfViewerToolbarConfig } from '../pdf-viewer/toolbar-options.js';
43
+ export type { PdfViewerButton, PdfViewerButtonOptions, PdfViewerToolbarOptions, PdfViewerToolbarConfig, } from '../pdf-viewer/toolbar-options.js';
44
44
  export { defaultPdfViewerText } from '../pdf-viewer/index.js';