@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,25 @@
|
|
|
1
|
+
import type { HTMLAttributes, Ref } from "react";
|
|
2
|
+
export interface RippleProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
/**
|
|
5
|
+
* Number of concentric rings. Clamped to `1–16`.
|
|
6
|
+
* @default 8
|
|
7
|
+
*/
|
|
8
|
+
count?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Seconds for one expansion cycle.
|
|
11
|
+
* @default 8
|
|
12
|
+
*/
|
|
13
|
+
duration?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Concentric rings that expand from the centre of a surface and fade out —
|
|
17
|
+
* a living pulse behind a hero, CTA or empty state. The rings are purely
|
|
18
|
+
* decorative (`aria-hidden`) and are suppressed under
|
|
19
|
+
* `prefers-reduced-motion: reduce`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function Ripple({ ref, className, children, count, duration, style, ...props }: RippleProps): import("react").JSX.Element;
|
|
22
|
+
export declare namespace Ripple {
|
|
23
|
+
var displayName: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ripple.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
const RIPPLE_KEYFRAMES = "@keyframes cronus-ripple{from{transform:scale(0);opacity:var(--ripple-opacity,0.35)}to{transform:scale(1);opacity:0}}";
|
|
4
|
+
function finiteOr(value, fallback) {
|
|
5
|
+
return Number.isFinite(value) ? value : fallback;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Concentric rings that expand from the centre of a surface and fade out —
|
|
9
|
+
* a living pulse behind a hero, CTA or empty state. The rings are purely
|
|
10
|
+
* decorative (`aria-hidden`) and are suppressed under
|
|
11
|
+
* `prefers-reduced-motion: reduce`.
|
|
12
|
+
*/
|
|
13
|
+
export function Ripple({ ref, className, children, count = 8, duration = 8, style, ...props }) {
|
|
14
|
+
const ringCount = Math.min(16, Math.max(1, Math.round(finiteOr(count, 8))));
|
|
15
|
+
const cycle = Math.max(0.5, finiteOr(duration, 8));
|
|
16
|
+
return (_jsxs("div", { ref: ref, "data-slot": "ripple", className: cn("relative overflow-hidden", className), style: style, ...props, children: [_jsxs("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 motion-reduce:hidden", children: [_jsx("style", { children: RIPPLE_KEYFRAMES }), Array.from({ length: ringCount }, (_, index) => {
|
|
17
|
+
const ringStyle = {
|
|
18
|
+
"--ripple-duration": `${cycle}s`,
|
|
19
|
+
"--ripple-delay": `${(index * cycle) / ringCount}s`,
|
|
20
|
+
"--ripple-opacity": "0.35",
|
|
21
|
+
};
|
|
22
|
+
return (_jsx("span", { className: "absolute start-1/2 top-1/2 aspect-square w-[220%] -translate-x-1/2 -translate-y-1/2 rounded-full border border-primary/40 [animation-delay:var(--ripple-delay)] [animation-duration:var(--ripple-duration)] [animation-iteration-count:infinite] [animation-name:cronus-ripple] [animation-timing-function:ease-out]", style: ringStyle }, index));
|
|
23
|
+
})] }), _jsx("div", { className: "relative", children: children })] }));
|
|
24
|
+
}
|
|
25
|
+
Ripple.displayName = "Ripple";
|
|
26
|
+
//# sourceMappingURL=ripple.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
export interface SankeyChartData {
|
|
3
|
+
nodes: {
|
|
4
|
+
name: string;
|
|
5
|
+
}[];
|
|
6
|
+
links: {
|
|
7
|
+
source: number;
|
|
8
|
+
target: number;
|
|
9
|
+
value: number;
|
|
10
|
+
}[];
|
|
11
|
+
}
|
|
12
|
+
export interface SankeyChartProps extends HTMLAttributes<HTMLDivElement> {
|
|
13
|
+
data: SankeyChartData;
|
|
14
|
+
}
|
|
15
|
+
export declare function SankeyChart({ data, className, ...props }: SankeyChartProps): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=sankey-chart.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Sankey, Tooltip } from "recharts";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { ChartContainer } from "./chart.js";
|
|
5
|
+
export function SankeyChart({ data, className, ...props }) {
|
|
6
|
+
return (_jsx("div", { "data-slot": "sankey-chart", className: cn("h-64 w-full", className), ...props, children: _jsx(ChartContainer, { config: { flow: { label: "Flow", color: "var(--cronus-chart-1)" } }, className: "h-full w-full", children: _jsx(Sankey, { data: data, nodePadding: 16, nodeWidth: 12, linkCurvature: 0.5, iterations: 32, children: _jsx(Tooltip, {}) }) }) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=sankey-chart.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
import { type ChartSeries } from "./chart.js";
|
|
3
|
+
export interface ScatterChartSeries extends ChartSeries {
|
|
4
|
+
data: Record<string, unknown>[];
|
|
5
|
+
}
|
|
6
|
+
export interface ScatterChartProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
xKey?: string;
|
|
8
|
+
yKey?: string;
|
|
9
|
+
series: ScatterChartSeries[];
|
|
10
|
+
}
|
|
11
|
+
export declare function ScatterChart({ xKey, yKey, series, className, ...props }: ScatterChartProps): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=scatter-chart.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CartesianGrid, ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, ZAxis, } from "recharts";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { ChartContainer, ChartTooltip, ChartTooltipContent, chartSeriesConfig, } from "./chart.js";
|
|
5
|
+
export function ScatterChart({ xKey = "x", yKey = "y", series, className, ...props }) {
|
|
6
|
+
const config = chartSeriesConfig(series);
|
|
7
|
+
return (_jsx("div", { "data-slot": "scatter-chart", className: cn("h-64 w-full", className), ...props, children: _jsx(ChartContainer, { config: config, className: "h-full w-full", children: _jsxs(RechartsScatterChart, { margin: { left: 8, right: 8, top: 8 }, children: [_jsx(CartesianGrid, { strokeDasharray: "4 4" }), _jsx(XAxis, { dataKey: xKey, tickLine: false, axisLine: false, type: "number" }), _jsx(YAxis, { dataKey: yKey, tickLine: false, axisLine: false, type: "number" }), _jsx(ZAxis, { range: [60, 60] }), _jsx(ChartTooltip, { content: _jsx(ChartTooltipContent, {}) }), series.map((item) => (_jsx(Scatter, { name: item.label, data: item.data, fill: `var(--color-${item.key})` }, item.key)))] }) }) }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=scatter-chart.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
/** Token-colour key for an event chip. Maps to surface/foreground utilities. */
|
|
3
|
+
export type SchedulerEventColor = "primary" | "success" | "warning" | "error" | "info";
|
|
4
|
+
export interface SchedulerEvent {
|
|
5
|
+
/** Stable identity used as the React key and passed back to callbacks. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Short label rendered inside the chip (truncated when it overflows). */
|
|
8
|
+
title: string;
|
|
9
|
+
/** Day the event belongs to. Only the calendar date is considered. */
|
|
10
|
+
date: Date;
|
|
11
|
+
/** Token colour for the chip. Defaults to `"primary"`. */
|
|
12
|
+
color?: SchedulerEventColor;
|
|
13
|
+
}
|
|
14
|
+
export interface SchedulerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
15
|
+
/** Controlled visible month. Provide together with `onMonthChange`. */
|
|
16
|
+
month?: Date;
|
|
17
|
+
/** Initial visible month for the uncontrolled case. Defaults to "today". */
|
|
18
|
+
defaultMonth?: Date;
|
|
19
|
+
/** Called with the first day of the next visible month on Prev/Today/Next. */
|
|
20
|
+
onMonthChange?: (month: Date) => void;
|
|
21
|
+
/** Events to lay out across the grid. Bucketed by calendar day. */
|
|
22
|
+
events?: SchedulerEvent[];
|
|
23
|
+
/** Fired when an event chip is activated. */
|
|
24
|
+
onEventClick?: (event: SchedulerEvent) => void;
|
|
25
|
+
/** Fired when a day cell (not a chip) is activated, with that day's date. */
|
|
26
|
+
onDayClick?: (date: Date) => void;
|
|
27
|
+
/**
|
|
28
|
+
* The day to highlight as "today". Optional and defaulting to `undefined` so
|
|
29
|
+
* server render and first client paint are deterministic — pass a stable
|
|
30
|
+
* Date (or compute one in an effect) to light up the current day without a
|
|
31
|
+
* hydration mismatch.
|
|
32
|
+
*/
|
|
33
|
+
today?: Date;
|
|
34
|
+
/**
|
|
35
|
+
* Locale-aware start of the week (0 = Sunday … 6 = Saturday). Defaults to
|
|
36
|
+
* `0`, matching the Sun…Sat header.
|
|
37
|
+
*/
|
|
38
|
+
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
39
|
+
/** Accessible label for the grid. Defaults to "Event calendar". */
|
|
40
|
+
ariaLabel?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Month-view event calendar. Distinct from the date-picker `Calendar`: it lays
|
|
44
|
+
* events onto day cells rather than selecting a date. The visible month is
|
|
45
|
+
* controllable (`month`/`defaultMonth` + `onMonthChange`); everything rendered
|
|
46
|
+
* is derived from props so the component is SSR-safe (the only client-only
|
|
47
|
+
* concern, "today" highlighting, is opt-in via the `today` prop).
|
|
48
|
+
*/
|
|
49
|
+
export declare const Scheduler: import("react").ForwardRefExoticComponent<SchedulerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
50
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { addMonths, eachDayOfInterval, endOfMonth, endOfWeek, format, isSameDay, isSameMonth, startOfMonth, startOfWeek, subMonths, } from "date-fns";
|
|
4
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
5
|
+
import { forwardRef, useCallback, useMemo, useState } from "react";
|
|
6
|
+
import { cn } from "../lib/cn.js";
|
|
7
|
+
import { Button } from "./button.js";
|
|
8
|
+
/**
|
|
9
|
+
* Token classes per event colour. Mirrors the soft `bg-…/15 text-…-strong`
|
|
10
|
+
* treatment used by `Badge` so chips read as quiet, on-brand pills that still
|
|
11
|
+
* clear WCAG AA (the `*-strong` text variant is AA-tuned for the 15% tint).
|
|
12
|
+
*/
|
|
13
|
+
const EVENT_CHIP_CLASSES = {
|
|
14
|
+
primary: "bg-primary/15 text-primary-strong",
|
|
15
|
+
success: "bg-success/15 text-success-strong",
|
|
16
|
+
warning: "bg-warning/15 text-warning-strong",
|
|
17
|
+
error: "bg-error/15 text-error-strong",
|
|
18
|
+
info: "bg-info/15 text-info-strong",
|
|
19
|
+
};
|
|
20
|
+
/** Max chips rendered per day before collapsing the rest into `+N more`. */
|
|
21
|
+
const MAX_VISIBLE_EVENTS = 3;
|
|
22
|
+
/** Key into an events-by-day map. Pure date math — no time zone surprises. */
|
|
23
|
+
function dayKey(date) {
|
|
24
|
+
return format(date, "yyyy-MM-dd");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Month-view event calendar. Distinct from the date-picker `Calendar`: it lays
|
|
28
|
+
* events onto day cells rather than selecting a date. The visible month is
|
|
29
|
+
* controllable (`month`/`defaultMonth` + `onMonthChange`); everything rendered
|
|
30
|
+
* is derived from props so the component is SSR-safe (the only client-only
|
|
31
|
+
* concern, "today" highlighting, is opt-in via the `today` prop).
|
|
32
|
+
*/
|
|
33
|
+
export const Scheduler = forwardRef(({ className, month: monthProp, defaultMonth, onMonthChange, events = [], onEventClick, onDayClick, today, weekStartsOn = 0, ariaLabel = "Event calendar", ...props }, ref) => {
|
|
34
|
+
// Controlled/uncontrolled visible month, mirroring the house idiom.
|
|
35
|
+
const [uncontrolledMonth, setUncontrolledMonth] = useState(() => defaultMonth ?? new Date());
|
|
36
|
+
const isControlled = monthProp !== undefined;
|
|
37
|
+
const month = isControlled ? monthProp : uncontrolledMonth;
|
|
38
|
+
const goToMonth = useCallback((next) => {
|
|
39
|
+
if (!isControlled)
|
|
40
|
+
setUncontrolledMonth(next);
|
|
41
|
+
onMonthChange?.(next);
|
|
42
|
+
}, [isControlled, onMonthChange]);
|
|
43
|
+
const handlePrev = useCallback(() => goToMonth(subMonths(month, 1)), [goToMonth, month]);
|
|
44
|
+
const handleNext = useCallback(() => goToMonth(addMonths(month, 1)), [goToMonth, month]);
|
|
45
|
+
const handleToday = useCallback(() => goToMonth(startOfMonth(today ?? new Date())), [goToMonth, today]);
|
|
46
|
+
// The visible month padded to whole weeks (leading/trailing adjacent days),
|
|
47
|
+
// chunked into rows of seven so the grid can wrap each week in a `row`.
|
|
48
|
+
const weeks = useMemo(() => {
|
|
49
|
+
const gridStart = startOfWeek(startOfMonth(month), { weekStartsOn });
|
|
50
|
+
const gridEnd = endOfWeek(endOfMonth(month), { weekStartsOn });
|
|
51
|
+
const days = eachDayOfInterval({ start: gridStart, end: gridEnd });
|
|
52
|
+
const rows = [];
|
|
53
|
+
for (let i = 0; i < days.length; i += 7)
|
|
54
|
+
rows.push(days.slice(i, i + 7));
|
|
55
|
+
return rows;
|
|
56
|
+
}, [month, weekStartsOn]);
|
|
57
|
+
// Weekday header labels, rotated to honour `weekStartsOn`. Derived from the
|
|
58
|
+
// first rendered row so labels always line up with their columns.
|
|
59
|
+
const weekdayLabels = useMemo(() => (weeks[0] ?? []).map((day) => format(day, "EEE")), [weeks]);
|
|
60
|
+
// Bucket events by calendar day for O(1) lookup while rendering cells.
|
|
61
|
+
const eventsByDay = useMemo(() => {
|
|
62
|
+
const map = new Map();
|
|
63
|
+
for (const event of events) {
|
|
64
|
+
const key = dayKey(event.date);
|
|
65
|
+
const bucket = map.get(key);
|
|
66
|
+
if (bucket)
|
|
67
|
+
bucket.push(event);
|
|
68
|
+
else
|
|
69
|
+
map.set(key, [event]);
|
|
70
|
+
}
|
|
71
|
+
return map;
|
|
72
|
+
}, [events]);
|
|
73
|
+
return (_jsxs("div", { ref: ref, "data-slot": "scheduler", className: cn("w-full rounded-xl border border-border bg-surface-base text-fg", className), ...props, children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-border p-3", children: [_jsx("h2", { "data-slot": "scheduler-title", className: "text-sm font-semibold text-fg", children: format(month, "MMMM yyyy") }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Button, { type: "button", variant: "outline", size: "icon-sm", "aria-label": "Previous month", onClick: handlePrev, children: _jsx(ChevronLeft, {}) }), _jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: handleToday, children: "Today" }), _jsx(Button, { type: "button", variant: "outline", size: "icon-sm", "aria-label": "Next month", onClick: handleNext, children: _jsx(ChevronRight, {}) })] })] }), _jsxs("table", { "data-slot": "scheduler-grid", "aria-label": ariaLabel, className: "w-full table-fixed", children: [_jsx("thead", { "data-slot": "scheduler-weekdays", children: _jsx("tr", { children: weekdayLabels.map((label) => (_jsx("th", { scope: "col", className: "border-b border-border px-2 py-1.5 text-center text-xs font-normal text-fg-tertiary", children: label }, label))) }) }), _jsx("tbody", { children: weeks.map((week) => (_jsx("tr", { children: week.map((day) => {
|
|
74
|
+
const inMonth = isSameMonth(day, month);
|
|
75
|
+
const isToday = today != null && isSameDay(day, today);
|
|
76
|
+
const dayEvents = eventsByDay.get(dayKey(day)) ?? [];
|
|
77
|
+
const visibleEvents = dayEvents.slice(0, MAX_VISIBLE_EVENTS);
|
|
78
|
+
const overflowCount = dayEvents.length - visibleEvents.length;
|
|
79
|
+
return (_jsxs("td", { "aria-label": format(day, "EEEE, MMMM d, yyyy"), "aria-current": isToday ? "date" : undefined, onClick: () => onDayClick?.(day), onKeyDown: (e) => {
|
|
80
|
+
// Only the cell itself (not a focused chip) toggles the day.
|
|
81
|
+
if (e.target === e.currentTarget && (e.key === "Enter" || e.key === " ")) {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
onDayClick?.(day);
|
|
84
|
+
}
|
|
85
|
+
}, className: cn("h-24 min-w-0 cursor-pointer border-r border-b border-border p-1.5 align-top outline-none transition-colors last:border-r-0", "hover:bg-surface-overlay focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", inMonth ? "text-fg" : "text-fg-tertiary"), children: [_jsx("span", { className: cn("inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs font-medium", isToday && "bg-primary text-white", !inMonth && "text-fg-tertiary"), children: format(day, "d") }), _jsxs("span", { className: "mt-1 flex flex-col gap-0.5", children: [visibleEvents.map((event) => (_jsx("button", { type: "button", "data-slot": "scheduler-event", title: event.title, onClick: (e) => {
|
|
86
|
+
// Don't also trigger the day cell behind the chip.
|
|
87
|
+
e.stopPropagation();
|
|
88
|
+
onEventClick?.(event);
|
|
89
|
+
}, className: cn("truncate rounded px-1.5 py-0.5 text-left text-xs font-medium outline-none transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", EVENT_CHIP_CLASSES[event.color ?? "primary"]), children: event.title }, event.id))), overflowCount > 0 && (_jsxs("span", { "data-slot": "scheduler-event-overflow", className: "px-1.5 text-xs font-medium text-fg-tertiary", children: ["+", overflowCount, " more"] }))] })] }, day.toISOString()));
|
|
90
|
+
}) }, week[0]?.toISOString()))) })] })] }));
|
|
91
|
+
});
|
|
92
|
+
Scheduler.displayName = "Scheduler";
|
|
93
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type HTMLAttributes, type Ref } from "react";
|
|
2
|
+
export type ScrambleTextMotionPreference = "respect" | "always" | "never";
|
|
3
|
+
export interface ScrambleTextProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children"> {
|
|
4
|
+
ref?: Ref<HTMLSpanElement>;
|
|
5
|
+
/** The phrase to resolve to. */
|
|
6
|
+
children: string;
|
|
7
|
+
/**
|
|
8
|
+
* Milliseconds between scramble ticks.
|
|
9
|
+
* @default 40
|
|
10
|
+
*/
|
|
11
|
+
speed?: number;
|
|
12
|
+
/**
|
|
13
|
+
* How many ticks each glyph stays scrambled before locking.
|
|
14
|
+
* @default 4
|
|
15
|
+
*/
|
|
16
|
+
ticksPerGlyph?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Glyphs used while scrambling. Defaults to a Latin + digit set.
|
|
19
|
+
*/
|
|
20
|
+
charset?: string;
|
|
21
|
+
/**
|
|
22
|
+
* How `prefers-reduced-motion` is honoured. Defaults to `"respect"` (show
|
|
23
|
+
* the resolved phrase immediately).
|
|
24
|
+
* @default "respect"
|
|
25
|
+
*/
|
|
26
|
+
reducedMotion?: ScrambleTextMotionPreference;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolves a phrase by cycling random glyphs from the start of the string, until the real
|
|
30
|
+
* string locks in — the "decryption" beat on a hero or terminal. Assistive
|
|
31
|
+
* tech is given the resolved string immediately via an `sr-only` copy; the
|
|
32
|
+
* scrambling glyphs are `aria-hidden`. Reduced-motion visitors skip the
|
|
33
|
+
* scramble entirely.
|
|
34
|
+
*/
|
|
35
|
+
export declare function ScrambleText({ ref, className, children, speed, ticksPerGlyph, charset, reducedMotion, ...props }: ScrambleTextProps): import("react").JSX.Element;
|
|
36
|
+
export declare namespace ScrambleText {
|
|
37
|
+
var displayName: string;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=scramble-text.d.ts.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useMemo, useState } from "react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
const DEFAULT_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
6
|
+
const graphemeSegmenter = typeof Intl !== "undefined" && "Segmenter" in Intl
|
|
7
|
+
? new Intl.Segmenter(undefined, { granularity: "grapheme" })
|
|
8
|
+
: null;
|
|
9
|
+
function segmentGraphemes(value) {
|
|
10
|
+
if (graphemeSegmenter) {
|
|
11
|
+
return Array.from(graphemeSegmenter.segment(value), (segment) => segment.segment);
|
|
12
|
+
}
|
|
13
|
+
return Array.from(value);
|
|
14
|
+
}
|
|
15
|
+
function finiteOr(value, fallback) {
|
|
16
|
+
return Number.isFinite(value) ? value : fallback;
|
|
17
|
+
}
|
|
18
|
+
function prefersReducedMotion() {
|
|
19
|
+
return (typeof window !== "undefined" &&
|
|
20
|
+
typeof window.matchMedia === "function" &&
|
|
21
|
+
window.matchMedia("(prefers-reduced-motion: reduce)").matches);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolves a phrase by cycling random glyphs from the start of the string, until the real
|
|
25
|
+
* string locks in — the "decryption" beat on a hero or terminal. Assistive
|
|
26
|
+
* tech is given the resolved string immediately via an `sr-only` copy; the
|
|
27
|
+
* scrambling glyphs are `aria-hidden`. Reduced-motion visitors skip the
|
|
28
|
+
* scramble entirely.
|
|
29
|
+
*/
|
|
30
|
+
export function ScrambleText({ ref, className, children, speed = 40, ticksPerGlyph = 4, charset = DEFAULT_CHARSET, reducedMotion = "respect", ...props }) {
|
|
31
|
+
const glyphs = useMemo(() => segmentGraphemes(children), [children]);
|
|
32
|
+
const pool = charset.length > 0 ? charset : DEFAULT_CHARSET;
|
|
33
|
+
const [locked, setLocked] = useState(() => (reducedMotion === "never" ? glyphs.length : 0));
|
|
34
|
+
const [tick, setTick] = useState(0);
|
|
35
|
+
const [staticMode, setStaticMode] = useState(reducedMotion === "never");
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const reduce = reducedMotion === "never"
|
|
38
|
+
? true
|
|
39
|
+
: reducedMotion === "always"
|
|
40
|
+
? false
|
|
41
|
+
: prefersReducedMotion();
|
|
42
|
+
setStaticMode(reduce);
|
|
43
|
+
setLocked(reduce ? glyphs.length : 0);
|
|
44
|
+
setTick(0);
|
|
45
|
+
}, [glyphs.length, reducedMotion]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (staticMode || glyphs.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
const ms = Math.max(12, finiteOr(speed, 40));
|
|
50
|
+
const per = Math.max(1, Math.round(finiteOr(ticksPerGlyph, 4)));
|
|
51
|
+
let lockedCount = 0;
|
|
52
|
+
let tickCount = 0;
|
|
53
|
+
let timeout = 0;
|
|
54
|
+
const step = () => {
|
|
55
|
+
if (lockedCount >= glyphs.length)
|
|
56
|
+
return;
|
|
57
|
+
tickCount += 1;
|
|
58
|
+
if (tickCount % per === 0) {
|
|
59
|
+
lockedCount = Math.min(glyphs.length, lockedCount + 1);
|
|
60
|
+
setLocked(lockedCount);
|
|
61
|
+
}
|
|
62
|
+
setTick(tickCount);
|
|
63
|
+
timeout = window.setTimeout(step, ms);
|
|
64
|
+
};
|
|
65
|
+
timeout = window.setTimeout(step, ms);
|
|
66
|
+
return () => window.clearTimeout(timeout);
|
|
67
|
+
}, [glyphs.length, speed, staticMode, ticksPerGlyph]);
|
|
68
|
+
const display = glyphs
|
|
69
|
+
.map((glyph, index) => {
|
|
70
|
+
if (index < locked || /^\s+$/.test(glyph))
|
|
71
|
+
return glyph;
|
|
72
|
+
return pool[(index * 17 + tick * 31) % pool.length] ?? glyph;
|
|
73
|
+
})
|
|
74
|
+
.join("");
|
|
75
|
+
return (_jsxs("span", { ref: ref, "data-slot": "scramble-text", className: cn("inline font-mono", className), ...props, children: [_jsx("span", { className: "sr-only", children: children }), _jsx("span", { "aria-hidden": "true", children: staticMode ? children : display })] }));
|
|
76
|
+
}
|
|
77
|
+
ScrambleText.displayName = "ScrambleText";
|
|
78
|
+
//# sourceMappingURL=scramble-text.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
2
|
+
import { type ComponentPropsWithoutRef } from "react";
|
|
3
|
+
export interface ScrollAreaProps extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {
|
|
4
|
+
/**
|
|
5
|
+
* Accessible name for the scrollable viewport. Supply this when the content
|
|
6
|
+
* warrants a distinct name (e.g. "Release notes"); the viewport is always
|
|
7
|
+
* keyboard-focusable so it can be scrolled with the arrow keys regardless.
|
|
8
|
+
*/
|
|
9
|
+
"aria-label"?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ScrollArea: import("react").ForwardRefExoticComponent<ScrollAreaProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
12
|
+
export declare const ScrollBar: import("react").ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
13
|
+
//# sourceMappingURL=scroll-area.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { cn } from "../lib/cn.js";
|
|
6
|
+
export const ScrollArea = forwardRef(({ className, children, "aria-label": ariaLabel, ...props }, ref) => {
|
|
7
|
+
return (_jsxs(ScrollAreaPrimitive.Root, { ref: ref, "data-slot": "scroll-area", className: cn("relative overflow-hidden", className), ...props, children: [_jsx(ScrollAreaPrimitive.Viewport, { role: ariaLabel ? "region" : undefined, "aria-label": ariaLabel, tabIndex: 0, className: "size-full rounded-[inherit] outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base", children: children }), _jsx(ScrollBar, {}), _jsx(ScrollAreaPrimitive.Corner, {})] }));
|
|
8
|
+
});
|
|
9
|
+
ScrollArea.displayName = "ScrollArea";
|
|
10
|
+
export const ScrollBar = forwardRef(({ className, orientation = "vertical", ...props }, ref) => {
|
|
11
|
+
return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { ref: ref, "data-slot": "scroll-bar", orientation: orientation, className: cn("flex touch-none select-none transition-colors", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px", className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" }) }));
|
|
12
|
+
});
|
|
13
|
+
ScrollBar.displayName = "ScrollBar";
|
|
14
|
+
//# sourceMappingURL=scroll-area.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type HTMLAttributes, type RefObject } from "react";
|
|
2
|
+
type ScrollProgressVariant = "bar" | "circle";
|
|
3
|
+
type ScrollProgressPosition = "top" | "bottom";
|
|
4
|
+
export interface ScrollProgressProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/** Render a thin horizontal bar or a circular ring. */
|
|
6
|
+
variant?: ScrollProgressVariant;
|
|
7
|
+
/**
|
|
8
|
+
* The scroll container to track. When omitted, the window / document scrolling
|
|
9
|
+
* element is tracked instead.
|
|
10
|
+
*/
|
|
11
|
+
target?: RefObject<HTMLElement | null>;
|
|
12
|
+
/** Where to pin the bar variant (ignored for the circle). */
|
|
13
|
+
position?: ScrollProgressPosition;
|
|
14
|
+
/** Diameter of the ring in px (circle variant only). */
|
|
15
|
+
size?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const ScrollProgress: import("react").ForwardRefExoticComponent<ScrollProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=scroll-progress.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useEffect, useState } from "react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
/**
|
|
6
|
+
* Clamp a raw scroll ratio to 0–1. A scroll container with no overflow
|
|
7
|
+
* (`scrollHeight === clientHeight`) has nothing to scroll, so it reports 0.
|
|
8
|
+
*/
|
|
9
|
+
function ratioFor(scrollTop, scrollHeight, clientHeight) {
|
|
10
|
+
const scrollable = scrollHeight - clientHeight;
|
|
11
|
+
if (scrollable <= 0) {
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
|
14
|
+
return Math.min(1, Math.max(0, scrollTop / scrollable));
|
|
15
|
+
}
|
|
16
|
+
export const ScrollProgress = forwardRef(({ className, variant = "bar", target, position = "top", size = 40, "aria-label": ariaLabel = "Scroll progress", ...props }, ref) => {
|
|
17
|
+
const [progress, setProgress] = useState(0);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const element = target?.current ?? null;
|
|
20
|
+
// Track the supplied element, or the document scrolling element for the
|
|
21
|
+
// window-level case (scroll events still come from `window`).
|
|
22
|
+
const scrollSource = element ?? window;
|
|
23
|
+
const measure = () => {
|
|
24
|
+
if (element) {
|
|
25
|
+
setProgress(ratioFor(element.scrollTop, element.scrollHeight, element.clientHeight));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const doc = document.documentElement;
|
|
29
|
+
setProgress(ratioFor(doc.scrollTop, doc.scrollHeight, doc.clientHeight));
|
|
30
|
+
};
|
|
31
|
+
// Measure on every scroll/resize. `setProgress` already bails out when the
|
|
32
|
+
// ratio is unchanged, so bursty events stay cheap without deferring the
|
|
33
|
+
// update off the event (which would race a synchronous read of the value).
|
|
34
|
+
const onScroll = () => measure();
|
|
35
|
+
measure();
|
|
36
|
+
scrollSource.addEventListener("scroll", onScroll, { passive: true });
|
|
37
|
+
window.addEventListener("resize", onScroll, { passive: true });
|
|
38
|
+
return () => {
|
|
39
|
+
scrollSource.removeEventListener("scroll", onScroll);
|
|
40
|
+
window.removeEventListener("resize", onScroll);
|
|
41
|
+
};
|
|
42
|
+
}, [target]);
|
|
43
|
+
const percent = Math.round(progress * 100);
|
|
44
|
+
const ariaProps = {
|
|
45
|
+
role: "progressbar",
|
|
46
|
+
"aria-valuemin": 0,
|
|
47
|
+
"aria-valuemax": 100,
|
|
48
|
+
"aria-valuenow": percent,
|
|
49
|
+
"aria-label": ariaLabel,
|
|
50
|
+
};
|
|
51
|
+
if (variant === "circle") {
|
|
52
|
+
// Inset the ring by half the stroke so it isn't clipped by the viewBox.
|
|
53
|
+
const strokeWidth = Math.max(2, Math.round(size * 0.1));
|
|
54
|
+
const radius = size / 2 - strokeWidth / 2;
|
|
55
|
+
const circumference = 2 * Math.PI * radius;
|
|
56
|
+
const dashOffset = circumference * (1 - progress);
|
|
57
|
+
return (_jsxs("div", { ref: ref, "data-slot": "scroll-progress", "data-variant": "circle", ...ariaProps, className: cn("relative inline-flex items-center justify-center", className), style: { width: size, height: size }, ...props, children: [_jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, fill: "none",
|
|
58
|
+
// Rotate so the ring fills clockwise from 12 o'clock.
|
|
59
|
+
className: "-rotate-90", "aria-hidden": "true", children: [_jsx("circle", { cx: size / 2, cy: size / 2, r: radius, strokeWidth: strokeWidth, className: "stroke-border" }), _jsx("circle", { "data-slot": "scroll-progress-ring", cx: size / 2, cy: size / 2, r: radius, strokeWidth: strokeWidth, strokeLinecap: "round", strokeDasharray: circumference, strokeDashoffset: dashOffset, className: "stroke-primary" })] }), _jsxs("span", { "data-slot": "scroll-progress-value", className: "absolute inset-0 flex items-center justify-center text-xs font-medium tabular-nums text-fg", children: [percent, "%"] })] }));
|
|
60
|
+
}
|
|
61
|
+
return (_jsx("div", { ref: ref, "data-slot": "scroll-progress", "data-variant": "bar", ...ariaProps, className: cn("h-1 w-full overflow-hidden bg-surface-inset",
|
|
62
|
+
// Pin to the viewport edge for the window-level case; consumers can
|
|
63
|
+
// override via className.
|
|
64
|
+
!target && "sticky inset-x-0 z-50", !target && (position === "bottom" ? "bottom-0" : "top-0"), className), ...props, children: _jsx("div", { "data-slot": "scroll-progress-fill", className: "h-full bg-primary", style: { width: `${progress * 100}%` } }) }));
|
|
65
|
+
});
|
|
66
|
+
ScrollProgress.displayName = "ScrollProgress";
|
|
67
|
+
//# sourceMappingURL=scroll-progress.js.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type Transition } from "motion/react";
|
|
2
|
+
import { type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from "react";
|
|
3
|
+
type SegmentedControlSize = "sm" | "md";
|
|
4
|
+
export interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
5
|
+
/** Controlled selected value. When provided the component is fully controlled. */
|
|
6
|
+
value?: string;
|
|
7
|
+
/** Initial selected value for the uncontrolled case. */
|
|
8
|
+
defaultValue?: string;
|
|
9
|
+
/** Called whenever the selection should change (controlled or not). */
|
|
10
|
+
onValueChange?: (value: string) => void;
|
|
11
|
+
/** Density of the items. Defaults to `"md"`. */
|
|
12
|
+
size?: SegmentedControlSize;
|
|
13
|
+
/** Override the thumb spring (advanced — defaults to the Cronus thumb spring). */
|
|
14
|
+
transition?: Transition;
|
|
15
|
+
/**
|
|
16
|
+
* How `prefers-reduced-motion` is honoured. Defaults to `"user"` (snap the
|
|
17
|
+
* thumb for users who opt out). Pass `"never"` to always slide it — e.g. a
|
|
18
|
+
* showcase that must demonstrate it — or `"always"` to force the snap.
|
|
19
|
+
*/
|
|
20
|
+
reducedMotion?: "user" | "always" | "never";
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Root of the segmented control — a horizontal, single-select toggle with a
|
|
25
|
+
* sliding "thumb" behind the active option. Owns the selection (controlled or
|
|
26
|
+
* uncontrolled), provides the shared `layoutId` group id + roving-focus
|
|
27
|
+
* machinery through context, and renders the track container as a
|
|
28
|
+
* `role="radiogroup"`. Compose with {@link SegmentedControlItem}.
|
|
29
|
+
*/
|
|
30
|
+
export declare const SegmentedControl: import("react").ForwardRefExoticComponent<SegmentedControlProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
export interface SegmentedControlItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" | "onChange"> {
|
|
32
|
+
/** The value this option selects. Required and unique within a group. */
|
|
33
|
+
value: string;
|
|
34
|
+
/** Visible label (text and/or icon). */
|
|
35
|
+
children?: ReactNode;
|
|
36
|
+
/** Disable selection + skip in keyboard navigation. */
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A single option in a {@link SegmentedControl}. Renders a `role="radio"`
|
|
41
|
+
* button; when active it hosts the shared `motion.div` thumb (an `absolute
|
|
42
|
+
* inset-0` raised pill) that slides between options via `layoutId`. The label
|
|
43
|
+
* is layered above the thumb with `relative z-10`. Roving focus + radiogroup
|
|
44
|
+
* keyboard semantics are handled by the root.
|
|
45
|
+
*/
|
|
46
|
+
export declare const SegmentedControlItem: import("react").ForwardRefExoticComponent<SegmentedControlItemProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=segmented-control.d.ts.map
|