@victusvinceere/saas-landing 0.1.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.
@@ -0,0 +1,402 @@
1
+ "use client";
2
+
3
+ // src/components/hero.tsx
4
+ import Link from "next/link";
5
+ import { ArrowRight, Sparkles } from "lucide-react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function Hero({
8
+ badge,
9
+ title,
10
+ subtitle,
11
+ stats,
12
+ primaryCta = { text: "Get Started Free", href: "/signup" },
13
+ secondaryCta = { text: "Sign In", href: "/login" },
14
+ trustedBy,
15
+ children,
16
+ className
17
+ }) {
18
+ const BadgeIcon = badge?.icon || Sparkles;
19
+ return /* @__PURE__ */ jsxs("section", { className: `relative overflow-hidden ${className}`, children: [
20
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 -z-10 bg-[linear-gradient(to_right,#8080800a_1px,transparent_1px),linear-gradient(to_bottom,#8080800a_1px,transparent_1px)] bg-[size:14px_24px]" }),
21
+ /* @__PURE__ */ jsx("div", { className: "absolute left-0 right-0 top-0 -z-10 m-auto h-[310px] w-[310px] rounded-full bg-primary/20 opacity-20 blur-[100px]" }),
22
+ /* @__PURE__ */ jsxs("div", { className: "container px-4 py-24 md:py-32 lg:py-40", children: [
23
+ /* @__PURE__ */ jsxs("div", { className: "mx-auto flex max-w-5xl flex-col items-center text-center", children: [
24
+ badge && /* @__PURE__ */ jsxs("span", { className: "mb-6 inline-flex items-center rounded-full border px-4 py-2 text-sm font-medium", children: [
25
+ /* @__PURE__ */ jsx(BadgeIcon, { className: "mr-2 h-3.5 w-3.5 text-primary" }),
26
+ badge.text
27
+ ] }),
28
+ /* @__PURE__ */ jsx("h1", { className: "mb-6 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl xl:text-7xl", children: title }),
29
+ /* @__PURE__ */ jsx("p", { className: "mb-8 max-w-2xl text-lg text-muted-foreground md:text-xl", children: subtitle }),
30
+ stats && stats.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-10 flex flex-wrap items-center justify-center gap-8 text-sm", children: stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
31
+ /* @__PURE__ */ jsx("span", { className: "text-2xl font-bold text-primary", children: stat.value }),
32
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: stat.label }),
33
+ index < stats.length - 1 && /* @__PURE__ */ jsx("div", { className: "ml-6 h-8 w-px bg-border" })
34
+ ] }, stat.label)) }),
35
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row", children: [
36
+ /* @__PURE__ */ jsxs(
37
+ Link,
38
+ {
39
+ href: primaryCta.href,
40
+ className: "inline-flex h-12 items-center justify-center rounded-md bg-primary px-8 text-base font-medium text-primary-foreground transition-colors hover:bg-primary/90",
41
+ children: [
42
+ primaryCta.text,
43
+ /* @__PURE__ */ jsx(ArrowRight, { className: "ml-2 h-4 w-4" })
44
+ ]
45
+ }
46
+ ),
47
+ /* @__PURE__ */ jsxs(
48
+ Link,
49
+ {
50
+ href: secondaryCta.href,
51
+ className: "inline-flex h-12 items-center justify-center rounded-md border bg-background px-8 text-base font-medium transition-colors hover:bg-muted",
52
+ children: [
53
+ secondaryCta.text,
54
+ /* @__PURE__ */ jsx(ArrowRight, { className: "ml-2 h-4 w-4" })
55
+ ]
56
+ }
57
+ )
58
+ ] }),
59
+ trustedBy && trustedBy.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-12 flex flex-col items-center gap-4", children: [
60
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Trusted by developers at" }),
61
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center justify-center gap-8 opacity-50 grayscale", children: trustedBy.map((company) => /* @__PURE__ */ jsx("span", { className: "text-xl font-bold", children: company }, company)) })
62
+ ] })
63
+ ] }),
64
+ children
65
+ ] })
66
+ ] });
67
+ }
68
+
69
+ // src/components/features.tsx
70
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
71
+ function Features({
72
+ badge = "Features",
73
+ title,
74
+ subtitle,
75
+ features,
76
+ techStack,
77
+ className
78
+ }) {
79
+ return /* @__PURE__ */ jsx2("section", { id: "features", className: `py-24 md:py-32 ${className}`, children: /* @__PURE__ */ jsxs2("div", { className: "container px-4", children: [
80
+ /* @__PURE__ */ jsxs2("div", { className: "mx-auto max-w-2xl text-center", children: [
81
+ /* @__PURE__ */ jsx2("span", { className: "mb-4 inline-block rounded-full bg-primary/10 px-4 py-1.5 text-sm font-medium text-primary", children: badge }),
82
+ /* @__PURE__ */ jsx2("h2", { className: "mb-4 text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title }),
83
+ subtitle && /* @__PURE__ */ jsx2("p", { className: "text-lg text-muted-foreground", children: subtitle })
84
+ ] }),
85
+ /* @__PURE__ */ jsx2("div", { className: "mx-auto mt-16 max-w-6xl", children: /* @__PURE__ */ jsx2("div", { className: "grid gap-6 md:grid-cols-2 lg:grid-cols-4", children: features.map((feature) => /* @__PURE__ */ jsxs2(
86
+ "div",
87
+ {
88
+ className: "group relative overflow-hidden rounded-2xl border bg-background p-6 transition-all hover:shadow-lg hover:shadow-primary/5",
89
+ children: [
90
+ /* @__PURE__ */ jsx2("div", { className: "absolute inset-0 bg-gradient-to-b from-transparent to-muted/20 opacity-0 transition-opacity group-hover:opacity-100" }),
91
+ /* @__PURE__ */ jsx2(
92
+ "div",
93
+ {
94
+ className: `mb-4 inline-flex rounded-xl p-3 ${feature.bg || "bg-primary/10"}`,
95
+ children: /* @__PURE__ */ jsx2(
96
+ feature.icon,
97
+ {
98
+ className: `h-6 w-6 ${feature.color || "text-primary"}`
99
+ }
100
+ )
101
+ }
102
+ ),
103
+ /* @__PURE__ */ jsx2("h3", { className: "mb-2 text-lg font-semibold", children: feature.name }),
104
+ /* @__PURE__ */ jsx2("p", { className: "text-sm text-muted-foreground leading-relaxed", children: feature.description })
105
+ ]
106
+ },
107
+ feature.name
108
+ )) }) }),
109
+ techStack && techStack.length > 0 && /* @__PURE__ */ jsx2("div", { className: "mx-auto mt-20 max-w-4xl", children: /* @__PURE__ */ jsxs2("div", { className: "rounded-2xl border bg-muted/30 p-8 text-center", children: [
110
+ /* @__PURE__ */ jsx2("h3", { className: "mb-6 text-lg font-semibold", children: "Built with modern technologies" }),
111
+ /* @__PURE__ */ jsx2("div", { className: "flex flex-wrap items-center justify-center gap-6 md:gap-10", children: techStack.map((tech) => /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
112
+ /* @__PURE__ */ jsx2(
113
+ "div",
114
+ {
115
+ className: "h-8 w-8 rounded-lg flex items-center justify-center",
116
+ style: { backgroundColor: tech.color },
117
+ children: /* @__PURE__ */ jsx2(
118
+ "span",
119
+ {
120
+ className: "text-xs font-bold",
121
+ style: { color: tech.textColor || "white" },
122
+ children: tech.label
123
+ }
124
+ )
125
+ }
126
+ ),
127
+ /* @__PURE__ */ jsx2("span", { className: "font-medium", children: tech.name })
128
+ ] }, tech.name)) })
129
+ ] }) })
130
+ ] }) });
131
+ }
132
+
133
+ // src/components/pricing.tsx
134
+ import Link2 from "next/link";
135
+ import { Check } from "lucide-react";
136
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
137
+ function Pricing({
138
+ title = "Simple, transparent pricing",
139
+ subtitle = "Choose the plan that best fits your needs. All plans include a 14-day free trial.",
140
+ plans,
141
+ className
142
+ }) {
143
+ return /* @__PURE__ */ jsx3("section", { id: "pricing", className: `py-20 sm:py-32 ${className}`, children: /* @__PURE__ */ jsxs3("div", { className: "container", children: [
144
+ /* @__PURE__ */ jsxs3("div", { className: "mx-auto max-w-2xl text-center", children: [
145
+ /* @__PURE__ */ jsx3("h2", { className: "text-3xl font-bold tracking-tight sm:text-4xl", children: title }),
146
+ /* @__PURE__ */ jsx3("p", { className: "mt-4 text-lg text-muted-foreground", children: subtitle })
147
+ ] }),
148
+ /* @__PURE__ */ jsx3("div", { className: "mx-auto mt-16 grid max-w-5xl grid-cols-1 gap-8 lg:grid-cols-3", children: plans.map((plan) => /* @__PURE__ */ jsxs3(
149
+ "div",
150
+ {
151
+ className: `relative flex flex-col rounded-2xl border bg-background p-8 shadow-sm ${plan.popular ? "border-primary shadow-lg" : ""}`,
152
+ children: [
153
+ plan.popular && /* @__PURE__ */ jsx3("span", { className: "absolute -top-3 left-1/2 -translate-x-1/2 inline-flex items-center rounded-full bg-primary px-3 py-1 text-xs font-medium text-primary-foreground", children: "Most Popular" }),
154
+ /* @__PURE__ */ jsxs3("div", { className: "mb-6", children: [
155
+ /* @__PURE__ */ jsx3("h3", { className: "text-lg font-semibold", children: plan.name }),
156
+ /* @__PURE__ */ jsxs3("div", { className: "mt-4 flex items-baseline", children: [
157
+ /* @__PURE__ */ jsx3("span", { className: "text-4xl font-bold", children: plan.price }),
158
+ plan.period && /* @__PURE__ */ jsx3("span", { className: "ml-1 text-muted-foreground", children: plan.period })
159
+ ] }),
160
+ /* @__PURE__ */ jsx3("p", { className: "mt-2 text-sm text-muted-foreground", children: plan.description })
161
+ ] }),
162
+ /* @__PURE__ */ jsx3("ul", { className: "mb-8 flex-1 space-y-3", children: plan.features.map((feature) => /* @__PURE__ */ jsxs3("li", { className: "flex items-center gap-3", children: [
163
+ /* @__PURE__ */ jsx3(Check, { className: "h-4 w-4 text-primary" }),
164
+ /* @__PURE__ */ jsx3("span", { className: "text-sm", children: feature })
165
+ ] }, feature)) }),
166
+ /* @__PURE__ */ jsx3(
167
+ Link2,
168
+ {
169
+ href: plan.href,
170
+ className: `inline-flex w-full items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors ${plan.popular ? "bg-primary text-primary-foreground hover:bg-primary/90" : "border bg-background hover:bg-muted"}`,
171
+ children: plan.cta
172
+ }
173
+ )
174
+ ]
175
+ },
176
+ plan.name
177
+ )) })
178
+ ] }) });
179
+ }
180
+
181
+ // src/components/faq.tsx
182
+ import { useState } from "react";
183
+ import { ChevronDown } from "lucide-react";
184
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
185
+ function Faq({
186
+ title = "Frequently asked questions",
187
+ subtitle = "Everything you need to know about our product.",
188
+ items,
189
+ className
190
+ }) {
191
+ const [openIndex, setOpenIndex] = useState(null);
192
+ return /* @__PURE__ */ jsx4("section", { id: "faq", className: `py-20 sm:py-32 ${className}`, children: /* @__PURE__ */ jsxs4("div", { className: "container", children: [
193
+ /* @__PURE__ */ jsxs4("div", { className: "mx-auto max-w-2xl text-center", children: [
194
+ /* @__PURE__ */ jsx4("h2", { className: "text-3xl font-bold tracking-tight sm:text-4xl", children: title }),
195
+ /* @__PURE__ */ jsx4("p", { className: "mt-4 text-lg text-muted-foreground", children: subtitle })
196
+ ] }),
197
+ /* @__PURE__ */ jsx4("div", { className: "mx-auto mt-16 max-w-3xl", children: /* @__PURE__ */ jsx4("div", { className: "divide-y rounded-2xl border", children: items.map((item, index) => /* @__PURE__ */ jsxs4("div", { children: [
198
+ /* @__PURE__ */ jsxs4(
199
+ "button",
200
+ {
201
+ className: "flex w-full items-center justify-between px-6 py-4 text-left",
202
+ onClick: () => setOpenIndex(openIndex === index ? null : index),
203
+ children: [
204
+ /* @__PURE__ */ jsx4("span", { className: "font-medium", children: item.question }),
205
+ /* @__PURE__ */ jsx4(
206
+ ChevronDown,
207
+ {
208
+ className: `h-5 w-5 text-muted-foreground transition-transform ${openIndex === index ? "rotate-180" : ""}`
209
+ }
210
+ )
211
+ ]
212
+ }
213
+ ),
214
+ openIndex === index && /* @__PURE__ */ jsx4("div", { className: "px-6 pb-4", children: /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground", children: item.answer }) })
215
+ ] }, index)) }) })
216
+ ] }) });
217
+ }
218
+
219
+ // src/components/cta.tsx
220
+ import Link3 from "next/link";
221
+ import { ArrowRight as ArrowRight2 } from "lucide-react";
222
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
223
+ function Cta({
224
+ title,
225
+ subtitle,
226
+ primaryCta = { text: "Get Started", href: "/signup" },
227
+ secondaryCta,
228
+ className
229
+ }) {
230
+ return /* @__PURE__ */ jsx5("section", { className: `py-20 sm:py-32 ${className}`, children: /* @__PURE__ */ jsx5("div", { className: "container", children: /* @__PURE__ */ jsxs5("div", { className: "relative overflow-hidden rounded-3xl bg-primary px-6 py-20 sm:px-12 sm:py-28", children: [
231
+ /* @__PURE__ */ jsxs5("div", { className: "absolute inset-0 -z-10", children: [
232
+ /* @__PURE__ */ jsx5("div", { className: "absolute -left-1/4 -top-1/4 h-1/2 w-1/2 rounded-full bg-white/10 blur-3xl" }),
233
+ /* @__PURE__ */ jsx5("div", { className: "absolute -bottom-1/4 -right-1/4 h-1/2 w-1/2 rounded-full bg-white/10 blur-3xl" })
234
+ ] }),
235
+ /* @__PURE__ */ jsxs5("div", { className: "mx-auto max-w-2xl text-center", children: [
236
+ /* @__PURE__ */ jsx5("h2", { className: "text-3xl font-bold tracking-tight text-primary-foreground sm:text-4xl", children: title }),
237
+ subtitle && /* @__PURE__ */ jsx5("p", { className: "mt-4 text-lg text-primary-foreground/80", children: subtitle }),
238
+ /* @__PURE__ */ jsxs5("div", { className: "mt-8 flex flex-col items-center justify-center gap-4 sm:flex-row", children: [
239
+ /* @__PURE__ */ jsxs5(
240
+ Link3,
241
+ {
242
+ href: primaryCta.href,
243
+ className: "inline-flex h-12 items-center justify-center rounded-md bg-background px-8 text-base font-medium text-foreground transition-colors hover:bg-background/90",
244
+ children: [
245
+ primaryCta.text,
246
+ /* @__PURE__ */ jsx5(ArrowRight2, { className: "ml-2 h-4 w-4" })
247
+ ]
248
+ }
249
+ ),
250
+ secondaryCta && /* @__PURE__ */ jsx5(
251
+ Link3,
252
+ {
253
+ href: secondaryCta.href,
254
+ className: "inline-flex h-12 items-center justify-center rounded-md border border-primary-foreground/20 px-8 text-base font-medium text-primary-foreground transition-colors hover:bg-primary-foreground/10",
255
+ children: secondaryCta.text
256
+ }
257
+ )
258
+ ] })
259
+ ] })
260
+ ] }) }) });
261
+ }
262
+
263
+ // src/components/footer.tsx
264
+ import Link4 from "next/link";
265
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
266
+ function Footer({
267
+ logo,
268
+ siteName = "SaaS Kit",
269
+ description = "Build your SaaS faster with our production-ready starter kit.",
270
+ columns = [],
271
+ socialLinks = [],
272
+ copyright,
273
+ className
274
+ }) {
275
+ const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
276
+ return /* @__PURE__ */ jsx6("footer", { className: `border-t py-12 ${className}`, children: /* @__PURE__ */ jsxs6("div", { className: "container", children: [
277
+ /* @__PURE__ */ jsxs6("div", { className: "grid gap-8 md:grid-cols-2 lg:grid-cols-5", children: [
278
+ /* @__PURE__ */ jsxs6("div", { className: "lg:col-span-2", children: [
279
+ /* @__PURE__ */ jsxs6(Link4, { href: "/", className: "flex items-center gap-2", children: [
280
+ logo || /* @__PURE__ */ jsx6("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground font-bold", children: "S" }),
281
+ /* @__PURE__ */ jsx6("span", { className: "text-lg font-semibold", children: siteName })
282
+ ] }),
283
+ /* @__PURE__ */ jsx6("p", { className: "mt-4 max-w-xs text-sm text-muted-foreground", children: description }),
284
+ socialLinks.length > 0 && /* @__PURE__ */ jsx6("div", { className: "mt-6 flex gap-4", children: socialLinks.map((link) => /* @__PURE__ */ jsx6(
285
+ "a",
286
+ {
287
+ href: link.href,
288
+ className: "text-muted-foreground hover:text-foreground",
289
+ "aria-label": link.label,
290
+ children: link.icon
291
+ },
292
+ link.label
293
+ )) })
294
+ ] }),
295
+ columns.map((column) => /* @__PURE__ */ jsxs6("div", { children: [
296
+ /* @__PURE__ */ jsx6("h3", { className: "font-semibold", children: column.title }),
297
+ /* @__PURE__ */ jsx6("ul", { className: "mt-4 space-y-2", children: column.links.map((link) => /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
298
+ Link4,
299
+ {
300
+ href: link.href,
301
+ className: "text-sm text-muted-foreground hover:text-foreground",
302
+ children: link.label
303
+ }
304
+ ) }, link.label)) })
305
+ ] }, column.title))
306
+ ] }),
307
+ /* @__PURE__ */ jsx6("div", { className: "mt-12 border-t pt-8 text-center text-sm text-muted-foreground", children: copyright || `\xA9 ${currentYear} ${siteName}. All rights reserved.` })
308
+ ] }) });
309
+ }
310
+
311
+ // src/components/navbar.tsx
312
+ import Link5 from "next/link";
313
+ import { useState as useState2 } from "react";
314
+ import { Menu, X } from "lucide-react";
315
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
316
+ function Navbar({
317
+ logo,
318
+ siteName = "SaaS Kit",
319
+ links = [
320
+ { label: "Features", href: "#features" },
321
+ { label: "Pricing", href: "#pricing" },
322
+ { label: "FAQ", href: "#faq" }
323
+ ],
324
+ ctaText = "Get Started",
325
+ ctaHref = "/signup",
326
+ className
327
+ }) {
328
+ const [isOpen, setIsOpen] = useState2(false);
329
+ return /* @__PURE__ */ jsxs7(
330
+ "header",
331
+ {
332
+ className: `sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60 ${className}`,
333
+ children: [
334
+ /* @__PURE__ */ jsxs7("nav", { className: "container flex h-16 items-center justify-between", children: [
335
+ /* @__PURE__ */ jsxs7(Link5, { href: "/", className: "flex items-center gap-2", children: [
336
+ logo || /* @__PURE__ */ jsx7("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground font-bold", children: "S" }),
337
+ /* @__PURE__ */ jsx7("span", { className: "text-lg font-semibold", children: siteName })
338
+ ] }),
339
+ /* @__PURE__ */ jsxs7("div", { className: "hidden items-center gap-6 md:flex", children: [
340
+ links.map((link) => /* @__PURE__ */ jsx7(
341
+ Link5,
342
+ {
343
+ href: link.href,
344
+ className: "text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
345
+ children: link.label
346
+ },
347
+ link.label
348
+ )),
349
+ /* @__PURE__ */ jsx7(
350
+ Link5,
351
+ {
352
+ href: ctaHref,
353
+ className: "inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",
354
+ children: ctaText
355
+ }
356
+ )
357
+ ] }),
358
+ /* @__PURE__ */ jsx7(
359
+ "button",
360
+ {
361
+ className: "md:hidden",
362
+ onClick: () => setIsOpen(!isOpen),
363
+ "aria-label": "Toggle menu",
364
+ children: isOpen ? /* @__PURE__ */ jsx7(X, { className: "h-6 w-6" }) : /* @__PURE__ */ jsx7(Menu, { className: "h-6 w-6" })
365
+ }
366
+ )
367
+ ] }),
368
+ isOpen && /* @__PURE__ */ jsx7("div", { className: "border-t md:hidden", children: /* @__PURE__ */ jsxs7("div", { className: "container py-4", children: [
369
+ links.map((link) => /* @__PURE__ */ jsx7(
370
+ Link5,
371
+ {
372
+ href: link.href,
373
+ className: "block py-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
374
+ onClick: () => setIsOpen(false),
375
+ children: link.label
376
+ },
377
+ link.label
378
+ )),
379
+ /* @__PURE__ */ jsx7(
380
+ Link5,
381
+ {
382
+ href: ctaHref,
383
+ className: "mt-2 inline-flex h-9 w-full items-center justify-center rounded-md bg-primary text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",
384
+ onClick: () => setIsOpen(false),
385
+ children: ctaText
386
+ }
387
+ )
388
+ ] }) })
389
+ ]
390
+ }
391
+ );
392
+ }
393
+ export {
394
+ Cta,
395
+ Faq,
396
+ Features,
397
+ Footer,
398
+ Hero,
399
+ Navbar,
400
+ Pricing
401
+ };
402
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/hero.tsx","../../src/components/features.tsx","../../src/components/pricing.tsx","../../src/components/faq.tsx","../../src/components/cta.tsx","../../src/components/footer.tsx","../../src/components/navbar.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Sparkles, type LucideIcon } from \"lucide-react\";\nimport { type ReactNode } from \"react\";\n\nexport interface HeroStat {\n value: string;\n label: string;\n}\n\nexport interface HeroProps {\n badge?: {\n text: string;\n icon?: LucideIcon;\n };\n title: ReactNode;\n subtitle: string;\n stats?: HeroStat[];\n primaryCta?: {\n text: string;\n href: string;\n };\n secondaryCta?: {\n text: string;\n href: string;\n };\n trustedBy?: string[];\n children?: ReactNode;\n className?: string;\n}\n\nexport function Hero({\n badge,\n title,\n subtitle,\n stats,\n primaryCta = { text: \"Get Started Free\", href: \"/signup\" },\n secondaryCta = { text: \"Sign In\", href: \"/login\" },\n trustedBy,\n children,\n className,\n}: HeroProps) {\n const BadgeIcon = badge?.icon || Sparkles;\n\n return (\n <section className={`relative overflow-hidden ${className}`}>\n {/* Background gradient */}\n <div className=\"absolute inset-0 -z-10 bg-[linear-gradient(to_right,#8080800a_1px,transparent_1px),linear-gradient(to_bottom,#8080800a_1px,transparent_1px)] bg-[size:14px_24px]\" />\n <div className=\"absolute left-0 right-0 top-0 -z-10 m-auto h-[310px] w-[310px] rounded-full bg-primary/20 opacity-20 blur-[100px]\" />\n\n <div className=\"container px-4 py-24 md:py-32 lg:py-40\">\n <div className=\"mx-auto flex max-w-5xl flex-col items-center text-center\">\n {/* Badge */}\n {badge && (\n <span className=\"mb-6 inline-flex items-center rounded-full border px-4 py-2 text-sm font-medium\">\n <BadgeIcon className=\"mr-2 h-3.5 w-3.5 text-primary\" />\n {badge.text}\n </span>\n )}\n\n {/* Main headline */}\n <h1 className=\"mb-6 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl xl:text-7xl\">\n {title}\n </h1>\n\n {/* Subheadline */}\n <p className=\"mb-8 max-w-2xl text-lg text-muted-foreground md:text-xl\">\n {subtitle}\n </p>\n\n {/* Stats */}\n {stats && stats.length > 0 && (\n <div className=\"mb-10 flex flex-wrap items-center justify-center gap-8 text-sm\">\n {stats.map((stat, index) => (\n <div key={stat.label} className=\"flex items-center gap-2\">\n <span className=\"text-2xl font-bold text-primary\">\n {stat.value}\n </span>\n <span className=\"text-muted-foreground\">{stat.label}</span>\n {index < stats.length - 1 && (\n <div className=\"ml-6 h-8 w-px bg-border\" />\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* CTA Buttons */}\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <Link\n href={primaryCta.href}\n className=\"inline-flex h-12 items-center justify-center rounded-md bg-primary px-8 text-base font-medium text-primary-foreground transition-colors hover:bg-primary/90\"\n >\n {primaryCta.text}\n <ArrowRight className=\"ml-2 h-4 w-4\" />\n </Link>\n <Link\n href={secondaryCta.href}\n className=\"inline-flex h-12 items-center justify-center rounded-md border bg-background px-8 text-base font-medium transition-colors hover:bg-muted\"\n >\n {secondaryCta.text}\n <ArrowRight className=\"ml-2 h-4 w-4\" />\n </Link>\n </div>\n\n {/* Trust badges */}\n {trustedBy && trustedBy.length > 0 && (\n <div className=\"mt-12 flex flex-col items-center gap-4\">\n <p className=\"text-sm text-muted-foreground\">\n Trusted by developers at\n </p>\n <div className=\"flex flex-wrap items-center justify-center gap-8 opacity-50 grayscale\">\n {trustedBy.map((company) => (\n <span key={company} className=\"text-xl font-bold\">\n {company}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Custom content (e.g., preview) */}\n {children}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport type { LucideIcon } from \"lucide-react\";\n\nexport interface Feature {\n name: string;\n description: string;\n icon: LucideIcon;\n color?: string;\n bg?: string;\n}\n\nexport interface FeaturesProps {\n badge?: string;\n title: string;\n subtitle?: string;\n features: Feature[];\n techStack?: Array<{\n name: string;\n color: string;\n textColor?: string;\n label: string;\n }>;\n className?: string;\n}\n\nexport function Features({\n badge = \"Features\",\n title,\n subtitle,\n features,\n techStack,\n className,\n}: FeaturesProps) {\n return (\n <section id=\"features\" className={`py-24 md:py-32 ${className}`}>\n <div className=\"container px-4\">\n <div className=\"mx-auto max-w-2xl text-center\">\n <span className=\"mb-4 inline-block rounded-full bg-primary/10 px-4 py-1.5 text-sm font-medium text-primary\">\n {badge}\n </span>\n <h2 className=\"mb-4 text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-lg text-muted-foreground\">{subtitle}</p>\n )}\n </div>\n\n <div className=\"mx-auto mt-16 max-w-6xl\">\n <div className=\"grid gap-6 md:grid-cols-2 lg:grid-cols-4\">\n {features.map((feature) => (\n <div\n key={feature.name}\n className=\"group relative overflow-hidden rounded-2xl border bg-background p-6 transition-all hover:shadow-lg hover:shadow-primary/5\"\n >\n <div className=\"absolute inset-0 bg-gradient-to-b from-transparent to-muted/20 opacity-0 transition-opacity group-hover:opacity-100\" />\n <div\n className={`mb-4 inline-flex rounded-xl p-3 ${\n feature.bg || \"bg-primary/10\"\n }`}\n >\n <feature.icon\n className={`h-6 w-6 ${feature.color || \"text-primary\"}`}\n />\n </div>\n <h3 className=\"mb-2 text-lg font-semibold\">{feature.name}</h3>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n {feature.description}\n </p>\n </div>\n ))}\n </div>\n </div>\n\n {/* Tech stack */}\n {techStack && techStack.length > 0 && (\n <div className=\"mx-auto mt-20 max-w-4xl\">\n <div className=\"rounded-2xl border bg-muted/30 p-8 text-center\">\n <h3 className=\"mb-6 text-lg font-semibold\">\n Built with modern technologies\n </h3>\n <div className=\"flex flex-wrap items-center justify-center gap-6 md:gap-10\">\n {techStack.map((tech) => (\n <div key={tech.name} className=\"flex items-center gap-2\">\n <div\n className=\"h-8 w-8 rounded-lg flex items-center justify-center\"\n style={{ backgroundColor: tech.color }}\n >\n <span\n className=\"text-xs font-bold\"\n style={{ color: tech.textColor || \"white\" }}\n >\n {tech.label}\n </span>\n </div>\n <span className=\"font-medium\">{tech.name}</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { Check } from \"lucide-react\";\n\nexport interface PricingPlan {\n name: string;\n price: string;\n period?: string;\n description: string;\n features: string[];\n cta: string;\n href: string;\n popular?: boolean;\n}\n\nexport interface PricingProps {\n title?: string;\n subtitle?: string;\n plans: PricingPlan[];\n className?: string;\n}\n\nexport function Pricing({\n title = \"Simple, transparent pricing\",\n subtitle = \"Choose the plan that best fits your needs. All plans include a 14-day free trial.\",\n plans,\n className,\n}: PricingProps) {\n return (\n <section id=\"pricing\" className={`py-20 sm:py-32 ${className}`}>\n <div className=\"container\">\n <div className=\"mx-auto max-w-2xl text-center\">\n <h2 className=\"text-3xl font-bold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n <p className=\"mt-4 text-lg text-muted-foreground\">{subtitle}</p>\n </div>\n\n <div className=\"mx-auto mt-16 grid max-w-5xl grid-cols-1 gap-8 lg:grid-cols-3\">\n {plans.map((plan) => (\n <div\n key={plan.name}\n className={`relative flex flex-col rounded-2xl border bg-background p-8 shadow-sm ${\n plan.popular ? \"border-primary shadow-lg\" : \"\"\n }`}\n >\n {plan.popular && (\n <span className=\"absolute -top-3 left-1/2 -translate-x-1/2 inline-flex items-center rounded-full bg-primary px-3 py-1 text-xs font-medium text-primary-foreground\">\n Most Popular\n </span>\n )}\n <div className=\"mb-6\">\n <h3 className=\"text-lg font-semibold\">{plan.name}</h3>\n <div className=\"mt-4 flex items-baseline\">\n <span className=\"text-4xl font-bold\">{plan.price}</span>\n {plan.period && (\n <span className=\"ml-1 text-muted-foreground\">\n {plan.period}\n </span>\n )}\n </div>\n <p className=\"mt-2 text-sm text-muted-foreground\">\n {plan.description}\n </p>\n </div>\n\n <ul className=\"mb-8 flex-1 space-y-3\">\n {plan.features.map((feature) => (\n <li key={feature} className=\"flex items-center gap-3\">\n <Check className=\"h-4 w-4 text-primary\" />\n <span className=\"text-sm\">{feature}</span>\n </li>\n ))}\n </ul>\n\n <Link\n href={plan.href}\n className={`inline-flex w-full items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors ${\n plan.popular\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"border bg-background hover:bg-muted\"\n }`}\n >\n {plan.cta}\n </Link>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface FaqItem {\n question: string;\n answer: string;\n}\n\nexport interface FaqProps {\n title?: string;\n subtitle?: string;\n items: FaqItem[];\n className?: string;\n}\n\nexport function Faq({\n title = \"Frequently asked questions\",\n subtitle = \"Everything you need to know about our product.\",\n items,\n className,\n}: FaqProps) {\n const [openIndex, setOpenIndex] = useState<number | null>(null);\n\n return (\n <section id=\"faq\" className={`py-20 sm:py-32 ${className}`}>\n <div className=\"container\">\n <div className=\"mx-auto max-w-2xl text-center\">\n <h2 className=\"text-3xl font-bold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n <p className=\"mt-4 text-lg text-muted-foreground\">{subtitle}</p>\n </div>\n\n <div className=\"mx-auto mt-16 max-w-3xl\">\n <div className=\"divide-y rounded-2xl border\">\n {items.map((item, index) => (\n <div key={index}>\n <button\n className=\"flex w-full items-center justify-between px-6 py-4 text-left\"\n onClick={() =>\n setOpenIndex(openIndex === index ? null : index)\n }\n >\n <span className=\"font-medium\">{item.question}</span>\n <ChevronDown\n className={`h-5 w-5 text-muted-foreground transition-transform ${\n openIndex === index ? \"rotate-180\" : \"\"\n }`}\n />\n </button>\n {openIndex === index && (\n <div className=\"px-6 pb-4\">\n <p className=\"text-muted-foreground\">{item.answer}</p>\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\n\nexport interface CtaProps {\n title: string;\n subtitle?: string;\n primaryCta?: {\n text: string;\n href: string;\n };\n secondaryCta?: {\n text: string;\n href: string;\n };\n className?: string;\n}\n\nexport function Cta({\n title,\n subtitle,\n primaryCta = { text: \"Get Started\", href: \"/signup\" },\n secondaryCta,\n className,\n}: CtaProps) {\n return (\n <section className={`py-20 sm:py-32 ${className}`}>\n <div className=\"container\">\n <div className=\"relative overflow-hidden rounded-3xl bg-primary px-6 py-20 sm:px-12 sm:py-28\">\n {/* Background decoration */}\n <div className=\"absolute inset-0 -z-10\">\n <div className=\"absolute -left-1/4 -top-1/4 h-1/2 w-1/2 rounded-full bg-white/10 blur-3xl\" />\n <div className=\"absolute -bottom-1/4 -right-1/4 h-1/2 w-1/2 rounded-full bg-white/10 blur-3xl\" />\n </div>\n\n <div className=\"mx-auto max-w-2xl text-center\">\n <h2 className=\"text-3xl font-bold tracking-tight text-primary-foreground sm:text-4xl\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"mt-4 text-lg text-primary-foreground/80\">\n {subtitle}\n </p>\n )}\n <div className=\"mt-8 flex flex-col items-center justify-center gap-4 sm:flex-row\">\n <Link\n href={primaryCta.href}\n className=\"inline-flex h-12 items-center justify-center rounded-md bg-background px-8 text-base font-medium text-foreground transition-colors hover:bg-background/90\"\n >\n {primaryCta.text}\n <ArrowRight className=\"ml-2 h-4 w-4\" />\n </Link>\n {secondaryCta && (\n <Link\n href={secondaryCta.href}\n className=\"inline-flex h-12 items-center justify-center rounded-md border border-primary-foreground/20 px-8 text-base font-medium text-primary-foreground transition-colors hover:bg-primary-foreground/10\"\n >\n {secondaryCta.text}\n </Link>\n )}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { type ReactNode } from \"react\";\n\nexport interface FooterLink {\n label: string;\n href: string;\n}\n\nexport interface FooterColumn {\n title: string;\n links: FooterLink[];\n}\n\nexport interface FooterProps {\n logo?: ReactNode;\n siteName?: string;\n description?: string;\n columns?: FooterColumn[];\n socialLinks?: Array<{\n icon: ReactNode;\n href: string;\n label: string;\n }>;\n copyright?: string;\n className?: string;\n}\n\nexport function Footer({\n logo,\n siteName = \"SaaS Kit\",\n description = \"Build your SaaS faster with our production-ready starter kit.\",\n columns = [],\n socialLinks = [],\n copyright,\n className,\n}: FooterProps) {\n const currentYear = new Date().getFullYear();\n\n return (\n <footer className={`border-t py-12 ${className}`}>\n <div className=\"container\">\n <div className=\"grid gap-8 md:grid-cols-2 lg:grid-cols-5\">\n {/* Logo and description */}\n <div className=\"lg:col-span-2\">\n <Link href=\"/\" className=\"flex items-center gap-2\">\n {logo || (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground font-bold\">\n S\n </div>\n )}\n <span className=\"text-lg font-semibold\">{siteName}</span>\n </Link>\n <p className=\"mt-4 max-w-xs text-sm text-muted-foreground\">\n {description}\n </p>\n {socialLinks.length > 0 && (\n <div className=\"mt-6 flex gap-4\">\n {socialLinks.map((link) => (\n <a\n key={link.label}\n href={link.href}\n className=\"text-muted-foreground hover:text-foreground\"\n aria-label={link.label}\n >\n {link.icon}\n </a>\n ))}\n </div>\n )}\n </div>\n\n {/* Link columns */}\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"font-semibold\">{column.title}</h3>\n <ul className=\"mt-4 space-y-2\">\n {column.links.map((link) => (\n <li key={link.label}>\n <Link\n href={link.href}\n className=\"text-sm text-muted-foreground hover:text-foreground\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n\n <div className=\"mt-12 border-t pt-8 text-center text-sm text-muted-foreground\">\n {copyright || `© ${currentYear} ${siteName}. All rights reserved.`}\n </div>\n </div>\n </footer>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { useState } from \"react\";\nimport { Menu, X } from \"lucide-react\";\nimport { type ReactNode } from \"react\";\n\nexport interface NavLink {\n label: string;\n href: string;\n}\n\nexport interface NavbarProps {\n logo?: ReactNode;\n siteName?: string;\n links?: NavLink[];\n ctaText?: string;\n ctaHref?: string;\n className?: string;\n}\n\nexport function Navbar({\n logo,\n siteName = \"SaaS Kit\",\n links = [\n { label: \"Features\", href: \"#features\" },\n { label: \"Pricing\", href: \"#pricing\" },\n { label: \"FAQ\", href: \"#faq\" },\n ],\n ctaText = \"Get Started\",\n ctaHref = \"/signup\",\n className,\n}: NavbarProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <header\n className={`sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60 ${className}`}\n >\n <nav className=\"container flex h-16 items-center justify-between\">\n <Link href=\"/\" className=\"flex items-center gap-2\">\n {logo || (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground font-bold\">\n S\n </div>\n )}\n <span className=\"text-lg font-semibold\">{siteName}</span>\n </Link>\n\n {/* Desktop navigation */}\n <div className=\"hidden items-center gap-6 md:flex\">\n {links.map((link) => (\n <Link\n key={link.label}\n href={link.href}\n className=\"text-sm font-medium text-muted-foreground transition-colors hover:text-foreground\"\n >\n {link.label}\n </Link>\n ))}\n <Link\n href={ctaHref}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90\"\n >\n {ctaText}\n </Link>\n </div>\n\n {/* Mobile menu button */}\n <button\n className=\"md:hidden\"\n onClick={() => setIsOpen(!isOpen)}\n aria-label=\"Toggle menu\"\n >\n {isOpen ? <X className=\"h-6 w-6\" /> : <Menu className=\"h-6 w-6\" />}\n </button>\n </nav>\n\n {/* Mobile navigation */}\n {isOpen && (\n <div className=\"border-t md:hidden\">\n <div className=\"container py-4\">\n {links.map((link) => (\n <Link\n key={link.label}\n href={link.href}\n className=\"block py-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground\"\n onClick={() => setIsOpen(false)}\n >\n {link.label}\n </Link>\n ))}\n <Link\n href={ctaHref}\n className=\"mt-2 inline-flex h-9 w-full items-center justify-center rounded-md bg-primary text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90\"\n onClick={() => setIsOpen(false)}\n >\n {ctaText}\n </Link>\n </div>\n </div>\n )}\n </header>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","Link","jsx","jsxs","jsx","jsxs","Link","ArrowRight","jsx","jsxs","Link","jsx","jsxs","Link","useState","jsx","jsxs"]}
@@ -0,0 +1,4 @@
1
+ export { Cta, CtaProps, Faq, FaqItem, FaqProps, Feature, Features, FeaturesProps, Footer, FooterColumn, FooterLink, FooterProps, Hero, HeroProps, HeroStat, NavLink, Navbar, NavbarProps, Pricing, PricingPlan, PricingProps } from './components/index.mjs';
2
+ import 'react/jsx-runtime';
3
+ import 'lucide-react';
4
+ import 'react';
@@ -0,0 +1,4 @@
1
+ export { Cta, CtaProps, Faq, FaqItem, FaqProps, Feature, Features, FeaturesProps, Footer, FooterColumn, FooterLink, FooterProps, Hero, HeroProps, HeroStat, NavLink, Navbar, NavbarProps, Pricing, PricingPlan, PricingProps } from './components/index.js';
2
+ import 'react/jsx-runtime';
3
+ import 'lucide-react';
4
+ import 'react';