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
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
@use '../../../theme/styles' as theme;
|
|
2
|
+
@use '../../../popover/styles' as popover-styles; // the `.wr-tooltip` chip the hover tooltip renders into
|
|
3
|
+
|
|
4
|
+
// Styles for the entry points this component's own markup renders. With `dataTable`,
|
|
5
|
+
// the figures render as a `<wr-chart-table>` beside the plot, which its own sheet clips
|
|
6
|
+
// out of sight.
|
|
7
|
+
@use '../../core/styles' as core-styles; // WrChartTable
|
|
8
|
+
|
|
9
|
+
.wr-boxplot-chart {
|
|
10
|
+
--wr-boxplot-chart-font-family: var(--wr-font-family-base);
|
|
11
|
+
--wr-boxplot-chart-color: var(--wr-color-on-surface);
|
|
12
|
+
// The room round the drawing inside the plot. The groups sit in equal slots across
|
|
13
|
+
// the drawing, so nothing overhangs its sides; an outlier on the frame overhangs the
|
|
14
|
+
// top or the bottom by half its dot.
|
|
15
|
+
--wr-boxplot-chart-plot-inset-x: var(--wr-space-sm);
|
|
16
|
+
--wr-boxplot-chart-plot-inset-y: var(--wr-space-sm);
|
|
17
|
+
--wr-boxplot-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
|
|
18
|
+
--wr-boxplot-chart-tick-gap: var(--wr-space-xs);
|
|
19
|
+
--wr-boxplot-chart-tick-font-size: var(--wr-text-xs);
|
|
20
|
+
--wr-boxplot-chart-tick-line-height: var(--wr-text-xs-leading);
|
|
21
|
+
--wr-boxplot-chart-tick-color: var(--wr-color-on-surface-muted);
|
|
22
|
+
// The group names under the drawing: what each box IS, so in the text colour rather
|
|
23
|
+
// than the ticks' muted one, as the radar's axis names are.
|
|
24
|
+
--wr-boxplot-chart-label-font-size: var(--wr-text-xs);
|
|
25
|
+
--wr-boxplot-chart-label-line-height: var(--wr-text-xs-leading);
|
|
26
|
+
--wr-boxplot-chart-label-color: var(--wr-color-on-surface);
|
|
27
|
+
--wr-boxplot-chart-label-gap: var(--wr-space-xs);
|
|
28
|
+
--wr-boxplot-chart-title-font-size: var(--wr-text-xs);
|
|
29
|
+
--wr-boxplot-chart-title-font-weight: var(--wr-font-weight-medium);
|
|
30
|
+
--wr-boxplot-chart-title-color: var(--wr-color-on-surface-muted);
|
|
31
|
+
--wr-boxplot-chart-title-gap: var(--wr-space-xs);
|
|
32
|
+
// A box is a share of its slot, up to a width that keeps one group from becoming a
|
|
33
|
+
// slab; the caps are half as wide. A percentage here is the SLOT's: it resolves where
|
|
34
|
+
// the box reads it.
|
|
35
|
+
--wr-boxplot-chart-box-width: min(3rem, 60%);
|
|
36
|
+
--wr-boxplot-chart-cap-width: calc(var(--wr-boxplot-chart-box-width) / 2);
|
|
37
|
+
--wr-boxplot-chart-box-radius: var(--wr-border-radius-sm);
|
|
38
|
+
// How much of the group's colour the box is filled with, at rest and while hovered.
|
|
39
|
+
// See-through, so the gridlines read across it.
|
|
40
|
+
--wr-boxplot-chart-box-tint: 20%;
|
|
41
|
+
--wr-boxplot-chart-box-tint-active: 40%;
|
|
42
|
+
// The box's edge, the whiskers, the caps and the outliers' rings, all in the group's
|
|
43
|
+
// colour.
|
|
44
|
+
--wr-boxplot-chart-line-width: 2px;
|
|
45
|
+
// The median in the text colour and heavier than the box's edge, so it reads by tone
|
|
46
|
+
// and by weight whatever the group's colour is.
|
|
47
|
+
--wr-boxplot-chart-median-color: var(--wr-color-on-surface);
|
|
48
|
+
--wr-boxplot-chart-median-width: 3px;
|
|
49
|
+
// An outlier is a ring, hollow so two that overlap stay two.
|
|
50
|
+
--wr-boxplot-chart-outlier-size: 0.5rem;
|
|
51
|
+
--wr-boxplot-chart-outlier-fill: var(--wr-color-surface);
|
|
52
|
+
// The slot the tooltip is reading, washed top to bottom. See-through, as the box is, so
|
|
53
|
+
// the gridlines read across it: the theme's hover fill is opaque, and the slot is drawn
|
|
54
|
+
// over the gridlines. The waterfall's wash, under the same name.
|
|
55
|
+
--wr-boxplot-chart-active-bg: color-mix(in srgb, var(--wr-color-on-surface) 6%, transparent);
|
|
56
|
+
|
|
57
|
+
$inset-y: var(--wr-boxplot-chart-plot-inset-y);
|
|
58
|
+
$line: var(--wr-boxplot-chart-line-width);
|
|
59
|
+
$color: var(--wr-boxplot-chart-group-color, currentColor);
|
|
60
|
+
|
|
61
|
+
display: block;
|
|
62
|
+
// The containing block of the out-of-flow `dataTable` copy, as on the line chart: a
|
|
63
|
+
// static host lets that 1px box resolve against an ancestor outside the chart and keep
|
|
64
|
+
// its place in an unpositioned scroller's content. No z-index, so no stacking context.
|
|
65
|
+
position: relative;
|
|
66
|
+
font-family: var(--wr-boxplot-chart-font-family);
|
|
67
|
+
color: var(--wr-boxplot-chart-color);
|
|
68
|
+
|
|
69
|
+
// The ticks at inline start, the plot beside them, and the group names under the plot
|
|
70
|
+
// alone. A grid follows `direction`, so the ticks are on the right under RTL with no
|
|
71
|
+
// rule of their own — and the groups follow it too, each slot placed from the inline
|
|
72
|
+
// start, as the bar chart's and the waterfall's columns run in a flex row. The groups
|
|
73
|
+
// are categories with no order of their own, so they read in the page's direction and
|
|
74
|
+
// the first stands beside the axis either way. A chart whose x axis is ordered — a
|
|
75
|
+
// sequence on the line and candlestick charts, a number on the scatter — keeps it
|
|
76
|
+
// physical instead.
|
|
77
|
+
&__body {
|
|
78
|
+
display: grid;
|
|
79
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// The axes' names, set horizontally: the value axis' above the plot at the ticks' side,
|
|
83
|
+
// where a reader looks first, and the groups' centred under their names.
|
|
84
|
+
&__y-title,
|
|
85
|
+
&__x-title {
|
|
86
|
+
font-size: var(--wr-boxplot-chart-title-font-size);
|
|
87
|
+
font-weight: var(--wr-boxplot-chart-title-font-weight);
|
|
88
|
+
color: var(--wr-boxplot-chart-title-color);
|
|
89
|
+
overflow-wrap: anywhere;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&__y-title {
|
|
93
|
+
grid-column: 1 / -1;
|
|
94
|
+
grid-row: 1;
|
|
95
|
+
margin-block-end: var(--wr-boxplot-chart-title-gap);
|
|
96
|
+
text-align: start;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&__x-title {
|
|
100
|
+
grid-column: 2;
|
|
101
|
+
grid-row: 4;
|
|
102
|
+
margin-block-start: var(--wr-boxplot-chart-title-gap);
|
|
103
|
+
text-align: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// As wide as the longest label — every label is in flow, in the one cell of a one-cell
|
|
107
|
+
// grid — while its height stays one label. Stretched to the plot's row, each label
|
|
108
|
+
// moves down by its own gridline's share of the drawing, inside the plot's block
|
|
109
|
+
// padding, then up by half itself: the scatter's y axis, for the same reasons.
|
|
110
|
+
&__y-axis {
|
|
111
|
+
grid-column: 1;
|
|
112
|
+
grid-row: 2;
|
|
113
|
+
display: grid;
|
|
114
|
+
grid-template-rows: minmax(0, 1fr);
|
|
115
|
+
padding-inline-end: var(--wr-boxplot-chart-tick-gap);
|
|
116
|
+
font-size: var(--wr-boxplot-chart-tick-font-size);
|
|
117
|
+
line-height: var(--wr-boxplot-chart-tick-line-height);
|
|
118
|
+
color: var(--wr-boxplot-chart-tick-color);
|
|
119
|
+
text-align: end;
|
|
120
|
+
white-space: nowrap;
|
|
121
|
+
font-variant-numeric: tabular-nums;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Shrunk to its text against the plot's side of the column, so its own direction can
|
|
125
|
+
// follow its text (`plaintext`), as the waterfall's ticks do: a box plot has no zero to
|
|
126
|
+
// start from, so a negative tick is ordinary, and its `-` in front of digits has no
|
|
127
|
+
// direction of its own — under RTL it would land on the far side and read `200-`.
|
|
128
|
+
&__y-tick {
|
|
129
|
+
grid-area: 1 / 1;
|
|
130
|
+
align-self: start;
|
|
131
|
+
justify-self: end;
|
|
132
|
+
position: relative;
|
|
133
|
+
unicode-bidi: plaintext;
|
|
134
|
+
top: calc($inset-y + (100% - 2 * $inset-y) * var(--wr-boxplot-chart-y, 0) / 100);
|
|
135
|
+
transform: translateY(-50%);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&__plot {
|
|
139
|
+
grid-column: 2;
|
|
140
|
+
grid-row: 2;
|
|
141
|
+
position: relative;
|
|
142
|
+
padding: $inset-y var(--wr-boxplot-chart-plot-inset-x);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// What every mark's percentages are of.
|
|
146
|
+
&__drawing {
|
|
147
|
+
position: relative;
|
|
148
|
+
height: 100%;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
&__grid-line {
|
|
152
|
+
position: absolute;
|
|
153
|
+
inset-inline: 0;
|
|
154
|
+
top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
|
|
155
|
+
border-block-start: 1px solid var(--wr-boxplot-chart-grid-color);
|
|
156
|
+
transform: translateY(-50%);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// One slot of the drawing, top to bottom, and the group's hover target. Every mark
|
|
160
|
+
// inside is centred on it, so it needs no rule of its own under RTL.
|
|
161
|
+
&__group {
|
|
162
|
+
position: absolute;
|
|
163
|
+
inset-block: 0;
|
|
164
|
+
inset-inline-start: calc(var(--wr-boxplot-chart-slot-start, 0) * 1%);
|
|
165
|
+
width: calc(var(--wr-boxplot-chart-slot-width, 100) * 1%);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
&__group--active {
|
|
169
|
+
background: var(--wr-boxplot-chart-active-bg);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
&__whisker,
|
|
173
|
+
&__cap,
|
|
174
|
+
&__box,
|
|
175
|
+
&__median,
|
|
176
|
+
&__outlier,
|
|
177
|
+
&__extent {
|
|
178
|
+
position: absolute;
|
|
179
|
+
// rtl-ok: centred on its slot against a physical translateX, so the pair stays physical
|
|
180
|
+
left: 50%;
|
|
181
|
+
pointer-events: none;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// A whisker is the inline-start border of a box with no width of its own, centred on
|
|
185
|
+
// its slot. Each runs from its end to the box's edge: two segments rather than one line
|
|
186
|
+
// behind the box, so the box can be see-through.
|
|
187
|
+
&__whisker {
|
|
188
|
+
top: calc(var(--wr-boxplot-chart-top, 0) * 1%);
|
|
189
|
+
width: 0;
|
|
190
|
+
height: calc((var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1%);
|
|
191
|
+
border-inline-start: $line solid $color;
|
|
192
|
+
transform: translateX(-50%);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// A cap, the median and an outlier sit centred ON their value.
|
|
196
|
+
&__cap,
|
|
197
|
+
&__median {
|
|
198
|
+
top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
|
|
199
|
+
height: 0;
|
|
200
|
+
transform: translate(-50%, -50%);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
&__cap {
|
|
204
|
+
width: var(--wr-boxplot-chart-cap-width);
|
|
205
|
+
border-block-start: $line solid $color;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// The edge is centred on the quartiles, half outside the span between them, so the
|
|
209
|
+
// box is one edge taller than that span — and centred on its MIDDLE rather than hung
|
|
210
|
+
// from its top: a box can be no shorter than its two edges, so one whose quartiles
|
|
211
|
+
// meet grows to that and stays centred on its value, where hung from the top it sat
|
|
212
|
+
// an edge low.
|
|
213
|
+
&__box {
|
|
214
|
+
top: calc((var(--wr-boxplot-chart-top, 0) + var(--wr-boxplot-chart-bottom, 0)) / 2 * 1%);
|
|
215
|
+
width: var(--wr-boxplot-chart-box-width);
|
|
216
|
+
height: calc((var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1% + $line);
|
|
217
|
+
border: $line solid $color;
|
|
218
|
+
border-radius: var(--wr-boxplot-chart-box-radius);
|
|
219
|
+
background: color-mix(in srgb, $color var(--wr-boxplot-chart-box-tint), transparent);
|
|
220
|
+
transform: translate(-50%, -50%);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
&__group--active &__box {
|
|
224
|
+
background: color-mix(in srgb, $color var(--wr-boxplot-chart-box-tint-active), transparent);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
&__median {
|
|
228
|
+
width: var(--wr-boxplot-chart-box-width);
|
|
229
|
+
border-block-start: var(--wr-boxplot-chart-median-width) solid var(--wr-boxplot-chart-median-color);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
&__outlier {
|
|
233
|
+
top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
|
|
234
|
+
width: var(--wr-boxplot-chart-outlier-size);
|
|
235
|
+
height: var(--wr-boxplot-chart-outlier-size);
|
|
236
|
+
border: $line solid $color;
|
|
237
|
+
border-radius: 50%;
|
|
238
|
+
background: var(--wr-boxplot-chart-outlier-fill);
|
|
239
|
+
transform: translate(-50%, -50%);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Paints nothing and is hit by nothing: a box from the topmost mark to the lowest, half
|
|
243
|
+
// an outlier taller at either end, for the tooltip to point at.
|
|
244
|
+
&__extent {
|
|
245
|
+
top: calc(var(--wr-boxplot-chart-top, 0) * 1% - var(--wr-boxplot-chart-outlier-size) / 2);
|
|
246
|
+
width: 0;
|
|
247
|
+
height: calc(
|
|
248
|
+
(var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1% + var(--wr-boxplot-chart-outlier-size)
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// As wide as the drawing — the plot's inline padding is its margin — so a name's
|
|
253
|
+
// percentages are the drawing's. The names are out of flow, so the strip is given one
|
|
254
|
+
// line's height.
|
|
255
|
+
&__x-axis {
|
|
256
|
+
grid-column: 2;
|
|
257
|
+
grid-row: 3;
|
|
258
|
+
position: relative;
|
|
259
|
+
height: var(--wr-boxplot-chart-label-line-height);
|
|
260
|
+
margin-block-start: var(--wr-boxplot-chart-label-gap);
|
|
261
|
+
margin-inline: var(--wr-boxplot-chart-plot-inset-x);
|
|
262
|
+
font-size: var(--wr-boxplot-chart-label-font-size);
|
|
263
|
+
line-height: var(--wr-boxplot-chart-label-line-height);
|
|
264
|
+
color: var(--wr-boxplot-chart-label-color);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// A name is the host's own text, in whatever language it is, so it takes its direction
|
|
268
|
+
// from that text (`plaintext`) and is ellipsised at its own end, not at the page's — the
|
|
269
|
+
// waterfall's labels, for the same reason: two Latin names under RTL read `… America`.
|
|
270
|
+
// Not `dir="auto"`: the box is placed by `inset-inline-start`, which would then resolve
|
|
271
|
+
// against the name's own direction and put it under the wrong slot.
|
|
272
|
+
&__x-label {
|
|
273
|
+
position: absolute;
|
|
274
|
+
top: 0;
|
|
275
|
+
// Under its slot, from the same inline start.
|
|
276
|
+
inset-inline-start: calc(var(--wr-boxplot-chart-slot-start, 0) * 1%);
|
|
277
|
+
width: calc(var(--wr-boxplot-chart-slot-width, 100) * 1%);
|
|
278
|
+
padding-inline: calc(var(--wr-boxplot-chart-label-gap) / 2);
|
|
279
|
+
overflow: hidden;
|
|
280
|
+
text-overflow: ellipsis;
|
|
281
|
+
white-space: nowrap;
|
|
282
|
+
text-align: center;
|
|
283
|
+
unicode-bidi: plaintext;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Forced colors repaints every border in the text colour and every background as the
|
|
288
|
+
// page, which is the right drawing here: the colour of a group says nothing its name
|
|
289
|
+
// does not, the outlines all stay, and the box's tint and the hover wash go. Only the
|
|
290
|
+
// gridlines would come out as heavy as the boxes, so they keep the system's muted
|
|
291
|
+
// colour.
|
|
292
|
+
@media (forced-colors: active) {
|
|
293
|
+
.wr-boxplot-chart__grid-line {
|
|
294
|
+
border-color: GrayText;
|
|
295
|
+
forced-color-adjust: none;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
@use '../../../theme/styles' as theme;
|
|
2
|
+
@use '../../../popover/styles' as popover-styles; // the `.wr-tooltip` chip the hover tooltip renders into
|
|
3
|
+
|
|
4
|
+
.wr-bullet-chart {
|
|
5
|
+
--wr-bullet-chart-font-family: var(--wr-font-family-base);
|
|
6
|
+
--wr-bullet-chart-color: var(--wr-color-on-surface);
|
|
7
|
+
// The drawing's height, one line of the label's: the label is set at it, so its first
|
|
8
|
+
// line sits level with the drawing whatever the sub-label under it adds.
|
|
9
|
+
--wr-bullet-chart-track-height: 1.5rem;
|
|
10
|
+
// The least the drawing narrows to, so a chart in a shrink-to-fit parent (a flex row of
|
|
11
|
+
// tiles) still draws one rather than collapsing to its label.
|
|
12
|
+
--wr-bullet-chart-track-min-width: 6rem;
|
|
13
|
+
--wr-bullet-chart-track-radius: var(--wr-border-radius-sm);
|
|
14
|
+
// The track is what shows past the last band, and with no `ranges` the whole frame.
|
|
15
|
+
--wr-bullet-chart-track-color: var(--wr-color-fill);
|
|
16
|
+
// The bands step from the first colour, nearest zero, to the second, at the last range
|
|
17
|
+
// limit: steps in LIGHTNESS, which survive greyscale. Both are the theme's neutral fill
|
|
18
|
+
// roles, so each scheme and `prefers-contrast: more` (which deepens the muted ink) moves
|
|
19
|
+
// them on its own. The first is the strong fill pulled halfway to the muted ink, since
|
|
20
|
+
// the fills alone are too close to the surface to read as bands.
|
|
21
|
+
--wr-bullet-chart-range-start: color-mix(in srgb, var(--wr-color-on-surface-muted) 50%, var(--wr-color-fill-strong));
|
|
22
|
+
--wr-bullet-chart-range-end: var(--wr-color-fill-strong);
|
|
23
|
+
// The rule where the last band ends, drawn only where the scale runs on past it — a
|
|
24
|
+
// value or a target above the last limit, or a `max` beyond it. The faintest band and
|
|
25
|
+
// the track are a step of lightness apart that no reader can see, so the end of the
|
|
26
|
+
// last band is a line rather than a shade.
|
|
27
|
+
--wr-bullet-chart-range-edge-color: var(--wr-color-on-surface-muted);
|
|
28
|
+
// The value and the target are drawn in the text colour, as in Few's own design, and
|
|
29
|
+
// told apart by shape. Measured in Chromium against the strongest band, the text colour
|
|
30
|
+
// holds 6.6:1 in light and 5.0:1 in dark (6.4 and 4.7 under `prefers-contrast: more`),
|
|
31
|
+
// where the primary blue reads 1.8:1 and 1.3:1 — under the 3:1 WCAG 1.4.11 asks of a
|
|
32
|
+
// mark a reader needs.
|
|
33
|
+
--wr-bullet-chart-value-color: var(--wr-color-on-surface);
|
|
34
|
+
--wr-bullet-chart-bar-thickness: calc(100% / 3);
|
|
35
|
+
--wr-bullet-chart-target-color: var(--wr-color-on-surface);
|
|
36
|
+
--wr-bullet-chart-target-thickness: 3px;
|
|
37
|
+
--wr-bullet-chart-target-length: 75%;
|
|
38
|
+
// A ring in the surface colour round the marker, so it stays a line of its own where it
|
|
39
|
+
// crosses the bar, which is the same colour.
|
|
40
|
+
--wr-bullet-chart-target-ring: var(--wr-color-surface);
|
|
41
|
+
--wr-bullet-chart-target-ring-width: 1px;
|
|
42
|
+
// By default as wide as the longer of the two labels, up to the max width, which only
|
|
43
|
+
// this default reads. Give several bullets stacked in a column the same length here and
|
|
44
|
+
// their drawings line up: the labels fill the column and sit against the drawing at any
|
|
45
|
+
// width, a wider one than the max included.
|
|
46
|
+
--wr-bullet-chart-label-max-width: 12rem;
|
|
47
|
+
--wr-bullet-chart-label-width: fit-content(var(--wr-bullet-chart-label-max-width));
|
|
48
|
+
--wr-bullet-chart-label-gap: var(--wr-space-md);
|
|
49
|
+
--wr-bullet-chart-label-font-size: var(--wr-text-sm);
|
|
50
|
+
--wr-bullet-chart-label-font-weight: var(--wr-font-weight-semibold);
|
|
51
|
+
--wr-bullet-chart-label-color: var(--wr-color-on-surface);
|
|
52
|
+
--wr-bullet-chart-sub-label-font-size: var(--wr-text-xs);
|
|
53
|
+
--wr-bullet-chart-sub-label-line-height: var(--wr-text-xs-leading);
|
|
54
|
+
--wr-bullet-chart-sub-label-color: var(--wr-color-on-surface-muted);
|
|
55
|
+
--wr-bullet-chart-scale-gap: var(--wr-space-xs);
|
|
56
|
+
--wr-bullet-chart-tick-length: var(--wr-space-xs);
|
|
57
|
+
--wr-bullet-chart-tick-color: var(--wr-color-on-surface-muted);
|
|
58
|
+
--wr-bullet-chart-tick-font-size: var(--wr-text-xs);
|
|
59
|
+
--wr-bullet-chart-tick-line-height: var(--wr-text-xs-leading);
|
|
60
|
+
|
|
61
|
+
// The drawing above its scale, and with a label, the label column at inline start of
|
|
62
|
+
// both. A grid follows `direction`, so under RTL the labels are on the right.
|
|
63
|
+
display: grid;
|
|
64
|
+
grid-template-areas:
|
|
65
|
+
'track'
|
|
66
|
+
'scale';
|
|
67
|
+
grid-template-columns: minmax(var(--wr-bullet-chart-track-min-width), 1fr);
|
|
68
|
+
font-family: var(--wr-bullet-chart-font-family);
|
|
69
|
+
color: var(--wr-bullet-chart-color);
|
|
70
|
+
|
|
71
|
+
&--labelled {
|
|
72
|
+
grid-template-areas:
|
|
73
|
+
'labels track'
|
|
74
|
+
'labels scale';
|
|
75
|
+
grid-template-columns: var(--wr-bullet-chart-label-width) minmax(var(--wr-bullet-chart-track-min-width), 1fr);
|
|
76
|
+
column-gap: var(--wr-bullet-chart-label-gap);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Beside the drawing and the scale both, from the top: the label's line is the drawing's
|
|
80
|
+
// height, so a single line sits level with it and the sub-label hangs beside the scale.
|
|
81
|
+
// End-aligned, against the drawing, as Few sets them.
|
|
82
|
+
&__labels {
|
|
83
|
+
grid-area: labels;
|
|
84
|
+
align-self: start;
|
|
85
|
+
display: flex;
|
|
86
|
+
flex-direction: column;
|
|
87
|
+
min-width: 0;
|
|
88
|
+
text-align: end;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&__label,
|
|
92
|
+
&__sub-label {
|
|
93
|
+
overflow: hidden;
|
|
94
|
+
text-overflow: ellipsis;
|
|
95
|
+
white-space: nowrap;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&__label {
|
|
99
|
+
font-size: var(--wr-bullet-chart-label-font-size);
|
|
100
|
+
font-weight: var(--wr-bullet-chart-label-font-weight);
|
|
101
|
+
line-height: var(--wr-bullet-chart-track-height);
|
|
102
|
+
color: var(--wr-bullet-chart-label-color);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
&__sub-label {
|
|
106
|
+
font-size: var(--wr-bullet-chart-sub-label-font-size);
|
|
107
|
+
line-height: var(--wr-bullet-chart-sub-label-line-height);
|
|
108
|
+
color: var(--wr-bullet-chart-sub-label-color);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// The positioned box every mark is placed in by the shares the component writes, as
|
|
112
|
+
// percentages of its width; nothing in it is in flow.
|
|
113
|
+
&__track {
|
|
114
|
+
grid-area: track;
|
|
115
|
+
align-self: start;
|
|
116
|
+
position: relative;
|
|
117
|
+
block-size: var(--wr-bullet-chart-track-height);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
&__ranges {
|
|
121
|
+
position: absolute;
|
|
122
|
+
inset: 0;
|
|
123
|
+
overflow: hidden;
|
|
124
|
+
border-radius: var(--wr-bullet-chart-track-radius);
|
|
125
|
+
background: var(--wr-bullet-chart-track-color);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
&__range {
|
|
129
|
+
position: absolute;
|
|
130
|
+
inset-block: 0;
|
|
131
|
+
inset-inline-start: calc(var(--wr-bullet-chart-start, 0) * 100%);
|
|
132
|
+
inline-size: calc(var(--wr-bullet-chart-size, 0) * 100%);
|
|
133
|
+
background: color-mix(
|
|
134
|
+
in srgb,
|
|
135
|
+
var(--wr-bullet-chart-range-end) var(--wr-bullet-chart-range-mix, 0%),
|
|
136
|
+
var(--wr-bullet-chart-range-start)
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
// The end of the last band, as a rule just past it. A last band that reaches the end
|
|
140
|
+
// of the scale puts the rule outside the track, where the layer above clips it, so it
|
|
141
|
+
// shows only where the scale runs on past the last limit.
|
|
142
|
+
&:last-child::after {
|
|
143
|
+
content: '';
|
|
144
|
+
position: absolute;
|
|
145
|
+
inset-block: 0;
|
|
146
|
+
inset-inline-start: 100%;
|
|
147
|
+
border-inline-start: 1px solid var(--wr-bullet-chart-range-edge-color);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// A third of the line high and centred on it, from zero to the value; a zero value is
|
|
152
|
+
// still a sliver, since it is a reading.
|
|
153
|
+
&__bar {
|
|
154
|
+
position: absolute;
|
|
155
|
+
inset-block: calc(50% - var(--wr-bullet-chart-bar-thickness) / 2);
|
|
156
|
+
inset-inline-start: calc(var(--wr-bullet-chart-start, 0) * 100%);
|
|
157
|
+
inline-size: calc(var(--wr-bullet-chart-size, 0) * 100%);
|
|
158
|
+
min-inline-size: 1px;
|
|
159
|
+
background: var(--wr-bullet-chart-value-color);
|
|
160
|
+
transition:
|
|
161
|
+
inset-inline-start var(--wr-duration-slow) var(--wr-ease-out),
|
|
162
|
+
inline-size var(--wr-duration-slow) var(--wr-ease-out);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Across the line on its value, held inside the drawing at either end so no part of it
|
|
166
|
+
// is cut off or reaches past the chart's box.
|
|
167
|
+
&__target {
|
|
168
|
+
position: absolute;
|
|
169
|
+
inset-block: calc(50% - var(--wr-bullet-chart-target-length) / 2);
|
|
170
|
+
inset-inline-start: clamp(
|
|
171
|
+
0px,
|
|
172
|
+
calc(var(--wr-bullet-chart-at, 0) * 100% - var(--wr-bullet-chart-target-thickness) / 2),
|
|
173
|
+
calc(100% - var(--wr-bullet-chart-target-thickness))
|
|
174
|
+
);
|
|
175
|
+
inline-size: var(--wr-bullet-chart-target-thickness);
|
|
176
|
+
background: var(--wr-bullet-chart-target-color);
|
|
177
|
+
outline: var(--wr-bullet-chart-target-ring-width) solid var(--wr-bullet-chart-target-ring);
|
|
178
|
+
transition: inset-inline-start var(--wr-duration-slow) var(--wr-ease-out);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// As wide as the drawing, so a tick's share is of the drawing too. Every tick is out of
|
|
182
|
+
// flow, so the strip is given the height of a mark and a line of text.
|
|
183
|
+
&__scale {
|
|
184
|
+
grid-area: scale;
|
|
185
|
+
position: relative;
|
|
186
|
+
block-size: calc(var(--wr-bullet-chart-tick-length) + var(--wr-bullet-chart-tick-line-height));
|
|
187
|
+
margin-block-start: var(--wr-bullet-chart-scale-gap);
|
|
188
|
+
font-size: var(--wr-bullet-chart-tick-font-size);
|
|
189
|
+
line-height: var(--wr-bullet-chart-tick-line-height);
|
|
190
|
+
color: var(--wr-bullet-chart-tick-color);
|
|
191
|
+
font-variant-numeric: tabular-nums;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// A box of no width on the tick's value, its mark and label centred on it — so it is
|
|
195
|
+
// centred in either direction with no transform — and aligned inwards at either end of
|
|
196
|
+
// the scale, so the first and last labels stay over the drawing.
|
|
197
|
+
&__tick {
|
|
198
|
+
position: absolute;
|
|
199
|
+
inset-block-start: 0;
|
|
200
|
+
inset-inline-start: calc(var(--wr-bullet-chart-at, 0) * 100%);
|
|
201
|
+
inline-size: 0;
|
|
202
|
+
display: flex;
|
|
203
|
+
flex-direction: column;
|
|
204
|
+
align-items: center;
|
|
205
|
+
|
|
206
|
+
&::before {
|
|
207
|
+
content: '';
|
|
208
|
+
block-size: var(--wr-bullet-chart-tick-length);
|
|
209
|
+
border-inline-start: 1px solid var(--wr-bullet-chart-tick-color);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
&--start {
|
|
213
|
+
align-items: flex-start;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
&--end {
|
|
217
|
+
align-items: flex-end;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Its direction follows its own text (`plaintext`), as the waterfall's and the box
|
|
222
|
+
// plot's ticks do: a negative tick is a `-` in front of digits, neither of which has a
|
|
223
|
+
// direction of its own, and under RTL the sign would land on the far side — `20-`. It is
|
|
224
|
+
// shrunk to its text in the zero-width column above, so it keeps its place either way.
|
|
225
|
+
&__tick-label {
|
|
226
|
+
white-space: nowrap;
|
|
227
|
+
unicode-bidi: plaintext;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// The bar and the marker are empty boxes painted by `background`, which forced colors
|
|
232
|
+
// resets to `Canvas` — they would vanish into the page. They keep their paint and
|
|
233
|
+
// take the system's text colour; the bands lose their greys to the page colour, so each
|
|
234
|
+
// one's start is drawn as a rule in the system's muted colour, as is the last one's end,
|
|
235
|
+
// and the track gets an edge.
|
|
236
|
+
@media (forced-colors: active) {
|
|
237
|
+
.wr-bullet-chart {
|
|
238
|
+
--wr-bullet-chart-track-color: Canvas;
|
|
239
|
+
--wr-bullet-chart-range-edge-color: GrayText;
|
|
240
|
+
--wr-bullet-chart-value-color: CanvasText;
|
|
241
|
+
--wr-bullet-chart-target-color: CanvasText;
|
|
242
|
+
--wr-bullet-chart-target-ring: Canvas;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.wr-bullet-chart__ranges {
|
|
246
|
+
outline: 1px solid CanvasText;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.wr-bullet-chart__range {
|
|
250
|
+
forced-color-adjust: none;
|
|
251
|
+
background: Canvas;
|
|
252
|
+
border-inline-start: 1px solid GrayText;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.wr-bullet-chart__bar,
|
|
256
|
+
.wr-bullet-chart__target {
|
|
257
|
+
forced-color-adjust: none;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// The bar grows to its value and the marker slides to its target; with reduced motion
|
|
262
|
+
// both land there at once.
|
|
263
|
+
@media (prefers-reduced-motion: reduce) {
|
|
264
|
+
.wr-bullet-chart__bar,
|
|
265
|
+
.wr-bullet-chart__target {
|
|
266
|
+
transition: none;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
@use '../../../theme/styles' as theme;
|
|
2
2
|
@use '../../../popover/styles'; // the `.wr-tooltip` chip the hover tooltip renders into
|
|
3
3
|
|
|
4
|
+
// Styles for the entry points this component's own markup renders. With `dataTable`, the
|
|
5
|
+
// figures render as a `<wr-chart-table>` beside the grid, which its own sheet clips out of
|
|
6
|
+
// sight.
|
|
7
|
+
@use '../../core/styles' as core-styles; // WrChartTable
|
|
8
|
+
|
|
4
9
|
.wr-calendar-heatmap {
|
|
5
10
|
--wr-calendar-heatmap-font-family: var(--wr-font-family-base);
|
|
6
11
|
--wr-calendar-heatmap-grid-gap: var(--wr-space-sm);
|
|
7
12
|
--wr-calendar-heatmap-weekday-font-size: var(--wr-text-xs);
|
|
8
13
|
--wr-calendar-heatmap-weekday-line-height: var(--wr-leading-none);
|
|
9
14
|
--wr-calendar-heatmap-month-font-size: var(--wr-text-xs);
|
|
15
|
+
// The weekday and month names, muted as an axis' labels are on every chart.
|
|
16
|
+
--wr-calendar-heatmap-label-color: var(--wr-color-on-surface-muted);
|
|
10
17
|
|
|
11
18
|
display: inline-block;
|
|
19
|
+
// The containing block of the out-of-flow `dataTable` copy, as on every chart that
|
|
20
|
+
// renders one: in a scroller it would otherwise keep its place in the scrolled content.
|
|
21
|
+
position: relative;
|
|
12
22
|
// A year is 53 columns of a FIXED cell size, so the grid has no reflow in it:
|
|
13
23
|
// its intrinsic width is ~731px whatever the container, and without a cap it
|
|
14
24
|
// escaped the card it sits in and gave the whole document a 397px horizontal
|
|
@@ -25,7 +35,13 @@
|
|
|
25
35
|
// legible.
|
|
26
36
|
overflow-y: hidden;
|
|
27
37
|
font-family: var(--wr-calendar-heatmap-font-family);
|
|
28
|
-
color: var(--wr-
|
|
38
|
+
color: var(--wr-calendar-heatmap-label-color);
|
|
39
|
+
|
|
40
|
+
// The host is a tab stop while it scrolls (see the component), so the keyboard can move
|
|
41
|
+
// it. Outset: an element's own `overflow` does not clip its outline.
|
|
42
|
+
&:focus-visible {
|
|
43
|
+
@include theme.focus-ring;
|
|
44
|
+
}
|
|
29
45
|
|
|
30
46
|
&__grid {
|
|
31
47
|
display: grid;
|
|
@@ -42,7 +58,7 @@
|
|
|
42
58
|
grid-template-rows: repeat(7, var(--wr-calendar-heatmap-cell-size));
|
|
43
59
|
gap: var(--wr-calendar-heatmap-cell-gap);
|
|
44
60
|
font-size: var(--wr-calendar-heatmap-weekday-font-size);
|
|
45
|
-
color: var(--wr-
|
|
61
|
+
color: var(--wr-calendar-heatmap-label-color);
|
|
46
62
|
align-items: center;
|
|
47
63
|
}
|
|
48
64
|
|
|
@@ -65,7 +81,7 @@
|
|
|
65
81
|
&__months {
|
|
66
82
|
grid-area: months;
|
|
67
83
|
font-size: var(--wr-calendar-heatmap-month-font-size);
|
|
68
|
-
color: var(--wr-
|
|
84
|
+
color: var(--wr-calendar-heatmap-label-color);
|
|
69
85
|
}
|
|
70
86
|
|
|
71
87
|
&__month {
|
|
@@ -98,5 +114,11 @@
|
|
|
98
114
|
&:hover {
|
|
99
115
|
transform: scale(1.4);
|
|
100
116
|
}
|
|
117
|
+
|
|
118
|
+
// The hovered square still grows, so the pointer's place stays marked; it just lands
|
|
119
|
+
// there at once rather than tweening on every square the pointer crosses.
|
|
120
|
+
@media (prefers-reduced-motion: reduce) {
|
|
121
|
+
transition: none;
|
|
122
|
+
}
|
|
101
123
|
}
|
|
102
124
|
}
|