ngwr 15.0.1 → 15.2.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/anchor/styles/_index.scss +13 -2
- package/bits/aurora/styles/_rules.scss +11 -0
- package/bits/dot-grid/dot-grid.scss +1 -0
- package/bits/dot-grid/styles/_index.scss +8 -0
- package/bits/dot-grid/styles/_rules.scss +54 -0
- package/bits/iridescence/iridescence.scss +1 -0
- package/bits/iridescence/styles/_index.scss +8 -0
- package/bits/iridescence/styles/_rules.scss +72 -0
- package/bits/marquee/styles/_rules.scss +7 -3
- package/bits/ripple-grid/ripple-grid.scss +1 -0
- package/bits/ripple-grid/styles/_index.scss +8 -0
- package/bits/ripple-grid/styles/_rules.scss +63 -0
- package/bits/spotlight-card/styles/_rules.scss +7 -4
- package/bits/star-border/styles/_rules.scss +5 -2
- package/bits/threads/styles/_index.scss +8 -0
- package/bits/threads/styles/_rules.scss +76 -0
- package/bits/threads/threads.scss +1 -0
- package/bits/waves/styles/_rules.scss +8 -1
- package/charts/bar-chart/styles/_index.scss +607 -7
- package/charts/boxplot-chart/styles/_index.scss +297 -0
- package/charts/bullet-chart/styles/_index.scss +268 -0
- package/charts/calendar-heatmap/styles/_index.scss +25 -3
- package/charts/candlestick-chart/styles/_index.scss +307 -0
- package/charts/chart-legend/styles/_index.scss +143 -0
- package/charts/core/styles/_index.scss +30 -0
- package/charts/donut-chart/styles/_index.scss +39 -3
- package/charts/funnel-chart/styles/_index.scss +237 -0
- package/charts/gauge/styles/_index.scss +4 -2
- package/charts/heatmap-chart/styles/_index.scss +329 -0
- package/charts/line-chart/styles/_index.scss +141 -8
- package/charts/meter-group/styles/_index.scss +44 -13
- package/charts/radar-chart/styles/_index.scss +206 -0
- package/charts/scatter-chart/styles/_index.scss +245 -0
- package/charts/sparkline/styles/_index.scss +10 -1
- package/charts/treemap-chart/styles/_index.scss +215 -0
- package/charts/waterfall-chart/styles/_index.scss +321 -0
- package/collapse/styles/_index.scss +6 -1
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bits-aurora.mjs +30 -38
- package/fesm2022/ngwr-bits-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-bits-blur-text.mjs +3 -3
- package/fesm2022/ngwr-bits-border-glow-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-border-glow.mjs +11 -5
- package/fesm2022/ngwr-bits-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-bits-circular-text.mjs +3 -3
- package/fesm2022/ngwr-bits-click-spark.mjs +3 -3
- package/fesm2022/ngwr-bits-confetti.mjs +3 -3
- package/fesm2022/ngwr-bits-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-bits-dot-grid-testing.mjs +40 -0
- package/fesm2022/ngwr-bits-dot-grid-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-dot-grid.mjs +482 -0
- package/fesm2022/ngwr-bits-dot-grid.mjs.map +1 -0
- package/fesm2022/ngwr-bits-falling-text.mjs +3 -3
- package/fesm2022/ngwr-bits-fuzzy-text.mjs +3 -3
- package/fesm2022/ngwr-bits-glitch-text.mjs +3 -3
- package/fesm2022/ngwr-bits-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-bits-iridescence-testing.mjs +31 -0
- package/fesm2022/ngwr-bits-iridescence-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-iridescence.mjs +591 -0
- package/fesm2022/ngwr-bits-iridescence.mjs.map +1 -0
- package/fesm2022/ngwr-bits-marquee-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-marquee-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-marquee.mjs +7 -7
- package/fesm2022/ngwr-bits-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-bits-ripple-grid-testing.mjs +40 -0
- package/fesm2022/ngwr-bits-ripple-grid-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-ripple-grid.mjs +805 -0
- package/fesm2022/ngwr-bits-ripple-grid.mjs.map +1 -0
- package/fesm2022/ngwr-bits-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-bits-shiny-text.mjs +6 -6
- package/fesm2022/ngwr-bits-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-bits-split-text.mjs +3 -3
- package/fesm2022/ngwr-bits-spotlight-card-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-spotlight-card-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-spotlight-card.mjs +10 -10
- package/fesm2022/ngwr-bits-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-bits-star-border-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-star-border-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-star-border.mjs +7 -7
- package/fesm2022/ngwr-bits-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-bits-threads-testing.mjs +41 -0
- package/fesm2022/ngwr-bits-threads-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-threads.mjs +482 -0
- package/fesm2022/ngwr-bits-threads.mjs.map +1 -0
- package/fesm2022/ngwr-bits-tilt-card.mjs +6 -6
- package/fesm2022/ngwr-bits-typewriter.mjs +3 -3
- package/fesm2022/ngwr-bits-waves-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-waves.mjs +60 -41
- package/fesm2022/ngwr-bits-waves.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +8 -8
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar.mjs +3 -3
- package/fesm2022/ngwr-card.mjs +9 -9
- package/fesm2022/ngwr-carousel.mjs +6 -6
- package/fesm2022/ngwr-cascader.mjs +5 -5
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-charts-bar-chart-testing.mjs +127 -3
- package/fesm2022/ngwr-charts-bar-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-bar-chart.mjs +683 -49
- package/fesm2022/ngwr-charts-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs +161 -0
- package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-boxplot-chart.mjs +517 -0
- package/fesm2022/ngwr-charts-boxplot-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-bullet-chart-testing.mjs +68 -0
- package/fesm2022/ngwr-charts-bullet-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-bullet-chart.mjs +459 -0
- package/fesm2022/ngwr-charts-bullet-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs +27 -0
- package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-calendar-heatmap.mjs +96 -17
- package/fesm2022/ngwr-charts-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs +107 -0
- package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-candlestick-chart.mjs +508 -0
- package/fesm2022/ngwr-charts-candlestick-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-chart-legend-testing.mjs +126 -0
- package/fesm2022/ngwr-charts-chart-legend-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-chart-legend.mjs +251 -0
- package/fesm2022/ngwr-charts-chart-legend.mjs.map +1 -0
- package/fesm2022/ngwr-charts-core.mjs +383 -0
- package/fesm2022/ngwr-charts-core.mjs.map +1 -0
- package/fesm2022/ngwr-charts-donut-chart-testing.mjs +10 -1
- package/fesm2022/ngwr-charts-donut-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-donut-chart.mjs +187 -31
- package/fesm2022/ngwr-charts-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-funnel-chart-testing.mjs +100 -0
- package/fesm2022/ngwr-charts-funnel-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-funnel-chart.mjs +415 -0
- package/fesm2022/ngwr-charts-funnel-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-gauge-testing.mjs +9 -3
- package/fesm2022/ngwr-charts-gauge-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-gauge.mjs +9 -15
- package/fesm2022/ngwr-charts-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs +120 -0
- package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-heatmap-chart.mjs +519 -0
- package/fesm2022/ngwr-charts-heatmap-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-line-chart-testing.mjs +43 -1
- package/fesm2022/ngwr-charts-line-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-line-chart.mjs +436 -122
- package/fesm2022/ngwr-charts-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-meter-group-testing.mjs +14 -2
- package/fesm2022/ngwr-charts-meter-group-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-meter-group.mjs +101 -32
- package/fesm2022/ngwr-charts-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-charts-radar-chart-testing.mjs +98 -0
- package/fesm2022/ngwr-charts-radar-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-radar-chart.mjs +720 -0
- package/fesm2022/ngwr-charts-radar-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-scatter-chart-testing.mjs +132 -0
- package/fesm2022/ngwr-charts-scatter-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-scatter-chart.mjs +545 -0
- package/fesm2022/ngwr-charts-scatter-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-sparkline-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-sparkline.mjs +14 -16
- package/fesm2022/ngwr-charts-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-charts-treemap-chart-testing.mjs +103 -0
- package/fesm2022/ngwr-charts-treemap-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-treemap-chart.mjs +535 -0
- package/fesm2022/ngwr-charts-treemap-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs +131 -0
- package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-waterfall-chart.mjs +462 -0
- package/fesm2022/ngwr-charts-waterfall-chart.mjs.map +1 -0
- package/fesm2022/ngwr-checkbox.mjs +6 -6
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker.mjs +6 -6
- package/fesm2022/ngwr-command-palette.mjs +3 -3
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-context-menu.mjs +12 -12
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +6 -6
- package/fesm2022/ngwr-date-picker.mjs +21 -21
- package/fesm2022/ngwr-date.mjs +6 -6
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-drawer.mjs +18 -18
- package/fesm2022/ngwr-dropdown.mjs +9 -9
- package/fesm2022/ngwr-editor.mjs +3 -3
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar.mjs +6 -6
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form.mjs +9 -9
- package/fesm2022/ngwr-graph.mjs +6 -6
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-i18n-ar.mjs +90 -4
- package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-cs.mjs +90 -4
- package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-de.mjs +90 -4
- package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +90 -4
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-es.mjs +90 -4
- package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-fr.mjs +90 -4
- package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-he.mjs +90 -4
- package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-hi.mjs +90 -4
- package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-id.mjs +90 -4
- package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-it.mjs +90 -4
- package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ja.mjs +90 -4
- package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ko.mjs +90 -4
- package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-nl.mjs +90 -4
- package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pl.mjs +90 -4
- package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pt.mjs +90 -4
- package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +90 -4
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-sv.mjs +90 -4
- package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-tr.mjs +90 -4
- package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-uk.mjs +90 -4
- package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-vi.mjs +90 -4
- package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh-tw.mjs +90 -4
- package/fesm2022/ngwr-i18n-zh-tw.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh.mjs +90 -4
- package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-input-number.mjs +3 -3
- package/fesm2022/ngwr-input-otp.mjs +3 -3
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +5 -5
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +8 -8
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +6 -6
- package/fesm2022/ngwr-mention.mjs +6 -6
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-overlay.mjs +6 -6
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination.mjs +3 -3
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +6 -6
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover.mjs +43 -20
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +4 -3
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating.mjs +3 -3
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-schema-form.mjs +3 -3
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs +3 -3
- package/fesm2022/ngwr-select.mjs +12 -12
- package/fesm2022/ngwr-sidebar.mjs +3 -3
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +3 -3
- package/fesm2022/ngwr-sortable-list.mjs +11 -11
- package/fesm2022/ngwr-sortable-list.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +3 -3
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-statistic.mjs +9 -9
- package/fesm2022/ngwr-stepper.mjs +6 -6
- package/fesm2022/ngwr-storage.mjs +3 -3
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-table.mjs +18 -18
- package/fesm2022/ngwr-tabs-router.mjs +3 -3
- package/fesm2022/ngwr-tabs.mjs +6 -6
- package/fesm2022/ngwr-textarea.mjs +3 -3
- package/fesm2022/ngwr-theme.mjs +3 -3
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast-testing.mjs +2 -1
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
- package/fesm2022/ngwr-toast.mjs +34 -15
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour.mjs +6 -6
- package/fesm2022/ngwr-transfer.mjs +3 -3
- package/fesm2022/ngwr-tree.mjs +3 -3
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-utils.mjs +31 -1
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
- package/fesm2022/ngwr-window-testing.mjs +61 -5
- package/fesm2022/ngwr-window-testing.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +1538 -895
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/fesm2022/ngwr.mjs.map +1 -1
- package/i18n/ar.json +84 -4
- package/i18n/cs.json +84 -4
- package/i18n/de.json +84 -4
- package/i18n/en.json +84 -4
- package/i18n/es.json +84 -4
- package/i18n/fr.json +84 -4
- package/i18n/he.json +84 -4
- package/i18n/hi.json +84 -4
- package/i18n/id.json +84 -4
- package/i18n/it.json +84 -4
- package/i18n/ja.json +84 -4
- package/i18n/ko.json +84 -4
- package/i18n/nl.json +84 -4
- package/i18n/pl.json +84 -4
- package/i18n/pt.json +84 -4
- package/i18n/ru.json +84 -4
- package/i18n/sv.json +84 -4
- package/i18n/tr.json +84 -4
- package/i18n/uk.json +84 -4
- package/i18n/vi.json +84 -4
- package/i18n/zh-TW.json +84 -4
- package/i18n/zh.json +84 -4
- package/llms-full.txt +266 -9
- package/llms.txt +30 -7
- package/mcp/api.js +69 -1
- package/mcp/catalog.js +10 -1
- package/mcp/server.js +15 -1
- package/mcp/tools.js +122 -26
- package/package.json +132 -1
- package/popover/styles/_index.scss +75 -7
- package/schematics/component-style/index.js +3 -0
- package/schematics/migrations/v15/index.js +3 -26
- package/schematics/ng-add/index.js +2 -2
- package/schematics/use/symbol-map.json +14 -0
- package/schematics/utility/global-styles.js +19 -4
- package/schematics/utility/v15-moves.js +55 -0
- package/skills/ngwr/SKILL.md +8 -2
- package/skills/ngwr/references/catalog.md +28 -0
- package/skills/ngwr/references/setup.md +5 -4
- package/theme/styles/_focus.scss +8 -0
- package/toast/styles/_index.scss +103 -12
- package/types/ngwr-bits-aurora.d.ts +11 -0
- package/types/ngwr-bits-border-glow-testing.d.ts +5 -6
- package/types/ngwr-bits-border-glow.d.ts +5 -1
- package/types/ngwr-bits-dot-grid-testing.d.ts +92 -0
- package/types/ngwr-bits-dot-grid.d.ts +158 -0
- package/types/ngwr-bits-iridescence-testing.d.ts +85 -0
- package/types/ngwr-bits-iridescence.d.ts +244 -0
- package/types/ngwr-bits-ripple-grid-testing.d.ts +96 -0
- package/types/ngwr-bits-ripple-grid.d.ts +294 -0
- package/types/ngwr-bits-splash-cursor.d.ts +0 -1
- package/types/ngwr-bits-spotlight-card-testing.d.ts +3 -1
- package/types/ngwr-bits-star-border-testing.d.ts +7 -7
- package/types/ngwr-bits-threads-testing.d.ts +97 -0
- package/types/ngwr-bits-threads.d.ts +216 -0
- package/types/ngwr-bits-waves-testing.d.ts +1 -1
- package/types/ngwr-bits-waves.d.ts +20 -3
- package/types/ngwr-charts-bar-chart-testing.d.ts +193 -14
- package/types/ngwr-charts-bar-chart.d.ts +546 -38
- package/types/ngwr-charts-boxplot-chart-testing.d.ts +165 -0
- package/types/ngwr-charts-boxplot-chart.d.ts +308 -0
- package/types/ngwr-charts-bullet-chart-testing.d.ts +99 -0
- package/types/ngwr-charts-bullet-chart.d.ts +262 -0
- package/types/ngwr-charts-calendar-heatmap-testing.d.ts +32 -1
- package/types/ngwr-charts-calendar-heatmap.d.ts +55 -6
- package/types/ngwr-charts-candlestick-chart-testing.d.ts +135 -0
- package/types/ngwr-charts-candlestick-chart.d.ts +361 -0
- package/types/ngwr-charts-chart-legend-testing.d.ts +84 -0
- package/types/ngwr-charts-chart-legend.d.ts +178 -0
- package/types/ngwr-charts-core.d.ts +391 -0
- package/types/ngwr-charts-donut-chart-testing.d.ts +28 -5
- package/types/ngwr-charts-donut-chart.d.ts +124 -12
- package/types/ngwr-charts-funnel-chart-testing.d.ts +130 -0
- package/types/ngwr-charts-funnel-chart.d.ts +296 -0
- package/types/ngwr-charts-gauge-testing.d.ts +5 -0
- package/types/ngwr-charts-gauge.d.ts +6 -4
- package/types/ngwr-charts-heatmap-chart-testing.d.ts +148 -0
- package/types/ngwr-charts-heatmap-chart.d.ts +359 -0
- package/types/ngwr-charts-line-chart-testing.d.ts +72 -11
- package/types/ngwr-charts-line-chart.d.ts +291 -67
- package/types/ngwr-charts-meter-group-testing.d.ts +16 -2
- package/types/ngwr-charts-meter-group.d.ts +71 -11
- package/types/ngwr-charts-radar-chart-testing.d.ts +162 -0
- package/types/ngwr-charts-radar-chart.d.ts +461 -0
- package/types/ngwr-charts-scatter-chart-testing.d.ts +147 -0
- package/types/ngwr-charts-scatter-chart.d.ts +396 -0
- package/types/ngwr-charts-sparkline-testing.d.ts +4 -1
- package/types/ngwr-charts-sparkline.d.ts +8 -6
- package/types/ngwr-charts-treemap-chart-testing.d.ts +131 -0
- package/types/ngwr-charts-treemap-chart.d.ts +295 -0
- package/types/ngwr-charts-waterfall-chart-testing.d.ts +149 -0
- package/types/ngwr-charts-waterfall-chart.d.ts +338 -0
- package/types/ngwr-color-picker.d.ts +0 -21
- package/types/ngwr-dropdown.d.ts +0 -52
- package/types/ngwr-editor.d.ts +2 -84
- package/types/ngwr-i18n.d.ts +0 -15
- package/types/ngwr-mention.d.ts +0 -13
- package/types/ngwr-popconfirm.d.ts +0 -33
- package/types/ngwr-popover.d.ts +29 -53
- package/types/ngwr-toast-testing.d.ts +6 -1
- package/types/ngwr-tour.d.ts +0 -2
- package/types/ngwr-utils.d.ts +49 -7
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-window-testing.d.ts +65 -7
- package/types/ngwr-window.d.ts +831 -207
- package/types/ngwr.d.ts +1 -0
- package/window/styles/_index.scss +528 -82
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
@use '../../theme/styles' as theme;
|
|
2
2
|
|
|
3
|
+
// Styles for the entry points this component's own markup renders.
|
|
4
|
+
//
|
|
5
|
+
// v15 removed the `@use 'ngwr'` umbrella, which is what had been covering these:
|
|
6
|
+
// a consumer now writes one `@use` per component they place, and never learns
|
|
7
|
+
// about the ones a component places INSIDE itself. `@use 'ngwr/date-picker'`
|
|
8
|
+
// alone gave a date field with a raw browser input — grey, square, 2px inset —
|
|
9
|
+
// and `@use 'ngwr/table'` a table with unstyled checkboxes and pager. Nothing
|
|
10
|
+
// says so: the component renders, the markup is right, and no build, console or
|
|
11
|
+
// gate has an opinion about a missing rule.
|
|
12
|
+
//
|
|
13
|
+
// Sass deduplicates `@use` within a compilation, so an app that also loads one of
|
|
14
|
+
// these by hand still emits it once.
|
|
15
|
+
@use '../../dropdown/styles' as dropdown-styles; // WrDropdown
|
|
16
|
+
|
|
3
17
|
/// Two-corner variant of `theme.smooth-br`. The host no longer clips at its own
|
|
4
18
|
/// rounded edge (it has to let the resize grips out), so the chrome and the
|
|
5
19
|
/// status bar each have to round the pair of corners they sit in or their square
|
|
@@ -16,14 +30,37 @@
|
|
|
16
30
|
}
|
|
17
31
|
}
|
|
18
32
|
|
|
33
|
+
/// One corner of the same arithmetic, for the Windows close button, which sits
|
|
34
|
+
/// in the frame's top end corner and has to follow its curve.
|
|
35
|
+
@mixin _corner($corner, $br) {
|
|
36
|
+
#{$corner}: $br;
|
|
37
|
+
|
|
38
|
+
@supports (corner-shape: squircle) {
|
|
39
|
+
corner-shape: squircle;
|
|
40
|
+
#{$corner}: calc(#{$br} * 1.85);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
19
44
|
.wr-window {
|
|
20
45
|
--wr-window-bg: var(--wr-color-surface);
|
|
21
46
|
--wr-window-border: var(--wr-border-base);
|
|
22
47
|
--wr-window-chrome-bg: var(--wr-color-hover);
|
|
23
48
|
--wr-window-chrome-color: var(--wr-color-on-surface);
|
|
49
|
+
// An inactive window's title bar, the way every desktop dims the windows that
|
|
50
|
+
// do not have the keyboard. Muted text on the faintest fill still reads at
|
|
51
|
+
// 7:1 in both schemes.
|
|
52
|
+
--wr-window-chrome-inactive-bg: var(--wr-color-fill-subtle);
|
|
53
|
+
--wr-window-chrome-inactive-color: var(--wr-color-on-surface-muted);
|
|
24
54
|
--wr-window-radius: var(--wr-border-radius-base);
|
|
25
55
|
--wr-window-handle-size: 8px;
|
|
26
56
|
--wr-window-handle-corner: 14px;
|
|
57
|
+
|
|
58
|
+
// A finger needs more than a cursor: 16px edges and 24px corners, still all
|
|
59
|
+
// outside the frame, so they cover nothing of the window's own.
|
|
60
|
+
@media (pointer: coarse) {
|
|
61
|
+
--wr-window-handle-size: 16px;
|
|
62
|
+
--wr-window-handle-corner: 24px;
|
|
63
|
+
}
|
|
27
64
|
--wr-window-chrome-height: 2.25rem;
|
|
28
65
|
--wr-window-title-size: var(--wr-text-sm);
|
|
29
66
|
--wr-window-action-size: 1.5rem;
|
|
@@ -74,6 +111,19 @@
|
|
|
74
111
|
var(--wr-shadow-modal);
|
|
75
112
|
}
|
|
76
113
|
|
|
114
|
+
// Keyboard move / resize: a dashed ring says the arrow keys now move or size
|
|
115
|
+
// the window rather than whatever was focused in it.
|
|
116
|
+
&--keyboard-moving,
|
|
117
|
+
&--keyboard-resizing,
|
|
118
|
+
&--keyboard-moving:focus-visible,
|
|
119
|
+
&--keyboard-resizing:focus-visible {
|
|
120
|
+
outline: var(--wr-focus-ring-width) dashed var(--wr-focus-ring-color);
|
|
121
|
+
outline-offset: var(--wr-focus-ring-offset);
|
|
122
|
+
}
|
|
123
|
+
&--keyboard-moving .wr-window__chrome {
|
|
124
|
+
cursor: move;
|
|
125
|
+
}
|
|
126
|
+
|
|
77
127
|
// Squares the host AND the two bars that now round their own corners
|
|
78
128
|
// (see `&__chrome` / `&__status-bar`) — one variable instead of three rules.
|
|
79
129
|
&--maximized {
|
|
@@ -93,8 +143,14 @@
|
|
|
93
143
|
--wr-window-action-size: 1.125rem;
|
|
94
144
|
}
|
|
95
145
|
|
|
146
|
+
// The window's OWN motion only: the frame, the chrome and the grips. A
|
|
147
|
+
// universal selector here used to switch off every animation in the body as
|
|
148
|
+
// well — a spinner stopped, a switch stopped sliding — for an option that
|
|
149
|
+
// is about the window.
|
|
96
150
|
&--no-anim,
|
|
97
|
-
&--no-anim
|
|
151
|
+
&--no-anim .wr-window__chrome,
|
|
152
|
+
&--no-anim .wr-window__chrome *,
|
|
153
|
+
&--no-anim .wr-window__handle {
|
|
98
154
|
animation: none !important;
|
|
99
155
|
transition: none !important;
|
|
100
156
|
}
|
|
@@ -116,16 +172,44 @@
|
|
|
116
172
|
padding-block: 0;
|
|
117
173
|
// Roomy where the title starts, tight where the action cluster ends.
|
|
118
174
|
padding-inline: var(--wr-window-chrome-padding-inline-start) var(--wr-window-chrome-padding-inline-end);
|
|
175
|
+
position: relative;
|
|
119
176
|
background: var(--wr-window-chrome-bg);
|
|
120
177
|
color: var(--wr-window-chrome-color);
|
|
121
178
|
cursor: grab;
|
|
122
|
-
border-bottom: 1px solid var(--wr-window-border);
|
|
123
179
|
@include _corner-pair(border-start-start-radius, border-start-end-radius, var(--wr-window-radius));
|
|
124
180
|
touch-action: none;
|
|
125
181
|
|
|
126
182
|
&:active {
|
|
127
183
|
cursor: grabbing;
|
|
128
184
|
}
|
|
185
|
+
|
|
186
|
+
// The line under the bar is drawn ON TOP of the bar's contents rather than
|
|
187
|
+
// as its border. The caption buttons fill the bar's whole height, so every
|
|
188
|
+
// box in a 36px bar lands on a whole pixel, and a hovered button's fill no
|
|
189
|
+
// longer cuts the line short beneath it. A border, not a background, so
|
|
190
|
+
// forced colours keep it.
|
|
191
|
+
&::after {
|
|
192
|
+
content: '';
|
|
193
|
+
position: absolute;
|
|
194
|
+
inset-inline: 0;
|
|
195
|
+
inset-block-end: 0;
|
|
196
|
+
block-size: 0;
|
|
197
|
+
border-block-end: 1px solid var(--wr-window-border);
|
|
198
|
+
pointer-events: none;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
&--inactive &__chrome {
|
|
203
|
+
--wr-window-chrome-bg: var(--wr-window-chrome-inactive-bg);
|
|
204
|
+
--wr-window-chrome-color: var(--wr-window-chrome-inactive-color);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// The caption glyphs dim with the title; a hovered button wakes up, as on
|
|
208
|
+
// Windows and GNOME. Not on macOS, where each light keeps its own dark glyph:
|
|
209
|
+
// the lights go grey instead (see the preset), and a hover over the cluster
|
|
210
|
+
// brings back every light and every glyph at once.
|
|
211
|
+
&--inactive:not(.wr-window--os-macos) &__chrome-action:not(:hover) {
|
|
212
|
+
--wr-window-chrome-action-color: var(--wr-window-chrome-inactive-color);
|
|
129
213
|
}
|
|
130
214
|
|
|
131
215
|
&__title {
|
|
@@ -167,109 +251,370 @@
|
|
|
167
251
|
flex: 0 0 auto;
|
|
168
252
|
display: inline-flex;
|
|
169
253
|
align-items: center;
|
|
254
|
+
// The cluster spans the bar's whole height, which has no border of its own
|
|
255
|
+
// (the line under it is the bar's `::after`), so a 24px button centres on a
|
|
256
|
+
// whole pixel and the glyphs inside it stay sharp at 1x.
|
|
257
|
+
align-self: stretch;
|
|
170
258
|
gap: var(--wr-window-chrome-actions-gap);
|
|
171
259
|
padding-inline-start: var(--wr-window-chrome-actions-padding-inline-start);
|
|
172
260
|
}
|
|
173
261
|
|
|
262
|
+
// The caption buttons. Every colour is a hook, and each OS preset below
|
|
263
|
+
// re-declares the ones its platform paints differently: Windows a flat
|
|
264
|
+
// full-height strip with a red close, GNOME tinted circles, macOS the
|
|
265
|
+
// traffic lights.
|
|
174
266
|
&__chrome-action {
|
|
175
267
|
--wr-window-chrome-action-radius: var(--wr-border-radius-sm);
|
|
268
|
+
--wr-window-chrome-action-width: var(--wr-window-action-size);
|
|
269
|
+
--wr-window-chrome-action-color: var(--wr-color-on-surface);
|
|
270
|
+
--wr-window-chrome-action-bg: transparent;
|
|
271
|
+
--wr-window-chrome-action-hover-bg: color-mix(in srgb, var(--wr-color-on-surface) 6%, transparent);
|
|
272
|
+
--wr-window-chrome-action-active-color: var(--wr-color-on-surface-muted);
|
|
273
|
+
--wr-window-chrome-action-active-bg: color-mix(in srgb, var(--wr-color-on-surface) 4%, transparent);
|
|
274
|
+
--wr-window-chrome-action-close-hover-color: var(--wr-color-danger-contrast);
|
|
275
|
+
--wr-window-chrome-action-close-hover-bg: var(--wr-color-danger);
|
|
276
|
+
--wr-window-chrome-action-close-active-bg: color-mix(in srgb, var(--wr-color-danger) 90%, transparent);
|
|
176
277
|
|
|
278
|
+
position: relative;
|
|
279
|
+
flex: 0 0 auto;
|
|
177
280
|
appearance: none;
|
|
178
|
-
background: transparent;
|
|
179
281
|
border: 0;
|
|
180
282
|
padding: 0;
|
|
181
|
-
width: var(--wr-window-action-
|
|
283
|
+
width: var(--wr-window-chrome-action-width);
|
|
182
284
|
height: var(--wr-window-action-size);
|
|
183
285
|
display: inline-flex;
|
|
184
286
|
align-items: center;
|
|
185
287
|
justify-content: center;
|
|
186
|
-
color: var(--wr-
|
|
288
|
+
color: var(--wr-window-chrome-action-color);
|
|
289
|
+
background: var(--wr-window-chrome-action-bg);
|
|
187
290
|
cursor: pointer;
|
|
188
291
|
border-radius: var(--wr-window-chrome-action-radius);
|
|
189
292
|
transition:
|
|
190
293
|
color var(--wr-transition-base),
|
|
191
|
-
background var(--wr-transition-base);
|
|
294
|
+
background-color var(--wr-transition-base);
|
|
192
295
|
|
|
193
296
|
&:hover {
|
|
194
|
-
|
|
195
|
-
|
|
297
|
+
background: var(--wr-window-chrome-action-hover-bg);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
&:active {
|
|
301
|
+
color: var(--wr-window-chrome-action-active-color);
|
|
302
|
+
background: var(--wr-window-chrome-action-active-bg);
|
|
196
303
|
}
|
|
197
304
|
|
|
198
305
|
&--close:hover {
|
|
199
|
-
color: var(--wr-color
|
|
200
|
-
background: var(--wr-
|
|
306
|
+
color: var(--wr-window-chrome-action-close-hover-color);
|
|
307
|
+
background: var(--wr-window-chrome-action-close-hover-bg);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
&--close:active {
|
|
311
|
+
color: var(--wr-window-chrome-action-close-hover-color);
|
|
312
|
+
background: var(--wr-window-chrome-action-close-active-bg);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Each OS draws its glyph on its own grid (10px Windows, 16px GNOME, 8px
|
|
317
|
+
// macOS) and the button centres it; the size is set per preset below, in rem
|
|
318
|
+
// so it scales with the text, which at the default root size is the whole
|
|
319
|
+
// pixel the glyph was drawn for.
|
|
320
|
+
&__chrome-action-glyph {
|
|
321
|
+
position: relative;
|
|
322
|
+
flex: 0 0 auto;
|
|
323
|
+
display: block;
|
|
324
|
+
pointer-events: none;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// OS preset: Windows 11 — caption buttons 46px wide and as tall as the bar,
|
|
328
|
+
// flush with the frame, with 10px glyphs; a subtle tint
|
|
329
|
+
// on hover and the platform's red behind close.
|
|
330
|
+
//
|
|
331
|
+
// RTL: Windows mirrors the whole title bar in a right-to-left UI, close
|
|
332
|
+
// included, so the strip follows `dir` like every other flex row here.
|
|
333
|
+
&--os-windows {
|
|
334
|
+
.wr-window__chrome {
|
|
335
|
+
--wr-window-chrome-padding-inline-end: 0;
|
|
336
|
+
}
|
|
337
|
+
.wr-window__chrome-actions {
|
|
338
|
+
--wr-window-chrome-actions-gap: 0;
|
|
339
|
+
}
|
|
340
|
+
.wr-window__chrome-action {
|
|
341
|
+
--wr-window-chrome-action-radius: 0;
|
|
342
|
+
--wr-window-chrome-action-width: 2.875rem;
|
|
343
|
+
// Windows 11's own close colours: #c42b1c behind a white glyph, 90% of it
|
|
344
|
+
// when pressed. A platform colour, like the traffic lights, not an intent.
|
|
345
|
+
--wr-window-chrome-action-close-hover-color: #fff;
|
|
346
|
+
--wr-window-chrome-action-close-hover-bg: #c42b1c;
|
|
347
|
+
--wr-window-chrome-action-close-active-bg: color-mix(in srgb, #c42b1c 90%, transparent);
|
|
348
|
+
|
|
349
|
+
align-self: stretch;
|
|
350
|
+
height: auto;
|
|
351
|
+
|
|
352
|
+
// Inset: the strip runs flush to the frame, and to the viewport edge when
|
|
353
|
+
// the window is maximized, where an outset ring would be cut off. The
|
|
354
|
+
// halo moves inside with it, still under the outline.
|
|
355
|
+
// Lifted over the line under the bar, which would otherwise cover the
|
|
356
|
+
// ring's bottom edge.
|
|
357
|
+
&:focus-visible {
|
|
358
|
+
z-index: 1;
|
|
359
|
+
outline-offset: calc(var(--wr-focus-ring-width) * -1);
|
|
360
|
+
box-shadow: inset 0 0 0 calc(var(--wr-focus-ring-width) + var(--wr-focus-ring-offset)) var(--wr-focus-ring-halo);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Close sits in the frame's corner, so its red follows the frame's curve.
|
|
364
|
+
.wr-window__chrome-action--close {
|
|
365
|
+
@include _corner(border-start-end-radius, var(--wr-window-radius));
|
|
366
|
+
}
|
|
367
|
+
.wr-window__chrome-action-glyph {
|
|
368
|
+
width: 0.625rem;
|
|
369
|
+
height: 0.625rem;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
&.wr-window--chrome-sm .wr-window__chrome-action {
|
|
373
|
+
--wr-window-chrome-action-width: 2.25rem;
|
|
201
374
|
}
|
|
202
375
|
}
|
|
203
376
|
|
|
204
|
-
// OS preset: macOS — traffic
|
|
205
|
-
//
|
|
377
|
+
// OS preset: macOS — traffic lights (close red, minimize yellow, zoom green)
|
|
378
|
+
// at the start of the bar, glyphs on hover.
|
|
206
379
|
//
|
|
207
|
-
//
|
|
208
|
-
//
|
|
380
|
+
// The button is a 28px hit target and the dot is its `::before`: 16px dots
|
|
381
|
+
// 28px apart hold macOS's own 12px dot to its 28px title bar, scaled to this
|
|
382
|
+
// 36px one, and the light a pointer has to land on is a third larger than
|
|
383
|
+
// macOS draws it. The compact bar keeps 24px targets with 14px dots in them.
|
|
384
|
+
// Both clear WCAG 2.5.8, which the original 14px buttons did not.
|
|
385
|
+
//
|
|
386
|
+
// RTL: macOS mirrors its window chrome in a right-to-left UI, so the lights
|
|
387
|
+
// move to the other edge with close still outermost. `row-reverse` resolves
|
|
388
|
+
// against `dir`, which is what does it.
|
|
209
389
|
&--os-macos {
|
|
390
|
+
--wr-window-action-size: 1.75rem;
|
|
391
|
+
|
|
210
392
|
.wr-window__chrome {
|
|
393
|
+
// The close dot's centre is as far from the side of the frame as from its
|
|
394
|
+
// top, which is where macOS puts it.
|
|
395
|
+
--wr-window-chrome-padding-inline-start: calc(
|
|
396
|
+
(var(--wr-window-chrome-height) - var(--wr-window-action-size)) / 2
|
|
397
|
+
);
|
|
398
|
+
|
|
211
399
|
flex-direction: row-reverse;
|
|
212
400
|
}
|
|
213
401
|
.wr-window__title {
|
|
214
402
|
text-align: center;
|
|
215
403
|
// Counterbalance the cluster, which `row-reverse` parks on the opposite
|
|
216
|
-
// edge
|
|
217
|
-
//
|
|
218
|
-
|
|
404
|
+
// edge, so the title centres on the whole bar rather than on what is left.
|
|
405
|
+
// The template writes how many lights it drew: a window without minimize
|
|
406
|
+
// has a two-light cluster, and three lights' worth put its title 12px off.
|
|
407
|
+
padding-inline-end: calc(
|
|
408
|
+
var(--wr-window-chrome-padding-inline-start) + var(--wr-window-chrome-action-count, 3) *
|
|
409
|
+
var(--wr-window-action-size) - var(--wr-window-chrome-padding-inline-end)
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
// `row-reverse` puts the slot between the lights and the title, so its gap
|
|
413
|
+
// goes on the lights' side: on the inline end it sat between the badge and
|
|
414
|
+
// the title and left the badge touching the zoom light.
|
|
415
|
+
.wr-window__title-extra {
|
|
416
|
+
padding-inline-start: var(--wr-window-title-extra-padding-inline-end);
|
|
417
|
+
padding-inline-end: 0;
|
|
219
418
|
}
|
|
220
419
|
.wr-window__chrome-actions {
|
|
221
|
-
--wr-window-chrome-actions-gap:
|
|
222
|
-
|
|
223
|
-
--wr-window-chrome-actions-padding-inline-start: var(--wr-space-sm);
|
|
420
|
+
--wr-window-chrome-actions-gap: 0;
|
|
421
|
+
--wr-window-chrome-actions-padding-inline-start: 0;
|
|
224
422
|
}
|
|
225
423
|
.wr-window__chrome-action {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
424
|
+
--wr-window-traffic-light-size: 1rem;
|
|
425
|
+
// A tint of the text colour rather than a fill token: the fills sit a
|
|
426
|
+
// step from the bar in the dark scheme, which left the grey lights all
|
|
427
|
+
// but invisible there.
|
|
428
|
+
--wr-window-traffic-light-inactive-bg: color-mix(in srgb, var(--wr-color-on-surface) 22%, transparent);
|
|
429
|
+
--wr-window-chrome-action-radius: 50%;
|
|
430
|
+
--wr-window-chrome-action-color: var(--wr-window-traffic-light-color);
|
|
431
|
+
--wr-window-chrome-action-hover-bg: transparent;
|
|
432
|
+
--wr-window-chrome-action-active-color: var(--wr-window-traffic-light-color);
|
|
433
|
+
--wr-window-chrome-action-active-bg: transparent;
|
|
434
|
+
--wr-window-chrome-action-close-hover-color: var(--wr-window-traffic-light-color);
|
|
435
|
+
--wr-window-chrome-action-close-hover-bg: transparent;
|
|
436
|
+
--wr-window-chrome-action-close-active-bg: transparent;
|
|
437
|
+
|
|
438
|
+
&::before {
|
|
439
|
+
content: '';
|
|
440
|
+
position: absolute;
|
|
441
|
+
inset: 0;
|
|
442
|
+
margin: auto;
|
|
443
|
+
width: var(--wr-window-traffic-light-size);
|
|
444
|
+
height: var(--wr-window-traffic-light-size);
|
|
445
|
+
border-radius: 50%;
|
|
446
|
+
background: var(--wr-window-traffic-light-bg);
|
|
447
|
+
// The darker rim every light has, which keeps the yellow readable on
|
|
448
|
+
// a light bar.
|
|
449
|
+
box-shadow: inset 0 0 0 0.5px rgb(0 0 0 / 15%);
|
|
238
450
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
451
|
+
|
|
452
|
+
// Hovering only reveals the glyphs; pressing darkens the light.
|
|
453
|
+
&:active::before {
|
|
454
|
+
filter: brightness(0.82);
|
|
242
455
|
}
|
|
243
456
|
|
|
244
|
-
|
|
245
|
-
|
|
457
|
+
// Hug the dot rather than the 24px box around it.
|
|
458
|
+
&:focus-visible {
|
|
459
|
+
outline-offset: calc(
|
|
460
|
+
var(--wr-focus-ring-offset) - (var(--wr-window-action-size) - var(--wr-window-traffic-light-size)) / 2
|
|
461
|
+
);
|
|
462
|
+
box-shadow: none;
|
|
246
463
|
}
|
|
247
464
|
}
|
|
248
|
-
|
|
249
|
-
|
|
465
|
+
.wr-window__chrome-action--close {
|
|
466
|
+
--wr-window-traffic-light-bg: #ff5f57;
|
|
467
|
+
--wr-window-traffic-light-color: #4d0000;
|
|
468
|
+
}
|
|
469
|
+
.wr-window__chrome-action--minimize {
|
|
470
|
+
--wr-window-traffic-light-bg: #febc2e;
|
|
471
|
+
--wr-window-traffic-light-color: #995700;
|
|
472
|
+
}
|
|
473
|
+
.wr-window__chrome-action--maximize {
|
|
474
|
+
--wr-window-traffic-light-bg: #28c840;
|
|
475
|
+
--wr-window-traffic-light-color: #006500;
|
|
476
|
+
}
|
|
477
|
+
// Hidden until the cursor enters the cluster, as on macOS, and shown while a
|
|
478
|
+
// light holds keyboard focus, so a keyboard user can see what it does.
|
|
250
479
|
.wr-window__chrome-action-glyph {
|
|
251
|
-
width:
|
|
252
|
-
height:
|
|
480
|
+
width: 0.5rem;
|
|
481
|
+
height: 0.5rem;
|
|
253
482
|
opacity: 0;
|
|
254
|
-
transition: opacity
|
|
483
|
+
transition: opacity var(--wr-transition-short);
|
|
255
484
|
}
|
|
256
|
-
.wr-window__chrome-actions:hover .wr-window__chrome-action-glyph
|
|
485
|
+
.wr-window__chrome-actions:hover .wr-window__chrome-action-glyph,
|
|
486
|
+
.wr-window__chrome-action:focus-visible .wr-window__chrome-action-glyph {
|
|
257
487
|
opacity: 1;
|
|
258
488
|
}
|
|
489
|
+
// A rule of its own: Firefox 120, inside the browser floor, has no `:has()`,
|
|
490
|
+
// and one unknown selector would drop the hover reveal above with it. There
|
|
491
|
+
// the focused light alone shows its glyph.
|
|
492
|
+
.wr-window__chrome-actions:has(:focus-visible) .wr-window__chrome-action-glyph {
|
|
493
|
+
opacity: 1;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// An inactive window's lights go grey until the cursor enters the
|
|
497
|
+
// cluster or a light takes focus, as on macOS.
|
|
498
|
+
&.wr-window--inactive .wr-window__chrome-actions:not(:hover, :focus-within) .wr-window__chrome-action {
|
|
499
|
+
--wr-window-traffic-light-bg: var(--wr-window-traffic-light-inactive-bg);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
&.wr-window--chrome-sm {
|
|
503
|
+
--wr-window-action-size: 1.5rem;
|
|
504
|
+
|
|
505
|
+
.wr-window__chrome-action {
|
|
506
|
+
--wr-window-traffic-light-size: 0.875rem;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
259
509
|
}
|
|
260
510
|
|
|
261
|
-
// OS preset: Linux (GNOME
|
|
262
|
-
//
|
|
263
|
-
//
|
|
264
|
-
// DEFAULT here, not a
|
|
265
|
-
// the button back.
|
|
511
|
+
// OS preset: Linux (GNOME) — libadwaita's window controls: 24px circles
|
|
512
|
+
// tinted with the text colour (10% at rest, 15% on hover,
|
|
513
|
+
// 30% pressed), close included, which GNOME does not paint
|
|
514
|
+
// red. Close-only is the template's DEFAULT here, not a
|
|
515
|
+
// rule: `[showMinimize]="true"` puts the button back.
|
|
516
|
+
//
|
|
517
|
+
// RTL: GTK mirrors the header bar in a right-to-left UI, so the controls move
|
|
518
|
+
// to the other edge with close outermost — the flex row follows `dir`.
|
|
266
519
|
&--os-linux {
|
|
520
|
+
// A variable rather than a `height` on the bar, so `chromeSize: 'sm'` can
|
|
521
|
+
// still shrink it; a literal height here kept the compact bar 40px tall.
|
|
522
|
+
--wr-window-chrome-height: 2.5rem;
|
|
523
|
+
|
|
524
|
+
// The compact bar keeps the 16px glyphs, so its circles stop at 20px rather
|
|
525
|
+
// than the 18px the other chromes use: an 8px glyph in an 18px circle crowds
|
|
526
|
+
// it, and libadwaita's own small header keeps the same proportion.
|
|
527
|
+
&.wr-window--chrome-sm {
|
|
528
|
+
--wr-window-chrome-height: 1.625rem;
|
|
529
|
+
--wr-window-action-size: 1.25rem;
|
|
530
|
+
}
|
|
531
|
+
|
|
267
532
|
.wr-window__chrome {
|
|
268
|
-
|
|
533
|
+
// The close circle as far from the side of the frame as from its top.
|
|
534
|
+
--wr-window-chrome-padding-inline-end: calc((var(--wr-window-chrome-height) - var(--wr-window-action-size)) / 2);
|
|
269
535
|
}
|
|
270
536
|
.wr-window__title {
|
|
271
537
|
--wr-window-title-font-weight: var(--wr-font-weight-medium);
|
|
272
538
|
}
|
|
539
|
+
.wr-window__chrome-actions {
|
|
540
|
+
--wr-window-chrome-actions-gap: var(--wr-space-md);
|
|
541
|
+
}
|
|
542
|
+
.wr-window__chrome-action {
|
|
543
|
+
--wr-window-chrome-action-radius: 50%;
|
|
544
|
+
--wr-window-chrome-action-bg: color-mix(in srgb, currentColor 10%, transparent);
|
|
545
|
+
--wr-window-chrome-action-hover-bg: color-mix(in srgb, currentColor 15%, transparent);
|
|
546
|
+
--wr-window-chrome-action-active-color: var(--wr-window-chrome-action-color);
|
|
547
|
+
--wr-window-chrome-action-active-bg: color-mix(in srgb, currentColor 30%, transparent);
|
|
548
|
+
--wr-window-chrome-action-close-hover-color: var(--wr-window-chrome-action-color);
|
|
549
|
+
--wr-window-chrome-action-close-hover-bg: var(--wr-window-chrome-action-hover-bg);
|
|
550
|
+
--wr-window-chrome-action-close-active-bg: var(--wr-window-chrome-action-active-bg);
|
|
551
|
+
|
|
552
|
+
// libadwaita rims each circle when the reader asks for more contrast.
|
|
553
|
+
@media (prefers-contrast: more) {
|
|
554
|
+
box-shadow: inset 0 0 0 1px var(--wr-border-strong);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
.wr-window__chrome-action-glyph {
|
|
558
|
+
width: 1rem;
|
|
559
|
+
height: 1rem;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// Forced colours drop every fill above, the traffic lights with them. The
|
|
564
|
+
// buttons opt out and repaint in system colours: a rim where the shape is the
|
|
565
|
+
// only cue (the lights, GNOME's circles), Highlight on hover and press, and
|
|
566
|
+
// the macOS glyphs always on, since a bare rim says nothing about what it does.
|
|
567
|
+
@media (forced-colors: active) {
|
|
568
|
+
&__chrome-action {
|
|
569
|
+
forced-color-adjust: none;
|
|
570
|
+
color: ButtonText;
|
|
571
|
+
// Transparent at rest, as outside forced colours, so the strip reads as
|
|
572
|
+
// part of the bar rather than as a row of ButtonFace boxes.
|
|
573
|
+
background: transparent;
|
|
574
|
+
|
|
575
|
+
&:hover,
|
|
576
|
+
&:active,
|
|
577
|
+
&--close:hover,
|
|
578
|
+
&--close:active {
|
|
579
|
+
color: HighlightText;
|
|
580
|
+
background: Highlight;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
&:focus-visible {
|
|
584
|
+
outline-color: CanvasText;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
&--os-linux .wr-window__chrome-action {
|
|
589
|
+
box-shadow: inset 0 0 0 1px ButtonText;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
&--os-macos {
|
|
593
|
+
.wr-window__chrome-action,
|
|
594
|
+
.wr-window__chrome-action:hover,
|
|
595
|
+
.wr-window__chrome-action:active {
|
|
596
|
+
color: ButtonText;
|
|
597
|
+
background: transparent;
|
|
598
|
+
|
|
599
|
+
&::before {
|
|
600
|
+
background: ButtonFace;
|
|
601
|
+
box-shadow: inset 0 0 0 1px ButtonText;
|
|
602
|
+
filter: none;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
.wr-window__chrome-action:hover,
|
|
606
|
+
.wr-window__chrome-action:active {
|
|
607
|
+
color: HighlightText;
|
|
608
|
+
|
|
609
|
+
&::before {
|
|
610
|
+
background: Highlight;
|
|
611
|
+
box-shadow: none;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
.wr-window__chrome-action-glyph {
|
|
615
|
+
opacity: 1;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
273
618
|
}
|
|
274
619
|
|
|
275
620
|
// Body
|
|
@@ -313,6 +658,19 @@
|
|
|
313
658
|
display: none;
|
|
314
659
|
}
|
|
315
660
|
|
|
661
|
+
// The keyboard modes' live region: read, never drawn.
|
|
662
|
+
&__sr-only {
|
|
663
|
+
position: absolute;
|
|
664
|
+
width: 1px;
|
|
665
|
+
height: 1px;
|
|
666
|
+
padding: 0;
|
|
667
|
+
margin: -1px;
|
|
668
|
+
overflow: hidden;
|
|
669
|
+
clip: rect(0, 0, 0, 0);
|
|
670
|
+
white-space: nowrap;
|
|
671
|
+
border: 0;
|
|
672
|
+
}
|
|
673
|
+
|
|
316
674
|
// Resize handles (only rendered in normal state).
|
|
317
675
|
//
|
|
318
676
|
// Every grip sits ENTIRELY OUTSIDE the padding box — the band the drop shadow
|
|
@@ -333,6 +691,9 @@
|
|
|
333
691
|
&__handle {
|
|
334
692
|
position: absolute;
|
|
335
693
|
z-index: 1;
|
|
694
|
+
// A touch drag on a grip resizes; without this the browser took it as a
|
|
695
|
+
// page pan, fired `pointercancel` and stopped the resize after a few pixels.
|
|
696
|
+
touch-action: none;
|
|
336
697
|
|
|
337
698
|
&--t {
|
|
338
699
|
bottom: 100%;
|
|
@@ -407,8 +768,14 @@
|
|
|
407
768
|
}
|
|
408
769
|
}
|
|
409
770
|
|
|
410
|
-
// Snap hint — translucent rectangle showing the
|
|
411
|
-
//
|
|
771
|
+
// Snap hint — translucent rectangle showing the region the window will jump
|
|
772
|
+
// into when the pointer is released. Its box is written inline,
|
|
773
|
+
// from the same arithmetic the drop uses, so the two agree with
|
|
774
|
+
// a scrollbar showing and inside a custom work area. So is its
|
|
775
|
+
// z-index, one above the window's own: the two share an overlay
|
|
776
|
+
// host, and the window's z climbs with every raise, so this
|
|
777
|
+
// fallback alone put the hint behind a window raised a hundred
|
|
778
|
+
// times.
|
|
412
779
|
.wr-window__snap-hint {
|
|
413
780
|
--wr-window-snap-hint-radius: var(--wr-border-radius-base);
|
|
414
781
|
|
|
@@ -418,32 +785,14 @@
|
|
|
418
785
|
background: color-mix(in srgb, var(--wr-color-primary) 18%, transparent);
|
|
419
786
|
border: 2px solid var(--wr-color-primary);
|
|
420
787
|
border-radius: var(--wr-window-snap-hint-radius);
|
|
421
|
-
transition:
|
|
788
|
+
transition:
|
|
789
|
+
left 0.12s ease,
|
|
790
|
+
top 0.12s ease,
|
|
791
|
+
width 0.12s ease,
|
|
792
|
+
height 0.12s ease;
|
|
422
793
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
// and `applySnap` answers with `x = 0`, so the hint has to cover the same
|
|
426
|
-
// half of the viewport the window is about to jump into.
|
|
427
|
-
&[data-target='top'] {
|
|
428
|
-
inset: 0;
|
|
429
|
-
}
|
|
430
|
-
&[data-target='left'] {
|
|
431
|
-
inset: 0 50% 0 0;
|
|
432
|
-
}
|
|
433
|
-
&[data-target='right'] {
|
|
434
|
-
inset: 0 0 0 50%;
|
|
435
|
-
}
|
|
436
|
-
&[data-target='top-left'] {
|
|
437
|
-
inset: 0 50% 50% 0;
|
|
438
|
-
}
|
|
439
|
-
&[data-target='top-right'] {
|
|
440
|
-
inset: 0 0 50% 50%;
|
|
441
|
-
}
|
|
442
|
-
&[data-target='bottom-left'] {
|
|
443
|
-
inset: 50% 50% 0 0;
|
|
444
|
-
}
|
|
445
|
-
&[data-target='bottom-right'] {
|
|
446
|
-
inset: 50% 0 0 50%;
|
|
794
|
+
@media (prefers-reduced-motion: reduce) {
|
|
795
|
+
transition: none;
|
|
447
796
|
}
|
|
448
797
|
}
|
|
449
798
|
|
|
@@ -452,11 +801,14 @@
|
|
|
452
801
|
--wr-window-taskbar-font-family: var(--wr-font-family-base);
|
|
453
802
|
|
|
454
803
|
position: fixed;
|
|
455
|
-
//
|
|
456
|
-
|
|
457
|
-
|
|
804
|
+
// Both inline edges rather than `left: 50%` and a translate: a box pinned at
|
|
805
|
+
// the middle could only ever be half the viewport wide before it overflowed,
|
|
806
|
+
// and the rail ran off both sides of a phone with four windows listed. The
|
|
807
|
+
// host spans the page and lets presses through; the rail is centred in it.
|
|
808
|
+
inset-inline: 0.75rem;
|
|
458
809
|
z-index: var(--wr-z-window, 1100);
|
|
459
|
-
display:
|
|
810
|
+
display: flex;
|
|
811
|
+
justify-content: center;
|
|
460
812
|
pointer-events: none;
|
|
461
813
|
font-family: var(--wr-window-taskbar-font-family);
|
|
462
814
|
|
|
@@ -473,8 +825,15 @@
|
|
|
473
825
|
--wr-window-taskbar-rail-border: var(--wr-border-base);
|
|
474
826
|
--wr-window-taskbar-rail-radius: var(--wr-border-radius-base);
|
|
475
827
|
|
|
476
|
-
display:
|
|
828
|
+
display: flex;
|
|
829
|
+
// One row, always. Each tab is as wide as its title, up to its max-width,
|
|
830
|
+
// and the ones that do not fit fold under the "+N" button at the end — the
|
|
831
|
+
// component counts them from those widths, the gap and the rail's own width.
|
|
832
|
+
flex-wrap: nowrap;
|
|
477
833
|
align-items: center;
|
|
834
|
+
justify-content: center;
|
|
835
|
+
min-inline-size: 0;
|
|
836
|
+
max-inline-size: 100%;
|
|
478
837
|
gap: var(--wr-window-taskbar-rail-gap);
|
|
479
838
|
padding: var(--wr-window-taskbar-rail-padding);
|
|
480
839
|
background: var(--wr-color-surface);
|
|
@@ -494,8 +853,21 @@
|
|
|
494
853
|
--wr-window-taskbar-tab-radius: var(--wr-border-radius-sm);
|
|
495
854
|
--wr-window-taskbar-tab-font-size: var(--wr-text-sm);
|
|
496
855
|
--wr-window-taskbar-tab-line-height: var(--wr-text-sm-leading);
|
|
856
|
+
--wr-window-taskbar-tab-active-bg: var(--wr-color-fill);
|
|
857
|
+
--wr-window-taskbar-tab-active-indicator: var(--wr-color-primary);
|
|
858
|
+
--wr-window-taskbar-tab-minimized-color: var(--wr-color-on-surface-muted);
|
|
859
|
+
// The widest a tab grows for a long title, which then ends in an ellipsis.
|
|
860
|
+
// The component reads it back as the computed `max-width`, so it counts
|
|
861
|
+
// what fits from the same number. Give it a length: a percentage resolves
|
|
862
|
+
// against the rail for a drawn tab and the host for a folded one.
|
|
863
|
+
--wr-window-taskbar-tab-max-width: 12rem;
|
|
497
864
|
|
|
498
865
|
display: inline-flex;
|
|
866
|
+
// As wide as the title, never wider than the cap. It shrinks only when one
|
|
867
|
+
// tab is all the rail has left and even that does not fit.
|
|
868
|
+
flex: 0 1 auto;
|
|
869
|
+
min-width: 0;
|
|
870
|
+
max-width: var(--wr-window-taskbar-tab-max-width);
|
|
499
871
|
align-items: center;
|
|
500
872
|
gap: var(--wr-window-taskbar-tab-gap);
|
|
501
873
|
// Roomy where the title starts, tight against the trailing close button,
|
|
@@ -505,12 +877,36 @@
|
|
|
505
877
|
color: var(--wr-color-on-surface);
|
|
506
878
|
font-size: var(--wr-window-taskbar-tab-font-size);
|
|
507
879
|
line-height: var(--wr-window-taskbar-tab-line-height);
|
|
508
|
-
max-width: 12rem;
|
|
509
880
|
transition: background var(--wr-transition-base);
|
|
510
881
|
|
|
511
882
|
&:hover {
|
|
512
883
|
background: var(--wr-color-fill-strong);
|
|
513
884
|
}
|
|
885
|
+
|
|
886
|
+
// `show="all"`: the active window's tab is filled, the way a desktop
|
|
887
|
+
// taskbar marks the window that has the keyboard; `aria-pressed` says the
|
|
888
|
+
// same to a screen reader.
|
|
889
|
+
&--active {
|
|
890
|
+
background: var(--wr-window-taskbar-tab-active-bg);
|
|
891
|
+
box-shadow: inset 0 -2px 0 var(--wr-window-taskbar-tab-active-indicator);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// A minimized window's tab in `show="all"` reads quieter than the windows
|
|
895
|
+
// on screen.
|
|
896
|
+
&--minimized {
|
|
897
|
+
color: var(--wr-window-taskbar-tab-minimized-color);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
// Folded under "+N": out of the row and out of sight, but still laid out at
|
|
901
|
+
// the width its title asks for, so the rail can tell when it fits again.
|
|
902
|
+
&--folded {
|
|
903
|
+
position: absolute;
|
|
904
|
+
inset-block-start: 0;
|
|
905
|
+
inset-inline-start: 0;
|
|
906
|
+
width: max-content;
|
|
907
|
+
visibility: hidden;
|
|
908
|
+
pointer-events: none;
|
|
909
|
+
}
|
|
514
910
|
}
|
|
515
911
|
|
|
516
912
|
&__tab-restore {
|
|
@@ -548,6 +944,56 @@
|
|
|
548
944
|
white-space: nowrap;
|
|
549
945
|
}
|
|
550
946
|
|
|
947
|
+
// "+N": the tabs that did not fit, as a menu. As tall as a tab and wide
|
|
948
|
+
// enough for a two-digit count, so its width rarely moves the fold.
|
|
949
|
+
&__more {
|
|
950
|
+
--wr-window-taskbar-more-min-width: 2.5rem;
|
|
951
|
+
--wr-window-taskbar-more-padding-inline: var(--wr-space-sm);
|
|
952
|
+
--wr-window-taskbar-more-radius: var(--wr-border-radius-sm);
|
|
953
|
+
--wr-window-taskbar-more-color: var(--wr-color-on-surface);
|
|
954
|
+
--wr-window-taskbar-more-hover-bg: var(--wr-color-fill-strong);
|
|
955
|
+
--wr-window-taskbar-more-open-bg: var(--wr-color-fill);
|
|
956
|
+
|
|
957
|
+
appearance: none;
|
|
958
|
+
flex: 0 0 auto;
|
|
959
|
+
align-self: stretch;
|
|
960
|
+
min-inline-size: var(--wr-window-taskbar-more-min-width);
|
|
961
|
+
padding-block: 0;
|
|
962
|
+
padding-inline: var(--wr-window-taskbar-more-padding-inline);
|
|
963
|
+
border: 0;
|
|
964
|
+
border-radius: var(--wr-window-taskbar-more-radius);
|
|
965
|
+
background: transparent;
|
|
966
|
+
color: var(--wr-window-taskbar-more-color);
|
|
967
|
+
font-family: inherit;
|
|
968
|
+
font-size: var(--wr-text-sm);
|
|
969
|
+
font-variant-numeric: tabular-nums;
|
|
970
|
+
line-height: var(--wr-text-sm-leading);
|
|
971
|
+
white-space: nowrap;
|
|
972
|
+
cursor: pointer;
|
|
973
|
+
transition: background-color var(--wr-transition-base);
|
|
974
|
+
|
|
975
|
+
&:hover {
|
|
976
|
+
background: var(--wr-window-taskbar-more-hover-bg);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
&[aria-expanded='true'] {
|
|
980
|
+
background: var(--wr-window-taskbar-more-open-bg);
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
&:focus-visible {
|
|
984
|
+
@include theme.focus-ring;
|
|
985
|
+
outline-offset: -2px;
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// A row of the "+N" menu. It renders in the overlay, outside the rail, so it
|
|
990
|
+
// carries its own copy of the muted tone a minimized window's tab has.
|
|
991
|
+
&__fold-item--minimized {
|
|
992
|
+
--wr-window-taskbar-fold-item-minimized-color: var(--wr-color-on-surface-muted);
|
|
993
|
+
|
|
994
|
+
color: var(--wr-window-taskbar-fold-item-minimized-color);
|
|
995
|
+
}
|
|
996
|
+
|
|
551
997
|
&__tab-close {
|
|
552
998
|
--wr-window-taskbar-tab-close-radius: var(--wr-border-radius-sm);
|
|
553
999
|
|