@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,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
export const Skeleton = forwardRef(({ className, ...props }, ref) => {
|
|
5
|
+
return (_jsx("div", { ref: ref, "data-slot": "skeleton", "aria-hidden": true, className: cn("animate-pulse rounded-md bg-surface-overlay", className), ...props }));
|
|
6
|
+
});
|
|
7
|
+
Skeleton.displayName = "Skeleton";
|
|
8
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
2
|
+
/**
|
|
3
|
+
* A single- or multi-thumb range slider. Each focusable thumb is the actual
|
|
4
|
+
* `role="slider"` input, so pass `aria-label`/`aria-labelledby` describing what
|
|
5
|
+
* the slider controls (e.g. "Volume") to give every thumb an accessible name
|
|
6
|
+
* and satisfy `aria-input-field-name` (WCAG 4.1.2). Multi-thumb (range) sliders
|
|
7
|
+
* derive a unique per-thumb name by suffixing the label with its 1-based index.
|
|
8
|
+
*/
|
|
9
|
+
export declare const Slider: import("react").ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & import("react").RefAttributes<HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { cn } from "../lib/cn.js";
|
|
6
|
+
/**
|
|
7
|
+
* A single- or multi-thumb range slider. Each focusable thumb is the actual
|
|
8
|
+
* `role="slider"` input, so pass `aria-label`/`aria-labelledby` describing what
|
|
9
|
+
* the slider controls (e.g. "Volume") to give every thumb an accessible name
|
|
10
|
+
* and satisfy `aria-input-field-name` (WCAG 4.1.2). Multi-thumb (range) sliders
|
|
11
|
+
* derive a unique per-thumb name by suffixing the label with its 1-based index.
|
|
12
|
+
*/
|
|
13
|
+
export const Slider = forwardRef(({ className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, ...props }, ref) => {
|
|
14
|
+
const provided = props.value ?? props.defaultValue;
|
|
15
|
+
const values = provided?.length ? provided : [props.min ?? 0];
|
|
16
|
+
// The thumb is the actual `role="slider"` input, so we name it explicitly to
|
|
17
|
+
// satisfy `aria-input-field-name` (WCAG 4.1.2). The label props are pulled OUT
|
|
18
|
+
// of the spread: Radix's Root renders a role-less <span>, where `aria-label`
|
|
19
|
+
// would trip axe `aria-prohibited-attr` (serious, WCAG 4.1.2). For multi-thumb
|
|
20
|
+
// sliders each thumb gets an index suffix so the names stay unique.
|
|
21
|
+
const multipleThumbs = values.length > 1;
|
|
22
|
+
return (_jsxs(SliderPrimitive.Root, { ref: ref, "data-slot": "slider", className: cn("relative flex w-full touch-none select-none items-center data-[disabled]:opacity-50", className), ...props, children: [_jsx(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-surface-overlay", children: _jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }), values.map((_, index) => (_jsx(SliderPrimitive.Thumb
|
|
23
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: thumb count is positional and stable
|
|
24
|
+
, { "aria-label": ariaLabel ? (multipleThumbs ? `${ariaLabel} (${index + 1})` : ariaLabel) : undefined, "aria-labelledby": ariaLabel ? undefined : ariaLabelledby, className: "block size-4 rounded-full border border-primary bg-surface-base shadow-sm transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base disabled:pointer-events-none" }, index)))] }));
|
|
25
|
+
});
|
|
26
|
+
Slider.displayName = "Slider";
|
|
27
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Toaster as Sonner, toast } from "sonner";
|
|
2
|
+
export interface ToasterProps extends React.ComponentProps<typeof Sonner> {
|
|
3
|
+
}
|
|
4
|
+
export declare const Toaster: {
|
|
5
|
+
({ theme, ...props }: ToasterProps): import("react").JSX.Element;
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|
|
8
|
+
export { toast };
|
|
9
|
+
//# sourceMappingURL=sonner.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useOptionalThemeMode } from "@cronus-ui/theme";
|
|
4
|
+
import { Toaster as Sonner, toast } from "sonner";
|
|
5
|
+
export const Toaster = ({ theme, ...props }) => {
|
|
6
|
+
const mode = useOptionalThemeMode();
|
|
7
|
+
const resolved = theme ?? (mode === "light" ? "light" : "dark");
|
|
8
|
+
return (_jsx("div", { "data-slot": "toaster", children: _jsx(Sonner, { theme: resolved, className: "toaster group", style: {
|
|
9
|
+
"--normal-bg": "var(--cronus-surface-floating)",
|
|
10
|
+
"--normal-text": "var(--cronus-fg)",
|
|
11
|
+
"--normal-border": "var(--cronus-border)",
|
|
12
|
+
"--border-radius": "var(--cronus-radius)",
|
|
13
|
+
}, ...props }) }));
|
|
14
|
+
};
|
|
15
|
+
Toaster.displayName = "Toaster";
|
|
16
|
+
export { toast };
|
|
17
|
+
//# sourceMappingURL=sonner.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes, Ref } from "react";
|
|
2
|
+
export interface SparklesTextProps extends HTMLAttributes<HTMLSpanElement> {
|
|
3
|
+
ref?: Ref<HTMLSpanElement>;
|
|
4
|
+
/**
|
|
5
|
+
* Number of sparkles around the text. Clamped to `2–12`.
|
|
6
|
+
* @default 4
|
|
7
|
+
*/
|
|
8
|
+
count?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Twinkling sparkles around a phrase. The text itself is unchanged and
|
|
12
|
+
* selectable; sparkles are decorative (`aria-hidden`) and suppressed under
|
|
13
|
+
* reduced motion.
|
|
14
|
+
*/
|
|
15
|
+
export declare function SparklesText({ ref, className, children, count, ...props }: SparklesTextProps): import("react").JSX.Element;
|
|
16
|
+
export declare namespace SparklesText {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sparkles-text.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
const SPARKLE_KEYFRAMES = "@keyframes cronus-sparkle{0%,100%{transform:scale(0);opacity:0}40%{transform:scale(1);opacity:1}70%{transform:scale(0.6);opacity:0.6}}";
|
|
4
|
+
function finiteOr(value, fallback) {
|
|
5
|
+
return Number.isFinite(value) ? value : fallback;
|
|
6
|
+
}
|
|
7
|
+
const SLOTS = [
|
|
8
|
+
{ top: "0%", start: "8%" },
|
|
9
|
+
{ top: "10%", start: "88%" },
|
|
10
|
+
{ top: "85%", start: "18%" },
|
|
11
|
+
{ top: "78%", start: "78%" },
|
|
12
|
+
{ top: "-8%", start: "48%" },
|
|
13
|
+
{ top: "50%", start: "-6%" },
|
|
14
|
+
{ top: "52%", start: "96%" },
|
|
15
|
+
{ top: "100%", start: "52%" },
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Twinkling sparkles around a phrase. The text itself is unchanged and
|
|
19
|
+
* selectable; sparkles are decorative (`aria-hidden`) and suppressed under
|
|
20
|
+
* reduced motion.
|
|
21
|
+
*/
|
|
22
|
+
export function SparklesText({ ref, className, children, count = 4, ...props }) {
|
|
23
|
+
const sparkleCount = Math.min(8, Math.max(2, Math.round(finiteOr(count, 4))));
|
|
24
|
+
return (_jsxs("span", { ref: ref, "data-slot": "sparkles-text", className: cn("relative inline-block", className), ...props, children: [_jsx("style", { children: SPARKLE_KEYFRAMES }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 overflow-visible motion-reduce:hidden", children: Array.from({ length: sparkleCount }, (_, index) => {
|
|
25
|
+
const slot = SLOTS[index % SLOTS.length] ?? SLOTS[0];
|
|
26
|
+
const sparkleStyle = {
|
|
27
|
+
top: slot?.top,
|
|
28
|
+
insetInlineStart: slot?.start,
|
|
29
|
+
"--sparkle-delay": `${(index * 0.35) % 1.6}s`,
|
|
30
|
+
"--sparkle-duration": `${1.4 + (index % 3) * 0.25}s`,
|
|
31
|
+
};
|
|
32
|
+
return (_jsx("span", { className: "absolute size-2 text-primary [animation-delay:var(--sparkle-delay)] [animation-duration:var(--sparkle-duration)] [animation-iteration-count:infinite] [animation-name:cronus-sparkle]", style: sparkleStyle, children: _jsx("svg", { viewBox: "0 0 16 16", className: "size-full fill-current", "aria-hidden": "true", children: _jsx("path", { d: "M8 0 L9.2 6.8 L16 8 L9.2 9.2 L8 16 L6.8 9.2 L0 8 L6.8 6.8 Z" }) }) }, index));
|
|
33
|
+
}) }), _jsx("span", { className: "relative", children: children })] }));
|
|
34
|
+
}
|
|
35
|
+
SparklesText.displayName = "SparklesText";
|
|
36
|
+
//# sourceMappingURL=sparkles-text.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SVGAttributes } from "react";
|
|
2
|
+
type SparklineTone = "primary" | "success" | "warning" | "error" | "info" | "fg";
|
|
3
|
+
type SparklineType = "line" | "bar";
|
|
4
|
+
export interface SparklineProps extends Omit<SVGAttributes<SVGSVGElement>, "type"> {
|
|
5
|
+
/** The series to plot. Order is preserved; values map left→right. */
|
|
6
|
+
data: number[];
|
|
7
|
+
/** Intrinsic width of the SVG in px. */
|
|
8
|
+
width?: number;
|
|
9
|
+
/** Intrinsic height of the SVG in px. */
|
|
10
|
+
height?: number;
|
|
11
|
+
/** Render a connected line or evenly spaced bars. */
|
|
12
|
+
type?: SparklineType;
|
|
13
|
+
/** Color, mapped to a token via `currentColor`. */
|
|
14
|
+
tone?: SparklineTone;
|
|
15
|
+
/** For `type="line"`, fill a soft token-tinted gradient under the line. */
|
|
16
|
+
area?: boolean;
|
|
17
|
+
/** Stroke width of the line (line type only). */
|
|
18
|
+
strokeWidth?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare const Sparkline: import("react").ForwardRefExoticComponent<SparklineProps & import("react").RefAttributes<SVGSVGElement>>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=sparkline.d.ts.map
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useId } from "react";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
// Token-driven tone classes. Each sets `currentColor` via a Tailwind `text-*`
|
|
5
|
+
// utility (mapped to a `--cronus-*` var), so the SVG strokes/fills inherit the
|
|
6
|
+
// themed color through `stroke="currentColor"` / `fill="currentColor"`.
|
|
7
|
+
const toneStyles = {
|
|
8
|
+
primary: "text-primary",
|
|
9
|
+
success: "text-success",
|
|
10
|
+
warning: "text-warning",
|
|
11
|
+
error: "text-error",
|
|
12
|
+
info: "text-info",
|
|
13
|
+
fg: "text-fg",
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Keep only finite numbers so a `NaN`/`Infinity` in the series cannot produce
|
|
17
|
+
* `NaN` SVG coordinates (which silently break the whole path).
|
|
18
|
+
*/
|
|
19
|
+
function sanitize(data) {
|
|
20
|
+
return data.filter((value) => Number.isFinite(value));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Scale a value to a Y coordinate inside the box. SVG Y grows downward, so the
|
|
24
|
+
* max sits at `pad` (top) and the min at `height - pad` (bottom). When every
|
|
25
|
+
* value is equal (`min === max`) the line collapses to a flat midline instead
|
|
26
|
+
* of dividing by zero.
|
|
27
|
+
*/
|
|
28
|
+
function scaleY(value, min, max, height, pad) {
|
|
29
|
+
const span = max - min;
|
|
30
|
+
const usable = height - pad * 2;
|
|
31
|
+
if (span === 0) {
|
|
32
|
+
return height / 2;
|
|
33
|
+
}
|
|
34
|
+
return pad + (1 - (value - min) / span) * usable;
|
|
35
|
+
}
|
|
36
|
+
export const Sparkline = forwardRef(({ className, data, width = 96, height = 28, type = "line", tone = "primary", area = false, strokeWidth = 1.5, "aria-label": ariaLabel, ...props }, ref) => {
|
|
37
|
+
const points = sanitize(data);
|
|
38
|
+
const count = points.length;
|
|
39
|
+
const gradientId = useId();
|
|
40
|
+
// Default summary keeps assistive tech informed without exposing the raw
|
|
41
|
+
// series; callers can override with a richer `aria-label`.
|
|
42
|
+
const label = ariaLabel ?? `Trend, ${count} ${count === 1 ? "point" : "points"}`;
|
|
43
|
+
// Inset the geometry so a thick stroke / rounded bar cap is not clipped at
|
|
44
|
+
// the box edge.
|
|
45
|
+
const pad = Math.max(strokeWidth, 1);
|
|
46
|
+
const min = count > 0 ? Math.min(...points) : 0;
|
|
47
|
+
const max = count > 0 ? Math.max(...points) : 0;
|
|
48
|
+
const rootProps = {
|
|
49
|
+
ref,
|
|
50
|
+
"data-slot": "sparkline",
|
|
51
|
+
"data-tone": tone,
|
|
52
|
+
role: "img",
|
|
53
|
+
"aria-label": label,
|
|
54
|
+
width,
|
|
55
|
+
height,
|
|
56
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
57
|
+
preserveAspectRatio: "none",
|
|
58
|
+
fill: "none",
|
|
59
|
+
className: cn("inline-block overflow-visible align-middle", toneStyles[tone], className),
|
|
60
|
+
...props,
|
|
61
|
+
};
|
|
62
|
+
if (type === "bar") {
|
|
63
|
+
// Evenly spaced bars with a small gap; each bar height is scaled to the
|
|
64
|
+
// box. A flat series renders thin baseline ticks so the slot stays legible.
|
|
65
|
+
const span = max - min;
|
|
66
|
+
const slot = count > 0 ? width / count : width;
|
|
67
|
+
const gap = Math.min(slot * 0.3, 4);
|
|
68
|
+
const barWidth = Math.max(slot - gap, 0.5);
|
|
69
|
+
const radius = Math.min(barWidth / 2, 2);
|
|
70
|
+
const usable = height - pad * 2;
|
|
71
|
+
return (_jsxs("svg", { ...rootProps, children: [_jsx("title", { children: label }), _jsx("g", { fill: "currentColor", children: points.map((value, index) => {
|
|
72
|
+
const ratio = span === 0 ? 0 : (value - min) / span;
|
|
73
|
+
// Floor at 1px so even the smallest value stays visible.
|
|
74
|
+
const barHeight = Math.max(ratio * usable, 1);
|
|
75
|
+
const x = index * slot + gap / 2;
|
|
76
|
+
const y = height - pad - barHeight;
|
|
77
|
+
return (_jsx("rect", { "data-slot": "sparkline-bar", x: x, y: y, width: barWidth, height: barHeight, rx: radius }, index));
|
|
78
|
+
}) })] }));
|
|
79
|
+
}
|
|
80
|
+
// Line: map each value to a point. A single point renders a flat midline
|
|
81
|
+
// segment so the component never collapses to nothing.
|
|
82
|
+
const step = count > 1 ? (width - pad * 2) / (count - 1) : 0;
|
|
83
|
+
const coords = points.map((value, index) => {
|
|
84
|
+
const x = count > 1 ? pad + index * step : width / 2;
|
|
85
|
+
const y = scaleY(value, min, max, height, pad);
|
|
86
|
+
return [x, y];
|
|
87
|
+
});
|
|
88
|
+
const linePath = coords.length === 1
|
|
89
|
+
? // Draw a short horizontal stub centered on the lone point.
|
|
90
|
+
`M ${pad} ${coords[0]?.[1]} L ${width - pad} ${coords[0]?.[1]}`
|
|
91
|
+
: coords.map(([x, y], index) => `${index === 0 ? "M" : "L"} ${x} ${y}`).join(" ");
|
|
92
|
+
// Close the path down to the baseline and back for the area fill.
|
|
93
|
+
const baseline = height - pad;
|
|
94
|
+
const areaPath = coords.length === 1
|
|
95
|
+
? `M ${pad} ${coords[0]?.[1]} L ${width - pad} ${coords[0]?.[1]} L ${width - pad} ${baseline} L ${pad} ${baseline} Z`
|
|
96
|
+
: `${linePath} L ${coords.at(-1)?.[0]} ${baseline} L ${coords[0]?.[0]} ${baseline} Z`;
|
|
97
|
+
return (_jsxs("svg", { ...rootProps, children: [_jsx("title", { children: label }), _jsxs("g", { children: [count > 0 && area && (_jsxs(_Fragment, { children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "color-mix(in oklch, currentColor 18%, transparent)" }), _jsx("stop", { offset: "100%", stopColor: "color-mix(in oklch, currentColor 0%, transparent)" })] }) }), _jsx("path", { "data-slot": "sparkline-area", d: areaPath, fill: `url(#${gradientId})` })] })), count > 0 && (_jsx("path", { "data-slot": "sparkline-line", d: linePath, fill: "none", stroke: "currentColor", strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }))] })] }));
|
|
98
|
+
});
|
|
99
|
+
Sparkline.displayName = "Sparkline";
|
|
100
|
+
//# sourceMappingURL=sparkline.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type SVGAttributes } from "react";
|
|
3
|
+
declare const spinnerVariants: (props?: ({
|
|
4
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export interface SpinnerProps extends SVGAttributes<SVGSVGElement>, VariantProps<typeof spinnerVariants> {
|
|
7
|
+
}
|
|
8
|
+
export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<SVGSVGElement>>;
|
|
9
|
+
export { spinnerVariants };
|
|
10
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
const spinnerVariants = cva("animate-spin text-current", {
|
|
6
|
+
variants: {
|
|
7
|
+
size: {
|
|
8
|
+
sm: "size-4",
|
|
9
|
+
md: "size-5",
|
|
10
|
+
lg: "size-6",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
defaultVariants: { size: "md" },
|
|
14
|
+
});
|
|
15
|
+
export const Spinner = forwardRef(({ className, size, "aria-label": ariaLabel = "Loading", ...props }, ref) => {
|
|
16
|
+
return (_jsxs("svg", { ref: ref, "data-slot": "spinner", role: "status", "aria-label": ariaLabel, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: cn(spinnerVariants({ size }), className), ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "3", className: "opacity-25" }), _jsx("path", { d: "M12 2a10 10 0 0 1 10 10", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", className: "opacity-90" })] }));
|
|
17
|
+
});
|
|
18
|
+
Spinner.displayName = "Spinner";
|
|
19
|
+
export { spinnerVariants };
|
|
20
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { HTMLAttributes, Ref } from "react";
|
|
2
|
+
export interface SpinningTextProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
/** The phrase laid out around the circle. */
|
|
5
|
+
children: string;
|
|
6
|
+
/**
|
|
7
|
+
* Radius of the circle, in pixels.
|
|
8
|
+
* @default 48
|
|
9
|
+
*/
|
|
10
|
+
radius?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Seconds for one full revolution.
|
|
13
|
+
* @default 16
|
|
14
|
+
*/
|
|
15
|
+
duration?: number;
|
|
16
|
+
/** Spin counter-clockwise. @default false */
|
|
17
|
+
reverse?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Lays a phrase around a circle and slowly rotates it. Assistive tech reads
|
|
21
|
+
* the original string once (`sr-only`); the orbiting letters are
|
|
22
|
+
* `aria-hidden`. Reduced-motion visitors still see the circle, it just does
|
|
23
|
+
* not spin.
|
|
24
|
+
*/
|
|
25
|
+
export declare function SpinningText({ ref, className, children, radius, duration, reverse, style, ...props }: SpinningTextProps): import("react").JSX.Element;
|
|
26
|
+
export declare namespace SpinningText {
|
|
27
|
+
var displayName: string;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=spinning-text.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
const SPIN_KEYFRAMES = "@keyframes cronus-spinning-text{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}";
|
|
4
|
+
const graphemeSegmenter = typeof Intl !== "undefined" && "Segmenter" in Intl
|
|
5
|
+
? new Intl.Segmenter(undefined, { granularity: "grapheme" })
|
|
6
|
+
: null;
|
|
7
|
+
function segmentGraphemes(text) {
|
|
8
|
+
if (graphemeSegmenter) {
|
|
9
|
+
return Array.from(graphemeSegmenter.segment(text), (segment) => segment.segment);
|
|
10
|
+
}
|
|
11
|
+
return Array.from(text);
|
|
12
|
+
}
|
|
13
|
+
function finiteOr(value, fallback) {
|
|
14
|
+
return Number.isFinite(value) ? value : fallback;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Lays a phrase around a circle and slowly rotates it. Assistive tech reads
|
|
18
|
+
* the original string once (`sr-only`); the orbiting letters are
|
|
19
|
+
* `aria-hidden`. Reduced-motion visitors still see the circle, it just does
|
|
20
|
+
* not spin.
|
|
21
|
+
*/
|
|
22
|
+
export function SpinningText({ ref, className, children, radius = 48, duration = 16, reverse = false, style, ...props }) {
|
|
23
|
+
const glyphs = segmentGraphemes(children);
|
|
24
|
+
const r = Math.max(12, finiteOr(radius, 48));
|
|
25
|
+
const cycle = Math.max(2, finiteOr(duration, 16));
|
|
26
|
+
const spinStyle = {
|
|
27
|
+
"--spin-duration": `${cycle}s`,
|
|
28
|
+
"--spin-radius": `${r}px`,
|
|
29
|
+
width: r * 2,
|
|
30
|
+
height: r * 2,
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs("div", { ref: ref, "data-slot": "spinning-text", className: cn("relative inline-grid place-items-center", className), style: { ...spinStyle, ...style }, ...props, children: [_jsx("span", { className: "sr-only", children: children }), _jsx("style", { children: SPIN_KEYFRAMES }), _jsx("div", { "aria-hidden": "true", className: cn("absolute inset-0 [animation-duration:var(--spin-duration)] [animation-iteration-count:infinite] [animation-name:cronus-spinning-text] [animation-timing-function:linear] motion-reduce:[animation-name:none]", reverse && "[animation-direction:reverse]"), children: glyphs.map((glyph, index) => {
|
|
33
|
+
const angle = glyphs.length === 0 ? 0 : (index / glyphs.length) * 360;
|
|
34
|
+
return (_jsx("span", { className: "absolute start-1/2 top-1/2 origin-[0_0] text-xs font-medium uppercase tracking-widest text-fg-secondary", style: {
|
|
35
|
+
transform: `rotate(${angle}deg) translateY(calc(var(--spin-radius) * -1))`,
|
|
36
|
+
}, children: glyph === " " ? "\u00a0" : glyph }, `${glyph}-${index}`));
|
|
37
|
+
}) })] }));
|
|
38
|
+
}
|
|
39
|
+
SpinningText.displayName = "SpinningText";
|
|
40
|
+
//# sourceMappingURL=spinning-text.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type HTMLAttributes, type MouseEventHandler, type ReactNode } from "react";
|
|
3
|
+
import { type buttonVariants } from "./button.js";
|
|
4
|
+
/** A single secondary action rendered inside the split button's dropdown menu. */
|
|
5
|
+
export interface SplitButtonItem {
|
|
6
|
+
/** Stable identity for the row; falls back to the array index when omitted. */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Visible menu label. */
|
|
9
|
+
label: ReactNode;
|
|
10
|
+
/** Optional leading icon (a `lucide-react` element is auto-sized to 16px). */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** Invoked when the row is chosen (click, Enter, or Space). */
|
|
13
|
+
onSelect?: () => void;
|
|
14
|
+
/** Paints the row in the destructive/error tone (e.g. Delete). */
|
|
15
|
+
destructive?: boolean;
|
|
16
|
+
/** Disables the row — it becomes unfocusable and dimmed. */
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
}
|
|
19
|
+
type SplitButtonVariant = NonNullable<VariantProps<typeof buttonVariants>["variant"]>;
|
|
20
|
+
type SplitButtonSize = "sm" | "md" | "lg";
|
|
21
|
+
export interface SplitButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, "onClick"> {
|
|
22
|
+
/** The primary action's label. */
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
/** Fires when the primary (left) segment is clicked. */
|
|
25
|
+
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
26
|
+
/** Optional leading icon for the primary segment (replaced by a spinner while `loading`). */
|
|
27
|
+
icon?: ReactNode;
|
|
28
|
+
/** Declarative secondary actions. Ignored when a custom `menu` slot is supplied. */
|
|
29
|
+
items?: SplitButtonItem[];
|
|
30
|
+
/**
|
|
31
|
+
* Escape hatch for fully custom menu content (compose `DropdownMenuItem`,
|
|
32
|
+
* `DropdownMenuSeparator`, `DropdownMenuLabel`, …). Takes precedence over `items`.
|
|
33
|
+
*/
|
|
34
|
+
menu?: ReactNode;
|
|
35
|
+
/** Visual style, shared by both segments — mirrors `Button`'s variants. */
|
|
36
|
+
variant?: SplitButtonVariant;
|
|
37
|
+
/** Control height/density, shared by both segments. */
|
|
38
|
+
size?: SplitButtonSize;
|
|
39
|
+
/** Disables both segments. */
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/** Shows a spinner in the primary segment and disables the control. */
|
|
42
|
+
loading?: boolean;
|
|
43
|
+
/** Accessible name for the icon-only menu trigger. */
|
|
44
|
+
menuLabel?: string;
|
|
45
|
+
/** Horizontal alignment of the menu relative to the trigger. */
|
|
46
|
+
align?: "start" | "center" | "end";
|
|
47
|
+
/** Gap in px between the trigger and the opened menu. */
|
|
48
|
+
sideOffset?: number;
|
|
49
|
+
/** Class applied to the dropdown menu surface. */
|
|
50
|
+
contentClassName?: string;
|
|
51
|
+
/** Uncontrolled initial open state of the menu. */
|
|
52
|
+
defaultOpen?: boolean;
|
|
53
|
+
/** Controlled open state of the menu. */
|
|
54
|
+
open?: boolean;
|
|
55
|
+
/** Notified whenever the menu opens or closes. */
|
|
56
|
+
onOpenChange?: (open: boolean) => void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A split button: a primary action fused to a smaller menu trigger inside one
|
|
60
|
+
* seamless segmented control. The menu is a Radix dropdown (proper roving-tabindex
|
|
61
|
+
* keyboard nav, type-ahead, focus return, and portal), so the whole control is
|
|
62
|
+
* keyboard-operable — Tab reaches each segment, Enter/Space fire the primary, and
|
|
63
|
+
* ArrowDown/Enter open the menu. The two segments share `Button`'s variants/sizes;
|
|
64
|
+
* inner corners and borders are collapsed and a single hairline seam is drawn with
|
|
65
|
+
* `currentColor`, so the fusion reads cleanly across every variant. The chevron's
|
|
66
|
+
* flip is CSS-only and is disabled under `prefers-reduced-motion: reduce`; there
|
|
67
|
+
* are no timers or animation frames to clean up.
|
|
68
|
+
*/
|
|
69
|
+
export declare const SplitButton: import("react").ForwardRefExoticComponent<SplitButtonProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=split-button.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown } from "lucide-react";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
import { Button } from "./button.js";
|
|
6
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "./dropdown-menu.js";
|
|
7
|
+
import { Spinner } from "./spinner.js";
|
|
8
|
+
/**
|
|
9
|
+
* A split button: a primary action fused to a smaller menu trigger inside one
|
|
10
|
+
* seamless segmented control. The menu is a Radix dropdown (proper roving-tabindex
|
|
11
|
+
* keyboard nav, type-ahead, focus return, and portal), so the whole control is
|
|
12
|
+
* keyboard-operable — Tab reaches each segment, Enter/Space fire the primary, and
|
|
13
|
+
* ArrowDown/Enter open the menu. The two segments share `Button`'s variants/sizes;
|
|
14
|
+
* inner corners and borders are collapsed and a single hairline seam is drawn with
|
|
15
|
+
* `currentColor`, so the fusion reads cleanly across every variant. The chevron's
|
|
16
|
+
* flip is CSS-only and is disabled under `prefers-reduced-motion: reduce`; there
|
|
17
|
+
* are no timers or animation frames to clean up.
|
|
18
|
+
*/
|
|
19
|
+
export const SplitButton = forwardRef(({ className, children, onClick, icon, items, menu, variant = "primary", size = "md", disabled = false, loading = false, menuLabel = "More actions", align = "end", sideOffset = 6, contentClassName, defaultOpen, open, onOpenChange, ...props }, ref) => {
|
|
20
|
+
const isDisabled = disabled || loading;
|
|
21
|
+
return (_jsxs("div", { ref: ref, role: "group", "data-slot": "split-button", "data-variant": variant, className: cn("isolate inline-flex items-stretch", className), ...props, children: [_jsxs(Button, { type: "button", variant: variant, size: size, disabled: isDisabled, onClick: onClick, className: "relative rounded-r-none border-r-0 focus-visible:z-10", children: [loading ? _jsx(Spinner, { size: "sm", "aria-hidden": true }) : icon, children] }), _jsxs(DropdownMenu, { defaultOpen: defaultOpen, open: open, onOpenChange: onOpenChange, modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: variant, size: size, disabled: isDisabled, "aria-label": menuLabel, className: cn("relative aspect-square rounded-l-none border-l-0 px-0 focus-visible:z-10",
|
|
22
|
+
// hairline seam between the two segments (currentColor, tint-agnostic)
|
|
23
|
+
"before:pointer-events-none before:absolute before:inset-y-2 before:left-0 before:w-px before:bg-current/15 before:content-['']",
|
|
24
|
+
// chevron flips open; motion-reduce keeps it static
|
|
25
|
+
"[&>svg]:transition-transform [&>svg]:duration-200 [&>svg]:ease-[var(--ease-out-quart)] data-[state=open]:[&>svg]:rotate-180 motion-reduce:[&>svg]:transition-none"), children: _jsx(ChevronDown, { "aria-hidden": true }) }) }), _jsx(DropdownMenuContent, { align: align, sideOffset: sideOffset, className: cn("min-w-[10rem]", contentClassName), children: menu ??
|
|
26
|
+
items?.map((item, index) => (_jsxs(DropdownMenuItem, { disabled: item.disabled, onSelect: item.onSelect, "data-destructive": item.destructive ? "" : undefined, className: cn(item.destructive &&
|
|
27
|
+
"text-error-strong focus:bg-error/10 focus:text-error-strong [&_svg]:text-error-strong"), children: [item.icon, item.label] }, item.id ?? index))) })] })] }));
|
|
28
|
+
});
|
|
29
|
+
SplitButton.displayName = "SplitButton";
|
|
30
|
+
//# sourceMappingURL=split-button.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A card with a pointer-following radial spotlight. The spotlight position is
|
|
4
|
+
* written straight to the DOM via CSS custom properties (`--spot-x` / `--spot-y`)
|
|
5
|
+
* inside a `requestAnimationFrame`, so moving the pointer never triggers a React
|
|
6
|
+
* re-render — the gradient is recomputed by the compositor, not by React. Hover
|
|
7
|
+
* opacity is toggled with a `data-` attribute (also CSS-driven). The whole effect
|
|
8
|
+
* is suppressed under `prefers-reduced-motion: reduce`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SpotlightCard: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
11
|
+
//# sourceMappingURL=spotlight-card.d.ts.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useCallback, useRef } from "react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
/**
|
|
6
|
+
* A card with a pointer-following radial spotlight. The spotlight position is
|
|
7
|
+
* written straight to the DOM via CSS custom properties (`--spot-x` / `--spot-y`)
|
|
8
|
+
* inside a `requestAnimationFrame`, so moving the pointer never triggers a React
|
|
9
|
+
* re-render — the gradient is recomputed by the compositor, not by React. Hover
|
|
10
|
+
* opacity is toggled with a `data-` attribute (also CSS-driven). The whole effect
|
|
11
|
+
* is suppressed under `prefers-reduced-motion: reduce`.
|
|
12
|
+
*/
|
|
13
|
+
export const SpotlightCard = forwardRef(({ className, children, onMouseMove, onMouseEnter, onMouseLeave, ...props }, ref) => {
|
|
14
|
+
const localRef = useRef(null);
|
|
15
|
+
const frameRef = useRef(null);
|
|
16
|
+
const setRef = useCallback((node) => {
|
|
17
|
+
localRef.current = node;
|
|
18
|
+
if (typeof ref === "function") {
|
|
19
|
+
ref(node);
|
|
20
|
+
}
|
|
21
|
+
else if (ref) {
|
|
22
|
+
ref.current = node;
|
|
23
|
+
}
|
|
24
|
+
}, [ref]);
|
|
25
|
+
const handleMouseMove = useCallback((event) => {
|
|
26
|
+
const node = localRef.current;
|
|
27
|
+
if (node) {
|
|
28
|
+
const clientX = event.clientX;
|
|
29
|
+
const clientY = event.clientY;
|
|
30
|
+
if (frameRef.current !== null) {
|
|
31
|
+
cancelAnimationFrame(frameRef.current);
|
|
32
|
+
}
|
|
33
|
+
frameRef.current = requestAnimationFrame(() => {
|
|
34
|
+
frameRef.current = null;
|
|
35
|
+
const current = localRef.current;
|
|
36
|
+
if (!current) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const rect = current.getBoundingClientRect();
|
|
40
|
+
current.style.setProperty("--spot-x", `${clientX - rect.left}px`);
|
|
41
|
+
current.style.setProperty("--spot-y", `${clientY - rect.top}px`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
onMouseMove?.(event);
|
|
45
|
+
}, [onMouseMove]);
|
|
46
|
+
const handleMouseEnter = useCallback((event) => {
|
|
47
|
+
localRef.current?.setAttribute("data-spotlight-hovered", "true");
|
|
48
|
+
onMouseEnter?.(event);
|
|
49
|
+
}, [onMouseEnter]);
|
|
50
|
+
const handleMouseLeave = useCallback((event) => {
|
|
51
|
+
if (frameRef.current !== null) {
|
|
52
|
+
cancelAnimationFrame(frameRef.current);
|
|
53
|
+
frameRef.current = null;
|
|
54
|
+
}
|
|
55
|
+
localRef.current?.removeAttribute("data-spotlight-hovered");
|
|
56
|
+
onMouseLeave?.(event);
|
|
57
|
+
}, [onMouseLeave]);
|
|
58
|
+
return (_jsxs("div", { ref: setRef, "data-slot": "spotlight-card", className: cn("group relative overflow-hidden rounded-2xl border border-border bg-surface-raised p-6 text-fg", className), onMouseMove: handleMouseMove, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, ...props, children: [_jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute -inset-px opacity-0 transition-opacity duration-300 group-data-[spotlight-hovered]:opacity-100 motion-reduce:hidden motion-reduce:transition-none", style: {
|
|
59
|
+
background: "radial-gradient(320px circle at var(--spot-x, 50%) var(--spot-y, 50%), color-mix(in oklch, var(--cronus-primary) 14%, transparent), transparent 72%)",
|
|
60
|
+
} }), _jsx("div", { className: "relative", children: children })] }));
|
|
61
|
+
});
|
|
62
|
+
SpotlightCard.displayName = "SpotlightCard";
|
|
63
|
+
//# sourceMappingURL=spotlight-card.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes, Ref } from "react";
|
|
2
|
+
export interface StarBorderProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
/**
|
|
5
|
+
* Seconds for one sparkle lap around the perimeter.
|
|
6
|
+
* @default 6
|
|
7
|
+
*/
|
|
8
|
+
duration?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Two sparkle heads that chase each other around a card's border. Distinct
|
|
12
|
+
* from `BorderBeam` (a comet trail): these are discrete twinkles, not a
|
|
13
|
+
* continuous beam. Decorative and hidden under reduced motion.
|
|
14
|
+
*/
|
|
15
|
+
export declare function StarBorder({ ref, className, children, duration, style, ...props }: StarBorderProps): import("react").JSX.Element;
|
|
16
|
+
export declare namespace StarBorder {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=star-border.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
const STAR_KEYFRAMES = "@keyframes cronus-star-border{from{offset-distance:0%}to{offset-distance:100%}}";
|
|
4
|
+
function finiteOr(value, fallback) {
|
|
5
|
+
return Number.isFinite(value) ? value : fallback;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Two sparkle heads that chase each other around a card's border. Distinct
|
|
9
|
+
* from `BorderBeam` (a comet trail): these are discrete twinkles, not a
|
|
10
|
+
* continuous beam. Decorative and hidden under reduced motion.
|
|
11
|
+
*/
|
|
12
|
+
export function StarBorder({ ref, className, children, duration = 6, style, ...props }) {
|
|
13
|
+
const cycle = Math.max(2, finiteOr(duration, 6));
|
|
14
|
+
const starStyle = { "--star-duration": `${cycle}s` };
|
|
15
|
+
return (_jsxs("div", { ref: ref, "data-slot": "star-border", className: cn("relative rounded-2xl", className), style: { ...starStyle, ...style }, ...props, children: [_jsxs("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 overflow-hidden rounded-[inherit] motion-reduce:hidden", children: [_jsx("style", { children: STAR_KEYFRAMES }), [0, 50].map((phase) => (_jsx("span", { className: "absolute size-1.5 rounded-full bg-primary [animation-duration:var(--star-duration)] [animation-iteration-count:infinite] [animation-name:cronus-star-border] [animation-timing-function:linear] [offset-path:rect(0_auto_auto_0_round_12px)]", style: { animationDelay: `-${(phase / 100) * cycle}s` } }, phase)))] }), _jsx("div", { className: "relative", children: children })] }));
|
|
16
|
+
}
|
|
17
|
+
StarBorder.displayName = "StarBorder";
|
|
18
|
+
//# sourceMappingURL=star-border.js.map
|