@aceshooting/lyra-ui 5.2.0 → 6.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 +3979 -0
- package/README.md +6 -5
- package/custom-elements.json +3580 -1047
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +4 -2
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js.map +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +7 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts.map +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +36 -4
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +68 -19
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts +1 -0
- package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.js +1 -0
- package/dist/components/agent-tools/confirm-bar/confirm-bar.js.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.d.ts.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +10 -29
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js.map +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +7 -7
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts.map +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +14 -13
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js.map +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts.map +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.js.map +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +11 -9
- package/dist/components/agent-tools/eval-result/eval-result.class.d.ts.map +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.js +9 -7
- package/dist/components/agent-tools/eval-result/eval-result.class.js.map +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.d.ts +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.d.ts.map +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.js.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +47 -5
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +90 -15
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts +2 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js +2 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +6 -26
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js.map +1 -1
- package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/chart.class.js.map +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/lite-chart.class.js.map +1 -1
- package/dist/components/conversation/code-block/greycat-language.d.ts +5 -0
- package/dist/components/conversation/code-block/greycat-language.d.ts.map +1 -1
- package/dist/components/conversation/code-block/greycat-language.js +48 -6
- package/dist/components/conversation/code-block/greycat-language.js.map +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +5 -3
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts.map +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.js.map +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +16 -3
- package/dist/components/conversation/thread-list/thread-list.class.d.ts.map +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.js +13 -3
- package/dist/components/conversation/thread-list/thread-list.class.js.map +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +3 -1
- package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
- package/dist/components/data/calendar/calendar.class.js.map +1 -1
- package/dist/components/data/calendar/calendar.styles.js +3 -3
- package/dist/components/data/document-library/document-library.class.d.ts +6 -5
- package/dist/components/data/document-library/document-library.class.d.ts.map +1 -1
- package/dist/components/data/document-library/document-library.class.js +2 -3
- package/dist/components/data/document-library/document-library.class.js.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +8 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +5 -0
- package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.styles.d.ts.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +2 -1
- package/dist/components/data/flow-canvas/flow-canvas.styles.js.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +6 -2
- package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/data/table/table.class.d.ts +16 -4
- package/dist/components/data/table/table.class.d.ts.map +1 -1
- package/dist/components/data/table/table.class.js.map +1 -1
- package/dist/components/data/tree/tree.class.d.ts +3 -1
- package/dist/components/data/tree/tree.class.d.ts.map +1 -1
- package/dist/components/data/tree/tree.class.js.map +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts +7 -2
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts.map +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.js.map +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +3 -3
- package/dist/components/data/word-cloud/word-cloud.class.d.ts.map +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.js.map +1 -1
- package/dist/components/forms/button/button.class.d.ts +5 -0
- package/dist/components/forms/button/button.class.d.ts.map +1 -1
- package/dist/components/forms/button/button.class.js +5 -0
- package/dist/components/forms/button/button.class.js.map +1 -1
- package/dist/components/forms/button/button.styles.d.ts.map +1 -1
- package/dist/components/forms/button/button.styles.js +6 -2
- package/dist/components/forms/button/button.styles.js.map +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +4 -0
- package/dist/components/forms/color-picker/color-picker.class.d.ts.map +1 -1
- package/dist/components/forms/color-picker/color-picker.class.js +6 -0
- package/dist/components/forms/color-picker/color-picker.class.js.map +1 -1
- package/dist/components/forms/color-picker/color-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/color-picker/color-picker.styles.js +20 -2
- package/dist/components/forms/color-picker/color-picker.styles.js.map +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +2 -2
- package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.js.map +1 -1
- package/dist/components/forms/combobox/combobox.styles.d.ts.map +1 -1
- package/dist/components/forms/combobox/combobox.styles.js +8 -0
- package/dist/components/forms/combobox/combobox.styles.js.map +1 -1
- package/dist/components/forms/date-picker/date-picker.class.d.ts +4 -0
- package/dist/components/forms/date-picker/date-picker.class.d.ts.map +1 -1
- package/dist/components/forms/date-picker/date-picker.class.js +6 -0
- package/dist/components/forms/date-picker/date-picker.class.js.map +1 -1
- package/dist/components/forms/date-picker/date-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/date-picker/date-picker.styles.js +15 -0
- package/dist/components/forms/date-picker/date-picker.styles.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +9 -2
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +11 -2
- package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -7
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +20 -3
- package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.js +84 -4
- package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.d.ts.map +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +4 -0
- package/dist/components/forms/icon-button/icon-button.styles.js.map +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +221 -0
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts.map +1 -0
- package/dist/components/forms/locale-picker/locale-picker.class.js +630 -0
- package/dist/components/forms/locale-picker/locale-picker.class.js.map +1 -0
- package/dist/components/forms/locale-picker/locale-picker.d.ts +3 -0
- package/dist/components/forms/locale-picker/locale-picker.d.ts.map +1 -0
- package/dist/components/forms/locale-picker/locale-picker.js +6 -0
- package/dist/components/forms/locale-picker/locale-picker.js.map +1 -0
- package/dist/components/forms/locale-picker/locale-picker.styles.d.ts +2 -0
- package/dist/components/forms/locale-picker/locale-picker.styles.d.ts.map +1 -0
- package/dist/components/forms/locale-picker/locale-picker.styles.js +213 -0
- package/dist/components/forms/locale-picker/locale-picker.styles.js.map +1 -0
- package/dist/components/forms/phone-input/phone-input.class.d.ts +11 -0
- package/dist/components/forms/phone-input/phone-input.class.d.ts.map +1 -1
- package/dist/components/forms/phone-input/phone-input.class.js +13 -0
- package/dist/components/forms/phone-input/phone-input.class.js.map +1 -1
- package/dist/components/forms/phone-input/phone-input.styles.d.ts.map +1 -1
- package/dist/components/forms/phone-input/phone-input.styles.js +39 -3
- package/dist/components/forms/phone-input/phone-input.styles.js.map +1 -1
- package/dist/components/forms/select/select.class.d.ts +2 -2
- package/dist/components/forms/select/select.class.d.ts.map +1 -1
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/select/select.class.js.map +1 -1
- package/dist/components/forms/select/select.styles.d.ts.map +1 -1
- package/dist/components/forms/select/select.styles.js +6 -0
- package/dist/components/forms/select/select.styles.js.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +12 -3
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +14 -3
- package/dist/components/forms/swatch-picker/swatch-picker.class.js.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.styles.js +32 -9
- package/dist/components/forms/swatch-picker/swatch-picker.styles.js.map +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +8 -0
- package/dist/components/forms/time-range/time-range.class.d.ts.map +1 -1
- package/dist/components/forms/time-range/time-range.class.js +10 -0
- package/dist/components/forms/time-range/time-range.class.js.map +1 -1
- package/dist/components/forms/time-range/time-range.styles.d.ts.map +1 -1
- package/dist/components/forms/time-range/time-range.styles.js +42 -13
- package/dist/components/forms/time-range/time-range.styles.js.map +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +11 -0
- package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
- package/dist/components/forms/token-input/token-input.class.js +13 -0
- package/dist/components/forms/token-input/token-input.class.js.map +1 -1
- package/dist/components/forms/token-input/token-input.styles.d.ts.map +1 -1
- package/dist/components/forms/token-input/token-input.styles.js +36 -2
- package/dist/components/forms/token-input/token-input.styles.js.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +6 -2
- package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
- package/dist/components/layout/control-group/control-group.class.d.ts +16 -0
- package/dist/components/layout/control-group/control-group.class.d.ts.map +1 -1
- package/dist/components/layout/control-group/control-group.class.js +19 -0
- package/dist/components/layout/control-group/control-group.class.js.map +1 -1
- package/dist/components/layout/control-group/control-group.styles.d.ts.map +1 -1
- package/dist/components/layout/control-group/control-group.styles.js +8 -3
- package/dist/components/layout/control-group/control-group.styles.js.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +3 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +3 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +2 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js.map +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +59 -0
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-item.class.js +110 -0
- package/dist/components/layout/reorder-list/reorder-item.class.js.map +1 -0
- package/dist/components/layout/reorder-list/reorder-item.d.ts +2 -0
- package/dist/components/layout/reorder-list/reorder-item.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-item.js +5 -0
- package/dist/components/layout/reorder-list/reorder-item.js.map +1 -0
- package/dist/components/{data/data-grid/data-grid.styles.d.ts → layout/reorder-list/reorder-item.styles.d.ts} +1 -1
- package/dist/components/layout/reorder-list/reorder-item.styles.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-item.styles.js +62 -0
- package/dist/components/layout/reorder-list/reorder-item.styles.js.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.class.d.ts +77 -0
- package/dist/components/layout/reorder-list/reorder-list.class.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.class.js +197 -0
- package/dist/components/layout/reorder-list/reorder-list.class.js.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.d.ts +3 -0
- package/dist/components/layout/reorder-list/reorder-list.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.js +6 -0
- package/dist/components/layout/reorder-list/reorder-list.js.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.styles.d.ts +2 -0
- package/dist/components/layout/reorder-list/reorder-list.styles.d.ts.map +1 -0
- package/dist/components/layout/reorder-list/reorder-list.styles.js +12 -0
- package/dist/components/layout/reorder-list/reorder-list.styles.js.map +1 -0
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +7 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
- package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.d.ts.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +2 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js.map +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +2 -2
- package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/chip/chip.styles.d.ts.map +1 -1
- package/dist/components/overlays/chip/chip.styles.js +10 -0
- package/dist/components/overlays/chip/chip.styles.js.map +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
- package/dist/components/overlays/overlay/popover.class.d.ts.map +1 -1
- package/dist/components/overlays/overlay/popover.class.js.map +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +7 -3
- package/dist/components/retrieval/graph/graph.class.d.ts.map +1 -1
- package/dist/components/retrieval/graph/graph.class.js.map +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +6 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts.map +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
- package/dist/components/utility/format/relative-time.class.d.ts.map +1 -1
- package/dist/components/utility/format/relative-time.class.js +4 -1
- package/dist/components/utility/format/relative-time.class.js.map +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +9 -2
- package/dist/components/viewers/document-compare/document-compare.class.d.ts.map +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.js.map +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +6 -0
- package/dist/components/viewers/geojson-view/geojson-view.class.d.ts.map +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.js.map +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
- package/dist/internal/localization.d.ts +11 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +24 -1
- package/dist/internal/localization.js.map +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +1 -1
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
- package/dist/internal/root-registration-allowlist.js +3 -1
- package/dist/internal/root-registration-allowlist.js.map +1 -1
- package/dist/internal/tokens.styles.d.ts.map +1 -1
- package/dist/internal/tokens.styles.js +1 -0
- package/dist/internal/tokens.styles.js.map +1 -1
- package/dist/lyra.d.ts +11 -5
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js +7 -3
- package/dist/lyra.js.map +1 -1
- package/dist/theme.css +1 -0
- package/llms/components/lr-button.md +4 -1
- package/llms/components/lr-chip-group.md +1 -1
- package/llms/components/lr-chip.md +1 -1
- package/llms/components/lr-color-picker.md +7 -1
- package/llms/components/lr-combobox.md +1 -1
- package/llms/components/lr-confirm-bar.md +31 -4
- package/llms/components/lr-control-group.md +12 -4
- package/llms/components/lr-dashboard-grid.md +4 -1
- package/llms/components/lr-date-input.md +5 -1
- package/llms/components/lr-date-picker.md +5 -1
- package/llms/components/lr-emoji-picker.md +11 -6
- package/llms/components/lr-eval-dataset.md +1 -1
- package/llms/components/lr-eval-result.md +4 -4
- package/llms/components/lr-flag.md +9 -5
- package/llms/components/lr-flow-canvas.md +7 -1
- package/llms/components/lr-icon-button.md +10 -5
- package/llms/components/lr-locale-picker.md +86 -0
- package/llms/components/lr-option.md +1 -1
- package/llms/components/lr-phone-input.md +10 -3
- package/llms/components/lr-reorder-item.md +81 -0
- package/llms/components/lr-reorder-list.md +81 -0
- package/llms/components/lr-select.md +2 -2
- package/llms/components/lr-swatch-picker.md +15 -9
- package/llms/components/lr-thread-list.md +11 -6
- package/llms/components/lr-time-range.md +8 -0
- package/llms/components/lr-token-input.md +14 -6
- package/llms/components/lr-tool-approval-dialog.md +30 -6
- package/llms/components/lr-virtual-list.md +5 -1
- package/llms/index.md +7 -5
- package/llms/shared.md +13 -4
- package/llms/tokens.md +4 -2
- package/llms-full.txt +362 -120
- package/llms.txt +4 -4
- package/package.json +8 -3
- package/vscode-css-data.json +183 -8
- package/vscode-html-data.json +521 -366
- package/web-types.json +810 -96
- package/dist/components/data/data-grid/data-grid.class.d.ts +0 -69
- package/dist/components/data/data-grid/data-grid.class.d.ts.map +0 -1
- package/dist/components/data/data-grid/data-grid.class.js +0 -123
- package/dist/components/data/data-grid/data-grid.class.js.map +0 -1
- package/dist/components/data/data-grid/data-grid.d.ts +0 -2
- package/dist/components/data/data-grid/data-grid.d.ts.map +0 -1
- package/dist/components/data/data-grid/data-grid.js +0 -5
- package/dist/components/data/data-grid/data-grid.js.map +0 -1
- package/dist/components/data/data-grid/data-grid.styles.d.ts.map +0 -1
- package/dist/components/data/data-grid/data-grid.styles.js +0 -15
- package/dist/components/data/data-grid/data-grid.styles.js.map +0 -1
- package/llms/components/lr-data-grid.md +0 -55
package/llms-full.txt
CHANGED
|
@@ -7,7 +7,7 @@ Agent UI. Selected components retain documented Web Awesome-compatible public na
|
|
|
7
7
|
prefix to make migration easier, but Lyra has its own implementation, design tokens, localization
|
|
8
8
|
runtime, RTL behavior, and release surface. It has no runtime dependency on either project.
|
|
9
9
|
|
|
10
|
-
**This file is the whole catalog concatenated —
|
|
10
|
+
**This file is the whole catalog concatenated — 251 components, several hundred thousand tokens.**
|
|
11
11
|
Read it end to end only if you genuinely need everything. Otherwise:
|
|
12
12
|
|
|
13
13
|
| To… | Read |
|
|
@@ -31,9 +31,9 @@ and costs a few hundred tokens instead of the whole catalog. `llms/index.md` map
|
|
|
31
31
|
family and entry point.
|
|
32
32
|
|
|
33
33
|
- **Foundation** — base class, form association, events, i18n, theming, TypeScript, frameworks, SSR, packaging (`llms/shared.md`)
|
|
34
|
-
- **Form controls & inputs** —
|
|
35
|
-
- **Data display, dashboards & flow canvas** —
|
|
36
|
-
- **Layout, navigation & structure** —
|
|
34
|
+
- **Form controls & inputs** — 26 tags in `components/forms/`
|
|
35
|
+
- **Data display, dashboards & flow canvas** — 24 tags in `components/data/`
|
|
36
|
+
- **Layout, navigation & structure** — 30 tags in `components/layout/`
|
|
37
37
|
- **Overlays, status & feedback** — 19 tags in `components/overlays/`
|
|
38
38
|
- **Utilities, formatting & observers** — 19 tags in `components/utility/`
|
|
39
39
|
- **Media, files & maps** — 18 tags in `components/media/`
|
|
@@ -58,7 +58,7 @@ import '@aceshooting/lyra-ui/components/forms/combobox/combobox.js'; // register
|
|
|
58
58
|
import '@aceshooting/lyra-ui/components/data/table/table.js'; // registers <lr-table>
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
`llms/index.md` lists the exact path for all
|
|
61
|
+
`llms/index.md` lists the exact path for all 251 tags. A wrong or missing family segment is a hard
|
|
62
62
|
module-resolution failure, not a silent no-op — `exports` maps `./components/*` straight onto
|
|
63
63
|
`./dist/components/*`.
|
|
64
64
|
|
|
@@ -266,12 +266,21 @@ setLyraLocale('fr'); // …or just set <html lang="fr"> and let components inher
|
|
|
266
266
|
```
|
|
267
267
|
|
|
268
268
|
Exported from the package root: `registerLyraLocale`, `setLyraLocale`, `getLyraLocale`,
|
|
269
|
-
`
|
|
270
|
-
|
|
271
|
-
|
|
269
|
+
`getRegisteredLyraLocales`, `subscribeLyraLocaleRegistry`, `resolveLyraLocale`,
|
|
270
|
+
`resolveLyraDirection`, `resolveLyraString`, `LYRA_DEFAULT_STRINGS`, and the types
|
|
271
|
+
`LyraLocaleStrings` / `LyraMessageKey`. **`LYRA_DEFAULT_STRINGS` is the authoritative key list**
|
|
272
|
+
(1005 keys, matching the `LyraMessageKey` union) — read it to find the key to override rather than
|
|
272
273
|
guessing one. Lookup falls back exact locale → base language → English. Date, number, byte,
|
|
273
274
|
relative-time and calendar output goes through `Intl`.
|
|
274
275
|
|
|
276
|
+
`getRegisteredLyraLocales(): string[]` lists every locale with strings registered via
|
|
277
|
+
`registerLyraLocale()`, plus `'en'` (always available through the built-in English fallback),
|
|
278
|
+
sorted and deduped. `subscribeLyraLocaleRegistry(listener: () => void): () => void` fires whenever
|
|
279
|
+
`registerLyraLocale()` registers *any* locale — including one that isn't the currently active
|
|
280
|
+
locale — unlike the page-level locale-change subscription every component already uses
|
|
281
|
+
internally, which only fires for the active locale's own string changes. `<lr-locale-picker>` is
|
|
282
|
+
the built-in consumer of both; see `llms/components/lr-locale-picker.md`.
|
|
283
|
+
|
|
275
284
|
Gotcha: `localize()`'s optional second argument is a fallback string. Passing a defined literal there
|
|
276
285
|
silently defeats a registered catalog — omit it, or pass `undefined`.
|
|
277
286
|
|
|
@@ -504,7 +513,7 @@ shared `FormAssociated` mixin — see gotchas).
|
|
|
504
513
|
|
|
505
514
|
**Properties:**
|
|
506
515
|
- `multiple: boolean = false` (reflected)
|
|
507
|
-
- `size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
|
|
516
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
|
|
508
517
|
also scales the "+N" overflow tag and decorative expand icon; `size="s"` shares its outer
|
|
509
518
|
control height with `lr-input`, `lr-select`, and `lr-segmented` without part overrides)
|
|
510
519
|
- `placeholder: string = ''`
|
|
@@ -748,8 +757,8 @@ exactly like the multi-option case, until the trigger is actually activated.
|
|
|
748
757
|
- `errorText: string = ''` (attribute `error-text` — static error copy shown below the hint;
|
|
749
758
|
overridden by slotted `error` content when provided)
|
|
750
759
|
- `open: boolean = false` (reflected)
|
|
751
|
-
- `size: 'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-
|
|
752
|
-
compact toolbar placements that don't fit the default trigger height)
|
|
760
|
+
- `size: '2xs'|'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-input`/`lr-combobox`'s
|
|
761
|
+
`size`, for compact toolbar placements that don't fit the default trigger height)
|
|
753
762
|
- `autoCommitSingleOption: boolean = false` (attribute `auto-commit-single-option`) — opts in to the
|
|
754
763
|
single-option auto-commit behavior described above
|
|
755
764
|
- `value: string` — a getter/setter; always a single string (no `multiple` mode)
|
|
@@ -868,6 +877,10 @@ Inline month-grid calendar, not form-associated (used standalone or embedded ins
|
|
|
868
877
|
- `disablePast: boolean = false` (attribute `disable-past`)
|
|
869
878
|
- `disableFuture: boolean = false` (attribute `disable-future`)
|
|
870
879
|
- `withOutsideDays: boolean = false` (attribute `with-outside-days`)
|
|
880
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — scales calendar cell density
|
|
881
|
+
proportionally; unlike `lr-input`'s row-height scale (text containers), this scales cell density
|
|
882
|
+
itself (fewer/more days per visual unit). Month title, weekday labels, and nav buttons stay fixed
|
|
883
|
+
across tiers.
|
|
871
884
|
- `previousLabel: string = 'Previous month'` (attribute `previous-label` — accessible label for the
|
|
872
885
|
previous-month nav button; override for a non-English `locale`)
|
|
873
886
|
- `nextLabel: string = 'Next month'` (attribute `next-label` — accessible label for the next-month
|
|
@@ -889,7 +902,7 @@ mode only)
|
|
|
889
902
|
`day-range-end`, `day-range-inner`, `day-placeholder`
|
|
890
903
|
|
|
891
904
|
**Themeable custom properties:** `--lr-cell-size` (default `2.25rem`, controls day-cell/grid-column
|
|
892
|
-
size).
|
|
905
|
+
size; auto-scaled per `size` tier — `2xs`/`xs`/`s`/`l`/`xl`; `m` keeps the `:host` default).
|
|
893
906
|
|
|
894
907
|
**Optional peer deps:** none.
|
|
895
908
|
|
|
@@ -1219,7 +1232,10 @@ and the per-`size`
|
|
|
1219
1232
|
`min-block-size` floors `--lr-button-size-2xs` (`1.25rem`), `--lr-button-size-xs` (`1.5rem`),
|
|
1220
1233
|
`--lr-button-size-s` (`1.75rem`), `--lr-button-size-m` (`2rem`), `--lr-button-size-l` (`2.5rem`),
|
|
1221
1234
|
`--lr-button-size-xl` (`3rem`) — each read only by its own `size` tier, and all ignored by
|
|
1222
|
-
`appearance="link"`.
|
|
1235
|
+
`appearance="link"`. `--lr-button-gap` (default `--lr-space-2xs`, the gap between the icon/label
|
|
1236
|
+
and any slotted content) and `--lr-button-radius` (default `--lr-radius`, the corner radius) are
|
|
1237
|
+
both retunable without a `::part(base)` rule but — unlike the four size knobs below — do not vary
|
|
1238
|
+
by `size` tier; `appearance="link"` ignores `--lr-button-radius` (it renders with zero radius).
|
|
1223
1239
|
|
|
1224
1240
|
**Retuning one `size` tier's geometry, without a `::part(base)` rule.** Four more properties carry
|
|
1225
1241
|
the active tier's geometry, and every `:host([size='…'])` rule does nothing but re-assign them — no
|
|
@@ -1292,11 +1308,16 @@ complete element — an `<svg>`, an `<img>`, an `<lr-flag>` — render at its ow
|
|
|
1292
1308
|
instead of being forced into a 1:1 box. Setting both `icon` and slotted content renders both, side
|
|
1293
1309
|
by side; that is a valid composition, not a fallback.
|
|
1294
1310
|
|
|
1295
|
-
**
|
|
1296
|
-
|
|
1297
|
-
|
|
1311
|
+
**Bare SVG geometry fallback:** slotted bare SVG *geometry* (`path`, `circle`, `rect`, `line`,
|
|
1312
|
+
`polygon`, `polyline`, `ellipse`, `g`, `use`) with no `icon` set and no enclosing `<svg>` of its
|
|
1313
|
+
own has no real SVG parent as parsed, and is detected and cloned into an internal
|
|
1314
|
+
`[part="fallback"]` SVG-namespaced element so it still paints — the same fallback `<lr-icon>`'s own
|
|
1315
|
+
custom-content slot uses. This is narrowly scoped to that whitelist: a complete `<svg>`, `<img>`,
|
|
1316
|
+
or custom element (e.g. `<lr-flag>`) is never touched by it and keeps rendering as an untouched
|
|
1317
|
+
sibling at its own natural aspect ratio.
|
|
1298
1318
|
|
|
1299
|
-
**CSS parts:** `button`
|
|
1319
|
+
**CSS parts:** `button`, `fallback` (only present in the DOM while at least one top-level slotted
|
|
1320
|
+
element needs the bare-geometry fallback above)
|
|
1300
1321
|
|
|
1301
1322
|
**Themeable custom properties:** `--lr-icon-button-size` (default `2.5rem`) is the **minimum**
|
|
1302
1323
|
tappable inline and block size of the native button — a floor, not a fixed size. Content larger
|
|
@@ -1550,6 +1571,9 @@ interface PhoneNumberAdapter {
|
|
|
1550
1571
|
`@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once; without that registration the
|
|
1551
1572
|
trigger simply omits the image. The open popup list stays text-only — a native `<option>` cannot
|
|
1552
1573
|
contain elements.
|
|
1574
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
|
|
1575
|
+
`size`; scales input padding, font size, and wrapper min-height; `size="s"` shares its outer
|
|
1576
|
+
control height with `lr-input`, `lr-select`, and `lr-combobox` without part overrides)
|
|
1553
1577
|
- `country: string` — current uppercase ISO alpha-2 selection; falls back to `defaultCountry`, then
|
|
1554
1578
|
the first explicit/adapter country. Changing the country reparses the editable number.
|
|
1555
1579
|
- `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
|
|
@@ -1616,9 +1640,13 @@ such as a consumer-owned `<lr-flag>`; no flag package is imported automatically)
|
|
|
1616
1640
|
`flags`), `country-code` (selected alpha-2 code, `data-placeholder` when no country exists),
|
|
1617
1641
|
`expand-icon`, `calling-code`, `input`, `hint`, `error`.
|
|
1618
1642
|
|
|
1619
|
-
**Themeable custom properties:**
|
|
1620
|
-
|
|
1621
|
-
|
|
1643
|
+
**Themeable custom properties:** `--lr-phone-input-padding-block`, `--lr-phone-input-font-size`,
|
|
1644
|
+
and `--lr-phone-input-control-min-height` (each scaled by `size`), plus `--lr-phone-input-control-height`
|
|
1645
|
+
to pin an exact input-wrapper height (both floors and caps it — use it for pixel-matching an
|
|
1646
|
+
`<lr-input>` or `<lr-select>` in the same toolbar row; undeclared by default, leaving the min height
|
|
1647
|
+
as a floor only). The phone-number input and calling code are deliberately `dir="ltr"`/isolated
|
|
1648
|
+
because telephone numbers are algorithmic content; surrounding form chrome and the country selector
|
|
1649
|
+
inherit LTR/RTL and use logical spacing/borders.
|
|
1622
1650
|
|
|
1623
1651
|
**Optional peer deps:** `libphonenumber-js` is declared optional but never imported by Lyra itself.
|
|
1624
1652
|
For full national parsing/formatting, install it in the consuming app and pass it through the
|
|
@@ -1688,6 +1716,10 @@ consumer-facing `disabled` property/attribute itself.
|
|
|
1688
1716
|
- `start: number = 0`
|
|
1689
1717
|
- `end: number = 100`
|
|
1690
1718
|
- `step: number = 1`
|
|
1719
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — visual size; proportionally
|
|
1720
|
+
scales the handle, track, and preset buttons via a single `--lr-time-range-size-scale` multiplier
|
|
1721
|
+
(not pixel-matched to `lr-input`'s row-height scale — this component's own dimensions aren't on
|
|
1722
|
+
that ladder); the drag hit-area never shrinks below 24px (WCAG 2.5.8)
|
|
1691
1723
|
- `disabled: boolean = false` (reflected)
|
|
1692
1724
|
- `startLabel: string = 'Range start'` (attribute `start-label`) — `aria-label` for the start handle
|
|
1693
1725
|
- `endLabel: string = 'Range end'` (attribute `end-label`) — `aria-label` for the end handle
|
|
@@ -1717,6 +1749,10 @@ palette: `--lr-time-range-preset-active-bg` (falls back to `--lr-color-brand`),
|
|
|
1717
1749
|
`--lr-time-range-preset-active-color` (falls back to `--lr-color-on-brand`). Unset, each resolves
|
|
1718
1750
|
to exactly the token the rule used before they existed, so the default rendering is unchanged.
|
|
1719
1751
|
|
|
1752
|
+
One additional component-local property, `--lr-time-range-size-scale` (unitless multiplier,
|
|
1753
|
+
default 1, automatically set based on the `size` property), scales the handle, track, and preset
|
|
1754
|
+
button dimensions proportionally — unset, it defaults to 1 (size='m', no scaling).
|
|
1755
|
+
|
|
1720
1756
|
They exist because the active preset is marked with an attribute on a part, and
|
|
1721
1757
|
`::part(preset-button)[data-active]` is **invalid CSS** — an attribute selector cannot follow
|
|
1722
1758
|
`::part()`. Without these, recoloring just the active preset meant hijacking the shared
|
|
@@ -1788,6 +1824,9 @@ named colors, the shape apps otherwise hand-roll as a row of round accent-color
|
|
|
1788
1824
|
`<lr-segmented>`'s `SegmentedItem.icon`.
|
|
1789
1825
|
- `value: string | null = null` — the currently selected option's `value` (controlled); `null`
|
|
1790
1826
|
leaves nothing selected while keeping the first swatch tabbable.
|
|
1827
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — scales the swatch hit-area and
|
|
1828
|
+
fill diameter proportionally, hit-area floored at 24px; not pixel-matched to `lr-input`'s
|
|
1829
|
+
row-height scale)
|
|
1791
1830
|
- `label: string = ''` — accessible name copied to the internal `role="radiogroup"`; when empty, a
|
|
1792
1831
|
host-level `aria-label` is used as a fallback.
|
|
1793
1832
|
|
|
@@ -1797,11 +1836,13 @@ changes via click or keyboard (re-selecting the current swatch is a no-op).
|
|
|
1797
1836
|
**Slots:** none.
|
|
1798
1837
|
|
|
1799
1838
|
**CSS parts:** `base` (the `role="radiogroup"` root), `swatch` (a single `role="radio"` color
|
|
1800
|
-
swatch's interactive hit target,
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
`swatch-
|
|
1839
|
+
swatch's interactive hit target, sized via `--lr-swatch-picker-hit-size` — defaults to
|
|
1840
|
+
`--lr-size-2-5rem`, swapped per `size` tier and floored at 24px; the selected one is
|
|
1841
|
+
`[part='swatch'][aria-checked='true']`), `swatch-fill` (the filled circle inside it, sized via
|
|
1842
|
+
`--lr-swatch-picker-fill-size` — defaults to `--lr-size-1-5rem`, also swapped per `size` tier —
|
|
1843
|
+
rendered when the option has no `icon`), `swatch-icon` (the option's `icon` shape, rendered in its
|
|
1844
|
+
place when it has one). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
|
|
1845
|
+
two never coexist.
|
|
1805
1846
|
|
|
1806
1847
|
**Themeable custom properties:** `--lr-swatch-picker-selected-color` (ring color around the
|
|
1807
1848
|
selected swatch, defaults to `--lr-color-brand`, themeable independently of the focus ring),
|
|
@@ -1812,10 +1853,11 @@ shape), `--lr-swatch-picker-shine-duration` (default `0s`, a no-op; set a durati
|
|
|
1812
1853
|
for a looping brighten-and-settle pulse on the selected swatch. It drives a separate
|
|
1813
1854
|
`filter: brightness()` keyframe rather than `box-shadow`, so it composes with the blur token and
|
|
1814
1855
|
works identically for a fill and an icon; disabled outright under `prefers-reduced-motion: reduce`,
|
|
1815
|
-
which also drops the hover/selection scale transition)
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
`--lr-focus-ring
|
|
1856
|
+
which also drops the hover/selection scale transition), `--lr-swatch-picker-hit-size` (hit-area
|
|
1857
|
+
size, swapped per `size` tier), `--lr-swatch-picker-fill-size` (visible fill/icon diameter, swapped
|
|
1858
|
+
per `size` tier); plus shared tokens — `--lr-color-border`/`-brand`, `--lr-space-xs`,
|
|
1859
|
+
`--lr-border-width-thin`/`-thick`, `--lr-radius`, `--lr-transition-fast`, `--lr-focus-ring-*`,
|
|
1860
|
+
and the per-tier `--lr-size-*` tokens.
|
|
1819
1861
|
|
|
1820
1862
|
**Optional peer deps:** none.
|
|
1821
1863
|
|
|
@@ -2173,8 +2215,11 @@ the last token. `value` is a `string[]` and repeated values are submitted under
|
|
|
2173
2215
|
|
|
2174
2216
|
**Properties:** `value`, `label`, `hint`, `errorText` (`error-text`), `placeholder`, `name`,
|
|
2175
2217
|
`required`, `disabled`, `accessibleLabel` (attribute `aria-label` — forwarded to the internal text
|
|
2176
|
-
input), `
|
|
2177
|
-
`
|
|
2218
|
+
input), `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
|
|
2219
|
+
`size`, scaling the input-wrapper's row height and text size across six tiers; the remove button's
|
|
2220
|
+
hit area stays fixed at `40px` across all sizes), `allowDuplicates` (`allow-duplicates`, default
|
|
2221
|
+
`false`), `editable` (reflected, default `false` — see below), and `delimiter: string | null` (default
|
|
2222
|
+
`','` — see below).
|
|
2178
2223
|
**Slots:** `label`, `hint`, `error`.
|
|
2179
2224
|
**Events:** `input`, `change`, `lr-add` (`detail: { value }`), `lr-remove`
|
|
2180
2225
|
(`detail: { value, index }`), and `lr-token-edit`
|
|
@@ -2207,10 +2252,15 @@ does not work** — that is the four-character string `null`. Use `delimiter="no
|
|
|
2207
2252
|
(both of which the attribute converter maps to `null`), or a property binding
|
|
2208
2253
|
(`.delimiter=${null}`). Removing the attribute restores the `,` default.
|
|
2209
2254
|
|
|
2210
|
-
**Themeable custom properties:** `--lr-token-input-
|
|
2211
|
-
`
|
|
2212
|
-
`--lr-
|
|
2213
|
-
|
|
2255
|
+
**Themeable custom properties:** `--lr-token-input-padding` (the input-wrapper padding, scaled by
|
|
2256
|
+
`size`), `--lr-token-input-font-size` (the input-wrapper and token font size, scaled by `size`),
|
|
2257
|
+
`--lr-token-input-control-min-height` (the input-wrapper's block-size floor, scaled by `size`),
|
|
2258
|
+
`--lr-token-input-control-height` (exact input-wrapper height — undeclared by default, leaving the
|
|
2259
|
+
`--lr-token-input-control-min-height` floor only; set it to a length to both floor and cap the row,
|
|
2260
|
+
e.g. to pixel-match a sibling field in the same toolbar row), `--lr-token-input-input-inline-size`
|
|
2261
|
+
(the editable input's `flex-basis` inside the wrapped token row; undeclared by default, falling back
|
|
2262
|
+
inline to `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `--lr-size-4rem`, the
|
|
2263
|
+
floor that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
|
|
2214
2264
|
(default `--lr-size-6rem`, the inline size of the inline token editor opened by `editable`).
|
|
2215
2265
|
|
|
2216
2266
|
## `lr-code-editor`
|
|
@@ -2278,12 +2328,18 @@ spaces — the Tab key keeps inserting `tabSize` spaces in that case.
|
|
|
2278
2328
|
|
|
2279
2329
|
A form-associated native color picker with label, hint, and error chrome. **Properties:** the shared
|
|
2280
2330
|
form properties `name`, `value`, `disabled`, and `required`, plus `label`, `hint`, `errorText`
|
|
2281
|
-
(`error-text`),
|
|
2331
|
+
(`error-text`), `accessibleLabel` (`aria-label`), and `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'`
|
|
2332
|
+
(reflected — same scale as `lr-input`'s `size`, for compact swatch rendering at every density tier).
|
|
2333
|
+
**Slots:** `label`, `hint`, `error`. **Events:**
|
|
2282
2334
|
composed `input` and `change`, `lr-change` with `{ value }`, and `focus`/`blur` (re-dispatched from
|
|
2283
2335
|
the internal `<input>`'s own `focus`/`blur`, bubbling and composed unlike the native events). **CSS
|
|
2284
2336
|
parts:** `form-control`, `form-control-label` (the label; `label` is an alias kept for back-compat),
|
|
2285
2337
|
`input`, `hint`, `error`.
|
|
2286
2338
|
|
|
2339
|
+
**Themeable custom properties:** `--lr-color-picker-swatch-size` — the swatch's inline and block size,
|
|
2340
|
+
auto-swapped per `size` tier (default `'m'` reads `2.5rem`, `'2xs'` reads `1.25rem`, etc.), matching
|
|
2341
|
+
the size ladder `lr-input` uses.
|
|
2342
|
+
|
|
2287
2343
|
## `lr-emoji-picker`
|
|
2288
2344
|
|
|
2289
2345
|
A searchable, keyboard-navigable, form-associated emoji picker. `groups` is fully consumer-suppliable
|
|
@@ -2310,7 +2366,8 @@ search/grid; unset renders no label chrome. When `label` (or the `label` slot) i
|
|
|
2310
2366
|
localized default to `aria-labelledby` pointing at the visible label. `hint: string = ''` —
|
|
2311
2367
|
supporting text rendered below the search/grid; unset renders no hint chrome. `errorText: string =
|
|
2312
2368
|
''` (attribute `error-text`) — validation-error text rendered below the hint (overridden by slotted
|
|
2313
|
-
`error` content when provided); unset renders no error chrome.
|
|
2369
|
+
`error` content when provided); unset renders no error chrome. `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` —
|
|
2370
|
+
visual size; scales the emoji grid item box and its glyph proportionally, floored at 24px (WCAG 2.5.8).
|
|
2314
2371
|
|
|
2315
2372
|
**Events:** `lr-change` with `detail: { emoji }` (an emoji was picked — click, or Enter/Space on
|
|
2316
2373
|
the active grid cell; also sets `value`), plus the shared form `input`, `change`, `focus`, and `blur`.
|
|
@@ -2336,10 +2393,13 @@ error message). While windowing is active the rows are wrapped in `virtual-space
|
|
|
2336
2393
|
emoji flex line).
|
|
2337
2394
|
|
|
2338
2395
|
**Themeable custom properties:** `--lr-emoji-picker-item-size` (default `--lr-icon-button-size`,
|
|
2339
|
-
each emoji button's box), `--lr-emoji-picker-
|
|
2396
|
+
each emoji button's box; scaled by the `size` property), `--lr-emoji-picker-glyph-size` (default
|
|
2397
|
+
`--lr-font-size-lg`, the font size of the emoji glyph; scaled by the `size` property to keep the glyph
|
|
2398
|
+
proportional to the item box), `--lr-emoji-picker-gap` (default `--lr-space-2xs`, the gap between
|
|
2340
2399
|
emoji within a windowed row), and `--lr-emoji-picker-row-height` (default
|
|
2341
|
-
`calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height).
|
|
2342
|
-
|
|
2400
|
+
`calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height).
|
|
2401
|
+
`--lr-emoji-picker-item-size`, `--lr-emoji-picker-gap`, and `--lr-emoji-picker-row-height` are also
|
|
2402
|
+
read back in JS to derive columns-per-row and row offsets for the windowed layout,
|
|
2343
2403
|
resolved to real pixels by measuring hidden probe boxes the component's own stylesheet sizes from
|
|
2344
2404
|
those same tokens — so any CSS length unit works, `rem`/`em` and `calc()` included, and the windowed
|
|
2345
2405
|
geometry matches what is painted without expressing the tokens in `px`. The measurement is cached
|
|
@@ -2356,8 +2416,9 @@ repainting everything else that reads it — as the only way in. Like `lr-time-r
|
|
|
2356
2416
|
properties, it is written as an inline `var()` fallback at the point of use rather than declared on
|
|
2357
2417
|
`:host`, so a value set on **any ancestor** reaches it instead of being shadowed.
|
|
2358
2418
|
|
|
2359
|
-
Two constraints remain. `--lr-emoji-picker-item-size` is
|
|
2360
|
-
|
|
2419
|
+
Two constraints remain. `--lr-emoji-picker-item-size` is held at a flat 24px minimum (WCAG 2.5.8
|
|
2420
|
+
touch target floor): the smaller `size` tier values can shrink the box below the old 40px
|
|
2421
|
+
unconditional floor, but the minimum holds at 24px regardless of tokens, and the windowed geometry
|
|
2361
2422
|
follows the clamped, painted size. And windowed rows are absolutely positioned at the row-height
|
|
2362
2423
|
pitch, so `--lr-emoji-picker-row-height` must stay at or above the item size plus the group-label
|
|
2363
2424
|
band (`--lr-space-l`) — the default's own formula — or consecutive rows overlap. Columns per
|
|
@@ -2399,6 +2460,81 @@ dim through `--lr-opacity-disabled`, the same library-wide token every other dis
|
|
|
2399
2460
|
reads — so retuning `--lr-theme-opacity-disabled` keeps this form's disabled state consistent with
|
|
2400
2461
|
the rest of the UI instead of needing a `::part()` rule here.
|
|
2401
2462
|
|
|
2463
|
+
## `lr-locale-picker`
|
|
2464
|
+
|
|
2465
|
+
A closed-list locale switcher over the library's own locale registry. First-party invention (no
|
|
2466
|
+
Web Awesome equivalent). With `locales` unset (the default), the offered rows are exactly
|
|
2467
|
+
`getRegisteredLyraLocales()` — every locale with strings registered via `registerLyraLocale()`,
|
|
2468
|
+
plus `en` — kept live via `subscribeLyraLocaleRegistry()`. Built directly on `lr-select`'s
|
|
2469
|
+
trigger-button/`aria-activedescendant` listbox technique, not composed from it — a plain closed
|
|
2470
|
+
list, no filter/free-text mode.
|
|
2471
|
+
|
|
2472
|
+
**Properties:**
|
|
2473
|
+
- `locales: LyraLocaleCatalog = []` (attribute: false) — `LyraLocaleCatalog = string[] |
|
|
2474
|
+
LyraLocaleEntry[]`, `LyraLocaleEntry { tag: string; label?: string }`. Empty (the default)
|
|
2475
|
+
auto-discovers the registry; a non-empty array (either form) overrides it entirely — a curated
|
|
2476
|
+
subset, custom order, custom labels, or a locale offered before its strings are registered.
|
|
2477
|
+
- `showFlags: boolean = true` — each row's leading `<lr-flag language={tag} variant="compact">`;
|
|
2478
|
+
`false` omits the flag element entirely (not just visually).
|
|
2479
|
+
- `value: string = ''` — the **committed** selection (form value, drives `lr-change`). While `''`
|
|
2480
|
+
and untouched, the trigger *displays* `effectiveLocale` as a preview label, but
|
|
2481
|
+
`checkValidity()`/`required` are governed by the real `value`, which stays `''` until a real
|
|
2482
|
+
commit — mirrors a native `<select>` showing its first option's text without that being a
|
|
2483
|
+
committed selection.
|
|
2484
|
+
- `required: boolean = false`, `disabled: boolean = false`, `name: string = ''` — standard
|
|
2485
|
+
form-associated properties.
|
|
2486
|
+
- `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
|
|
2487
|
+
same opt-in form-control chrome as `lr-select` (props + matching named slots + parts); unset
|
|
2488
|
+
renders none of it.
|
|
2489
|
+
- `open: boolean = false` (reflected).
|
|
2490
|
+
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`).
|
|
2491
|
+
|
|
2492
|
+
**Events:** `lr-change` (`detail: { value, previousValue }`, **cancelable**) — fired on every
|
|
2493
|
+
explicit pick; if not `defaultPrevented`, the component applies the pick itself via
|
|
2494
|
+
`setLyraLocale(value)`. A listener calling `event.preventDefault()` leaves `value` updated but the
|
|
2495
|
+
active locale untouched, so a host can persist the choice first and apply it later. `blur`/`focus`
|
|
2496
|
+
re-dispatched from the internal trigger as bubbling, composed events.
|
|
2497
|
+
|
|
2498
|
+
**Methods:** `focus(options?)`, `blur()`, and `click()` — all forward to the internal trigger
|
|
2499
|
+
button, same convention as `lr-select`'s identical trio.
|
|
2500
|
+
|
|
2501
|
+
**Slots:** `label`, `hint`, `error`.
|
|
2502
|
+
|
|
2503
|
+
**CSS parts:** `form-control`, `form-control-label`, `trigger`, `listbox`, `option`,
|
|
2504
|
+
`option-flag` (present only while `showFlags` is on), `option-label`, `option-tag` (the row's
|
|
2505
|
+
secondary line — the raw BCP-47 tag), `expand-icon`, `hint`, `error`.
|
|
2506
|
+
|
|
2507
|
+
**Themeable custom properties:** `--lr-locale-picker-trigger-padding`,
|
|
2508
|
+
`--lr-locale-picker-trigger-min-height`, `--lr-locale-picker-trigger-height` (unset by default, a
|
|
2509
|
+
floor-only escape hatch — set a length to both floor and cap the trigger),
|
|
2510
|
+
`--lr-locale-picker-font-size`, `--lr-locale-picker-expand-size` (all scaled by `size`), and
|
|
2511
|
+
`--lr-locale-picker-option-active-bg` (default `--lr-color-brand-quiet`, the hovered/keyboard-active
|
|
2512
|
+
row background).
|
|
2513
|
+
|
|
2514
|
+
**Optional peer deps:** none directly — each row's `<lr-flag>` degrades to an empty render (no
|
|
2515
|
+
peer warning duplication; `lr-flag` itself already logs one) when the optional
|
|
2516
|
+
`@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
|
|
2517
|
+
|
|
2518
|
+
```html
|
|
2519
|
+
<lr-locale-picker label="Language"></lr-locale-picker>
|
|
2520
|
+
<script type="module">
|
|
2521
|
+
import { registerLyraLocale } from '@aceshooting/lyra-ui';
|
|
2522
|
+
registerLyraLocale('fr', { close: 'Fermer' });
|
|
2523
|
+
document
|
|
2524
|
+
.querySelector('lr-locale-picker')
|
|
2525
|
+
.addEventListener('lr-change', (e) => console.log(e.detail.value));
|
|
2526
|
+
</script>
|
|
2527
|
+
```
|
|
2528
|
+
|
|
2529
|
+
**Known gotchas:**
|
|
2530
|
+
- selecting a row applies `setLyraLocale()` itself unless the listener calls
|
|
2531
|
+
`event.preventDefault()` on `lr-change` — it does not touch
|
|
2532
|
+
`document.documentElement.lang`/`dir`; apply writing-direction changes to the page yourself.
|
|
2533
|
+
- no filter/free-text mode — for a catalog with hundreds+ of rows, roll your own with `lr-select`
|
|
2534
|
+
or `lr-combobox` instead.
|
|
2535
|
+
- arrow-key navigation is vertical-only (Home/End/ArrowUp/ArrowDown); there is no
|
|
2536
|
+
ArrowLeft/ArrowRight remap under RTL, since there is no horizontal axis to remap.
|
|
2537
|
+
|
|
2402
2538
|
# Data display, dashboards & flow canvas (`components/data/`)
|
|
2403
2539
|
|
|
2404
2540
|
## `lr-sparkline`
|
|
@@ -3645,7 +3781,13 @@ that reads it. The same restriction motivates three more state-scoped outline co
|
|
|
3645
3781
|
a node that is an invalid connect-gesture drop target; `--lr-flow-canvas-node-connect-target-outline-color`
|
|
3646
3782
|
(default `var(--lr-color-brand)`) — outline of a node that is a valid connect-gesture drop target; and
|
|
3647
3783
|
`--lr-flow-canvas-drop-active-outline-color` (default `var(--lr-color-brand)`) — outline of the
|
|
3648
|
-
viewport itself while a palette item is dragged over it (`droppable`).
|
|
3784
|
+
viewport itself while a palette item is dragged over it (`droppable`). A fifth,
|
|
3785
|
+
`--lr-flow-canvas-node-hover-outline-color` (default `var(--lr-color-border-strong)`) — the
|
|
3786
|
+
mouse-hover preview of a node's own `:focus-visible` ring — exists for a different reason than the
|
|
3787
|
+
four above: it is `:hover`-gated rather than attribute-gated, so `::part(node):hover` *is* valid
|
|
3788
|
+
CSS here, but the internal `[part='node']:hover` rule still out-specifies it ((0,2,0) vs. (0,1,1)),
|
|
3789
|
+
which this custom property sidesteps the same way. Set it to `transparent` to opt out of the hover
|
|
3790
|
+
treatment entirely.
|
|
3649
3791
|
|
|
3650
3792
|
**Optional peer deps:** none.
|
|
3651
3793
|
|
|
@@ -3966,50 +4108,6 @@ numbers, so the two circular-meter components in the library share one visual sc
|
|
|
3966
4108
|
|
|
3967
4109
|
---
|
|
3968
4110
|
|
|
3969
|
-
## `lr-data-grid`
|
|
3970
|
-
|
|
3971
|
-
Keyboard-navigable data grid with typed `columns` and `rows`, sortable headers, roving cell focus,
|
|
3972
|
-
loading/empty states, and responsive horizontal overflow.
|
|
3973
|
-
|
|
3974
|
-
**Properties:**
|
|
3975
|
-
- `columns: DataGridColumn<T>[] = []` (attribute: false) — `{ key, label, width?, sortable?,
|
|
3976
|
-
value? }`; `width` becomes the header cell's `inline-size`, `value(row)` overrides the default
|
|
3977
|
-
`row[key]` lookup
|
|
3978
|
-
- `rows: T[] = []` (attribute: false)
|
|
3979
|
-
- `rowKey: (row: T, index: number) => string | number = (_row, index) => index` (attribute: false)
|
|
3980
|
-
- `selectedKey: string | number | null = null` (attribute: false) — compared against `rowKey(row, i)`
|
|
3981
|
-
to set `[part='row'][data-selected]` and `aria-selected`
|
|
3982
|
-
- `sortKey: string = ''`, `sortDirection: 'ascending' | 'descending' = 'ascending'`
|
|
3983
|
-
(attribute: false) — the grid updates both on header activation and emits `lr-sort`, but never
|
|
3984
|
-
reorders `rows`; sorting stays the consumer's job
|
|
3985
|
-
- `loading: boolean = false` (reflected) — replaces the body with a localized "loading" row
|
|
3986
|
-
- `emptyText: string = ''` (attribute `empty-text`) — empty-state text; falls back to the localized
|
|
3987
|
-
`noData`
|
|
3988
|
-
- `accessibleLabel: string = ''` (attribute `aria-label`) — names the `role="grid"` table; falls back
|
|
3989
|
-
to the localized `dataGridLabel`
|
|
3990
|
-
|
|
3991
|
-
**Keyboard:** exactly one cell is tabbable. Arrows move the roving focus (Left/Right are swapped
|
|
3992
|
-
under RTL), Home/End jump to the first/last column of the current row, Enter/Space activate the row.
|
|
3993
|
-
The focus position is re-clamped whenever `rows`/`columns` shrink, so the grid can't lose its tab stop.
|
|
3994
|
-
|
|
3995
|
-
**Events:** `lr-row-click` (`detail: { row }`, click or Enter/Space), `lr-selection-change`
|
|
3996
|
-
(`detail: { row }`, emitted alongside it after `selectedKey` updates), `lr-cell-focus`
|
|
3997
|
-
(`detail: { row, column }`, `column` is the column `key`), `lr-sort` (`detail: { key, direction }`,
|
|
3998
|
-
`sortable` columns only; re-activating the active column flips `direction`).
|
|
3999
|
-
|
|
4000
|
-
**Slots:** none.
|
|
4001
|
-
|
|
4002
|
-
**CSS parts:** `viewport` (the scrolling bordered wrapper), `grid` (the `<table role="grid">`),
|
|
4003
|
-
`header` (each sticky `<th>`), `row`, `cell`, `empty` (the loading / no-data cell).
|
|
4004
|
-
|
|
4005
|
-
**Themeable custom properties:** `--lr-data-grid-row-selected-bg` (default
|
|
4006
|
-
`var(--lr-color-brand-quiet)`) — the background of the selected row's cells. It is an inline `var()`
|
|
4007
|
-
fallback at its point of use rather than a `:host` declaration, so it can be set on the element *or
|
|
4008
|
-
any ancestor*. It exists because Shadow Parts forbids an attribute selector after `::part()` —
|
|
4009
|
-
`::part(row)[aria-selected='true']` is invalid CSS — leaving the library-wide
|
|
4010
|
-
`--lr-color-brand-quiet` token as the only prior lever, which repaints every other surface reading
|
|
4011
|
-
it. `lr-table` exposes the equivalent knob as `--lr-table-row-selected-bg`.
|
|
4012
|
-
|
|
4013
4111
|
## `lr-calendar`
|
|
4014
4112
|
|
|
4015
4113
|
Responsive month calendar with event markers and an agenda view.
|
|
@@ -4835,14 +4933,18 @@ each falls back to the token its rule used before. Otherwise shared tokens —
|
|
|
4835
4933
|
|
|
4836
4934
|
## `lr-control-group`
|
|
4837
4935
|
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
controls, selects, buttons, and other interactive elements.
|
|
4936
|
+
Semantic grouping for mixed controls and actions. It keeps slotted children in a wrapping
|
|
4937
|
+
inline-flex row and centers children with different intrinsic heights. Use it for dashboard
|
|
4938
|
+
toolbars that combine segmented controls, selects, buttons, and other interactive elements.
|
|
4842
4939
|
|
|
4843
4940
|
**Properties:**
|
|
4844
4941
|
- `label: string = ''` — accessible name for the internal `role="group"`; when empty, a host
|
|
4845
4942
|
`aria-label` is forwarded as a fallback.
|
|
4943
|
+
- `responsive: boolean = false` (reflected) — opts into a `@container` narrow-allocation breakpoint
|
|
4944
|
+
(switches to a full-width allocation below `20rem`) by making the host a CSS size-query
|
|
4945
|
+
container. Left unset, the host is `container-type: normal`, since `container-type: inline-size`
|
|
4946
|
+
unconditionally would collapse the group to 0 inline size whenever it sits as an ordinary
|
|
4947
|
+
(`flex-basis: auto`) child of a shrink-to-fit flex row — this component's own primary use case.
|
|
4846
4948
|
|
|
4847
4949
|
**Events:** none.
|
|
4848
4950
|
|
|
@@ -4865,6 +4967,79 @@ between grouped controls; shared spacing and layout tokens apply as well.
|
|
|
4865
4967
|
- This is a layout and semantics primitive; it does not coordinate child values or emit a group
|
|
4866
4968
|
change event.
|
|
4867
4969
|
- Children wrap according to the group's own allocated inline size, not the viewport width.
|
|
4970
|
+
- The `@container` narrow-allocation breakpoint only applies when `responsive` is set. Setting
|
|
4971
|
+
`responsive` while this group also sits as a shrink-to-fit flex child re-introduces the 0-width
|
|
4972
|
+
collapse this default is designed to avoid — only opt in when the group's own size comes from
|
|
4973
|
+
somewhere else (a percentage width, a grid track, a block-level parent).
|
|
4974
|
+
|
|
4975
|
+
---
|
|
4976
|
+
|
|
4977
|
+
## `lr-reorder-list` / `lr-reorder-item`
|
|
4978
|
+
|
|
4979
|
+
A generic flat-list reorder primitive: per-row move-up/move-down buttons (always available), plus
|
|
4980
|
+
Ctrl/Cmd+ArrowUp/ArrowDown from focus anywhere inside a row — the same modifier convention
|
|
4981
|
+
`<lr-tree>`'s `reorderable` and `<lr-dashboard-grid>`'s `cells-draggable` already establish. Unlike
|
|
4982
|
+
`<lr-tree>`'s controlled `reorderable` mode, this list physically moves its own slotted
|
|
4983
|
+
`<lr-reorder-item>` light-DOM nodes itself (there is no `data` array prop to reconcile against),
|
|
4984
|
+
and emits `lr-reorder` with the full new order so the host can persist it without hand-rolling its
|
|
4985
|
+
own splice/resort logic.
|
|
4986
|
+
|
|
4987
|
+
### `lr-reorder-list`
|
|
4988
|
+
|
|
4989
|
+
**Properties:**
|
|
4990
|
+
- `label: string = ''` — accessible name for the internal `role="list"`; when empty, a host
|
|
4991
|
+
`aria-label` is forwarded as a fallback.
|
|
4992
|
+
- `disabled: boolean = false` (reflected) — disables every item's move buttons and the Ctrl/Cmd+
|
|
4993
|
+
Arrow shortcut, without mutating any item's own `disabled` attribute.
|
|
4994
|
+
|
|
4995
|
+
**Events:** `lr-reorder` (`detail: { order: string[], fromIndex: number, toIndex: number }` — fired
|
|
4996
|
+
after every successful move; `order` is every current item's `value` (or its DOM-position-index
|
|
4997
|
+
fallback) in the new top-to-bottom order)
|
|
4998
|
+
|
|
4999
|
+
**Slots:** default — `<lr-reorder-item>` elements.
|
|
5000
|
+
|
|
5001
|
+
**CSS parts:** `base` — the internal `role="list"` wrapper.
|
|
5002
|
+
|
|
5003
|
+
**Themeable custom properties:** `--lr-reorder-list-gap` (default `var(--lr-space-2xs)`) — gap
|
|
5004
|
+
between rows.
|
|
5005
|
+
|
|
5006
|
+
```html
|
|
5007
|
+
<lr-reorder-list label="Form fields" @lr-reorder=${(e) => console.log(e.detail.order)}>
|
|
5008
|
+
<lr-reorder-item value="name">Name</lr-reorder-item>
|
|
5009
|
+
<lr-reorder-item value="email">Email</lr-reorder-item>
|
|
5010
|
+
<lr-reorder-item value="phone">Phone</lr-reorder-item>
|
|
5011
|
+
</lr-reorder-list>
|
|
5012
|
+
```
|
|
5013
|
+
|
|
5014
|
+
**Known gotchas:**
|
|
5015
|
+
- Boundary-disabled state (`atStart`/`atEnd`) and the `listDisabled` cascade are computed and
|
|
5016
|
+
pushed onto each `<lr-reorder-item>` by this list, on every slot change and every move — an item
|
|
5017
|
+
alone can't know its own position.
|
|
5018
|
+
- No pointer drag-and-drop; move-up/move-down buttons and the keyboard shortcut only.
|
|
5019
|
+
|
|
5020
|
+
---
|
|
5021
|
+
|
|
5022
|
+
### `lr-reorder-item`
|
|
5023
|
+
|
|
5024
|
+
**Properties:**
|
|
5025
|
+
- `value?: string` — stable identifier included in the parent's `lr-reorder` order array; falls
|
|
5026
|
+
back to this item's live DOM-position index when unset.
|
|
5027
|
+
- `disabled: boolean = false` (reflected) — disables this row's own move buttons only; does not
|
|
5028
|
+
hide its slotted content.
|
|
5029
|
+
- `atStart: boolean = false`, `atEnd: boolean = false`, `listDisabled: boolean = false`
|
|
5030
|
+
(attribute: false) — pushed down by the parent `<lr-reorder-list>`; normally set internally, not
|
|
5031
|
+
by consumers.
|
|
5032
|
+
|
|
5033
|
+
**Events:** `lr-move-request` (`detail: { direction: 'up' | 'down' }` — a move button was activated
|
|
5034
|
+
while not disabled; handled by the parent `<lr-reorder-list>`, which performs the actual move)
|
|
5035
|
+
|
|
5036
|
+
**Slots:** default — arbitrary row content.
|
|
5037
|
+
|
|
5038
|
+
**CSS parts:** `base` (row wrapper), `move-up-button`, `move-down-button`, `content` (default-slot
|
|
5039
|
+
wrapper).
|
|
5040
|
+
|
|
5041
|
+
**Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
|
|
5042
|
+
between the move buttons and the row content.
|
|
4868
5043
|
|
|
4869
5044
|
---
|
|
4870
5045
|
|
|
@@ -5087,7 +5262,11 @@ content clickable, and it shows nothing while the viewport is above the first gr
|
|
|
5087
5262
|
**Themeable custom properties:** `--lr-virtual-list-height` (default `24rem` — the host's bounded
|
|
5088
5263
|
scroll extent; component-specific since a virtualized list is meaningless without a sized viewport),
|
|
5089
5264
|
plus shared `--lr-focus-ring-width/-color/-offset` (inward-offset ring on `[part="base"]`, negative
|
|
5090
|
-
so it isn't clipped by the container's own `overflow: auto`).
|
|
5265
|
+
so it isn't clipped by the container's own `overflow: auto`). `[part="base"]` also carries a
|
|
5266
|
+
mouse-hover outline — a subtler preview of that same `:focus-visible` ring, shown because the part
|
|
5267
|
+
always carries `tabindex="0"` and is a real keyboard-navigable target — tinted via
|
|
5268
|
+
`--lr-virtual-list-hover-outline-color` (default `var(--lr-color-border-strong)`); set it to
|
|
5269
|
+
`transparent` to opt out of the hover treatment entirely.
|
|
5091
5270
|
|
|
5092
5271
|
**Optional peer deps:** none.
|
|
5093
5272
|
|
|
@@ -5994,7 +6173,10 @@ false` (reflected — disables every gesture grid-wide), `accessibleLabel: strin
|
|
|
5994
6173
|
**Themeable custom properties:** `--lr-dashboard-grid-columns`, `--lr-dashboard-grid-row-height`,
|
|
5995
6174
|
and `--lr-dashboard-grid-gap` back the CSS Grid's `grid-template-columns`/`grid-auto-rows`/`gap`.
|
|
5996
6175
|
The `columns`/`rowHeight`/`gap` properties write them inline on `[part='base']` on every render, so
|
|
5997
|
-
overriding them from a stylesheet has no effect — set the properties instead.
|
|
6176
|
+
overriding them from a stylesheet has no effect — set the properties instead. `--lr-dashboard-grid-cell-hover-outline-color`
|
|
6177
|
+
(default `var(--lr-color-border-strong)`) retints the mouse-hover outline on `[part='cell']` — a
|
|
6178
|
+
preview of its own `:focus-visible` ring, shown because every cell is a real focusable,
|
|
6179
|
+
draggable/resizable target; set it to `transparent` to opt out of the hover treatment entirely.
|
|
5998
6180
|
|
|
5999
6181
|
## `lr-drilldown-panel`
|
|
6000
6182
|
|
|
@@ -6468,7 +6650,7 @@ already follow.
|
|
|
6468
6650
|
### `lr-chip`
|
|
6469
6651
|
|
|
6470
6652
|
**Properties:**
|
|
6471
|
-
- `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — standard visual-density
|
|
6653
|
+
- `size: '3xs' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — standard visual-density
|
|
6472
6654
|
scale for typography, padding, gap, and icon size; `m` preserves the original chip dimensions
|
|
6473
6655
|
- `tone: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected — tints the
|
|
6474
6656
|
whole pill using a loud-color-on-quiet-tint convention; `neutral` has no dedicated token pair, so
|
|
@@ -7933,11 +8115,15 @@ tag itself, and so does a structurally invalid one — `Intl.DisplayNames` throw
|
|
|
7933
8115
|
those rather than falling back, and a language picker should degrade to showing the raw tag rather
|
|
7934
8116
|
than tearing down the render. Pair it with `languageToCountry()` for the flag half of the same row.
|
|
7935
8117
|
|
|
7936
|
-
**Locale picker recipe.**
|
|
7937
|
-
|
|
7938
|
-
`
|
|
7939
|
-
|
|
7940
|
-
|
|
8118
|
+
**Locale picker recipe.** `<lr-locale-picker>` (`components/forms/locale-picker/`) is the built-in
|
|
8119
|
+
locale switcher — a closed-list dropdown over the locale registry or an explicit catalog, with
|
|
8120
|
+
`lr-flag`/`localeNativeName()` rows and full form association out of the box. The manual
|
|
8121
|
+
composition below remains available for an app that wants different chrome (its own dismiss
|
|
8122
|
+
surface, a different active-state marker, or a layout `<lr-locale-picker>` doesn't offer):
|
|
8123
|
+
`<lr-popover>` supplies the light-dismiss surface, `<lr-flag>` the country mark,
|
|
8124
|
+
`localeNativeName()` the endonym, and `aria-current="true"` marks the active choice. Which locales
|
|
8125
|
+
exist is the app's decision, so the app owns the list. Set `lang` on each row so assistive tech
|
|
8126
|
+
pronounces the endonym in its own language, and use `variant="compact"` at icon scale.
|
|
7941
8127
|
|
|
7942
8128
|
```html
|
|
7943
8129
|
<lr-popover placement="bottom-start">
|
|
@@ -12609,8 +12795,11 @@ appends host-supplied content (re-invoked per row on every render, e.g. a `lr-me
|
|
|
12609
12795
|
actions) after the built-in `rowActions` output in each row's `actions` slot; events it fires reach
|
|
12610
12796
|
the host normally and never trigger `lr-select`. Unset renders only the built-in `rowActions`.
|
|
12611
12797
|
`renderLeading?: (thread: ChatThread) => TemplateResult` (attribute: false) — renders non-interactive
|
|
12612
|
-
leading content in each virtualized row. `
|
|
12613
|
-
(attribute: false) —
|
|
12798
|
+
leading content in each virtualized row. `renderExcerpt?: (thread: ChatThread) => TemplateResult`
|
|
12799
|
+
(attribute: false) — renders rich content into the row item's own `excerpt` slot, winning over the
|
|
12800
|
+
plain-string `excerpt` property (e.g. a server-highlighted search-match snippet), while leaving the
|
|
12801
|
+
built-in title layout and inline-rename affordance untouched. `renderMeta?: (thread: ChatThread) =>
|
|
12802
|
+
TemplateResult` (attribute: false) — appends structured metadata in the row's meta region.
|
|
12614
12803
|
`renderRowContent?: (thread: ChatThread) => TemplateResult` (attribute: false) — replaces the
|
|
12615
12804
|
conversation item's title/excerpt/meta content area with custom non-interactive row content.
|
|
12616
12805
|
`formatGroupLabel?: (key: ThreadBucketKey, date?: Date) => string` (attribute: false) — overrides
|
|
@@ -12643,9 +12832,10 @@ header row and the pinned copy alike, and the band itself is where a shadow or b
|
|
|
12643
12832
|
belongs), `row` (all exported across the internal `lr-virtual-list` shadow
|
|
12644
12833
|
boundary), `row-wrapper` (the wrapper around `wrapRow` output, only present when `wrapRow` is set;
|
|
12645
12834
|
row-only — group headers are never passed through `wrapRow`, so they never carry it), and
|
|
12646
|
-
`row-leading`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
|
|
12835
|
+
`row-leading`/`row-excerpt`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
|
|
12647
12836
|
their corresponding render-hook output; inherited fonts, layout values, and theme custom properties
|
|
12648
|
-
reach callback-rendered descendants through these parts).
|
|
12837
|
+
reach callback-rendered descendants through these parts). `row-excerpt` wraps `renderExcerpt`
|
|
12838
|
+
output, which is slotted into the row item's own `excerpt` slot.
|
|
12649
12839
|
|
|
12650
12840
|
Data mode additionally forwards each row `<lr-conversation-item>`'s own parts under a `row-item-`
|
|
12651
12841
|
prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-content`,
|
|
@@ -12653,8 +12843,9 @@ prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-conten
|
|
|
12653
12843
|
`row-item-meta`, `row-item-timestamp`, `row-item-actions`.
|
|
12654
12844
|
|
|
12655
12845
|
**Keep the two prefixes straight — they are different surfaces.** The `row-*` parts wrap *this*
|
|
12656
|
-
component's own render-callback output (`wrapRow`, `renderLeading`, `
|
|
12657
|
-
`renderMeta`, `renderActions`); the `row-item-*` parts are the row item's
|
|
12846
|
+
component's own render-callback output (`wrapRow`, `renderLeading`, `renderExcerpt`,
|
|
12847
|
+
`renderRowContent`, `renderMeta`, `renderActions`); the `row-item-*` parts are the row item's
|
|
12848
|
+
*internals*. Row density
|
|
12658
12849
|
in particular lives in `row-item-base`'s padding and `row-item-title`'s font size, so
|
|
12659
12850
|
`::part(row-item-base)` is the supported way to build a dense sidebar.
|
|
12660
12851
|
|
|
@@ -13651,17 +13842,26 @@ renders at the start of the action row, before Deny/Edit/Approve.
|
|
|
13651
13842
|
`autoCorrect: string = 'off'` (attribute `autocorrect`), `autocomplete: string = 'off'`,
|
|
13652
13843
|
`wrap: 'hard'|'soft'|'off' = 'soft'`, `inputMode: string = ''` (attribute `inputmode`),
|
|
13653
13844
|
and `enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the raw-JSON
|
|
13654
|
-
`<textarea>` while editing; the defaults keep browser editing assistance from changing JSON text
|
|
13845
|
+
`<textarea>` while editing; the defaults keep browser editing assistance from changing JSON text.
|
|
13846
|
+
`pending: 'approve' | 'deny' | null = null` (reflected) — which decision is awaiting host
|
|
13847
|
+
resolution while an `lr-approve`/`lr-deny` listener has called `preventDefault()` on the
|
|
13848
|
+
now-cancelable event; the pending button shows `loading`, the other is `disabled` (Approve is
|
|
13849
|
+
also still `disabled` while an in-progress edit is invalid JSON, independent of `pending`).
|
|
13850
|
+
Escape/backdrop dismissal is suppressed while `pending` is set. Finalize by calling
|
|
13851
|
+
`close('approve'|'deny')`, or clear `.pending` back to `null` to bounce back to the undecided
|
|
13852
|
+
state; `pending` also resets to `null` every time the dialog re-opens.
|
|
13655
13853
|
|
|
13656
13854
|
**Methods:** `close(reason: ToolApprovalDialogCloseReason = 'api'): void` — closes the dialog, emits
|
|
13657
13855
|
`lr-close` with `reason`, and returns focus to whatever had it before the dialog opened; a no-op if
|
|
13658
13856
|
already closed.
|
|
13659
13857
|
|
|
13660
13858
|
**Events:** `lr-approve` (`detail: { args: unknown }` — the current, already-parsed arguments: the
|
|
13661
|
-
original `args` prop, or the user's edited-and-validated version if an edit was in progress
|
|
13662
|
-
|
|
13663
|
-
|
|
13664
|
-
`
|
|
13859
|
+
original `args` prop, or the user's edited-and-validated version if an edit was in progress.
|
|
13860
|
+
Cancelable: a listener calling `preventDefault()` sets `pending` to `'approve'` instead of
|
|
13861
|
+
closing; otherwise always followed by `lr-close` with reason `'approve'`), `lr-deny` (no detail —
|
|
13862
|
+
`this.emit('lr-deny')` is called with no second argument, so per the DOM spec's `CustomEventInit`
|
|
13863
|
+
default, `event.detail` is `null`, not `undefined`. Cancelable, same `pending` mechanism, setting
|
|
13864
|
+
`pending` to `'deny'`; otherwise always followed by `lr-close` with reason `'deny'`), `lr-close`
|
|
13665
13865
|
(`detail: ToolApprovalDialogCloseReason` — fired exactly once per dismissal, via Escape, a backdrop
|
|
13666
13866
|
click, the Approve/Deny buttons, or a `close()` call)
|
|
13667
13867
|
|
|
@@ -13669,7 +13869,12 @@ click, the Approve/Deny buttons, or a `close()` call)
|
|
|
13669
13869
|
rendered before the built-in Deny/Edit/Approve buttons.
|
|
13670
13870
|
|
|
13671
13871
|
**CSS parts:** `backdrop`, `panel`, `header`, `tool-name`, `body`, `args-view`, `args-editor`, `error`,
|
|
13672
|
-
`footer`, `deny-button`, `edit-button`, `approve-button
|
|
13872
|
+
`footer`, `deny-button`, `edit-button`, `approve-button`,
|
|
13873
|
+
`deny-button-base`, `deny-button-label`, `deny-button-start`, `deny-button-end`,
|
|
13874
|
+
`deny-button-spinner`, `approve-button-base`, `approve-button-label`, `approve-button-start`,
|
|
13875
|
+
`approve-button-end`, `approve-button-spinner` (`deny-button`/`approve-button` are each an
|
|
13876
|
+
`<lr-button>` host; these five per-button parts are re-exported from its own `lr-button` parts via
|
|
13877
|
+
`exportparts`; `edit-button` stays a plain `<button>`, unaffected by this).
|
|
13673
13878
|
|
|
13674
13879
|
**Themeable custom properties:** `--lr-tool-approval-dialog-overlay-color` (default
|
|
13675
13880
|
`rgb(0 0 0 / 0.5)` — the backdrop scrim color; component-specific since no shared overlay token
|
|
@@ -13731,6 +13936,16 @@ shared composed-tree focus traversal used by the other modal families.
|
|
|
13731
13936
|
this a mobile browser (notably iOS Safari, which defaults textarea `autocapitalize` to
|
|
13732
13937
|
`'sentences'`) could auto-capitalize or auto-correct key/value text as the user edits, silently
|
|
13733
13938
|
corrupting the JSON.
|
|
13939
|
+
- `deny-button`/`approve-button` are `<lr-button>` hosts (`variant="neutral"`/`"brand"` — this
|
|
13940
|
+
component has no `tone` property) — `--lr-button-*` theming reaches them directly. A consumer
|
|
13941
|
+
previously styling `::part(deny-button)`/`::part(approve-button)` for
|
|
13942
|
+
padding/border/font/`:hover`/`:focus-visible` must move that CSS onto the re-exported
|
|
13943
|
+
`deny-button-base`/`approve-button-base` sub-parts instead. `edit-button` is unaffected and stays
|
|
13944
|
+
a raw `<button>`.
|
|
13945
|
+
- An `lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while
|
|
13946
|
+
its own async work is in flight — see `pending` above. While `pending` is set, Escape/backdrop
|
|
13947
|
+
dismissal is suppressed, so a consumer that never resolves the pending decision leaves the
|
|
13948
|
+
dialog open until it clears `.pending` or calls `close()` directly itself.
|
|
13734
13949
|
|
|
13735
13950
|
---
|
|
13736
13951
|
|
|
@@ -14298,6 +14513,10 @@ narrow-allocation `@container` treatment is switched off — a compact bar is *e
|
|
|
14298
14513
|
so stretching the buttons to fill would be exactly wrong. Re-chrome it through the
|
|
14299
14514
|
`--lr-confirm-bar-compact-*` properties below. Everything else is unchanged: the event shapes, the
|
|
14300
14515
|
focus-to-`[part="status"]`-before-unmount contract, and `role="group"` with its heading label.
|
|
14516
|
+
`pending: 'approved' | 'denied' | null = null` (reflected) — which decision is awaiting host
|
|
14517
|
+
resolution while an `lr-approve`/`lr-deny` listener has called `preventDefault()` on the
|
|
14518
|
+
now-cancelable event; the pending button shows `loading`, the other is `disabled`. Set `.decision`
|
|
14519
|
+
to finalize, or clear `.pending` back to `null` to bounce back to the undecided state.
|
|
14301
14520
|
|
|
14302
14521
|
**Slots:** default — supplementary body content between the heading and the actions (e.g. a
|
|
14303
14522
|
`lr-diff-view`). `footer` — extra content at the start of the action row.
|
|
@@ -14307,8 +14526,12 @@ focus-to-`[part="status"]`-before-unmount contract, and `role="group"` with its
|
|
|
14307
14526
|
|
|
14308
14527
|
**CSS parts:** `base` (`role="group"`), `heading`/`tool-name`, `body`, `args` (the
|
|
14309
14528
|
details/json-viewer wrapper, only rendered when `args` is defined), `footer`, `deny-button`,
|
|
14310
|
-
`approve-button` (named identically to the dialog's parts),
|
|
14311
|
-
|
|
14529
|
+
`approve-button` (each an `<lr-button>` host, named identically to the dialog's parts),
|
|
14530
|
+
`deny-button-base`, `deny-button-label`, `deny-button-start`, `deny-button-end`,
|
|
14531
|
+
`deny-button-spinner`, `approve-button-base`, `approve-button-label`, `approve-button-start`,
|
|
14532
|
+
`approve-button-end`, `approve-button-spinner` (re-exported from each button's own
|
|
14533
|
+
`lr-button` parts via `exportparts`), `status` (the decided-state text, always present in the DOM
|
|
14534
|
+
as a focus landing spot).
|
|
14312
14535
|
|
|
14313
14536
|
**Themeable custom properties:** the `compact` presentation is deliberately chrome-less by default
|
|
14314
14537
|
and re-chromed entirely through five properties, all scoped to `[part="base"]` while `compact`:
|
|
@@ -14325,8 +14548,15 @@ bar in this panel a hairline border" a one-rule change on the panel.
|
|
|
14325
14548
|
- `[part="status"]` is always rendered and must never be given `display: none`. Deciding moves focus
|
|
14326
14549
|
to it synchronously, before the Deny/Approve buttons unmount, so hiding it would drop focus to
|
|
14327
14550
|
`<body>`. The shipped `:empty` rule on it has never matched, and that is load-bearing.
|
|
14328
|
-
- `[part="deny-button"]
|
|
14329
|
-
`
|
|
14551
|
+
- `[part="deny-button"]`/`[part="approve-button"]` are `<lr-button>` hosts (`variant="neutral"`/
|
|
14552
|
+
`"brand"`, `"danger"` under `tone="danger"`) — `--lr-button-*` theming reaches them directly. A
|
|
14553
|
+
consumer previously styling `::part(deny-button)`/`::part(approve-button)` for
|
|
14554
|
+
padding/border/font/`:hover`/`:focus-visible` must move that CSS onto the re-exported
|
|
14555
|
+
`deny-button-base`/`approve-button-base` sub-parts instead — the outer part now resolves to the
|
|
14556
|
+
`<lr-button>` host, where those declarations either do nothing or must be re-expressed through
|
|
14557
|
+
`lr-button`'s own parts/custom properties.
|
|
14558
|
+
- An `lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while
|
|
14559
|
+
its own async work is in flight — see `pending` above.
|
|
14330
14560
|
|
|
14331
14561
|
```html
|
|
14332
14562
|
<lr-tool-call-chip status="pending"></lr-tool-call-chip>
|
|
@@ -14335,6 +14565,18 @@ bar in this panel a hairline border" a one-rule change on the panel.
|
|
|
14335
14565
|
></lr-confirm-bar>
|
|
14336
14566
|
```
|
|
14337
14567
|
|
|
14568
|
+
An `lr-approve`/`lr-deny` listener that needs to await its own async work before finalizing calls
|
|
14569
|
+
`preventDefault()` and sets `.decision` (or clears `.pending`) once it resolves:
|
|
14570
|
+
|
|
14571
|
+
```ts
|
|
14572
|
+
bar.addEventListener('lr-approve', (e) => {
|
|
14573
|
+
e.preventDefault();
|
|
14574
|
+
runApproval(e.detail.args)
|
|
14575
|
+
.then(() => { bar.decision = 'approved'; })
|
|
14576
|
+
.catch(() => { bar.pending = null; }); // bounce back, retry
|
|
14577
|
+
});
|
|
14578
|
+
```
|
|
14579
|
+
|
|
14338
14580
|
## `lr-browser-frame`
|
|
14339
14581
|
|
|
14340
14582
|
Presentational "agent computer" viewport: a screenshot/frame stream (or slotted live media), a
|
|
@@ -14594,7 +14836,7 @@ Filterable and taggable evaluation-example list with add, remove, import, and ex
|
|
|
14594
14836
|
expectedOutput?: string; tags?: string[]; metadata?: Record<string, unknown> }` (exported here).
|
|
14595
14837
|
Deliberately its own small shape rather than reusing anything from `src/ai/types.ts` — none of that
|
|
14596
14838
|
module's interfaces models "one row of a labeled eval dataset". `input`/`expectedOutput` are plain
|
|
14597
|
-
strings (not structured payloads)
|
|
14839
|
+
strings (not structured payloads), rendered as plain text by every column's `cell()`. Fully
|
|
14598
14840
|
controlled: add/remove/import/export are all *requests*; the host mutates and passes the array back
|
|
14599
14841
|
- `searchable: boolean = false` (reflected) — built-in free-text search over `input`,
|
|
14600
14842
|
`expectedOutput`, and `tags` (case-insensitive substring)
|
|
@@ -14625,7 +14867,7 @@ loses focus, since native focus neither bubbles nor crosses the shadow boundary.
|
|
|
14625
14867
|
|
|
14626
14868
|
Rubric scoring and human-review surface for comparing the runs of one evaluation example.
|
|
14627
14869
|
|
|
14628
|
-
Composes `lr-
|
|
14870
|
+
Composes `lr-table` (the comparison table), `lr-rubric-form` (the review surface), and
|
|
14629
14871
|
`lr-diff-view` (baseline↔selected output diff) rather than re-deriving any of their behavior.
|
|
14630
14872
|
|
|
14631
14873
|
**Properties:**
|
|
@@ -14633,10 +14875,10 @@ Composes `lr-data-grid` (the comparison table), `lr-rubric-form` (the review sur
|
|
|
14633
14875
|
model?: string; promptVersion?: string; output: string; scores?: RubricValue; review?: RubricValue }`
|
|
14634
14876
|
(exported here). One entry per model or prompt version being compared for a single evaluation
|
|
14635
14877
|
example. `scores`/`review` use the same `RubricValue` shape `lr-rubric-form` itself reads and
|
|
14636
|
-
writes, so a `
|
|
14878
|
+
writes, so a `TableColumn`'s `cell()` accessor and the rubric form's own `value` binding read a
|
|
14637
14879
|
run's fields with no conversion
|
|
14638
|
-
- `columns:
|
|
14639
|
-
`lr-
|
|
14880
|
+
- `columns: TableColumn<EvalRunResult>[] = []` (attribute: false) — plain pass-through to
|
|
14881
|
+
`lr-table.columns`, not re-derived here
|
|
14640
14882
|
- `rubricKeys: RubricKey[] = []` (attribute: false) — plain pass-through to `lr-rubric-form.keys`
|
|
14641
14883
|
- `selectedRunId: string = ''` (attribute `selected-run-id`) — the run open for review and the diff's
|
|
14642
14884
|
**new** side; falls back to `runs[0]?.id` when empty
|