@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,171 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-menu-item`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/layout/menu/menu-item.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraMenuItem`, also available unregistered from `@aceshooting/lyra-ui/components/layout/menu/menu-item.class.js`
|
|
7
|
+
- **Family** `components/layout/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Documented with** `lr-menu`, `lr-dropdown-item` (same section below)
|
|
10
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## `lr-menu` / `lr-menu-item`
|
|
15
|
+
|
|
16
|
+
An anchored dropdown built around a consumer-supplied trigger element (typically an icon button)
|
|
17
|
+
assigned to the `trigger` slot. First-party invention (no Web Awesome equivalent) — a close, drop-
|
|
18
|
+
in-shaped replacement for reaching outside this library for a third-party dropdown to build a gear
|
|
19
|
+
menu, an avatar menu, or a history row's overflow menu. Uses the WAI-ARIA "menu button" pattern —
|
|
20
|
+
`role="menu"`/`role="menuitem"` with real roving DOM focus moving between actual focusable
|
|
21
|
+
`<lr-menu-item>` rows — deliberately not a `role="listbox"`/`aria-activedescendant` shape (that's
|
|
22
|
+
`<lr-select>`'s pattern instead).
|
|
23
|
+
|
|
24
|
+
### `lr-menu`
|
|
25
|
+
|
|
26
|
+
**Properties:**
|
|
27
|
+
- `open: boolean = false` (reflected)
|
|
28
|
+
- `placement?: Placement` (reflected — resolved through `rtlAwarePlacement()` (`internal/rtl.ts`),
|
|
29
|
+
then forwarded to `place()`; defaults to whatever `place()` itself defaults to. A `left`/`right`
|
|
30
|
+
side is mirrored under `dir="rtl"`, so e.g. `placement="left-start"` still anchors to the menu's
|
|
31
|
+
trailing edge instead of pinning to the physical left)
|
|
32
|
+
- `label: string = 'Menu'` — accessible name for the `role="menu"` popup; override with something
|
|
33
|
+
specific (e.g. "Row actions") when a page has more than one menu. A host-level `aria-label`
|
|
34
|
+
attribute takes precedence over both this prop and the localized default (unset by default, so
|
|
35
|
+
a no-op for existing consumers), matching `lr-select`/`lr-model-select`'s
|
|
36
|
+
`this.getAttribute('aria-label') || <computed default>` precedence
|
|
37
|
+
|
|
38
|
+
- `closeOnEscapeAnywhere: boolean = false` (attribute `close-on-escape-anywhere`) — lets Escape
|
|
39
|
+
close the menu when focus is on slotted non-menu-item content inside the popup; item activation
|
|
40
|
+
remains scoped to actual menu items
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-show` (no detail — fires only when `open` transitions to `true`, not for markup
|
|
43
|
+
that renders `open` true from the start), `lr-hide` (same first-render guard, opposite
|
|
44
|
+
transition), `lr-menu-select` (`detail: { value }` — a consolidated re-fire of the activated
|
|
45
|
+
`<lr-menu-item>`'s own `lr-menu-item-select`; always followed by the menu closing and focus
|
|
46
|
+
returning to the trigger)
|
|
47
|
+
|
|
48
|
+
**Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
|
|
49
|
+
are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
|
|
50
|
+
since those attributes belong on the actual interactive trigger, which lives outside this
|
|
51
|
+
component's shadow root), default (`<lr-menu-item>` elements, plus optionally plain `<hr>`
|
|
52
|
+
dividers between groups — native `<hr>` already carries an implicit `separator` role)
|
|
53
|
+
|
|
54
|
+
**CSS parts:** `trigger` (wrapper around the `trigger` slot — the positioning anchor), `popup` (the
|
|
55
|
+
positioned floating panel), `list` (the `role="menu"` container wrapping the default slot)
|
|
56
|
+
|
|
57
|
+
**Themeable custom properties:** shared tokens only (`--lr-color-surface`, `--lr-color-border`,
|
|
58
|
+
`--lr-radius`, `--lr-shadow`, `--lr-space-xs`, `--lr-transition-fast`).
|
|
59
|
+
|
|
60
|
+
**Optional peer deps:** none.
|
|
61
|
+
|
|
62
|
+
### `lr-menu-item`
|
|
63
|
+
|
|
64
|
+
Not meaningful standalone — it exists purely as `<lr-menu>`'s light-DOM child, the same
|
|
65
|
+
relationship `<lr-option>` has to `<lr-combobox>`/`<lr-select>`. `role="menuitem"` and the
|
|
66
|
+
roving `tabindex` both live on the host element itself (mirroring `<lr-tree-node>`), not an
|
|
67
|
+
internal shadow-DOM button; `<lr-menu>` is the sole owner of this element's `tabIndex`.
|
|
68
|
+
|
|
69
|
+
**Properties:**
|
|
70
|
+
- `value: string = ''` — an id/value echoed back in the parent `<lr-menu>`'s `lr-menu-select`
|
|
71
|
+
detail
|
|
72
|
+
- `disabled: boolean = false` (reflected — disables selection and excludes this item from
|
|
73
|
+
`<lr-menu>`'s roving-tabindex navigation entirely)
|
|
74
|
+
- `destructive: boolean = false` (reflected — tints the row with `--lr-color-danger`, for a
|
|
75
|
+
dangerous action like "Delete")
|
|
76
|
+
- `type: 'normal' | 'checkbox' = 'normal'` — `'checkbox'` (mirroring `wa-dropdown-item`'s identical
|
|
77
|
+
`type` option) renders `role="menuitemcheckbox"` in place of `role="menuitem"`, with `aria-checked`
|
|
78
|
+
reflecting `checked` and a checkmark glyph shown once `checked` is `true`. `'normal'` (the default)
|
|
79
|
+
renders and behaves exactly as before this option existed.
|
|
80
|
+
- `checked: boolean = false` (reflected) — whether a `type="checkbox"` item is checked; meaningless
|
|
81
|
+
(ignored) for `type="normal"`
|
|
82
|
+
|
|
83
|
+
**Methods:** `select(): void` — fires `lr-menu-item-select` (no-op while `disabled`). Called
|
|
84
|
+
internally by this element's own click handler and by `<lr-menu>`'s Enter/Space keydown handling
|
|
85
|
+
of the roving-focused item; also the cleanest way for a consumer/test to trigger selection
|
|
86
|
+
programmatically instead of clicking the shadow-DOM `[part="base"]` element (see the gotcha below).
|
|
87
|
+
For `type="checkbox"`, also toggles `checked` and fires `lr-menu-item-change` first.
|
|
88
|
+
|
|
89
|
+
**Events:** `lr-menu-item-select` (no detail payload — `this.emit('lr-menu-item-select')` is
|
|
90
|
+
called with no second argument, so `event.detail` is `null`, not `undefined`; fires on click, or
|
|
91
|
+
when the parent `<lr-menu>`'s own Enter/Space keydown handling calls `select()` on the currently
|
|
92
|
+
roving-focused item), `lr-menu-item-change` (`detail: { value, checked }` — fired when a
|
|
93
|
+
`type="checkbox"` item is activated and its `checked` state toggled, in addition to — never instead
|
|
94
|
+
of — `lr-menu-item-select`; never fired for `type="normal"`)
|
|
95
|
+
|
|
96
|
+
**Slots:** default (the item's label content), `icon` (optional leading icon)
|
|
97
|
+
|
|
98
|
+
**CSS parts:** `base` (the row — `role` lives on the host, not this part), `icon` (wrapper around
|
|
99
|
+
the `icon` slot; not rendered/hidden entirely while the slot is empty), `label` (wrapper around the
|
|
100
|
+
default slot), `checkmark` (the checkmark glyph shown when a `type="checkbox"` item is `checked`;
|
|
101
|
+
not rendered at all for `type="normal"`)
|
|
102
|
+
|
|
103
|
+
**Themeable custom properties:** shared tokens only (`--lr-radius`, `--lr-focus-ring-width`,
|
|
104
|
+
`--lr-focus-ring-color`, `--lr-space-xs`, `--lr-space-s`, `--lr-color-brand-quiet`,
|
|
105
|
+
`--lr-opacity-disabled`, `--lr-color-danger`, `--lr-color-danger-quiet`).
|
|
106
|
+
|
|
107
|
+
**Optional peer deps:** none.
|
|
108
|
+
|
|
109
|
+
### `lr-dropdown-item`
|
|
110
|
+
|
|
111
|
+
Compatibility naming alias for `<lr-menu-item>`. It is a subclass of the same implementation,
|
|
112
|
+
so `value`, `disabled`, `destructive`, `type`, `checked`, `select()`, checkbox events, and menu
|
|
113
|
+
roving focus behave identically.
|
|
114
|
+
|
|
115
|
+
**Slots:** default label content and optional `icon`.
|
|
116
|
+
|
|
117
|
+
```html
|
|
118
|
+
<lr-menu>
|
|
119
|
+
<button slot="trigger">Actions</button>
|
|
120
|
+
<lr-dropdown-item value="archive">Archive</lr-dropdown-item>
|
|
121
|
+
</lr-menu>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<lr-menu label="Row actions">
|
|
126
|
+
<button slot="trigger" aria-label="More actions">⋮</button>
|
|
127
|
+
<lr-menu-item value="edit">Edit</lr-menu-item>
|
|
128
|
+
<lr-menu-item value="duplicate">Duplicate</lr-menu-item>
|
|
129
|
+
<hr />
|
|
130
|
+
<lr-menu-item value="delete" destructive>Delete</lr-menu-item>
|
|
131
|
+
</lr-menu>
|
|
132
|
+
<script type="module">
|
|
133
|
+
document.querySelector('lr-menu').addEventListener('lr-menu-select', (e) => console.log(e.detail.value));
|
|
134
|
+
</script>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The popup is always rendered in the DOM (never `display:none`) so `.focus()` calls on its content
|
|
138
|
+
work synchronously the instant it opens — closed state is conveyed via `visibility`/`opacity`
|
|
139
|
+
instead. `visibility` is an inherited CSS property that pierces the `<slot>` projection boundary, so
|
|
140
|
+
every closed-state `<lr-menu-item>` is automatically excluded from sequential (Tab-key)
|
|
141
|
+
navigation with no separate JS bookkeeping. ArrowDown/ArrowUp *on the trigger while closed* also
|
|
142
|
+
opens the menu, focusing the first/last non-disabled item respectively (mirrors native `<select>`).
|
|
143
|
+
Once open, ArrowDown/ArrowUp move the roving focus among non-disabled items and wrap past either end
|
|
144
|
+
(unlike `<lr-select>`'s clamped listbox nav); Home/End jump to the first/last non-disabled item;
|
|
145
|
+
Enter/Space activate the focused item; Escape closes and refocuses the trigger; Tab closes without
|
|
146
|
+
`preventDefault()`, letting the browser's own Tab navigation proceed untouched. All of this list-level
|
|
147
|
+
keydown handling — Escape, Tab, the arrow keys, Home/End, and type-ahead alike — only responds when
|
|
148
|
+
the triggering keydown event's own target is an actual `<lr-menu-item>` element; a keydown bubbling
|
|
149
|
+
up from any other node inside the popup is ignored rather than misread as list navigation. A printable
|
|
150
|
+
keypress runs type-ahead: roving focus jumps to the next non-disabled item whose text starts with the
|
|
151
|
+
accumulated buffer (cycling from just after the active item, buffer resets ~500ms after the last
|
|
152
|
+
keystroke) — mirrors `<lr-select>`'s identical listbox type-ahead. A click outside both the trigger
|
|
153
|
+
and the open popup also closes it, but deliberately does *not* refocus the trigger — the outside
|
|
154
|
+
click itself already moved focus somewhere the user chose.
|
|
155
|
+
|
|
156
|
+
**Known gotchas:**
|
|
157
|
+
- `<lr-menu-item>`'s click handler lives on an inner shadow-DOM element (`[part="base"]`), not the
|
|
158
|
+
host — calling `.click()` directly on the `<lr-menu-item>` host element in a test does **not**
|
|
159
|
+
trigger selection; either click (or dispatch on) the element returned by
|
|
160
|
+
`menuItemEl.shadowRoot.querySelector('[part="base"]')`, or just call the item's own `select()`
|
|
161
|
+
method directly.
|
|
162
|
+
- `lr-show`/`lr-hide` are suppressed on the very first render even if `open` is already `true`
|
|
163
|
+
in markup — only later `open` transitions fire them.
|
|
164
|
+
- `lr-menu-item-select` carries no detail payload (`event.detail === null`); read
|
|
165
|
+
`event.target.value` instead. `<lr-menu>`'s own re-fired `lr-menu-select` is the one that
|
|
166
|
+
carries `detail: { value }`.
|
|
167
|
+
- Tab closes the menu without `preventDefault()` or focus trapping — the browser's own default Tab
|
|
168
|
+
navigation proceeds untouched, only the (now-stale) open state is cleared.
|
|
169
|
+
- Only Escape and a committed selection refocus the trigger on close; a click outside does not.
|
|
170
|
+
|
|
171
|
+
---
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-menu`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/layout/menu/menu.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraMenu`, also available unregistered from `@aceshooting/lyra-ui/components/layout/menu/menu.class.js`
|
|
7
|
+
- **Family** `components/layout/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Documented with** `lr-menu-item`, `lr-dropdown-item` (same section below)
|
|
10
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## `lr-menu` / `lr-menu-item`
|
|
15
|
+
|
|
16
|
+
An anchored dropdown built around a consumer-supplied trigger element (typically an icon button)
|
|
17
|
+
assigned to the `trigger` slot. First-party invention (no Web Awesome equivalent) — a close, drop-
|
|
18
|
+
in-shaped replacement for reaching outside this library for a third-party dropdown to build a gear
|
|
19
|
+
menu, an avatar menu, or a history row's overflow menu. Uses the WAI-ARIA "menu button" pattern —
|
|
20
|
+
`role="menu"`/`role="menuitem"` with real roving DOM focus moving between actual focusable
|
|
21
|
+
`<lr-menu-item>` rows — deliberately not a `role="listbox"`/`aria-activedescendant` shape (that's
|
|
22
|
+
`<lr-select>`'s pattern instead).
|
|
23
|
+
|
|
24
|
+
### `lr-menu`
|
|
25
|
+
|
|
26
|
+
**Properties:**
|
|
27
|
+
- `open: boolean = false` (reflected)
|
|
28
|
+
- `placement?: Placement` (reflected — resolved through `rtlAwarePlacement()` (`internal/rtl.ts`),
|
|
29
|
+
then forwarded to `place()`; defaults to whatever `place()` itself defaults to. A `left`/`right`
|
|
30
|
+
side is mirrored under `dir="rtl"`, so e.g. `placement="left-start"` still anchors to the menu's
|
|
31
|
+
trailing edge instead of pinning to the physical left)
|
|
32
|
+
- `label: string = 'Menu'` — accessible name for the `role="menu"` popup; override with something
|
|
33
|
+
specific (e.g. "Row actions") when a page has more than one menu. A host-level `aria-label`
|
|
34
|
+
attribute takes precedence over both this prop and the localized default (unset by default, so
|
|
35
|
+
a no-op for existing consumers), matching `lr-select`/`lr-model-select`'s
|
|
36
|
+
`this.getAttribute('aria-label') || <computed default>` precedence
|
|
37
|
+
|
|
38
|
+
- `closeOnEscapeAnywhere: boolean = false` (attribute `close-on-escape-anywhere`) — lets Escape
|
|
39
|
+
close the menu when focus is on slotted non-menu-item content inside the popup; item activation
|
|
40
|
+
remains scoped to actual menu items
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-show` (no detail — fires only when `open` transitions to `true`, not for markup
|
|
43
|
+
that renders `open` true from the start), `lr-hide` (same first-render guard, opposite
|
|
44
|
+
transition), `lr-menu-select` (`detail: { value }` — a consolidated re-fire of the activated
|
|
45
|
+
`<lr-menu-item>`'s own `lr-menu-item-select`; always followed by the menu closing and focus
|
|
46
|
+
returning to the trigger)
|
|
47
|
+
|
|
48
|
+
**Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
|
|
49
|
+
are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
|
|
50
|
+
since those attributes belong on the actual interactive trigger, which lives outside this
|
|
51
|
+
component's shadow root), default (`<lr-menu-item>` elements, plus optionally plain `<hr>`
|
|
52
|
+
dividers between groups — native `<hr>` already carries an implicit `separator` role)
|
|
53
|
+
|
|
54
|
+
**CSS parts:** `trigger` (wrapper around the `trigger` slot — the positioning anchor), `popup` (the
|
|
55
|
+
positioned floating panel), `list` (the `role="menu"` container wrapping the default slot)
|
|
56
|
+
|
|
57
|
+
**Themeable custom properties:** shared tokens only (`--lr-color-surface`, `--lr-color-border`,
|
|
58
|
+
`--lr-radius`, `--lr-shadow`, `--lr-space-xs`, `--lr-transition-fast`).
|
|
59
|
+
|
|
60
|
+
**Optional peer deps:** none.
|
|
61
|
+
|
|
62
|
+
### `lr-menu-item`
|
|
63
|
+
|
|
64
|
+
Not meaningful standalone — it exists purely as `<lr-menu>`'s light-DOM child, the same
|
|
65
|
+
relationship `<lr-option>` has to `<lr-combobox>`/`<lr-select>`. `role="menuitem"` and the
|
|
66
|
+
roving `tabindex` both live on the host element itself (mirroring `<lr-tree-node>`), not an
|
|
67
|
+
internal shadow-DOM button; `<lr-menu>` is the sole owner of this element's `tabIndex`.
|
|
68
|
+
|
|
69
|
+
**Properties:**
|
|
70
|
+
- `value: string = ''` — an id/value echoed back in the parent `<lr-menu>`'s `lr-menu-select`
|
|
71
|
+
detail
|
|
72
|
+
- `disabled: boolean = false` (reflected — disables selection and excludes this item from
|
|
73
|
+
`<lr-menu>`'s roving-tabindex navigation entirely)
|
|
74
|
+
- `destructive: boolean = false` (reflected — tints the row with `--lr-color-danger`, for a
|
|
75
|
+
dangerous action like "Delete")
|
|
76
|
+
- `type: 'normal' | 'checkbox' = 'normal'` — `'checkbox'` (mirroring `wa-dropdown-item`'s identical
|
|
77
|
+
`type` option) renders `role="menuitemcheckbox"` in place of `role="menuitem"`, with `aria-checked`
|
|
78
|
+
reflecting `checked` and a checkmark glyph shown once `checked` is `true`. `'normal'` (the default)
|
|
79
|
+
renders and behaves exactly as before this option existed.
|
|
80
|
+
- `checked: boolean = false` (reflected) — whether a `type="checkbox"` item is checked; meaningless
|
|
81
|
+
(ignored) for `type="normal"`
|
|
82
|
+
|
|
83
|
+
**Methods:** `select(): void` — fires `lr-menu-item-select` (no-op while `disabled`). Called
|
|
84
|
+
internally by this element's own click handler and by `<lr-menu>`'s Enter/Space keydown handling
|
|
85
|
+
of the roving-focused item; also the cleanest way for a consumer/test to trigger selection
|
|
86
|
+
programmatically instead of clicking the shadow-DOM `[part="base"]` element (see the gotcha below).
|
|
87
|
+
For `type="checkbox"`, also toggles `checked` and fires `lr-menu-item-change` first.
|
|
88
|
+
|
|
89
|
+
**Events:** `lr-menu-item-select` (no detail payload — `this.emit('lr-menu-item-select')` is
|
|
90
|
+
called with no second argument, so `event.detail` is `null`, not `undefined`; fires on click, or
|
|
91
|
+
when the parent `<lr-menu>`'s own Enter/Space keydown handling calls `select()` on the currently
|
|
92
|
+
roving-focused item), `lr-menu-item-change` (`detail: { value, checked }` — fired when a
|
|
93
|
+
`type="checkbox"` item is activated and its `checked` state toggled, in addition to — never instead
|
|
94
|
+
of — `lr-menu-item-select`; never fired for `type="normal"`)
|
|
95
|
+
|
|
96
|
+
**Slots:** default (the item's label content), `icon` (optional leading icon)
|
|
97
|
+
|
|
98
|
+
**CSS parts:** `base` (the row — `role` lives on the host, not this part), `icon` (wrapper around
|
|
99
|
+
the `icon` slot; not rendered/hidden entirely while the slot is empty), `label` (wrapper around the
|
|
100
|
+
default slot), `checkmark` (the checkmark glyph shown when a `type="checkbox"` item is `checked`;
|
|
101
|
+
not rendered at all for `type="normal"`)
|
|
102
|
+
|
|
103
|
+
**Themeable custom properties:** shared tokens only (`--lr-radius`, `--lr-focus-ring-width`,
|
|
104
|
+
`--lr-focus-ring-color`, `--lr-space-xs`, `--lr-space-s`, `--lr-color-brand-quiet`,
|
|
105
|
+
`--lr-opacity-disabled`, `--lr-color-danger`, `--lr-color-danger-quiet`).
|
|
106
|
+
|
|
107
|
+
**Optional peer deps:** none.
|
|
108
|
+
|
|
109
|
+
### `lr-dropdown-item`
|
|
110
|
+
|
|
111
|
+
Compatibility naming alias for `<lr-menu-item>`. It is a subclass of the same implementation,
|
|
112
|
+
so `value`, `disabled`, `destructive`, `type`, `checked`, `select()`, checkbox events, and menu
|
|
113
|
+
roving focus behave identically.
|
|
114
|
+
|
|
115
|
+
**Slots:** default label content and optional `icon`.
|
|
116
|
+
|
|
117
|
+
```html
|
|
118
|
+
<lr-menu>
|
|
119
|
+
<button slot="trigger">Actions</button>
|
|
120
|
+
<lr-dropdown-item value="archive">Archive</lr-dropdown-item>
|
|
121
|
+
</lr-menu>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<lr-menu label="Row actions">
|
|
126
|
+
<button slot="trigger" aria-label="More actions">⋮</button>
|
|
127
|
+
<lr-menu-item value="edit">Edit</lr-menu-item>
|
|
128
|
+
<lr-menu-item value="duplicate">Duplicate</lr-menu-item>
|
|
129
|
+
<hr />
|
|
130
|
+
<lr-menu-item value="delete" destructive>Delete</lr-menu-item>
|
|
131
|
+
</lr-menu>
|
|
132
|
+
<script type="module">
|
|
133
|
+
document.querySelector('lr-menu').addEventListener('lr-menu-select', (e) => console.log(e.detail.value));
|
|
134
|
+
</script>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The popup is always rendered in the DOM (never `display:none`) so `.focus()` calls on its content
|
|
138
|
+
work synchronously the instant it opens — closed state is conveyed via `visibility`/`opacity`
|
|
139
|
+
instead. `visibility` is an inherited CSS property that pierces the `<slot>` projection boundary, so
|
|
140
|
+
every closed-state `<lr-menu-item>` is automatically excluded from sequential (Tab-key)
|
|
141
|
+
navigation with no separate JS bookkeeping. ArrowDown/ArrowUp *on the trigger while closed* also
|
|
142
|
+
opens the menu, focusing the first/last non-disabled item respectively (mirrors native `<select>`).
|
|
143
|
+
Once open, ArrowDown/ArrowUp move the roving focus among non-disabled items and wrap past either end
|
|
144
|
+
(unlike `<lr-select>`'s clamped listbox nav); Home/End jump to the first/last non-disabled item;
|
|
145
|
+
Enter/Space activate the focused item; Escape closes and refocuses the trigger; Tab closes without
|
|
146
|
+
`preventDefault()`, letting the browser's own Tab navigation proceed untouched. All of this list-level
|
|
147
|
+
keydown handling — Escape, Tab, the arrow keys, Home/End, and type-ahead alike — only responds when
|
|
148
|
+
the triggering keydown event's own target is an actual `<lr-menu-item>` element; a keydown bubbling
|
|
149
|
+
up from any other node inside the popup is ignored rather than misread as list navigation. A printable
|
|
150
|
+
keypress runs type-ahead: roving focus jumps to the next non-disabled item whose text starts with the
|
|
151
|
+
accumulated buffer (cycling from just after the active item, buffer resets ~500ms after the last
|
|
152
|
+
keystroke) — mirrors `<lr-select>`'s identical listbox type-ahead. A click outside both the trigger
|
|
153
|
+
and the open popup also closes it, but deliberately does *not* refocus the trigger — the outside
|
|
154
|
+
click itself already moved focus somewhere the user chose.
|
|
155
|
+
|
|
156
|
+
**Known gotchas:**
|
|
157
|
+
- `<lr-menu-item>`'s click handler lives on an inner shadow-DOM element (`[part="base"]`), not the
|
|
158
|
+
host — calling `.click()` directly on the `<lr-menu-item>` host element in a test does **not**
|
|
159
|
+
trigger selection; either click (or dispatch on) the element returned by
|
|
160
|
+
`menuItemEl.shadowRoot.querySelector('[part="base"]')`, or just call the item's own `select()`
|
|
161
|
+
method directly.
|
|
162
|
+
- `lr-show`/`lr-hide` are suppressed on the very first render even if `open` is already `true`
|
|
163
|
+
in markup — only later `open` transitions fire them.
|
|
164
|
+
- `lr-menu-item-select` carries no detail payload (`event.detail === null`); read
|
|
165
|
+
`event.target.value` instead. `<lr-menu>`'s own re-fired `lr-menu-select` is the one that
|
|
166
|
+
carries `detail: { value }`.
|
|
167
|
+
- Tab closes the menu without `preventDefault()` or focus trapping — the browser's own default Tab
|
|
168
|
+
navigation proceeds untouched, only the (now-stale) open state is cleared.
|
|
169
|
+
- Only Escape and a committed selection refocus the trigger on close; a click outside does not.
|
|
170
|
+
|
|
171
|
+
---
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-message-actions`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/conversation/message-actions/message-actions.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraMessageActions`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/message-actions/message-actions.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-message-actions`
|
|
14
|
+
|
|
15
|
+
The per-message action toolbar for `lr-chat-message`'s `actions` slot: opt-in built-ins (copy /
|
|
16
|
+
regenerate / edit / feedback) that emit intent events, plus a default slot for custom controls (e.g.
|
|
17
|
+
a slotted `lr-branch-picker`). `role="toolbar"` with WAI-ARIA APG roving-tabindex; ArrowLeft/
|
|
18
|
+
ArrowRight (RTL-aware) plus Home/End move focus across every stop — built-ins and slotted controls
|
|
19
|
+
alike — via `.focus()`. Only the plain-button built-ins (`regenerate`/`edit`) get their `tabindex`
|
|
20
|
+
toggled by this component itself; a composite child (`lr-copy-button`, the `feedback` built-in, any
|
|
21
|
+
slotted custom element) remains independently reachable via the page's native Tab order alongside the
|
|
22
|
+
toolbar's single roving stop, since a shadow-root-internal focusable element can't be suppressed from
|
|
23
|
+
outside its own component.
|
|
24
|
+
|
|
25
|
+
**Properties:** `controls: MessageActionControl[] = []` (attribute: false) —
|
|
26
|
+
`MessageActionControl = 'copy' | 'regenerate' | 'edit' | 'feedback'` (exported here); which built-ins
|
|
27
|
+
render, in that order. `copyText: string = ''`
|
|
28
|
+
(attribute `copy-text`) — required for the `copy` built-in to render at all. `feedbackValue: 'up' |
|
|
29
|
+
'down' | null = null` (attribute `feedback-value`) — forwarded to the embedded, thumbs-only
|
|
30
|
+
`lr-message-feedback` (its `reasons`/`commentable`/`detailFor` are never forwarded, so its detail
|
|
31
|
+
panel never opens). `revealOnHover: boolean = false` (reflected, attribute `reveal-on-hover`) — hides
|
|
32
|
+
the bar until the closest `lr-chat-message` ancestor is hovered or a control inside has focus.
|
|
33
|
+
`label: string = ''` — accessible name override for the toolbar. `accessibleLabel: string | null =
|
|
34
|
+
null` (attribute `aria-label`) — overrides the toolbar's computed accessible name, winning over
|
|
35
|
+
`label` and the localized default; attribute-reflects from a host-level `aria-label`.
|
|
36
|
+
|
|
37
|
+
**Events:** `lr-regenerate`/`lr-edit` — a built-in was activated, no detail. `lr-copy` —
|
|
38
|
+
`detail: { text }`, surfaced by the embedded `lr-copy-button` (bubbles/composed already, not
|
|
39
|
+
re-emitted). `lr-change`/`lr-submit` — bubble unchanged from the embedded, thumbs-only
|
|
40
|
+
`lr-message-feedback`.
|
|
41
|
+
|
|
42
|
+
**Slots:** default — additional controls (e.g. `lr-copy-button`, `lr-icon-button`,
|
|
43
|
+
`lr-branch-picker`) appended after the built-ins; they participate in the toolbar's arrow-key
|
|
44
|
+
navigation.
|
|
45
|
+
|
|
46
|
+
**CSS parts:** `base` (the toolbar, `role="toolbar"`), `copy-button` (the embedded
|
|
47
|
+
`lr-copy-button`), `regenerate-button`, `edit-button`, and `feedback` (the embedded
|
|
48
|
+
`lr-message-feedback`).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-message-feedback`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/conversation/message-feedback/message-feedback.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraMessageFeedback`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/message-feedback/message-feedback.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-message-feedback`
|
|
14
|
+
|
|
15
|
+
Thumbs up/down for one assistant message, with an optional inline detail step (categorical reason
|
|
16
|
+
chips + a free-text comment) that opens as a disclosure directly below the thumbs. Emits; never
|
|
17
|
+
persists — a host reflects a previously-recorded rating back via `value` (+ `disabled` for a
|
|
18
|
+
read-only display). Activating the pressed thumb again toggles it off to `null` unless its own detail
|
|
19
|
+
panel is currently open, in which case that click re-opens the panel instead.
|
|
20
|
+
|
|
21
|
+
**Properties:** `value: 'up' | 'down' | null = null` (reflected), `reasons: MessageFeedbackReason[] =
|
|
22
|
+
[]` (attribute: false, each `{ id, label }`), `commentable: boolean = false` (reflected) adds a
|
|
23
|
+
free-text comment field, `detailFor: 'down' | 'both' = 'down'` (attribute `detail-for`) — which
|
|
24
|
+
rating opens the detail panel, and `disabled: boolean = false` (reflected) for a read-only display.
|
|
25
|
+
|
|
26
|
+
**Methods:** `focus()` focuses the thumb matching the current `value` (the up thumb when `null`);
|
|
27
|
+
`blur()` blurs both thumbs.
|
|
28
|
+
|
|
29
|
+
**Events:** `lr-change` — `detail: { value: 'up' | 'down' | null }`, fired when a thumb's rating
|
|
30
|
+
changes or clears. `lr-submit` — `detail: { value: 'up' | 'down'; reasonIds: string[]; comment:
|
|
31
|
+
string }`, fired by the panel's submit button (`value` is never `null` here — the panel only exists
|
|
32
|
+
for a set rating).
|
|
33
|
+
|
|
34
|
+
**CSS parts:** `base` (the root), `thumbs` (wrapper around both thumb buttons), `up-button`,
|
|
35
|
+
`down-button`, `panel` (the inline detail disclosure, only rendered when `reasons` is non-empty or
|
|
36
|
+
`commentable` is set), `reasons` (the reason-chip group), `comment` (the comment `<textarea>`), and
|
|
37
|
+
`submit-button`.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/retrieval.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-mind-map`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/retrieval/mind-map/mind-map.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraMindMap`, also available unregistered from `@aceshooting/lyra-ui/components/retrieval/mind-map/mind-map.class.js`
|
|
7
|
+
- **Family** `components/retrieval/` — 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-mind-map`
|
|
14
|
+
|
|
15
|
+
A radial expandable topic tree (NotebookLM Mind Maps): a spatial overview of a topic hierarchy where
|
|
16
|
+
activating a topic drills in or hands the topic to the chat. Hierarchy, not network — no cross-links,
|
|
17
|
+
no force simulation, no communities, no edge labels (that's `lr-graph`). Zero-dependency SVG; the
|
|
18
|
+
radial layout is closed-form arithmetic, in its own `mind-map-layout.ts` module, mirroring
|
|
19
|
+
`lr-word-cloud`'s dependency-free precedent.
|
|
20
|
+
|
|
21
|
+
**Properties:**
|
|
22
|
+
- `topics: LyraTopic[] = []` (attribute: false) — `LyraTopic { id: string; label: string; children?:
|
|
23
|
+
LyraTopic[] }`; a single root sits at the center, multiple roots hang off an implicit center hub
|
|
24
|
+
- `label: string = ''` — accessible name for the SVG group and the implicit hub's text
|
|
25
|
+
- `expandDepth: number = 1` (attribute `expand-depth`) — initial expansion depth (root + first
|
|
26
|
+
ring); expansion state afterward is component-managed per topic id and survives `topics`
|
|
27
|
+
reassignment
|
|
28
|
+
|
|
29
|
+
**Events:** `lr-topic-select` (`detail: { id }`, a *leaf* topic was activated),
|
|
30
|
+
`lr-topic-toggle` (`detail: { id, expanded }`, a parent topic was activated, or auto-expanded by
|
|
31
|
+
keyboard descent).
|
|
32
|
+
|
|
33
|
+
**Slots:** none.
|
|
34
|
+
|
|
35
|
+
**CSS parts:** `base`, `svg` (the single-tab-stop focus target), `node`, `node-label`, `link`
|
|
36
|
+
(parent-child connector), `focus-ring` (keyboard focus ring), `live-region` (visually hidden
|
|
37
|
+
announcement region), `empty` (shown when `topics` is empty).
|
|
38
|
+
|
|
39
|
+
**Themeable custom properties:** `--lr-mind-map-ring-gap` (default `6rem`, radius step per depth
|
|
40
|
+
ring).
|
|
41
|
+
|
|
42
|
+
**Optional peer deps:** none.
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<lr-mind-map style="height:480px" expand-depth="2"></lr-mind-map>
|
|
46
|
+
<script>
|
|
47
|
+
document.querySelector('lr-mind-map').topics = [
|
|
48
|
+
{ id: 'root', label: 'Computing history', children: [
|
|
49
|
+
{ id: 'people', label: 'People', children: [{ id: 'ada', label: 'Ada Lovelace' }] },
|
|
50
|
+
{ id: 'machines', label: 'Machines' },
|
|
51
|
+
] },
|
|
52
|
+
];
|
|
53
|
+
</script>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Known gotchas:**
|
|
57
|
+
- A user's explicit expand/collapse only ever overrides the `depth < expandDepth` default in the
|
|
58
|
+
direction chosen — reassigning `topics` (even with the same ids) never silently discards that
|
|
59
|
+
override.
|
|
60
|
+
- Node-position transitions use `--lr-transition-base`, which already collapses to near-zero under
|
|
61
|
+
`prefers-reduced-motion: reduce` globally, so expansion snaps rather than tweening for a
|
|
62
|
+
reduced-motion user with no extra branching in this component.
|
|
63
|
+
|
|
64
|
+
---
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-model-select`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/conversation/model-select/model-select.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraModelSelect`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/model-select/model-select.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-model-select`
|
|
14
|
+
|
|
15
|
+
A provider/model picker that renders as a closed dropdown when a fixed `catalog` is available, or as a
|
|
16
|
+
filterable free-text combobox when it isn't (or when `allow-custom` explicitly permits typing something
|
|
17
|
+
outside the catalog). Form-associated (hand-rolled internals via `attachInternals()` directly, not the
|
|
18
|
+
shared `FormAssociated` mixin — same reasoning as `lr-combobox`/`lr-select`: see the shared-foundation
|
|
19
|
+
notes). Built on the same trigger-button/`aria-activedescendant` listbox technique `<lr-select>` uses
|
|
20
|
+
and the filter-as-you-type suggestion-popup technique `<lr-combobox>` uses, without composing either
|
|
21
|
+
element. First-party invention (no Web Awesome equivalent).
|
|
22
|
+
Session-history/autofill restoration synchronously restores the model id and form entry without
|
|
23
|
+
emitting `lr-change`.
|
|
24
|
+
|
|
25
|
+
**Exported types:**
|
|
26
|
+
- `LyraModelCatalogEntry { id: string; label: string }` — one catalog row.
|
|
27
|
+
- `LyraModelCatalog = string[] | LyraModelCatalogEntry[]` — either every entry is a plain string (used
|
|
28
|
+
as both id and label) or every entry is a full `{ id, label }` row; the two shapes are not meant to be
|
|
29
|
+
mixed within one array.
|
|
30
|
+
|
|
31
|
+
**Properties:**
|
|
32
|
+
- `provider: string = ''` — informational only (e.g. `'ollama'`); rendered as a small leading badge.
|
|
33
|
+
- `catalog?: LyraModelCatalog` (attribute: false) — the full model list. Omit (or leave empty) to fall
|
|
34
|
+
back to plain free-text entry.
|
|
35
|
+
- `allowCustom: boolean = false` (attribute `allow-custom`, reflected) — let the user type/commit a
|
|
36
|
+
value that isn't in `catalog`, even when `catalog` is non-empty.
|
|
37
|
+
- `label: string = ''` — optional visible title above the control, mirroring `<lr-select>`'s own
|
|
38
|
+
`label` exactly: rendered via a `[part="form-control-label"]` `<label>` paired with the control's
|
|
39
|
+
id, and once non-empty it takes over as the accessible-name source (an `aria-label` override is
|
|
40
|
+
then only consulted as the fallback). Empty (the default) keeps the original
|
|
41
|
+
`aria-label || placeholder || 'Model'` accessible-name chain untouched.
|
|
42
|
+
- `hint: string = ''` — hint text below the field. Unset (the default): no hint chrome renders.
|
|
43
|
+
- `errorText: string = ''` (attribute `error-text`) — error text below the field (overridden by
|
|
44
|
+
slotted `error` content). Unset (the default): no error chrome renders.
|
|
45
|
+
- `placeholder: string = ''`
|
|
46
|
+
- `spellcheck: boolean = true` — forwarded to the free-text mode's native `<input>`; no effect in
|
|
47
|
+
closed-dropdown mode (no native text input there). `spellcheck="false"` is parsed as `false` (a
|
|
48
|
+
custom converter, not Lit's presence-based `type: Boolean`, so the literal attribute string is
|
|
49
|
+
honored — matches `<lr-textarea>`/`<lr-date-input>`).
|
|
50
|
+
- `autocapitalize: string = ''` — forwarded to the free-text mode's native `<input>`; empty omits
|
|
51
|
+
the attribute.
|
|
52
|
+
- `autoCorrect: string = ''` (attribute `autocorrect`) — forwarded to the free-text mode's native
|
|
53
|
+
`<input>`'s own `autocorrect` (Safari/WebKit-specific); empty omits the attribute. Named
|
|
54
|
+
`autoCorrect` in JS purely to dodge a `lib.dom.d.ts` typing collision — the wire attribute is
|
|
55
|
+
still plain `autocorrect`.
|
|
56
|
+
- `autocomplete: string = 'off'`, `inputMode: string = ''` (attribute `inputmode`), and
|
|
57
|
+
`enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the free-text input;
|
|
58
|
+
they have no effect in closed-dropdown mode
|
|
59
|
+
- `autocomplete: string = 'off'`, `inputMode: string = ''` (`inputmode`), and `enterKeyHint: string = ''`
|
|
60
|
+
(`enterkeyhint`) — forwarded to the free-text mode's native `<input>`.
|
|
61
|
+
- `name: string = ''` (reflected)
|
|
62
|
+
- `disabled: boolean = false` (reflected)
|
|
63
|
+
- `required: boolean = false` (reflected — enforced via `internals.setValidity()`)
|
|
64
|
+
- `open: boolean = false` (reflected)
|
|
65
|
+
- `value: string` — getter/setter (hand-rolled, not the `FormAssociated` mixin); the current model id,
|
|
66
|
+
`''` when nothing is selected. Writing it calls `internals.setFormValue()` synchronously. A named,
|
|
67
|
+
untouched model-select contributes `''` to `FormData` instead of omitting its key.
|
|
68
|
+
|
|
69
|
+
**Mode switching:** `closedMode` (private) is `true` whenever `normalizedCatalog.length > 0 &&
|
|
70
|
+
!allowCustom` — a non-empty `catalog` with `allowCustom` left `false` renders the closed dropdown
|
|
71
|
+
trigger-button UI (`[part="trigger"]`, `role="combobox"` on a `<button>`, no typing). Any other
|
|
72
|
+
combination (`catalog` empty/unset, or `allowCustom` true) renders the free-text `<input>` UI
|
|
73
|
+
(`[part="combobox"]`/`[part="combobox-input"]`) with live substring filtering against the catalog (id or
|
|
74
|
+
label, case-insensitive). The mode is re-evaluated on every render, so toggling `allowCustom` or clearing
|
|
75
|
+
`catalog` at runtime switches modes live, repositioning the shared `[part="listbox"]` popover against
|
|
76
|
+
whichever element is the active anchor.
|
|
77
|
+
|
|
78
|
+
A `value` that isn't present in `catalog` (e.g. a model id saved from a provider whose live catalog has
|
|
79
|
+
since changed) is never silently dropped: it's appended to the rendered option list as a synthetic,
|
|
80
|
+
visually-distinct row (dashed border, italic label, "not in catalog" badge) computed fresh from
|
|
81
|
+
`catalog` + `value` on every access, without ever mutating the `catalog` property itself.
|
|
82
|
+
|
|
83
|
+
**Events:**
|
|
84
|
+
- `lr-change` (`detail: { value: string; inCatalog: boolean }` — fired when a value is selected
|
|
85
|
+
from the listbox or committed in free-text mode; `inCatalog` reflects whether that value was
|
|
86
|
+
actually present in `normalizedCatalog`, so a consumer can flag a freshly-typed custom value
|
|
87
|
+
distinctly from a real catalog pick)
|
|
88
|
+
- `blur` (no detail) — re-dispatched from the free-text mode's internal `<input>`'s own `blur`,
|
|
89
|
+
bubbling and composed unlike the native event. Closed-dropdown mode's trigger `<button>` has no
|
|
90
|
+
equivalent re-dispatch, matching `<lr-select>`'s own trigger.
|
|
91
|
+
- `focus` (no detail) — re-dispatched from the free-text mode's internal `<input>`'s own `focus`,
|
|
92
|
+
for the same reason as `blur`.
|
|
93
|
+
|
|
94
|
+
**Slots:** `hint` (custom hint content), `error` (custom error content).
|
|
95
|
+
|
|
96
|
+
**CSS parts:** `form-control-label` (the `<label>` element — only rendered, and only contributes to
|
|
97
|
+
the accessible name, once `label` is non-empty), `trigger` (closed-dropdown mode's
|
|
98
|
+
`<button role="combobox">`, also its positioning anchor), `combobox` (free-text mode's input
|
|
99
|
+
container, also its positioning anchor), `combobox-input` (the free-text `<input>`),
|
|
100
|
+
`provider-badge` (the optional leading `provider` label), `listbox` (the options popover, shared by
|
|
101
|
+
both modes), `option`, `option-label`, `option-badge` (the "not in catalog" badge on a synthetic
|
|
102
|
+
stale-value row), `expand-icon` (the dropdown chevron, present in both modes), `hint` (the hint
|
|
103
|
+
message), `error` (the error message)
|
|
104
|
+
|
|
105
|
+
**Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`,
|
|
106
|
+
`--lr-color-border/-surface/-brand/-brand-quiet/-text-quiet`, `--lr-radius`, `--lr-shadow`,
|
|
107
|
+
`--lr-focus-ring-width/-color/-offset`, `--lr-icon-button-size`, `--lr-transition-fast`,
|
|
108
|
+
`--lr-opacity-disabled`.
|
|
109
|
+
|
|
110
|
+
**Optional peer deps:** none.
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<lr-model-select
|
|
114
|
+
provider="openai"
|
|
115
|
+
.catalog=${[
|
|
116
|
+
{ id: 'gpt-4o', label: 'GPT-4o' },
|
|
117
|
+
{ id: 'gpt-4o-mini', label: 'GPT-4o mini' },
|
|
118
|
+
]}
|
|
119
|
+
value="gpt-4o"
|
|
120
|
+
placeholder="Choose a model…"
|
|
121
|
+
@lr-change=${(e) => setModel(e.detail.value, e.detail.inCatalog)}
|
|
122
|
+
></lr-model-select>
|
|
123
|
+
|
|
124
|
+
<!-- No fixed catalog yet: falls back to free-text entry -->
|
|
125
|
+
<lr-model-select provider="ollama" placeholder="Type a model id…" allow-custom></lr-model-select>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Known gotchas:**
|
|
129
|
+
- `catalog` must be homogeneous — an array of plain strings, or an array of `{ id, label }` objects, not
|
|
130
|
+
a mix; `LyraModelCatalog` is a union of two array *types*, not an array of a union item type.
|
|
131
|
+
- The synthetic "not in catalog" row only ever appears when `catalog` is non-empty and `value` isn't one
|
|
132
|
+
of its ids — with no `catalog` at all, there's no catalog list to diff `value` against, so no badge.
|
|
133
|
+
- `value`/form-association here is hand-rolled via `attachInternals()` directly, not the shared
|
|
134
|
+
`FormAssociated` mixin — mirrors `lr-combobox`/`lr-select`'s identical divergence.
|
|
135
|
+
- `aria-invalid`/`data-invalid` only reflect once the control has been blurred (touched) at least once,
|
|
136
|
+
matching `lr-select`'s identical pattern — validity styling never flashes on first render.
|
|
137
|
+
- In free-text mode, the input's displayed text is `query` only while `open`; while closed it shows the
|
|
138
|
+
committed value's label — so setting `.value` programmatically doesn't require also touching the live
|
|
139
|
+
typed text.
|
|
140
|
+
- `hint`/`errorText` mirror `<lr-select>`'s identical chrome, including the `aria-describedby` wiring
|
|
141
|
+
to the rendered `hint`/`error` ids — set on whichever element (`trigger` or `combobox-input`) owns
|
|
142
|
+
`role="combobox"` for the active mode.
|
|
143
|
+
|
|
144
|
+
---
|