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,307 @@
|
|
|
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
|
+
// The lengths inside a candle, each against the candle's own height as every percentage
|
|
10
|
+
// inside it is: the upper wick's share and the lower wick's, as the component writes
|
|
11
|
+
// them, and the body's own height between them.
|
|
12
|
+
$-upper: calc(var(--wr-candlestick-chart-upper, 0) * 1%);
|
|
13
|
+
$-lower: calc(var(--wr-candlestick-chart-lower, 0) * 1%);
|
|
14
|
+
$-body: calc(100% - $-upper - $-lower);
|
|
15
|
+
|
|
16
|
+
// The body's height: its own, or `$min` where that is taller.
|
|
17
|
+
@function _body-height($min) {
|
|
18
|
+
@return max($min, $-body);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// The wick at the `$near` end of a body `$min` tall, the other wick's share being `$far`;
|
|
22
|
+
// for the upper one, that is also where the body starts. A body grown past its own height
|
|
23
|
+
// takes the same from both wicks where both have it, so its middle stays on its true
|
|
24
|
+
// middle; it is held inside the candle where one has not, so it never passes the high
|
|
25
|
+
// or the low; and where the whole candle is shorter than the body it is centred on the
|
|
26
|
+
// candle and neither wick is left. Measured from its own end, so the lower wick is the
|
|
27
|
+
// upper one's mirror, and each stops at the grown edge rather than crossing a hollow
|
|
28
|
+
// body's inside.
|
|
29
|
+
@function _wick($min, $near, $far) {
|
|
30
|
+
// What the body leaves of the candle for the two wicks: below zero where it is taller.
|
|
31
|
+
$room: calc(100% - _body-height($min));
|
|
32
|
+
@return clamp(min(calc($room / 2), 0px), calc(($room + $near - $far) / 2), $room);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.wr-candlestick-chart {
|
|
36
|
+
--wr-candlestick-chart-font-family: var(--wr-font-family-base);
|
|
37
|
+
--wr-candlestick-chart-color: var(--wr-color-on-surface);
|
|
38
|
+
// A rising candle and a falling one, named as the waterfall's change up and change
|
|
39
|
+
// down are. The two intents sit within 1.004:1 of each other in luminance, so they are
|
|
40
|
+
// never the only thing that tells the candles apart: a rising body is hollow and a
|
|
41
|
+
// falling one filled, whatever these say. Both measure over 4:1 against the surface in
|
|
42
|
+
// either scheme, past the 3:1 WCAG 1.4.11 asks of a mark a reader needs.
|
|
43
|
+
--wr-candlestick-chart-increase-color: var(--wr-color-success);
|
|
44
|
+
--wr-candlestick-chart-decrease-color: var(--wr-color-danger);
|
|
45
|
+
// The room above and below the drawing inside the plot, which the y labels read to
|
|
46
|
+
// meet their gridlines.
|
|
47
|
+
--wr-candlestick-chart-plot-inset-y: var(--wr-space-sm);
|
|
48
|
+
--wr-candlestick-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
|
|
49
|
+
--wr-candlestick-chart-tick-gap: var(--wr-space-xs);
|
|
50
|
+
--wr-candlestick-chart-tick-font-size: var(--wr-text-xs);
|
|
51
|
+
--wr-candlestick-chart-tick-line-height: var(--wr-text-xs-leading);
|
|
52
|
+
--wr-candlestick-chart-tick-color: var(--wr-color-on-surface-muted);
|
|
53
|
+
// A body is 70% of its slot, never under 1px and never over this; the gap between two
|
|
54
|
+
// candles is the rest of the slot, so it closes as the candles crowd.
|
|
55
|
+
--wr-candlestick-chart-body-max-width: 1.5rem;
|
|
56
|
+
--wr-candlestick-chart-body-border-width: 1px;
|
|
57
|
+
--wr-candlestick-chart-wick-width: 1px;
|
|
58
|
+
// The band behind the candle being read, under the gridlines, so they read across it.
|
|
59
|
+
--wr-candlestick-chart-cursor-bg: var(--wr-color-hover);
|
|
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-candlestick-chart-font-family);
|
|
67
|
+
color: var(--wr-candlestick-chart-color);
|
|
68
|
+
|
|
69
|
+
// The y labels at inline start, the plot beside them, and the period labels under the
|
|
70
|
+
// plot alone. A grid follows `direction`, so the gutter is on the right under RTL with
|
|
71
|
+
// no rule of its own; the drawing itself does not mirror — time runs left to right in
|
|
72
|
+
// a price chart in every language, as in every SVG chart here. The HTML layouts (bar,
|
|
73
|
+
// bullet, treemap) are the ones that mirror.
|
|
74
|
+
&__body {
|
|
75
|
+
display: grid;
|
|
76
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// As wide as the longest label: every label is in flow, in the one cell of a one-cell
|
|
80
|
+
// grid, so the column sizes to the widest while its height stays one label. Stretched
|
|
81
|
+
// to the plot's row, each label moves down from the top by its own gridline's share of
|
|
82
|
+
// the drawing, inside the plot's block padding, then up by half itself.
|
|
83
|
+
&__y-axis {
|
|
84
|
+
grid-column: 1;
|
|
85
|
+
grid-row: 1;
|
|
86
|
+
display: grid;
|
|
87
|
+
grid-template-rows: minmax(0, 1fr);
|
|
88
|
+
padding-inline-end: var(--wr-candlestick-chart-tick-gap);
|
|
89
|
+
font-size: var(--wr-candlestick-chart-tick-font-size);
|
|
90
|
+
line-height: var(--wr-candlestick-chart-tick-line-height);
|
|
91
|
+
color: var(--wr-candlestick-chart-tick-color);
|
|
92
|
+
text-align: end;
|
|
93
|
+
white-space: nowrap;
|
|
94
|
+
font-variant-numeric: tabular-nums;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Shrunk to its text against the plot's side of the column, so its own direction can
|
|
98
|
+
// follow its text (`plaintext`), as the waterfall's and the box plot's ticks do: a
|
|
99
|
+
// price below zero is a `-` in front of digits, neither of which has a direction of its
|
|
100
|
+
// own, and under RTL the sign would land on the far side — `50-`.
|
|
101
|
+
&__y-tick {
|
|
102
|
+
$inset: var(--wr-candlestick-chart-plot-inset-y);
|
|
103
|
+
|
|
104
|
+
grid-area: 1 / 1;
|
|
105
|
+
align-self: start;
|
|
106
|
+
justify-self: end;
|
|
107
|
+
position: relative;
|
|
108
|
+
unicode-bidi: plaintext;
|
|
109
|
+
top: calc($inset + (100% - 2 * $inset) * var(--wr-candlestick-chart-y, 0) / 100);
|
|
110
|
+
transform: translateY(-50%);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&__plot {
|
|
114
|
+
grid-column: 2;
|
|
115
|
+
grid-row: 1;
|
|
116
|
+
position: relative;
|
|
117
|
+
padding-block: var(--wr-candlestick-chart-plot-inset-y);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Edge to edge across the plot: the first and the last candle sit half a slot in, so
|
|
121
|
+
// no inline padding is needed to keep them off the frame.
|
|
122
|
+
&__drawing {
|
|
123
|
+
position: relative;
|
|
124
|
+
height: 100%;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
&__grid-line {
|
|
128
|
+
position: absolute;
|
|
129
|
+
inset-inline: 0;
|
|
130
|
+
border-block-start: 1px solid var(--wr-candlestick-chart-grid-color);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// One slot wide, the full height of the drawing.
|
|
134
|
+
&__cursor {
|
|
135
|
+
position: absolute;
|
|
136
|
+
inset-block: 0;
|
|
137
|
+
width: calc(var(--wr-candlestick-chart-slot, 100) * 1%);
|
|
138
|
+
background: var(--wr-candlestick-chart-cursor-bg);
|
|
139
|
+
pointer-events: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// A body is drawn at least tall enough to show what tells a rising one from a falling
|
|
143
|
+
// one: its two edges and a 2px inside while hollow, or two dashes and the gap between
|
|
144
|
+
// them while dense. Shorter — a candle that barely moved — it would draw as a solid
|
|
145
|
+
// line in either direction, and leave colour the only channel. Both directions grow
|
|
146
|
+
// alike, so a small rise never looks larger than a fall of the same size, and a body
|
|
147
|
+
// grows into its own wicks, so the high and the low stay where they are (see the
|
|
148
|
+
// functions at the top).
|
|
149
|
+
$dash: 2px;
|
|
150
|
+
$body-min: calc(2 * var(--wr-candlestick-chart-body-border-width) + 2px);
|
|
151
|
+
$dense-body-min: 2 * $dash + 1px;
|
|
152
|
+
|
|
153
|
+
// From the high to the low, as wide as the body and centred on its slot. The colour is
|
|
154
|
+
// the candle's `color`, which the body and both wicks paint with.
|
|
155
|
+
&__candle {
|
|
156
|
+
position: absolute;
|
|
157
|
+
width: clamp(1px, calc(var(--wr-candlestick-chart-slot, 100) * 0.7%), var(--wr-candlestick-chart-body-max-width));
|
|
158
|
+
// rtl-ok: centred against a physical translateX, and the drawing's x does not flip with `direction`
|
|
159
|
+
transform: translateX(-50%);
|
|
160
|
+
pointer-events: none;
|
|
161
|
+
|
|
162
|
+
&--increase {
|
|
163
|
+
color: var(--wr-candlestick-chart-input-increase-color, var(--wr-candlestick-chart-increase-color));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
&--decrease {
|
|
167
|
+
color: var(--wr-candlestick-chart-input-decrease-color, var(--wr-candlestick-chart-decrease-color));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// The wicks: above the body and below it, never through it, so a hollow body is
|
|
171
|
+
// empty. Each is a share of the candle's own height, written by the component.
|
|
172
|
+
&::before,
|
|
173
|
+
&::after {
|
|
174
|
+
content: '';
|
|
175
|
+
position: absolute;
|
|
176
|
+
// rtl-ok: centred against a physical translateX, and the drawing's x does not flip with `direction`
|
|
177
|
+
left: 50%;
|
|
178
|
+
width: var(--wr-candlestick-chart-wick-width);
|
|
179
|
+
// rtl-ok: the pair to `left: 50%` above
|
|
180
|
+
transform: translateX(-50%);
|
|
181
|
+
background: currentColor;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
&::before {
|
|
185
|
+
top: 0;
|
|
186
|
+
height: max(0px, _wick($body-min, $-upper, $-lower));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
&::after {
|
|
190
|
+
bottom: 0;
|
|
191
|
+
height: max(0px, _wick($body-min, $-lower, $-upper));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Between the wicks, grown to the least height above when it is shorter — a candle
|
|
196
|
+
// that opened and closed on one price (a doji) included.
|
|
197
|
+
&__candle-body {
|
|
198
|
+
position: absolute;
|
|
199
|
+
inset-inline: 0;
|
|
200
|
+
top: _wick($body-min, $-upper, $-lower);
|
|
201
|
+
height: _body-height($body-min);
|
|
202
|
+
border: var(--wr-candlestick-chart-body-border-width) solid currentColor;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
&__candle--decrease &__candle-body {
|
|
206
|
+
background: currentColor;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// A body under 4px wide has no inside to leave hollow — its two edges and at most a
|
|
210
|
+
// pixel between them read as one bar — so a rising body is DOTTED instead, solid
|
|
211
|
+
// pixels with gaps between them down its length, and a falling one stays solid. A
|
|
212
|
+
// pattern is a channel that survives greyscale, where a lighter tint of the colour
|
|
213
|
+
// would fall under 3:1 against the surface.
|
|
214
|
+
&--dense &__candle::before {
|
|
215
|
+
height: max(0px, _wick($dense-body-min, $-upper, $-lower));
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
&--dense &__candle::after {
|
|
219
|
+
height: max(0px, _wick($dense-body-min, $-lower, $-upper));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
&--dense &__candle-body {
|
|
223
|
+
top: _wick($dense-body-min, $-upper, $-lower);
|
|
224
|
+
height: _body-height($dense-body-min);
|
|
225
|
+
border-width: 0;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
&--dense &__candle--increase &__candle-body {
|
|
229
|
+
background: repeating-linear-gradient(to bottom, currentColor 0 $dash, transparent $dash 2 * $dash);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
&__x-axis {
|
|
233
|
+
grid-column: 2;
|
|
234
|
+
grid-row: 2;
|
|
235
|
+
position: relative;
|
|
236
|
+
margin-block-start: var(--wr-candlestick-chart-tick-gap);
|
|
237
|
+
font-size: var(--wr-candlestick-chart-tick-font-size);
|
|
238
|
+
line-height: var(--wr-candlestick-chart-tick-line-height);
|
|
239
|
+
color: var(--wr-candlestick-chart-tick-color);
|
|
240
|
+
font-variant-numeric: tabular-nums;
|
|
241
|
+
// The labels are absolutely positioned under their candles, so the strip has no
|
|
242
|
+
// content of its own to give it a height.
|
|
243
|
+
height: 1.25em;
|
|
244
|
+
// A `translateX` percentage means the LABEL's own width, so the room left beside it
|
|
245
|
+
// has to arrive in another unit — `cqw` is this strip's. Every label is out of flow,
|
|
246
|
+
// so the containment costs the layout nothing.
|
|
247
|
+
container-type: inline-size;
|
|
248
|
+
// A label held to its room is cut there, never past the strip.
|
|
249
|
+
overflow: hidden;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Every label, a line each, laid out and never seen: the component measures it to
|
|
253
|
+
// decide how many labels fit. A line breaks only where the component put a break, and
|
|
254
|
+
// spaces collapse as a printed label's do, so the copy is exactly as wide as the widest
|
|
255
|
+
// label.
|
|
256
|
+
&__x-probe {
|
|
257
|
+
position: absolute;
|
|
258
|
+
width: max-content;
|
|
259
|
+
visibility: hidden;
|
|
260
|
+
white-space: pre-line;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
&__x-label {
|
|
264
|
+
$x: var(--wr-candlestick-chart-x, 50);
|
|
265
|
+
$slot: var(--wr-candlestick-chart-x-slot, 100);
|
|
266
|
+
|
|
267
|
+
position: absolute;
|
|
268
|
+
// rtl-ok: the drawing's own x, which does not flip with `direction`
|
|
269
|
+
left: calc(100% * $x / 100);
|
|
270
|
+
// Centred under its candle. The component prints only the labels that fit there,
|
|
271
|
+
// measured as wide as the widest, so this clamp is the net under its estimate before
|
|
272
|
+
// a browser has measured: a label still too wide for its place near an end moves
|
|
273
|
+
// inwards, never past either end of the strip.
|
|
274
|
+
// rtl-ok: the drawing's own x, which does not flip with `direction`
|
|
275
|
+
transform: translateX(clamp(calc(-100cqw * $x / 100), -50%, calc(100cqw * (100 - $x) / 100 - 100%)));
|
|
276
|
+
// Its own room — every n-th slot, half the way to the next printed label on each
|
|
277
|
+
// side — so a label longer than the measure allowed for is ellipsised rather than
|
|
278
|
+
// run into its neighbour.
|
|
279
|
+
max-width: calc(100% * $slot / 100);
|
|
280
|
+
overflow: hidden;
|
|
281
|
+
text-overflow: ellipsis;
|
|
282
|
+
white-space: nowrap;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// The candles keep their colours under forced colors, as every chart's marks do, and so
|
|
287
|
+
// keep both channels: a mark painted with `background` would otherwise be reset to
|
|
288
|
+
// `Canvas` and vanish into the page, taking the filled body with it. The grid and the
|
|
289
|
+
// band are drawn in theme colours that mean nothing on a forced palette, so they take
|
|
290
|
+
// the system's own: the band an outline in the selection colour, since a background is
|
|
291
|
+
// reset.
|
|
292
|
+
@media (forced-colors: active) {
|
|
293
|
+
.wr-candlestick-chart {
|
|
294
|
+
--wr-candlestick-chart-grid-color: GrayText;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.wr-candlestick-chart__candle {
|
|
298
|
+
forced-color-adjust: none;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.wr-candlestick-chart__cursor {
|
|
302
|
+
forced-color-adjust: none;
|
|
303
|
+
background: transparent;
|
|
304
|
+
outline: 2px solid Highlight;
|
|
305
|
+
outline-offset: -2px;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
@use '../../../theme/styles' as theme;
|
|
2
|
+
|
|
3
|
+
// The hooks, and the placement a chart decides for itself, at zero specificity: a chart
|
|
4
|
+
// that draws its legend with this list puts it on its own `__legend` element and sets
|
|
5
|
+
// its margin, gap and alignment there, so `:where()` lets the chart's own rule win
|
|
6
|
+
// whatever order the two sheets arrive in, and a chart re-points a hook from any
|
|
7
|
+
// selector at all.
|
|
8
|
+
:where(.wr-chart-legend) {
|
|
9
|
+
--wr-chart-legend-gap-y: var(--wr-space-sm);
|
|
10
|
+
--wr-chart-legend-gap-x: var(--wr-space-lg);
|
|
11
|
+
--wr-chart-legend-item-gap: var(--wr-space-sm);
|
|
12
|
+
--wr-chart-legend-font-size: var(--wr-text-xs);
|
|
13
|
+
--wr-chart-legend-color: var(--wr-color-on-surface);
|
|
14
|
+
--wr-chart-legend-label-font-weight: inherit;
|
|
15
|
+
--wr-chart-legend-value-color: var(--wr-color-on-surface-muted);
|
|
16
|
+
--wr-chart-legend-dot-size: 0.625rem;
|
|
17
|
+
--wr-chart-legend-marker-size: 0.75rem;
|
|
18
|
+
// A hidden series is struck through as well as muted, so its state is not carried by
|
|
19
|
+
// colour alone, and its key fades: the key is `aria-hidden`, the label says it.
|
|
20
|
+
--wr-chart-legend-hidden-color: var(--wr-color-on-surface-muted);
|
|
21
|
+
--wr-chart-legend-hidden-swatch-opacity: 0.35;
|
|
22
|
+
// 24px, WCAG 2.5.8's minimum target, for the rows of a `toggleable` legend.
|
|
23
|
+
--wr-chart-legend-toggle-min-height: 1.5rem;
|
|
24
|
+
--wr-chart-legend-toggle-padding-x: var(--wr-space-xs);
|
|
25
|
+
--wr-chart-legend-toggle-radius: var(--wr-border-radius-sm);
|
|
26
|
+
--wr-chart-legend-toggle-hover-bg: var(--wr-color-hover);
|
|
27
|
+
|
|
28
|
+
margin: 0;
|
|
29
|
+
gap: var(--wr-chart-legend-gap-y) var(--wr-chart-legend-gap-x);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// The structure every placement shares, at the class's own specificity: an app's own
|
|
33
|
+
// `ul { padding-inline-start: … }` must not indent a standalone legend, and a
|
|
34
|
+
// zero-specificity reset would lose to it.
|
|
35
|
+
.wr-chart-legend {
|
|
36
|
+
list-style: none;
|
|
37
|
+
padding: 0;
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-wrap: wrap;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.wr-chart-legend__item {
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
gap: var(--wr-chart-legend-item-gap);
|
|
46
|
+
font-size: var(--wr-chart-legend-font-size);
|
|
47
|
+
color: var(--wr-chart-legend-color);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.wr-chart-legend__swatch {
|
|
51
|
+
flex: 0 0 auto;
|
|
52
|
+
// The key to colours the chart keeps under forced colors — its SVG fills and strokes
|
|
53
|
+
// stay — so a dot's inline `background`, which forced colors resets to `Canvas`,
|
|
54
|
+
// would leave the legend pointing at nothing.
|
|
55
|
+
forced-color-adjust: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.wr-chart-legend__swatch--dot {
|
|
59
|
+
width: var(--wr-chart-legend-dot-size);
|
|
60
|
+
height: var(--wr-chart-legend-dot-size);
|
|
61
|
+
border-radius: 50%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// A short line rather than a dot, because it carries the series' dash pattern and a
|
|
65
|
+
// 10px circle cannot show one. Its box is the stroke; a marker on it overhangs.
|
|
66
|
+
.wr-chart-legend__swatch--line {
|
|
67
|
+
width: 1rem;
|
|
68
|
+
height: 0.125rem;
|
|
69
|
+
overflow: visible;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Sized for the circle. Every shape has the circle's area, so a triangle's point and a
|
|
73
|
+
// diamond's tips reach past the box, and an SVG clips at its own viewport by default.
|
|
74
|
+
.wr-chart-legend__swatch--marker {
|
|
75
|
+
width: var(--wr-chart-legend-marker-size);
|
|
76
|
+
height: var(--wr-chart-legend-marker-size);
|
|
77
|
+
overflow: visible;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.wr-chart-legend__label {
|
|
81
|
+
font-weight: var(--wr-chart-legend-label-font-weight);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.wr-chart-legend__value {
|
|
85
|
+
color: var(--wr-chart-legend-value-color);
|
|
86
|
+
font-variant-numeric: tabular-nums;
|
|
87
|
+
// A value has no strong character of its own, so on an RTL page the minus of `-350` —
|
|
88
|
+
// a meter group keeps a negative segment's value on purpose — landed after the
|
|
89
|
+
// digits. Plaintext takes the direction from the text, as the tooltip's value does:
|
|
90
|
+
// the sign stays first, and a value written in Arabic still reads right to left.
|
|
91
|
+
unicode-bidi: plaintext;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// A whole row is the button: the key, the name and the value are one target, and the
|
|
95
|
+
// name is the button's name. Its focus ring is the shared one in `_focus.scss`.
|
|
96
|
+
.wr-chart-legend__toggle {
|
|
97
|
+
display: inline-flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: var(--wr-chart-legend-item-gap);
|
|
100
|
+
min-height: var(--wr-chart-legend-toggle-min-height);
|
|
101
|
+
margin: 0;
|
|
102
|
+
padding: 0 var(--wr-chart-legend-toggle-padding-x);
|
|
103
|
+
border: 0;
|
|
104
|
+
border-radius: var(--wr-chart-legend-toggle-radius);
|
|
105
|
+
background: transparent;
|
|
106
|
+
color: inherit;
|
|
107
|
+
font: inherit;
|
|
108
|
+
text-align: start;
|
|
109
|
+
cursor: pointer;
|
|
110
|
+
transition: background-color var(--wr-transition-short);
|
|
111
|
+
|
|
112
|
+
&:hover {
|
|
113
|
+
background: var(--wr-chart-legend-toggle-hover-bg);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// The word a hidden row of a legend that does not toggle carries for a screen reader.
|
|
118
|
+
.wr-chart-legend__sr-only {
|
|
119
|
+
position: absolute;
|
|
120
|
+
width: 1px;
|
|
121
|
+
height: 1px;
|
|
122
|
+
padding: 0;
|
|
123
|
+
margin: -1px;
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
clip: rect(0, 0, 0, 0);
|
|
126
|
+
white-space: nowrap;
|
|
127
|
+
border: 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.wr-chart-legend__item--hidden {
|
|
131
|
+
.wr-chart-legend__label,
|
|
132
|
+
.wr-chart-legend__value {
|
|
133
|
+
color: var(--wr-chart-legend-hidden-color);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.wr-chart-legend__label {
|
|
137
|
+
text-decoration: line-through;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.wr-chart-legend__swatch {
|
|
141
|
+
opacity: var(--wr-chart-legend-hidden-swatch-opacity);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Public Sass entry for the charts' shared parts. Nothing an app imports draws from
|
|
2
|
+
// here directly: a chart that renders `<wr-chart-table>` loads this sheet from its
|
|
3
|
+
// own `_index.scss`, the way every component loads the styles of what it renders.
|
|
4
|
+
//
|
|
5
|
+
// No theme load, and on purpose: these rules read no token, and an entry point that
|
|
6
|
+
// cannot leave a `var(--wr-*)` unresolved has no reason to drag the token layer in.
|
|
7
|
+
|
|
8
|
+
// A chart's data table, read in full by assistive technology and drawn nowhere.
|
|
9
|
+
//
|
|
10
|
+
// The clip pattern on the HOST rather than on the `<table>`: a table grows to fit its
|
|
11
|
+
// cells whatever its width says, and `overflow` does not clip a table box in every
|
|
12
|
+
// engine, so clipping the table itself can leave it painting. The host is an ordinary
|
|
13
|
+
// box that collapses to 1px, sits out of flow — so it takes no room beside the chart
|
|
14
|
+
// and adds no scroll — and clips everything inside it.
|
|
15
|
+
//
|
|
16
|
+
// Not `display: none`, `visibility: hidden` or `hidden`, each of which removes it
|
|
17
|
+
// from the accessibility tree too, and not `clip-path` alone, which leaves the box
|
|
18
|
+
// its full size for the layout and the scroll width.
|
|
19
|
+
.wr-chart-table {
|
|
20
|
+
position: absolute;
|
|
21
|
+
width: 1px;
|
|
22
|
+
height: 1px;
|
|
23
|
+
padding: 0;
|
|
24
|
+
margin: -1px;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
clip: rect(0, 0, 0, 0);
|
|
27
|
+
clip-path: inset(50%);
|
|
28
|
+
white-space: nowrap;
|
|
29
|
+
border: 0;
|
|
30
|
+
}
|
|
@@ -1,16 +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. The legend is a
|
|
5
|
+
// `ul[wr-chart-legend]`, so `@use 'ngwr/charts/donut-chart'` alone draws it styled.
|
|
6
|
+
@use '../../chart-legend/styles' as chart-legend-styles; // WrChartLegend
|
|
7
|
+
|
|
4
8
|
.wr-donut-chart {
|
|
5
9
|
--wr-donut-chart-gap: var(--wr-space-lg);
|
|
6
10
|
--wr-donut-chart-font-family: var(--wr-font-family-base);
|
|
11
|
+
--wr-donut-chart-color: var(--wr-color-on-surface);
|
|
12
|
+
// The gap between two slices: each is stroked in the surface the chart sits on, so the
|
|
13
|
+
// gap is a shape that tells two slices apart without hue.
|
|
14
|
+
--wr-donut-chart-slice-gap-color: var(--wr-color-surface);
|
|
7
15
|
|
|
8
16
|
display: inline-flex;
|
|
9
17
|
flex-direction: column;
|
|
10
18
|
align-items: center;
|
|
11
19
|
gap: var(--wr-donut-chart-gap);
|
|
12
20
|
font-family: var(--wr-donut-chart-font-family);
|
|
13
|
-
color: var(--wr-
|
|
21
|
+
color: var(--wr-donut-chart-color);
|
|
14
22
|
|
|
15
23
|
&__surface {
|
|
16
24
|
position: relative;
|
|
@@ -23,6 +31,10 @@
|
|
|
23
31
|
height: auto;
|
|
24
32
|
}
|
|
25
33
|
|
|
34
|
+
&__slice {
|
|
35
|
+
stroke: var(--wr-donut-chart-slice-gap-color);
|
|
36
|
+
}
|
|
37
|
+
|
|
26
38
|
&__center {
|
|
27
39
|
position: absolute;
|
|
28
40
|
inset: 0;
|
|
@@ -51,15 +63,19 @@
|
|
|
51
63
|
font-weight: var(--wr-donut-chart-center-value-font-weight);
|
|
52
64
|
line-height: var(--wr-donut-chart-center-value-line-height);
|
|
53
65
|
font-variant-numeric: tabular-nums;
|
|
66
|
+
// A `-` in front of digits has no direction of its own, so under RTL it would land
|
|
67
|
+
// on the digits' far side. Centred, so taking the text's own direction moves nothing.
|
|
68
|
+
unicode-bidi: plaintext;
|
|
54
69
|
}
|
|
55
70
|
|
|
56
71
|
&__center-label {
|
|
57
72
|
--wr-donut-chart-center-label-margin-top: var(--wr-space-xs);
|
|
58
73
|
--wr-donut-chart-center-label-font-size: var(--wr-text-xs);
|
|
74
|
+
--wr-donut-chart-center-label-color: var(--wr-color-on-surface-muted);
|
|
59
75
|
|
|
60
76
|
margin-top: var(--wr-donut-chart-center-label-margin-top);
|
|
61
77
|
font-size: var(--wr-donut-chart-center-label-font-size);
|
|
62
|
-
color: var(--wr-
|
|
78
|
+
color: var(--wr-donut-chart-center-label-color);
|
|
63
79
|
}
|
|
64
80
|
|
|
65
81
|
&__legend {
|
|
@@ -78,11 +94,17 @@
|
|
|
78
94
|
&__legend-item {
|
|
79
95
|
--wr-donut-chart-legend-item-gap: var(--wr-space-sm);
|
|
80
96
|
--wr-donut-chart-legend-item-font-size: var(--wr-text-xs);
|
|
97
|
+
// A toggleable row's button lays out the key, the name and the value itself, from the
|
|
98
|
+
// shared legend's own hook, so that hook follows this one.
|
|
99
|
+
--wr-chart-legend-item-gap: var(--wr-donut-chart-legend-item-gap);
|
|
81
100
|
|
|
82
101
|
display: inline-flex;
|
|
83
102
|
align-items: center;
|
|
84
103
|
gap: var(--wr-donut-chart-legend-item-gap);
|
|
85
104
|
font-size: var(--wr-donut-chart-legend-item-font-size);
|
|
105
|
+
// The chart's own colour, as before the shared legend, which paints its rows
|
|
106
|
+
// `--wr-chart-legend-color`.
|
|
107
|
+
color: inherit;
|
|
86
108
|
}
|
|
87
109
|
|
|
88
110
|
&__swatch {
|
|
@@ -101,7 +123,21 @@
|
|
|
101
123
|
}
|
|
102
124
|
|
|
103
125
|
&__legend-value {
|
|
104
|
-
color: var(--wr-color-on-surface-muted);
|
|
126
|
+
--wr-donut-chart-legend-value-color: var(--wr-color-on-surface-muted);
|
|
127
|
+
|
|
128
|
+
color: var(--wr-donut-chart-legend-value-color);
|
|
105
129
|
font-variant-numeric: tabular-nums;
|
|
130
|
+
// A value has no strong character of its own: the sign of `-10` stays before its
|
|
131
|
+
// digits on an RTL page.
|
|
132
|
+
unicode-bidi: plaintext;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// The SVG keeps its fills under forced colors, so the slices keep their colours and the
|
|
137
|
+
// legend still keys them; the gap between them is drawn in the surface, which means
|
|
138
|
+
// nothing on a forced palette, so it takes the page's own colour and still parts them.
|
|
139
|
+
@media (forced-colors: active) {
|
|
140
|
+
.wr-donut-chart__slice {
|
|
141
|
+
stroke: Canvas;
|
|
106
142
|
}
|
|
107
143
|
}
|