@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,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { curveMonotoneX } from "@visx/curve";
|
|
4
|
+
import { AreaClosed } from "@visx/shape";
|
|
5
|
+
import { useChartStable } from "./chart-context.js";
|
|
6
|
+
/**
|
|
7
|
+
* Filled area using an SVG pattern (`url(#id)`).
|
|
8
|
+
* Pair with `PatternLines` in `AreaChart` children and an `Area` with `fillOpacity={0}` for the stroke line.
|
|
9
|
+
*/
|
|
10
|
+
export function PatternArea({ dataKey, fill, curve = curveMonotoneX }) {
|
|
11
|
+
const { renderData, xScale, yScale, xAccessor } = useChartStable();
|
|
12
|
+
return (_jsx(AreaClosed, { curve: curve, data: renderData, fill: fill, x: (d) => xScale(xAccessor(d)) ?? 0, y: (d) => {
|
|
13
|
+
const v = d[dataKey];
|
|
14
|
+
return typeof v === "number" ? (yScale(v) ?? 0) : 0;
|
|
15
|
+
}, yScale: yScale }));
|
|
16
|
+
}
|
|
17
|
+
PatternArea.displayName = "PatternArea";
|
|
18
|
+
export default PatternArea;
|
|
19
|
+
//# sourceMappingURL=pattern-area.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export declare const PATTERN_PRESET_IDS: readonly ["none", "diagonal", "horizontal", "vertical", "cross", "dots", "circles", "accent"];
|
|
3
|
+
export type PatternPresetId = (typeof PATTERN_PRESET_IDS)[number];
|
|
4
|
+
export interface PatternPresetOptions {
|
|
5
|
+
color?: string;
|
|
6
|
+
scale?: number;
|
|
7
|
+
strokeWidth?: number;
|
|
8
|
+
radius?: number;
|
|
9
|
+
complement?: boolean;
|
|
10
|
+
fill?: string;
|
|
11
|
+
/** Dot grid only — when false, render hollow dots (stroke only). Default: true */
|
|
12
|
+
dotFill?: boolean;
|
|
13
|
+
tileBackground?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Presets rendered with @visx/pattern `PatternCircles`. */
|
|
16
|
+
export declare function isCirclePattern(preset: PatternPresetId): boolean;
|
|
17
|
+
/** @deprecated Use `isCirclePattern`. */
|
|
18
|
+
export declare function isCirclesPattern(preset: PatternPresetId): boolean;
|
|
19
|
+
export declare function patternPresetTileSize(preset: PatternPresetId, scale?: number): {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
strokeWidth: number;
|
|
23
|
+
};
|
|
24
|
+
/** Renders a @visx/pattern definition node for the given preset. */
|
|
25
|
+
export declare function renderPatternPreset(preset: PatternPresetId, id: string, options?: PatternPresetOptions): ReactNode;
|
|
26
|
+
//# sourceMappingURL=pattern-preset.d.ts.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { PatternCircles, PatternLines } from "./visx-pattern.js";
|
|
4
|
+
export const PATTERN_PRESET_IDS = [
|
|
5
|
+
"none",
|
|
6
|
+
"diagonal",
|
|
7
|
+
"horizontal",
|
|
8
|
+
"vertical",
|
|
9
|
+
"cross",
|
|
10
|
+
"dots",
|
|
11
|
+
"circles",
|
|
12
|
+
"accent",
|
|
13
|
+
];
|
|
14
|
+
/** Presets rendered with @visx/pattern `PatternCircles`. */
|
|
15
|
+
export function isCirclePattern(preset) {
|
|
16
|
+
return preset === "circles" || preset === "dots";
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use `isCirclePattern`. */
|
|
19
|
+
export function isCirclesPattern(preset) {
|
|
20
|
+
return isCirclePattern(preset);
|
|
21
|
+
}
|
|
22
|
+
export function patternPresetTileSize(preset, scale = 1) {
|
|
23
|
+
let base = { width: 6, height: 6, strokeWidth: 1 };
|
|
24
|
+
if (preset === "dots") {
|
|
25
|
+
base = { width: 10, height: 10, strokeWidth: 0 };
|
|
26
|
+
}
|
|
27
|
+
else if (preset === "cross") {
|
|
28
|
+
base = { width: 8, height: 8, strokeWidth: 1 };
|
|
29
|
+
}
|
|
30
|
+
else if (preset === "circles") {
|
|
31
|
+
base = { width: 6, height: 6, strokeWidth: 1 };
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
width: base.width * scale,
|
|
35
|
+
height: base.height * scale,
|
|
36
|
+
strokeWidth: base.strokeWidth * scale,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function renderPatternCircles(preset, _id, color, common, options, scale) {
|
|
40
|
+
const isDotGrid = preset === "dots";
|
|
41
|
+
const radius = options.radius ?? (isDotGrid ? Math.max(0.5, 1.5 * scale) : 2 * scale);
|
|
42
|
+
const dotFillEnabled = options.dotFill !== false;
|
|
43
|
+
if (isDotGrid) {
|
|
44
|
+
const dotFill = dotFillEnabled ? options.fill || color : undefined;
|
|
45
|
+
return (_jsx(PatternCircles, { ...common, complement: options.complement, fill: dotFill, radius: radius, stroke: dotFillEnabled && options.fill ? undefined : color, strokeWidth: dotFillEnabled && !options.fill ? (options.strokeWidth ?? 0) : (options.strokeWidth ?? 1) }));
|
|
46
|
+
}
|
|
47
|
+
return (_jsx(PatternCircles, { ...common, complement: options.complement, fill: options.fill || undefined, radius: radius, stroke: color, strokeWidth: options.strokeWidth ?? common.strokeWidth }));
|
|
48
|
+
}
|
|
49
|
+
/** Renders a @visx/pattern definition node for the given preset. */
|
|
50
|
+
export function renderPatternPreset(preset, id, options = {}) {
|
|
51
|
+
if (preset === "none") {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const color = options.color ?? "var(--chart-1)";
|
|
55
|
+
const scale = options.scale ?? 1;
|
|
56
|
+
const tile = patternPresetTileSize(preset, scale);
|
|
57
|
+
const common = {
|
|
58
|
+
id,
|
|
59
|
+
height: tile.height,
|
|
60
|
+
width: tile.width,
|
|
61
|
+
strokeWidth: tile.strokeWidth,
|
|
62
|
+
...(options.tileBackground ? { background: options.tileBackground } : {}),
|
|
63
|
+
};
|
|
64
|
+
if (preset === "dots" || preset === "circles") {
|
|
65
|
+
return renderPatternCircles(preset, id, color, common, options, scale);
|
|
66
|
+
}
|
|
67
|
+
const strokeWidth = options.strokeWidth ?? tile.strokeWidth;
|
|
68
|
+
switch (preset) {
|
|
69
|
+
case "diagonal":
|
|
70
|
+
return (_jsx(PatternLines, { ...common, orientation: ["diagonal"], stroke: color, strokeWidth: strokeWidth }));
|
|
71
|
+
case "horizontal":
|
|
72
|
+
return (_jsx(PatternLines, { ...common, orientation: ["horizontal"], stroke: color, strokeWidth: strokeWidth }));
|
|
73
|
+
case "vertical":
|
|
74
|
+
return (_jsx(PatternLines, { ...common, orientation: ["vertical"], stroke: color, strokeWidth: strokeWidth }));
|
|
75
|
+
case "cross":
|
|
76
|
+
return (_jsx(PatternLines, { ...common, orientation: ["diagonal", "diagonalRightToLeft"], stroke: color, strokeWidth: strokeWidth }));
|
|
77
|
+
case "accent":
|
|
78
|
+
return (_jsx(PatternLines, { ...common, orientation: ["diagonal"], stroke: "#e879f9", strokeWidth: strokeWidth }));
|
|
79
|
+
default:
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=pattern-preset.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type PieCenterProps } from "./pie-center.js";
|
|
2
|
+
export type PieCenterShellProps = Omit<PieCenterProps, "children"> & {
|
|
3
|
+
/** Value shown with NumberFlow (same role as pie total when not hovering) */
|
|
4
|
+
centerValue: number;
|
|
5
|
+
/** Square reference size for pie context (matches `PieChart` `size`) */
|
|
6
|
+
contextSize: number;
|
|
7
|
+
/** Inner radius in px — must be > 0 so `PieCenter` renders */
|
|
8
|
+
innerRadiusPx: number;
|
|
9
|
+
/**
|
|
10
|
+
* When true (default), the first paint uses `0` then updates to `centerValue`
|
|
11
|
+
* on the next frame so NumberFlow can run an entrance transition. Subsequent
|
|
12
|
+
* `centerValue` updates animate as usual.
|
|
13
|
+
*/
|
|
14
|
+
animateEntrance?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Renders {@link PieCenter} with a minimal {@link PieProvider} so you can reuse
|
|
18
|
+
* the same center layout as a donut pie without mounting slices or a full {@link PieChart}.
|
|
19
|
+
*/
|
|
20
|
+
export declare function PieCenterShell({ centerValue, contextSize, innerRadiusPx, animateEntrance, ...pieCenterProps }: PieCenterShellProps): import("react").JSX.Element;
|
|
21
|
+
export declare namespace PieCenterShell {
|
|
22
|
+
var displayName: string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=pie-center-shell.d.ts.map
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { pie as d3Pie } from "d3-shape";
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { PieCenter } from "./pie-center.js";
|
|
6
|
+
import { defaultPieColors, PieProvider, } from "./pie-context.js";
|
|
7
|
+
const SHELL_HOVER_OFFSET = 10;
|
|
8
|
+
/**
|
|
9
|
+
* Renders {@link PieCenter} with a minimal {@link PieProvider} so you can reuse
|
|
10
|
+
* the same center layout as a donut pie without mounting slices or a full {@link PieChart}.
|
|
11
|
+
*/
|
|
12
|
+
export function PieCenterShell({ centerValue, contextSize, innerRadiusPx, animateEntrance = true, ...pieCenterProps }) {
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const introStartedRef = useRef(false);
|
|
15
|
+
const [flowTotal, setFlowTotal] = useState(() => (animateEntrance ? 0 : centerValue));
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (!animateEntrance) {
|
|
18
|
+
setFlowTotal(centerValue);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!introStartedRef.current) {
|
|
22
|
+
introStartedRef.current = true;
|
|
23
|
+
setFlowTotal(0);
|
|
24
|
+
let innerRaf = 0;
|
|
25
|
+
const outerRaf = requestAnimationFrame(() => {
|
|
26
|
+
innerRaf = requestAnimationFrame(() => setFlowTotal(centerValue));
|
|
27
|
+
});
|
|
28
|
+
return () => {
|
|
29
|
+
cancelAnimationFrame(outerRaf);
|
|
30
|
+
cancelAnimationFrame(innerRaf);
|
|
31
|
+
introStartedRef.current = false;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
setFlowTotal(centerValue);
|
|
35
|
+
}, [animateEntrance, centerValue]);
|
|
36
|
+
const data = useMemo(() => [{ label: "_pieCenterShell", value: Math.max(flowTotal, 0) }], [flowTotal]);
|
|
37
|
+
const totalValue = flowTotal;
|
|
38
|
+
const arcs = useMemo(() => {
|
|
39
|
+
const v = data[0]?.value ?? 0;
|
|
40
|
+
if (v > 0) {
|
|
41
|
+
const pieGenerator = d3Pie()
|
|
42
|
+
.value((d) => d.value)
|
|
43
|
+
.startAngle(-Math.PI / 2)
|
|
44
|
+
.endAngle((3 * Math.PI) / 2)
|
|
45
|
+
.padAngle(0)
|
|
46
|
+
.sort(null);
|
|
47
|
+
const computed = pieGenerator(data);
|
|
48
|
+
return computed.map((arc, index) => ({
|
|
49
|
+
data: arc.data,
|
|
50
|
+
index,
|
|
51
|
+
startAngle: arc.startAngle,
|
|
52
|
+
endAngle: arc.endAngle,
|
|
53
|
+
padAngle: arc.padAngle,
|
|
54
|
+
value: arc.value,
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
const d0 = data[0];
|
|
58
|
+
if (!d0) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
data: d0,
|
|
64
|
+
index: 0,
|
|
65
|
+
startAngle: -Math.PI / 2,
|
|
66
|
+
endAngle: (3 * Math.PI) / 2,
|
|
67
|
+
padAngle: 0,
|
|
68
|
+
value: 0,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
}, [data]);
|
|
72
|
+
const getColor = useCallback((index) => {
|
|
73
|
+
return defaultPieColors[index % defaultPieColors.length];
|
|
74
|
+
}, []);
|
|
75
|
+
const getFill = useCallback((index) => {
|
|
76
|
+
const item = data[index];
|
|
77
|
+
if (item?.fill) {
|
|
78
|
+
return item.fill;
|
|
79
|
+
}
|
|
80
|
+
return getColor(index);
|
|
81
|
+
}, [data, getColor]);
|
|
82
|
+
const center = contextSize / 2;
|
|
83
|
+
const outerRadius = center - SHELL_HOVER_OFFSET;
|
|
84
|
+
const contextValue = useMemo(() => ({
|
|
85
|
+
data,
|
|
86
|
+
arcs,
|
|
87
|
+
size: contextSize,
|
|
88
|
+
center,
|
|
89
|
+
outerRadius,
|
|
90
|
+
innerRadius: innerRadiusPx,
|
|
91
|
+
padAngle: 0,
|
|
92
|
+
cornerRadius: 0,
|
|
93
|
+
hoverOffset: SHELL_HOVER_OFFSET,
|
|
94
|
+
hoveredIndex: null,
|
|
95
|
+
setHoveredIndex: () => undefined,
|
|
96
|
+
animationKey: 0,
|
|
97
|
+
isLoaded: true,
|
|
98
|
+
enterStaggerScale: 1,
|
|
99
|
+
containerRef,
|
|
100
|
+
totalValue,
|
|
101
|
+
getColor,
|
|
102
|
+
getFill,
|
|
103
|
+
geometryScrubbing: false,
|
|
104
|
+
scrubSlicePaths: null,
|
|
105
|
+
}), [data, arcs, contextSize, center, outerRadius, innerRadiusPx, totalValue, getColor, getFill]);
|
|
106
|
+
return (_jsx(PieProvider, { value: contextValue, children: _jsx(PieCenter, { ...pieCenterProps }) }));
|
|
107
|
+
}
|
|
108
|
+
PieCenterShell.displayName = "PieCenterShell";
|
|
109
|
+
//# sourceMappingURL=pie-center-shell.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type ChartStatFlowFormat } from "./chart-stat-flow.js";
|
|
3
|
+
export interface PieCenterProps {
|
|
4
|
+
/** Label shown below the value. Default: "Total" when not hovering */
|
|
5
|
+
defaultLabel?: string;
|
|
6
|
+
/** Format options for NumberFlow. Default: standard notation */
|
|
7
|
+
formatOptions?: ChartStatFlowFormat;
|
|
8
|
+
/** Custom render function for complete control over center content */
|
|
9
|
+
children?: (props: {
|
|
10
|
+
value: number;
|
|
11
|
+
label: string;
|
|
12
|
+
isHovered: boolean;
|
|
13
|
+
data: {
|
|
14
|
+
label: string;
|
|
15
|
+
value: number;
|
|
16
|
+
color?: string;
|
|
17
|
+
fill?: string;
|
|
18
|
+
};
|
|
19
|
+
}) => ReactNode;
|
|
20
|
+
/** Additional class name for the container */
|
|
21
|
+
className?: string;
|
|
22
|
+
/** Class name for the value text. Scales with center size via container queries. */
|
|
23
|
+
valueClassName?: string;
|
|
24
|
+
/** Class name for the label text. Scales with center size via container queries. */
|
|
25
|
+
labelClassName?: string;
|
|
26
|
+
/** Prefix to show before the number (e.g., "$") */
|
|
27
|
+
prefix?: string;
|
|
28
|
+
/** Suffix to show after the number (e.g., "%") */
|
|
29
|
+
suffix?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* PieCenter displays content in the center of a donut/pie chart.
|
|
33
|
+
*
|
|
34
|
+
* This component renders as pure HTML (not inside SVG foreignObject) to avoid
|
|
35
|
+
* Safari's WebKit bug #23113 where HTML content with CSS transforms/opacity
|
|
36
|
+
* inside foreignObject renders at incorrect positions.
|
|
37
|
+
*
|
|
38
|
+
* The parent PieChart uses CSS Grid stacking to overlay this HTML content
|
|
39
|
+
* on top of the SVG slices.
|
|
40
|
+
*/
|
|
41
|
+
export declare function PieCenter({ defaultLabel, formatOptions, children, className, valueClassName, labelClassName, prefix, suffix, }: PieCenterProps): import("react").JSX.Element | null;
|
|
42
|
+
export declare namespace PieCenter {
|
|
43
|
+
var displayName: string;
|
|
44
|
+
}
|
|
45
|
+
export default PieCenter;
|
|
46
|
+
//# sourceMappingURL=pie-center.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { chartCenterContainerClassName, chartCenterLabelClassName, chartCenterValueClassName, } from "./chart-center-typography.js";
|
|
5
|
+
import { ChartStatFlow, defaultChartStatFlowFormat, } from "./chart-stat-flow.js";
|
|
6
|
+
import { usePieHover, usePieStable } from "./pie-context.js";
|
|
7
|
+
/**
|
|
8
|
+
* PieCenter displays content in the center of a donut/pie chart.
|
|
9
|
+
*
|
|
10
|
+
* This component renders as pure HTML (not inside SVG foreignObject) to avoid
|
|
11
|
+
* Safari's WebKit bug #23113 where HTML content with CSS transforms/opacity
|
|
12
|
+
* inside foreignObject renders at incorrect positions.
|
|
13
|
+
*
|
|
14
|
+
* The parent PieChart uses CSS Grid stacking to overlay this HTML content
|
|
15
|
+
* on top of the SVG slices.
|
|
16
|
+
*/
|
|
17
|
+
export function PieCenter({ defaultLabel = "Total", formatOptions = defaultChartStatFlowFormat, children, className = "", valueClassName = chartCenterValueClassName, labelClassName = chartCenterLabelClassName, prefix, suffix, }) {
|
|
18
|
+
const { data, totalValue, innerRadius, geometryScrubbing } = usePieStable();
|
|
19
|
+
const { hoveredIndex } = usePieHover();
|
|
20
|
+
const effectiveHoveredIndex = geometryScrubbing ? null : hoveredIndex;
|
|
21
|
+
const hoveredData = effectiveHoveredIndex === null ? null : data[effectiveHoveredIndex];
|
|
22
|
+
const displayValue = hoveredData ? hoveredData.value : totalValue;
|
|
23
|
+
const displayLabel = hoveredData ? hoveredData.label : defaultLabel;
|
|
24
|
+
// Calculate center area size based on inner radius
|
|
25
|
+
// Leave some padding so text doesn't touch the inner edge
|
|
26
|
+
const centerSize = innerRadius * 2 - 16;
|
|
27
|
+
// Don't render if there's no inner radius (solid pie, not donut)
|
|
28
|
+
if (innerRadius <= 0) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// If custom render function is provided, use it
|
|
32
|
+
if (children && hoveredData) {
|
|
33
|
+
return (_jsx("div", { className: cn(chartCenterContainerClassName, "flex items-center justify-center", className), style: { width: centerSize, height: centerSize }, children: children({
|
|
34
|
+
value: displayValue,
|
|
35
|
+
label: displayLabel,
|
|
36
|
+
isHovered: effectiveHoveredIndex !== null,
|
|
37
|
+
data: hoveredData,
|
|
38
|
+
}) }));
|
|
39
|
+
}
|
|
40
|
+
// Default center content with NumberFlow animations
|
|
41
|
+
// Now renders as pure HTML, avoiding Safari's foreignObject bugs
|
|
42
|
+
return (_jsx("div", { className: cn(chartCenterContainerClassName, "flex flex-col items-center justify-center text-center", className), style: { width: centerSize, height: centerSize }, children: _jsx(ChartStatFlow, { formatOptions: formatOptions, label: displayLabel, labelClassName: labelClassName, prefix: prefix, suffix: suffix, value: displayValue, valueClassName: valueClassName }) }));
|
|
43
|
+
}
|
|
44
|
+
PieCenter.displayName = "PieCenter";
|
|
45
|
+
export default PieCenter;
|
|
46
|
+
//# sourceMappingURL=pie-center.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Transition } from "motion/react";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import { type PieData } from "./pie-context.js";
|
|
4
|
+
/** Default hover offset in pixels */
|
|
5
|
+
export declare const DEFAULT_HOVER_OFFSET = 10;
|
|
6
|
+
export interface PieChartProps {
|
|
7
|
+
/** Data array - each item represents a slice */
|
|
8
|
+
data: PieData[];
|
|
9
|
+
/** Chart size in pixels. If not provided, uses parent container size */
|
|
10
|
+
size?: number;
|
|
11
|
+
/** Inner radius for donut charts. Default: 0 (solid pie) */
|
|
12
|
+
innerRadius?: number;
|
|
13
|
+
/** Padding angle between slices in radians. Default: 0 */
|
|
14
|
+
padAngle?: number;
|
|
15
|
+
/** Corner radius for rounded slice edges. Default: 0 */
|
|
16
|
+
cornerRadius?: number;
|
|
17
|
+
/** Start angle in radians. Default: -PI/2 (top) */
|
|
18
|
+
startAngle?: number;
|
|
19
|
+
/** End angle in radians. Default: 3*PI/2 (full circle from top) */
|
|
20
|
+
endAngle?: number;
|
|
21
|
+
/** Additional class name for the container */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Controlled hover state - index of hovered slice */
|
|
24
|
+
hoveredIndex?: number | null;
|
|
25
|
+
/** Callback when hover state changes */
|
|
26
|
+
onHoverChange?: (index: number | null) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Hover offset in pixels for slice hover effects.
|
|
29
|
+
* This also determines the padding around the chart to prevent clipping.
|
|
30
|
+
* Default: 10
|
|
31
|
+
*/
|
|
32
|
+
hoverOffset?: number;
|
|
33
|
+
/** Child components (PieSlice, PieCenter, patterns, gradients, etc.) */
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
/** Framer Motion transition for slice enter animation */
|
|
36
|
+
enterTransition?: Transition;
|
|
37
|
+
/** Scales slice stagger delays (1 = default). */
|
|
38
|
+
enterStaggerScale?: number;
|
|
39
|
+
/**
|
|
40
|
+
* High-frequency geometry updates (e.g. studio NumberField scrub).
|
|
41
|
+
* Uses plain SVG paths instead of Motion `d` / spring hover morphing.
|
|
42
|
+
*/
|
|
43
|
+
geometryScrubbing?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare function PieChart({ data, size: fixedSize, innerRadius, padAngle, cornerRadius, startAngle, endAngle, className, hoveredIndex, onHoverChange, hoverOffset, enterTransition, enterStaggerScale, geometryScrubbing, children, }: PieChartProps): import("react").JSX.Element;
|
|
46
|
+
export declare namespace PieChart {
|
|
47
|
+
var displayName: string;
|
|
48
|
+
}
|
|
49
|
+
export default PieChart;
|
|
50
|
+
//# sourceMappingURL=pie-chart.d.ts.map
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Group } from "@visx/group";
|
|
4
|
+
import { ParentSize } from "@visx/responsive";
|
|
5
|
+
import { arc as arcGenerator } from "@visx/shape";
|
|
6
|
+
import { pie as d3Pie } from "d3-shape";
|
|
7
|
+
import { Children, isValidElement, memo, useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
8
|
+
import { cn } from "../lib/cn.js";
|
|
9
|
+
import { defaultPieColors, PieProvider, } from "./pie-context.js";
|
|
10
|
+
/** Default hover offset in pixels */
|
|
11
|
+
export const DEFAULT_HOVER_OFFSET = 10;
|
|
12
|
+
function generatePieArcPath(innerRadius, outerRadius, startAngle, endAngle, cornerRadius, padAngle) {
|
|
13
|
+
const generator = arcGenerator({
|
|
14
|
+
innerRadius,
|
|
15
|
+
outerRadius,
|
|
16
|
+
cornerRadius,
|
|
17
|
+
padAngle,
|
|
18
|
+
});
|
|
19
|
+
return generator({ startAngle, endAngle }) || "";
|
|
20
|
+
}
|
|
21
|
+
// Helper to check if a child is a PieCenter component
|
|
22
|
+
function isPieCenter(child) {
|
|
23
|
+
return (isValidElement(child) &&
|
|
24
|
+
typeof child.type === "function" &&
|
|
25
|
+
(child.type.displayName === "PieCenter" ||
|
|
26
|
+
child.type.name === "PieCenter"));
|
|
27
|
+
}
|
|
28
|
+
function isPieSlice(child) {
|
|
29
|
+
return (isValidElement(child) &&
|
|
30
|
+
typeof child.type === "function" &&
|
|
31
|
+
(child.type.displayName === "PieSlice" ||
|
|
32
|
+
child.type.name === "PieSlice"));
|
|
33
|
+
}
|
|
34
|
+
// Helper to check if a component is a gradient or pattern definition
|
|
35
|
+
function isDefsComponent(child) {
|
|
36
|
+
const displayName = child.type?.displayName ||
|
|
37
|
+
child.type?.name ||
|
|
38
|
+
"";
|
|
39
|
+
return (displayName.includes("Gradient") ||
|
|
40
|
+
displayName.includes("Pattern") ||
|
|
41
|
+
displayName === "LinearGradient" ||
|
|
42
|
+
displayName === "RadialGradient");
|
|
43
|
+
}
|
|
44
|
+
function PieChartInner(props) {
|
|
45
|
+
const size = Math.min(props.width, props.height);
|
|
46
|
+
if (size < 10) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return _jsx(PieChartCore, { ...props });
|
|
50
|
+
}
|
|
51
|
+
const PieChartCore = memo(function PieChartCore({ width, height, data, innerRadius: innerRadiusProp, padAngle, cornerRadius, startAngle, endAngle, hoverOffset, children, containerRef, hoveredIndexProp, onHoverChange, enterTransition, enterStaggerScale, geometryScrubbing, }) {
|
|
52
|
+
const [internalHoveredIndex, setInternalHoveredIndex] = useState(null);
|
|
53
|
+
const [animationKey] = useState(0);
|
|
54
|
+
const [isLoaded, setIsLoaded] = useState(false);
|
|
55
|
+
// Use controlled or uncontrolled hover state
|
|
56
|
+
const isControlled = hoveredIndexProp !== undefined;
|
|
57
|
+
const hoveredIndex = isControlled ? hoveredIndexProp : internalHoveredIndex;
|
|
58
|
+
const setHoveredIndex = useCallback((index) => {
|
|
59
|
+
if (isControlled) {
|
|
60
|
+
onHoverChange?.(index);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
setInternalHoveredIndex(index);
|
|
64
|
+
}
|
|
65
|
+
}, [isControlled, onHoverChange]);
|
|
66
|
+
// Use the smaller dimension to ensure the chart fits
|
|
67
|
+
const size = Math.min(width, height);
|
|
68
|
+
const center = size / 2;
|
|
69
|
+
// Calculate radii with padding based on hover offset to prevent clipping
|
|
70
|
+
const padding = hoverOffset;
|
|
71
|
+
const outerRadius = center - padding;
|
|
72
|
+
const innerRadius = innerRadiusProp;
|
|
73
|
+
// Calculate total value
|
|
74
|
+
const totalValue = useMemo(() => data.reduce((sum, d) => sum + d.value, 0), [data]);
|
|
75
|
+
// Get color for a slice index
|
|
76
|
+
const getColor = useCallback((index) => {
|
|
77
|
+
const item = data[index];
|
|
78
|
+
if (item?.color) {
|
|
79
|
+
return item.color;
|
|
80
|
+
}
|
|
81
|
+
return defaultPieColors[index % defaultPieColors.length];
|
|
82
|
+
}, [data]);
|
|
83
|
+
// Get fill for a slice index (supports patterns/gradients)
|
|
84
|
+
const getFill = useCallback((index) => {
|
|
85
|
+
const item = data[index];
|
|
86
|
+
// Check for explicit fill (pattern/gradient URL)
|
|
87
|
+
if (item?.fill) {
|
|
88
|
+
return item.fill;
|
|
89
|
+
}
|
|
90
|
+
// Fall back to color
|
|
91
|
+
return getColor(index);
|
|
92
|
+
}, [data, getColor]);
|
|
93
|
+
// Compute arcs using d3-shape pie
|
|
94
|
+
const arcs = useMemo(() => {
|
|
95
|
+
const pieGenerator = d3Pie()
|
|
96
|
+
.value((d) => d.value)
|
|
97
|
+
.startAngle(startAngle)
|
|
98
|
+
.endAngle(endAngle)
|
|
99
|
+
.padAngle(padAngle)
|
|
100
|
+
.sort(null); // Maintain data order
|
|
101
|
+
const computed = pieGenerator(data);
|
|
102
|
+
return computed.map((arc, index) => ({
|
|
103
|
+
data: arc.data,
|
|
104
|
+
index,
|
|
105
|
+
startAngle: arc.startAngle,
|
|
106
|
+
endAngle: arc.endAngle,
|
|
107
|
+
padAngle: arc.padAngle,
|
|
108
|
+
value: arc.value,
|
|
109
|
+
}));
|
|
110
|
+
}, [data, startAngle, endAngle, padAngle]);
|
|
111
|
+
const scrubSlicePaths = useMemo(() => {
|
|
112
|
+
if (!geometryScrubbing) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return arcs.map((arc) => generatePieArcPath(innerRadius, outerRadius, arc.startAngle, arc.endAngle, cornerRadius, arc.padAngle));
|
|
116
|
+
}, [geometryScrubbing, arcs, innerRadius, outerRadius, cornerRadius]);
|
|
117
|
+
const effectiveIsLoaded = geometryScrubbing || isLoaded;
|
|
118
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: enterTransition
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (geometryScrubbing) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
setIsLoaded(false);
|
|
124
|
+
const timer = setTimeout(() => {
|
|
125
|
+
setIsLoaded(true);
|
|
126
|
+
}, 100);
|
|
127
|
+
return () => clearTimeout(timer);
|
|
128
|
+
}, [enterTransition, enterStaggerScale, geometryScrubbing]);
|
|
129
|
+
// Separate children into categories
|
|
130
|
+
const { svgChildren, centerChildren, defsChildren } = useMemo(() => {
|
|
131
|
+
const svgNodes = [];
|
|
132
|
+
const centerNodes = [];
|
|
133
|
+
const defsNodes = [];
|
|
134
|
+
Children.forEach(children, (child) => {
|
|
135
|
+
if (!isValidElement(child)) {
|
|
136
|
+
svgNodes.push(child);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (isPieCenter(child)) {
|
|
140
|
+
centerNodes.push(child);
|
|
141
|
+
}
|
|
142
|
+
else if (isDefsComponent(child)) {
|
|
143
|
+
defsNodes.push(child);
|
|
144
|
+
}
|
|
145
|
+
else if (geometryScrubbing && isPieSlice(child)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
svgNodes.push(child);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
svgChildren: svgNodes,
|
|
154
|
+
centerChildren: centerNodes,
|
|
155
|
+
defsChildren: defsNodes,
|
|
156
|
+
};
|
|
157
|
+
}, [children, geometryScrubbing]);
|
|
158
|
+
const scrubSliceFills = useMemo(() => {
|
|
159
|
+
if (!(geometryScrubbing && scrubSlicePaths)) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
return scrubSlicePaths.map((_, index) => getFill(index));
|
|
163
|
+
}, [geometryScrubbing, scrubSlicePaths, getFill]);
|
|
164
|
+
const contextValue = useMemo(() => ({
|
|
165
|
+
data,
|
|
166
|
+
arcs,
|
|
167
|
+
size,
|
|
168
|
+
center,
|
|
169
|
+
outerRadius,
|
|
170
|
+
innerRadius,
|
|
171
|
+
padAngle,
|
|
172
|
+
cornerRadius,
|
|
173
|
+
hoverOffset,
|
|
174
|
+
hoveredIndex,
|
|
175
|
+
setHoveredIndex,
|
|
176
|
+
animationKey,
|
|
177
|
+
isLoaded: effectiveIsLoaded,
|
|
178
|
+
enterTransition,
|
|
179
|
+
enterStaggerScale,
|
|
180
|
+
containerRef,
|
|
181
|
+
totalValue,
|
|
182
|
+
getColor,
|
|
183
|
+
getFill,
|
|
184
|
+
geometryScrubbing,
|
|
185
|
+
scrubSlicePaths,
|
|
186
|
+
}), [
|
|
187
|
+
data,
|
|
188
|
+
arcs,
|
|
189
|
+
size,
|
|
190
|
+
center,
|
|
191
|
+
outerRadius,
|
|
192
|
+
innerRadius,
|
|
193
|
+
padAngle,
|
|
194
|
+
cornerRadius,
|
|
195
|
+
hoverOffset,
|
|
196
|
+
hoveredIndex,
|
|
197
|
+
setHoveredIndex,
|
|
198
|
+
animationKey,
|
|
199
|
+
effectiveIsLoaded,
|
|
200
|
+
enterTransition,
|
|
201
|
+
enterStaggerScale,
|
|
202
|
+
containerRef,
|
|
203
|
+
totalValue,
|
|
204
|
+
getColor,
|
|
205
|
+
getFill,
|
|
206
|
+
geometryScrubbing,
|
|
207
|
+
scrubSlicePaths,
|
|
208
|
+
]);
|
|
209
|
+
// Use CSS Grid stacking to layer SVG and HTML content
|
|
210
|
+
// This avoids Safari's foreignObject rendering bugs
|
|
211
|
+
return (_jsx(PieProvider, { value: contextValue, children: _jsxs("div", { className: "grid", style: {
|
|
212
|
+
gridTemplateColumns: "1fr",
|
|
213
|
+
gridTemplateRows: "1fr",
|
|
214
|
+
width: size,
|
|
215
|
+
height: size,
|
|
216
|
+
}, children: [_jsxs("svg", { "aria-hidden": "true", height: size, style: { gridArea: "1 / 1", contain: "layout style paint" }, width: size, children: [defsChildren.length > 0 && _jsx("defs", { children: defsChildren }), _jsxs(Group, { left: center, top: center, children: [scrubSlicePaths && scrubSliceFills
|
|
217
|
+
? scrubSlicePaths.map((d, index) => d ? (_jsx("path", { d: d, fill: scrubSliceFills[index], pointerEvents: "none" }, data[index]?.label ?? index)) : null)
|
|
218
|
+
: null, svgChildren] })] }), centerChildren.length > 0 && (_jsx("div", { className: "pointer-events-none flex items-center justify-center", style: { gridArea: "1 / 1" }, children: centerChildren }))] }) }));
|
|
219
|
+
}, pieChartCorePropsEqual);
|
|
220
|
+
function pieChartCorePropsEqual(prev, next) {
|
|
221
|
+
return (prev.width === next.width &&
|
|
222
|
+
prev.height === next.height &&
|
|
223
|
+
prev.data === next.data &&
|
|
224
|
+
prev.innerRadius === next.innerRadius &&
|
|
225
|
+
prev.padAngle === next.padAngle &&
|
|
226
|
+
prev.cornerRadius === next.cornerRadius &&
|
|
227
|
+
prev.startAngle === next.startAngle &&
|
|
228
|
+
prev.endAngle === next.endAngle &&
|
|
229
|
+
prev.hoverOffset === next.hoverOffset &&
|
|
230
|
+
prev.hoveredIndexProp === next.hoveredIndexProp &&
|
|
231
|
+
prev.onHoverChange === next.onHoverChange &&
|
|
232
|
+
prev.enterTransition === next.enterTransition &&
|
|
233
|
+
prev.enterStaggerScale === next.enterStaggerScale &&
|
|
234
|
+
prev.geometryScrubbing === next.geometryScrubbing &&
|
|
235
|
+
prev.children === next.children);
|
|
236
|
+
}
|
|
237
|
+
export function PieChart({ data, size: fixedSize, innerRadius = 0, padAngle = 0, cornerRadius = 0, startAngle = -Math.PI / 2, endAngle = (3 * Math.PI) / 2, className = "", hoveredIndex, onHoverChange, hoverOffset = DEFAULT_HOVER_OFFSET, enterTransition, enterStaggerScale = 1, geometryScrubbing = false, children, }) {
|
|
238
|
+
const containerRef = useRef(null);
|
|
239
|
+
// If fixed size is provided, use it directly
|
|
240
|
+
if (fixedSize) {
|
|
241
|
+
return (_jsx("div", { "data-slot": "pie-chart", className: cn("relative flex items-center justify-center", className), ref: containerRef, style: { width: fixedSize, height: fixedSize }, children: _jsx(PieChartInner, { containerRef: containerRef, cornerRadius: cornerRadius, data: data, endAngle: endAngle, enterStaggerScale: enterStaggerScale, enterTransition: enterTransition, geometryScrubbing: geometryScrubbing, height: fixedSize, hoveredIndexProp: hoveredIndex, hoverOffset: hoverOffset, innerRadius: innerRadius, onHoverChange: onHoverChange, padAngle: padAngle, startAngle: startAngle, width: fixedSize, children: children }) }));
|
|
242
|
+
}
|
|
243
|
+
// Otherwise use ParentSize for responsive sizing
|
|
244
|
+
return (_jsx("div", { className: cn("relative aspect-square w-full", className), ref: containerRef, children: _jsx(ParentSize, { debounceTime: 10, children: ({ width, height }) => (_jsx(PieChartInner, { containerRef: containerRef, cornerRadius: cornerRadius, data: data, endAngle: endAngle, enterStaggerScale: enterStaggerScale, enterTransition: enterTransition, geometryScrubbing: geometryScrubbing, height: height, hoveredIndexProp: hoveredIndex, hoverOffset: hoverOffset, innerRadius: innerRadius, onHoverChange: onHoverChange, padAngle: padAngle, startAngle: startAngle, width: width, children: children })) }) }));
|
|
245
|
+
}
|
|
246
|
+
PieChart.displayName = "PieChart";
|
|
247
|
+
export default PieChart;
|
|
248
|
+
//# sourceMappingURL=pie-chart.js.map
|