@aceshooting/lyra-ui 5.0.0 → 5.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 +30 -12
- package/custom-elements.json +2150 -220
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +2 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.d.ts +1 -0
- package/dist/components/agent-tools/agent-run/agent-run.class.d.ts.map +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -0
- package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +2 -0
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +5 -0
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +5 -0
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +3 -0
- package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +3 -0
- package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +2 -0
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +2 -0
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +3 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -0
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -0
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +1 -0
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -0
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +2 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +15 -0
- package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/chart.class.js +15 -0
- package/dist/components/charts/chart/chart.class.js.map +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +2 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +2 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +2 -0
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.js +2 -0
- package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +5 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +5 -1
- package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.d.ts.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.js +15 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js.map +1 -1
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -0
- package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
- package/dist/components/conversation/code-block/code-block.class.js +4 -0
- package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +2 -0
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +2 -0
- package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +2 -0
- package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +2 -0
- package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +2 -0
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +2 -0
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.d.ts +5 -0
- package/dist/components/conversation/stream-status/stream-status.class.d.ts.map +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +5 -0
- package/dist/components/conversation/stream-status/stream-status.class.js.map +1 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +2 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.js +2 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +1 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +6 -0
- package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
- package/dist/components/data/calendar/calendar.class.js +6 -0
- package/dist/components/data/calendar/calendar.class.js.map +1 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +1 -0
- package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
- package/dist/components/data/context-meter/context-meter.class.js +1 -0
- package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +1 -0
- package/dist/components/data/data-grid/data-grid.class.d.ts.map +1 -1
- package/dist/components/data/data-grid/data-grid.class.js +1 -0
- package/dist/components/data/data-grid/data-grid.class.js.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +3 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +2 -2
- package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
- package/dist/components/data/flow-node/flow-node.class.d.ts +1 -1
- package/dist/components/data/flow-node/flow-node.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +51 -2
- package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +42 -6
- package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/data/heatmap/heatmap.styles.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.styles.js +19 -0
- package/dist/components/data/heatmap/heatmap.styles.js.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +20 -0
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +35 -0
- package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.styles.d.ts.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +29 -0
- package/dist/components/data/sequence-strip/sequence-strip.styles.js.map +1 -1
- package/dist/components/data/table/table.class.d.ts +11 -0
- package/dist/components/data/table/table.class.d.ts.map +1 -1
- package/dist/components/data/table/table.class.js +11 -0
- package/dist/components/data/table/table.class.js.map +1 -1
- package/dist/components/data/timeline/timeline-item.class.d.ts +17 -0
- package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
- package/dist/components/data/timeline/timeline-item.class.js +17 -0
- package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
- package/dist/components/data/timeline/timeline.styles.d.ts.map +1 -1
- package/dist/components/data/timeline/timeline.styles.js +6 -3
- package/dist/components/data/timeline/timeline.styles.js.map +1 -1
- package/dist/components/data/tree/tree-node.class.d.ts +3 -0
- package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
- package/dist/components/data/tree/tree-node.class.js +3 -0
- package/dist/components/data/tree/tree-node.class.js.map +1 -1
- package/dist/components/forms/button/button.class.d.ts +24 -0
- package/dist/components/forms/button/button.class.d.ts.map +1 -1
- package/dist/components/forms/button/button.class.js +24 -0
- package/dist/components/forms/button/button.class.js.map +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +28 -12
- package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +44 -14
- package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
- package/dist/components/forms/code-editor/code-editor.styles.d.ts.map +1 -1
- package/dist/components/forms/code-editor/code-editor.styles.js +4 -0
- package/dist/components/forms/code-editor/code-editor.styles.js.map +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +10 -0
- package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
- package/dist/components/forms/combobox/combobox.class.js +16 -0
- package/dist/components/forms/combobox/combobox.class.js.map +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +3 -3
- package/dist/components/forms/combobox/option.class.d.ts.map +1 -1
- package/dist/components/forms/combobox/option.class.js +9 -0
- package/dist/components/forms/combobox/option.class.js.map +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +3 -0
- package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +3 -0
- package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +37 -2
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +113 -10
- package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -0
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
- package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.js +4 -0
- package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
- package/dist/components/forms/input/input.class.d.ts +11 -3
- package/dist/components/forms/input/input.class.d.ts.map +1 -1
- package/dist/components/forms/input/input.class.js +3 -0
- package/dist/components/forms/input/input.class.js.map +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +12 -0
- package/dist/components/forms/input/time-input.class.d.ts.map +1 -1
- package/dist/components/forms/input/time-input.class.js +27 -0
- package/dist/components/forms/input/time-input.class.js.map +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -0
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +7 -0
- package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
- package/dist/components/forms/select/select.class.d.ts +8 -0
- package/dist/components/forms/select/select.class.d.ts.map +1 -1
- package/dist/components/forms/select/select.class.js +8 -0
- package/dist/components/forms/select/select.class.js.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +6 -0
- package/dist/components/forms/switch/switch.class.d.ts.map +1 -1
- package/dist/components/forms/switch/switch.class.js +6 -0
- package/dist/components/forms/switch/switch.class.js.map +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +2 -0
- package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
- package/dist/components/forms/token-input/token-input.class.js +2 -0
- package/dist/components/forms/token-input/token-input.class.js.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +8 -0
- package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.js +8 -0
- package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
- package/dist/components/layout/button-group/button-group.class.d.ts +1 -1
- package/dist/components/layout/button-group/button-group.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +12 -0
- package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +12 -0
- package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
- package/dist/components/layout/control-group/control-group.class.d.ts +1 -1
- package/dist/components/layout/control-group/control-group.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +7 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +7 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +3 -0
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +3 -0
- package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +2 -0
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -0
- package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
- package/dist/components/layout/scroller/scroller.class.d.ts +2 -2
- package/dist/components/layout/scroller/scroller.class.js +2 -2
- package/dist/components/layout/segmented/segmented.class.d.ts +6 -0
- package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
- package/dist/components/layout/segmented/segmented.class.js +6 -0
- package/dist/components/layout/segmented/segmented.class.js.map +1 -1
- package/dist/components/layout/split/split.class.d.ts +68 -15
- package/dist/components/layout/split/split.class.d.ts.map +1 -1
- package/dist/components/layout/split/split.class.js +80 -21
- package/dist/components/layout/split/split.class.js.map +1 -1
- package/dist/components/layout/stepper/stepper.class.d.ts +52 -11
- package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
- package/dist/components/layout/stepper/stepper.class.js +69 -17
- package/dist/components/layout/stepper/stepper.class.js.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +3 -0
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
- package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +6 -0
- package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
- package/dist/components/layout/widget/widget.class.js +6 -0
- package/dist/components/layout/widget/widget.class.js.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +13 -0
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +13 -0
- package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +6 -0
- package/dist/components/media/avatar/avatar.class.d.ts.map +1 -1
- package/dist/components/media/avatar/avatar.class.js +6 -0
- package/dist/components/media/avatar/avatar.class.js.map +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +2 -0
- package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
- package/dist/components/media/media-card/media-card.class.js +2 -0
- package/dist/components/media/media-card/media-card.class.js.map +1 -1
- package/dist/components/media/playback/playback.class.d.ts +2 -0
- package/dist/components/media/playback/playback.class.d.ts.map +1 -1
- package/dist/components/media/playback/playback.class.js +2 -0
- package/dist/components/media/playback/playback.class.js.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -0
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +3 -0
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
- package/dist/components/overlays/badge/badge.class.d.ts +6 -0
- package/dist/components/overlays/badge/badge.class.d.ts.map +1 -1
- package/dist/components/overlays/badge/badge.class.js +6 -0
- package/dist/components/overlays/badge/badge.class.js.map +1 -1
- package/dist/components/overlays/callout/callout.class.d.ts +6 -0
- package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
- package/dist/components/overlays/callout/callout.class.js +6 -0
- package/dist/components/overlays/callout/callout.class.js.map +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +18 -0
- package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
- package/dist/components/overlays/chip/chip.class.js +18 -0
- package/dist/components/overlays/chip/chip.class.js.map +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +6 -0
- package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +6 -0
- package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
- package/dist/components/overlays/drawer/drawer.class.d.ts +6 -0
- package/dist/components/overlays/drawer/drawer.class.d.ts.map +1 -1
- package/dist/components/overlays/drawer/drawer.class.js +6 -0
- package/dist/components/overlays/drawer/drawer.class.js.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.d.ts +1 -0
- package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +1 -0
- package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.d.ts +2 -0
- package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.js +2 -0
- package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
- package/dist/components/overlays/spinner/spinner.class.d.ts +4 -0
- package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
- package/dist/components/overlays/spinner/spinner.class.js +4 -0
- package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
- package/dist/components/overlays/toast/toast-item.class.d.ts +11 -0
- package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +11 -0
- package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
- package/dist/components/overlays/toast/toast.class.d.ts +15 -0
- package/dist/components/overlays/toast/toast.class.d.ts.map +1 -1
- package/dist/components/overlays/toast/toast.class.js +15 -0
- package/dist/components/overlays/toast/toast.class.js.map +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +8 -0
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts.map +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +8 -0
- package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +1 -0
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -0
- package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +1 -0
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -0
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +1 -0
- package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -0
- package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
- package/dist/components/utility/icon/icon.class.d.ts +1 -0
- package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
- package/dist/components/utility/icon/icon.class.js +1 -0
- package/dist/components/utility/icon/icon.class.js.map +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -0
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +3 -0
- package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
- package/dist/components/utility/known-date/known-date.class.d.ts +11 -0
- package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
- package/dist/components/utility/known-date/known-date.class.js +11 -0
- package/dist/components/utility/known-date/known-date.class.js.map +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +2 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +2 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +5 -0
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +5 -0
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +3 -0
- package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +3 -0
- package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +2 -0
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -0
- package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +2 -0
- package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +41 -9
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
- package/dist/internal/css-length.d.ts +40 -0
- package/dist/internal/css-length.d.ts.map +1 -0
- package/dist/internal/css-length.js +72 -0
- package/dist/internal/css-length.js.map +1 -0
- package/dist/internal/orientation-breakpoint.d.ts +12 -0
- package/dist/internal/orientation-breakpoint.d.ts.map +1 -0
- package/dist/internal/orientation-breakpoint.js +127 -0
- package/dist/internal/orientation-breakpoint.js.map +1 -0
- package/dist/lyra.d.ts +2 -2
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js.map +1 -1
- package/llms/components/lr-accordion-item.md +23 -0
- package/llms/components/lr-accordion.md +23 -0
- package/llms/components/lr-activity-feed.md +45 -0
- package/llms/components/lr-agent-run.md +66 -0
- package/llms/components/lr-agent-trace.md +42 -0
- package/llms/components/lr-agent-workspace.md +109 -0
- package/llms/components/lr-animated-image.md +66 -0
- package/llms/components/lr-animation.md +73 -0
- package/llms/components/lr-app-rail-item.md +218 -0
- package/llms/components/lr-app-rail.md +218 -0
- package/llms/components/lr-archive-viewer.md +36 -0
- package/llms/components/lr-artifact-panel.md +60 -0
- package/llms/components/lr-attachment-chip.md +131 -0
- package/llms/components/lr-attachment-trigger.md +90 -0
- package/llms/components/lr-audio-visualizer.md +43 -0
- package/llms/components/lr-av-player.md +50 -0
- package/llms/components/lr-avatar-group.md +69 -0
- package/llms/components/lr-avatar.md +69 -0
- package/llms/components/lr-badge.md +25 -0
- package/llms/components/lr-bar-chart.md +70 -0
- package/llms/components/lr-box-plot.md +67 -0
- package/llms/components/lr-branch-picker.md +32 -0
- package/llms/components/lr-breadcrumb-item.md +30 -0
- package/llms/components/lr-breadcrumb.md +30 -0
- package/llms/components/lr-browser-frame.md +51 -0
- package/llms/components/lr-bubble-chart.md +70 -0
- package/llms/components/lr-button-group.md +30 -0
- package/llms/components/lr-button.md +89 -0
- package/llms/components/lr-calendar-viewer.md +32 -0
- package/llms/components/lr-calendar.md +52 -0
- package/llms/components/lr-callout.md +37 -0
- package/llms/components/lr-card.md +67 -0
- package/llms/components/lr-carousel-item.md +29 -0
- package/llms/components/lr-carousel.md +43 -0
- package/llms/components/lr-chart.md +148 -0
- package/llms/components/lr-chat-composer.md +139 -0
- package/llms/components/lr-chat-message.md +145 -0
- package/llms/components/lr-chat-viewport.md +70 -0
- package/llms/components/lr-checkbox-group.md +21 -0
- package/llms/components/lr-checkbox.md +79 -0
- package/llms/components/lr-checkpoint.md +48 -0
- package/llms/components/lr-chip-group.md +152 -0
- package/llms/components/lr-chip.md +152 -0
- package/llms/components/lr-chunk-inspector.md +66 -0
- package/llms/components/lr-citation-badge.md +102 -0
- package/llms/components/lr-code-block-core.md +113 -0
- package/llms/components/lr-code-block.md +146 -0
- package/llms/components/lr-code-editor.md +72 -0
- package/llms/components/lr-color-picker.md +21 -0
- package/llms/components/lr-combobox.md +196 -0
- package/llms/components/lr-command-palette.md +50 -0
- package/llms/components/lr-commit-card.md +33 -0
- package/llms/components/lr-community-card.md +54 -0
- package/llms/components/lr-compare-panel.md +38 -0
- package/llms/components/lr-confirm-bar.md +48 -0
- package/llms/components/lr-contact-viewer.md +34 -0
- package/llms/components/lr-context-inspector.md +50 -0
- package/llms/components/lr-context-meter.md +92 -0
- package/llms/components/lr-control-group.md +46 -0
- package/llms/components/lr-conversation-item.md +118 -0
- package/llms/components/lr-copy-button.md +52 -0
- package/llms/components/lr-csv-viewer.md +49 -0
- package/llms/components/lr-dashboard-grid.md +34 -0
- package/llms/components/lr-data-grid.md +47 -0
- package/llms/components/lr-dataset-viewer.md +60 -0
- package/llms/components/lr-date-input.md +201 -0
- package/llms/components/lr-date-picker.md +201 -0
- package/llms/components/lr-details.md +23 -0
- package/llms/components/lr-dialog.md +185 -0
- package/llms/components/lr-diff-view.md +86 -0
- package/llms/components/lr-divider.md +28 -0
- package/llms/components/lr-dock-panel.md +110 -0
- package/llms/components/lr-document-compare.md +22 -0
- package/llms/components/lr-document-library.md +21 -0
- package/llms/components/lr-document-preview.md +179 -0
- package/llms/components/lr-document-viewer.md +84 -0
- package/llms/components/lr-docx-viewer.md +63 -0
- package/llms/components/lr-doughnut-chart.md +70 -0
- package/llms/components/lr-drawer.md +48 -0
- package/llms/components/lr-drilldown-panel.md +25 -0
- package/llms/components/lr-dropdown-item.md +171 -0
- package/llms/components/lr-dropdown.md +24 -0
- package/llms/components/lr-ebook-viewer.md +60 -0
- package/llms/components/lr-email-viewer.md +51 -0
- package/llms/components/lr-emoji-picker.md +71 -0
- package/llms/components/lr-empty.md +56 -0
- package/llms/components/lr-entity-card.md +64 -0
- package/llms/components/lr-entity-chip.md +50 -0
- package/llms/components/lr-entity-dossier.md +71 -0
- package/llms/components/lr-env-list.md +27 -0
- package/llms/components/lr-eval-dataset.md +45 -0
- package/llms/components/lr-eval-result.md +45 -0
- package/llms/components/lr-evaluation-run.md +50 -0
- package/llms/components/lr-export-button.md +104 -0
- package/llms/components/lr-file-icon.md +34 -0
- package/llms/components/lr-file-input.md +104 -0
- package/llms/components/lr-file-tree.md +29 -0
- package/llms/components/lr-filter-bar.md +20 -0
- package/llms/components/lr-flag.md +122 -0
- package/llms/components/lr-flow-canvas.md +112 -0
- package/llms/components/lr-flow-controls.md +47 -0
- package/llms/components/lr-flow-minimap.md +52 -0
- package/llms/components/lr-flow-node.md +56 -0
- package/llms/components/lr-flow-run-overlay.md +56 -0
- package/llms/components/lr-format-bytes.md +31 -0
- package/llms/components/lr-format-date.md +33 -0
- package/llms/components/lr-format-number.md +41 -0
- package/llms/components/lr-gauge.md +65 -0
- package/llms/components/lr-generation-status.md +105 -0
- package/llms/components/lr-geojson-view.md +43 -0
- package/llms/components/lr-graph-legend.md +64 -0
- package/llms/components/lr-graph-query-builder.md +27 -0
- package/llms/components/lr-graph.md +224 -0
- package/llms/components/lr-grounding-summary.md +57 -0
- package/llms/components/lr-handoff-divider.md +27 -0
- package/llms/components/lr-heatmap.md +232 -0
- package/llms/components/lr-highlight-layer.md +31 -0
- package/llms/components/lr-histogram.md +69 -0
- package/llms/components/lr-html-viewer.md +30 -0
- package/llms/components/lr-icon-button.md +39 -0
- package/llms/components/lr-icon.md +36 -0
- package/llms/components/lr-image-comparer.md +38 -0
- package/llms/components/lr-image-viewer.md +35 -0
- package/llms/components/lr-include.md +53 -0
- package/llms/components/lr-ingestion-queue.md +60 -0
- package/llms/components/lr-input.md +82 -0
- package/llms/components/lr-intersection-observer.md +25 -0
- package/llms/components/lr-json-viewer.md +98 -0
- package/llms/components/lr-kbd.md +74 -0
- package/llms/components/lr-knowledge-base.md +64 -0
- package/llms/components/lr-knowledge-graph-explorer.md +92 -0
- package/llms/components/lr-known-date.md +84 -0
- package/llms/components/lr-lightbox.md +79 -0
- package/llms/components/lr-line-chart.md +70 -0
- package/llms/components/lr-lite-chart.md +143 -0
- package/llms/components/lr-live-region.md +105 -0
- package/llms/components/lr-map.md +127 -0
- package/llms/components/lr-markdown-core.md +70 -0
- package/llms/components/lr-markdown.md +171 -0
- package/llms/components/lr-media-card.md +106 -0
- package/llms/components/lr-memory-panel.md +67 -0
- package/llms/components/lr-mention-popover.md +139 -0
- package/llms/components/lr-menu-item.md +171 -0
- package/llms/components/lr-menu.md +171 -0
- package/llms/components/lr-message-actions.md +48 -0
- package/llms/components/lr-message-feedback.md +37 -0
- package/llms/components/lr-mind-map.md +64 -0
- package/llms/components/lr-model-select.md +144 -0
- package/llms/components/lr-model-settings-panel.md +99 -0
- package/llms/components/lr-mutation-observer.md +27 -0
- package/llms/components/lr-neighbor-list.md +56 -0
- package/llms/components/lr-node-palette.md +67 -0
- package/llms/components/lr-notebook-viewer.md +65 -0
- package/llms/components/lr-number-input.md +44 -0
- package/llms/components/lr-option.md +196 -0
- package/llms/components/lr-page-rail.md +37 -0
- package/llms/components/lr-pagination.md +88 -0
- package/llms/components/lr-path-strip.md +55 -0
- package/llms/components/lr-pdf-viewer.md +78 -0
- package/llms/components/lr-phone-input.md +162 -0
- package/llms/components/lr-pie-chart.md +70 -0
- package/llms/components/lr-playback.md +74 -0
- package/llms/components/lr-polar-area-chart.md +70 -0
- package/llms/components/lr-policy-summary.md +33 -0
- package/llms/components/lr-poll-status.md +71 -0
- package/llms/components/lr-popover.md +31 -0
- package/llms/components/lr-pptx-viewer.md +35 -0
- package/llms/components/lr-progress-bar.md +22 -0
- package/llms/components/lr-progress-ring.md +26 -0
- package/llms/components/lr-provenance-panel.md +58 -0
- package/llms/components/lr-push-to-talk.md +50 -0
- package/llms/components/lr-qr-code.md +20 -0
- package/llms/components/lr-query-builder.md +21 -0
- package/llms/components/lr-radar-chart.md +70 -0
- package/llms/components/lr-radio-group.md +25 -0
- package/llms/components/lr-radio.md +31 -0
- package/llms/components/lr-random-content.md +62 -0
- package/llms/components/lr-rating.md +21 -0
- package/llms/components/lr-relative-time.md +31 -0
- package/llms/components/lr-resize-observer.md +25 -0
- package/llms/components/lr-responsive-panel.md +112 -0
- package/llms/components/lr-result-card.md +88 -0
- package/llms/components/lr-result-field.md +88 -0
- package/llms/components/lr-retrieval-results.md +84 -0
- package/llms/components/lr-retrieval-search.md +70 -0
- package/llms/components/lr-retrieval-trace.md +59 -0
- package/llms/components/lr-rubric-form.md +37 -0
- package/llms/components/lr-scatter-chart.md +70 -0
- package/llms/components/lr-scroller.md +47 -0
- package/llms/components/lr-segmented.md +74 -0
- package/llms/components/lr-select.md +113 -0
- package/llms/components/lr-sequence-strip.md +95 -0
- package/llms/components/lr-skeleton.md +53 -0
- package/llms/components/lr-slider.md +92 -0
- package/llms/components/lr-source-card.md +131 -0
- package/llms/components/lr-source-list.md +131 -0
- package/llms/components/lr-source-picker.md +63 -0
- package/llms/components/lr-span-waterfall.md +42 -0
- package/llms/components/lr-sparkline.md +60 -0
- package/llms/components/lr-spinner.md +32 -0
- package/llms/components/lr-split.md +191 -0
- package/llms/components/lr-spreadsheet-viewer.md +47 -0
- package/llms/components/lr-stack-trace.md +77 -0
- package/llms/components/lr-stat.md +89 -0
- package/llms/components/lr-stepper.md +118 -0
- package/llms/components/lr-stream-status.md +128 -0
- package/llms/components/lr-streaming-text.md +101 -0
- package/llms/components/lr-suggestion-chips.md +40 -0
- package/llms/components/lr-svg-viewer.md +47 -0
- package/llms/components/lr-swatch-picker.md +91 -0
- package/llms/components/lr-switch.md +82 -0
- package/llms/components/lr-table.md +201 -0
- package/llms/components/lr-tabs.md +80 -0
- package/llms/components/lr-tag.md +25 -0
- package/llms/components/lr-task-list.md +42 -0
- package/llms/components/lr-terminal.md +44 -0
- package/llms/components/lr-test-results.md +38 -0
- package/llms/components/lr-textarea.md +111 -0
- package/llms/components/lr-thinking-panel.md +93 -0
- package/llms/components/lr-thread-list.md +97 -0
- package/llms/components/lr-time-input.md +53 -0
- package/llms/components/lr-time-range.md +91 -0
- package/llms/components/lr-timeline-item.md +65 -0
- package/llms/components/lr-timeline.md +65 -0
- package/llms/components/lr-toast-item.md +123 -0
- package/llms/components/lr-toast.md +123 -0
- package/llms/components/lr-token-input.md +31 -0
- package/llms/components/lr-tool-approval-dialog.md +131 -0
- package/llms/components/lr-tool-call-chip.md +101 -0
- package/llms/components/lr-tool-param-form.md +148 -0
- package/llms/components/lr-tool-result-dialog.md +106 -0
- package/llms/components/lr-tool-result-view.md +162 -0
- package/llms/components/lr-tool-select-dialog.md +124 -0
- package/llms/components/lr-tool-timeline.md +56 -0
- package/llms/components/lr-tooltip.md +47 -0
- package/llms/components/lr-tour.md +100 -0
- package/llms/components/lr-trace-tree.md +35 -0
- package/llms/components/lr-transcript-feed.md +45 -0
- package/llms/components/lr-tree-node.md +133 -0
- package/llms/components/lr-tree.md +133 -0
- package/llms/components/lr-typing-indicator.md +80 -0
- package/llms/components/lr-usage-badge.md +44 -0
- package/llms/components/lr-virtual-list.md +145 -0
- package/llms/components/lr-voice-picker.md +78 -0
- package/llms/components/lr-widget-renderer.md +78 -0
- package/llms/components/lr-widget.md +104 -0
- package/llms/components/lr-word-cloud.md +112 -0
- package/llms/components/lr-xml-viewer.md +58 -0
- package/llms/components/lr-zoomable-frame.md +57 -0
- package/llms/index.md +301 -0
- package/llms/migration.md +86 -0
- package/llms/peers.md +41 -0
- package/llms/shared.md +321 -0
- package/llms/tokens.md +533 -0
- package/llms-full.txt +10731 -8563
- package/llms.txt +64 -121
- package/package.json +14 -2
- package/vscode-css-data.json +1424 -185
- package/vscode-html-data.json +128 -107
- package/web-types.json +853 -118
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-app-rail`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/layout/app-rail/app-rail.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraAppRail`, also available unregistered from `@aceshooting/lyra-ui/components/layout/app-rail/app-rail.class.js`
|
|
7
|
+
- **Family** `components/layout/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Documented with** `lr-app-rail-item` (same section below)
|
|
10
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## `lr-app-rail`
|
|
15
|
+
|
|
16
|
+
A responsive navigation rail that adapts across three presentations as the *viewport* narrows (not
|
|
17
|
+
this element's own inline size): `'full'` (nav items show icon + label, inline), `'icon-only'` (a
|
|
18
|
+
narrower inline rail, icons only), and `'mobile'` (hidden behind a toggle button; opening it shows a
|
|
19
|
+
focus-trapped floating overlay over the page). First-party invention (no Web Awesome equivalent).
|
|
20
|
+
Breakpoints are viewport-width `matchMedia()` queries against `icon-only-breakpoint`/
|
|
21
|
+
`mobile-breakpoint`, not a `ResizeObserver` on this element — presentation tracks the actual device/
|
|
22
|
+
window width the way a native OS shell's navigation does, not however much horizontal space a
|
|
23
|
+
particular layout happens to give it. `[part="base"]` (the inline `'full'`/`'icon-only'`
|
|
24
|
+
presentation) and `[part="panel"]` (the mobile overlay) are the *same* element promoted in place
|
|
25
|
+
across modes (mirrors `<lr-widget>`'s fullscreen mode) — never both at once, and slotted nav
|
|
26
|
+
content is never duplicated.
|
|
27
|
+
|
|
28
|
+
Opting in to `resizable` adds a continuously draggable width for the `'full'` state: a
|
|
29
|
+
`[part="resizer"]` handle (pointer-drag and Left/Right-arrow keyboard stepping, RTL-aware) clamped to
|
|
30
|
+
`[minRailWidthPx, maxRailWidthPx]`, with no built-in persistence — a consumer that wants the chosen
|
|
31
|
+
width to survive a reload listens for `lr-rail-resize` and persists `railWidthPx` itself.
|
|
32
|
+
`preferredMode` separately lets a host manually prefer `'full'`/`'icon-only'` for the non-mobile
|
|
33
|
+
breakpoint axis (e.g. a user's own collapse toggle) while `mobile-breakpoint` continues to be tracked
|
|
34
|
+
automatically regardless — it's only consulted while `mode` isn't force-pinned via the `mode`
|
|
35
|
+
accessor itself, which still takes full priority.
|
|
36
|
+
|
|
37
|
+
**Properties:**
|
|
38
|
+
- `mode: AppRailMode` (custom accessor, reflected) — the getter always returns one of the three real
|
|
39
|
+
modes (`'full'|'icon-only'|'mobile'`), never `'auto'`. The setter accepts
|
|
40
|
+
`AppRailModeInput` (`AppRailMode | 'auto'`): assigning `'full'`/`'icon-only'`/`'mobile'` forces
|
|
41
|
+
that mode and stops the element responding to breakpoint changes; assigning the write-only
|
|
42
|
+
sentinel `'auto'` releases the force and immediately re-syncs to the current viewport width,
|
|
43
|
+
resuming automatic tracking. Settable via the `mode` attribute too (`mode="icon-only"`,
|
|
44
|
+
`mode="auto"`).
|
|
45
|
+
- `iconOnlyBreakpoint: string = '960px'` (attribute `icon-only-breakpoint`) — any valid CSS length,
|
|
46
|
+
used directly in a `(max-width: ...)` media query; below it the rail switches from `'full'` to
|
|
47
|
+
`'icon-only'`.
|
|
48
|
+
- `mobileBreakpoint: string = '600px'` (attribute `mobile-breakpoint`) — same mechanism; below it the
|
|
49
|
+
rail switches from `'icon-only'` to `'mobile'`. Should be smaller than `iconOnlyBreakpoint` to
|
|
50
|
+
produce all three states as the viewport narrows.
|
|
51
|
+
- `open: boolean = false` (reflected) — whether the mobile floating overlay is shown. Only meaningful
|
|
52
|
+
while `mode` is `'mobile'` — the value is preserved (not reset) while another mode is active, but
|
|
53
|
+
no overlay chrome renders until `mode` is `'mobile'` again. Set this directly, or use the built-in
|
|
54
|
+
toggle button — there is no separate `show()`/`hide()` pair.
|
|
55
|
+
- `label: string = 'Navigation'` — accessible name for the rail's navigation landmark, and for its
|
|
56
|
+
dialog role while the mobile overlay is open. A host-level `aria-label` attribute (see below)
|
|
57
|
+
takes precedence over this when both are set.
|
|
58
|
+
- `preferredMode?: 'full' | 'icon-only' | null` (attribute `preferred-mode`) — manually prefers
|
|
59
|
+
`'full'` or `'icon-only'` for the non-mobile breakpoint axis, while `mobile-breakpoint` continues to
|
|
60
|
+
be tracked automatically regardless — e.g. a user's manual collapse toggle that should still yield
|
|
61
|
+
to a genuinely too-narrow-for-any-inline-rail viewport. Only consulted while `mode` isn't
|
|
62
|
+
force-pinned via its own accessor (see above) — that continues to take full priority, unchanged.
|
|
63
|
+
Unset (the default, `null`) reproduces the original breakpoint-only behavior exactly.
|
|
64
|
+
- `hideToggle: boolean = false` (reflected, attribute `hide-toggle`) — suppresses the built-in mobile
|
|
65
|
+
`[part='toggle']` hamburger/close button entirely, for a consumer that already owns an external
|
|
66
|
+
mobile-menu toggle wired to this rail's own `open` property. `false` (the default) reproduces the
|
|
67
|
+
exact existing output; note `open` still has no built-in external trigger of its own once this is
|
|
68
|
+
set, since `lr-toggle` only fires from the toggle button being activated.
|
|
69
|
+
- `resizable: boolean = false` (reflected) — opts a continuously draggable width in for the `'full'`
|
|
70
|
+
state, exposing a `[part='resizer']` handle clamped to `[minRailWidthPx, maxRailWidthPx]`. `false`
|
|
71
|
+
(the default) renders no resizer and leaves the fixed-width `--lr-app-rail-width` CSS token
|
|
72
|
+
exactly as before this property existed.
|
|
73
|
+
- `railWidthPx?: number` (attribute `rail-width-px`) — the rail's current width in px while
|
|
74
|
+
`resizable`; settable/gettable directly. Unset defers to `--lr-app-rail-width`'s own resolved
|
|
75
|
+
width.
|
|
76
|
+
- `minRailWidthPx: number = 190` (attribute `min-rail-width-px`) — minimum `railWidthPx` a
|
|
77
|
+
drag/keyboard resize can reach.
|
|
78
|
+
- `maxRailWidthPx: number = 440` (attribute `max-rail-width-px`) — maximum `railWidthPx` a
|
|
79
|
+
drag/keyboard resize can reach.
|
|
80
|
+
- `dragging: boolean = false` (reflected) — `true` for the duration of an active pointer-driven
|
|
81
|
+
resize drag (not a keyboard step); reflected so a consumer (or this component's own styles) can
|
|
82
|
+
suppress `[part='base']`'s `transition: inline-size` during the drag, which otherwise visibly
|
|
83
|
+
"chases" the pointer instead of tracking it 1:1. Effectively read-only (this component owns the
|
|
84
|
+
transitions), but a plain reflected property like every other boolean here.
|
|
85
|
+
|
|
86
|
+
Also settable as a plain `aria-label` attribute (not a reactive property): overrides the computed
|
|
87
|
+
`label`/localized-default accessible name on both the navigation landmark and the mobile dialog
|
|
88
|
+
role, matching `<lr-date-input>`'s `accessibleLabel`.
|
|
89
|
+
|
|
90
|
+
**Events:** `lr-mode-change` (`detail: AppRailModeChangeDetail` = `{ mode: AppRailMode }`; the
|
|
91
|
+
effective mode changed, whether from a breakpoint crossing or an explicit `mode` assignment — not
|
|
92
|
+
fired for a redundant reassignment to the mode already in effect), `lr-toggle`
|
|
93
|
+
(`detail: AppRailToggleDetail` = `{ open: boolean }`; the mobile overlay opened or closed — via the
|
|
94
|
+
built-in toggle button, Escape, a backdrop click, a nav-item click while open, or a breakpoint/forced
|
|
95
|
+
mode change leaving `'mobile'` while open — not fired when a consumer sets `open` directly),
|
|
96
|
+
`lr-rail-resize` (`detail: AppRailResizeDetail` = `{ widthPx: number }`; the `resizable` rail's
|
|
97
|
+
width changed via drag or keyboard stepping — not fired when a consumer sets `railWidthPx` directly).
|
|
98
|
+
|
|
99
|
+
**Slots:** default (nav items — generic slotted content, e.g. `<a>`/`<button>` elements the consumer
|
|
100
|
+
builds with its own icon+label structure; clicking anywhere in this slot closes the mobile overlay if
|
|
101
|
+
open), `header` (logo/brand content, shown above the nav items in every mode), `footer` (a trailing
|
|
102
|
+
user/settings trigger, shown below the nav items).
|
|
103
|
+
|
|
104
|
+
**CSS parts:** `base`, `header`, `nav`, `footer`, `toggle` (hidden via CSS outside `'mobile'` mode, or
|
|
105
|
+
entirely via `hideToggle`), `backdrop`, `panel` (`base`/`panel` are mutually exclusive on the same
|
|
106
|
+
underlying element — see above), `resizer` (the `resizable` opt-in's drag handle, only rendered while
|
|
107
|
+
`resizable` and `mode` is `'full'`; its hit target is `--lr-icon-button-size`-wide), `resizer-track`
|
|
108
|
+
(the slim 3px visible drag line centered inside that hit target, tinted `--lr-color-brand` on hover).
|
|
109
|
+
|
|
110
|
+
**Themeable custom properties:** `--lr-app-rail-width` (default `15rem` — the inline rail width in
|
|
111
|
+
`'full'` mode), `--lr-app-rail-icon-width` (default `4rem` — the inline rail width in `'icon-only'`
|
|
112
|
+
mode), `--lr-app-rail-mobile-width` (default `18rem`, capped at `85vw` — the mobile overlay panel
|
|
113
|
+
width), `--lr-app-rail-overlay-color` (default `var(--lr-color-overlay)` — the mobile backdrop scrim
|
|
114
|
+
color; component-specific since no shared token exists), plus shared tokens (`--lr-color-border`,
|
|
115
|
+
`--lr-color-surface`, `--lr-color-text`, `--lr-color-brand`, `--lr-color-brand-quiet`,
|
|
116
|
+
`--lr-space-*`, `--lr-radius`, `--lr-shadow`, `--lr-icon-button-size`,
|
|
117
|
+
`--lr-focus-ring-*`, `--lr-transition-base`). `resizable`'s width is driven entirely by
|
|
118
|
+
`railWidthPx`'s inline `inline-size` style rather than a new custom property.
|
|
119
|
+
|
|
120
|
+
**Optional peer deps:** none.
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<lr-app-rail label="Main navigation" icon-only-breakpoint="960px" mobile-breakpoint="600px" resizable>
|
|
124
|
+
<span slot="header"><img src="/logo.svg" alt="Acme" /></span>
|
|
125
|
+
<a href="/inbox" aria-label="Inbox"><svg aria-hidden="true">...</svg><span>Inbox</span></a>
|
|
126
|
+
<a href="/settings" aria-label="Settings"><svg aria-hidden="true">...</svg><span>Settings</span></a>
|
|
127
|
+
<span slot="footer"><button>Profile</button></span>
|
|
128
|
+
</lr-app-rail>
|
|
129
|
+
<script type="module">
|
|
130
|
+
const rail = document.querySelector('lr-app-rail');
|
|
131
|
+
rail.addEventListener('lr-rail-resize', (e) => localStorage.setItem('railWidthPx', String(e.detail.widthPx)));
|
|
132
|
+
</script>
|
|
133
|
+
```
|
|
134
|
+
```ts
|
|
135
|
+
rail.mode = 'icon-only'; // force a presentation regardless of viewport width
|
|
136
|
+
rail.mode = 'auto'; // release the force, resume live breakpoint tracking
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The package root also exports a pure `computeAppRailMode(iconOnlyMatches: boolean, mobileMatches:
|
|
140
|
+
boolean, preferredMode?: 'full' | 'icon-only' | null): AppRailMode` resolver (plus the
|
|
141
|
+
`AppRailMode`/`AppRailModeInput`/`AppRailModeChangeDetail`/`AppRailToggleDetail`/`AppRailResizeDetail`
|
|
142
|
+
types) — the same logic the element's internal `matchMedia` listeners call, exposed standalone so a
|
|
143
|
+
consumer can compute or unit-test the same resolution without a real browser window. `mobileMatches`
|
|
144
|
+
wins over everything else when true (the viewport is narrower than both breakpoints at once);
|
|
145
|
+
otherwise `preferredMode` (when set) wins over `iconOnlyMatches`.
|
|
146
|
+
|
|
147
|
+
The mobile state keeps its own panel template rather than nesting `<lr-dialog>`, while its modal
|
|
148
|
+
behavior participates in the shared overlay stack. It is a plain `<div>` with an explicit
|
|
149
|
+
`role="navigation"` (swapping to `role="dialog"` while the overlay is open) rather than a literal
|
|
150
|
+
`<nav>` tag, since a
|
|
151
|
+
`<nav>`'s implicit role can't be overridden to `role="dialog"` without an `aria-allowed-role`
|
|
152
|
+
violation. In `'icon-only'` mode, slotted nav items lose their visible text label — give each one a
|
|
153
|
+
real accessible name (`aria-label`, visually hidden text, or `title`) regardless, since this
|
|
154
|
+
component only lays out whatever is slotted and can't inspect or fix up a consumer's own markup.
|
|
155
|
+
|
|
156
|
+
**Known gotchas:**
|
|
157
|
+
- `mode`'s setter accepts the wider `AppRailModeInput` (including the `'auto'` sentinel) but the
|
|
158
|
+
getter's return type is the narrower `AppRailMode` — assigning `'auto'` is a one-way instruction,
|
|
159
|
+
not a value read back later; there is no `isForced`-style property to check whether the rail is
|
|
160
|
+
currently locked to a mode or tracking the viewport.
|
|
161
|
+
- reassigning `icon-only-breakpoint`/`mobile-breakpoint` after first render tears down and rebuilds
|
|
162
|
+
the `matchMedia` listeners, but does not itself un-force a previously-forced `mode` — if a consumer
|
|
163
|
+
set `mode = 'icon-only'`, changing the breakpoints won't resume auto-tracking until `mode = 'auto'`
|
|
164
|
+
is set explicitly.
|
|
165
|
+
- leaving `'mobile'` mode while `open` (via a breakpoint crossing or a forced `mode` reassignment)
|
|
166
|
+
auto-closes the overlay through the same path as the toggle button, so `lr-toggle` still fires
|
|
167
|
+
and the scroll lock/focus trap still release normally — a consumer listening only for explicit
|
|
168
|
+
toggle-button clicks would miss this closure.
|
|
169
|
+
- the mobile panel is also given `inert` whenever `mode === 'mobile'` and `open` is `false` — it's
|
|
170
|
+
removed from the accessibility tree and tab order via `inert` at the same time it's hidden visually
|
|
171
|
+
via `transform: translateX(-100%)`, both applied simultaneously rather than one implying the other.
|
|
172
|
+
- the offscreen slide direction for the mobile panel is flipped for RTL via a `:dir(rtl)` CSS
|
|
173
|
+
selector (`translateX(100%)`), not through the shared `internal/rtl.ts` JS helper used for pointer/
|
|
174
|
+
keyboard math elsewhere in this library — a physical `transform` isn't expressible with logical
|
|
175
|
+
properties, so this one case is handled purely in CSS.
|
|
176
|
+
- a reconnect that preserves the same element instance (e.g. a drag-and-drop reparent) resumes its
|
|
177
|
+
shared overlay registration and re-acquires the scroll lock if the overlay was still active
|
|
178
|
+
across the move — `disconnectedCallback`/`connectedCallback` fire back-to-back with no update in
|
|
179
|
+
between, so `willUpdate()` alone wouldn't otherwise notice.
|
|
180
|
+
- `resizable`'s drag handle is pointer-only (`pointerdown`/`pointermove`/`pointerup`/
|
|
181
|
+
`pointercancel`/`lostpointercapture`) plus discrete Left/Right-arrow keyboard stepping (8px per
|
|
182
|
+
press, RTL-aware) — there's no dedicated touch gesture beyond what Pointer Events already unify.
|
|
183
|
+
- reassigning `railWidthPx` while `resizable` is unset has no visible effect on the rendered width —
|
|
184
|
+
the fixed-width `--lr-app-rail-width` token still governs `'full'`-mode width until `resizable`
|
|
185
|
+
is also set.
|
|
186
|
+
- reassigning `icon-only-breakpoint`/`mobile-breakpoint`/`preferredMode` does not itself un-force a
|
|
187
|
+
previously-forced `mode` — same caveat as above, `preferredMode` is only consulted while `mode`
|
|
188
|
+
isn't force-pinned.
|
|
189
|
+
|
|
190
|
+
### `lr-app-rail-item`
|
|
191
|
+
|
|
192
|
+
An explicit navigation item for `<lr-app-rail>`. It renders an accessible link when `href` is
|
|
193
|
+
set and enabled, otherwise a button; the rail can add its `icon-only` presentation state without
|
|
194
|
+
removing the label from the accessibility tree.
|
|
195
|
+
|
|
196
|
+
**Properties:**
|
|
197
|
+
- `href: string = ''` — optional destination. Without it, the item renders as a button.
|
|
198
|
+
- `target: string = ''` — optional link target.
|
|
199
|
+
- `disabled: boolean = false` (reflected) — prevents activation while retaining the item in the rail.
|
|
200
|
+
- `active: boolean = false` (reflected) — marks this as the destination for the current page/view;
|
|
201
|
+
reflects `aria-current="page"` on `[part='base']` and drives the active visual treatment. The rail
|
|
202
|
+
has no built-in routing, so the consumer sets this per item (e.g. by comparing `href` against the
|
|
203
|
+
current location).
|
|
204
|
+
- `tooltip: boolean = false` (reflected) — opt-in hover/focus flyout (`[part='tooltip']`) showing
|
|
205
|
+
this item's label text while the rail's `icon-only` mode (set externally by the parent
|
|
206
|
+
`<lr-app-rail>` as the viewport narrows) hides it from view. No effect outside icon-only mode,
|
|
207
|
+
since the label is already visible there. `false` (the default) reproduces the exact existing
|
|
208
|
+
output.
|
|
209
|
+
|
|
210
|
+
**Slots:** default (the visible label), `icon` (the leading icon, hidden from assistive technology
|
|
211
|
+
when the item has an explicit `aria-label`).
|
|
212
|
+
|
|
213
|
+
**CSS parts:** `base`, `icon`, `label`, `tooltip` (the hover/focus label flyout, only rendered while
|
|
214
|
+
`tooltip` is set, the item is `icon-only`, and it is hovered or focused).
|
|
215
|
+
|
|
216
|
+
**Optional peer deps:** none.
|
|
217
|
+
|
|
218
|
+
---
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/viewers.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-archive-viewer`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/viewers/archive-viewer/archive-viewer.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraArchiveViewer`, also available unregistered from `@aceshooting/lyra-ui/components/viewers/archive-viewer/archive-viewer.class.js`
|
|
7
|
+
- **Family** `components/viewers/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** `jszip` — see `llms/peers.md`
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-archive-viewer`
|
|
14
|
+
|
|
15
|
+
Lists entry names and human-readable uncompressed sizes inside a `.zip` archive using the optional
|
|
16
|
+
`jszip` peer. It is listing-only: entry content is never rendered or previewed. Each entry's size is
|
|
17
|
+
read straight from JSZip's local file header (`uncompressedSize`) when available, falling back to
|
|
18
|
+
fully decompressing only the rare entry missing that header field. The list composes
|
|
19
|
+
`<lr-virtual-list>` for large archives.
|
|
20
|
+
|
|
21
|
+
**Properties:** `src` and `name` are strings — `name` (or a host-level `aria-label`) names the
|
|
22
|
+
listing region as `role="region"`; with neither set, the region is unnamed.
|
|
23
|
+
|
|
24
|
+
**Events:** `lr-render-error` with `detail.error` when fetching or parsing fails.
|
|
25
|
+
|
|
26
|
+
**CSS parts:** `base`, `entry`, `entry-icon`, `entry-name`, `entry-size`, `spinner`, and `error`.
|
|
27
|
+
|
|
28
|
+
**Exports:** `ArchiveEntry` — `{ name: string; dir: boolean; size: number }`.
|
|
29
|
+
|
|
30
|
+
**Optional peer dependency:** install `jszip` with `pnpm add jszip`. The lazy registry registers
|
|
31
|
+
`application/zip` and `application/x-zip-compressed`, with a `.zip` filename fallback, and imports
|
|
32
|
+
the viewer only when a matching archive is opened. `.tar`, `.rar`, and other archive formats fall
|
|
33
|
+
through to `<lr-document-preview>`'s generic download fallback.
|
|
34
|
+
|
|
35
|
+
Remote resources are capped at 25 MB; exceeding it surfaces the localized
|
|
36
|
+
`documentPreviewResourceTooLarge` message instead of the entry listing.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-artifact-panel`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/artifact-panel/artifact-panel.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraArtifactPanel`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/artifact-panel/artifact-panel.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-artifact-panel`
|
|
14
|
+
|
|
15
|
+
Shell around one agent-generated artifact: a title/kind header, a preview↔code toggle, version
|
|
16
|
+
navigation with restore, a streaming indicator, and built-in copy/download actions. Renders none of
|
|
17
|
+
the artifact itself — content is slotted. No content rendering of its own (slots own it), no
|
|
18
|
+
dialog/dock chrome (compose `lr-dialog`/`lr-dock-panel`/`lr-split`), no version storage or
|
|
19
|
+
diffing (host state; diffs via `lr-diff-view`), no code editing (`lr-code-editor`).
|
|
20
|
+
|
|
21
|
+
**Properties:** `label: string = ''` — the artifact's title, shown in the header. `kind: string = ''`
|
|
22
|
+
— a short kind label (e.g. `document`, `code`), shown as a badge next to `label`. `view: 'preview' |
|
|
23
|
+
'code' = 'preview'` (reflected) — which slot is currently visible. `versions: ArtifactVersion[] = []`
|
|
24
|
+
(attribute: false, each `{ id, label? }`) — the artifact's version history, oldest first; the last
|
|
25
|
+
entry is the latest version. `activeVersionId: string | null = null` (attribute
|
|
26
|
+
`active-version-id`) — the currently viewed version's id, or `null` for "the latest version."
|
|
27
|
+
`streaming: boolean = false` (reflected) — whether the artifact is still being generated; sets
|
|
28
|
+
`aria-busy` on the body and shows a text indicator (not animated, so it stays legible under reduced
|
|
29
|
+
motion). `copyText: string = ''` (attribute `copy-text`) — the text copied to the clipboard by the
|
|
30
|
+
copy button; empty hides the button. `downloadSrc: string = ''` (attribute `download-src`) — the
|
|
31
|
+
download URL, sanitized through `safeMediaSrc()`; empty hides the button. `downloadName: string =
|
|
32
|
+
''` (attribute `download-name`) — the suggested filename reported in the `lr-download` event
|
|
33
|
+
detail.
|
|
34
|
+
|
|
35
|
+
**Slots:** default — preview-view content (markdown/html-viewer/browser-frame/image). `code` —
|
|
36
|
+
code-view content (typically a `lr-code-block`); the preview/code toggle only renders once this
|
|
37
|
+
slot has assigned content. `actions` — extra header controls, rendered between the version
|
|
38
|
+
navigation and the built-in copy/download buttons.
|
|
39
|
+
|
|
40
|
+
**Events:** `lr-view-change` (`detail: { view }`), `lr-version-change` (`detail: { versionId }`,
|
|
41
|
+
fired when the previous/next navigation moves to a different version), `lr-restore` (`detail: {
|
|
42
|
+
versionId }`, fired by the restore-this-version button; mutates nothing itself), `lr-copy`
|
|
43
|
+
(`detail: { text }`, after a best-effort clipboard write), `lr-download` (`detail: { filename,
|
|
44
|
+
src? }`, with the sanitized download URL).
|
|
45
|
+
|
|
46
|
+
**CSS parts:** `base`, `header`, `label`, `kind`, `view-toggle` (rendered only once the `code` slot
|
|
47
|
+
has content), `view-button` (carries `data-view="preview"` or `data-view="code"`), `version-nav`
|
|
48
|
+
(rendered only once `versions` is non-empty), `version-previous`, `version-next`, `version-position`
|
|
49
|
+
(the "Version N of M" text), `restore-button` (rendered only while the active version isn't the
|
|
50
|
+
latest), `actions`, `copy-button` (rendered only while `copyText` is non-empty), `download-button`
|
|
51
|
+
(rendered only while `downloadSrc` is non-empty), `body`, `streaming-indicator` (rendered only while
|
|
52
|
+
`streaming`).
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<lr-artifact-panel label="report.md" kind="document" .versions=${versions}
|
|
56
|
+
@lr-restore=${(e) => restoreVersion(e.detail.versionId)}>
|
|
57
|
+
<lr-markdown .content=${markdown}></lr-markdown>
|
|
58
|
+
<lr-code-block slot="code" language="markdown" .code=${markdown}></lr-code-block>
|
|
59
|
+
</lr-artifact-panel>
|
|
60
|
+
```
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-attachment-chip`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/media/attachment-chip/attachment-chip.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraAttachmentChip`, also available unregistered from `@aceshooting/lyra-ui/components/media/attachment-chip/attachment-chip.class.js`
|
|
7
|
+
- **Family** `components/media/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-attachment-chip`
|
|
14
|
+
|
|
15
|
+
A compact chip representing one file queued for (or already part of) a chat message — used in a
|
|
16
|
+
composer's pre-send attachment tray or a sent message's attachments display. Two independent ways
|
|
17
|
+
to populate it: set `file` to a real `File` (fresh from a picker/drop), from which `name`/`size`/
|
|
18
|
+
`mime-type` and the image thumbnail are all auto-derived; or set the plain `name`/`size`/
|
|
19
|
+
`mime-type`/`thumbnail-src` props instead, for reconstructing a chip from server-persisted
|
|
20
|
+
attachment metadata after a page reload, when no real `File` object exists any more. `file` always
|
|
21
|
+
wins when both are present. When a real `File` or `preview-src` is available, the chip also offers
|
|
22
|
+
a localized preview action that opens `<lr-document-viewer>` using the same effective MIME type.
|
|
23
|
+
|
|
24
|
+
**Properties:**
|
|
25
|
+
- `file?: File` (attribute `false`, i.e. property-only) — when set, `name`/`size`/`mimeType`/the
|
|
26
|
+
image thumbnail are all derived from it, taking precedence over the independent props below
|
|
27
|
+
- `name: string = ''` — filename, used only while `file` is unset
|
|
28
|
+
- `size: number = 0` — file size in bytes, used only while `file` is unset
|
|
29
|
+
- `mimeType: string = ''` (attribute `mime-type`) — used only while `file` is unset
|
|
30
|
+
- `thumbnailSrc: string = ''` (attribute `thumbnail-src`) — thumbnail image URL, used only while
|
|
31
|
+
`file` is unset; rendered whenever present regardless of `mimeType` (no `file`-derived equivalent
|
|
32
|
+
exists for a non-image file)
|
|
33
|
+
- `previewSrc: string = ''` (attribute `preview-src`) — source URL used for preview and download when
|
|
34
|
+
`file` is unset; a real `File` takes precedence and uses a temporary blob URL
|
|
35
|
+
- `previewable: boolean = true` (reflected) — shows the preview action whenever a `file` or
|
|
36
|
+
`preview-src` is available
|
|
37
|
+
- `status: AttachmentChipStatus = 'pending'` (reflected) — `'pending' | 'uploading' | 'error' |
|
|
38
|
+
'done'`; drives the accent tint and which of `progress`/`spinner`/`retry-button` renders
|
|
39
|
+
- `progress: number = 0` — upload completion, 0-100; only meaningful while `status="uploading"`, a
|
|
40
|
+
value of `0` or `NaN` falls back to the indeterminate spinner
|
|
41
|
+
- `removable: boolean = true` (reflected) — shows the remove (×) button
|
|
42
|
+
- `compact: boolean = false` (reflected) — renders a smaller, borderless pill presentation instead of
|
|
43
|
+
the default bordered/chrome-heavy chip, e.g. for a composer's pending-attachment tray. `false` (the
|
|
44
|
+
default) is visually identical to the standard chip.
|
|
45
|
+
- `thumbnailOnly: boolean = false` (reflected, attribute `thumbnail-only`) — when both this and
|
|
46
|
+
`compact` are set, hides `[part='meta']` (the filename/size text) entirely for an image-mime
|
|
47
|
+
attachment, leaving only the thumbnail. Has no effect for a non-image chip, or when `compact` is
|
|
48
|
+
unset. `false` (the default) reproduces the chip's exact existing output.
|
|
49
|
+
- `removeLabel: string = 'Remove'` (attribute `remove-label`) — verb used in the remove button's
|
|
50
|
+
accessible name; the default routes through the complete localized `removeWithContext` template
|
|
51
|
+
- `retryLabel: string = 'Retry'` (attribute `retry-label`) — verb used in the retry button's
|
|
52
|
+
accessible name; the default routes through the complete localized attachment template
|
|
53
|
+
- `uploadingLabel: string = 'Uploading'` (attribute `uploading-label`) — verb used in the visible
|
|
54
|
+
uploading status; the untouched default uses complete localized messages for progress,
|
|
55
|
+
indeterminate state, and filename context so translators can reorder every value
|
|
56
|
+
- `uploadFailedLabel: string = 'Upload failed'` (attribute `upload-failed-label`) — visible status
|
|
57
|
+
text shown for `status="error"`; override for i18n/locale
|
|
58
|
+
- `untitledLabel: string = 'Untitled file'` (attribute `untitled-label`) — fallback filename and
|
|
59
|
+
tooltip when neither `file` nor `name` supplies a name
|
|
60
|
+
|
|
61
|
+
The component identifies *which* attachment a `lr-remove`/`lr-retry` event is about via the
|
|
62
|
+
platform's own `id` attribute/property rather than a second, differently-named prop. Set `id="..."`
|
|
63
|
+
when you have a stable server-side attachment id; when unset and `file` is set, a stable id is
|
|
64
|
+
derived from `` `${file.name}:${file.size}:${file.lastModified}` ``; when neither is available, a
|
|
65
|
+
generated internal id is used as a last resort.
|
|
66
|
+
|
|
67
|
+
**Events:** `lr-remove` (`detail: { id }`, only rendered while `removable`), `lr-retry`
|
|
68
|
+
(`detail: { id }`, only rendered while `status="error"`), `lr-preview` (`detail: { id, name,
|
|
69
|
+
mimeType, src }`, emitted when the preview action opens the document viewer)
|
|
70
|
+
|
|
71
|
+
**Slots:** none.
|
|
72
|
+
|
|
73
|
+
**CSS parts:** `base`, `thumbnail`, `meta`, `name`, `size`, `status-text`, `progress`,
|
|
74
|
+
`progress-fill`, `spinner`, `retry-button`, `preview-button`, `remove-button`
|
|
75
|
+
|
|
76
|
+
**Themeable custom properties:** `--lr-attachment-chip-accent` (default
|
|
77
|
+
`var(--lr-color-text-quiet)`), `--lr-attachment-chip-bg` (default `var(--lr-color-surface)`),
|
|
78
|
+
`--lr-attachment-chip-border` (default `var(--lr-color-border)`) — this trio is swapped per
|
|
79
|
+
`status` (`uploading` → brand/brand-quiet/transparent, `error` → danger/danger-quiet/transparent,
|
|
80
|
+
`done` → success/success-quiet/transparent); `--lr-attachment-chip-compact-thumbnail-size` (default
|
|
81
|
+
`1.75rem`), `--lr-attachment-chip-compact-font-size` (default `var(--lr-font-size-xs)`),
|
|
82
|
+
`--lr-attachment-chip-compact-gap` (default `0.25rem`) — govern the chip's thumbnail size, text
|
|
83
|
+
size, and internal gap while `compact` is set; `--lr-attachment-chip-spinner-duration` (default
|
|
84
|
+
`0.8s`) controls the indeterminate rotation and stops under reduced motion; plus shared tokens `--lr-space-xs`, `--lr-space-s`,
|
|
85
|
+
`--lr-radius`, `--lr-color-text`, `--lr-color-danger`, `--lr-icon-button-size`,
|
|
86
|
+
`--lr-transition-fast`, `--lr-transition-base`, `--lr-focus-ring-width`,
|
|
87
|
+
`--lr-focus-ring-color`, `--lr-focus-ring-offset`.
|
|
88
|
+
|
|
89
|
+
**Optional peer deps:** none.
|
|
90
|
+
|
|
91
|
+
Also exported from the package root: `formatFileSize(bytes: number): string` — `512` → `"512 B"`
|
|
92
|
+
(whole bytes never get a decimal), `2415919` → `"2.3 MB"` (every unit past bytes gets exactly one
|
|
93
|
+
decimal place), and a negative or non-finite input (`NaN`, `Infinity`) returns `""` so an unknown
|
|
94
|
+
size renders nothing instead of `"NaN B"`.
|
|
95
|
+
|
|
96
|
+
```html
|
|
97
|
+
<lr-attachment-chip name="report.pdf" size="245000" mime-type="application/pdf" status="done"></lr-attachment-chip>
|
|
98
|
+
<lr-attachment-chip id="att-2" status="uploading" progress="42"></lr-attachment-chip>
|
|
99
|
+
<script type="module">
|
|
100
|
+
import { formatFileSize } from '@aceshooting/lyra-ui';
|
|
101
|
+
|
|
102
|
+
const chip = document.createElement('lr-attachment-chip');
|
|
103
|
+
chip.file = pickedFile; // name/size/mime-type/thumbnail all derived from the File
|
|
104
|
+
chip.addEventListener('lr-remove', (e) => removeAttachment(e.detail.id));
|
|
105
|
+
chip.addEventListener('lr-retry', (e) => retryUpload(e.detail.id));
|
|
106
|
+
chip.addEventListener('lr-preview', (e) => console.log(e.detail));
|
|
107
|
+
console.log(formatFileSize(pickedFile.size));
|
|
108
|
+
</script>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The image thumbnail for a real `File` is a lazily-created `URL.createObjectURL()` blob URL —
|
|
112
|
+
created only from `render()`, i.e. only once a thumbnail is actually about to paint, never eagerly
|
|
113
|
+
on `file` assignment — and revoked automatically once `file` changes to a different `File` (or to
|
|
114
|
+
`undefined`) and on disconnect, so reassigning `file` several times before the next paint never
|
|
115
|
+
leaks URLs that were created but never shown.
|
|
116
|
+
|
|
117
|
+
**Known gotchas:**
|
|
118
|
+
- `file` always wins over `name`/`size`/`mimeType` when both are set — assigning those props while
|
|
119
|
+
`file` is also set has no visible effect on the rendered chip.
|
|
120
|
+
- A `0`-byte size and an unset size are indistinguishable (there's no separate flag for "genuinely
|
|
121
|
+
empty file"); the `size` part is hidden entirely rather than showing a literal `"0 B"`.
|
|
122
|
+
- `progress` only renders as a numeric bar when `status="uploading"` **and** `progress` is finite
|
|
123
|
+
and `> 0`; otherwise it's either nothing (non-`uploading` status) or the indeterminate spinner
|
|
124
|
+
(`uploading` with no known progress).
|
|
125
|
+
- `thumbnailSrc` is used whenever present regardless of `mimeType` — pass a URL that's already known
|
|
126
|
+
to be an image; there's no non-image fallback check for it the way there is for `file`.
|
|
127
|
+
- `previewSrc` is used only when `file` is unset. A preview action is omitted when neither a real
|
|
128
|
+
`File` nor `preview-src` supplies a source. The viewer's footer omits its download link for unsafe
|
|
129
|
+
source schemes.
|
|
130
|
+
|
|
131
|
+
---
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-attachment-trigger`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/media/attachment-trigger/attachment-trigger.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraAttachmentTrigger`, also available unregistered from `@aceshooting/lyra-ui/components/media/attachment-trigger/attachment-trigger.class.js`
|
|
7
|
+
- **Family** `components/media/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-attachment-trigger`
|
|
14
|
+
|
|
15
|
+
A compact attach affordance designed for a chat composer's leading slot (see `lr-chat-composer`'s
|
|
16
|
+
own `leading` slot, which this drops straight into, though it has no code dependency on it). First-
|
|
17
|
+
party invention (no Web Awesome equivalent). Its shape adapts to how many attachment `capabilities`
|
|
18
|
+
are configured: exactly one renders a single plain icon button; more than one renders a small
|
|
19
|
+
anchored menu (composed from the already-landed `lr-menu`/`lr-menu-item`) listing each
|
|
20
|
+
capability as a row.
|
|
21
|
+
|
|
22
|
+
**Properties:**
|
|
23
|
+
- `capabilities: AttachmentCapability[] = ['files']` (property only, no attribute) — which
|
|
24
|
+
capabilities to offer, in display order. `AttachmentCapability = 'files' | 'image' | 'camera' |
|
|
25
|
+
'audio'`; `FileBackedCapability = 'files' | 'image'` (the two that actually open the file
|
|
26
|
+
picker).
|
|
27
|
+
- `accept: string = ''` — a native-file-input-style accept string (e.g. `'image/*'` or
|
|
28
|
+
`'.pdf,.docx'`), forwarded to the hidden file input for the `files`/`image` capabilities. `image`
|
|
29
|
+
defaults it to `'image/*'` unless this prop overrides it; `files` always uses it as-is (empty
|
|
30
|
+
means "any file type").
|
|
31
|
+
- `multiple: boolean = true` (reflected) — forwarded to the hidden file input's own `multiple`
|
|
32
|
+
attribute.
|
|
33
|
+
- `disabled: boolean = false` (reflected)
|
|
34
|
+
- `triggerLabel?: string` (attribute `trigger-label`) — overrides the single-capability trigger
|
|
35
|
+
button's `aria-label`, which otherwise comes from `CAPABILITY_META[capability].triggerLabel` (e.g.
|
|
36
|
+
`'Attach files'`); only affects the single-capability button (`[part='trigger']`) — the
|
|
37
|
+
multi-capability menu's own trigger keeps its fixed `'Add attachment'` label regardless. Unset
|
|
38
|
+
(the default) keeps the built-in English default.
|
|
39
|
+
- `triggerTitle?: string` (attribute `trigger-title`) — forwards a sighted-user hover tooltip to
|
|
40
|
+
both the single-capability and multi-capability trigger buttons
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-pick` (`detail: { capability: 'files' | 'image'; files: FileList }`) — fired once a
|
|
43
|
+
file-backed capability's hidden input produces a real selection. The `FileList` is an independent
|
|
44
|
+
snapshot (rehomed into a fresh `DataTransfer`), not a live reference to the input's own `.files` —
|
|
45
|
+
see the gotcha below for why that distinction matters. `lr-camera-request` and `lr-audio-request`
|
|
46
|
+
(both no detail — `detail` is `null`, not `undefined`, per the DOM spec's `CustomEventInit`
|
|
47
|
+
default) — fired when the `camera` / `audio` capability is activated; this component implements no
|
|
48
|
+
capture UI of its own, the host owns everything from here (there's no single right answer for
|
|
49
|
+
`getUserMedia` vs. `<input capture>` vs. a native wrapper's own camera API; for `audio` the
|
|
50
|
+
typical host response is opening `<lr-push-to-talk>` in an overlay, then handing the resulting
|
|
51
|
+
blob to `<lr-attachment-chip>`). Internal `focus`/`blur` from the hidden input are re-emitted as
|
|
52
|
+
host events.
|
|
53
|
+
|
|
54
|
+
**Slots:** none — capabilities are configured entirely via the `capabilities` prop.
|
|
55
|
+
|
|
56
|
+
**CSS parts:** `trigger` (the single-capability button, only rendered when
|
|
57
|
+
`capabilities.length === 1`), `menu` (the `lr-menu` wrapper, only rendered when
|
|
58
|
+
`capabilities.length > 1`), `menu-trigger` (the multi-capability button slotted into `lr-menu`'s own
|
|
59
|
+
`trigger` slot, only rendered when `capabilities.length > 1`), `expand-icon` (the disclosure chevron
|
|
60
|
+
inside the multi-capability trigger button, only rendered when `capabilities.length > 1`),
|
|
61
|
+
`hidden-input` (the internal native `<input type="file">` that actually opens the OS file picker;
|
|
62
|
+
hidden via CSS by default, exposed as a part only so a consumer can override that with
|
|
63
|
+
`::part(hidden-input)` in the unlikely case their integration needs to).
|
|
64
|
+
|
|
65
|
+
**Themeable custom properties:** shared tokens only — `--lr-space-xs`, `--lr-color-text`/
|
|
66
|
+
`-text-quiet`, `--lr-icon-button-size`, `--lr-focus-ring-*`, `--lr-opacity-disabled`,
|
|
67
|
+
`--lr-radius`, `--lr-transition-fast`.
|
|
68
|
+
|
|
69
|
+
**Optional peer deps:** none.
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<lr-attachment-trigger .capabilities=${['files', 'image', 'camera']} accept=".pdf,.docx"
|
|
73
|
+
@lr-pick=${(e) => queueFiles(e.detail.capability, e.detail.files)}
|
|
74
|
+
@lr-camera-request=${openCameraFlow}
|
|
75
|
+
></lr-attachment-trigger>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Known gotchas:**
|
|
79
|
+
- `HTMLInputElement.files` is a *live* view in most browsers — clearing `input.value` after reading
|
|
80
|
+
`.files` (needed so re-picking the exact same file still fires another `change` event next time)
|
|
81
|
+
mutates that exact `FileList` object back to empty in place, not just detaches a stale reference.
|
|
82
|
+
A consumer reading `lr-pick`'s `detail.files` even one microtask later (an `async` handler, a
|
|
83
|
+
queued upload) would otherwise observe an empty list — this component avoids that by rehoming the
|
|
84
|
+
selection into a fresh `DataTransfer` before emitting, but any other file-input-adjacent code
|
|
85
|
+
emitting `input.files` directly without that rehoming step has the same latent bug.
|
|
86
|
+
- The `camera`/`audio` capabilities never touch the hidden `<input type="file">` at all — both are
|
|
87
|
+
scope-limited by design to firing `lr-camera-request`/`lr-audio-request` and nothing else. The
|
|
88
|
+
hidden input is only rendered when `capabilities` contains `files` or `image`.
|
|
89
|
+
|
|
90
|
+
---
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-audio-visualizer`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/conversation/audio-visualizer/audio-visualizer.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraAudioVisualizer`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/audio-visualizer/audio-visualizer.class.js`
|
|
7
|
+
- **Family** `components/conversation/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-audio-visualizer`
|
|
14
|
+
|
|
15
|
+
A presentational, canvas-drawn voice-activity visualization (bars or waveform) — the
|
|
16
|
+
LiveKit-BarVisualizer counterpart for this library. Driven by a `MediaStream` (lazily wired to a
|
|
17
|
+
WebAudio `AnalyserNode`), a numeric `level` for hosts that already compute levels (e.g.
|
|
18
|
+
`<lr-push-to-talk>`'s `lr-level`), or `state` alone for an ambient animation when no real signal
|
|
19
|
+
exists. A real signal (`stream` or `level`) always drives amplitude regardless of
|
|
20
|
+
`prefers-reduced-motion`; only the signal-less ambient animation is throttled under reduced motion.
|
|
21
|
+
|
|
22
|
+
**Properties:** `stream: MediaStream | null = null` (attribute: false) — a live capture stream, lazily
|
|
23
|
+
wired to a WebAudio `AnalyserNode`; `level: number | null = null` — a pre-computed 0–1 amplitude for
|
|
24
|
+
hosts that already have one (e.g. `lr-push-to-talk`'s `lr-level` detail); `state: 'idle' |
|
|
25
|
+
'listening' | 'thinking' | 'speaking' = 'idle'` (reflected) — drives the signal-less ambient
|
|
26
|
+
animation and per-state coloring; `variant: 'bars' | 'waveform' = 'bars'` (reflected); `barCount:
|
|
27
|
+
number = 5` (attribute `bar-count`); `gain: number = 1` — multiplier applied to the resolved
|
|
28
|
+
amplitude; `label: string = ''` — the host's accessible name.
|
|
29
|
+
|
|
30
|
+
**Methods:** `refreshTheme()` re-reads themeable custom properties after a runtime theme change (the
|
|
31
|
+
canvas resolves token values at paint time and cannot inherit `var()` directly).
|
|
32
|
+
|
|
33
|
+
**Events:** none — purely presentational.
|
|
34
|
+
|
|
35
|
+
**Slots:** none.
|
|
36
|
+
|
|
37
|
+
**CSS parts:** `base` (the root wrapper) and `canvas` (the drawing surface, `aria-hidden`; the host
|
|
38
|
+
itself carries `role="img"` and the accessible name).
|
|
39
|
+
|
|
40
|
+
**Themeable custom properties:** `--lr-audio-visualizer-color` (default `--lr-color-brand` —
|
|
41
|
+
active bar/waveform color), `--lr-audio-visualizer-quiet-color` (default
|
|
42
|
+
`--lr-color-brand-quiet` — inactive/idle color), and `--lr-audio-visualizer-height` (default
|
|
43
|
+
`var(--lr-size-3rem)` — the host's block size).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-av-player`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/media/av-player/av-player.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraAvPlayer`, also available unregistered from `@aceshooting/lyra-ui/components/media/av-player/av-player.class.js`
|
|
7
|
+
- **Family** `components/media/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-av-player`
|
|
14
|
+
|
|
15
|
+
An audio/video player built on a native `<audio>`/`<video>` element, plus a cue transcript synced to
|
|
16
|
+
`currentTime`, `time-range` anchor/highlight support, an optional dependency-free waveform (peaks
|
|
17
|
+
in, no in-component decoding), and playback-rate control. Owns recorded-media transcript sync —
|
|
18
|
+
distinct from `<lr-transcript-feed>` (live captions for an in-progress voice session) and
|
|
19
|
+
`<lr-playback>` (an index stepper, no media). Adopts `DocumentAnchorTarget` with
|
|
20
|
+
`anchorKinds: ['time-range']` only — no text selection is bound. The transcript virtualizes through
|
|
21
|
+
`<lr-virtual-list>` the same way `lr-pdf-viewer` virtualizes pages.
|
|
22
|
+
|
|
23
|
+
**Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'` (attribute:
|
|
24
|
+
false auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
|
|
25
|
+
''`, `loop: boolean = false`, `muted: boolean = false`, `preload: 'none' | 'metadata' | 'auto' =
|
|
26
|
+
'metadata'`, `playbackRate: number = 1` (attribute `playback-rate`, reflected), `rates: number[] =
|
|
27
|
+
[0.75, 1, 1.25, 1.5, 2]` (attribute: false), `cues: LyraAvCue[] = []` (attribute: false), `peaks:
|
|
28
|
+
number[] = []` (attribute: false), and `tracks: LyraAvTrack[] = []` (attribute: false).
|
|
29
|
+
`LyraAvCue = { id, start, end?, text, speaker? }`; `LyraAvTrack = { src, kind: 'subtitles' |
|
|
30
|
+
'captions' | 'descriptions', srclang, label, default? }`.
|
|
31
|
+
|
|
32
|
+
**Methods:** `play()`, `pause()`, and `toggle()` proxy the native media element. `seek(seconds)`
|
|
33
|
+
sets `currentTime` and forces an immediate `lr-time-change`. `search(query)` resolves the match
|
|
34
|
+
count; `searchNext()`/`searchPrevious()` wrap; `clearSearch()` resets.
|
|
35
|
+
|
|
36
|
+
**Events:** `lr-play`, `lr-pause`, `lr-load` (`detail: { duration, kind }`), `lr-time-change`
|
|
37
|
+
(`detail: { currentTime }`, throttled to at most 4/s while playing plus one extra per `seek()`),
|
|
38
|
+
`lr-rate-change` (`detail: { rate }`), `lr-cue-change` (`detail: { id }`, `id` is `null` when no
|
|
39
|
+
cue is active), `lr-highlight-activate` (`detail: { id }`), `lr-anchor-result` (`detail: {
|
|
40
|
+
found }`), `lr-search-change` (`detail: { query, matchCount, activeIndex }`), and
|
|
41
|
+
`lr-render-error` (`detail: { error }`).
|
|
42
|
+
|
|
43
|
+
**CSS parts:** `base`, `media` (the native `<audio>`/`<video>` element), `toolbar`, `rate-select`,
|
|
44
|
+
`timeline` (click-to-seek and arrow-key seeking), `timeline-marker` (one per `time-range` highlight;
|
|
45
|
+
`data-tone`, `data-active`), `transcript` (the `<lr-virtual-list>` itself), `cue` (`aria-current`,
|
|
46
|
+
`data-match`, `data-active-match`), `cue-time`, `cue-speaker`, `cue-text`, and `error`.
|
|
47
|
+
|
|
48
|
+
**Themeable custom properties:** `--lr-av-player-transcript-height` (default
|
|
49
|
+
`var(--lr-size-16rem)` — block size of the transcript pane; forwarded to the embedded
|
|
50
|
+
`<lr-virtual-list>`'s own `--lr-virtual-list-height`).
|