@aceshooting/lyra-ui 1.2.0 → 2.0.0
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/README.md +11 -0
- package/custom-elements.json +23341 -11202
- package/dist/components/app-rail/app-rail.d.ts +171 -0
- package/dist/components/app-rail/app-rail.js +483 -0
- package/dist/components/app-rail/app-rail.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail.styles.js +125 -0
- package/dist/components/attachment-chip/attachment-chip.d.ts +114 -0
- package/dist/components/attachment-chip/attachment-chip.js +312 -0
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts +1 -0
- package/dist/components/attachment-chip/attachment-chip.styles.js +184 -0
- package/dist/components/attachment-trigger/attachment-trigger.d.ts +83 -0
- package/dist/components/attachment-trigger/attachment-trigger.js +258 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.js +68 -0
- package/dist/components/chart/box-plot.js +11 -1
- package/dist/components/chart/chart-loader.d.ts +44 -13
- package/dist/components/chart/chart-loader.js +65 -18
- package/dist/components/chart/chart.d.ts +1 -2
- package/dist/components/chart/chart.js +67 -12
- package/dist/components/chart/histogram-bin.d.ts +4 -1
- package/dist/components/chart/histogram-bin.js +24 -14
- package/dist/components/chart/lite-chart.d.ts +54 -0
- package/dist/components/chart/lite-chart.js +140 -22
- package/dist/components/chart/lite-chart.styles.js +9 -0
- package/dist/components/chat-composer/chat-composer.d.ts +92 -0
- package/dist/components/chat-composer/chat-composer.js +285 -0
- package/dist/components/chat-composer/chat-composer.styles.d.ts +1 -0
- package/dist/components/chat-composer/chat-composer.styles.js +135 -0
- package/dist/components/chat-message/chat-message.d.ts +113 -0
- package/dist/components/chat-message/chat-message.js +291 -0
- package/dist/components/chat-message/chat-message.styles.d.ts +1 -0
- package/dist/components/chat-message/chat-message.styles.js +203 -0
- package/dist/components/checkbox/checkbox.d.ts +59 -0
- package/dist/components/checkbox/checkbox.js +230 -0
- package/dist/components/checkbox/checkbox.styles.d.ts +1 -0
- package/dist/components/checkbox/checkbox.styles.js +70 -0
- package/dist/components/chip/chip-group.d.ts +56 -0
- package/dist/components/chip/chip-group.js +124 -0
- package/dist/components/chip/chip-group.styles.d.ts +1 -0
- package/dist/components/chip/chip-group.styles.js +57 -0
- package/dist/components/chip/chip.d.ts +64 -0
- package/dist/components/chip/chip.js +115 -0
- package/dist/components/chip/chip.styles.d.ts +1 -0
- package/dist/components/chip/chip.styles.js +115 -0
- package/dist/components/citation-badge/citation-badge.d.ts +113 -0
- package/dist/components/citation-badge/citation-badge.js +300 -0
- package/dist/components/citation-badge/citation-badge.styles.d.ts +1 -0
- package/dist/components/citation-badge/citation-badge.styles.js +96 -0
- package/dist/components/code-block/code-block.d.ts +89 -0
- package/dist/components/code-block/code-block.js +317 -0
- package/dist/components/code-block/code-block.styles.d.ts +1 -0
- package/dist/components/code-block/code-block.styles.js +187 -0
- package/dist/components/code-block/code-loader.d.ts +44 -0
- package/dist/components/code-block/code-loader.js +79 -0
- package/dist/components/combobox/combobox.d.ts +19 -1
- package/dist/components/combobox/combobox.js +84 -14
- package/dist/components/combobox/option.d.ts +5 -1
- package/dist/components/combobox/option.js +35 -0
- package/dist/components/context-meter/context-meter.d.ts +53 -0
- package/dist/components/context-meter/context-meter.js +150 -0
- package/dist/components/context-meter/context-meter.styles.d.ts +1 -0
- package/dist/components/context-meter/context-meter.styles.js +120 -0
- package/dist/components/conversation-item/conversation-item.d.ts +128 -0
- package/dist/components/conversation-item/conversation-item.js +322 -0
- package/dist/components/conversation-item/conversation-item.styles.d.ts +1 -0
- package/dist/components/conversation-item/conversation-item.styles.js +155 -0
- package/dist/components/date-picker/date-input.d.ts +24 -0
- package/dist/components/date-picker/date-input.js +134 -22
- package/dist/components/date-picker/date-picker.d.ts +7 -0
- package/dist/components/date-picker/date-picker.js +85 -16
- package/dist/components/dialog/confirm.d.ts +40 -0
- package/dist/components/dialog/confirm.js +79 -0
- package/dist/components/dialog/dialog.d.ts +85 -0
- package/dist/components/dialog/dialog.js +272 -0
- package/dist/components/dialog/dialog.styles.d.ts +1 -0
- package/dist/components/dialog/dialog.styles.js +52 -0
- package/dist/components/dock-panel/dock-panel.d.ts +134 -0
- package/dist/components/dock-panel/dock-panel.js +345 -0
- package/dist/components/dock-panel/dock-panel.styles.d.ts +1 -0
- package/dist/components/dock-panel/dock-panel.styles.js +145 -0
- package/dist/components/document-preview/document-preview.d.ts +135 -0
- package/dist/components/document-preview/document-preview.js +372 -0
- package/dist/components/document-preview/document-preview.styles.d.ts +1 -0
- package/dist/components/document-preview/document-preview.styles.js +191 -0
- package/dist/components/export-button/csv.js +1 -1
- package/dist/components/export-button/export-button.js +2 -0
- package/dist/components/flag/flag.d.ts +29 -13
- package/dist/components/flag/flag.js +39 -13
- package/dist/components/gauge/gauge.js +19 -10
- package/dist/components/generation-status/generation-status.d.ts +109 -0
- package/dist/components/generation-status/generation-status.js +273 -0
- package/dist/components/generation-status/generation-status.styles.d.ts +1 -0
- package/dist/components/generation-status/generation-status.styles.js +84 -0
- package/dist/components/heatmap/calendar-grid.d.ts +4 -1
- package/dist/components/heatmap/calendar-grid.js +25 -12
- package/dist/components/heatmap/heatmap-scale.d.ts +6 -0
- package/dist/components/heatmap/heatmap-scale.js +7 -1
- package/dist/components/heatmap/heatmap.d.ts +74 -0
- package/dist/components/heatmap/heatmap.js +135 -23
- package/dist/components/json-viewer/json-viewer.d.ts +53 -0
- package/dist/components/json-viewer/json-viewer.js +283 -0
- package/dist/components/json-viewer/json-viewer.styles.d.ts +1 -0
- package/dist/components/json-viewer/json-viewer.styles.js +176 -0
- package/dist/components/kbd/kbd.d.ts +77 -0
- package/dist/components/kbd/kbd.js +214 -0
- package/dist/components/kbd/kbd.styles.d.ts +1 -0
- package/dist/components/kbd/kbd.styles.js +52 -0
- package/dist/components/live-region/live-region.d.ts +81 -0
- package/dist/components/live-region/live-region.js +153 -0
- package/dist/components/live-region/live-region.styles.d.ts +1 -0
- package/dist/components/live-region/live-region.styles.js +10 -0
- package/dist/components/map/map.d.ts +8 -6
- package/dist/components/map/map.js +44 -8
- package/dist/components/markdown/markdown-loader.d.ts +34 -0
- package/dist/components/markdown/markdown-loader.js +43 -0
- package/dist/components/markdown/markdown.d.ts +81 -0
- package/dist/components/markdown/markdown.js +284 -0
- package/dist/components/markdown/markdown.styles.d.ts +1 -0
- package/dist/components/markdown/markdown.styles.js +82 -0
- package/dist/components/media-card/media-card.d.ts +122 -0
- package/dist/components/media-card/media-card.js +295 -0
- package/dist/components/media-card/media-card.styles.d.ts +1 -0
- package/dist/components/media-card/media-card.styles.js +132 -0
- package/dist/components/mention-popover/mention-popover.d.ts +200 -0
- package/dist/components/mention-popover/mention-popover.js +475 -0
- package/dist/components/mention-popover/mention-popover.styles.d.ts +1 -0
- package/dist/components/mention-popover/mention-popover.styles.js +101 -0
- package/dist/components/menu/menu-item.d.ts +62 -0
- package/dist/components/menu/menu-item.js +119 -0
- package/dist/components/menu/menu-item.styles.d.ts +1 -0
- package/dist/components/menu/menu-item.styles.js +67 -0
- package/dist/components/menu/menu.d.ts +143 -0
- package/dist/components/menu/menu.js +365 -0
- package/dist/components/menu/menu.styles.d.ts +1 -0
- package/dist/components/menu/menu.styles.js +66 -0
- package/dist/components/model-select/model-select.d.ts +125 -0
- package/dist/components/model-select/model-select.js +490 -0
- package/dist/components/model-select/model-select.styles.d.ts +1 -0
- package/dist/components/model-select/model-select.styles.js +189 -0
- package/dist/components/model-settings-panel/model-settings-panel.d.ts +69 -0
- package/dist/components/model-settings-panel/model-settings-panel.js +145 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.d.ts +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.js +82 -0
- package/dist/components/playback/playback.d.ts +13 -1
- package/dist/components/playback/playback.js +47 -14
- package/dist/components/responsive-panel/responsive-panel.d.ts +150 -0
- package/dist/components/responsive-panel/responsive-panel.js +365 -0
- package/dist/components/responsive-panel/responsive-panel.styles.d.ts +1 -0
- package/dist/components/responsive-panel/responsive-panel.styles.js +103 -0
- package/dist/components/result-card/result-card.d.ts +44 -0
- package/dist/components/result-card/result-card.js +83 -0
- package/dist/components/result-card/result-card.styles.d.ts +1 -0
- package/dist/components/result-card/result-card.styles.js +50 -0
- package/dist/components/result-card/result-field.d.ts +36 -0
- package/dist/components/result-card/result-field.js +87 -0
- package/dist/components/result-card/result-field.styles.d.ts +1 -0
- package/dist/components/result-card/result-field.styles.js +32 -0
- package/dist/components/select/select.d.ts +43 -2
- package/dist/components/select/select.js +150 -17
- package/dist/components/slider/slider.d.ts +89 -0
- package/dist/components/slider/slider.js +352 -0
- package/dist/components/slider/slider.styles.d.ts +1 -0
- package/dist/components/slider/slider.styles.js +87 -0
- package/dist/components/source-card/source-card.d.ts +92 -0
- package/dist/components/source-card/source-card.js +148 -0
- package/dist/components/source-card/source-card.styles.d.ts +1 -0
- package/dist/components/source-card/source-card.styles.js +69 -0
- package/dist/components/source-list/source-list.d.ts +63 -0
- package/dist/components/source-list/source-list.js +122 -0
- package/dist/components/source-list/source-list.styles.d.ts +1 -0
- package/dist/components/source-list/source-list.styles.js +59 -0
- package/dist/components/sparkline/sparkline.js +27 -13
- package/dist/components/split/split.d.ts +93 -1
- package/dist/components/split/split.js +284 -15
- package/dist/components/split/split.styles.js +30 -0
- package/dist/components/stat/stat.d.ts +6 -1
- package/dist/components/stat/stat.js +8 -2
- package/dist/components/stream-status/stream-status.d.ts +110 -0
- package/dist/components/stream-status/stream-status.js +210 -0
- package/dist/components/stream-status/stream-status.styles.d.ts +1 -0
- package/dist/components/stream-status/stream-status.styles.js +103 -0
- package/dist/components/streaming-text/streaming-text.d.ts +98 -0
- package/dist/components/streaming-text/streaming-text.js +209 -0
- package/dist/components/streaming-text/streaming-text.styles.d.ts +1 -0
- package/dist/components/streaming-text/streaming-text.styles.js +62 -0
- package/dist/components/switch/switch.d.ts +58 -0
- package/dist/components/switch/switch.js +179 -0
- package/dist/components/switch/switch.styles.d.ts +1 -0
- package/dist/components/switch/switch.styles.js +75 -0
- package/dist/components/table/table.d.ts +73 -4
- package/dist/components/table/table.js +169 -20
- package/dist/components/table/table.styles.js +6 -1
- package/dist/components/tabs/tabs.d.ts +51 -0
- package/dist/components/tabs/tabs.js +190 -0
- package/dist/components/tabs/tabs.styles.d.ts +1 -0
- package/dist/components/tabs/tabs.styles.js +63 -0
- package/dist/components/thinking-panel/thinking-panel.d.ts +121 -0
- package/dist/components/thinking-panel/thinking-panel.js +235 -0
- package/dist/components/thinking-panel/thinking-panel.styles.d.ts +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.js +117 -0
- package/dist/components/toast/toast-item.d.ts +1 -0
- package/dist/components/toast/toast-item.js +31 -6
- package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts +130 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.js +403 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.d.ts +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +160 -0
- package/dist/components/tool-call-chip/tool-call-chip.d.ts +89 -0
- package/dist/components/tool-call-chip/tool-call-chip.js +288 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.js +203 -0
- package/dist/components/tool-param-form/tool-param-form.d.ts +145 -0
- package/dist/components/tool-param-form/tool-param-form.js +366 -0
- package/dist/components/tool-param-form/tool-param-form.styles.d.ts +1 -0
- package/dist/components/tool-param-form/tool-param-form.styles.js +75 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.d.ts +102 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.js +393 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +176 -0
- package/dist/components/tool-result-view/registry.d.ts +81 -0
- package/dist/components/tool-result-view/registry.js +84 -0
- package/dist/components/tool-result-view/tool-result-view.d.ts +55 -0
- package/dist/components/tool-result-view/tool-result-view.js +138 -0
- package/dist/components/tool-result-view/tool-result-view.styles.d.ts +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.js +13 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.d.ts +151 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.js +439 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.d.ts +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +182 -0
- package/dist/components/tree/tree-node.d.ts +11 -2
- package/dist/components/tree/tree-node.js +16 -6
- package/dist/components/tree/tree.d.ts +8 -2
- package/dist/components/tree/tree.js +18 -11
- package/dist/components/typing-indicator/typing-indicator.d.ts +60 -0
- package/dist/components/typing-indicator/typing-indicator.js +96 -0
- package/dist/components/typing-indicator/typing-indicator.styles.d.ts +1 -0
- package/dist/components/typing-indicator/typing-indicator.styles.js +132 -0
- package/dist/components/virtual-list/virtual-list.d.ts +173 -0
- package/dist/components/virtual-list/virtual-list.js +461 -0
- package/dist/components/virtual-list/virtual-list.styles.d.ts +1 -0
- package/dist/components/virtual-list/virtual-list.styles.js +44 -0
- package/dist/components/word-cloud/word-cloud-layout.js +14 -1
- package/dist/components/word-cloud/word-cloud.d.ts +6 -0
- package/dist/components/word-cloud/word-cloud.js +25 -14
- package/dist/components/word-cloud/word-cloud.styles.js +3 -2
- package/dist/internal/announcer.d.ts +57 -0
- package/dist/internal/announcer.js +71 -0
- package/dist/internal/form-associated.d.ts +1 -0
- package/dist/internal/form-associated.js +55 -11
- package/dist/internal/group-by-recency.d.ts +50 -0
- package/dist/internal/group-by-recency.js +80 -0
- package/dist/internal/rtl.d.ts +23 -0
- package/dist/internal/rtl.js +28 -0
- package/dist/internal/scroll-lock.d.ts +10 -5
- package/dist/internal/scroll-lock.js +30 -14
- package/dist/internal/tokens.styles.js +6 -0
- package/dist/lyra.d.ts +130 -31
- package/dist/lyra.js +94 -26
- package/llms-full.txt +3836 -17
- package/llms.txt +16 -1
- package/package.json +23 -5
- package/dist/components/chart/bar-chart.stories.d.ts +0 -5
- package/dist/components/chart/bar-chart.stories.js +0 -20
- package/dist/components/chart/box-plot.stories.d.ts +0 -5
- package/dist/components/chart/box-plot.stories.js +0 -29
- package/dist/components/chart/bubble-chart.stories.d.ts +0 -5
- package/dist/components/chart/bubble-chart.stories.js +0 -26
- package/dist/components/chart/chart.stories.d.ts +0 -32
- package/dist/components/chart/chart.stories.js +0 -141
- package/dist/components/chart/doughnut-chart.stories.d.ts +0 -5
- package/dist/components/chart/doughnut-chart.stories.js +0 -26
- package/dist/components/chart/histogram.stories.d.ts +0 -5
- package/dist/components/chart/histogram.stories.js +0 -17
- package/dist/components/chart/line-chart.stories.d.ts +0 -22
- package/dist/components/chart/line-chart.stories.js +0 -99
- package/dist/components/chart/lite-chart.stories.d.ts +0 -14
- package/dist/components/chart/lite-chart.stories.js +0 -114
- package/dist/components/chart/pie-chart.stories.d.ts +0 -5
- package/dist/components/chart/pie-chart.stories.js +0 -26
- package/dist/components/chart/polar-area-chart.stories.d.ts +0 -5
- package/dist/components/chart/polar-area-chart.stories.js +0 -20
- package/dist/components/chart/radar-chart.stories.d.ts +0 -5
- package/dist/components/chart/radar-chart.stories.js +0 -20
- package/dist/components/chart/scatter-chart.stories.d.ts +0 -5
- package/dist/components/chart/scatter-chart.stories.js +0 -31
- package/dist/components/combobox/combobox.stories.d.ts +0 -24
- package/dist/components/combobox/combobox.stories.js +0 -102
- package/dist/components/date-picker/date-input.stories.d.ts +0 -10
- package/dist/components/date-picker/date-input.stories.js +0 -48
- package/dist/components/date-picker/date-picker.stories.d.ts +0 -10
- package/dist/components/date-picker/date-picker.stories.js +0 -25
- package/dist/components/empty/empty.stories.d.ts +0 -7
- package/dist/components/empty/empty.stories.js +0 -34
- package/dist/components/export-button/export-button.stories.d.ts +0 -7
- package/dist/components/export-button/export-button.stories.js +0 -37
- package/dist/components/file-input/file-input.stories.d.ts +0 -7
- package/dist/components/file-input/file-input.stories.js +0 -19
- package/dist/components/flag/flag.stories.d.ts +0 -6
- package/dist/components/flag/flag.stories.js +0 -31
- package/dist/components/gauge/gauge.stories.d.ts +0 -8
- package/dist/components/gauge/gauge.stories.js +0 -19
- package/dist/components/graph/graph.stories.d.ts +0 -8
- package/dist/components/graph/graph.stories.js +0 -68
- package/dist/components/heatmap/heatmap.stories.d.ts +0 -27
- package/dist/components/heatmap/heatmap.stories.js +0 -179
- package/dist/components/map/map.stories.d.ts +0 -15
- package/dist/components/map/map.stories.js +0 -135
- package/dist/components/playback/playback.stories.d.ts +0 -7
- package/dist/components/playback/playback.stories.js +0 -16
- package/dist/components/select/select.stories.d.ts +0 -21
- package/dist/components/select/select.stories.js +0 -91
- package/dist/components/skeleton/skeleton.stories.d.ts +0 -5
- package/dist/components/skeleton/skeleton.stories.js +0 -16
- package/dist/components/sparkline/sparkline.stories.d.ts +0 -11
- package/dist/components/sparkline/sparkline.stories.js +0 -39
- package/dist/components/split/split.stories.d.ts +0 -7
- package/dist/components/split/split.stories.js +0 -36
- package/dist/components/stat/stat.stories.d.ts +0 -9
- package/dist/components/stat/stat.stories.js +0 -81
- package/dist/components/table/table.stories.d.ts +0 -12
- package/dist/components/table/table.stories.js +0 -67
- package/dist/components/time-range/time-range.stories.d.ts +0 -8
- package/dist/components/time-range/time-range.stories.js +0 -26
- package/dist/components/toast/toast.stories.d.ts +0 -8
- package/dist/components/toast/toast.stories.js +0 -72
- package/dist/components/tree/tree.stories.d.ts +0 -9
- package/dist/components/tree/tree.stories.js +0 -52
- package/dist/components/widget/widget.stories.d.ts +0 -9
- package/dist/components/widget/widget.stories.js +0 -74
- package/dist/components/word-cloud/word-cloud.stories.d.ts +0 -10
- package/dist/components/word-cloud/word-cloud.stories.js +0 -55
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
max-inline-size: 100%;
|
|
6
|
+
/* Per-status accent -- one custom property swapped by the :host([status])
|
|
7
|
+
rules below rather than repeating background/color per part per status.
|
|
8
|
+
Defaults to the 'pending' tone so an unset/unknown status still reads
|
|
9
|
+
as neutral instead of unstyled. */
|
|
10
|
+
--lyra-tool-call-chip-accent: var(--lyra-color-text-quiet);
|
|
11
|
+
--lyra-tool-call-chip-bg: var(--lyra-color-surface);
|
|
12
|
+
--lyra-tool-call-chip-border: var(--lyra-color-border);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([status='running']) {
|
|
16
|
+
--lyra-tool-call-chip-accent: var(--lyra-color-brand);
|
|
17
|
+
--lyra-tool-call-chip-bg: var(--lyra-color-brand-quiet);
|
|
18
|
+
--lyra-tool-call-chip-border: transparent;
|
|
19
|
+
}
|
|
20
|
+
:host([status='success']) {
|
|
21
|
+
--lyra-tool-call-chip-accent: var(--lyra-color-success);
|
|
22
|
+
--lyra-tool-call-chip-bg: var(--lyra-color-success-quiet);
|
|
23
|
+
--lyra-tool-call-chip-border: transparent;
|
|
24
|
+
}
|
|
25
|
+
:host([status='error']) {
|
|
26
|
+
--lyra-tool-call-chip-accent: var(--lyra-color-danger);
|
|
27
|
+
--lyra-tool-call-chip-bg: var(--lyra-color-danger-quiet);
|
|
28
|
+
--lyra-tool-call-chip-border: transparent;
|
|
29
|
+
}
|
|
30
|
+
/* 'denied' reads as a policy rejection, not a runtime failure -- the
|
|
31
|
+
warning (not danger) tint keeps it visually distinct from 'error',
|
|
32
|
+
matching lyra-tool-result-dialog's identical status vocabulary/tone so
|
|
33
|
+
the two components agree on what "denied" looks like. */
|
|
34
|
+
:host([status='denied']) {
|
|
35
|
+
--lyra-tool-call-chip-accent: var(--lyra-color-warning);
|
|
36
|
+
--lyra-tool-call-chip-bg: var(--lyra-color-warning-quiet);
|
|
37
|
+
--lyra-tool-call-chip-border: transparent;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
[part='base'] {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: var(--lyra-space-xs);
|
|
44
|
+
max-inline-size: 100%;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
padding: 0.25rem var(--lyra-space-s);
|
|
47
|
+
border: 1px solid var(--lyra-tool-call-chip-border);
|
|
48
|
+
border-radius: 999px;
|
|
49
|
+
background: var(--lyra-tool-call-chip-bg);
|
|
50
|
+
color: var(--lyra-color-text);
|
|
51
|
+
font: inherit;
|
|
52
|
+
font-size: 0.8125rem;
|
|
53
|
+
line-height: 1.3;
|
|
54
|
+
text-align: start;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
-webkit-tap-highlight-color: transparent;
|
|
57
|
+
transition:
|
|
58
|
+
background-color var(--lyra-transition-fast),
|
|
59
|
+
border-color var(--lyra-transition-fast);
|
|
60
|
+
}
|
|
61
|
+
[part='base']:hover {
|
|
62
|
+
border-color: var(--lyra-color-brand);
|
|
63
|
+
}
|
|
64
|
+
[part='base']:focus-visible {
|
|
65
|
+
outline: var(--lyra-focus-ring-width) solid var(--lyra-focus-ring-color);
|
|
66
|
+
outline-offset: var(--lyra-focus-ring-offset);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[part='icon'] {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
flex: 0 0 auto;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
color: var(--lyra-tool-call-chip-accent);
|
|
75
|
+
}
|
|
76
|
+
[part='icon'] svg {
|
|
77
|
+
display: block;
|
|
78
|
+
}
|
|
79
|
+
/* A three-quarter arc (not a full ring) is what actually reads as
|
|
80
|
+
spinning once rotated -- a full circle looks identical at every
|
|
81
|
+
rotation frame. */
|
|
82
|
+
:host([status='running']) [part='icon'] svg {
|
|
83
|
+
animation: lyra-tool-call-chip-spin 1s linear infinite;
|
|
84
|
+
}
|
|
85
|
+
/* Subtler than the spin -- a slow opacity breathe, so a list of several
|
|
86
|
+
still-queued chips doesn't compete visually with any 'running' ones
|
|
87
|
+
next to it. */
|
|
88
|
+
:host([status='pending']) [part='icon'] svg {
|
|
89
|
+
animation: lyra-tool-call-chip-pulse 1.5s ease-in-out infinite;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
[part='label'] {
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
align-items: baseline;
|
|
95
|
+
gap: 0.3em;
|
|
96
|
+
flex: 1 1 auto;
|
|
97
|
+
min-inline-size: 0;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
}
|
|
100
|
+
[part='category'] {
|
|
101
|
+
flex: 0 0 auto;
|
|
102
|
+
/* Full-strength text, not --lyra-color-text-quiet -- this sits on top of
|
|
103
|
+
the per-status *-quiet tint backgrounds above (e.g. success-quiet),
|
|
104
|
+
and text-quiet's gray fails WCAG AA contrast against several of those
|
|
105
|
+
tints even though it comfortably passes against the plain surface
|
|
106
|
+
background used by the resting/denied states. */
|
|
107
|
+
color: var(--lyra-color-text);
|
|
108
|
+
font-size: 0.6875rem;
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
text-transform: uppercase;
|
|
111
|
+
letter-spacing: 0.04em;
|
|
112
|
+
}
|
|
113
|
+
[part='category']::after {
|
|
114
|
+
content: '·';
|
|
115
|
+
margin-inline-start: 0.3em;
|
|
116
|
+
}
|
|
117
|
+
[part='name'] {
|
|
118
|
+
flex: 0 1 auto;
|
|
119
|
+
min-inline-size: 0;
|
|
120
|
+
overflow: hidden;
|
|
121
|
+
text-overflow: ellipsis;
|
|
122
|
+
white-space: nowrap;
|
|
123
|
+
font-weight: 600;
|
|
124
|
+
}
|
|
125
|
+
[part='summary'] {
|
|
126
|
+
flex: 1 1 auto;
|
|
127
|
+
min-inline-size: 3ch;
|
|
128
|
+
overflow: hidden;
|
|
129
|
+
text-overflow: ellipsis;
|
|
130
|
+
white-space: nowrap;
|
|
131
|
+
/* See [part='category']'s comment above -- same contrast rationale. */
|
|
132
|
+
color: var(--lyra-color-text);
|
|
133
|
+
}
|
|
134
|
+
[part='summary']::before {
|
|
135
|
+
content: ': ';
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
[part='meta'] {
|
|
139
|
+
display: inline-flex;
|
|
140
|
+
flex: 0 0 auto;
|
|
141
|
+
align-items: baseline;
|
|
142
|
+
gap: 0.4em;
|
|
143
|
+
margin-inline-start: auto;
|
|
144
|
+
font-size: 0.6875rem;
|
|
145
|
+
}
|
|
146
|
+
[part='status-text'] {
|
|
147
|
+
color: var(--lyra-tool-call-chip-accent);
|
|
148
|
+
font-weight: 600;
|
|
149
|
+
text-transform: uppercase;
|
|
150
|
+
letter-spacing: 0.03em;
|
|
151
|
+
white-space: nowrap;
|
|
152
|
+
}
|
|
153
|
+
[part='duration'] {
|
|
154
|
+
/* See [part='category']'s comment above -- same contrast rationale. */
|
|
155
|
+
color: var(--lyra-color-text);
|
|
156
|
+
font-variant-numeric: tabular-nums;
|
|
157
|
+
white-space: nowrap;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Positioned by internal/positioner.js's place() -- see combobox's
|
|
161
|
+
[part='listbox'] for the identical fixed/z-index/max-size shape. Unlike
|
|
162
|
+
that popup this one has no open/close transition: a tooltip that
|
|
163
|
+
tracks the pointer/focus target benefits from appearing instantly, not
|
|
164
|
+
chasing a fade. */
|
|
165
|
+
[part='tooltip'] {
|
|
166
|
+
position: fixed;
|
|
167
|
+
z-index: 900;
|
|
168
|
+
box-sizing: border-box;
|
|
169
|
+
max-inline-size: min(90vw, 24rem);
|
|
170
|
+
padding: var(--lyra-space-s) var(--lyra-space-m);
|
|
171
|
+
background: var(--lyra-color-surface);
|
|
172
|
+
border: 1px solid var(--lyra-color-border);
|
|
173
|
+
border-radius: var(--lyra-radius);
|
|
174
|
+
box-shadow: var(--lyra-shadow);
|
|
175
|
+
font-size: 0.8125rem;
|
|
176
|
+
line-height: 1.4;
|
|
177
|
+
color: var(--lyra-color-text);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@keyframes lyra-tool-call-chip-spin {
|
|
181
|
+
to {
|
|
182
|
+
transform: rotate(360deg);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
@keyframes lyra-tool-call-chip-pulse {
|
|
186
|
+
0%,
|
|
187
|
+
100% {
|
|
188
|
+
opacity: 1;
|
|
189
|
+
}
|
|
190
|
+
50% {
|
|
191
|
+
opacity: 0.35;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
@media (prefers-reduced-motion: reduce) {
|
|
195
|
+
[part='base'] {
|
|
196
|
+
transition: none !important;
|
|
197
|
+
}
|
|
198
|
+
:host([status='running']) [part='icon'] svg,
|
|
199
|
+
:host([status='pending']) [part='icon'] svg {
|
|
200
|
+
animation: none !important;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
`;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { type TemplateResult, type PropertyValues } from 'lit';
|
|
2
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
import '../select/select.js';
|
|
4
|
+
import '../combobox/option.js';
|
|
5
|
+
import '../checkbox/checkbox.js';
|
|
6
|
+
/** The four leaf property types this phase's flat-schema renderer understands. */
|
|
7
|
+
export type ToolParamFormPropertyType = 'string' | 'number' | 'integer' | 'boolean';
|
|
8
|
+
/**
|
|
9
|
+
* One `schema.properties` entry. Deliberately shallow — see the class doc for
|
|
10
|
+
* the full scope limitation this type encodes.
|
|
11
|
+
*/
|
|
12
|
+
export interface ToolParamFormProperty {
|
|
13
|
+
type: ToolParamFormPropertyType;
|
|
14
|
+
/** A closed set of string choices, rendered as a `<lyra-select>`. Only meaningful when `type` is `'string'`. */
|
|
15
|
+
enum?: string[];
|
|
16
|
+
/** Helper text rendered under the field. */
|
|
17
|
+
description?: string;
|
|
18
|
+
/** Display label. Falls back to the property key itself when omitted. */
|
|
19
|
+
title?: string;
|
|
20
|
+
/** Pre-filled value used whenever `value` doesn't already have this key. */
|
|
21
|
+
default?: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The (intentionally flat) JSON Schema subset this component can render:
|
|
25
|
+
* a plain object whose every property is a string, number/integer, boolean,
|
|
26
|
+
* or string enum. See the class doc for what's out of scope.
|
|
27
|
+
*/
|
|
28
|
+
export interface ToolParamFormSchema {
|
|
29
|
+
type: 'object';
|
|
30
|
+
properties: Record<string, ToolParamFormProperty>;
|
|
31
|
+
required?: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* `<lyra-tool-param-form>` — renders one form control per top-level property
|
|
35
|
+
* of a JSON Schema object, for ad hoc tool invocation or approval-editing UIs
|
|
36
|
+
* (e.g. "the agent wants to call `create_event(title, attendees, allDay)` —
|
|
37
|
+
* let the user tweak the arguments before running it").
|
|
38
|
+
*
|
|
39
|
+
* **Scope limitation (intentional, not accidental):** this phase only
|
|
40
|
+
* understands a *flat* object schema — every `properties` entry must be
|
|
41
|
+
* `'string'`, `'number'`, `'integer'`, `'boolean'`, or a string `enum`.
|
|
42
|
+
* Nested objects, arrays, `oneOf`/`anyOf`/`allOf`, `$ref`, and any other
|
|
43
|
+
* JSON Schema keyword are not read. A full JSON-Schema-to-form renderer is
|
|
44
|
+
* out of scope for this component; a property whose `type` isn't one of the
|
|
45
|
+
* four above renders a visible "Unsupported field type" note instead of
|
|
46
|
+
* silently dropping it or throwing.
|
|
47
|
+
*
|
|
48
|
+
* Fields render in `Object.keys(schema.properties)` order (insertion order,
|
|
49
|
+
* which is reliable for a plain object's string keys). A field's label is
|
|
50
|
+
* `title ?? ` the property key; `description` renders as helper text below
|
|
51
|
+
* the control; a key listed in `required` gets a visible `*` and the
|
|
52
|
+
* underlying control's own `required` wiring.
|
|
53
|
+
*
|
|
54
|
+
* This component owns no Submit/Cancel/Approve chrome — a consumer composes
|
|
55
|
+
* it inside their own dialog (e.g. a tool-approval dialog) and reads
|
|
56
|
+
* `.value`/`.errors`/`checkValidity()` (or calls `reportValidity()` right
|
|
57
|
+
* before acting, which also reveals any inline errors that user interaction
|
|
58
|
+
* hasn't surfaced yet).
|
|
59
|
+
*
|
|
60
|
+
* `value` is exactly what the consumer last set it to — a field with no
|
|
61
|
+
* entry in `value` but a schema `default` displays (and is *emitted*, via
|
|
62
|
+
* `lyra-input`) as that default, but the `value` *property* itself is left
|
|
63
|
+
* alone until the user actually edits that field. This mirrors an
|
|
64
|
+
* uncontrolled `<input placeholder>` not writing to `.value`, and means the
|
|
65
|
+
* very first `lyra-input` a consumer receives already carries every default
|
|
66
|
+
* resolved, so round-tripping `e.detail.value` back into `.value` converges
|
|
67
|
+
* after one edit.
|
|
68
|
+
*
|
|
69
|
+
* Optional native `<form>` participation is implemented via `ElementInternals`
|
|
70
|
+
* attached directly (this component's value is a whole object, not a plain
|
|
71
|
+
* string, so the `FormAssociated` string-value mixin doesn't fit — same
|
|
72
|
+
* shape as `<lyra-combobox>`'s array-valued case). This is a nice-to-have
|
|
73
|
+
* layered on top of the primary integration contract (`value` +
|
|
74
|
+
* `lyra-input`/`lyra-validity-change`), not a requirement: a consumer that
|
|
75
|
+
* never puts this inside a `<form>` loses nothing.
|
|
76
|
+
*
|
|
77
|
+
* @customElement lyra-tool-param-form
|
|
78
|
+
* @event lyra-input - A field's value changed. `detail: { value }` — the
|
|
79
|
+
* full current value object (every property, defaults resolved), not just
|
|
80
|
+
* the field that changed.
|
|
81
|
+
* @event lyra-validity-change - Overall validity changed (a required field
|
|
82
|
+
* became empty/non-empty). `detail: { valid: boolean; errors: Record<string, string> }`.
|
|
83
|
+
* @csspart base - The outer wrapper around all fields.
|
|
84
|
+
* @csspart field - One property's wrapper (label + control + description + error).
|
|
85
|
+
* @csspart label - A field's label.
|
|
86
|
+
* @csspart description - A field's helper text, from `schema.description`.
|
|
87
|
+
* @csspart error - A field's inline validation message (only rendered once the field has been visited).
|
|
88
|
+
*/
|
|
89
|
+
export declare class LyraToolParamForm extends LyraElement {
|
|
90
|
+
static formAssociated: boolean;
|
|
91
|
+
static styles: import("lit").CSSResultGroup[];
|
|
92
|
+
schema: ToolParamFormSchema;
|
|
93
|
+
value: Record<string, unknown>;
|
|
94
|
+
/** Submission key for the optional native `<form>` participation — see the class doc. */
|
|
95
|
+
name: string;
|
|
96
|
+
disabled: boolean;
|
|
97
|
+
private _errors;
|
|
98
|
+
private touchedFields;
|
|
99
|
+
private internals;
|
|
100
|
+
private baseId;
|
|
101
|
+
private lastValidityKey;
|
|
102
|
+
constructor();
|
|
103
|
+
connectedCallback(): void;
|
|
104
|
+
/** `value`, with any property missing from it filled in from `schema`'s own `default` — see the class doc. */
|
|
105
|
+
get effectiveValue(): Record<string, unknown>;
|
|
106
|
+
/**
|
|
107
|
+
* The current per-field validation errors (`{ [propertyKey]: message }`),
|
|
108
|
+
* required-and-empty only — mirrors the last `lyra-validity-change`
|
|
109
|
+
* event's `errors`. Independent of which fields have been visited; a
|
|
110
|
+
* consumer wanting the visited-only, screen-reader-announced subset
|
|
111
|
+
* should read the rendered `[part="error"]` elements instead.
|
|
112
|
+
*/
|
|
113
|
+
get errors(): Record<string, string>;
|
|
114
|
+
/** The current per-field validation errors (required-and-empty only), independent of `touchedFields`. */
|
|
115
|
+
private computeErrors;
|
|
116
|
+
/** Non-mutating validity check — unlike `reportValidity()`, never reveals inline errors. */
|
|
117
|
+
checkValidity(): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Reveals inline errors for every currently-invalid required field (as if
|
|
120
|
+
* each had been visited) and returns overall validity — the hook a
|
|
121
|
+
* consumer's own Submit/Approve button should call right before acting,
|
|
122
|
+
* mirroring a native `<form>`'s `reportValidity()`.
|
|
123
|
+
*/
|
|
124
|
+
reportValidity(): boolean;
|
|
125
|
+
formResetCallback(): void;
|
|
126
|
+
formDisabledCallback(disabled: boolean): void;
|
|
127
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
128
|
+
/** Pushes `effectiveValue`/`errors` into `ElementInternals` — see the class doc's form-participation note. */
|
|
129
|
+
private syncInternals;
|
|
130
|
+
protected updated(changed: PropertyValues): void;
|
|
131
|
+
private setFieldValue;
|
|
132
|
+
private markTouched;
|
|
133
|
+
private onTextInput;
|
|
134
|
+
private onNumberInput;
|
|
135
|
+
private onSelectChange;
|
|
136
|
+
private onCheckboxChange;
|
|
137
|
+
private renderControl;
|
|
138
|
+
private renderField;
|
|
139
|
+
render(): TemplateResult;
|
|
140
|
+
}
|
|
141
|
+
declare global {
|
|
142
|
+
interface HTMLElementTagNameMap {
|
|
143
|
+
'lyra-tool-param-form': LyraToolParamForm;
|
|
144
|
+
}
|
|
145
|
+
}
|