@mova-ui/react 0.1.0 → 0.4.1
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/README.md +70 -21
- package/bin/mova.mjs +38 -12
- package/dist/catalog/components/AnimatedButton.d.ts +9 -0
- package/dist/catalog/components/AnimatedButton.js +346 -0
- package/dist/catalog/components/IconSwap.d.ts +6 -0
- package/dist/catalog/components/IconSwap.js +9 -0
- package/dist/catalog/components/InViewRender.d.ts +4 -0
- package/dist/catalog/components/InViewRender.js +14 -0
- package/dist/catalog/components/PageTransitionCard.d.ts +9 -0
- package/dist/catalog/components/PageTransitionCard.js +110 -0
- package/dist/catalog/components/PageTransitionModal.d.ts +10 -0
- package/dist/catalog/components/PageTransitionModal.js +180 -0
- package/dist/catalog/components/PageTransitionOverlay.d.ts +9 -0
- package/dist/catalog/components/PageTransitionOverlay.js +7 -0
- package/dist/catalog/components/cards/CardArc5.d.ts +14 -0
- package/dist/catalog/components/cards/CardArc5.js +76 -0
- package/dist/catalog/components/cards/CardArc7.d.ts +14 -0
- package/dist/catalog/components/cards/CardArc7.js +77 -0
- package/dist/catalog/components/cards/CardCarousel.d.ts +12 -0
- package/dist/catalog/components/cards/CardCarousel.js +139 -0
- package/dist/catalog/components/cards/CardCascadeStagger.d.ts +9 -0
- package/dist/catalog/components/cards/CardCascadeStagger.js +64 -0
- package/dist/catalog/components/cards/CardCornerFan.d.ts +12 -0
- package/dist/catalog/components/cards/CardCornerFan.js +66 -0
- package/dist/catalog/components/cards/CardCoverFlow.d.ts +12 -0
- package/dist/catalog/components/cards/CardCoverFlow.js +115 -0
- package/dist/catalog/components/cards/CardLinearSpread.d.ts +12 -0
- package/dist/catalog/components/cards/CardLinearSpread.js +62 -0
- package/dist/catalog/components/cards/CardLongArc5.d.ts +14 -0
- package/dist/catalog/components/cards/CardLongArc5.js +76 -0
- package/dist/catalog/components/cards/CardScatterSpread.d.ts +9 -0
- package/dist/catalog/components/cards/CardScatterSpread.js +69 -0
- package/dist/catalog/components/cards/CardStampArc.d.ts +14 -0
- package/dist/catalog/components/cards/CardStampArc.js +101 -0
- package/dist/catalog/components/cards/CardTimeMachine.d.ts +8 -0
- package/dist/catalog/components/cards/CardTimeMachine.js +182 -0
- package/dist/catalog/components/cards/CardWheelFan.d.ts +9 -0
- package/dist/catalog/components/cards/CardWheelFan.js +68 -0
- package/dist/catalog/components/cards/FocusBlur.d.ts +14 -0
- package/dist/catalog/components/cards/FocusBlur.js +7 -0
- package/dist/catalog/components/css-animations/Dock.d.ts +6 -0
- package/dist/catalog/components/css-animations/Dock.js +93 -0
- package/dist/catalog/components/css-animations/FocusBlur.d.ts +4 -0
- package/dist/catalog/components/css-animations/FocusBlur.js +35 -0
- package/dist/catalog/components/css-animations/FrequencySelector.d.ts +6 -0
- package/dist/catalog/components/css-animations/FrequencySelector.js +100 -0
- package/dist/catalog/components/css-animations/MediaBetweenText.d.ts +34 -0
- package/dist/catalog/components/css-animations/MediaBetweenText.js +125 -0
- package/dist/catalog/components/css-animations/ScrambleHover.d.ts +16 -0
- package/dist/catalog/components/css-animations/ScrambleHover.js +101 -0
- package/dist/catalog/components/css-animations/TabBar.d.ts +6 -0
- package/dist/catalog/components/css-animations/TabBar.js +57 -0
- package/dist/catalog/components/css-animations/whimsical/AppleLoaders.d.ts +9 -0
- package/dist/catalog/components/css-animations/whimsical/AppleLoaders.js +57 -0
- package/dist/catalog/components/css-animations/whimsical/Area1.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Area1.js +56 -0
- package/dist/catalog/components/css-animations/whimsical/Area6.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Area6.js +53 -0
- package/dist/catalog/components/css-animations/whimsical/Bookmark.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Bookmark.js +183 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios1.d.ts +37 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios1.js +253 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios2.d.ts +37 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios2.js +237 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios3.d.ts +73 -0
- package/dist/catalog/components/css-animations/whimsical/ConceptTrios3.js +441 -0
- package/dist/catalog/components/css-animations/whimsical/Curtain.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Curtain.js +155 -0
- package/dist/catalog/components/css-animations/whimsical/Kakikaki.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Kakikaki.js +67 -0
- package/dist/catalog/components/css-animations/whimsical/KineticTensionCapsule.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/KineticTensionCapsule.js +82 -0
- package/dist/catalog/components/css-animations/whimsical/MatrixGridLoader.d.ts +5 -0
- package/dist/catalog/components/css-animations/whimsical/MatrixGridLoader.js +88 -0
- package/dist/catalog/components/css-animations/whimsical/RedesignedPhysicsTrios.d.ts +103 -0
- package/dist/catalog/components/css-animations/whimsical/RedesignedPhysicsTrios.js +607 -0
- package/dist/catalog/components/css-animations/whimsical/Tissue.d.ts +7 -0
- package/dist/catalog/components/css-animations/whimsical/Tissue.js +111 -0
- package/dist/catalog/components/css-animations/whimsical/Tsumiki.d.ts +8 -0
- package/dist/catalog/components/css-animations/whimsical/Tsumiki.js +83 -0
- package/dist/catalog/components/css-animations/whimsical/WhimsicalVariations.d.ts +37 -0
- package/dist/catalog/components/css-animations/whimsical/WhimsicalVariations.js +325 -0
- package/dist/catalog/components/css-animations/whimsical/YuiPhysicsExperiments.d.ts +37 -0
- package/dist/catalog/components/css-animations/whimsical/YuiPhysicsExperiments.js +247 -0
- package/dist/catalog/components/css-animations/yui-components/RedesignedUiTrios.d.ts +19 -0
- package/dist/catalog/components/css-animations/yui-components/RedesignedUiTrios.js +174 -0
- package/dist/catalog/components/css-animations/yui-components/UiKitTrios.d.ts +19 -0
- package/dist/catalog/components/css-animations/yui-components/UiKitTrios.js +147 -0
- package/dist/catalog/components/css-animations/yui-components/YuiUiKit1.d.ts +29 -0
- package/dist/catalog/components/css-animations/yui-components/YuiUiKit1.js +317 -0
- package/dist/catalog/components/css-animations/yui-components/YuiUiKit2.d.ts +34 -0
- package/dist/catalog/components/css-animations/yui-components/YuiUiKit2.js +356 -0
- package/dist/catalog/components/dither-charts/ActivityHeatmap.d.ts +5 -0
- package/dist/catalog/components/dither-charts/ActivityHeatmap.js +8 -0
- package/dist/catalog/components/dither-charts/ChartCard.d.ts +2 -0
- package/dist/catalog/components/dither-charts/ChartCard.js +8 -0
- package/dist/catalog/components/dither-charts/DeviceUsageChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DeviceUsageChart.js +8 -0
- package/dist/catalog/components/dither-charts/DitherBarChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherBarChart.js +148 -0
- package/dist/catalog/components/dither-charts/DitherBook.d.ts +23 -0
- package/dist/catalog/components/dither-charts/DitherBook.js +352 -0
- package/dist/catalog/components/dither-charts/DitherChartsGrid.d.ts +9 -0
- package/dist/catalog/components/dither-charts/DitherChartsGrid.js +108 -0
- package/dist/catalog/components/dither-charts/DitherDonutChart.d.ts +7 -0
- package/dist/catalog/components/dither-charts/DitherDonutChart.js +8 -0
- package/dist/catalog/components/dither-charts/DitherFunnelChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherFunnelChart.js +8 -0
- package/dist/catalog/components/dither-charts/DitherGrowthChart.d.ts +7 -0
- package/dist/catalog/components/dither-charts/DitherGrowthChart.js +8 -0
- package/dist/catalog/components/dither-charts/DitherHeatmapGrid.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherHeatmapGrid.js +115 -0
- package/dist/catalog/components/dither-charts/DitherRadialChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherRadialChart.js +114 -0
- package/dist/catalog/components/dither-charts/DitherScatterChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherScatterChart.js +151 -0
- package/dist/catalog/components/dither-charts/DitherSparklineMatrix.d.ts +5 -0
- package/dist/catalog/components/dither-charts/DitherSparklineMatrix.js +89 -0
- package/dist/catalog/components/dither-charts/DitherStackedChart.d.ts +7 -0
- package/dist/catalog/components/dither-charts/DitherStackedChart.js +8 -0
- package/dist/catalog/components/dither-charts/MembersGrowthChart.d.ts +2 -0
- package/dist/catalog/components/dither-charts/MembersGrowthChart.js +8 -0
- package/dist/catalog/components/dither-charts/PaymentsChart.d.ts +2 -0
- package/dist/catalog/components/dither-charts/PaymentsChart.js +8 -0
- package/dist/catalog/components/dither-charts/RevenueLineChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/RevenueLineChart.js +8 -0
- package/dist/catalog/components/dither-charts/ServerGauge.d.ts +5 -0
- package/dist/catalog/components/dither-charts/ServerGauge.js +8 -0
- package/dist/catalog/components/dither-charts/SimpleCompExtracted.d.ts +6 -0
- package/dist/catalog/components/dither-charts/SimpleCompExtracted.js +423 -0
- package/dist/catalog/components/dither-charts/StorageUsageChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/StorageUsageChart.js +8 -0
- package/dist/catalog/components/dither-charts/TrafficBubble.d.ts +5 -0
- package/dist/catalog/components/dither-charts/TrafficBubble.js +8 -0
- package/dist/catalog/components/dither-charts/UptimeChart.d.ts +5 -0
- package/dist/catalog/components/dither-charts/UptimeChart.js +8 -0
- package/dist/catalog/components/dither-charts/lib/ditherPatterns.d.ts +7 -0
- package/dist/catalog/components/dither-charts/lib/ditherPatterns.js +107 -0
- package/dist/catalog/components/dither-charts/lib/recharts-legend.d.ts +8 -0
- package/dist/catalog/components/dither-charts/lib/recharts-legend.js +40 -0
- package/dist/catalog/components/dither-charts/lib/recharts-tooltip.d.ts +10 -0
- package/dist/catalog/components/dither-charts/lib/recharts-tooltip.js +7 -0
- package/dist/catalog/components/dither-charts/lib/utils.d.ts +3 -0
- package/dist/catalog/components/dither-charts/lib/utils.js +7 -0
- package/dist/catalog/components/forms/AnimatedFormElement.d.ts +8 -0
- package/dist/catalog/components/forms/AnimatedFormElement.js +412 -0
- package/dist/catalog/components/metrics/AnimatedMetricCard.d.ts +8 -0
- package/dist/catalog/components/metrics/AnimatedMetricCard.js +1049 -0
- package/dist/catalog/components/metrics/Budget.d.ts +1 -0
- package/dist/catalog/components/metrics/Budget.js +35 -0
- package/dist/catalog/components/metrics/CacheStatsCard.d.ts +1 -0
- package/dist/catalog/components/metrics/CacheStatsCard.js +88 -0
- package/dist/catalog/components/metrics/CourseProgressCard.d.ts +1 -0
- package/dist/catalog/components/metrics/CourseProgressCard.js +86 -0
- package/dist/catalog/components/metrics/CreditScoreCards.d.ts +1 -0
- package/dist/catalog/components/metrics/CreditScoreCards.js +139 -0
- package/dist/catalog/components/metrics/FeedbackCard.d.ts +1 -0
- package/dist/catalog/components/metrics/FeedbackCard.js +59 -0
- package/dist/catalog/components/metrics/FinanceDashboard.d.ts +1 -0
- package/dist/catalog/components/metrics/FinanceDashboard.js +164 -0
- package/dist/catalog/components/metrics/Growth.d.ts +1 -0
- package/dist/catalog/components/metrics/Growth.js +40 -0
- package/dist/catalog/components/metrics/GrowthCalendar.d.ts +1 -0
- package/dist/catalog/components/metrics/GrowthCalendar.js +87 -0
- package/dist/catalog/components/metrics/HealthCards.d.ts +1 -0
- package/dist/catalog/components/metrics/HealthCards.js +244 -0
- package/dist/catalog/components/metrics/MarketingCards.d.ts +1 -0
- package/dist/catalog/components/metrics/MarketingCards.js +70 -0
- package/dist/catalog/components/metrics/NetworkTelemetry.d.ts +1 -0
- package/dist/catalog/components/metrics/NetworkTelemetry.js +198 -0
- package/dist/catalog/components/metrics/NoiseCards.d.ts +1 -0
- package/dist/catalog/components/metrics/NoiseCards.js +61 -0
- package/dist/catalog/components/metrics/OverviewChart.d.ts +1 -0
- package/dist/catalog/components/metrics/OverviewChart.js +69 -0
- package/dist/catalog/components/metrics/ProgressIndicator.d.ts +1 -0
- package/dist/catalog/components/metrics/ProgressIndicator.js +35 -0
- package/dist/catalog/components/metrics/PromptsCard.d.ts +1 -0
- package/dist/catalog/components/metrics/PromptsCard.js +29 -0
- package/dist/catalog/components/metrics/RealTimeAlerts.d.ts +1 -0
- package/dist/catalog/components/metrics/RealTimeAlerts.js +64 -0
- package/dist/catalog/components/metrics/RunningStatsCard.d.ts +1 -0
- package/dist/catalog/components/metrics/RunningStatsCard.js +41 -0
- package/dist/catalog/components/metrics/SalesDashboard.d.ts +1 -0
- package/dist/catalog/components/metrics/SalesDashboard.js +156 -0
- package/dist/catalog/components/metrics/SalesOverview.d.ts +1 -0
- package/dist/catalog/components/metrics/SalesOverview.js +71 -0
- package/dist/catalog/components/metrics/SavingsCards.d.ts +1 -0
- package/dist/catalog/components/metrics/SavingsCards.js +118 -0
- package/dist/catalog/components/metrics/ServerPerformance.d.ts +1 -0
- package/dist/catalog/components/metrics/ServerPerformance.js +26 -0
- package/dist/catalog/components/metrics/StatusCards.d.ts +1 -0
- package/dist/catalog/components/metrics/StatusCards.js +165 -0
- package/dist/catalog/components/metrics/StockChartCard.d.ts +1 -0
- package/dist/catalog/components/metrics/StockChartCard.js +122 -0
- package/dist/catalog/components/metrics/SystemMetricsCard.d.ts +1 -0
- package/dist/catalog/components/metrics/SystemMetricsCard.js +129 -0
- package/dist/catalog/components/metrics/TimerCard.d.ts +1 -0
- package/dist/catalog/components/metrics/TimerCard.js +35 -0
- package/dist/catalog/components/metrics/UserMetrics.d.ts +1 -0
- package/dist/catalog/components/metrics/UserMetrics.js +128 -0
- package/dist/catalog/components/metrics/UsersChartCard.d.ts +1 -0
- package/dist/catalog/components/metrics/UsersChartCard.js +111 -0
- package/dist/catalog/components/metrics/VisitorsChartCard.d.ts +1 -0
- package/dist/catalog/components/metrics/VisitorsChartCard.js +178 -0
- package/dist/catalog/components/mono-charts/GitHubActivity.d.ts +30 -0
- package/dist/catalog/components/mono-charts/GitHubActivity.js +547 -0
- package/dist/catalog/components/mono-charts/MonoActivityHeatmap.d.ts +14 -0
- package/dist/catalog/components/mono-charts/MonoActivityHeatmap.js +170 -0
- package/dist/catalog/components/mono-charts/MonoRoundedAreaChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedAreaChart.js +107 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBarChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBarChart.js +121 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBubbleChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBubbleChart.js +67 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBulletChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedBulletChart.js +64 -0
- package/dist/catalog/components/mono-charts/MonoRoundedCandlestickChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedCandlestickChart.js +76 -0
- package/dist/catalog/components/mono-charts/MonoRoundedComposedChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedComposedChart.js +117 -0
- package/dist/catalog/components/mono-charts/MonoRoundedDonutChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedDonutChart.js +97 -0
- package/dist/catalog/components/mono-charts/MonoRoundedFunnelChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedFunnelChart.js +65 -0
- package/dist/catalog/components/mono-charts/MonoRoundedGaugeArc.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedGaugeArc.js +64 -0
- package/dist/catalog/components/mono-charts/MonoRoundedHeatmapChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedHeatmapChart.js +56 -0
- package/dist/catalog/components/mono-charts/MonoRoundedKpiCardChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedKpiCardChart.js +61 -0
- package/dist/catalog/components/mono-charts/MonoRoundedLineChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedLineChart.js +142 -0
- package/dist/catalog/components/mono-charts/MonoRoundedMeterChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedMeterChart.js +68 -0
- package/dist/catalog/components/mono-charts/MonoRoundedPolarChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedPolarChart.js +67 -0
- package/dist/catalog/components/mono-charts/MonoRoundedPyramidChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedPyramidChart.js +52 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadarChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadarChart.js +70 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadialBarGroup.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadialBarGroup.js +69 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadialGaugeChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRadialGaugeChart.js +68 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRangeChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedRangeChart.js +77 -0
- package/dist/catalog/components/mono-charts/MonoRoundedSankeyChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedSankeyChart.js +66 -0
- package/dist/catalog/components/mono-charts/MonoRoundedScatterChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedScatterChart.js +82 -0
- package/dist/catalog/components/mono-charts/MonoRoundedSparklineChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedSparklineChart.js +73 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStackedBarChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStackedBarChart.js +63 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStepChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStepChart.js +72 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStreamChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedStreamChart.js +98 -0
- package/dist/catalog/components/mono-charts/MonoRoundedTreemapChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedTreemapChart.js +56 -0
- package/dist/catalog/components/mono-charts/MonoRoundedWaterfallChart.d.ts +7 -0
- package/dist/catalog/components/mono-charts/MonoRoundedWaterfallChart.js +67 -0
- package/dist/catalog/components/simple-comp/ActivityHeatmap.d.ts +5 -0
- package/dist/catalog/components/simple-comp/ActivityHeatmap.js +7 -0
- package/dist/catalog/components/simple-comp/ChartCard.d.ts +2 -0
- package/dist/catalog/components/simple-comp/ChartCard.js +8 -0
- package/dist/catalog/components/simple-comp/DeviceUsageChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DeviceUsageChart.js +7 -0
- package/dist/catalog/components/simple-comp/DitherBarChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherBarChart.js +148 -0
- package/dist/catalog/components/simple-comp/DitherBook.d.ts +23 -0
- package/dist/catalog/components/simple-comp/DitherBook.js +352 -0
- package/dist/catalog/components/simple-comp/DitherChartsGrid.d.ts +9 -0
- package/dist/catalog/components/simple-comp/DitherChartsGrid.js +107 -0
- package/dist/catalog/components/simple-comp/DitherDonutChart.d.ts +7 -0
- package/dist/catalog/components/simple-comp/DitherDonutChart.js +7 -0
- package/dist/catalog/components/simple-comp/DitherFunnelChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherFunnelChart.js +7 -0
- package/dist/catalog/components/simple-comp/DitherGrowthChart.d.ts +7 -0
- package/dist/catalog/components/simple-comp/DitherGrowthChart.js +7 -0
- package/dist/catalog/components/simple-comp/DitherHeatmapGrid.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherHeatmapGrid.js +115 -0
- package/dist/catalog/components/simple-comp/DitherRadialChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherRadialChart.js +114 -0
- package/dist/catalog/components/simple-comp/DitherScatterChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherScatterChart.js +151 -0
- package/dist/catalog/components/simple-comp/DitherSparklineMatrix.d.ts +5 -0
- package/dist/catalog/components/simple-comp/DitherSparklineMatrix.js +89 -0
- package/dist/catalog/components/simple-comp/DitherStackedChart.d.ts +7 -0
- package/dist/catalog/components/simple-comp/DitherStackedChart.js +7 -0
- package/dist/catalog/components/simple-comp/MembersGrowthChart.d.ts +2 -0
- package/dist/catalog/components/simple-comp/MembersGrowthChart.js +8 -0
- package/dist/catalog/components/simple-comp/PaymentsChart.d.ts +2 -0
- package/dist/catalog/components/simple-comp/PaymentsChart.js +8 -0
- package/dist/catalog/components/simple-comp/RevenueLineChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/RevenueLineChart.js +7 -0
- package/dist/catalog/components/simple-comp/ServerGauge.d.ts +5 -0
- package/dist/catalog/components/simple-comp/ServerGauge.js +7 -0
- package/dist/catalog/components/simple-comp/SimpleCompExtracted.d.ts +6 -0
- package/dist/catalog/components/simple-comp/SimpleCompExtracted.js +423 -0
- package/dist/catalog/components/simple-comp/StorageUsageChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/StorageUsageChart.js +7 -0
- package/dist/catalog/components/simple-comp/TrafficBubble.d.ts +5 -0
- package/dist/catalog/components/simple-comp/TrafficBubble.js +7 -0
- package/dist/catalog/components/simple-comp/UptimeChart.d.ts +5 -0
- package/dist/catalog/components/simple-comp/UptimeChart.js +7 -0
- package/dist/catalog/components/simple-comp/lib/utils.d.ts +3 -0
- package/dist/catalog/components/simple-comp/lib/utils.js +7 -0
- package/dist/catalog/components/text/AnimatedText.d.ts +8 -0
- package/dist/catalog/components/text/AnimatedText.js +554 -0
- package/dist/catalog/components/toggles/AnimatedToggle.d.ts +8 -0
- package/dist/catalog/components/toggles/AnimatedToggle.js +243 -0
- package/dist/catalog/data/buttons.d.ts +14 -0
- package/dist/catalog/data/buttons.js +94 -0
- package/dist/catalog/data/ditherCharts.d.ts +12 -0
- package/dist/catalog/data/ditherCharts.js +11 -0
- package/dist/catalog/data/formElements.d.ts +9 -0
- package/dist/catalog/data/formElements.js +117 -0
- package/dist/catalog/data/installCommand.d.ts +3 -0
- package/dist/catalog/data/installCommand.js +10 -0
- package/dist/catalog/data/metrics.d.ts +10 -0
- package/dist/catalog/data/metrics.js +136 -0
- package/dist/catalog/data/supportedRegistryIds.d.ts +1 -0
- package/dist/catalog/data/supportedRegistryIds.js +7 -0
- package/dist/catalog/data/textAnimations.d.ts +10 -0
- package/dist/catalog/data/textAnimations.js +65 -0
- package/dist/catalog/data/toggles.d.ts +9 -0
- package/dist/catalog/data/toggles.js +96 -0
- package/dist/catalog/data/transitions.d.ts +11 -0
- package/dist/catalog/data/transitions.js +198 -0
- package/dist/catalog/hooks/useCanvasSetup.d.ts +25 -0
- package/dist/catalog/hooks/useCanvasSetup.js +7 -0
- package/dist/catalog/hooks/useIsMobile.d.ts +5 -0
- package/dist/catalog/hooks/useIsMobile.js +7 -0
- package/dist/catalog/hooks/useLoopFlg.d.ts +1 -0
- package/dist/catalog/hooks/useLoopFlg.js +7 -0
- package/dist/catalog/hooks/useWebHaptics.d.ts +4 -0
- package/dist/catalog/hooks/useWebHaptics.js +7 -0
- package/dist/catalog/utils/cn.d.ts +1 -0
- package/dist/catalog/utils/cn.js +7 -0
- package/dist/catalog-chunks/chunk-3QX6CASP.js +93 -0
- package/dist/catalog-chunks/chunk-3TYA5TCG.js +34 -0
- package/dist/catalog-chunks/chunk-4M7HZE4Z.js +107 -0
- package/dist/catalog-chunks/chunk-62CFYJEA.js +141 -0
- package/dist/catalog-chunks/chunk-7GU353UA.js +261 -0
- package/dist/catalog-chunks/chunk-7XF4PVBJ.js +85 -0
- package/dist/catalog-chunks/chunk-AJLUWL56.js +99 -0
- package/dist/catalog-chunks/chunk-B64DVBSK.js +105 -0
- package/dist/catalog-chunks/chunk-BSR45QIS.js +349 -0
- package/dist/catalog-chunks/chunk-E2GLS5WF.js +325 -0
- package/dist/catalog-chunks/chunk-EC4R54F3.js +35 -0
- package/dist/catalog-chunks/chunk-F47LIDB6.js +19 -0
- package/dist/catalog-chunks/chunk-FXF53HPE.js +476 -0
- package/dist/catalog-chunks/chunk-GDCQNKP7.js +45 -0
- package/dist/catalog-chunks/chunk-I4BVACNZ.js +349 -0
- package/dist/catalog-chunks/chunk-I5MYV6VF.js +248 -0
- package/dist/catalog-chunks/chunk-JSEX6PVP.js +84 -0
- package/dist/catalog-chunks/chunk-KN7YEZTH.js +294 -0
- package/dist/catalog-chunks/chunk-KRXJK3FG.js +19 -0
- package/dist/catalog-chunks/chunk-KTP5OAIN.js +17 -0
- package/dist/catalog-chunks/chunk-KYYXENHF.js +105 -0
- package/dist/catalog-chunks/chunk-M2O2SNWE.js +132 -0
- package/dist/catalog-chunks/chunk-NITEDAMY.js +325 -0
- package/dist/catalog-chunks/chunk-OTFAZXKB.js +8 -0
- package/dist/catalog-chunks/chunk-OVOLUMYF.js +452 -0
- package/dist/catalog-chunks/chunk-OWYADZUR.js +156 -0
- package/dist/catalog-chunks/chunk-PD47DK6W.js +100 -0
- package/dist/catalog-chunks/chunk-QITBAUBH.js +101 -0
- package/dist/catalog-chunks/chunk-QXWREUPI.js +56 -0
- package/dist/catalog-chunks/chunk-RKATUMDL.js +244 -0
- package/dist/catalog-chunks/chunk-S7UYABQK.js +99 -0
- package/dist/catalog-chunks/chunk-SIL53FHG.js +169 -0
- package/dist/catalog-chunks/chunk-SWPGAN45.js +28 -0
- package/dist/catalog-chunks/chunk-VCDBPAAS.js +85 -0
- package/dist/catalog-chunks/chunk-VMGI6CMO.js +15 -0
- package/dist/catalog-chunks/chunk-W7ZMAKCC.js +53 -0
- package/dist/catalog-chunks/chunk-XDDKOCZ7.js +89 -0
- package/dist/catalog-chunks/chunk-YGLQ5K3F.js +452 -0
- package/dist/catalog-chunks/chunk-YHU4BQDL.js +292 -0
- package/dist/catalog-chunks/chunk-ZCRXHCGS.js +108 -0
- package/dist/catalog-chunks/chunk-ZUQZVT7M.js +87 -0
- package/dist/catalog-chunks/chunk-ZXDZMNRZ.js +267 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +6237 -879
- package/dist/styles.css +1 -1
- package/dist/ui/ai/ai-approval-card.d.ts +28 -0
- package/dist/ui/ai/ai-code-block.d.ts +33 -0
- package/dist/ui/ai/ai-context-meter.d.ts +14 -0
- package/dist/ui/ai/ai-fine-tune-card.d.ts +43 -0
- package/dist/ui/ai/ai-prompt-bar.d.ts +25 -0
- package/dist/ui/ai/ai-sidebar-nav.d.ts +26 -0
- package/dist/ui/ai/ai-sources.d.ts +16 -0
- package/dist/ui/ai/ai-suggestions.d.ts +12 -0
- package/dist/ui/ai/ai-task-list.d.ts +15 -0
- package/dist/ui/ai/ai-tool-call.d.ts +13 -0
- package/dist/ui/ai/rudder-issue-board.d.ts +21 -0
- package/dist/ui/animated-sidebar.d.ts +9 -0
- package/dist/ui/hover/inset-button.d.ts +16 -0
- package/dist/ui/loading/analyzing-image.d.ts +2 -0
- package/dist/ui/loading/border-trail-loading.d.ts +9 -0
- package/dist/ui/loading/wandering-eyes.d.ts +10 -0
- package/dist/ui/patterns/animated-tags.d.ts +14 -0
- package/dist/ui/patterns/expanding-icon-tabs.d.ts +8 -0
- package/dist/ui/patterns/gooey-popover.d.ts +24 -0
- package/package.json +79 -14
- package/registry/1.json +19 -0
- package/registry/10.json +19 -0
- package/registry/11.json +19 -0
- package/registry/12.json +19 -0
- package/registry/13.json +19 -0
- package/registry/14.json +19 -0
- package/registry/15.json +19 -0
- package/registry/16.json +19 -0
- package/registry/17.json +19 -0
- package/registry/18.json +19 -0
- package/registry/19.json +19 -0
- package/registry/2.json +19 -0
- package/registry/20.json +19 -0
- package/registry/21.json +19 -0
- package/registry/22.json +19 -0
- package/registry/23.json +19 -0
- package/registry/24.json +19 -0
- package/registry/25.json +19 -0
- package/registry/26.json +19 -0
- package/registry/27.json +19 -0
- package/registry/28.json +19 -0
- package/registry/29.json +19 -0
- package/registry/3.json +19 -0
- package/registry/30.json +19 -0
- package/registry/31.json +19 -0
- package/registry/32.json +19 -0
- package/registry/33.json +19 -0
- package/registry/34.json +19 -0
- package/registry/35.json +19 -0
- package/registry/36.json +16 -0
- package/registry/37.json +16 -0
- package/registry/4.json +19 -0
- package/registry/5.json +19 -0
- package/registry/6.json +19 -0
- package/registry/7.json +19 -0
- package/registry/8.json +19 -0
- package/registry/9.json +19 -0
- package/registry/LICENSE.third-party +542 -0
- package/registry/ab-segmented-tabs.json +18 -0
- package/registry/accordion-blind.json +15 -0
- package/registry/accordion-loader.json +9 -0
- package/registry/ai-approval-card.json +17 -0
- package/registry/ai-code-block.json +19 -0
- package/registry/ai-context-meter.json +19 -0
- package/registry/ai-fine-tune-card.json +19 -0
- package/registry/ai-prompt-bar.json +17 -0
- package/registry/ai-sidebar-nav.json +17 -0
- package/registry/ai-sources.json +20 -0
- package/registry/ai-suggestions.json +19 -0
- package/registry/ai-task-list.json +20 -0
- package/registry/ai-tool-call.json +20 -0
- package/registry/analyzing-image.json +17 -0
- package/registry/animated-sidebar.json +19 -0
- package/registry/animated-tags.json +19 -0
- package/registry/app-icon-load.json +9 -0
- package/registry/apple-breathe.json +9 -0
- package/registry/apple-equalizer.json +9 -0
- package/registry/apple-icon-morph.json +9 -0
- package/registry/apple-pulse-dots.json +9 -0
- package/registry/apple-scale-pulse.json +9 -0
- package/registry/apple-sound-wave.json +9 -0
- package/registry/apple-text-reveal.json +9 -0
- package/registry/apple-unlock.json +9 -0
- package/registry/arc-tracer.json +9 -0
- package/registry/bar-cascade.json +9 -0
- package/registry/bar-sweep.json +9 -0
- package/registry/blur-text.json +9 -0
- package/registry/blur-up-char.json +19 -0
- package/registry/blur-up-word.json +19 -0
- package/registry/bobbing-dots.json +9 -0
- package/registry/bookmark-corner-peel.json +15 -0
- package/registry/bookmark-save-pill.json +18 -0
- package/registry/bookmark-toggle.json +19 -0
- package/registry/border-trail-loading.json +17 -0
- package/registry/bounce-dots.json +9 -0
- package/registry/bounce-in-char.json +19 -0
- package/registry/bouncing-bars.json +9 -0
- package/registry/bouncing-dots.json +9 -0
- package/registry/bouncing-lines.json +9 -0
- package/registry/bouncing-square.json +9 -0
- package/registry/breathe-ring.json +9 -0
- package/registry/breathing-glow.json +9 -0
- package/registry/breathing-square.json +9 -0
- package/registry/btn-1.json +19 -0
- package/registry/btn-10.json +19 -0
- package/registry/btn-11.json +19 -0
- package/registry/btn-12.json +19 -0
- package/registry/btn-13.json +19 -0
- package/registry/btn-14.json +19 -0
- package/registry/btn-15.json +19 -0
- package/registry/btn-16.json +19 -0
- package/registry/btn-17.json +19 -0
- package/registry/btn-18.json +19 -0
- package/registry/btn-19.json +19 -0
- package/registry/btn-2.json +19 -0
- package/registry/btn-20.json +19 -0
- package/registry/btn-21.json +19 -0
- package/registry/btn-22.json +19 -0
- package/registry/btn-23.json +19 -0
- package/registry/btn-24.json +19 -0
- package/registry/btn-25.json +19 -0
- package/registry/btn-26.json +19 -0
- package/registry/btn-27.json +19 -0
- package/registry/btn-28.json +19 -0
- package/registry/btn-29.json +19 -0
- package/registry/btn-3.json +19 -0
- package/registry/btn-30.json +19 -0
- package/registry/btn-31.json +19 -0
- package/registry/btn-32.json +19 -0
- package/registry/btn-33.json +19 -0
- package/registry/btn-34.json +19 -0
- package/registry/btn-35.json +19 -0
- package/registry/btn-36.json +16 -0
- package/registry/btn-37.json +16 -0
- package/registry/btn-4.json +19 -0
- package/registry/btn-5.json +19 -0
- package/registry/btn-6.json +19 -0
- package/registry/btn-7.json +19 -0
- package/registry/btn-8.json +19 -0
- package/registry/btn-9.json +19 -0
- package/registry/button-slide-arrow.json +19 -0
- package/registry/cacheable-bandwidth-cost.json +19 -0
- package/registry/card-arc-5.json +18 -0
- package/registry/card-arc-7.json +18 -0
- package/registry/card-carousel-mono.json +19 -0
- package/registry/card-carousel.json +19 -0
- package/registry/card-cascade-stagger.json +18 -0
- package/registry/card-corner-fan.json +18 -0
- package/registry/card-cover-flow-mono.json +19 -0
- package/registry/card-cover-flow.json +19 -0
- package/registry/card-deck-cascade.json +15 -0
- package/registry/card-glance-preview.json +18 -0
- package/registry/card-hover.json +9 -0
- package/registry/card-linear-spread.json +18 -0
- package/registry/card-long-arc-5.json +18 -0
- package/registry/card-scatter-spread.json +18 -0
- package/registry/card-stack-peel.json +15 -0
- package/registry/card-stamp-arc.json +18 -0
- package/registry/card-time-machine-mono.json +18 -0
- package/registry/card-time-machine.json +18 -0
- package/registry/card-wheel-fan.json +18 -0
- package/registry/category-select.json +18 -0
- package/registry/character-stagger.json +9 -0
- package/registry/checkbox-draw.json +19 -0
- package/registry/checkmark-draw.json +19 -0
- package/registry/circle-toggle.json +19 -0
- package/registry/circuit-trace-draw.json +15 -0
- package/registry/circular-bars.json +9 -0
- package/registry/circular-create-button.json +16 -0
- package/registry/classic-spinner.json +9 -0
- package/registry/classic-toggle.json +9 -0
- package/registry/clock-spinner.json +9 -0
- package/registry/comet-spinner.json +9 -0
- package/registry/compass-needle-deflect.json +15 -0
- package/registry/concentric-pulse.json +9 -0
- package/registry/concentric-ring.json +9 -0
- package/registry/concentric-squares.json +9 -0
- package/registry/context-menu.json +18 -0
- package/registry/conveyor-loop.json +9 -0
- package/registry/credit-score-barcode-meter.json +19 -0
- package/registry/cross-spinner.json +9 -0
- package/registry/cube-flip-spring.json +9 -0
- package/registry/cursor-trail.json +9 -0
- package/registry/dash-ring.json +9 -0
- package/registry/dashed-spiral.json +9 -0
- package/registry/date-position-selector.json +18 -0
- package/registry/dia-text-reveal.json +19 -0
- package/registry/diamond-grid.json +9 -0
- package/registry/diamond-rotate-spring.json +9 -0
- package/registry/dislike-toggle.json +19 -0
- package/registry/dither-book.json +19 -0
- package/registry/domino-cascade.json +15 -0
- package/registry/dot-spinner.json +9 -0
- package/registry/dots-ring.json +9 -0
- package/registry/double-bounce-toggle.json +19 -0
- package/registry/double-ring.json +9 -0
- package/registry/download-icons.json +18 -0
- package/registry/drop-dot.json +9 -0
- package/registry/drop-in-char.json +19 -0
- package/registry/droplet-squish.json +15 -0
- package/registry/dual-arc.json +9 -0
- package/registry/dual-magnet-dipole.json +15 -0
- package/registry/dynamic-island.json +9 -0
- package/registry/elastic-bars.json +9 -0
- package/registry/elastic-square.json +9 -0
- package/registry/elastic-tag-snap.json +15 -0
- package/registry/error-shake.json +19 -0
- package/registry/expanding-cross.json +9 -0
- package/registry/expanding-icon-tabs.json +17 -0
- package/registry/face-id-scan.json +9 -0
- package/registry/fade-arc.json +9 -0
- package/registry/fade-dots.json +9 -0
- package/registry/fade-down.json +9 -0
- package/registry/fade-in-char.json +19 -0
- package/registry/fade-in-text.json +19 -0
- package/registry/fade-in-word.json +19 -0
- package/registry/fade-in.json +9 -0
- package/registry/fade-up.json +9 -0
- package/registry/file-upload-dropzone.json +19 -0
- package/registry/filter-tag-pill.json +18 -0
- package/registry/flip-square.json +9 -0
- package/registry/flip-x-char.json +19 -0
- package/registry/flip-y-char.json +19 -0
- package/registry/float-char.json +19 -0
- package/registry/float-word.json +19 -0
- package/registry/floating-diamonds.json +9 -0
- package/registry/floating-label-input.json +19 -0
- package/registry/fluid-bars.json +9 -0
- package/registry/fluid-diamond.json +9 -0
- package/registry/fluid-dot-orbit.json +9 -0
- package/registry/fluid-skeleton.json +9 -0
- package/registry/focus-blur.json +18 -0
- package/registry/form-submit-button.json +19 -0
- package/registry/french-doors-3d.json +18 -0
- package/registry/gear-tooth-step.json +15 -0
- package/registry/gears.json +9 -0
- package/registry/gelatin-wobble.json +15 -0
- package/registry/geometric-iris-shutter.json +15 -0
- package/registry/glassmorphic-card.json +9 -0
- package/registry/glow-button.json +9 -0
- package/registry/glow-text.json +19 -0
- package/registry/gooey-popover.json +18 -0
- package/registry/gradient-arc.json +9 -0
- package/registry/gradient-shimmer.json +18 -0
- package/registry/grid-dots.json +9 -0
- package/registry/haptic-ring.json +9 -0
- package/registry/heartbeat.json +9 -0
- package/registry/hex-lattice-draw.json +15 -0
- package/registry/hexagon-spinner.json +9 -0
- package/registry/hourglass.json +9 -0
- package/registry/hover-lift-char.json +19 -0
- package/registry/hover-lift-word.json +19 -0
- package/registry/hover-link-card.json +18 -0
- package/registry/hover-scale-char.json +19 -0
- package/registry/hover-scale-word.json +19 -0
- package/registry/inertia-skid-stop.json +15 -0
- package/registry/infinity-path.json +9 -0
- package/registry/input-focus-glow.json +19 -0
- package/registry/inset-action-button.json +16 -0
- package/registry/inset-button.json +17 -0
- package/registry/intersecting-rings.json +9 -0
- package/registry/ios-spinner.json +9 -0
- package/registry/kinetic-metronome-tick.json +15 -0
- package/registry/kinetic-tension-capsule.json +15 -0
- package/registry/light-dark-morph.json +18 -0
- package/registry/like-toggle.json +19 -0
- package/registry/line-spinner.json +9 -0
- package/registry/liquid-dots.json +9 -0
- package/registry/mac-terminal.json +9 -0
- package/registry/magnetic-button.json +9 -0
- package/registry/magnetic-disks.json +15 -0
- package/registry/magnetic-dots.json +9 -0
- package/registry/magnetic-slide-btn.json +18 -0
- package/registry/manifest.json +11258 -0
- package/registry/matrix-grid-loader.json +15 -0
- package/registry/minimal-triangle.json +9 -0
- package/registry/modular-tile-snap.json +15 -0
- package/registry/mono-activity-blue.json +18 -0
- package/registry/mono-activity-green.json +18 -0
- package/registry/mono-activity-purple.json +18 -0
- package/registry/mono-heatmap.json +19 -0
- package/registry/mono-rounded-area.json +18 -0
- package/registry/mono-rounded-bar.json +18 -0
- package/registry/mono-rounded-bubble.json +18 -0
- package/registry/mono-rounded-bullet.json +16 -0
- package/registry/mono-rounded-candlestick.json +16 -0
- package/registry/mono-rounded-composed.json +18 -0
- package/registry/mono-rounded-donut.json +18 -0
- package/registry/mono-rounded-funnel.json +18 -0
- package/registry/mono-rounded-gauge-arc.json +18 -0
- package/registry/mono-rounded-heatmap.json +16 -0
- package/registry/mono-rounded-kpi.json +18 -0
- package/registry/mono-rounded-line.json +18 -0
- package/registry/mono-rounded-meter.json +18 -0
- package/registry/mono-rounded-polar.json +18 -0
- package/registry/mono-rounded-pyramid.json +16 -0
- package/registry/mono-rounded-radar.json +18 -0
- package/registry/mono-rounded-radial-gauge.json +18 -0
- package/registry/mono-rounded-radial-group.json +18 -0
- package/registry/mono-rounded-range.json +18 -0
- package/registry/mono-rounded-sankey.json +16 -0
- package/registry/mono-rounded-scatter.json +18 -0
- package/registry/mono-rounded-sparkline.json +18 -0
- package/registry/mono-rounded-stacked-bar.json +18 -0
- package/registry/mono-rounded-step.json +18 -0
- package/registry/mono-rounded-stream.json +18 -0
- package/registry/mono-rounded-treemap.json +16 -0
- package/registry/mono-rounded-waterfall.json +18 -0
- package/registry/mono-stock.json +19 -0
- package/registry/morph-action-pill.json +18 -0
- package/registry/morph-dot-ring.json +9 -0
- package/registry/morph-loader.json +9 -0
- package/registry/morph-toggle.json +19 -0
- package/registry/morphing-bars.json +9 -0
- package/registry/morphing-infinity.json +9 -0
- package/registry/morphing-ring.json +9 -0
- package/registry/morphing-shape.json +9 -0
- package/registry/mouse-follow.json +9 -0
- package/registry/multi-select-chips.json +19 -0
- package/registry/multi-tab-bar.json +18 -0
- package/registry/neon-sign-draw.json +15 -0
- package/registry/nested-orbital-gimbal.json +15 -0
- package/registry/network-telemetry-matrix.json +19 -0
- package/registry/newtons-cradle.json +9 -0
- package/registry/noise-decibel-level.json +19 -0
- package/registry/obsidian-liquid-wave.json +16 -0
- package/registry/offset-rings.json +9 -0
- package/registry/orbiting-circles.json +9 -0
- package/registry/orbiting-dot.json +9 -0
- package/registry/origami-envelope-unfold.json +15 -0
- package/registry/origami-shape.json +9 -0
- package/registry/otp-input.json +19 -0
- package/registry/overview-bar-scrubber-card.json +19 -0
- package/registry/page-transition.json +11 -0
- package/registry/page-turn-curl.json +15 -0
- package/registry/password-toggle.json +19 -0
- package/registry/pendulum-bubble-level.json +15 -0
- package/registry/pendulum.json +9 -0
- package/registry/perspective-flip-stage.json +18 -0
- package/registry/perspective-flip.json +18 -0
- package/registry/perspective-layout-switcher.json +18 -0
- package/registry/physics-dock.json +17 -0
- package/registry/pill-tabs.json +19 -0
- package/registry/plus-minus-toggle.json +18 -0
- package/registry/presets.json +9 -0
- package/registry/prism-block-stack.json +15 -0
- package/registry/progress-indicator-piano.json +19 -0
- package/registry/progress-indicator.json +9 -0
- package/registry/progress-stepper.json +18 -0
- package/registry/pulsating-dots.json +9 -0
- package/registry/pulse-char.json +19 -0
- package/registry/pulse-dot.json +9 -0
- package/registry/pulse-dots.json +9 -0
- package/registry/pulse-square.json +9 -0
- package/registry/pulse-word.json +19 -0
- package/registry/pulse.json +9 -0
- package/registry/pumping-heart.json +9 -0
- package/registry/pyramid-block-build.json +15 -0
- package/registry/radar-sweep.json +9 -0
- package/registry/radial-iris-mask.json +18 -0
- package/registry/radial-spinner.json +15 -0
- package/registry/radio-scale.json +19 -0
- package/registry/range-slider.json +19 -0
- package/registry/receipt-tape-print.json +15 -0
- package/registry/rectangle-toggle.json +19 -0
- package/registry/repost-toggle.json +19 -0
- package/registry/reveal-text.json +19 -0
- package/registry/ribbon-banner-slide.json +15 -0
- package/registry/ring-sweep.json +9 -0
- package/registry/ripple-effect.json +9 -0
- package/registry/rise-up-word.json +19 -0
- package/registry/roller-blind-drop.json +15 -0
- package/registry/rolling-tumble.json +15 -0
- package/registry/rotate-in-char.json +19 -0
- package/registry/rotating-cross.json +9 -0
- package/registry/rotating-louvers.json +15 -0
- package/registry/rotating-triangle.json +9 -0
- package/registry/rudder-issue-board.json +24 -0
- package/registry/sales-analytics-dual-bars.json +19 -0
- package/registry/sales-overview-radial-dashboard.json +19 -0
- package/registry/sales-target-segmented-arc.json +19 -0
- package/registry/scale-in-char.json +19 -0
- package/registry/scale-in-text.json +19 -0
- package/registry/scale-in-word.json +19 -0
- package/registry/scale-in.json +9 -0
- package/registry/scramble-text.json +18 -0
- package/registry/scroll-canvas-unroll.json +15 -0
- package/registry/scroll-reveal.json +9 -0
- package/registry/search-expand.json +19 -0
- package/registry/segmented-arc-meter.json +18 -0
- package/registry/segmented-link-stretch.json +15 -0
- package/registry/segmented-step-bar.json +18 -0
- package/registry/segmented-stepper-dots.json +18 -0
- package/registry/select-dropdown.json +19 -0
- package/registry/server-performance-step-bars.json +19 -0
- package/registry/shape-shift-grid.json +9 -0
- package/registry/shimmer-line.json +9 -0
- package/registry/shimmer-text.json +19 -0
- package/registry/shutter-slide.json +15 -0
- package/registry/shutter-step-slices.json +15 -0
- package/registry/siri-wave.json +9 -0
- package/registry/skeleton-loader.json +9 -0
- package/registry/skeleton.json +9 -0
- package/registry/skew-x-char.json +19 -0
- package/registry/slide-down-char.json +19 -0
- package/registry/slide-down-word.json +19 -0
- package/registry/slide-left-char.json +19 -0
- package/registry/slide-left.json +9 -0
- package/registry/slide-right-char.json +19 -0
- package/registry/slide-right.json +9 -0
- package/registry/slide-up-char.json +19 -0
- package/registry/slide-up-text.json +19 -0
- package/registry/slide-up-word.json +19 -0
- package/registry/sliding-bars.json +9 -0
- package/registry/slinky-coil.json +15 -0
- package/registry/smart-card-dispenser.json +15 -0
- package/registry/smooth-dot-shift.json +9 -0
- package/registry/smooth-ring.json +9 -0
- package/registry/smooth-rounded-square.json +9 -0
- package/registry/solid-switch.json +19 -0
- package/registry/spatial-door-portal.json +18 -0
- package/registry/spinning-squares.json +9 -0
- package/registry/spiral-spinner.json +9 -0
- package/registry/split-gate-reveal.json +15 -0
- package/registry/spotlight.json +9 -0
- package/registry/spring-bars.json +9 -0
- package/registry/spring-dot-matrix.json +9 -0
- package/registry/spring-hexagon.json +9 -0
- package/registry/spring-ring-expand.json +9 -0
- package/registry/spring-text-pop.json +9 -0
- package/registry/spring-text.json +19 -0
- package/registry/square-accordion.json +9 -0
- package/registry/square-grid.json +9 -0
- package/registry/square-snake.json +9 -0
- package/registry/square-spinner.json +9 -0
- package/registry/squash-sphere.json +15 -0
- package/registry/stacked-bar-pulse.json +9 -0
- package/registry/stagger-text.json +19 -0
- package/registry/staggered-glass-curtain.json +18 -0
- package/registry/sticky-note-peel.json +15 -0
- package/registry/sticky-reveal.json +9 -0
- package/registry/stretch-x-char.json +19 -0
- package/registry/stretch-y-char.json +19 -0
- package/registry/stroke-waveform.json +15 -0
- package/registry/submenu-flyout.json +18 -0
- package/registry/success-check.json +19 -0
- package/registry/sudden-brake.json +15 -0
- package/registry/swapping-dots.json +9 -0
- package/registry/swing-word.json +19 -0
- package/registry/swirling-spinner.json +9 -0
- package/registry/symmetric-wave.json +9 -0
- package/registry/terminal-loader.json +9 -0
- package/registry/text-blink.json +9 -0
- package/registry/text-dots.json +9 -0
- package/registry/text-morph.json +9 -0
- package/registry/text-reveal.json +9 -0
- package/registry/text-shimmer-wave.json +9 -0
- package/registry/text-shimmer.json +9 -0
- package/registry/textarea-auto-grow.json +19 -0
- package/registry/theme-toggle.json +19 -0
- package/registry/tilt-card.json +9 -0
- package/registry/timer-preparation-segmented.json +19 -0
- package/registry/tracking-in-text.json +19 -0
- package/registry/tracking-out-text.json +19 -0
- package/registry/trailing-dots.json +9 -0
- package/registry/triple-dot-spinner.json +9 -0
- package/registry/twin-orbit.json +9 -0
- package/registry/typewriter-text.json +18 -0
- package/registry/typing-indicator.json +9 -0
- package/registry/typing.json +9 -0
- package/registry/use-mouse-position.json +10 -0
- package/registry/use-reduced-motion.json +9 -0
- package/registry/use-scroll-progress.json +9 -0
- package/registry/use-stagger.json +9 -0
- package/registry/use-web-haptics.json +10 -0
- package/registry/users-growth-pill-progress.json +19 -0
- package/registry/utils.json +10 -0
- package/registry/vertical-wheel-counter.json +18 -0
- package/registry/views-hourly-wave-chart.json +19 -0
- package/registry/wandering-cube.json +9 -0
- package/registry/wandering-eyes.json +15 -0
- package/registry/watch-spinner.json +9 -0
- package/registry/wave-dots.json +9 -0
- package/registry/wave-physics-loader.json +9 -0
- package/registry/wave-reveal.json +18 -0
- package/registry/waveform-loader.json +9 -0
- package/registry/word-reveal.json +9 -0
- package/registry/zig-zag-pulse.json +9 -0
- package/registry/zoom-in-text.json +19 -0
- package/registry/zoom-in.json +9 -0
- package/registry/zoom-out-text.json +19 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ai-tool-call",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
5
|
+
"file": "ai-tool-call.tsx",
|
|
6
|
+
"sourcePath": "ui/ai/ai-tool-call.tsx",
|
|
7
|
+
"registryFile": "ai-tool-call.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AIToolCall",
|
|
10
|
+
"AIToolCallProps",
|
|
11
|
+
"AIToolCallStatus"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": [
|
|
14
|
+
"framer-motion",
|
|
15
|
+
"lucide-react"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"previewMode": "client",
|
|
19
|
+
"content": "\"use client\";\n\"use client\";\n\n// Adapted from SmoothUI's ai-tool-call (MIT). See ../patterns/smoothui.LICENSE.\nimport { ChevronRight } from \"lucide-react\";\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport { type ReactNode, useState } from \"react\";\n\nconst SPRING_DEFAULT = { bounce: 0.1, duration: 0.25, type: \"spring\" as const };\nconst EASE_OUT = [0.23, 1, 0.32, 1] as const;\nconst BADGE_VIEWBOX = 24;\nconst BADGE_CENTER = BADGE_VIEWBOX / 2;\nconst RING_RADIUS = 8;\nconst CHECK_PATH = \"M 8.5 12.2 L 11 14.8 L 15.8 9.6\";\nconst CROSS_PATHS = [\"M 9 9 L 15 15\", \"M 15 9 L 9 15\"] as const;\nconst SPIN_SECONDS = 0.9;\nconst PENDING_PULSE_SECONDS = 1.6;\n\nexport type AIToolCallStatus = \"pending\" | \"running\" | \"success\" | \"error\";\nexport type AIToolCallProps = {\n args?: ReactNode;\n className?: string;\n defaultOpen?: boolean;\n name: string;\n result?: ReactNode;\n status?: AIToolCallStatus;\n summary?: string;\n};\n\nconst STATUS_LABEL: Record<AIToolCallStatus, string> = {\n error: \"Failed\",\n pending: \"Queued\",\n running: \"Running\",\n success: \"Done\",\n};\n\nfunction AIToolCallBadge({ status, shouldReduceMotion }: { shouldReduceMotion: boolean; status: AIToolCallStatus }) {\n const isRunning = status === \"running\";\n const isPending = status === \"pending\";\n const ringColor = status === \"success\" ? \"oklch(72% 0.17 150)\" : status === \"error\" ? \"oklch(63% 0.21 25)\" : \"currentColor\";\n\n return (\n <span className=\"relative flex size-5 shrink-0 items-center justify-center text-muted-foreground\">\n <svg aria-hidden=\"true\" className=\"size-5 overflow-visible\" viewBox={`0 0 ${BADGE_VIEWBOX} ${BADGE_VIEWBOX}`}>\n <motion.g\n animate={shouldReduceMotion || !isRunning ? undefined : { rotate: 360 }}\n style={{ transformBox: \"view-box\", transformOrigin: \"center\" }}\n transition={{ duration: SPIN_SECONDS, ease: \"linear\", repeat: Number.POSITIVE_INFINITY }}\n >\n <motion.circle\n animate={{\n stroke: ringColor,\n strokeDasharray: isRunning ? \"0.68 0.32\" : \"1 0\",\n strokeOpacity: isPending && !shouldReduceMotion ? [0.35, 1, 0.35] : 1,\n }}\n cx={BADGE_CENTER}\n cy={BADGE_CENTER}\n fill=\"none\"\n pathLength={1}\n r={RING_RADIUS}\n strokeLinecap=\"round\"\n strokeWidth={2}\n transition={{\n stroke: shouldReduceMotion ? { duration: 0 } : { duration: 0.25, ease: EASE_OUT },\n strokeDasharray: shouldReduceMotion ? { duration: 0 } : { duration: 0.25, ease: EASE_OUT },\n strokeOpacity: shouldReduceMotion ? { duration: 0 } : { duration: PENDING_PULSE_SECONDS, repeat: Number.POSITIVE_INFINITY },\n }}\n />\n </motion.g>\n <AnimatePresence initial={false}>\n {status === \"success\" ? (\n <motion.path\n animate={{ opacity: 1, pathLength: 1 }}\n d={CHECK_PATH}\n exit={{ opacity: 0, transition: { duration: 0.1 } }}\n fill=\"none\"\n initial={shouldReduceMotion ? { opacity: 1, pathLength: 1 } : { opacity: 1, pathLength: 0 }}\n key=\"check\"\n stroke={ringColor}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2.2}\n transition={shouldReduceMotion ? { duration: 0 } : { duration: 0.22, ease: EASE_OUT }}\n />\n ) : null}\n {status === \"error\" ? CROSS_PATHS.map((path, index) => (\n <motion.path\n animate={{ opacity: 1, pathLength: 1 }}\n d={path}\n exit={{ opacity: 0, transition: { duration: 0.1 } }}\n fill=\"none\"\n initial={shouldReduceMotion ? { opacity: 1, pathLength: 1 } : { opacity: 1, pathLength: 0 }}\n key={path}\n stroke={ringColor}\n strokeLinecap=\"round\"\n strokeWidth={2.2}\n transition={shouldReduceMotion ? { duration: 0 } : { delay: index * 0.06, duration: 0.16, ease: EASE_OUT }}\n />\n )) : null}\n </AnimatePresence>\n </svg>\n </span>\n );\n}\n\nexport function AIToolCall({ args, className = \"\", defaultOpen = false, name, result, status = \"pending\", summary }: AIToolCallProps) {\n const shouldReduceMotion = useReducedMotion();\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const hasDetail = Boolean(args || result);\n\n return (\n <div className={`w-full overflow-hidden rounded-lg border border-border bg-background ${className}`}>\n <button\n aria-expanded={hasDetail ? isOpen : undefined}\n className=\"flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-left disabled:cursor-default focus-visible:outline-2 focus-visible:outline-offset-[-2px] hover:bg-muted/40\"\n disabled={!hasDetail}\n onClick={() => setIsOpen((current) => !current)}\n type=\"button\"\n >\n <AIToolCallBadge shouldReduceMotion={Boolean(shouldReduceMotion)} status={status} />\n <span className=\"min-w-0 flex-1\"><span className=\"block truncate font-medium font-mono text-foreground text-xs\">{name}</span></span>\n {summary ? <span className=\"max-w-[40%] truncate text-muted-foreground text-xs\">{summary}</span> : null}\n <span className=\"sr-only\">{STATUS_LABEL[status]}</span>\n {hasDetail ? (\n <motion.span animate={{ rotate: isOpen ? 90 : 0 }} className=\"flex size-4 shrink-0 items-center justify-center text-muted-foreground\" transition={shouldReduceMotion ? { duration: 0 } : SPRING_DEFAULT}>\n <ChevronRight aria-hidden=\"true\" size={14} />\n </motion.span>\n ) : null}\n </button>\n\n <AnimatePresence initial={false}>\n {isOpen && hasDetail ? (\n <motion.div\n animate={{ height: \"auto\", opacity: 1 }}\n className=\"overflow-hidden\"\n exit={shouldReduceMotion ? { opacity: 0, transition: { duration: 0 } } : { height: 0, opacity: 0 }}\n initial={shouldReduceMotion ? { height: \"auto\", opacity: 1 } : { height: 0, opacity: 0 }}\n transition={shouldReduceMotion ? { duration: 0 } : { height: SPRING_DEFAULT, opacity: { duration: 0.18, ease: EASE_OUT } }}\n >\n <div className=\"space-y-2 border-border border-t px-3 py-2.5 text-xs\">\n {args ? <div><p className=\"mb-1 text-[10px] text-muted-foreground uppercase tracking-wide\">Arguments</p><div className=\"overflow-x-auto font-mono text-foreground\">{args}</div></div> : null}\n {result ? <div><p className=\"mb-1 text-[10px] text-muted-foreground uppercase tracking-wide\">Result</p><div className=\"overflow-x-auto text-foreground\">{result}</div></div> : null}\n </div>\n </motion.div>\n ) : null}\n </AnimatePresence>\n </div>\n );\n}\n\nexport default AIToolCall;\n"
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "analyzing-image",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
5
|
+
"file": "analyzing-image.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/analyzing-image.tsx",
|
|
7
|
+
"registryFile": "analyzing-image.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AnalyzingImage"
|
|
10
|
+
],
|
|
11
|
+
"dependencies": [
|
|
12
|
+
"framer-motion"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
16
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\n// Adapted from Loading UI's analyzing-image component.\n// Source: https://github.com/turbostarter/loading-ui/blob/main/registry/components/loading-ui/analyzing-image.tsx\n// License: MIT; see ./loading-ui.LICENSE. Original animation credit: dmytro.\n\nconst transition = {\n duration: 2.5,\n ease: [0.175, 0.885, 0.32, 1] as [number, number, number, number],\n times: [0, 0.6, 0.6, 1],\n repeat: Infinity,\n repeatType: 'mirror' as const,\n repeatDelay: 0.2,\n};\n\nexport function AnalyzingImage({\n className = '',\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n role=\"status\"\n aria-label=\"Analyzing image\"\n className={`mova-analyzing-image relative isolate shrink-0 ${className}`}\n {...props}\n >\n <motion.div\n initial={{ clipPath: 'inset(0% 0% 0% 0%)' }}\n animate={{\n clipPath: [\n 'inset(0% 0% 0% 0%)',\n 'inset(0% 105% 0% 0%)',\n 'inset(0% 105% 0% 0%)',\n 'inset(0% 0% 0% 0%)',\n ],\n }}\n transition={transition}\n className=\"absolute inset-0 z-10\"\n style={{\n background: 'var(--loading-ui-analyzing-image-background, var(--mova-loader-surface, #000))',\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"w-full h-full\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4.27209 20.7279L10.8686 14.1314C11.2646 13.7354 11.4627 13.5373 11.691 13.4632C11.8918 13.3979 12.1082 13.3979 12.309 13.4632C12.5373 13.5373 12.7354 13.7354 13.1314 14.1314L19.6839 20.6839M14 15L16.8686 12.1314C17.2646 11.7354 17.4627 11.5373 17.691 11.4632C17.8918 11.3979 18.1082 11.3979 18.309 11.4632C18.5373 11.5373 18.7354 11.7354 19.1314 12.1314L22 15M10 9C10 10.1046 9.10457 11 8 11C6.89543 11 6 10.1046 6 9C6 7.89543 6.89543 7 8 7C9.10457 7 10 7.89543 10 9ZM6.8 21H17.2C18.8802 21 19.7202 21 20.362 20.673C20.9265 20.3854 21.3854 19.9265 21.673 19.362C22 18.7202 22 17.8802 22 16.2V7.8C22 6.11984 22 5.27976 21.673 4.63803C21.3854 4.07354 20.9265 3.6146 20.362 3.32698C19.7202 3 18.8802 3 17.2 3H6.8C5.11984 3 4.27976 3 3.63803 3.32698C3.07354 3.6146 2.6146 4.07354 2.32698 4.63803C2 5.27976 2 6.11984 2 7.8V16.2C2 17.8802 2 18.7202 2.32698 19.362C2.6146 19.9265 3.07354 20.3854 3.63803 20.673C4.27976 21 5.11984 21 6.8 21Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </motion.div>\n <motion.div\n initial={{ transform: 'translateX(1400%)' }}\n animate={{\n transform: [\n 'translateX(1400%)',\n 'translateX(-80%)',\n 'translateX(-80%)',\n 'translateX(1400%)',\n ],\n }}\n transition={transition}\n className=\"absolute z-10 h-full w-[7%] rounded-full bg-current\"\n />\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"absolute inset-0 w-full h-full\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.8 21H17.2C18.8802 21 19.7202 21 20.362 20.673C20.9265 20.3854 21.3854 19.9265 21.673 19.362C22 18.7202 22 17.8802 22 16.2V7.8C22 6.11984 22 5.27976 21.673 4.63803C21.3854 4.07354 20.9265 3.6146 20.362 3.32698C19.7202 3 18.8802 3 17.2 3H6.8C5.11984 3 4.27976 3 3.63803 3.32698C3.07354 3.6146 2.6146 4.07354 2.32698 4.63803C2 5.27976 2 6.11984 2 7.8V16.2C2 17.8802 2 18.7202 2.32698 19.362C2.6146 19.9265 3.07354 20.3854 3.63803 20.673C4.27976 21 5.11984 21 6.8 21Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <rect x=\"6\" y=\"19\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"18\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"19\" width=\"3\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"18\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"14\" y=\"19\" width=\"3\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"15\" y=\"18\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"5\" y=\"18\" width=\"2\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"5\" y=\"17\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"10\" y=\"19\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"17\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"11\" y=\"19\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"10\" y=\"18\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"17\" y=\"19\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"15\" y=\"4\" width=\"2\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"3\" y=\"9\" width=\"1\" height=\"3\" fill=\"currentColor\" />\n <rect x=\"4\" y=\"10\" width=\"1\" height=\"2\" fill=\"currentColor\" />\n <rect x=\"6\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"15\" y=\"5\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"20\" y=\"8\" width=\"1\" height=\"3\" fill=\"currentColor\" />\n <rect x=\"19\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"13\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"11\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"16\" y=\"12\" width=\"1\" height=\"2\" fill=\"currentColor\" />\n <rect x=\"13\" y=\"14\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"11\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"10\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"10\" y=\"15\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"10\" y=\"13\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"15\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"13\" y=\"10\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"14\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"5\" y=\"4\" width=\"3\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"6\" y=\"5\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"14\" width=\"1\" height=\"2\" fill=\"currentColor\" />\n <rect x=\"6\" y=\"14\" width=\"3\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"16\" y=\"8\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"8\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"20\" y=\"16\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"12\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"8\" y=\"8\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"14\" y=\"12\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"17\" y=\"16\" width=\"2\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"14\" y=\"17\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"11\" y=\"5\" width=\"3\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"4\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"7\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"7\" y=\"11\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"15\" y=\"15\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"11\" y=\"11\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"13\" y=\"9\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"12\" y=\"15\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"12\" width=\"2\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"19\" y=\"13\" width=\"2\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"6\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"20\" y=\"4\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"19\" y=\"4\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n <rect x=\"3\" y=\"15\" width=\"1\" height=\"2\" fill=\"currentColor\" />\n <rect x=\"3\" y=\"19\" width=\"1\" height=\"1\" fill=\"currentColor\" />\n </svg>\n <span className=\"sr-only\">Analyzing image</span>\n </div>\n );\n}\n"
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "animated-sidebar",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
5
|
+
"file": "animated-sidebar.tsx",
|
|
6
|
+
"sourcePath": "ui/animated-sidebar.tsx",
|
|
7
|
+
"registryFile": "animated-sidebar.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AnimatedSidebar",
|
|
10
|
+
"AnimatedSidebarItemId",
|
|
11
|
+
"AnimatedSidebarProps"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": [
|
|
14
|
+
"lucide-react"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"previewMode": "client",
|
|
18
|
+
"content": "\"use client\";\n\"use client\";\n\n// SPDX-License-Identifier: MIT\n// Original Mova source.\n\nimport { Activity, Bookmark, ChevronDown, LayoutGrid } from \"lucide-react\";\nimport { useId, useState } from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\n\nexport type AnimatedSidebarItemId = \"send\" | \"templates\" | \"events\";\n\nexport type AnimatedSidebarProps = {\n className?: string;\n initialActiveItem?: AnimatedSidebarItemId;\n onItemChange?: (id: AnimatedSidebarItemId) => void;\n theme?: \"dark\" | \"light\";\n};\n\ntype SidebarItem = {\n id: AnimatedSidebarItemId;\n label: string;\n meta: string;\n icon: LucideIcon;\n};\n\nconst SIDEBAR_ITEMS: readonly SidebarItem[] = [\n { id: \"send\", label: \"Work queue\", meta: \"Current cycle\", icon: LayoutGrid },\n { id: \"templates\", label: \"Saved views\", meta: \"Shared space\", icon: Bookmark },\n { id: \"events\", label: \"Activity log\", meta: \"Updated today\", icon: Activity },\n];\n\nconst SIDEBAR_STYLES = `\n.mova-sidebar,\n.mova-sidebar * {\n box-sizing: border-box;\n}\n\n.mova-sidebar {\n --mova-sidebar-background: #171a1e;\n --mova-sidebar-surface: #20252b;\n --mova-sidebar-border: #343a43;\n --mova-sidebar-text: #f2f5f5;\n --mova-sidebar-muted: #9da7ad;\n --mova-sidebar-accent: #87e3c1;\n --mova-sidebar-accent-surface: #19382f;\n --mova-sidebar-focus: #ffd166;\n width: min(300px, 100%);\n min-width: 0;\n min-height: 384px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n overflow: hidden;\n border: 1px solid var(--mova-sidebar-border);\n border-radius: 8px;\n background: var(--mova-sidebar-background);\n color: var(--mova-sidebar-text);\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n font-size: 14px;\n line-height: 1.4;\n color-scheme: dark;\n}\n\n.mova-sidebar[data-theme=\"light\"] {\n --mova-sidebar-background: #f6f8f6;\n --mova-sidebar-surface: #ffffff;\n --mova-sidebar-border: #d6ddd8;\n --mova-sidebar-text: #1f2823;\n --mova-sidebar-muted: #657169;\n --mova-sidebar-accent: #087f5b;\n --mova-sidebar-accent-surface: #e2f4ec;\n --mova-sidebar-focus: #a65600;\n color-scheme: light;\n}\n\n.mova-sidebar__brand {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n padding: 4px;\n}\n\n.mova-sidebar__mark {\n display: grid;\n flex: 0 0 32px;\n width: 32px;\n height: 32px;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--mova-sidebar-accent) 42%, var(--mova-sidebar-border));\n border-radius: 4px;\n background: var(--mova-sidebar-accent-surface);\n color: var(--mova-sidebar-accent);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n\n.mova-sidebar__brand-copy {\n display: grid;\n min-width: 0;\n gap: 0;\n}\n\n.mova-sidebar__eyebrow {\n margin: 0;\n color: var(--mova-sidebar-muted);\n font-size: 11px;\n letter-spacing: 0.08em;\n line-height: 16px;\n text-transform: uppercase;\n}\n\n.mova-sidebar__title {\n overflow: hidden;\n color: var(--mova-sidebar-text);\n font-size: 14px;\n font-weight: 650;\n line-height: 20px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mova-sidebar__section {\n display: grid;\n min-width: 0;\n gap: 8px;\n}\n\n.mova-sidebar__section-heading {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 28px;\n padding: 0 4px 0 8px;\n}\n\n.mova-sidebar__section-label {\n color: var(--mova-sidebar-muted);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n\n.mova-sidebar__section-toggle {\n display: grid;\n width: 28px;\n height: 28px;\n place-items: center;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mova-sidebar-muted);\n cursor: pointer;\n transition: border-color 180ms ease, color 180ms ease, background-color 180ms ease;\n}\n\n.mova-sidebar__section-toggle:hover {\n border-color: var(--mova-sidebar-border);\n background: var(--mova-sidebar-surface);\n color: var(--mova-sidebar-text);\n}\n\n.mova-sidebar__section-toggle[data-open=\"true\"] .mova-sidebar__chevron {\n transform: rotate(180deg);\n}\n\n.mova-sidebar__chevron {\n transition: transform 180ms ease;\n}\n\n.mova-sidebar__section-content {\n display: grid;\n grid-template-rows: 1fr;\n min-width: 0;\n opacity: 1;\n transition: grid-template-rows 220ms ease, opacity 160ms ease;\n}\n\n.mova-sidebar__section-content[data-open=\"false\"] {\n grid-template-rows: 0fr;\n opacity: 0;\n pointer-events: none;\n}\n\n.mova-sidebar__section-content-inner {\n min-height: 0;\n overflow: hidden;\n}\n\n.mova-sidebar__list {\n display: grid;\n gap: 4px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.mova-sidebar__item {\n position: relative;\n display: grid;\n grid-template-columns: 24px minmax(0, 1fr) auto;\n align-items: center;\n width: 100%;\n min-height: 52px;\n gap: 8px;\n padding: 8px 12px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mova-sidebar-muted);\n cursor: pointer;\n text-align: left;\n transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease;\n}\n\n.mova-sidebar__item::before {\n position: absolute;\n top: 50%;\n left: 0;\n width: 3px;\n height: 20px;\n border-radius: 0 2px 2px 0;\n background: var(--mova-sidebar-accent);\n content: \"\";\n opacity: 0;\n transform: translateY(-50%);\n transition: opacity 180ms ease;\n}\n\n.mova-sidebar__item:hover {\n border-color: var(--mova-sidebar-border);\n background: var(--mova-sidebar-surface);\n color: var(--mova-sidebar-text);\n}\n\n.mova-sidebar__item[data-active=\"true\"] {\n border-color: color-mix(in srgb, var(--mova-sidebar-accent) 24%, var(--mova-sidebar-border));\n background: var(--mova-sidebar-accent-surface);\n color: var(--mova-sidebar-text);\n}\n\n.mova-sidebar__item[data-active=\"true\"]::before {\n opacity: 1;\n}\n\n.mova-sidebar__item:focus-visible,\n.mova-sidebar__section-toggle:focus-visible {\n outline: 2px solid var(--mova-sidebar-focus);\n outline-offset: -2px;\n}\n\n.mova-sidebar__icon {\n display: grid;\n width: 24px;\n height: 24px;\n place-items: center;\n color: currentColor;\n}\n\n.mova-sidebar__item[data-active=\"true\"] .mova-sidebar__icon {\n color: var(--mova-sidebar-accent);\n}\n\n.mova-sidebar__item-copy {\n display: grid;\n min-width: 0;\n gap: 0;\n}\n\n.mova-sidebar__item-label,\n.mova-sidebar__item-meta {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mova-sidebar__item-label {\n color: inherit;\n font-size: 13px;\n font-weight: 650;\n line-height: 20px;\n}\n\n.mova-sidebar__item-meta {\n color: var(--mova-sidebar-muted);\n font-size: 11px;\n line-height: 16px;\n}\n\n.mova-sidebar__count {\n min-width: 24px;\n padding: 2px 4px;\n border: 1px solid var(--mova-sidebar-border);\n border-radius: 4px;\n color: var(--mova-sidebar-muted);\n font-size: 10px;\n line-height: 16px;\n text-align: center;\n}\n\n.mova-sidebar__footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 36px;\n margin-top: auto;\n padding: 8px 12px;\n border-top: 1px solid var(--mova-sidebar-border);\n color: var(--mova-sidebar-muted);\n font-size: 11px;\n}\n\n.mova-sidebar__status {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.mova-sidebar__status-dot {\n width: 6px;\n height: 6px;\n flex: 0 0 6px;\n border-radius: 50%;\n background: var(--mova-sidebar-accent);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .mova-sidebar *,\n .mova-sidebar *::before,\n .mova-sidebar *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: 0.01ms !important;\n }\n}\n`;\n\nexport function AnimatedSidebar({\n className = \"\",\n initialActiveItem = \"send\",\n onItemChange,\n theme = \"dark\",\n}: AnimatedSidebarProps = {}) {\n const [activeItem, setActiveItem] = useState<AnimatedSidebarItemId>(initialActiveItem);\n const [isSectionOpen, setIsSectionOpen] = useState(true);\n const sectionId = `mova-sidebar-section-${useId().replace(/:/g, \"\")}`;\n const rootClassName = [\"mova-sidebar\", className].filter(Boolean).join(\" \");\n\n const selectItem = (id: AnimatedSidebarItemId) => {\n setActiveItem(id);\n onItemChange?.(id);\n };\n\n return (\n <>\n <style>{SIDEBAR_STYLES}</style>\n <aside className={rootClassName} data-theme={theme} aria-label=\"Workspace navigation\">\n <div className=\"mova-sidebar__brand\">\n <span className=\"mova-sidebar__mark\" aria-hidden=\"true\">MW</span>\n <div className=\"mova-sidebar__brand-copy\">\n <p className=\"mova-sidebar__eyebrow\">Workspace</p>\n <strong className=\"mova-sidebar__title\">Mova Workbench</strong>\n </div>\n </div>\n\n <nav aria-label=\"Workspace destinations\">\n <div className=\"mova-sidebar__section\">\n <div className=\"mova-sidebar__section-heading\">\n <span className=\"mova-sidebar__section-label\">Spaces</span>\n <button\n aria-controls={sectionId}\n aria-expanded={isSectionOpen}\n aria-label={`${isSectionOpen ? \"Collapse\" : \"Expand\"} workspace destinations`}\n className=\"mova-sidebar__section-toggle\"\n data-open={isSectionOpen}\n onClick={() => setIsSectionOpen((open) => !open)}\n type=\"button\"\n >\n <ChevronDown className=\"mova-sidebar__chevron\" size={16} strokeWidth={1.8} aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n aria-hidden={!isSectionOpen}\n className=\"mova-sidebar__section-content\"\n data-open={isSectionOpen}\n id={sectionId}\n >\n <div className=\"mova-sidebar__section-content-inner\">\n <ul className=\"mova-sidebar__list\">\n {SIDEBAR_ITEMS.map((item) => {\n const Icon = item.icon;\n const isActive = activeItem === item.id;\n return (\n <li key={item.id}>\n <button\n aria-current={isActive ? \"page\" : undefined}\n aria-pressed={isActive}\n className=\"mova-sidebar__item\"\n data-active={isActive}\n onClick={() => selectItem(item.id)}\n tabIndex={isSectionOpen ? 0 : -1}\n type=\"button\"\n >\n <span className=\"mova-sidebar__icon\" aria-hidden=\"true\">\n <Icon size={17} strokeWidth={1.8} />\n </span>\n <span className=\"mova-sidebar__item-copy\">\n <span className=\"mova-sidebar__item-label\">{item.label}</span>\n <span className=\"mova-sidebar__item-meta\">{item.meta}</span>\n </span>\n <span className=\"mova-sidebar__count\" aria-hidden=\"true\">3</span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n </div>\n </nav>\n\n <div className=\"mova-sidebar__footer\">\n <span className=\"mova-sidebar__status\">\n <span className=\"mova-sidebar__status-dot\" aria-hidden=\"true\" />\n <span>Workspace ready</span>\n </span>\n <span>3 views</span>\n </div>\n </aside>\n </>\n );\n}\n\nexport default AnimatedSidebar;\n"
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "animated-tags",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
5
|
+
"file": "animated-tags.tsx",
|
|
6
|
+
"sourcePath": "ui/patterns/animated-tags.tsx",
|
|
7
|
+
"registryFile": "animated-tags.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AnimatedTags",
|
|
10
|
+
"AnimatedTagsProps"
|
|
11
|
+
],
|
|
12
|
+
"dependencies": [
|
|
13
|
+
"framer-motion",
|
|
14
|
+
"lucide-react"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"previewMode": "client",
|
|
18
|
+
"content": "\"use client\";\n\"use client\";\n\n/**\n * Adapted from SmoothUI's Animated Tags component.\n * Source: https://github.com/educlopez/smoothui/blob/main/packages/smoothui/components/animated-tags/index.tsx\n * Example: https://smoothui.dev/docs/components/animated-tags\n * License: MIT; see ./smoothui.LICENSE.\n */\n\nimport React from \"react\";\nimport { CircleX, Plus } from \"lucide-react\";\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport { useState } from \"react\";\n\nexport interface AnimatedTagsProps {\n className?: string;\n initialTags?: string[];\n onChange?: (selected: string[]) => void;\n selectedTags?: string[];\n}\n\nexport default function AnimatedTags({\n initialTags = [\"react\", \"tailwindcss\", \"javascript\"],\n selectedTags: controlledSelectedTags,\n onChange,\n className = \"\",\n}: AnimatedTagsProps) {\n const [internalSelected, setInternalSelected] = useState<string[]>([]);\n const shouldReduceMotion = useReducedMotion();\n\n const selectedTag = controlledSelectedTags ?? internalSelected;\n const tags = initialTags.filter((tag) => !selectedTag.includes(tag));\n\n const handleTagClick = (tag: string) => {\n const newSelected = [...selectedTag, tag];\n if (onChange) {\n onChange(newSelected);\n } else {\n setInternalSelected(newSelected);\n }\n };\n const handleDeleteTag = (tag: string) => {\n const newSelectedTag = selectedTag.filter((selected) => selected !== tag);\n if (onChange) {\n onChange(newSelectedTag);\n } else {\n setInternalSelected(newSelectedTag);\n }\n };\n return (\n <div className={`flex w-[300px] flex-col gap-4 p-4 ${className}`}>\n <div className=\"flex flex-col items-start justify-center gap-1\">\n <p>Selected Tags</p>\n <AnimatePresence>\n <div className=\"flex min-h-12 w-full flex-wrap items-center gap-1 rounded-xl border bg-background p-2\">\n {selectedTag?.map((tag) => (\n <motion.div\n animate={\n shouldReduceMotion\n ? { opacity: 1 }\n : {\n filter: \"blur(0px)\",\n opacity: 1,\n y: 0,\n }\n }\n className=\"group/tag flex cursor-pointer flex-row items-center justify-center gap-2 rounded-md border bg-primary px-2 py-1 text-primary-foreground group-hover/tag:bg-primary group-hover/tag:text-foreground\"\n exit={\n shouldReduceMotion\n ? { opacity: 0, transition: { duration: 0 } }\n : { filter: \"blur(4px)\", opacity: 0, y: 20 }\n }\n initial={\n shouldReduceMotion\n ? { opacity: 1 }\n : { filter: \"blur(4px)\", opacity: 0, y: 20 }\n }\n key={tag}\n layout\n onClick={() => handleDeleteTag(tag)}\n transition={\n shouldReduceMotion\n ? { duration: 0 }\n : { bounce: 0, duration: 0.25, type: \"spring\" as const }\n }\n >\n {tag}{\" \"}\n <CircleX\n className=\"ease flex items-center justify-center rounded-full transition-all duration-200\"\n size={16}\n />\n </motion.div>\n ))}\n </div>\n </AnimatePresence>\n </div>\n <AnimatePresence>\n <div className=\"flex flex-wrap items-center gap-1\">\n {tags.map((tag) => (\n <motion.div\n animate={\n shouldReduceMotion\n ? { opacity: 1 }\n : {\n filter: \"blur(0px)\",\n opacity: 1,\n y: 0,\n }\n }\n className=\"group/tag flex cursor-pointer flex-row items-center justify-center gap-2 rounded-md border bg-background px-2 py-1 text-primary-foreground\"\n exit={\n shouldReduceMotion\n ? { opacity: 0, transition: { duration: 0 } }\n : { filter: \"blur(4px)\", opacity: 0, y: -20 }\n }\n initial={\n shouldReduceMotion\n ? { opacity: 1 }\n : { filter: \"blur(4px)\", opacity: 0, y: -20 }\n }\n key={tag}\n layout\n onClick={() => handleTagClick(tag)}\n transition={\n shouldReduceMotion\n ? { duration: 0 }\n : { bounce: 0, duration: 0.25, type: \"spring\" as const }\n }\n >\n {tag}{\" \"}\n <Plus\n className=\"ease flex items-center justify-center rounded-full transition-all duration-200 group-hover/tag:bg-primary group-hover/tag:text-foreground\"\n size={16}\n />\n </motion.div>\n ))}\n </div>\n </AnimatePresence>\n </div>\n );\n}\n"
|
|
19
|
+
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "app-icon-load",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "app-icon-load.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/app-icon-load.tsx",
|
|
7
|
+
"registryFile": "app-icon-load.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppIconLoad"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppIconLoad = () => (\n <div className=\"relative w-12 h-12 bg-zinc-200 dark:bg-zinc-800 rounded-[12px] flex items-center justify-center overflow-hidden\">\n <svg className=\"w-8 h-8 absolute\" viewBox=\"0 0 50 50\">\n <circle\n cx=\"25\" cy=\"25\" r=\"20\"\n className=\"stroke-zinc-300 dark:stroke-zinc-700 fill-none\"\n strokeWidth=\"4\"\n />\n <motion.circle\n cx=\"25\" cy=\"25\" r=\"20\"\n className=\"stroke-zinc-800 dark:stroke-white fill-none\"\n strokeWidth=\"4\"\n strokeDasharray=\"125\"\n animate={{ strokeDashoffset: [125, 0] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n style={{ rotate: -90, transformOrigin: 'center' }}\n />\n </svg>\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-breathe",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-breathe.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-breathe.tsx",
|
|
7
|
+
"registryFile": "apple-breathe.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleBreathe"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleBreathe = () => {\n return (\n <div className=\"relative flex items-center justify-center w-12 h-12\">\n {[0, 60, 120, 180, 240, 300].map((angle, idx) => {\n // Alternating color teal-blue palette\n const bgClass = idx % 2 === 0 \n ? 'bg-teal-400/35 dark:bg-teal-400/40' \n : 'bg-cyan-400/35 dark:bg-cyan-400/40';\n return (\n <motion.div\n key={angle}\n className={`absolute w-3.5 h-3.5 rounded-full ${bgClass}`}\n style={{ transformOrigin: 'center' }}\n animate={{\n scale: [1, 1.75, 1],\n x: [0, Math.cos(angle * Math.PI / 180) * 11, 0],\n y: [0, Math.sin(angle * Math.PI / 180) * 11, 0]\n }}\n transition={{\n duration: 3.6,\n repeat: Infinity,\n ease: \"easeInOut\"\n }}\n />\n );\n })}\n </div>\n );\n};\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-equalizer",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-equalizer.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-equalizer.tsx",
|
|
7
|
+
"registryFile": "apple-equalizer.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleEqualizer"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleEqualizer = () => (\n <div className=\"flex space-x-1 h-8 items-end\">\n {[0,1,2,3].map(i => (\n <motion.div\n key={i}\n className=\"w-1.5 bg-zinc-800 dark:bg-white rounded-t-sm\"\n animate={{ height: ['20%', '100%', '20%'] }}\n transition={{ duration: 0.8, repeat: Infinity, delay: Math.random() * 0.5, ease: \"circInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-icon-morph",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-icon-morph.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-icon-morph.tsx",
|
|
7
|
+
"registryFile": "apple-icon-morph.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleIconMorph"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleIconMorph = () => (\n <motion.div\n className=\"w-8 h-8 bg-zinc-800 dark:bg-white\"\n animate={{\n borderRadius: [\"20%\", \"50%\", \"50%\", \"20%\"],\n rotate: [0, 90, 180, 270]\n }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n />\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-pulse-dots",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-pulse-dots.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-pulse-dots.tsx",
|
|
7
|
+
"registryFile": "apple-pulse-dots.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"ApplePulseDots"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const ApplePulseDots = () => (\n <div className=\"flex space-x-2\">\n {[0, 1, 2].map(i => (\n <motion.div\n key={i}\n className=\"w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ scale: [0.5, 1, 0.5], opacity: [0.3, 1, 0.3] }}\n transition={{ duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-scale-pulse",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-scale-pulse.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-scale-pulse.tsx",
|
|
7
|
+
"registryFile": "apple-scale-pulse.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleScalePulse"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleScalePulse = () => (\n <div className=\"relative w-12 h-12 flex items-center justify-center\">\n <motion.div\n className=\"absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full\"\n animate={{ scale: [0, 1], opacity: [1, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeOut\" }}\n />\n <motion.div\n className=\"absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full\"\n animate={{ scale: [0, 1], opacity: [1, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, delay: 0.5, ease: \"easeOut\" }}\n />\n <div className=\"w-3 h-3 bg-zinc-800 dark:bg-white rounded-full z-10\" />\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-sound-wave",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-sound-wave.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-sound-wave.tsx",
|
|
7
|
+
"registryFile": "apple-sound-wave.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleSoundWave"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleSoundWave = () => (\n <div className=\"flex space-x-1 h-8 items-center\">\n {[1, 2, 3, 2, 1].map((val, i) => (\n <motion.div\n key={i}\n className=\"w-1 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ height: [4, val * 8, 4] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-text-reveal",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-text-reveal.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-text-reveal.tsx",
|
|
7
|
+
"registryFile": "apple-text-reveal.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleTextReveal"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleTextReveal = () => (\n <div className=\"font-medium text-lg text-zinc-900 dark:text-white overflow-hidden h-6 relative\">\n <motion.div\n animate={{ y: [\"100%\", \"0%\", \"-100%\"] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n >\n Loading\n </motion.div>\n </div>\n);\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "apple-unlock",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "apple-unlock.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/apple-unlock.tsx",
|
|
7
|
+
"registryFile": "apple-unlock.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"AppleUnlock"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleUnlock = ({ theme = 'light' }: { theme?: 'light' | 'dark' }) => {\n const isDark = theme === 'dark';\n return (\n <div className=\"relative font-medium text-sm tracking-wide select-none\">\n <span className=\"text-zinc-400 dark:text-zinc-600\">\n Slide to unlock\n </span>\n <motion.div\n className=\"absolute inset-0 text-zinc-950 dark:text-white bg-clip-text text-transparent bg-gradient-to-r from-transparent via-current to-transparent\"\n style={{\n backgroundSize: \"200% 100%\",\n }}\n animate={{ backgroundPosition: [\"200% 0\", \"-200% 0\"] }}\n transition={{ duration: 2.2, repeat: Infinity, ease: \"linear\" }}\n >\n Slide to unlock\n </motion.div>\n </div>\n );\n};\n"
|
|
8
17
|
}
|
package/registry/arc-tracer.json
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "arc-tracer",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "arc-tracer.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/arc-tracer.tsx",
|
|
7
|
+
"registryFile": "arc-tracer.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"ArcTracer"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const ArcTracer = () => {\n return (\n <svg className=\"w-10 h-10\" viewBox=\"0 0 50 50\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" className=\"stroke-zinc-200 dark:stroke-zinc-800 fill-none\" strokeWidth=\"4\" />\n <motion.circle\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n className=\"stroke-zinc-800 dark:stroke-white fill-none\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeDasharray=\"125\"\n animate={{ strokeDashoffset: [125, 0, -125] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n />\n </svg>\n );\n};\n"
|
|
8
17
|
}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "bar-cascade",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "bar-cascade.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/bar-cascade.tsx",
|
|
7
|
+
"registryFile": "bar-cascade.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"BarCascade"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BarCascade = () => {\n return (\n <div className=\"flex space-x-1 items-center h-8\">\n {[0, 1, 2, 3, 4].map((i) => (\n <motion.div\n key={i}\n className=\"w-1.5 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ height: [\"8px\", \"24px\", \"8px\"] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
17
|
}
|
package/registry/bar-sweep.json
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "bar-sweep",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "bar-sweep.tsx",
|
|
6
|
+
"sourcePath": "ui/loading/bar-sweep.tsx",
|
|
7
|
+
"registryFile": "bar-sweep.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"BarSweep"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BarSweep = () => {\n return (\n <div className=\"w-12 h-6 border-2 border-zinc-800 dark:border-zinc-700 rounded-full p-1 relative flex items-center overflow-hidden\">\n <motion.div\n className=\"w-4 h-4 bg-zinc-800 dark:bg-white rounded-full absolute\"\n animate={{ x: [0, 24, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeInOut\" }}\n />\n </div>\n );\n};\n"
|
|
8
17
|
}
|
package/registry/blur-text.json
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "blur-text",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
3
5
|
"file": "blur-text.tsx",
|
|
6
|
+
"sourcePath": "ui/text/blur-text.tsx",
|
|
7
|
+
"registryFile": "blur-text.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"BlurText"
|
|
10
|
+
],
|
|
4
11
|
"dependencies": [
|
|
5
12
|
"framer-motion"
|
|
6
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
7
16
|
"content": "\"use client\";\nimport React from 'react';\nimport { motion, type Variants } from 'framer-motion';\n\ninterface BlurTextProps {\n text: string;\n duration?: number;\n staggerDelay?: number;\n initialBlur?: string;\n className?: string;\n}\n\nexport function BlurText({\n text,\n duration = 0.5,\n staggerDelay = 0.02,\n initialBlur = '8px',\n className = '',\n}: BlurTextProps) {\n const characters = Array.from(text);\n\n const containerVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: staggerDelay,\n },\n },\n };\n\n const charVariants: Variants = {\n hidden: { opacity: 0, filter: `blur(${initialBlur})` },\n visible: {\n opacity: 1,\n filter: 'blur(0px)',\n transition: {\n duration,\n ease: 'easeOut',\n },\n },\n };\n\n return (\n <motion.div\n variants={containerVariants}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once: true, margin: '-10%' }}\n className={`inline-block ${className}`}\n >\n {characters.map((char, index) => (\n <motion.span\n key={index}\n variants={charVariants}\n className=\"inline-block whitespace-pre\"\n >\n {char}\n </motion.span>\n ))}\n </motion.div>\n );\n}\n"
|
|
8
17
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "blur-up-char",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.1",
|
|
5
|
+
"file": "blur-up-char.tsx",
|
|
6
|
+
"registryFile": "blur-up-char.json",
|
|
7
|
+
"exports": [
|
|
8
|
+
"default"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [
|
|
11
|
+
"framer-motion",
|
|
12
|
+
"lucide-react"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"previewMode": "client",
|
|
16
|
+
"usage": "import MovaComponent from './blur-up-char';\n\nexport default function Demo() {\n return <MovaComponent />;\n}",
|
|
17
|
+
"css": "",
|
|
18
|
+
"content": "// @ts-nocheck -- Generated JavaScript bundle; edit the maintained catalog source to retain TypeScript types.\n\"use client\";\n// Mova catalog component. See LICENSE.mova and LICENSE.third-party.\n// src/components/text/AnimatedText.tsx\nimport { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { RefreshCw } from \"lucide-react\";\n\n// src/hooks/useWebHaptics.ts\nimport { useCallback } from \"react\";\nfunction useWebHaptics() {\n const trigger = useCallback((type = \"light\") => {\n if (typeof window === \"undefined\" || !window.navigator || !window.navigator.vibrate) {\n return false;\n }\n try {\n switch (type) {\n case \"light\":\n return window.navigator.vibrate(10);\n case \"medium\":\n return window.navigator.vibrate(25);\n case \"heavy\":\n return window.navigator.vibrate(50);\n case \"success\":\n return window.navigator.vibrate([15, 60, 15]);\n case \"warning\":\n return window.navigator.vibrate([30, 60, 30]);\n case \"error\":\n return window.navigator.vibrate([60, 60, 60, 60, 60]);\n default:\n return window.navigator.vibrate(type);\n }\n } catch (e) {\n console.warn(\"Vibration API error:\", e);\n return false;\n }\n }, []);\n return { trigger };\n}\n\n// src/components/text/AnimatedText.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar AnimatedText = ({ config, theme }) => {\n const [keyIndex, setKeyIndex] = useState(0);\n const { trigger: triggerHaptic } = useWebHaptics();\n const isDark = theme === \"dark\";\n const replay = () => {\n triggerHaptic(\"light\");\n setKeyIndex((prev) => prev + 1);\n };\n const samplePhrase = \"MOVA UI\";\n const sampleWords = [\"Design\", \"Motion\", \"Mova\"];\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n onClick: replay,\n className: \"relative flex flex-col items-center justify-center w-full h-full cursor-pointer select-none px-4 group\",\n title: \"Click to replay animation\",\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center justify-center w-full min-h-[60px] text-center\", children: (() => {\n switch (config.interactionType) {\n /* --- FEATURED --- */\n case \"dia-text-reveal\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"relative overflow-hidden font-black text-2xl tracking-tighter\", children: /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { clipPath: \"polygon(0 0, 0 0, 0 100%, 0% 100%)\", filter: \"blur(8px)\" },\n animate: { clipPath: \"polygon(0 0, 100% 0, 100% 100%, 0 100%)\", filter: \"blur(0px)\" },\n transition: { duration: 0.85, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: \"DIA REVEAL\"\n }\n ) }, keyIndex);\n /* --- REVEALS --- */\n case \"blur-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { filter: \"blur(12px)\", opacity: 0, scale: 0.9 },\n animate: { filter: \"blur(0px)\", opacity: 1, scale: 1 },\n transition: { duration: 0.7, ease: [0.16, 1, 0.3, 1] },\n className: `font-bold text-2xl ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"BLUR REVEAL\"\n },\n keyIndex\n );\n case \"shimmer-text\":\n return /* @__PURE__ */ jsx(\"div\", { className: `font-extrabold text-2xl bg-gradient-to-r ${isDark ? \"from-neutral-400 via-white to-neutral-400\" : \"from-neutral-600 via-black to-neutral-600\"} bg-clip-text text-transparent animate-pulse`, children: \"SHIMMER TEXT\" });\n case \"typewriter-text\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center font-mono text-lg font-bold\", children: /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { width: 0 },\n animate: { width: \"auto\" },\n transition: { duration: 1.2, ease: \"easeInOut\" },\n className: `overflow-hidden whitespace-nowrap border-r-2 ${isDark ? \"text-emerald-400 border-emerald-400\" : \"text-emerald-600 border-emerald-600\"}`,\n children: \"TYPEWRITER\"\n }\n ) }, keyIndex);\n case \"reveal-text\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"relative overflow-hidden font-bold text-2xl\", children: /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { clipPath: \"inset(0 100% 0 0)\" },\n animate: { clipPath: \"inset(0 0 0 0)\" },\n transition: { duration: 0.75, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: \"CINEMATIC\"\n }\n ) }, keyIndex);\n case \"fade-in-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.3, delay: i * 0.05 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"fade-in-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.15 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"fade-in-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.8 },\n className: `font-bold text-2xl ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"FADE IN TEXT\"\n },\n keyIndex\n );\n case \"blur-up-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { opacity: 0, y: 15, filter: \"blur(8px)\" },\n animate: { opacity: 1, y: 0, filter: \"blur(0px)\" },\n transition: { duration: 0.5, delay: i * 0.12 },\n className: isDark ? \"text-indigo-400\" : \"text-indigo-600\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"blur-up-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { opacity: 0, y: 15, filter: \"blur(8px)\" },\n animate: { opacity: 1, y: 0, filter: \"blur(0px)\" },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-indigo-400\" : \"text-indigo-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n /* --- SLIDE & DROP --- */\n case \"stagger-text\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: 20, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n transition: { duration: 0.5, delay: i * 0.1, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"slide-up-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex overflow-hidden font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: \"100%\" },\n animate: { y: 0 },\n transition: { duration: 0.4, delay: i * 0.04, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"slide-up-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 overflow-hidden font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: \"100%\" },\n animate: { y: 0 },\n transition: { duration: 0.5, delay: i * 0.1, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"slide-up-text\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"overflow-hidden\", children: /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { y: \"100%\" },\n animate: { y: 0 },\n transition: { duration: 0.6, ease: [0.16, 1, 0.3, 1] },\n className: `font-bold text-2xl ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"SLIDE UP TEXT\"\n }\n ) }, keyIndex);\n case \"slide-down-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex overflow-hidden font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: \"-100%\" },\n animate: { y: 0 },\n transition: { duration: 0.4, delay: i * 0.04, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"slide-down-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 overflow-hidden font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: \"-100%\" },\n animate: { y: 0 },\n transition: { duration: 0.5, delay: i * 0.1, ease: [0.16, 1, 0.3, 1] },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"slide-left-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex overflow-hidden font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { x: 40, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"slide-right-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex overflow-hidden font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { x: -40, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"drop-in-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: -50, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n transition: { type: \"spring\", stiffness: 500, damping: 25, delay: i * 0.04 },\n className: isDark ? \"text-cyan-400\" : \"text-cyan-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"rise-up-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { y: 30, opacity: 0, scale: 0.8 },\n animate: { y: 0, opacity: 1, scale: 1 },\n transition: { type: \"spring\", stiffness: 400, damping: 22, delay: i * 0.12 },\n className: isDark ? \"text-emerald-400\" : \"text-emerald-600\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"bounce-in-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: [0, 1.3, 1], opacity: 1 },\n transition: { duration: 0.5, delay: i * 0.05 },\n className: isDark ? \"text-pink-400\" : \"text-pink-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n /* --- SCALE & ZOOM --- */\n case \"scale-in-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { scale: 0 },\n animate: { scale: 1 },\n transition: { type: \"spring\", stiffness: 450, damping: 22, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"scale-in-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { scale: 0.4, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.12 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) }, keyIndex);\n case \"scale-in-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { scale: 0.5, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 400, damping: 25 },\n className: `font-bold text-2xl ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"SCALE IN TEXT\"\n },\n keyIndex\n );\n case \"zoom-in-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { scale: 0.2, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { duration: 0.6, ease: [0.16, 1, 0.3, 1] },\n className: `font-extrabold text-2xl ${isDark ? \"text-amber-400\" : \"text-amber-600\"}`,\n children: \"ZOOM IN\"\n },\n keyIndex\n );\n case \"zoom-out-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { scale: 1.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { duration: 0.6, ease: [0.16, 1, 0.3, 1] },\n className: `font-extrabold text-2xl ${isDark ? \"text-amber-400\" : \"text-amber-600\"}`,\n children: \"ZOOM OUT\"\n },\n keyIndex\n );\n /* --- 3D & ROTATE --- */\n case \"flip-y-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl [perspective:1000px]\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { rotateY: 90, opacity: 0 },\n animate: { rotateY: 0, opacity: 1 },\n transition: { duration: 0.5, delay: i * 0.05 },\n className: isDark ? \"text-indigo-400\" : \"text-indigo-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"flip-x-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl [perspective:1000px]\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { rotateX: 90, opacity: 0 },\n animate: { rotateX: 0, opacity: 1 },\n transition: { duration: 0.5, delay: i * 0.05 },\n className: isDark ? \"text-indigo-400\" : \"text-indigo-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"rotate-in-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { rotate: -45, opacity: 0, scale: 0.5 },\n animate: { rotate: 0, opacity: 1, scale: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"swing-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl [perspective:800px]\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { rotateX: -90, opacity: 0 },\n animate: { rotateX: 0, opacity: 1 },\n transition: { type: \"spring\", stiffness: 350, damping: 18, delay: i * 0.12 },\n className: isDark ? \"text-purple-400\" : \"text-purple-600\",\n children: word\n },\n i\n )) }, keyIndex);\n /* --- DISTORTION & SPACING --- */\n case \"stretch-x-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { scaleX: 2.5, opacity: 0 },\n animate: { scaleX: 1, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"stretch-y-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { scaleY: 2.5, opacity: 0 },\n animate: { scaleY: 1, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"skew-x-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n initial: { skewX: -30, opacity: 0 },\n animate: { skewX: 0, opacity: 1 },\n transition: { duration: 0.4, delay: i * 0.04 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) }, keyIndex);\n case \"tracking-in-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { letterSpacing: \"0.6em\", opacity: 0 },\n animate: { letterSpacing: \"0.05em\", opacity: 1 },\n transition: { duration: 0.7, ease: [0.16, 1, 0.3, 1] },\n className: `font-black text-xl uppercase ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"TRACKING IN\"\n },\n keyIndex\n );\n case \"tracking-out-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n initial: { letterSpacing: \"-0.2em\", opacity: 0 },\n animate: { letterSpacing: \"0.1em\", opacity: 1 },\n transition: { duration: 0.7, ease: [0.16, 1, 0.3, 1] },\n className: `font-black text-xl uppercase ${isDark ? \"text-white\" : \"text-black\"}`,\n children: \"TRACKING OUT\"\n },\n keyIndex\n );\n /* --- HOVER & INTERACTIVE --- */\n case \"spring-text\":\n case \"hover-lift-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl cursor-pointer\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n whileHover: { y: -8, scale: 1.2, color: \"#6366f1\" },\n transition: { type: \"spring\", stiffness: 500, damping: 15 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) });\n case \"hover-lift-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl cursor-pointer\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n whileHover: { y: -6, color: \"#3b82f6\" },\n transition: { type: \"spring\", stiffness: 400, damping: 18 },\n className: isDark ? \"text-white\" : \"text-black\",\n children: word\n },\n i\n )) });\n case \"hover-scale-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl cursor-pointer\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n whileHover: { scale: 1.4 },\n transition: { type: \"spring\", stiffness: 500, damping: 18 },\n className: isDark ? \"text-pink-400\" : \"text-pink-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) });\n case \"hover-scale-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl cursor-pointer\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n whileHover: { scale: 1.25 },\n transition: { type: \"spring\", stiffness: 400, damping: 20 },\n className: isDark ? \"text-pink-400\" : \"text-pink-600\",\n children: word\n },\n i\n )) });\n /* --- CONTINUOUS --- */\n case \"float-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n animate: { y: [0, -6, 0] },\n transition: { duration: 2, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" },\n className: isDark ? \"text-cyan-400\" : \"text-cyan-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) });\n case \"float-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n animate: { y: [0, -8, 0] },\n transition: { duration: 2.4, repeat: Infinity, delay: i * 0.2, ease: \"easeInOut\" },\n className: isDark ? \"text-cyan-400\" : \"text-cyan-600\",\n children: word\n },\n i\n )) });\n case \"pulse-char\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex font-bold text-2xl\", children: samplePhrase.split(\"\").map((char, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n animate: { opacity: [0.3, 1, 0.3] },\n transition: { duration: 1.5, repeat: Infinity, delay: i * 0.08 },\n className: isDark ? \"text-emerald-400\" : \"text-emerald-600\",\n children: char === \" \" ? \"\\xA0\" : char\n },\n i\n )) });\n case \"pulse-word\":\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex gap-2 font-bold text-xl\", children: sampleWords.map((word, i) => /* @__PURE__ */ jsx(\n motion.span,\n {\n animate: { opacity: [0.3, 1, 0.3] },\n transition: { duration: 1.8, repeat: Infinity, delay: i * 0.25 },\n className: isDark ? \"text-emerald-400\" : \"text-emerald-600\",\n children: word\n },\n i\n )) });\n case \"glow-text\":\n return /* @__PURE__ */ jsx(\n motion.div,\n {\n animate: { textShadow: isDark ? [\"0 0 10px rgba(99,102,241,0.5)\", \"0 0 25px rgba(99,102,241,0.9)\", \"0 0 10px rgba(99,102,241,0.5)\"] : [\"0 0 10px rgba(79,70,229,0.3)\", \"0 0 20px rgba(79,70,229,0.6)\", \"0 0 10px rgba(79,70,229,0.3)\"] },\n transition: { duration: 2, repeat: Infinity },\n className: `font-black text-3xl tracking-tight ${isDark ? \"text-indigo-300\" : \"text-indigo-600\"}`,\n children: \"GLOW TEXT\"\n }\n );\n default:\n return /* @__PURE__ */ jsx(\"div\", { className: `font-bold text-2xl ${isDark ? \"text-white\" : \"text-black\"}`, children: config.label });\n }\n })() }),\n /* @__PURE__ */ jsx(\"div\", { className: \"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity p-1.5 rounded-full bg-black/20 text-white/70\", children: /* @__PURE__ */ jsx(RefreshCw, { className: \"w-3.5 h-3.5\" }) })\n ]\n }\n );\n};\n\n// blur-up-char.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction MovaComponent({ theme = \"dark\" }) {\n return /* @__PURE__ */ jsx2(AnimatedText, { theme, config: { \"id\": \"txt-blurup-char\", \"label\": \"Blur Up Char\", \"interactionType\": \"blur-up-char\", \"description\": \"Characters blur and rise into focus.\", \"cliCommand\": \"npx @mova-ui/react add blur-up-char\", \"category\": \"Reveals\" } });\n}\nexport {\n MovaComponent as default\n};\n"
|
|
19
|
+
}
|