@revolist/ui 4.0.2-rc → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/OWNERSHIP.md +32 -32
  4. package/README.md +405 -265
  5. package/_button.scss +6 -2
  6. package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
  7. package/_chunks/calculator-CDWOuAcp.js +4 -0
  8. package/_chunks/{calendar-CpaUK7w1.js → calendar-CgXQgkga.js} +28 -18
  9. package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
  10. package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
  11. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  12. package/_chunks/choice-chips-SkllS5Kl.js +126 -0
  13. package/_chunks/clock-BOhPNlW3.js +4 -0
  14. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-DMJUChWC.js} +20 -22
  15. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-BpCTuIdm.js} +77 -72
  16. package/_chunks/{component-YDcfoOLz.js → component-CfeHXgIw.js} +301 -282
  17. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BKd7U8OW.js} +0 -12
  18. package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
  19. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  20. package/_chunks/control-Dcrjsunl.js +118 -0
  21. package/_chunks/{controls-DIum-E66.js → controls-B_6NJarZ.js} +217 -182
  22. package/_chunks/{date-control-BJSzu79z.js → date-control-C4h4m75W.js} +1 -1
  23. package/_chunks/{date-time-BxPJusp9.js → date-time-CTOSbzb0.js} +344 -307
  24. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  25. package/_chunks/dialog.parts-3w5FR06n.js +131 -0
  26. package/_chunks/{duration-87U2EoMS.js → duration-Bf2OS1V5.js} +19 -18
  27. package/_chunks/editor-popup-ByU7qiub.js +82 -0
  28. package/_chunks/field-configurator-D5dZRhDe.js +288 -0
  29. package/_chunks/field-context-D57PnBbH.js +5 -0
  30. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount-Bk4O_T7T.js} +1 -1
  31. package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
  32. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  33. package/_chunks/minus-BOAR3A1C.js +4 -0
  34. package/_chunks/mount-BRdcG60g.js +267 -0
  35. package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
  36. package/_chunks/native-control-B_fVA5bL.js +649 -0
  37. package/_chunks/{number-input-BeIadZuL.js → number-input-CmM6_2vR.js} +7 -7
  38. package/_chunks/{picker-DpP7iQLA.js → picker-DTqET-2W.js} +2 -2
  39. package/_chunks/plus-CbGRkIGl.js +4 -0
  40. package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
  41. package/_chunks/popup-C35Isk7p.js +378 -0
  42. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-C-6wcb9U.js} +1 -1
  43. package/_chunks/render-m5eMMwFR.js +83 -0
  44. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-DIl1gkV6.js} +1 -1
  45. package/_chunks/request-trail-DrhdpWiH.js +762 -0
  46. package/_chunks/rich-text-BnilBbhU.js +842 -0
  47. package/_chunks/rotate-left-BF6G883o.js +4 -0
  48. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  49. package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
  50. package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
  51. package/_chunks/tooltip-D4xkio5G.js +54 -0
  52. package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
  53. package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
  54. package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
  55. package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
  56. package/_dialog.scss +55 -21
  57. package/_form.scss +71 -21
  58. package/_legend.scss +25 -7
  59. package/_shared/data-query/index.d.ts +2 -2
  60. package/_shared/data-query/load-options.d.ts +2 -2
  61. package/_variables.scss +34 -32
  62. package/_view-switcher.scss +6 -0
  63. package/activity-message.d.ts +1 -1
  64. package/ai/_chat.scss +227 -0
  65. package/ai/_style.scss +170 -39
  66. package/ai/chat.d.ts +65 -0
  67. package/ai/components.d.ts +34 -5
  68. package/ai/index.d.ts +3 -0
  69. package/ai/index.js +3 -3
  70. package/ai/mount.d.ts +59 -6
  71. package/ai/prompt-history.d.ts +13 -0
  72. package/ai/request-trail.d.ts +9 -3
  73. package/ai/results/_style.scss +83 -0
  74. package/ai/results/index.d.ts +11 -0
  75. package/ai/results/metrics.d.ts +5 -0
  76. package/ai/results/table.d.ts +5 -0
  77. package/ai/results/text.d.ts +5 -0
  78. package/ai/results/types.d.ts +29 -0
  79. package/ai/transcript.d.ts +27 -0
  80. package/ai/translations.d.ts +1 -1
  81. package/angular/angular.d.ts +1 -1
  82. package/angular/angular.js +13 -10
  83. package/assignee/assignee.scss +28 -6
  84. package/assignee/index.js +34 -35
  85. package/avatar/avatar.style.scss +23 -6
  86. package/avatar/index.d.ts +25 -2
  87. package/avatar/index.js +33 -32
  88. package/badge.d.ts +1 -1
  89. package/badge.view.d.ts +8 -0
  90. package/brush-range/_brush-range.scss +55 -49
  91. package/brush-range/component.d.ts +1 -3
  92. package/brush-range/component.js +27 -27
  93. package/buttons/delete-button.d.ts +2 -1
  94. package/buttons/delete-button.js +1 -1
  95. package/buttons/delete-button.style.scss +6 -2
  96. package/buttons/remove-button.d.ts +1 -1
  97. package/buttons/remove-button.js +1 -1
  98. package/buttons/remove-button.style.scss +1 -1
  99. package/buttons/svg-button.d.ts +2 -1
  100. package/buttons/svg-button.js +19 -19
  101. package/calendar/_calendar.scss +27 -26
  102. package/calendar/calendar.js +1 -1
  103. package/calendar/header.js +1 -2
  104. package/calendar/index.js +2 -2
  105. package/cell-input.scss +3 -7
  106. package/cell-visuals/badge.style.scss +6 -3
  107. package/cell-visuals/bar-chart.style.scss +2 -1
  108. package/cell-visuals/column-type.style.css +12 -0
  109. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  110. package/cell-visuals/progress-line.style.scss +1 -4
  111. package/cell-visuals/sparkline.style.scss +2 -1
  112. package/cell-visuals/timeline.style.css +4 -2
  113. package/checkbox/checkbox.scss +6 -24
  114. package/choice-chips/index.d.ts +3 -1
  115. package/choice-chips/index.js +1 -1
  116. package/color-palette/color-palette.js +1 -1
  117. package/color-palette/color-palette.style.scss +88 -25
  118. package/color-palette/color-picker.js +2 -2
  119. package/color-palette/color-picker.style.scss +23 -10
  120. package/color-palette/common-palettes.d.ts +1 -1
  121. package/color-palette/common-palettes.js +1 -1
  122. package/color-palette/native.d.ts +15 -2
  123. package/component-catalog.d.ts +24 -11
  124. package/configurator-actions.d.ts +67 -0
  125. package/configurator-actions.js +1 -0
  126. package/configurator-aggregation-list.d.ts +14 -0
  127. package/configurator-aggregation-list.js +63 -0
  128. package/configurator-drop-zone.d.ts +39 -0
  129. package/configurator-drop-zone.js +66 -0
  130. package/configurator-field-icon.d.ts +10 -0
  131. package/configurator-field-icon.js +1 -0
  132. package/configurator-focus.d.ts +4 -0
  133. package/configurator-focus.js +39 -0
  134. package/configurator-sections.d.ts +42 -0
  135. package/configurator-sections.js +71 -0
  136. package/control-attributes.js +7 -7
  137. package/control-presentation.d.ts +8 -2
  138. package/control-presentation.js +25 -20
  139. package/controls.d.ts +19 -7
  140. package/controls.js +4 -3
  141. package/core/editor-popup-position.d.ts +6 -2
  142. package/core/editor-popup.d.ts +4 -0
  143. package/core/editor-popup.js +1 -1
  144. package/core/popover-controller.d.ts +35 -0
  145. package/core/popup-ownership.d.ts +2 -0
  146. package/core/selection-list-tooltips.d.ts +2 -0
  147. package/core/title-tooltip.d.ts +2 -0
  148. package/core/tooltip-session.d.ts +29 -0
  149. package/core/tooltip-surface.d.ts +13 -0
  150. package/core/tooltip-text.d.ts +6 -0
  151. package/core/tooltip.d.ts +35 -0
  152. package/core/top-layer-popup.d.ts +4 -0
  153. package/core/top-layer-popup.js +1 -23
  154. package/date-time/attach.d.ts +1 -1
  155. package/date-time/date-control.d.ts +1 -1
  156. package/date-time/field.d.ts +3 -2
  157. package/date-time/index.js +1 -1
  158. package/date-time/style.scss +242 -39
  159. package/date-time/time-selection.d.ts +3 -1
  160. package/date-time/types.d.ts +5 -1
  161. package/dialog/dialog-action-footer.d.ts +17 -2
  162. package/dialog/dialog.dom.d.ts +15 -2
  163. package/dialog/dialog.dom.js +3 -3
  164. package/dialog/dialog.parts.d.ts +1 -1
  165. package/dialog/dialog.parts.js +1 -1
  166. package/distribution-chart/_distribution-chart.scss +113 -77
  167. package/distribution-chart/area-chart.js +1 -1
  168. package/distribution-chart/bar-chart.d.ts +5 -2
  169. package/distribution-chart/bar-chart.js +7 -3
  170. package/distribution-chart/chart-frame.d.ts +2 -1
  171. package/distribution-chart/index.d.ts +1 -1
  172. package/distribution-chart/line-chart.js +1 -1
  173. package/dropdown/content.d.ts +2 -1
  174. package/dropdown/content.js +1 -142
  175. package/dropdown/control.d.ts +14 -0
  176. package/dropdown/control.js +1 -0
  177. package/dropdown/control.view.d.ts +6 -0
  178. package/dropdown/dropdown.types.d.ts +5 -1
  179. package/dropdown/editor-dropdown.style.scss +54 -16
  180. package/dropdown/index.d.ts +1 -1
  181. package/dropdown/index.js +3 -4
  182. package/dropdown/lookup-field.d.ts +5 -0
  183. package/dropdown/lookup-field.js +2 -1
  184. package/dropdown/popup.d.ts +2 -2
  185. package/dropdown/popup.js +1 -141
  186. package/duration/index.js +1 -1
  187. package/duration/style.scss +1 -1
  188. package/editor-actions.js +1 -1
  189. package/editor-layout/index.d.ts +4 -4
  190. package/editor-layout/index.js +39 -34
  191. package/editor-layout/style.scss +82 -18
  192. package/field-configurator.d.ts +39 -1
  193. package/field-configurator.js +4 -170
  194. package/field-expansion.d.ts +9 -0
  195. package/fieldset.d.ts +3 -0
  196. package/filter/filters/slider/_single-slider.scss +57 -38
  197. package/filter/filters/slider/_slider.scss +41 -33
  198. package/filter/filters/slider/control.js +2 -0
  199. package/filter/filters/slider/runtime.js +49 -22
  200. package/filter/filters/slider/single.js +1 -1
  201. package/filter-badge.js +1 -1
  202. package/filter-controls.d.ts +0 -1
  203. package/filter-controls.js +9 -10
  204. package/form-controls/field-context.d.ts +5 -0
  205. package/form-controls/index.d.ts +10 -2
  206. package/form-controls/index.js +4 -9
  207. package/form-controls/presentation.d.ts +1 -1
  208. package/form-controls/presentation.js +53 -45
  209. package/formatting/index.d.ts +1 -1
  210. package/formatting/index.js +40 -35
  211. package/formatting/styles.scss +14 -57
  212. package/framework.js +237 -226
  213. package/history-controls.d.ts +14 -0
  214. package/history-controls.js +27 -0
  215. package/icon-toolbar.d.ts +62 -0
  216. package/icon-toolbar.js +1 -0
  217. package/icons/icon.d.ts +1 -1
  218. package/legend.d.ts +1 -1
  219. package/masked-input/index.js +1 -1
  220. package/native-control.d.ts +6 -5
  221. package/native-control.js +3 -26
  222. package/native-controls.d.ts +54 -2
  223. package/native-styles.css +1 -1
  224. package/native-styles.scss +6 -2
  225. package/native.d.ts +3 -3
  226. package/native.js +41 -37
  227. package/number-input/index.d.ts +1 -1
  228. package/number-input/index.js +1 -1
  229. package/package.json +88 -14
  230. package/pagination.d.ts +3 -0
  231. package/pagination.js +50 -40
  232. package/pdf-viewer/header.d.ts +1 -1
  233. package/pdf-viewer/index.d.ts +2 -2
  234. package/pdf-viewer/index.js +1 -1
  235. package/pdf-viewer/search-bar.d.ts +1 -1
  236. package/pdf-viewer/status.d.ts +1 -1
  237. package/pdf-viewer/style.scss +205 -45
  238. package/pickers.d.ts +5 -1
  239. package/preact-mount.js +1 -1
  240. package/preact.d.ts +15 -10
  241. package/preact.js +109 -64
  242. package/progress/_bar.scss +9 -3
  243. package/progress/_circular.scss +2 -1
  244. package/rating-choice.js +1 -1
  245. package/react-adapter.d.ts +4 -2
  246. package/react-control.d.ts +1 -0
  247. package/react.d.ts +20 -11
  248. package/react.js +72 -88
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-popup.js +1 -1
  253. package/resource-picker/resource-picker.js +73 -71
  254. package/resource-picker/resource-picker.scss +66 -35
  255. package/rich-text/engine.d.ts +17 -19
  256. package/rich-text/format-html.d.ts +2 -0
  257. package/rich-text/index.d.ts +11 -7
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/model.d.ts +6 -3
  260. package/rich-text/render-model.d.ts +4 -5
  261. package/rich-text/style.scss +295 -55
  262. package/rich-text/syntax.d.ts +5 -2
  263. package/rich-text/toolbar.d.ts +6 -6
  264. package/rich-text/translations.d.ts +5 -15
  265. package/search-input/index.js +1 -1
  266. package/search-input/native.d.ts +21 -2
  267. package/select.d.ts +22 -0
  268. package/select.js +1 -0
  269. package/selection-list.d.ts +1 -0
  270. package/selection-list.js +3 -1
  271. package/status-feedback/exit-snapshot.js +1 -1
  272. package/status-feedback/index.js +2 -2
  273. package/status-feedback/popover.js +9 -9
  274. package/status-feedback/render.js +3 -44
  275. package/status-feedback/status-feedback.scss +130 -34
  276. package/status-feedback/types.d.ts +4 -0
  277. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  278. package/styles/_activity-message.scss +24 -7
  279. package/styles/_alert.scss +78 -17
  280. package/styles/_cell-editor-frame.scss +11 -0
  281. package/styles/_compositions.scss +404 -82
  282. package/styles/_control.scss +42 -12
  283. package/styles/_disclosure.scss +15 -5
  284. package/styles/_editor-counter.scss +16 -6
  285. package/styles/_editor-slider.scss +8 -4
  286. package/styles/_field-configurator.scss +321 -23
  287. package/styles/_fields-grid.scss +49 -0
  288. package/styles/_filter-controls.scss +10 -2
  289. package/styles/_icon-action.scss +48 -15
  290. package/styles/_loading.scss +12 -3
  291. package/styles/_motion.scss +32 -9
  292. package/styles/_palette.scss +0 -24
  293. package/styles/_primitives.scss +376 -116
  294. package/styles/_theme.scss +130 -86
  295. package/styles/_thresholds.scss +28 -25
  296. package/styles/_time-grid.scss +8 -3
  297. package/styles/_tokens.scss +6 -1
  298. package/styles/configurator-actions.scss +241 -0
  299. package/styles/pagination.css +213 -0
  300. package/styles/{legacy-rating.css → rating.css} +8 -3
  301. package/styles.css +1 -1
  302. package/styles.scss +3 -5
  303. package/surfaces.d.ts +38 -2
  304. package/surfaces.js +37 -134
  305. package/svelte/UiComponent.server.js +1 -48
  306. package/svelte/UiComponent.svelte +44 -32
  307. package/svelte.d.ts +1 -1
  308. package/svelte.js +33 -68
  309. package/switch/index.js +15 -14
  310. package/time-grid.d.ts +0 -1
  311. package/time-grid.js +38 -37
  312. package/timeline-track/_style.scss +96 -24
  313. package/timeline-track/component.d.ts +5 -1
  314. package/timeline-track/index.js +71 -54
  315. package/timeline-track/model.d.ts +9 -0
  316. package/timeline-track/model.js +10 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue.d.ts +51 -35
  320. package/vue.js +149 -178
  321. package/_chunks/chart-frame-BC99KjGa.js +0 -127
  322. package/_chunks/choice-chips-Cs4D-3nH.js +0 -110
  323. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  324. package/_chunks/control-tooltip-ztgmsG7H.js +0 -100
  325. package/_chunks/dialog.parts-DBqo3Qwb.js +0 -134
  326. package/_chunks/dropdown-voWqmwAe.js +0 -357
  327. package/_chunks/editor-popup-D3JdS8l3.js +0 -81
  328. package/_chunks/mount-DZe_6VtR.js +0 -90
  329. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  330. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  331. package/avatar/index.view.d.ts +0 -25
  332. package/color-palette/native.view.d.ts +0 -15
  333. package/control-presentation.view.d.ts +0 -8
  334. package/dialog/dialog-action-footer.view.d.ts +0 -20
  335. package/dialog/dialog.dom.view.d.ts +0 -15
  336. package/form-controls/index.view.d.ts +0 -12
  337. package/formatting/control-tooltip.d.ts +0 -27
  338. package/native-controls.view.d.ts +0 -54
  339. package/react-native-select.d.ts +0 -6
  340. package/search-input/native.view.d.ts +0 -21
  341. package/styles/legacy-pagination.css +0 -112
  342. package/surfaces.view.d.ts +0 -63
  343. package/vue-native-select.d.ts +0 -9
@@ -5,9 +5,9 @@ import type { QueryObserverOptions } from '@tanstack/query-core';
5
5
  /** Read policy only: identity, transport, acceptance framing and projection stay engine-owned. */
6
6
  export declare const nativeReadOptionKeys: readonly ["enabled", "staleTime", "gcTime", "refetchInterval", "refetchIntervalInBackground", "refetchOnMount", "refetchOnWindowFocus", "refetchOnReconnect", "retry", "retryDelay", "retryOnMount", "networkMode", "meta"];
7
7
  /** Native callbacks receive the native Query; its cached data is engine-owned/opaque. */
8
- export type NativeReadOptions = Pick<QueryObserverOptions<unknown, unknown>, typeof nativeReadOptionKeys[number]>;
8
+ export type NativeReadOptions = Pick<QueryObserverOptions<unknown, unknown>, (typeof nativeReadOptionKeys)[number]>;
9
9
  /** Also protects JavaScript callers from overriding keys, queryFn or acceptance framing. */
10
- export declare function nativeReadOptions<FnData, Data = FnData>(options?: NativeReadOptions): Pick<QueryObserverOptions<FnData, unknown, Data, Data>, typeof nativeReadOptionKeys[number]>;
10
+ export declare function nativeReadOptions<FnData, Data = FnData>(options?: NativeReadOptions): Pick<QueryObserverOptions<FnData, unknown, Data, Data>, (typeof nativeReadOptionKeys)[number]>;
11
11
  /**
12
12
  * Optional native read policies plus shared scope, consistency and product reconciliation.
13
13
  * Native options: enabled, staleTime, gcTime, refetchInterval, refetchIntervalInBackground,
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;
package/ai/_chat.scss ADDED
@@ -0,0 +1,227 @@
1
+ .rv-ai-chat {
2
+ display: flex;
3
+ flex-direction: column;
4
+ min-width: 0;
5
+ min-height: 0;
6
+ width: 100%;
7
+ height: 100%;
8
+ color: var(--rv-ui-text);
9
+ background: var(--rv-ui-surface);
10
+ font: 400 0.875rem/1.55 var(--rv-ai-font, system-ui, sans-serif);
11
+ }
12
+ .rv-ai-chat-scroll {
13
+ position: relative;
14
+ display: flex;
15
+ flex: 1;
16
+ min-height: 0;
17
+ min-width: 0;
18
+ }
19
+ .rv-ai-chat-viewport {
20
+ flex: 1;
21
+ min-width: 0;
22
+ overflow: auto;
23
+ overscroll-behavior: contain;
24
+ overflow-anchor: none;
25
+ scrollbar-gutter: stable;
26
+ &:focus-visible {
27
+ outline: 2px solid var(--rv-ui-accent);
28
+ outline-offset: -2px;
29
+ }
30
+ }
31
+ .rv-ai-chat-content {
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 1.5rem;
35
+ min-height: 100%;
36
+ padding: 1.25rem;
37
+ }
38
+ .rv-ai-chat-empty {
39
+ margin: auto;
40
+ text-align: center;
41
+ max-width: 24rem;
42
+ padding-block: 2rem;
43
+ }
44
+ .rv-ai-chat-empty p {
45
+ color: var(--rv-ui-text-muted);
46
+ margin-block: 0.5rem;
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
+ }
59
+ .rv-ai-chat-jump.rv-btn {
60
+ position: absolute;
61
+ inset-block-end: 0.75rem;
62
+ inset-inline-start: 50%;
63
+ transform: translateX(-50%);
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;
73
+ }
74
+ .rv-ai-chat-composer {
75
+ flex: none;
76
+ padding: 0.75rem 1rem 1rem;
77
+ }
78
+ .rv-ai-message {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 0.625rem;
82
+ min-width: 0;
83
+ max-width: 100%;
84
+ align-self: flex-start;
85
+ }
86
+ .rv-ai-message--assistant {
87
+ align-self: stretch;
88
+ width: 100%;
89
+ }
90
+ .rv-ai-message-content {
91
+ white-space: pre-wrap;
92
+ overflow-wrap: anywhere;
93
+ min-width: 0;
94
+ }
95
+ .rv-ai-message--user {
96
+ align-self: flex-end;
97
+ max-width: 85%;
98
+ .rv-ai-message-content {
99
+ padding: 0.625rem 1rem;
100
+ border-radius: 1.125rem;
101
+ background: var(--rv-ui-surface-sunken);
102
+ }
103
+ .rv-ai-message-actions {
104
+ justify-content: flex-end;
105
+ }
106
+ }
107
+ .rv-ai-message--system {
108
+ color: var(--rv-ui-text-muted);
109
+ font-size: 0.8125rem;
110
+ align-self: center;
111
+ }
112
+ .rv-ai-message-actions {
113
+ display: flex;
114
+ align-items: center;
115
+ flex-wrap: wrap;
116
+ gap: 0.25rem;
117
+ }
118
+ .rv-ai-trace {
119
+ font-size: 0.8125rem;
120
+ min-width: 0;
121
+ }
122
+ .rv-ai-trace > .rv-disclosure-summary {
123
+ display: flex;
124
+ align-items: center;
125
+ gap: 0.5rem;
126
+ padding: 0.25rem 0;
127
+ color: var(--rv-ui-text-muted);
128
+ cursor: pointer;
129
+ }
130
+ .rv-ai-trace-heading {
131
+ display: inline-flex;
132
+ align-items: center;
133
+ gap: 0.5rem;
134
+ min-width: 0;
135
+ overflow-wrap: anywhere;
136
+ }
137
+ .rv-ai-trace-content {
138
+ padding: 0.625rem 0 0.25rem 1rem;
139
+ margin-inline-start: 0.5rem;
140
+ border-inline-start: 1px solid var(--rv-ui-border);
141
+ white-space: pre-wrap;
142
+ overflow-wrap: anywhere;
143
+ }
144
+ .rv-ai-task-item {
145
+ display: flex;
146
+ align-items: flex-start;
147
+ gap: 0.5rem;
148
+ padding-block: 0.3rem;
149
+ }
150
+ .rv-ai-task-icon {
151
+ display: inline-flex;
152
+ width: 1.25rem;
153
+ height: 1.25rem;
154
+ flex: none;
155
+ align-items: center;
156
+ justify-content: center;
157
+ svg {
158
+ width: 0.875rem;
159
+ height: 0.875rem;
160
+ }
161
+ &[data-status='error'] {
162
+ color: var(--rv-ui-danger);
163
+ }
164
+ &[data-status='running'] {
165
+ color: var(--rv-ui-accent);
166
+ }
167
+ }
168
+ @media (max-width: 480px) {
169
+ .rv-ai-chat-content {
170
+ padding: 1rem;
171
+ }
172
+ .rv-ai-message--user {
173
+ max-width: 95%;
174
+ }
175
+ }
176
+
177
+ .rv-ai-trace-chevron {
178
+ display: inline-flex;
179
+ align-items: center;
180
+ }
181
+ .rv-ai-trace[open] .rv-ai-trace-chevron {
182
+ transform: rotate(180deg);
183
+ }
184
+
185
+ .rv-ai-trace-line {
186
+ color: var(--rv-ui-text-muted);
187
+ padding-block: 0.25rem;
188
+ }
189
+
190
+ // Mounted assistants keep the composer in normal flow above the grid.
191
+ .rv-ai-mounted-chat {
192
+ height: auto;
193
+ .rv-ai-chat-viewport {
194
+ min-height: 0;
195
+ max-height: min(18rem, 40vh);
196
+ }
197
+ .rv-ai-chat-content {
198
+ min-height: 0;
199
+ padding: 0.75rem 0;
200
+ &:empty {
201
+ padding: 0;
202
+ }
203
+ }
204
+ .rv-ai-chat-composer {
205
+ padding: 0.75rem 0 0;
206
+ }
207
+ .rv-ai-result-actions {
208
+ margin-block-start: 0.75rem;
209
+ }
210
+ }
211
+ .rv-ai-chat-result {
212
+ max-width: 100%;
213
+ margin: 0;
214
+ padding: 0.625rem;
215
+ border-radius: 0.5rem;
216
+ background: var(--rv-ui-surface-sunken);
217
+ font: inherit;
218
+ white-space: pre-wrap;
219
+ overflow-wrap: anywhere;
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,3 +1,5 @@
1
+ @use './chat';
2
+ @use './results/style';
1
3
  .rv-ai-assistant {
2
4
  box-sizing: border-box;
3
5
  width: 100%;
@@ -18,11 +20,12 @@
18
20
  min-width: 0;
19
21
  }
20
22
  .rv-ai-prompt-composer {
21
- display: flex;
22
- flex-direction: column;
23
+ display: grid;
24
+ grid-template-columns: minmax(0, 1fr) auto;
25
+ align-items: end;
23
26
  min-width: 0;
24
27
  border: 1px solid var(--rv-ui-border);
25
- border-radius: calc(var(--rv-ui-radius, 6px) + 10px);
28
+ border-radius: 24px;
26
29
  background: var(--rv-ui-surface-sunken);
27
30
  transition:
28
31
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
@@ -34,10 +37,12 @@
34
37
  }
35
38
  }
36
39
  .rv-ai-prompt-composer textarea.rv-control {
40
+ grid-column: 1;
41
+ grid-row: 1;
37
42
  display: block;
38
- min-height: 4.75rem;
43
+ min-height: 1.5rem;
39
44
  max-height: 12rem;
40
- padding: 0.875rem 1rem 0.5rem;
45
+ padding: 0.75rem 1rem;
41
46
  border: 0;
42
47
  border-radius: inherit;
43
48
  background: transparent;
@@ -52,95 +57,126 @@
52
57
  }
53
58
  }
54
59
  .rv-ai-prompt-toolbar {
60
+ grid-column: 2;
61
+ grid-row: 1;
55
62
  display: flex;
56
63
  gap: 0.75rem;
57
64
  align-items: center;
58
65
  justify-content: space-between;
59
66
  min-width: 0;
60
- padding: 0.375rem 0.625rem 0.625rem 1rem;
67
+ padding: 0.5rem 0.5rem 0.5rem 0;
61
68
  }
62
69
  .rv-ai-prompt-footer {
70
+ grid-column: 1 / -1;
71
+ grid-row: 2;
63
72
  min-width: 0;
64
73
  margin-inline: 1rem;
65
- padding-block: 0.625rem 0.25rem;
66
- border-block-start: 1px solid var(--rv-ui-border);
74
+ padding-block: 0.625rem;
67
75
  &:empty {
68
76
  display: none;
69
77
  }
70
78
  }
79
+ .rv-ai-prompt-composer:has(.rv-ai-prompt-hint) {
80
+ grid-template-columns: minmax(0, 1fr);
81
+ .rv-ai-prompt-toolbar {
82
+ grid-column: 1;
83
+ grid-row: 3;
84
+ padding-inline-start: 1rem;
85
+ }
86
+ }
71
87
  .rv-ai-request-trail {
72
88
  min-width: 0;
73
89
  }
74
- .rv-ai-trail-trigger .rv-svg-icon {
75
- transition: transform var(--rv-ui-motion-fast, 120ms)
76
- var(--rv-ui-motion-ease, ease);
77
- }
78
- .rv-ai-trail-trigger[aria-expanded='true'] .rv-svg-icon {
79
- transform: rotate(180deg);
80
- }
81
90
  .rv-popover.rv-ai-trail-popover {
82
91
  box-sizing: border-box;
83
92
  width: 22rem;
84
93
  max-width: calc(100% - 16px);
85
94
  max-height: min(30rem, calc(100dvh - 16px));
86
95
  padding: 0;
96
+ border-radius: 12px;
87
97
  font: inherit;
88
98
  &:focus {
89
99
  outline: none;
90
100
  }
91
101
  }
92
102
  .rv-ai-trail-header {
93
- padding: 0.75rem 0.875rem 0.5rem;
103
+ padding: 0.875rem 1rem 0.625rem;
94
104
  }
95
105
  .rv-ai-trail-label {
96
106
  display: flex;
97
107
  align-items: center;
98
108
  gap: 0.5rem;
99
- color: var(--rv-ui-text-muted);
109
+ color: var(--rv-ui-text);
100
110
  font-size: 0.75rem;
101
111
  font-weight: var(--rv-ui-font-weight-medium, 500);
102
112
  }
103
113
  .rv-ai-trail-steps {
104
114
  display: flex;
105
115
  flex-direction: column;
106
- gap: 0.375rem;
116
+ gap: 0.25rem;
107
117
  min-width: 0;
108
118
  margin: 0;
109
- padding: 0 0.5rem 0.5rem;
119
+ padding: 0 0.5rem 0.625rem;
110
120
  list-style: none;
111
121
  }
122
+ .rv-ai-step {
123
+ position: relative;
124
+ &:not(:last-child)::before {
125
+ content: '';
126
+ position: absolute;
127
+ left: 20px;
128
+ top: 32px;
129
+ bottom: -12px;
130
+ width: 1px;
131
+ background: var(--rv-ui-border);
132
+ }
133
+ }
112
134
  .rv-ai-step-chip {
113
135
  display: flex;
114
136
  align-items: flex-start;
115
137
  gap: 0.625rem;
116
138
  min-width: 0;
117
139
  padding: 0.5rem;
118
- border: 1px solid var(--rv-ui-border);
119
- border-radius: var(--rv-ui-radius, 6px);
120
- background: var(--rv-ui-surface);
140
+ border: 0;
141
+ border-radius: 8px;
142
+ background: transparent;
121
143
  color: var(--rv-ui-text);
122
144
  }
145
+ .rv-ai-step:hover .rv-ai-step-chip,
146
+ .rv-ai-step:focus-within .rv-ai-step-chip {
147
+ background: var(--rv-ui-surface-hover);
148
+ }
123
149
  .rv-ai-step[data-current] .rv-ai-step-chip {
124
- background: var(--rv-ui-selected-bg);
125
- border-color: color-mix(
150
+ background: color-mix(
126
151
  in srgb,
127
- var(--rv-ui-accent) 30%,
128
- var(--rv-ui-border)
152
+ var(--rv-ui-selected-bg) 55%,
153
+ var(--rv-ui-surface)
129
154
  );
130
155
  }
131
156
  .rv-ai-step-number {
157
+ position: relative;
158
+ box-sizing: border-box;
132
159
  flex: none;
133
- min-width: 1.25rem;
134
- padding-block: 0.25rem;
160
+ min-width: 24px;
161
+ height: 24px;
162
+ margin-block: 2px;
163
+ padding: 0 4px;
164
+ border-radius: 999px;
165
+ background: var(--rv-ui-surface-sunken);
135
166
  color: var(--rv-ui-text-muted);
136
167
  font-size: 0.6875rem;
137
168
  font-variant-numeric: tabular-nums;
138
169
  text-align: center;
170
+ line-height: 24px;
171
+ }
172
+ .rv-ai-step[data-current] .rv-ai-step-number {
173
+ background: var(--rv-ui-accent);
174
+ color: var(--rv-ui-accent-contrast, #fff);
139
175
  }
140
176
  .rv-ai-step-label {
141
177
  flex: 1;
142
178
  min-width: 0;
143
- padding-block: 0.1875rem;
179
+ padding-block: 0.25rem;
144
180
  overflow-wrap: anywhere;
145
181
  white-space: pre-wrap;
146
182
  font-size: 0.75rem;
@@ -178,27 +214,43 @@
178
214
  overflow-wrap: anywhere;
179
215
  }
180
216
  .rv-ai-prompt-toolbar .rv-ai-prompt-submit {
181
- --rv-icon-button-size: 32px;
217
+ --rv-icon-button-size: 30px;
218
+ min-height: var(--rv-icon-button-size);
182
219
  flex: 0 0 auto;
183
- padding: 0.5rem;
220
+ padding: 0.25rem;
184
221
  border-radius: 50%;
185
222
  }
186
223
  .rv-ai-suggestions {
187
224
  display: flex;
188
- gap: 0.5rem;
225
+ flex-wrap: wrap;
226
+ align-items: center;
227
+ gap: 0.375rem;
189
228
  min-width: 0;
190
- overflow-x: auto;
191
- overscroll-behavior-x: contain;
192
- scroll-padding-inline: 4px;
193
- scrollbar-width: thin;
194
- // Give keyboard focus outlines room inside the scrolling row.
229
+ // Leave room for focus outlines.
195
230
  padding: 4px;
196
231
  margin: -4px;
197
232
  }
233
+ .rv-ai-suggestions .dropdown-container.rv-ai-examples {
234
+ flex: 0 0 28px;
235
+ width: 28px;
236
+ height: 28px;
237
+ }
238
+ .rv-ai-examples .dropdown-trigger {
239
+ justify-content: center;
240
+ width: 28px;
241
+ height: 28px;
242
+ padding: 0;
243
+ border: 0;
244
+ border-radius: var(--rv-ui-radius, 6px);
245
+ background: transparent;
246
+ color: var(--rv-ui-text);
247
+ font-size: 0.75rem;
248
+ line-height: 1.25;
249
+ }
198
250
  .rv-ai-suggestions .rv-ai-suggestion {
199
251
  flex: 0 0 auto;
200
- min-height: 32px;
201
- padding: 0.5rem 0.75rem;
252
+ min-height: 28px;
253
+ padding: 0.25rem 0.625rem;
202
254
  border-radius: 999px;
203
255
  font-size: 0.75rem;
204
256
  line-height: 1.25;
@@ -250,3 +302,82 @@
250
302
  outline-offset: 2px;
251
303
  }
252
304
  }
305
+
306
+ .rv-ai-result-details {
307
+ margin: 0;
308
+ max-height: 16rem;
309
+ overflow: auto;
310
+ white-space: pre-wrap;
311
+ overflow-wrap: anywhere;
312
+ font-size: 0.875em;
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
+ }