astro-component-kit 0.2.2 → 0.3.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 (57) hide show
  1. package/README.md +4 -4
  2. package/package.json +11 -9
  3. package/src/components/index.ts +12 -9
  4. package/src/components/lib/AnimatedGalaxy.astro +4 -2
  5. package/src/components/lib/Galaxy3D.astro +237 -185
  6. package/src/components/lib/LogoWithGalaxy.astro +2 -2
  7. package/src/components/lib/buttons/index.ts +4 -1
  8. package/src/components/lib/cards/index.ts +3 -0
  9. package/src/components/lib/charts/DonutChart.astro +1 -1
  10. package/src/components/lib/charts/index.ts +3 -0
  11. package/src/components/lib/data/index.ts +3 -0
  12. package/src/components/lib/feedback/index.ts +3 -0
  13. package/src/components/lib/forms/index.ts +3 -0
  14. package/src/components/lib/index.ts +17 -6
  15. package/src/components/lib/layout/BentoGrid3.astro +79 -9
  16. package/src/components/lib/layout/CenterFixedBox.astro +52 -2
  17. package/src/components/lib/layout/CenteredContainer.astro +44 -5
  18. package/src/components/lib/layout/ClusterHorizontal.astro +36 -2
  19. package/src/components/lib/layout/FeatureHero.astro +119 -50
  20. package/src/components/lib/layout/FooterCenteredMinimal.astro +57 -9
  21. package/src/components/lib/layout/FullBleedSection.astro +44 -2
  22. package/src/components/lib/layout/GalleryGrid4.astro +35 -3
  23. package/src/components/lib/layout/GlassCardGrid.astro +24 -2
  24. package/src/components/lib/layout/GlassSectionHeader.astro +72 -11
  25. package/src/components/lib/layout/LandingSectionSplit.astro +83 -8
  26. package/src/components/lib/layout/MasonryGrid.astro +42 -3
  27. package/src/components/lib/layout/MinimalFooterGrid.astro +83 -11
  28. package/src/components/lib/layout/ScrollSnapSection.astro +37 -3
  29. package/src/components/lib/layout/SectionDividerText.astro +44 -4
  30. package/src/components/lib/layout/SidebarLayoutWrapper.astro +62 -7
  31. package/src/components/lib/layout/SplitScreenLayout.astro +62 -6
  32. package/src/components/lib/layout/StepLayoutVertical.astro +83 -10
  33. package/src/components/lib/layout/StickySidebarWrapper.astro +69 -6
  34. package/src/components/lib/layout/VerticalStack.astro +35 -5
  35. package/src/components/lib/layout/index.ts +17 -14
  36. package/src/components/lib/navigation/index.ts +3 -0
  37. package/src/components/lib/overlays/index.ts +3 -0
  38. package/src/components/lib/sections/ContactGlassForm.astro +361 -0
  39. package/src/components/lib/sections/CtaAppDownload.astro +258 -0
  40. package/src/components/lib/sections/CtaGlowBanner.astro +267 -0
  41. package/src/components/lib/sections/FaqAccordionSection.astro +349 -0
  42. package/src/components/lib/sections/FeatureBentoGrid.astro +449 -0
  43. package/src/components/lib/sections/FeatureTimelineFlow.astro +254 -0
  44. package/src/components/lib/sections/PricingComparisonMatrix.astro +468 -0
  45. package/src/components/lib/sections/PricingTierCards.astro +256 -0
  46. package/src/components/lib/sections/StatsMetricShowcase.astro +332 -0
  47. package/src/components/lib/sections/TeamGridSection.astro +333 -0
  48. package/src/components/lib/sections/TestimonialWallGlass.astro +406 -0
  49. package/src/components/lib/sections/index.ts +22 -0
  50. package/src/components/lib/typography/index.ts +3 -0
  51. package/src/components/lib/AnimatedInput.astro +0 -82
  52. package/src/components/lib/Badge.astro +0 -52
  53. package/src/components/lib/GlassButton.astro +0 -87
  54. package/src/components/lib/GlassCard.astro +0 -72
  55. package/src/components/lib/GlassNavbar.astro +0 -67
  56. package/src/components/lib/GlowButton.astro +0 -60
  57. /package/src/components/lib/buttons/{3dPushButton.astro → ThreeDPushButton.astro} +0 -0
@@ -0,0 +1,256 @@
1
+ ---
2
+ /**
3
+ * PricingTierCards — Full-page 3-tier pricing cards section with animated highlights and feature breakdowns.
4
+ *
5
+ * @param {string} badge - Eyebrow badge text.
6
+ * @param {string} title - Main headline.
7
+ * @param {string} subtitle - Description text.
8
+ */
9
+ interface Props {
10
+ badge?: string;
11
+ title?: string;
12
+ subtitle?: string;
13
+ className?: string;
14
+ }
15
+
16
+ const {
17
+ badge = "Plans & Pricing",
18
+ title = "Simple, Predictable Pricing for Everyone",
19
+ subtitle = "Start for free and upgrade as your Astro traffic scales. No surprise overage charges.",
20
+ className = ""
21
+ } = Astro.props;
22
+ ---
23
+
24
+ <section class={`tier-pricing-section ${className}`} aria-labelledby="tier-pricing-title">
25
+ <div class="container">
26
+ <div class="section-header">
27
+ {badge && <span class="section-badge">{badge}</span>}
28
+ <h2 id="tier-pricing-title" class="section-title">{title}</h2>
29
+ <p class="section-subtitle">{subtitle}</p>
30
+ </div>
31
+
32
+ <div class="tier-grid">
33
+ <!-- Free Tier -->
34
+ <div class="tier-card">
35
+ <span class="tier-badge">Community</span>
36
+ <h3 class="tier-name">Hobby</h3>
37
+ <p class="tier-desc">Great for learning Astro and small hobby sites.</p>
38
+ <div class="tier-price">$0 <span>/ forever</span></div>
39
+ <a href="#free" class="tier-btn tier-btn--ghost">Get Started Free</a>
40
+ <ul class="tier-list">
41
+ <li>✓ 1 Active Project</li>
42
+ <li>✓ Core UI Components</li>
43
+ <li>✓ Community Support</li>
44
+ <li>✓ MIT Open Source License</li>
45
+ </ul>
46
+ </div>
47
+
48
+ <!-- Pro Tier (Highlight) -->
49
+ <div class="tier-card tier-card--highlight">
50
+ <span class="tier-badge tier-badge--gold">RECOMMENDED</span>
51
+ <h3 class="tier-name">Pro Developer</h3>
52
+ <p class="tier-desc">Perfect for freelancers and modern digital creators.</p>
53
+ <div class="tier-price">$29 <span>/ month</span></div>
54
+ <a href="#pro" class="tier-btn tier-btn--primary">Get Pro Access</a>
55
+ <ul class="tier-list">
56
+ <li>✓ Unlimited Projects</li>
57
+ <li>✓ All 200+ UI & 3D Components</li>
58
+ <li>✓ Full Source Code & Figma Kit</li>
59
+ <li>✓ Lifetime Updates</li>
60
+ <li>✓ Direct Email Support</li>
61
+ </ul>
62
+ </div>
63
+
64
+ <!-- Team Tier -->
65
+ <div class="tier-card">
66
+ <span class="tier-badge">Agencies</span>
67
+ <h3 class="tier-name">Agency Team</h3>
68
+ <p class="tier-desc">For studios and multi-developer organizations.</p>
69
+ <div class="tier-price">$99 <span>/ month</span></div>
70
+ <a href="#agency" class="tier-btn tier-btn--ghost">Get Team License</a>
71
+ <ul class="tier-list">
72
+ <li>✓ Up to 10 Team Seats</li>
73
+ <li>✓ Commercial Client Redistribution</li>
74
+ <li>✓ Dedicated Slack Support Channel</li>
75
+ <li>✓ Custom Component Requests</li>
76
+ <li>✓ 1-on-1 Architecture Reviews</li>
77
+ </ul>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </section>
82
+
83
+ <style>
84
+ .tier-pricing-section {
85
+ padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
86
+ background: var(--c-bg-primary, #030712);
87
+ }
88
+
89
+ .container {
90
+ max-width: 1200px;
91
+ margin: 0 auto;
92
+ }
93
+
94
+ .section-header {
95
+ text-align: center;
96
+ max-width: 760px;
97
+ margin: 0 auto 3.5rem;
98
+ }
99
+
100
+ .section-badge {
101
+ display: inline-flex;
102
+ padding: 0.35rem 0.9rem;
103
+ border-radius: 9999px;
104
+ font-size: 0.78rem;
105
+ font-weight: 700;
106
+ letter-spacing: 0.06em;
107
+ text-transform: uppercase;
108
+ background: rgba(184, 134, 11, 0.12);
109
+ color: #eab308;
110
+ border: 1px solid rgba(234, 179, 8, 0.25);
111
+ margin-bottom: var(--sp-4, 1rem);
112
+ }
113
+
114
+ .section-title {
115
+ font-size: clamp(2rem, 4vw, 3rem);
116
+ font-weight: 900;
117
+ color: #fff;
118
+ line-height: 1.15;
119
+ letter-spacing: -0.02em;
120
+ margin: 0 0 var(--sp-4, 1rem);
121
+ }
122
+
123
+ .section-subtitle {
124
+ font-size: 1.1rem;
125
+ color: #94a3b8;
126
+ line-height: 1.6;
127
+ margin: 0;
128
+ }
129
+
130
+ .tier-grid {
131
+ display: grid;
132
+ grid-template-columns: repeat(3, 1fr);
133
+ gap: 1.5rem;
134
+ align-items: center;
135
+ }
136
+
137
+ .tier-card {
138
+ background: rgba(15, 23, 42, 0.55);
139
+ border: 1px solid rgba(255, 255, 255, 0.08);
140
+ border-radius: 20px;
141
+ padding: 2.5rem 2rem;
142
+ display: flex;
143
+ flex-direction: column;
144
+ transition: all 0.3s ease;
145
+ }
146
+
147
+ .tier-card:hover {
148
+ transform: translateY(-4px);
149
+ border-color: rgba(255, 255, 255, 0.2);
150
+ }
151
+
152
+ .tier-card--highlight {
153
+ background: rgba(20, 25, 50, 0.8);
154
+ border-color: rgba(234, 179, 8, 0.4);
155
+ box-shadow: 0 0 35px -10px rgba(234, 179, 8, 0.2);
156
+ padding: 3rem 2rem;
157
+ }
158
+
159
+ .tier-badge {
160
+ align-self: flex-start;
161
+ padding: 0.2rem 0.65rem;
162
+ border-radius: 9999px;
163
+ font-size: 0.72rem;
164
+ font-weight: 700;
165
+ text-transform: uppercase;
166
+ background: rgba(255, 255, 255, 0.08);
167
+ color: #cbd5e1;
168
+ margin-bottom: 1rem;
169
+ }
170
+
171
+ .tier-badge--gold {
172
+ background: rgba(234, 179, 8, 0.2);
173
+ color: #facc15;
174
+ border: 1px solid rgba(234, 179, 8, 0.35);
175
+ }
176
+
177
+ .tier-name {
178
+ font-size: 1.5rem;
179
+ font-weight: 800;
180
+ color: #fff;
181
+ margin: 0 0 0.3rem;
182
+ }
183
+
184
+ .tier-desc {
185
+ font-size: 0.88rem;
186
+ color: #94a3b8;
187
+ margin: 0 0 1.5rem;
188
+ min-height: 42px;
189
+ }
190
+
191
+ .tier-price {
192
+ font-size: 2.8rem;
193
+ font-weight: 900;
194
+ color: #fff;
195
+ margin-bottom: 1.75rem;
196
+ line-height: 1;
197
+ }
198
+
199
+ .tier-price span {
200
+ font-size: 0.95rem;
201
+ color: #64748b;
202
+ font-weight: 500;
203
+ }
204
+
205
+ .tier-btn {
206
+ display: block;
207
+ text-align: center;
208
+ padding: 0.85rem;
209
+ border-radius: 10px;
210
+ font-size: 0.95rem;
211
+ font-weight: 700;
212
+ text-decoration: none;
213
+ transition: all 0.25s ease;
214
+ margin-bottom: 2rem;
215
+ }
216
+
217
+ .tier-btn--primary {
218
+ background: linear-gradient(135deg, #eab308, #d97706);
219
+ color: #000;
220
+ box-shadow: 0 4px 15px rgba(234, 179, 8, 0.3);
221
+ }
222
+
223
+ .tier-btn--primary:hover {
224
+ filter: brightness(1.1);
225
+ }
226
+
227
+ .tier-btn--ghost {
228
+ background: rgba(255, 255, 255, 0.05);
229
+ border: 1px solid rgba(255, 255, 255, 0.12);
230
+ color: #fff;
231
+ }
232
+
233
+ .tier-btn--ghost:hover {
234
+ background: rgba(255, 255, 255, 0.12);
235
+ }
236
+
237
+ .tier-list {
238
+ list-style: none;
239
+ padding: 0;
240
+ margin: 0;
241
+ display: flex;
242
+ flex-direction: column;
243
+ gap: 0.85rem;
244
+ }
245
+
246
+ .tier-list li {
247
+ font-size: 0.88rem;
248
+ color: #cbd5e1;
249
+ }
250
+
251
+ @media (max-width: 960px) {
252
+ .tier-grid {
253
+ grid-template-columns: 1fr;
254
+ }
255
+ }
256
+ </style>
@@ -0,0 +1,332 @@
1
+ ---
2
+ /**
3
+ * StatsMetricShowcase — Full-page data and numbers showcase section with KPIs, sparklines, and live telemetry indicators.
4
+ *
5
+ * @param {string} badge - Eyebrow badge text.
6
+ * @param {string} title - Section main heading.
7
+ * @param {string} subtitle - Description text.
8
+ */
9
+ interface Props {
10
+ badge?: string;
11
+ title?: string;
12
+ subtitle?: string;
13
+ className?: string;
14
+ }
15
+
16
+ const {
17
+ badge = "Global Scale",
18
+ title = "Built for Production at Enterprise Scale",
19
+ subtitle = "Powering millions of monthly page views with flawless reliability, instant static caching, and ultra-low latency.",
20
+ className = ""
21
+ } = Astro.props;
22
+
23
+ const stats = [
24
+ {
25
+ value: "200+",
26
+ label: "Handcrafted UI Components",
27
+ change: "+45 this quarter",
28
+ positive: true,
29
+ desc: "From atomic buttons to full landing sections."
30
+ },
31
+ {
32
+ value: "99.99%",
33
+ label: "Uptime & Reliability",
34
+ change: "Zero incidents",
35
+ positive: true,
36
+ desc: "Hosted on global edge CDN distribution networks."
37
+ },
38
+ {
39
+ value: "< 50ms",
40
+ label: "Time to First Byte (TTFB)",
41
+ change: "3.2x faster",
42
+ positive: true,
43
+ desc: "Pre-rendered static HTML with immutable cache."
44
+ },
45
+ {
46
+ value: "10k+",
47
+ label: "Active Developers",
48
+ change: "+120% YoY growth",
49
+ positive: true,
50
+ desc: "Deploying production Astro apps worldwide."
51
+ }
52
+ ];
53
+ ---
54
+
55
+ <section class={`stats-section ${className}`} aria-labelledby="stats-title">
56
+ <div class="stats-bg" aria-hidden="true">
57
+ <div class="stats-glow"></div>
58
+ </div>
59
+
60
+ <div class="container">
61
+ <!-- Header -->
62
+ <div class="section-header">
63
+ {badge && <span class="section-badge">{badge}</span>}
64
+ <h2 id="stats-title" class="section-title">{title}</h2>
65
+ <p class="section-subtitle">{subtitle}</p>
66
+ </div>
67
+
68
+ <!-- Stats Grid -->
69
+ <div class="stats-grid">
70
+ {stats.map((stat, i) => (
71
+ <article class="stat-card">
72
+ <div class="stat-top">
73
+ <span class="stat-num">{stat.value}</span>
74
+ <span class="stat-badge">{stat.change}</span>
75
+ </div>
76
+ <h3 class="stat-label">{stat.label}</h3>
77
+ <p class="stat-desc">{stat.desc}</p>
78
+ <div class="stat-chart-bar" aria-hidden="true">
79
+ <div class="chart-progress" style={`width: ${75 + i * 8}%;`}></div>
80
+ </div>
81
+ </article>
82
+ ))}
83
+ </div>
84
+
85
+ <!-- Live Telemetry Banner -->
86
+ <div class="telemetry-banner">
87
+ <div class="telemetry-live">
88
+ <span class="live-dot"></span>
89
+ <span class="live-label">LIVE NETWORK TELEMETRY</span>
90
+ </div>
91
+ <div class="telemetry-items">
92
+ <div class="telemetry-item">
93
+ <span class="tel-name">Edge POPs:</span>
94
+ <span class="tel-val">310 Cities</span>
95
+ </div>
96
+ <div class="telemetry-item">
97
+ <span class="tel-name">Global CDN Latency:</span>
98
+ <span class="tel-val">18ms avg</span>
99
+ </div>
100
+ <div class="telemetry-item">
101
+ <span class="tel-name">Asset Compression:</span>
102
+ <span class="tel-val">Brotli / Gzip Enabled</span>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </section>
108
+
109
+ <style>
110
+ .stats-section {
111
+ position: relative;
112
+ padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
113
+ background: var(--c-bg-primary, #030712);
114
+ overflow: hidden;
115
+ }
116
+
117
+ .stats-bg {
118
+ position: absolute;
119
+ inset: 0;
120
+ pointer-events: none;
121
+ z-index: 0;
122
+ }
123
+
124
+ .stats-glow {
125
+ position: absolute;
126
+ top: 50%;
127
+ left: 50%;
128
+ transform: translate(-50%, -50%);
129
+ width: 700px;
130
+ height: 400px;
131
+ background: radial-gradient(circle, rgba(16, 185, 129, 0.08), transparent 70%);
132
+ filter: blur(120px);
133
+ }
134
+
135
+ .container {
136
+ position: relative;
137
+ z-index: 1;
138
+ max-width: 1200px;
139
+ margin: 0 auto;
140
+ }
141
+
142
+ .section-header {
143
+ text-align: center;
144
+ max-width: 780px;
145
+ margin: 0 auto 3.5rem;
146
+ }
147
+
148
+ .section-badge {
149
+ display: inline-flex;
150
+ padding: 0.35rem 0.9rem;
151
+ border-radius: 9999px;
152
+ font-size: 0.78rem;
153
+ font-weight: 700;
154
+ letter-spacing: 0.06em;
155
+ text-transform: uppercase;
156
+ background: rgba(16, 185, 129, 0.12);
157
+ color: #34d399;
158
+ border: 1px solid rgba(16, 185, 129, 0.25);
159
+ margin-bottom: var(--sp-4, 1rem);
160
+ }
161
+
162
+ .section-title {
163
+ font-size: clamp(2rem, 4vw, 3rem);
164
+ font-weight: 900;
165
+ color: #fff;
166
+ line-height: 1.15;
167
+ letter-spacing: -0.02em;
168
+ margin: 0 0 var(--sp-4, 1rem);
169
+ }
170
+
171
+ .section-subtitle {
172
+ font-size: 1.1rem;
173
+ color: #94a3b8;
174
+ line-height: 1.6;
175
+ margin: 0;
176
+ }
177
+
178
+ .stats-grid {
179
+ display: grid;
180
+ grid-template-columns: repeat(4, 1fr);
181
+ gap: 1.5rem;
182
+ margin-bottom: 2.5rem;
183
+ }
184
+
185
+ .stat-card {
186
+ background: rgba(15, 23, 42, 0.6);
187
+ backdrop-filter: blur(20px);
188
+ border: 1px solid rgba(255, 255, 255, 0.08);
189
+ border-radius: var(--r-xl, 20px);
190
+ padding: 2rem 1.75rem;
191
+ display: flex;
192
+ flex-direction: column;
193
+ justify-content: space-between;
194
+ transition: transform 0.3s ease, border-color 0.3s ease;
195
+ }
196
+
197
+ .stat-card:hover {
198
+ transform: translateY(-4px);
199
+ border-color: rgba(255, 255, 255, 0.2);
200
+ }
201
+
202
+ .stat-top {
203
+ display: flex;
204
+ align-items: baseline;
205
+ justify-content: space-between;
206
+ margin-bottom: 0.75rem;
207
+ }
208
+
209
+ .stat-num {
210
+ font-size: 2.5rem;
211
+ font-weight: 900;
212
+ color: #fff;
213
+ line-height: 1;
214
+ letter-spacing: -0.02em;
215
+ }
216
+
217
+ .stat-badge {
218
+ padding: 0.2rem 0.55rem;
219
+ background: rgba(16, 185, 129, 0.15);
220
+ color: #34d399;
221
+ border-radius: 9999px;
222
+ font-size: 0.7rem;
223
+ font-weight: 700;
224
+ }
225
+
226
+ .stat-label {
227
+ font-size: 1.05rem;
228
+ font-weight: 700;
229
+ color: #f1f5f9;
230
+ margin: 0 0 0.5rem;
231
+ }
232
+
233
+ .stat-desc {
234
+ font-size: 0.85rem;
235
+ color: #94a3b8;
236
+ line-height: 1.5;
237
+ margin: 0 0 1.25rem;
238
+ }
239
+
240
+ .stat-chart-bar {
241
+ height: 4px;
242
+ background: rgba(255, 255, 255, 0.08);
243
+ border-radius: 9999px;
244
+ overflow: hidden;
245
+ }
246
+
247
+ .chart-progress {
248
+ height: 100%;
249
+ background: linear-gradient(90deg, #10b981, #3b82f6);
250
+ border-radius: 9999px;
251
+ }
252
+
253
+ /* Live Telemetry Banner */
254
+ .telemetry-banner {
255
+ display: flex;
256
+ align-items: center;
257
+ justify-content: space-between;
258
+ gap: 2rem;
259
+ padding: 1.25rem 2rem;
260
+ background: rgba(10, 15, 30, 0.8);
261
+ border: 1px solid rgba(255, 255, 255, 0.08);
262
+ border-radius: 16px;
263
+ flex-wrap: wrap;
264
+ }
265
+
266
+ .telemetry-live {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 0.65rem;
270
+ }
271
+
272
+ .live-dot {
273
+ width: 10px;
274
+ height: 10px;
275
+ border-radius: 50%;
276
+ background: #10b981;
277
+ box-shadow: 0 0 12px #10b981;
278
+ animation: livePulse 2s infinite ease-in-out;
279
+ }
280
+
281
+ @keyframes livePulse {
282
+ 0%, 100% { transform: scale(1); opacity: 1; }
283
+ 50% { transform: scale(1.4); opacity: 0.5; }
284
+ }
285
+
286
+ .live-label {
287
+ font-size: 0.78rem;
288
+ font-weight: 800;
289
+ letter-spacing: 0.08em;
290
+ color: #10b981;
291
+ }
292
+
293
+ .telemetry-items {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 2rem;
297
+ flex-wrap: wrap;
298
+ }
299
+
300
+ .telemetry-item {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 0.4rem;
304
+ font-size: 0.85rem;
305
+ }
306
+
307
+ .tel-name {
308
+ color: #64748b;
309
+ }
310
+
311
+ .tel-val {
312
+ color: #f1f5f9;
313
+ font-weight: 600;
314
+ }
315
+
316
+ @media (max-width: 1024px) {
317
+ .stats-grid {
318
+ grid-template-columns: repeat(2, 1fr);
319
+ }
320
+ }
321
+
322
+ @media (max-width: 640px) {
323
+ .stats-grid {
324
+ grid-template-columns: 1fr;
325
+ }
326
+ .telemetry-banner {
327
+ flex-direction: column;
328
+ align-items: flex-start;
329
+ gap: 1rem;
330
+ }
331
+ }
332
+ </style>