@shipsite.dev/components 0.2.21 → 0.2.23
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/components.json +31 -11
- package/dist/blog/BlogArticle.d.ts +2 -1
- package/dist/blog/BlogArticle.d.ts.map +1 -1
- package/dist/blog/BlogArticle.js +2 -2
- package/dist/blog/BlogArticle.js.map +1 -1
- package/dist/blog/BlogArticleClient.d.ts +4 -2
- package/dist/blog/BlogArticleClient.d.ts.map +1 -1
- package/dist/blog/BlogArticleClient.js +4 -3
- package/dist/blog/BlogArticleClient.js.map +1 -1
- package/dist/blog/BlogIndex.d.ts +2 -1
- package/dist/blog/BlogIndex.d.ts.map +1 -1
- package/dist/blog/BlogIndex.js +2 -2
- package/dist/blog/BlogIndex.js.map +1 -1
- package/dist/content/ContentPage.d.ts +2 -1
- package/dist/content/ContentPage.d.ts.map +1 -1
- package/dist/content/ContentPage.js +2 -2
- package/dist/content/ContentPage.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/marketing/AlternatingFeatures.d.ts +5 -4
- package/dist/marketing/AlternatingFeatures.d.ts.map +1 -1
- package/dist/marketing/AlternatingFeatures.js +6 -5
- package/dist/marketing/AlternatingFeatures.js.map +1 -1
- package/dist/marketing/BannerCTA.d.ts +2 -1
- package/dist/marketing/BannerCTA.d.ts.map +1 -1
- package/dist/marketing/BannerCTA.js +2 -2
- package/dist/marketing/BannerCTA.js.map +1 -1
- package/dist/marketing/BentoGrid.d.ts +4 -2
- package/dist/marketing/BentoGrid.d.ts.map +1 -1
- package/dist/marketing/BentoGrid.js +4 -3
- package/dist/marketing/BentoGrid.js.map +1 -1
- package/dist/marketing/CalloutCard.d.ts +2 -1
- package/dist/marketing/CalloutCard.d.ts.map +1 -1
- package/dist/marketing/CalloutCard.js +2 -2
- package/dist/marketing/CalloutCard.js.map +1 -1
- package/dist/marketing/CardGrid.d.ts +2 -1
- package/dist/marketing/CardGrid.d.ts.map +1 -1
- package/dist/marketing/CardGrid.js +2 -2
- package/dist/marketing/CardGrid.js.map +1 -1
- package/dist/marketing/Carousel.d.ts +4 -2
- package/dist/marketing/Carousel.d.ts.map +1 -1
- package/dist/marketing/Carousel.js +4 -3
- package/dist/marketing/Carousel.js.map +1 -1
- package/dist/marketing/Companies.d.ts +4 -2
- package/dist/marketing/Companies.d.ts.map +1 -1
- package/dist/marketing/Companies.js +4 -3
- package/dist/marketing/Companies.js.map +1 -1
- package/dist/marketing/FAQ.d.ts +2 -1
- package/dist/marketing/FAQ.d.ts.map +1 -1
- package/dist/marketing/FAQ.js +2 -2
- package/dist/marketing/FAQ.js.map +1 -1
- package/dist/marketing/Features.d.ts +2 -1
- package/dist/marketing/Features.d.ts.map +1 -1
- package/dist/marketing/Features.js +2 -2
- package/dist/marketing/Features.js.map +1 -1
- package/dist/marketing/Gallery.d.ts +4 -2
- package/dist/marketing/Gallery.d.ts.map +1 -1
- package/dist/marketing/Gallery.js +4 -3
- package/dist/marketing/Gallery.js.map +1 -1
- package/dist/marketing/Hero.d.ts +4 -2
- package/dist/marketing/Hero.d.ts.map +1 -1
- package/dist/marketing/Hero.js +3 -2
- package/dist/marketing/Hero.js.map +1 -1
- package/dist/marketing/PageHero.d.ts +2 -1
- package/dist/marketing/PageHero.d.ts.map +1 -1
- package/dist/marketing/PageHero.js +2 -2
- package/dist/marketing/PageHero.js.map +1 -1
- package/dist/marketing/PricingSection.d.ts +2 -1
- package/dist/marketing/PricingSection.d.ts.map +1 -1
- package/dist/marketing/PricingSection.js +2 -2
- package/dist/marketing/PricingSection.js.map +1 -1
- package/dist/marketing/SocialProof.d.ts +2 -1
- package/dist/marketing/SocialProof.d.ts.map +1 -1
- package/dist/marketing/SocialProof.js +2 -2
- package/dist/marketing/SocialProof.js.map +1 -1
- package/dist/marketing/Stats.d.ts +2 -1
- package/dist/marketing/Stats.d.ts.map +1 -1
- package/dist/marketing/Stats.js +2 -2
- package/dist/marketing/Stats.js.map +1 -1
- package/dist/marketing/Steps.d.ts +2 -1
- package/dist/marketing/Steps.d.ts.map +1 -1
- package/dist/marketing/Steps.js +2 -2
- package/dist/marketing/Steps.js.map +1 -1
- package/dist/marketing/TabsSection.d.ts +4 -2
- package/dist/marketing/TabsSection.d.ts.map +1 -1
- package/dist/marketing/TabsSection.js +4 -3
- package/dist/marketing/TabsSection.js.map +1 -1
- package/dist/marketing/Testimonial.d.ts +4 -2
- package/dist/marketing/Testimonial.d.ts.map +1 -1
- package/dist/marketing/Testimonial.js +3 -2
- package/dist/marketing/Testimonial.js.map +1 -1
- package/dist/marketing/Testimonials.d.ts +4 -2
- package/dist/marketing/Testimonials.d.ts.map +1 -1
- package/dist/marketing/Testimonials.js +4 -3
- package/dist/marketing/Testimonials.js.map +1 -1
- package/dist/ui/theme-image.d.ts +11 -0
- package/dist/ui/theme-image.d.ts.map +1 -0
- package/dist/ui/theme-image.js +9 -0
- package/dist/ui/theme-image.js.map +1 -0
- package/package.json +1 -1
- package/src/blog/BlogArticle.tsx +3 -2
- package/src/blog/BlogArticleClient.tsx +6 -3
- package/src/blog/BlogIndex.tsx +3 -2
- package/src/content/ContentPage.tsx +3 -2
- package/src/index.ts +4 -0
- package/src/marketing/AlternatingFeatures.tsx +7 -13
- package/src/marketing/BannerCTA.tsx +3 -2
- package/src/marketing/BentoGrid.tsx +6 -4
- package/src/marketing/CalloutCard.tsx +3 -2
- package/src/marketing/CardGrid.tsx +3 -2
- package/src/marketing/Carousel.tsx +6 -4
- package/src/marketing/Companies.tsx +10 -8
- package/src/marketing/FAQ.tsx +3 -2
- package/src/marketing/Features.tsx +3 -2
- package/src/marketing/Gallery.tsx +6 -4
- package/src/marketing/Hero.tsx +6 -4
- package/src/marketing/PageHero.tsx +3 -2
- package/src/marketing/PricingSection.tsx +3 -2
- package/src/marketing/SocialProof.tsx +3 -2
- package/src/marketing/Stats.tsx +3 -2
- package/src/marketing/Steps.tsx +3 -2
- package/src/marketing/TabsSection.tsx +6 -4
- package/src/marketing/Testimonial.tsx +6 -4
- package/src/marketing/Testimonials.tsx +6 -4
- package/src/ui/theme-image.tsx +20 -0
package/components.json
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "https://schema.shipsite.dev/components.json",
|
|
3
2
|
"version": "0.1.0",
|
|
4
3
|
"components": [
|
|
5
4
|
{
|
|
@@ -7,12 +6,13 @@
|
|
|
7
6
|
"category": "marketing",
|
|
8
7
|
"description": "Full-width hero section with animated title, description, optional badge, primary/secondary CTAs, and a responsive device mockup image. Uses a top glow effect for visual emphasis.",
|
|
9
8
|
"props": [
|
|
9
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"pricing\" enables #pricing navigation)." },
|
|
10
10
|
{ "name": "title", "type": "string", "required": true, "description": "Main headline text displayed as an h1." },
|
|
11
11
|
{ "name": "description", "type": "string", "required": true, "description": "Supporting paragraph text below the title." },
|
|
12
12
|
{ "name": "primaryCta", "type": "{ label: string; href: string }", "required": false, "description": "Primary call-to-action button with label and link." },
|
|
13
13
|
{ "name": "secondaryCta", "type": "{ label: string; href: string }", "required": false, "description": "Secondary call-to-action button rendered with the glow variant." },
|
|
14
14
|
{ "name": "badge", "type": "string", "required": false, "description": "Small badge text displayed above the title." },
|
|
15
|
-
{ "name": "image", "type": "
|
|
15
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Hero image displayed inside a responsive device mockup. Pass a string URL or { light, dark } for theme-aware images." },
|
|
16
16
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Optional additional content rendered below the CTA buttons." }
|
|
17
17
|
],
|
|
18
18
|
"example": "<Hero\n title=\"Build your SaaS faster\"\n description=\"Ship production-ready landing pages in minutes.\"\n badge=\"New Release\"\n primaryCta={{ label: \"Get Started\", href: \"/signup\" }}\n secondaryCta={{ label: \"Learn More\", href: \"/docs\" }}\n image=\"/images/hero-screenshot.png\"\n/>"
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"category": "marketing",
|
|
34
34
|
"description": "Section that displays a grid of Feature cards with an optional section title and description. Supports 2, 3, or 4 column layouts.",
|
|
35
35
|
"props": [
|
|
36
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"features\" enables #features navigation)." },
|
|
36
37
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the grid." },
|
|
37
38
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
38
39
|
{ "name": "columns", "type": "2 | 3 | 4", "required": false, "description": "Number of grid columns. Defaults to 3." },
|
|
@@ -58,8 +59,7 @@
|
|
|
58
59
|
"props": [
|
|
59
60
|
{ "name": "title", "type": "string", "required": true, "description": "Row heading text." },
|
|
60
61
|
{ "name": "description", "type": "string", "required": false, "description": "Row description paragraph." },
|
|
61
|
-
{ "name": "image", "type": "
|
|
62
|
-
{ "name": "imageDark", "type": "string", "required": false, "description": "URL of the dark-mode variant of the image." },
|
|
62
|
+
{ "name": "image", "type": "ImageSource", "required": true, "description": "Feature image. Pass a string URL or { light, dark } for theme-aware images." },
|
|
63
63
|
{ "name": "imageAlt", "type": "string", "required": false, "description": "Alt text for the image. Defaults to the title." },
|
|
64
64
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "AlternatingFeatureItem children rendered below the description." }
|
|
65
65
|
],
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"category": "marketing",
|
|
71
71
|
"description": "Container section for alternating feature rows. Renders rows with alternating text/image layout separated by dividers.",
|
|
72
72
|
"props": [
|
|
73
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"features\" enables #features navigation)." },
|
|
73
74
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the rows." },
|
|
74
75
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
75
76
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "AlternatingFeatureRow children." }
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"category": "marketing",
|
|
116
117
|
"description": "Full pricing section with plan cards, optional monthly/yearly toggle, and an optional feature comparison table. Consumes PricingPlan, ComparisonRow, and ComparisonCategory children.",
|
|
117
118
|
"props": [
|
|
119
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"pricing\" enables #pricing navigation)." },
|
|
118
120
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading." },
|
|
119
121
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
120
122
|
{ "name": "monthlyLabel", "type": "string", "required": false, "description": "Label for the monthly toggle. Defaults to 'Monthly'." },
|
|
@@ -129,8 +131,9 @@
|
|
|
129
131
|
"category": "marketing",
|
|
130
132
|
"description": "Logo showcase section with two variants: a continuous marquee scroll animation or a static inline flex layout. Supports logo names, versions, and badges in inline mode.",
|
|
131
133
|
"props": [
|
|
134
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"companies\" enables #companies navigation)." },
|
|
132
135
|
{ "name": "title", "type": "string", "required": false, "description": "Title text above the logos." },
|
|
133
|
-
{ "name": "logos", "type": "Array<{ src:
|
|
136
|
+
{ "name": "logos", "type": "Array<{ src: ImageSource; alt: string; width?: number; name?: string; version?: string; badge?: string }>", "required": true, "description": "Array of logo items. Each has an image src (string or { light, dark }), alt text, and optional width, name, version, and badge." },
|
|
134
137
|
{ "name": "variant", "type": "'marquee' | 'inline'", "required": false, "description": "Display variant. 'marquee' (default) shows a scrolling animation; 'inline' shows a static flexbox layout with names and badges." }
|
|
135
138
|
],
|
|
136
139
|
"example": "<Companies\n title=\"Trusted by leading companies\"\n logos={[\n { src: \"/logos/acme.svg\", alt: \"Acme\" },\n { src: \"/logos/globex.svg\", alt: \"Globex\" }\n ]}\n/>"
|
|
@@ -140,10 +143,11 @@
|
|
|
140
143
|
"category": "marketing",
|
|
141
144
|
"description": "Single large testimonial quote block with author info, displayed in a centered glass card.",
|
|
142
145
|
"props": [
|
|
146
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"testimonial\" enables #testimonial navigation)." },
|
|
143
147
|
{ "name": "quote", "type": "string", "required": true, "description": "The testimonial quote text." },
|
|
144
148
|
{ "name": "author", "type": "string", "required": true, "description": "Name of the person giving the testimonial." },
|
|
145
149
|
{ "name": "role", "type": "string", "required": false, "description": "Job title or role of the author." },
|
|
146
|
-
{ "name": "image", "type": "
|
|
150
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Author's avatar image. Pass a string URL or { light, dark } for theme-aware images." },
|
|
147
151
|
{ "name": "company", "type": "string", "required": false, "description": "Company name of the author." }
|
|
148
152
|
],
|
|
149
153
|
"example": "<Testimonial\n quote=\"This product changed how we work.\"\n author=\"Jane Doe\"\n role=\"CEO\"\n company=\"Acme Inc\"\n image=\"/images/jane.jpg\"\n/>"
|
|
@@ -157,7 +161,7 @@
|
|
|
157
161
|
{ "name": "author", "type": "string", "required": true, "description": "Name of the person giving the testimonial." },
|
|
158
162
|
{ "name": "role", "type": "string", "required": false, "description": "Job title or role of the author." },
|
|
159
163
|
{ "name": "company", "type": "string", "required": false, "description": "Company name of the author." },
|
|
160
|
-
{ "name": "image", "type": "
|
|
164
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Author's avatar image. Pass a string URL or { light, dark } for theme-aware images." },
|
|
161
165
|
{ "name": "rating", "type": "number", "required": false, "description": "Star rating (1-5) displayed as filled star icons." }
|
|
162
166
|
],
|
|
163
167
|
"example": "<TestimonialCard\n quote=\"Incredible experience!\"\n author=\"John Smith\"\n role=\"CTO\"\n company=\"Globex\"\n rating={5}\n/>"
|
|
@@ -167,6 +171,7 @@
|
|
|
167
171
|
"category": "marketing",
|
|
168
172
|
"description": "Grid section that displays multiple TestimonialCard components with an optional section title and description.",
|
|
169
173
|
"props": [
|
|
174
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"testimonials\" enables #testimonials navigation)." },
|
|
170
175
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the grid." },
|
|
171
176
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
172
177
|
{ "name": "columns", "type": "2 | 3", "required": false, "description": "Number of grid columns. Defaults to 3." },
|
|
@@ -179,6 +184,7 @@
|
|
|
179
184
|
"category": "marketing",
|
|
180
185
|
"description": "Full-width call-to-action banner with a centered glow effect, title, optional subtext, and a primary button. Supports additional children content.",
|
|
181
186
|
"props": [
|
|
187
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"cta\" enables #cta navigation)." },
|
|
182
188
|
{ "name": "title", "type": "string", "required": true, "description": "Banner headline text." },
|
|
183
189
|
{ "name": "buttonText", "type": "string", "required": true, "description": "Text displayed on the CTA button." },
|
|
184
190
|
{ "name": "buttonHref", "type": "string", "required": false, "description": "URL the button links to." },
|
|
@@ -212,6 +218,7 @@
|
|
|
212
218
|
"category": "marketing",
|
|
213
219
|
"description": "FAQ section with a collapsible accordion. Contains FAQItem children with question/answer pairs.",
|
|
214
220
|
"props": [
|
|
221
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"faq\" enables #faq navigation)." },
|
|
215
222
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the accordion." },
|
|
216
223
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
217
224
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "FAQItem children." }
|
|
@@ -233,6 +240,7 @@
|
|
|
233
240
|
"category": "marketing",
|
|
234
241
|
"description": "Numbered step-by-step section with connected timeline indicators. Consumes Step children to display a vertical progression.",
|
|
235
242
|
"props": [
|
|
243
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"steps\" enables #steps navigation)." },
|
|
236
244
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the steps." },
|
|
237
245
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
238
246
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Step children." }
|
|
@@ -256,6 +264,7 @@
|
|
|
256
264
|
"category": "marketing",
|
|
257
265
|
"description": "Responsive grid container for CardGridItem children. Supports 2, 3, or 4 column layouts.",
|
|
258
266
|
"props": [
|
|
267
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"cards\" enables #cards navigation)." },
|
|
259
268
|
{ "name": "columns", "type": "2 | 3 | 4", "required": false, "description": "Number of grid columns. Defaults to 3." },
|
|
260
269
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "CardGridItem children." }
|
|
261
270
|
],
|
|
@@ -266,6 +275,7 @@
|
|
|
266
275
|
"category": "marketing",
|
|
267
276
|
"description": "Highlighted callout box with a colored border for info, success, or warning messages. Useful for drawing attention to important content within a page.",
|
|
268
277
|
"props": [
|
|
278
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"callout\" enables #callout navigation)." },
|
|
269
279
|
{ "name": "title", "type": "string", "required": true, "description": "Callout heading text." },
|
|
270
280
|
{ "name": "description", "type": "string", "required": true, "description": "Callout body text." },
|
|
271
281
|
{ "name": "variant", "type": "'info' | 'success' | 'warning'", "required": false, "description": "Color variant for the callout. Defaults to 'info'." },
|
|
@@ -290,6 +300,7 @@
|
|
|
290
300
|
"category": "marketing",
|
|
291
301
|
"description": "Section displaying key statistics in a 2x2 or 4-column grid with large gradient numbers. Consumes Stat children.",
|
|
292
302
|
"props": [
|
|
303
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"stats\" enables #stats navigation)." },
|
|
293
304
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the stats." },
|
|
294
305
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Stat children." }
|
|
295
306
|
],
|
|
@@ -302,7 +313,7 @@
|
|
|
302
313
|
"props": [
|
|
303
314
|
{ "name": "title", "type": "string", "required": true, "description": "Card heading text." },
|
|
304
315
|
{ "name": "description", "type": "string", "required": false, "description": "Card description text." },
|
|
305
|
-
{ "name": "image", "type": "
|
|
316
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Full-bleed image at the bottom of the card. Pass a string URL or { light, dark } for theme-aware images." },
|
|
306
317
|
{ "name": "span", "type": "1 | 2", "required": false, "description": "Number of grid columns the item spans. Defaults to 1." },
|
|
307
318
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Custom content rendered inside the card." }
|
|
308
319
|
],
|
|
@@ -313,6 +324,7 @@
|
|
|
313
324
|
"category": "marketing",
|
|
314
325
|
"description": "Asymmetric grid layout section for showcasing features in a bento-box style. Uses a 3-column grid with equal-height rows. Contains BentoItem children.",
|
|
315
326
|
"props": [
|
|
327
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"bento\" enables #bento navigation)." },
|
|
316
328
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the grid." },
|
|
317
329
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
318
330
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "BentoItem children." }
|
|
@@ -324,7 +336,7 @@
|
|
|
324
336
|
"category": "marketing",
|
|
325
337
|
"description": "Individual gallery image card with a hover zoom effect and an optional caption. Used as a child of Gallery.",
|
|
326
338
|
"props": [
|
|
327
|
-
{ "name": "src", "type": "
|
|
339
|
+
{ "name": "src", "type": "ImageSource", "required": true, "description": "Image source. Pass a string URL or { light, dark } for theme-aware images." },
|
|
328
340
|
{ "name": "alt", "type": "string", "required": true, "description": "Alt text for the image." },
|
|
329
341
|
{ "name": "caption", "type": "string", "required": false, "description": "Caption text displayed below the image." }
|
|
330
342
|
],
|
|
@@ -335,6 +347,7 @@
|
|
|
335
347
|
"category": "marketing",
|
|
336
348
|
"description": "Responsive image gallery section with optional title and description. Displays GalleryItem children in a configurable grid.",
|
|
337
349
|
"props": [
|
|
350
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"gallery\" enables #gallery navigation)." },
|
|
338
351
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the gallery." },
|
|
339
352
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
340
353
|
{ "name": "columns", "type": "2 | 3 | 4", "required": false, "description": "Number of grid columns. Defaults to 3." },
|
|
@@ -347,6 +360,7 @@
|
|
|
347
360
|
"category": "marketing",
|
|
348
361
|
"description": "Compact social proof section showing stacked user avatars with a text message and optional subtext. Ideal for displaying user counts or trust indicators.",
|
|
349
362
|
"props": [
|
|
363
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"social-proof\" enables #social-proof navigation)." },
|
|
350
364
|
{ "name": "avatars", "type": "string[]", "required": false, "description": "Array of avatar image URLs displayed as overlapping circles." },
|
|
351
365
|
{ "name": "text", "type": "string", "required": true, "description": "Main social proof text (e.g. 'Loved by 10,000+ users')." },
|
|
352
366
|
{ "name": "subtext", "type": "string", "required": false, "description": "Secondary text displayed below the main text." }
|
|
@@ -360,7 +374,7 @@
|
|
|
360
374
|
"props": [
|
|
361
375
|
{ "name": "title", "type": "string", "required": false, "description": "Card heading text." },
|
|
362
376
|
{ "name": "description", "type": "string", "required": false, "description": "Card description text." },
|
|
363
|
-
{ "name": "image", "type": "
|
|
377
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Card image displayed above the content. Pass a string URL or { light, dark } for theme-aware images." },
|
|
364
378
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Custom content rendered inside the card." }
|
|
365
379
|
],
|
|
366
380
|
"example": "<CarouselItem title=\"Feature 1\" description=\"Description of feature 1.\" image=\"/images/f1.png\" />"
|
|
@@ -370,6 +384,7 @@
|
|
|
370
384
|
"category": "marketing",
|
|
371
385
|
"description": "Horizontally scrollable carousel section with snap-scrolling, left/right navigation buttons, and optional title/description. Contains CarouselItem children.",
|
|
372
386
|
"props": [
|
|
387
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"carousel\" enables #carousel navigation)." },
|
|
373
388
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the carousel." },
|
|
374
389
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
375
390
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "CarouselItem children." }
|
|
@@ -384,7 +399,7 @@
|
|
|
384
399
|
{ "name": "label", "type": "string", "required": true, "description": "Tab button label text." },
|
|
385
400
|
{ "name": "title", "type": "string", "required": false, "description": "Content heading displayed when the tab is active." },
|
|
386
401
|
{ "name": "description", "type": "string", "required": false, "description": "Content description displayed when the tab is active." },
|
|
387
|
-
{ "name": "image", "type": "
|
|
402
|
+
{ "name": "image", "type": "ImageSource", "required": false, "description": "Image displayed alongside the content when the tab is active. Pass a string URL or { light, dark } for theme-aware images." },
|
|
388
403
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Custom content rendered when the tab is active." }
|
|
389
404
|
],
|
|
390
405
|
"example": "<TabItem label=\"Overview\" title=\"Product Overview\" description=\"Everything you need to know.\" image=\"/images/overview.png\" />"
|
|
@@ -394,6 +409,7 @@
|
|
|
394
409
|
"category": "marketing",
|
|
395
410
|
"description": "Interactive tabbed section with pill-style tab buttons and a content panel that changes based on the active tab. Consumes TabItem children.",
|
|
396
411
|
"props": [
|
|
412
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"tabs\" enables #tabs navigation)." },
|
|
397
413
|
{ "name": "title", "type": "string", "required": false, "description": "Section heading displayed above the tabs." },
|
|
398
414
|
{ "name": "description", "type": "string", "required": false, "description": "Section subheading text." },
|
|
399
415
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "TabItem children." }
|
|
@@ -405,6 +421,7 @@
|
|
|
405
421
|
"category": "marketing",
|
|
406
422
|
"description": "Lightweight page hero section with centered title, optional description, badge, and children. Suitable for inner pages that do not need the full Hero with image and CTAs.",
|
|
407
423
|
"props": [
|
|
424
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"hero\" enables #hero navigation)." },
|
|
408
425
|
{ "name": "title", "type": "string", "required": true, "description": "Page title displayed as an h1." },
|
|
409
426
|
{ "name": "description", "type": "string", "required": false, "description": "Supporting paragraph text below the title." },
|
|
410
427
|
{ "name": "badge", "type": "string", "required": false, "description": "Small badge text displayed above the title." },
|
|
@@ -417,6 +434,7 @@
|
|
|
417
434
|
"category": "blog",
|
|
418
435
|
"description": "Top-level wrapper for blog article content. Renders a centered, max-width article container with vertical padding.",
|
|
419
436
|
"props": [
|
|
437
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"article\" enables #article navigation)." },
|
|
420
438
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Article content (headings, paragraphs, blog components)." },
|
|
421
439
|
{ "name": "contentFolder", "type": "string", "required": false, "description": "Content folder identifier for the blog article." }
|
|
422
440
|
],
|
|
@@ -427,6 +445,7 @@
|
|
|
427
445
|
"category": "blog",
|
|
428
446
|
"description": "Blog listing page wrapper with an optional title, description, and children for rendering blog post cards or custom content.",
|
|
429
447
|
"props": [
|
|
448
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"blog\" enables #blog navigation)." },
|
|
430
449
|
{ "name": "title", "type": "string", "required": false, "description": "Page heading displayed above the blog list." },
|
|
431
450
|
{ "name": "description", "type": "string", "required": false, "description": "Page subheading text." },
|
|
432
451
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Blog post cards or other content." }
|
|
@@ -448,6 +467,7 @@
|
|
|
448
467
|
"category": "content",
|
|
449
468
|
"description": "Top-level wrapper for text-heavy pages (legal, about, contact, etc.). Renders a narrow, centered container with a title and optional last-updated date.",
|
|
450
469
|
"props": [
|
|
470
|
+
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"content\" enables #content navigation)." },
|
|
451
471
|
{ "name": "title", "type": "string", "required": true, "description": "Page title displayed as an h1." },
|
|
452
472
|
{ "name": "lastUpdated", "type": "string", "required": false, "description": "Date string displayed below the title (e.g. '2024-01-15')." },
|
|
453
473
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "ContentSection children and other content." }
|
|
@@ -5,12 +5,13 @@ interface BlogArticleAuthor {
|
|
|
5
5
|
image: string;
|
|
6
6
|
}
|
|
7
7
|
interface BlogArticleProps {
|
|
8
|
+
id?: string;
|
|
8
9
|
children: React.ReactNode;
|
|
9
10
|
contentFolder?: string;
|
|
10
11
|
date?: string;
|
|
11
12
|
readingTime?: number;
|
|
12
13
|
author?: BlogArticleAuthor;
|
|
13
14
|
}
|
|
14
|
-
export declare function BlogArticle({ children, author, date, readingTime }: BlogArticleProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function BlogArticle({ id, children, author, date, readingTime }: BlogArticleProps): import("react/jsx-runtime").JSX.Element;
|
|
15
16
|
export {};
|
|
16
17
|
//# sourceMappingURL=BlogArticle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticle.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"BlogArticle.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CAMxF"}
|
package/dist/blog/BlogArticle.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { BlogArticleClient } from './BlogArticleClient';
|
|
3
|
-
export function BlogArticle({ children, author, date, readingTime }) {
|
|
4
|
-
return (_jsx(BlogArticleClient, { author: author, date: date, readingTime: readingTime, children: children }));
|
|
3
|
+
export function BlogArticle({ id, children, author, date, readingTime }) {
|
|
4
|
+
return (_jsx(BlogArticleClient, { id: id, author: author, date: date, readingTime: readingTime, children: children }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=BlogArticle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticle.js","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogArticle.js","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAiBxD,MAAM,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAoB;IACvF,OAAO,CACL,KAAC,iBAAiB,IAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,YAC5E,QAAQ,GACS,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type ImageSource } from '../ui/theme-image';
|
|
2
3
|
interface BlogArticleAuthor {
|
|
3
4
|
name: string;
|
|
4
5
|
role: string;
|
|
5
|
-
image:
|
|
6
|
+
image: ImageSource;
|
|
6
7
|
}
|
|
7
8
|
interface BlogArticleClientProps {
|
|
9
|
+
id?: string;
|
|
8
10
|
children: React.ReactNode;
|
|
9
11
|
author?: BlogArticleAuthor;
|
|
10
12
|
date?: string;
|
|
11
13
|
readingTime?: number;
|
|
12
14
|
}
|
|
13
|
-
export declare function BlogArticleClient({ children, author, date, readingTime, }: BlogArticleClientProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function BlogArticleClient({ id, children, author, date, readingTime, }: BlogArticleClientProps): import("react/jsx-runtime").JSX.Element;
|
|
14
16
|
export {};
|
|
15
17
|
//# sourceMappingURL=BlogArticleClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticleClient.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogArticleClient.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQjE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,UAAU,sBAAsB;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,WAAW,GACZ,EAAE,sBAAsB,2CAsLxB"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { cn } from '../lib/utils';
|
|
5
|
-
|
|
5
|
+
import { ThemeImage } from '../ui/theme-image';
|
|
6
|
+
export function BlogArticleClient({ id, children, author, date, readingTime, }) {
|
|
6
7
|
const contentRef = useRef(null);
|
|
7
8
|
const [tocItems, setTocItems] = useState([]);
|
|
8
9
|
const [activeId, setActiveId] = useState('');
|
|
@@ -84,7 +85,7 @@ export function BlogArticleClient({ children, author, date, readingTime, }) {
|
|
|
84
85
|
day: 'numeric',
|
|
85
86
|
})
|
|
86
87
|
: '';
|
|
87
|
-
return (_jsx("article", { className: "py-12 md:py-20", children: _jsx("div", { className: "mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]", children: _jsxs("div", { className: "flex gap-10 lg:gap-16", children: [_jsx("div", { ref: contentRef, className: "blog-content min-w-0 flex-1 max-w-3xl", children: children }), _jsx("aside", { className: "hidden lg:block w-64 shrink-0", children: _jsxs("div", { className: "sticky top-24 flex flex-col gap-6", children: [tocItems.length > 0 && (_jsx("nav", { children: _jsx("ul", { className: "flex flex-col", children: tocItems.map((item) => {
|
|
88
|
+
return (_jsx("article", { id: id, className: "py-12 md:py-20", children: _jsx("div", { className: "mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]", children: _jsxs("div", { className: "flex gap-10 lg:gap-16", children: [_jsx("div", { ref: contentRef, className: "blog-content min-w-0 flex-1 max-w-3xl", children: children }), _jsx("aside", { className: "hidden lg:block w-64 shrink-0", children: _jsxs("div", { className: "sticky top-24 flex flex-col gap-6", children: [tocItems.length > 0 && (_jsx("nav", { children: _jsx("ul", { className: "flex flex-col", children: tocItems.map((item) => {
|
|
88
89
|
const isActive = activeId === item.id;
|
|
89
90
|
if (item.level === 3) {
|
|
90
91
|
const idx = tocItems.indexOf(item);
|
|
@@ -101,6 +102,6 @@ export function BlogArticleClient({ children, author, date, readingTime, }) {
|
|
|
101
102
|
return (_jsx("li", { className: item.level === 3 ? 'pl-3' : '', children: _jsxs("button", { onClick: () => scrollToHeading(item.id), className: cn('my-0.5 flex items-center gap-2 w-full cursor-pointer text-left', isActive
|
|
102
103
|
? 'text-foreground font-medium'
|
|
103
104
|
: 'text-muted-foreground hover:text-foreground'), children: [_jsx("span", { className: cn('w-3 h-px shrink-0 transition-colors', isActive ? 'bg-primary' : 'bg-border') }), _jsx("span", { className: "text-sm leading-snug line-clamp-1", children: item.title })] }) }, item.id));
|
|
104
|
-
}) }) })), author && (_jsxs(_Fragment, { children: [tocItems.length > 0 && _jsx("hr", { className: "border-border" }), _jsxs("div", { className: "flex flex-col gap-3", children: [author.image && (_jsx(
|
|
105
|
+
}) }) })), author && (_jsxs(_Fragment, { children: [tocItems.length > 0 && _jsx("hr", { className: "border-border" }), _jsxs("div", { className: "flex flex-col gap-3", children: [author.image && (_jsx(ThemeImage, { src: author.image, alt: author.name, className: "w-12 h-12 rounded-full object-cover" })), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: author.name }), author.role && (_jsx("p", { className: "text-xs text-muted-foreground", children: author.role }))] })] })] })), (formattedDate || readingTime) && (_jsxs(_Fragment, { children: [(tocItems.length > 0 || author) && !author && (_jsx("hr", { className: "border-border" })), _jsxs("div", { className: "flex flex-col gap-1 text-xs text-muted-foreground", children: [formattedDate && _jsx("span", { children: formattedDate }), readingTime ? _jsxs("span", { children: [readingTime, " min read"] }) : null] })] }))] }) })] }) }) }));
|
|
105
106
|
}
|
|
106
107
|
//# sourceMappingURL=BlogArticleClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticleClient.js","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogArticleClient.js","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"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"}
|
package/dist/blog/BlogIndex.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface BlogIndexProps {
|
|
3
|
+
id?: string;
|
|
3
4
|
title?: string;
|
|
4
5
|
description?: string;
|
|
5
6
|
children?: React.ReactNode;
|
|
6
7
|
}
|
|
7
|
-
export declare function BlogIndex({ title, description, children }: BlogIndexProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function BlogIndex({ id, title, description, children }: BlogIndexProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=BlogIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogIndex.d.ts","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"BlogIndex.d.ts","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAc7E"}
|
package/dist/blog/BlogIndex.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
|
-
export function BlogIndex({ title, description, children }) {
|
|
4
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground", children: description })] })), children] }) }));
|
|
3
|
+
export function BlogIndex({ id, title, description, children }) {
|
|
4
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground", children: description })] })), children] }) }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=BlogIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogIndex.js","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogIndex.js","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,MAAM,UAAU,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAkB;IAC5E,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IAC1E,CACP,EACA,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -5,10 +5,11 @@ interface ContentSectionProps {
|
|
|
5
5
|
}
|
|
6
6
|
export declare function ContentSection({ title, children }: ContentSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
interface ContentPageProps {
|
|
8
|
+
id?: string;
|
|
8
9
|
title: string;
|
|
9
10
|
lastUpdated?: string;
|
|
10
11
|
children: React.ReactNode;
|
|
11
12
|
}
|
|
12
|
-
export declare function ContentPage({ title, lastUpdated, children }: ContentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function ContentPage({ id, title, lastUpdated, children }: ContentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
14
15
|
//# sourceMappingURL=ContentPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAStE;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAStE;AAED,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAUjF"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
export function ContentSection({ title, children }) {
|
|
3
3
|
return (_jsxs("div", { className: "mb-8", children: [_jsx("h2", { className: "text-xl font-bold text-foreground mb-4", children: title }), _jsx("div", { className: "text-muted-foreground text-sm leading-relaxed [&>p]:mb-3 [&>ul]:list-disc [&>ul]:pl-5 [&>ul]:mb-3", children: children })] }));
|
|
4
4
|
}
|
|
5
|
-
export function ContentPage({ title, lastUpdated, children }) {
|
|
6
|
-
return (_jsx("section", { className: "py-12 md:py-20", children: _jsxs("div", { className: "container-main max-w-3xl", children: [_jsx("h1", { className: "text-3xl md:text-4xl font-bold text-foreground mb-2", children: title }), lastUpdated && _jsxs("p", { className: "text-sm text-muted-foreground mb-8", children: ["Last updated: ", lastUpdated] }), children] }) }));
|
|
5
|
+
export function ContentPage({ id, title, lastUpdated, children }) {
|
|
6
|
+
return (_jsx("section", { id: id, className: "py-12 md:py-20", children: _jsxs("div", { className: "container-main max-w-3xl", children: [_jsx("h1", { className: "text-3xl md:text-4xl font-bold text-foreground mb-2", children: title }), lastUpdated && _jsxs("p", { className: "text-sm text-muted-foreground mb-8", children: ["Last updated: ", lastUpdated] }), children] }) }));
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=ContentPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAuB;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,cAAK,SAAS,EAAC,mGAAmG,YAC/G,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAuB;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,cAAK,SAAS,EAAC,mGAAmG,YAC/G,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAoB;IAChF,OAAO,CACL,kBAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAC,gBAAgB,YACzC,eAAK,SAAS,EAAC,0BAA0B,aACvC,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC/E,WAAW,IAAI,aAAG,SAAS,EAAC,oCAAoC,+BAAgB,WAAW,IAAK,EAChG,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export { Carousel, CarouselItem } from './marketing/Carousel';
|
|
|
26
26
|
export { TabsSection, TabItem } from './marketing/TabsSection';
|
|
27
27
|
export { BlogArticle } from './blog/BlogArticle';
|
|
28
28
|
export { BlogIndex } from './blog/BlogIndex';
|
|
29
|
+
export { ThemeImage } from './ui/theme-image';
|
|
30
|
+
export type { ImageSource } from './ui/theme-image';
|
|
29
31
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, } from './ui/table';
|
|
30
32
|
export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg } from './ui/prose';
|
|
31
33
|
export { ContentPage, ContentSection } from './content/ContentPage';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3J,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3J,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,8 @@ export { TabsSection, TabItem } from './marketing/TabsSection';
|
|
|
31
31
|
// Blog
|
|
32
32
|
export { BlogArticle } from './blog/BlogArticle';
|
|
33
33
|
export { BlogIndex } from './blog/BlogIndex';
|
|
34
|
+
// Image utilities
|
|
35
|
+
export { ThemeImage } from './ui/theme-image';
|
|
34
36
|
// UI primitives
|
|
35
37
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, } from './ui/table';
|
|
36
38
|
// Prose (Markdown element overrides)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3J,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3J,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type ImageSource } from '../ui/theme-image';
|
|
2
3
|
interface AlternatingFeatureItemProps {
|
|
3
4
|
icon?: string;
|
|
4
5
|
title: string;
|
|
@@ -8,17 +9,17 @@ export declare function AlternatingFeatureItem({ icon, title, description }: Alt
|
|
|
8
9
|
interface AlternatingFeatureRowProps {
|
|
9
10
|
title: string;
|
|
10
11
|
description?: string;
|
|
11
|
-
image:
|
|
12
|
-
imageDark?: string;
|
|
12
|
+
image: ImageSource;
|
|
13
13
|
imageAlt?: string;
|
|
14
14
|
children?: React.ReactNode;
|
|
15
15
|
}
|
|
16
|
-
export declare function AlternatingFeatureRow({ title, description, image,
|
|
16
|
+
export declare function AlternatingFeatureRow({ title, description, image, imageAlt, children }: AlternatingFeatureRowProps): import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
interface AlternatingFeaturesProps {
|
|
18
|
+
id?: string;
|
|
18
19
|
title?: string;
|
|
19
20
|
description?: string;
|
|
20
21
|
children: React.ReactNode;
|
|
21
22
|
}
|
|
22
|
-
export declare function AlternatingFeatures({ title, description, children }: AlternatingFeaturesProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare function AlternatingFeatures({ id, title, description, children }: AlternatingFeaturesProps): import("react/jsx-runtime").JSX.Element;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=AlternatingFeatures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlternatingFeatures.d.ts","sourceRoot":"","sources":["../../src/marketing/AlternatingFeatures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AlternatingFeatures.d.ts","sourceRoot":"","sources":["../../src/marketing/AlternatingFeatures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,2BAA2B;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,2BAA2B,2CAU/F;AAED,UAAU,0BAA0B;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAalH;AAED,UAAU,wBAAwB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAcjG"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
3
|
import { Mockup } from '../ui/mockup';
|
|
4
|
+
import { ThemeImage } from '../ui/theme-image';
|
|
4
5
|
export function AlternatingFeatureItem({ icon, title, description }) {
|
|
5
6
|
return (_jsxs("div", { className: "flex gap-3 items-start", children: [icon && _jsx("span", { className: "text-primary text-xl mt-0.5", children: icon }), _jsxs("div", { children: [_jsx("h4", { className: "font-semibold text-foreground mb-1", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description })] })] }));
|
|
6
7
|
}
|
|
7
|
-
export function AlternatingFeatureRow({ title, description, image,
|
|
8
|
-
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-12 items-center py-12 [&:nth-child(even)>div:first-child]:md:order-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-2xl md:text-3xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-muted-foreground mb-6", children: description }), children && _jsx("div", { className: "space-y-4", children: children })] }), _jsx(Mockup, { type: "responsive", children:
|
|
8
|
+
export function AlternatingFeatureRow({ title, description, image, imageAlt, children }) {
|
|
9
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-12 items-center py-12 [&:nth-child(even)>div:first-child]:md:order-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-2xl md:text-3xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-muted-foreground mb-6", children: description }), children && _jsx("div", { className: "space-y-4", children: children })] }), _jsx(Mockup, { type: "responsive", children: _jsx(ThemeImage, { src: image, alt: imageAlt || title, className: "w-full" }) })] }));
|
|
9
10
|
}
|
|
10
|
-
export function AlternatingFeatures({ title, description, children }) {
|
|
11
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-16", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: "divide-y divide-border", children: children })] }) }));
|
|
11
|
+
export function AlternatingFeatures({ id, title, description, children }) {
|
|
12
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-16", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: "divide-y divide-border", children: children })] }) }));
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=AlternatingFeatures.js.map
|