@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.
- package/MIGRATION.md +36 -0
- package/OWNERSHIP.md +32 -32
- package/README.md +136 -78
- package/_button.scss +6 -2
- package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
- package/_chunks/calculator-CDWOuAcp.js +4 -0
- package/_chunks/{calendar-xpZ0v3xf.js → calendar-CgXQgkga.js} +19 -19
- package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
- package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
- package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
- package/_chunks/choice-chips-SkllS5Kl.js +126 -0
- package/_chunks/{color-palette-D8vyPfld.js → color-palette-DMJUChWC.js} +20 -22
- package/_chunks/color-picker-BpCTuIdm.js +143 -0
- package/_chunks/{component-C_T2VN5u.js → component-CfeHXgIw.js} +279 -264
- package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-BKd7U8OW.js} +0 -8
- package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
- package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
- package/_chunks/{control-AHKXD5Eu.js → control-Dcrjsunl.js} +42 -17
- package/_chunks/controls-B_6NJarZ.js +650 -0
- package/_chunks/{date-control-DrVFX13g.js → date-control-C4h4m75W.js} +1 -1
- package/_chunks/{date-time-qIhp5vaX.js → date-time-CTOSbzb0.js} +317 -278
- package/_chunks/dialog.parts-3w5FR06n.js +131 -0
- package/_chunks/{duration-CL68Em0o.js → duration-Bf2OS1V5.js} +5 -5
- package/_chunks/editor-popup-ByU7qiub.js +82 -0
- package/_chunks/field-configurator-D5dZRhDe.js +288 -0
- package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-Bk4O_T7T.js} +1 -1
- package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
- package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
- package/_chunks/minus-BOAR3A1C.js +4 -0
- package/_chunks/mount-BRdcG60g.js +267 -0
- package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
- package/_chunks/native-control-B_fVA5bL.js +649 -0
- package/_chunks/{number-input-BKwA5FnM.js → number-input-CmM6_2vR.js} +7 -7
- package/_chunks/{picker-h1P5RUgp.js → picker-DTqET-2W.js} +2 -2
- package/_chunks/plus-CbGRkIGl.js +4 -0
- package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
- package/_chunks/{popup-CT2uD3go.js → popup-C35Isk7p.js} +115 -104
- package/_chunks/{rating-choice-DZgmaic0.js → rating-choice-C-6wcb9U.js} +1 -1
- package/_chunks/{reorder-list-CSlqAGHw.js → reorder-list-DIl1gkV6.js} +1 -1
- package/_chunks/request-trail-DrhdpWiH.js +762 -0
- package/_chunks/rich-text-BnilBbhU.js +842 -0
- package/_chunks/rotate-left-BF6G883o.js +4 -0
- package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
- package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
- package/_chunks/tooltip-D4xkio5G.js +54 -0
- package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
- package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
- package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
- package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
- package/_dialog.scss +57 -22
- package/_form.scss +71 -21
- package/_legend.scss +25 -7
- package/_shared/data-query/index.d.ts +2 -2
- package/_shared/data-query/load-options.d.ts +2 -2
- package/_variables.scss +34 -32
- package/_view-switcher.scss +6 -0
- package/activity-message.d.ts +1 -1
- package/ai/_chat.scss +35 -3
- package/ai/_style.scss +76 -16
- package/ai/chat.d.ts +3 -1
- package/ai/components.d.ts +16 -3
- package/ai/index.d.ts +1 -0
- package/ai/index.js +3 -3
- package/ai/mount.d.ts +30 -6
- package/ai/request-trail.d.ts +9 -3
- package/ai/results/_style.scss +83 -0
- package/ai/results/index.d.ts +11 -0
- package/ai/results/metrics.d.ts +5 -0
- package/ai/results/table.d.ts +5 -0
- package/ai/results/text.d.ts +5 -0
- package/ai/results/types.d.ts +29 -0
- package/ai/transcript.d.ts +2 -0
- package/ai/translations.d.ts +1 -1
- package/angular/angular.d.ts +1 -1
- package/angular/angular.js +13 -7
- package/assignee/assignee.scss +28 -6
- package/assignee/index.js +2 -2
- package/avatar/avatar.style.scss +23 -6
- package/avatar/index.d.ts +25 -2
- package/avatar/index.js +33 -32
- package/badge.d.ts +1 -1
- package/badge.view.d.ts +8 -0
- package/brush-range/_brush-range.scss +55 -49
- package/brush-range/component.d.ts +1 -3
- package/brush-range/component.js +27 -27
- package/buttons/delete-button.style.scss +6 -2
- package/buttons/remove-button.d.ts +1 -1
- package/buttons/remove-button.style.scss +1 -1
- package/buttons/svg-button.d.ts +1 -1
- package/buttons/svg-button.js +16 -16
- package/calendar/_calendar.scss +21 -25
- package/calendar/calendar.js +1 -1
- package/calendar/header.js +1 -2
- package/calendar/index.js +2 -2
- package/cell-input.scss +3 -7
- package/cell-visuals/badge.style.scss +6 -3
- package/cell-visuals/bar-chart.style.scss +2 -1
- package/cell-visuals/column-type.style.css +12 -0
- package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
- package/cell-visuals/progress-line.style.scss +1 -4
- package/cell-visuals/sparkline.style.scss +2 -1
- package/cell-visuals/timeline.style.css +4 -2
- package/checkbox/checkbox.scss +6 -24
- package/choice-chips/index.d.ts +3 -1
- package/choice-chips/index.js +1 -1
- package/color-palette/color-palette.js +1 -1
- package/color-palette/color-palette.style.scss +88 -25
- package/color-palette/color-picker.js +2 -2
- package/color-palette/color-picker.style.scss +23 -10
- package/color-palette/common-palettes.d.ts +1 -1
- package/color-palette/common-palettes.js +1 -1
- package/color-palette/native.d.ts +15 -2
- package/component-catalog.d.ts +9 -7
- package/configurator-actions.d.ts +67 -0
- package/configurator-actions.js +1 -0
- package/configurator-aggregation-list.d.ts +14 -0
- package/configurator-aggregation-list.js +63 -0
- package/configurator-drop-zone.d.ts +39 -0
- package/configurator-drop-zone.js +66 -0
- package/configurator-field-icon.d.ts +10 -0
- package/configurator-field-icon.js +1 -0
- package/configurator-focus.d.ts +4 -0
- package/configurator-focus.js +39 -0
- package/configurator-sections.d.ts +42 -0
- package/configurator-sections.js +71 -0
- package/control-presentation.d.ts +8 -2
- package/control-presentation.js +25 -20
- package/controls.d.ts +12 -2
- package/controls.js +4 -3
- package/core/editor-popup-position.d.ts +6 -2
- package/core/editor-popup.d.ts +4 -0
- package/core/editor-popup.js +1 -1
- package/core/popover-controller.d.ts +35 -0
- package/core/popup-ownership.d.ts +2 -0
- package/core/selection-list-tooltips.d.ts +2 -0
- package/core/title-tooltip.d.ts +2 -0
- package/core/tooltip-session.d.ts +29 -0
- package/core/tooltip-surface.d.ts +13 -0
- package/core/tooltip-text.d.ts +6 -0
- package/core/tooltip.d.ts +35 -0
- package/core/top-layer-popup.d.ts +4 -0
- package/core/top-layer-popup.js +1 -23
- package/date-time/attach.d.ts +1 -1
- package/date-time/date-control.d.ts +1 -1
- package/date-time/field.d.ts +3 -2
- package/date-time/index.js +1 -1
- package/date-time/style.scss +239 -36
- package/date-time/time-selection.d.ts +3 -1
- package/date-time/types.d.ts +5 -1
- package/dialog/dialog-action-footer.d.ts +17 -2
- package/dialog/dialog.dom.d.ts +15 -2
- package/dialog/dialog.dom.js +9 -9
- package/dialog/dialog.parts.d.ts +1 -1
- package/dialog/dialog.parts.js +1 -1
- package/distribution-chart/_distribution-chart.scss +113 -77
- package/distribution-chart/area-chart.js +1 -1
- package/distribution-chart/bar-chart.js +1 -1
- package/distribution-chart/chart-frame.d.ts +1 -1
- package/distribution-chart/index.d.ts +1 -1
- package/distribution-chart/line-chart.js +1 -1
- package/dropdown/content.js +1 -1
- package/dropdown/control.js +1 -1
- package/dropdown/dropdown.types.d.ts +1 -1
- package/dropdown/editor-dropdown.style.scss +19 -9
- package/dropdown/index.js +2 -2
- package/dropdown/lookup-field.d.ts +5 -0
- package/dropdown/lookup-field.js +2 -1
- package/dropdown/popup.d.ts +2 -2
- package/dropdown/popup.js +1 -1
- package/duration/index.js +1 -1
- package/editor-actions.js +1 -1
- package/editor-layout/index.d.ts +4 -4
- package/editor-layout/index.js +39 -34
- package/editor-layout/style.scss +82 -18
- package/field-configurator.d.ts +39 -1
- package/field-configurator.js +4 -170
- package/field-expansion.d.ts +9 -0
- package/filter/filters/slider/_single-slider.scss +57 -38
- package/filter/filters/slider/_slider.scss +41 -33
- package/filter/filters/slider/control.js +2 -0
- package/filter/filters/slider/runtime.js +49 -22
- package/filter/filters/slider/single.js +1 -1
- package/filter-badge.js +1 -1
- package/filter-controls.d.ts +0 -1
- package/filter-controls.js +5 -6
- package/form-controls/index.d.ts +10 -2
- package/form-controls/index.js +7 -7
- package/form-controls/presentation.d.ts +1 -1
- package/form-controls/presentation.js +12 -12
- package/formatting/index.d.ts +1 -1
- package/formatting/index.js +22 -21
- package/formatting/styles.scss +14 -57
- package/framework.js +227 -224
- package/history-controls.js +27 -1
- package/icon-toolbar.d.ts +62 -0
- package/icon-toolbar.js +1 -0
- package/icons/icon.d.ts +1 -1
- package/legend.d.ts +1 -1
- package/masked-input/index.js +1 -1
- package/native-control.d.ts +1 -2
- package/native-control.js +1 -1
- package/native-controls.d.ts +54 -2
- package/native-styles.css +1 -1
- package/native-styles.scss +6 -2
- package/native.d.ts +3 -3
- package/native.js +46 -43
- package/number-input/index.d.ts +1 -1
- package/number-input/index.js +1 -1
- package/package.json +71 -2
- package/pagination.js +11 -11
- package/pdf-viewer/header.d.ts +1 -1
- package/pdf-viewer/index.d.ts +2 -2
- package/pdf-viewer/index.js +1 -1
- package/pdf-viewer/search-bar.d.ts +1 -1
- package/pdf-viewer/status.d.ts +1 -1
- package/pdf-viewer/style.scss +203 -42
- package/pickers.d.ts +5 -1
- package/preact-mount.js +1 -1
- package/preact.d.ts +13 -10
- package/preact.js +109 -64
- package/progress/_bar.scss +9 -3
- package/progress/_circular.scss +2 -1
- package/rating-choice.js +1 -1
- package/react-adapter.d.ts +4 -2
- package/react-control.d.ts +2 -0
- package/react-control.js +2 -2
- package/react.d.ts +7 -8
- package/react.js +67 -66
- package/reorder-list.d.ts +1 -1
- package/reorder-list.js +1 -1
- package/reorder-list.scss +59 -17
- package/resource-picker/resource-picker-popup.js +1 -1
- package/resource-picker/resource-picker.js +74 -72
- package/resource-picker/resource-picker.scss +62 -34
- package/rich-text/engine.d.ts +1 -0
- package/rich-text/format-html.d.ts +2 -0
- package/rich-text/index.d.ts +4 -0
- package/rich-text/index.js +1 -1
- package/rich-text/model.d.ts +2 -0
- package/rich-text/style.scss +293 -44
- package/rich-text/syntax.d.ts +5 -0
- package/rich-text/toolbar.d.ts +1 -1
- package/rich-text/translations.d.ts +2 -0
- package/search-input/index.js +1 -1
- package/search-input/native.d.ts +21 -2
- package/select.d.ts +3 -1
- package/select.js +1 -1
- package/selection-list.d.ts +1 -0
- package/selection-list.js +3 -1
- package/status-feedback/exit-snapshot.js +4 -4
- package/status-feedback/popover.js +4 -4
- package/status-feedback/status-feedback.scss +124 -35
- package/styles/_activity-message.scss +24 -7
- package/styles/_alert.scss +78 -17
- package/styles/_cell-editor-frame.scss +11 -0
- package/styles/_compositions.scss +400 -80
- package/styles/_control.scss +30 -8
- package/styles/_disclosure.scss +15 -5
- package/styles/_editor-counter.scss +16 -6
- package/styles/_editor-slider.scss +8 -4
- package/styles/_field-configurator.scss +321 -23
- package/styles/_fields-grid.scss +49 -0
- package/styles/_filter-controls.scss +10 -2
- package/styles/_icon-action.scss +48 -15
- package/styles/_loading.scss +12 -3
- package/styles/_motion.scss +32 -9
- package/styles/_palette.scss +0 -24
- package/styles/_primitives.scss +369 -110
- package/styles/_theme.scss +130 -86
- package/styles/_thresholds.scss +28 -25
- package/styles/_time-grid.scss +8 -3
- package/styles/_tokens.scss +6 -1
- package/styles/configurator-actions.scss +241 -0
- package/styles/pagination.css +213 -0
- package/styles/{legacy-rating.css → rating.css} +8 -3
- package/styles.css +1 -1
- package/styles.scss +3 -5
- package/surfaces.d.ts +38 -2
- package/surfaces.js +37 -134
- package/svelte/UiComponent.svelte +44 -11
- package/svelte.d.ts +1 -1
- package/svelte.js +3 -3
- package/switch/index.js +15 -14
- package/time-grid.d.ts +0 -1
- package/time-grid.js +38 -37
- package/timeline-track/_style.scss +96 -24
- package/timeline-track/index.js +2 -2
- package/ui.css +1 -1
- package/view-switcher.d.ts +23 -0
- package/vue.d.ts +29 -32
- package/vue.js +116 -121
- package/_chunks/chart-frame-Cmc7xU1i.js +0 -130
- package/_chunks/choice-chips-CHQTUdLs.js +0 -110
- package/_chunks/color-picker-CudqPYZo.js +0 -138
- package/_chunks/control-tooltip-uscKfAnV.js +0 -100
- package/_chunks/controls-DsNi8V8I.js +0 -630
- package/_chunks/dialog.parts-CKGkC5zP.js +0 -134
- package/_chunks/editor-popup-WDdtVDNA.js +0 -81
- package/_chunks/history-controls-B3u3INEK.js +0 -27
- package/_chunks/mount-DQ1cpppK.js +0 -257
- package/_chunks/native-control-C_yok8_-.js +0 -605
- package/_chunks/request-trail-DSlFix6i.js +0 -618
- package/_chunks/rich-text-CH7gIqOS.js +0 -636
- package/avatar/index.view.d.ts +0 -25
- package/color-palette/native.view.d.ts +0 -15
- package/control-presentation.view.d.ts +0 -8
- package/dialog/dialog-action-footer.view.d.ts +0 -20
- package/dialog/dialog.dom.view.d.ts +0 -15
- package/form-controls/index.view.d.ts +0 -10
- package/formatting/control-tooltip.d.ts +0 -27
- package/native-controls.view.d.ts +0 -54
- package/search-input/native.view.d.ts +0 -21
- package/styles/legacy-pagination.css +0 -112
- package/surfaces.view.d.ts +0 -63
|
@@ -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:
|
|
9
|
-
$primary-color-dark:
|
|
9
|
+
$primary-color-light: palettes.color('common', 'hex007bff');
|
|
10
|
+
$primary-color-dark: palettes.color('common', 'hex0d63e8');
|
|
10
11
|
|
|
11
|
-
$text-color-light:
|
|
12
|
-
$text-color-light-secondary:
|
|
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:
|
|
15
|
-
$background-color-light:
|
|
15
|
+
$text-color-dark-secondary: palettes.color('common', 'hex999');
|
|
16
|
+
$background-color-light: palettes.color('common', 'hexf6f6f7');
|
|
16
17
|
|
|
17
|
-
$button-alt-bg-light:
|
|
18
|
-
$button-alt-bg-light-hover:
|
|
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:
|
|
21
|
+
$background-color-dark: palettes.color('common', 'hex333333');
|
|
21
22
|
|
|
22
|
-
$border-color-light:
|
|
23
|
-
$border-color-dark:
|
|
23
|
+
$border-color-light: palettes.color('common', 'hexebebef');
|
|
24
|
+
$border-color-dark: palettes.color('common', 'hexebebef');
|
|
24
25
|
|
|
25
|
-
$rv-badge-bg-color:
|
|
26
|
-
$rv-badge-bg-color-dark:
|
|
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:
|
|
30
|
+
$rv-popup-border-color: palettes.color('common', 'hexd4d4d4');
|
|
30
31
|
$rv-popup-border-opacity: 0.5;
|
|
31
|
-
$rv-popup-shadow-color:
|
|
32
|
-
$rv-popup-hover-bg-color:
|
|
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 #{
|
|
36
|
-
$rv-popup-bg-color-dark:
|
|
37
|
-
$rv-popup-border-color-dark:
|
|
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:
|
|
40
|
-
$rv-popup-hover-bg-color-dark:
|
|
41
|
-
$rv-popup-box-shadow-dark: 0 4px 12px
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
$rv-
|
|
45
|
-
$rv-
|
|
46
|
-
$rv-
|
|
47
|
-
$rv-
|
|
48
|
-
$rv-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
$rv-progress-bg-color
|
|
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');
|
package/activity-message.d.ts
CHANGED
|
@@ -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
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
|
-
|
|
54
|
-
|
|
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:
|
|
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(
|
|
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 {
|
package/ai/components.d.ts
CHANGED
|
@@ -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
package/ai/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as e } from "../_chunks/mount-
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
1
|
+
import { t as e } from "../_chunks/mount-BRdcG60g.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-DrhdpWiH.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
|
-
|
|
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' | '
|
|
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. */
|
package/ai/request-trail.d.ts
CHANGED
|
@@ -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,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 {};
|
package/ai/transcript.d.ts
CHANGED
|
@@ -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. */
|
package/ai/translations.d.ts
CHANGED
|
@@ -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;
|