@cronus-ui/ui 0.6.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/LICENSE +21 -0
- package/README.md +262 -0
- package/dist/charts/animation.d.ts +11 -0
- package/dist/charts/animation.js +29 -0
- package/dist/charts/area-chart-loading.d.ts +34 -0
- package/dist/charts/area-chart-loading.js +22 -0
- package/dist/charts/area-chart.d.ts +48 -0
- package/dist/charts/area-chart.js +57 -0
- package/dist/charts/area-gradient-defs.d.ts +20 -0
- package/dist/charts/area-gradient-defs.js +15 -0
- package/dist/charts/area.d.ts +76 -0
- package/dist/charts/area.js +104 -0
- package/dist/charts/background.d.ts +27 -0
- package/dist/charts/background.js +68 -0
- package/dist/charts/bar-chart-loading.d.ts +17 -0
- package/dist/charts/bar-chart-loading.js +14 -0
- package/dist/charts/bar-chart.d.ts +55 -0
- package/dist/charts/bar-chart.js +432 -0
- package/dist/charts/bar-depth-geometry.d.ts +33 -0
- package/dist/charts/bar-depth-geometry.js +38 -0
- package/dist/charts/bar-depth.d.ts +157 -0
- package/dist/charts/bar-depth.js +586 -0
- package/dist/charts/bar-squares-layout.d.ts +28 -0
- package/dist/charts/bar-squares-layout.js +47 -0
- package/dist/charts/bar-squares.d.ts +49 -0
- package/dist/charts/bar-squares.js +207 -0
- package/dist/charts/bar-x-axis.d.ts +14 -0
- package/dist/charts/bar-x-axis.js +73 -0
- package/dist/charts/bar-y-axis.d.ts +12 -0
- package/dist/charts/bar-y-axis.js +64 -0
- package/dist/charts/bar.d.ts +41 -0
- package/dist/charts/bar.js +208 -0
- package/dist/charts/candlestick-chart.d.ts +46 -0
- package/dist/charts/candlestick-chart.js +203 -0
- package/dist/charts/candlestick.d.ts +24 -0
- package/dist/charts/candlestick.js +139 -0
- package/dist/charts/chart-brush-handle.d.ts +15 -0
- package/dist/charts/chart-brush-handle.js +47 -0
- package/dist/charts/chart-brush-layout.d.ts +27 -0
- package/dist/charts/chart-brush-layout.js +42 -0
- package/dist/charts/chart-brush-selection-overlay.d.ts +19 -0
- package/dist/charts/chart-brush-selection-overlay.js +44 -0
- package/dist/charts/chart-brush-track-overlay.d.ts +23 -0
- package/dist/charts/chart-brush-track-overlay.js +65 -0
- package/dist/charts/chart-brush.d.ts +32 -0
- package/dist/charts/chart-brush.js +116 -0
- package/dist/charts/chart-center-typography.d.ts +12 -0
- package/dist/charts/chart-center-typography.js +12 -0
- package/dist/charts/chart-child-passthrough.d.ts +17 -0
- package/dist/charts/chart-child-passthrough.js +74 -0
- package/dist/charts/chart-config-context.d.ts +26 -0
- package/dist/charts/chart-config-context.js +47 -0
- package/dist/charts/chart-context.d.ts +199 -0
- package/dist/charts/chart-context.js +201 -0
- package/dist/charts/chart-defs.d.ts +13 -0
- package/dist/charts/chart-defs.js +49 -0
- package/dist/charts/chart-formatters.d.ts +10 -0
- package/dist/charts/chart-formatters.js +28 -0
- package/dist/charts/chart-legend-hover.d.ts +13 -0
- package/dist/charts/chart-legend-hover.js +18 -0
- package/dist/charts/chart-legend.d.ts +55 -0
- package/dist/charts/chart-legend.js +30 -0
- package/dist/charts/chart-loading-label.d.ts +10 -0
- package/dist/charts/chart-loading-label.js +21 -0
- package/dist/charts/chart-phase.d.ts +31 -0
- package/dist/charts/chart-phase.js +21 -0
- package/dist/charts/chart-reveal-clip.d.ts +24 -0
- package/dist/charts/chart-reveal-clip.js +24 -0
- package/dist/charts/chart-scale.d.ts +12 -0
- package/dist/charts/chart-scale.js +17 -0
- package/dist/charts/chart-stat-flow.d.ts +36 -0
- package/dist/charts/chart-stat-flow.js +23 -0
- package/dist/charts/choropleth/choropleth-chart.d.ts +43 -0
- package/dist/charts/choropleth/choropleth-chart.js +218 -0
- package/dist/charts/choropleth/choropleth-context.d.ts +86 -0
- package/dist/charts/choropleth/choropleth-context.js +106 -0
- package/dist/charts/choropleth/choropleth-feature.d.ts +13 -0
- package/dist/charts/choropleth/choropleth-feature.js +125 -0
- package/dist/charts/choropleth/choropleth-graticule.d.ts +11 -0
- package/dist/charts/choropleth/choropleth-graticule.js +12 -0
- package/dist/charts/choropleth/choropleth-tooltip.d.ts +31 -0
- package/dist/charts/choropleth/choropleth-tooltip.js +50 -0
- package/dist/charts/choropleth/index.d.ts +7 -0
- package/dist/charts/choropleth/index.js +6 -0
- package/dist/charts/composed-chart.d.ts +36 -0
- package/dist/charts/composed-chart.js +152 -0
- package/dist/charts/dash-tail-stroke.d.ts +18 -0
- package/dist/charts/dash-tail-stroke.js +13 -0
- package/dist/charts/decimate-time-series.d.ts +10 -0
- package/dist/charts/decimate-time-series.js +112 -0
- package/dist/charts/fade-edges.d.ts +34 -0
- package/dist/charts/fade-edges.js +35 -0
- package/dist/charts/filter-data-by-x-domain.d.ts +5 -0
- package/dist/charts/filter-data-by-x-domain.js +42 -0
- package/dist/charts/funnel-chart.d.ts +91 -0
- package/dist/charts/funnel-chart.js +302 -0
- package/dist/charts/gauge-label-layout.d.ts +22 -0
- package/dist/charts/gauge-label-layout.js +44 -0
- package/dist/charts/gauge.d.ts +56 -0
- package/dist/charts/gauge.js +307 -0
- package/dist/charts/generate-chart-skeleton-data.d.ts +16 -0
- package/dist/charts/generate-chart-skeleton-data.js +25 -0
- package/dist/charts/grid.d.ts +58 -0
- package/dist/charts/grid.js +80 -0
- package/dist/charts/heatmap/generate-heatmap-skeleton-data.d.ts +4 -0
- package/dist/charts/heatmap/generate-heatmap-skeleton-data.js +12 -0
- package/dist/charts/heatmap/heatmap-animation.d.ts +41 -0
- package/dist/charts/heatmap/heatmap-animation.js +85 -0
- package/dist/charts/heatmap/heatmap-cells.d.ts +21 -0
- package/dist/charts/heatmap/heatmap-cells.js +265 -0
- package/dist/charts/heatmap/heatmap-chart-loading.d.ts +21 -0
- package/dist/charts/heatmap/heatmap-chart-loading.js +14 -0
- package/dist/charts/heatmap/heatmap-chart.d.ts +80 -0
- package/dist/charts/heatmap/heatmap-chart.js +275 -0
- package/dist/charts/heatmap/heatmap-colors.d.ts +70 -0
- package/dist/charts/heatmap/heatmap-colors.js +113 -0
- package/dist/charts/heatmap/heatmap-context.d.ts +109 -0
- package/dist/charts/heatmap/heatmap-context.js +69 -0
- package/dist/charts/heatmap/heatmap-legend-gradient.d.ts +20 -0
- package/dist/charts/heatmap/heatmap-legend-gradient.js +44 -0
- package/dist/charts/heatmap/heatmap-legend-swatch.d.ts +8 -0
- package/dist/charts/heatmap/heatmap-legend-swatch.js +26 -0
- package/dist/charts/heatmap/heatmap-legend.d.ts +41 -0
- package/dist/charts/heatmap/heatmap-legend.js +68 -0
- package/dist/charts/heatmap/heatmap-pattern-defs.d.ts +5 -0
- package/dist/charts/heatmap/heatmap-pattern-defs.js +25 -0
- package/dist/charts/heatmap/heatmap-resolve-separator.d.ts +8 -0
- package/dist/charts/heatmap/heatmap-resolve-separator.js +82 -0
- package/dist/charts/heatmap/heatmap-separator.d.ts +63 -0
- package/dist/charts/heatmap/heatmap-separator.js +71 -0
- package/dist/charts/heatmap/heatmap-tooltip.d.ts +30 -0
- package/dist/charts/heatmap/heatmap-tooltip.js +20 -0
- package/dist/charts/heatmap/heatmap-utils.d.ts +175 -0
- package/dist/charts/heatmap/heatmap-utils.js +595 -0
- package/dist/charts/heatmap/heatmap-x-axis.d.ts +7 -0
- package/dist/charts/heatmap/heatmap-x-axis.js +54 -0
- package/dist/charts/heatmap/heatmap-y-axis.d.ts +14 -0
- package/dist/charts/heatmap/heatmap-y-axis.js +37 -0
- package/dist/charts/heatmap/index.d.ts +15 -0
- package/dist/charts/heatmap/index.js +15 -0
- package/dist/charts/heatmap/use-delayed-tooltip-data.d.ts +3 -0
- package/dist/charts/heatmap/use-delayed-tooltip-data.js +53 -0
- package/dist/charts/highlight-segment-bounds.d.ts +18 -0
- package/dist/charts/highlight-segment-bounds.js +36 -0
- package/dist/charts/highlight-segment.d.ts +22 -0
- package/dist/charts/highlight-segment.js +14 -0
- package/dist/charts/index.d.ts +106 -0
- package/dist/charts/index.js +133 -0
- package/dist/charts/indicator-fade.d.ts +15 -0
- package/dist/charts/indicator-fade.js +42 -0
- package/dist/charts/legend/index.d.ts +8 -0
- package/dist/charts/legend/index.js +10 -0
- package/dist/charts/legend/legend-context.d.ts +48 -0
- package/dist/charts/legend/legend-context.js +34 -0
- package/dist/charts/legend/legend-item.d.ts +12 -0
- package/dist/charts/legend/legend-item.js +11 -0
- package/dist/charts/legend/legend-label.d.ts +9 -0
- package/dist/charts/legend/legend-label.js +10 -0
- package/dist/charts/legend/legend-marker.d.ts +9 -0
- package/dist/charts/legend/legend-marker.js +11 -0
- package/dist/charts/legend/legend-progress.d.ts +13 -0
- package/dist/charts/legend/legend-progress.js +15 -0
- package/dist/charts/legend/legend-value.d.ts +17 -0
- package/dist/charts/legend/legend-value.js +11 -0
- package/dist/charts/legend/legend.d.ts +23 -0
- package/dist/charts/legend/legend.js +43 -0
- package/dist/charts/line-chart-loading.d.ts +34 -0
- package/dist/charts/line-chart-loading.js +22 -0
- package/dist/charts/line-chart.d.ts +46 -0
- package/dist/charts/line-chart.js +91 -0
- package/dist/charts/line-loading-pulse.d.ts +20 -0
- package/dist/charts/line-loading-pulse.js +124 -0
- package/dist/charts/line-loading-timing.d.ts +10 -0
- package/dist/charts/line-loading-timing.js +10 -0
- package/dist/charts/line-series-terminal-marker.d.ts +16 -0
- package/dist/charts/line-series-terminal-marker.js +46 -0
- package/dist/charts/line.d.ts +64 -0
- package/dist/charts/line.js +96 -0
- package/dist/charts/live-line-chart.d.ts +35 -0
- package/dist/charts/live-line-chart.js +374 -0
- package/dist/charts/live-line.d.ts +39 -0
- package/dist/charts/live-line.js +78 -0
- package/dist/charts/live-x-axis.d.ts +12 -0
- package/dist/charts/live-x-axis.js +85 -0
- package/dist/charts/live-y-axis.d.ts +16 -0
- package/dist/charts/live-y-axis.js +137 -0
- package/dist/charts/loading-sweep.d.ts +66 -0
- package/dist/charts/loading-sweep.js +174 -0
- package/dist/charts/markers/chart-markers.d.ts +25 -0
- package/dist/charts/markers/chart-markers.js +87 -0
- package/dist/charts/markers/index.d.ts +3 -0
- package/dist/charts/markers/index.js +3 -0
- package/dist/charts/markers/marker-group.d.ts +88 -0
- package/dist/charts/markers/marker-group.js +171 -0
- package/dist/charts/motion-utils.d.ts +9 -0
- package/dist/charts/motion-utils.js +28 -0
- package/dist/charts/notch-gauge-shared.d.ts +49 -0
- package/dist/charts/notch-gauge-shared.js +103 -0
- package/dist/charts/path-stroke-utils.d.ts +20 -0
- package/dist/charts/path-stroke-utils.js +55 -0
- package/dist/charts/pattern-area.d.ts +21 -0
- package/dist/charts/pattern-area.js +19 -0
- package/dist/charts/pattern-preset.d.ts +26 -0
- package/dist/charts/pattern-preset.js +83 -0
- package/dist/charts/pie-center-shell.d.ts +24 -0
- package/dist/charts/pie-center-shell.js +109 -0
- package/dist/charts/pie-center.d.ts +46 -0
- package/dist/charts/pie-center.js +46 -0
- package/dist/charts/pie-chart.d.ts +50 -0
- package/dist/charts/pie-chart.js +248 -0
- package/dist/charts/pie-context.d.ts +74 -0
- package/dist/charts/pie-context.js +95 -0
- package/dist/charts/pie-slice.d.ts +28 -0
- package/dist/charts/pie-slice.js +180 -0
- package/dist/charts/profit-loss-legend-hover.d.ts +11 -0
- package/dist/charts/profit-loss-legend-hover.js +12 -0
- package/dist/charts/profit-loss-legend.d.ts +17 -0
- package/dist/charts/profit-loss-legend.js +18 -0
- package/dist/charts/profit-loss-line.d.ts +27 -0
- package/dist/charts/profit-loss-line.js +77 -0
- package/dist/charts/profit-loss-segments.d.ts +12 -0
- package/dist/charts/profit-loss-segments.js +86 -0
- package/dist/charts/projection-config.d.ts +11 -0
- package/dist/charts/projection-config.js +80 -0
- package/dist/charts/projection-line-end-marker.d.ts +15 -0
- package/dist/charts/projection-line-end-marker.js +27 -0
- package/dist/charts/projection-line.d.ts +40 -0
- package/dist/charts/projection-line.js +79 -0
- package/dist/charts/projection-utils.d.ts +46 -0
- package/dist/charts/projection-utils.js +253 -0
- package/dist/charts/radar-area.d.ts +17 -0
- package/dist/charts/radar-area.js +84 -0
- package/dist/charts/radar-axis.d.ts +14 -0
- package/dist/charts/radar-axis.js +24 -0
- package/dist/charts/radar-chart.d.ts +36 -0
- package/dist/charts/radar-chart.js +89 -0
- package/dist/charts/radar-context.d.ts +68 -0
- package/dist/charts/radar-context.js +87 -0
- package/dist/charts/radar-grid.d.ts +16 -0
- package/dist/charts/radar-grid.js +40 -0
- package/dist/charts/radar-labels.d.ts +16 -0
- package/dist/charts/radar-labels.js +29 -0
- package/dist/charts/reference-area-config.d.ts +10 -0
- package/dist/charts/reference-area-config.js +39 -0
- package/dist/charts/reference-area-geometry.d.ts +23 -0
- package/dist/charts/reference-area-geometry.js +68 -0
- package/dist/charts/reference-area-registration-context.d.ts +8 -0
- package/dist/charts/reference-area-registration-context.js +7 -0
- package/dist/charts/reference-area.d.ts +52 -0
- package/dist/charts/reference-area.js +101 -0
- package/dist/charts/ring-center.d.ts +46 -0
- package/dist/charts/ring-center.js +41 -0
- package/dist/charts/ring-chart.d.ts +41 -0
- package/dist/charts/ring-chart.js +212 -0
- package/dist/charts/ring-context.d.ts +66 -0
- package/dist/charts/ring-context.js +92 -0
- package/dist/charts/ring.d.ts +11 -0
- package/dist/charts/ring.js +104 -0
- package/dist/charts/sankey/index.d.ts +6 -0
- package/dist/charts/sankey/index.js +6 -0
- package/dist/charts/sankey/sankey-chart.d.ts +39 -0
- package/dist/charts/sankey/sankey-chart.js +117 -0
- package/dist/charts/sankey/sankey-context.d.ts +69 -0
- package/dist/charts/sankey/sankey-context.js +23 -0
- package/dist/charts/sankey/sankey-link.d.ts +26 -0
- package/dist/charts/sankey/sankey-link.js +155 -0
- package/dist/charts/sankey/sankey-node.d.ts +29 -0
- package/dist/charts/sankey/sankey-node.js +200 -0
- package/dist/charts/sankey/sankey-tooltip.d.ts +24 -0
- package/dist/charts/sankey/sankey-tooltip.js +70 -0
- package/dist/charts/scatter-chart-shell.d.ts +21 -0
- package/dist/charts/scatter-chart-shell.js +152 -0
- package/dist/charts/scatter-chart.d.ts +32 -0
- package/dist/charts/scatter-chart.js +56 -0
- package/dist/charts/scatter-svg.d.ts +6 -0
- package/dist/charts/scatter-svg.js +16 -0
- package/dist/charts/scatter.d.ts +21 -0
- package/dist/charts/scatter.js +30 -0
- package/dist/charts/segment.d.ts +26 -0
- package/dist/charts/segment.js +42 -0
- package/dist/charts/series-bar-layout.d.ts +18 -0
- package/dist/charts/series-bar-layout.js +31 -0
- package/dist/charts/series-bar.d.ts +20 -0
- package/dist/charts/series-bar.js +120 -0
- package/dist/charts/series-dash-tail-overlay.d.ts +17 -0
- package/dist/charts/series-dash-tail-overlay.js +39 -0
- package/dist/charts/series-highlight-layer.d.ts +23 -0
- package/dist/charts/series-highlight-layer.js +21 -0
- package/dist/charts/series-hover-dim.d.ts +29 -0
- package/dist/charts/series-hover-dim.js +26 -0
- package/dist/charts/series-markers.d.ts +14 -0
- package/dist/charts/series-markers.js +98 -0
- package/dist/charts/series-path-utils.d.ts +19 -0
- package/dist/charts/series-path-utils.js +60 -0
- package/dist/charts/series-point-marker.d.ts +48 -0
- package/dist/charts/series-point-marker.js +48 -0
- package/dist/charts/shimmering-text.d.ts +23 -0
- package/dist/charts/shimmering-text.js +31 -0
- package/dist/charts/static-chart-preview-context.d.ts +7 -0
- package/dist/charts/static-chart-preview-context.js +12 -0
- package/dist/charts/sunburst-breadcrumb.d.ts +16 -0
- package/dist/charts/sunburst-breadcrumb.js +26 -0
- package/dist/charts/sunburst-center.d.ts +5 -0
- package/dist/charts/sunburst-center.js +17 -0
- package/dist/charts/sunburst-chart.d.ts +30 -0
- package/dist/charts/sunburst-chart.js +263 -0
- package/dist/charts/sunburst-context.d.ts +61 -0
- package/dist/charts/sunburst-context.js +112 -0
- package/dist/charts/sunburst-data.d.ts +9 -0
- package/dist/charts/sunburst-data.js +2 -0
- package/dist/charts/sunburst-hint.d.ts +13 -0
- package/dist/charts/sunburst-hint.js +31 -0
- package/dist/charts/sunburst-labels.d.ts +9 -0
- package/dist/charts/sunburst-labels.js +63 -0
- package/dist/charts/sunburst-segment.d.ts +11 -0
- package/dist/charts/sunburst-segment.js +78 -0
- package/dist/charts/sunburst.d.ts +101 -0
- package/dist/charts/sunburst.js +396 -0
- package/dist/charts/time-series-chart-shell.d.ts +47 -0
- package/dist/charts/time-series-chart-shell.js +390 -0
- package/dist/charts/tooltip/chart-tooltip.d.ts +76 -0
- package/dist/charts/tooltip/chart-tooltip.js +150 -0
- package/dist/charts/tooltip/date-ticker.d.ts +11 -0
- package/dist/charts/tooltip/date-ticker.js +77 -0
- package/dist/charts/tooltip/index.d.ts +7 -0
- package/dist/charts/tooltip/index.js +7 -0
- package/dist/charts/tooltip/tooltip-box.d.ts +48 -0
- package/dist/charts/tooltip/tooltip-box.js +114 -0
- package/dist/charts/tooltip/tooltip-content.d.ts +18 -0
- package/dist/charts/tooltip/tooltip-content.js +9 -0
- package/dist/charts/tooltip/tooltip-dot.d.ts +28 -0
- package/dist/charts/tooltip/tooltip-dot.js +54 -0
- package/dist/charts/tooltip/tooltip-indicator.d.ts +45 -0
- package/dist/charts/tooltip/tooltip-indicator.js +65 -0
- package/dist/charts/use-animated-series-path.d.ts +19 -0
- package/dist/charts/use-animated-series-path.js +93 -0
- package/dist/charts/use-animated-y-domains.d.ts +14 -0
- package/dist/charts/use-animated-y-domains.js +150 -0
- package/dist/charts/use-chart-interaction.d.ts +41 -0
- package/dist/charts/use-chart-interaction.js +244 -0
- package/dist/charts/use-chart-phase-orchestrator.d.ts +23 -0
- package/dist/charts/use-chart-phase-orchestrator.js +139 -0
- package/dist/charts/use-enter-complete.d.ts +8 -0
- package/dist/charts/use-enter-complete.js +23 -0
- package/dist/charts/use-grid-shimmer.d.ts +16 -0
- package/dist/charts/use-grid-shimmer.js +63 -0
- package/dist/charts/use-highlight-segment.d.ts +14 -0
- package/dist/charts/use-highlight-segment.js +34 -0
- package/dist/charts/use-mount-progress.d.ts +4 -0
- package/dist/charts/use-mount-progress.js +22 -0
- package/dist/charts/use-scatter-chart-interaction.d.ts +35 -0
- package/dist/charts/use-scatter-chart-interaction.js +228 -0
- package/dist/charts/use-scheduled-tooltip.d.ts +9 -0
- package/dist/charts/use-scheduled-tooltip.js +76 -0
- package/dist/charts/visx-pattern.d.ts +19 -0
- package/dist/charts/visx-pattern.js +20 -0
- package/dist/charts/x-axis.d.ts +27 -0
- package/dist/charts/x-axis.js +415 -0
- package/dist/charts/y-axis-scales.d.ts +26 -0
- package/dist/charts/y-axis-scales.js +72 -0
- package/dist/charts/y-axis-ticks.d.ts +12 -0
- package/dist/charts/y-axis-ticks.js +24 -0
- package/dist/charts/y-axis.d.ts +22 -0
- package/dist/charts/y-axis.js +80 -0
- package/dist/charts/y-domain-utils.d.ts +27 -0
- package/dist/charts/y-domain-utils.js +88 -0
- package/dist/components/accordion.d.ts +6 -0
- package/dist/components/accordion.js +20 -0
- package/dist/components/alert-dialog.d.ts +18 -0
- package/dist/components/alert-dialog.js +41 -0
- package/dist/components/alert.d.ts +24 -0
- package/dist/components/alert.js +46 -0
- package/dist/components/animated-button.d.ts +5 -0
- package/dist/components/animated-button.js +16 -0
- package/dist/components/animated-list.d.ts +26 -0
- package/dist/components/animated-list.js +25 -0
- package/dist/components/animated-number.d.ts +67 -0
- package/dist/components/animated-number.js +131 -0
- package/dist/components/app-shell.d.ts +27 -0
- package/dist/components/app-shell.js +18 -0
- package/dist/components/area-chart.d.ts +11 -0
- package/dist/components/area-chart.js +12 -0
- package/dist/components/aspect-ratio.d.ts +16 -0
- package/dist/components/aspect-ratio.js +14 -0
- package/dist/components/aurora-background.d.ts +3 -0
- package/dist/components/aurora-background.js +8 -0
- package/dist/components/autocomplete.d.ts +55 -0
- package/dist/components/autocomplete.js +279 -0
- package/dist/components/avatar-group.d.ts +39 -0
- package/dist/components/avatar-group.js +50 -0
- package/dist/components/avatar.d.ts +5 -0
- package/dist/components/avatar.js +17 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.js +35 -0
- package/dist/components/banner.d.ts +45 -0
- package/dist/components/banner.js +80 -0
- package/dist/components/bar-chart.d.ts +11 -0
- package/dist/components/bar-chart.js +9 -0
- package/dist/components/border-beam.d.ts +45 -0
- package/dist/components/border-beam.js +48 -0
- package/dist/components/breadcrumb.d.ts +12 -0
- package/dist/components/breadcrumb.js +35 -0
- package/dist/components/button-group.d.ts +7 -0
- package/dist/components/button-group.js +10 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.js +39 -0
- package/dist/components/calendar.d.ts +7 -0
- package/dist/components/calendar.js +71 -0
- package/dist/components/candlestick-chart.d.ts +13 -0
- package/dist/components/candlestick-chart.js +66 -0
- package/dist/components/card-stack.d.ts +28 -0
- package/dist/components/card-stack.js +47 -0
- package/dist/components/card.d.ts +9 -0
- package/dist/components/card.js +32 -0
- package/dist/components/carousel.d.ts +82 -0
- package/dist/components/carousel.js +310 -0
- package/dist/components/chart.d.ts +100 -0
- package/dist/components/chart.js +210 -0
- package/dist/components/checkbox.d.ts +3 -0
- package/dist/components/checkbox.js +11 -0
- package/dist/components/chip.d.ts +80 -0
- package/dist/components/chip.js +186 -0
- package/dist/components/choropleth-chart.d.ts +12 -0
- package/dist/components/choropleth-chart.js +31 -0
- package/dist/components/click-spark.d.ts +19 -0
- package/dist/components/click-spark.js +51 -0
- package/dist/components/code-block.d.ts +13 -0
- package/dist/components/code-block.js +20 -0
- package/dist/components/code-tabs.d.ts +51 -0
- package/dist/components/code-tabs.js +150 -0
- package/dist/components/collapsible.d.ts +5 -0
- package/dist/components/collapsible.js +12 -0
- package/dist/components/color-picker.d.ts +30 -0
- package/dist/components/color-picker.js +300 -0
- package/dist/components/combobox.d.ts +33 -0
- package/dist/components/combobox.js +32 -0
- package/dist/components/command.d.ts +87 -0
- package/dist/components/command.js +44 -0
- package/dist/components/comparison-slider.d.ts +17 -0
- package/dist/components/comparison-slider.js +81 -0
- package/dist/components/composed-chart.d.ts +13 -0
- package/dist/components/composed-chart.js +22 -0
- package/dist/components/confetti.d.ts +21 -0
- package/dist/components/confetti.js +111 -0
- package/dist/components/confirmation-dialog.d.ts +46 -0
- package/dist/components/confirmation-dialog.js +102 -0
- package/dist/components/context-menu.d.ts +28 -0
- package/dist/components/context-menu.js +52 -0
- package/dist/components/copy-button.d.ts +13 -0
- package/dist/components/copy-button.js +72 -0
- package/dist/components/countdown.d.ts +58 -0
- package/dist/components/countdown.js +106 -0
- package/dist/components/credit-card-input.d.ts +62 -0
- package/dist/components/credit-card-input.js +211 -0
- package/dist/components/currency-input.d.ts +86 -0
- package/dist/components/currency-input.js +215 -0
- package/dist/components/data-table.d.ts +232 -0
- package/dist/components/data-table.js +359 -0
- package/dist/components/date-picker.d.ts +66 -0
- package/dist/components/date-picker.js +55 -0
- package/dist/components/date-range-picker.d.ts +59 -0
- package/dist/components/date-range-picker.js +59 -0
- package/dist/components/description-list.d.ts +84 -0
- package/dist/components/description-list.js +138 -0
- package/dist/components/dialog.d.ts +26 -0
- package/dist/components/dialog.js +35 -0
- package/dist/components/dock.d.ts +34 -0
- package/dist/components/dock.js +61 -0
- package/dist/components/dot-pattern.d.ts +24 -0
- package/dist/components/dot-pattern.js +19 -0
- package/dist/components/drawer.d.ts +22 -0
- package/dist/components/drawer.js +37 -0
- package/dist/components/dropdown-menu.d.ts +32 -0
- package/dist/components/dropdown-menu.js +56 -0
- package/dist/components/dynamic-island.d.ts +26 -0
- package/dist/components/dynamic-island.js +31 -0
- package/dist/components/empty.d.ts +7 -0
- package/dist/components/empty.js +24 -0
- package/dist/components/expandable-tabs.d.ts +24 -0
- package/dist/components/expandable-tabs.js +30 -0
- package/dist/components/fab.d.ts +35 -0
- package/dist/components/fab.js +36 -0
- package/dist/components/field.d.ts +6 -0
- package/dist/components/field.js +22 -0
- package/dist/components/file-dropzone.d.ts +28 -0
- package/dist/components/file-dropzone.js +59 -0
- package/dist/components/flickering-grid.d.ts +25 -0
- package/dist/components/flickering-grid.js +30 -0
- package/dist/components/flip-card.d.ts +70 -0
- package/dist/components/flip-card.js +117 -0
- package/dist/components/floating-label-input.d.ts +34 -0
- package/dist/components/floating-label-input.js +25 -0
- package/dist/components/form.d.ts +25 -0
- package/dist/components/form.js +68 -0
- package/dist/components/frame.d.ts +12 -0
- package/dist/components/frame.js +10 -0
- package/dist/components/funnel-chart.d.ts +11 -0
- package/dist/components/funnel-chart.js +16 -0
- package/dist/components/gauge-chart.d.ts +8 -0
- package/dist/components/gauge-chart.js +10 -0
- package/dist/components/glare-hover.d.ts +15 -0
- package/dist/components/glare-hover.js +64 -0
- package/dist/components/glass-card.d.ts +3 -0
- package/dist/components/glass-card.js +8 -0
- package/dist/components/gradient-border.d.ts +7 -0
- package/dist/components/gradient-border.js +8 -0
- package/dist/components/gradient-text.d.ts +6 -0
- package/dist/components/gradient-text.js +10 -0
- package/dist/components/grid-pattern.d.ts +23 -0
- package/dist/components/grid-pattern.js +18 -0
- package/dist/components/heatmap-chart.d.ts +6 -0
- package/dist/components/heatmap-chart.js +8 -0
- package/dist/components/heatmap.d.ts +28 -0
- package/dist/components/heatmap.js +41 -0
- package/dist/components/highlighter.d.ts +20 -0
- package/dist/components/highlighter.js +19 -0
- package/dist/components/hover-card.d.ts +5 -0
- package/dist/components/hover-card.js +12 -0
- package/dist/components/image-zoom.d.ts +47 -0
- package/dist/components/image-zoom.js +125 -0
- package/dist/components/input-group.d.ts +10 -0
- package/dist/components/input-group.js +12 -0
- package/dist/components/input-otp.d.ts +18 -0
- package/dist/components/input-otp.js +38 -0
- package/dist/components/input.d.ts +6 -0
- package/dist/components/input.js +8 -0
- package/dist/components/json-viewer.d.ts +43 -0
- package/dist/components/json-viewer.js +313 -0
- package/dist/components/kanban.d.ts +31 -0
- package/dist/components/kanban.js +143 -0
- package/dist/components/kbd.d.ts +3 -0
- package/dist/components/kbd.js +8 -0
- package/dist/components/label.d.ts +3 -0
- package/dist/components/label.js +9 -0
- package/dist/components/light-rays.d.ts +19 -0
- package/dist/components/light-rays.js +20 -0
- package/dist/components/lightbox.d.ts +24 -0
- package/dist/components/lightbox.js +68 -0
- package/dist/components/line-chart.d.ts +10 -0
- package/dist/components/line-chart.js +9 -0
- package/dist/components/live-line-chart.d.ts +12 -0
- package/dist/components/live-line-chart.js +42 -0
- package/dist/components/logo-carousel.d.ts +27 -0
- package/dist/components/logo-carousel.js +101 -0
- package/dist/components/magnetic.d.ts +44 -0
- package/dist/components/magnetic.js +172 -0
- package/dist/components/marquee.d.ts +71 -0
- package/dist/components/marquee.js +141 -0
- package/dist/components/masonry.d.ts +16 -0
- package/dist/components/masonry.js +84 -0
- package/dist/components/menubar.d.ts +33 -0
- package/dist/components/menubar.js +56 -0
- package/dist/components/meteors.d.ts +20 -0
- package/dist/components/meteors.js +39 -0
- package/dist/components/metric.d.ts +9 -0
- package/dist/components/metric.js +35 -0
- package/dist/components/mode-toggle.d.ts +32 -0
- package/dist/components/mode-toggle.js +40 -0
- package/dist/components/morphing-popover.d.ts +91 -0
- package/dist/components/morphing-popover.js +194 -0
- package/dist/components/motion-presets.d.ts +9 -0
- package/dist/components/motion-presets.js +20 -0
- package/dist/components/multi-select.d.ts +54 -0
- package/dist/components/multi-select.js +0 -0
- package/dist/components/navigation-menu.d.ts +12 -0
- package/dist/components/navigation-menu.js +42 -0
- package/dist/components/noise.d.ts +19 -0
- package/dist/components/noise.js +18 -0
- package/dist/components/notification-center.d.ts +68 -0
- package/dist/components/notification-center.js +57 -0
- package/dist/components/number-input.d.ts +45 -0
- package/dist/components/number-input.js +148 -0
- package/dist/components/orbit.d.ts +77 -0
- package/dist/components/orbit.js +100 -0
- package/dist/components/pagination.d.ts +16 -0
- package/dist/components/pagination.js +34 -0
- package/dist/components/particles.d.ts +18 -0
- package/dist/components/particles.js +92 -0
- package/dist/components/password-input.d.ts +16 -0
- package/dist/components/password-input.js +49 -0
- package/dist/components/phone-input.d.ts +67 -0
- package/dist/components/phone-input.js +225 -0
- package/dist/components/pie-chart.d.ts +12 -0
- package/dist/components/pie-chart.js +13 -0
- package/dist/components/pill-nav.d.ts +25 -0
- package/dist/components/pill-nav.js +66 -0
- package/dist/components/popover.d.ts +7 -0
- package/dist/components/popover.js +15 -0
- package/dist/components/profit-loss-chart.d.ts +10 -0
- package/dist/components/profit-loss-chart.js +8 -0
- package/dist/components/progress.d.ts +10 -0
- package/dist/components/progress.js +17 -0
- package/dist/components/progressive-blur.d.ts +24 -0
- package/dist/components/progressive-blur.js +43 -0
- package/dist/components/radar-chart.d.ts +9 -0
- package/dist/components/radar-chart.js +9 -0
- package/dist/components/radio-group.d.ts +4 -0
- package/dist/components/radio-group.js +15 -0
- package/dist/components/rating.d.ts +29 -0
- package/dist/components/rating.js +94 -0
- package/dist/components/resizable.d.ts +57 -0
- package/dist/components/resizable.js +73 -0
- package/dist/components/retro-grid.d.ts +25 -0
- package/dist/components/retro-grid.js +26 -0
- package/dist/components/reveal.d.ts +9 -0
- package/dist/components/reveal.js +14 -0
- package/dist/components/rich-text-editor.d.ts +28 -0
- package/dist/components/rich-text-editor.js +83 -0
- package/dist/components/ring-chart.d.ts +13 -0
- package/dist/components/ring-chart.js +16 -0
- package/dist/components/ripple.d.ts +25 -0
- package/dist/components/ripple.js +26 -0
- package/dist/components/sankey-chart.d.ts +16 -0
- package/dist/components/sankey-chart.js +8 -0
- package/dist/components/scatter-chart.d.ts +12 -0
- package/dist/components/scatter-chart.js +9 -0
- package/dist/components/scheduler.d.ts +50 -0
- package/dist/components/scheduler.js +93 -0
- package/dist/components/scramble-text.d.ts +39 -0
- package/dist/components/scramble-text.js +78 -0
- package/dist/components/scroll-area.d.ts +13 -0
- package/dist/components/scroll-area.js +14 -0
- package/dist/components/scroll-progress.d.ts +19 -0
- package/dist/components/scroll-progress.js +67 -0
- package/dist/components/segmented-control.d.ts +48 -0
- package/dist/components/segmented-control.js +222 -0
- package/dist/components/select.d.ts +12 -0
- package/dist/components/select.js +43 -0
- package/dist/components/separator.d.ts +3 -0
- package/dist/components/separator.js +9 -0
- package/dist/components/sheet.d.ts +25 -0
- package/dist/components/sheet.js +47 -0
- package/dist/components/shimmer.d.ts +3 -0
- package/dist/components/shimmer.js +8 -0
- package/dist/components/shiny-text.d.ts +20 -0
- package/dist/components/shiny-text.js +24 -0
- package/dist/components/sidebar.d.ts +92 -0
- package/dist/components/sidebar.js +290 -0
- package/dist/components/signature-pad.d.ts +44 -0
- package/dist/components/signature-pad.js +317 -0
- package/dist/components/skeleton.d.ts +3 -0
- package/dist/components/skeleton.js +8 -0
- package/dist/components/slider.d.ts +10 -0
- package/dist/components/slider.js +27 -0
- package/dist/components/sonner.d.ts +9 -0
- package/dist/components/sonner.js +17 -0
- package/dist/components/sparkles-text.d.ts +19 -0
- package/dist/components/sparkles-text.js +36 -0
- package/dist/components/sparkline.d.ts +22 -0
- package/dist/components/sparkline.js +100 -0
- package/dist/components/spinner.d.ts +10 -0
- package/dist/components/spinner.js +20 -0
- package/dist/components/spinning-text.d.ts +29 -0
- package/dist/components/spinning-text.js +40 -0
- package/dist/components/split-button.d.ts +71 -0
- package/dist/components/split-button.js +30 -0
- package/dist/components/spotlight-card.d.ts +11 -0
- package/dist/components/spotlight-card.js +63 -0
- package/dist/components/star-border.d.ts +19 -0
- package/dist/components/star-border.js +18 -0
- package/dist/components/status-dot.d.ts +60 -0
- package/dist/components/status-dot.js +76 -0
- package/dist/components/stepper.d.ts +98 -0
- package/dist/components/stepper.js +164 -0
- package/dist/components/sunburst-chart.d.ts +11 -0
- package/dist/components/sunburst-chart.js +45 -0
- package/dist/components/switch.d.ts +3 -0
- package/dist/components/switch.js +10 -0
- package/dist/components/table-of-contents.d.ts +64 -0
- package/dist/components/table-of-contents.js +0 -0
- package/dist/components/table.d.ts +10 -0
- package/dist/components/table.js +38 -0
- package/dist/components/tabs.d.ts +6 -0
- package/dist/components/tabs.js +22 -0
- package/dist/components/tags-input.d.ts +39 -0
- package/dist/components/tags-input.js +86 -0
- package/dist/components/terminal.d.ts +86 -0
- package/dist/components/terminal.js +182 -0
- package/dist/components/text-effect.d.ts +71 -0
- package/dist/components/text-effect.js +166 -0
- package/dist/components/textarea.d.ts +6 -0
- package/dist/components/textarea.js +8 -0
- package/dist/components/tilt-card.d.ts +30 -0
- package/dist/components/tilt-card.js +84 -0
- package/dist/components/time-picker.d.ts +58 -0
- package/dist/components/time-picker.js +245 -0
- package/dist/components/timeline.d.ts +81 -0
- package/dist/components/timeline.js +165 -0
- package/dist/components/toggle-group.d.ts +12 -0
- package/dist/components/toggle-group.js +23 -0
- package/dist/components/toggle.d.ts +12 -0
- package/dist/components/toggle.js +25 -0
- package/dist/components/toolbar.d.ts +14 -0
- package/dist/components/toolbar.js +89 -0
- package/dist/components/tooltip.d.ts +29 -0
- package/dist/components/tooltip.js +48 -0
- package/dist/components/tree-view.d.ts +45 -0
- package/dist/components/tree-view.js +197 -0
- package/dist/components/typing-text.d.ts +49 -0
- package/dist/components/typing-text.js +90 -0
- package/dist/components/usage-meter.d.ts +30 -0
- package/dist/components/usage-meter.js +90 -0
- package/dist/components/video-player.d.ts +48 -0
- package/dist/components/video-player.js +216 -0
- package/dist/components/word-rotate.d.ts +40 -0
- package/dist/components/word-rotate.js +34 -0
- package/dist/index.d.ts +306 -0
- package/dist/index.js +179 -0
- package/dist/lib/cn.d.ts +7 -0
- package/dist/lib/cn.js +10 -0
- package/dist/lib/demo-saas.d.ts +171 -0
- package/dist/lib/demo-saas.js +210 -0
- package/dist/lib/demo-store.d.ts +157 -0
- package/dist/lib/demo-store.js +353 -0
- package/dist/testing/index.d.ts +76 -0
- package/dist/testing/index.js +116 -0
- package/package.json +941 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useMemo } from "react";
|
|
4
|
+
import { chartCssVars, useChart, useChartHover } from "../chart-context.js";
|
|
5
|
+
import { MarkerGroup } from "./marker-group.js";
|
|
6
|
+
const MAX_TOOLTIP_MARKERS = 2;
|
|
7
|
+
export function MarkerTooltipContent({ markers }) {
|
|
8
|
+
if (markers.length === 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const visibleMarkers = markers.slice(0, MAX_TOOLTIP_MARKERS);
|
|
12
|
+
const hiddenCount = markers.length - MAX_TOOLTIP_MARKERS;
|
|
13
|
+
return (_jsxs("div", { className: "mt-2 space-y-2 border-chart-tooltip-muted border-t pt-2", children: [visibleMarkers.map((marker) => {
|
|
14
|
+
const isClickable = !!(marker.onClick || marker.href);
|
|
15
|
+
return (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx("div", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full", style: {
|
|
16
|
+
backgroundColor: marker.color || chartCssVars.markerBackground,
|
|
17
|
+
border: `1px solid ${chartCssVars.markerBorder}`,
|
|
18
|
+
}, children: _jsx("span", { className: "text-xs", style: { color: chartCssVars.markerForeground }, children: marker.icon }) }), _jsx("div", { className: "min-w-0 flex-1", children: marker.content ? (marker.content) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center gap-1.5 truncate font-medium text-chart-tooltip-foreground text-sm", children: [marker.title, isClickable && _jsx("span", { className: "text-[10px] text-chart-tooltip-muted", children: "\u2197" })] }), marker.description && (_jsx("div", { className: "truncate text-chart-tooltip-muted text-xs", children: marker.description }))] })) })] }, marker.title));
|
|
19
|
+
}), hiddenCount > 0 && (_jsxs("div", { className: "pl-7 text-chart-tooltip-muted text-xs", children: ["+", hiddenCount, " more..."] }))] }));
|
|
20
|
+
}
|
|
21
|
+
export function ChartMarkers({ items, size = 28, showLines = true, animate = true, }) {
|
|
22
|
+
const { xScale, innerHeight, margin, containerRef, tooltipData, setTooltipData, animationDuration, } = useChart();
|
|
23
|
+
// Hide the crosshair when hovering markers (matching original behavior)
|
|
24
|
+
const handleMarkerHover = useCallback((markers) => {
|
|
25
|
+
if (markers) {
|
|
26
|
+
// Hide crosshair when hovering a marker
|
|
27
|
+
setTooltipData(null);
|
|
28
|
+
}
|
|
29
|
+
}, [setTooltipData]);
|
|
30
|
+
// Group markers by date
|
|
31
|
+
const markersByDate = useMemo(() => {
|
|
32
|
+
const grouped = new Map();
|
|
33
|
+
for (const marker of items) {
|
|
34
|
+
const dateKey = marker.date.toDateString();
|
|
35
|
+
const existing = grouped.get(dateKey) || [];
|
|
36
|
+
grouped.set(dateKey, [...existing, marker]);
|
|
37
|
+
}
|
|
38
|
+
return grouped;
|
|
39
|
+
}, [items]);
|
|
40
|
+
// Get markers for currently hovered date
|
|
41
|
+
const _activeMarkers = useMemo(() => {
|
|
42
|
+
if (!tooltipData) {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
const point = tooltipData.point;
|
|
46
|
+
const date = point.date instanceof Date ? point.date : new Date(point.date);
|
|
47
|
+
const dateKey = date.toDateString();
|
|
48
|
+
return markersByDate.get(dateKey) || [];
|
|
49
|
+
}, [tooltipData, markersByDate]);
|
|
50
|
+
// Y position for markers (above chart area)
|
|
51
|
+
const markerY = -8;
|
|
52
|
+
return (_jsx(_Fragment, { children: Array.from(markersByDate.entries()).map(([dateKey, dateMarkers], groupIndex) => {
|
|
53
|
+
const markerDate = dateMarkers[0]?.date;
|
|
54
|
+
if (!markerDate) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const markerX = xScale(markerDate) ?? 0;
|
|
58
|
+
const isActive = tooltipData
|
|
59
|
+
? (() => {
|
|
60
|
+
const point = tooltipData.point;
|
|
61
|
+
const date = point.date instanceof Date ? point.date : new Date(point.date);
|
|
62
|
+
return date.toDateString() === dateKey;
|
|
63
|
+
})()
|
|
64
|
+
: undefined;
|
|
65
|
+
const markerDelay = animate ? animationDuration / 1000 + groupIndex * 0.1 : 0;
|
|
66
|
+
return (_jsx(MarkerGroup, { animate: animate, animationDelay: markerDelay, containerRef: containerRef, isActive: isActive, lineHeight: innerHeight, marginLeft: margin.left, marginTop: margin.top, markers: dateMarkers, onHover: handleMarkerHover, showLine: showLines, size: size, x: markerX, y: markerY }, dateKey));
|
|
67
|
+
}) }));
|
|
68
|
+
}
|
|
69
|
+
// Hook to get active markers for tooltip
|
|
70
|
+
export function useActiveMarkers(items) {
|
|
71
|
+
const { tooltipData } = useChartHover();
|
|
72
|
+
return useMemo(() => {
|
|
73
|
+
if (!tooltipData) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const point = tooltipData.point;
|
|
77
|
+
const date = point.date instanceof Date ? point.date : new Date(point.date);
|
|
78
|
+
const dateKey = date.toDateString();
|
|
79
|
+
return items.filter((m) => m.date.toDateString() === dateKey);
|
|
80
|
+
}, [tooltipData, items]);
|
|
81
|
+
}
|
|
82
|
+
ChartMarkers.displayName = "ChartMarkers";
|
|
83
|
+
// Marker for SVG component detection (renders after mouse overlay for interaction)
|
|
84
|
+
ChartMarkers.__isChartMarkers = true;
|
|
85
|
+
MarkerTooltipContent.displayName = "MarkerTooltipContent";
|
|
86
|
+
export default ChartMarkers;
|
|
87
|
+
//# sourceMappingURL=chart-markers.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { ChartMarkers, type ChartMarkersProps, MarkerTooltipContent, type MarkerTooltipContentProps, useActiveMarkers, } from "./chart-markers.js";
|
|
2
|
+
export { type ChartMarker, MarkerGroup, type MarkerGroupProps, } from "./marker-group.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
export interface ChartMarker {
|
|
3
|
+
/** Date for this marker (will be matched to nearest data point) */
|
|
4
|
+
date: Date;
|
|
5
|
+
/** Icon to display in the marker circle */
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
/** Title shown in tooltip */
|
|
8
|
+
title: string;
|
|
9
|
+
/** Optional description */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Optional custom content for tooltip (overrides title/description) */
|
|
12
|
+
content?: React.ReactNode;
|
|
13
|
+
/** Optional color override for the marker circle */
|
|
14
|
+
color?: string;
|
|
15
|
+
/** Click handler */
|
|
16
|
+
onClick?: () => void;
|
|
17
|
+
/** URL to navigate to when clicked */
|
|
18
|
+
href?: string;
|
|
19
|
+
/** Open href in new tab. Default: false */
|
|
20
|
+
target?: "_blank" | "_self";
|
|
21
|
+
}
|
|
22
|
+
export interface MarkerGroupProps {
|
|
23
|
+
/** X position in pixels */
|
|
24
|
+
x: number;
|
|
25
|
+
/** Y position (top of chart area) */
|
|
26
|
+
y: number;
|
|
27
|
+
/** Markers at this position */
|
|
28
|
+
markers: ChartMarker[];
|
|
29
|
+
/** Whether this marker group is currently hovered (via chart hover) */
|
|
30
|
+
isActive?: boolean;
|
|
31
|
+
/** Size of each marker circle */
|
|
32
|
+
size?: number;
|
|
33
|
+
/** Callback when marker group is hovered */
|
|
34
|
+
onHover?: (markers: ChartMarker[] | null) => void;
|
|
35
|
+
/** Reference to chart container for portal positioning */
|
|
36
|
+
containerRef?: React.RefObject<HTMLDivElement | null>;
|
|
37
|
+
/** Margin left offset from chart container */
|
|
38
|
+
marginLeft?: number;
|
|
39
|
+
/** Margin top offset from chart container */
|
|
40
|
+
marginTop?: number;
|
|
41
|
+
/** Delay before entrance animation starts */
|
|
42
|
+
animationDelay?: number;
|
|
43
|
+
/** Whether the marker should animate in */
|
|
44
|
+
animate?: boolean;
|
|
45
|
+
/** Height of the vertical guide line below the marker */
|
|
46
|
+
lineHeight?: number;
|
|
47
|
+
/** Whether to show the vertical guide line. Default: true */
|
|
48
|
+
showLine?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Force the marker fan to open even when the user isn't hovering this
|
|
51
|
+
* group directly. Used by parent layers (e.g. a clustered marker layer)
|
|
52
|
+
* to fan out a cluster when the chart's main crosshair lands on one of
|
|
53
|
+
* the cluster's buckets.
|
|
54
|
+
*/
|
|
55
|
+
forceOpen?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Make the icon `foreignObject` fill the entire circle (no 4px inset)
|
|
58
|
+
* so favicon-style icons sit edge-to-edge with the marker border.
|
|
59
|
+
*/
|
|
60
|
+
iconFill?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Override the marker circle's stroke color. Falls back to
|
|
63
|
+
* `chartCssVars.markerBorder` when not set.
|
|
64
|
+
*/
|
|
65
|
+
borderColor?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Marker circle stroke width in px. Default 1.5.
|
|
68
|
+
*/
|
|
69
|
+
borderWidth?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Cap the number of markers rendered in the fan-out arc. The count
|
|
72
|
+
* badge still reflects the full cluster size. Without this, large
|
|
73
|
+
* clusters (e.g. 20+ spikes) collapse the fan angular spacing to
|
|
74
|
+
* essentially zero and the markers stack on top of each other.
|
|
75
|
+
*/
|
|
76
|
+
maxFanned?: number;
|
|
77
|
+
/**
|
|
78
|
+
* Fade this marker group when another cluster has focus. Used by
|
|
79
|
+
* parent layers to spotlight the active cluster.
|
|
80
|
+
*/
|
|
81
|
+
isMuted?: boolean;
|
|
82
|
+
}
|
|
83
|
+
export declare function MarkerGroup({ x, y, markers, isActive, size, onHover, containerRef, marginLeft, marginTop, animationDelay, animate, lineHeight, showLine, forceOpen, iconFill, borderColor, borderWidth, maxFanned, isMuted, }: MarkerGroupProps): React.JSX.Element;
|
|
84
|
+
export declare namespace MarkerGroup {
|
|
85
|
+
var displayName: string;
|
|
86
|
+
}
|
|
87
|
+
export default MarkerGroup;
|
|
88
|
+
//# sourceMappingURL=marker-group.d.ts.map
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { AnimatePresence, motion } from "motion/react";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { createPortal } from "react-dom";
|
|
6
|
+
import { cn } from "../../lib/cn.js";
|
|
7
|
+
import { chartCssVars } from "../chart-context.js";
|
|
8
|
+
// Fan configuration
|
|
9
|
+
const FAN_RADIUS = 50;
|
|
10
|
+
const FAN_ANGLE = 160;
|
|
11
|
+
// Entrance + fanned + muted variants. `fanned` shrinks and dims the
|
|
12
|
+
// collapsed marker while its siblings are flying out in the portal, so
|
|
13
|
+
// users only see the fan and not a duplicate icon sitting underneath.
|
|
14
|
+
// `muted` fades non-active clusters when one cluster is being focused.
|
|
15
|
+
const markerEntranceVariants = {
|
|
16
|
+
hidden: {
|
|
17
|
+
scale: 0.85,
|
|
18
|
+
opacity: 0,
|
|
19
|
+
filter: "blur(2px)",
|
|
20
|
+
},
|
|
21
|
+
visible: {
|
|
22
|
+
scale: 1,
|
|
23
|
+
opacity: 1,
|
|
24
|
+
filter: "blur(0px)",
|
|
25
|
+
},
|
|
26
|
+
fanned: {
|
|
27
|
+
scale: 0.6,
|
|
28
|
+
opacity: 0,
|
|
29
|
+
filter: "blur(2px)",
|
|
30
|
+
},
|
|
31
|
+
muted: {
|
|
32
|
+
scale: 1,
|
|
33
|
+
opacity: 0.4,
|
|
34
|
+
filter: "blur(0px)",
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
export function MarkerGroup({ x, y, markers, isActive = false, size = 28, onHover, containerRef, marginLeft = 0, marginTop = 0, animationDelay = 0, animate = true, lineHeight = 0, showLine = true, forceOpen = false, iconFill = false, borderColor, borderWidth = 1.5, maxFanned, isMuted = false, }) {
|
|
38
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
39
|
+
const shouldFan = (isHovered || forceOpen) && markers.length > 1;
|
|
40
|
+
const hasMultiple = markers.length > 1;
|
|
41
|
+
const fannedMarkers = maxFanned === undefined ? markers : markers.slice(0, maxFanned);
|
|
42
|
+
let currentVariant = "visible";
|
|
43
|
+
if (shouldFan) {
|
|
44
|
+
currentVariant = "fanned";
|
|
45
|
+
}
|
|
46
|
+
else if (isMuted) {
|
|
47
|
+
currentVariant = "muted";
|
|
48
|
+
}
|
|
49
|
+
const getCirclePosition = (index, total) => {
|
|
50
|
+
const startAngle = -90 - FAN_ANGLE / 2;
|
|
51
|
+
const angleStep = total > 1 ? FAN_ANGLE / (total - 1) : 0;
|
|
52
|
+
const angle = startAngle + index * angleStep;
|
|
53
|
+
const radians = (angle * Math.PI) / 180;
|
|
54
|
+
return {
|
|
55
|
+
x: Math.cos(radians) * FAN_RADIUS,
|
|
56
|
+
y: Math.sin(radians) * FAN_RADIUS,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
const handleMouseEnter = (e) => {
|
|
60
|
+
e.stopPropagation(); // Prevent chart from handling this event
|
|
61
|
+
setIsHovered(true);
|
|
62
|
+
onHover?.(markers);
|
|
63
|
+
};
|
|
64
|
+
const handleMouseLeave = (e) => {
|
|
65
|
+
e.stopPropagation(); // Prevent chart from handling this event
|
|
66
|
+
setIsHovered(false);
|
|
67
|
+
onHover?.(null);
|
|
68
|
+
};
|
|
69
|
+
const handleMouseMove = (e) => {
|
|
70
|
+
e.stopPropagation(); // Prevent chart crosshair from moving while hovering markers
|
|
71
|
+
};
|
|
72
|
+
const portalX = x + marginLeft;
|
|
73
|
+
const portalY = y + marginTop;
|
|
74
|
+
return (_jsxs(_Fragment, { children: [_jsxs("g", { transform: `translate(${x}, ${y})`, children: [showLine && lineHeight > 0 && (_jsx(motion.line, { animate: {
|
|
75
|
+
strokeOpacity: (() => {
|
|
76
|
+
if (isHovered) {
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
if (isActive) {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
return 0.6;
|
|
83
|
+
})(),
|
|
84
|
+
}, initial: { strokeOpacity: 0.6 }, stroke: chartCssVars.markerBorder, strokeDasharray: "4,4", strokeLinecap: "round", strokeWidth: 1, style: { pointerEvents: "none" }, transition: { duration: 0.2, ease: "easeOut" }, x1: 0, x2: 0, y1: size / 2 + 4, y2: lineHeight + Math.abs(y) })), _jsx("g", { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove, style: { cursor: "pointer" }, children: _jsxs(motion.g, { animate: currentVariant, initial: animate ? "hidden" : currentVariant, transition: {
|
|
85
|
+
type: "spring",
|
|
86
|
+
stiffness: 300,
|
|
87
|
+
damping: 25,
|
|
88
|
+
delay: animationDelay,
|
|
89
|
+
}, variants: markerEntranceVariants, children: [_jsx("rect", { fill: "transparent", height: size * 1.5, width: size * 1.5, x: -size * 0.75, y: -size }), _jsx(MarkerCircle, { borderColor: borderColor, borderWidth: borderWidth, color: markers[0]?.color, icon: markers[0]?.icon, iconFill: iconFill, size: size }), _jsx(AnimatePresence, { children: hasMultiple && !shouldFan && (_jsxs(motion.g, { animate: { scale: 1, opacity: 1 }, exit: { scale: 0, opacity: 0 }, initial: { scale: 0, opacity: 0 }, transition: { type: "spring", stiffness: 400, damping: 20 }, children: [_jsx("circle", { cx: size / 2 + 2, cy: -size / 2 - 2, r: 9, style: { fill: chartCssVars.badgeBackground } }), _jsx("text", { dominantBaseline: "central", fontSize: 11, fontWeight: 600, style: { fill: chartCssVars.badgeForeground }, textAnchor: "middle", x: size / 2 + 2, y: -size / 2 - 2, children: markers.length })] })) })] }) })] }), containerRef?.current &&
|
|
90
|
+
createPortal(_jsx("div", { className: "absolute", onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove, style: {
|
|
91
|
+
// Position the div so its center is at the marker position
|
|
92
|
+
// The div covers the entire fan area to prevent mouseLeave when moving between markers
|
|
93
|
+
left: portalX - (FAN_RADIUS + size / 2),
|
|
94
|
+
top: portalY - (FAN_RADIUS + size / 2),
|
|
95
|
+
width: FAN_RADIUS * 2 + size,
|
|
96
|
+
height: FAN_RADIUS * 2 + size,
|
|
97
|
+
zIndex: 100,
|
|
98
|
+
pointerEvents: shouldFan ? "auto" : "none",
|
|
99
|
+
}, children: _jsxs("div", { className: "absolute", style: {
|
|
100
|
+
left: FAN_RADIUS + size / 2,
|
|
101
|
+
top: FAN_RADIUS + size / 2,
|
|
102
|
+
}, children: [_jsx(AnimatePresence, { mode: "sync", children: shouldFan &&
|
|
103
|
+
fannedMarkers.map((marker, index) => {
|
|
104
|
+
const position = getCirclePosition(index, fannedMarkers.length);
|
|
105
|
+
return (_jsx(motion.div, { animate: {
|
|
106
|
+
x: position.x,
|
|
107
|
+
y: position.y,
|
|
108
|
+
scale: 1,
|
|
109
|
+
opacity: 1,
|
|
110
|
+
}, className: "absolute", exit: { x: 0, y: 0, scale: 0, opacity: 0 }, initial: { x: 0, y: 0, scale: 0, opacity: 0 }, style: {
|
|
111
|
+
width: size,
|
|
112
|
+
height: size,
|
|
113
|
+
left: -size / 2,
|
|
114
|
+
top: -size / 2,
|
|
115
|
+
}, transition: {
|
|
116
|
+
type: "spring",
|
|
117
|
+
stiffness: 400,
|
|
118
|
+
damping: 22,
|
|
119
|
+
delay: index * 0.04,
|
|
120
|
+
}, children: _jsx(MarkerCircleHTML, { borderColor: borderColor, borderWidth: borderWidth, color: marker.color, href: marker.href, icon: marker.icon, iconFill: iconFill, isClickable: !!(marker.onClick || marker.href), onClick: marker.onClick, size: size, target: marker.target }) }, `fan-${marker.title}`));
|
|
121
|
+
}) }), _jsx(AnimatePresence, { children: shouldFan && (_jsx(motion.div, { animate: { scale: 1, opacity: 0.5 }, className: "absolute", exit: { scale: 0, opacity: 0 }, initial: { scale: 0, opacity: 0 }, style: {
|
|
122
|
+
width: size * 0.5,
|
|
123
|
+
height: size * 0.5,
|
|
124
|
+
left: -size * 0.25,
|
|
125
|
+
top: -size * 0.25,
|
|
126
|
+
}, transition: { type: "spring", stiffness: 400, damping: 20 }, children: _jsx("div", { className: "h-full w-full rounded-full", style: { backgroundColor: chartCssVars.markerBorder } }) })) })] }) }), containerRef.current)] }));
|
|
127
|
+
}
|
|
128
|
+
function MarkerCircle({ icon, size, color, iconFill = false, borderColor, borderWidth = 1.5, }) {
|
|
129
|
+
const inset = iconFill ? 0 : 4;
|
|
130
|
+
return (_jsxs("g", { children: [_jsx("circle", { cx: 0, cy: 2, fill: "black", opacity: 0.15, r: size / 2 }), _jsx("circle", { cx: 0, cy: 0, fill: color || chartCssVars.markerBackground, r: size / 2, stroke: borderColor ?? chartCssVars.markerBorder, strokeWidth: borderWidth }), _jsx("foreignObject", { height: size - inset * 2, width: size - inset * 2, x: -size / 2 + inset, y: -size / 2 + inset, children: _jsx("div", { style: {
|
|
131
|
+
width: "100%",
|
|
132
|
+
height: "100%",
|
|
133
|
+
display: "flex",
|
|
134
|
+
alignItems: "center",
|
|
135
|
+
justifyContent: "center",
|
|
136
|
+
color: chartCssVars.markerForeground,
|
|
137
|
+
fontSize: size * 0.5,
|
|
138
|
+
overflow: "hidden",
|
|
139
|
+
borderRadius: "50%",
|
|
140
|
+
}, children: icon }) })] }));
|
|
141
|
+
}
|
|
142
|
+
function MarkerCircleHTML({ icon, size, color, onClick, href, target = "_self", isClickable = false, iconFill = false, borderColor, borderWidth = 1.5, }) {
|
|
143
|
+
const hasAction = isClickable || onClick || href;
|
|
144
|
+
const inset = iconFill ? 0 : 4;
|
|
145
|
+
const handleClick = (e) => {
|
|
146
|
+
e.stopPropagation();
|
|
147
|
+
if (onClick) {
|
|
148
|
+
onClick();
|
|
149
|
+
}
|
|
150
|
+
else if (href) {
|
|
151
|
+
if (target === "_blank") {
|
|
152
|
+
window.open(href, "_blank", "noopener,noreferrer");
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
window.location.href = href;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
// Note: color and CSS vars must remain inline styles as they're dynamic
|
|
160
|
+
return (_jsx(motion.div, { className: cn("relative flex h-full w-full items-center justify-center rounded-full shadow-lg", hasAction && "cursor-pointer"), onClick: hasAction ? handleClick : undefined, style: {
|
|
161
|
+
backgroundColor: color || chartCssVars.markerBackground,
|
|
162
|
+
border: `${borderWidth}px solid ${borderColor ?? chartCssVars.markerBorder}`,
|
|
163
|
+
fontSize: size * 0.5,
|
|
164
|
+
color: chartCssVars.markerForeground,
|
|
165
|
+
padding: inset,
|
|
166
|
+
overflow: "hidden",
|
|
167
|
+
}, transition: { type: "spring", stiffness: 400, damping: 17 }, whileHover: hasAction ? { scale: 1.15, boxShadow: "0 4px 20px rgba(0,0,0,0.25)" } : undefined, whileTap: hasAction ? { scale: 0.95 } : undefined, children: icon }));
|
|
168
|
+
}
|
|
169
|
+
MarkerGroup.displayName = "MarkerGroup";
|
|
170
|
+
export default MarkerGroup;
|
|
171
|
+
//# sourceMappingURL=marker-group.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Transition } from "motion/react";
|
|
2
|
+
export declare function transitionWithDelay(transition: Transition | undefined, delaySeconds: number, fallback?: Transition): Transition;
|
|
3
|
+
export interface SpringOptions {
|
|
4
|
+
stiffness: number;
|
|
5
|
+
damping: number;
|
|
6
|
+
mass?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function springOptionsFromTransition(transition?: Transition, fallback?: SpringOptions): SpringOptions;
|
|
9
|
+
//# sourceMappingURL=motion-utils.d.ts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DEFAULT_CHART_ENTER_TRANSITION } from "./animation.js";
|
|
2
|
+
export function transitionWithDelay(transition, delaySeconds, fallback = DEFAULT_CHART_ENTER_TRANSITION) {
|
|
3
|
+
const base = transition ?? fallback;
|
|
4
|
+
return { ...base, delay: delaySeconds };
|
|
5
|
+
}
|
|
6
|
+
export function springOptionsFromTransition(transition, fallback = { stiffness: 60, damping: 20 }) {
|
|
7
|
+
if (!transition) {
|
|
8
|
+
return fallback;
|
|
9
|
+
}
|
|
10
|
+
if (transition.type === "spring") {
|
|
11
|
+
const bounce = typeof transition.bounce === "number" ? transition.bounce : undefined;
|
|
12
|
+
const baseStiffness = typeof transition.stiffness === "number" ? transition.stiffness : fallback.stiffness;
|
|
13
|
+
const baseDamping = typeof transition.damping === "number" ? transition.damping : fallback.damping;
|
|
14
|
+
return {
|
|
15
|
+
stiffness: bounce == null
|
|
16
|
+
? baseStiffness
|
|
17
|
+
: Math.min(400, Math.max(80, baseStiffness * (1 + bounce * 0.35))),
|
|
18
|
+
damping: bounce == null ? baseDamping : Math.max(8, baseDamping * (1 - bounce * 0.25)),
|
|
19
|
+
mass: typeof transition.mass === "number" ? transition.mass : fallback.mass,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const duration = "duration" in transition && typeof transition.duration === "number" ? transition.duration : 0.8;
|
|
23
|
+
return {
|
|
24
|
+
stiffness: Math.min(500, Math.max(40, 280 / duration)),
|
|
25
|
+
damping: Math.min(40, Math.max(12, 18 + duration * 4)),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=motion-utils.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
+
export declare const DEFAULT_ACTIVE_GRADIENT: readonly [string, string];
|
|
3
|
+
export declare const DEFAULT_ACTIVE_FILL_OPACITY = 1;
|
|
4
|
+
export declare const DEFAULT_INACTIVE_FILL_OPACITY = 0.8;
|
|
5
|
+
export declare const DEFAULT_LINEAR_GAUGE_HEIGHT = 24;
|
|
6
|
+
export interface NotchPoint {
|
|
7
|
+
x1: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
x2: number;
|
|
10
|
+
y2: number;
|
|
11
|
+
x3: number;
|
|
12
|
+
y3: number;
|
|
13
|
+
x4: number;
|
|
14
|
+
y4: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ComputedNotch {
|
|
17
|
+
index: number;
|
|
18
|
+
points: NotchPoint;
|
|
19
|
+
isActive: boolean;
|
|
20
|
+
gradientColor: string;
|
|
21
|
+
xCenter: number;
|
|
22
|
+
yCenter: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function collectGaugeDefsElements(nodes: ReactNode): ReactElement[];
|
|
25
|
+
export declare function interpolateGaugeHex(color1: string, color2: string, factor: number): string;
|
|
26
|
+
export declare function createNotchPath(points: NotchPoint, cornerRadiusPx: number, verticalDepth: number): string;
|
|
27
|
+
export declare function resolveGaugeBgFill(options: {
|
|
28
|
+
notchIndex: number;
|
|
29
|
+
totalNotches: number;
|
|
30
|
+
hasCustomInactive: boolean;
|
|
31
|
+
inactiveFill?: string;
|
|
32
|
+
useThemePaletteGradient: boolean;
|
|
33
|
+
useGradient: boolean;
|
|
34
|
+
inactiveGrad0: string;
|
|
35
|
+
inactiveGrad1: string;
|
|
36
|
+
arcTrackFill: string;
|
|
37
|
+
linearTrackFill: string;
|
|
38
|
+
linearMode: boolean;
|
|
39
|
+
}): string;
|
|
40
|
+
export declare function resolveGaugeActiveFill(options: {
|
|
41
|
+
notch: ComputedNotch;
|
|
42
|
+
hasCustomActive: boolean;
|
|
43
|
+
activeFill?: string;
|
|
44
|
+
useThemePaletteGradient: boolean;
|
|
45
|
+
themeActiveGradientId: string;
|
|
46
|
+
useGradient: boolean;
|
|
47
|
+
activeFillSolid: string;
|
|
48
|
+
}): string;
|
|
49
|
+
//# sourceMappingURL=notch-gauge-shared.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Children, Fragment, isValidElement } from "react";
|
|
2
|
+
export const DEFAULT_ACTIVE_GRADIENT = ["#bef264", "#10b981"];
|
|
3
|
+
export const DEFAULT_ACTIVE_FILL_OPACITY = 1;
|
|
4
|
+
export const DEFAULT_INACTIVE_FILL_OPACITY = 0.8;
|
|
5
|
+
export const DEFAULT_LINEAR_GAUGE_HEIGHT = 24;
|
|
6
|
+
function isDefsComponent(child) {
|
|
7
|
+
const typeLabel = child.type?.displayName ||
|
|
8
|
+
child.type?.name ||
|
|
9
|
+
"";
|
|
10
|
+
return (typeLabel.includes("Gradient") ||
|
|
11
|
+
typeLabel.includes("Pattern") ||
|
|
12
|
+
typeLabel === "LinearGradient" ||
|
|
13
|
+
typeLabel === "RadialGradient" ||
|
|
14
|
+
typeLabel === "Lines" ||
|
|
15
|
+
typeLabel === "PatternLines" ||
|
|
16
|
+
typeLabel === "Circles" ||
|
|
17
|
+
typeLabel === "Hexagons" ||
|
|
18
|
+
typeLabel === "Waves");
|
|
19
|
+
}
|
|
20
|
+
export function collectGaugeDefsElements(nodes) {
|
|
21
|
+
const out = [];
|
|
22
|
+
Children.forEach(nodes, (child) => {
|
|
23
|
+
if (!isValidElement(child)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (child.type === Fragment) {
|
|
27
|
+
out.push(...collectGaugeDefsElements(child.props.children));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (isDefsComponent(child)) {
|
|
31
|
+
out.push(child);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
export function interpolateGaugeHex(color1, color2, factor) {
|
|
37
|
+
const hex = (c) => Number.parseInt(c, 16);
|
|
38
|
+
const r1 = hex(color1.slice(1, 3));
|
|
39
|
+
const g1 = hex(color1.slice(3, 5));
|
|
40
|
+
const b1 = hex(color1.slice(5, 7));
|
|
41
|
+
const r2 = hex(color2.slice(1, 3));
|
|
42
|
+
const g2 = hex(color2.slice(3, 5));
|
|
43
|
+
const b2 = hex(color2.slice(5, 7));
|
|
44
|
+
const r = Math.round(r1 + (r2 - r1) * factor);
|
|
45
|
+
const g = Math.round(g1 + (g2 - g1) * factor);
|
|
46
|
+
const b = Math.round(b1 + (b2 - b1) * factor);
|
|
47
|
+
return `#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`;
|
|
48
|
+
}
|
|
49
|
+
export function createNotchPath(points, cornerRadiusPx, verticalDepth) {
|
|
50
|
+
const { x1, y1, x2, y2, x3, y3, x4, y4 } = points;
|
|
51
|
+
const lerp = (a, b, t) => a + (b - a) * t;
|
|
52
|
+
const dist = (ax, ay, bx, by) => Math.hypot(bx - ax, by - ay);
|
|
53
|
+
const d12 = dist(x1, y1, x2, y2);
|
|
54
|
+
const d23 = dist(x2, y2, x3, y3);
|
|
55
|
+
const d34 = dist(x3, y3, x4, y4);
|
|
56
|
+
const d41 = dist(x4, y4, x1, y1);
|
|
57
|
+
if (cornerRadiusPx <= 0) {
|
|
58
|
+
return `M ${x1} ${y1} L ${x2} ${y2} L ${x3} ${y3} L ${x4} ${y4} Z`;
|
|
59
|
+
}
|
|
60
|
+
const minEdge = Math.min(d12, d23, d34, d41);
|
|
61
|
+
const cr = Math.min(cornerRadiusPx, verticalDepth * 0.48, d12 * 0.49, d23 * 0.49, d34 * 0.49, d41 * 0.49, minEdge * 0.49);
|
|
62
|
+
const r1 = Math.min(cr / d12, 0.49);
|
|
63
|
+
const r2 = Math.min(cr / d23, 0.49);
|
|
64
|
+
const r3 = Math.min(cr / d34, 0.49);
|
|
65
|
+
const r4 = Math.min(cr / d41, 0.49);
|
|
66
|
+
const p1a = { x: lerp(x1, x4, r4), y: lerp(y1, y4, r4) };
|
|
67
|
+
const p1b = { x: lerp(x1, x2, r1), y: lerp(y1, y2, r1) };
|
|
68
|
+
const p2a = { x: lerp(x2, x1, r1), y: lerp(y2, y1, r1) };
|
|
69
|
+
const p2b = { x: lerp(x2, x3, r2), y: lerp(y2, y3, r2) };
|
|
70
|
+
const p3a = { x: lerp(x3, x2, r2), y: lerp(y3, y2, r2) };
|
|
71
|
+
const p3b = { x: lerp(x3, x4, r3), y: lerp(y3, y4, r3) };
|
|
72
|
+
const p4a = { x: lerp(x4, x3, r3), y: lerp(y4, y3, r3) };
|
|
73
|
+
const p4b = { x: lerp(x4, x1, r4), y: lerp(y4, y1, r4) };
|
|
74
|
+
return `M ${p1a.x} ${p1a.y} Q ${x1} ${y1} ${p1b.x} ${p1b.y} L ${p2a.x} ${p2a.y} Q ${x2} ${y2} ${p2b.x} ${p2b.y} L ${p3a.x} ${p3a.y} Q ${x3} ${y3} ${p3b.x} ${p3b.y} L ${p4a.x} ${p4a.y} Q ${x4} ${y4} ${p4b.x} ${p4b.y} Z`;
|
|
75
|
+
}
|
|
76
|
+
export function resolveGaugeBgFill(options) {
|
|
77
|
+
const { notchIndex, totalNotches, hasCustomInactive, inactiveFill, useThemePaletteGradient, useGradient, inactiveGrad0, inactiveGrad1, arcTrackFill, linearTrackFill, linearMode, } = options;
|
|
78
|
+
if (hasCustomInactive) {
|
|
79
|
+
return inactiveFill;
|
|
80
|
+
}
|
|
81
|
+
if (useThemePaletteGradient) {
|
|
82
|
+
return linearMode ? "var(--chart-1)" : arcTrackFill;
|
|
83
|
+
}
|
|
84
|
+
if (useGradient) {
|
|
85
|
+
const denom = totalNotches > 1 ? totalNotches - 1 : 1;
|
|
86
|
+
return interpolateGaugeHex(inactiveGrad0, inactiveGrad1, notchIndex / denom);
|
|
87
|
+
}
|
|
88
|
+
return linearMode ? linearTrackFill : arcTrackFill;
|
|
89
|
+
}
|
|
90
|
+
export function resolveGaugeActiveFill(options) {
|
|
91
|
+
const { notch, hasCustomActive, activeFill, useThemePaletteGradient, themeActiveGradientId, useGradient, activeFillSolid, } = options;
|
|
92
|
+
if (hasCustomActive) {
|
|
93
|
+
return activeFill;
|
|
94
|
+
}
|
|
95
|
+
if (useThemePaletteGradient) {
|
|
96
|
+
return `url(#${themeActiveGradientId})`;
|
|
97
|
+
}
|
|
98
|
+
if (useGradient) {
|
|
99
|
+
return notch.gradientColor;
|
|
100
|
+
}
|
|
101
|
+
return activeFillSolid;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=notch-gauge-shared.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
export declare function findPathLengthAtX(path: SVGPathElement | null, pathLength: number, targetX: number): number;
|
|
3
|
+
interface PathStrokeMetrics {
|
|
4
|
+
pathD: string | null;
|
|
5
|
+
pathLength: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Caller passes the references that drive the rendered path (renderData,
|
|
9
|
+
* innerWidth, etc.) as `deps`. A stringified summary like
|
|
10
|
+
* `${renderData.length}:${innerWidth}` is *not* safe here — same-length
|
|
11
|
+
* in-place mutations of `renderData` keep the summary identical, so the
|
|
12
|
+
* effect would never re-fire and `pathD`/`pathLength` would stay frozen on
|
|
13
|
+
* the previous geometry (the area fill repaints from `renderData` directly
|
|
14
|
+
* and would diverge from the stroke).
|
|
15
|
+
*/
|
|
16
|
+
export declare function usePathStrokeMetrics(pathRef: RefObject<SVGPathElement | null>, deps: readonly unknown[]): PathStrokeMetrics;
|
|
17
|
+
export declare function resolveDashTailBounds(dashFromIndex: number | undefined, dataLength: number): boolean;
|
|
18
|
+
export declare function resolveDashStartX(data: Record<string, unknown>[], dashFromIndex: number, xScale: (value: Date | number) => number | undefined, xAccessor: (datum: Record<string, unknown>) => Date | number): number;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=path-stroke-utils.d.ts.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// biome-ignore-all lint/correctness/useExhaustiveDependencies: usePathStrokeMetrics intentionally accepts caller-controlled deps
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
export function findPathLengthAtX(path, pathLength, targetX) {
|
|
4
|
+
if (!path || pathLength === 0) {
|
|
5
|
+
return 0;
|
|
6
|
+
}
|
|
7
|
+
let low = 0;
|
|
8
|
+
let high = pathLength;
|
|
9
|
+
const tolerance = 0.5;
|
|
10
|
+
while (high - low > tolerance) {
|
|
11
|
+
const mid = (low + high) / 2;
|
|
12
|
+
const point = path.getPointAtLength(mid);
|
|
13
|
+
if (point.x < targetX) {
|
|
14
|
+
low = mid;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
high = mid;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return (low + high) / 2;
|
|
21
|
+
}
|
|
22
|
+
const EMPTY_METRICS = { pathD: null, pathLength: 0 };
|
|
23
|
+
/**
|
|
24
|
+
* Caller passes the references that drive the rendered path (renderData,
|
|
25
|
+
* innerWidth, etc.) as `deps`. A stringified summary like
|
|
26
|
+
* `${renderData.length}:${innerWidth}` is *not* safe here — same-length
|
|
27
|
+
* in-place mutations of `renderData` keep the summary identical, so the
|
|
28
|
+
* effect would never re-fire and `pathD`/`pathLength` would stay frozen on
|
|
29
|
+
* the previous geometry (the area fill repaints from `renderData` directly
|
|
30
|
+
* and would diverge from the stroke).
|
|
31
|
+
*/
|
|
32
|
+
export function usePathStrokeMetrics(pathRef, deps) {
|
|
33
|
+
const [metrics, setMetrics] = useState(EMPTY_METRICS);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const path = pathRef.current;
|
|
36
|
+
if (!path) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const d = path.getAttribute("d");
|
|
40
|
+
const len = d ? path.getTotalLength() : 0;
|
|
41
|
+
setMetrics((prev) => prev.pathD === d && prev.pathLength === len ? prev : { pathD: d, pathLength: len });
|
|
42
|
+
}, deps);
|
|
43
|
+
return metrics;
|
|
44
|
+
}
|
|
45
|
+
export function resolveDashTailBounds(dashFromIndex, dataLength) {
|
|
46
|
+
return dashFromIndex != null && dashFromIndex >= 0 && dashFromIndex < dataLength - 1;
|
|
47
|
+
}
|
|
48
|
+
export function resolveDashStartX(data, dashFromIndex, xScale, xAccessor) {
|
|
49
|
+
const dashFromPoint = data[dashFromIndex];
|
|
50
|
+
if (!dashFromPoint) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
return xScale(xAccessor(dashFromPoint)) ?? 0;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=path-stroke-utils.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type CurveFactory = any;
|
|
2
|
+
export interface PatternAreaProps {
|
|
3
|
+
/** Key in data to use for y values */
|
|
4
|
+
dataKey: string;
|
|
5
|
+
/** Fill color or pattern URL (e.g. `url(#pattern-id)`) */
|
|
6
|
+
fill: string;
|
|
7
|
+
/** Curve function. Default: curveMonotoneX */
|
|
8
|
+
curve?: CurveFactory;
|
|
9
|
+
/** @deprecated Pattern fill is not clip-revealed; only the stroke `Area` animates. */
|
|
10
|
+
animate?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Filled area using an SVG pattern (`url(#id)`).
|
|
14
|
+
* Pair with `PatternLines` in `AreaChart` children and an `Area` with `fillOpacity={0}` for the stroke line.
|
|
15
|
+
*/
|
|
16
|
+
export declare function PatternArea({ dataKey, fill, curve }: PatternAreaProps): import("react").JSX.Element;
|
|
17
|
+
export declare namespace PatternArea {
|
|
18
|
+
var displayName: string;
|
|
19
|
+
}
|
|
20
|
+
export default PatternArea;
|
|
21
|
+
//# sourceMappingURL=pattern-area.d.ts.map
|