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,13 +1,29 @@
|
|
|
1
1
|
@use '../../../theme/styles' as theme;
|
|
2
2
|
|
|
3
|
+
// Styles for the entry points this component's own markup renders. The legend is a
|
|
4
|
+
// `ul[wr-chart-legend]`, so `@use 'ngwr/charts/line-chart'` alone draws it styled.
|
|
5
|
+
@use '../../chart-legend/styles' as chart-legend-styles; // WrChartLegend
|
|
6
|
+
// With `dataTable`, the figures render as a `<wr-chart-table>` beside the plot, which
|
|
7
|
+
// its own sheet clips out of sight.
|
|
8
|
+
@use '../../core/styles' as core-styles; // WrChartTable
|
|
9
|
+
|
|
3
10
|
.wr-line-chart {
|
|
4
11
|
--wr-line-chart-font-family: var(--wr-font-family-base);
|
|
12
|
+
--wr-line-chart-color: var(--wr-color-on-surface);
|
|
13
|
+
// The horizontal gridlines, as faint as every chart's; the hover crosshair, and the
|
|
14
|
+
// centre of the ring round each marker it reads.
|
|
15
|
+
--wr-line-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
|
|
16
|
+
--wr-line-chart-crosshair-color: var(--wr-color-on-surface-muted);
|
|
17
|
+
--wr-line-chart-hover-center: var(--wr-color-surface);
|
|
5
18
|
// The room round the drawing inside the plot, which the dots and the hover ring
|
|
6
19
|
// overhang into: the drawing runs edge to edge, so a point at either end is drawn
|
|
7
20
|
// half outside it. The y labels read the block one to meet the gridlines, the x labels
|
|
8
21
|
// and the tooltip the inline one to meet the points.
|
|
9
22
|
--wr-line-chart-plot-inset-x: var(--wr-space-md);
|
|
10
23
|
--wr-line-chart-plot-inset-y: var(--wr-space-sm);
|
|
24
|
+
// How much of its series' colour a `showArea` fill takes: faint enough that the
|
|
25
|
+
// gridlines and every other series' line read through where fills overlap.
|
|
26
|
+
--wr-line-chart-area-opacity: 0.15;
|
|
11
27
|
|
|
12
28
|
// Where a point is, for the x labels and the tooltip. Both sit in a box as wide as the
|
|
13
29
|
// plot — the drawing plus its inline padding — and are handed the point's x as a
|
|
@@ -20,10 +36,27 @@
|
|
|
20
36
|
$point: calc($inset + (100% - 2 * $inset) * $x / 100);
|
|
21
37
|
$room-start: calc($inset + (100cqw - 2 * $inset) * $x / 100);
|
|
22
38
|
$room-end: calc($inset + (100cqw - 2 * $inset) * (100 - $x) / 100);
|
|
39
|
+
// How far a readout beside the crosshair keeps from it: the hover marker's 6px radius
|
|
40
|
+
// and as much again. The component's `BESIDE`, which it places the readout by.
|
|
41
|
+
$beside: 12px;
|
|
23
42
|
|
|
24
43
|
display: block;
|
|
44
|
+
// The containing block of the `dataTable` copy, which is out of flow and sits beside
|
|
45
|
+
// the plot rather than inside it. With a static host that box resolved against the
|
|
46
|
+
// nearest positioned ancestor outside the chart, often the page, and inside an
|
|
47
|
+
// unpositioned scroller the 1px box kept its place in the scrolled content: measured
|
|
48
|
+
// in Chromium, a chart 2000px down a 300px scroller grew the page from 600px to
|
|
49
|
+
// 2241px of blank scroll. No z-index, so no stacking context; the tooltip already
|
|
50
|
+
// resolves against the plot.
|
|
51
|
+
position: relative;
|
|
25
52
|
font-family: var(--wr-line-chart-font-family);
|
|
26
|
-
color: var(--wr-
|
|
53
|
+
color: var(--wr-line-chart-color);
|
|
54
|
+
|
|
55
|
+
// A stacked chart's bands meet without overlapping, so each fill can carry twice the
|
|
56
|
+
// colour and still hide nothing.
|
|
57
|
+
&--stacked {
|
|
58
|
+
--wr-line-chart-area-opacity: 0.3;
|
|
59
|
+
}
|
|
27
60
|
|
|
28
61
|
&__legend {
|
|
29
62
|
--wr-line-chart-legend-margin-bottom: var(--wr-space-md);
|
|
@@ -41,11 +74,17 @@
|
|
|
41
74
|
&__legend-item {
|
|
42
75
|
--wr-line-chart-legend-item-gap: var(--wr-space-sm);
|
|
43
76
|
--wr-line-chart-legend-item-font-size: var(--wr-text-xs);
|
|
77
|
+
// A toggleable row's button lays out the key and the name itself, from the shared
|
|
78
|
+
// legend's own hook, so that hook follows this one.
|
|
79
|
+
--wr-chart-legend-item-gap: var(--wr-line-chart-legend-item-gap);
|
|
44
80
|
|
|
45
81
|
display: inline-flex;
|
|
46
82
|
align-items: center;
|
|
47
83
|
gap: var(--wr-line-chart-legend-item-gap);
|
|
48
84
|
font-size: var(--wr-line-chart-legend-item-font-size);
|
|
85
|
+
// The chart's own colour, as before the shared legend, which paints its rows
|
|
86
|
+
// `--wr-chart-legend-color`.
|
|
87
|
+
color: inherit;
|
|
49
88
|
}
|
|
50
89
|
|
|
51
90
|
// A short line rather than a dot, because it now carries the series' dash
|
|
@@ -62,7 +101,8 @@
|
|
|
62
101
|
|
|
63
102
|
// The y labels at inline start, the plot beside them, and the x labels under the plot
|
|
64
103
|
// alone. A grid follows `direction`, so the gutter is on the right under RTL with no
|
|
65
|
-
// rule of its own; the drawing itself
|
|
104
|
+
// rule of its own; the drawing itself keeps time running left to right, as every SVG
|
|
105
|
+
// chart here does — the HTML layouts (bar, bullet, treemap) are the ones that mirror.
|
|
66
106
|
&__body {
|
|
67
107
|
display: grid;
|
|
68
108
|
grid-template-columns: auto minmax(0, 1fr);
|
|
@@ -98,12 +138,17 @@
|
|
|
98
138
|
|
|
99
139
|
// `top` in percent is the grid area's height — the cell is the containing block — and
|
|
100
140
|
// relative positioning leaves the label's place in flow, so the column keeps its width.
|
|
141
|
+
// Shrunk to its text against the plot's side of the column, so its own direction can
|
|
142
|
+
// follow its text (`plaintext`): a negative tick is a `-` in front of digits, neither of
|
|
143
|
+
// which has a direction, and under RTL the sign would land on the far side — `350-`.
|
|
101
144
|
&__tick {
|
|
102
145
|
$inset: var(--wr-line-chart-plot-inset-y);
|
|
103
146
|
|
|
104
147
|
grid-area: 1 / 1;
|
|
105
148
|
align-self: start;
|
|
149
|
+
justify-self: end;
|
|
106
150
|
position: relative;
|
|
151
|
+
unicode-bidi: plaintext;
|
|
107
152
|
top: calc($inset + (100% - 2 * $inset) * var(--wr-line-chart-y, 0) / 100);
|
|
108
153
|
transform: translateY(-50%);
|
|
109
154
|
}
|
|
@@ -115,6 +160,25 @@
|
|
|
115
160
|
padding: var(--wr-line-chart-plot-inset-y) var(--wr-line-chart-plot-inset-x);
|
|
116
161
|
}
|
|
117
162
|
|
|
163
|
+
// The colour is the series', an attribute of the path; only its share is the hook's.
|
|
164
|
+
// A fill keeps it under forced colors, as the lines keep their strokes, and it stays
|
|
165
|
+
// under every line, so a reader who cannot tell the fills apart still has the dashes.
|
|
166
|
+
&__area {
|
|
167
|
+
fill-opacity: var(--wr-line-chart-area-opacity);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&__grid-line {
|
|
171
|
+
stroke: var(--wr-line-chart-grid-color);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
&__crosshair {
|
|
175
|
+
stroke: var(--wr-line-chart-crosshair-color);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
&__hover-dot-center {
|
|
179
|
+
stroke: var(--wr-line-chart-hover-center);
|
|
180
|
+
}
|
|
181
|
+
|
|
118
182
|
// The plot's drawing by its class, never a bare `svg`: the legend swatch is an
|
|
119
183
|
// `<svg>` too, and `.wr-line-chart svg` (0,1,1) outranks `&__swatch` (0,1,0), so
|
|
120
184
|
// the 1rem × 0.125rem dash stretched to the legend row — measured in Chromium at
|
|
@@ -148,6 +212,8 @@
|
|
|
148
212
|
--wr-line-chart-tooltip-padding-y: var(--wr-space-sm);
|
|
149
213
|
--wr-line-chart-tooltip-padding-x: var(--wr-space-md);
|
|
150
214
|
--wr-line-chart-tooltip-font-size: var(--wr-text-xs);
|
|
215
|
+
--wr-line-chart-tooltip-bg: var(--wr-color-surface);
|
|
216
|
+
--wr-line-chart-tooltip-shadow: var(--wr-shadow-sm);
|
|
151
217
|
|
|
152
218
|
position: absolute;
|
|
153
219
|
// rtl-ok: the SVG's own x, and SVG coordinates do not flip with `direction`
|
|
@@ -162,10 +228,10 @@
|
|
|
162
228
|
// any that does not.
|
|
163
229
|
// rtl-ok: the SVG's own x, and SVG coordinates do not flip with `direction`
|
|
164
230
|
transform: translate(clamp(calc(-1 * $room-start), -50%, calc($room-end - 100%)), 0.5rem);
|
|
165
|
-
background: var(--wr-
|
|
231
|
+
background: var(--wr-line-chart-tooltip-bg);
|
|
166
232
|
border: 1px solid var(--wr-line-chart-tooltip-border);
|
|
167
233
|
border-radius: var(--wr-line-chart-tooltip-radius);
|
|
168
|
-
box-shadow: var(--wr-shadow
|
|
234
|
+
box-shadow: var(--wr-line-chart-tooltip-shadow);
|
|
169
235
|
padding: var(--wr-line-chart-tooltip-padding-y) var(--wr-line-chart-tooltip-padding-x);
|
|
170
236
|
font-size: var(--wr-line-chart-tooltip-font-size);
|
|
171
237
|
pointer-events: none;
|
|
@@ -173,6 +239,29 @@
|
|
|
173
239
|
min-width: 6rem;
|
|
174
240
|
}
|
|
175
241
|
|
|
242
|
+
// Where the top would cover a marker the readout reads, which the component works out
|
|
243
|
+
// from its size: at the bottom of the plot, as far inside it as the top one sits, or —
|
|
244
|
+
// where the bottom would too — at the top beside the crosshair, every marker being on
|
|
245
|
+
// it, `$beside` off it on the side with more room and still never past either end. At
|
|
246
|
+
// the top always, it hid every reading in the plot's upper band under the chip that gave
|
|
247
|
+
// its value — a third of the rings on the docs' own demos.
|
|
248
|
+
&__tooltip--below {
|
|
249
|
+
top: auto;
|
|
250
|
+
bottom: var(--wr-line-chart-plot-inset-y);
|
|
251
|
+
// rtl-ok: the SVG's own x, and SVG coordinates do not flip with `direction`
|
|
252
|
+
transform: translate(clamp(calc(-1 * $room-start), -50%, calc($room-end - 100%)), -0.5rem);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
&__tooltip--left {
|
|
256
|
+
// rtl-ok: the SVG's own x, and SVG coordinates do not flip with `direction`
|
|
257
|
+
transform: translate(clamp(calc(-1 * $room-start), calc(-100% - $beside), calc($room-end - 100%)), 0.5rem);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
&__tooltip--right {
|
|
261
|
+
// rtl-ok: the SVG's own x, and SVG coordinates do not flip with `direction`
|
|
262
|
+
transform: translate(clamp(calc(-1 * $room-start), $beside, calc($room-end - 100%)), 0.5rem);
|
|
263
|
+
}
|
|
264
|
+
|
|
176
265
|
&__tooltip-label {
|
|
177
266
|
--wr-line-chart-tooltip-label-font-weight: var(--wr-font-weight-semibold);
|
|
178
267
|
--wr-line-chart-tooltip-label-margin-bottom: var(--wr-space-xs);
|
|
@@ -191,29 +280,38 @@
|
|
|
191
280
|
}
|
|
192
281
|
|
|
193
282
|
&__tooltip-name {
|
|
283
|
+
--wr-line-chart-tooltip-name-color: var(--wr-color-on-surface-muted);
|
|
284
|
+
|
|
194
285
|
flex: 1 1 auto;
|
|
195
|
-
color: var(--wr-
|
|
286
|
+
color: var(--wr-line-chart-tooltip-name-color);
|
|
196
287
|
}
|
|
197
288
|
|
|
198
289
|
&__tooltip-value {
|
|
199
290
|
--wr-line-chart-tooltip-value-font-weight: var(--wr-font-weight-semibold);
|
|
200
291
|
|
|
201
292
|
font-weight: var(--wr-line-chart-tooltip-value-font-weight);
|
|
293
|
+
// As a tick: the sign of `-350` stays before the digits on an RTL page.
|
|
294
|
+
unicode-bidi: plaintext;
|
|
202
295
|
}
|
|
203
296
|
|
|
204
297
|
&__x-labels {
|
|
205
298
|
--wr-line-chart-x-labels-margin-top: var(--wr-space-xs);
|
|
206
299
|
--wr-line-chart-x-labels-font-size: var(--wr-text-xs);
|
|
300
|
+
--wr-line-chart-x-labels-line-height: var(--wr-text-xs-leading);
|
|
301
|
+
--wr-line-chart-x-labels-color: var(--wr-color-on-surface-muted);
|
|
207
302
|
|
|
208
303
|
grid-column: 2;
|
|
209
304
|
grid-row: 2;
|
|
210
305
|
position: relative;
|
|
211
306
|
margin-top: var(--wr-line-chart-x-labels-margin-top);
|
|
212
307
|
font-size: var(--wr-line-chart-x-labels-font-size);
|
|
308
|
+
line-height: var(--wr-line-chart-x-labels-line-height);
|
|
213
309
|
// The labels are absolutely positioned onto their points, so the strip has no
|
|
214
310
|
// content of its own to give it a height. Without this it collapses and the
|
|
215
|
-
// labels overlap whatever the page puts under the chart.
|
|
216
|
-
|
|
311
|
+
// labels overlap whatever the page puts under the chart. One line of the labels' own
|
|
312
|
+
// leading: `1.25em` with the page's line-height left each label's box hanging 6px
|
|
313
|
+
// below the chart's, over whatever came next.
|
|
314
|
+
height: 1lh;
|
|
217
315
|
// A `translateX` percentage means the LABEL's own width, so the room left beside it
|
|
218
316
|
// has to arrive in another unit — `cqw` is this strip's. Every label is out of flow,
|
|
219
317
|
// so the strip contributes no intrinsic width either way and the containment this
|
|
@@ -245,7 +343,42 @@
|
|
|
245
343
|
overflow: hidden;
|
|
246
344
|
text-overflow: ellipsis;
|
|
247
345
|
font-size: inherit;
|
|
248
|
-
color: var(--wr-
|
|
346
|
+
color: var(--wr-line-chart-x-labels-color);
|
|
249
347
|
white-space: nowrap;
|
|
348
|
+
// A label is the host's own text, in whatever language: it takes its direction from
|
|
349
|
+
// that text. Its box is as wide as its text, so where it sits does not move.
|
|
350
|
+
unicode-bidi: plaintext;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// Every label once, a line each, laid out and never seen: the component measures the
|
|
354
|
+
// widest off it to decide how many labels print. Never wider than the strip, which is
|
|
355
|
+
// the most room a label could have, and clipped there, so a long one adds no overflow.
|
|
356
|
+
&__x-probe {
|
|
357
|
+
position: absolute;
|
|
358
|
+
inset-block-start: 0;
|
|
359
|
+
inset-inline-start: 0;
|
|
360
|
+
width: max-content;
|
|
361
|
+
max-width: 100%;
|
|
362
|
+
overflow: hidden;
|
|
363
|
+
visibility: hidden;
|
|
364
|
+
white-space: pre;
|
|
365
|
+
pointer-events: none;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Forced colors keeps the SVG strokes as written, so the strokes written in theme colours
|
|
370
|
+
// would keep colours the forced palette no longer has: the gridlines would all but vanish
|
|
371
|
+
// on a dark canvas, and the hovered marker's centre would be a disc of the old page.
|
|
372
|
+
@media (forced-colors: active) {
|
|
373
|
+
.wr-line-chart__grid-line {
|
|
374
|
+
stroke: GrayText;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.wr-line-chart__crosshair {
|
|
378
|
+
stroke: CanvasText;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.wr-line-chart__hover-dot-center {
|
|
382
|
+
stroke: Canvas;
|
|
250
383
|
}
|
|
251
384
|
}
|
|
@@ -1,20 +1,34 @@
|
|
|
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. The legend is a
|
|
5
|
+
// `ul[wr-chart-legend]`, so `@use 'ngwr/charts/meter-group'` alone draws it styled.
|
|
6
|
+
@use '../../chart-legend/styles' as chart-legend-styles; // WrChartLegend
|
|
7
|
+
|
|
4
8
|
.wr-meter-group {
|
|
9
|
+
--wr-meter-group-gap: var(--wr-space-sm);
|
|
10
|
+
--wr-meter-group-font-family: var(--wr-font-family-base);
|
|
11
|
+
--wr-meter-group-color: var(--wr-color-on-surface);
|
|
12
|
+
--wr-meter-group-bar-height: 0.625rem;
|
|
13
|
+
--wr-meter-group-bar-radius: var(--wr-border-radius-pill);
|
|
14
|
+
// The part of the scale nothing fills, and the gap laid between two slices in it.
|
|
15
|
+
--wr-meter-group-track-bg: var(--wr-color-fill-strong);
|
|
16
|
+
--wr-meter-group-slice-gap: calc(var(--wr-space-xs) / 2);
|
|
17
|
+
--wr-meter-group-legend-value-color: var(--wr-color-on-surface-muted);
|
|
18
|
+
|
|
5
19
|
display: flex;
|
|
6
20
|
flex-direction: column;
|
|
7
|
-
gap: var(--wr-
|
|
8
|
-
font-family: var(--wr-font-family
|
|
9
|
-
color: var(--wr-
|
|
21
|
+
gap: var(--wr-meter-group-gap);
|
|
22
|
+
font-family: var(--wr-meter-group-font-family);
|
|
23
|
+
color: var(--wr-meter-group-color);
|
|
10
24
|
|
|
11
25
|
&__bar {
|
|
12
26
|
display: flex;
|
|
13
27
|
width: 100%;
|
|
14
|
-
height:
|
|
15
|
-
border-radius: var(--wr-
|
|
28
|
+
height: var(--wr-meter-group-bar-height);
|
|
29
|
+
border-radius: var(--wr-meter-group-bar-radius);
|
|
16
30
|
overflow: hidden;
|
|
17
|
-
background: var(--wr-
|
|
31
|
+
background: var(--wr-meter-group-track-bg);
|
|
18
32
|
|
|
19
33
|
// Forced colors paints the track `Canvas`, the page itself, so the part of
|
|
20
34
|
// the scale nothing fills needs an edge to be read against.
|
|
@@ -37,24 +51,39 @@
|
|
|
37
51
|
// so every boundary sits at its exact share; it is painted after every slice, so it
|
|
38
52
|
// covers the next one rather than hiding under it, as a spread shadow would; and a
|
|
39
53
|
// zero slice's outline is the one gap where its two neighbours meet.
|
|
40
|
-
outline:
|
|
54
|
+
outline: var(--wr-meter-group-slice-gap) solid var(--wr-meter-group-track-bg);
|
|
55
|
+
|
|
56
|
+
// The width follows a toggled legend row as well as new data, so every press would
|
|
57
|
+
// tween the whole bar. Under reduced motion it lands at once.
|
|
58
|
+
@media (prefers-reduced-motion: reduce) {
|
|
59
|
+
transition: none;
|
|
60
|
+
}
|
|
41
61
|
}
|
|
42
62
|
|
|
43
63
|
&__legend {
|
|
64
|
+
--wr-meter-group-legend-gap-y: var(--wr-space-sm);
|
|
65
|
+
--wr-meter-group-legend-gap-x: var(--wr-space-lg);
|
|
66
|
+
|
|
44
67
|
list-style: none;
|
|
45
68
|
margin: 0;
|
|
46
69
|
padding: 0;
|
|
47
70
|
display: flex;
|
|
48
71
|
flex-wrap: wrap;
|
|
49
|
-
gap: var(--wr-
|
|
72
|
+
gap: var(--wr-meter-group-legend-gap-y) var(--wr-meter-group-legend-gap-x);
|
|
50
73
|
}
|
|
51
74
|
|
|
52
75
|
&__legend-item {
|
|
76
|
+
--wr-meter-group-legend-item-gap: var(--wr-space-sm);
|
|
77
|
+
--wr-meter-group-legend-item-font-size: var(--wr-text-xs);
|
|
78
|
+
// A toggleable row's button lays out the key, the name and the value itself, from the
|
|
79
|
+
// shared legend's own hook, so that hook follows this one.
|
|
80
|
+
--wr-chart-legend-item-gap: var(--wr-meter-group-legend-item-gap);
|
|
81
|
+
|
|
53
82
|
display: inline-flex;
|
|
54
83
|
align-items: center;
|
|
55
|
-
gap: var(--wr-
|
|
56
|
-
font-size: var(--wr-
|
|
57
|
-
color: var(--wr-
|
|
84
|
+
gap: var(--wr-meter-group-legend-item-gap);
|
|
85
|
+
font-size: var(--wr-meter-group-legend-item-font-size);
|
|
86
|
+
color: var(--wr-meter-group-color);
|
|
58
87
|
}
|
|
59
88
|
|
|
60
89
|
&__swatch {
|
|
@@ -67,11 +96,13 @@
|
|
|
67
96
|
}
|
|
68
97
|
|
|
69
98
|
&__legend-label {
|
|
70
|
-
font-weight: var(--wr-font-weight-medium);
|
|
99
|
+
--wr-meter-group-legend-label-font-weight: var(--wr-font-weight-medium);
|
|
100
|
+
|
|
101
|
+
font-weight: var(--wr-meter-group-legend-label-font-weight);
|
|
71
102
|
}
|
|
72
103
|
|
|
73
104
|
&__legend-value {
|
|
74
|
-
color: var(--wr-
|
|
105
|
+
color: var(--wr-meter-group-legend-value-color);
|
|
75
106
|
font-variant-numeric: tabular-nums;
|
|
76
107
|
}
|
|
77
108
|
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
@use '../../../theme/styles' as theme;
|
|
2
|
+
@use '../../../popover/styles'; // the `.wr-tooltip` chip the hover tooltip renders into
|
|
3
|
+
|
|
4
|
+
// Styles for the entry points this component's own markup renders. The legend is a
|
|
5
|
+
// `ul[wr-chart-legend]`, so `@use 'ngwr/charts/radar-chart'` alone draws it styled.
|
|
6
|
+
@use '../../chart-legend/styles' as chart-legend-styles; // WrChartLegend
|
|
7
|
+
// With `dataTable`, the figures render as a `<wr-chart-table>` beside the drawing, which
|
|
8
|
+
// its own sheet clips out of sight.
|
|
9
|
+
@use '../../core/styles' as core-styles; // WrChartTable
|
|
10
|
+
|
|
11
|
+
.wr-radar-chart {
|
|
12
|
+
--wr-radar-chart-font-family: var(--wr-font-family-base);
|
|
13
|
+
--wr-radar-chart-color: var(--wr-color-on-surface);
|
|
14
|
+
--wr-radar-chart-gap: var(--wr-space-lg);
|
|
15
|
+
// The axis names. They sit outside the outer ring, so the drawing has a gutter round it
|
|
16
|
+
// as wide as a name may run beside it and as tall as one line above and below it; a
|
|
17
|
+
// name longer than its room is ellipsised, and the tooltip and the data table carry it
|
|
18
|
+
// whole.
|
|
19
|
+
--wr-radar-chart-label-font-size: var(--wr-text-xs);
|
|
20
|
+
--wr-radar-chart-label-line-height: var(--wr-text-xs-leading);
|
|
21
|
+
--wr-radar-chart-label-color: var(--wr-color-on-surface);
|
|
22
|
+
// Far enough out that the name at twelve o'clock clears the outer ring's value, which
|
|
23
|
+
// sits half a line above that ring beside the same spoke.
|
|
24
|
+
--wr-radar-chart-label-gap: var(--wr-space-sm);
|
|
25
|
+
--wr-radar-chart-label-max-width: 10rem;
|
|
26
|
+
--wr-radar-chart-gutter-x: 5rem;
|
|
27
|
+
--wr-radar-chart-gutter-y: calc(var(--wr-radar-chart-label-line-height) + var(--wr-radar-chart-label-gap));
|
|
28
|
+
// The ring values beside the first axis, muted as every axis' ticks are, with a halo of
|
|
29
|
+
// the surface round each glyph: the first axis carries every series' first value, so an
|
|
30
|
+
// outline leaving it crosses the values more often than not, and the halo keeps a number
|
|
31
|
+
// readable where a line runs behind it while the line still shows round it. A chip with
|
|
32
|
+
// a wash of the surface veiled the outlines under it instead, and on a phone took a
|
|
33
|
+
// large part of a quadrant.
|
|
34
|
+
--wr-radar-chart-ring-label-color: var(--wr-color-on-surface-muted);
|
|
35
|
+
--wr-radar-chart-ring-label-halo: var(--wr-color-surface);
|
|
36
|
+
--wr-radar-chart-ring-label-offset: var(--wr-space-sm);
|
|
37
|
+
// The web, as faint as the line chart's gridlines.
|
|
38
|
+
--wr-radar-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
|
|
39
|
+
--wr-radar-chart-grid-width: 1px;
|
|
40
|
+
// The series: an outline, a faint fill under it, and a dot at every value. In pixels,
|
|
41
|
+
// whatever the drawing's size, since every stroke here does not scale.
|
|
42
|
+
--wr-radar-chart-line-width: 2px;
|
|
43
|
+
--wr-radar-chart-area-opacity: 0.15;
|
|
44
|
+
--wr-radar-chart-dot-size: 6px;
|
|
45
|
+
// What the open tooltip marks: its axis' spoke, and a ring round each value on it.
|
|
46
|
+
--wr-radar-chart-crosshair-color: var(--wr-color-on-surface-muted);
|
|
47
|
+
--wr-radar-chart-hover-center: var(--wr-color-surface);
|
|
48
|
+
|
|
49
|
+
display: inline-flex;
|
|
50
|
+
// The containing block of the out-of-flow `dataTable` copy, as on the line chart: a
|
|
51
|
+
// static host lets that 1px box resolve against an ancestor outside the chart and keep
|
|
52
|
+
// its place in an unpositioned scroller's content. No z-index, so no stacking context.
|
|
53
|
+
position: relative;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: var(--wr-radar-chart-gap);
|
|
57
|
+
max-width: 100%;
|
|
58
|
+
font-family: var(--wr-radar-chart-font-family);
|
|
59
|
+
color: var(--wr-radar-chart-color);
|
|
60
|
+
|
|
61
|
+
// As wide as the drawing — the inline width is `size` — with the gutter as its padding,
|
|
62
|
+
// and never wider than the chart leaves it, so on a phone the drawing shrinks rather
|
|
63
|
+
// than the page scrolling sideways.
|
|
64
|
+
&__surface {
|
|
65
|
+
position: relative;
|
|
66
|
+
box-sizing: content-box;
|
|
67
|
+
max-width: calc(100% - 2 * var(--wr-radar-chart-gutter-x));
|
|
68
|
+
padding: var(--wr-radar-chart-gutter-y) var(--wr-radar-chart-gutter-x);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// The drawing by its class, never a bare `svg`: the legend's keys are `<svg>`s too.
|
|
72
|
+
// Overflow is visible because the outer ring is the drawing's edge, so a dot on it is
|
|
73
|
+
// drawn half outside.
|
|
74
|
+
&__svg {
|
|
75
|
+
display: block;
|
|
76
|
+
width: 100%;
|
|
77
|
+
height: auto;
|
|
78
|
+
overflow: visible;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&__ring,
|
|
82
|
+
&__spoke {
|
|
83
|
+
stroke: var(--wr-radar-chart-grid-color);
|
|
84
|
+
stroke-width: var(--wr-radar-chart-grid-width);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
&__area {
|
|
88
|
+
fill-opacity: var(--wr-radar-chart-area-opacity);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&__line {
|
|
92
|
+
stroke-width: var(--wr-radar-chart-line-width);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&__dot {
|
|
96
|
+
stroke-width: var(--wr-radar-chart-dot-size);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&__crosshair {
|
|
100
|
+
stroke: var(--wr-radar-chart-crosshair-color);
|
|
101
|
+
stroke-width: 1px;
|
|
102
|
+
stroke-dasharray: 3 3;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
&__hover-dot {
|
|
106
|
+
stroke-width: calc(var(--wr-radar-chart-dot-size) * 2);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&__hover-dot-center {
|
|
110
|
+
stroke: var(--wr-radar-chart-hover-center);
|
|
111
|
+
stroke-width: calc(var(--wr-radar-chart-dot-size) * 4 / 3);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Both layers cover the drawing exactly, so a label's percentages are the drawing's.
|
|
115
|
+
// Never hittable: the drawing under them hears the pointer.
|
|
116
|
+
&__ring-labels,
|
|
117
|
+
&__axis-labels {
|
|
118
|
+
position: absolute;
|
|
119
|
+
inset: var(--wr-radar-chart-gutter-y) var(--wr-radar-chart-gutter-x);
|
|
120
|
+
pointer-events: none;
|
|
121
|
+
font-size: var(--wr-radar-chart-label-font-size);
|
|
122
|
+
line-height: var(--wr-radar-chart-label-line-height);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Beside the first axis, just past its spoke and level with its ring, so a value reads
|
|
126
|
+
// against the line it names. Past the spoke rather than on it, because the first
|
|
127
|
+
// axis' dots are on the spoke and a value laid over one would hide it. `top` in
|
|
128
|
+
// percent is the layer's height, which is the drawing's. A fitted scale can run below
|
|
129
|
+
// zero, and a value has no strong character of its own, so `plaintext` keeps the sign
|
|
130
|
+
// of `-20` before its digits on an RTL page.
|
|
131
|
+
&__ring-label {
|
|
132
|
+
position: absolute;
|
|
133
|
+
// rtl-ok: beside the first axis' spoke, which the drawing does not mirror
|
|
134
|
+
left: 50%;
|
|
135
|
+
top: calc(var(--wr-radar-chart-y, 0) * 1%);
|
|
136
|
+
transform: translate(var(--wr-radar-chart-ring-label-offset), -50%);
|
|
137
|
+
color: var(--wr-radar-chart-ring-label-color);
|
|
138
|
+
text-shadow:
|
|
139
|
+
0 0 2px var(--wr-radar-chart-ring-label-halo),
|
|
140
|
+
0 0 2px var(--wr-radar-chart-ring-label-halo),
|
|
141
|
+
0 0 1px var(--wr-radar-chart-ring-label-halo);
|
|
142
|
+
white-space: nowrap;
|
|
143
|
+
font-variant-numeric: tabular-nums;
|
|
144
|
+
unicode-bidi: plaintext;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Each name starts a gap out from the end of its spoke, along the spoke, and is aligned
|
|
148
|
+
// AWAY from the centre by how far its spoke leans: the shift is `(cos - 1) / 2` of its
|
|
149
|
+
// own width and `(sin - 1) / 2` of its height, so a name at three o'clock starts at its
|
|
150
|
+
// point, one at nine ends there, and one at twelve or six is centred on it — and every
|
|
151
|
+
// spoke between leans the same way the name does.
|
|
152
|
+
//
|
|
153
|
+
// Its width is bounded by the room on the side it grows towards: the drawing's share
|
|
154
|
+
// beyond its point plus the gutter, divided by the share of its width that lies on that
|
|
155
|
+
// side. One `max-width` for every quadrant, where per-quadrant rules would have to agree
|
|
156
|
+
// at their borders. jsdom has no layout, so no spec holds the arithmetic — the spec pins
|
|
157
|
+
// the four numbers the template hands this rule instead.
|
|
158
|
+
&__axis-label {
|
|
159
|
+
$x: var(--wr-radar-chart-x, 50);
|
|
160
|
+
$y: var(--wr-radar-chart-y, 50);
|
|
161
|
+
$cos: var(--wr-radar-chart-cos, 0);
|
|
162
|
+
$sin: var(--wr-radar-chart-sin, 0);
|
|
163
|
+
$gap: var(--wr-radar-chart-label-gap);
|
|
164
|
+
$gutter: var(--wr-radar-chart-gutter-x);
|
|
165
|
+
|
|
166
|
+
position: absolute;
|
|
167
|
+
// rtl-ok: the end of the axis' spoke, which does not mirror with `direction`
|
|
168
|
+
left: calc($x * 1% + $cos * $gap);
|
|
169
|
+
top: calc($y * 1% + $sin * $gap);
|
|
170
|
+
transform: translate(calc(($cos - 1) * 50%), calc(($sin - 1) * 50%));
|
|
171
|
+
max-width: min(
|
|
172
|
+
var(--wr-radar-chart-label-max-width),
|
|
173
|
+
calc(($x * 1% + $gutter + $cos * $gap) / max(0.001, (1 - $cos) / 2)),
|
|
174
|
+
calc(((100 - $x) * 1% + $gutter - $cos * $gap) / max(0.001, (1 + $cos) / 2))
|
|
175
|
+
);
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
text-overflow: ellipsis;
|
|
178
|
+
white-space: nowrap;
|
|
179
|
+
color: var(--wr-radar-chart-label-color);
|
|
180
|
+
// A name is the host's own text, in whatever language: it takes its direction from
|
|
181
|
+
// that text. Its box is as wide as its text, so where it sits does not move.
|
|
182
|
+
unicode-bidi: plaintext;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
&__legend {
|
|
186
|
+
justify-content: center;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Forced colors keeps the SVG strokes as written, so the strokes written in theme colours
|
|
191
|
+
// would keep colours the forced palette no longer has: the web would vanish on a dark
|
|
192
|
+
// canvas, and the hovered dot's surface-coloured centre would be a disc of the old page.
|
|
193
|
+
@media (forced-colors: active) {
|
|
194
|
+
.wr-radar-chart__ring,
|
|
195
|
+
.wr-radar-chart__spoke {
|
|
196
|
+
stroke: GrayText;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.wr-radar-chart__crosshair {
|
|
200
|
+
stroke: CanvasText;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.wr-radar-chart__hover-dot-center {
|
|
204
|
+
stroke: Canvas;
|
|
205
|
+
}
|
|
206
|
+
}
|