@aceshooting/lyra-ui 9.1.1 → 11.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 +785 -0
- package/custom-elements.json +1 -1
- package/design-tokens.json +13 -0
- package/dist/cli/migrate-wa.mjs +216 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
- package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
- package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
- package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
- package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
- package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
- package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
- package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
- package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
- package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
- package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
- package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
- package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
- package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
- package/dist/components/charts/chart/box-plot.class.d.ts +27 -0
- package/dist/components/charts/chart/box-plot.class.js +14 -4
- package/dist/components/charts/chart/box-plot.styles.js +28 -20
- package/dist/components/charts/chart/chart-colors.d.ts +1 -1
- package/dist/components/charts/chart/chart-colors.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +120 -0
- package/dist/components/charts/chart/chart.class.js +16 -6
- package/dist/components/charts/chart/chart.styles.js +28 -27
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/charts/chart/lite-chart.styles.js +0 -27
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
- package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
- package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +4 -95
- package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.styles.js +0 -41
- package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
- package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/model-select/model-select.styles.js +12 -47
- package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
- package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
- package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
- package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
- package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
- package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
- package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +15 -2
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +2 -28
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
- package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
- package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
- package/dist/components/data/context-meter/context-meter.styles.js +0 -24
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.styles.js +0 -22
- package/dist/components/data/document-library/document-library.class.js +2 -2
- package/dist/components/data/document-library/document-library.styles.js +0 -4
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/env-list/env-list.styles.js +7 -4
- package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
- package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
- package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
- package/dist/components/data/flow-node/flow-node.styles.js +0 -23
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
- package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
- package/dist/components/data/heatmap/heatmap-scale.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +117 -1
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +0 -54
- package/dist/components/data/pagination/pagination.styles.js +23 -46
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.styles.js +0 -67
- package/dist/components/data/table/table.class.d.ts +42 -3
- package/dist/components/data/table/table.class.js +4 -4
- package/dist/components/data/table/table.styles.js +20 -91
- package/dist/components/data/timeline/timeline-item.styles.js +0 -30
- package/dist/components/data/timeline/timeline.class.d.ts +89 -1
- package/dist/components/data/timeline/timeline.class.js +2 -2
- package/dist/components/data/timeline/timeline.styles.js +111 -31
- package/dist/components/data/tree/tree-item.styles.js +1 -28
- package/dist/components/data/tree/tree.class.js +2 -2
- package/dist/components/data/tree/tree.styles.js +0 -6
- package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/button/button.styles.js +0 -105
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
- package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
- package/dist/components/forms/combobox/combobox.class.d.ts +71 -3
- package/dist/components/forms/combobox/combobox.class.js +5 -3
- package/dist/components/forms/combobox/combobox.styles.js +31 -111
- package/dist/components/forms/combobox/option.styles.js +7 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.styles.js +12 -67
- package/dist/components/forms/date-picker/date-picker.class.d.ts +47 -0
- package/dist/components/forms/date-picker/date-picker.class.js +36 -22
- package/dist/components/forms/date-picker/date-picker.styles.js +82 -29
- package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
- package/dist/components/forms/input/input.styles.js +0 -54
- package/dist/components/forms/input/number-input.styles.d.ts +4 -5
- package/dist/components/forms/input/number-input.styles.js +0 -11
- package/dist/components/forms/input/time-input-shared.d.ts +11 -0
- package/dist/components/forms/input/time-input-shared.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/input/time-input.styles.js +0 -6
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
- package/dist/components/forms/otp-input/otp-input.class.js +3 -3
- package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
- package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
- package/dist/components/forms/phone-input/phone-input.class.js +2 -2
- package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
- package/dist/components/forms/radio/radio-button.styles.js +1 -30
- package/dist/components/forms/radio/radio-group.styles.js +0 -4
- package/dist/components/forms/radio/radio.styles.js +0 -44
- package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/select/select.styles.js +14 -114
- package/dist/components/forms/slider/slider.styles.js +0 -55
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
- package/dist/components/forms/switch/switch.class.d.ts +3 -0
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/switch/switch.styles.js +0 -37
- package/dist/components/forms/textarea/textarea.styles.js +0 -28
- package/dist/components/forms/time-range/time-range.styles.js +12 -84
- package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/token-input/token-input.styles.js +1 -54
- package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
- package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
- package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
- package/dist/components/layout/button-group/button-group.styles.js +0 -6
- package/dist/components/layout/card/card.class.d.ts +12 -0
- package/dist/components/layout/card/card.styles.js +3 -11
- package/dist/components/layout/carousel/carousel.styles.js +0 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
- package/dist/components/layout/command-palette/command-palette.class.js +3 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
- package/dist/components/layout/control-group/control-group.styles.js +0 -7
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
- package/dist/components/layout/details/accordion.class.d.ts +13 -0
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/details/details.styles.js +0 -12
- package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
- package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
- package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
- package/dist/components/layout/menu/menu-item.class.js +1 -1
- package/dist/components/layout/menu/menu-item.styles.js +0 -49
- package/dist/components/layout/menu/menu-label.styles.js +0 -2
- package/dist/components/layout/menu/menu.styles.js +0 -18
- package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
- package/dist/components/layout/page/page.class.d.ts +4 -0
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
- package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
- package/dist/components/layout/scroller/scroller.styles.js +0 -20
- package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
- package/dist/components/layout/segmented/segmented.class.js +1 -1
- package/dist/components/layout/segmented/segmented.styles.js +69 -37
- package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
- package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
- package/dist/components/layout/stepper/stepper.class.js +1 -1
- package/dist/components/layout/stepper/stepper.styles.js +140 -41
- package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
- package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
- package/dist/components/layout/tab-group/tab.styles.js +0 -2
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
- package/dist/components/layout/widget/widget.class.d.ts +5 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +97 -40
- package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.styles.js +0 -28
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
- package/dist/components/media/av-player/av-player.class.d.ts +5 -6
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/av-player/av-player.styles.js +0 -45
- package/dist/components/media/avatar/avatar.styles.js +3 -16
- package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +12 -0
- package/dist/components/media/file-input/file-input.styles.js +3 -24
- package/dist/components/media/flag/flag.class.d.ts +23 -1
- package/dist/components/media/flag/flag.class.js +4 -2
- package/dist/components/media/flag/flag.styles.js +7 -1
- package/dist/components/media/flag/language-map.d.ts +10 -0
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
- package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
- package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
- package/dist/components/media/lightbox/lightbox.class.js +0 -2
- package/dist/components/media/lightbox/lightbox.styles.js +0 -21
- package/dist/components/media/map/map-loader.d.ts +19 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +178 -1
- package/dist/components/media/map/map.class.js +15 -3
- package/dist/components/media/map/map.styles.js +20 -17
- package/dist/components/media/media-card/media-card.class.d.ts +14 -3
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/media-card/media-card.styles.js +2 -28
- package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
- package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/qr-code/qr-code.styles.js +0 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
- package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
- package/dist/components/media/video/video.class.d.ts +23 -2
- package/dist/components/media/video/video.class.js +3 -3
- package/dist/components/media/video/video.styles.js +4 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
- package/dist/components/overlays/alert/alert.styles.js +4 -2
- package/dist/components/overlays/badge/badge.styles.js +4 -48
- package/dist/components/overlays/badge/tag.styles.js +0 -14
- package/dist/components/overlays/callout/callout.styles.js +0 -11
- package/dist/components/overlays/chip/chip-group.styles.js +0 -18
- package/dist/components/overlays/chip/chip.styles.js +6 -69
- package/dist/components/overlays/dialog/confirm.d.ts +1 -4
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +32 -9
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +0 -43
- package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
- package/dist/components/overlays/drawer/drawer.styles.js +0 -9
- package/dist/components/overlays/empty/empty.styles.js +0 -12
- package/dist/components/overlays/kbd/kbd.styles.js +0 -8
- package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/overlay.styles.js +0 -28
- package/dist/components/overlays/overlay/popover.class.d.ts +28 -4
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/popup/popup.class.d.ts +1 -0
- package/dist/components/overlays/popup/popup.class.js +1 -1
- package/dist/components/overlays/popup/popup.styles.js +0 -15
- package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
- package/dist/components/overlays/progress/progress-ring.class.js +3 -3
- package/dist/components/overlays/progress/progress.styles.js +0 -21
- package/dist/components/overlays/rating/rating.styles.js +0 -25
- package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
- package/dist/components/overlays/spinner/spinner.styles.js +0 -3
- package/dist/components/overlays/toast/toast-item.styles.js +3 -45
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
- package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
- package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
- package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
- package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
- package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
- package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +0 -30
- package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
- package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
- package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
- package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
- package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
- package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
- package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
- package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
- package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
- package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
- package/dist/components/utility/export-button/export-button.styles.js +0 -22
- package/dist/components/utility/icon/icon.styles.js +0 -6
- package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
- package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
- package/dist/components/utility/known-date/known-date.styles.js +10 -51
- package/dist/components/utility/live-region/live-region.styles.js +0 -4
- package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
- package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
- package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
- package/dist/components/utility/random-content/random-content.class.js +3 -2
- package/dist/components/utility/random-content/random-content.styles.js +6 -13
- package/dist/components/utility/tour/tour.class.d.ts +4 -2
- package/dist/components/utility/tour/tour.class.js +3 -3
- package/dist/components/utility/tour/tour.styles.js +0 -13
- package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
- package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
- package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
- package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
- package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
- package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
- package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
- package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
- package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
- package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
- package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
- package/dist/custom-elements-jsx.d.ts +72 -40
- package/dist/events.d.ts +43 -33
- package/dist/internal/agent-status-variants.d.ts +18 -0
- package/dist/internal/agent-status-variants.js +1 -0
- package/dist/internal/announcer.d.ts +8 -3
- package/dist/internal/announcer.js +1 -1
- package/dist/internal/autoloader-manifest.js +1 -1
- package/dist/internal/canvas-color.d.ts +16 -0
- package/dist/internal/canvas-color.js +1 -1
- package/dist/internal/catalog-picker.d.ts +0 -1
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/lyra-element.d.ts +13 -0
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/media-controller.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/scroll-overflow.d.ts +35 -13
- package/dist/internal/scroll-overflow.js +1 -1
- package/dist/internal/sizes.styles.js +0 -2
- package/dist/internal/specialist-tokens.styles.js +6 -11
- package/dist/internal/text-highlights.d.ts +4 -1
- package/dist/internal/text-highlights.js +1 -1
- package/dist/internal/tokens/palette.styles.js +0 -15
- package/dist/internal/tokens.styles.js +20 -113
- package/dist/lyra.d.ts +9 -6
- package/dist/styles/reservations.css +82 -0
- package/dist/svelte.d.ts +72 -40
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/vue.d.ts +72 -40
- package/llms/components/lr-accordion-item.md +12 -3
- package/llms/components/lr-accordion.md +11 -2
- package/llms/components/lr-agent-eval-dashboard.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -1
- package/llms/components/lr-agent-workspace.md +20 -0
- package/llms/components/lr-artifact-panel.md +10 -4
- package/llms/components/lr-attachment-chip.md +7 -4
- package/llms/components/lr-attachment-trigger.md +7 -4
- package/llms/components/lr-av-player.md +3 -1
- package/llms/components/lr-avatar.md +6 -6
- package/llms/components/lr-bar-chart.md +8 -6
- package/llms/components/lr-box-plot.md +15 -4
- package/llms/components/lr-browser-frame.md +7 -3
- package/llms/components/lr-bubble-chart.md +8 -6
- package/llms/components/lr-calendar.md +9 -2
- package/llms/components/lr-card.md +24 -0
- package/llms/components/lr-chart.md +45 -11
- package/llms/components/lr-chat-viewport.md +7 -2
- package/llms/components/lr-checkbox-group.md +13 -5
- package/llms/components/lr-checkbox.md +5 -2
- package/llms/components/lr-checkpoint.md +6 -2
- package/llms/components/lr-combobox.md +47 -8
- package/llms/components/lr-command-palette.md +4 -1
- package/llms/components/lr-confirm-bar.md +7 -3
- package/llms/components/lr-context-meter.md +12 -11
- package/llms/components/lr-conversation-item.md +7 -4
- package/llms/components/lr-date-input.md +22 -2
- package/llms/components/lr-date-picker.md +23 -3
- package/llms/components/lr-details.md +11 -2
- package/llms/components/lr-dialog.md +16 -10
- package/llms/components/lr-dock-panel.md +7 -10
- package/llms/components/lr-document-preview.md +6 -1
- package/llms/components/lr-document-viewer.md +3 -2
- package/llms/components/lr-doughnut-chart.md +8 -6
- package/llms/components/lr-drawer.md +3 -3
- package/llms/components/lr-entity-card.md +3 -3
- package/llms/components/lr-entity-chip.md +1 -1
- package/llms/components/lr-entity-dossier.md +4 -1
- package/llms/components/lr-file-input.md +2 -2
- package/llms/components/lr-flag.md +30 -8
- package/llms/components/lr-heatmap.md +46 -0
- package/llms/components/lr-histogram.md +7 -4
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-json-schema-viewer.md +2 -1
- package/llms/components/lr-knowledge-graph-explorer.md +8 -3
- package/llms/components/lr-known-date.md +4 -2
- package/llms/components/lr-line-chart.md +8 -6
- package/llms/components/lr-lite-chart.md +16 -6
- package/llms/components/lr-map.md +91 -10
- package/llms/components/lr-markdown-core.md +3 -2
- package/llms/components/lr-media-card.md +28 -12
- package/llms/components/lr-message-parts.md +2 -1
- package/llms/components/lr-model-select.md +9 -10
- package/llms/components/lr-model-settings-panel.md +9 -9
- package/llms/components/lr-neighbor-list.md +1 -1
- package/llms/components/lr-notebook-viewer.md +6 -3
- package/llms/components/lr-option.md +46 -7
- package/llms/components/lr-pdf-viewer.md +62 -2
- package/llms/components/lr-pie-chart.md +8 -6
- package/llms/components/lr-polar-area-chart.md +8 -6
- package/llms/components/lr-popover.md +25 -1
- package/llms/components/lr-progress-ring.md +8 -1
- package/llms/components/lr-prompt-studio.md +1 -1
- package/llms/components/lr-provenance-panel.md +4 -2
- package/llms/components/lr-qr-code.md +1 -1
- package/llms/components/lr-radar-chart.md +8 -6
- package/llms/components/lr-rag-eval-dashboard.md +2 -2
- package/llms/components/lr-random-content.md +13 -0
- package/llms/components/lr-reorder-item.md +6 -1
- package/llms/components/lr-reorder-list.md +6 -1
- package/llms/components/lr-responsive-panel.md +11 -7
- package/llms/components/lr-scatter-chart.md +8 -6
- package/llms/components/lr-sequence-strip.md +16 -2
- package/llms/components/lr-slider.md +12 -5
- package/llms/components/lr-sparkline.md +1 -1
- package/llms/components/lr-suggestion-chips.md +7 -2
- package/llms/components/lr-swatch-picker.md +5 -5
- package/llms/components/lr-switch.md +5 -2
- package/llms/components/lr-table.md +30 -4
- package/llms/components/lr-terminal.md +3 -1
- package/llms/components/lr-thread-list.md +8 -8
- package/llms/components/lr-time-input.md +6 -1
- package/llms/components/lr-timeline-item.md +24 -0
- package/llms/components/lr-timeline.md +25 -1
- package/llms/components/lr-token-input.md +7 -2
- package/llms/components/lr-tool-approval-dialog.md +7 -8
- package/llms/components/lr-tool-call-chip.md +5 -1
- package/llms/components/lr-tool-param-form.md +14 -12
- package/llms/components/lr-tool-result-dialog.md +11 -9
- package/llms/components/lr-tool-result-view.md +7 -6
- package/llms/components/lr-tool-select-dialog.md +18 -16
- package/llms/components/lr-trace-tree.md +3 -1
- package/llms/components/lr-usage-badge.md +4 -1
- package/llms/components/lr-video-playlist.md +1 -1
- package/llms/components/lr-virtual-list.md +22 -14
- package/llms/components/lr-voice-picker.md +8 -5
- package/llms/components/lr-widget-renderer.md +3 -3
- package/llms/components/lr-widget.md +1 -1
- package/llms/components/lr-word-cloud.md +6 -2
- package/llms/peers.md +12 -2
- package/llms/shared.md +70 -2
- package/llms/tokens.md +15 -1
- package/llms-full.txt +1335 -306
- package/package.json +17 -5
- package/vscode-css-data.json +93 -2
- package/vscode-html-data.json +513 -59
- package/web-types.json +457 -72
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,790 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 11.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 5066d4b: **Version note: this major carries no known breaking change for consumers.**
|
|
8
|
+
|
|
9
|
+
Everything in this release is additive or a bug fix — no public member was removed, renamed, or
|
|
10
|
+
had its behaviour or default altered. The major bump is taken because the public-API semver gate
|
|
11
|
+
(`check:public-api`) classifies 328 changes as breaking, and every one of them is fingerprint or
|
|
12
|
+
generated-type churn rather than a real break:
|
|
13
|
+
|
|
14
|
+
- 248 `:dependencies` and 39 `:contract` hash changes — a symbol's transitive-dependency
|
|
15
|
+
fingerprint moves whenever a widely-composed base class gains a member, so adding one property to
|
|
16
|
+
`LyraChart` rewrites the hash of every chart subclass and every subpath that re-exports it.
|
|
17
|
+
- 39 generated React/Vue/Svelte props **type strings**, widened by the newly added props. The
|
|
18
|
+
differ compares the printed type text, which cannot distinguish an additive union widening from a
|
|
19
|
+
removal.
|
|
20
|
+
- 2 `lr-popover` `popup-role` default entries moving `null → 'dialog'`. The default did not change;
|
|
21
|
+
this release simply documents it with `@default` for the first time, so the manifest records a
|
|
22
|
+
value where it previously recorded none.
|
|
23
|
+
|
|
24
|
+
Consumers upgrading from 10.x should not need code changes. If you use the generated framework
|
|
25
|
+
prop types, the unions gained members but lost none.
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- 2fb4af7: `<lr-chart>` (and every chart subclassing it — bar, line, pie, doughnut, radar, polar-area,
|
|
30
|
+
scatter, bubble, histogram) and `<lr-box-plot>` gain `dataTableToggle` (`data-table-toggle`), which
|
|
31
|
+
renders a localized disclosure button above the accessible data table.
|
|
32
|
+
|
|
33
|
+
`showDataTable` was all-or-nothing: the table was either permanently screen-reader-only or
|
|
34
|
+
permanently visible, so a sighted reader who wanted the numbers behind a chart could only get them
|
|
35
|
+
if the consumer hand-rolled a `<details>` around a duplicated copy of the table. With the toggle
|
|
36
|
+
on, `showDataTable` becomes the disclosure's initial state rather than its whole behavior. The
|
|
37
|
+
table stays in the DOM in both states, so assistive technology never loses it, and the button
|
|
38
|
+
carries `aria-expanded` plus `aria-controls`. A new `data-table-toggle` CSS part styles the
|
|
39
|
+
control. Unset, nothing renders and behavior is unchanged.
|
|
40
|
+
- e084afb: `<lr-combobox>` now renders `<lr-option>`'s adornment slots, and gains `visibleOptions` for bounding
|
|
41
|
+
the suggestion popup's height.
|
|
42
|
+
|
|
43
|
+
**Adornments (a fixed contract, not just a new feature).** `<lr-option>` documented `start`/`end`
|
|
44
|
+
slots, their `prefix`/`suffix` aliases, and four matching CSS parts — but `<lr-combobox>` builds its
|
|
45
|
+
popup from normalized row *data* rather than from the light-DOM nodes, so inside the one component
|
|
46
|
+
`<lr-option>` exists to feed, none of them rendered. A row could show a colour dot, a badge and a
|
|
47
|
+
sub-line but not a 16px image, which is the one adornment a country, currency, language or user
|
|
48
|
+
picker most often wants, and neither documented workaround was available (`::part(option)` cannot be
|
|
49
|
+
compounded past the part, and `dot-color` rejects `url()`).
|
|
50
|
+
|
|
51
|
+
Adornments now render as new `option-start` / `option-end` parts, inert and `aria-hidden` so they
|
|
52
|
+
never join the option's accessible name. The nodes are **cloned** into the row, so the author's own
|
|
53
|
+
`<lr-option>` subtree is left exactly where they put it rather than being moved into a shadow root
|
|
54
|
+
as a side effect of opening a dropdown. Async `source` rows can supply the same `start`/`end`
|
|
55
|
+
fields alongside the existing `icon`.
|
|
56
|
+
|
|
57
|
+
**`visibleOptions`** (`visible-options`) bounds the popup to about that many rows, leaving the rest
|
|
58
|
+
reachable by scrolling. It is measured from where row N actually starts, since a row's height varies
|
|
59
|
+
with sub-lines, adornments and group labels. Unset, the listbox keeps exactly its previous
|
|
60
|
+
max-height behavior.
|
|
61
|
+
|
|
62
|
+
The doc comments on all three caps — `visibleOptions`, `maxRender`, and `maxOptionsVisible` — now
|
|
63
|
+
each state how they differ from the other two, which was the confusion that prompted this.
|
|
64
|
+
- 3b3af14: `<lr-date-picker>` gains `presets`, a quick-range button row for the dashboard time-filter shape
|
|
65
|
+
(Today / Last 7 days / Last 30 days / This month / All time).
|
|
66
|
+
|
|
67
|
+
The pieces for this existed but were split across two components that each held half the contract:
|
|
68
|
+
the date components had the calendar, locale and range logic but no preset affordance, while
|
|
69
|
+
`<lr-time-range>` had exactly the wanted preset API but is a two-handle numeric brush with no date
|
|
70
|
+
logic, so a caller had to map a time axis onto `[min, max]` themselves and got no calendar. Building
|
|
71
|
+
it by hand meant a ~260-line control plus its own preset/custom state machine.
|
|
72
|
+
|
|
73
|
+
`LyraDateRangePreset` is deliberately the same `label`/`start`/`end` shape as `TimeRangePreset`, so
|
|
74
|
+
the library has one preset vocabulary rather than two — only the unit differs (ISO `YYYY-MM-DD`
|
|
75
|
+
instead of numbers). Range mode only; unset renders nothing. Applying a preset commits through the
|
|
76
|
+
same path a two-click selection uses, so ISO serialization, `min`/`max` clamping and the
|
|
77
|
+
`input`-then-`change` pair are identical. A reversed preset normalizes, and a malformed one is
|
|
78
|
+
ignored rather than clearing the value, so a bad entry in a config-driven list never reads as "the
|
|
79
|
+
user picked nothing". New `presets` and `preset-button` CSS parts.
|
|
80
|
+
- c915980: Added `--lr-focus-ring`, a composite outline shorthand (`var(--lr-focus-ring-width) solid
|
|
81
|
+
var(--lr-focus-ring-color)`) alongside the three existing parts, which stay exactly as they are.
|
|
82
|
+
|
|
83
|
+
Web Awesome exposes `--wa-focus-ring` as a ready-made outline value, so the common consumer idiom
|
|
84
|
+
is `outline: var(--wa-focus-ring)`. Migrating it meant hand-expanding every site, which is easy to
|
|
85
|
+
get subtly wrong — omitting the `solid` keyword yields an outline that renders in some engines and
|
|
86
|
+
not others — and each hand-expanded copy stops tracking any future change to how the ring is
|
|
87
|
+
composed. `--lr-focus-ring-offset` stays separate because `outline-offset` is its own property, not
|
|
88
|
+
part of the `outline` shorthand.
|
|
89
|
+
|
|
90
|
+
`llms/tokens.md` also now documents why an ancestor `--lr-*` override does not survive a nested
|
|
91
|
+
component boundary: every component re-derives that layer from `--lr-theme-*` on its own `:host`,
|
|
92
|
+
so the override is reset at the first `lr-*` inside another `lr-*`'s shadow root and degrades
|
|
93
|
+
silently. The `--lr-theme-*` input layer is the one that inherits.
|
|
94
|
+
- 3d7a6a5: `<lr-heatmap>` matrix mode gains `colLabelRotation` (`col-label-rotation`) and an `'auto'` value for
|
|
95
|
+
`colLabelHeight` (`col-label-height`), giving column labels the escape hatch the row gutter got in
|
|
96
|
+
10.0.0.
|
|
97
|
+
|
|
98
|
+
Column labels were horizontal-only in a fixed 20px band, so in a dense matrix — where every column
|
|
99
|
+
is far narrower than a typical label — adjacent labels collided and the axis became unreadable,
|
|
100
|
+
with no rotation or angle property anywhere in the surface. Each label now rotates about an anchor
|
|
101
|
+
at its own column's centre with the label's end at that anchor, so it leans back over the columns
|
|
102
|
+
to its left and the last column's label cannot overflow the canvas. `col-label-height="auto"`
|
|
103
|
+
measures the labels and projects their width through the rotation, so the band sizes itself.
|
|
104
|
+
|
|
105
|
+
Unset, both are inert and painting is unchanged. Values outside `[0, 90]` clamp and non-finite
|
|
106
|
+
values normalize to `0`. Rotation is deliberately not mirrored under `dir="rtl"`, matching the
|
|
107
|
+
documented rule that both grid modes retain physical LTR geometry.
|
|
108
|
+
- 20728fb: `<lr-map>` gains a `'step'` choropleth interpolation and independent fill/stroke colours on
|
|
109
|
+
`dataLayers` — the two declarative gaps that stopped an application migrating off a first-party
|
|
110
|
+
MapLibre wrapper after every other property already matched.
|
|
111
|
+
|
|
112
|
+
**`interpolation: 'step'`** emits maplibre's `['step', …]` instead of `['interpolate', …]`, giving
|
|
113
|
+
discrete bands rather than a continuous ramp. A ramp is wrong whenever the legend advertises a fixed
|
|
114
|
+
set of ranges with one swatch each: it puts colours on the map that appear nowhere in the legend and
|
|
115
|
+
renders two regions in the same advertised band as visibly different colours. `stepBaseColor` sets
|
|
116
|
+
the colour below the first threshold (which `['step', …]` requires) and defaults to the first stop's
|
|
117
|
+
own colour.
|
|
118
|
+
|
|
119
|
+
**`dataLayers[].color` / `.strokeColor`** override `tone` for the fill and for the line/circle
|
|
120
|
+
layers respectively, falling back to `color` and then `tone`. They are separable because a fill and
|
|
121
|
+
its outline want opposite things on a choropleth-plus-overlay map: the fill competes for area and
|
|
122
|
+
must sit quiet, while the 1px outline competes with nothing and is the only thing keeping a no-data
|
|
123
|
+
region's shape readable once the fill is that faint. Deriving one from the other measured 1.41:1
|
|
124
|
+
against a light basemap, under WCAG 1.4.11's 3:1 floor for graphical objects. A `var(--lr-…)`
|
|
125
|
+
reference is resolved against the host first, since MapLibre paints to a WebGL canvas and never sees
|
|
126
|
+
the CSS cascade.
|
|
127
|
+
|
|
128
|
+
Both are additive: an unset `interpolation` still interpolates linearly, and a `tone`-only data
|
|
129
|
+
layer paints exactly as before.
|
|
130
|
+
- 4a701e7: `<lr-popover>` gains a third `popupRole` value, `none`, so the library can express the WAI-ARIA
|
|
131
|
+
disclosure-navigation pattern. Previously `popupRole` was `dialog | menu` only, which left a header
|
|
132
|
+
nav flyout with no correct option: `menu` announces "menu, menu item" and expects `menuitem`
|
|
133
|
+
children, while a navigation flyout is a list of links, and `dialog` implies an interruptive
|
|
134
|
+
surface. Consumers had to abandon the library's overlays and hand-roll a
|
|
135
|
+
`button[aria-expanded][aria-controls]` plus a plain list.
|
|
136
|
+
|
|
137
|
+
Under `popup-role="none"` the popup surface renders no `role` and no generated `aria-label`, and
|
|
138
|
+
the trigger carries no `aria-haspopup`, so the slotted `<nav>` owns the semantics and the
|
|
139
|
+
accessible name. Everything else — `aria-expanded`/`aria-controls`, light dismiss, Escape, focus
|
|
140
|
+
return, positioning — is unchanged. Purely additive: `dialog` remains the default, and
|
|
141
|
+
`lr-dropdown` still pins its own role to `menu`.
|
|
142
|
+
|
|
143
|
+
### Patch Changes
|
|
144
|
+
|
|
145
|
+
- e6ed0ca: The migration codemod now warns about four classes of `wa-*`/`sl-*` reference it does not rewrite,
|
|
146
|
+
instead of leaving them silent: tag selectors inside a `` css`` `` tagged template, `::slotted()`,
|
|
147
|
+
DOM selector strings reached through `this`/`this.shadowRoot`, and `--wa-*`/`--sl-*` custom
|
|
148
|
+
properties.
|
|
149
|
+
|
|
150
|
+
Each of these fails silently at runtime after a migration — a CSS rule keyed on a tag that no
|
|
151
|
+
longer exists matches nothing, `::slotted()` likewise, `querySelector` returns null, and a `var()`
|
|
152
|
+
naming a removed token falls back to its second argument or to nothing. Nothing throws, nothing
|
|
153
|
+
fails a build, and a typechecker cannot see inside a template literal. Because `--check` is
|
|
154
|
+
documented as a CI gate, the silence meant CI certified a migration that had visibly broken the
|
|
155
|
+
component's styling.
|
|
156
|
+
|
|
157
|
+
Tokens are deliberately reported rather than rewritten: the two spacing scales are offset by one
|
|
158
|
+
step (Web Awesome `m` is 1rem, Lyra `m` is 0.75rem), so renaming by name alone silently tightens
|
|
159
|
+
every gap, while mapping by value has no target for 1.5rem or 2.5rem. Warnings are filtered against
|
|
160
|
+
the rewrites the same pass produced, so a reference the inventory does map is never both rewritten
|
|
161
|
+
and warned about, and a self-declared `--wa-*` property (the consumer's own, merely sharing the
|
|
162
|
+
prefix) is exempt.
|
|
163
|
+
|
|
164
|
+
`<lr-dialog>`'s docs also now warn that `lr-close` is not a dialog-scoped name — nine components
|
|
165
|
+
emit it, several of which are routinely nested inside a dialog, and library events bubble and are
|
|
166
|
+
composed, so a listener bound on the dialog also receives a descendant's close.
|
|
167
|
+
- c5baec5: `<lr-flag>` now warns once in the console when `country`/`language` is set but no flag resolver has
|
|
168
|
+
been registered, naming the offending code and the `flag-peer.js` import that fixes it. Previously
|
|
169
|
+
this failed to the visible `[part="error"]` state in complete silence, which is indistinguishable
|
|
170
|
+
from missing flag data — the resolver is deliberately absent from the core component's module
|
|
171
|
+
graph, so an unimported peer entry is the single likeliest cause and was the hardest to diagnose.
|
|
172
|
+
The warning is emitted once per resolver-registration generation, so a page of many flags does not
|
|
173
|
+
repeat it. An already-resolved `src`, a registered resolver, and a well-formed-but-unmapped code
|
|
174
|
+
(which is data, not a defect) all stay silent.
|
|
175
|
+
- b573859: The `lr-locale-picker` Storybook page now registers the optional flag peer, so its rows render real
|
|
176
|
+
flags instead of silently empty frames. Found by the new `<lr-flag>` missing-resolver warning on its
|
|
177
|
+
first run — `flag.stories.ts` had always imported `flag-peer.js` for exactly this reason, and the
|
|
178
|
+
locale-picker page never did.
|
|
179
|
+
- c915980: The `lyra-ui-migrate` CLI no longer silently does nothing when launched through a package manager's
|
|
180
|
+
bin shim. Its entry guard compared `process.argv[1]` to `import.meta.url` as raw paths; under pnpm
|
|
181
|
+
the package directory is a symlink into the virtual store, so the two never matched and `run()`
|
|
182
|
+
never executed. The process printed nothing — not even `--help` — rewrote nothing, wrote no report,
|
|
183
|
+
and exited 0.
|
|
184
|
+
|
|
185
|
+
The serious half is that `--check` is documented as a CI gate that "exits nonzero while rewrites or
|
|
186
|
+
warnings remain". A silent exit 0 is indistinguishable from success, so on every pnpm project the
|
|
187
|
+
gate passed unconditionally — worse than having no gate, because it is trusted. npm and yarn were
|
|
188
|
+
unaffected, which is why it survived. The guard now compares realpaths, and a regression test
|
|
189
|
+
invokes the CLI through a symlink that mimics the pnpm layout.
|
|
190
|
+
|
|
191
|
+
## 10.0.1
|
|
192
|
+
|
|
193
|
+
### Patch Changes
|
|
194
|
+
|
|
195
|
+
- 84a28c2: Fixed `lr-combobox`, `lr-token-input` and `lr-radio-button` declaring a
|
|
196
|
+
`text-overflow: ellipsis` that could never fire.
|
|
197
|
+
|
|
198
|
+
`text-overflow` only applies to content that overflows its line box inline. Each
|
|
199
|
+
of these parts was left at `white-space: normal`, so the text wrapped instead of
|
|
200
|
+
overflowing and the box never had horizontal overflow at any label length --
|
|
201
|
+
`scrollWidth === clientWidth` in every case. `lr-combobox`'s and
|
|
202
|
+
`lr-token-input`'s labels additionally set `overflow-wrap: anywhere`, which put
|
|
203
|
+
the wrap *inside* a word.
|
|
204
|
+
|
|
205
|
+
The visible effect was worst on `lr-combobox`, whose tag caps at
|
|
206
|
+
`--tag-max-size` (80px by default): a selected `Received` rendered as `Receiv/ed`
|
|
207
|
+
across two lines, and a wrapped tag row could overflow a trigger pinned with
|
|
208
|
+
`--lr-combobox-trigger-height`.
|
|
209
|
+
|
|
210
|
+
All three now carry `white-space: nowrap`, matching `lr-select`'s
|
|
211
|
+
`[part='tag-label']`, which has always had it. Content that fits today is
|
|
212
|
+
unchanged; content that used to wrap now truncates, which is what the existing
|
|
213
|
+
declaration asked for.
|
|
214
|
+
|
|
215
|
+
`--tag-max-size` still defaults to 80px on `lr-combobox` against `lr-select`'s
|
|
216
|
+
12rem. That difference is deliberate for now -- changing it alters default
|
|
217
|
+
rendering rather than fixing a dead declaration -- and is tracked separately.
|
|
218
|
+
|
|
219
|
+
## 10.0.0
|
|
220
|
+
|
|
221
|
+
### Major Changes
|
|
222
|
+
|
|
223
|
+
- c640e0a: **10.0.0.** This release removes the members deprecated during 9.x, which is the whole of its
|
|
224
|
+
breaking surface. Everything else in 10.0.0 is additive — no component's default rendering changes,
|
|
225
|
+
and no existing property, event, slot, part or CSS custom property was renamed or repointed.
|
|
226
|
+
|
|
227
|
+
Removed, each with a like-for-like replacement that has shipped since 9.x:
|
|
228
|
+
|
|
229
|
+
- `confirm()`: the `tone` option on `ConfirmOptions` → `variant`. (An earlier draft of this note
|
|
230
|
+
attributed the rename to `<lr-confirm-bar>`; that component's `tone` → `variant` landed in 9.x
|
|
231
|
+
and left no alias, so nothing changes there in 10.0.0. The member removed here is the one on the
|
|
232
|
+
`confirm()` helper in `overlays/dialog/confirm.ts`.)
|
|
233
|
+
- `<lr-swatch-picker>`: `options` → `items`, `label` → `accessibleLabel` (or the host `aria-label`),
|
|
234
|
+
and the `SwatchOption` type → `SwatchPickerItem`.
|
|
235
|
+
|
|
236
|
+
Deliberately **kept**, so migrating consumers are not caught out:
|
|
237
|
+
|
|
238
|
+
- `<lr-icon>`'s `autoWidth` / `auto-width` stays, deprecation notice and all. Web Awesome's own
|
|
239
|
+
pinned manifest still publishes `auto-width` on `wa-icon`, and a mirrored tag owes its whole
|
|
240
|
+
upstream surface — dropping it classifies `wa-icon` as an `unsupported` mapping, which is a
|
|
241
|
+
release blocker. Prefer `canvas="auto"`; the alias goes when upstream's does.
|
|
242
|
+
- The same holds for **seven more** deprecated aliases whose records say `removalNotBefore: 10.0.0`
|
|
243
|
+
and which are therefore, on paper, removable now: the `base` part on `<lr-accordion-item>`,
|
|
244
|
+
`<lr-file-input>`, `<lr-qr-code>`, `<lr-sparkline>` and `<lr-video-playlist>`, and the `label`
|
|
245
|
+
part on `<lr-file-input>` and `<lr-known-date>`. Every one is published by the pinned upstream
|
|
246
|
+
manifest, and removing them was measured against the real comparison pipeline: each produces an
|
|
247
|
+
`unsupported` mapping. `<lr-qr-code>`'s `base` is the sharpest case — `sl-qr-code` publishes it as
|
|
248
|
+
its ONLY part and does not deprecate it at all.
|
|
249
|
+
|
|
250
|
+
That `10.0.0` is not a plan anyone made. Policy requires a removal to clear one whole subsequent
|
|
251
|
+
major, so `10.0.0` is simply the earliest legal value for a deprecation dating to 8.x. The records
|
|
252
|
+
now say so, because read literally they promised a removal that will never happen while upstream
|
|
253
|
+
ships the same names.
|
|
254
|
+
|
|
255
|
+
- `lr-geojson-view` stays. It is a permanent compatibility class for the pre-v9 tag, not a
|
|
256
|
+
deprecation.
|
|
257
|
+
- `base` / `wrapper` on `<lr-switch>` and `<lr-checkbox>` stay pointing at the control owner. They
|
|
258
|
+
are Web Awesome / Shoelace compatibility names, and the library's parity contract is that a
|
|
259
|
+
mirrored name keeps its meaning; `row` (new in this release) names the row wrapper instead.
|
|
260
|
+
- 082b885: **10.0.0.** A set of public-contract corrections that need a major boundary, plus a larger set of
|
|
261
|
+
additive fixes. Breaking items first; each one states what to change if you relied on the old
|
|
262
|
+
behavior.
|
|
263
|
+
|
|
264
|
+
### Breaking
|
|
265
|
+
|
|
266
|
+
**`<lr-calendar>` derives the week start from the locale.** `firstDayOfWeek` defaulted to a
|
|
267
|
+
hardcoded `1` (Monday) and never consulted the locale — while the very same component already
|
|
268
|
+
threaded `effectiveLocale` through its weekday *label* formatting. Measured, same `en-US` page:
|
|
269
|
+
`<lr-calendar>` rendered `Mon Tue Wed…` while `<lr-date-picker>` rendered `Sun Mon Tue…`. The
|
|
270
|
+
default is now `'auto'`, resolved through the same `resolveFirstDayOfWeek()` contract
|
|
271
|
+
`<lr-date-picker>`/`<lr-date-input>` already use. The type is now exactly
|
|
272
|
+
`'auto' | 'sun' | … | 'sat'`: the bare `0`–`6` integer form is gone rather than kept as a second
|
|
273
|
+
spelling, so there is one way to express a week start instead of two that had to be sanitized and
|
|
274
|
+
wrapped against each other. Replace `first-day-of-week="1"` with `first-day-of-week="mon"` to keep
|
|
275
|
+
the old rendering. There is no `wa-calendar`, so no upstream parity is affected.
|
|
276
|
+
|
|
277
|
+
**`<lr-progress-ring>` gains `show-value`, defaulting to `false`.** A determinate ring rendered its
|
|
278
|
+
percentage unconditionally, with no way to suppress it short of slotting replacement content — while
|
|
279
|
+
its sibling `<lr-progress-bar>` has had opt-in `show-value` all along, and the reference has always
|
|
280
|
+
claimed the two share "the same value contract". They now actually do. Add `show-value` to keep the
|
|
281
|
+
percentage. `aria-valuetext` still carries it either way, so the accessible value is unchanged.
|
|
282
|
+
|
|
283
|
+
**`<lr-media-card>`'s `alt` becomes optional, so a decorative image is expressible.** It was
|
|
284
|
+
`alt: string = ''`, and the render read `this.alt || this.filename || <localized generic>` — so an
|
|
285
|
+
explicit `alt=""` was indistinguishable from an absent one and came out as `alt="Image attachment"`.
|
|
286
|
+
There was no way to mark the image decorative, which is the one thing `alt=""` means in HTML. The
|
|
287
|
+
type is now `alt?: string` and the render uses `??`, matching `<lr-image-viewer>` and
|
|
288
|
+
`<lr-document-preview>`, which already documented that contract. Omitting `alt` is unchanged; only
|
|
289
|
+
the value read back from an unset property differs (`''` becomes `undefined`), so a consumer
|
|
290
|
+
comparing `el.alt === ''` should read `el.alt ?? ''`. The nested `<video controls>` label
|
|
291
|
+
deliberately does NOT follow: an empty `alt` there would leave an interactive player with no
|
|
292
|
+
accessible name, and "decorative" is not a state a media control can be in.
|
|
293
|
+
|
|
294
|
+
**`<lr-attachment-chip>`'s `lr-preview-request` is no longer cancelable.** It was advertised as a
|
|
295
|
+
veto point, but the chip never read `defaultPrevented` and owns no preview default action to
|
|
296
|
+
cancel — its own docs say it "never registers or owns a viewer/overlay" — so `preventDefault()` was
|
|
297
|
+
a no-op. The flag is removed rather than left as a promise the component cannot keep.
|
|
298
|
+
|
|
299
|
+
### Event vocabulary: one name per event
|
|
300
|
+
|
|
301
|
+
Several events had two spellings. 10.0.0 keeps the canonical name and **removes the old one
|
|
302
|
+
outright** rather than shipping a deprecated alias into a library that has no released consumers
|
|
303
|
+
yet — a dual-emit alias is a permanent tax paid to protect users who do not exist.
|
|
304
|
+
|
|
305
|
+
Rename the listener; the detail object is unchanged in every case.
|
|
306
|
+
|
|
307
|
+
| Removed | Use instead | On |
|
|
308
|
+
|---|---|---|
|
|
309
|
+
| `lr-entity-activate` | `lr-entity-select` | `<lr-entity-card>`, `<lr-entity-chip>`, `<lr-neighbor-list>` |
|
|
310
|
+
| `lr-visible-range-changed` | `lr-visible-range-change` | `<lr-virtual-list>` |
|
|
311
|
+
| `lr-run-select` | `lr-run-change` | `<lr-rag-eval-dashboard>` |
|
|
312
|
+
| `lr-dialog-close` | `lr-close` | `<lr-dialog>`, `<lr-drawer>` |
|
|
313
|
+
|
|
314
|
+
`lr-visible-range-changed` was the only past-tense `-changed` spelling among 58 `-change`-family
|
|
315
|
+
events, so a convention-driven listener silently missed it — on a component embedded in ten viewers.
|
|
316
|
+
|
|
317
|
+
Two deliberate non-removals. `<lr-community-card>` and `<lr-path-strip>` keep `lr-entity-activate`:
|
|
318
|
+
it is their only name and never was an alias. `<lr-accordion>` keeps `lr-expand`/`lr-collapse`,
|
|
319
|
+
which mirror `wa-accordion`'s real event names — removing them would have broken upstream parity
|
|
320
|
+
rather than tidied it. `lr-citation-badge` was also left alone: `lr-citation-select` is an
|
|
321
|
+
established *container*-level event with a richer `{ citation }` detail that containers translate
|
|
322
|
+
its `{ sourceId, index }` into, so unifying there would have delivered two shapes under one name.
|
|
323
|
+
|
|
324
|
+
### Interaction, focus and visibility corrections
|
|
325
|
+
|
|
326
|
+
A sweep with a CSS-specificity analyzer found rules that were supposed to win losing to another rule
|
|
327
|
+
in the same shadow stylesheet, so their declarations never applied. The code read correctly and the
|
|
328
|
+
tests were green; only a rendered probe showed the difference.
|
|
329
|
+
|
|
330
|
+
- **The keyboard highlight is visible on the selected row again** in `<lr-select>`, `<lr-combobox>`,
|
|
331
|
+
`<lr-model-select>` and `<lr-voice-picker>`. Each had `[aria-selected="true"]` written after the
|
|
332
|
+
active-descendant rule at equal specificity, so arrow-keying onto the already-selected option
|
|
333
|
+
produced no visible highlight at all.
|
|
334
|
+
- **`appearance="filled"` has a focus indicator again** on `<lr-combobox>` and `<lr-date-input>`.
|
|
335
|
+
Both had none: the appearance rule out-ranked `:focus-within`, and the only `outline` in the focus
|
|
336
|
+
rule was `solid transparent`. Both now express appearance as private custom properties, so no
|
|
337
|
+
`[part]` rule can out-rank another and the failure mode is structurally impossible.
|
|
338
|
+
- **Pointer feedback restored** where a state rule or a resting rule was swallowing it:
|
|
339
|
+
`<lr-code-block>`'s line-gutter button (neither hover nor press, ever), `<lr-pagination>`'s page
|
|
340
|
+
input, `<lr-table>`'s sticky sortable header, `<lr-time-range>`'s active preset,
|
|
341
|
+
`<lr-agent-trace>`'s active handoff, `<lr-compare-panel>`'s cast vote, `<lr-flow-canvas>`'s
|
|
342
|
+
selected edge, `<lr-conversation-item>`'s open session, `<lr-option>`, `<lr-entity-chip>` and
|
|
343
|
+
`<lr-approval-queue>`.
|
|
344
|
+
- **Focus rings restored** on `<lr-calendar>`'s today cell, `<lr-sequence-strip>`'s selected cell,
|
|
345
|
+
`<lr-embedding-explorer>`'s selected point, and `<lr-dashboard-grid>`/`<lr-flow-canvas>` cells in a
|
|
346
|
+
collision or drop state.
|
|
347
|
+
- **`hidden` works again** where the component's own stylesheet was defeating the UA default:
|
|
348
|
+
`<lr-flag>` painted a full-size broken image beside its skeleton while loading, `<lr-video>` kept
|
|
349
|
+
the controls play button both painted and focusable behind a poster, and nine components let a
|
|
350
|
+
consumer's `hidden` slotted child stay visible.
|
|
351
|
+
- **Disabled controls look disabled**: `<lr-entity-chip>` and `<lr-approval-queue>` rendered their
|
|
352
|
+
disabled buttons pixel-identical to enabled ones, with a pointer cursor and full hover feedback.
|
|
353
|
+
- **`<lr-random-content>` actually hides** the candidates it is not showing; its rotation was
|
|
354
|
+
previously observable only to assistive technology.
|
|
355
|
+
- **`<lr-video>` keeps captions** for a `<track>` with no `kind` attribute, whose HTML missing-value
|
|
356
|
+
default is `subtitles`.
|
|
357
|
+
|
|
358
|
+
### Additive
|
|
359
|
+
|
|
360
|
+
- **`lr-search-change` detail is consistent again.** `<lr-terminal>` and `<lr-av-player>` now emit
|
|
361
|
+
the canonical `LyraSearchChangeDetail` including `matchCountExact`, which 18 of 21 emitters already
|
|
362
|
+
did. This matters most on `<lr-terminal>`, which truncates at 10,000 matches and previously had no
|
|
363
|
+
way to signal that its count was a lower bound. `<lr-knowledge-graph-explorer>`'s detail is now exactly
|
|
364
|
+
`{ query, matchCount, matchCountExact }` — `searchQuery` is replaced by the canonical `query`
|
|
365
|
+
rather than carried beside it; it deliberately has no `activeIndex`, being a live node filter
|
|
366
|
+
rather than a cursor-based search. (The `searchQuery` *property* is unaffected.)
|
|
367
|
+
- **`<lr-token-input>` can veto all three mutations.** `lr-add` and `lr-token-edit` are now
|
|
368
|
+
cancelable, matching `lr-remove`, which already was. A vetoed add keeps the typed draft so the user
|
|
369
|
+
can correct it; a vetoed edit leaves the inline editor open with the edited text intact.
|
|
370
|
+
- **`<lr-dialog>`'s close event is `lr-close`** (`DialogCloseReason` detail, cancelable);
|
|
371
|
+
`<lr-drawer>` inherits it. See the removal table above.
|
|
372
|
+
- **`<lr-accordion>` also emits a cancelable `lr-toggle-request`** (`{ collapsed, item }`) alongside
|
|
373
|
+
its upstream-mirroring `lr-expand`/`lr-collapse`, matching the convention
|
|
374
|
+
`<lr-code-block>`/`<lr-chat-message>` use. `preventDefault()` on either vetoes the transition.
|
|
375
|
+
- **`<lr-popover>` gains `disabled`.** Both `<lr-tooltip>` and its own subclass `<lr-dropdown>` had
|
|
376
|
+
it; the base did not. `<lr-dropdown>` now inherits it, with byte-identical behavior.
|
|
377
|
+
- **`<lr-table>` emits `lr-selection-change`** when a `selectionMode` flip to `'single'` coerces a
|
|
378
|
+
multi-row selection down to one key — previously a silent mutation a host mirroring the event could
|
|
379
|
+
not see.
|
|
380
|
+
- **`<lr-command-palette>` re-emits `focus`/`blur`** from its search input; native ones neither bubble
|
|
381
|
+
nor cross the shadow boundary.
|
|
382
|
+
- **`PptxViewerAdapter` and friends are importable.** `pptx-loader.js` had no `package.json#exports`
|
|
383
|
+
entry despite the reference documenting the import, so it failed with
|
|
384
|
+
`ERR_PACKAGE_PATH_NOT_EXPORTED`. A new check now requires every helper module to be classified
|
|
385
|
+
public or internal, closing the same class that stranded `archive-viewer-register.js` in 9.0.0.
|
|
386
|
+
- **`PlaceSync`** is re-exported from `dropdown.class.js`, and ~13 constituent types are re-exported
|
|
387
|
+
from the composite components whose public properties use them.
|
|
388
|
+
- **`<lr-knowledge-graph-explorer>` no longer announces on mount.** A preset `search-query` fired its
|
|
389
|
+
live region before any user action.
|
|
390
|
+
|
|
391
|
+
### Minor Changes
|
|
392
|
+
|
|
393
|
+
- 357ee35: `<lr-chart>`: declarative reference lines and shaded bands via a new `annotations` property.
|
|
394
|
+
|
|
395
|
+
Marking a threshold, an event year, a regime change or a highlighted period previously meant
|
|
396
|
+
importing `chartjs-plugin-annotation` yourself and wiring it through the raw `config` passthrough —
|
|
397
|
+
the point where a declarative component dropped the user into raw Chart.js, for one of the most
|
|
398
|
+
common things anyone needs on a time series.
|
|
399
|
+
|
|
400
|
+
- `annotations: readonly LyraChartAnnotation[]`, where `LyraChartAnnotation` is
|
|
401
|
+
`{ axis?: 'x' | 'y'; value?: number; from?: number; to?: number; label?: string; tone?: 'neutral'
|
|
402
|
+
| 'brand' | 'success' | 'warning' | 'danger' }`. A finite `value` renders a reference line on that
|
|
403
|
+
axis; a finite `from`/`to` pair renders a band bounded on that axis and spanning the other. `axis`
|
|
404
|
+
defaults to `'y'`.
|
|
405
|
+
- Entries specifying neither a finite value nor a finite range are dropped rather than handed to
|
|
406
|
+
Chart.js, where they render nothing at best; a reversed range is normalized rather than rejected.
|
|
407
|
+
- Tones resolve through the same `getComputedStyle`-then-`resolveCanvasColor` path every other chart
|
|
408
|
+
color takes, since canvas silently ignores an unparseable `strokeStyle`/`fillStyle`.
|
|
409
|
+
- Labelled entries are included in the generated accessible description, mirroring `lr-heatmap`. The
|
|
410
|
+
label is consumer-supplied text and so is not localized; an unlabelled line has no nameable
|
|
411
|
+
meaning to announce beyond a coordinate.
|
|
412
|
+
- The optional `chartjs-plugin-annotation` peer loads on first actual demand, so a page with no
|
|
413
|
+
annotated charts never downloads it. Without it installed the chart still renders and a single
|
|
414
|
+
console warning explains the no-op — the same fail-closed contract `data-labels` uses.
|
|
415
|
+
|
|
416
|
+
On the filed concern about Chart.js's page-wide singleton registry: this plugin is registered
|
|
417
|
+
globally, like `chartjs-plugin-zoom` and unlike `chartjs-plugin-datalabels`. The distinction is that
|
|
418
|
+
datalabels draws on every dataset the moment it is globally registered, whereas annotation draws
|
|
419
|
+
nothing at all unless a chart supplies annotation options — so the registration is unobservable to a
|
|
420
|
+
chart that sets none, covered by an explicit test. It also *has* to be global: registration is what
|
|
421
|
+
installs the plugin's own element types and defaults, and an inline `config.plugins` entry skips
|
|
422
|
+
that, leaving the plugin to throw on missing `borderWidth`/`borderCapStyle` the moment it draws.
|
|
423
|
+
- 8e3f602: `<lr-chart>`: add a logarithmic value axis via a new `scaleType` property.
|
|
424
|
+
|
|
425
|
+
The core loader registered `LinearScale`, `CategoryScale` and `RadialLinearScale` but never
|
|
426
|
+
Chart.js's `LogarithmicScale`, so a logarithmic axis was unreachable — there was no property for it,
|
|
427
|
+
and the raw `config` passthrough could not supply one either, because Chart.js rejects an
|
|
428
|
+
unregistered scale type at construction. Any dataset spanning several orders of magnitude (prices,
|
|
429
|
+
growth, population, latency percentiles, file sizes) could not be charted honestly, since a linear
|
|
430
|
+
axis collapses everything below the maximum into the baseline.
|
|
431
|
+
|
|
432
|
+
- `scaleType: 'linear' | 'logarithmic' = 'linear'` (attribute `scale-type`, type
|
|
433
|
+
`LyraChartScaleType`, exported from the root barrel) targets the **value** axis; the categorical
|
|
434
|
+
axis is never affected. Inherited by `lr-line-chart`, `lr-scatter-chart` and `lr-bar-chart`, and
|
|
435
|
+
applied to the secondary `y2` axis when one is present.
|
|
436
|
+
- `beginAtZero` is not forwarded on a logarithmic axis, since `log(0)` is `-Infinity` and Chart.js
|
|
437
|
+
would otherwise be handed a bound it cannot place.
|
|
438
|
+
- `LogarithmicScale` is registered with the core rather than behind the feature loader: unlike the
|
|
439
|
+
zoom and datalabels plugins it is not a separate package, so it already ships inside the
|
|
440
|
+
`chart.js` module namespace the loader imports and costs no extra download weight.
|
|
441
|
+
|
|
442
|
+
Default is unchanged and covered by an explicit unset test.
|
|
443
|
+
- 744da58: Four consumer-filed defects, plus one the sweep for the same defect class turned up.
|
|
444
|
+
|
|
445
|
+
**`<lr-checkbox-group>`: `value` is settable.** It was a getter with no setter. Reading was fine,
|
|
446
|
+
but `.value=${...}` — the binding every other form control here accepts — compiles to a plain
|
|
447
|
+
property assignment that `readonly` cannot catch at the binding site, so it threw
|
|
448
|
+
"Cannot set property value ... which has only a getter" from inside lit-html during a *later*
|
|
449
|
+
render, blaming framework internals rather than the offending line. Assigning now mirrors the array
|
|
450
|
+
onto the owned checkboxes; it is controlled input, so it emits no `lr-change`, and an assignment
|
|
451
|
+
made before the children exist is applied once they arrive.
|
|
452
|
+
|
|
453
|
+
**`<lr-time-input>`: `valueAsNumber` and `valueAsDate` are settable.** Nobody filed this — sweeping
|
|
454
|
+
the library for the same "public getter a consumer would naturally bind, with no setter" shape found
|
|
455
|
+
it. `<lr-input>`, `<lr-date-picker>`, `<lr-slider>` and `<lr-known-date>` all ship both, and the
|
|
456
|
+
native `<input type="time">` this mirrors accepts both; `<lr-time-input>` was the lone outlier.
|
|
457
|
+
Out-of-range or non-finite figures clear the field rather than wrapping into a different time.
|
|
458
|
+
|
|
459
|
+
**`<lr-map>`: `lr-map-click` resolves `feature` against `dataLayers`, not only the choropleth.**
|
|
460
|
+
Clicking a shape painted through `dataLayers` reported `feature: undefined`, indistinguishable from
|
|
461
|
+
clicking empty ocean — which broke the pattern the two properties invite: choropleth for features
|
|
462
|
+
that have a value, a data layer for features that exist but have none. The detail gains `origin`
|
|
463
|
+
(`'choropleth' | 'data-layer'`) and `sourceId` (the authored `dataLayers[].sourceId`) so a hit is
|
|
464
|
+
attributable.
|
|
465
|
+
|
|
466
|
+
**`<lr-map>`: an untileable numeric feature property is now named up front.** MapLibre GL tiles
|
|
467
|
+
GeoJSON through a worker, where an oversized integer throws "Given varint doesn't fit into 10
|
|
468
|
+
bytes" — uncatchable by the app, invisible except as an opaque message, and with the rest of the
|
|
469
|
+
layer still painting. Sources are pre-scanned and any property beyond `Number.MAX_SAFE_INTEGER`
|
|
470
|
+
draws a dev-mode warning naming the feature and property.
|
|
471
|
+
|
|
472
|
+
**`<lr-heatmap>`: the matrix row-label gutter is configurable, and labels truncate.** It was a
|
|
473
|
+
hardcoded 60px with no measurement, so a longer row label was clipped mid-word by whatever was
|
|
474
|
+
painted beside it on the canvas — which reads as a rendering fault. `rowLabelWidth` now pins a
|
|
475
|
+
width or takes `'auto'` to measure the widest label and size to fit (floored at 60, capped at 40%
|
|
476
|
+
of the host so one label cannot squeeze out the cells it describes), `colLabelHeight` does the same
|
|
477
|
+
for the column band, and a label too wide for the resolved gutter is truncated with an ellipsis
|
|
478
|
+
instead of clipped. The default stays 60: auto-sizing every chart would silently reflow layouts
|
|
479
|
+
whose labels already fit, which is a bigger change than the clipping it fixes.
|
|
480
|
+
- d92bfb2: Two dev-mode defects that shipped in 9.x, plus the per-point chart color cost behind them.
|
|
481
|
+
|
|
482
|
+
**The unknown-attribute diagnostic no longer reports a component's own API as a mistake.**
|
|
483
|
+
Components can now declare a `knownUnobservedAttributes` static for attributes they own without
|
|
484
|
+
observing, and four do. Without it the diagnostic fired on correct markup and on state components
|
|
485
|
+
set on themselves:
|
|
486
|
+
|
|
487
|
+
- `<lr-page disable-sticky="header">` is documented public API read only by
|
|
488
|
+
`:host([disable-sticky~="..."])` rules, so it has no reactive property — authoring it correctly
|
|
489
|
+
drew a warning saying it was wrong.
|
|
490
|
+
- `<lr-animated-image>` (`playing`), `<lr-menu-item>` (`submenu-open`) and `<lr-app-rail>`
|
|
491
|
+
(`mode`, `dragging`) reflect read-only state onto their own host. Each reported its own output
|
|
492
|
+
as an unknown attribute, in every consumer app, the moment that state turned on.
|
|
493
|
+
|
|
494
|
+
**Per-point chart colors are resolved once per distinct color, not once per point.**
|
|
495
|
+
`resolveCanvasColor` inserts a probe element and forces a synchronous style recalculation on every
|
|
496
|
+
call, which `<lr-chart>` paid for each entry of a series' `color`, `segmentColors` and
|
|
497
|
+
`pointColors` arrays — 2,000 probe insertions for a 2,000-point series, before drawing anything.
|
|
498
|
+
The new `resolveCanvasColors` memoizes by color string across the batch, and authored ramps are
|
|
499
|
+
typically a handful of distinct colors repeated across many points. The cache lives for one call,
|
|
500
|
+
so a later draw still picks up live `--lr-*` theme changes.
|
|
501
|
+
|
|
502
|
+
**`<lr-tooltip>` no longer schedules a wasted second render on close.** Its `anchorPositioned`
|
|
503
|
+
reset moved from `updated()` to `willUpdate()`, where it belongs — nothing visible changes, since
|
|
504
|
+
that render already hides the popup via `open`.
|
|
505
|
+
- 19d15f6: Five consumer-reported gaps, several of them follow-ups to the charts/timeline work in this release.
|
|
506
|
+
|
|
507
|
+
**`<lr-chart>`: the formatter now receives the `export` and `spoken` surfaces.** `LyraChartFormatSurface`
|
|
508
|
+
has always declared both and `<lr-lite-chart>` has always emitted them, but `lr-chart` only ever
|
|
509
|
+
passed `visual` and `table` — so one formatter written against the documented contract behaved
|
|
510
|
+
differently depending on which chart rendered it, silently, in exactly the places unit formatting
|
|
511
|
+
matters most. CSV cells now route through `export` and the live announcement through `spoken`. With
|
|
512
|
+
no formatter installed, CSV cells stay the raw machine-readable number (no locale grouping a
|
|
513
|
+
spreadsheet would misparse) and announcements keep their locale format.
|
|
514
|
+
|
|
515
|
+
**`<lr-map>`: choropleth interpolation is selectable.** The fill expression was hard-coded to
|
|
516
|
+
`['interpolate', ['linear'], …]`, so a heavy-tailed quantity — price, population, income — put every
|
|
517
|
+
value below the maximum into the first colour band. `LyraMapChoroplethLayer.interpolation`
|
|
518
|
+
(`'linear' | 'logarithmic'`, default `'linear'`) emits maplibre's own
|
|
519
|
+
`['interpolate', ['exponential', 0.25], …]`, exposing an existing capability rather than adding one.
|
|
520
|
+
**`stops` stay in the data's own units**, so the legend keeps reading in real values instead of log
|
|
521
|
+
units.
|
|
522
|
+
|
|
523
|
+
**`<lr-heatmap>`: a dev-mode warning when `legendStops` and `colorSteps` disagree.** Both are
|
|
524
|
+
deliberate and independent — that independence is what lets a `cellColor` consumer describe a ramp
|
|
525
|
+
the grid no longer uses — but nothing checked they described the same thing, and a legend that
|
|
526
|
+
confidently labels colours the cells never use is worse than no legend. Warning rather than deriving
|
|
527
|
+
one from the other: deriving would silently change what an existing `colorSteps`-only consumer sees
|
|
528
|
+
and would break that escape hatch. Caption-only stops (the `less ▢▢▢▢ more` shape) claim no colour
|
|
529
|
+
and never warn.
|
|
530
|
+
|
|
531
|
+
**`<lr-timeline>`: `collision="stack"` for dense `scale="time"` chronologies.** Coincident items
|
|
532
|
+
overlapped, which is the common case rather than the exception at realistic density. `'stack'` steps
|
|
533
|
+
each colliding item one lane along the cross axis (`--lr-timeline-collision-offset`); an isolated
|
|
534
|
+
item returns to lane 0 rather than inheriting a preceding run's depth. No `'cluster'` mode: collapsing
|
|
535
|
+
items into one expandable marker needs a selection model and click events this deliberately passive
|
|
536
|
+
component does not have.
|
|
537
|
+
|
|
538
|
+
**`<lr-sequence-strip>`: activation and a controlled selection.** The strip read as pickable but had
|
|
539
|
+
no click handling and no event to hook. `lr-item-activate` (`detail: { index, id, item }`) fires on
|
|
540
|
+
click and on Enter/Space at the roving-tabindex focus, and `selectedIndex` marks the current item
|
|
541
|
+
with `aria-current` and `data-selected`. Controlled on purpose: activation does not move the
|
|
542
|
+
selection itself, so the strip cannot drift from a playback index it does not own. The selection is
|
|
543
|
+
drawn as a ring, not a tint — a cell's background is data (its category colour).
|
|
544
|
+
|
|
545
|
+
All five are additive; unset, every component renders as before.
|
|
546
|
+
- b3b9d30: `<lr-flag>`: accept ISO 3166-1 alpha-3 country codes, and render a neutral fallback for codes that
|
|
547
|
+
cannot resolve.
|
|
548
|
+
|
|
549
|
+
Two related consumer reports.
|
|
550
|
+
|
|
551
|
+
**Alpha-3.** `country` took alpha-2 only, while public statistical sources — World Bank, UN, IMF and
|
|
552
|
+
most open-data portals — key country records on alpha-3, so every consumer plotting country-level
|
|
553
|
+
data shipped and maintained its own ~249-row conversion table purely to satisfy this component.
|
|
554
|
+
`country` now accepts either: length alone disambiguates the two code spaces, so no format hint or
|
|
555
|
+
new API is needed. The 249 officially-assigned mappings are packed as a ~1.2 KB fixed-width string
|
|
556
|
+
and expanded into a lookup lazily on the first alpha-3 use, so an alpha-2-only app never pays for
|
|
557
|
+
them. Withdrawn and user-assigned codes deliberately do **not** map to a successor state — a
|
|
558
|
+
dissolved federation has no current flag, so it takes the unresolved path below.
|
|
559
|
+
|
|
560
|
+
**Unresolved ≠ error.** An unresolvable code rendered localized error text into `[part="error"]` and
|
|
561
|
+
reflected `data-error`. That is right for a genuine mistake, but historical and longitudinal
|
|
562
|
+
datasets legitimately contain states with no current ISO code, and in a table or card grid those
|
|
563
|
+
rows want a neutral placeholder occupying the same footprint, not wording that reads to a user as a
|
|
564
|
+
bug. Styling `[part="error"]` could not fix it, because the localized string is contained text
|
|
565
|
+
rather than substitutable content.
|
|
566
|
+
|
|
567
|
+
- A new `fallback` slot renders in place of the flag for an unresolvable code, and a `fallback`
|
|
568
|
+
property takes a placeholder image URL (rendered as `[part="fallback-image"]`) when no slot
|
|
569
|
+
content is supplied.
|
|
570
|
+
- The host now reflects `data-unresolved` separately from `data-error`, so the two cases can be
|
|
571
|
+
styled apart.
|
|
572
|
+
|
|
573
|
+
Both additive: a resolvable code renders exactly as before, covered by an explicit inert-by-default
|
|
574
|
+
test.
|
|
575
|
+
- 990f4d6: `<lr-heatmap>`: support signed data via new `domain` and `midpoint` properties, and stop dropping
|
|
576
|
+
the negative half of a signed dataset.
|
|
577
|
+
|
|
578
|
+
Two related reports. The ramp always spanned the data's own `min`…`max`, so two heatmaps of
|
|
579
|
+
comparable data could not share a scale — each silently normalized to its own extremes — and a
|
|
580
|
+
diverging palette could not be centred: with data running -4.93 to +28.8, the neutral colour landed
|
|
581
|
+
at 15% of the range rather than on zero, painting "no change" onto a substantial decrease.
|
|
582
|
+
Separately, the cell-fill guard was `value < 0 || !Number.isFinite(value)`, so *every* negative
|
|
583
|
+
rendered as no-data, not just the documented `-1` sentinel — indistinguishable from a genuinely
|
|
584
|
+
missing cell, and silent (32.7% of cells in the reporter's dataset).
|
|
585
|
+
|
|
586
|
+
- `domain?: [number, number]` pins the ramp's input domain, so comparable charts can share a scale.
|
|
587
|
+
A reversed pair is normalized; a degenerate or non-finite one falls back to the derived range.
|
|
588
|
+
- `midpoint?: number` anchors a diverging ramp's neutral colour, scaling the two halves
|
|
589
|
+
independently (`lo`→0, `midpoint`→0.5, `hi`→1). A midpoint outside the domain degrades to plain
|
|
590
|
+
normalization rather than distorting the ramp.
|
|
591
|
+
- Setting either one opts into **signed data**, where only a non-finite value is no-data. That
|
|
592
|
+
gating is deliberate: `-1` is the long-documented sentinel and a matrix of counts has no
|
|
593
|
+
meaningful negative, so declaring a domain or midpoint is what disambiguates the two. With
|
|
594
|
+
neither set, behavior is byte-identical to before — covered by an explicit unset-regression test.
|
|
595
|
+
- A structurally absent matrix cell now reads as `NaN` in signed mode (non-finite is no-data in
|
|
596
|
+
both modes), so it stays a hole while a real `-1` beside it renders on the ramp. The default
|
|
597
|
+
mode still resolves an absent cell to `-1`, keeping `valueAt()` and the `lr-cell-click` payload
|
|
598
|
+
unchanged.
|
|
599
|
+
- The accessible cell labels track the painted contract, so a rendered negative is announced with
|
|
600
|
+
its value instead of "no data".
|
|
601
|
+
- `scale="sqrt"` continues to reject negatives — a square root of a negative has no meaning — now
|
|
602
|
+
explicitly rather than as a side effect of the shared guard.
|
|
603
|
+
- 17b540a: `<lr-lite-chart>`: add a base-10 `scale="logarithmic"` value axis.
|
|
604
|
+
|
|
605
|
+
The dependency-free SVG chart does not extend `LyraChart`, so it did not inherit the `scaleType`
|
|
606
|
+
support added for the Chart.js-backed charts, leaving no way to plot data spanning several orders of
|
|
607
|
+
magnitude honestly — a linear axis collapses everything below the maximum into the baseline.
|
|
608
|
+
|
|
609
|
+
- `scale` now accepts `'logarithmic'` alongside `'linear'` and `'sqrt'`, defaulting to `'linear'`.
|
|
610
|
+
- Unlike `'sqrt'` (which compresses bars only, by long-standing design), the logarithmic axis
|
|
611
|
+
applies to **bars, line points and gridlines alike** — a log axis whose gridlines stayed linear
|
|
612
|
+
would misrepresent the plot. All three now resolve through one `valueFraction()` dispatcher so the
|
|
613
|
+
scale can never apply to some marks and not others.
|
|
614
|
+
- Its lower bound is the smallest *positive* datum, not the linear `lo`. `beginAtZero` defaults to
|
|
615
|
+
true, so `lo` is normally `0`, which has no logarithm; deriving the floor from the data is what
|
|
616
|
+
makes a 1…1000 series span three even decades instead of collapsing onto one. Measured: decade
|
|
617
|
+
gaps of 80.7/80.6/80.7px versus linear's 2.2/21.8/217.8px on the same data.
|
|
618
|
+
- Zero and negative values pin to the axis floor rather than reaching the SVG as `-Infinity`, which
|
|
619
|
+
would blank the series — this renderer has no Chart.js-style "drop the point" fallback. A
|
|
620
|
+
degenerate domain falls back to the linear fraction.
|
|
621
|
+
|
|
622
|
+
`'linear'` and `'sqrt'` render exactly as before, covered by an explicit unchanged-default test.
|
|
623
|
+
- 1b0aa52: `<lr-map>`: render a continuous choropleth legend, via a new `legendGradient` property and a
|
|
624
|
+
`legend` slot.
|
|
625
|
+
|
|
626
|
+
`choropleth` builds an interpolated fill expression from `stops` — a continuous ramp — but `legend`
|
|
627
|
+
accepted only `{ color, label, pattern }` rows rendered as discrete swatches, and the component
|
|
628
|
+
exposed no slots. The standard key for a choropleth (a gradient bar with endpoint ticks) could not
|
|
629
|
+
be rendered inside the component that produces the gradient, so a consumer had to draw a second,
|
|
630
|
+
unaligned legend outside the map and keep its stops manually in sync with the layer's.
|
|
631
|
+
|
|
632
|
+
- `legendGradient: readonly (readonly [number, string])[]` takes the same `[value, color]` shape as
|
|
633
|
+
`choropleth.stops`, so the usual assignment is `map.legendGradient = myChoropleth.stops` and the
|
|
634
|
+
key cannot drift from the layer it describes. Stops are sorted ascending, bounded to 64, and
|
|
635
|
+
filtered to finite values with a CSS-parsable color; fewer than two usable stops render no bar,
|
|
636
|
+
since a one-stop "gradient" is a flat block that describes nothing. Each stop sits at its true
|
|
637
|
+
proportion of the value range rather than being evenly spaced.
|
|
638
|
+
- `legendGradientLoLabel` / `legendGradientHiLabel` override the endpoint captions, which otherwise
|
|
639
|
+
default to the lowest/highest stop value in the component's own locale-aware formatting.
|
|
640
|
+
- New `legend-gradient`, `legend-lo` and `legend-hi` parts, named to mirror `lr-heatmap`'s gradient
|
|
641
|
+
legend as the request asked, so one styling vocabulary covers both. The bar is `aria-hidden` and
|
|
642
|
+
`inert`; the captions carry the meaning. It mirrors under RTL like the heatmap's does.
|
|
643
|
+
- A new `legend` slot renders custom legend content inside the panel's own layout, so it stays
|
|
644
|
+
positioned with the map. Supplying it opens the panel even when both legend inputs are empty.
|
|
645
|
+
|
|
646
|
+
All additive: with none of them set the component renders exactly as before, covered by an explicit
|
|
647
|
+
unset test.
|
|
648
|
+
- 1625356: Ship an optional `reservations.css` stylesheet that prevents layout shift from lazy-upgrading
|
|
649
|
+
elements, and document the library's scope boundaries.
|
|
650
|
+
|
|
651
|
+
An undefined custom element is an inline box with no intrinsic size, so every `lr-*` in the initial
|
|
652
|
+
viewport contributes a reflow as its definition loads; components that additionally defer on an
|
|
653
|
+
optional peer (`lr-chart`, `lr-map`, `lr-flag`, `lr-flow-canvas`, `lr-knowledge-graph-explorer`)
|
|
654
|
+
can cost a second shift when the peer resolves. Each is individually well-behaved — the aggregate on
|
|
655
|
+
a first paint is what costs a Cumulative Layout Shift score. Until now every consumer derived its own
|
|
656
|
+
`:not(:defined)` sizing rules per component by measurement, and those rules rotted silently whenever
|
|
657
|
+
a component's default dimensions changed.
|
|
658
|
+
|
|
659
|
+
```css
|
|
660
|
+
@import "@aceshooting/lyra-ui/reservations.css";
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
- Reserves each component's intrinsic footprint before upgrade, styling **only** `:not(:defined)`
|
|
664
|
+
elements inside an `@layer lr-reservations`, so it is inert the moment a definition upgrades and
|
|
665
|
+
can never fight a component's own layout. No colors, no `:root` rules.
|
|
666
|
+
- Every reservation is expressed with the **same custom property and fallback token the component's
|
|
667
|
+
own stylesheet uses** (`--lr-chart-height`/`--lr-size-280px`, `--lr-flag-aspect-ratio`,
|
|
668
|
+
`--lr-form-control-height`, …). That is what makes it worth shipping rather than documenting
|
|
669
|
+
measured pixels: the reservations track the components, and theming a component re-themes its
|
|
670
|
+
reservation with it.
|
|
671
|
+
- Reservations target each component's *final* default size rather than its skeleton's, so a
|
|
672
|
+
skeleton-to-content swap stays stable too.
|
|
673
|
+
|
|
674
|
+
`llms/shared.md` gains a matching CLS section with the hand-rolled equivalent for consumers who
|
|
675
|
+
prefer their own rules, plus a new **Scope: what this library does not provide** section stating the
|
|
676
|
+
boundaries explicitly — client-side routing (there is no router and no route outlet; the navigation
|
|
677
|
+
components expose active state as ordinary properties to be driven by the application's own router),
|
|
678
|
+
data fetching/state management, and form-submission orchestration.
|
|
679
|
+
- 870ed4f: `<lr-switch>` and `<lr-checkbox>`: expose the row wrapper as a new `row` CSS part.
|
|
680
|
+
|
|
681
|
+
Both controls render the track/box owner and the rich label as *siblings* inside a wrapper element
|
|
682
|
+
that carried no `part` at all, while `base` names the owner box rather than the row. A consumer
|
|
683
|
+
laying out a column of switches therefore had no selector for "the row": `inline-size: 100%` on any
|
|
684
|
+
part inside it resolved against a shrink-to-fit parent, and because the owner box centers its track
|
|
685
|
+
and its width tracks the label's, a longer label shifted the track's x-position from row to row —
|
|
686
|
+
visibly ragged.
|
|
687
|
+
|
|
688
|
+
`row` names the real wrapper, so `::part(row)` can stretch or align it. `base`/`switch`/`wrapper`
|
|
689
|
+
and `base`/`checkbox` keep their existing nodes and meaning — they are documented Web Awesome /
|
|
690
|
+
Shoelace compatibility names, so repointing them would have broken shipped consumers. This is
|
|
691
|
+
purely additive; an unstyled control renders identically.
|
|
692
|
+
- 8cb3545: Four more consumer-filed defects, two per component.
|
|
693
|
+
|
|
694
|
+
**`<lr-table>`: cell links are themeable.** A column's `cell(row)` renders its TemplateResult inside
|
|
695
|
+
the component's shadow root, so an anchor it returns is unreachable from page CSS — and `::part()`
|
|
696
|
+
cannot select past the first compound selector to reach it either. It computed to the UA default
|
|
697
|
+
link blue, the one colour on the page belonging to no design system. Cells now take
|
|
698
|
+
`--lr-table-cell-color`, and a cell anchor takes `--lr-table-cell-link-color` (brand by default)
|
|
699
|
+
plus `--lr-table-cell-link-hover-color`. `:where()` keeps specificity at zero so an inline style on
|
|
700
|
+
the returned anchor still wins, and `revert` hands the UA default back.
|
|
701
|
+
|
|
702
|
+
**`<lr-table>`: `scroll-mode="page"` makes an uncapped table's sticky header work.** `[part="base"]`
|
|
703
|
+
was unconditionally `overflow: auto`, which makes it the sticky containing block for the header
|
|
704
|
+
whether or not anything can scroll in it — so with no `--lr-table-max-height` the header scrolled
|
|
705
|
+
away with the page, and an uncapped page-scrolling table and a pinned header were mutually
|
|
706
|
+
exclusive. That is a real CSS constraint rather than an oversight: a scroll container clips *both*
|
|
707
|
+
axes. The fix is therefore an explicit opt-in, not a changed default, since dropping the overflow
|
|
708
|
+
unconditionally would cost every uncapped wide table its horizontal scrolling.
|
|
709
|
+
|
|
710
|
+
**`<lr-map>`: a guarded `maxBounds`.** Calling `map.setMaxBounds()` through the `.map` escape hatch
|
|
711
|
+
can wedge maplibre-gl at a sub-1 fractional zoom in a wide container: `getZoom()` returns `null`
|
|
712
|
+
permanently, every frame throws from inside the peer's matrix math, and the canvas never paints
|
|
713
|
+
again — a blank map, with nothing thrown at the call site. The property applies the same call, reads
|
|
714
|
+
the camera back, and reverts if it did not survive, so the worst case is an unconstrained map plus a
|
|
715
|
+
dev-mode warning.
|
|
716
|
+
|
|
717
|
+
**`<lr-map>`: property-only choropleth updates no longer re-tile the whole source.** `setData()`
|
|
718
|
+
re-tiles unconditionally, which is invisible on a static map and expensive on an animated one. When
|
|
719
|
+
an update changes only feature properties, the component now emits maplibre-gl's incremental
|
|
720
|
+
`updateData()`. The fast path requires the same feature count, an addressable `id` per feature, and
|
|
721
|
+
geometry that is the *same object* as last time — a deep compare would cost about what the re-tile
|
|
722
|
+
costs, and a false positive would paint stale geometry. Anything else falls back to `setData()`.
|
|
723
|
+
- 10b7d14: `<lr-timeline>`: position items along a real time axis with the new `scale="time"` mode.
|
|
724
|
+
|
|
725
|
+
The timeline was an evenly-spaced sequence in which `timestamp` was rendered as text but never used
|
|
726
|
+
for placement, so a chronology spanning a long period lost the main thing a timeline conveys — two
|
|
727
|
+
events weeks apart and the next decades later all looked equidistant, and the shape of the history
|
|
728
|
+
was invisible.
|
|
729
|
+
|
|
730
|
+
- `scale: 'flow' | 'time' = 'flow'` (type `LyraTimelineScale`, exported from the root barrel).
|
|
731
|
+
`'flow'` is today's layout, unchanged and still the default. `'time'` positions each item at its
|
|
732
|
+
true proportion of the range.
|
|
733
|
+
- `rangeStart` / `rangeEnd` pin the axis instead of deriving it from the earliest and latest items;
|
|
734
|
+
a reversed or non-finite pair falls back to the derived range.
|
|
735
|
+
- `--lr-timeline-time-extent` (default `var(--lr-size-20rem)`) sets the distance to distribute
|
|
736
|
+
along — `block-size` when vertical, `inline-size` when horizontal. Items are absolutely
|
|
737
|
+
positioned, and a percentage against an auto-sized track would resolve to zero.
|
|
738
|
+
- An item with no parseable `timestamp` — including one supplied only through the `timestamp` slot,
|
|
739
|
+
which carries no machine-readable instant — keeps document order and is spread evenly, so a
|
|
740
|
+
partially-timestamped list degrades instead of stacking every unknown at the origin.
|
|
741
|
+
- Positions are written to each child as a private `--_lr-timeline-item-offset` custom property and
|
|
742
|
+
removed again when switching back to `'flow'`, so the component still never alters its children's
|
|
743
|
+
content or structure.
|
|
744
|
+
|
|
745
|
+
Scope note: this covers the request's preferred option. Items sharing an instant overlap rather than
|
|
746
|
+
being fanned into lanes — the denser case (parallel lanes by category, a brushable/zoomable range,
|
|
747
|
+
per-event click events, collision handling) would change this component's deliberately passive,
|
|
748
|
+
zero-event contract, so it belongs in a sibling component with its own design, not here.
|
|
749
|
+
|
|
750
|
+
### Patch Changes
|
|
751
|
+
|
|
752
|
+
- c174d2d: Fix three defects found while auditing test coverage:
|
|
753
|
+
|
|
754
|
+
- `<lr-chat-message>`: with `actions-position="outside"`, the slotted actions row is a sibling of
|
|
755
|
+
the bubble rather than a flex item nested inside the footer, so the footer's role-conditional
|
|
756
|
+
auto-margin alignment became a no-op (a box that already fills its container has no spare space
|
|
757
|
+
for `auto` margins to distribute). A user turn's actions stayed pinned to the inline-start edge
|
|
758
|
+
instead of aligning to the inline-end edge next to its own right-aligned bubble. Now aligned via
|
|
759
|
+
`justify-content` on the actions row itself.
|
|
760
|
+
- `<lr-file-input>`: the dropzone collapsed to its own intrinsic content height instead of filling
|
|
761
|
+
a host given a definite block size (e.g. absolutely positioned with `inset: 0` over a sized
|
|
762
|
+
panel) — none of `[part="form-control"]`, `.dropzone`, or `[part~="base"]` propagated the host's
|
|
763
|
+
height down the chain.
|
|
764
|
+
- `<lr-chart>`: a chart whose row count exceeded the 1,000-record rendering budget but whose series
|
|
765
|
+
count did not got its shared `labels` array correctly sampled down, but each series' own
|
|
766
|
+
`data`/`color`/`pointRadius`/`pointColors`/`segmentColors` arrays stayed at full source length —
|
|
767
|
+
a length mismatch handed straight to Chart.js. Row sampling now applies to every series
|
|
768
|
+
regardless of whether the series dimension itself also needed sampling.
|
|
769
|
+
- bf447ca: `<lr-tooltip>`: close a pointer-held tooltip when a re-render replaces its trigger.
|
|
770
|
+
|
|
771
|
+
A list that re-renders — a chat transcript, a log view, anything virtualized — replaces the `for`
|
|
772
|
+
target with a fresh node rather than moving the existing one. The outgoing element is detached
|
|
773
|
+
before it can fire the `mouseleave` that normally closes a resting tooltip, and the incoming element
|
|
774
|
+
is not necessarily under the pointer. `adoptTrigger()` correctly rebound its listeners to the new
|
|
775
|
+
node but let the tooltip inherit the outgoing node's open state, so the tooltip hung open over a
|
|
776
|
+
trigger nobody was pointing at. Reported live as several resting tooltips visible at once with the
|
|
777
|
+
pointer over none of them, via `<lr-copy-button>`'s default `tooltip="full"`.
|
|
778
|
+
|
|
779
|
+
A trigger swap now re-derives the open state from the incoming element: the tooltip stays open only
|
|
780
|
+
while that element is genuinely held — the pointer resting over it (`:hover`) or focus inside it —
|
|
781
|
+
and closes otherwise. Focus-, click- and `manual`-opened tooltips are untouched, and re-rendering a
|
|
782
|
+
row the pointer still rests on leaves its tooltip alone. Verified on Chromium, Firefox and WebKit.
|
|
783
|
+
|
|
784
|
+
The same report's secondary note about a tooltip being clipped inside a scroll container is existing
|
|
785
|
+
behavior with existing API: pass `hoist` (`<lr-copy-button>` already forwards it to its tooltip) to
|
|
786
|
+
render the popup in the top layer and escape the clipping ancestor.
|
|
787
|
+
|
|
3
788
|
## 9.1.1
|
|
4
789
|
|
|
5
790
|
### Patch Changes
|