@aceshooting/lyra-ui 26.0.0 → 27.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -675
- package/README.md +281 -1130
- package/design-tokens.json +1 -1
- package/dist/ai/types.d.ts +5 -5
- package/dist/autoloader.js +1 -1
- package/dist/cli/agent-registry.mjs +1 -0
- package/dist/cli/component-inventory.mjs +1 -1
- package/dist/cli/init-agents.mjs +40 -0
- package/dist/cli/is-main-module.mjs +1 -0
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/lyra-ui.mjs +11 -0
- package/dist/cli/migrate-wa.mjs +4 -2
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-renames.mjs +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.d.ts +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +2 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +2 -2
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/connector-manager/connector-manager.class.d.ts +4 -2
- package/dist/components/agent-tools/connector-manager/connector-manager.class.js +6 -3
- package/dist/components/agent-tools/connector-manager/connector-manager.d.ts +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.js +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.styles.js +1 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +2 -2
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +6 -6
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +8 -33
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +27 -4
- package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.class.d.ts +4 -2
- package/dist/components/agent-tools/permission-grant/permission-grant.class.js +6 -3
- package/dist/components/agent-tools/permission-grant/permission-grant.d.ts +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +2 -2
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +3 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +15 -9
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.styles.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -7
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-constraints.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -5
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +2 -5
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-view/registry.d.ts +4 -12
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-status.d.ts +7 -0
- package/dist/components/agent-tools/tool-status.styles.js +1 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.d.ts +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/box-plot.class.d.ts +1 -1
- package/dist/components/charts/chart/box-plot.class.js +1 -1
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart-surface-shared.js +1 -0
- package/dist/components/charts/chart/chart-surface.styles.js +1 -1
- package/dist/components/charts/chart/chart-table-sampling.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +2 -2
- package/dist/components/charts/chart/chart.class.js +2 -2
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/conversation/catalog-picker-element.d.ts +28 -13
- package/dist/components/conversation/catalog-picker-element.js +1 -1
- package/dist/components/conversation/catalog-picker-trigger.styles.js +1 -0
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +7 -34
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +7 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +5 -2
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +10 -27
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +2 -2
- package/dist/components/data/document-library/document-library.class.js +2 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +3 -3
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +10 -195
- package/dist/components/data/table/table.class.js +2 -2
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +3 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/catalog-picker-base.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +13 -34
- package/dist/components/forms/checkbox/checkbox.class.js +3 -3
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +3 -3
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +6 -6
- package/dist/components/forms/combobox/combobox.class.js +3 -2
- package/dist/components/forms/combobox/option.class.d.ts +3 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/date-input.class.d.ts +10 -11
- package/dist/components/forms/date-picker/date-input.class.js +4 -3
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.d.ts +6 -0
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/input/time-input.styles.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +5 -5
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -0
- package/dist/components/forms/phone-input/phone-input.class.d.ts +7 -9
- package/dist/components/forms/phone-input/phone-input.class.js +6 -5
- package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -4
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +11 -19
- package/dist/components/forms/radio/radio.class.js +2 -2
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +3 -5
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +5 -7
- package/dist/components/forms/select/select.class.js +3 -2
- package/dist/components/forms/slider/slider.class.d.ts +3 -3
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/slider/slider.styles.js +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +11 -36
- package/dist/components/forms/switch/switch.class.js +2 -2
- package/dist/components/forms/textarea/textarea.class.js +1 -0
- package/dist/components/forms/textarea/textarea.styles.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +5 -3
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-range/time-range.styles.js +1 -1
- package/dist/components/forms/toggle-group/toggle-group.class.d.ts +2 -2
- package/dist/components/forms/toggle-group/toggle-group.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +3 -3
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +2 -2
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/breadcrumb/breadcrumb-item.class.js +1 -1
- package/dist/components/layout/card/card.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +6 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -2
- package/dist/components/layout/filter-bar/filter-bar.class.js +18 -15
- package/dist/components/layout/filter-bar/filter-bar.styles.js +1 -1
- package/dist/components/layout/menu/menu.class.d.ts +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.js +1 -1
- package/dist/components/layout/page/page.class.d.ts +1 -1
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +1 -1
- package/dist/components/layout/scroller/scroller.class.js +1 -1
- package/dist/components/layout/segmented/segmented.class.js +1 -1
- package/dist/components/layout/stepper/stepper.class.js +2 -2
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +1 -1
- package/dist/components/layout/widget/widget.class.js +3 -3
- package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -0
- package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
- package/dist/components/media/file-input/file-input.class.d.ts +3 -3
- package/dist/components/media/file-input/file-input.class.js +2 -2
- package/dist/components/media/file-input/file-intake.d.ts +5 -1
- package/dist/components/media/file-input/file-intake.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.class.js +1 -1
- package/dist/components/media/map/map.class.js +2 -2
- package/dist/components/media/qr-code/qr-code-loader.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.js +1 -1
- package/dist/components/media/video/video.class.js +3 -3
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +2 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
- package/dist/components/overlays/alert/alert.class.d.ts +3 -3
- package/dist/components/overlays/alert/alert.class.js +1 -1
- package/dist/components/overlays/badge/badge.class.d.ts +2 -2
- package/dist/components/overlays/badge/badge.class.js +1 -1
- package/dist/components/overlays/badge/tag.class.d.ts +3 -1
- package/dist/components/overlays/badge/tag.class.js +3 -2
- package/dist/components/overlays/badge/tag.styles.js +1 -1
- package/dist/components/overlays/callout/callout.class.d.ts +2 -2
- package/dist/components/overlays/callout/callout.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +4 -2
- package/dist/components/overlays/chip/chip.class.js +2 -2
- package/dist/components/overlays/dialog/dialog.class.d.ts +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/overlay/overlay-shared.d.ts +9 -0
- package/dist/components/overlays/overlay/overlay-shared.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +2 -2
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.d.ts +5 -22
- package/dist/components/overlays/progress/progress-bar.class.js +4 -4
- package/dist/components/overlays/progress/progress-base.d.ts +25 -0
- package/dist/components/overlays/progress/progress-base.js +1 -0
- package/dist/components/overlays/progress/progress-ring.class.d.ts +3 -24
- package/dist/components/overlays/progress/progress-ring.class.js +4 -4
- package/dist/components/overlays/rating/rating.class.d.ts +3 -3
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts +4 -2
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +4 -4
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-model.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +1 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +2 -2
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +1 -0
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -2
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +2 -2
- package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +1 -1
- package/dist/components/retrieval/research-progress/research-progress.class.d.ts +5 -1
- package/dist/components/retrieval/research-progress/research-progress.class.js +3 -3
- package/dist/components/retrieval/research-progress/research-progress.d.ts +1 -1
- package/dist/components/retrieval/research-progress/research-progress.js +1 -1
- package/dist/components/retrieval/research-progress/research-progress.styles.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +6 -2
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +2 -2
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +2 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +3 -2
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +3 -3
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +6 -2
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +2 -2
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +1 -1
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/icon/dompurify-loader.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +2 -2
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/utility/random-content/random-content.class.d.ts +1 -1
- package/dist/components/utility/random-content/random-content.class.js +1 -1
- package/dist/components/utility/tour/tour.class.d.ts +1 -1
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +3 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts +3 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +2 -2
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +4 -18
- package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -2
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +4 -18
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +3 -16
- package/dist/components/viewers/document-viewer/ooxml-part-guard.js +1 -0
- package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-resource-guard.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts +3 -3
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +3 -3
- package/dist/components/viewers/ebook-viewer/ebook-loader.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -1
- package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +1 -4
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +1 -1
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +3 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.styles.js +1 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.js +2 -2
- package/dist/components/viewers/passive-markup.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-resource-guard.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/region-highlight-layer.js +15 -2
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +2 -2
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +4 -18
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.js +2 -15
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
- package/dist/components/viewers/table-viewer-shared.js +15 -1
- package/dist/components/viewers/table-viewer-shared.styles.js +1 -0
- package/dist/events.d.ts +19 -18
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.d.ts +3 -1
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/accessible-text-controller.js +1 -1
- package/dist/internal/active-element.d.ts +11 -0
- package/dist/internal/active-element.js +1 -1
- package/dist/internal/adjacent-runs.js +1 -1
- package/dist/internal/approval-wait-until.d.ts +7 -0
- package/dist/internal/approval-wait-until.js +1 -0
- package/dist/internal/aria-controls.js +1 -1
- package/dist/internal/catalog-picker.d.ts +2 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/composed-tree.d.ts +18 -0
- package/dist/internal/composed-tree.js +1 -1
- package/dist/internal/copy-feedback.js +1 -0
- package/dist/internal/css-length.js +1 -1
- package/dist/internal/css-motion-time.js +1 -1
- package/dist/internal/css-number.js +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/deferred-focus-return.d.ts +33 -0
- package/dist/internal/deferred-focus-return.js +1 -1
- package/dist/internal/fixed-containing-block.js +1 -1
- package/dist/internal/form-associated.d.ts +38 -2
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/form-control-element.d.ts +13 -0
- package/dist/internal/form-control-element.js +1 -0
- package/dist/internal/form-control.styles.js +1 -1
- package/dist/internal/inherited-attribute-hub.js +1 -1
- package/dist/internal/locale-loaders.generated.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/modal-surface-controller.js +1 -1
- package/dist/internal/object-guards.js +1 -1
- package/dist/internal/optional-peer-capabilities.d.ts +3 -1
- package/dist/internal/optional-peer-capabilities.js +1 -1
- package/dist/internal/orientation-breakpoint.js +1 -1
- package/dist/internal/overlay-manager.d.ts +6 -1
- package/dist/internal/overlay-manager.js +1 -1
- package/dist/internal/overlay-stack.d.ts +7 -3
- package/dist/internal/overlay-stack.js +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/persisted-restore.js +1 -1
- package/dist/internal/popup-controller.js +1 -0
- package/dist/internal/rendered-tree-traversal.d.ts +3 -1
- package/dist/internal/rendered-tree-traversal.js +1 -1
- package/dist/internal/retry-forwarder.js +1 -0
- package/dist/internal/roving-toolbar.js +1 -1
- package/dist/internal/scoped-definitions.generated.js +1 -1
- package/dist/internal/score-tiers.d.ts +4 -0
- package/dist/internal/score-tiers.js +1 -0
- package/dist/internal/semantic-variant.d.ts +7 -0
- package/dist/internal/semantic-variant.js +1 -0
- package/dist/internal/shared-unions.d.ts +1 -1
- package/dist/internal/viewer-search.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/testing/happy-dom-shims.d.ts +18 -0
- package/dist/testing/happy-dom-shims.js +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/llms/components/lr-accordion-item.md +1 -1
- package/llms/components/lr-accordion.md +1 -1
- package/llms/components/lr-alert.md +2 -2
- package/llms/components/lr-app-rail-group.md +1 -1
- package/llms/components/lr-app-rail-item.md +1 -1
- package/llms/components/lr-app-rail.md +1 -1
- package/llms/components/lr-attachment-chip.md +1 -10
- package/llms/components/lr-attachment-trigger.md +0 -10
- package/llms/components/lr-avatar.md +4 -8
- package/llms/components/lr-badge.md +16 -20
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-breadcrumb-item.md +1 -1
- package/llms/components/lr-breadcrumb.md +1 -1
- package/llms/components/lr-button-group.md +1 -1
- package/llms/components/lr-button.md +1 -1
- package/llms/components/lr-calendar.md +1 -1
- package/llms/components/lr-callout.md +3 -13
- package/llms/components/lr-card.md +1 -1
- package/llms/components/lr-carousel-item.md +1 -1
- package/llms/components/lr-carousel.md +1 -1
- package/llms/components/lr-chart.md +5 -7
- package/llms/components/lr-checkbox-group.md +1 -1
- package/llms/components/lr-checkbox.md +2 -1
- package/llms/components/lr-chip.md +3 -17
- package/llms/components/lr-chunk-inspector.md +2 -1
- package/llms/components/lr-citation-badge.md +2 -2
- package/llms/components/lr-code-block.md +0 -10
- package/llms/components/lr-code-editor.md +1 -1
- package/llms/components/lr-color-picker.md +1 -1
- package/llms/components/lr-combobox.md +6 -3
- package/llms/components/lr-command-palette.md +5 -2
- package/llms/components/lr-commit-card.md +1 -3
- package/llms/components/lr-condition-builder.md +1 -1
- package/llms/components/lr-confirm-bar.md +7 -13
- package/llms/components/lr-connector-manager.md +3 -1
- package/llms/components/lr-context-inspector.md +1 -1
- package/llms/components/lr-context-meter.md +1 -1
- package/llms/components/lr-control-group.md +1 -1
- package/llms/components/lr-copy-button.md +8 -10
- package/llms/components/lr-country-picker.md +1 -1
- package/llms/components/lr-currency-picker.md +1 -1
- package/llms/components/lr-dashboard-grid.md +1 -1
- package/llms/components/lr-data-grid.md +1 -1
- package/llms/components/lr-date-input.md +1 -1
- package/llms/components/lr-date-picker.md +11 -4
- package/llms/components/lr-details.md +1 -1
- package/llms/components/lr-dialog.md +8 -31
- package/llms/components/lr-diff-view.md +1 -1
- package/llms/components/lr-divider.md +1 -1
- package/llms/components/lr-dock-panel.md +1 -1
- package/llms/components/lr-document-library.md +1 -1
- package/llms/components/lr-drawer.md +1 -13
- package/llms/components/lr-drilldown-panel.md +1 -1
- package/llms/components/lr-drop-zone.md +4 -0
- package/llms/components/lr-dropdown-item.md +1 -1
- package/llms/components/lr-ebook-viewer.md +4 -3
- package/llms/components/lr-emoji-picker.md +1 -1
- package/llms/components/lr-entity-chip.md +2 -2
- package/llms/components/lr-env-list.md +1 -1
- package/llms/components/lr-eval-dataset.md +4 -19
- package/llms/components/lr-export-button.md +3 -3
- package/llms/components/lr-file-icon.md +0 -5
- package/llms/components/lr-file-input.md +3 -5
- package/llms/components/lr-file-tree.md +1 -1
- package/llms/components/lr-filter-bar.md +5 -1
- package/llms/components/lr-flag.md +1 -2
- package/llms/components/lr-flow-canvas.md +1 -1
- package/llms/components/lr-flow-controls.md +1 -1
- package/llms/components/lr-flow-minimap.md +2 -2
- package/llms/components/lr-flow-node.md +1 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-bytes.md +2 -3
- package/llms/components/lr-format-date.md +2 -3
- package/llms/components/lr-format-number.md +1 -1
- package/llms/components/lr-funnel.md +1 -1
- package/llms/components/lr-gauge.md +1 -1
- package/llms/components/lr-generation-metrics.md +1 -1
- package/llms/components/lr-graph-query-builder.md +1 -1
- package/llms/components/lr-heatmap.md +1 -1
- package/llms/components/lr-icon-button.md +1 -1
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-input.md +1 -1
- package/llms/components/lr-intersection-observer.md +1 -1
- package/llms/components/lr-json-viewer.md +1 -1
- package/llms/components/lr-knowledge-graph-explorer.md +2 -2
- package/llms/components/lr-known-date.md +1 -1
- package/llms/components/lr-lite-chart.md +3 -4
- package/llms/components/lr-live-region.md +1 -1
- package/llms/components/lr-locale-picker.md +1 -1
- package/llms/components/lr-map.md +1 -3
- package/llms/components/lr-media-card.md +1 -10
- package/llms/components/lr-memory-panel.md +2 -0
- package/llms/components/lr-mention-popover.md +3 -3
- package/llms/components/lr-menu-item.md +1 -1
- package/llms/components/lr-menu-label.md +1 -1
- package/llms/components/lr-menu.md +1 -1
- package/llms/components/lr-menubar-item.md +1 -1
- package/llms/components/lr-menubar.md +1 -1
- package/llms/components/lr-message-actions.md +1 -11
- package/llms/components/lr-message-parts.md +3 -5
- package/llms/components/lr-model-select.md +2 -4
- package/llms/components/lr-multi-split.md +1 -1
- package/llms/components/lr-mutation-observer.md +2 -2
- package/llms/components/lr-native-time-input.md +1 -1
- package/llms/components/lr-navigation-menu-item.md +1 -1
- package/llms/components/lr-navigation-menu.md +1 -1
- package/llms/components/lr-number-input.md +1 -1
- package/llms/components/lr-option.md +1 -1
- package/llms/components/lr-otp-input.md +1 -1
- package/llms/components/lr-page.md +1 -1
- package/llms/components/lr-pagination.md +1 -1
- package/llms/components/lr-pan-zoom.md +1 -3
- package/llms/components/lr-permission-grant.md +3 -1
- package/llms/components/lr-phone-input.md +7 -5
- package/llms/components/lr-poll-status.md +1 -1
- package/llms/components/lr-popover.md +5 -9
- package/llms/components/lr-popup.md +1 -3
- package/llms/components/lr-progress-bar.md +2 -1
- package/llms/components/lr-progress-ring.md +4 -8
- package/llms/components/lr-prompt-input.md +3 -1
- package/llms/components/lr-prompt-studio.md +4 -4
- package/llms/components/lr-radio-button.md +2 -2
- package/llms/components/lr-radio-group.md +1 -1
- package/llms/components/lr-radio.md +3 -2
- package/llms/components/lr-random-content.md +1 -1
- package/llms/components/lr-rating.md +2 -3
- package/llms/components/lr-relative-time.md +2 -3
- package/llms/components/lr-reorder-item.md +1 -1
- package/llms/components/lr-reorder-list.md +1 -1
- package/llms/components/lr-research-progress.md +2 -0
- package/llms/components/lr-resize-observer.md +1 -1
- package/llms/components/lr-responsive-panel.md +1 -1
- package/llms/components/lr-retrieval-compare.md +2 -0
- package/llms/components/lr-retrieval-trace.md +2 -0
- package/llms/components/lr-rubric-form.md +1 -1
- package/llms/components/lr-scroller.md +1 -1
- package/llms/components/lr-segmented.md +1 -1
- package/llms/components/lr-select.md +1 -1
- package/llms/components/lr-sequence-playback.md +1 -2
- package/llms/components/lr-sequence-strip.md +1 -1
- package/llms/components/lr-signature-pad.md +1 -1
- package/llms/components/lr-skeleton.md +2 -4
- package/llms/components/lr-slider.md +1 -1
- package/llms/components/lr-sparkline.md +1 -1
- package/llms/components/lr-split-panel.md +1 -1
- package/llms/components/lr-stat.md +1 -1
- package/llms/components/lr-stepper.md +1 -1
- package/llms/components/lr-swatch-picker.md +1 -1
- package/llms/components/lr-switch.md +2 -1
- package/llms/components/lr-tab-group.md +1 -1
- package/llms/components/lr-tab-panel.md +1 -1
- package/llms/components/lr-tab.md +1 -1
- package/llms/components/lr-table.md +3 -3
- package/llms/components/lr-task-list.md +3 -3
- package/llms/components/lr-test-results.md +2 -4
- package/llms/components/lr-textarea.md +1 -1
- package/llms/components/lr-time-input.md +1 -1
- package/llms/components/lr-time-range.md +5 -4
- package/llms/components/lr-time-zone-picker.md +1 -1
- package/llms/components/lr-timeline-item.md +1 -1
- package/llms/components/lr-timeline.md +1 -1
- package/llms/components/lr-toggle-group.md +1 -1
- package/llms/components/lr-toggle.md +1 -1
- package/llms/components/lr-token-input.md +1 -1
- package/llms/components/lr-tool-approval-dialog.md +12 -10
- package/llms/components/lr-tool-call-block.md +1 -1
- package/llms/components/lr-tool-call-chip.md +1 -3
- package/llms/components/lr-tool-result-view.md +3 -3
- package/llms/components/lr-tool-timeline.md +2 -2
- package/llms/components/lr-tooltip.md +8 -11
- package/llms/components/lr-tour.md +2 -2
- package/llms/components/lr-tree-item.md +1 -1
- package/llms/components/lr-tree.md +1 -1
- package/llms/components/lr-unit-picker.md +1 -1
- package/llms/components/lr-usage-badge.md +1 -3
- package/llms/components/lr-video.md +1 -2
- package/llms/components/lr-virtual-list.md +1 -1
- package/llms/components/lr-visually-hidden.md +1 -1
- package/llms/components/lr-voice-picker.md +1 -1
- package/llms/components/lr-widget.md +1 -1
- package/llms/components/lr-word-cloud.md +1 -1
- package/llms/components/lr-zoomable-frame.md +1 -6
- package/llms/migration.md +96 -2
- package/llms/peers.md +3 -2
- package/llms/shared/ai-and-peers.md +2 -2
- package/llms/shared/events-and-types.md +4 -1
- package/llms/shared/imports-and-registration.md +2 -2
- package/llms/shared/localization-and-rtl.md +18 -18
- package/llms/shared/styles-and-tokens.md +1 -1
- package/llms/shared/testing-and-utilities.md +44 -43
- package/llms/shared.md +71 -67
- package/llms.txt +14 -12
- package/locales.json +1002 -1002
- package/package.json +16 -6879
- package/registrations.json +1 -1
- package/skills/compose-lyra-interfaces/SKILL.md +60 -0
- package/skills/compose-lyra-interfaces/agents/openai.yaml +4 -0
- package/skills/compose-lyra-interfaces/references/composition-patterns.md +77 -0
- package/skills/lyra-ui/SKILL.md +145 -0
- package/skills/lyra-ui/commands/frontend.md +37 -0
- package/skills/lyra-ui/commands/migrate.md +44 -0
- package/skills/lyra-ui/commands/new-component.md +19 -0
- package/skills/lyra-ui/commands/review.md +247 -0
- package/skills/lyra-ui/commands/update.md +30 -0
- package/skills/lyra-ui/reporting.md +137 -0
- package/custom-elements.json +0 -1
- package/dist/internal/side-effect-only.d.ts +0 -1
- package/dist/translations/am/agent-tools.js +0 -1
- package/dist/translations/am/charts.js +0 -1
- package/dist/translations/am/conversation.js +0 -1
- package/dist/translations/am/data.js +0 -1
- package/dist/translations/am/forms.js +0 -1
- package/dist/translations/am/layout.js +0 -1
- package/dist/translations/am/media.js +0 -1
- package/dist/translations/am/overlays.js +0 -1
- package/dist/translations/am/retrieval.js +0 -1
- package/dist/translations/am/shared.js +0 -1
- package/dist/translations/am/utility.js +0 -1
- package/dist/translations/am/viewers.js +0 -5
- package/dist/translations/am.js +0 -1
- package/dist/translations/ar/agent-tools.js +0 -1
- package/dist/translations/ar/charts.js +0 -1
- package/dist/translations/ar/conversation.js +0 -1
- package/dist/translations/ar/data.js +0 -1
- package/dist/translations/ar/forms.js +0 -1
- package/dist/translations/ar/layout.js +0 -1
- package/dist/translations/ar/media.js +0 -1
- package/dist/translations/ar/overlays.js +0 -1
- package/dist/translations/ar/retrieval.js +0 -1
- package/dist/translations/ar/shared.js +0 -1
- package/dist/translations/ar/utility.js +0 -1
- package/dist/translations/ar/viewers.js +0 -5
- package/dist/translations/ar.js +0 -1
- package/dist/translations/bho/agent-tools.js +0 -1
- package/dist/translations/bho/charts.js +0 -1
- package/dist/translations/bho/conversation.js +0 -1
- package/dist/translations/bho/data.js +0 -1
- package/dist/translations/bho/forms.js +0 -1
- package/dist/translations/bho/layout.js +0 -1
- package/dist/translations/bho/media.js +0 -1
- package/dist/translations/bho/overlays.js +0 -1
- package/dist/translations/bho/retrieval.js +0 -1
- package/dist/translations/bho/shared.js +0 -1
- package/dist/translations/bho/utility.js +0 -1
- package/dist/translations/bho/viewers.js +0 -5
- package/dist/translations/bho.js +0 -1
- package/dist/translations/bn/agent-tools.js +0 -1
- package/dist/translations/bn/charts.js +0 -1
- package/dist/translations/bn/conversation.js +0 -1
- package/dist/translations/bn/data.js +0 -1
- package/dist/translations/bn/forms.js +0 -1
- package/dist/translations/bn/layout.js +0 -1
- package/dist/translations/bn/media.js +0 -1
- package/dist/translations/bn/overlays.js +0 -1
- package/dist/translations/bn/retrieval.js +0 -1
- package/dist/translations/bn/shared.js +0 -1
- package/dist/translations/bn/utility.js +0 -1
- package/dist/translations/bn/viewers.js +0 -5
- package/dist/translations/bn.js +0 -1
- package/dist/translations/cs/agent-tools.js +0 -1
- package/dist/translations/cs/charts.js +0 -1
- package/dist/translations/cs/conversation.js +0 -1
- package/dist/translations/cs/data.js +0 -1
- package/dist/translations/cs/forms.js +0 -1
- package/dist/translations/cs/layout.js +0 -1
- package/dist/translations/cs/media.js +0 -1
- package/dist/translations/cs/overlays.js +0 -1
- package/dist/translations/cs/retrieval.js +0 -1
- package/dist/translations/cs/shared.js +0 -1
- package/dist/translations/cs/utility.js +0 -1
- package/dist/translations/cs/viewers.js +0 -5
- package/dist/translations/cs.js +0 -1
- package/dist/translations/da/agent-tools.js +0 -1
- package/dist/translations/da/charts.js +0 -1
- package/dist/translations/da/conversation.js +0 -1
- package/dist/translations/da/data.js +0 -1
- package/dist/translations/da/forms.js +0 -1
- package/dist/translations/da/layout.js +0 -1
- package/dist/translations/da/media.js +0 -1
- package/dist/translations/da/overlays.js +0 -1
- package/dist/translations/da/retrieval.js +0 -1
- package/dist/translations/da/shared.js +0 -1
- package/dist/translations/da/utility.js +0 -1
- package/dist/translations/da/viewers.js +0 -5
- package/dist/translations/da.js +0 -1
- package/dist/translations/de/agent-tools.js +0 -1
- package/dist/translations/de/charts.js +0 -1
- package/dist/translations/de/conversation.js +0 -1
- package/dist/translations/de/data.js +0 -1
- package/dist/translations/de/forms.js +0 -1
- package/dist/translations/de/layout.js +0 -1
- package/dist/translations/de/media.js +0 -1
- package/dist/translations/de/overlays.js +0 -1
- package/dist/translations/de/retrieval.js +0 -1
- package/dist/translations/de/shared.js +0 -1
- package/dist/translations/de/utility.js +0 -1
- package/dist/translations/de/viewers.js +0 -5
- package/dist/translations/de-CH/agent-tools.js +0 -1
- package/dist/translations/de-CH/charts.js +0 -1
- package/dist/translations/de-CH/conversation.js +0 -1
- package/dist/translations/de-CH/data.js +0 -1
- package/dist/translations/de-CH/forms.js +0 -1
- package/dist/translations/de-CH/layout.js +0 -1
- package/dist/translations/de-CH/media.js +0 -1
- package/dist/translations/de-CH/overlays.js +0 -1
- package/dist/translations/de-CH/retrieval.js +0 -1
- package/dist/translations/de-CH/shared.js +0 -1
- package/dist/translations/de-CH/utility.js +0 -1
- package/dist/translations/de-CH/viewers.js +0 -1
- package/dist/translations/de-CH.js +0 -1
- package/dist/translations/de.js +0 -1
- package/dist/translations/el/agent-tools.js +0 -1
- package/dist/translations/el/charts.js +0 -1
- package/dist/translations/el/conversation.js +0 -1
- package/dist/translations/el/data.js +0 -1
- package/dist/translations/el/forms.js +0 -1
- package/dist/translations/el/layout.js +0 -1
- package/dist/translations/el/media.js +0 -1
- package/dist/translations/el/overlays.js +0 -1
- package/dist/translations/el/retrieval.js +0 -1
- package/dist/translations/el/shared.js +0 -1
- package/dist/translations/el/utility.js +0 -1
- package/dist/translations/el/viewers.js +0 -5
- package/dist/translations/el.js +0 -1
- package/dist/translations/es/agent-tools.js +0 -1
- package/dist/translations/es/charts.js +0 -1
- package/dist/translations/es/conversation.js +0 -1
- package/dist/translations/es/data.js +0 -1
- package/dist/translations/es/forms.js +0 -1
- package/dist/translations/es/layout.js +0 -1
- package/dist/translations/es/media.js +0 -1
- package/dist/translations/es/overlays.js +0 -1
- package/dist/translations/es/retrieval.js +0 -1
- package/dist/translations/es/shared.js +0 -1
- package/dist/translations/es/utility.js +0 -1
- package/dist/translations/es/viewers.js +0 -5
- package/dist/translations/es.js +0 -1
- package/dist/translations/fa/agent-tools.js +0 -1
- package/dist/translations/fa/charts.js +0 -1
- package/dist/translations/fa/conversation.js +0 -1
- package/dist/translations/fa/data.js +0 -1
- package/dist/translations/fa/forms.js +0 -1
- package/dist/translations/fa/layout.js +0 -1
- package/dist/translations/fa/media.js +0 -1
- package/dist/translations/fa/overlays.js +0 -1
- package/dist/translations/fa/retrieval.js +0 -1
- package/dist/translations/fa/shared.js +0 -1
- package/dist/translations/fa/utility.js +0 -1
- package/dist/translations/fa/viewers.js +0 -5
- package/dist/translations/fa-AF/agent-tools.js +0 -1
- package/dist/translations/fa-AF/charts.js +0 -1
- package/dist/translations/fa-AF/conversation.js +0 -1
- package/dist/translations/fa-AF/data.js +0 -1
- package/dist/translations/fa-AF/forms.js +0 -1
- package/dist/translations/fa-AF/layout.js +0 -1
- package/dist/translations/fa-AF/media.js +0 -1
- package/dist/translations/fa-AF/overlays.js +0 -1
- package/dist/translations/fa-AF/retrieval.js +0 -1
- package/dist/translations/fa-AF/shared.js +0 -1
- package/dist/translations/fa-AF/utility.js +0 -1
- package/dist/translations/fa-AF/viewers.js +0 -5
- package/dist/translations/fa-AF.js +0 -1
- package/dist/translations/fa.js +0 -1
- package/dist/translations/fi/agent-tools.js +0 -1
- package/dist/translations/fi/charts.js +0 -1
- package/dist/translations/fi/conversation.js +0 -1
- package/dist/translations/fi/data.js +0 -1
- package/dist/translations/fi/forms.js +0 -1
- package/dist/translations/fi/layout.js +0 -1
- package/dist/translations/fi/media.js +0 -1
- package/dist/translations/fi/overlays.js +0 -1
- package/dist/translations/fi/retrieval.js +0 -1
- package/dist/translations/fi/shared.js +0 -1
- package/dist/translations/fi/utility.js +0 -1
- package/dist/translations/fi/viewers.js +0 -5
- package/dist/translations/fi.js +0 -1
- package/dist/translations/fr/agent-tools.js +0 -1
- package/dist/translations/fr/charts.js +0 -1
- package/dist/translations/fr/conversation.js +0 -1
- package/dist/translations/fr/data.js +0 -1
- package/dist/translations/fr/forms.js +0 -1
- package/dist/translations/fr/layout.js +0 -1
- package/dist/translations/fr/media.js +0 -1
- package/dist/translations/fr/overlays.js +0 -1
- package/dist/translations/fr/retrieval.js +0 -1
- package/dist/translations/fr/shared.js +0 -1
- package/dist/translations/fr/utility.js +0 -1
- package/dist/translations/fr/viewers.js +0 -5
- package/dist/translations/fr.js +0 -1
- package/dist/translations/gu/agent-tools.js +0 -1
- package/dist/translations/gu/charts.js +0 -1
- package/dist/translations/gu/conversation.js +0 -1
- package/dist/translations/gu/data.js +0 -1
- package/dist/translations/gu/forms.js +0 -1
- package/dist/translations/gu/layout.js +0 -1
- package/dist/translations/gu/media.js +0 -1
- package/dist/translations/gu/overlays.js +0 -1
- package/dist/translations/gu/retrieval.js +0 -1
- package/dist/translations/gu/shared.js +0 -1
- package/dist/translations/gu/utility.js +0 -1
- package/dist/translations/gu/viewers.js +0 -5
- package/dist/translations/gu.js +0 -1
- package/dist/translations/ha/agent-tools.js +0 -1
- package/dist/translations/ha/charts.js +0 -1
- package/dist/translations/ha/conversation.js +0 -1
- package/dist/translations/ha/data.js +0 -1
- package/dist/translations/ha/forms.js +0 -1
- package/dist/translations/ha/layout.js +0 -1
- package/dist/translations/ha/media.js +0 -1
- package/dist/translations/ha/overlays.js +0 -1
- package/dist/translations/ha/retrieval.js +0 -1
- package/dist/translations/ha/shared.js +0 -1
- package/dist/translations/ha/utility.js +0 -1
- package/dist/translations/ha/viewers.js +0 -5
- package/dist/translations/ha.js +0 -1
- package/dist/translations/he/agent-tools.js +0 -1
- package/dist/translations/he/charts.js +0 -1
- package/dist/translations/he/conversation.js +0 -1
- package/dist/translations/he/data.js +0 -1
- package/dist/translations/he/forms.js +0 -1
- package/dist/translations/he/layout.js +0 -1
- package/dist/translations/he/media.js +0 -1
- package/dist/translations/he/overlays.js +0 -1
- package/dist/translations/he/retrieval.js +0 -1
- package/dist/translations/he/shared.js +0 -1
- package/dist/translations/he/utility.js +0 -1
- package/dist/translations/he/viewers.js +0 -5
- package/dist/translations/he.js +0 -1
- package/dist/translations/hi/agent-tools.js +0 -1
- package/dist/translations/hi/charts.js +0 -1
- package/dist/translations/hi/conversation.js +0 -1
- package/dist/translations/hi/data.js +0 -1
- package/dist/translations/hi/forms.js +0 -1
- package/dist/translations/hi/layout.js +0 -1
- package/dist/translations/hi/media.js +0 -1
- package/dist/translations/hi/overlays.js +0 -1
- package/dist/translations/hi/retrieval.js +0 -1
- package/dist/translations/hi/shared.js +0 -1
- package/dist/translations/hi/utility.js +0 -1
- package/dist/translations/hi/viewers.js +0 -5
- package/dist/translations/hi.js +0 -1
- package/dist/translations/hr/agent-tools.js +0 -1
- package/dist/translations/hr/charts.js +0 -1
- package/dist/translations/hr/conversation.js +0 -1
- package/dist/translations/hr/data.js +0 -1
- package/dist/translations/hr/forms.js +0 -1
- package/dist/translations/hr/layout.js +0 -1
- package/dist/translations/hr/media.js +0 -1
- package/dist/translations/hr/overlays.js +0 -1
- package/dist/translations/hr/retrieval.js +0 -1
- package/dist/translations/hr/shared.js +0 -1
- package/dist/translations/hr/utility.js +0 -1
- package/dist/translations/hr/viewers.js +0 -5
- package/dist/translations/hr.js +0 -1
- package/dist/translations/hu/agent-tools.js +0 -1
- package/dist/translations/hu/charts.js +0 -1
- package/dist/translations/hu/conversation.js +0 -1
- package/dist/translations/hu/data.js +0 -1
- package/dist/translations/hu/forms.js +0 -1
- package/dist/translations/hu/layout.js +0 -1
- package/dist/translations/hu/media.js +0 -1
- package/dist/translations/hu/overlays.js +0 -1
- package/dist/translations/hu/retrieval.js +0 -1
- package/dist/translations/hu/shared.js +0 -1
- package/dist/translations/hu/utility.js +0 -1
- package/dist/translations/hu/viewers.js +0 -5
- package/dist/translations/hu.js +0 -1
- package/dist/translations/id/agent-tools.js +0 -1
- package/dist/translations/id/charts.js +0 -1
- package/dist/translations/id/conversation.js +0 -1
- package/dist/translations/id/data.js +0 -1
- package/dist/translations/id/forms.js +0 -1
- package/dist/translations/id/layout.js +0 -1
- package/dist/translations/id/media.js +0 -1
- package/dist/translations/id/overlays.js +0 -1
- package/dist/translations/id/retrieval.js +0 -1
- package/dist/translations/id/shared.js +0 -1
- package/dist/translations/id/utility.js +0 -1
- package/dist/translations/id/viewers.js +0 -5
- package/dist/translations/id.js +0 -1
- package/dist/translations/ig/agent-tools.js +0 -1
- package/dist/translations/ig/charts.js +0 -1
- package/dist/translations/ig/conversation.js +0 -1
- package/dist/translations/ig/data.js +0 -1
- package/dist/translations/ig/forms.js +0 -1
- package/dist/translations/ig/layout.js +0 -1
- package/dist/translations/ig/media.js +0 -1
- package/dist/translations/ig/overlays.js +0 -1
- package/dist/translations/ig/retrieval.js +0 -1
- package/dist/translations/ig/shared.js +0 -1
- package/dist/translations/ig/utility.js +0 -1
- package/dist/translations/ig/viewers.js +0 -5
- package/dist/translations/ig.js +0 -1
- package/dist/translations/it/agent-tools.js +0 -1
- package/dist/translations/it/charts.js +0 -1
- package/dist/translations/it/conversation.js +0 -1
- package/dist/translations/it/data.js +0 -1
- package/dist/translations/it/forms.js +0 -1
- package/dist/translations/it/layout.js +0 -1
- package/dist/translations/it/media.js +0 -1
- package/dist/translations/it/overlays.js +0 -1
- package/dist/translations/it/retrieval.js +0 -1
- package/dist/translations/it/shared.js +0 -1
- package/dist/translations/it/utility.js +0 -1
- package/dist/translations/it/viewers.js +0 -5
- package/dist/translations/it.js +0 -1
- package/dist/translations/ja/agent-tools.js +0 -1
- package/dist/translations/ja/charts.js +0 -1
- package/dist/translations/ja/conversation.js +0 -1
- package/dist/translations/ja/data.js +0 -1
- package/dist/translations/ja/forms.js +0 -1
- package/dist/translations/ja/layout.js +0 -1
- package/dist/translations/ja/media.js +0 -1
- package/dist/translations/ja/overlays.js +0 -1
- package/dist/translations/ja/retrieval.js +0 -1
- package/dist/translations/ja/shared.js +0 -1
- package/dist/translations/ja/utility.js +0 -1
- package/dist/translations/ja/viewers.js +0 -4
- package/dist/translations/ja.js +0 -1
- package/dist/translations/jv/agent-tools.js +0 -1
- package/dist/translations/jv/charts.js +0 -1
- package/dist/translations/jv/conversation.js +0 -1
- package/dist/translations/jv/data.js +0 -1
- package/dist/translations/jv/forms.js +0 -1
- package/dist/translations/jv/layout.js +0 -1
- package/dist/translations/jv/media.js +0 -1
- package/dist/translations/jv/overlays.js +0 -1
- package/dist/translations/jv/retrieval.js +0 -1
- package/dist/translations/jv/shared.js +0 -1
- package/dist/translations/jv/utility.js +0 -1
- package/dist/translations/jv/viewers.js +0 -5
- package/dist/translations/jv.js +0 -1
- package/dist/translations/kk/agent-tools.js +0 -1
- package/dist/translations/kk/charts.js +0 -1
- package/dist/translations/kk/conversation.js +0 -1
- package/dist/translations/kk/data.js +0 -1
- package/dist/translations/kk/forms.js +0 -1
- package/dist/translations/kk/layout.js +0 -1
- package/dist/translations/kk/media.js +0 -1
- package/dist/translations/kk/overlays.js +0 -1
- package/dist/translations/kk/retrieval.js +0 -1
- package/dist/translations/kk/shared.js +0 -1
- package/dist/translations/kk/utility.js +0 -1
- package/dist/translations/kk/viewers.js +0 -5
- package/dist/translations/kk.js +0 -1
- package/dist/translations/kn/agent-tools.js +0 -1
- package/dist/translations/kn/charts.js +0 -1
- package/dist/translations/kn/conversation.js +0 -1
- package/dist/translations/kn/data.js +0 -1
- package/dist/translations/kn/forms.js +0 -1
- package/dist/translations/kn/layout.js +0 -1
- package/dist/translations/kn/media.js +0 -1
- package/dist/translations/kn/overlays.js +0 -1
- package/dist/translations/kn/retrieval.js +0 -1
- package/dist/translations/kn/shared.js +0 -1
- package/dist/translations/kn/utility.js +0 -1
- package/dist/translations/kn/viewers.js +0 -5
- package/dist/translations/kn.js +0 -1
- package/dist/translations/ko/agent-tools.js +0 -1
- package/dist/translations/ko/charts.js +0 -1
- package/dist/translations/ko/conversation.js +0 -1
- package/dist/translations/ko/data.js +0 -1
- package/dist/translations/ko/forms.js +0 -1
- package/dist/translations/ko/layout.js +0 -1
- package/dist/translations/ko/media.js +0 -1
- package/dist/translations/ko/overlays.js +0 -1
- package/dist/translations/ko/retrieval.js +0 -1
- package/dist/translations/ko/shared.js +0 -1
- package/dist/translations/ko/utility.js +0 -1
- package/dist/translations/ko/viewers.js +0 -5
- package/dist/translations/ko.js +0 -1
- package/dist/translations/ln/agent-tools.js +0 -1
- package/dist/translations/ln/charts.js +0 -1
- package/dist/translations/ln/conversation.js +0 -1
- package/dist/translations/ln/data.js +0 -1
- package/dist/translations/ln/forms.js +0 -1
- package/dist/translations/ln/layout.js +0 -1
- package/dist/translations/ln/media.js +0 -1
- package/dist/translations/ln/overlays.js +0 -1
- package/dist/translations/ln/retrieval.js +0 -1
- package/dist/translations/ln/shared.js +0 -1
- package/dist/translations/ln/utility.js +0 -1
- package/dist/translations/ln/viewers.js +0 -5
- package/dist/translations/ln.js +0 -1
- package/dist/translations/ml/agent-tools.js +0 -1
- package/dist/translations/ml/charts.js +0 -1
- package/dist/translations/ml/conversation.js +0 -1
- package/dist/translations/ml/data.js +0 -1
- package/dist/translations/ml/forms.js +0 -1
- package/dist/translations/ml/layout.js +0 -1
- package/dist/translations/ml/media.js +0 -1
- package/dist/translations/ml/overlays.js +0 -1
- package/dist/translations/ml/retrieval.js +0 -1
- package/dist/translations/ml/shared.js +0 -1
- package/dist/translations/ml/utility.js +0 -1
- package/dist/translations/ml/viewers.js +0 -5
- package/dist/translations/ml.js +0 -1
- package/dist/translations/mr/agent-tools.js +0 -1
- package/dist/translations/mr/charts.js +0 -1
- package/dist/translations/mr/conversation.js +0 -1
- package/dist/translations/mr/data.js +0 -1
- package/dist/translations/mr/forms.js +0 -1
- package/dist/translations/mr/layout.js +0 -1
- package/dist/translations/mr/media.js +0 -1
- package/dist/translations/mr/overlays.js +0 -1
- package/dist/translations/mr/retrieval.js +0 -1
- package/dist/translations/mr/shared.js +0 -1
- package/dist/translations/mr/utility.js +0 -1
- package/dist/translations/mr/viewers.js +0 -5
- package/dist/translations/mr.js +0 -1
- package/dist/translations/ms/agent-tools.js +0 -1
- package/dist/translations/ms/charts.js +0 -1
- package/dist/translations/ms/conversation.js +0 -1
- package/dist/translations/ms/data.js +0 -1
- package/dist/translations/ms/forms.js +0 -1
- package/dist/translations/ms/layout.js +0 -1
- package/dist/translations/ms/media.js +0 -1
- package/dist/translations/ms/overlays.js +0 -1
- package/dist/translations/ms/retrieval.js +0 -1
- package/dist/translations/ms/shared.js +0 -1
- package/dist/translations/ms/utility.js +0 -1
- package/dist/translations/ms/viewers.js +0 -5
- package/dist/translations/ms.js +0 -1
- package/dist/translations/my/agent-tools.js +0 -1
- package/dist/translations/my/charts.js +0 -1
- package/dist/translations/my/conversation.js +0 -1
- package/dist/translations/my/data.js +0 -1
- package/dist/translations/my/forms.js +0 -1
- package/dist/translations/my/layout.js +0 -1
- package/dist/translations/my/media.js +0 -1
- package/dist/translations/my/overlays.js +0 -1
- package/dist/translations/my/retrieval.js +0 -1
- package/dist/translations/my/shared.js +0 -1
- package/dist/translations/my/utility.js +0 -1
- package/dist/translations/my/viewers.js +0 -5
- package/dist/translations/my.js +0 -1
- package/dist/translations/nb/agent-tools.js +0 -1
- package/dist/translations/nb/charts.js +0 -1
- package/dist/translations/nb/conversation.js +0 -1
- package/dist/translations/nb/data.js +0 -1
- package/dist/translations/nb/forms.js +0 -1
- package/dist/translations/nb/layout.js +0 -1
- package/dist/translations/nb/media.js +0 -1
- package/dist/translations/nb/overlays.js +0 -1
- package/dist/translations/nb/retrieval.js +0 -1
- package/dist/translations/nb/shared.js +0 -1
- package/dist/translations/nb/utility.js +0 -1
- package/dist/translations/nb/viewers.js +0 -5
- package/dist/translations/nb.js +0 -1
- package/dist/translations/ne/agent-tools.js +0 -1
- package/dist/translations/ne/charts.js +0 -1
- package/dist/translations/ne/conversation.js +0 -1
- package/dist/translations/ne/data.js +0 -1
- package/dist/translations/ne/forms.js +0 -1
- package/dist/translations/ne/layout.js +0 -1
- package/dist/translations/ne/media.js +0 -1
- package/dist/translations/ne/overlays.js +0 -1
- package/dist/translations/ne/retrieval.js +0 -1
- package/dist/translations/ne/shared.js +0 -1
- package/dist/translations/ne/utility.js +0 -1
- package/dist/translations/ne/viewers.js +0 -5
- package/dist/translations/ne.js +0 -1
- package/dist/translations/nl/agent-tools.js +0 -1
- package/dist/translations/nl/charts.js +0 -1
- package/dist/translations/nl/conversation.js +0 -1
- package/dist/translations/nl/data.js +0 -1
- package/dist/translations/nl/forms.js +0 -1
- package/dist/translations/nl/layout.js +0 -1
- package/dist/translations/nl/media.js +0 -1
- package/dist/translations/nl/overlays.js +0 -1
- package/dist/translations/nl/retrieval.js +0 -1
- package/dist/translations/nl/shared.js +0 -1
- package/dist/translations/nl/utility.js +0 -1
- package/dist/translations/nl/viewers.js +0 -5
- package/dist/translations/nl.js +0 -1
- package/dist/translations/nn/agent-tools.js +0 -1
- package/dist/translations/nn/charts.js +0 -1
- package/dist/translations/nn/conversation.js +0 -1
- package/dist/translations/nn/data.js +0 -1
- package/dist/translations/nn/forms.js +0 -1
- package/dist/translations/nn/layout.js +0 -1
- package/dist/translations/nn/media.js +0 -1
- package/dist/translations/nn/overlays.js +0 -1
- package/dist/translations/nn/retrieval.js +0 -1
- package/dist/translations/nn/shared.js +0 -1
- package/dist/translations/nn/utility.js +0 -1
- package/dist/translations/nn/viewers.js +0 -5
- package/dist/translations/nn.js +0 -1
- package/dist/translations/om/agent-tools.js +0 -1
- package/dist/translations/om/charts.js +0 -1
- package/dist/translations/om/conversation.js +0 -1
- package/dist/translations/om/data.js +0 -1
- package/dist/translations/om/forms.js +0 -1
- package/dist/translations/om/layout.js +0 -1
- package/dist/translations/om/media.js +0 -1
- package/dist/translations/om/overlays.js +0 -1
- package/dist/translations/om/retrieval.js +0 -1
- package/dist/translations/om/shared.js +0 -1
- package/dist/translations/om/utility.js +0 -1
- package/dist/translations/om/viewers.js +0 -5
- package/dist/translations/om.js +0 -1
- package/dist/translations/or/agent-tools.js +0 -1
- package/dist/translations/or/charts.js +0 -1
- package/dist/translations/or/conversation.js +0 -1
- package/dist/translations/or/data.js +0 -1
- package/dist/translations/or/forms.js +0 -1
- package/dist/translations/or/layout.js +0 -1
- package/dist/translations/or/media.js +0 -1
- package/dist/translations/or/overlays.js +0 -1
- package/dist/translations/or/retrieval.js +0 -1
- package/dist/translations/or/shared.js +0 -1
- package/dist/translations/or/utility.js +0 -1
- package/dist/translations/or/viewers.js +0 -5
- package/dist/translations/or.js +0 -1
- package/dist/translations/pa/agent-tools.js +0 -1
- package/dist/translations/pa/charts.js +0 -1
- package/dist/translations/pa/conversation.js +0 -1
- package/dist/translations/pa/data.js +0 -1
- package/dist/translations/pa/forms.js +0 -1
- package/dist/translations/pa/layout.js +0 -1
- package/dist/translations/pa/media.js +0 -1
- package/dist/translations/pa/overlays.js +0 -1
- package/dist/translations/pa/retrieval.js +0 -1
- package/dist/translations/pa/shared.js +0 -1
- package/dist/translations/pa/utility.js +0 -1
- package/dist/translations/pa/viewers.js +0 -5
- package/dist/translations/pa.js +0 -1
- package/dist/translations/pcm/agent-tools.js +0 -1
- package/dist/translations/pcm/charts.js +0 -1
- package/dist/translations/pcm/conversation.js +0 -1
- package/dist/translations/pcm/data.js +0 -1
- package/dist/translations/pcm/forms.js +0 -1
- package/dist/translations/pcm/layout.js +0 -1
- package/dist/translations/pcm/media.js +0 -1
- package/dist/translations/pcm/overlays.js +0 -1
- package/dist/translations/pcm/retrieval.js +0 -1
- package/dist/translations/pcm/shared.js +0 -1
- package/dist/translations/pcm/utility.js +0 -1
- package/dist/translations/pcm/viewers.js +0 -5
- package/dist/translations/pcm.js +0 -1
- package/dist/translations/pl/agent-tools.js +0 -1
- package/dist/translations/pl/charts.js +0 -1
- package/dist/translations/pl/conversation.js +0 -1
- package/dist/translations/pl/data.js +0 -1
- package/dist/translations/pl/forms.js +0 -1
- package/dist/translations/pl/layout.js +0 -1
- package/dist/translations/pl/media.js +0 -1
- package/dist/translations/pl/overlays.js +0 -1
- package/dist/translations/pl/retrieval.js +0 -1
- package/dist/translations/pl/shared.js +0 -1
- package/dist/translations/pl/utility.js +0 -1
- package/dist/translations/pl/viewers.js +0 -5
- package/dist/translations/pl.js +0 -1
- package/dist/translations/pnb/agent-tools.js +0 -1
- package/dist/translations/pnb/charts.js +0 -1
- package/dist/translations/pnb/conversation.js +0 -1
- package/dist/translations/pnb/data.js +0 -1
- package/dist/translations/pnb/forms.js +0 -1
- package/dist/translations/pnb/layout.js +0 -1
- package/dist/translations/pnb/media.js +0 -1
- package/dist/translations/pnb/overlays.js +0 -1
- package/dist/translations/pnb/retrieval.js +0 -1
- package/dist/translations/pnb/shared.js +0 -1
- package/dist/translations/pnb/utility.js +0 -1
- package/dist/translations/pnb/viewers.js +0 -5
- package/dist/translations/pnb.js +0 -1
- package/dist/translations/ps/agent-tools.js +0 -1
- package/dist/translations/ps/charts.js +0 -1
- package/dist/translations/ps/conversation.js +0 -1
- package/dist/translations/ps/data.js +0 -1
- package/dist/translations/ps/forms.js +0 -1
- package/dist/translations/ps/layout.js +0 -1
- package/dist/translations/ps/media.js +0 -1
- package/dist/translations/ps/overlays.js +0 -1
- package/dist/translations/ps/retrieval.js +0 -1
- package/dist/translations/ps/shared.js +0 -1
- package/dist/translations/ps/utility.js +0 -1
- package/dist/translations/ps/viewers.js +0 -5
- package/dist/translations/ps.js +0 -1
- package/dist/translations/pt-BR/agent-tools.js +0 -1
- package/dist/translations/pt-BR/charts.js +0 -1
- package/dist/translations/pt-BR/conversation.js +0 -1
- package/dist/translations/pt-BR/data.js +0 -1
- package/dist/translations/pt-BR/forms.js +0 -1
- package/dist/translations/pt-BR/layout.js +0 -1
- package/dist/translations/pt-BR/media.js +0 -1
- package/dist/translations/pt-BR/overlays.js +0 -1
- package/dist/translations/pt-BR/retrieval.js +0 -1
- package/dist/translations/pt-BR/shared.js +0 -1
- package/dist/translations/pt-BR/utility.js +0 -1
- package/dist/translations/pt-BR/viewers.js +0 -5
- package/dist/translations/pt-BR.js +0 -1
- package/dist/translations/pt-PT/agent-tools.js +0 -1
- package/dist/translations/pt-PT/charts.js +0 -1
- package/dist/translations/pt-PT/conversation.js +0 -1
- package/dist/translations/pt-PT/data.js +0 -1
- package/dist/translations/pt-PT/forms.js +0 -1
- package/dist/translations/pt-PT/layout.js +0 -1
- package/dist/translations/pt-PT/media.js +0 -1
- package/dist/translations/pt-PT/overlays.js +0 -1
- package/dist/translations/pt-PT/retrieval.js +0 -1
- package/dist/translations/pt-PT/shared.js +0 -1
- package/dist/translations/pt-PT/utility.js +0 -1
- package/dist/translations/pt-PT/viewers.js +0 -5
- package/dist/translations/pt-PT.js +0 -1
- package/dist/translations/ro/agent-tools.js +0 -1
- package/dist/translations/ro/charts.js +0 -1
- package/dist/translations/ro/conversation.js +0 -1
- package/dist/translations/ro/data.js +0 -1
- package/dist/translations/ro/forms.js +0 -1
- package/dist/translations/ro/layout.js +0 -1
- package/dist/translations/ro/media.js +0 -1
- package/dist/translations/ro/overlays.js +0 -1
- package/dist/translations/ro/retrieval.js +0 -1
- package/dist/translations/ro/shared.js +0 -1
- package/dist/translations/ro/utility.js +0 -1
- package/dist/translations/ro/viewers.js +0 -5
- package/dist/translations/ro.js +0 -1
- package/dist/translations/ru/agent-tools.js +0 -1
- package/dist/translations/ru/charts.js +0 -1
- package/dist/translations/ru/conversation.js +0 -1
- package/dist/translations/ru/data.js +0 -1
- package/dist/translations/ru/forms.js +0 -1
- package/dist/translations/ru/layout.js +0 -1
- package/dist/translations/ru/media.js +0 -1
- package/dist/translations/ru/overlays.js +0 -1
- package/dist/translations/ru/retrieval.js +0 -1
- package/dist/translations/ru/shared.js +0 -1
- package/dist/translations/ru/utility.js +0 -1
- package/dist/translations/ru/viewers.js +0 -5
- package/dist/translations/ru.js +0 -1
- package/dist/translations/sd/agent-tools.js +0 -1
- package/dist/translations/sd/charts.js +0 -1
- package/dist/translations/sd/conversation.js +0 -1
- package/dist/translations/sd/data.js +0 -1
- package/dist/translations/sd/forms.js +0 -1
- package/dist/translations/sd/layout.js +0 -1
- package/dist/translations/sd/media.js +0 -1
- package/dist/translations/sd/overlays.js +0 -1
- package/dist/translations/sd/retrieval.js +0 -1
- package/dist/translations/sd/shared.js +0 -1
- package/dist/translations/sd/utility.js +0 -1
- package/dist/translations/sd/viewers.js +0 -5
- package/dist/translations/sd.js +0 -1
- package/dist/translations/sl/agent-tools.js +0 -1
- package/dist/translations/sl/charts.js +0 -1
- package/dist/translations/sl/conversation.js +0 -1
- package/dist/translations/sl/data.js +0 -1
- package/dist/translations/sl/forms.js +0 -1
- package/dist/translations/sl/layout.js +0 -1
- package/dist/translations/sl/media.js +0 -1
- package/dist/translations/sl/overlays.js +0 -1
- package/dist/translations/sl/retrieval.js +0 -1
- package/dist/translations/sl/shared.js +0 -1
- package/dist/translations/sl/utility.js +0 -1
- package/dist/translations/sl/viewers.js +0 -5
- package/dist/translations/sl.js +0 -1
- package/dist/translations/su/agent-tools.js +0 -1
- package/dist/translations/su/charts.js +0 -1
- package/dist/translations/su/conversation.js +0 -1
- package/dist/translations/su/data.js +0 -1
- package/dist/translations/su/forms.js +0 -1
- package/dist/translations/su/layout.js +0 -1
- package/dist/translations/su/media.js +0 -1
- package/dist/translations/su/overlays.js +0 -1
- package/dist/translations/su/retrieval.js +0 -1
- package/dist/translations/su/shared.js +0 -1
- package/dist/translations/su/utility.js +0 -1
- package/dist/translations/su/viewers.js +0 -5
- package/dist/translations/su.js +0 -1
- package/dist/translations/sv/agent-tools.js +0 -1
- package/dist/translations/sv/charts.js +0 -1
- package/dist/translations/sv/conversation.js +0 -1
- package/dist/translations/sv/data.js +0 -1
- package/dist/translations/sv/forms.js +0 -1
- package/dist/translations/sv/layout.js +0 -1
- package/dist/translations/sv/media.js +0 -1
- package/dist/translations/sv/overlays.js +0 -1
- package/dist/translations/sv/retrieval.js +0 -1
- package/dist/translations/sv/shared.js +0 -1
- package/dist/translations/sv/utility.js +0 -1
- package/dist/translations/sv/viewers.js +0 -5
- package/dist/translations/sv.js +0 -1
- package/dist/translations/sw/agent-tools.js +0 -1
- package/dist/translations/sw/charts.js +0 -1
- package/dist/translations/sw/conversation.js +0 -1
- package/dist/translations/sw/data.js +0 -1
- package/dist/translations/sw/forms.js +0 -1
- package/dist/translations/sw/layout.js +0 -1
- package/dist/translations/sw/media.js +0 -1
- package/dist/translations/sw/overlays.js +0 -1
- package/dist/translations/sw/retrieval.js +0 -1
- package/dist/translations/sw/shared.js +0 -1
- package/dist/translations/sw/utility.js +0 -1
- package/dist/translations/sw/viewers.js +0 -5
- package/dist/translations/sw.js +0 -1
- package/dist/translations/ta/agent-tools.js +0 -1
- package/dist/translations/ta/charts.js +0 -1
- package/dist/translations/ta/conversation.js +0 -1
- package/dist/translations/ta/data.js +0 -1
- package/dist/translations/ta/forms.js +0 -1
- package/dist/translations/ta/layout.js +0 -1
- package/dist/translations/ta/media.js +0 -1
- package/dist/translations/ta/overlays.js +0 -1
- package/dist/translations/ta/retrieval.js +0 -1
- package/dist/translations/ta/shared.js +0 -1
- package/dist/translations/ta/utility.js +0 -1
- package/dist/translations/ta/viewers.js +0 -5
- package/dist/translations/ta.js +0 -1
- package/dist/translations/te/agent-tools.js +0 -1
- package/dist/translations/te/charts.js +0 -1
- package/dist/translations/te/conversation.js +0 -1
- package/dist/translations/te/data.js +0 -1
- package/dist/translations/te/forms.js +0 -1
- package/dist/translations/te/layout.js +0 -1
- package/dist/translations/te/media.js +0 -1
- package/dist/translations/te/overlays.js +0 -1
- package/dist/translations/te/retrieval.js +0 -1
- package/dist/translations/te/shared.js +0 -1
- package/dist/translations/te/utility.js +0 -1
- package/dist/translations/te/viewers.js +0 -5
- package/dist/translations/te.js +0 -1
- package/dist/translations/th/agent-tools.js +0 -1
- package/dist/translations/th/charts.js +0 -1
- package/dist/translations/th/conversation.js +0 -1
- package/dist/translations/th/data.js +0 -1
- package/dist/translations/th/forms.js +0 -1
- package/dist/translations/th/layout.js +0 -1
- package/dist/translations/th/media.js +0 -1
- package/dist/translations/th/overlays.js +0 -1
- package/dist/translations/th/retrieval.js +0 -1
- package/dist/translations/th/shared.js +0 -1
- package/dist/translations/th/utility.js +0 -1
- package/dist/translations/th/viewers.js +0 -5
- package/dist/translations/th.js +0 -1
- package/dist/translations/tl/agent-tools.js +0 -1
- package/dist/translations/tl/charts.js +0 -1
- package/dist/translations/tl/conversation.js +0 -1
- package/dist/translations/tl/data.js +0 -1
- package/dist/translations/tl/forms.js +0 -1
- package/dist/translations/tl/layout.js +0 -1
- package/dist/translations/tl/media.js +0 -1
- package/dist/translations/tl/overlays.js +0 -1
- package/dist/translations/tl/retrieval.js +0 -1
- package/dist/translations/tl/shared.js +0 -1
- package/dist/translations/tl/utility.js +0 -1
- package/dist/translations/tl/viewers.js +0 -5
- package/dist/translations/tl.js +0 -1
- package/dist/translations/tr/agent-tools.js +0 -1
- package/dist/translations/tr/charts.js +0 -1
- package/dist/translations/tr/conversation.js +0 -1
- package/dist/translations/tr/data.js +0 -1
- package/dist/translations/tr/forms.js +0 -1
- package/dist/translations/tr/layout.js +0 -1
- package/dist/translations/tr/media.js +0 -1
- package/dist/translations/tr/overlays.js +0 -1
- package/dist/translations/tr/retrieval.js +0 -1
- package/dist/translations/tr/shared.js +0 -1
- package/dist/translations/tr/utility.js +0 -1
- package/dist/translations/tr/viewers.js +0 -5
- package/dist/translations/tr.js +0 -1
- package/dist/translations/uk/agent-tools.js +0 -1
- package/dist/translations/uk/charts.js +0 -1
- package/dist/translations/uk/conversation.js +0 -1
- package/dist/translations/uk/data.js +0 -1
- package/dist/translations/uk/forms.js +0 -1
- package/dist/translations/uk/layout.js +0 -1
- package/dist/translations/uk/media.js +0 -1
- package/dist/translations/uk/overlays.js +0 -1
- package/dist/translations/uk/retrieval.js +0 -1
- package/dist/translations/uk/shared.js +0 -1
- package/dist/translations/uk/utility.js +0 -1
- package/dist/translations/uk/viewers.js +0 -5
- package/dist/translations/uk.js +0 -1
- package/dist/translations/ur/agent-tools.js +0 -1
- package/dist/translations/ur/charts.js +0 -1
- package/dist/translations/ur/conversation.js +0 -1
- package/dist/translations/ur/data.js +0 -1
- package/dist/translations/ur/forms.js +0 -1
- package/dist/translations/ur/layout.js +0 -1
- package/dist/translations/ur/media.js +0 -1
- package/dist/translations/ur/overlays.js +0 -1
- package/dist/translations/ur/retrieval.js +0 -1
- package/dist/translations/ur/shared.js +0 -1
- package/dist/translations/ur/utility.js +0 -1
- package/dist/translations/ur/viewers.js +0 -5
- package/dist/translations/ur.js +0 -1
- package/dist/translations/uz/agent-tools.js +0 -1
- package/dist/translations/uz/charts.js +0 -1
- package/dist/translations/uz/conversation.js +0 -1
- package/dist/translations/uz/data.js +0 -1
- package/dist/translations/uz/forms.js +0 -1
- package/dist/translations/uz/layout.js +0 -1
- package/dist/translations/uz/media.js +0 -1
- package/dist/translations/uz/overlays.js +0 -1
- package/dist/translations/uz/retrieval.js +0 -1
- package/dist/translations/uz/shared.js +0 -1
- package/dist/translations/uz/utility.js +0 -1
- package/dist/translations/uz/viewers.js +0 -5
- package/dist/translations/uz.js +0 -1
- package/dist/translations/vi/agent-tools.js +0 -1
- package/dist/translations/vi/charts.js +0 -1
- package/dist/translations/vi/conversation.js +0 -1
- package/dist/translations/vi/data.js +0 -1
- package/dist/translations/vi/forms.js +0 -1
- package/dist/translations/vi/layout.js +0 -1
- package/dist/translations/vi/media.js +0 -1
- package/dist/translations/vi/overlays.js +0 -1
- package/dist/translations/vi/retrieval.js +0 -1
- package/dist/translations/vi/shared.js +0 -1
- package/dist/translations/vi/utility.js +0 -1
- package/dist/translations/vi/viewers.js +0 -5
- package/dist/translations/vi.js +0 -1
- package/dist/translations/yo/agent-tools.js +0 -1
- package/dist/translations/yo/charts.js +0 -1
- package/dist/translations/yo/conversation.js +0 -1
- package/dist/translations/yo/data.js +0 -1
- package/dist/translations/yo/forms.js +0 -1
- package/dist/translations/yo/layout.js +0 -1
- package/dist/translations/yo/media.js +0 -1
- package/dist/translations/yo/overlays.js +0 -1
- package/dist/translations/yo/retrieval.js +0 -1
- package/dist/translations/yo/shared.js +0 -1
- package/dist/translations/yo/utility.js +0 -1
- package/dist/translations/yo/viewers.js +0 -5
- package/dist/translations/yo.js +0 -1
- package/dist/translations/zh-CN/agent-tools.js +0 -1
- package/dist/translations/zh-CN/charts.js +0 -1
- package/dist/translations/zh-CN/conversation.js +0 -1
- package/dist/translations/zh-CN/data.js +0 -1
- package/dist/translations/zh-CN/forms.js +0 -1
- package/dist/translations/zh-CN/layout.js +0 -1
- package/dist/translations/zh-CN/media.js +0 -1
- package/dist/translations/zh-CN/overlays.js +0 -1
- package/dist/translations/zh-CN/retrieval.js +0 -1
- package/dist/translations/zh-CN/shared.js +0 -1
- package/dist/translations/zh-CN/utility.js +0 -1
- package/dist/translations/zh-CN/viewers.js +0 -5
- package/dist/translations/zh-CN.js +0 -1
- package/dist/translations/zh-TW/agent-tools.js +0 -1
- package/dist/translations/zh-TW/charts.js +0 -1
- package/dist/translations/zh-TW/conversation.js +0 -1
- package/dist/translations/zh-TW/data.js +0 -1
- package/dist/translations/zh-TW/forms.js +0 -1
- package/dist/translations/zh-TW/layout.js +0 -1
- package/dist/translations/zh-TW/media.js +0 -1
- package/dist/translations/zh-TW/overlays.js +0 -1
- package/dist/translations/zh-TW/retrieval.js +0 -1
- package/dist/translations/zh-TW/shared.js +0 -1
- package/dist/translations/zh-TW/utility.js +0 -1
- package/dist/translations/zh-TW/viewers.js +0 -5
- package/dist/translations/zh-TW.js +0 -1
- package/dist/translations/zu/agent-tools.js +0 -1
- package/dist/translations/zu/charts.js +0 -1
- package/dist/translations/zu/conversation.js +0 -1
- package/dist/translations/zu/data.js +0 -1
- package/dist/translations/zu/forms.js +0 -1
- package/dist/translations/zu/layout.js +0 -1
- package/dist/translations/zu/media.js +0 -1
- package/dist/translations/zu/overlays.js +0 -1
- package/dist/translations/zu/retrieval.js +0 -1
- package/dist/translations/zu/shared.js +0 -1
- package/dist/translations/zu/utility.js +0 -1
- package/dist/translations/zu/viewers.js +0 -5
- package/dist/translations/zu.js +0 -1
- package/vscode-css-data.json +0 -1
- package/vscode-html-data.json +0 -1
- package/web-types.json +0 -1
package/README.md
CHANGED
|
@@ -42,152 +42,90 @@ and no runtime dependency on either project.
|
|
|
42
42
|
|
|
43
43
|
## Highlights
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
The [release roadmap](../../docs/roadmap.md#roadmap-index-and-release-status) tracks v24 styling,
|
|
59
|
-
localization, cleanup and qualification work, then the separate website and consumer rollout after
|
|
60
|
-
v24 publication.
|
|
61
|
-
|
|
62
|
-
For new apps, use the [Lyra signature starter](./llms/shared/styles-and-tokens.md#lyra-signature-starter):
|
|
63
|
-
Shadcn, glass, Emerald, theme-aware spotlights, compact gemstones and country-flag language controls.
|
|
64
|
-
The recipe preserves saved choices and explicit branding and covers first paint, persistence and
|
|
65
|
-
accessible controls. The built-in profile is Shadcn/Glass/Emerald/System with comfortable density;
|
|
66
|
-
saved choices override each axis independently. To retain the earlier appearance, select
|
|
67
|
-
`look: 'lyra'`, `surface: 'solid'`, and `accent: null` explicitly. Clearing an accent with `null`
|
|
68
|
-
remains supported; `resetLyraStyle()` restores Emerald.
|
|
69
|
-
|
|
70
|
-
See the [changelog](CHANGELOG.md) for version-by-version changes and historical upgrade notes.
|
|
45
|
+
- **Composable looks.** Lyra, shadcn, Material, data, terminal and high contrast combine with independent
|
|
46
|
+
surface, density, mode and accent choices; the built-in profile is Shadcn/Glass/Emerald/System with
|
|
47
|
+
comfortable density ([styling setup](./llms/shared/styles-and-tokens.md#composing-looks-surfaces-and-density),
|
|
48
|
+
[signature starter](./llms/shared/styles-and-tokens.md#lyra-signature-starter)).
|
|
49
|
+
- **Conversation and agent UI.** Progressive [Markdown](./llms/components/lr-markdown.md) and expandable
|
|
50
|
+
[tool-call blocks](./llms/components/lr-tool-call-block.md).
|
|
51
|
+
- **Languages and typography.** 66 optional catalogs in `@aceshooting/lyra-translations` plus built-in English
|
|
52
|
+
([`locales.json`](./locales.json), [import guide](./llms/shared/localization-and-rtl.md#ready-made-catalogs-aceshootinglyra-translationslocalejs)) and
|
|
53
|
+
[typography utilities](./llms/shared.md#typography).
|
|
54
|
+
|
|
55
|
+
The [roadmap](../../docs/roadmap.md#roadmap-index-and-release-status) tracks upcoming work; the
|
|
56
|
+
[changelog](CHANGELOG.md) and [archive](../../docs/changelog) hold per-version changes and older upgrade notes.
|
|
71
57
|
|
|
72
58
|
## Upgrading to v23
|
|
73
59
|
|
|
74
|
-
|
|
75
|
-
[migration guide](./llms/migration.md) and the `lyra-v21` migration profile to update older usage;
|
|
76
|
-
review semantic changes that the codemod cannot safely rewrite. APIs first deprecated in v22
|
|
77
|
-
remain available throughout v23, and upstream-mirrored names remain supported.
|
|
60
|
+
Compatibility APIs deprecated before v22 were removed; use the [migration guide](./llms/migration.md) and the `lyra-v21` profile ([notes](../../docs/changelog/v23.md)).
|
|
78
61
|
|
|
79
|
-
|
|
80
|
-
Where a layout needs them to fill a definite-height container, set `block-size: 100%` on the
|
|
81
|
-
component itself. Details panels also use natural sizing in ordinary block containers. Auto-growing
|
|
82
|
-
textareas keep content scrollable when their allocated height shrinks.
|
|
62
|
+
## Upgrading to v24
|
|
83
63
|
|
|
84
|
-
|
|
85
|
-
a polite incomplete announcement instead of a failed-step announcement. The run itself keeps its
|
|
86
|
-
cancelled status and retry behavior.
|
|
64
|
+
Theme/preset facade, nested registration routes and `ssr-loader.js` were removed; follow the [v23-to-v24 guide](./llms/shared/v23-to-v24-migration.md) and run the CLI with `--origin=lyra-v22` ([notes](../../docs/changelog/v24.md)).
|
|
87
65
|
|
|
88
|
-
## Upgrading to
|
|
66
|
+
## Upgrading to v27
|
|
67
|
+
|
|
68
|
+
V27 is a major release; each change below has a migration note in the [changelog](CHANGELOG.md). Run `npx lyra-ui-migrate --origin=lyra-v26 --check src` first.
|
|
89
69
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
`
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
`accentBackground`, while the new `surface` selects a treatment. Saved v1 preferences remain
|
|
101
|
-
readable. The [style guide](./llms/shared/styles-and-tokens.md#composing-looks-surfaces-and-density)
|
|
102
|
-
documents the current API.
|
|
103
|
-
|
|
104
|
-
Run the installed, version-matched CLI with `--origin=lyra-v22` and review its report. The
|
|
105
|
-
[v23-to-v24 migration guide](./llms/shared/v23-to-v24-migration.md) gives the project sequence,
|
|
106
|
-
import and SSR replacements, theme semantics, event-detail changes and historical profile rules.
|
|
107
|
-
The generated [`llms/migration.md`](./llms/migration.md) has per-component `wa-*`/`sl-*` mappings.
|
|
70
|
+
- **Package split.** Locale catalogs moved to [`@aceshooting/lyra-translations`](../lyra-translations)
|
|
71
|
+
(`@aceshooting/lyra-ui/translations/<locale>.js` becomes `@aceshooting/lyra-translations/<locale>.js`; the
|
|
72
|
+
pseudo-locales stay here) and editor data to [`@aceshooting/lyra-ide`](../lyra-ide)
|
|
73
|
+
(the `custom-elements.json` export is now `@aceshooting/lyra-ide/custom-elements.json`). Install
|
|
74
|
+
them at the same version; `loadLyraLocale()` needs `lyra-translations`.
|
|
75
|
+
- **Agent tools.** `ToolCallStatus` and `ToolResultStatus` are replaced by one `ToolStatus` union.
|
|
76
|
+
`lr-task-list` and `lr-prompt-studio` default `heading-level` to `none`; set `3` / `2` to keep headings.
|
|
77
|
+
- **Copy controls** show feedback for 1500 ms; set `feedback-duration="1000"` on `lr-copy-button` to keep the old timing.
|
|
78
|
+
- **Text fields.** `lr-phone-input`'s string `autoCorrect` is now the boolean `autocorrect`.
|
|
79
|
+
- **Charts** over the row budget keep every series and thin only rows.
|
|
108
80
|
|
|
109
81
|
## Quick Start
|
|
110
82
|
|
|
111
|
-
|
|
83
|
+
**Use with AI coding agents.** AI coding agents: run `npx lyra-ui init-agents` (add `--agent <name>` if not auto-detected) to install the
|
|
84
|
+
Lyra UI skill for yourself; it prints the installed paths and the step that makes your agent load it
|
|
85
|
+
(add `--json` for machine-readable output).
|
|
112
86
|
|
|
113
|
-
|
|
114
|
-
|
|
87
|
+
Humans: install the package, then run it.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm i @aceshooting/lyra-ui && npx lyra-ui init-agents
|
|
115
91
|
```
|
|
116
92
|
|
|
93
|
+
In a terminal it asks which agents (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, GitHub Copilot, Amp,
|
|
94
|
+
Windsurf) to set up; agents and CI get the detected defaults. It installs the bundled `lyra-ui` and
|
|
95
|
+
`compose-lyra-interfaces` skills into the shared `.agents/skills/` plus a link for agents with their own
|
|
96
|
+
directory (Claude Code: `.claude/skills/`), as symlinks into `node_modules` so upgrades refresh them
|
|
97
|
+
(`--copy`, `--dry-run`, `--agents claude,opencode|all`, `--force`), and adds a short marked block to
|
|
98
|
+
`AGENTS.md` (and `CLAUDE.md` if present). Re-running is safe. Prefer a marketplace? `/plugin marketplace add
|
|
99
|
+
aceshooting/lyra-ui` then `/plugin install lyra-ui@aceshooting` (Claude Code), or `codex plugin marketplace
|
|
100
|
+
add aceshooting/lyra-ui` then `codex plugin add lyra-ui@aceshooting` (Codex).
|
|
101
|
+
|
|
117
102
|
## Install
|
|
118
103
|
|
|
119
104
|
```bash
|
|
120
105
|
npm install @aceshooting/lyra-ui
|
|
121
|
-
# runtime dependencies: Lit and Floating UI are installed transitively with this package
|
|
122
|
-
# optional peer: @aceshooting/lyra-flags, only needed for <lr-flag>
|
|
123
|
-
# optional peer: libphonenumber-js, only when creating a <lr-phone-input>
|
|
124
|
-
# adapter with loadLibphonenumberAdapter(); it is never imported by lyra-ui
|
|
125
|
-
# and international E.164 input works without it
|
|
126
|
-
# optional peer: d3-force, d3-drag, d3-zoom, d3-selection, only needed for <lr-graph>
|
|
127
|
-
# optional peer: chart.js, only needed for the <lr-*-chart>/<lr-histogram> family
|
|
128
|
-
# optional peer: chartjs-plugin-zoom, only when that family's zoom feature is enabled
|
|
129
|
-
# optional peer: chartjs-plugin-datalabels, only when data-labels or stack-totals is enabled
|
|
130
|
-
# optional peer: @sgratzl/chartjs-chart-boxplot, only needed for <lr-box-plot>
|
|
131
|
-
# optional peers: mammoth and dompurify, only needed for <lr-docx-viewer>
|
|
132
|
-
# — Mammoth converts DOCX files to semantic HTML instead of pixel-exact Word page layout.
|
|
133
|
-
# optional peer: maplibre-gl, only needed for <lr-map> — lr-map styles the
|
|
134
|
-
# generated canvas, markers, popups, and controls inside its shadow root.
|
|
135
|
-
# Lyra supports MapLibre v5 and v6. v5's standard build includes its worker;
|
|
136
|
-
# v6 is ESM-only, requires WebGL2, and also needs its module-worker URL
|
|
137
|
-
# configured for your bundler before the first map is constructed.
|
|
138
|
-
# <lr-map> requires an explicit `mapStyle`; it never initiates an implicit
|
|
139
|
-
# request to a third-party tile service when that property is absent.
|
|
140
106
|
```
|
|
141
107
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
108
|
+
Lit and Floating UI install transitively; everything else is an optional peer, installed only for the components that need it (full map: [`llms/peers.md`](./llms/peers.md)): `@aceshooting/lyra-flags`
|
|
109
|
+
(`<lr-flag>`), `@aceshooting/lyra-translations` (non-English locales, `loadLyraLocale()`), `libphonenumber-js`
|
|
110
|
+
(`<lr-phone-input>` adapter; E.164 input works without it), `d3-force`/`d3-drag`/`d3-zoom`/`d3-selection`
|
|
111
|
+
(`<lr-graph>`), `chart.js` plus optional `chartjs-plugin-zoom`, `chartjs-plugin-datalabels` and
|
|
112
|
+
`@sgratzl/chartjs-chart-boxplot` (chart family), `mammoth` and `dompurify` (`<lr-docx-viewer>`), and
|
|
113
|
+
`maplibre-gl` v5 or v6 (`<lr-map>`).
|
|
147
114
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
[MapLibre's ESM installation guide](https://maplibre.org/maplibre-gl-js/docs/#esm) for the matching
|
|
153
|
-
setup.
|
|
115
|
+
`<lr-map>` requires an explicit `mapStyle` and never requests a third-party tile service implicitly. MapLibre v6
|
|
116
|
+
is ESM-only, needs WebGL2, and needs its worker URL set before the first map is built (Vite shown; other
|
|
117
|
+
bundlers: [MapLibre's ESM guide](https://maplibre.org/maplibre-gl-js/docs/#esm)):
|
|
118
|
+
`import workerUrl from "maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url"; setWorkerUrl(workerUrl);`.
|
|
154
119
|
|
|
155
120
|
## Usage
|
|
156
121
|
|
|
157
|
-
Register components from
|
|
122
|
+
Register components from granular entry points; the tag-shaped path is the canonical, stable import:
|
|
158
123
|
|
|
159
124
|
```js
|
|
160
125
|
import "@aceshooting/lyra-ui/components/lr-combobox.js";
|
|
161
126
|
import "@aceshooting/lyra-ui/components/lr-option.js";
|
|
162
127
|
```
|
|
163
128
|
|
|
164
|
-
The tag-shaped path is stable even if Lyra later reorganizes its internal family folders. Family
|
|
165
|
-
barrel paths remain supported, while tag-shaped paths are the canonical per-component registration
|
|
166
|
-
imports. Nested per-component registration routes have been retired; use the stable tag path or the
|
|
167
|
-
registration-free family `.class.js` route.
|
|
168
|
-
|
|
169
|
-
Application-shell and media components have the same granular shape:
|
|
170
|
-
|
|
171
|
-
```js
|
|
172
|
-
import "@aceshooting/lyra-ui/components/lr-page.js";
|
|
173
|
-
import "@aceshooting/lyra-ui/components/lr-video.js";
|
|
174
|
-
import "@aceshooting/lyra-ui/components/lr-video-playlist.js";
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Native time input, pan/zoom, split panels, and alerts also have granular registrations:
|
|
178
|
-
|
|
179
|
-
```js
|
|
180
|
-
import "@aceshooting/lyra-ui/components/lr-native-time-input.js";
|
|
181
|
-
import "@aceshooting/lyra-ui/components/lr-pan-zoom.js";
|
|
182
|
-
import "@aceshooting/lyra-ui/components/lr-split-panel.js";
|
|
183
|
-
import "@aceshooting/lyra-ui/components/lr-alert.js";
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
These component entry points register their tags. For a class-only import (for subclassing or
|
|
187
|
-
type-directed composition), use the matching `.class.js` entry, such as
|
|
188
|
-
`@aceshooting/lyra-ui/components/overlays/empty/empty.class.js`; class-only entries do not touch the
|
|
189
|
-
custom-element registry.
|
|
190
|
-
|
|
191
129
|
```html
|
|
192
130
|
<lr-combobox label="Fruit" clearable>
|
|
193
131
|
<lr-option value="a">Apple</lr-option>
|
|
@@ -195,222 +133,65 @@ custom-element registry.
|
|
|
195
133
|
</lr-combobox>
|
|
196
134
|
```
|
|
197
135
|
|
|
198
|
-
|
|
199
|
-
`@aceshooting/lyra-ui/components/forms`,
|
|
200
|
-
`
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
A family entry point is **side-effectful by design**: importing it registers every tag in that
|
|
208
|
-
family — including the peer-gated tags `all.js` leaves out (see below), whose optional peers still
|
|
209
|
-
load lazily, on first use. Reach for one when you genuinely use most of a family and want a single
|
|
210
|
-
import; reach for the granular path — which is what every example in these docs uses — when you
|
|
211
|
-
don't, because a barrel cannot be tree-shaken down to the two elements you actually render.
|
|
212
|
-
|
|
213
|
-
…or pull the whole library:
|
|
214
|
-
|
|
215
|
-
```js
|
|
216
|
-
import "@aceshooting/lyra-ui/all.js";
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
> **Registration is explicit.** The package root is a side-effect-free export surface for
|
|
220
|
-
> library helpers and types; it does not export component classes or define custom elements.
|
|
221
|
-
> Import a registration-free class from its tag's family path when subclassing, or import a
|
|
222
|
-
> component registration entry, family entry, or `@aceshooting/lyra-ui/all.js` to define tags.
|
|
223
|
-
> An unregistered tag remains inert even when the import and build succeed.
|
|
224
|
-
|
|
225
|
-
`all.js` registers 293 tags — every component **except** the 15 inventory-designated
|
|
226
|
-
optional-peer-family tags: `<lr-chart>` and its 8 typed subclasses, `<lr-box-plot>`,
|
|
227
|
-
`<lr-histogram>`, `<lr-map>`, `<lr-graph>`, `<lr-knowledge-graph-explorer>`, and
|
|
228
|
-
`<lr-geojson-viewer>` (see Install above). Those always require their own explicit subpath import,
|
|
229
|
-
even when pulling the rest of the library in bulk:
|
|
230
|
-
|
|
231
|
-
```js
|
|
232
|
-
import "@aceshooting/lyra-ui/components/lr-chart.js";
|
|
233
|
-
import "@aceshooting/lyra-ui/components/lr-map.js";
|
|
234
|
-
import "@aceshooting/lyra-ui/components/lr-graph.js";
|
|
235
|
-
```
|
|
136
|
+
- **Class-only:** the registration-free `.class.js` entry (for example `components/overlays/empty/empty.class.js`) for subclassing.
|
|
137
|
+
- **Family entries** (`@aceshooting/lyra-ui/components/forms`, likewise `overlays`, `agent-tools`, `charts`,
|
|
138
|
+
`conversation`, `data`, `layout`, `media`, `retrieval`, `utility`, `viewers`) register every tag in the family;
|
|
139
|
+
they are side-effectful and cannot be tree-shaken, so prefer granular paths.
|
|
140
|
+
- **Everything:** `import "@aceshooting/lyra-ui/all.js"` registers 293 tags — every component **except** the 15 optional-peer
|
|
141
|
+
tags (`<lr-chart>` and typed subclasses, `<lr-box-plot>`, `<lr-histogram>`, `<lr-map>`, `<lr-graph>`,
|
|
142
|
+
`<lr-knowledge-graph-explorer>`, `<lr-geojson-viewer>`), which need their own subpath import.
|
|
143
|
+
`<lr-flag>` with `country`/`language` also needs `@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once.
|
|
236
144
|
|
|
237
|
-
|
|
238
|
-
|
|
145
|
+
> **Registration is explicit.** The package root is side-effect-free and exports helpers and types, not
|
|
146
|
+
> component classes; an unregistered tag stays inert even when the import and build succeed.
|
|
239
147
|
|
|
240
|
-
`
|
|
241
|
-
flag uses `country` or `language`, also import the peer registration entry once:
|
|
242
|
-
|
|
243
|
-
```js
|
|
244
|
-
import "@aceshooting/lyra-ui/components/media/flag/flag-peer.js";
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
Passing a pre-resolved `src` does not require that entry.
|
|
148
|
+
Full rules: [`llms/shared/imports-and-registration.md`](./llms/shared/imports-and-registration.md#importing-and-registering-components).
|
|
248
149
|
|
|
249
150
|
### Optional autoloader and CDN entry
|
|
250
151
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
only known tags already present below the supplied root:
|
|
254
|
-
|
|
255
|
-
```ts
|
|
256
|
-
import { discover, start, stop } from "@aceshooting/lyra-ui/autoloader.js";
|
|
257
|
-
import { allDefined } from "@aceshooting/lyra-ui/utilities/defined.js";
|
|
258
|
-
|
|
259
|
-
await discover(document); // one scan
|
|
260
|
-
await start(document); // initial scan, then watch dynamic/Turbo-style replacements
|
|
261
|
-
await allDefined(document);
|
|
262
|
-
stop();
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
`discover()` and `start()` traverse caller-owned open shadow roots and honor scoped custom-element
|
|
266
|
-
registries. While a discovered element is importing and completing its first update, the loader
|
|
267
|
-
owns a `data-lr-autoload-pending` marker on it; `AUTOLOADER_PENDING_ATTRIBUTE` exports that exact
|
|
268
|
-
name for application FOUCE rules. Set `{ events: true }` to receive bubbling/composed
|
|
269
|
-
`lr-autoload-preload`, `lr-autoload-loaded`, `lr-autoload-error`, and
|
|
270
|
-
`lr-autoload-traversal-error` events. A rejected import is reported, its marker is cleared, and a
|
|
271
|
-
later discovery can retry it.
|
|
272
|
-
|
|
273
|
-
Traversal is iterative and bounded per discovery operation: `maxElements` defaults to `10_000`,
|
|
274
|
-
`maxRoots` to `2_000`, `maxDepth` to `256`, and `maxWork` to `100_000`; `maxConcurrency` defaults
|
|
275
|
-
to `16` definition/first-update tasks. Invalid limits throw `RangeError`. `discover()` and the
|
|
276
|
-
initial `start()` preflight the currently rendered tree and reject a traversal-limit failure before
|
|
277
|
-
loading it. Shadow content rendered by a successfully loaded element is then bounded cumulatively; a
|
|
278
|
-
failure there rejects after that parent definition, without starting the over-limit descendants. A
|
|
279
|
-
watched insertion emits `lr-autoload-traversal-error` with `{ limit, maximum, error }` when events
|
|
280
|
-
are enabled, and later bounded discovery work remains available.
|
|
281
|
-
|
|
282
|
-
Optional-peer tags are skipped by default. Opt in only after installing every peer named by that
|
|
283
|
-
tag's package metadata:
|
|
284
|
-
|
|
285
|
-
```ts
|
|
286
|
-
await start(document, {
|
|
287
|
-
optionalPeers: ["dompurify", "postal-mime"],
|
|
288
|
-
events: true,
|
|
289
|
-
});
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Use `optionalPeers: 'all'` only when the complete optional-peer set is installed. The separate
|
|
293
|
-
side-effect entry auto-starts for direct-browser/CDN use and reads the same policy from its own
|
|
294
|
-
script element:
|
|
152
|
+
For arbitrary server/CMS markup, the side-effect-free autoloader registers only known tags already present under
|
|
153
|
+
a root; optional-peer tags are skipped unless named in `optionalPeers`. Traversal is bounded and inert in Node.
|
|
295
154
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
type="module"
|
|
299
|
-
src="https://esm.sh/@aceshooting/lyra-ui/autoloader-cdn.js"
|
|
300
|
-
data-lyra-autoloader
|
|
301
|
-
data-lyra-optional-peers="dompurify,postal-mime"
|
|
302
|
-
data-lyra-autoload-events
|
|
303
|
-
></script>
|
|
304
|
-
```
|
|
155
|
+
Use `discover(document)` for one scan, or `start(document, { optionalPeers: ["dompurify"], events: true })` to scan and
|
|
156
|
+
then watch replacements (`stop()` ends it), from `@aceshooting/lyra-ui/autoloader.js`.
|
|
305
157
|
|
|
306
|
-
|
|
307
|
-
and
|
|
308
|
-
their first updates, including tags produced by those updates; unknown `lr-*` names are ignored.
|
|
309
|
-
It does not load anything itself, so call it after explicit imports, `discover()`, or `start()`.
|
|
158
|
+
`autoloader-cdn.js` auto-starts for direct-browser use. Limits, events, `allDefined()`:
|
|
159
|
+
[`imports-and-registration.md`](./llms/shared/imports-and-registration.md#optional-autoloader).
|
|
310
160
|
|
|
311
161
|
### External modal interop
|
|
312
162
|
|
|
313
|
-
When a third-party modal opens above
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
```ts
|
|
317
|
-
import { suspendLyraModalsFor } from "@aceshooting/lyra-ui/utilities/overlay-manager.js";
|
|
318
|
-
|
|
319
|
-
const externalModal = document.querySelector<HTMLElement>("#vendor-modal")!;
|
|
320
|
-
const release = suspendLyraModalsFor(externalModal);
|
|
321
|
-
// Call when the third-party modal closes. Calling it twice is safe.
|
|
322
|
-
release();
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
The handle is document-scoped and nestable. While at least one handle is active, Lyra yields Escape
|
|
326
|
-
and Tab routing and leaves only the external modal paths non-inert, without discarding its own stack
|
|
327
|
-
or focus-return targets. Disconnecting the external root or adopting it into another document
|
|
328
|
-
releases the suspension automatically.
|
|
329
|
-
|
|
330
|
-
Imperative toast (a drop-in for `react-hot-toast`):
|
|
331
|
-
|
|
332
|
-
```js
|
|
333
|
-
import { toast } from "@aceshooting/lyra-ui/components/overlays/toast/toaster.js";
|
|
334
|
-
toast({ message: "Saved", variant: "success" });
|
|
335
|
-
```
|
|
163
|
+
When a third-party modal opens above a Lyra dialog or drawer, suspend Lyra's modal ownership for that external
|
|
164
|
+
root with `suspendLyraModalsFor(root)` from `@aceshooting/lyra-ui/utilities/overlay-manager.js`. It returns a
|
|
165
|
+
release function (safe to call twice); the handle is document-scoped, nestable and released on disconnect.
|
|
336
166
|
|
|
337
167
|
## For AI agents / LLMs
|
|
338
168
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
| Combined shared reference for tools requiring one document | [`llms/shared.md`](./llms/shared.md) |
|
|
348
|
-
| Design tokens | [`llms/tokens.md`](./llms/tokens.md) |
|
|
349
|
-
| Which optional peer a component needs | [`llms/peers.md`](./llms/peers.md) |
|
|
350
|
-
| `wa-*`/`sl-*` migration classifications and safe codemod rules | [`llms/migration.md`](./llms/migration.md) |
|
|
351
|
-
| Everything, concatenated (large; repository archive) | [repository reference archive](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms-full.txt) |
|
|
352
|
-
|
|
353
|
-
[`llms.txt`](./llms.txt) is the short entry index over all of the above. Family files, the focused
|
|
354
|
-
shared-topic files, and the introductory sources are authored; `llms/shared.md` is their generated
|
|
355
|
-
combined compatibility route. `pnpm run llms` combines them with the generated index,
|
|
356
|
-
per-component pages, tokens, peers, and migration reference. CI freshness-checks the derived
|
|
357
|
-
artifacts against `custom-elements.json` and the authored sources.
|
|
358
|
-
|
|
359
|
-
**Claude Code users:** this repo is also a plugin marketplace — installing the `lyra-ui` plugin gives
|
|
360
|
-
Claude the same reference as a skill, plus the `/lyra-ui:review`, `/lyra-ui:migrate` and
|
|
361
|
-
`/lyra-ui:update` commands.
|
|
362
|
-
|
|
363
|
-
**Contributing to this repo itself?** See [`AGENTS.md`](https://github.com/aceshooting/lyra-ui/blob/main/AGENTS.md) instead — that's a
|
|
364
|
-
contributor guide for agents working _on_ lyra-ui, not the same document as the above.
|
|
169
|
+
[`llms.txt`](./llms.txt) is the entry index: [`llms/index.md`](./llms/index.md) routes a tag to its import path,
|
|
170
|
+
`llms/components/<tag>.md` is one component's API, `llms/shared/<topic>.md` (combined as
|
|
171
|
+
[`llms/shared.md`](./llms/shared.md)) covers cross-cutting topics, and [`llms/tokens.md`](./llms/tokens.md),
|
|
172
|
+
[`llms/peers.md`](./llms/peers.md) and [`llms/migration.md`](./llms/migration.md) cover tokens, optional peers and
|
|
173
|
+
`wa-*`/`sl-*` rules; `llms-full.txt` concatenates everything. Family files and `llms/shared/*.md` are authored, the rest
|
|
174
|
+
is generated by `pnpm run llms`. `npx lyra-ui init-agents` installs the bundled skills; the `lyra-ui@aceshooting`
|
|
175
|
+
marketplace plugin ships the same content. Contributing to this repo? See
|
|
176
|
+
[`AGENTS.md`](https://github.com/aceshooting/lyra-ui/blob/main/AGENTS.md).
|
|
365
177
|
|
|
366
178
|
## Migrating from Web Awesome or Shoelace
|
|
367
179
|
|
|
368
|
-
The "Mirrors" column records a design/API relationship, not
|
|
369
|
-
Every pinned Web Awesome and Shoelace component has a machine-readable
|
|
370
|
-
`
|
|
371
|
-
|
|
372
|
-
reported with their source location, so an incomplete migration cannot leave inert public members
|
|
373
|
-
behind while appearing to have succeeded.
|
|
374
|
-
|
|
375
|
-
Where the two upstreams disagree on a name for the same thing, Lyra accepts both spellings rather
|
|
376
|
-
than forcing a rewrite. The clear button is the clearest case: Web Awesome spells it `with-clear`,
|
|
377
|
-
Shoelace spells it `clearable`, and `<lr-input>`, `<lr-select>` and `<lr-combobox>` each honour both.
|
|
378
|
-
Neither spelling is deprecated, and neither needs rewriting in either direction — whichever one your
|
|
379
|
-
markup already carries keeps working.
|
|
380
|
-
|
|
381
|
-
The same compatibility rule applies when the upstreams disagree on a property's write type.
|
|
382
|
-
`lr-input.autocorrect` and `lr-textarea.autocorrect` always read as booleans, matching Web Awesome.
|
|
383
|
-
Input also accepts Shoelace's `'off'`/`'on'` property writes; Textarea accepts its wider string
|
|
384
|
-
surface, normalizing `'off'`/`'false'` to `false` and other strings to `true`. Both render the native
|
|
385
|
-
attribute canonically as `autocorrect="off"` or `autocorrect="on"`.
|
|
386
|
-
|
|
387
|
-
Icon tags and attributes can be renamed mechanically, but icon names are a separate vocabulary.
|
|
388
|
-
Lyra's dependency-free default library contains only `add`, `check`, `close`, `search`, `menu`,
|
|
389
|
-
`chevron-left`, `chevron-right`, `chevron-down`, `calendar`, `command`, and `trash`; any other
|
|
390
|
-
migrated `<wa-icon>`, `<sl-icon>`, or `<sl-icon-button>` name renders no glyph. The migration CLI
|
|
391
|
-
reports `BEHAVIOR_REVIEW_REQUIRED` for those tags. Replace each name explicitly or register the
|
|
392
|
-
required vocabulary with `registerIconLibrary('default', { resolver })`.
|
|
393
|
-
|
|
394
|
-
`lr-option` likewise keeps live/default selection separate: the `selected` attribute initializes
|
|
395
|
-
`defaultSelected` and the parent control's reset default (property writes intentionally do not
|
|
396
|
-
reflect), while `selected` is property-only live state. Selecting an option at runtime never
|
|
397
|
-
rewrites the declarative default.
|
|
180
|
+
The "Mirrors" column in [Components](#components) records a design/API relationship, not permission to rename a
|
|
181
|
+
tag blindly. Every pinned Web Awesome and Shoelace component has a machine-readable classification (`exact`,
|
|
182
|
+
`rewritten`, `warning-required`, `conceptual-only`, `unsupported`); only `exact` and fully specified `rewritten`
|
|
183
|
+
mappings change automatically, the rest are reported with their source location ([`llms/migration.md`](./llms/migration.md)).
|
|
398
184
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
<lr-resize-observer @lr-resize="sync"></lr-resize-observer>
|
|
407
|
-
</lr-button-group>
|
|
408
|
-
```
|
|
185
|
+
- Where upstreams disagree on a name, Lyra accepts both and deprecates neither (`with-clear` and `clearable` both
|
|
186
|
+
work on `<lr-input>`, `<lr-select>`, `<lr-combobox>`); `autocorrect` always reads as a boolean.
|
|
187
|
+
- Icon tags rename mechanically, icon names do not: the default library has only `add`, `check`, `close`,
|
|
188
|
+
`search`, `menu`, `chevron-left`, `chevron-right`, `chevron-down`, `calendar`, `command` and `trash`; other
|
|
189
|
+
names render nothing (`BEHAVIOR_REVIEW_REQUIRED`). Use `registerIconLibrary('default', { resolver })`.
|
|
190
|
+
- `lr-option`: the `selected` attribute initializes `defaultSelected` (the reset default); `selected` is
|
|
191
|
+
property-only live state.
|
|
409
192
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
contract-recorded tag/member/default/registration-import rewrites, and can write a stable JSON
|
|
413
|
-
report for CI or human review. Replace `<version>` with the exact Lyra version you are migrating to:
|
|
193
|
+
The version-matched `lyra-ui-migrate` CLI applies only contract-recorded rewrites and writes a JSON report;
|
|
194
|
+
replace `<version>` with the Lyra version you are migrating to:
|
|
414
195
|
|
|
415
196
|
```bash
|
|
416
197
|
npx --package @aceshooting/lyra-ui@<version> lyra-ui-migrate --check \
|
|
@@ -418,876 +199,246 @@ npx --package @aceshooting/lyra-ui@<version> lyra-ui-migrate --check \
|
|
|
418
199
|
npx --package @aceshooting/lyra-ui@<version> lyra-ui-migrate path/to/your/src
|
|
419
200
|
```
|
|
420
201
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
Supported side-effect component deep imports are routed through the target's inventory registration
|
|
427
|
-
module. Proven, tier-compatible root registration closures use `@aceshooting/lyra-ui/all.js`;
|
|
428
|
-
root-excluded targets receive granular registration imports instead. An automatic-looking tag with
|
|
429
|
-
no matching side-effect registration in the scanned target set stays unchanged with
|
|
430
|
-
`REGISTRATION_CLOSURE_REQUIRED`; include the registration-owning entry file in the scan rather than
|
|
431
|
-
accepting an inert `lr-*` result. A mapped target with optional runtime dependencies adds an
|
|
432
|
-
`OPTIONAL_PEER_REQUIRED` entry naming every package the consumer must install. Imports with
|
|
433
|
-
bindings, unknown subpaths, dynamic values, aliased component values that use a rewritten member,
|
|
434
|
-
unsafe security/default changes, conceptual mappings, and unsupported components remain unchanged
|
|
435
|
-
with an actionable warning. An aliased member blocks that mapping across the whole scanned target set
|
|
436
|
-
so the codemod never rewrites its registration import while leaving an old member behind. A second
|
|
437
|
-
run is byte-idempotent. Comments, prose, unrelated identifiers/packages, and partial strings are not
|
|
438
|
-
treated as component uses. `--check` never writes files and exits nonzero while a rewrite or warning
|
|
439
|
-
remains.
|
|
440
|
-
|
|
441
|
-
The inventory does not treat `dir` or `lang` as component-member drift: both are platform-global
|
|
442
|
-
HTML passthrough attributes. It likewise excludes Web Awesome's `did-ssr` hydration marker, which is
|
|
443
|
-
upstream runtime bookkeeping rather than an authored member to copy onto a Lyra component.
|
|
444
|
-
|
|
445
|
-
The same inventory reviews accessibility behavior separately from static API shape. Every one of
|
|
446
|
-
the 145 pinned upstream mappings names an upstream and Lyra behavior profile covering semantics,
|
|
447
|
-
naming, keyboard, focus, state, announcements, and motion. It stores the exact missing/additive
|
|
448
|
-
comparison and a rationale; an automatic mapping is rejected if its target profile drops a reviewed
|
|
449
|
-
behavior. These profiles summarize published public contracts and Lyra's authored contract plus
|
|
450
|
-
automated tests. They are not evidence of manual screen-reader, assistive-technology, or human
|
|
451
|
-
accessibility review; see [the accessibility evidence statement](https://github.com/aceshooting/lyra-ui/blob/main/docs/accessibility.md).
|
|
452
|
-
|
|
453
|
-
Shoelace is now a historical predecessor to Web Awesome, but its component vocabulary remains
|
|
454
|
-
familiar to many teams. The table below is a porting guide, not an automatic-rename allowlist; the
|
|
455
|
-
inventory classification and codemod report decide which individual uses are mechanically safe:
|
|
456
|
-
|
|
457
|
-
| Shoelace | Lyra | Migration note |
|
|
458
|
-
| ------------------------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
459
|
-
| `<sl-button>` | `<lr-button>` | Check `variant`, `appearance`, and loading behavior. |
|
|
460
|
-
| `<sl-input>` / `<sl-textarea>` | `<lr-input>` / `<lr-textarea>` | String `autocorrect` property writes remain accepted but read back as booleans; preserve the native editing/form contract and review label/error markup. |
|
|
461
|
-
| `<sl-select>` / `<sl-option>` | `<lr-select>` / `<lr-option>` | `defaultSelected`/the `selected` attribute is the reset default; live `selected` is property-only. Review option and value events. |
|
|
462
|
-
| `<sl-dialog>` / `<sl-drawer>` | `<lr-dialog>` / `<lr-drawer>` | Review close reasons, focus behavior, and slots. |
|
|
463
|
-
| `<sl-card>` / `<sl-badge>` | `<lr-card>` / `<lr-badge>` | Review appearance tokens and dismiss events. |
|
|
464
|
-
| `<sl-alert>` | `<lr-alert>` | Closed by default, with the same properties, slots, lifecycle, parts, and identity-preserving `toast()` contract under the `lr-` prefix. |
|
|
465
|
-
| `<sl-spinner>` / `<sl-progress-bar>` | `<lr-spinner>` / `<lr-progress-bar>` | Built-in status copy is localized through Lyra's runtime. |
|
|
466
|
-
|
|
467
|
-
For either migration, start with the codemod report. Update a package import or custom-element prefix
|
|
468
|
-
only for an automatic row, or after completing the manual port named by a warning; then run the
|
|
469
|
-
component's accessibility story and check its API notes for behavior that cannot be inferred from
|
|
470
|
-
the tag name alone. Lyra's own `--lr-theme-*` variables are the only theme inputs it reads. For a
|
|
471
|
-
staged Web Awesome migration, map existing values explicitly in application CSS; Lyra does not read
|
|
472
|
-
competitor token variables itself.
|
|
473
|
-
|
|
474
|
-
Everything else in the tables below — marked `— (extra)` — has no Web Awesome equivalent to
|
|
475
|
-
migrate _from_ in the first place, so there's nothing to rename: install the package and import
|
|
476
|
-
what you need (see Usage above). That's most of this library, including every dashboard atom
|
|
477
|
-
(stat cards, gauges, empty/skeleton states), the whole chart family, the temporal/graph/tree
|
|
478
|
-
components, `<lr-map>`, and the entire **Conversation & Agent UI** family (chat messages,
|
|
479
|
-
streaming text, tool-call chips/dialogs, citations, model/settings pickers, and more) — Web
|
|
480
|
-
Awesome has no chat/agent UI component family at all.
|
|
481
|
-
|
|
482
|
-
### Security boundaries
|
|
483
|
-
|
|
484
|
-
Some upstream behavior is intentionally not made automatic:
|
|
485
|
-
|
|
486
|
-
- `<lr-include>` sanitizes every fetched or same-page fragment, has no script-executing mode, and
|
|
487
|
-
defaults `mode` to `same-origin` instead of `cors`. A migration that depends on cross-origin or
|
|
488
|
-
script execution remains unchanged with a location-aware warning. Its post-sanitization
|
|
489
|
-
transclusion is network-silent and non-interactive: anchors remain only for resolvable
|
|
490
|
-
same-document `#fragment` links (rebased per include instance); every other navigation or
|
|
491
|
-
resource attribute, including `href`, `src`, `srcset`, `action`, `ping`, and `poster`, is stripped,
|
|
492
|
-
so images do not load. Form-control and custom-element wrappers are unwrapped to safe ordinary
|
|
493
|
-
text or children, while controls with no passive content are removed.
|
|
494
|
-
- Link-like Lyra controls always contribute `noopener noreferrer` to `rel` whenever `target` is set,
|
|
495
|
-
and always strip `opener`. Author `rel` tokens are merged rather than ignored, so `nofollow`, `me`
|
|
496
|
-
and `license` survive the rename — `<lr-button>` and `<lr-breadcrumb-item>` therefore support
|
|
497
|
-
automatic migration. `<lr-app-rail-item>` still derives `rel` from `target` alone.
|
|
498
|
-
- `<lr-zoomable-frame>` rejects active/non-embeddable URL schemes, always renders a sandbox, and
|
|
499
|
-
will not combine `allow-scripts` with `allow-same-origin`. `<lr-video>` validates media and
|
|
500
|
-
thumbnail URLs and byte-caps remote thumbnail VTT input.
|
|
501
|
-
|
|
502
|
-
These are deliberate fail-closed contracts. The migration report records them instead of emitting
|
|
503
|
-
markup that appears converted while weakening the application's security boundary.
|
|
202
|
+
It understands `@awesome.me/webawesome`, `@awesome.me/webawesome-pro` and `@shoelace-style/shoelace`, scans HTML, CSS,
|
|
203
|
+
JS/TS, JSX, Vue, Svelte, MDX and Markdown, and is byte-idempotent; `--check` never writes and exits nonzero while a
|
|
204
|
+
rewrite or warning remains. Ambiguous cases stay unchanged with an actionable warning (for example
|
|
205
|
+
`REGISTRATION_CLOSURE_REQUIRED`, `OPTIONAL_PEER_REQUIRED`). Behavior profiles are not manual assistive-technology
|
|
206
|
+
review ([accessibility evidence](https://github.com/aceshooting/lyra-ui/blob/main/docs/accessibility.md)).
|
|
504
207
|
|
|
505
|
-
|
|
208
|
+
The Shoelace table is a porting guide, not an automatic-rename allowlist:
|
|
506
209
|
|
|
507
|
-
|
|
508
|
-
|
|
210
|
+
| Shoelace | Lyra | Migration note |
|
|
211
|
+
| --- | --- | --- |
|
|
212
|
+
| `<sl-button>` | `<lr-button>` | Check `variant`, `appearance`, and loading behavior. |
|
|
213
|
+
| `<sl-input>` / `<sl-textarea>` | `<lr-input>` / `<lr-textarea>` | String `autocorrect` property writes remain accepted but read back as booleans; preserve the native editing/form contract and review label/error markup. |
|
|
214
|
+
| `<sl-select>` / `<sl-option>` | `<lr-select>` / `<lr-option>` | `defaultSelected`/the `selected` attribute is the reset default; live `selected` is property-only. Review option and value events. |
|
|
215
|
+
| `<sl-dialog>` / `<sl-drawer>` | `<lr-dialog>` / `<lr-drawer>` | Review close reasons, focus behavior, and slots. |
|
|
216
|
+
| `<sl-card>` / `<sl-badge>` | `<lr-card>` / `<lr-badge>` | Review appearance tokens and dismiss events. |
|
|
217
|
+
| `<sl-alert>` | `<lr-alert>` | Closed by default, with the same properties, slots, lifecycle, parts, and identity-preserving `toast()` contract under the `lr-` prefix. |
|
|
218
|
+
| `<sl-spinner>` / `<sl-progress-bar>` | `<lr-spinner>` / `<lr-progress-bar>` | Built-in status copy is localized through Lyra's runtime. |
|
|
509
219
|
|
|
510
|
-
|
|
511
|
-
does not depend on another library's theme or token namespace. For a ready-made light/dark base
|
|
512
|
-
theme, import `@aceshooting/lyra-ui/theme.css` once and toggle `.lr-light`/`.lr-dark` (or the
|
|
513
|
-
matching `data-lr-theme` attribute) on an ancestor:
|
|
220
|
+
Lyra reads only its own `--lr-theme-*` variables; map existing values in application CSS for a staged migration.
|
|
514
221
|
|
|
515
|
-
|
|
516
|
-
@import "@aceshooting/lyra-ui/theme.css";
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
**Appearance defaults.** Shadcn, Glass, Emerald, System mode and comfortable density are built in.
|
|
520
|
-
`theme.css` supplies the document-level profile, including the default look, accent and material;
|
|
521
|
-
granular components also carry these visual defaults. Select a different look or accent through
|
|
522
|
-
the canonical style API, preserving each valid saved choice at startup:
|
|
523
|
-
|
|
524
|
-
```js
|
|
525
|
-
import { setLyraStyle } from '@aceshooting/lyra-ui/theme.js';
|
|
526
|
-
|
|
527
|
-
setLyraStyle({}); // Restore saved choices; missing or invalid fields use the built-in profile.
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
To retain the earlier Lyra/Solid appearance without an accent:
|
|
531
|
-
|
|
532
|
-
```js
|
|
533
|
-
setLyraStyle({ look: 'lyra', surface: 'solid', accent: null });
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
`accent: null` clears the accent. `resetLyraStyle()` restores the built-in profile, including
|
|
537
|
-
Emerald; pass a field list to reset only those axes. See [The shadcn look](./llms/shared.md#the-shadcn-look--looksshadcncss)
|
|
538
|
-
for the look's typography, geometry and contrast adjustments.
|
|
539
|
-
|
|
540
|
-
The style API persists the independent look, surface, density, mode and accent choices. See the
|
|
541
|
-
[style API guide](./llms/shared/styles-and-tokens.md#composing-looks-surfaces-and-density) for
|
|
542
|
-
scoped styling, reset and saved-preference behavior.
|
|
543
|
-
|
|
544
|
-
Tooling can consume the DTCG interchange document from `@aceshooting/lyra-ui/design-tokens.json`:
|
|
545
|
-
the authored Lyra token tree (not the shadcn default), the look definitions and `defaultStyle`, which
|
|
546
|
-
names the look and accent applied by default. The generated `@aceshooting/lyra-ui/design-tokens.css`
|
|
547
|
-
entry supplies the resolved default values as explicit light/dark fixture selectors for previews and
|
|
548
|
-
design-tool validation; it is not a replacement for the production `theme.css`.
|
|
549
|
-
|
|
550
|
-
```html
|
|
551
|
-
<body class="lr-dark">
|
|
552
|
-
<lr-button variant="brand">Save</lr-button>
|
|
553
|
-
</body>
|
|
554
|
-
```
|
|
555
|
-
|
|
556
|
-
**The resolved `--lr-color-*`/`--lr-space-*`/`--lr-radius`/`--lr-shadow-*`/`--lr-font-*` output
|
|
557
|
-
layer is declared only on each `lr-*` element's own shadow `:host`** — it is not readable from
|
|
558
|
-
plain application CSS or your own custom elements outside any `lr-*` shadow root (a rule like
|
|
559
|
-
`body { color: var(--lr-color-text) }` silently resolves to nothing, not an error). Set the
|
|
560
|
-
`--lr-theme-*` **input** layer shown below to retheme; see
|
|
561
|
-
[Where an override actually reaches](./llms/shared.md#where-an-override-actually-reaches) for
|
|
562
|
-
exactly how far each layer inherits.
|
|
563
|
-
|
|
564
|
-
Applications can override any `--lr-theme-*` input directly:
|
|
565
|
-
|
|
566
|
-
```css
|
|
567
|
-
:root {
|
|
568
|
-
--lr-theme-color-surface-default: #101827;
|
|
569
|
-
--lr-theme-color-text-normal: #f8fafc;
|
|
570
|
-
--lr-theme-color-brand-fill-loud: #60a5fa;
|
|
571
|
-
--lr-theme-font-size-m: 1rem;
|
|
572
|
-
--lr-theme-border-radius-m: 0.5rem;
|
|
573
|
-
}
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
`theme.css` declares `@layer lr-base, lr-theme, lr-theme-preset, lr-utilities, lr-overrides` and
|
|
577
|
-
puts its own tokens in `lr-theme`, so an _unlayered_ rule of yours — like the `:root` block above —
|
|
578
|
-
wins over every Lyra declaration regardless of specificity or which stylesheet the bundler emitted
|
|
579
|
-
first. The optional `looks/shadcn.css` stylesheet uses `lr-theme-preset`, and the optional `native.css`
|
|
580
|
-
and `utilities.css` assets use `lr-base` and `lr-utilities`; `lr-overrides` remains available for
|
|
581
|
-
application rules. If you declare Lyra's layer order yourself, name all five. See [`llms/tokens.md`](./llms/tokens.md) for the complete shared token list.
|
|
582
|
-
Component-specific `--lr-*` custom properties remain available for local overrides.
|
|
583
|
-
|
|
584
|
-
Canvas components automatically repaint after observable theme attributes, stylesheet/link nodes,
|
|
585
|
-
CSSOM changes, adopted stylesheets, and relevant media-query changes. If an application theme engine
|
|
586
|
-
changes computed tokens through another mechanism, invalidate the owning browser realm explicitly:
|
|
587
|
-
|
|
588
|
-
```ts
|
|
589
|
-
import { invalidateLyraTheme } from "@aceshooting/lyra-ui/utilities/theme.js";
|
|
590
|
-
|
|
591
|
-
invalidateLyraTheme(); // global document realm
|
|
592
|
-
invalidateLyraTheme(shadowRoot); // realm owning this root, element, or document
|
|
593
|
-
```
|
|
222
|
+
### Security boundaries
|
|
594
223
|
|
|
595
|
-
|
|
596
|
-
each connected canvas consumer's normal redraw schedule.
|
|
224
|
+
Some upstream behavior is deliberately not automatic; the report records it instead of emitting markup that weakens a boundary:
|
|
597
225
|
|
|
598
|
-
|
|
599
|
-
|
|
226
|
+
- `<lr-include>` sanitizes every fragment, has no script mode, defaults `mode` to `same-origin`, and strips every
|
|
227
|
+
navigation or resource attribute except same-document `#fragment` anchors. Its post-sanitization transclusion is network-silent and non-interactive: anchors remain only for resolvable same-document `#fragment` links (rebased per include instance); every other navigation or resource attribute, including `href`, `src`, `srcset`, `action`, `ping`, and `poster`, is stripped, so images do not load. Form-control and custom-element wrappers are unwrapped to safe ordinary text or children, while controls with no passive content are removed.
|
|
228
|
+
- Link-like controls always add `noopener noreferrer` to `rel` when `target` is set and strip `opener`; author
|
|
229
|
+
`rel` tokens are merged. `<lr-app-rail-item>` still derives `rel` from `target` alone.
|
|
230
|
+
- `<lr-zoomable-frame>` rejects active/non-embeddable schemes, always sandboxes, and never combines
|
|
231
|
+
`allow-scripts` with `allow-same-origin`; `<lr-video>` validates media and thumbnail URLs and byte-caps VTT input.
|
|
600
232
|
|
|
601
|
-
|
|
602
|
-
@import "@aceshooting/lyra-ui/native.css";
|
|
603
|
-
@import "@aceshooting/lyra-ui/utilities.css";
|
|
604
|
-
```
|
|
233
|
+
## Theming, internationalization & RTL
|
|
605
234
|
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
(
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
native
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
**Internationalization.** Every built-in string
|
|
623
|
-
`
|
|
235
|
+
**Theming.** Components read independent `--lr-theme-*` inputs with standalone defaults. Import
|
|
236
|
+
`@aceshooting/lyra-ui/theme.css` once and toggle `.lr-light`/`.lr-dark` (or `data-lr-theme`) on an ancestor.
|
|
237
|
+
Shadcn, Glass, Emerald, System mode and comfortable density are built in; the style API persists look, surface,
|
|
238
|
+
density, mode and accent independently ([guide](./llms/shared/styles-and-tokens.md#composing-looks-surfaces-and-density)):
|
|
239
|
+
|
|
240
|
+
`setLyraStyle({})` from `@aceshooting/lyra-ui/theme.js` restores saved choices (missing fields use the built-in
|
|
241
|
+
profile); `setLyraStyle({ look: "lyra", surface: "solid", accent: null })` selects the earlier appearance and
|
|
242
|
+
`resetLyraStyle()` restores the built-in profile. The resolved `--lr-color-*`/`--lr-space-*`/... layer exists only
|
|
243
|
+
on each `lr-*` shadow `:host`, so retheme through the `--lr-theme-*` inputs, for example
|
|
244
|
+
`:root { --lr-theme-color-brand-fill-loud: #60a5fa; }` ([where an override reaches](./llms/shared.md#where-an-override-actually-reaches),
|
|
245
|
+
[tokens](./llms/tokens.md)). `theme.css` declares `@layer lr-base, lr-theme, lr-theme-preset, lr-utilities, lr-overrides`,
|
|
246
|
+
so an unlayered rule wins (name all five if you declare the order). Canvas components repaint on observable theme
|
|
247
|
+
changes; otherwise call `invalidateLyraTheme(root?)` from `@aceshooting/lyra-ui/utilities/theme.js`. Optional
|
|
248
|
+
`native.css` and `utilities.css` bring the tokens to light DOM ([details](./llms/shared.md#optional-native-styles-and-css-utilities));
|
|
249
|
+
`design-tokens.json` is the DTCG export for tooling.
|
|
250
|
+
|
|
251
|
+
**Internationalization.** Every built-in string, including `aria-label`s, resolves through one runtime, app-wide or
|
|
252
|
+
per instance; `Intl` formatting uses the resolved locale and consumer data is never altered:
|
|
624
253
|
|
|
625
254
|
```ts
|
|
626
|
-
import {
|
|
627
|
-
registerLyraLocale,
|
|
628
|
-
setLyraLocale,
|
|
629
|
-
} from "@aceshooting/lyra-ui/localization.js";
|
|
255
|
+
import { registerLyraLocale, setLyraLocale } from "@aceshooting/lyra-ui/localization.js";
|
|
630
256
|
|
|
631
|
-
// App-wide: register translations once, anywhere in the app.
|
|
632
257
|
registerLyraLocale("fr", { close: "Fermer", retry: "Réessayer" /* ... */ });
|
|
633
|
-
setLyraLocale("fr"); // or
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
The dedicated `localization.js` entry is side-effect-free: it does not register the component
|
|
637
|
-
graph. The package root continues to re-export the same runtime for compatibility, but importing
|
|
638
|
-
the root remains registration-free. The same entry also carries `bridgeLyraLocale()`,
|
|
639
|
-
`subscribeLyraLocale()` and `resolveLyraScopedString()`. Their former utility-scoped entry point was
|
|
640
|
-
removed in 23.0.0; use the canonical `localization.js` route.
|
|
641
|
-
|
|
642
|
-
```html
|
|
643
|
-
<!-- Per-instance: override specific keys on one element without a global registry. -->
|
|
644
|
-
<lr-toast .strings=${{ close: 'Fermer' }}></lr-toast>
|
|
258
|
+
setLyraLocale("fr"); // or set <html lang="fr">; per instance: .strings=${{ close: 'Fermer' }}
|
|
645
259
|
```
|
|
646
260
|
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
first render.
|
|
261
|
+
`localization.js` is side-effect-free; English is the built-in fallback and `@aceshooting/lyra-translations` has
|
|
262
|
+
ready-made catalogs ([guide](./llms/shared/localization-and-rtl.md)).
|
|
650
263
|
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
locale. Consumer-provided labels, values, file names, and message content are never altered by the
|
|
654
|
-
localization layer. The same runtime also covers accessible names, descriptions, validation messages,
|
|
655
|
-
live-region announcements, empty states, status labels, and action buttons; use `.strings` for a
|
|
656
|
-
component-specific override when needed.
|
|
657
|
-
|
|
658
|
-
**RTL.** Set `dir="rtl"` on `<html>` or any ancestor — every component mirrors its layout
|
|
659
|
-
automatically via CSS logical properties and swaps directional keyboard navigation (e.g. the arrow
|
|
660
|
-
keys in a date grid or a roving-tabindex list) to match. `lang`/`locale` select translations and
|
|
661
|
-
`Intl` data but do not silently change writing direction; pair `lang="ar"`, `lang="he"`, or
|
|
662
|
-
`lang="fa"` with `dir="rtl"`. Components do not force their own `dir`, so they remain composable
|
|
663
|
-
inside mixed-direction layouts.
|
|
264
|
+
**RTL.** `dir="rtl"` on `<html>` or an ancestor mirrors layout (logical CSS) and swaps directional keyboard
|
|
265
|
+
navigation. `lang`/`locale` never change direction: pair `lang="ar"`, `"he"` or `"fa"` with `dir="rtl"`.
|
|
664
266
|
|
|
665
267
|
## Component status, versioning, and deprecation
|
|
666
268
|
|
|
667
|
-
Every component carries
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
release break.
|
|
672
|
-
|
|
673
|
-
Deprecation is separate metadata. A deprecated component or member names its replacement,
|
|
674
|
-
deprecation version, rationale, and earliest removal version. If deprecated in major version M, it
|
|
675
|
-
remains available for the complete M+1 line and cannot be removed before M+2. See
|
|
676
|
-
[`llms/shared.md`](./llms/shared.md#component-status-versioning-and-deprecation) for the full policy.
|
|
269
|
+
Every component carries `stable` or `experimental` status and its first published `since` version; both get
|
|
270
|
+
normal semver protection once published. A deprecation names its replacement, version, rationale and earliest
|
|
271
|
+
removal: deprecated in major M, available through the whole M+1 line, removable no earlier than M+2
|
|
272
|
+
([policy](./llms/shared.md#component-status-versioning-and-deprecation)).
|
|
677
273
|
|
|
678
274
|
## SSR & Declarative Shadow DOM
|
|
679
275
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
276
|
+
The root, `all.js`, family entries and granular registrations are server-safe on Node 22+. Register the tags a
|
|
277
|
+
page renders and use `@aceshooting/lyra-ui/ssr.js` (`ssr/all.js` registers everything). `render-and-hydrate`
|
|
278
|
+
components emit Declarative Shadow DOM and reuse it on hydration; `client-render` components keep the host,
|
|
279
|
+
attributes and light DOM and create their shadow DOM on upgrade (`LYRA_SSR_SUPPORT_MATRIX` is the per-tag list). Pass
|
|
280
|
+
`elementRenderers: lyraSsrElementRenderers(LitElementRenderer)` to `@lit-labs/ssr`'s `render()`.
|
|
683
281
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
components whose initial render needs light-DOM traversal, layout, canvas, observers, or media
|
|
689
|
-
APIs that Lit's intentionally small server DOM does not emulate.
|
|
690
|
-
|
|
691
|
-
For an application that intentionally registers the full inventory on the server,
|
|
692
|
-
`@aceshooting/lyra-ui/ssr/all.js` provides that side effect plus the SSR helpers. Granular imports
|
|
693
|
-
avoid loading unused optional-peer families.
|
|
694
|
-
|
|
695
|
-
Configure Lit's server renderer with Lyra's fallback before `LitElementRenderer`:
|
|
696
|
-
|
|
697
|
-
```ts
|
|
698
|
-
import '@aceshooting/lyra-ui/components/lr-page.js';
|
|
699
|
-
import {
|
|
700
|
-
lyraSsrElementRenderers,
|
|
701
|
-
LYRA_SSR_SUPPORT_MATRIX,
|
|
702
|
-
} from '@aceshooting/lyra-ui/ssr.js';
|
|
703
|
-
import { render, LitElementRenderer } from "@lit-labs/ssr";
|
|
704
|
-
import { collectResult } from "@lit-labs/ssr/lib/render-result.js";
|
|
705
|
-
import { html } from "lit";
|
|
706
|
-
|
|
707
|
-
const result = render(html`<lr-page><main>Dashboard</main></lr-page>`, {
|
|
708
|
-
elementRenderers: lyraSsrElementRenderers(LitElementRenderer),
|
|
709
|
-
});
|
|
710
|
-
const markup = await collectResult(result);
|
|
711
|
-
```
|
|
712
|
-
|
|
713
|
-
In a browser bundle that hydrates server-rendered markup, make `hydration.js` the first import that
|
|
714
|
-
can reach Lit. It installs `@lit-labs/ssr-client/lit-element-hydrate-support.js`; then register the
|
|
715
|
-
tags the page uses:
|
|
716
|
-
|
|
717
|
-
```ts
|
|
718
|
-
import '@aceshooting/lyra-ui/hydration.js';
|
|
719
|
-
import '@aceshooting/lyra-ui/components/lr-page.js';
|
|
720
|
-
import {
|
|
721
|
-
diagnoseLyraHydration,
|
|
722
|
-
getLyraSsrMode,
|
|
723
|
-
} from '@aceshooting/lyra-ui/ssr.js';
|
|
724
|
-
|
|
725
|
-
const diagnostics = await diagnoseLyraHydration(document);
|
|
726
|
-
```
|
|
727
|
-
|
|
728
|
-
Optional-peer families use their granular registration imports as needed. Property bindings cannot
|
|
729
|
-
be serialized by a fallback renderer, so express initial fallback state as attributes/light DOM or
|
|
730
|
-
assign properties on the client. A `render-and-hydrate` component whose rendering depends on something only a browser can
|
|
731
|
-
answer — its own light-DOM children, or a browser global such as `EyeDropper` — reproduces the
|
|
732
|
-
server's answer on the hydrating render and corrects itself on the very next update rather than
|
|
733
|
-
contradicting the markup it is hydrating, so a slotted override or an eyedropper button appears one
|
|
734
|
-
frame after hydration. A browser-only mount (no server markup) is unaffected and still renders the
|
|
735
|
-
final result the first time. Layout measurement, observers, canvas, and media playback start after hydration; remote
|
|
736
|
-
content remains client-only. CI renders every inventory tag, verifies both tiers, and crawls a real
|
|
737
|
-
Chromium DSD response (including `lr-page`) with strict hydration warnings/errors and DOM-identity
|
|
738
|
-
checks. The exported matrix is the authoritative per-tag list as components evolve.
|
|
282
|
+
In the browser, make `@aceshooting/lyra-ui/hydration.js` the first import that can reach Lit, then register tags;
|
|
283
|
+
`diagnoseLyraHydration(document)` checks the result. A fallback renderer cannot serialize property bindings, so
|
|
284
|
+
pass initial state as attributes or light DOM. Measurement, observers, canvas and media start after hydration; remote
|
|
285
|
+
content stays client-only ([details](./llms/shared/frameworks-and-ssr.md#ssr-and-declarative-shadow-dom)).
|
|
739
286
|
|
|
740
287
|
## Framework integration (React, Vue, Angular, Svelte)
|
|
741
288
|
|
|
742
|
-
Lyra ships plain custom elements with no
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
For tag, property, event, element-ref, and CSS-custom-property types in framework templates, import
|
|
746
|
-
the matching opt-in declaration entry once in your application's type graph:
|
|
289
|
+
Lyra ships plain custom elements with no wrapper package. Import the opt-in, types-only declaration entry once for
|
|
290
|
+
template types (it registers nothing): `import type {} from "@aceshooting/lyra-ui/custom-elements-jsx"` (React 19),
|
|
291
|
+
`.../vue` or `.../svelte`.
|
|
747
292
|
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
```
|
|
293
|
+
- Bind object, array and function values as JS properties (Vue `:prop`, Angular `[prop]`); a bare `attr="value"`
|
|
294
|
+
sets only a string attribute. Angular needs `schemas: [CUSTOM_ELEMENTS_SCHEMA]` on any module using `<lr-*>`.
|
|
295
|
+
- Events are native kebab-case `CustomEvent`s: `onlr-change={fn}` (React 19, Svelte 5), `@lr-change="fn"` (Vue),
|
|
296
|
+
`(lr-change)="fn()"` (Angular), or `addEventListener('lr-change', fn)`.
|
|
753
297
|
|
|
754
|
-
|
|
755
|
-
They contain types only: they add no runtime wrapper or framework dependency, and they do not
|
|
756
|
-
register elements. Keep importing the granular registration modules your application uses, for
|
|
757
|
-
example `import '@aceshooting/lyra-ui/components/lr-input.js'`.
|
|
758
|
-
|
|
759
|
-
- **Property vs. attribute binding.** A complex-typed property (an object, array, or function — e.g.
|
|
760
|
-
`.strings`, `.selectedRows`, `.markers`) must be bound as a JS _property_, not a stringified
|
|
761
|
-
attribute. Use Vue's `:prop` binding (or the `.prop` modifier), Angular's `[prop]="value"` template
|
|
762
|
-
binding, or a plain property assignment; Svelte's compiler binds to a matching element property
|
|
763
|
-
automatically when one exists, so `prop={value}` mostly just works. A bare `attr="value"` or string
|
|
764
|
-
interpolation only ever sets a string attribute — fine for `variant="brand"`, wrong for anything
|
|
765
|
-
non-string.
|
|
766
|
-
- **Angular needs `CUSTOM_ELEMENTS_SCHEMA`.** Angular's template compiler rejects unknown elements
|
|
767
|
-
and properties by default. Add `schemas: [CUSTOM_ELEMENTS_SCHEMA]` to the module (or standalone
|
|
768
|
-
component) that uses any `<lr-*>` tag so Angular stops trying to resolve it as an Angular
|
|
769
|
-
component.
|
|
770
|
-
- **Custom events need the framework's DOM event-binding syntax, not its component-event
|
|
771
|
-
shorthand.** A framework's usual event shorthand (Vue's `@event` on a _Vue component_, Angular's
|
|
772
|
-
`(event)` output binding) is wired for that framework's own event system; a plain custom element's
|
|
773
|
-
events are native `CustomEvent`s and need the same binding path used for native DOM events —
|
|
774
|
-
`onlr-change={handler}` in React 19, `@lr-change="handler"` in Vue,
|
|
775
|
-
`(lr-change)="handler()"` in Angular, or `onlr-change={handler}` in Svelte 5
|
|
776
|
-
(`on:lr-change={handler}` remains accepted by Svelte's legacy event-directive syntax). Use
|
|
777
|
-
`element.addEventListener('lr-change', handler)` directly when a template binding isn't
|
|
778
|
-
available. Lyra's own event names are consistently kebab-case (`lr-change`, `lr-cell-click`,
|
|
779
|
-
`lr-selection-change`, …) rather than camelCase, specifically to stay friendly to this binding
|
|
780
|
-
path — some other custom-element libraries use camelCase event names, which can silently fail to
|
|
781
|
-
bind in an in-DOM (non-compiled) Vue template because HTML attribute/directive names are
|
|
782
|
-
case-insensitive there; `addEventListener` works regardless of case either way.
|
|
298
|
+
More: [`llms/shared/frameworks-and-ssr.md`](./llms/shared/frameworks-and-ssr.md#framework-integration).
|
|
783
299
|
|
|
784
300
|
## Editor autocomplete (VS Code, JetBrains)
|
|
785
301
|
|
|
786
|
-
TypeScript consumers
|
|
787
|
-
`
|
|
788
|
-
|
|
789
|
-
`
|
|
790
|
-
|
|
791
|
-
[`html.customData`](https://code.visualstudio.com/docs/languages/html#_html-custom-data) and
|
|
792
|
-
[`css.customData`](https://code.visualstudio.com/docs/languages/css#_css-custom-data) settings at
|
|
793
|
-
them — typically in a workspace `.vscode/settings.json` so the whole team picks it up:
|
|
794
|
-
|
|
795
|
-
```json
|
|
796
|
-
{
|
|
797
|
-
"html.customData": [
|
|
798
|
-
"./node_modules/@aceshooting/lyra-ui/vscode-html-data.json"
|
|
799
|
-
],
|
|
800
|
-
"css.customData": ["./node_modules/@aceshooting/lyra-ui/vscode-css-data.json"]
|
|
801
|
-
}
|
|
802
|
-
```
|
|
803
|
-
|
|
804
|
-
Both settings accept an array, so add these alongside any other custom-data files the workspace
|
|
805
|
-
already references. WebStorm/IntelliJ users get more from the bundled `web-types.json`, with no
|
|
806
|
-
extra configuration once the package is installed: tag, attribute, JS property (`.prop=${…}`), DOM
|
|
807
|
-
event (`@lr-event=${…}`), slot and custom-property completion. The property and event contributions
|
|
808
|
-
matter most here — these are Lit components, so the idiomatic binding style is `.prop=`/`@event=`
|
|
809
|
-
rather than attributes, and 865 public members are declared `attribute: false` and reachable no other
|
|
810
|
-
way. The VS Code custom-data format defines no properties/events/slots concept, so in
|
|
811
|
-
`vscode-html-data.json` those names remain reference prose in each tag's hover description. CSS-part
|
|
812
|
-
names are prose in both files.
|
|
302
|
+
TypeScript consumers get completion from `HTMLElementTagNameMap`. For HTML, in-DOM templates and CSS install
|
|
303
|
+
[`@aceshooting/lyra-ide`](../lyra-ide): `web-types.json` works in WebStorm/IntelliJ, and `vscode-html-data.json` /
|
|
304
|
+
`vscode-css-data.json` plug into VS Code's `html.customData` and `css.customData` (setup in its README). In its
|
|
305
|
+
`custom-elements.json`, `cssParts` is flattened but `attributes`/`members`/`events`/`slots`/`cssProperties` list only a
|
|
306
|
+
declaration's own and overridden entries; walk the `superclass` chain or use the resolved `web-types.json`.
|
|
813
307
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
```ts
|
|
817
|
-
import manifest from '@aceshooting/lyra-ui/custom-elements.json' with { type: 'json' };
|
|
818
|
-
```
|
|
819
|
-
|
|
820
|
-
A subclass declaration's `cssParts` is always fully flattened (everything inherited included), but
|
|
821
|
-
`attributes`/`members`/`events`/`slots`/`cssProperties` list only a declaration's own entries plus
|
|
822
|
-
any inherited entry it overrides — intentional, since a TypeScript/JS consumer already resolves the
|
|
823
|
-
rest through the generated `.d.ts` `extends` chain. Reading `custom-elements.json` directly for
|
|
824
|
-
those four kinds means walking each declaration's own `superclass` chain, or using the already-
|
|
825
|
-
resolved `web-types.json`/`vscode-html-data.json` above instead.
|
|
826
|
-
|
|
827
|
-
**Which tags a per-tag entry registers.** Each stable per-tag entry
|
|
828
|
-
(`@aceshooting/lyra-ui/components/lr-<name>.js`) can, at import time, define more than one custom
|
|
829
|
-
element: importing `lr-table.js` also registers `<lr-empty>`, `<lr-pagination>`, `<lr-skeleton>` and
|
|
830
|
-
`<lr-spinner>`, because `lr-table`'s registration entry imports those composed children's own
|
|
831
|
-
registration entries before defining `<lr-table>` itself. `custom-elements.json` has no field for
|
|
832
|
-
this — it declares one custom element per family source module, not per stable entry specifier —
|
|
833
|
-
so build tooling that needs to verify statically "does importing this specifier register that tag"
|
|
834
|
-
(a lint rule, a contract test, a bundler safety check) reads the generated `registrations.json`
|
|
835
|
-
instead:
|
|
836
|
-
|
|
837
|
-
```ts
|
|
838
|
-
import registrations from '@aceshooting/lyra-ui/registrations.json' with { type: 'json' };
|
|
839
|
-
|
|
840
|
-
const table = registrations.entries.find((entry) => entry.tag === 'lr-table');
|
|
841
|
-
table?.registers; // ['lr-empty', 'lr-pagination', 'lr-skeleton', 'lr-spinner', 'lr-table']
|
|
842
|
-
```
|
|
843
|
-
|
|
844
|
-
Each entry's `registers` is derived from the same transitive-import analysis
|
|
845
|
-
`scripts/check-component-dependencies.mjs` already performs (not a second hand-maintained list),
|
|
846
|
-
covers every published component, and is regenerated by `pnpm run registration-graph`.
|
|
308
|
+
A per-tag entry can register several elements (`components/lr-table.js` also defines `<lr-empty>`, `<lr-pagination>`,
|
|
309
|
+
`<lr-skeleton>` and `<lr-spinner>`); tooling reads `registrations.json` (`entries[].registers`; `pnpm run registration-graph`).
|
|
847
310
|
|
|
848
311
|
## Components
|
|
849
312
|
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
|
857
|
-
|
|
|
858
|
-
| `<lr-
|
|
859
|
-
| `<lr-
|
|
860
|
-
| `<lr-
|
|
861
|
-
| `<lr-
|
|
862
|
-
| `<lr-
|
|
863
|
-
| `<lr-
|
|
864
|
-
| `<lr-
|
|
865
|
-
| `<lr-
|
|
866
|
-
| `<lr-
|
|
867
|
-
| `<lr-
|
|
868
|
-
| `<lr-
|
|
869
|
-
| `<lr-
|
|
870
|
-
| `<lr-
|
|
871
|
-
| `<lr-input>`
|
|
872
|
-
| `<lr-
|
|
873
|
-
| `<lr-
|
|
874
|
-
| `<lr-
|
|
875
|
-
| `<lr-
|
|
876
|
-
| `<lr-
|
|
877
|
-
| `<lr-
|
|
878
|
-
| `<lr-
|
|
879
|
-
| `<lr-
|
|
880
|
-
| `<lr-
|
|
881
|
-
| `<lr-
|
|
882
|
-
| `<lr-
|
|
883
|
-
| `<lr-
|
|
884
|
-
| `<lr-
|
|
885
|
-
| `<lr-
|
|
886
|
-
| `<lr-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
|
891
|
-
|
|
|
892
|
-
| `<lr-
|
|
893
|
-
| `<lr-
|
|
894
|
-
| `<lr-
|
|
895
|
-
| `<lr-include>` | `wa-include` / `sl-include` | Loads sanitized HTML or text content from a URL |
|
|
896
|
-
| `<lr-known-date>` | `wa-known-date` | Form-associated date entry control with separate day, month, and year fields |
|
|
897
|
-
| `<lr-lightbox>` | — (extra) | Full-screen modal image viewer with navigation and pan/zoom |
|
|
898
|
-
| `<lr-qr-code>` | `wa-qr-code` / `sl-qr-code` | Canvas QR renderer; needs the optional peer `qrcode` |
|
|
899
|
-
| `<lr-random-content>` | `wa-random-content` | Random, unique, or sequential slotted-content selection with autoplay |
|
|
900
|
-
| `<lr-timeline>` + `<lr-timeline-item>` | — (extra) | Vertical or horizontal chronological event layout |
|
|
901
|
-
| `<lr-tour>` | — (extra) | Anchored onboarding tour with spotlight, keyboard navigation, and focus management |
|
|
902
|
-
|
|
903
|
-
**Dashboard atoms**
|
|
904
|
-
|
|
905
|
-
| Component | Mirrors | Notes |
|
|
906
|
-
| ---------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
907
|
-
| `<lr-empty>` | — (extra) | Generic empty/no-data state |
|
|
908
|
-
| `<lr-skeleton>` | `wa-skeleton` / `sl-skeleton` | Loading placeholder (pulse/sheen) |
|
|
909
|
-
| `<lr-scroller>` | `wa-scroller` | Responsive overflow surface with optional navigation controls |
|
|
910
|
-
| `<lr-resize-observer>` | `wa-resize-observer` / `sl-resize-observer` | Lifecycle-managed ResizeObserver for slotted elements |
|
|
911
|
-
| `<lr-intersection-observer>` | `wa-intersection-observer` | Lifecycle-managed IntersectionObserver for slotted elements |
|
|
912
|
-
| `<lr-mutation-observer>` | `wa-mutation-observer` / `sl-mutation-observer` | Lifecycle-managed MutationObserver for slotted elements |
|
|
913
|
-
| `<lr-stat>` | — (extra) | KPI/stat card with trend pill and an optional breakdown row list; either can carry an `exactValue` shown as a hover/focus tooltip alongside the rounded/formatted display value |
|
|
914
|
-
| `<lr-data-grid>` | `wa-data-grid` | Virtualized client/server data grid with sorting, filtering, grouping, selection, column controls, tree/detail rows, paging, CSV export, and the complete experimental 3.11 public surface |
|
|
915
|
-
| `<lr-table>` | — (extra) | Sort/select-aware data table with optional controlled filtering, client/server-friendly pagination, loading state, consumer-owned inline editing, expandable rows, sticky columns, and responsive `priority` columns |
|
|
916
|
-
| `<lr-pagination>` | `wa-pagination` | Controlled previous/next and validated page-jump navigation with a localized range summary, loading/empty states, RTL icons, and container-responsive stacking |
|
|
917
|
-
| `<lr-gauge>` | — (extra) | Radial, full-circle ring, or linear meter with a per-instance fill token |
|
|
918
|
-
| `<lr-export-button>` | — (extra) | Injection-safe CSV/JSON downloads plus event-handled custom format descriptors and controlled busy state |
|
|
919
|
-
| `<lr-copy-button>` | `wa-copy-button` / `sl-copy-button` | Standalone icon-only copy-to-clipboard button for a plain text value, no positioning opinion |
|
|
920
|
-
| `<lr-multi-split>` | — (extra) | Resizable multi-panel layout; one pane can opt into responsive `collapse` (`"start"`/`"end"`) to a fixed-width rail, then a floating overlay card, as the split's container narrows |
|
|
921
|
-
| `<lr-split-panel>` | `wa-split-panel` / `sl-split-panel` | Exact two-pane split contract with named `start`/`end` content, percent/pixel positioning, primary-pane sizing, snapping, constraints, and an accessible divider |
|
|
922
|
-
| `<lr-widget>` | — (extra) | Card shell with collapsible header, fullscreen, and customizable chrome |
|
|
923
|
-
| `<lr-word-cloud>` | — (extra) | Zero-dependency SVG word/tag cloud, spiral-placed by weight |
|
|
924
|
-
| `<lr-badge>` + `<lr-tag>` | `wa-badge` / `wa-tag` / `sl-badge` / `sl-tag` | Compact semantic status labels |
|
|
925
|
-
| `<lr-alert>` | `sl-alert` | Closed-by-default inline alert with timed dismissal, countdown, and identity-preserving toast promotion |
|
|
926
|
-
| `<lr-callout>` | `wa-callout` | Dismissible inline status, warning, and error message surface |
|
|
927
|
-
| `<lr-divider>` | `wa-divider` / `sl-divider` | Horizontal or vertical semantic separator |
|
|
928
|
-
| `<lr-rating>` | `wa-rating` / `sl-rating` | Keyboard-accessible star rating slider |
|
|
929
|
-
|
|
930
|
-
**Temporal & graph**
|
|
931
|
-
|
|
932
|
-
| Component | Mirrors | Notes |
|
|
933
|
-
| ------------------------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
934
|
-
| `<lr-time-range>` | — (extra) | Two-handle brush/scrubber over a numeric domain |
|
|
935
|
-
| `<lr-sequence-playback>` | — (extra) | Play/pause sequence index stepper over `itemCount`, with `currentIndex` and `lr-sequence-step` |
|
|
936
|
-
| `<lr-heatmap>` | — (extra) | DPR-aware Canvas heatmap with matrix and calendar (`mode="calendar"`) layouts, `fit-to-width` responsive scaling |
|
|
937
|
-
| `<lr-funnel>` | — (extra) | Dependency-free conversion funnel: each stage a bar sized as its share of the FIRST stage, labelled with both its absolute value and its share, with per-stage drop-off and an optional comparison series normalized to its own first stage; plain HTML, so the accessible representation is the chart itself |
|
|
938
|
-
| `<lr-sequence-strip>` | — (extra) | Compact, one-thin-cell-per-item strip visualizing a sequence of categorical states with an optional secondary per-cell marker — pure CSS/flex, no chart.js/SVG/canvas; a named roving `role="list"` whose `role="listitem"` cells support Arrow/Home/End navigation and controlled activation through click or Enter/Space (`lr-item-activate`) |
|
|
939
|
-
| `<lr-graph>` | — (extra) | Force-directed node-link diagram with pan/zoom/drag, directed/styled relationship links, and rich accessible metadata — needs the optional peer deps `d3-force`, `d3-drag`, `d3-zoom`, `d3-selection` |
|
|
940
|
-
| `<lr-tree>` + `<lr-tree-item>` | `wa-tree` / `wa-tree-item` / `sl-tree` / `sl-tree-item` | Expand/collapse hierarchy with structured icon/label/description/badge rows, optional richer accessible labels, and APG tree keyboard navigation |
|
|
941
|
-
|
|
942
|
-
**Flow canvas — workflow & DAG diagramming**
|
|
943
|
-
|
|
944
|
-
| Component | Mirrors | Notes |
|
|
945
|
-
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
946
|
-
| `<lr-flow-canvas>` | — (extra) | Pannable/zoomable DAG workflow canvas — positions node cards, draws SVG edges, and runs a shared layered auto-layout for unpositioned nodes; readonly (viewer) by default, opt into editor gestures individually via `nodes-draggable`/`connectable`/`droppable`; a controlled component, never mutates `nodes`/`edges` itself |
|
|
947
|
-
| `<lr-flow-node>` | — (extra) | The default workflow node card — header/body/toolbar chrome, tool-lifecycle `status` tones, and named connection-handle elements edges anchor to; purely presentational, used as `lr-flow-canvas`'s default card, a slotted override, or standalone |
|
|
948
|
-
| `<lr-flow-minimap>` | — (extra) | Corner overview map of a `lr-flow-canvas` — scaled node rectangles plus a draggable viewport rectangle; resolves its target canvas via `for` (or the nearest ancestor) and reads geometry only from the canvas's `registerCompanion()` snapshots, never `nodes` directly |
|
|
949
|
-
| `<lr-flow-controls>` | — (extra) | The canvas's zoom-in/zoom-out, fit, and interaction-lock button cluster; drives only view state on a resolved `for` canvas, never touches `nodes`/`edges` |
|
|
950
|
-
| `<lr-node-palette>` | — (extra) | Searchable, categorized node library for workflow editors — drag an item onto a canvas or place it by keyboard, emitting `lr-palette-place`/`lr-select`; never creates nodes or touches a canvas's data itself |
|
|
951
|
-
| `<lr-flow-run-status>` | — (extra) | Execution-state companion for a `lr-flow-canvas` — pushes a `FlowRunDecorations` map into the resolved canvas and renders a compact "{done} of {total} steps complete" run-summary strip; pure pushed state, never executes or polls anything |
|
|
952
|
-
|
|
953
|
-
**Knowledge graph & RAG exploration**
|
|
954
|
-
|
|
955
|
-
| Component | Mirrors | Notes |
|
|
956
|
-
| ------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
957
|
-
| `<lr-graph-legend>` | — (extra) | Node-type legend for a paired `lr-graph` — one swatch/label/count row per node type, doubling as visibility filters via `lr-visibility-change`; never reads or writes a graph directly |
|
|
958
|
-
| `<lr-entity-card>` | — (extra) | Knowledge-graph entity dossier card — type badge, description, key/value property rows, degree, community chip, and a built-in "focus in graph" action (`lr-entity-select`); never fetches or focuses a graph itself |
|
|
959
|
-
| `<lr-entity-chip>` | — (extra) | Inline `@entity` mention for agent prose — flow content, keyboard-focusable, with a hover/focus preview popover; the knowledge-graph sibling of `lr-citation-badge`, carrying ids through events only |
|
|
960
|
-
| `<lr-neighbor-list>` | — (extra) | One entity's relationship rows — relation, direction, neighbor — with per-row navigate and expand-in-graph affordances; never computes neighbors itself or mutates a graph |
|
|
961
|
-
| `<lr-path-strip>` | — (extra) | Compact, horizontally scrollable node → relation → node chain rendering "why A connects to B" (GraphRAG local-search reasoning paths); one-dimensional and presentational, no path finding |
|
|
962
|
-
| `<lr-community-card>` | — (extra) | GraphRAG community/cluster summary card — label, LLM summary excerpt, member count, member chips with overflow, and a drill-in action (`lr-drill`); doesn't own community rendering or membership fetching |
|
|
963
|
-
| `<lr-chunk-inspector>` | — (extra) | Ranked retrieved-chunks list — relevance score bars with tier tones, expandable chunk text, and a `lr-chunk-open` deep-link event that lands a chunk in `lr-document-viewer`; never fetches, ranks, or dedupes |
|
|
964
|
-
| `<lr-source-picker>` | — (extra) | Checkbox tree/list scoping which sources ground the next answer — tri-state folders, select-all, type icons, search; deliberately not form-associated, an immediate app-state scoping panel wired through `lr-selection-change` |
|
|
965
|
-
| `<lr-provenance-panel>` | — (extra) | Sectioned grounding-breakdown disclosure panel for one answer (Entities / Relationships / Communities / Text chunks), composing `lr-entity-chip`/`lr-path-strip`/`lr-community-card`/`lr-chunk-inspector`; pure projection and event conduit, no fetching |
|
|
966
|
-
| `<lr-mind-map>` | — (extra) | Radial expandable topic tree (NotebookLM-style mind map) — zero-dependency SVG with a closed-form radial layout; hierarchy only, no cross-links, force simulation, communities, or edge labels (that's `lr-graph`) |
|
|
967
|
-
| `<lr-knowledge-graph-explorer>` | — (extra) | Orchestration-level surface for exploring a knowledge graph — the `lr-graph` canvas plus entity search, type filters, neighborhood expansion, pinned nodes, path finding between pins, and a details overlay; composes `lr-graph`, `lr-graph-legend`, `lr-entity-card`, `lr-neighbor-list`, `lr-path-strip`, and `lr-popover.showAt()` rather than re-implementing graph rendering itself |
|
|
968
|
-
| `<lr-graph-query-builder>` | — (extra) | Editor for a single typed relationship/path filter (`GraphQuery`) over a knowledge graph — start/end entity anchors, relationship-type and node-type pickers with a removable active-filter chip display, a traversal direction, a min/max hop range, validation, and a host-persisted saved-query list; a serializable query model for GraphRAG workflows |
|
|
969
|
-
| `<lr-entity-dossier>` | — (extra) | Full entity detail surface — a persistent header (`lr-entity-card` plus a confidence `lr-stat`) above an `lr-tab-group` strip for Relationships (`lr-neighbor-list`), Supporting chunks (`lr-chunk-inspector`), and Provenance (`lr-provenance-panel`); pure layout, never fetches or mutates graph/document state |
|
|
970
|
-
| `<lr-embedding-explorer>` | — (extra) | Accessible SVG projection of host-provided embedding points with cluster coloring and a visible cluster legend, roving keyboard focus, and `lr-point-select`; it never filters points, computes embeddings, or owns dimensionality reduction |
|
|
971
|
-
|
|
972
|
-
**Retrieval & grounding**
|
|
973
|
-
|
|
974
|
-
| Component | Mirrors | Notes |
|
|
975
|
-
| ------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
976
|
-
| `<lr-retrieval-search>` | — (extra) | Query bar for a retrieval/RAG surface — query text, an active-filter/scope chip row, a vector/keyword/hybrid mode selector, and loading/error/empty status feedback; fully controlled, emits `lr-search` only and never performs retrieval itself |
|
|
977
|
-
| `<lr-retrieval-results>` | — (extra) | Orchestration-level ranked-chunk-list surface — deduplication, optional grouping by source, multi-selection, pagination/infinite loading, and a compact/expanded presentation switch; composes an `lr-chunk-inspector` per row and an internal `lr-virtual-list` for large result sets |
|
|
978
|
-
| `<lr-retrieval-trace>` | — (extra) | Retrieval pipeline's stage timeline (query rewriting, embedding, retrieval, reranking, filtering) rendered through `lr-span-waterfall`, plus a disclosure list exposing each stage's evidence (chunks via `lr-chunk-inspector`, free-form text, and/or metadata); never fetches or computes retrieval results itself |
|
|
979
|
-
| `<lr-grounding-summary>` | — (extra) | Claim-level scorecard for one generated answer — supported/unsupported claim counts, citation coverage, an optional confidence score, warnings, and (when supplied) a list of evidence citations; composes `lr-stat` and `lr-citation-badge`, pure projection and event conduit |
|
|
980
|
-
| `<lr-claim-evidence>` | — (extra) | One claim's support verdict, score, citations, and evidence excerpts, with typed citation activation for opening the original source |
|
|
981
|
-
| `<lr-context-inspector>` | — (extra) | Inspection view of the exact context assembled for a model call — per-segment token estimates via `lr-context-meter`, source attribution via `lr-citation-badge`, copy/export affordances, and truncation-boundary/redaction-marker rendering; pure projection, never fetches, estimates, or redacts itself |
|
|
982
|
-
| `<lr-rag-answer>` | — (extra) | Grounded answer surface composing sanitized Markdown, claim-level grounding summary, citation badges, and source cards; controlled, localized, and emits citation/retry events without fetching data |
|
|
983
|
-
| `<lr-retrieval-compare>` | — (extra) | Side-by-side comparison of retrieval runs, including latency, hit count, score, and overlapping source identifiers; controlled and computation-free |
|
|
984
|
-
| `<lr-rag-eval-dashboard>` | — (extra) | Aggregate RAG quality scorecard for groundedness, citation coverage, relevance, recall, latency, and cost, with per-case drill-in events |
|
|
985
|
-
|
|
986
|
-
**Knowledge base & document management**
|
|
987
|
-
|
|
988
|
-
| Component | Mirrors | Notes |
|
|
989
|
-
| --------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
990
|
-
| `<lr-knowledge-base>` | — (extra) | Source list for a retrieval knowledge base — sync status, indexing health, permissions, and per-row create/sync/pause/delete affordances; a controlled data view that never syncs or indexes anything itself, only presents `sources` and emits request-only events |
|
|
991
|
-
| `<lr-ingestion-queue>` | — (extra) | Controlled list of documents moving through an ingestion pipeline (upload → text extraction → chunking → embedding → indexing), each row showing its stage, progress, chunk/embedding counts, and a retry or cancel affordance; presentation only, virtualizes above `virtualizeAt` items |
|
|
992
|
-
| `<lr-document-library>` | — (extra) | Searchable, filterable inventory of documents with versions, tags, owners, freshness, and bulk selection; composes `lr-table` for the grid and `lr-input`/`lr-combobox` for search and tag-facet filtering — a controlled data view, no upload/sync/mutation of its own |
|
|
993
|
-
| `<lr-document-compare>` | — (extra) | Side-by-side or inline comparison of two document versions, composed from `lr-diff-view` (`view="diff"`, the default) and `lr-document-preview` (`view="side-by-side"`), with proportional scroll sync and matching-highlight activation keeping the two independent preview panes aligned |
|
|
994
|
-
| `<lr-knowledge-base-admin>` | — (extra) | Tabbed knowledge-base operations shell composing source management and ingestion queue views; controlled, action-forwarding, and suitable for host-owned settings content |
|
|
995
|
-
|
|
996
|
-
**Agent runs & observability**
|
|
997
|
-
|
|
998
|
-
| Component | Mirrors | Notes |
|
|
999
|
-
| ---------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1000
|
-
| `<lr-agent-run>` | — (extra) | Top-level shell for one `AgentRun` — lifecycle-status badge, elapsed time, current step, model/cost summary, and built-in Cancel/Retry controls in a header, plus `tasks`/`tools`/`reasoning`/`output` composition slots; a shell only, every piece of per-step rendering routes through an existing primitive |
|
|
1001
|
-
| `<lr-agent-workspace>` | — (extra) | Responsive controlled AI workspace composing the transcript, composer, agent run, tool timeline, retrieval results, grounding summary, and context inspector, with replaceable message/details/composer slots |
|
|
1002
|
-
| `<lr-subagent-panel>` | — (extra) | Parent/child agent hierarchy with lifecycle status, task summaries, and typed selection/cancel events; the host owns orchestration |
|
|
1003
|
-
| `<lr-agent-trace>` | — (extra) | Provider-neutral agent/LLM trace view — a span-kind filter row, a handoff quick-jump list, and the full trace hierarchy, all rendered through `lr-trace-tree` over one shared `LyraSpan[]` array |
|
|
1004
|
-
| `<lr-mcp-app>` | — (extra) | Sandboxed MCP Apps host with a required resource descriptor containing a non-empty URI and exactly one of HTML or source URL, plus CSP and permission-policy inputs; validates remote URLs, uses a no-referrer frame, and emits ready plus host-authorized request events |
|
|
1005
|
-
| `<lr-prompt-studio>` | — (extra) | Versioned prompt editing and testing workspace with variable inputs, controlled run events, and version-selection events |
|
|
1006
|
-
| `<lr-json-schema-viewer>` | — (extra) | Read-only, recursively rendered JSON Schema browser for tool inputs, structured outputs, and protocol payloads |
|
|
1007
|
-
| `<lr-tool-timeline>` | — (extra) | Chronological list of an agent run's tool/function calls, each rendered through `lr-tool-call-chip` (name/status/duration) and `lr-tool-result-view` (args/result), with per-entry retry counts, sensitive-field redaction, and a shared `lr-tool-approval-dialog` for entries gated behind human approval |
|
|
1008
|
-
| `<lr-memory-panel>` | — (extra) | Agent working-memory surface — short-term context and long-term memories, each item's confidence and optional grounding provenance via `lr-provenance-panel`, with add/remove/forget actions gated behind an `lr-confirm-bar` confirmation step |
|
|
1009
|
-
| `<lr-policy-summary>` | — (extra) | Read-only list of guardrail, permission, privacy, and tool-policy decisions (`allow`/`deny`/`needs-review`), each with an always-visible, accessible explanation never conveyed by color alone; composes `lr-badge`, with `lr-details` for optional richer detail |
|
|
1010
|
-
| `<lr-approval-queue>` | — (extra) | Keyboard-accessible pending human-approval list composing `lr-tool-approval-dialog`; forwards namespaced selection, decision, and close events without owning persistence |
|
|
1011
|
-
|
|
1012
|
-
**Dashboards & orchestration**
|
|
1013
|
-
|
|
1014
|
-
| Component | Mirrors | Notes |
|
|
1015
|
-
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1016
|
-
| `<lr-dashboard-grid>` | — (extra) | Responsive, keyboard-accessible widget grid — positions `layout` entries on a CSS Grid, composing `lr-widget` + `lr-widget-renderer` for each cell's default content, with drag/resize/collision handled as controlled events; readonly (viewer) by default, opt into editor gestures via `cells-draggable`/`cells-resizable` |
|
|
1017
|
-
| `<lr-filter-bar>` | — (extra) | Row of dashboard filters declared by the host (`filters`) rather than invented by this component — each composes an existing Lyra input (`lr-select`/`lr-combobox`/`lr-date-input`), plus a removable `lr-chip-group` summary and a reset button; controlled, emits a single `lr-input` carrying the full resulting value |
|
|
1018
|
-
| `<lr-condition-builder>` | — (extra) | Composable condition builder for tabular/dashboard data — a flat list of field/operator/value rows combined with one AND/OR combinator; fully controlled, distinct from `lr-graph-query-builder`'s typed graph/path queries |
|
|
1019
|
-
| `<lr-drilldown-panel>` | — (extra) | Controlled navigation from a chart/table datum to its related evidence, documents, entities, or agent runs — a breadcrumb trail (`lr-breadcrumb`) over `path` plus, per category the current node has content for, the matching existing primitive (`lr-source-card`, `lr-document-preview`, `lr-entity-card`), wrapped in `lr-tab-group` only when more than one category applies |
|
|
1020
|
-
|
|
1021
|
-
**Evaluation**
|
|
1022
|
-
|
|
1023
|
-
| Component | Mirrors | Notes |
|
|
1024
|
-
| --------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1025
|
-
| `<lr-eval-dataset>` | — (extra) | Dataset management for an evaluation suite — a filterable/taggable list of `EvalExample` rows via `lr-table`, an `lr-chip`/`lr-chip-group` tag-based browse filter, and add/remove/import/export affordances; fully controlled, never mutates `examples` or performs I/O itself |
|
|
1026
|
-
| `<lr-eval-run>` | — (extra) | Evaluation batch's live progress — an overall `lr-progress-bar` counting terminal (done/error/cancelled) examples against the batch total, plus one `lr-details` disclosure per example showing input/output, an optional `lr-grounding-summary`, and an optional `lr-tool-timeline` |
|
|
1027
|
-
| `<lr-eval-result>` | — (extra) | Rubric scoring, human review, and comparison across a single evaluation example's runs — composes `lr-table` for the runs comparison table, `lr-rubric-form` for the selected run's human-review scoring, and `lr-diff-view` to compare a run's output against a baseline run |
|
|
1028
|
-
| `<lr-agent-eval-dashboard>` | — (extra) | Evaluation metric dashboard with locale-aware KPI cards, optional trend chart, and selectable run history; controlled and emits metric/run selection events |
|
|
1029
|
-
|
|
1030
|
-
**Overlays**
|
|
1031
|
-
|
|
1032
|
-
| Component | Mirrors | Notes |
|
|
1033
|
-
| ------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
313
|
+
All 308 tags appear below: the table lists components mirroring a Web Awesome or Shoelace tag, the lists after it the
|
|
314
|
+
original ones. Purpose and import path: [`llms/index.md`](./llms/index.md); full APIs: `llms/components/<tag>.md`
|
|
315
|
+
and the [live docs](https://aceshooting.github.io/lyra-ui/).
|
|
316
|
+
|
|
317
|
+
| Component | Mirrors | Notes |
|
|
318
|
+
| --- | --- | --- |
|
|
319
|
+
| `<lr-combobox>` + `<lr-option>` | `wa-combobox` / `wa-option` / `sl-option` | Filterable single/multi select, form-associated; options separate live `selected` from attribute-backed/reset `defaultSelected`; `xs`–`xl` sizing; async rich rows and retained selection payloads via `source`/`selectedRows`; virtual scrolling with `max-render` |
|
|
320
|
+
| `<lr-select>` | `wa-select` / `sl-select` | Closed-list single-select, button trigger (not a text input, no filtering); form-associated, shares `<lr-option>` with `lr-combobox` |
|
|
321
|
+
| `<lr-date-picker>` | `wa-date-picker` | Inline calendar, single + range |
|
|
322
|
+
| `<lr-date-input>` | `wa-date-input` | Date field + calendar popover, form-associated |
|
|
323
|
+
| `<lr-toast>` + `<lr-toast-item>` + `toast()` | `wa-toast` / `wa-toast-item` | Stacking notifications |
|
|
324
|
+
| `<lr-sparkline>` | `wa-sparkline` | Zero-dependency inline SVG |
|
|
325
|
+
| `<lr-textarea>` | `wa-textarea` / `sl-textarea` | Form-associated multiline field with label/hint/error chrome, auto-resize, native editing passthrough, and caret APIs |
|
|
326
|
+
| `<lr-input>` | `wa-input` / `sl-input` | Form-associated single-line field (`text`/`password`/`email`/`number`/`time`/`search`/`date`/`datetime-local`/`tel`/`url`) with label/hint/error chrome and a built-in password-visibility toggle |
|
|
327
|
+
| `<lr-number-input>` + `<lr-time-input>` | `wa-number-input` / `wa-time-input` | Numeric input and locale-aware segmented time input |
|
|
328
|
+
| `<lr-color-picker>` | `wa-color-picker` / `sl-color-picker` | Form-associated native color picker with label/hint chrome |
|
|
329
|
+
| `<lr-checkbox-group>` | `wa-checkbox-group` | Form-associated group of checkboxes with array values and group validation |
|
|
330
|
+
| `<lr-icon>` + `<lr-icon-button>` | `wa-icon` / `sl-icon` / `sl-icon-button` | Dependency-free SVG icons and accessible icon-only actions; migrated icon names outside the eleven-name built-in set require a registered library |
|
|
331
|
+
| `<lr-button>` | `wa-button` / `sl-button` | Generic action-button primitive (`variant`/`appearance`/`size`/`loading`), owns `type="submit"`/`"reset"` via its browser-resolved form owner, including an external owner named by `form` |
|
|
332
|
+
| `<lr-radio>` + `<lr-radio-group>` | `wa-radio` / `wa-radio-group` / `sl-radio` / `sl-radio-group` | Form-associated single-choice controls with roving arrow-key navigation and group validation; Lyra's group `name` defaults empty while Shoelace defaults to `option`, so the codemod inserts `name="option"` (set it for a manual rename) |
|
|
333
|
+
| `<lr-radio-button>` | `sl-radio-button` | The same single-choice control rendered as a button; a `LyraRadio` subclass, so a `<lr-radio-group>` accepts either tag and consecutive siblings collapse into one segmented control |
|
|
334
|
+
| `<lr-otp-input>` | `wa-otp-input` | Form-associated one-time-code field — presentational segments over one real input, so paste, SMS autofill and mobile keyboards work natively and the control stays one tab stop |
|
|
335
|
+
| `<lr-spinner>` | `wa-spinner` / `sl-spinner` | Localized indeterminate busy indicator with reduced-motion support |
|
|
336
|
+
| `<lr-progress-bar>` + `<lr-progress-ring>` | `wa-progress-bar` / `wa-progress-ring` / `sl-progress-bar` / `sl-progress-ring` | Determinate or indeterminate progress indicators |
|
|
337
|
+
| `<lr-animated-image>` | `wa-animated-image` / `sl-animated-image` | Animated image playback with a captured still frame and reduced-motion support |
|
|
338
|
+
| `<lr-animation>` | `wa-animation` / `sl-animation` | Web Animations API wrapper for declarative preset or custom animations |
|
|
339
|
+
| `<lr-include>` | `wa-include` / `sl-include` | Loads sanitized HTML or text content from a URL |
|
|
340
|
+
| `<lr-known-date>` | `wa-known-date` | Form-associated date entry control with separate day, month, and year fields |
|
|
341
|
+
| `<lr-qr-code>` | `wa-qr-code` / `sl-qr-code` | Canvas QR renderer; needs the optional peer `qrcode` |
|
|
342
|
+
| `<lr-random-content>` | `wa-random-content` | Random, unique, or sequential slotted-content selection with autoplay |
|
|
343
|
+
| `<lr-skeleton>` | `wa-skeleton` / `sl-skeleton` | Loading placeholder (pulse/sheen) |
|
|
344
|
+
| `<lr-scroller>` | `wa-scroller` | Responsive overflow surface with optional navigation controls |
|
|
345
|
+
| `<lr-resize-observer>` | `wa-resize-observer` / `sl-resize-observer` | Lifecycle-managed ResizeObserver for slotted elements |
|
|
346
|
+
| `<lr-intersection-observer>` | `wa-intersection-observer` | Lifecycle-managed IntersectionObserver for slotted elements |
|
|
347
|
+
| `<lr-mutation-observer>` | `wa-mutation-observer` / `sl-mutation-observer` | Lifecycle-managed MutationObserver for slotted elements |
|
|
348
|
+
| `<lr-data-grid>` | `wa-data-grid` | Virtualized client/server data grid with sorting, filtering, grouping, selection, column controls, tree/detail rows, paging, CSV export, and the complete experimental 3.11 public surface |
|
|
349
|
+
| `<lr-pagination>` | `wa-pagination` | Controlled previous/next and validated page-jump navigation with a localized range summary, loading/empty states, RTL icons, and container-responsive stacking |
|
|
350
|
+
| `<lr-copy-button>` | `wa-copy-button` / `sl-copy-button` | Standalone icon-only copy-to-clipboard button for a plain text value, no positioning opinion |
|
|
351
|
+
| `<lr-split-panel>` | `wa-split-panel` / `sl-split-panel` | Exact two-pane split contract with named `start`/`end` content, percent/pixel positioning, primary-pane sizing, snapping, constraints, and an accessible divider |
|
|
352
|
+
| `<lr-badge>` + `<lr-tag>` | `wa-badge` / `wa-tag` / `sl-badge` / `sl-tag` | Compact semantic status labels |
|
|
353
|
+
| `<lr-alert>` | `sl-alert` | Closed-by-default inline alert with timed dismissal, countdown, and identity-preserving toast promotion |
|
|
354
|
+
| `<lr-callout>` | `wa-callout` | Dismissible inline status, warning, and error message surface |
|
|
355
|
+
| `<lr-divider>` | `wa-divider` / `sl-divider` | Horizontal or vertical semantic separator |
|
|
356
|
+
| `<lr-rating>` | `wa-rating` / `sl-rating` | Keyboard-accessible star rating slider |
|
|
357
|
+
| `<lr-tree>` + `<lr-tree-item>` | `wa-tree` / `wa-tree-item` / `sl-tree` / `sl-tree-item` | Expand/collapse hierarchy with structured icon/label/description/badge rows, optional richer accessible labels, and APG tree keyboard navigation |
|
|
1034
358
|
| `<lr-popover>` + `<lr-tooltip>` + `<lr-dropdown>` | `wa-popover` / `wa-tooltip` / `wa-dropdown` / `sl-tooltip` / `sl-dropdown` | Floating UI-positioned, RTL-aware overlay primitives with light dismiss and trigger ARIA wiring; `focus` activation opens only on keyboard focus (a deliberate narrowing of the upstream behaviour); call `show()` for scripted reveals |
|
|
1035
|
-
| `<lr-popup>`
|
|
1036
|
-
| `<lr-
|
|
1037
|
-
|
|
1038
|
-
**Charts**
|
|
1039
|
-
|
|
1040
|
-
| Component | Mirrors | Notes |
|
|
1041
|
-
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1042
|
-
| `<lr-chart>` | `wa-chart` | Core Chart.js wrapper (`LyraChartSeries`-based, plus raw `config` passthrough) with bounded `appendData()` streaming and `exportData('csv' | 'png')`— needs`chart.js`, plus `chartjs-plugin-zoom`when`zoomable`is enabled and`chartjs-plugin-datalabels`when`data-labels`/`stack-totals` is enabled |
|
|
359
|
+
| `<lr-popup>` | `wa-popup` / `sl-popup` | The low-level anchored-positioning primitive the three above are built on — placement, flip/shift, arrow and virtual anchoring, with no dismiss, focus or ARIA policy of its own |
|
|
360
|
+
| `<lr-chart>` | `wa-chart` | Core Chart.js wrapper (`LyraChartSeries`-based, plus raw `config` passthrough) with bounded `appendData()` streaming and `exportData('csv' |
|
|
1043
361
|
| `<lr-bar-chart>`, `<lr-line-chart>`, `<lr-pie-chart>`, `<lr-doughnut-chart>`, `<lr-scatter-chart>`, `<lr-bubble-chart>`, `<lr-radar-chart>`, `<lr-polar-area-chart>` | `wa-bar-chart` / `wa-line-chart` / `wa-pie-chart` / `wa-doughnut-chart` / `wa-scatter-chart` / `wa-bubble-chart` / `wa-radar-chart` / `wa-polar-area-chart` | Typed `<lr-chart>` subclasses with tag-specific defaults and the full writable `LyraChartType` vocabulary — same optional peer deps as `<lr-chart>` |
|
|
1044
|
-
| `<lr-
|
|
1045
|
-
| `<lr-
|
|
1046
|
-
| `<lr-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
|
1051
|
-
|
|
|
1052
|
-
| `<lr-
|
|
1053
|
-
| `<lr-
|
|
1054
|
-
| `<lr-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
|
1064
|
-
|
|
|
1065
|
-
| `<lr-
|
|
1066
|
-
| `<lr-
|
|
1067
|
-
| `<lr-
|
|
1068
|
-
| `<lr-
|
|
1069
|
-
| `<lr-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
| `<lr-artifact-panel>` | — (extra) | Shell around one agent-generated artifact — title/kind header, preview↔code toggle, version navigation with restore, a streaming indicator, and built-in copy/download actions; renders none of the artifact itself, content is slotted |
|
|
1088
|
-
| `<lr-live-region>` | — (extra) | Throttled/coalesced ARIA live-region announcer for streaming UIs, built on the reusable internal `Announcer` engine |
|
|
1089
|
-
| `<lr-chat-composer>` | — (extra) | Auto-resizing message `<textarea>` + built-in send/stop button; form-associated, Enter-to-send with Shift+Enter/IME handling |
|
|
1090
|
-
| `<lr-suggestion-chips>` | — (extra) | Starter prompts (empty thread) or follow-up suggestions (after a response) as a horizontally scrollable chip row; activation hands the prompt to the host — never composes or sends anything itself |
|
|
1091
|
-
| `<lr-emoji-picker>` | — (extra) | Searchable, keyboard-navigable, form-associated emoji picker; ships no emoji data of its own (`groups` is consumer-suppliable) with an optional convenience auto-loader for a default set |
|
|
1092
|
-
| `<lr-attachment-chip>` | — (extra) | Pre-send or sent file chip with thumbnail/size/upload-progress/retry; derives metadata from a real `File` or from persisted server metadata |
|
|
1093
|
-
| `<lr-attachment-trigger>` | — (extra) | Attach-file affordance for a composer's leading slot; a single icon button, or a `<lr-menu>` when more than one capability (`files`/`image`/`camera`/`audio`) is configured |
|
|
1094
|
-
| `<lr-mention-popover>` | — (extra) | Caret-anchored `@`-mention/`/`-command autocomplete popover for a host-owned `<textarea>`/`<input>`; never takes DOM focus itself |
|
|
1095
|
-
| `<lr-tool-call-block>` | — (extra) | Inline collapsible tool call: status-aware "Used …" header with duration, expanding in place to arguments and result or error; used by `lr-message-parts` `tool-display="block"` |
|
|
1096
|
-
| `<lr-tool-call-chip>` | — (extra) | Compact inline pill for one tool/function call mid-conversation; status-aware glyph/color, optional hover/focus detail tooltip |
|
|
1097
|
-
| `<lr-tool-result-view>` + `registerToolRenderer()` | — (extra) | Dispatches a tool call's result to a host-registered renderer (by tool name or shape `matches()`), falling back to `<lr-json-viewer>` |
|
|
1098
|
-
| `<lr-tool-result-dialog>` | — (extra) | Full tool-call detail overlay: status/duration header plus a consumer-assembled `body` slot (typically a `<lr-tab-group>` of Input/Preview/JSON/Raw) |
|
|
1099
|
-
| `<lr-tool-approval-dialog>` | — (extra) | Human-in-the-loop approve/deny gate for one proposed tool call, with an optional inline JSON argument editor before approving |
|
|
1100
|
-
| `<lr-confirm-bar>` | — (extra) | Inline, non-modal approve/deny block for one proposed action — the in-flow sibling of `<lr-tool-approval-dialog>` for confirmations that shouldn't hijack focus; same `lr-approve-request`/`lr-deny-request` event shapes and localization keys as the dialog |
|
|
1101
|
-
| `<lr-tool-param-form>` | — (extra) | Renders one form control per property of a flat JSON Schema object, for ad hoc tool invocation or approval-time argument editing |
|
|
1102
|
-
| `<lr-change-review>` | — (extra) | Experimental multi-file diff review with controlled per-hunk keep/discard decisions. |
|
|
1103
|
-
| `<lr-agent-question>` | — (extra) | Experimental structured questions with flat MCP form elicitation and explicit response events. |
|
|
1104
|
-
| `<lr-permission-rules>` | — (extra) | Experimental controlled permission rules with visible host-defined scopes. |
|
|
1105
|
-
| `<lr-permission-grant>` | — (extra) | Experimental allow-once, session and deny decisions for host-owned permission requests. |
|
|
1106
|
-
| `<lr-connector-manager>` | — (extra) | Experimental connection-state presentation and actions for MCP servers and connectors. |
|
|
1107
|
-
| `<lr-background-runs>` | — (extra) | Experimental background-run status, open and cancellation requests. |
|
|
1108
|
-
| `<lr-research-progress>` | — (extra) | Experimental ordered research steps with completion and source counts. |
|
|
1109
|
-
| `<lr-budget-meter>` | — (extra) | Experimental finite budget usage, unavailable limits and over-budget presentation. |
|
|
1110
|
-
| `<lr-tool-select-dialog>` | — (extra) | Category-grouped, filterable, searchable dialog for picking which agent tools are enabled in a conversation |
|
|
1111
|
-
| `<lr-command-palette>` | — (extra) | Searchable command menu with groups, keyboard navigation, async-friendly registration, and `mod+k` opening |
|
|
1112
|
-
| `<lr-widget-renderer>` | — (extra) | Renders an agent-streamed declarative JSON widget tree through an immutable allowlisted `type -> lyra tag` registry created with `createWidgetTypeRegistry()`; mapped nodes are real elements with props assigned as JS properties (never `innerHTML`), reused by key across a re-resolve |
|
|
1113
|
-
| `<lr-json-viewer>` | — (extra) | Collapsible, copyable tree view for an arbitrary JSON value; path-keyed expand state survives a streamed in-place `data` patch |
|
|
1114
|
-
| `<lr-citation-badge>` | — (extra) | Inline `[n]` citation marker with a hover/focus preview popover and confidence/verification-status coloring |
|
|
1115
|
-
| `<lr-source-list>` + `<lr-source-card>` | — (extra) | Collapsible "Sources" panel for one chat message, grouping per-source cards with an excerpt + "Show more" full-text toggle |
|
|
1116
|
-
| `<lr-conversation-item>` | — (extra) | Selectable chat-history row with inline rename; usable standalone or as `<lr-virtual-list>`'s `renderItem()` payload |
|
|
1117
|
-
| `<lr-virtual-list>` | — (extra) | Generic windowed/virtualized list host — renders only the viewport's rows as real DOM, for a multi-thousand-row history sidebar |
|
|
1118
|
-
| `<lr-thread-list>` | — (extra) | Conversation sidebar — grouped, searchable chat-session list with pin/archive/delete/rename affordances; data mode renders `<lr-conversation-item>` rows through an internal `<lr-virtual-list>`, slotted mode renders host-supplied items as-is |
|
|
1119
|
-
| `<lr-app-rail>` + `<lr-app-rail-item>` + `<lr-app-rail-group>` | — (extra) | Responsive navigation rail: `full` ↔ `icon-only` ↔ `mobile` overlay, tracked off live viewport-width breakpoints; the item provides an accessible icon/label link or button, and the group gathers items under an optional collapsible heading; doubles as the app sidebar with floating/inset `frame`, mode-aware `toggle()`, opt-in `hotkey`, and `<lr-page>` composition |
|
|
1120
|
-
| `<lr-page>` | `wa-page` | Responsive application shell with header, navigation, aside, main, footer, and mobile navigation state under one page-level layout contract |
|
|
1121
|
-
| `<lr-navigation-menu>` + `<lr-navigation-menu-item>` | — (extra) | Disclosure-pattern site navigation bar with flyout panels |
|
|
1122
|
-
| `<lr-menubar>` + `<lr-menubar-item>` | — (extra) | APG application menubar with roving title focus, RTL-aware traversal, nested `<lr-menu>` panels, typeahead, shortcut-detail slots, and controlled selection events |
|
|
1123
|
-
| `<lr-responsive-panel>` | — (extra) | The same slotted content docked inline in normal layout flow (desktop) or as a fullscreen/bottom-sheet overlay (mobile) |
|
|
1124
|
-
| `<lr-dock-panel>` | — (extra) | Single panel docked to one edge of its container, drag/keyboard-resizable and collapsible — the single-edge counterpart to `<lr-multi-split>`'s multi-sibling-panel case |
|
|
1125
|
-
| `<lr-model-select>` | — (extra) | Provider/model picker: closed dropdown over a fixed `catalog`, or a filterable free-text combobox when there isn't one (or `allow-custom` is set) |
|
|
1126
|
-
| `<lr-model-settings-panel>` | — (extra) | Fixed `<lr-model-select>` + `<lr-slider>` composition for picking a model and tuning its sampling temperature in one `lr-change` |
|
|
1127
|
-
| `<lr-voice-picker>` | — (extra) | TTS voice selector over a host-supplied `catalog`, mirroring `lr-model-select`'s closed-dropdown/free-text-combobox dual mode and form-association verbatim, extended with a standalone preview button that plays a `previewUrl` or defers to the host's own TTS |
|
|
1128
|
-
| `<lr-audio-visualizer>` | — (extra) | Presentational canvas-drawn voice-activity visualization (bars or waveform), the LiveKit-BarVisualizer counterpart — driven by a `MediaStream`, a numeric `level` (e.g. from `<lr-push-to-talk>`'s `lr-level`), or `state` alone for ambient animation |
|
|
1129
|
-
| `<lr-push-to-talk>` | — (extra) | Mic capture button owning the full `getUserMedia` + `MediaRecorder` lifecycle (permission, recording, optional chunked streaming, teardown) — native browser APIs only, no SDK; `mode="hold"` (press-and-hold) or `mode="toggle"` |
|
|
1130
|
-
| `<lr-transcript-feed>` | — (extra) | Live captions for an in-progress voice session — speaker-grouped entries, interim-vs-final styling with in-place `id`-keyed upgrades, and the same stick-to-bottom `follow`/`lr-follow-change` contract `lr-terminal` uses |
|
|
1131
|
-
| `<lr-slider>` | `wa-slider` / `sl-range` | Numeric range control (e.g. an LLM "temperature" setting), form-associated, mirrors native `<input type="range">` semantics; Lyra's tooltip defaults off while `sl-range` defaults to `top`, so the codemod inserts `tooltip="top"` (set it for a manual rename) |
|
|
1132
|
-
| `<lr-context-meter>` | — (extra) | Segmented bar/ring occupancy meter for a token budget or context window, split across labeled categories |
|
|
1133
|
-
| `<lr-usage-badge>` | — (extra) | Compact, static resource strip for one message or run — tokens in/out, cost, latency, with a hover/focus tooltip breakdown; purely formatting, renders nothing at all when every segment is unset |
|
|
1134
|
-
| `<lr-dialog>` + `confirm()` | `wa-dialog` / `sl-dialog` | General-purpose modal/overlay (focus-trapped, Escape/backdrop-dismissible, scroll-locking, dialog stacking); `confirm()` is a promise-based `window.confirm()` replacement built on it |
|
|
1135
|
-
| `<lr-drawer>` | `wa-drawer` / `sl-drawer` | Modal panel anchored to the logical start/end edge or top/bottom, sharing dialog focus, dismissal, stacking, and scroll-lock behavior |
|
|
1136
|
-
| `<lr-carousel>` | `wa-carousel` / `sl-carousel` | Accessible slotted-slide carousel with keyboard navigation, indicators, looping, and reduced-motion-aware autoplay |
|
|
1137
|
-
| `<lr-carousel-item>` | `wa-carousel-item` / `sl-carousel-item` | Optional semantic slide wrapper for carousel content |
|
|
1138
|
-
| `<lr-button-group>` | `wa-button-group` / `sl-button-group` | Responsive semantic grouping for related action controls |
|
|
1139
|
-
| `<lr-control-group>` | — (extra) | Responsive layout wrapper for a row of mixed form controls and action buttons, centered rather than stretched (unlike `<lr-button-group>`) |
|
|
1140
|
-
| `<lr-reorder-list>` + `<lr-reorder-item>` | — (extra) | Generic flat-list reorder primitive: per-row move-up/move-down buttons plus a Ctrl/Cmd+Arrow keyboard shortcut, emitting the full new order on every move |
|
|
1141
|
-
| `<lr-image-comparer>` | `wa-comparison` / `sl-image-comparer` | Before/after slotted surfaces with a keyboard-accessible range divider |
|
|
1142
|
-
| `<lr-pan-zoom>` | — (extra) | Bounded zoom and scrollable panning for slotted content or an image source, preserving Lyra 7's former zoomable-frame behavior |
|
|
1143
|
-
| `<lr-zoomable-frame>` | `wa-zoomable-frame` | Sandboxed iframe preview with safe URL forwarding, discrete zoom levels, optional controls/interaction, and same-origin theme synchronization |
|
|
1144
|
-
| `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`; composed from the upstream `<lr-tab>`/`<lr-tab-panel>` child pairs |
|
|
1145
|
-
| `<lr-checkbox>` | `wa-checkbox` / `sl-checkbox` | Boolean form control, `role="checkbox"` with a visual/`indeterminate` mixed state |
|
|
1146
|
-
| `<lr-switch>` | `wa-switch` / `sl-switch` | Boolean toggle-switch form control, `role="switch"` on/off semantics |
|
|
1147
|
-
| `<lr-menu>` | `sl-menu` | Inline semantic menu controller with real roving focus and typeahead (not a listbox); the mechanical rename stays inline, while an anchored menu button composes it inside `<lr-dropdown>` |
|
|
1148
|
-
| `<lr-menu-item>` | `sl-menu-item` | Focusable action row owned by `<lr-menu>`, including checkbox items, nested submenus, and the canonical parent `lr-select` event |
|
|
1149
|
-
| `<lr-menu-label>` | `sl-menu-label` | Non-interactive section heading inside `<lr-menu>`; `role="presentation"`, never a focus stop |
|
|
1150
|
-
| `<lr-dropdown-item>` | `wa-dropdown-item` | Drop-in naming alias for `<lr-menu-item>`, including checkbox items and roving focus |
|
|
1151
|
-
| `<lr-chip>` + `<lr-chip-group>` | — (extra) | Content-agnostic label pill (tag/filter/scope indicator) and a flex-wrap group with a "+N" overflow indicator |
|
|
1152
|
-
| `<lr-kbd>` | — (extra) | Keyboard-shortcut chip; renders platform-appropriate glyphs (⌘ vs. Ctrl) from a single `"mod+k"`-style `keys` string |
|
|
1153
|
-
| `<lr-visually-hidden>` | `sl-visually-hidden` | Hides content from sight while leaving it in the accessibility tree; reveals itself while focus is inside, which is what makes it usable for skip links |
|
|
1154
|
-
| `<lr-result-card>` + `<lr-result-field>` | — (extra) | Small bordered card + label/value row shell, for giving custom `lr-tool-result-view` renderers a consistent look with no bespoke box |
|
|
1155
|
-
| `<lr-document-preview>` | — (extra) | Format-dispatching document/attachment viewer (`text/*`/JSON inline, `image/*` inline, else a download fallback) plus a host-driven async-conversion status shell |
|
|
1156
|
-
| `<lr-document-viewer>` | — (extra) | Dialog-hosted, format-dispatching full document viewer with a pluggable renderer registry |
|
|
1157
|
-
| `<lr-svg-viewer>` | — (extra) | Optional-DOMPurify sanitized inline SVG document viewer |
|
|
1158
|
-
| `<lr-image-viewer>` | — (extra) | Full pan/zoom raster-image viewer with labeled region highlights and opt-in region annotation — the landing surface for `region`-anchored citations; distinct from `<lr-svg-viewer>` (vector documents) and `<lr-image-comparer>` (before/after) |
|
|
1159
|
-
| `<lr-highlight-layer>` | — (extra) | Presentational overlay that paints highlight rectangles (percent-of-box coordinates) over positioned content and owns their activation/flash styling and keyboard access — the shared overlay engine behind `<lr-svg-viewer>`, `<lr-image-viewer>`, and `<lr-pdf-viewer>` |
|
|
1160
|
-
| `<lr-html-viewer>` | — (extra) | Optional-DOMPurify sanitized inline HTML document viewer |
|
|
1161
|
-
| `<lr-xml-viewer>` | — (extra) | Collapsible, copyable `DOMParser`-based tree view for XML documents, mirroring `<lr-json-viewer>`'s UX (`expand-depth`, `copyable`, path-keyed expand state) for elements, attributes, comments, CDATA, and processing instructions; imperative `search()`/`searchNext()` like the other anchor-target viewers |
|
|
1162
|
-
| `<lr-dataset-viewer>` | — (extra) | Optional-PapaParse accessible TSV/PSV/delimited dataset table viewer |
|
|
1163
|
-
| `<lr-contact-viewer>` | — (extra) | vCard contact viewer with support for multiple contacts and common fields |
|
|
1164
|
-
| `<lr-pdf-viewer>` | — (extra) | Optional-PDF.js renderer with pagination, zoom, selectable text, and virtualized page canvases |
|
|
1165
|
-
| `<lr-page-rail>` | — (extra) | Virtualized vertical thumbnail rail for page-addressed documents with per-page highlight heat markers — **wired** mode tracks a live `PageThumbnailSource` (e.g. `lr-pdf-viewer`) or **mediated** mode binds `page-count`/`page` directly |
|
|
1166
|
-
| `<lr-av-player>` | — (extra) | Audio/video player on a native `<audio>`/`<video>` element with a cue transcript synced to `currentTime`, `time-range` anchor/highlight support, an optional dependency-free waveform, and playback-rate control; virtualizes its transcript through `<lr-virtual-list>` |
|
|
1167
|
-
| `<lr-video>` | `wa-video` | Native-video-backed player with standard/full/none control presets, slotted control icons, visibility-aware autoplay, captions, fullscreen, and capped thumbnail-VTT previews |
|
|
1168
|
-
| `<lr-video-playlist>` | `wa-video-playlist` | Direct-child video playlist with full/standard/none control forwarding, previous/next/index navigation, immutable selected-video metadata, safe one-player-at-a-time switching, automatic advancement, and explicit repeat modes |
|
|
1169
|
-
| `<lr-notebook-viewer>` | — (extra) | Read-only Jupyter notebook (nbformat 4.x) renderer composing existing components per cell — Markdown cells through `<lr-markdown>`, code cells through `<lr-code-block>`, rich outputs preferring image/HTML/JSON/plain-text in order; optional-DOMPurify sanitizes raw HTML/SVG output |
|
|
1170
|
-
| `<lr-spreadsheet-viewer>` | — (extra) | Optional-SheetJS `.xlsx`/`.xls` workbook viewer with sheet tabs and virtualized rows |
|
|
1171
|
-
| `<lr-csv-viewer>` | — (extra) | Optional-PapaParse CSV viewer with quoted-field support and virtualized rows |
|
|
1172
|
-
| `<lr-geojson-viewer>` | — (extra) | Document-registry bridge that renders a fetched `.geojson`/`application/geo+json` file through `<lr-map>`'s `dataLayers` (falls back to `<lr-json-viewer>` without the optional `maplibre-gl` peer); use the canonical `<lr-geojson-viewer>` tag; the old tag was removed in 23.0.0 |
|
|
1173
|
-
| `<lr-docx-viewer>` | — (extra) | Optional-Mammoth DOCX viewer that renders sanitized semantic HTML |
|
|
1174
|
-
| `<lr-email-viewer>` | — (extra) | Optional-PostalMime `.eml` viewer with sanitized HTML and plain-text fallback |
|
|
1175
|
-
| `<lr-calendar-viewer>` | — (extra) | Optional-ical.js `.ics` viewer for event summaries and times |
|
|
1176
|
-
| `<lr-archive-viewer>` | — (extra) | Dependency-free bounded ZIP central-directory metadata viewer; lists entry names and declared sizes without inflating or previewing entry content |
|
|
1177
|
-
| `<lr-ebook-viewer>` | — (extra) | Renders `.epub` ebooks with the optional `epubjs` peer |
|
|
1178
|
-
| `<lr-pptx-viewer>` | — (extra) | Best-effort client-side `.pptx` viewer with a persistent fidelity notice |
|
|
1179
|
-
| `<lr-file-icon>` | — (extra) | File-format badge showing an unlocalized format token or glyph, with a localized accessible name and MIME/filename fallback metadata |
|
|
1180
|
-
| `<lr-media-card>` | — (extra) | Lightweight inline preview for one already-sent image/video/file attachment inside a rendered chat message |
|
|
1181
|
-
| `<lr-avatar>` | `wa-avatar` / `sl-avatar` | Small, fixed-size identity marker — image, or an initials fallback with `lr-chip`-style tone recoloring |
|
|
1182
|
-
| `<lr-card>` | `wa-card` / `sl-card` | Generic bordered content container (`header`/`media`/`footer`/`actions` slots) — a direct `<lr-*>` counterpart to `wa-card` |
|
|
1183
|
-
| `<lr-stepper>` | — (extra) | Ordered multi-step wizard navigation — label + index, current/completed/locked/error state, click-to-jump, data-driven and controlled |
|
|
1184
|
-
| `<lr-segmented>` | — (extra) | Single-select text/icon button row with the WAI-ARIA APG `radiogroup` contract built in (roving tabindex, automatic activation) |
|
|
1185
|
-
| `<lr-swatch-picker>` | — (extra) | Single-select picker over a fixed set of color swatches — `radiogroup` semantics (roving tabindex, automatic activation), themeable selection ring |
|
|
1186
|
-
| `<lr-diff-view>` | — (extra) | Real two-string line diff (LCS-aligned), rendered as interleaved unified-diff output |
|
|
1187
|
-
| `<lr-commit-card>` | — (extra) | Compact commit summary — subject, author/time, diffstat, per-file changes — that links file rows out to a diff view |
|
|
1188
|
-
| `<lr-poll-status>` | — (extra) | "Next scheduled refresh" countdown with a built-in pause control and live-region announcements |
|
|
1189
|
-
| `<lr-code-block-core>` | — (extra) | Build-lean `lr-code-block` variant for a consumer whose `languages` map already covers every language it renders — never references shiki's full ~200-language table |
|
|
1190
|
-
| `<lr-code-editor>` | — (extra) | Dependency-free form-associated multiline code editor with line numbers and selection APIs |
|
|
1191
|
-
| `<lr-terminal>` | — (extra) | Read-only ANSI console for streamed agent/tool output; not a PTY — no stdin/keystroke handling, no cursor-addressed full-screen apps |
|
|
1192
|
-
| `<lr-stack-trace>` | — (extra) | Parses common V8/JS-TS, Firefox/Safari, and Python stack traces into a leading message plus activatable frames, folding `internalPatterns`-matching frames (`node_modules/`, `node:internal`, …) behind a count-labeled toggle; falls back to verbatim text when nothing parses |
|
|
1193
|
-
| `<lr-trace-tree>` | — (extra) | Collapsible span hierarchy for one agent/LLM trace (Langfuse/LangSmith run-tree style) — kind icon, name, status, an inline duration bar on the shared trace time scale, optional tokens/cost columns; consumes the same `LyraSpan[]` as `<lr-span-waterfall>` |
|
|
1194
|
-
| `<lr-span-waterfall>` | — (extra) | Horizontal-timeline projection of the same `LyraSpan[]` `<lr-trace-tree>` consumes — a time axis, one row per span in start order, status-toned bars (Langfuse timeline / Temporal event-history style) |
|
|
1195
|
-
| `<lr-test-results>` | — (extra) | Pass/fail suite summary with per-status counts, status filter toggles, and per-test rows whose failures auto-expand by default and can host rich slotted detail (a diff or code block) alongside the plain failure message |
|
|
1196
|
-
| `<lr-env-list>` | — (extra) | Masked key/value list for environment variables and secrets, with per-row reveal and copy; masking is presentational only, not a security boundary |
|
|
1197
|
-
| `<lr-file-tree>` | — (extra) | File-explorer preset over `<lr-tree>` + `<lr-file-icon>` — path-keyed nodes with git-status/diff-count badges, lazy directory loading, and select/open events |
|
|
1198
|
-
| `<lr-browser-frame>` | — (extra) | Presentational "agent computer" viewport — a screenshot/frame stream (or slotted live media), read-only URL display, action-ping overlays, and take-over/stop affordances; no automation transport, take-over is an event |
|
|
1199
|
-
| `<lr-compare-panel>` | — (extra) | Side-by-side A/B output comparison with a winner vote (LMSYS-arena / LangSmith-pairwise style) — two slotted panes, a vote bar, synchronized reading |
|
|
1200
|
-
| `<lr-rubric-form>` | — (extra) | Configurable annotation rubric (LangSmith annotation-queue style) — score/category/comment keys with a submit-and-next flow; each key routes to an existing sibling control (`<lr-segmented>`/`<lr-slider>`, `<lr-select>`/`<lr-checkbox-group>`, `<lr-textarea>`) |
|
|
1201
|
-
| `<lr-calendar>` | — (extra) | Responsive month calendar with event markers and agenda mode |
|
|
1202
|
-
| `<lr-details>` + `<lr-accordion>` + `<lr-accordion-item>` | `wa-details` / `wa-accordion` / `wa-accordion-item` / `sl-details` | Native disclosure and coordinated accordion panels |
|
|
1203
|
-
| `<lr-breadcrumb>` + `<lr-breadcrumb-item>` | `wa-breadcrumb` / `wa-breadcrumb-item` / `sl-breadcrumb` / `sl-breadcrumb-item` | Responsive navigation trail |
|
|
1204
|
-
| `<lr-format-number>` + `<lr-format-date>` + `<lr-format-bytes>` + `<lr-relative-time>` | `wa-format-*` / `wa-relative-time` / `sl-format-*` / `sl-relative-time` | Locale-aware formatting primitives |
|
|
1205
|
-
| `<lr-markdown-core>` | — (extra) | Build-lean `lr-markdown` variant for a consumer whose `languages` map already covers every language it renders — never references shiki's full ~200-language table |
|
|
362
|
+
| `<lr-file-input>` | `wa-file-input` | Drag-drop + click-to-browse file dropzone, emits raw `File[]` (no CSV/XLSX parsing — that's host-specific) |
|
|
363
|
+
| `<lr-markdown>` | `wa-markdown` | Sanitized Markdown → HTML (GFM tables, fenced code, links); lazy-loads the optional peers `marked` + `dompurify` |
|
|
364
|
+
| `<lr-page>` | `wa-page` | Responsive application shell with header, navigation, aside, main, footer, and mobile navigation state under one page-level layout contract |
|
|
365
|
+
| `<lr-slider>` | `wa-slider` / `sl-range` | Numeric range control (e.g. an LLM "temperature" setting), form-associated, mirrors native `<input type="range">` semantics; Lyra's tooltip defaults off while `sl-range` defaults to `top`, so the codemod inserts `tooltip="top"` (set it for a manual rename) |
|
|
366
|
+
| `<lr-dialog>` + `confirm()` | `wa-dialog` / `sl-dialog` | General-purpose modal/overlay (focus-trapped, Escape/backdrop-dismissible, scroll-locking, dialog stacking); `confirm()` is a promise-based `window.confirm()` replacement built on it |
|
|
367
|
+
| `<lr-drawer>` | `wa-drawer` / `sl-drawer` | Modal panel anchored to the logical start/end edge or top/bottom, sharing dialog focus, dismissal, stacking, and scroll-lock behavior |
|
|
368
|
+
| `<lr-carousel>` | `wa-carousel` / `sl-carousel` | Accessible slotted-slide carousel with keyboard navigation, indicators, looping, and reduced-motion-aware autoplay |
|
|
369
|
+
| `<lr-carousel-item>` | `wa-carousel-item` / `sl-carousel-item` | Optional semantic slide wrapper for carousel content |
|
|
370
|
+
| `<lr-button-group>` | `wa-button-group` / `sl-button-group` | Responsive semantic grouping for related action controls |
|
|
371
|
+
| `<lr-image-comparer>` | `wa-comparison` / `sl-image-comparer` | Before/after slotted surfaces with a keyboard-accessible range divider |
|
|
372
|
+
| `<lr-zoomable-frame>` | `wa-zoomable-frame` | Sandboxed iframe preview with safe URL forwarding, discrete zoom levels, optional controls/interaction, and same-origin theme synchronization |
|
|
373
|
+
| `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`; composed from the upstream `<lr-tab>`/`<lr-tab-panel>` child pairs |
|
|
374
|
+
| `<lr-checkbox>` | `wa-checkbox` / `sl-checkbox` | Boolean form control, `role="checkbox"` with a visual/`indeterminate` mixed state |
|
|
375
|
+
| `<lr-switch>` | `wa-switch` / `sl-switch` | Boolean toggle-switch form control, `role="switch"` on/off semantics |
|
|
376
|
+
| `<lr-menu>` | `sl-menu` | Inline semantic menu controller with real roving focus and typeahead (not a listbox); the mechanical rename stays inline, while an anchored menu button composes it inside `<lr-dropdown>` |
|
|
377
|
+
| `<lr-menu-item>` | `sl-menu-item` | Focusable action row owned by `<lr-menu>`, including checkbox items, nested submenus, and the canonical parent `lr-select` event |
|
|
378
|
+
| `<lr-menu-label>` | `sl-menu-label` | Non-interactive section heading inside `<lr-menu>`; `role="presentation"`, never a focus stop |
|
|
379
|
+
| `<lr-dropdown-item>` | `wa-dropdown-item` | Drop-in naming alias for `<lr-menu-item>`, including checkbox items and roving focus |
|
|
380
|
+
| `<lr-visually-hidden>` | `sl-visually-hidden` | Hides content from sight while leaving it in the accessibility tree; reveals itself while focus is inside, which is what makes it usable for skip links |
|
|
381
|
+
| `<lr-video>` | `wa-video` | Native-video-backed player with standard/full/none control presets, slotted control icons, visibility-aware autoplay, captions, fullscreen, and capped thumbnail-VTT previews |
|
|
382
|
+
| `<lr-video-playlist>` | `wa-video-playlist` | Direct-child video playlist with full/standard/none control forwarding, previous/next/index navigation, immutable selected-video metadata, safe one-player-at-a-time switching, automatic advancement, and explicit repeat modes |
|
|
383
|
+
| `<lr-avatar>` | `wa-avatar` / `sl-avatar` | Small, fixed-size identity marker — image, or an initials fallback with `lr-chip`-style tone recoloring |
|
|
384
|
+
| `<lr-card>` | `wa-card` / `sl-card` | Generic bordered content container (`header`/`media`/`footer`/`actions` slots) — a direct `<lr-*>` counterpart to `wa-card` |
|
|
385
|
+
| `<lr-details>` + `<lr-accordion>` + `<lr-accordion-item>` | `wa-details` / `wa-accordion` / `wa-accordion-item` / `sl-details` | Native disclosure and coordinated accordion panels |
|
|
386
|
+
| `<lr-breadcrumb>` + `<lr-breadcrumb-item>` | `wa-breadcrumb` / `wa-breadcrumb-item` / `sl-breadcrumb` / `sl-breadcrumb-item` | Responsive navigation trail |
|
|
387
|
+
| `<lr-format-number>` + `<lr-format-date>` + `<lr-format-bytes>` + `<lr-relative-time>` | `wa-format-*` / `wa-relative-time` / `sl-format-*` / `sl-relative-time` | Locale-aware formatting primitives |
|
|
388
|
+
|
|
389
|
+
**Original components, by area:**
|
|
390
|
+
- **Form controls, toasts, sparkline, and flags:** `<lr-currency-picker>`, `<lr-country-picker>`, `<lr-time-zone-picker>`, `<lr-unit-picker>`, `<lr-signature-pad>`, `<lr-phone-input>`, `<lr-native-time-input>`, `<lr-token-input>`, `<lr-toggle>`, `<lr-toggle-group>`, `<lr-flag>`, `<lr-locale-picker>`.
|
|
391
|
+
- **Additional media and interaction primitives:** `<lr-avatar-group>`, `<lr-lightbox>`, `<lr-timeline>`, `<lr-timeline-item>`, `<lr-tour>`.
|
|
392
|
+
- **Dashboard atoms:** `<lr-empty>`, `<lr-stat>`, `<lr-table>`, `<lr-gauge>`, `<lr-export-button>`, `<lr-multi-split>`, `<lr-widget>`, `<lr-word-cloud>`.
|
|
393
|
+
- **Temporal & graph:** `<lr-time-range>`, `<lr-sequence-playback>`, `<lr-heatmap>`, `<lr-funnel>`, `<lr-sequence-strip>`, `<lr-graph>`.
|
|
394
|
+
- **Flow canvas:** `<lr-flow-canvas>`, `<lr-flow-node>`, `<lr-flow-minimap>`, `<lr-flow-controls>`, `<lr-node-palette>`, `<lr-flow-run-status>`.
|
|
395
|
+
- **Knowledge graph & RAG exploration:** `<lr-graph-legend>`, `<lr-entity-card>`, `<lr-entity-chip>`, `<lr-neighbor-list>`, `<lr-path-strip>`, `<lr-community-card>`, `<lr-chunk-inspector>`, `<lr-source-picker>`, `<lr-provenance-panel>`, `<lr-mind-map>`, `<lr-knowledge-graph-explorer>`, `<lr-graph-query-builder>`, `<lr-entity-dossier>`, `<lr-embedding-explorer>`.
|
|
396
|
+
- **Retrieval & grounding:** `<lr-retrieval-search>`, `<lr-retrieval-results>`, `<lr-retrieval-trace>`, `<lr-grounding-summary>`, `<lr-claim-evidence>`, `<lr-context-inspector>`, `<lr-rag-answer>`, `<lr-retrieval-compare>`, `<lr-rag-eval-dashboard>`.
|
|
397
|
+
- **Knowledge base & document management:** `<lr-knowledge-base>`, `<lr-ingestion-queue>`, `<lr-document-library>`, `<lr-document-compare>`, `<lr-knowledge-base-admin>`.
|
|
398
|
+
- **Agent runs & observability:** `<lr-agent-run>`, `<lr-agent-workspace>`, `<lr-subagent-panel>`, `<lr-agent-trace>`, `<lr-mcp-app>`, `<lr-prompt-studio>`, `<lr-json-schema-viewer>`, `<lr-tool-timeline>`, `<lr-memory-panel>`, `<lr-policy-summary>`, `<lr-approval-queue>`.
|
|
399
|
+
- **Dashboards & orchestration:** `<lr-dashboard-grid>`, `<lr-filter-bar>`, `<lr-condition-builder>`, `<lr-drilldown-panel>`.
|
|
400
|
+
- **Evaluation:** `<lr-eval-dataset>`, `<lr-eval-run>`, `<lr-eval-result>`, `<lr-agent-eval-dashboard>`.
|
|
401
|
+
- **Overlays:** `<lr-context-menu>`.
|
|
402
|
+
- **Charts:** `<lr-box-plot>`, `<lr-histogram>`, `<lr-lite-chart>`.
|
|
403
|
+
- **Map & file-input:** `<lr-map>`, `<lr-drop-zone>`.
|
|
404
|
+
- **Conversation & Agent UI:** `<lr-chat-message>`, `<lr-message-parts>`, `<lr-chat-viewport>`, `<lr-prompt-input>`, `<lr-prompt-queue>`, `<lr-selection-toolbar>`, `<lr-realtime-session>`, `<lr-message-actions>`, `<lr-message-feedback>`, `<lr-branch-picker>`, `<lr-typing-indicator>`, `<lr-streaming-text>`, `<lr-streaming-text-core>`, `<lr-thinking-panel>`, `<lr-activity-feed>`, `<lr-task-list>`, `<lr-generation-metrics>`, `<lr-stream-status>`, `<lr-checkpoint>`, `<lr-handoff-divider>`, `<lr-code-block>`, `<lr-artifact-panel>`, `<lr-live-region>`, `<lr-chat-composer>`, `<lr-suggestion-chips>`, `<lr-emoji-picker>`, `<lr-attachment-chip>`, `<lr-attachment-trigger>`, `<lr-mention-popover>`, `<lr-tool-call-block>`, `<lr-tool-call-chip>`, `<lr-tool-result-view>`, `<lr-tool-result-dialog>`, `<lr-tool-approval-dialog>`, `<lr-confirm-bar>`, `<lr-tool-param-form>`, `<lr-change-review>`, `<lr-agent-question>`, `<lr-permission-rules>`, `<lr-permission-grant>`, `<lr-connector-manager>`, `<lr-background-runs>`, `<lr-research-progress>`, `<lr-budget-meter>`, `<lr-tool-select-dialog>`, `<lr-command-palette>`, `<lr-widget-renderer>`, `<lr-json-viewer>`, `<lr-citation-badge>`, `<lr-source-list>`, `<lr-source-card>`, `<lr-conversation-item>`, `<lr-virtual-list>`, `<lr-thread-list>`, `<lr-app-rail>`, `<lr-app-rail-item>`, `<lr-app-rail-group>`, `<lr-navigation-menu>`, `<lr-navigation-menu-item>`, `<lr-menubar>`, `<lr-menubar-item>`, `<lr-responsive-panel>`, `<lr-dock-panel>`, `<lr-model-select>`, `<lr-model-settings-panel>`, `<lr-voice-picker>`, `<lr-audio-visualizer>`, `<lr-push-to-talk>`, `<lr-transcript-feed>`, `<lr-context-meter>`, `<lr-usage-badge>`, `<lr-control-group>`, `<lr-reorder-list>`, `<lr-reorder-item>`, `<lr-pan-zoom>`, `<lr-chip>`, `<lr-chip-group>`, `<lr-kbd>`, `<lr-result-card>`, `<lr-result-field>`, `<lr-document-preview>`, `<lr-document-viewer>`, `<lr-svg-viewer>`, `<lr-image-viewer>`, `<lr-highlight-layer>`, `<lr-html-viewer>`, `<lr-xml-viewer>`, `<lr-dataset-viewer>`, `<lr-contact-viewer>`, `<lr-pdf-viewer>`, `<lr-page-rail>`, `<lr-av-player>`, `<lr-notebook-viewer>`, `<lr-spreadsheet-viewer>`, `<lr-csv-viewer>`, `<lr-geojson-viewer>`, `<lr-docx-viewer>`, `<lr-email-viewer>`, `<lr-calendar-viewer>`, `<lr-archive-viewer>`, `<lr-ebook-viewer>`, `<lr-pptx-viewer>`, `<lr-file-icon>`, `<lr-media-card>`, `<lr-stepper>`, `<lr-segmented>`, `<lr-swatch-picker>`, `<lr-diff-view>`, `<lr-commit-card>`, `<lr-poll-status>`, `<lr-code-block-core>`, `<lr-code-editor>`, `<lr-terminal>`, `<lr-stack-trace>`, `<lr-trace-tree>`, `<lr-span-waterfall>`, `<lr-test-results>`, `<lr-env-list>`, `<lr-file-tree>`, `<lr-browser-frame>`, `<lr-compare-panel>`, `<lr-rubric-form>`, `<lr-calendar>`, `<lr-markdown-core>`.
|
|
1206
405
|
|
|
1207
406
|
### Citation → document recipe
|
|
1208
407
|
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
```html
|
|
1212
|
-
<p>
|
|
1213
|
-
…revenue grew 12%<lr-citation-badge
|
|
1214
|
-
index="1"
|
|
1215
|
-
source-id="doc-1"
|
|
1216
|
-
></lr-citation-badge
|
|
1217
|
-
>.
|
|
1218
|
-
</p>
|
|
1219
|
-
<lr-document-viewer id="dv"></lr-document-viewer>
|
|
1220
|
-
```
|
|
408
|
+
On `lr-citation-activate` from a `<lr-citation-badge>`, load the source into a `<lr-document-viewer>` and anchor it:
|
|
1221
409
|
|
|
1222
410
|
```js
|
|
1223
|
-
const SOURCES = {
|
|
1224
|
-
"doc-1": {
|
|
1225
|
-
name: "annual_report.pdf",
|
|
1226
|
-
mimeType: "application/pdf",
|
|
1227
|
-
src: "/files/annual_report.pdf",
|
|
1228
|
-
highlight: {
|
|
1229
|
-
id: "cite-1",
|
|
1230
|
-
tone: "accent",
|
|
1231
|
-
anchor: {
|
|
1232
|
-
kind: "text-quote",
|
|
1233
|
-
quote: "revenue grew 12% year over year",
|
|
1234
|
-
prefix: "Overall ",
|
|
1235
|
-
suffix: ", driven",
|
|
1236
|
-
page: 12,
|
|
1237
|
-
},
|
|
1238
|
-
},
|
|
1239
|
-
},
|
|
1240
|
-
};
|
|
1241
411
|
document.addEventListener("lr-citation-activate", (e) => {
|
|
1242
|
-
const s = SOURCES[e.detail.sourceId];
|
|
1243
|
-
if (!s) return;
|
|
412
|
+
const s = SOURCES[e.detail.sourceId]; // { name, mimeType, src, highlight: { id, tone, anchor } }
|
|
1244
413
|
const dv = document.getElementById("dv");
|
|
1245
|
-
Object.assign(dv, { name: s.name, mimeType: s.mimeType, src: s.src });
|
|
1246
|
-
dv.
|
|
1247
|
-
|
|
1248
|
-
if (dv.anchor === s.highlight.id) void dv.scrollToAnchor(s.highlight.id);
|
|
1249
|
-
else dv.anchor = s.highlight.id; // scroll + activate + flash once the pdf loads
|
|
414
|
+
Object.assign(dv, { name: s.name, mimeType: s.mimeType, src: s.src, highlights: [s.highlight] });
|
|
415
|
+
if (dv.anchor === s.highlight.id) void dv.scrollToAnchor(s.highlight.id); // same anchor: jump explicitly
|
|
416
|
+
else dv.anchor = s.highlight.id; // scroll, activate and flash once loaded
|
|
1250
417
|
dv.open = true;
|
|
1251
418
|
});
|
|
1252
|
-
document.getElementById("dv").addEventListener("lr-anchor-result", (e) => {
|
|
1253
|
-
if (!e.detail.found) console.warn("citation passage not found");
|
|
1254
|
-
});
|
|
1255
419
|
```
|
|
1256
420
|
|
|
1257
|
-
|
|
1258
|
-
`lr-text-select` on the viewer and
|
|
421
|
+
An anchor is `{ kind: "text-quote", quote, prefix, suffix, page }`; `lr-anchor-result` reports `detail.found`. The reverse
|
|
422
|
+
direction listens for `lr-text-select` on the viewer and hands `detail.anchor` to the citation store.
|
|
1259
423
|
|
|
1260
424
|
## Known limitations
|
|
1261
425
|
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
- The document viewers that fetch a remote resource (`<lr-archive-viewer>`, `<lr-calendar-viewer>`,
|
|
1269
|
-
`<lr-contact-viewer>`, `<lr-csv-viewer>`, `<lr-dataset-viewer>`, `<lr-docx-viewer>`,
|
|
1270
|
-
`<lr-document-preview>`, `<lr-ebook-viewer>`, `<lr-email-viewer>`, `<lr-html-viewer>`,
|
|
1271
|
-
`<lr-pdf-viewer>`, `<lr-pptx-viewer>`, `<lr-spreadsheet-viewer>`, `<lr-svg-viewer>`) cap
|
|
1272
|
-
what they will read: 25 MB per resource (enforced while streaming, so it holds even when the server
|
|
1273
|
-
omits `Content-Length`), and — for `<lr-csv-viewer>`, `<lr-dataset-viewer>` and
|
|
1274
|
-
`<lr-spreadsheet-viewer>`, which parse tabular data — 10,000 rows and 1,000 columns. Exceeding a
|
|
1275
|
-
cap surfaces the localized `documentPreviewResourceTooLarge` message instead of the document. These
|
|
1276
|
-
caps are **not** currently overridable per component. One path is exempt because it never fetches the
|
|
1277
|
-
bytes itself: `<lr-document-preview>` caps only its text/JSON fetch, leaving the `image` path
|
|
1278
|
-
(which hands `src` straight to an `<img>`) uncapped.
|
|
426
|
+
- `<lr-map>` requires an explicit `mapStyle` (no implicit tile-provider request); `<lr-file-input>` paste support
|
|
427
|
+
depends on `clipboardData.files`, which some browsers populate only for images.
|
|
428
|
+
- Viewers that fetch a remote resource cap what they read at 25 MB (enforced while streaming) and, for the tabular
|
|
429
|
+
viewers (`<lr-csv-viewer>`, `<lr-dataset-viewer>`, `<lr-spreadsheet-viewer>`), 10,000 rows and 1,000 columns; the
|
|
430
|
+
localized `documentPreviewResourceTooLarge` message replaces the document and caps are not overridable.
|
|
431
|
+
`<lr-document-preview>` caps only its text/JSON fetch, not the `image` path.
|
|
1279
432
|
|
|
1280
433
|
## Development
|
|
1281
434
|
|
|
1282
|
-
|
|
435
|
+
From the repo root (a pnpm workspace; contributor contract in `AGENTS.md`):
|
|
1283
436
|
|
|
1284
437
|
```bash
|
|
1285
|
-
pnpm install
|
|
1286
|
-
pnpm test
|
|
1287
|
-
pnpm lint
|
|
1288
|
-
pnpm
|
|
1289
|
-
pnpm manifest # custom-elements.json
|
|
1290
|
-
pnpm docs # Storybook docs site, demos this package + lyra-flags together
|
|
438
|
+
pnpm install && pnpm build # tsc → dist/ (ESM + .d.ts)
|
|
439
|
+
pnpm test # @web/test-runner + Playwright (Chromium) + axe
|
|
440
|
+
pnpm lint # contract-policy + tsc --noEmit + type-surface tests
|
|
441
|
+
pnpm manifest # custom-elements.json
|
|
1291
442
|
```
|
|
1292
443
|
|
|
1293
444
|
## License
|