@zoyth/simple-site-framework 1.0.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 (166) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +572 -0
  3. package/bin/create-simple-site.js +390 -0
  4. package/bin/simple-site.js +664 -0
  5. package/dist/client.js +135 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/client.mjs +107 -0
  8. package/dist/client.mjs.map +1 -0
  9. package/dist/components/index.d.mts +3936 -0
  10. package/dist/components/index.d.ts +3936 -0
  11. package/dist/components/index.js +38265 -0
  12. package/dist/components/index.js.map +1 -0
  13. package/dist/components/index.mjs +38173 -0
  14. package/dist/components/index.mjs.map +1 -0
  15. package/dist/config/index.d.mts +298 -0
  16. package/dist/config/index.d.ts +298 -0
  17. package/dist/config/index.js +19 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/config/index.mjs +1 -0
  20. package/dist/config/index.mjs.map +1 -0
  21. package/dist/index.d.mts +2184 -0
  22. package/dist/index.d.ts +2184 -0
  23. package/dist/index.js +1713 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/index.mjs +1605 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/lib/i18n/index.js +665 -0
  28. package/dist/lib/i18n/index.js.map +1 -0
  29. package/dist/lib/i18n/index.mjs +621 -0
  30. package/dist/lib/i18n/index.mjs.map +1 -0
  31. package/docs/DOCUMENTATION-STRUCTURE.md +1156 -0
  32. package/docs/EXPORTS.md +125 -0
  33. package/docs/PERFORMANCE.md +757 -0
  34. package/docs/POLICY-PAGES.md +867 -0
  35. package/docs/ROADMAP.md +334 -0
  36. package/docs/SEO.md +455 -0
  37. package/docs/SITEMAP.md +708 -0
  38. package/docs/STRUCTURED-DATA.md +671 -0
  39. package/docs/accessibility/common-patterns.md +529 -0
  40. package/docs/accessibility/keyboard-navigation.md +263 -0
  41. package/docs/accessibility/overview.md +122 -0
  42. package/docs/accessibility/screen-readers.md +311 -0
  43. package/docs/accessibility/wcag-compliance.md +159 -0
  44. package/docs/api/README.md +164 -0
  45. package/docs/api/components/Accessibility.md +356 -0
  46. package/docs/api/components/Button.md +240 -0
  47. package/docs/api/components/HeroSection.md +306 -0
  48. package/docs/architecture/decisions.md +449 -0
  49. package/docs/components/AnalyticsTracker.md +58 -0
  50. package/docs/components/AnimatedCounter.md +48 -0
  51. package/docs/components/AnimatedSection.md +56 -0
  52. package/docs/components/BlogCard.md +42 -0
  53. package/docs/components/Checkbox.md +56 -0
  54. package/docs/components/CodeBlock.md +52 -0
  55. package/docs/components/ComparisonTable.md +40 -0
  56. package/docs/components/ComponentDemo.md +38 -0
  57. package/docs/components/CountdownTimer.md +51 -0
  58. package/docs/components/ExitIntentModal.md +56 -0
  59. package/docs/components/FAQAccordion.md +66 -0
  60. package/docs/components/FeaturesGrid.md +55 -0
  61. package/docs/components/FileUpload.md +54 -0
  62. package/docs/components/I18nMetaTags.md +55 -0
  63. package/docs/components/Icon.md +53 -0
  64. package/docs/components/LazySection.md +46 -0
  65. package/docs/components/LiveProof.md +53 -0
  66. package/docs/components/LoadingSpinner.md +46 -0
  67. package/docs/components/MultiStepForm.md +48 -0
  68. package/docs/components/PolicyLayout.md +55 -0
  69. package/docs/components/PricingTable.md +49 -0
  70. package/docs/components/Radio.md +59 -0
  71. package/docs/components/SEOMetaTags.md +58 -0
  72. package/docs/components/ScriptInjector.md +50 -0
  73. package/docs/components/Select.md +72 -0
  74. package/docs/components/Skeleton.md +47 -0
  75. package/docs/components/StatsSection.md +48 -0
  76. package/docs/components/StickyBar.md +62 -0
  77. package/docs/components/StructuredData.md +99 -0
  78. package/docs/components/StyleGuide.md +46 -0
  79. package/docs/components/TableOfContents.md +47 -0
  80. package/docs/components/TestimonialCarousel.md +42 -0
  81. package/docs/components/Timeline.md +51 -0
  82. package/docs/components/Toast.md +59 -0
  83. package/docs/components/TrackedLink.md +62 -0
  84. package/docs/components/TrustBadges.md +44 -0
  85. package/docs/components/conversion/MobileCTA.md +363 -0
  86. package/docs/components/forms/ContactForm.md +75 -0
  87. package/docs/components/forms/FormField.md +74 -0
  88. package/docs/components/layout/Footer.md +601 -0
  89. package/docs/components/layout/Header.md +549 -0
  90. package/docs/components/layout/LanguageSelector.md +54 -0
  91. package/docs/components/layout/LanguageSwitcher.md +24 -0
  92. package/docs/components/overview.md +447 -0
  93. package/docs/components/sections/AboutSection.md +48 -0
  94. package/docs/components/sections/CTASection.md +596 -0
  95. package/docs/components/sections/CaseStudySection.md +47 -0
  96. package/docs/components/sections/ContactSection.md +599 -0
  97. package/docs/components/sections/FeatureSection.md +44 -0
  98. package/docs/components/sections/HeroSection.md +404 -0
  99. package/docs/components/sections/LogosSection.md +47 -0
  100. package/docs/components/sections/PersonalTaxesSection.md +23 -0
  101. package/docs/components/sections/RecruitingSection.md +23 -0
  102. package/docs/components/sections/SecurePortalSection.md +23 -0
  103. package/docs/components/sections/ServicePageLayout.md +52 -0
  104. package/docs/components/sections/ServicesSection.md +49 -0
  105. package/docs/components/sections/TestimonialSection.md +44 -0
  106. package/docs/components/sections/WhyChooseUsSection.md +54 -0
  107. package/docs/components/ui/Breadcrumb.md +70 -0
  108. package/docs/components/ui/Button.md +514 -0
  109. package/docs/components/ui/Card.md +501 -0
  110. package/docs/components/ui/Input.md +54 -0
  111. package/docs/components/ui/MobileLinks.md +43 -0
  112. package/docs/components/ui/Modal.md +60 -0
  113. package/docs/components/ui/Tabs.md +62 -0
  114. package/docs/components/ui/Textarea.md +52 -0
  115. package/docs/core-concepts/configuration-driven.md +552 -0
  116. package/docs/core-concepts/overview.md +351 -0
  117. package/docs/features/accessibility/README.md +73 -0
  118. package/docs/features/accessibility/aria-support.md +177 -0
  119. package/docs/features/accessibility/color-contrast.md +155 -0
  120. package/docs/features/accessibility/focus-management.md +187 -0
  121. package/docs/features/accessibility/testing.md +196 -0
  122. package/docs/features/analytics/README.md +51 -0
  123. package/docs/features/analytics/ab-testing.md +171 -0
  124. package/docs/features/analytics/conversion-tracking.md +207 -0
  125. package/docs/features/analytics/custom-events.md +219 -0
  126. package/docs/features/analytics/privacy.md +198 -0
  127. package/docs/features/analytics/setup.md +114 -0
  128. package/docs/features/analytics/tracking-events.md +224 -0
  129. package/docs/features/i18n/README.md +51 -0
  130. package/docs/features/i18n/best-practices.md +273 -0
  131. package/docs/features/i18n/configuration.md +84 -0
  132. package/docs/features/i18n/formatting.md +133 -0
  133. package/docs/features/i18n/locale-detection.md +122 -0
  134. package/docs/features/i18n/routing.md +99 -0
  135. package/docs/features/i18n/rtl-support.md +191 -0
  136. package/docs/features/i18n/translations.md +129 -0
  137. package/docs/features/internationalization.md +595 -0
  138. package/docs/features/performance/README.md +77 -0
  139. package/docs/features/performance/bundle-size.md +134 -0
  140. package/docs/features/performance/caching.md +131 -0
  141. package/docs/features/performance/code-splitting.md +121 -0
  142. package/docs/features/performance/image-optimization.md +110 -0
  143. package/docs/features/performance/lazy-loading.md +92 -0
  144. package/docs/features/performance/monitoring.md +148 -0
  145. package/docs/features/seo/README.md +51 -0
  146. package/docs/features/seo/best-practices.md +184 -0
  147. package/docs/features/seo/canonical-urls.md +182 -0
  148. package/docs/features/seo/meta-tags.md +126 -0
  149. package/docs/features/seo/open-graph.md +166 -0
  150. package/docs/features/seo/robots-txt.md +146 -0
  151. package/docs/features/seo/sitemaps.md +162 -0
  152. package/docs/features/seo/structured-data.md +166 -0
  153. package/docs/getting-started/installation.md +292 -0
  154. package/docs/getting-started/introduction.md +195 -0
  155. package/docs/getting-started/quick-start.md +460 -0
  156. package/docs/guides/analytics-setup.md +616 -0
  157. package/docs/i18n/CONFIGURATION.md +353 -0
  158. package/docs/i18n/EXAMPLES.md +402 -0
  159. package/docs/i18n/MIGRATION.md +260 -0
  160. package/docs/i18n/SEO.md +392 -0
  161. package/docs/i18n/STATIC-GENERATION-FIX.md +71 -0
  162. package/docs/migration/changelog.md +136 -0
  163. package/docs/migration/overview.md +233 -0
  164. package/docs/recipes/adding-animations.md +475 -0
  165. package/docs/recipes/forms-with-validation.md +393 -0
  166. package/package.json +152 -0
@@ -0,0 +1,48 @@
1
+ # MultiStepForm
2
+
3
+ Multi-step form wizard component.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { MultiStepForm } from '@zoyth/simple-site-framework/client';
9
+ ```
10
+
11
+ **Type:** Client Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <MultiStepForm
17
+ steps={[
18
+ {
19
+ title: 'Personal Info',
20
+ fields: [
21
+ { name: 'name', type: 'text', label: 'Name', required: true },
22
+ { name: 'email', type: 'email', label: 'Email', required: true },
23
+ ],
24
+ },
25
+ {
26
+ title: 'Company Info',
27
+ fields: [
28
+ { name: 'company', type: 'text', label: 'Company' },
29
+ ],
30
+ },
31
+ ]}
32
+ onSubmit={handleSubmit}
33
+ />
34
+ ```
35
+
36
+ ## Props
37
+
38
+ | Prop | Type | Required | Description |
39
+ |------|------|----------|-------------|
40
+ | `steps` | `FormStep[]` | Yes | Form steps |
41
+ | `onSubmit` | `function` | Yes | Submit handler |
42
+ | `showProgress` | `boolean` | No | Show progress indicator |
43
+ | `className` | `string` | No | Custom classes |
44
+
45
+ ## See Also
46
+
47
+ - [ContactForm](./forms/ContactForm.md)
48
+ - [FormField](./forms/FormField.md)
@@ -0,0 +1,55 @@
1
+ # PolicyLayout
2
+
3
+ Layout component for policy pages (Privacy, Terms, etc.).
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { PolicyLayout } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <PolicyLayout
17
+ title="Privacy Policy"
18
+ lastUpdated="January 15, 2024"
19
+ >
20
+ <h2>Introduction</h2>
21
+ <p>This privacy policy...</p>
22
+ </PolicyLayout>
23
+ ```
24
+
25
+ ## Props
26
+
27
+ | Prop | Type | Required | Description |
28
+ |------|------|----------|-------------|
29
+ | `title` | `string \| LocalizedString` | Yes | Policy title |
30
+ | `lastUpdated` | `string` | No | Last updated date |
31
+ | `children` | `ReactNode` | Yes | Policy content |
32
+ | `showTOC` | `boolean` | No | Show table of contents |
33
+ | `className` | `string` | No | Custom classes |
34
+ | `locale` | `string` | No | Current locale |
35
+
36
+ ## Examples
37
+
38
+ ```typescript
39
+ // With TOC
40
+ <PolicyLayout
41
+ title="Terms of Service"
42
+ lastUpdated="March 1, 2024"
43
+ showTOC
44
+ >
45
+ <h2>1. Agreement</h2>
46
+ <p>...</p>
47
+ <h2>2. Usage</h2>
48
+ <p>...</p>
49
+ </PolicyLayout>
50
+ ```
51
+
52
+ ## See Also
53
+
54
+ - [TableOfContents](./TableOfContents.md)
55
+ - [SEOMetaTags](./SEOMetaTags.md)
@@ -0,0 +1,49 @@
1
+ # PricingTable
2
+
3
+ Pricing comparison table component.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { PricingTable } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <PricingTable
17
+ plans={[
18
+ {
19
+ name: 'Basic',
20
+ price: '$9',
21
+ period: '/month',
22
+ features: ['Feature 1', 'Feature 2'],
23
+ cta: { text: 'Get Started', href: '/signup?plan=basic' },
24
+ },
25
+ {
26
+ name: 'Pro',
27
+ price: '$29',
28
+ period: '/month',
29
+ features: ['All Basic features', 'Feature 3', 'Feature 4'],
30
+ cta: { text: 'Get Started', href: '/signup?plan=pro' },
31
+ highlighted: true,
32
+ },
33
+ ]}
34
+ />
35
+ ```
36
+
37
+ ## Props
38
+
39
+ | Prop | Type | Required | Description |
40
+ |------|------|----------|-------------|
41
+ | `plans` | `PricingPlan[]` | Yes | Pricing plans |
42
+ | `billingPeriod` | `'monthly' \| 'annual'` | No | Default billing period |
43
+ | `className` | `string` | No | Custom classes |
44
+ | `locale` | `string` | No | Current locale |
45
+
46
+ ## See Also
47
+
48
+ - [CTASection](./sections/CTASection.md)
49
+ - [Card](./ui/Card.md)
@@ -0,0 +1,59 @@
1
+ # Radio
2
+
3
+ Radio button input component.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { Radio } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <>
17
+ <Radio name="plan" value="basic" label="Basic Plan" />
18
+ <Radio name="plan" value="pro" label="Pro Plan" />
19
+ <Radio name="plan" value="enterprise" label="Enterprise Plan" />
20
+ </>
21
+ ```
22
+
23
+ ## Props
24
+
25
+ | Prop | Type | Required | Description |
26
+ |------|------|----------|-------------|
27
+ | `name` | `string` | Yes | Radio group name |
28
+ | `value` | `string` | Yes | Radio value |
29
+ | `label` | `string \| LocalizedString` | Yes | Radio label |
30
+ | `checked` | `boolean` | No | Checked state |
31
+ | `disabled` | `boolean` | No | Disable radio |
32
+ | `onChange` | `function` | No | Change handler |
33
+ | `className` | `string` | No | Custom classes |
34
+
35
+ ## Examples
36
+
37
+ ```typescript
38
+ // Radio group
39
+ <fieldset>
40
+ <legend>Select a plan</legend>
41
+ <Radio name="plan" value="basic" label="Basic - $9/month" />
42
+ <Radio name="plan" value="pro" label="Pro - $29/month" />
43
+ <Radio name="plan" value="enterprise" label="Enterprise - Custom" />
44
+ </fieldset>
45
+
46
+ // Controlled radio
47
+ <Radio
48
+ name="option"
49
+ value="yes"
50
+ label="Yes"
51
+ checked={selected === 'yes'}
52
+ onChange={() => setSelected('yes')}
53
+ />
54
+ ```
55
+
56
+ ## See Also
57
+
58
+ - [Checkbox](./Checkbox.md)
59
+ - [FormField](./forms/FormField.md)
@@ -0,0 +1,58 @@
1
+ # SEOMetaTags
2
+
3
+ SEO meta tags component for page metadata.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { SEOMetaTags } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <SEOMetaTags
17
+ title="Page Title"
18
+ description="Page description for search engines"
19
+ canonical="https://example.com/page"
20
+ />
21
+ ```
22
+
23
+ ## Props
24
+
25
+ | Prop | Type | Required | Description |
26
+ |------|------|----------|-------------|
27
+ | `title` | `string` | Yes | Page title |
28
+ | `description` | `string` | Yes | Meta description |
29
+ | `canonical` | `string` | No | Canonical URL |
30
+ | `ogImage` | `string` | No | Open Graph image |
31
+ | `ogType` | `string` | No | Open Graph type |
32
+ | `noindex` | `boolean` | No | Prevent indexing |
33
+
34
+ ## Examples
35
+
36
+ ```typescript
37
+ // Blog post
38
+ <SEOMetaTags
39
+ title="How to Build Fast Websites"
40
+ description="Learn the best practices for building fast, performant websites"
41
+ canonical="https://example.com/blog/fast-websites"
42
+ ogImage="https://example.com/images/blog-og.jpg"
43
+ ogType="article"
44
+ />
45
+
46
+ // No index
47
+ <SEOMetaTags
48
+ title="Admin Dashboard"
49
+ description="Internal dashboard"
50
+ noindex
51
+ />
52
+ ```
53
+
54
+ ## See Also
55
+
56
+ - [I18nMetaTags](./I18nMetaTags.md)
57
+ - [StructuredData](./StructuredData.md)
58
+ - [SEO Guide](../guides/seo-optimization.md)
@@ -0,0 +1,50 @@
1
+ # ScriptInjector
2
+
3
+ Component for injecting third-party scripts.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { ScriptInjector } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Client Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <ScriptInjector
17
+ src="https://example.com/script.js"
18
+ strategy="afterInteractive"
19
+ />
20
+ ```
21
+
22
+ ## Props
23
+
24
+ | Prop | Type | Required | Description |
25
+ |------|------|----------|-------------|
26
+ | `src` | `string` | Yes | Script URL |
27
+ | `strategy` | `'beforeInteractive' \| 'afterInteractive' \| 'lazyOnload'` | No | Load strategy |
28
+ | `onLoad` | `function` | No | Load callback |
29
+ | `onError` | `function` | No | Error callback |
30
+
31
+ ## Examples
32
+
33
+ ```typescript
34
+ // Analytics script
35
+ <ScriptInjector
36
+ src="https://analytics.example.com/script.js"
37
+ strategy="afterInteractive"
38
+ onLoad={() => console.log('Analytics loaded')}
39
+ />
40
+
41
+ // Chat widget
42
+ <ScriptInjector
43
+ src="https://chat.example.com/widget.js"
44
+ strategy="lazyOnload"
45
+ />
46
+ ```
47
+
48
+ ## See Also
49
+
50
+ - [AnalyticsTracker](./AnalyticsTracker.md)
@@ -0,0 +1,72 @@
1
+ # Select
2
+
3
+ Dropdown select input component.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { Select } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <Select
17
+ name="country"
18
+ options={[
19
+ { value: 'us', label: 'United States' },
20
+ { value: 'ca', label: 'Canada' },
21
+ { value: 'uk', label: 'United Kingdom' },
22
+ ]}
23
+ />
24
+ ```
25
+
26
+ ## Props
27
+
28
+ | Prop | Type | Required | Description |
29
+ |------|------|----------|-------------|
30
+ | `name` | `string` | Yes | Select name |
31
+ | `options` | `SelectOption[]` | Yes | Select options |
32
+ | `value` | `string` | No | Selected value |
33
+ | `placeholder` | `string` | No | Placeholder text |
34
+ | `disabled` | `boolean` | No | Disable select |
35
+ | `required` | `boolean` | No | Required field |
36
+ | `onChange` | `function` | No | Change handler |
37
+ | `className` | `string` | No | Custom classes |
38
+
39
+ ### SelectOption
40
+
41
+ | Prop | Type | Required | Description |
42
+ |------|------|----------|-------------|
43
+ | `value` | `string` | Yes | Option value |
44
+ | `label` | `string \| LocalizedString` | Yes | Option label |
45
+
46
+ ## Examples
47
+
48
+ ```typescript
49
+ // With placeholder
50
+ <Select
51
+ name="size"
52
+ placeholder="Select size"
53
+ options={[
54
+ { value: 'sm', label: 'Small' },
55
+ { value: 'md', label: 'Medium' },
56
+ { value: 'lg', label: 'Large' },
57
+ ]}
58
+ />
59
+
60
+ // Controlled select
61
+ <Select
62
+ name="category"
63
+ value={category}
64
+ options={categories}
65
+ onChange={(e) => setCategory(e.target.value)}
66
+ />
67
+ ```
68
+
69
+ ## See Also
70
+
71
+ - [Input](./ui/Input.md)
72
+ - [FormField](./forms/FormField.md)
@@ -0,0 +1,47 @@
1
+ # Skeleton
2
+
3
+ Loading skeleton placeholder component.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { Skeleton } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <Skeleton width="200px" height="20px" />
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ |------|------|----------|-------------|
23
+ | `width` | `string \| number` | No | Skeleton width |
24
+ | `height` | `string \| number` | No | Skeleton height |
25
+ | `variant` | `'text' \| 'circular' \| 'rectangular'` | No | Shape variant |
26
+ | `className` | `string` | No | Custom classes |
27
+
28
+ ## Examples
29
+
30
+ ```typescript
31
+ // Text line
32
+ <Skeleton variant="text" width="100%" />
33
+
34
+ // Avatar
35
+ <Skeleton variant="circular" width={40} height={40} />
36
+
37
+ // Card placeholder
38
+ <div>
39
+ <Skeleton width="100%" height="200px" />
40
+ <Skeleton variant="text" width="80%" className="mt-2" />
41
+ <Skeleton variant="text" width="60%" className="mt-2" />
42
+ </div>
43
+ ```
44
+
45
+ ## See Also
46
+
47
+ - [LoadingSpinner](./LoadingSpinner.md)
@@ -0,0 +1,48 @@
1
+ # StatsSection
2
+
3
+ Statistics display section with animated counters.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { StatsSection } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Client Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <StatsSection
17
+ heading="Our Impact"
18
+ stats={[
19
+ { value: '10,000+', label: 'Customers' },
20
+ { value: '99%', label: 'Satisfaction Rate' },
21
+ { value: '24/7', label: 'Support' },
22
+ ]}
23
+ />
24
+ ```
25
+
26
+ ## Props
27
+
28
+ | Prop | Type | Required | Description |
29
+ |------|------|----------|-------------|
30
+ | `heading` | `string \| LocalizedString` | No | Section heading |
31
+ | `stats` | `Stat[]` | Yes | Statistics items |
32
+ | `variant` | `'default' \| 'cards'` | No | Display variant |
33
+ | `animated` | `boolean` | No | Animate counters |
34
+ | `className` | `string` | No | Custom classes |
35
+ | `locale` | `string` | No | Current locale |
36
+
37
+ ### Stat
38
+
39
+ | Prop | Type | Required | Description |
40
+ |------|------|----------|-------------|
41
+ | `value` | `string \| number` | Yes | Stat value |
42
+ | `label` | `string \| LocalizedString` | Yes | Stat label |
43
+ | `suffix` | `string` | No | Value suffix |
44
+
45
+ ## See Also
46
+
47
+ - [AboutSection](./sections/AboutSection.md)
48
+ - [AnimatedCounter](./AnimatedCounter.md)
@@ -0,0 +1,62 @@
1
+ # StickyBar
2
+
3
+ Sticky banner/bar component (top or bottom).
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { StickyBar } from '@zoyth/simple-site-framework/client';
9
+ ```
10
+
11
+ **Type:** Client Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <StickyBar
17
+ position="top"
18
+ message="🎉 New feature released!"
19
+ cta={{
20
+ text: 'Learn More',
21
+ href: '/features/new'
22
+ }}
23
+ onDismiss={() => setShowBar(false)}
24
+ />
25
+ ```
26
+
27
+ ## Props
28
+
29
+ | Prop | Type | Required | Description |
30
+ |------|------|----------|-------------|
31
+ | `message` | `string \| LocalizedString` | Yes | Bar message |
32
+ | `position` | `'top' \| 'bottom'` | No | Position (default: 'top') |
33
+ | `cta` | `CTAConfig` | No | Call-to-action |
34
+ | `dismissible` | `boolean` | No | Show close button |
35
+ | `onDismiss` | `function` | No | Dismiss handler |
36
+ | `className` | `string` | No | Custom classes |
37
+ | `locale` | `string` | No | Current locale |
38
+
39
+ ## Examples
40
+
41
+ ```typescript
42
+ // Announcement bar
43
+ <StickyBar
44
+ position="top"
45
+ message="Limited time offer - 50% off all plans!"
46
+ cta={{ text: 'Get Started', href: '/pricing' }}
47
+ dismissible
48
+ />
49
+
50
+ // Cookie notice
51
+ <StickyBar
52
+ position="bottom"
53
+ message="We use cookies to improve your experience."
54
+ cta={{ text: 'Learn More', href: '/privacy' }}
55
+ onDismiss={() => setCookieConsent(true)}
56
+ />
57
+ ```
58
+
59
+ ## See Also
60
+
61
+ - [MobileCTA](./conversion/MobileCTA.md)
62
+ - [Toast](./Toast.md)
@@ -0,0 +1,99 @@
1
+ # StructuredData
2
+
3
+ JSON-LD structured data component for rich snippets.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { StructuredData } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <StructuredData
17
+ type="Organization"
18
+ data={{
19
+ name: "Acme Corp",
20
+ url: "https://acme.com",
21
+ logo: "https://acme.com/logo.png",
22
+ }}
23
+ />
24
+ ```
25
+
26
+ ## Props
27
+
28
+ | Prop | Type | Required | Description |
29
+ |------|------|----------|-------------|
30
+ | `type` | `string` | Yes | Schema.org type |
31
+ | `data` | `object` | Yes | Structured data object |
32
+
33
+ ## Supported Types
34
+
35
+ - `Organization`
36
+ - `WebSite`
37
+ - `Article`
38
+ - `BreadcrumbList`
39
+ - `FAQPage`
40
+ - `Product`
41
+ - `Review`
42
+
43
+ ## Examples
44
+
45
+ ```typescript
46
+ // Organization
47
+ <StructuredData
48
+ type="Organization"
49
+ data={{
50
+ "@context": "https://schema.org",
51
+ "@type": "Organization",
52
+ name: "Acme Corporation",
53
+ url: "https://acme.com",
54
+ logo: "https://acme.com/logo.png",
55
+ sameAs: [
56
+ "https://twitter.com/acmecorp",
57
+ "https://linkedin.com/company/acmecorp"
58
+ ]
59
+ }}
60
+ />
61
+
62
+ // Article
63
+ <StructuredData
64
+ type="Article"
65
+ data={{
66
+ "@context": "https://schema.org",
67
+ "@type": "Article",
68
+ headline: "How to Build Fast Websites",
69
+ author: {
70
+ "@type": "Person",
71
+ name: "John Doe"
72
+ },
73
+ datePublished: "2024-01-15"
74
+ }}
75
+ />
76
+
77
+ // FAQ
78
+ <StructuredData
79
+ type="FAQPage"
80
+ data={{
81
+ "@context": "https://schema.org",
82
+ "@type": "FAQPage",
83
+ mainEntity: faqs.map(faq => ({
84
+ "@type": "Question",
85
+ name: faq.question,
86
+ acceptedAnswer: {
87
+ "@type": "Answer",
88
+ text: faq.answer
89
+ }
90
+ }))
91
+ }}
92
+ />
93
+ ```
94
+
95
+ ## See Also
96
+
97
+ - [SEOMetaTags](./SEOMetaTags.md)
98
+ - [FAQAccordion](./FAQAccordion.md)
99
+ - [SEO Guide](../guides/seo-optimization.md)
@@ -0,0 +1,46 @@
1
+ # StyleGuide
2
+
3
+ Component library style guide/showcase.
4
+
5
+ ## Import
6
+
7
+ ```typescript
8
+ import { StyleGuide } from '@zoyth/simple-site-framework';
9
+ ```
10
+
11
+ **Type:** Server Component
12
+
13
+ ## Basic Usage
14
+
15
+ ```typescript
16
+ <StyleGuide
17
+ title="Design System"
18
+ sections={[
19
+ 'colors',
20
+ 'typography',
21
+ 'buttons',
22
+ 'forms',
23
+ 'icons'
24
+ ]}
25
+ />
26
+ ```
27
+
28
+ ## Props
29
+
30
+ | Prop | Type | Required | Description |
31
+ |------|------|----------|-------------|
32
+ | `title` | `string` | No | Style guide title |
33
+ | `sections` | `string[]` | No | Sections to display |
34
+ | `className` | `string` | No | Custom classes |
35
+
36
+ ## Displays
37
+
38
+ - Color palette
39
+ - Typography scale
40
+ - Component variants
41
+ - Spacing system
42
+ - Icon library
43
+
44
+ ## See Also
45
+
46
+ - Internal development tool