@aceshooting/lyra-ui 1.2.0 → 2.1.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 +98 -14
- package/custom-elements.json +30279 -12124
- package/dist/components/app-rail/app-rail-item.d.ts +30 -0
- package/dist/components/app-rail/app-rail-item.js +68 -0
- package/dist/components/app-rail/app-rail-item.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail-item.styles.js +65 -0
- package/dist/components/app-rail/app-rail.d.ts +168 -0
- package/dist/components/app-rail/app-rail.js +419 -0
- package/dist/components/app-rail/app-rail.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail.styles.js +128 -0
- package/dist/components/attachment-chip/attachment-chip.d.ts +141 -0
- package/dist/components/attachment-chip/attachment-chip.js +356 -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 +96 -0
- package/dist/components/attachment-trigger/attachment-trigger.js +270 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.js +90 -0
- package/dist/components/chart/bar-chart.js +2 -18
- package/dist/components/chart/box-plot.d.ts +25 -1
- package/dist/components/chart/box-plot.js +147 -7
- package/dist/components/chart/box-plot.styles.js +13 -0
- package/dist/components/chart/bubble-chart.js +2 -18
- 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 +55 -12
- package/dist/components/chart/chart.js +247 -49
- package/dist/components/chart/doughnut-chart.js +2 -18
- package/dist/components/chart/histogram-bin.d.ts +7 -1
- package/dist/components/chart/histogram-bin.js +32 -14
- package/dist/components/chart/histogram.js +8 -16
- package/dist/components/chart/line-chart.js +2 -18
- package/dist/components/chart/lite-chart.d.ts +134 -3
- package/dist/components/chart/lite-chart.js +382 -67
- package/dist/components/chart/lite-chart.styles.js +9 -0
- package/dist/components/chart/pie-chart.js +2 -18
- package/dist/components/chart/polar-area-chart.js +2 -18
- package/dist/components/chart/radar-chart.js +2 -18
- package/dist/components/chart/scatter-chart.js +2 -18
- package/dist/components/chat-composer/chat-composer.d.ts +133 -0
- package/dist/components/chat-composer/chat-composer.js +366 -0
- package/dist/components/chat-composer/chat-composer.styles.d.ts +1 -0
- package/dist/components/chat-composer/chat-composer.styles.js +145 -0
- package/dist/components/chat-message/chat-message.d.ts +141 -0
- package/dist/components/chat-message/chat-message.js +331 -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 +117 -0
- package/dist/components/checkbox/checkbox.js +353 -0
- package/dist/components/checkbox/checkbox.styles.d.ts +1 -0
- package/dist/components/checkbox/checkbox.styles.js +77 -0
- package/dist/components/chip/chip-group.d.ts +56 -0
- package/dist/components/chip/chip-group.js +130 -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 +122 -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 +318 -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 +127 -0
- package/dist/components/code-block/code-block.js +382 -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 +87 -0
- package/dist/components/code-block/code-loader.js +142 -0
- package/dist/components/combobox/combobox.d.ts +65 -6
- package/dist/components/combobox/combobox.js +258 -48
- package/dist/components/combobox/combobox.styles.js +3 -3
- 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 +159 -0
- package/dist/components/context-meter/context-meter.styles.d.ts +1 -0
- package/dist/components/context-meter/context-meter.styles.js +114 -0
- package/dist/components/conversation-item/conversation-item.d.ts +125 -0
- package/dist/components/conversation-item/conversation-item.js +331 -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/calendar-core.d.ts +24 -0
- package/dist/components/date-picker/calendar-core.js +51 -4
- package/dist/components/date-picker/date-input.d.ts +100 -9
- package/dist/components/date-picker/date-input.js +383 -66
- package/dist/components/date-picker/date-picker.d.ts +35 -4
- package/dist/components/date-picker/date-picker.js +171 -44
- package/dist/components/dialog/confirm.d.ts +40 -0
- package/dist/components/dialog/confirm.js +76 -0
- package/dist/components/dialog/dialog.d.ts +129 -0
- package/dist/components/dialog/dialog.js +288 -0
- package/dist/components/dialog/dialog.styles.d.ts +1 -0
- package/dist/components/dialog/dialog.styles.js +96 -0
- package/dist/components/dock-panel/dock-panel.d.ts +142 -0
- package/dist/components/dock-panel/dock-panel.js +359 -0
- package/dist/components/dock-panel/dock-panel.styles.d.ts +1 -0
- package/dist/components/dock-panel/dock-panel.styles.js +159 -0
- package/dist/components/document-preview/document-preview.d.ts +143 -0
- package/dist/components/document-preview/document-preview.js +388 -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/empty/empty.d.ts +1 -2
- package/dist/components/empty/empty.js +18 -12
- package/dist/components/empty/empty.styles.js +0 -3
- package/dist/components/export-button/csv.js +1 -1
- package/dist/components/export-button/export-button.d.ts +12 -0
- package/dist/components/export-button/export-button.js +35 -5
- package/dist/components/export-button/export-button.styles.js +5 -1
- package/dist/components/file-input/accept.js +2 -0
- package/dist/components/file-input/file-input.d.ts +10 -1
- package/dist/components/file-input/file-input.js +36 -5
- package/dist/components/flag/flag.d.ts +29 -13
- package/dist/components/flag/flag.js +54 -14
- package/dist/components/flag/flag.styles.js +1 -1
- package/dist/components/flag/language-map.d.ts +4 -1
- package/dist/components/flag/language-map.js +6 -3
- package/dist/components/gauge/gauge.d.ts +10 -1
- package/dist/components/gauge/gauge.js +41 -13
- package/dist/components/generation-status/generation-status.d.ts +117 -0
- package/dist/components/generation-status/generation-status.js +327 -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/graph/graph.d.ts +37 -3
- package/dist/components/graph/graph.js +132 -20
- package/dist/components/heatmap/calendar-grid.d.ts +19 -7
- package/dist/components/heatmap/calendar-grid.js +42 -18
- package/dist/components/heatmap/heatmap-scale.d.ts +11 -1
- package/dist/components/heatmap/heatmap-scale.js +14 -2
- package/dist/components/heatmap/heatmap.d.ts +227 -12
- package/dist/components/heatmap/heatmap.js +488 -93
- package/dist/components/json-viewer/json-viewer.d.ts +70 -0
- package/dist/components/json-viewer/json-viewer.js +361 -0
- package/dist/components/json-viewer/json-viewer.styles.d.ts +1 -0
- package/dist/components/json-viewer/json-viewer.styles.js +177 -0
- package/dist/components/kbd/kbd.d.ts +77 -0
- package/dist/components/kbd/kbd.js +231 -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 +90 -0
- package/dist/components/live-region/live-region.js +189 -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 +32 -7
- package/dist/components/map/map.js +133 -32
- package/dist/components/markdown/markdown-loader.d.ts +58 -0
- package/dist/components/markdown/markdown-loader.js +77 -0
- package/dist/components/markdown/markdown.d.ts +119 -0
- package/dist/components/markdown/markdown.js +389 -0
- package/dist/components/markdown/markdown.styles.d.ts +1 -0
- package/dist/components/markdown/markdown.styles.js +88 -0
- package/dist/components/media-card/media-card.d.ts +130 -0
- package/dist/components/media-card/media-card.js +273 -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 +203 -0
- package/dist/components/mention-popover/mention-popover.js +493 -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 +91 -0
- package/dist/components/menu/menu-item.js +206 -0
- package/dist/components/menu/menu-item.styles.d.ts +1 -0
- package/dist/components/menu/menu-item.styles.js +75 -0
- package/dist/components/menu/menu.d.ts +167 -0
- package/dist/components/menu/menu.js +461 -0
- package/dist/components/menu/menu.styles.d.ts +1 -0
- package/dist/components/menu/menu.styles.js +67 -0
- package/dist/components/model-select/model-select.d.ts +170 -0
- package/dist/components/model-select/model-select.js +588 -0
- package/dist/components/model-select/model-select.styles.d.ts +1 -0
- package/dist/components/model-select/model-select.styles.js +203 -0
- package/dist/components/model-settings-panel/model-settings-panel.d.ts +93 -0
- package/dist/components/model-settings-panel/model-settings-panel.js +209 -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 +19 -3
- package/dist/components/playback/playback.js +109 -33
- package/dist/components/playback/playback.styles.js +6 -1
- package/dist/components/responsive-panel/responsive-panel.d.ts +163 -0
- package/dist/components/responsive-panel/responsive-panel.js +363 -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 +50 -0
- package/dist/components/result-card/result-card.js +89 -0
- package/dist/components/result-card/result-card.styles.d.ts +1 -0
- package/dist/components/result-card/result-card.styles.js +49 -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 +84 -4
- package/dist/components/select/select.js +251 -36
- package/dist/components/skeleton/skeleton.d.ts +3 -0
- package/dist/components/skeleton/skeleton.js +7 -1
- package/dist/components/skeleton/skeleton.styles.js +5 -4
- package/dist/components/slider/slider.d.ts +141 -0
- package/dist/components/slider/slider.js +467 -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 +104 -0
- package/dist/components/source-card/source-card.js +195 -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 +130 -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 +58 -20
- package/dist/components/split/split.d.ts +224 -5
- package/dist/components/split/split.js +617 -43
- package/dist/components/split/split.styles.js +47 -0
- package/dist/components/stat/stat.d.ts +15 -4
- package/dist/components/stat/stat.js +53 -12
- package/dist/components/stream-status/stream-status.d.ts +126 -0
- package/dist/components/stream-status/stream-status.js +292 -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 +104 -0
- package/dist/components/streaming-text/streaming-text.js +224 -0
- package/dist/components/streaming-text/streaming-text.styles.d.ts +1 -0
- package/dist/components/streaming-text/streaming-text.styles.js +63 -0
- package/dist/components/switch/switch.d.ts +103 -0
- package/dist/components/switch/switch.js +250 -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 +89 -5
- package/dist/components/table/table.js +243 -26
- package/dist/components/table/table.styles.js +6 -1
- package/dist/components/tabs/tabs.d.ts +74 -0
- package/dist/components/tabs/tabs.js +254 -0
- package/dist/components/tabs/tabs.styles.d.ts +1 -0
- package/dist/components/tabs/tabs.styles.js +74 -0
- package/dist/components/thinking-panel/thinking-panel.d.ts +123 -0
- package/dist/components/thinking-panel/thinking-panel.js +260 -0
- package/dist/components/thinking-panel/thinking-panel.styles.d.ts +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.js +123 -0
- package/dist/components/time-range/time-range.d.ts +59 -2
- package/dist/components/time-range/time-range.js +163 -67
- package/dist/components/toast/toast-item.d.ts +12 -2
- package/dist/components/toast/toast-item.js +106 -44
- package/dist/components/toast/toast-item.styles.js +59 -28
- package/dist/components/toast/toast.js +17 -5
- package/dist/components/toast/toaster.js +10 -1
- package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts +131 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.js +329 -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 +105 -0
- package/dist/components/tool-call-chip/tool-call-chip.js +349 -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 +206 -0
- package/dist/components/tool-param-form/tool-param-form.js +610 -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 +122 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.js +358 -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 +73 -0
- package/dist/components/tool-result-view/registry.js +89 -0
- package/dist/components/tool-result-view/tool-result-view.d.ts +58 -0
- package/dist/components/tool-result-view/tool-result-view.js +152 -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 +350 -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 +191 -0
- package/dist/components/tree/tree-node.d.ts +15 -3
- package/dist/components/tree/tree-node.js +20 -7
- package/dist/components/tree/tree.d.ts +25 -10
- package/dist/components/tree/tree.js +39 -31
- package/dist/components/typing-indicator/typing-indicator.d.ts +70 -0
- package/dist/components/typing-indicator/typing-indicator.js +108 -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 +210 -0
- package/dist/components/virtual-list/virtual-list.js +607 -0
- package/dist/components/virtual-list/virtual-list.styles.d.ts +1 -0
- package/dist/components/virtual-list/virtual-list.styles.js +56 -0
- package/dist/components/widget/widget.d.ts +5 -4
- package/dist/components/widget/widget.js +54 -120
- package/dist/components/widget/widget.styles.js +8 -2
- package/dist/components/word-cloud/word-cloud-layout.d.ts +7 -0
- package/dist/components/word-cloud/word-cloud-layout.js +29 -2
- package/dist/components/word-cloud/word-cloud.d.ts +28 -2
- package/dist/components/word-cloud/word-cloud.js +69 -19
- package/dist/components/word-cloud/word-cloud.styles.js +16 -3
- package/dist/internal/anchored-validity.d.ts +1 -0
- package/dist/internal/anchored-validity.js +86 -0
- package/dist/internal/announcer.d.ts +57 -0
- package/dist/internal/announcer.js +71 -0
- package/dist/internal/form-associated.d.ts +8 -0
- package/dist/internal/form-associated.js +98 -15
- package/dist/internal/group-by-recency.d.ts +50 -0
- package/dist/internal/group-by-recency.js +80 -0
- package/dist/internal/numbers.d.ts +12 -0
- package/dist/internal/numbers.js +26 -0
- package/dist/internal/overlay-manager.d.ts +51 -0
- package/dist/internal/overlay-manager.js +523 -0
- package/dist/internal/positioner.js +27 -3
- package/dist/internal/rtl.d.ts +23 -0
- package/dist/internal/rtl.js +28 -0
- package/dist/internal/safe-url.d.ts +12 -0
- package/dist/internal/safe-url.js +41 -0
- package/dist/internal/scroll-lock.d.ts +10 -5
- package/dist/internal/scroll-lock.js +30 -14
- package/dist/internal/tokens.styles.js +22 -10
- package/dist/lyra.d.ts +133 -31
- package/dist/lyra.js +96 -26
- package/llms-full.txt +4546 -183
- package/llms.txt +21 -5
- package/package.json +41 -6
- 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
|
@@ -35,15 +35,18 @@ export declare class LyraTree extends LyraElement {
|
|
|
35
35
|
private get nodeElements();
|
|
36
36
|
private childrenOf;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
38
|
+
* Every currently *visible* (ancestor-expanded) node, top-to-bottom.
|
|
39
|
+
*
|
|
40
|
+
* Recomputed on every call rather than memoized: `item`/`expanded` are
|
|
41
|
+
* plain public settable properties on `<lyra-tree-node>` (not just
|
|
42
|
+
* reachable through this class's own `data` setter or the bubbling
|
|
43
|
+
* `lyra-node-toggle` event), so a cache keyed off those two entry points
|
|
44
|
+
* alone would go stale the moment a caller mutated a node directly --
|
|
45
|
+
* e.g. `node.item = { ...node.item, children: [...] }` to append a child
|
|
46
|
+
* in place. This walk only runs from user-paced `keydown` handling (never
|
|
47
|
+
* a hot render-loop path), so the cost of a `shadowRoot.querySelectorAll`
|
|
48
|
+
* per currently-expanded node is not worth trading for that staleness risk.
|
|
43
49
|
*/
|
|
44
|
-
private cachedVisible;
|
|
45
|
-
private invalidateVisibleCache;
|
|
46
|
-
/** Every currently *visible* (ancestor-expanded) node, top-to-bottom. */
|
|
47
50
|
private visibleNodeElements;
|
|
48
51
|
private findItem;
|
|
49
52
|
protected willUpdate(changed: PropertyValues): void;
|
|
@@ -94,8 +97,20 @@ export declare class LyraTree extends LyraElement {
|
|
|
94
97
|
*/
|
|
95
98
|
protected getUpdateComplete(): Promise<boolean>;
|
|
96
99
|
private onTreeKeyDown;
|
|
97
|
-
/**
|
|
98
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Expand every node in the tree, recursively. Resolves once every
|
|
102
|
+
* descendant has actually finished expanding (not just had `expanded` set)
|
|
103
|
+
* -- callers that immediately read `visibleNodeElements()`-derived state
|
|
104
|
+
* (or call `collapseAll()` right after) should `await` this instead of
|
|
105
|
+
* firing it and moving on.
|
|
106
|
+
*
|
|
107
|
+
* Guarded on `n.hasChildren`, matching `expand()`'s own invariant -- a leaf
|
|
108
|
+
* node's `expanded` must never be set to `true`, since `collapse()` (and
|
|
109
|
+
* this method's own counterpart, `collapseAll()`) refuse to act on a node
|
|
110
|
+
* that's `!hasChildren`, which would otherwise leave the leaf permanently
|
|
111
|
+
* stuck with a reflected `expanded` attribute nothing can clear.
|
|
112
|
+
*/
|
|
113
|
+
expandAll(): Promise<void>;
|
|
99
114
|
/**
|
|
100
115
|
* Collapse every node in the tree, recursively. Goes through each node's
|
|
101
116
|
* own `collapse()` (rather than assigning `expanded` directly) so its
|
|
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { html, nothing } from 'lit';
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
-
import { defineElement } from '../../internal/prefix.js';
|
|
10
|
+
import { defineElement, tag } from '../../internal/prefix.js';
|
|
11
11
|
import { isRtl } from '../../internal/rtl.js';
|
|
12
12
|
import { styles } from './tree.styles.js';
|
|
13
13
|
import { cascadeUpdateComplete } from './update-cascade.js';
|
|
@@ -38,14 +38,6 @@ export class LyraTree extends LyraElement {
|
|
|
38
38
|
this.activeId = null;
|
|
39
39
|
/** Set by `willUpdate()` when a `data` reassignment removes the node that currently holds real DOM focus; consumed by `updated()` to refocus the newly-designated `activeId` node once it's actually focusable. */
|
|
40
40
|
this.pendingFocusId = null;
|
|
41
|
-
/**
|
|
42
|
-
* Memoized result of the last `visibleNodeElements()` walk. Every keydown
|
|
43
|
-
* (ArrowUp/Down/Home/End especially) reads the full visible-node list, and
|
|
44
|
-
* rebuilding it means a `shadowRoot.querySelectorAll` per currently-expanded
|
|
45
|
-
* node -- invalidated below on the only two things that can change which
|
|
46
|
-
* nodes are visible: a `data` reassignment, or a node expanding/collapsing.
|
|
47
|
-
*/
|
|
48
|
-
this.cachedVisible = null;
|
|
49
41
|
/**
|
|
50
42
|
* A mouse click always lands directly on the node it interacts with --
|
|
51
43
|
* `select()`/`expand()`/`collapse()` all emit their own node's id --
|
|
@@ -62,8 +54,6 @@ export class LyraTree extends LyraElement {
|
|
|
62
54
|
* same-value, no-op assignment for them.
|
|
63
55
|
*/
|
|
64
56
|
this.onNodeActivate = (e) => {
|
|
65
|
-
if (e.type === 'lyra-node-toggle')
|
|
66
|
-
this.invalidateVisibleCache();
|
|
67
57
|
this.activeId = e.detail.id;
|
|
68
58
|
};
|
|
69
59
|
this.onTreeKeyDown = (e) => {
|
|
@@ -133,18 +123,25 @@ export class LyraTree extends LyraElement {
|
|
|
133
123
|
}
|
|
134
124
|
static { this.styles = [LyraElement.styles, styles]; }
|
|
135
125
|
get nodeElements() {
|
|
136
|
-
return [...this.querySelectorAll('
|
|
126
|
+
return [...this.querySelectorAll(tag('tree-node'))];
|
|
137
127
|
}
|
|
138
128
|
childrenOf(node) {
|
|
139
|
-
return [...(node.shadowRoot?.querySelectorAll('
|
|
129
|
+
return [...(node.shadowRoot?.querySelectorAll(tag('tree-node')) ?? [])];
|
|
140
130
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Every currently *visible* (ancestor-expanded) node, top-to-bottom.
|
|
133
|
+
*
|
|
134
|
+
* Recomputed on every call rather than memoized: `item`/`expanded` are
|
|
135
|
+
* plain public settable properties on `<lyra-tree-node>` (not just
|
|
136
|
+
* reachable through this class's own `data` setter or the bubbling
|
|
137
|
+
* `lyra-node-toggle` event), so a cache keyed off those two entry points
|
|
138
|
+
* alone would go stale the moment a caller mutated a node directly --
|
|
139
|
+
* e.g. `node.item = { ...node.item, children: [...] }` to append a child
|
|
140
|
+
* in place. This walk only runs from user-paced `keydown` handling (never
|
|
141
|
+
* a hot render-loop path), so the cost of a `shadowRoot.querySelectorAll`
|
|
142
|
+
* per currently-expanded node is not worth trading for that staleness risk.
|
|
143
|
+
*/
|
|
145
144
|
visibleNodeElements() {
|
|
146
|
-
if (this.cachedVisible)
|
|
147
|
-
return this.cachedVisible;
|
|
148
145
|
const acc = [];
|
|
149
146
|
const walk = (nodes) => {
|
|
150
147
|
for (const n of nodes) {
|
|
@@ -154,7 +151,6 @@ export class LyraTree extends LyraElement {
|
|
|
154
151
|
}
|
|
155
152
|
};
|
|
156
153
|
walk(this.nodeElements);
|
|
157
|
-
this.cachedVisible = acc;
|
|
158
154
|
return acc;
|
|
159
155
|
}
|
|
160
156
|
findItem(items, id) {
|
|
@@ -169,7 +165,6 @@ export class LyraTree extends LyraElement {
|
|
|
169
165
|
}
|
|
170
166
|
willUpdate(changed) {
|
|
171
167
|
if (changed.has('data')) {
|
|
172
|
-
this.invalidateVisibleCache();
|
|
173
168
|
// `document.activeElement` collapses to the outermost light-DOM node
|
|
174
169
|
// even when the real focus target is a nested descendant several
|
|
175
170
|
// shadow roots down, so this also catches a focused nested node whose
|
|
@@ -206,7 +201,7 @@ export class LyraTree extends LyraElement {
|
|
|
206
201
|
let previousSibling = null;
|
|
207
202
|
for (const item of this.data) {
|
|
208
203
|
const reused = !seen.has(item.id) ? existingById.get(item.id) : undefined;
|
|
209
|
-
const node = reused ?? document.createElement('
|
|
204
|
+
const node = reused ?? document.createElement(tag('tree-node'));
|
|
210
205
|
node.item = item;
|
|
211
206
|
node.depth = 0;
|
|
212
207
|
seen.add(item.id);
|
|
@@ -263,16 +258,29 @@ export class LyraTree extends LyraElement {
|
|
|
263
258
|
}
|
|
264
259
|
return result;
|
|
265
260
|
}
|
|
266
|
-
/**
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
261
|
+
/**
|
|
262
|
+
* Expand every node in the tree, recursively. Resolves once every
|
|
263
|
+
* descendant has actually finished expanding (not just had `expanded` set)
|
|
264
|
+
* -- callers that immediately read `visibleNodeElements()`-derived state
|
|
265
|
+
* (or call `collapseAll()` right after) should `await` this instead of
|
|
266
|
+
* firing it and moving on.
|
|
267
|
+
*
|
|
268
|
+
* Guarded on `n.hasChildren`, matching `expand()`'s own invariant -- a leaf
|
|
269
|
+
* node's `expanded` must never be set to `true`, since `collapse()` (and
|
|
270
|
+
* this method's own counterpart, `collapseAll()`) refuse to act on a node
|
|
271
|
+
* that's `!hasChildren`, which would otherwise leave the leaf permanently
|
|
272
|
+
* stuck with a reflected `expanded` attribute nothing can clear.
|
|
273
|
+
*/
|
|
274
|
+
async expandAll() {
|
|
275
|
+
const setAll = async (nodes) => {
|
|
276
|
+
await Promise.all(nodes.map(async (n) => {
|
|
277
|
+
if (n.hasChildren)
|
|
278
|
+
n.expanded = true;
|
|
279
|
+
await n.updateComplete;
|
|
280
|
+
await setAll(this.childrenOf(n));
|
|
281
|
+
}));
|
|
274
282
|
};
|
|
275
|
-
setAll(this.nodeElements);
|
|
283
|
+
await setAll(this.nodeElements);
|
|
276
284
|
}
|
|
277
285
|
/**
|
|
278
286
|
* Collapse every node in the tree, recursively. Goes through each node's
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type TemplateResult, type PropertyValues } from 'lit';
|
|
2
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
export type TypingIndicatorVariant = 'dots' | 'pulse' | 'cursor';
|
|
4
|
+
export type TypingIndicatorSize = 'sm' | 'md';
|
|
5
|
+
/**
|
|
6
|
+
* `<lyra-typing-indicator>` — a purely presentational "assistant is
|
|
7
|
+
* responding" presence cue. No events, no interactivity: a consumer mounts
|
|
8
|
+
* it while a response is being generated and removes it (or hides it) once
|
|
9
|
+
* real content has arrived.
|
|
10
|
+
*
|
|
11
|
+
* Three visual variants share one component rather than three separate tags
|
|
12
|
+
* because callers pick between them along a single axis — how the
|
|
13
|
+
* surrounding surface wants the cue to read — and nothing else about the
|
|
14
|
+
* component differs:
|
|
15
|
+
* - `dots` (default) — three dots with a staggered bounce, the classic
|
|
16
|
+
* "typing…" affordance for a standalone status line.
|
|
17
|
+
* - `pulse` — a single breathing dot, a quieter cue for a tighter space
|
|
18
|
+
* (e.g. next to an avatar).
|
|
19
|
+
* - `cursor` — a blinking vertical bar, meant to sit inline at the tail end
|
|
20
|
+
* of streamed text that is still being appended to.
|
|
21
|
+
*
|
|
22
|
+
* Accessibility: this indicator typically mounts and unmounts around a real
|
|
23
|
+
* generation lifecycle (appears when a response starts, disappears once one
|
|
24
|
+
* arrives) rather than emitting a stream of updates of its own, so it does
|
|
25
|
+
* *not* route through `<lyra-live-region>`/`Announcer`
|
|
26
|
+
* (`../../internal/announcer.js`) — that machinery exists to coalesce many
|
|
27
|
+
* rapidly-changing announcements into one, and there is only ever a single
|
|
28
|
+
* announcement here: the mount itself. A plain `role="status"` plus an
|
|
29
|
+
* accessible name derived from `label` is sufficient, set both as an
|
|
30
|
+
* `aria-label` on the host *and* as a visually-hidden text node in the
|
|
31
|
+
* shadow tree, so the name survives even if only one of the two is picked up
|
|
32
|
+
* by a given assistive-tech/browser pairing. An empty or whitespace-only
|
|
33
|
+
* `label` falls back to the default "Thinking…" copy in both places, rather
|
|
34
|
+
* than leaving the component with no accessible name at all. The animated dots/pulse/cursor
|
|
35
|
+
* shape is `aria-hidden="true"` — it's decorative; `label` is the entire
|
|
36
|
+
* accessible content, so nothing narrates individual animation frames.
|
|
37
|
+
*
|
|
38
|
+
* @customElement lyra-typing-indicator
|
|
39
|
+
* @csspart base - The decorative (`aria-hidden`) wrapper around the animated shape.
|
|
40
|
+
* @csspart dot - Each of the three dots in the `dots` variant.
|
|
41
|
+
* @csspart pulse - The single pulsing dot in the `pulse` variant.
|
|
42
|
+
* @csspart cursor - The blinking bar in the `cursor` variant.
|
|
43
|
+
*/
|
|
44
|
+
export declare class LyraTypingIndicator extends LyraElement {
|
|
45
|
+
static styles: import("lit").CSSResultGroup[];
|
|
46
|
+
/** Which decorative presentation to render. */
|
|
47
|
+
variant: TypingIndicatorVariant;
|
|
48
|
+
/** Accessible name, exposed via `role="status"`. Not re-announced on every
|
|
49
|
+
* animation frame — only mount (and any later change to this property)
|
|
50
|
+
* produces a new announcement. An empty or whitespace-only value falls
|
|
51
|
+
* back to the default "Thinking…" copy (see `accessibleLabel`) so the
|
|
52
|
+
* component never loses its accessible name. */
|
|
53
|
+
label: string;
|
|
54
|
+
/** Compact sizing for dense layouts (e.g. inline with a message bubble). */
|
|
55
|
+
size: TypingIndicatorSize;
|
|
56
|
+
/** The accessible name actually used, falling back to the default
|
|
57
|
+
* "Thinking…" copy when `label` is set to an empty or whitespace-only
|
|
58
|
+
* string -- otherwise both the `aria-label` and the sr-only text node
|
|
59
|
+
* would go blank, leaving this purely-decorative component with no
|
|
60
|
+
* accessible name at all. */
|
|
61
|
+
private get accessibleLabel();
|
|
62
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
63
|
+
render(): TemplateResult;
|
|
64
|
+
private renderShape;
|
|
65
|
+
}
|
|
66
|
+
declare global {
|
|
67
|
+
interface HTMLElementTagNameMap {
|
|
68
|
+
'lyra-typing-indicator': LyraTypingIndicator;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { defineElement } from '../../internal/prefix.js';
|
|
11
|
+
import { srOnly } from '../../internal/a11y.js';
|
|
12
|
+
import { styles } from './typing-indicator.styles.js';
|
|
13
|
+
/**
|
|
14
|
+
* `<lyra-typing-indicator>` — a purely presentational "assistant is
|
|
15
|
+
* responding" presence cue. No events, no interactivity: a consumer mounts
|
|
16
|
+
* it while a response is being generated and removes it (or hides it) once
|
|
17
|
+
* real content has arrived.
|
|
18
|
+
*
|
|
19
|
+
* Three visual variants share one component rather than three separate tags
|
|
20
|
+
* because callers pick between them along a single axis — how the
|
|
21
|
+
* surrounding surface wants the cue to read — and nothing else about the
|
|
22
|
+
* component differs:
|
|
23
|
+
* - `dots` (default) — three dots with a staggered bounce, the classic
|
|
24
|
+
* "typing…" affordance for a standalone status line.
|
|
25
|
+
* - `pulse` — a single breathing dot, a quieter cue for a tighter space
|
|
26
|
+
* (e.g. next to an avatar).
|
|
27
|
+
* - `cursor` — a blinking vertical bar, meant to sit inline at the tail end
|
|
28
|
+
* of streamed text that is still being appended to.
|
|
29
|
+
*
|
|
30
|
+
* Accessibility: this indicator typically mounts and unmounts around a real
|
|
31
|
+
* generation lifecycle (appears when a response starts, disappears once one
|
|
32
|
+
* arrives) rather than emitting a stream of updates of its own, so it does
|
|
33
|
+
* *not* route through `<lyra-live-region>`/`Announcer`
|
|
34
|
+
* (`../../internal/announcer.js`) — that machinery exists to coalesce many
|
|
35
|
+
* rapidly-changing announcements into one, and there is only ever a single
|
|
36
|
+
* announcement here: the mount itself. A plain `role="status"` plus an
|
|
37
|
+
* accessible name derived from `label` is sufficient, set both as an
|
|
38
|
+
* `aria-label` on the host *and* as a visually-hidden text node in the
|
|
39
|
+
* shadow tree, so the name survives even if only one of the two is picked up
|
|
40
|
+
* by a given assistive-tech/browser pairing. An empty or whitespace-only
|
|
41
|
+
* `label` falls back to the default "Thinking…" copy in both places, rather
|
|
42
|
+
* than leaving the component with no accessible name at all. The animated dots/pulse/cursor
|
|
43
|
+
* shape is `aria-hidden="true"` — it's decorative; `label` is the entire
|
|
44
|
+
* accessible content, so nothing narrates individual animation frames.
|
|
45
|
+
*
|
|
46
|
+
* @customElement lyra-typing-indicator
|
|
47
|
+
* @csspart base - The decorative (`aria-hidden`) wrapper around the animated shape.
|
|
48
|
+
* @csspart dot - Each of the three dots in the `dots` variant.
|
|
49
|
+
* @csspart pulse - The single pulsing dot in the `pulse` variant.
|
|
50
|
+
* @csspart cursor - The blinking bar in the `cursor` variant.
|
|
51
|
+
*/
|
|
52
|
+
export class LyraTypingIndicator extends LyraElement {
|
|
53
|
+
constructor() {
|
|
54
|
+
super(...arguments);
|
|
55
|
+
/** Which decorative presentation to render. */
|
|
56
|
+
this.variant = 'dots';
|
|
57
|
+
/** Accessible name, exposed via `role="status"`. Not re-announced on every
|
|
58
|
+
* animation frame — only mount (and any later change to this property)
|
|
59
|
+
* produces a new announcement. An empty or whitespace-only value falls
|
|
60
|
+
* back to the default "Thinking…" copy (see `accessibleLabel`) so the
|
|
61
|
+
* component never loses its accessible name. */
|
|
62
|
+
this.label = 'Thinking…';
|
|
63
|
+
/** Compact sizing for dense layouts (e.g. inline with a message bubble). */
|
|
64
|
+
this.size = 'md';
|
|
65
|
+
}
|
|
66
|
+
static { this.styles = [LyraElement.styles, styles, srOnly]; }
|
|
67
|
+
/** The accessible name actually used, falling back to the default
|
|
68
|
+
* "Thinking…" copy when `label` is set to an empty or whitespace-only
|
|
69
|
+
* string -- otherwise both the `aria-label` and the sr-only text node
|
|
70
|
+
* would go blank, leaving this purely-decorative component with no
|
|
71
|
+
* accessible name at all. */
|
|
72
|
+
get accessibleLabel() {
|
|
73
|
+
return this.label.trim() || 'Thinking…';
|
|
74
|
+
}
|
|
75
|
+
willUpdate(changed) {
|
|
76
|
+
this.setAttribute('role', 'status');
|
|
77
|
+
if (changed.has('label')) {
|
|
78
|
+
this.setAttribute('aria-label', this.accessibleLabel);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
render() {
|
|
82
|
+
return html `
|
|
83
|
+
<span part="base" aria-hidden="true">${this.renderShape()}</span>
|
|
84
|
+
<span class="sr-only">${this.accessibleLabel}</span>
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
renderShape() {
|
|
88
|
+
switch (this.variant) {
|
|
89
|
+
case 'pulse':
|
|
90
|
+
return html `<span part="pulse"></span>`;
|
|
91
|
+
case 'cursor':
|
|
92
|
+
return html `<span part="cursor"></span>`;
|
|
93
|
+
case 'dots':
|
|
94
|
+
default:
|
|
95
|
+
return html `<span part="dot"></span><span part="dot"></span><span part="dot"></span>`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
__decorate([
|
|
100
|
+
property({ reflect: true })
|
|
101
|
+
], LyraTypingIndicator.prototype, "variant", void 0);
|
|
102
|
+
__decorate([
|
|
103
|
+
property()
|
|
104
|
+
], LyraTypingIndicator.prototype, "label", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
property({ reflect: true })
|
|
107
|
+
], LyraTypingIndicator.prototype, "size", void 0);
|
|
108
|
+
defineElement('typing-indicator', LyraTypingIndicator);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
// `--lyra-transition-base` is used (rather than `--lyra-transition-fast`) as
|
|
3
|
+
// the animation-cycle length for every variant below: it's the token the
|
|
4
|
+
// rest of the library reserves for slightly-more-noticeable motion (gauge
|
|
5
|
+
// fill, dialog/popover open), whereas `-fast` is reserved for snappy
|
|
6
|
+
// discrete state flips (checkbox check, switch thumb). A continuous ambient
|
|
7
|
+
// loop reads calmer at the longer of the two. Note this token is a *compound*
|
|
8
|
+
// value (`180ms ease-out`, duration + timing-function together, exactly like
|
|
9
|
+
// every `transition:` shorthand elsewhere in this library) so it can only
|
|
10
|
+
// ever be spliced into the `animation:` *shorthand* below, never assigned to
|
|
11
|
+
// `animation-duration` alone -- that longhand requires a bare `<time>` and
|
|
12
|
+
// would silently invalidate (collapsing the duration to 0) if given the
|
|
13
|
+
// compound value. For the same reason no extra timing-function keyword can
|
|
14
|
+
// follow it in the shorthand: the token already supplies one.
|
|
15
|
+
export const styles = css `
|
|
16
|
+
:host {
|
|
17
|
+
display: inline-flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
vertical-align: middle;
|
|
20
|
+
line-height: 1;
|
|
21
|
+
--lyra-typing-dot-size: var(--lyra-space-s);
|
|
22
|
+
--lyra-typing-gap: var(--lyra-space-xs);
|
|
23
|
+
--lyra-typing-cursor-width: 0.125rem;
|
|
24
|
+
--lyra-typing-cursor-height: 1em;
|
|
25
|
+
}
|
|
26
|
+
:host([size='sm']) {
|
|
27
|
+
--lyra-typing-dot-size: 0.375rem;
|
|
28
|
+
--lyra-typing-gap: 0.1875rem;
|
|
29
|
+
--lyra-typing-cursor-width: 0.09375rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
[part='base'] {
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
gap: var(--lyra-typing-gap);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* -- dots -------------------------------------------------------------- */
|
|
39
|
+
[part='dot'] {
|
|
40
|
+
inline-size: var(--lyra-typing-dot-size);
|
|
41
|
+
block-size: var(--lyra-typing-dot-size);
|
|
42
|
+
border-radius: 50%;
|
|
43
|
+
background: currentColor;
|
|
44
|
+
opacity: 0.5;
|
|
45
|
+
animation: lyra-typing-dot-bounce var(--lyra-transition-base) infinite;
|
|
46
|
+
}
|
|
47
|
+
/* Fixed (not token-derived) stagger offsets -- --lyra-transition-base is
|
|
48
|
+
a compound "duration timing-function" value like every other transition
|
|
49
|
+
token in this library, so it can't be decomposed via calc() to derive a
|
|
50
|
+
fraction of just its duration; these two delays approximate a third and
|
|
51
|
+
two-thirds of that token's own fallback duration. */
|
|
52
|
+
[part='dot']:nth-child(2) {
|
|
53
|
+
animation-delay: 60ms;
|
|
54
|
+
}
|
|
55
|
+
[part='dot']:nth-child(3) {
|
|
56
|
+
animation-delay: 120ms;
|
|
57
|
+
}
|
|
58
|
+
@keyframes lyra-typing-dot-bounce {
|
|
59
|
+
0%,
|
|
60
|
+
80%,
|
|
61
|
+
100% {
|
|
62
|
+
transform: translateY(0);
|
|
63
|
+
opacity: 0.5;
|
|
64
|
+
}
|
|
65
|
+
40% {
|
|
66
|
+
transform: translateY(-35%);
|
|
67
|
+
opacity: 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* -- pulse --------------------------------------------------------------
|
|
72
|
+
A single breathing dot, meant for tighter spaces than three dots allow. */
|
|
73
|
+
[part='pulse'] {
|
|
74
|
+
inline-size: var(--lyra-typing-dot-size);
|
|
75
|
+
block-size: var(--lyra-typing-dot-size);
|
|
76
|
+
border-radius: 50%;
|
|
77
|
+
background: currentColor;
|
|
78
|
+
opacity: 1;
|
|
79
|
+
transform: scale(1);
|
|
80
|
+
animation: lyra-typing-pulse var(--lyra-transition-base) infinite;
|
|
81
|
+
}
|
|
82
|
+
@keyframes lyra-typing-pulse {
|
|
83
|
+
0%,
|
|
84
|
+
100% {
|
|
85
|
+
transform: scale(0.85);
|
|
86
|
+
opacity: 0.55;
|
|
87
|
+
}
|
|
88
|
+
50% {
|
|
89
|
+
transform: scale(1);
|
|
90
|
+
opacity: 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* -- cursor -------------------------------------------------------------
|
|
95
|
+
A blinking vertical bar for inline placement at the tail of streamed
|
|
96
|
+
text. The two adjacent keyframe stops (49% / 50%) hold identical values
|
|
97
|
+
either side of an instant flip, so the blink still reads as a sharp
|
|
98
|
+
on/off even though the token's ease-out timing-function is in effect
|
|
99
|
+
across the whole animation. */
|
|
100
|
+
[part='cursor'] {
|
|
101
|
+
inline-size: var(--lyra-typing-cursor-width);
|
|
102
|
+
block-size: var(--lyra-typing-cursor-height);
|
|
103
|
+
background: currentColor;
|
|
104
|
+
border-radius: var(--lyra-typing-cursor-width);
|
|
105
|
+
opacity: 1;
|
|
106
|
+
animation: lyra-typing-cursor-blink var(--lyra-transition-base) infinite;
|
|
107
|
+
}
|
|
108
|
+
@keyframes lyra-typing-cursor-blink {
|
|
109
|
+
0%,
|
|
110
|
+
49% {
|
|
111
|
+
opacity: 1;
|
|
112
|
+
}
|
|
113
|
+
50%,
|
|
114
|
+
100% {
|
|
115
|
+
opacity: 0;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Every variant collapses to its plain, fully-visible resting state
|
|
120
|
+
under reduced motion -- never a static mid-animation frame (e.g. a
|
|
121
|
+
permanently-invisible cursor, had the blink's "off" half been frozen
|
|
122
|
+
instead). */
|
|
123
|
+
@media (prefers-reduced-motion: reduce) {
|
|
124
|
+
[part='dot'],
|
|
125
|
+
[part='pulse'],
|
|
126
|
+
[part='cursor'] {
|
|
127
|
+
animation: none !important;
|
|
128
|
+
opacity: 1;
|
|
129
|
+
transform: none;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
`;
|