astro-component-kit 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +159 -176
  2. package/package.json +2 -2
  3. package/src/components/index.ts +16 -202
  4. package/src/components/lib/buttons/NeonBorderButton.astro +162 -0
  5. package/src/components/lib/buttons/RippleButton.astro +199 -0
  6. package/src/components/lib/buttons/SlideRevealButton.astro +159 -0
  7. package/src/components/lib/buttons/index.ts +4 -0
  8. package/src/components/lib/cards/GithubRepoCard.astro +176 -0
  9. package/src/components/lib/cards/PricingCompareMiniCard.astro +196 -0
  10. package/src/components/lib/cards/StatsTrendCard.astro +149 -0
  11. package/src/components/lib/cards/index.ts +3 -0
  12. package/src/components/lib/charts/ActivityRings.astro +105 -0
  13. package/src/components/lib/charts/BoxPlotChart.astro +109 -0
  14. package/src/components/lib/charts/BubbleChart.astro +101 -0
  15. package/src/components/lib/charts/BulletChart.astro +160 -0
  16. package/src/components/lib/charts/BumpChart.astro +92 -0
  17. package/src/components/lib/charts/CandlestickChart.astro +105 -0
  18. package/src/components/lib/charts/ChartFrame.astro +373 -0
  19. package/src/components/lib/charts/DivergingBarChart.astro +98 -0
  20. package/src/components/lib/charts/DumbbellChart.astro +92 -0
  21. package/src/components/lib/charts/ForecastLineChart.astro +125 -0
  22. package/src/components/lib/charts/FunnelChart.astro +122 -0
  23. package/src/components/lib/charts/GaugeChart.astro +111 -0
  24. package/src/components/lib/charts/GoalProgressChart.astro +97 -0
  25. package/src/components/lib/charts/GroupedBarChart.astro +125 -0
  26. package/src/components/lib/charts/HeatmapChart.astro +131 -0
  27. package/src/components/lib/charts/HistogramChart.astro +111 -0
  28. package/src/components/lib/charts/HorizontalBarChart.astro +155 -0
  29. package/src/components/lib/charts/KpiStatTile.astro +116 -0
  30. package/src/components/lib/charts/KpiTrendGrid.astro +60 -0
  31. package/src/components/lib/charts/LineChart.astro +160 -0
  32. package/src/components/lib/charts/LinearProgressGauge.astro +136 -0
  33. package/src/components/lib/charts/LollipopChart.astro +100 -0
  34. package/src/components/lib/charts/MeterGauge.astro +122 -0
  35. package/src/components/lib/charts/MetricDeltaTable.astro +125 -0
  36. package/src/components/lib/charts/PieChart.astro +135 -0
  37. package/src/components/lib/charts/PolarAreaChart.astro +85 -0
  38. package/src/components/lib/charts/PopulationPyramid.astro +122 -0
  39. package/src/components/lib/charts/PunchCardChart.astro +89 -0
  40. package/src/components/lib/charts/RadarChart.astro +94 -0
  41. package/src/components/lib/charts/RadarMetricChart.astro +168 -0
  42. package/src/components/lib/charts/RadialBarChart.astro +124 -0
  43. package/src/components/lib/charts/RangeAreaChart.astro +113 -0
  44. package/src/components/lib/charts/RetentionCohortTable.astro +126 -0
  45. package/src/components/lib/charts/SankeyChart.astro +128 -0
  46. package/src/components/lib/charts/ScatterPlot.astro +139 -0
  47. package/src/components/lib/charts/SegmentedBarChart.astro +119 -0
  48. package/src/components/lib/charts/SlopeChart.astro +105 -0
  49. package/src/components/lib/charts/SparklineChart.astro +87 -0
  50. package/src/components/lib/charts/StackedAreaChart.astro +130 -0
  51. package/src/components/lib/charts/StackedBarChart.astro +136 -0
  52. package/src/components/lib/charts/SunburstChart.astro +103 -0
  53. package/src/components/lib/charts/TreemapChart.astro +94 -0
  54. package/src/components/lib/charts/WaffleChart.astro +121 -0
  55. package/src/components/lib/charts/WaterfallChart.astro +118 -0
  56. package/src/components/lib/charts/chart-tooltip.ts +75 -0
  57. package/src/components/lib/charts/chart-utils.ts +271 -0
  58. package/src/components/lib/charts/index.ts +46 -0
  59. package/src/components/lib/data/ActivityHeatmapGrid.astro +157 -0
  60. package/src/components/lib/data/MetricComparisonRow.astro +109 -0
  61. package/src/components/lib/data/StatusTimelineFeed.astro +168 -0
  62. package/src/components/lib/data/index.ts +3 -0
  63. package/src/components/lib/feedback/ProgressRingCounter.astro +118 -0
  64. package/src/components/lib/feedback/ToastNotificationGroup.astro +173 -0
  65. package/src/components/lib/feedback/index.ts +2 -0
  66. package/src/components/lib/forms/GlassInlineToggleGroup.astro +161 -0
  67. package/src/components/lib/forms/PasswordStrengthInput.astro +242 -0
  68. package/src/components/lib/forms/PhoneCountryInput.astro +145 -0
  69. package/src/components/lib/forms/TagsAutocompleteInput.astro +249 -0
  70. package/src/components/lib/forms/index.ts +5 -0
  71. package/src/components/lib/layout/DiagonalSectionDivider.astro +69 -0
  72. package/src/components/lib/layout/HolyGrailGrid.astro +125 -0
  73. package/src/components/lib/layout/index.ts +3 -1
  74. package/src/components/lib/navigation/QuickJumpDock.astro +125 -0
  75. package/src/components/lib/navigation/StepBreadcrumbBar.astro +151 -0
  76. package/src/components/lib/navigation/SubNavbarPills.astro +102 -0
  77. package/src/components/lib/navigation/index.ts +3 -0
  78. package/src/components/lib/overlays/CookiePreferencesDrawer.astro +226 -0
  79. package/src/components/lib/overlays/FloatingFeedbackWidget.astro +203 -0
  80. package/src/components/lib/overlays/ImageCompareSlider.astro +172 -0
  81. package/src/components/lib/overlays/index.ts +3 -0
  82. package/src/components/lib/sections/BlogGridSection.astro +131 -0
  83. package/src/components/lib/sections/CareersOpenings.astro +139 -0
  84. package/src/components/lib/sections/ChangelogSection.astro +144 -0
  85. package/src/components/lib/sections/ContactSplitMap.astro +139 -0
  86. package/src/components/lib/sections/CtaNewsletterSection.astro +163 -0
  87. package/src/components/lib/sections/CtaSplitImage.astro +147 -0
  88. package/src/components/lib/sections/FaqTwoColumn.astro +119 -0
  89. package/src/components/lib/sections/FeatureAlternatingRows.astro +190 -0
  90. package/src/components/lib/sections/FeatureIconGrid.astro +155 -0
  91. package/src/components/lib/sections/FeatureTabsShowcase.astro +180 -0
  92. package/src/components/lib/sections/FooterMegaSection.astro +155 -0
  93. package/src/components/lib/sections/HeroDashboardPreview.astro +180 -0
  94. package/src/components/lib/sections/HeroMinimalCentered.astro +175 -0
  95. package/src/components/lib/sections/HeroShowcaseSplit.astro +304 -0
  96. package/src/components/lib/sections/HeroTerminal.astro +251 -0
  97. package/src/components/lib/sections/HeroWaitlist.astro +229 -0
  98. package/src/components/lib/sections/HowItWorksSteps.astro +178 -0
  99. package/src/components/lib/sections/IntegrationsGrid.astro +167 -0
  100. package/src/components/lib/sections/LogoCloudSection.astro +96 -0
  101. package/src/components/lib/sections/LogoWallGrid.astro +91 -0
  102. package/src/components/lib/sections/PricingSinglePlan.astro +157 -0
  103. package/src/components/lib/sections/PricingToggleCards.astro +171 -0
  104. package/src/components/lib/sections/StatsCounterBand.astro +122 -0
  105. package/src/components/lib/sections/StatsDashboardSection.astro +83 -0
  106. package/src/components/lib/sections/TestimonialCarousel.astro +165 -0
  107. package/src/components/lib/sections/TestimonialFeatured.astro +120 -0
  108. package/src/components/lib/sections/TestimonialGridSection.astro +188 -0
  109. package/src/components/lib/sections/index.ts +29 -0
  110. package/src/components/lib/typography/AnimatedCounterText.astro +102 -0
  111. package/src/components/lib/typography/CurvedPathHeading.astro +86 -0
  112. package/src/components/lib/typography/GradientTextMarquee.astro +105 -0
  113. package/src/components/lib/typography/HackerDecodeText.astro +85 -0
  114. package/src/components/lib/typography/index.ts +4 -0
  115. package/src/styles/global.css +18 -1
@@ -1,8 +1,11 @@
1
1
  // ============================================================
2
2
  // Astro Components Library - Main Barrel Export
3
3
  // ============================================================
4
- // Import any component from a single entry point:
5
- // import { GlowButton, GlassCard, GlassNavbar } from '@/components';
4
+ // Import any component from a single root entry point:
5
+ // import { GlowButton, GlassCard, StatsMetricShowcase } from 'astro-component-kit';
6
+ // Or from category subpaths:
7
+ // import { GlowButton } from 'astro-component-kit/buttons';
8
+ // import { StatsMetricShowcase } from 'astro-component-kit/sections';
6
9
  // ============================================================
7
10
 
8
11
  // Root-level unique components
@@ -10,204 +13,15 @@ export { default as AnimatedGalaxy } from './lib/AnimatedGalaxy.astro';
10
13
  export { default as Galaxy3D } from './lib/Galaxy3D.astro';
11
14
  export { default as LogoWithGalaxy } from './lib/LogoWithGalaxy.astro';
12
15
 
13
- // Buttons
14
- export { default as ThreeDPushButton } from './lib/buttons/ThreeDPushButton.astro';
15
- export { default as AnimatedIconButton } from './lib/buttons/AnimatedIconButton.astro';
16
- export { default as BorderDrawButton } from './lib/buttons/BorderDrawButton.astro';
17
- export { default as CyberpunkButton } from './lib/buttons/CyberpunkButton.astro';
18
- export { default as DoubleBorderButton } from './lib/buttons/DoubleBorderButton.astro';
19
- export { default as GhostOutlineButton } from './lib/buttons/GhostOutlineButton.astro';
20
- export { default as GlassButton } from './lib/buttons/GlassButton.astro';
21
- export { default as GlowButton } from './lib/buttons/GlowButton.astro';
22
- export { default as LiquidButton } from './lib/buttons/LiquidButton.astro';
23
- export { default as LoadingButton } from './lib/buttons/LoadingButton.astro';
24
- export { default as MagneticButton } from './lib/buttons/MagneticButton.astro';
25
- export { default as MinimalPillButton } from './lib/buttons/MinimalPillButton.astro';
26
- export { default as NeumorphicButton } from './lib/buttons/NeumorphicButton.astro';
27
- export { default as PulseButton } from './lib/buttons/PulseButton.astro';
28
- export { default as RetroArcadeButton } from './lib/buttons/RetroArcadeButton.astro';
29
- export { default as RetroShadowButton } from './lib/buttons/RetroShadowButton.astro';
30
- export { default as ShimmerButton } from './lib/buttons/ShimmerButton.astro';
31
- export { default as ShinyButton } from './lib/buttons/ShinyButton.astro';
32
- export { default as TiltGlowButton } from './lib/buttons/TiltGlowButton.astro';
33
-
34
- // Cards
35
- export { default as BlogHorizontalCard } from './lib/cards/BlogHorizontalCard.astro';
36
- export { default as CyberFeatureCard } from './lib/cards/CyberFeatureCard.astro';
37
- export { default as EcommerceProductCard } from './lib/cards/EcommerceProductCard.astro';
38
- export { default as GlassCard } from './lib/cards/GlassCard.astro';
39
- export { default as GlassEventCard } from './lib/cards/GlassEventCard.astro';
40
- export { default as GlowPortfolioCard } from './lib/cards/GlowPortfolioCard.astro';
41
- export { default as InteractiveTiltCard } from './lib/cards/InteractiveTiltCard.astro';
42
- export { default as KanbanItemCard } from './lib/cards/KanbanItemCard.astro';
43
- export { default as MinimalLinkCard } from './lib/cards/MinimalLinkCard.astro';
44
- export { default as MusicPlayerMini } from './lib/cards/MusicPlayerMini.astro';
45
- export { default as NeumorphicCard } from './lib/cards/NeumorphicCard.astro';
46
- export { default as NotificationCard } from './lib/cards/NotificationCard.astro';
47
- export { default as PricingCard } from './lib/cards/PricingCard.astro';
48
- export { default as ProfileCard } from './lib/cards/ProfileCard.astro';
49
- export { default as RetroGameCard } from './lib/cards/RetroGameCard.astro';
50
- export { default as StatCard } from './lib/cards/StatCard.astro';
51
- export { default as TaskKanbanCard } from './lib/cards/TaskKanbanCard.astro';
52
- export { default as TestimonialCardClean } from './lib/cards/TestimonialCardClean.astro';
53
- export { default as WeatherWidgetCard } from './lib/cards/WeatherWidgetCard.astro';
54
-
55
- // Data
56
- export { default as AccordionGroupGlass } from './lib/data/AccordionGroupGlass.astro';
57
- export { default as AvatarGroupStack } from './lib/data/AvatarGroupStack.astro';
58
- export { default as CalendarGridView } from './lib/data/CalendarGridView.astro';
59
- export { default as DataChipsGroup } from './lib/data/DataChipsGroup.astro';
60
- export { default as DescriptionListHoriz } from './lib/data/DescriptionListHoriz.astro';
61
- export { default as FileTreeView } from './lib/data/FileTreeView.astro';
62
- export { default as GanttChartMinimal } from './lib/data/GanttChartMinimal.astro';
63
- export { default as GlassTable } from './lib/data/GlassTable.astro';
64
- export { default as KeyValuePillGroup } from './lib/data/KeyValuePillGroup.astro';
65
- export { default as PriceCompareTable } from './lib/data/PriceCompareTable.astro';
66
- export { default as ProgressListSmall } from './lib/data/ProgressListSmall.astro';
67
- export { default as RatingBreakdownBar } from './lib/data/RatingBreakdownBar.astro';
68
- export { default as SparklineStatCard } from './lib/data/SparklineStatCard.astro';
69
- export { default as StatsGridDashboard } from './lib/data/StatsGridDashboard.astro';
70
- export { default as StepperDataVertical } from './lib/data/StepperDataVertical.astro';
71
- export { default as TagCloudData } from './lib/data/TagCloudData.astro';
72
- export { default as TimelineHorizSteps } from './lib/data/TimelineHorizSteps.astro';
73
- export { default as TreeItemInteractive } from './lib/data/TreeItemInteractive.astro';
74
- export { default as UserDirectoryItem } from './lib/data/UserDirectoryItem.astro';
75
- export { default as VerticalTimeline } from './lib/data/VerticalTimeline.astro';
76
-
77
- // Feedback
78
- export { default as AnimatedCheckmark } from './lib/feedback/AnimatedCheckmark.astro';
79
- export { default as Badge } from './lib/feedback/Badge.astro';
80
- export { default as CircleProgress } from './lib/feedback/CircleProgress.astro';
81
- export { default as ConfettiFeedback } from './lib/feedback/ConfettiFeedback.astro';
82
- export { default as CyberGlitchAlert } from './lib/feedback/CyberGlitchAlert.astro';
83
- export { default as EmptyStateCard } from './lib/feedback/EmptyStateCard.astro';
84
- export { default as GlassAlert } from './lib/feedback/GlassAlert.astro';
85
- export { default as GlassModal } from './lib/feedback/GlassModal.astro';
86
- export { default as GlassProgress } from './lib/feedback/GlassProgress.astro';
87
- export { default as IndicatorBadgeMinimal } from './lib/feedback/IndicatorBadgeMinimal.astro';
88
- export { default as NeonSpinner } from './lib/feedback/NeonSpinner.astro';
89
- export { default as PulseDot } from './lib/feedback/PulseDot.astro';
90
- export { default as RatingPill } from './lib/feedback/RatingPill.astro';
91
- export { default as ShakeErrorGroup } from './lib/feedback/ShakeErrorGroup.astro';
92
- export { default as SimpleTooltip } from './lib/feedback/SimpleTooltip.astro';
93
- export { default as SkeletonList } from './lib/feedback/SkeletonList.astro';
94
- export { default as Spotlight } from './lib/feedback/Spotlight.astro';
95
- export { default as StepProgress } from './lib/feedback/StepProgress.astro';
96
- export { default as ToastNotif } from './lib/feedback/ToastNotif.astro';
97
- export { default as TypingIndicator } from './lib/feedback/TypingIndicator.astro';
98
-
99
- // Forms
100
- export { default as AnimatedInput } from './lib/forms/AnimatedInput.astro';
101
- export { default as ChipInput } from './lib/forms/ChipInput.astro';
102
- export { default as ColorPickerInput } from './lib/forms/ColorPickerInput.astro';
103
- export { default as CurrencyInput } from './lib/forms/CurrencyInput.astro';
104
- export { default as CustomRadioGroup } from './lib/forms/CustomRadioGroup.astro';
105
- export { default as CyberpunkCheckbox } from './lib/forms/CyberpunkCheckbox.astro';
106
- export { default as DragDropUpload } from './lib/forms/DragDropUpload.astro';
107
- export { default as ErrorInput } from './lib/forms/ErrorInput.astro';
108
- export { default as FloatingPassword } from './lib/forms/FloatingPassword.astro';
109
- export { default as FormGroupVertical } from './lib/forms/FormGroupVertical.astro';
110
- export { default as GlassSlider } from './lib/forms/GlassSlider.astro';
111
- export { default as GlassTextarea } from './lib/forms/GlassTextarea.astro';
112
- export { default as ModernSelect } from './lib/forms/ModernSelect.astro';
113
- export { default as NeumorphicSwitch } from './lib/forms/NeumorphicSwitch.astro';
114
- export { default as OTPInput } from './lib/forms/OTPInput.astro';
115
- export { default as RatingStars } from './lib/forms/RatingStars.astro';
116
- export { default as SearchReveal } from './lib/forms/SearchReveal.astro';
117
- export { default as SegmentedControl } from './lib/forms/SegmentedControl.astro';
118
- export { default as SimpleFileInput } from './lib/forms/SimpleFileInput.astro';
119
- export { default as StepperInput } from './lib/forms/StepperInput.astro';
120
-
121
- // Layout
122
- export { default as BentoGrid3 } from './lib/layout/BentoGrid3.astro';
123
- export { default as CenterFixedBox } from './lib/layout/CenterFixedBox.astro';
124
- export { default as CenteredContainer } from './lib/layout/CenteredContainer.astro';
125
- export { default as ClusterHorizontal } from './lib/layout/ClusterHorizontal.astro';
126
- export { default as FeatureHero } from './lib/layout/FeatureHero.astro';
127
- export { default as FooterCenteredMinimal } from './lib/layout/FooterCenteredMinimal.astro';
128
- export { default as FullBleedSection } from './lib/layout/FullBleedSection.astro';
129
- export { default as GalleryGrid4 } from './lib/layout/GalleryGrid4.astro';
130
- export { default as GlassCardGrid } from './lib/layout/GlassCardGrid.astro';
131
- export { default as GlassSectionHeader } from './lib/layout/GlassSectionHeader.astro';
132
- export { default as LandingSectionSplit } from './lib/layout/LandingSectionSplit.astro';
133
- export { default as MasonryGrid } from './lib/layout/MasonryGrid.astro';
134
- export { default as MinimalFooterGrid } from './lib/layout/MinimalFooterGrid.astro';
135
- export { default as ScrollSnapSection } from './lib/layout/ScrollSnapSection.astro';
136
- export { default as SectionDividerText } from './lib/layout/SectionDividerText.astro';
137
- export { default as SidebarLayoutWrapper } from './lib/layout/SidebarLayoutWrapper.astro';
138
- export { default as SplitScreenLayout } from './lib/layout/SplitScreenLayout.astro';
139
- export { default as StepLayoutVertical } from './lib/layout/StepLayoutVertical.astro';
140
- export { default as StickySidebarWrapper } from './lib/layout/StickySidebarWrapper.astro';
141
- export { default as VerticalStack } from './lib/layout/VerticalStack.astro';
142
-
143
- // Navigation
144
- export { default as AnchorSideNav } from './lib/navigation/AnchorSideNav.astro';
145
- export { default as BottomNavMobile } from './lib/navigation/BottomNavMobile.astro';
146
- export { default as BreadcrumbsMinimal } from './lib/navigation/BreadcrumbsMinimal.astro';
147
- export { default as BurgerMorphIcon } from './lib/navigation/BurgerMorphIcon.astro';
148
- export { default as CommandPaletteUI } from './lib/navigation/CommandPaletteUI.astro';
149
- export { default as DotNavigationSlider } from './lib/navigation/DotNavigationSlider.astro';
150
- export { default as FloatingTabBar } from './lib/navigation/FloatingTabBar.astro';
151
- export { default as GlassNavbar } from './lib/navigation/GlassNavbar.astro';
152
- export { default as LangSwitcherPill } from './lib/navigation/LangSwitcherPill.astro';
153
- export { default as MegaMenuGlass } from './lib/navigation/MegaMenuGlass.astro';
154
- export { default as MinimalSidebar } from './lib/navigation/MinimalSidebar.astro';
155
- export { default as PaginationGlass } from './lib/navigation/PaginationGlass.astro';
156
- export { default as PaginationInfiniteUI } from './lib/navigation/PaginationInfiniteUI.astro';
157
- export { default as RadialIconMenu } from './lib/navigation/RadialIconMenu.astro';
158
- export { default as RetroArcadeMenu } from './lib/navigation/RetroArcadeMenu.astro';
159
- export { default as ScrollProgressTop } from './lib/navigation/ScrollProgressTop.astro';
160
- export { default as SimpleFooterGlass } from './lib/navigation/SimpleFooterGlass.astro';
161
- export { default as TabUnderline } from './lib/navigation/TabUnderline.astro';
162
- export { default as UserProfileNav } from './lib/navigation/UserProfileNav.astro';
163
- export { default as VerticalTabs } from './lib/navigation/VerticalTabs.astro';
164
-
165
- // Overlays
166
- export { default as AgeVerificationOverlay } from './lib/overlays/AgeVerificationOverlay.astro';
167
- export { default as BackdropBlurMask } from './lib/overlays/BackdropBlurMask.astro';
168
- export { default as BottomSheetMobile } from './lib/overlays/BottomSheetMobile.astro';
169
- export { default as CommandDialog } from './lib/overlays/CommandDialog.astro';
170
- export { default as ContextMenuOverlay } from './lib/overlays/ContextMenuOverlay.astro';
171
- export { default as CookieBannerGlass } from './lib/overlays/CookieBannerGlass.astro';
172
- export { default as ExitIntentOverlay } from './lib/overlays/ExitIntentOverlay.astro';
173
- export { default as FloatingTrayActions } from './lib/overlays/FloatingTrayActions.astro';
174
- export { default as HelpBubbleOverlay } from './lib/overlays/HelpBubbleOverlay.astro';
175
- export { default as LightboxOverlay } from './lib/overlays/LightboxOverlay.astro';
176
- export { default as LoadingOverlayFull } from './lib/overlays/LoadingOverlayFull.astro';
177
- export { default as MobileNavOverlay } from './lib/overlays/MobileNavOverlay.astro';
178
- export { default as OverlayModal } from './lib/overlays/OverlayModal.astro';
179
- export { default as PopoverMenuGlass } from './lib/overlays/PopoverMenuGlass.astro';
180
- export { default as SearchOverlayFullscreen } from './lib/overlays/SearchOverlayFullscreen.astro';
181
- export { default as SideDrawerRight } from './lib/overlays/SideDrawerRight.astro';
182
- export { default as SplashIntroOverlay } from './lib/overlays/SplashIntroOverlay.astro';
183
- export { default as SpotlightIndicator } from './lib/overlays/SpotlightIndicator.astro';
184
- export { default as ToastStackOverlay } from './lib/overlays/ToastStackOverlay.astro';
185
- export { default as TooltipActionTray } from './lib/overlays/TooltipActionTray.astro';
186
-
187
- // Typography
188
- export { default as AnimatedUnderlineLink } from './lib/typography/AnimatedUnderlineLink.astro';
189
- export { default as BackgroundClipMask } from './lib/typography/BackgroundClipMask.astro';
190
- export { default as CodeInlineGlass } from './lib/typography/CodeInlineGlass.astro';
191
- export { default as CyberpunkGlitchText } from './lib/typography/CyberpunkGlitchText.astro';
192
- export { default as DropCapParagraph } from './lib/typography/DropCapParagraph.astro';
193
- export { default as FadedVerticalText } from './lib/typography/FadedVerticalText.astro';
194
- export { default as FloatingTextLabel } from './lib/typography/FloatingTextLabel.astro';
195
- export { default as GlassBlockQuote } from './lib/typography/GlassBlockQuote.astro';
196
- export { default as GlassTextReveal } from './lib/typography/GlassTextReveal.astro';
197
- export { default as GradientHeading } from './lib/typography/GradientHeading.astro';
198
- export { default as GradientUnderlineLink } from './lib/typography/GradientUnderlineLink.astro';
199
- export { default as KbdIndicator } from './lib/typography/KbdIndicator.astro';
200
- export { default as LetterSpacingWide } from './lib/typography/LetterSpacingWide.astro';
201
- export { default as MinimalListMarkers } from './lib/typography/MinimalListMarkers.astro';
202
- export { default as MonospaceStatLine } from './lib/typography/MonospaceStatLine.astro';
203
- export { default as NeonTextHighlight } from './lib/typography/NeonTextHighlight.astro';
204
- export { default as ShadowRevealText } from './lib/typography/ShadowRevealText.astro';
205
- export { default as StrokeHeadingOutline } from './lib/typography/StrokeHeadingOutline.astro';
206
- export { default as Text3DLayer } from './lib/typography/Text3DLayer.astro';
207
- export { default as TypewriterText } from './lib/typography/TypewriterText.astro';
208
-
209
- // Sections
210
- export * from './lib/sections';
211
-
212
- // Charts
16
+ // Re-export all categories completely
17
+ export * from './lib/buttons';
18
+ export * from './lib/cards';
213
19
  export * from './lib/charts';
20
+ export * from './lib/data';
21
+ export * from './lib/feedback';
22
+ export * from './lib/forms';
23
+ export * from './lib/layout';
24
+ export * from './lib/navigation';
25
+ export * from './lib/overlays';
26
+ export * from './lib/sections';
27
+ export * from './lib/typography';
@@ -0,0 +1,162 @@
1
+ ---
2
+ /**
3
+ * NeonBorderButton — Futuristic button wrapped in an animated rotating neon conic-gradient border.
4
+ *
5
+ * @param {string} color - Primary neon hue (e.g. '#fbbf24', '#38bdf8', '#a855f7'). Default is '#d4a017'.
6
+ * @param {'sm' | 'md' | 'lg'} size - Button size variant. Default is 'md'.
7
+ * @param {string} href - Optional link destination.
8
+ * @param {boolean} disabled - Whether the button is disabled.
9
+ * @param {string} className - Additional CSS class names.
10
+ */
11
+ interface Props {
12
+ color?: string;
13
+ size?: 'sm' | 'md' | 'lg';
14
+ href?: string;
15
+ disabled?: boolean;
16
+ className?: string;
17
+ }
18
+
19
+ const {
20
+ color = '#d4a017',
21
+ size = 'md',
22
+ href,
23
+ disabled = false,
24
+ className = '',
25
+ } = Astro.props;
26
+
27
+ const Tag = href ? 'a' : 'button';
28
+ ---
29
+
30
+ <Tag
31
+ href={href}
32
+ disabled={!href && disabled ? true : undefined}
33
+ aria-disabled={disabled ? 'true' : undefined}
34
+ class:list={['neon-border-btn', `neon-border-btn--${size}`, className]}
35
+ style={`--neon-accent: ${color};`}
36
+ >
37
+ <span class="neon-border-btn__glow" aria-hidden="true"></span>
38
+ <span class="neon-border-btn__border" aria-hidden="true"></span>
39
+ <span class="neon-border-btn__content">
40
+ <slot />
41
+ </span>
42
+ </Tag>
43
+
44
+ <style>
45
+ .neon-border-btn {
46
+ --neon-speed: 4s;
47
+ position: relative;
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ text-decoration: none;
52
+ border: none;
53
+ background: transparent;
54
+ border-radius: var(--r-md, 12px);
55
+ cursor: pointer;
56
+ user-select: none;
57
+ transition: transform 0.25s ease;
58
+ }
59
+
60
+ .neon-border-btn:hover {
61
+ transform: translateY(-2px);
62
+ }
63
+
64
+ .neon-border-btn:focus-visible {
65
+ outline: 2px solid var(--neon-accent);
66
+ outline-offset: 4px;
67
+ }
68
+
69
+ .neon-border-btn[disabled],
70
+ .neon-border-btn[aria-disabled="true"] {
71
+ opacity: 0.45;
72
+ cursor: not-allowed;
73
+ pointer-events: none;
74
+ }
75
+
76
+ /* Sizes */
77
+ .neon-border-btn--sm .neon-border-btn__content {
78
+ padding: 0.45rem 1rem;
79
+ font-size: 0.8rem;
80
+ }
81
+ .neon-border-btn--md .neon-border-btn__content {
82
+ padding: 0.75rem 1.6rem;
83
+ font-size: 0.92rem;
84
+ }
85
+ .neon-border-btn--lg .neon-border-btn__content {
86
+ padding: 1rem 2.2rem;
87
+ font-size: 1.05rem;
88
+ }
89
+
90
+ /* Border track & animated beam */
91
+ .neon-border-btn__border {
92
+ position: absolute;
93
+ inset: 0;
94
+ border-radius: inherit;
95
+ padding: 1.5px;
96
+ background: conic-gradient(
97
+ from 0deg,
98
+ transparent 0deg,
99
+ transparent 90deg,
100
+ var(--neon-accent) 180deg,
101
+ transparent 270deg,
102
+ transparent 360deg
103
+ );
104
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
105
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
106
+ mask-composite: exclude;
107
+ -webkit-mask-composite: xor;
108
+ animation: neon-spin var(--neon-speed) linear infinite;
109
+ pointer-events: none;
110
+ }
111
+
112
+ .neon-border-btn__glow {
113
+ position: absolute;
114
+ inset: -3px;
115
+ border-radius: inherit;
116
+ background: radial-gradient(circle, var(--neon-accent), transparent 70%);
117
+ opacity: 0;
118
+ filter: blur(14px);
119
+ transition: opacity 0.3s ease;
120
+ pointer-events: none;
121
+ }
122
+
123
+ .neon-border-btn:hover .neon-border-btn__glow {
124
+ opacity: 0.5;
125
+ }
126
+
127
+ .neon-border-btn__content {
128
+ position: relative;
129
+ z-index: 2;
130
+ display: inline-flex;
131
+ align-items: center;
132
+ gap: var(--sp-2, 0.5rem);
133
+ width: 100%;
134
+ height: 100%;
135
+ background: rgba(10, 10, 12, 0.95);
136
+ border-radius: inherit;
137
+ color: var(--c-text-1, #ffffff);
138
+ font-family: var(--font-sans, system-ui, sans-serif);
139
+ font-weight: 700;
140
+ letter-spacing: 0.03em;
141
+ backdrop-filter: blur(16px);
142
+ transition: background 0.2s ease, color 0.2s ease;
143
+ }
144
+
145
+ .neon-border-btn:hover .neon-border-btn__content {
146
+ background: rgba(16, 16, 20, 0.98);
147
+ color: var(--neon-accent);
148
+ }
149
+
150
+ @keyframes neon-spin {
151
+ to {
152
+ transform: rotate(360deg);
153
+ }
154
+ }
155
+
156
+ @media (prefers-reduced-motion: reduce) {
157
+ .neon-border-btn__border {
158
+ animation: none;
159
+ background: var(--neon-accent);
160
+ }
161
+ }
162
+ </style>
@@ -0,0 +1,199 @@
1
+ ---
2
+ /**
3
+ * RippleButton — Interactive button featuring an expanding click ripple effect with glass styling.
4
+ *
5
+ * @param {'primary' | 'secondary' | 'ghost'} variant - Visual style variant. Default is 'primary'.
6
+ * @param {'sm' | 'md' | 'lg'} size - Button size variant. Default is 'md'.
7
+ * @param {string} href - Optional link destination.
8
+ * @param {boolean} disabled - Whether the button is disabled.
9
+ * @param {string} className - Additional CSS class names.
10
+ */
11
+ interface Props {
12
+ variant?: 'primary' | 'secondary' | 'ghost';
13
+ size?: 'sm' | 'md' | 'lg';
14
+ href?: string;
15
+ disabled?: boolean;
16
+ className?: string;
17
+ }
18
+
19
+ const {
20
+ variant = 'primary',
21
+ size = 'md',
22
+ href,
23
+ disabled = false,
24
+ className = '',
25
+ } = Astro.props;
26
+
27
+ const Tag = href ? 'a' : 'button';
28
+ ---
29
+
30
+ <Tag
31
+ href={href}
32
+ disabled={!href && disabled ? true : undefined}
33
+ aria-disabled={disabled ? 'true' : undefined}
34
+ class:list={['ripple-btn', `ripple-btn--${variant}`, `ripple-btn--${size}`, className]}
35
+ data-ripple-btn
36
+ >
37
+ <span class="ripple-btn__label"><slot /></span>
38
+ <span class="ripple-btn__container" aria-hidden="true"></span>
39
+ </Tag>
40
+
41
+ <style>
42
+ .ripple-btn {
43
+ --btn-primary-bg: linear-gradient(135deg, rgba(184, 134, 11, 0.9), rgba(212, 160, 23, 0.9));
44
+ --btn-primary-color: #050505;
45
+ --btn-secondary-bg: rgba(255, 255, 255, 0.05);
46
+ --btn-secondary-color: var(--c-text-1, #ffffff);
47
+ --btn-ghost-bg: transparent;
48
+ --btn-ghost-color: var(--c-primary-light, #d4a017);
49
+
50
+ position: relative;
51
+ display: inline-flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ overflow: hidden;
55
+ font-family: var(--font-sans, system-ui, sans-serif);
56
+ font-weight: 700;
57
+ text-decoration: none;
58
+ border-radius: var(--r-md, 12px);
59
+ border: 1px solid rgba(255, 255, 255, 0.1);
60
+ cursor: pointer;
61
+ user-select: none;
62
+ transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s ease, border-color 0.2s ease;
63
+ }
64
+
65
+ .ripple-btn:focus-visible {
66
+ outline: 2px solid var(--c-primary-light, #d4a017);
67
+ outline-offset: 3px;
68
+ }
69
+
70
+ .ripple-btn[disabled],
71
+ .ripple-btn[aria-disabled="true"] {
72
+ opacity: 0.5;
73
+ cursor: not-allowed;
74
+ pointer-events: none;
75
+ }
76
+
77
+ /* Variants */
78
+ .ripple-btn--primary {
79
+ background: var(--btn-primary-bg);
80
+ color: var(--btn-primary-color);
81
+ box-shadow: 0 4px 20px rgba(184, 134, 11, 0.25);
82
+ }
83
+ .ripple-btn--primary:hover {
84
+ transform: translateY(-2px);
85
+ box-shadow: 0 8px 30px rgba(184, 134, 11, 0.4);
86
+ border-color: rgba(254, 243, 199, 0.4);
87
+ }
88
+
89
+ .ripple-btn--secondary {
90
+ background: var(--btn-secondary-bg);
91
+ color: var(--btn-secondary-color);
92
+ backdrop-filter: blur(12px);
93
+ }
94
+ .ripple-btn--secondary:hover {
95
+ background: rgba(255, 255, 255, 0.09);
96
+ border-color: rgba(184, 134, 11, 0.3);
97
+ transform: translateY(-2px);
98
+ }
99
+
100
+ .ripple-btn--ghost {
101
+ background: var(--btn-ghost-bg);
102
+ color: var(--btn-ghost-color);
103
+ border-color: transparent;
104
+ }
105
+ .ripple-btn--ghost:hover {
106
+ background: rgba(184, 134, 11, 0.1);
107
+ border-color: rgba(184, 134, 11, 0.2);
108
+ }
109
+
110
+ /* Sizes */
111
+ .ripple-btn--sm {
112
+ padding: 0.45rem 1rem;
113
+ font-size: 0.8rem;
114
+ letter-spacing: 0.02em;
115
+ }
116
+ .ripple-btn--md {
117
+ padding: 0.75rem 1.6rem;
118
+ font-size: 0.92rem;
119
+ letter-spacing: 0.02em;
120
+ }
121
+ .ripple-btn--lg {
122
+ padding: 1rem 2.2rem;
123
+ font-size: 1.05rem;
124
+ letter-spacing: 0.03em;
125
+ }
126
+
127
+ .ripple-btn__label {
128
+ position: relative;
129
+ z-index: 2;
130
+ display: inline-flex;
131
+ align-items: center;
132
+ gap: var(--sp-2, 0.5rem);
133
+ pointer-events: none;
134
+ }
135
+
136
+ .ripple-btn__container {
137
+ position: absolute;
138
+ inset: 0;
139
+ z-index: 1;
140
+ overflow: hidden;
141
+ pointer-events: none;
142
+ }
143
+
144
+ :global(.ripple-effect) {
145
+ position: absolute;
146
+ border-radius: 50%;
147
+ transform: scale(0);
148
+ animation: ripple-grow 0.6s cubic-bezier(0, 0, 0.2, 1) forwards;
149
+ background: rgba(255, 255, 255, 0.35);
150
+ pointer-events: none;
151
+ }
152
+
153
+ @keyframes ripple-grow {
154
+ to {
155
+ transform: scale(4);
156
+ opacity: 0;
157
+ }
158
+ }
159
+
160
+ @media (prefers-reduced-motion: reduce) {
161
+ .ripple-btn { transition: none; }
162
+ :global(.ripple-effect) { display: none; }
163
+ }
164
+ </style>
165
+
166
+ <script>
167
+ function setupRipples() {
168
+ const buttons = document.querySelectorAll('[data-ripple-btn]');
169
+ buttons.forEach((btn) => {
170
+ if (btn.getAttribute('data-ripple-init')) return;
171
+ btn.setAttribute('data-ripple-init', 'true');
172
+
173
+ btn.addEventListener('pointerdown', (e: Event) => {
174
+ const mouseEvent = e as MouseEvent;
175
+ const target = mouseEvent.currentTarget as HTMLElement;
176
+ const container = target.querySelector('.ripple-btn__container');
177
+ if (!container) return;
178
+
179
+ const rect = target.getBoundingClientRect();
180
+ const size = Math.max(rect.width, rect.height);
181
+ const x = mouseEvent.clientX - rect.left - size / 2;
182
+ const y = mouseEvent.clientY - rect.top - size / 2;
183
+
184
+ const ripple = document.createElement('span');
185
+ ripple.className = 'ripple-effect';
186
+ ripple.style.width = `${size}px`;
187
+ ripple.style.height = `${size}px`;
188
+ ripple.style.left = `${x}px`;
189
+ ripple.style.top = `${y}px`;
190
+
191
+ container.appendChild(ripple);
192
+ setTimeout(() => ripple.remove(), 650);
193
+ });
194
+ });
195
+ }
196
+
197
+ setupRipples();
198
+ document.addEventListener('astro:page-load', setupRipples);
199
+ </script>