@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.
- package/LICENSE +21 -0
- package/README.md +572 -0
- package/bin/create-simple-site.js +390 -0
- package/bin/simple-site.js +664 -0
- package/dist/client.js +135 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +107 -0
- package/dist/client.mjs.map +1 -0
- package/dist/components/index.d.mts +3936 -0
- package/dist/components/index.d.ts +3936 -0
- package/dist/components/index.js +38265 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +38173 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/config/index.d.mts +298 -0
- package/dist/config/index.d.ts +298 -0
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +1 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/index.d.mts +2184 -0
- package/dist/index.d.ts +2184 -0
- package/dist/index.js +1713 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1605 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/i18n/index.js +665 -0
- package/dist/lib/i18n/index.js.map +1 -0
- package/dist/lib/i18n/index.mjs +621 -0
- package/dist/lib/i18n/index.mjs.map +1 -0
- package/docs/DOCUMENTATION-STRUCTURE.md +1156 -0
- package/docs/EXPORTS.md +125 -0
- package/docs/PERFORMANCE.md +757 -0
- package/docs/POLICY-PAGES.md +867 -0
- package/docs/ROADMAP.md +334 -0
- package/docs/SEO.md +455 -0
- package/docs/SITEMAP.md +708 -0
- package/docs/STRUCTURED-DATA.md +671 -0
- package/docs/accessibility/common-patterns.md +529 -0
- package/docs/accessibility/keyboard-navigation.md +263 -0
- package/docs/accessibility/overview.md +122 -0
- package/docs/accessibility/screen-readers.md +311 -0
- package/docs/accessibility/wcag-compliance.md +159 -0
- package/docs/api/README.md +164 -0
- package/docs/api/components/Accessibility.md +356 -0
- package/docs/api/components/Button.md +240 -0
- package/docs/api/components/HeroSection.md +306 -0
- package/docs/architecture/decisions.md +449 -0
- package/docs/components/AnalyticsTracker.md +58 -0
- package/docs/components/AnimatedCounter.md +48 -0
- package/docs/components/AnimatedSection.md +56 -0
- package/docs/components/BlogCard.md +42 -0
- package/docs/components/Checkbox.md +56 -0
- package/docs/components/CodeBlock.md +52 -0
- package/docs/components/ComparisonTable.md +40 -0
- package/docs/components/ComponentDemo.md +38 -0
- package/docs/components/CountdownTimer.md +51 -0
- package/docs/components/ExitIntentModal.md +56 -0
- package/docs/components/FAQAccordion.md +66 -0
- package/docs/components/FeaturesGrid.md +55 -0
- package/docs/components/FileUpload.md +54 -0
- package/docs/components/I18nMetaTags.md +55 -0
- package/docs/components/Icon.md +53 -0
- package/docs/components/LazySection.md +46 -0
- package/docs/components/LiveProof.md +53 -0
- package/docs/components/LoadingSpinner.md +46 -0
- package/docs/components/MultiStepForm.md +48 -0
- package/docs/components/PolicyLayout.md +55 -0
- package/docs/components/PricingTable.md +49 -0
- package/docs/components/Radio.md +59 -0
- package/docs/components/SEOMetaTags.md +58 -0
- package/docs/components/ScriptInjector.md +50 -0
- package/docs/components/Select.md +72 -0
- package/docs/components/Skeleton.md +47 -0
- package/docs/components/StatsSection.md +48 -0
- package/docs/components/StickyBar.md +62 -0
- package/docs/components/StructuredData.md +99 -0
- package/docs/components/StyleGuide.md +46 -0
- package/docs/components/TableOfContents.md +47 -0
- package/docs/components/TestimonialCarousel.md +42 -0
- package/docs/components/Timeline.md +51 -0
- package/docs/components/Toast.md +59 -0
- package/docs/components/TrackedLink.md +62 -0
- package/docs/components/TrustBadges.md +44 -0
- package/docs/components/conversion/MobileCTA.md +363 -0
- package/docs/components/forms/ContactForm.md +75 -0
- package/docs/components/forms/FormField.md +74 -0
- package/docs/components/layout/Footer.md +601 -0
- package/docs/components/layout/Header.md +549 -0
- package/docs/components/layout/LanguageSelector.md +54 -0
- package/docs/components/layout/LanguageSwitcher.md +24 -0
- package/docs/components/overview.md +447 -0
- package/docs/components/sections/AboutSection.md +48 -0
- package/docs/components/sections/CTASection.md +596 -0
- package/docs/components/sections/CaseStudySection.md +47 -0
- package/docs/components/sections/ContactSection.md +599 -0
- package/docs/components/sections/FeatureSection.md +44 -0
- package/docs/components/sections/HeroSection.md +404 -0
- package/docs/components/sections/LogosSection.md +47 -0
- package/docs/components/sections/PersonalTaxesSection.md +23 -0
- package/docs/components/sections/RecruitingSection.md +23 -0
- package/docs/components/sections/SecurePortalSection.md +23 -0
- package/docs/components/sections/ServicePageLayout.md +52 -0
- package/docs/components/sections/ServicesSection.md +49 -0
- package/docs/components/sections/TestimonialSection.md +44 -0
- package/docs/components/sections/WhyChooseUsSection.md +54 -0
- package/docs/components/ui/Breadcrumb.md +70 -0
- package/docs/components/ui/Button.md +514 -0
- package/docs/components/ui/Card.md +501 -0
- package/docs/components/ui/Input.md +54 -0
- package/docs/components/ui/MobileLinks.md +43 -0
- package/docs/components/ui/Modal.md +60 -0
- package/docs/components/ui/Tabs.md +62 -0
- package/docs/components/ui/Textarea.md +52 -0
- package/docs/core-concepts/configuration-driven.md +552 -0
- package/docs/core-concepts/overview.md +351 -0
- package/docs/features/accessibility/README.md +73 -0
- package/docs/features/accessibility/aria-support.md +177 -0
- package/docs/features/accessibility/color-contrast.md +155 -0
- package/docs/features/accessibility/focus-management.md +187 -0
- package/docs/features/accessibility/testing.md +196 -0
- package/docs/features/analytics/README.md +51 -0
- package/docs/features/analytics/ab-testing.md +171 -0
- package/docs/features/analytics/conversion-tracking.md +207 -0
- package/docs/features/analytics/custom-events.md +219 -0
- package/docs/features/analytics/privacy.md +198 -0
- package/docs/features/analytics/setup.md +114 -0
- package/docs/features/analytics/tracking-events.md +224 -0
- package/docs/features/i18n/README.md +51 -0
- package/docs/features/i18n/best-practices.md +273 -0
- package/docs/features/i18n/configuration.md +84 -0
- package/docs/features/i18n/formatting.md +133 -0
- package/docs/features/i18n/locale-detection.md +122 -0
- package/docs/features/i18n/routing.md +99 -0
- package/docs/features/i18n/rtl-support.md +191 -0
- package/docs/features/i18n/translations.md +129 -0
- package/docs/features/internationalization.md +595 -0
- package/docs/features/performance/README.md +77 -0
- package/docs/features/performance/bundle-size.md +134 -0
- package/docs/features/performance/caching.md +131 -0
- package/docs/features/performance/code-splitting.md +121 -0
- package/docs/features/performance/image-optimization.md +110 -0
- package/docs/features/performance/lazy-loading.md +92 -0
- package/docs/features/performance/monitoring.md +148 -0
- package/docs/features/seo/README.md +51 -0
- package/docs/features/seo/best-practices.md +184 -0
- package/docs/features/seo/canonical-urls.md +182 -0
- package/docs/features/seo/meta-tags.md +126 -0
- package/docs/features/seo/open-graph.md +166 -0
- package/docs/features/seo/robots-txt.md +146 -0
- package/docs/features/seo/sitemaps.md +162 -0
- package/docs/features/seo/structured-data.md +166 -0
- package/docs/getting-started/installation.md +292 -0
- package/docs/getting-started/introduction.md +195 -0
- package/docs/getting-started/quick-start.md +460 -0
- package/docs/guides/analytics-setup.md +616 -0
- package/docs/i18n/CONFIGURATION.md +353 -0
- package/docs/i18n/EXAMPLES.md +402 -0
- package/docs/i18n/MIGRATION.md +260 -0
- package/docs/i18n/SEO.md +392 -0
- package/docs/i18n/STATIC-GENERATION-FIX.md +71 -0
- package/docs/migration/changelog.md +136 -0
- package/docs/migration/overview.md +233 -0
- package/docs/recipes/adding-animations.md +475 -0
- package/docs/recipes/forms-with-validation.md +393 -0
- package/package.json +152 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CodeBlock
|
|
2
|
+
|
|
3
|
+
Syntax-highlighted code display component.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { CodeBlock } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<CodeBlock
|
|
17
|
+
code={`function hello() {\n console.log('Hello, world!');\n}`}
|
|
18
|
+
language="javascript"
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Props
|
|
23
|
+
|
|
24
|
+
| Prop | Type | Required | Description |
|
|
25
|
+
|------|------|----------|-------------|
|
|
26
|
+
| `code` | `string` | Yes | Code content |
|
|
27
|
+
| `language` | `string` | Yes | Programming language |
|
|
28
|
+
| `showLineNumbers` | `boolean` | No | Show line numbers |
|
|
29
|
+
| `highlight` | `number[]` | No | Lines to highlight |
|
|
30
|
+
| `className` | `string` | No | Custom classes |
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// With line numbers
|
|
36
|
+
<CodeBlock
|
|
37
|
+
code={codeString}
|
|
38
|
+
language="typescript"
|
|
39
|
+
showLineNumbers
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
// Highlight specific lines
|
|
43
|
+
<CodeBlock
|
|
44
|
+
code={codeString}
|
|
45
|
+
language="javascript"
|
|
46
|
+
highlight={[3, 4, 5]}
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## See Also
|
|
51
|
+
|
|
52
|
+
- [Documentation](../guides/documentation.md)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ComparisonTable
|
|
2
|
+
|
|
3
|
+
Feature comparison table component.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { ComparisonTable } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<ComparisonTable
|
|
17
|
+
columns={[
|
|
18
|
+
{ name: 'Feature', key: 'feature' },
|
|
19
|
+
{ name: 'Basic', key: 'basic' },
|
|
20
|
+
{ name: 'Pro', key: 'pro' },
|
|
21
|
+
]}
|
|
22
|
+
rows={[
|
|
23
|
+
{ feature: 'Users', basic: '10', pro: 'Unlimited' },
|
|
24
|
+
{ feature: 'Storage', basic: '10GB', pro: '1TB' },
|
|
25
|
+
]}
|
|
26
|
+
/>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Props
|
|
30
|
+
|
|
31
|
+
| Prop | Type | Required | Description |
|
|
32
|
+
|------|------|----------|-------------|
|
|
33
|
+
| `columns` | `Column[]` | Yes | Table columns |
|
|
34
|
+
| `rows` | `object[]` | Yes | Table rows |
|
|
35
|
+
| `highlightColumn` | `number` | No | Highlighted column index |
|
|
36
|
+
| `className` | `string` | No | Custom classes |
|
|
37
|
+
|
|
38
|
+
## See Also
|
|
39
|
+
|
|
40
|
+
- [PricingTable](./PricingTable.md)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# ComponentDemo
|
|
2
|
+
|
|
3
|
+
Component demonstration wrapper with code preview.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { ComponentDemo } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<ComponentDemo
|
|
17
|
+
title="Button Examples"
|
|
18
|
+
code={`<Button variant="filled">Click Me</Button>`}
|
|
19
|
+
>
|
|
20
|
+
<Button variant="filled">Click Me</Button>
|
|
21
|
+
</ComponentDemo>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
|
|
26
|
+
| Prop | Type | Required | Description |
|
|
27
|
+
|------|------|----------|-------------|
|
|
28
|
+
| `title` | `string` | No | Demo title |
|
|
29
|
+
| `code` | `string` | No | Code to display |
|
|
30
|
+
| `children` | `ReactNode` | Yes | Component to demo |
|
|
31
|
+
| `description` | `string` | No | Demo description |
|
|
32
|
+
| `className` | `string` | No | Custom classes |
|
|
33
|
+
|
|
34
|
+
## See Also
|
|
35
|
+
|
|
36
|
+
- [CodeBlock](./CodeBlock.md)
|
|
37
|
+
- [StyleGuide](./StyleGuide.md)
|
|
38
|
+
- Internal development/documentation tool
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CountdownTimer
|
|
2
|
+
|
|
3
|
+
Countdown timer component for time-limited offers.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { CountdownTimer } from '@zoyth/simple-site-framework/client';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<CountdownTimer
|
|
17
|
+
targetDate="2024-12-31T23:59:59"
|
|
18
|
+
onComplete={() => console.log('Timer ended')}
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Props
|
|
23
|
+
|
|
24
|
+
| Prop | Type | Required | Description |
|
|
25
|
+
|------|------|----------|-------------|
|
|
26
|
+
| `targetDate` | `string \| Date` | Yes | Target date/time |
|
|
27
|
+
| `onComplete` | `function` | No | Completion handler |
|
|
28
|
+
| `format` | `'dhms' \| 'hms'` | No | Display format |
|
|
29
|
+
| `className` | `string` | No | Custom classes |
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// Days, hours, minutes, seconds
|
|
35
|
+
<CountdownTimer
|
|
36
|
+
targetDate="2024-06-01T00:00:00"
|
|
37
|
+
format="dhms"
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Hours, minutes, seconds only
|
|
41
|
+
<CountdownTimer
|
|
42
|
+
targetDate={saleEndDate}
|
|
43
|
+
format="hms"
|
|
44
|
+
onComplete={() => setSaleEnded(true)}
|
|
45
|
+
/>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## See Also
|
|
49
|
+
|
|
50
|
+
- [CTASection](./sections/CTASection.md)
|
|
51
|
+
- [AnimatedCounter](./AnimatedCounter.md)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ExitIntentModal
|
|
2
|
+
|
|
3
|
+
Modal that appears when user intends to leave.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { ExitIntentModal } from '@zoyth/simple-site-framework/client';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<ExitIntentModal
|
|
17
|
+
title="Wait! Don't Go Yet"
|
|
18
|
+
message="Get 20% off your first purchase"
|
|
19
|
+
cta={{
|
|
20
|
+
text: 'Claim Discount',
|
|
21
|
+
href: '/signup?discount=exit20'
|
|
22
|
+
}}
|
|
23
|
+
/>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Props
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Required | Description |
|
|
29
|
+
|------|------|----------|-------------|
|
|
30
|
+
| `title` | `string \| LocalizedString` | Yes | Modal title |
|
|
31
|
+
| `message` | `string \| LocalizedString` | Yes | Modal message |
|
|
32
|
+
| `cta` | `CTAConfig` | Yes | Call-to-action |
|
|
33
|
+
| `delay` | `number` | No | Delay before showing (ms) |
|
|
34
|
+
| `cooldown` | `number` | No | Cooldown period (ms) |
|
|
35
|
+
| `className` | `string` | No | Custom classes |
|
|
36
|
+
| `locale` | `string` | No | Current locale |
|
|
37
|
+
|
|
38
|
+
## Examples
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
// Newsletter signup
|
|
42
|
+
<ExitIntentModal
|
|
43
|
+
title="Stay Updated"
|
|
44
|
+
message="Subscribe to our newsletter for tips and updates"
|
|
45
|
+
cta={{
|
|
46
|
+
text: 'Subscribe',
|
|
47
|
+
href: '/newsletter'
|
|
48
|
+
}}
|
|
49
|
+
delay={3000}
|
|
50
|
+
/>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## See Also
|
|
54
|
+
|
|
55
|
+
- [Modal](./ui/Modal.md)
|
|
56
|
+
- [MobileCTA](./conversion/MobileCTA.md)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# FAQAccordion
|
|
2
|
+
|
|
3
|
+
Frequently asked questions accordion component.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { FAQAccordion } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<FAQAccordion
|
|
17
|
+
faqs={[
|
|
18
|
+
{
|
|
19
|
+
question: 'What is included in the free trial?',
|
|
20
|
+
answer: 'Full access to all features for 14 days.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Can I cancel anytime?',
|
|
24
|
+
answer: 'Yes, cancel anytime with no penalties.',
|
|
25
|
+
},
|
|
26
|
+
]}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Props
|
|
31
|
+
|
|
32
|
+
| Prop | Type | Required | Description |
|
|
33
|
+
|------|------|----------|-------------|
|
|
34
|
+
| `faqs` | `FAQ[]` | Yes | FAQ items |
|
|
35
|
+
| `allowMultiple` | `boolean` | No | Allow multiple open (default: false) |
|
|
36
|
+
| `defaultOpen` | `number[]` | No | Initially open items |
|
|
37
|
+
| `className` | `string` | No | Custom classes |
|
|
38
|
+
| `locale` | `string` | No | Current locale |
|
|
39
|
+
|
|
40
|
+
### FAQ
|
|
41
|
+
|
|
42
|
+
| Prop | Type | Required | Description |
|
|
43
|
+
|------|------|----------|-------------|
|
|
44
|
+
| `question` | `string \| LocalizedString` | Yes | Question text |
|
|
45
|
+
| `answer` | `string \| LocalizedString` | Yes | Answer text |
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// Allow multiple open
|
|
51
|
+
<FAQAccordion
|
|
52
|
+
faqs={faqs}
|
|
53
|
+
allowMultiple
|
|
54
|
+
/>
|
|
55
|
+
|
|
56
|
+
// Default open first item
|
|
57
|
+
<FAQAccordion
|
|
58
|
+
faqs={faqs}
|
|
59
|
+
defaultOpen={[0]}
|
|
60
|
+
/>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## See Also
|
|
64
|
+
|
|
65
|
+
- [Modal](./ui/Modal.md)
|
|
66
|
+
- [Tabs](./ui/Tabs.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# FeaturesGrid
|
|
2
|
+
|
|
3
|
+
Grid of features with icons and descriptions.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { FeaturesGrid } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<FeaturesGrid
|
|
17
|
+
heading="Why Choose Us"
|
|
18
|
+
features={[
|
|
19
|
+
{
|
|
20
|
+
title: 'Fast Performance',
|
|
21
|
+
description: 'Lightning-fast load times',
|
|
22
|
+
icon: 'zap',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: 'Secure',
|
|
26
|
+
description: 'Enterprise-grade security',
|
|
27
|
+
icon: 'shield',
|
|
28
|
+
},
|
|
29
|
+
]}
|
|
30
|
+
/>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
| Prop | Type | Required | Description |
|
|
36
|
+
|------|------|----------|-------------|
|
|
37
|
+
| `heading` | `string \| LocalizedString` | Yes | Section heading |
|
|
38
|
+
| `description` | `string \| LocalizedString` | No | Section description |
|
|
39
|
+
| `features` | `Feature[]` | Yes | Feature items |
|
|
40
|
+
| `columns` | `number` | No | Grid columns (default: 3) |
|
|
41
|
+
| `className` | `string` | No | Custom classes |
|
|
42
|
+
| `locale` | `string` | No | Current locale |
|
|
43
|
+
|
|
44
|
+
### Feature
|
|
45
|
+
|
|
46
|
+
| Prop | Type | Required | Description |
|
|
47
|
+
|------|------|----------|-------------|
|
|
48
|
+
| `title` | `string \| LocalizedString` | Yes | Feature title |
|
|
49
|
+
| `description` | `string \| LocalizedString` | Yes | Feature description |
|
|
50
|
+
| `icon` | `string` | No | Icon name |
|
|
51
|
+
|
|
52
|
+
## See Also
|
|
53
|
+
|
|
54
|
+
- [Icon](./Icon.md)
|
|
55
|
+
- [Card](./ui/Card.md)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# FileUpload
|
|
2
|
+
|
|
3
|
+
File upload component with drag-and-drop.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { FileUpload } from '@zoyth/simple-site-framework/client';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<FileUpload
|
|
17
|
+
onUpload={(files) => handleFiles(files)}
|
|
18
|
+
accept="image/*"
|
|
19
|
+
maxSize={5242880} // 5MB
|
|
20
|
+
/>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Required | Description |
|
|
26
|
+
|------|------|----------|-------------|
|
|
27
|
+
| `onUpload` | `function` | Yes | Upload handler |
|
|
28
|
+
| `accept` | `string` | No | Accepted file types |
|
|
29
|
+
| `maxSize` | `number` | No | Max file size (bytes) |
|
|
30
|
+
| `multiple` | `boolean` | No | Allow multiple files |
|
|
31
|
+
| `disabled` | `boolean` | No | Disable upload |
|
|
32
|
+
| `className` | `string` | No | Custom classes |
|
|
33
|
+
|
|
34
|
+
## Examples
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Image upload
|
|
38
|
+
<FileUpload
|
|
39
|
+
onUpload={handleImages}
|
|
40
|
+
accept="image/png,image/jpeg"
|
|
41
|
+
maxSize={10485760} // 10MB
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
// Multiple files
|
|
45
|
+
<FileUpload
|
|
46
|
+
onUpload={handleFiles}
|
|
47
|
+
multiple
|
|
48
|
+
accept=".pdf,.doc,.docx"
|
|
49
|
+
/>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## See Also
|
|
53
|
+
|
|
54
|
+
- [FormField](./forms/FormField.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# I18nMetaTags
|
|
2
|
+
|
|
3
|
+
Internationalization meta tags (hreflang, alternates).
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { I18nMetaTags } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<I18nMetaTags
|
|
17
|
+
currentLocale="en"
|
|
18
|
+
pathname="/about"
|
|
19
|
+
baseUrl="https://example.com"
|
|
20
|
+
/>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Required | Description |
|
|
26
|
+
|------|------|----------|-------------|
|
|
27
|
+
| `currentLocale` | `string` | Yes | Current locale |
|
|
28
|
+
| `pathname` | `string` | Yes | Current pathname |
|
|
29
|
+
| `baseUrl` | `string` | Yes | Site base URL |
|
|
30
|
+
|
|
31
|
+
## Generated Tags
|
|
32
|
+
|
|
33
|
+
Automatically generates:
|
|
34
|
+
- Canonical URL
|
|
35
|
+
- hreflang alternate links for all locales
|
|
36
|
+
- x-default alternate link
|
|
37
|
+
- og:locale meta tag
|
|
38
|
+
- og:locale:alternate meta tags
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// Basic usage
|
|
44
|
+
<I18nMetaTags
|
|
45
|
+
currentLocale={locale}
|
|
46
|
+
pathname="/pricing"
|
|
47
|
+
baseUrl="https://mysite.com"
|
|
48
|
+
/>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## See Also
|
|
52
|
+
|
|
53
|
+
- [SEOMetaTags](./SEOMetaTags.md)
|
|
54
|
+
- [LanguageSelector](./layout/LanguageSelector.md)
|
|
55
|
+
- [Internationalization Guide](../features/internationalization.md)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Icon
|
|
2
|
+
|
|
3
|
+
Icon component with built-in icons.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { Icon } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<Icon name="check" size="md" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
|------|------|----------|-------------|
|
|
23
|
+
| `name` | `IconName` | Yes | Icon name |
|
|
24
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | No | Icon size |
|
|
25
|
+
| `className` | `string` | No | Custom classes |
|
|
26
|
+
|
|
27
|
+
## Available Icons
|
|
28
|
+
|
|
29
|
+
Common icons include: `check`, `x`, `arrow-right`, `arrow-left`, `menu`, `close`, `search`, `user`, `mail`, `phone`, `star`, `heart`, `zap`, `shield`, `code`, `mobile`, `chart`, `clock`, `users`, and more.
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// Basic icon
|
|
35
|
+
<Icon name="check" />
|
|
36
|
+
|
|
37
|
+
// Large icon
|
|
38
|
+
<Icon name="star" size="lg" />
|
|
39
|
+
|
|
40
|
+
// Custom color
|
|
41
|
+
<Icon name="heart" className="text-red-500" />
|
|
42
|
+
|
|
43
|
+
// In button
|
|
44
|
+
<Button>
|
|
45
|
+
<Icon name="arrow-right" size="sm" className="mr-2" />
|
|
46
|
+
Continue
|
|
47
|
+
</Button>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## See Also
|
|
51
|
+
|
|
52
|
+
- [FeaturesGrid](./FeaturesGrid.md)
|
|
53
|
+
- [Button](./ui/Button.md)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# LazySection
|
|
2
|
+
|
|
3
|
+
Lazy-load sections below the fold for better performance.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { LazySection } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<LazySection>
|
|
17
|
+
<TestimonialSection {...props} />
|
|
18
|
+
</LazySection>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Props
|
|
22
|
+
|
|
23
|
+
| Prop | Type | Required | Description |
|
|
24
|
+
|------|------|----------|-------------|
|
|
25
|
+
| `children` | `ReactNode` | Yes | Content to lazy-load |
|
|
26
|
+
| `threshold` | `number` | No | Intersection threshold (default: 0.1) |
|
|
27
|
+
| `rootMargin` | `string` | No | Root margin (default: '50px') |
|
|
28
|
+
| `className` | `string` | No | Custom classes |
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// Lazy-load testimonials
|
|
34
|
+
<LazySection>
|
|
35
|
+
<TestimonialSection testimonials={testimonials} />
|
|
36
|
+
</LazySection>
|
|
37
|
+
|
|
38
|
+
// Custom threshold
|
|
39
|
+
<LazySection threshold={0.5}>
|
|
40
|
+
<HeavyComponent />
|
|
41
|
+
</LazySection>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## See Also
|
|
45
|
+
|
|
46
|
+
- [Performance Guide](../guides/performance.md)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# LiveProof
|
|
2
|
+
|
|
3
|
+
Social proof notification system showing recent activity.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { LiveProof } from '@zoyth/simple-site-framework/client';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Client Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<LiveProof
|
|
17
|
+
notifications={[
|
|
18
|
+
{
|
|
19
|
+
message: 'John from New York just signed up',
|
|
20
|
+
timestamp: Date.now() - 60000,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
message: 'Sarah purchased Pro Plan',
|
|
24
|
+
timestamp: Date.now() - 120000,
|
|
25
|
+
},
|
|
26
|
+
]}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Props
|
|
31
|
+
|
|
32
|
+
| Prop | Type | Required | Description |
|
|
33
|
+
|------|------|----------|-------------|
|
|
34
|
+
| `notifications` | `Notification[]` | Yes | Notification items |
|
|
35
|
+
| `interval` | `number` | No | Display interval (ms) |
|
|
36
|
+
| `position` | `'bottom-left' \| 'bottom-right'` | No | Screen position |
|
|
37
|
+
| `className` | `string` | No | Custom classes |
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
// Custom position
|
|
43
|
+
<LiveProof
|
|
44
|
+
notifications={notifications}
|
|
45
|
+
position="bottom-left"
|
|
46
|
+
interval={5000}
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## See Also
|
|
51
|
+
|
|
52
|
+
- [TestimonialSection](./sections/TestimonialSection.md)
|
|
53
|
+
- [MobileCTA](./conversion/MobileCTA.md)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# LoadingSpinner
|
|
2
|
+
|
|
3
|
+
Loading spinner component.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { LoadingSpinner } from '@zoyth/simple-site-framework';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Type:** Server Component
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
<LoadingSpinner />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
|------|------|----------|-------------|
|
|
23
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | No | Spinner size |
|
|
24
|
+
| `color` | `string` | No | Spinner color |
|
|
25
|
+
| `className` | `string` | No | Custom classes |
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Large spinner
|
|
31
|
+
<LoadingSpinner size="lg" />
|
|
32
|
+
|
|
33
|
+
// Custom color
|
|
34
|
+
<LoadingSpinner color="primary" />
|
|
35
|
+
|
|
36
|
+
// In button
|
|
37
|
+
<Button disabled>
|
|
38
|
+
<LoadingSpinner size="sm" className="mr-2" />
|
|
39
|
+
Loading...
|
|
40
|
+
</Button>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## See Also
|
|
44
|
+
|
|
45
|
+
- [Skeleton](./Skeleton.md)
|
|
46
|
+
- [Button](./ui/Button.md)
|