astro-component-kit 0.4.0 → 0.5.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 (208) hide show
  1. package/README.md +139 -27
  2. package/bin/cli.js +67 -0
  3. package/bin/installer.js +179 -0
  4. package/package.json +35 -5
  5. package/src/components/index.ts +2 -0
  6. package/src/components/lib/Galaxy3D.astro +249 -137
  7. package/src/components/lib/app/AppSidebar.astro +249 -0
  8. package/src/components/lib/app/AppTopbar.astro +284 -0
  9. package/src/components/lib/app/ArrivalsBoard.astro +176 -0
  10. package/src/components/lib/app/AuthCard.astro +213 -0
  11. package/src/components/lib/app/DataTable.astro +346 -0
  12. package/src/components/lib/app/GuestProfileCard.astro +133 -0
  13. package/src/components/lib/app/HousekeepingBoard.astro +189 -0
  14. package/src/components/lib/app/PageHeader.astro +157 -0
  15. package/src/components/lib/app/PlanUsageCard.astro +112 -0
  16. package/src/components/lib/app/RoomRack.astro +207 -0
  17. package/src/components/lib/app/SettingsSection.astro +96 -0
  18. package/src/components/lib/app/SwitchRow.astro +71 -0
  19. package/src/components/lib/app/TeamMembers.astro +190 -0
  20. package/src/components/lib/app/app-icons.ts +52 -0
  21. package/src/components/lib/app/index.ts +19 -0
  22. package/src/components/lib/charts/AreaChart.astro +4 -4
  23. package/src/components/lib/charts/BarChart.astro +3 -3
  24. package/src/components/lib/charts/ChartFrame.astro +10 -10
  25. package/src/components/lib/charts/DonutChart.astro +2 -2
  26. package/src/components/lib/charts/DumbbellChart.astro +1 -1
  27. package/src/components/lib/charts/ForecastLineChart.astro +1 -1
  28. package/src/components/lib/charts/GaugeChart.astro +1 -1
  29. package/src/components/lib/charts/HeatmapChart.astro +1 -1
  30. package/src/components/lib/charts/HorizontalBarChart.astro +2 -2
  31. package/src/components/lib/charts/KpiStatTile.astro +4 -4
  32. package/src/components/lib/charts/LinearProgressGauge.astro +4 -4
  33. package/src/components/lib/charts/MetricDeltaTable.astro +3 -3
  34. package/src/components/lib/charts/RadarMetricChart.astro +4 -4
  35. package/src/components/lib/charts/RadialBarChart.astro +1 -1
  36. package/src/components/lib/charts/RetentionCohortTable.astro +2 -2
  37. package/src/components/lib/charts/TreemapChart.astro +1 -1
  38. package/src/components/lib/ecommerce/CartDrawer.astro +483 -0
  39. package/src/components/lib/ecommerce/CartPageList.astro +290 -0
  40. package/src/components/lib/ecommerce/CartToast.astro +276 -0
  41. package/src/components/lib/ecommerce/CategoryTiles.astro +143 -0
  42. package/src/components/lib/ecommerce/CheckoutForm.astro +423 -0
  43. package/src/components/lib/ecommerce/CountdownBanner.astro +230 -0
  44. package/src/components/lib/ecommerce/FilterBar.astro +278 -0
  45. package/src/components/lib/ecommerce/FilterSidebar.astro +405 -0
  46. package/src/components/lib/ecommerce/LiveActivityToast.astro +213 -0
  47. package/src/components/lib/ecommerce/OrderSummary.astro +295 -0
  48. package/src/components/lib/ecommerce/ProductBuyBox.astro +247 -0
  49. package/src/components/lib/ecommerce/ProductCardMinimal.astro +229 -0
  50. package/src/components/lib/ecommerce/ProductGallery.astro +145 -0
  51. package/src/components/lib/ecommerce/ProductGrid.astro +118 -0
  52. package/src/components/lib/ecommerce/ProductMedia.astro +113 -0
  53. package/src/components/lib/ecommerce/ProductRating.astro +78 -0
  54. package/src/components/lib/ecommerce/ProductToolbar.astro +93 -0
  55. package/src/components/lib/ecommerce/PromoBar.astro +145 -0
  56. package/src/components/lib/ecommerce/StockIndicator.astro +127 -0
  57. package/src/components/lib/ecommerce/StoreHeader.astro +446 -0
  58. package/src/components/lib/ecommerce/StoreHero.astro +260 -0
  59. package/src/components/lib/ecommerce/StoreProductCard.astro +307 -0
  60. package/src/components/lib/ecommerce/TrustBadges.astro +101 -0
  61. package/src/components/lib/ecommerce/VariantPicker.astro +145 -0
  62. package/src/components/lib/ecommerce/cart-store.ts +151 -0
  63. package/src/components/lib/ecommerce/catalog-filter.ts +62 -0
  64. package/src/components/lib/ecommerce/index.ts +34 -0
  65. package/src/components/lib/ecommerce/product-icons.ts +28 -0
  66. package/src/components/lib/ecommerce/types.ts +70 -0
  67. package/src/components/lib/forms/AnimatedInput.astro +4 -2
  68. package/src/components/lib/forms/CustomRadioGroup.astro +3 -1
  69. package/src/components/lib/index.ts +2 -0
  70. package/src/components/lib/layout/BentoGrid3.astro +6 -4
  71. package/src/components/lib/layout/CenterFixedBox.astro +2 -2
  72. package/src/components/lib/layout/CenteredContainer.astro +4 -2
  73. package/src/components/lib/layout/ClusterHorizontal.astro +2 -2
  74. package/src/components/lib/layout/FeatureHero.astro +4 -2
  75. package/src/components/lib/layout/FooterCenteredMinimal.astro +4 -2
  76. package/src/components/lib/layout/FullBleedSection.astro +2 -2
  77. package/src/components/lib/layout/GalleryGrid4.astro +2 -2
  78. package/src/components/lib/layout/HolyGrailGrid.astro +11 -9
  79. package/src/components/lib/layout/LandingSectionSplit.astro +5 -3
  80. package/src/components/lib/layout/MasonryGrid.astro +2 -2
  81. package/src/components/lib/layout/MinimalFooterGrid.astro +1 -1
  82. package/src/components/lib/layout/ScrollSnapSection.astro +1 -1
  83. package/src/components/lib/layout/SidebarLayoutWrapper.astro +4 -2
  84. package/src/components/lib/layout/SplitScreenLayout.astro +3 -3
  85. package/src/components/lib/layout/StepLayoutVertical.astro +1 -1
  86. package/src/components/lib/layout/StickySidebarWrapper.astro +4 -2
  87. package/src/components/lib/sections/AgencyContactBrief.astro +194 -0
  88. package/src/components/lib/sections/AgencyFooterCta.astro +94 -0
  89. package/src/components/lib/sections/AgencyHeader.astro +161 -0
  90. package/src/components/lib/sections/AgencyHeroKinetic.astro +172 -0
  91. package/src/components/lib/sections/AgencyServicesList.astro +113 -0
  92. package/src/components/lib/sections/AgencyTeamGrid.astro +111 -0
  93. package/src/components/lib/sections/AgencyWorkGrid.astro +147 -0
  94. package/src/components/lib/sections/BlogGridSection.astro +9 -7
  95. package/src/components/lib/sections/ButtonsShowcase.astro +20 -18
  96. package/src/components/lib/sections/CardsShowcase.astro +28 -26
  97. package/src/components/lib/sections/CareersOpenings.astro +10 -8
  98. package/src/components/lib/sections/ChangelogSection.astro +20 -7
  99. package/src/components/lib/sections/ContactGlassForm.astro +10 -8
  100. package/src/components/lib/sections/ContactSplitMap.astro +11 -9
  101. package/src/components/lib/sections/CtaAppDownload.astro +13 -11
  102. package/src/components/lib/sections/CtaGlowBanner.astro +12 -10
  103. package/src/components/lib/sections/CtaNewsletterSection.astro +13 -11
  104. package/src/components/lib/sections/CtaSplitImage.astro +13 -11
  105. package/src/components/lib/sections/DataShowcase.astro +23 -21
  106. package/src/components/lib/sections/FaqAccordionSection.astro +8 -8
  107. package/src/components/lib/sections/FaqTwoColumn.astro +9 -7
  108. package/src/components/lib/sections/FeatureAlternatingRows.astro +10 -8
  109. package/src/components/lib/sections/FeatureBentoGrid.astro +13 -11
  110. package/src/components/lib/sections/FeatureIconGrid.astro +6 -6
  111. package/src/components/lib/sections/FeatureTabsShowcase.astro +13 -11
  112. package/src/components/lib/sections/FeatureTimelineFlow.astro +8 -6
  113. package/src/components/lib/sections/FeedbackShowcase.astro +15 -13
  114. package/src/components/lib/sections/FooterMegaSection.astro +13 -11
  115. package/src/components/lib/sections/FormsShowcase.astro +22 -20
  116. package/src/components/lib/sections/HeroDashboardPreview.astro +11 -9
  117. package/src/components/lib/sections/HeroGlass.astro +22 -20
  118. package/src/components/lib/sections/HeroGradient.astro +15 -13
  119. package/src/components/lib/sections/HeroMinimalCentered.astro +10 -10
  120. package/src/components/lib/sections/HeroShowcaseSplit.astro +18 -16
  121. package/src/components/lib/sections/HeroSplit.astro +13 -11
  122. package/src/components/lib/sections/HeroTerminal.astro +14 -12
  123. package/src/components/lib/sections/HeroWaitlist.astro +10 -8
  124. package/src/components/lib/sections/HowItWorksSteps.astro +12 -10
  125. package/src/components/lib/sections/IntegrationsGrid.astro +7 -7
  126. package/src/components/lib/sections/LayoutShowcase.astro +21 -19
  127. package/src/components/lib/sections/LogoCloudSection.astro +4 -4
  128. package/src/components/lib/sections/LogoWallGrid.astro +6 -4
  129. package/src/components/lib/sections/NavigationShowcase.astro +15 -13
  130. package/src/components/lib/sections/OverlaysShowcase.astro +21 -19
  131. package/src/components/lib/sections/PricingComparisonMatrix.astro +15 -13
  132. package/src/components/lib/sections/PricingSinglePlan.astro +13 -11
  133. package/src/components/lib/sections/PricingTierCards.astro +11 -9
  134. package/src/components/lib/sections/PricingToggleCards.astro +13 -13
  135. package/src/components/lib/sections/ShopCategoryHero.astro +103 -0
  136. package/src/components/lib/sections/ShopCollectionMosaic.astro +131 -0
  137. package/src/components/lib/sections/ShopFooterWordmark.astro +100 -0
  138. package/src/components/lib/sections/ShopHeaderEditorial.astro +396 -0
  139. package/src/components/lib/sections/ShopHeroEditorial.astro +151 -0
  140. package/src/components/lib/sections/ShopLookbook.astro +250 -0
  141. package/src/components/lib/sections/ShopNewsletterEditorial.astro +128 -0
  142. package/src/components/lib/sections/ShopProductRail.astro +150 -0
  143. package/src/components/lib/sections/ShopReviewsEditorial.astro +133 -0
  144. package/src/components/lib/sections/ShopValuesMarquee.astro +91 -0
  145. package/src/components/lib/sections/StatsCounterBand.astro +9 -7
  146. package/src/components/lib/sections/StatsDashboardSection.astro +4 -2
  147. package/src/components/lib/sections/StatsMetricShowcase.astro +9 -7
  148. package/src/components/lib/sections/TeamGridSection.astro +12 -10
  149. package/src/components/lib/sections/TestimonialCarousel.astro +10 -8
  150. package/src/components/lib/sections/TestimonialFeatured.astro +7 -5
  151. package/src/components/lib/sections/TestimonialGridSection.astro +7 -7
  152. package/src/components/lib/sections/TestimonialWallGlass.astro +11 -9
  153. package/src/components/lib/sections/TypographyShowcase.astro +10 -8
  154. package/src/components/lib/sections/index.ts +10 -0
  155. package/src/components/lib/templates/ecommerce/StoreCategoryPage.astro +160 -0
  156. package/src/components/lib/templates/ecommerce/StoreCheckoutPage.astro +98 -0
  157. package/src/components/lib/templates/ecommerce/StoreHomePage.astro +191 -0
  158. package/src/components/lib/templates/ecommerce/StoreLayout.astro +169 -0
  159. package/src/components/lib/templates/ecommerce/StoreProductPage.astro +165 -0
  160. package/src/components/lib/templates/ecommerce/data.ts +187 -0
  161. package/src/components/lib/templates/ecommerce/index.ts +14 -0
  162. package/src/components/lib/templates/ecommerce-editorial/EditorialBagPage.astro +52 -0
  163. package/src/components/lib/templates/ecommerce-editorial/EditorialCheckoutPage.astro +123 -0
  164. package/src/components/lib/templates/ecommerce-editorial/EditorialHomePage.astro +102 -0
  165. package/src/components/lib/templates/ecommerce-editorial/EditorialLayout.astro +216 -0
  166. package/src/components/lib/templates/ecommerce-editorial/EditorialProductPage.astro +205 -0
  167. package/src/components/lib/templates/ecommerce-editorial/EditorialShopPage.astro +112 -0
  168. package/src/components/lib/templates/ecommerce-editorial/data.ts +125 -0
  169. package/src/components/lib/templates/ecommerce-editorial/index.ts +16 -0
  170. package/src/components/lib/templates/saas-hotel/AppLayout.astro +83 -0
  171. package/src/components/lib/templates/saas-hotel/DashboardPage.astro +66 -0
  172. package/src/components/lib/templates/saas-hotel/GuestsPage.astro +65 -0
  173. package/src/components/lib/templates/saas-hotel/LandingPage.astro +213 -0
  174. package/src/components/lib/templates/saas-hotel/ReportsPage.astro +63 -0
  175. package/src/components/lib/templates/saas-hotel/ReservationsPage.astro +49 -0
  176. package/src/components/lib/templates/saas-hotel/RoomsPage.astro +48 -0
  177. package/src/components/lib/templates/saas-hotel/SettingsPage.astro +115 -0
  178. package/src/components/lib/templates/saas-hotel/SignInPage.astro +50 -0
  179. package/src/components/lib/templates/saas-hotel/data.ts +229 -0
  180. package/src/components/lib/templates/saas-hotel/index.ts +19 -0
  181. package/src/components/lib/templates/saas-hotel/lobby-theme.css +90 -0
  182. package/src/data/registry/app.ts +93 -0
  183. package/src/data/registry/buttons.ts +3279 -0
  184. package/src/data/registry/cards.ts +1753 -0
  185. package/src/data/registry/charts-svg.ts +557 -0
  186. package/src/data/registry/charts.ts +500 -0
  187. package/src/data/registry/data.ts +986 -0
  188. package/src/data/registry/ecommerce.ts +269 -0
  189. package/src/data/registry/feedback.ts +1824 -0
  190. package/src/data/registry/forms.ts +2513 -0
  191. package/src/data/registry/index.ts +64 -0
  192. package/src/data/registry/layout.ts +206 -0
  193. package/src/data/registry/navigation.ts +936 -0
  194. package/src/data/registry/overlays.ts +1133 -0
  195. package/src/data/registry/sections-extra.ts +397 -0
  196. package/src/data/registry/sections.ts +361 -0
  197. package/src/data/registry/sources.ts +41 -0
  198. package/src/data/registry/templates.ts +414 -0
  199. package/src/data/registry/types.ts +30 -0
  200. package/src/data/registry/typography.ts +777 -0
  201. package/src/mcp/http-server.ts +324 -0
  202. package/src/mcp/index.ts +67 -0
  203. package/src/mcp/installer.ts +178 -0
  204. package/src/mcp/registry-adapter.ts +278 -0
  205. package/src/mcp/stdio-server.ts +11 -0
  206. package/src/mcp/tools.ts +247 -0
  207. package/src/mcp/types.ts +53 -0
  208. package/src/styles/global.css +95 -0
@@ -0,0 +1,397 @@
1
+ // src/data/registry/sections-extra.ts
2
+ // Additional full-page sections. Source code is loaded from the real component
3
+ // files via `source()` so the docs always show exactly what ships.
4
+ import type { ComponentDoc } from './types';
5
+ import { source } from './sources';
6
+
7
+ interface SectionMeta {
8
+ slug: string;
9
+ name: string;
10
+ file: string;
11
+ sectionCategory: string;
12
+ description: string;
13
+ tags: string[];
14
+ featured?: boolean;
15
+ usage: string;
16
+ }
17
+
18
+ function section(meta: SectionMeta): ComponentDoc {
19
+ const component = meta.file.replace('.astro', '');
20
+ return {
21
+ slug: meta.slug,
22
+ name: meta.name,
23
+ description: meta.description,
24
+ category: 'sections',
25
+ sectionCategory: meta.sectionCategory,
26
+ tags: meta.tags,
27
+ featured: meta.featured ?? false,
28
+ code: source(`sections/${meta.file}`),
29
+ usage: `---
30
+ import { ${component} } from 'astro-component-kit/sections';
31
+ ---
32
+
33
+ ${meta.usage.trim()}`,
34
+ };
35
+ }
36
+
37
+ export const sectionsExtra: ComponentDoc[] = [
38
+ // === HERO ===
39
+ section({
40
+ slug: 'hero-minimal-centered', name: 'Hero Minimal Centered', file: 'HeroMinimalCentered.astro', sectionCategory: 'hero',
41
+ description: 'Typography-first centered hero with announcement pill, highlighted headline word, two CTAs and trust signals.',
42
+ tags: ['hero', 'minimal', 'centered', 'typography'], featured: true,
43
+ usage: `<HeroMinimalCentered
44
+ announcement="New: dark mode tokens"
45
+ title="Build pages that *feel* expensive"
46
+ subtitle="Accessible Astro components with zero runtime."
47
+ primary={{ label: 'Get started', href: '/docs' }}
48
+ secondary={{ label: 'GitHub', href: 'https://github.com' }}
49
+ variant="grid"
50
+ />`,
51
+ }),
52
+ section({
53
+ slug: 'hero-terminal', name: 'Hero Terminal', file: 'HeroTerminal.astro', sectionCategory: 'hero',
54
+ description: 'Developer hero with an animated terminal transcript and a copy-to-clipboard install command.',
55
+ tags: ['hero', 'developer', 'terminal', 'cli', 'copy'],
56
+ usage: `<HeroTerminal
57
+ title="From zero to production in one command"
58
+ command="npm create astro@latest"
59
+ lines={[
60
+ { type: 'cmd', text: 'npm create astro@latest' },
61
+ { type: 'ok', text: 'Project ready' },
62
+ ]}
63
+ />`,
64
+ }),
65
+ section({
66
+ slug: 'hero-waitlist', name: 'Hero Waitlist', file: 'HeroWaitlist.astro', sectionCategory: 'hero',
67
+ description: 'Pre-launch hero with aurora background, accessible email capture, inline validation and social proof.',
68
+ tags: ['hero', 'waitlist', 'form', 'launch', 'email'],
69
+ usage: `<HeroWaitlist
70
+ badge="Private beta"
71
+ title="Analytics that respect your users"
72
+ action="/api/waitlist"
73
+ count={4280}
74
+ />`,
75
+ }),
76
+ section({
77
+ slug: 'hero-dashboard-preview', name: 'Hero Dashboard Preview', file: 'HeroDashboardPreview.astro', sectionCategory: 'hero',
78
+ description: 'SaaS hero with a live product dashboard mockup built from the kit’s KPI tiles and SVG line chart.',
79
+ tags: ['hero', 'saas', 'dashboard', 'mockup', 'charts'], featured: true,
80
+ usage: `<HeroDashboardPreview
81
+ title="See every metric that matters"
82
+ primary={{ label: 'Start free trial', href: '/signup' }}
83
+ variant="floating"
84
+ />`,
85
+ }),
86
+
87
+ // === FEATURES ===
88
+ section({
89
+ slug: 'feature-icon-grid', name: 'Feature Icon Grid', file: 'FeatureIconGrid.astro', sectionCategory: 'features',
90
+ description: 'Responsive 2–4 column feature grid with SVG icons, descriptions and accessible learn-more links.',
91
+ tags: ['features', 'grid', 'icons', 'cards'],
92
+ usage: `<FeatureIconGrid
93
+ title="Everything you need"
94
+ columns={3}
95
+ features={[
96
+ { icon: 'bolt', title: 'Fast', text: 'Static HTML by default.' },
97
+ { icon: 'shield', title: 'Accessible', text: 'WCAG AA out of the box.' },
98
+ { icon: 'code', title: 'Yours', text: 'Copy the source, own it.' },
99
+ ]}
100
+ />`,
101
+ }),
102
+ section({
103
+ slug: 'feature-alternating-rows', name: 'Feature Alternating Rows', file: 'FeatureAlternatingRows.astro', sectionCategory: 'features',
104
+ description: 'Zig-zag feature rows alternating copy and pure-CSS illustrations (chart, code, token stack).',
105
+ tags: ['features', 'zig-zag', 'alternating', 'split'],
106
+ usage: `<FeatureAlternatingRows
107
+ rows={[
108
+ { eyebrow: 'Insights', title: 'Dashboards people read', text: '…', bullets: ['45 charts'], visual: 'chart' },
109
+ { eyebrow: 'DX', title: 'Typed props', text: '…', bullets: ['Strict TS'], visual: 'code' },
110
+ ]}
111
+ />`,
112
+ }),
113
+ section({
114
+ slug: 'feature-tabs-showcase', name: 'Feature Tabs Showcase', file: 'FeatureTabsShowcase.astro', sectionCategory: 'features',
115
+ description: 'Interactive feature tabs following the WAI-ARIA tabs pattern with arrow-key navigation and stat panels.',
116
+ tags: ['features', 'tabs', 'interactive', 'aria'],
117
+ usage: `<FeatureTabsShowcase
118
+ variant="underline"
119
+ tabs={[
120
+ { label: 'Marketing', title: 'Launch faster', text: '…', points: ['24 sections'], stat: '3.4×', statLabel: 'faster' },
121
+ { label: 'Product', title: 'In-app analytics', text: '…', points: ['45 charts'], stat: '0 kB', statLabel: 'runtime' },
122
+ ]}
123
+ />`,
124
+ }),
125
+ section({
126
+ slug: 'how-it-works-steps', name: 'How It Works Steps', file: 'HowItWorksSteps.astro', sectionCategory: 'features',
127
+ description: 'Numbered process steps connected by a line, horizontal on desktop and vertical on mobile.',
128
+ tags: ['process', 'steps', 'how-it-works', 'onboarding'],
129
+ usage: `<HowItWorksSteps
130
+ title="Ship in three steps"
131
+ steps={[
132
+ { title: 'Pick', text: 'Choose sections.', time: '2 min' },
133
+ { title: 'Paste', text: 'Copy into your project.' },
134
+ { title: 'Deploy', text: 'Push to any CDN.' },
135
+ ]}
136
+ />`,
137
+ }),
138
+ section({
139
+ slug: 'integrations-grid', name: 'Integrations Grid', file: 'IntegrationsGrid.astro', sectionCategory: 'features',
140
+ description: 'Integrations directory with category filter chips, monogram tiles and availability badges.',
141
+ tags: ['integrations', 'filter', 'directory', 'apps'],
142
+ usage: `<IntegrationsGrid
143
+ items={[
144
+ { name: 'Slack', category: 'Messaging', description: 'Alerts in channels.', status: 'available' },
145
+ { name: 'Linear', category: 'Developer', description: 'Insights to issues.', status: 'beta' },
146
+ ]}
147
+ />`,
148
+ }),
149
+
150
+ // === PRICING ===
151
+ section({
152
+ slug: 'pricing-toggle-cards', name: 'Pricing Toggle Cards', file: 'PricingToggleCards.astro', sectionCategory: 'pricing',
153
+ description: 'Three pricing tiers with an accessible monthly/yearly switch, savings badge and featured plan.',
154
+ tags: ['pricing', 'toggle', 'monthly-yearly', 'plans'], featured: true,
155
+ usage: `<PricingToggleCards
156
+ plans={[
157
+ { name: 'Free', monthly: 0, yearly: 0, description: 'Hobby', features: ['1 project'], cta: 'Start', href: '#' },
158
+ { name: 'Pro', monthly: 24, yearly: 19, description: 'Pros', features: ['Unlimited'], cta: 'Try Pro', href: '#', featured: true },
159
+ ]}
160
+ />`,
161
+ }),
162
+ section({
163
+ slug: 'pricing-single-plan', name: 'Pricing Single Plan', file: 'PricingSinglePlan.astro', sectionCategory: 'pricing',
164
+ description: 'One-plan pricing with price card, struck-through original price, feature checklist and guarantee.',
165
+ tags: ['pricing', 'single-plan', 'lifetime', 'guarantee'],
166
+ usage: `<PricingSinglePlan
167
+ planName="Lifetime license"
168
+ price="$149"
169
+ originalPrice="$249"
170
+ features={['All components', 'Lifetime updates']}
171
+ />`,
172
+ }),
173
+
174
+ // === TESTIMONIALS ===
175
+ section({
176
+ slug: 'testimonial-carousel', name: 'Testimonial Carousel', file: 'TestimonialCarousel.astro', sectionCategory: 'testimonials',
177
+ description: 'Scroll-snap testimonial carousel with prev/next buttons, star ratings and no autoplay.',
178
+ tags: ['testimonials', 'carousel', 'slider', 'reviews'],
179
+ usage: `<TestimonialCarousel
180
+ items={[
181
+ { quote: 'Shipped our site in two days.', name: 'Alicia Gómez', role: 'Northwind', rating: 5 },
182
+ { quote: 'Zero-JS charts are magic.', name: 'Marcus Lee', role: 'Lumen', rating: 5 },
183
+ ]}
184
+ />`,
185
+ }),
186
+ section({
187
+ slug: 'testimonial-featured', name: 'Testimonial Featured', file: 'TestimonialFeatured.astro', sectionCategory: 'testimonials',
188
+ description: 'Case-study style section with one large quote, company wordmark and headline outcome metrics.',
189
+ tags: ['testimonials', 'case-study', 'quote', 'metrics'],
190
+ usage: `<TestimonialFeatured
191
+ quote="Our pages load twice as fast."
192
+ name="Elena Vasquez"
193
+ role="VP Marketing, Orbitly"
194
+ company="Orbitly"
195
+ metrics={[{ value: '2.1×', label: 'faster loads' }]}
196
+ variant="card"
197
+ />`,
198
+ }),
199
+
200
+ // === CTA ===
201
+ section({
202
+ slug: 'cta-newsletter-section', name: 'CTA Newsletter Section', file: 'CtaNewsletterSection.astro', sectionCategory: 'cta',
203
+ description: 'Newsletter signup band with benefits, labelled email field, inline validation and privacy note.',
204
+ tags: ['cta', 'newsletter', 'email', 'form'],
205
+ usage: `<CtaNewsletterSection
206
+ title="Get new components every week"
207
+ action="/api/subscribe"
208
+ variant="glass"
209
+ />`,
210
+ }),
211
+ section({
212
+ slug: 'cta-split-image', name: 'CTA Split Image', file: 'CtaSplitImage.astro', sectionCategory: 'cta',
213
+ description: 'Split conversion banner with copy and CTAs beside a gradient-mesh visual with floating stat chips.',
214
+ tags: ['cta', 'split', 'banner', 'conversion'],
215
+ usage: `<CtaSplitImage
216
+ title="Ready to ship?"
217
+ primary={{ label: 'Get started', href: '/signup' }}
218
+ chips={[{ value: '100', label: 'Lighthouse' }]}
219
+ />`,
220
+ }),
221
+
222
+ // === STATS ===
223
+ section({
224
+ slug: 'stats-counter-band', name: 'Stats Counter Band', file: 'StatsCounterBand.astro', sectionCategory: 'stats',
225
+ description: 'Headline numbers that count up on scroll, with real values in the HTML for no-JS and screen readers.',
226
+ tags: ['stats', 'counter', 'numbers', 'animated'], featured: true,
227
+ usage: `<StatsCounterBand
228
+ stats={[
229
+ { value: 12000, suffix: '+', label: 'Developers' },
230
+ { value: 99.98, suffix: '%', label: 'Uptime', decimals: 2 },
231
+ ]}
232
+ variant="cards"
233
+ />`,
234
+ }),
235
+ section({
236
+ slug: 'stats-dashboard-section', name: 'Stats Dashboard Section', file: 'StatsDashboardSection.astro', sectionCategory: 'stats',
237
+ description: 'Complete analytics section with KPI tiles, stacked area chart and ranked bar chart.',
238
+ tags: ['stats', 'dashboard', 'charts', 'kpi', 'analytics'], featured: true,
239
+ usage: `<StatsDashboardSection
240
+ title="Growth you can see"
241
+ kpis={[{ label: 'Visitors', value: '1.2M', change: 18.4 }]}
242
+ />`,
243
+ }),
244
+
245
+ // === TEAM ===
246
+ section({
247
+ slug: 'careers-openings', name: 'Careers Openings', file: 'CareersOpenings.astro', sectionCategory: 'team',
248
+ description: 'Job listings grouped by department with location, type and remote badges plus a perks strip.',
249
+ tags: ['careers', 'jobs', 'hiring', 'team'],
250
+ usage: `<CareersOpenings
251
+ jobs={[
252
+ { title: 'Frontend Engineer', department: 'Engineering', location: 'Europe', type: 'Full-time', remote: true, href: '/jobs/fe' },
253
+ ]}
254
+ />`,
255
+ }),
256
+
257
+ // === FAQ ===
258
+ section({
259
+ slug: 'faq-two-column', name: 'FAQ Two Column', file: 'FaqTwoColumn.astro', sectionCategory: 'faq',
260
+ description: 'Two-column FAQ with sticky intro and native exclusive <details> accordions that work without JS.',
261
+ tags: ['faq', 'accordion', 'details', 'support'],
262
+ usage: `<FaqTwoColumn
263
+ items={[
264
+ { q: 'Is it free?', a: 'Yes, MIT licensed.' },
265
+ { q: 'Do I need JS?', a: 'No.' },
266
+ ]}
267
+ exclusive
268
+ />`,
269
+ }),
270
+
271
+ // === CONTACT ===
272
+ section({
273
+ slug: 'contact-split-map', name: 'Contact Split Map', file: 'ContactSplitMap.astro', sectionCategory: 'contact',
274
+ description: 'Contact channels and office addresses beside a stylised SVG dot-map with animated location pins.',
275
+ tags: ['contact', 'map', 'offices', 'support'],
276
+ usage: `<ContactSplitMap
277
+ offices={[{ city: 'Madrid', address: 'Gran Vía 1', x: 47, y: 38 }]}
278
+ channels={[{ label: 'Email', value: 'hi@site.com', href: 'mailto:hi@site.com', icon: 'mail' }]}
279
+ />`,
280
+ }),
281
+
282
+ // === LOGOS ===
283
+ section({
284
+ slug: 'logo-wall-grid', name: 'Logo Wall Grid', file: 'LogoWallGrid.astro', sectionCategory: 'logos',
285
+ description: 'Static customer logo wall with hairline dividers; text wordmarks by default or real logo images.',
286
+ tags: ['logos', 'customers', 'social-proof', 'grid'],
287
+ usage: `<LogoWallGrid
288
+ columns={4}
289
+ logos={[{ name: 'Acme' }, { name: 'Globex', src: '/logos/globex.svg' }]}
290
+ />`,
291
+ }),
292
+
293
+ // === CONTENT ===
294
+ section({
295
+ slug: 'blog-grid-section', name: 'Blog Grid Section', file: 'BlogGridSection.astro', sectionCategory: 'content',
296
+ description: 'Latest articles with a featured post and a grid of cards, gradient covers, categories and read time.',
297
+ tags: ['blog', 'articles', 'posts', 'content'],
298
+ usage: `<BlogGridSection
299
+ posts={[
300
+ { title: 'Zero-JS charts', excerpt: '…', category: 'Engineering', date: '2026-10-28', readTime: '8 min', author: 'Marcus', href: '/blog/charts' },
301
+ ]}
302
+ />`,
303
+ }),
304
+ section({
305
+ slug: 'changelog-section', name: 'Changelog Section', file: 'ChangelogSection.astro', sectionCategory: 'content',
306
+ description: 'Release-notes timeline with version tags, dates and new/improved/fixed entries labelled by text and icon.',
307
+ tags: ['changelog', 'releases', 'timeline', 'updates'],
308
+ usage: `<ChangelogSection
309
+ releases={[
310
+ { version: 'v1.0.0', date: '2026-11-01', title: 'Stable', changes: [{ type: 'new', text: 'First stable release.' }] },
311
+ ]}
312
+ />`,
313
+ }),
314
+
315
+ // === FOOTER ===
316
+ section({
317
+ slug: 'footer-mega-section', name: 'Footer Mega Section', file: 'FooterMegaSection.astro', sectionCategory: 'footer',
318
+ description: 'Full site footer with brand, newsletter field, link columns, status pill, social icons and legal row.',
319
+ tags: ['footer', 'navigation', 'newsletter', 'social'],
320
+ usage: `<FooterMegaSection
321
+ brand="Acme"
322
+ columns={[{ title: 'Product', links: [{ label: 'Pricing', href: '/pricing' }] }]}
323
+ socials={[{ label: 'GitHub', href: 'https://github.com', icon: 'github' }]}
324
+ />`,
325
+ }),
326
+
327
+ // === E-COMMERCE (editorial) ===
328
+ section({
329
+ slug: 'shop-header-editorial', name: 'Shop Header Editorial', file: 'ShopHeaderEditorial.astro', sectionCategory: 'commerce',
330
+ description: "Editorial store header: announcement line, centred wordmark, mega menu with feature tile, theme toggle and live bag count.",
331
+ tags: ["header", "navbar", "mega-menu", "ecommerce", "editorial"], featured: true,
332
+ usage: `<ShopHeaderEditorial brand="Forma" bagHref="/bag/" links={[
333
+ { label: 'Shop', href: '/shop/', columns: [{ title: 'Clothing', links: [{ label: 'Knitwear', href: '/shop/?category=knit' }] }] },
334
+ { label: 'Journal', href: '/journal/' },
335
+ ]} />`,
336
+ }),
337
+ section({
338
+ slug: 'shop-hero-editorial', name: 'Shop Hero Editorial', file: 'ShopHeroEditorial.astro', sectionCategory: 'commerce',
339
+ description: "Magazine-style shop hero with oversized serif headline, italic accent word, issue meta, feature image with caption and a running ticker.",
340
+ tags: ["hero", "ecommerce", "editorial", "typography"], featured: true,
341
+ usage: `<ShopHeroEditorial title="Quiet *objects* for everyday rituals" primary={{ label: 'Shop now', href: '/shop/' }} />`,
342
+ }),
343
+ section({
344
+ slug: 'shop-collection-mosaic', name: 'Shop Collection Mosaic', file: 'ShopCollectionMosaic.astro', sectionCategory: 'commerce',
345
+ description: "Asymmetric collection grid with a tall feature tile, numbered tiles, item counts and underline links.",
346
+ tags: ["collections", "grid", "ecommerce", "categories"],
347
+ usage: `<ShopCollectionMosaic title="Shop by *intention*" items={[
348
+ { title: 'The wardrobe', href: '/shop/?category=clothing', count: 24, icon: 'jacket', hue: 22 },
349
+ { title: 'At the table', href: '/shop/?category=objects', count: 12, icon: 'mug', hue: 14 },
350
+ { title: 'To carry', href: '/shop/?category=bags', count: 8, icon: 'bag', hue: 34 },
351
+ ]} />`,
352
+ }),
353
+ section({
354
+ slug: 'shop-product-rail', name: 'Shop Product Rail', file: 'ShopProductRail.astro', sectionCategory: 'commerce',
355
+ description: "Scroll-snapping product carousel of minimal product cards with numbering, prev/next buttons and a progress line.",
356
+ tags: ["carousel", "products", "ecommerce", "slider"], featured: true,
357
+ usage: `<ShopProductRail title="New this *week*" products={products} productBase="/product/" />`,
358
+ }),
359
+ section({
360
+ slug: 'shop-lookbook', name: 'Shop Lookbook', file: 'ShopLookbook.astro', sectionCategory: 'commerce',
361
+ description: "\"Shop the look\" image with numbered hotspots that open product cards with add-to-bag, mirrored by an accessible product list.",
362
+ tags: ["lookbook", "hotspots", "ecommerce", "shoppable"], featured: true,
363
+ usage: `<ShopLookbook title="Shop the *look*" spots={[
364
+ { x: 40, y: 32, product: { slug: 'overshirt', name: 'Linen Overshirt', price: 145, category: 'clothing', icon: 'shirt' }, href: '/product/overshirt/' },
365
+ ]} />`,
366
+ }),
367
+ section({
368
+ slug: 'shop-values-marquee', name: 'Shop Values Marquee', file: 'ShopValuesMarquee.astro', sectionCategory: 'commerce',
369
+ description: "Brand promise band: oversized italic marquee followed by numbered value columns.",
370
+ tags: ["marquee", "values", "ecommerce", "brand"],
371
+ usage: `<ShopValuesMarquee words={['Made slowly', 'Natural fibres']} values={[{ title: 'Honest materials', text: 'Traceable to the mill.' }]} />`,
372
+ }),
373
+ section({
374
+ slug: 'shop-reviews-editorial', name: 'Shop Reviews Editorial', file: 'ShopReviewsEditorial.astro', sectionCategory: 'commerce',
375
+ description: "Large serif customer quotes, one at a time, with product context, numbered pager and overall score.",
376
+ tags: ["reviews", "testimonials", "ecommerce", "carousel"],
377
+ usage: `<ShopReviewsEditorial score={4.9} count={1284} reviews={[{ quote: 'Softer every wash.', name: 'Inés M.', product: 'Linen Overshirt' }]} />`,
378
+ }),
379
+ section({
380
+ slug: 'shop-newsletter-editorial', name: 'Shop Newsletter Editorial', file: 'ShopNewsletterEditorial.astro', sectionCategory: 'commerce',
381
+ description: "Oversized editorial sign-up with underline email field, consent note and inline validation.",
382
+ tags: ["newsletter", "form", "ecommerce", "cta"],
383
+ usage: `<ShopNewsletterEditorial title="Letters from the *studio*" variant="accent" />`,
384
+ }),
385
+ section({
386
+ slug: 'shop-footer-wordmark', name: 'Shop Footer Wordmark', file: 'ShopFooterWordmark.astro', sectionCategory: 'commerce',
387
+ description: "Store footer with link columns, contact block, payment labels and a giant edge-to-edge wordmark.",
388
+ tags: ["footer", "ecommerce", "wordmark"],
389
+ usage: `<ShopFooterWordmark brand="Forma" />`,
390
+ }),
391
+ section({
392
+ slug: 'shop-category-hero', name: 'Shop Category Hero', file: 'ShopCategoryHero.astro', sectionCategory: 'commerce',
393
+ description: "Catalogue header with breadcrumb, oversized category title and count, intro, sub-category links and an image strip.",
394
+ tags: ["category", "header", "ecommerce", "catalog"],
395
+ usage: `<ShopCategoryHero title="Clothing" count={24} links={[{ label: 'All', href: '/shop/', active: true }, { label: 'Knitwear', href: '/shop/knit/' }]} />`,
396
+ }),
397
+ ];