@aceshooting/lyra-ui 27.0.0 → 28.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 +55 -63
- package/README.md +7 -3
- package/dist/cli/css-declarations.mjs +1 -0
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/migrate-wa.mjs +9 -4
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-renames.mjs +2 -2
- package/dist/cli/migration-theme-scopes.mjs +3 -0
- package/dist/cli/theme-scope-vocabulary.generated.mjs +1 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-question/agent-question.class.js +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +1 -1
- package/dist/components/agent-tools/background-runs/background-runs.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/budget-meter/budget-meter.class.js +1 -1
- package/dist/components/agent-tools/change-review/change-review.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.class.js +1 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -1
- package/dist/components/agent-tools/mcp-app/mcp-app.class.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.class.js +1 -1
- package/dist/components/agent-tools/permission-rules/permission-rules.class.js +1 -1
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- 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.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- 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.js +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/box-plot.class.js +1 -1
- package/dist/components/charts/chart/chart-token-cache.js +2 -2
- package/dist/components/charts/chart/chart.class.d.ts +1 -1
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.class.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 +1 -1
- package/dist/components/conversation/handoff-divider/handoff-divider.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.js +1 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.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/suggestion-chips/suggestion-chips.class.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
- package/dist/components/data/calendar/calendar.class.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +2 -2
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -2
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-controls/flow-controls.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-node/flow-node.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/pagination/pagination.class.d.ts +2 -0
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/pagination/pagination.styles.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +23 -2
- package/dist/components/data/table/table.class.js +5 -3
- 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/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- 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.d.ts +8 -4
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/country-picker/country-picker.class.js +1 -1
- package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -4
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +5 -5
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
- package/dist/components/forms/input/input-shared.js +1 -1
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/native-time-input.class.js +1 -1
- package/dist/components/forms/input/number-input.class.js +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +4 -4
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/signature-pad/signature-pad.class.js +1 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/unit-picker/unit-picker.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 +70 -7
- package/dist/components/layout/app-rail/app-rail.class.js +16 -4
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +1 -1
- package/dist/components/layout/breadcrumb/breadcrumb.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.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/accordion-item.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/menubar/menubar.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu/navigation-menu.class.js +1 -1
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +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.d.ts +7 -4
- package/dist/components/layout/segmented/segmented.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/tab-group/tab.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.js +1 -1
- package/dist/components/media/drop-zone/drop-zone.class.js +1 -1
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +4 -2
- 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 +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +2 -2
- package/dist/components/media/qr-code/qr-code.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/video/video.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
- package/dist/components/overlays/alert/alert.class.js +1 -1
- package/dist/components/overlays/badge/tag.class.js +1 -1
- package/dist/components/overlays/callout/callout.class.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/context-menu/context-menu.class.js +1 -1
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.js +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.js +1 -1
- package/dist/components/overlays/spinner/spinner.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/overlays/toast/toast.class.js +1 -1
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/community-card/community-card.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +1 -1
- 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.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.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.js +1 -1
- package/dist/components/retrieval/rag-answer/rag-answer.class.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +1 -1
- package/dist/components/retrieval/research-progress/research-progress.class.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +1 -1
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-card/source-card.class.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.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.js +1 -1
- package/dist/components/utility/icon/icon.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +1 -1
- 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/poll-status/poll-status.class.js +1 -1
- package/dist/components/utility/random-content/random-content.class.js +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/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +2 -2
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
- 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.js +1 -1
- package/dist/components/viewers/include/include.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.d.ts +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.js +3 -3
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/events.d.ts +6 -1
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/collection-snapshot.js +1 -1
- package/dist/internal/default-strings/agent-tools.generated.js +1 -0
- package/dist/internal/default-strings/charts.generated.js +1 -0
- package/dist/internal/default-strings/conversation.generated.js +1 -0
- package/dist/internal/default-strings/data.generated.js +1 -0
- package/dist/internal/default-strings/forms.generated.js +1 -0
- package/dist/internal/default-strings/layout.generated.js +1 -0
- package/dist/internal/default-strings/media.generated.js +1 -0
- package/dist/internal/default-strings/overlays.generated.js +1 -0
- package/dist/internal/default-strings/retrieval.generated.js +1 -0
- package/dist/internal/default-strings/shared.generated.js +1 -0
- package/dist/internal/default-strings/utility.generated.js +1 -0
- package/dist/internal/default-strings/viewers.generated.js +5 -0
- package/dist/internal/dev-mode-attribute-warning.development.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.production.js +1 -1
- package/dist/internal/document-tokens.d.ts +11 -0
- package/dist/internal/document-tokens.generated.js +15 -0
- package/dist/internal/document-tokens.js +3 -0
- package/dist/internal/form-associated.d.ts +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/glass-surface.styles.js +1 -1
- package/dist/internal/host-tokens.styles.js +1 -0
- package/dist/internal/image-zoom.js +1 -0
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +4 -2
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/opaque-content-border.styles.js +1 -1
- package/dist/internal/open-overlay-raise.styles.js +1 -0
- package/dist/internal/optional-peer-failure.js +1 -0
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/prefix.js +1 -1
- package/dist/internal/specialist-host-tokens.styles.js +1 -0
- package/dist/internal/specialist-tokens.generated.js +2 -0
- package/dist/internal/step-value.js +1 -1
- package/dist/internal/theme-observation.js +1 -1
- package/dist/internal/theme-scopes.d.ts +11 -0
- package/dist/internal/theme-scopes.js +1 -0
- package/dist/looks/shadcn.css +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/styles/design-tokens.css +1 -1
- package/dist/styles/tokens-root.css +1 -1
- package/dist/surfaces/glass.css +1 -1
- package/dist/testing/happy-dom-shims.d.ts +21 -2
- 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/dist/testing/interaction-drivers.d.ts +66 -7
- package/dist/testing/interaction-drivers.js +1 -1
- package/dist/testing/jsdom-shims.d.ts +70 -0
- package/dist/testing/jsdom-shims.js +1 -0
- package/dist/theme/look-inputs.d.ts +1 -1
- package/dist/theme/look-inputs.js +37 -41
- package/dist/theme/theme.d.ts +13 -0
- package/dist/theme/theme.js +1 -1
- package/dist/theme.css +1 -1
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/scoped-registry.d.ts +3 -0
- package/dist/utilities/scoped-registry.js +1 -1
- package/dist/utilities/theme-scopes.d.ts +1 -0
- package/dist/utilities/theme-scopes.js +1 -0
- package/dist/utilities/tokens.d.ts +1 -0
- package/dist/utilities/tokens.js +1 -0
- package/llms/components/lr-app-rail.md +51 -4
- package/llms/components/lr-emoji-picker.md +13 -8
- package/llms/components/lr-icon-button.md +13 -1
- package/llms/components/lr-image-viewer.md +8 -0
- package/llms/components/lr-pagination.md +4 -2
- package/llms/components/lr-segmented.md +7 -3
- package/llms/components/lr-table.md +14 -12
- package/llms/components/lr-thread-list.md +4 -3
- package/llms/migration.md +9 -0
- package/llms/peers.md +1 -1
- package/llms/shared/events-and-types.md +41 -0
- package/llms/shared/frameworks-and-ssr.md +16 -0
- package/llms/shared/imports-and-registration.md +4 -3
- package/llms/shared/native-styles-and-utilities.md +38 -3
- package/llms/shared/styles-and-tokens.md +242 -102
- package/llms/shared/testing-and-utilities.md +90 -6
- package/llms/shared.md +431 -114
- package/llms/tokens.md +31 -49
- package/locales.json +138 -138
- package/package.json +14 -7
- package/registrations.json +1 -1
- package/dist/internal/default-strings.generated.js +0 -5
- package/dist/internal/specialist-tokens.styles.js +0 -1
- package/dist/internal/tokens/palette.styles.js +0 -1
- package/dist/internal/tokens.styles.js +0 -1
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via**
|
|
12
|
+
- **Themeable via** 13 parts, 37 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Documented with** `lr-app-rail-item`, `lr-app-rail-group` (same section below)
|
|
14
14
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
15
15
|
|
|
@@ -113,6 +113,31 @@ letting a consumer that syncs app chrome to the rail's mode pick up the restored
|
|
|
113
113
|
a reload only when `storage-key` is set AND `persist` includes `preferred-mode` — the default
|
|
114
114
|
`persist` is `open width`, which does not. Pair them: `persist="width preferred-mode"`. Either
|
|
115
115
|
route announces itself through the existing `lr-mode-change` event; there is no new event.
|
|
116
|
+
- `autoHide: boolean = false` (reflected, attribute `auto-hide`) — opts the desktop rail into an
|
|
117
|
+
auto-hide ("peek") mode. The rail rests as the `'icon-only'` strip (an unset `preferredMode` reads
|
|
118
|
+
as `'icon-only'` instead of following `icon-only-breakpoint`; `preferredMode` and `forceMode` keep
|
|
119
|
+
their meaning). While a non-touch pointer moves inside the strip, or keyboard focus enters it, the
|
|
120
|
+
rail expands to full width as an overlay: the strip's inline footprint stays in the layout, so the
|
|
121
|
+
content beside it never reflows, and the expansion grows toward the inline end and mirrors under
|
|
122
|
+
RTL. It collapses back once the pointer has left and keyboard focus is no longer inside, after
|
|
123
|
+
`peekCloseDelay`; Escape closes it at once and it stays closed until the pointer and focus have
|
|
124
|
+
both left. Touch pointers and boundary events fired with no movement (a cursor resting where the
|
|
125
|
+
page loaded) never open it, and pointer-originated focus (a click) does not hold it open. The rail
|
|
126
|
+
docks at full width only while pinned: the built-in `[part="pin-button"]` writes
|
|
127
|
+
`preferredMode`, so it persists through `storage-key` with `persist` including `preferred-mode`
|
|
128
|
+
(the default `persist` does not, so set `persist="preferred-mode"`). The mobile presentation is
|
|
129
|
+
unchanged, `[part="collapse-toggle"]` is not rendered while this is set (the pin replaces it),
|
|
130
|
+
`mode` stays `'icon-only'` while peeking, and the resizer is hidden until pinned. Unset reproduces
|
|
131
|
+
today's exact behavior.
|
|
132
|
+
- `peekOpenDelay: number = 150` (attribute `peek-open-delay`) — milliseconds a moving pointer must
|
|
133
|
+
stay inside the strip before it peeks open; keyboard focus opens it at once. Non-finite values use
|
|
134
|
+
the default and negative values clamp to `0`.
|
|
135
|
+
- `peekCloseDelay: number = 300` (attribute `peek-close-delay`) — milliseconds the peek stays open
|
|
136
|
+
after the pointer left and keyboard focus is no longer inside. Non-finite values use the default
|
|
137
|
+
and negative values clamp to `0`.
|
|
138
|
+
- `peeking: boolean` (read-only getter, reflected `peeking` attribute) — whether the `auto-hide`
|
|
139
|
+
rail is currently expanded as a temporary overlay. Always `false` while `auto-hide` is unset or the
|
|
140
|
+
rail is pinned (`'full'`) or `'mobile'`. Disconnecting resets it silently.
|
|
116
141
|
- `withoutToggle: boolean = false` (reflected, attribute `without-toggle`) — suppresses the built-in mobile
|
|
117
142
|
`[part='toggle']` hamburger/OPEN button, for a consumer that already owns an external mobile-menu
|
|
118
143
|
trigger wired to this rail's own `open` property (pair it with `trigger`/`for` below so focus
|
|
@@ -229,7 +254,9 @@ built-in control does, for a consumer rendering its own control (app chrome, a c
|
|
|
229
254
|
keyboard shortcut). A no-op while `mode` is `'mobile'`. While `forceMode` pins the mode the
|
|
230
255
|
preference alternates relative to `preferredMode ?? mode` on every call and takes effect once the pin is released.
|
|
231
256
|
|
|
232
|
-
**Events:** `lr-
|
|
257
|
+
**Events:** `lr-peek-change` (`detail: LyraAppRailPeekChangeDetail` = `{ peeking: boolean }`; the
|
|
258
|
+
`auto-hide` rail started or stopped peeking; non-cancelable, and not fired for the silent reset a
|
|
259
|
+
disconnect performs), `lr-mode-change` (`detail: LyraAppRailModeChangeDetail` = `{ mode: LyraAppRailMode }`; the
|
|
233
260
|
effective mode changed, whether from a breakpoint crossing, a `forceMode` assignment, or a
|
|
234
261
|
persisted `preferred-mode` restored on mount (`storage-key` + `persist="preferred-mode"`) — the
|
|
235
262
|
restored-on-mount case fires once, from the first `updated()` after that mount's render and
|
|
@@ -272,7 +299,10 @@ underlying element — see above), `resizer` (the `resizable` opt-in's drag hand
|
|
|
272
299
|
`aria-controls` at `[part="nav"]` — the item list whose presentation actually changes, never the
|
|
273
300
|
containing `[part="base"]`/`[part="panel"]` — and takes a localized name from the
|
|
274
301
|
`appRailCollapse`/`appRailExpand` keys) and `collapse-icon` (the chevron wrapper, mirrored by its own
|
|
275
|
-
`transform` under RTL)
|
|
302
|
+
`transform` under RTL), `pin-button` (the `auto-hide` pin control, rendered inside `[part="header"]`
|
|
303
|
+
while the rail is peeking or pinned, never in the resting strip; `aria-pressed` renders `"true"`
|
|
304
|
+
while pinned and `"false"` otherwise, the name comes from the `appRailPin`/`appRailUnpin` keys, and it
|
|
305
|
+
takes the `--lr-icon-button-size` hit area) and `pin-icon` (its glyph wrapper). Collapsing to `'icon-only'` keeps each item's own accessible name and
|
|
276
306
|
clips its `label`/`meta` visually, while hiding nested disclosure controls and child lists — so `aria-expanded` reports which of the two
|
|
277
307
|
presentations is on screen, for magnifier and braille users, rather than announcing hidden content.
|
|
278
308
|
|
|
@@ -287,6 +317,13 @@ panel; no value can paint elevation while closed. Prefer that token over an unqu
|
|
|
287
317
|
`::part(panel)` shadow rule, which would also paint while closed; state-scope a part override with
|
|
288
318
|
`lr-app-rail[mode="mobile"][open]::part(panel)`.
|
|
289
319
|
|
|
320
|
+
`--lr-app-rail-peek-shadow` (default `var(--lr-shadow-l)`) and `--lr-app-rail-peek-bg` (default
|
|
321
|
+
`var(--lr-color-surface-overlay)`) restyle the `auto-hide` rail while it overlays the content; the
|
|
322
|
+
overlay sits on the `--lr-layer-dropdown` layer token, below modals and popovers.
|
|
323
|
+
`--lr-app-rail-pin-hover-bg` (default `var(--lr-color-brand-quiet)`) and
|
|
324
|
+
`--lr-app-rail-pin-hover-color` (default `var(--lr-color-brand)`) tint the pin control on hover.
|
|
325
|
+
Motion uses the shared transition tokens and stops under `prefers-reduced-motion`.
|
|
326
|
+
|
|
290
327
|
Other hooks: `--lr-app-rail-width` (default `15rem` — the inline rail width in
|
|
291
328
|
`'full'` mode), `--lr-app-rail-icon-width` (default `4rem` — the inline rail width in `'icon-only'`
|
|
292
329
|
mode), `--lr-app-rail-mobile-width` (default `18rem`, capped at `85vw` — the mobile overlay panel
|
|
@@ -373,6 +410,16 @@ fallback at its exact state rule and preserves the previous brand or active-mix
|
|
|
373
410
|
</script>
|
|
374
411
|
```
|
|
375
412
|
|
|
413
|
+
An auto-hide sidebar that peeks open over the content and docks only when pinned, remembering the pin:
|
|
414
|
+
|
|
415
|
+
```html
|
|
416
|
+
<lr-app-rail auto-hide label="Workspace" storage-key="app" persist="preferred-mode">
|
|
417
|
+
<lr-app-rail-item href="/inbox" current>
|
|
418
|
+
<svg slot="icon" aria-hidden="true">...</svg>Inbox
|
|
419
|
+
</lr-app-rail-item>
|
|
420
|
+
</lr-app-rail>
|
|
421
|
+
```
|
|
422
|
+
|
|
376
423
|
```ts
|
|
377
424
|
rail.forceMode = "icon-only"; // force a presentation regardless of viewport width
|
|
378
425
|
rail.forceMode = "auto"; // release the force, resume live breakpoint tracking
|
|
@@ -381,7 +428,7 @@ rail.forceMode = "auto"; // release the force, resume live breakpoint tracking
|
|
|
381
428
|
The package root also exports a pure `computeAppRailMode(iconOnlyMatches: boolean, mobileMatches:
|
|
382
429
|
boolean, preferredMode?: 'full' | 'icon-only' | null): LyraAppRailMode` resolver (plus the
|
|
383
430
|
`LyraAppRailMode`/`LyraAppRailModeInput`/`LyraAppRailPreferredMode`/`LyraAppRailPersistField`/
|
|
384
|
-
`LyraAppRailModeChangeDetail`/`LyraAppRailToggleDetail`/`LyraAppRailResizeDetail` types) — the same
|
|
431
|
+
`LyraAppRailModeChangeDetail`/`LyraAppRailToggleDetail`/`LyraAppRailResizeDetail`/`LyraAppRailPeekChangeDetail` types) — the same
|
|
385
432
|
logic the element's internal `matchMedia` listeners call, exposed standalone so a
|
|
386
433
|
consumer can compute or unit-test the same resolution without a real browser window. `mobileMatches`
|
|
387
434
|
wins over everything else when true (the viewport is narrower than both breakpoints at once);
|
|
@@ -178,15 +178,20 @@ one declaration to retheme every internal scroll container in the library.
|
|
|
178
178
|
|
|
179
179
|
**Optional peer dependency:** install `emoji-picker-element-data` with
|
|
180
180
|
`pnpm add emoji-picker-element-data` for the built-in auto-loaded default emoji set — omit it and
|
|
181
|
-
supply `groups` directly instead. The loader never throws;
|
|
182
|
-
`console.warn`
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
181
|
+
supply `groups` directly instead. The loader never throws; it leaves `groups` empty and logs one
|
|
182
|
+
`console.warn` that names the cause: the peer **is not installed** (its module cannot be resolved)
|
|
183
|
+
or it **was found but could not be loaded or validated** (a network or JSON/import-attribute error,
|
|
184
|
+
an incompatible version, or a module without the expected data array). The picker then **fails
|
|
185
|
+
closed and visibly**: the grid renders a distinct localized `[part="load-error"]` surface instead
|
|
186
|
+
of the ordinary `[part="empty"]` message — `emojiPickerPeerMissing` ("Emoji are not available.")
|
|
187
|
+
for a missing peer, `emojiPickerLoadError` ("Could not load emoji.") with the `load-retry` button
|
|
188
|
+
for a failed one — so a skipped install is distinguishable at a glance from a broken one, a
|
|
189
|
+
genuine zero-match search or a deliberate `groups = []` opt-out. It announces the same message once
|
|
186
190
|
through the document's shared assertive live region (not a shadow-root `role="alert"`, which
|
|
187
|
-
announces unreliably) and emits `lr-load-error` (no detail).
|
|
188
|
-
`load-retry` button (or a later locale change) loads again, and a successful retry
|
|
189
|
-
failure.
|
|
191
|
+
announces unreliably) and emits `lr-load-error` (no detail) in both cases. A failed load is not
|
|
192
|
+
cached: the `load-retry` button (or a later locale change) loads again, and a successful retry
|
|
193
|
+
clears the failure. No Retry button is offered for a missing peer, since retrying cannot install
|
|
194
|
+
it. Assigning `groups` also clears it. The adapter buckets the peer's flat
|
|
190
195
|
entry list by numeric group id and returns only the public `{ key, label, emojis }` shape. The picker
|
|
191
196
|
privately maps auto-loaded group ids 0–9 to the existing `emojiPickerGroup*` locale strings; override
|
|
192
197
|
those through `registerLyraLocale()` or `.strings`. An unknown future group id uses `Group {id}`.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** `dompurify` — see `llms/peers.md`
|
|
12
|
-
- **Themeable via** 3 parts,
|
|
12
|
+
- **Themeable via** 3 parts, 12 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -166,6 +166,18 @@ it inherits normally from an ancestor even through an intervening component; it
|
|
|
166
166
|
counterpart to it. The internal control sets `font: inherit`, so an `em`-sized slotted glyph takes
|
|
167
167
|
the surrounding text's font-size rather than the native button's UA default.
|
|
168
168
|
|
|
169
|
+
`--lr-icon-button-padding-inline` (default `0`) is the logical inline padding of the
|
|
170
|
+
`[part='button']` control, for a compact trigger that shows a short text value (a currency, unit or
|
|
171
|
+
locale code) instead of a square glyph. It inherits from an ancestor like the radius. The default
|
|
172
|
+
keeps an icon-only button at exactly its `--lr-icon-button-size` floor; padding adds to the
|
|
173
|
+
content, so a label grows the button and the hit-area floor still applies. Block padding stays 0.
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<lr-icon-button aria-label="Currency: euro" style="--lr-icon-button-padding-inline: var(--lr-space-s)">
|
|
177
|
+
<span>€ EUR</span>
|
|
178
|
+
</lr-icon-button>
|
|
179
|
+
```
|
|
180
|
+
|
|
169
181
|
The rest come in resting/hover/pressed triples, each falling through to the next-quieter state so
|
|
170
182
|
setting only one still behaves:
|
|
171
183
|
|
|
@@ -30,6 +30,14 @@ apply when that wrapper itself owns keyboard input. Enter on a highlight button
|
|
|
30
30
|
highlight without starting or committing an annotation, whether or not a draft exists; wrapper arrow
|
|
31
31
|
commands retain physical image-coordinate semantics in both directions.
|
|
32
32
|
|
|
33
|
+
A region highlight paints exactly the percentage rectangle it names, at every fit, zoom and
|
|
34
|
+
rotation: its box never takes the shared `--lr-icon-button-size` minimum, so a small region cannot
|
|
35
|
+
grow past its data or overlap a neighbour. The accessible pointer target is a separate transparent
|
|
36
|
+
`::after` of the `[part="highlight"]` button, centred on the box and grown to
|
|
37
|
+
`--lr-icon-button-size` on any axis where the box is smaller. Overlap rule: a region's own painted
|
|
38
|
+
box always wins over another region's enlarged area, and where only enlarged areas overlap the
|
|
39
|
+
later highlight in document order wins. Keyboard navigation between highlights is unaffected.
|
|
40
|
+
|
|
33
41
|
**Properties:** `src: string = ''`, `name: string = ''`, `alt?: string`,
|
|
34
42
|
`fit: LyraImageFit = 'contain' | 'width' | 'actual'` (reflected; invalid writes normalize to
|
|
35
43
|
`contain`), `zoom: number = 1` (reflected), `minZoom: number = 0.5` (attribute
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via** 22 parts,
|
|
12
|
+
- **Themeable via** 22 parts, 23 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -203,7 +203,9 @@ buttons, the numbered pages and the page input — `--lr-pagination-control-padd
|
|
|
203
203
|
`--lr-pagination-control-size`, so this only adjusts the icon/digit inset. Layout spacing is split
|
|
204
204
|
across `--lr-pagination-base-gap` (default `var(--lr-space-m)`) between summary and controls,
|
|
205
205
|
`--lr-pagination-controls-gap` (default `var(--lr-space-xs)`) inside the navigation group, and
|
|
206
|
-
`--lr-pagination-pages-gap` (default `var(--lr-space-xs)`) between numbered pages
|
|
206
|
+
`--lr-pagination-pages-gap` (default `var(--lr-space-xs)`) between numbered pages, and
|
|
207
|
+
`--lr-pagination-page-field-gap` (default `var(--lr-space-2xs)`) between the compact
|
|
208
|
+
`[part="page-input"]` and its `[part="page-count"]`; each remains
|
|
207
209
|
active in standard, compact, and 320px container layouts —
|
|
208
210
|
`--lr-pagination-invalid-border` (default `var(--lr-color-danger)`) — border color of
|
|
209
211
|
`[part="page-input"]` while the typed page is out of range (`aria-invalid="true"`); a state hook
|
|
@@ -101,11 +101,15 @@ The floor at the two compact tiers is the ladder's own (20px at `2xs`, 24px at `
|
|
|
101
101
|
`2xs`/`xs` _segment_ separately carries a 24×24px minimum box, so the tappable target holds even
|
|
102
102
|
when a label is a single character and the track ends up taller than its nominal floor.
|
|
103
103
|
|
|
104
|
-
`--lr-segmented-selected-bg` (default `var(--lr-color-
|
|
105
|
-
(default `var(--lr-color-
|
|
104
|
+
`--lr-segmented-selected-bg` (default `var(--lr-color-text)`), `--lr-segmented-selected-color`
|
|
105
|
+
(default `var(--lr-color-surface)`), `--lr-segmented-selected-font-weight` (default
|
|
106
106
|
`var(--lr-font-weight-semibold)`) and `--lr-segmented-selected-shadow` (default
|
|
107
107
|
`var(--lr-shadow-xs)` — the shallowest step in the elevation scale, since the checked segment is a
|
|
108
|
-
thumb lifted a hair off its own track) style the checked segment's pill
|
|
108
|
+
thumb lifted a hair off its own track) style the checked segment's pill. The default pill is the
|
|
109
|
+
inverse of the surface (text-coloured fill, surface-coloured label), so the checked state stays at
|
|
110
|
+
least 3:1 against a card or dialog in every look and mode; when you override
|
|
111
|
+
`--lr-segmented-selected-bg`, also set `--lr-segmented-selected-color` to a label that contrasts with
|
|
112
|
+
your fill;
|
|
109
113
|
`--lr-segmented-hover-color` (default `var(--lr-color-text)`) styles a hovered segment that is
|
|
110
114
|
neither checked nor disabled, independently of the four above — so recoloring the checked pill never
|
|
111
115
|
bleeds onto hover. `--lr-segmented-hover-bg` (default `transparent`) and `--lr-segmented-hover-shadow`
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via**
|
|
12
|
+
- **Themeable via** 56 parts, 27 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -78,7 +78,7 @@ cell: (row) => unknown }` — `cell` is required for every `editTrigger` except
|
|
|
78
78
|
`scroll-mode="auto"`, adapts to actual overflow rather than a fixed token threshold, and can be
|
|
79
79
|
reversed with `[part='reveal-columns-button']`; `sticky` pins headers/cells to the logical start
|
|
80
80
|
or end while scrolling. Sticky columns stack in logical order using
|
|
81
|
-
`--lr-table-sticky-offset` rather than overlap. A sticky body cell's
|
|
81
|
+
`--lr-table-sticky-offset` rather than overlap. Open overlays in a sticky cell stay on top. A sticky body cell's
|
|
82
82
|
background always matches its own row's effective fill — striped, selected, hovered, or pressed —
|
|
83
83
|
rather than painting a flat opaque surface over that state; a sticky header cell is unaffected
|
|
84
84
|
(headers are never striped/selected) and keeps its plain surface fill, see
|
|
@@ -275,15 +275,15 @@ cell: (row) => unknown }` — `cell` is required for every `editTrigger` except
|
|
|
275
275
|
- `paginationMode: 'client'|'server' = 'client'` (attribute `pagination-mode`, reflected) — client
|
|
276
276
|
mode slices rows and updates `page`; server mode leaves `page` controlled and bounds the supplied
|
|
277
277
|
page to `pageSize`
|
|
278
|
-
- `unknownTotal: boolean = false` (attribute `unknown-total`, reflected) — server pagination
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
-
|
|
285
|
-
|
|
286
|
-
|
|
278
|
+
- `unknownTotal: boolean = false` (attribute `unknown-total`, reflected) — server pagination with
|
|
279
|
+
no total, only `hasNext`: the pager's indeterminate mode (previous/next only). Ignored outside
|
|
280
|
+
`paginationMode: 'server'`
|
|
281
|
+
- `hasNext: boolean = true` (attribute `has-next`, reflected) — whether another page exists;
|
|
282
|
+
read only with `unknownTotal`
|
|
283
|
+
- `paginationWithSummary: boolean = false` (attribute `pagination-with-summary`, reflected) —
|
|
284
|
+
pager item-range summary at the inline start, controls at the inline end
|
|
285
|
+
- `paginationFormat: 'standard'|'compact' = 'compact'` (attribute `pagination-format`) — pager
|
|
286
|
+
`format`; invalid values resolve to `compact`
|
|
287
287
|
- Editable columns emit `lr-cell-edit` on commit and never mutate the supplied row object.
|
|
288
288
|
- `groupBy?: (row: T) => string | number` (attribute: false) — inserts a non-focusable full-width
|
|
289
289
|
group row wherever this key changes between consecutive rendered rows. Supply `rows` with each
|
|
@@ -519,7 +519,9 @@ affordance; the part has no live-region role in either appearance),
|
|
|
519
519
|
and cells reuse the ordinary `row`/`cell`/`row-total-cell` parts, which is exactly what keeps them
|
|
520
520
|
geometrically identical to real rows, so `skeleton` is the part to target for the placeholder's own
|
|
521
521
|
look: `::part(skeleton) { --lr-skeleton-h: 2em; }`), and
|
|
522
|
-
`pagination
|
|
522
|
+
`pagination` (the pager host; re-exported as `pagination-summary`,
|
|
523
|
+
`pagination-controls`, `pagination-pages`, `pagination-page`, `pagination-page-current`,
|
|
524
|
+
`pagination-page-field`, `pagination-page-input`, `pagination-page-count`, `pagination-button`), `cell-editor`, `group-row`, `group-cell`, and `resize-handle` (the focusable column
|
|
523
525
|
separator, with a finite explicit ARIA maximum even when no CSS `maxWidth` was supplied). The built-in empty state is addressable rather than fixed: `empty` is the `<lr-empty>`
|
|
524
526
|
host in all three empty states, and it re-exports that element's own inner parts as `empty-base`,
|
|
525
527
|
`empty-icon`, `empty-heading`, `empty-description` and `empty-actions`. Note that the no-columns and
|
|
@@ -290,9 +290,10 @@ lr-thread-list::part(row-item-label) {
|
|
|
290
290
|
}
|
|
291
291
|
```
|
|
292
292
|
|
|
293
|
-
Do **not** reach for `::part(row) { --lr-theme-space-s: … }` instead.
|
|
294
|
-
|
|
295
|
-
|
|
293
|
+
Do **not** reach for `::part(row) { --lr-theme-space-s: … }` instead. A part is not a theme scope,
|
|
294
|
+
so the input does not re-derive the spacing of the components nested in the row; and a scope there
|
|
295
|
+
would be a whole-subtree retheme that shrinks everything inside the row, including the items of a
|
|
296
|
+
`renderActions` menu, below the accessible touch-target minimum. The `row-item-*` parts exist so row
|
|
296
297
|
density can be tuned without that blast radius.
|
|
297
298
|
|
|
298
299
|
**Sizing:** the internal list fills whatever height this component is given, with no consumer CSS —
|
package/llms/migration.md
CHANGED
|
@@ -84,6 +84,7 @@ review removed names before running the migrated application.
|
|
|
84
84
|
| `DEPRECATED_MEMBER_REVIEW`, `DEPRECATED_CONTENT_REVIEW` | A deprecated member, tag or kind of slotted content without a mechanical replacement. |
|
|
85
85
|
| `DEPRECATED_MODULE_REVIEW` | A deprecated module, stylesheet, named export, window event or root attribute. Its replacement needs a semantic review. |
|
|
86
86
|
| `GLOBAL_REVIEW` | A moved package specifier, removed root export or removed localization key that cannot be rewritten safely. |
|
|
87
|
+
| `THEME_SCOPE_CSS_INPUT_REVIEW`, `THEME_SCOPE_OUTPUT_REVIEW`, `THEME_SCOPE_DYNAMIC_INPUT_REVIEW`, `THEME_SCOPE_REPEATED_REVIEW`, `THEME_SCOPE_DOUBLE_LAYER_REVIEW` | The `theme-scopes` rule found an input, shared output or marker that needs a theme scope by hand, or `tokens-root.css` imported next to `theme.css`, which already carries the layer. |
|
|
87
88
|
| `MODULE_NAMESPACE_REVIEW` | A namespace, dynamic import or CommonJS module access whose exported bindings need review. |
|
|
88
89
|
| `RENAME_CONFLICT_REVIEW` | The element already binds the new name, or the same receiver already listens to it with the same handler. |
|
|
89
90
|
| `UNUSED_ACKNOWLEDGEMENT` | An acknowledgement comment matches no report. |
|
|
@@ -820,6 +821,7 @@ review removed names before running the migrated application.
|
|
|
820
821
|
| `DEPRECATED_MEMBER_REVIEW`, `DEPRECATED_CONTENT_REVIEW` | A deprecated member, tag or kind of slotted content without a mechanical replacement. |
|
|
821
822
|
| `DEPRECATED_MODULE_REVIEW` | A deprecated module, stylesheet, named export, window event or root attribute. Its replacement needs a semantic review. |
|
|
822
823
|
| `GLOBAL_REVIEW` | A moved package specifier, removed root export or removed localization key that cannot be rewritten safely. |
|
|
824
|
+
| `THEME_SCOPE_CSS_INPUT_REVIEW`, `THEME_SCOPE_OUTPUT_REVIEW`, `THEME_SCOPE_DYNAMIC_INPUT_REVIEW`, `THEME_SCOPE_REPEATED_REVIEW`, `THEME_SCOPE_DOUBLE_LAYER_REVIEW` | The `theme-scopes` rule found an input, shared output or marker that needs a theme scope by hand, or `tokens-root.css` imported next to `theme.css`, which already carries the layer. |
|
|
823
825
|
| `MODULE_NAMESPACE_REVIEW` | A namespace, dynamic import or CommonJS module access whose exported bindings need review. |
|
|
824
826
|
| `RENAME_CONFLICT_REVIEW` | The element already binds the new name, or the same receiver already listens to it with the same handler. |
|
|
825
827
|
| `UNUSED_ACKNOWLEDGEMENT` | An acknowledgement comment matches no report. |
|
|
@@ -1541,6 +1543,7 @@ the old name keeps working meanwhile.
|
|
|
1541
1543
|
| `DEPRECATED_MEMBER_REVIEW`, `DEPRECATED_CONTENT_REVIEW` | A deprecated member, tag or kind of slotted content without a mechanical replacement. |
|
|
1542
1544
|
| `DEPRECATED_MODULE_REVIEW` | A deprecated module, stylesheet, named export, window event or root attribute. Its replacement needs a semantic review. |
|
|
1543
1545
|
| `GLOBAL_REVIEW` | A moved package specifier, removed root export or removed localization key that cannot be rewritten safely. |
|
|
1546
|
+
| `THEME_SCOPE_CSS_INPUT_REVIEW`, `THEME_SCOPE_OUTPUT_REVIEW`, `THEME_SCOPE_DYNAMIC_INPUT_REVIEW`, `THEME_SCOPE_REPEATED_REVIEW`, `THEME_SCOPE_DOUBLE_LAYER_REVIEW` | The `theme-scopes` rule found an input, shared output or marker that needs a theme scope by hand, or `tokens-root.css` imported next to `theme.css`, which already carries the layer. |
|
|
1544
1547
|
| `MODULE_NAMESPACE_REVIEW` | A namespace, dynamic import or CommonJS module access whose exported bindings need review. |
|
|
1545
1548
|
| `RENAME_CONFLICT_REVIEW` | The element already binds the new name, or the same receiver already listens to it with the same handler. |
|
|
1546
1549
|
| `UNUSED_ACKNOWLEDGEMENT` | An acknowledgement comment matches no report. |
|
|
@@ -1621,6 +1624,7 @@ the old name keeps working meanwhile.
|
|
|
1621
1624
|
| `DEPRECATED_MEMBER_REVIEW`, `DEPRECATED_CONTENT_REVIEW` | A deprecated member, tag or kind of slotted content without a mechanical replacement. |
|
|
1622
1625
|
| `DEPRECATED_MODULE_REVIEW` | A deprecated module, stylesheet, named export, window event or root attribute. Its replacement needs a semantic review. |
|
|
1623
1626
|
| `GLOBAL_REVIEW` | A moved package specifier, removed root export or removed localization key that cannot be rewritten safely. |
|
|
1627
|
+
| `THEME_SCOPE_CSS_INPUT_REVIEW`, `THEME_SCOPE_OUTPUT_REVIEW`, `THEME_SCOPE_DYNAMIC_INPUT_REVIEW`, `THEME_SCOPE_REPEATED_REVIEW`, `THEME_SCOPE_DOUBLE_LAYER_REVIEW` | The `theme-scopes` rule found an input, shared output or marker that needs a theme scope by hand, or `tokens-root.css` imported next to `theme.css`, which already carries the layer. |
|
|
1624
1628
|
| `MODULE_NAMESPACE_REVIEW` | A namespace, dynamic import or CommonJS module access whose exported bindings need review. |
|
|
1625
1629
|
| `RENAME_CONFLICT_REVIEW` | The element already binds the new name, or the same receiver already listens to it with the same handler. |
|
|
1626
1630
|
| `UNUSED_ACKNOWLEDGEMENT` | An acknowledgement comment matches no report. |
|
|
@@ -1676,6 +1680,11 @@ working; other uses (a deep import, a namespace member) and removed localization
|
|
|
1676
1680
|
| part | `<lr-eval-dataset> ::part(search-clear)` | Style the clear button through part search-clear on the field, and the native input through search-input-field. | Reported only. search-clear is now the composed lr-input clear button. |
|
|
1677
1681
|
| part | `<lr-eval-dataset> ::part(search-input)` | Style the native input through search-input-field. | Reported only. search-input is now the lr-input host, not the native input. |
|
|
1678
1682
|
|
|
1683
|
+
This profile also runs the structural rule `theme-scopes`, the same implementation as `--rule=<name>`.
|
|
1684
|
+
It adds `data-lr-theme-scope` to elements whose inline style sets a token-layer input, and reports dynamic inputs,
|
|
1685
|
+
markers inside loops, and stylesheet rules that set an input or a shared output outside a theme scope
|
|
1686
|
+
(`THEME_SCOPE_*_REVIEW`, acknowledged like any other code).
|
|
1687
|
+
|
|
1679
1688
|
## Upstream-protected compatibility spellings
|
|
1680
1689
|
|
|
1681
1690
|
These 8 legacy spellings remain supported while their corresponding Web Awesome or Shoelace surface publishes them. Prefer the current Lyra spelling for new code. Their recorded `removalNotBefore` value is a minimum, not an automatic removal date or permission to remove a still-mirrored spelling.
|
package/llms/peers.md
CHANGED
|
@@ -38,7 +38,7 @@ for the page.
|
|
|
38
38
|
| Peer | Range | Needed by |
|
|
39
39
|
|---|---|---|
|
|
40
40
|
| `@aceshooting/lyra-flags` | `^2.3.0` | _(loaded by a shared internal module)_ |
|
|
41
|
-
| `@aceshooting/lyra-translations` | `^
|
|
41
|
+
| `@aceshooting/lyra-translations` | `^28.0.0` | _(not referenced by any component)_ |
|
|
42
42
|
| `@aiden0z/pptx-renderer` | `^1.3.0` | `lr-pptx-viewer` |
|
|
43
43
|
| `@sgratzl/chartjs-chart-boxplot` | `^4.0.0` | `lr-box-plot` |
|
|
44
44
|
| `chart.js` | `^4.0.1` | `lr-bar-chart`, `lr-box-plot`, `lr-bubble-chart`, `lr-chart`, `lr-doughnut-chart`, `lr-histogram`, `lr-line-chart`, `lr-pie-chart`, `lr-polar-area-chart`, `lr-radar-chart`, `lr-scatter-chart` |
|
|
@@ -842,6 +842,16 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
842
842
|
`resolveCanvasColor(/* public names: scope, color, fallback */): unknown`
|
|
843
843
|
`resolveCanvasColors(/* public names: scope, colors, fallback */): unknown`
|
|
844
844
|
|
|
845
|
+
- **`internal-document-tokens-contracts`** — Shared utility contracts.
|
|
846
|
+
`adoptLyraTokens(root: Document | ShadowRoot): void`
|
|
847
|
+
Adopts the document token layer into a document or shadow root. Idempotent; see "Application
|
|
848
|
+
shadow roots" in the styles and tokens guide for when a root needs it.
|
|
849
|
+
|
|
850
|
+
- **`internal-theme-scopes-contracts`** — Shared utility contracts.
|
|
851
|
+
`findUnscopedThemeInputs(root?: Document | DocumentFragment | Element): Element[]`
|
|
852
|
+
Lists elements that set an inline `--lr-theme-*` input the layer consumes without being a theme
|
|
853
|
+
scope. Reads inline styles only and logs nothing.
|
|
854
|
+
|
|
845
855
|
- **`internal-localization-runtime-contracts`** — Shared utility contracts.
|
|
846
856
|
`getLyraLocaleDirection(/* public names: locale */): unknown`
|
|
847
857
|
`getLyraLocale(): unknown`
|
|
@@ -1577,15 +1587,45 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
1577
1587
|
- **`testing-happy-dom-shims-contracts`** — Shared utility contracts.
|
|
1578
1588
|
`installHappyDomFormAssociatedShims(): unknown`
|
|
1579
1589
|
`installHappyDomShadowFocusShim(): unknown`
|
|
1590
|
+
`flattenCascadeLayers(/* public names: css */): unknown`
|
|
1580
1591
|
`installHappyDomAriaControlsShim(/* public names: proto */): unknown`
|
|
1592
|
+
`installHappyDomCascadeLayerShim(/* public names: proto, misbehaves */): unknown`
|
|
1581
1593
|
`installHappyDomShims(): unknown`
|
|
1582
1594
|
`installStubInternalsForTest(/* public names: host */): unknown`
|
|
1583
1595
|
|
|
1596
|
+
- **`testing-jsdom-shims-contracts`** — Shared utility contracts.
|
|
1597
|
+
`JsdomAdoptedStyleSheetsTargets {
|
|
1598
|
+
documentPrototype?: object;
|
|
1599
|
+
shadowRootPrototype?: object;
|
|
1600
|
+
styleSheetPrototype?: object;
|
|
1601
|
+
isJsdom?: () => boolean;
|
|
1602
|
+
}`
|
|
1603
|
+
`installJsdomAdoptedStyleSheetsShim(targets?: JsdomAdoptedStyleSheetsTargets): () => void`
|
|
1604
|
+
`JsdomFormAssociatedTargets {
|
|
1605
|
+
internalsPrototype?: object;
|
|
1606
|
+
elementPrototype?: object;
|
|
1607
|
+
isJsdom?: () => boolean;
|
|
1608
|
+
}`
|
|
1609
|
+
`installJsdomFormAssociatedShim(targets?: JsdomFormAssociatedTargets): () => void`
|
|
1610
|
+
`installJsdomShims(): () => void`
|
|
1611
|
+
See "jsdom: `installJsdomShims()`" above for the full contract.
|
|
1612
|
+
|
|
1584
1613
|
- **`testing-interaction-drivers-contracts`** — Shared utility contracts.
|
|
1585
1614
|
`chooseOption(/* public names: owner, value */): unknown`
|
|
1586
1615
|
`submitConfirmDecision(/* public names: owner, decision */): unknown`
|
|
1587
1616
|
`toggleSwitch(/* public names: switchEl */): unknown`
|
|
1588
1617
|
`activateStep(/* public names: stepper, target */): unknown`
|
|
1618
|
+
`chooseSwatch(/* public names: picker, value */): unknown`
|
|
1619
|
+
`chooseCurrency(/* public names: picker, code */): unknown`
|
|
1620
|
+
`PopoverDriverOptions {
|
|
1621
|
+
timeoutMs: unknown;
|
|
1622
|
+
}`
|
|
1623
|
+
`ClosePopoverOptions {
|
|
1624
|
+
via: unknown;
|
|
1625
|
+
timeoutMs: unknown;
|
|
1626
|
+
}`
|
|
1627
|
+
`openPopover(/* public names: popover, options */): unknown`
|
|
1628
|
+
`closePopover(/* public names: popover, options */): unknown`
|
|
1589
1629
|
See "Driving a component's real activation path: interaction drivers" above for the full contract.
|
|
1590
1630
|
|
|
1591
1631
|
- **`testing-wait-for-mount-contracts`** — Shared utility contracts.
|
|
@@ -1682,6 +1722,7 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
1682
1722
|
`parseLyraStyleRecord(value: unknown): Readonly<LyraStyle>`
|
|
1683
1723
|
`resetLyraStyle(fields?: readonly LyraStyleField[]): Readonly<LyraStyle>`
|
|
1684
1724
|
`setLyraStyle(choices: LyraStyleChoices): Readonly<LyraStyle>`
|
|
1725
|
+
`startLyraStyle(): Readonly<LyraStyle>`
|
|
1685
1726
|
|
|
1686
1727
|
- **`vue-contracts`** — Framework integration type contracts, including the multi-split
|
|
1687
1728
|
`for` launcher id and `trigger` element reference.
|
|
@@ -51,6 +51,22 @@ browser-bundle argument for excluding them does not apply to a server render. Us
|
|
|
51
51
|
template; the component renders when its definition upgrades in the browser. Use this for initial
|
|
52
52
|
renders that require light-DOM traversal, layout, canvas, observers, media, or other browser APIs.
|
|
53
53
|
|
|
54
|
+
**Link the token layer in `<head>`.** Since 28.0.0 declarative shadow roots no longer carry the
|
|
55
|
+
shared `--lr-*` layer (one server-rendered `lr-button` is about 34 KB smaller). `theme.css` carries
|
|
56
|
+
it, so for a correct first paint before hydration link `theme.css` after the no-flash bootstrap (a
|
|
57
|
+
page that does not use `theme.css` links `styles/tokens-root.css`, the layer alone, instead):
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<link rel="stylesheet" href="/node_modules/@aceshooting/lyra-ui/dist/theme.css" />
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Hydration then skips the constructed copy. An application's **own** declarative shadow roots that
|
|
64
|
+
contain theme scopes (for example a `.lr-dark` region or a `data-lr-theme-scope` wrapper) include the
|
|
65
|
+
same `<link rel="stylesheet" href="…/tokens-root.css">` inside their template: document styles do not
|
|
66
|
+
reach into a shadow root until hydration adopts the layer there. Without any link and without
|
|
67
|
+
JavaScript, server-rendered components paint without resolved tokens, as a page without Lyra's styles
|
|
68
|
+
always did.
|
|
69
|
+
|
|
54
70
|
Server setup (the fallback must precede Lit's renderer):
|
|
55
71
|
|
|
56
72
|
```ts
|
|
@@ -185,11 +185,12 @@ The entry points, then:
|
|
|
185
185
|
- **`lr-flag`** registers from the barrel, but resolving a flag by `country`/`language` (rather than
|
|
186
186
|
a pre-resolved `src`) additionally needs
|
|
187
187
|
`import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';` once.
|
|
188
|
-
- **Other subpaths.** `@aceshooting/lyra-ui/theme.css` (ready-made light/dark theme
|
|
188
|
+
- **Other subpaths.** `@aceshooting/lyra-ui/theme.css` (ready-made light/dark theme, including the
|
|
189
|
+
document token layer),
|
|
189
190
|
`@aceshooting/lyra-ui/looks/shadcn.css` (opt-in shadcn/ui look, imported after `theme.css` — see
|
|
190
191
|
[The shadcn look](./styles-and-tokens.md#the-shadcn-look--looksshadcncss)),
|
|
191
|
-
`@aceshooting/lyra-ui/tokens-root.css` (
|
|
192
|
-
|
|
192
|
+
`@aceshooting/lyra-ui/tokens-root.css` (the document token layer alone, for pages that do not
|
|
193
|
+
use `theme.css`; link one of the two, not both),
|
|
193
194
|
`@aceshooting/lyra-ui/native.css` (opt-in native-element styles inside `.lr-native`),
|
|
194
195
|
`@aceshooting/lyra-ui/utilities.css` (opt-in light-DOM layout/text/typography utilities),
|
|
195
196
|
`@aceshooting/lyra-ui/theme.js` (the zero-dependency style runtime),
|
|
@@ -30,8 +30,8 @@ uses a substring class selector, so a class such as `app-lr-flex-preview` does n
|
|
|
30
30
|
assets repeat `@layer lr-base, lr-theme, lr-theme-preset, lr-utilities, lr-overrides`; an ordinary unlayered
|
|
31
31
|
application rule therefore beats them regardless of load order. A third opt-in asset,
|
|
32
32
|
[`tokens-root.css`](./styles-and-tokens.md#reading-the-resolved-tokens-from-your-own-components--tokens-rootcss), is not a
|
|
33
|
-
style sheet in the same sense — it declares custom properties only
|
|
34
|
-
|
|
33
|
+
style sheet in the same sense — it declares custom properties only: the document token layer that
|
|
34
|
+
the first connected Lyra element would otherwise adopt, available before any component connects.
|
|
35
35
|
|
|
36
36
|
### Utility class inventory
|
|
37
37
|
|
|
@@ -113,7 +113,8 @@ keeps that surface's text colour. Heading tracking reads `--lr-heading-letter-sp
|
|
|
113
113
|
| Muted | `lr-text-sm lr-text-quiet` |
|
|
114
114
|
|
|
115
115
|
For an exact 0.875rem muted/small size, use a class of your own with the token chain (resolved
|
|
116
|
-
`--lr-*` tokens
|
|
116
|
+
`--lr-*` tokens exist at document scope once a Lyra element has connected or `tokens-root.css` is
|
|
117
|
+
loaded; the chain covers the moment before):
|
|
117
118
|
|
|
118
119
|
```css
|
|
119
120
|
.app-muted {
|
|
@@ -303,3 +304,37 @@ contrast and forced colors retain opaque fills. Load `preferences.css` for expli
|
|
|
303
304
|
contrast/motion choices. Nested chrome suppresses repeated blur; independently presented top-layer
|
|
304
305
|
surfaces begin their own material root. Keep cards, data tables, charts, map layers and editing
|
|
305
306
|
fields outside the automatic chrome class.
|
|
307
|
+
|
|
308
|
+
#### Application fallback fills and cascade layers
|
|
309
|
+
|
|
310
|
+
Lyra paints the `.lr-surface-chrome` fill from a rule inside its cascade layers
|
|
311
|
+
(`lr-theme-preset.surface`). An **unlayered** application rule that sets `background` on the same
|
|
312
|
+
element — a generic `dialog { background: … }`, a `.panel` class — beats every layered rule
|
|
313
|
+
whatever its specificity, so the element keeps the application's opaque fill and the Glass
|
|
314
|
+
treatment disappears without a warning. No `revert-layer` workaround is needed; put the
|
|
315
|
+
application's fallback where it ranks below Lyra:
|
|
316
|
+
|
|
317
|
+
```css
|
|
318
|
+
/* 1. A low-priority application layer named before Lyra's. This order statement must be the first
|
|
319
|
+
the browser sees: put it at the top of the entry stylesheet, before the theme.css import. */
|
|
320
|
+
@layer app-base, lr-base, lr-theme, lr-theme-preset, lr-utilities, lr-overrides;
|
|
321
|
+
@import "@aceshooting/lyra-ui/theme.css";
|
|
322
|
+
|
|
323
|
+
@layer app-base {
|
|
324
|
+
dialog,
|
|
325
|
+
.panel {
|
|
326
|
+
background: #fff; /* still paints when the Lyra stylesheets are absent */
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* 2. Or choose the chrome's base fill through its token; Glass mixes it at the surface opacity. */
|
|
331
|
+
.panel.lr-surface-chrome {
|
|
332
|
+
--lr-surface-background: #fff;
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
An application layer declared after Lyra's (or unnamed until after `theme.css` loads) ranks above
|
|
337
|
+
the surface layer and disables Glass in the same way as an unlayered rule. Keep unlayered
|
|
338
|
+
`background` rules off `.lr-surface-chrome` elements, or exclude them with
|
|
339
|
+
`:not(.lr-surface-chrome)`. See [Cascade layers](styles-and-tokens.md#cascade-layers) for the full
|
|
340
|
+
order.
|