@kuckit/landing-module 4.0.5 → 5.0.1

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.
@@ -1,1754 +1,7 @@
1
+ import { LandingPage } from "./components/LandingPage.js";
2
+ import { ModulesPage } from "./components/ModulesPage.js";
1
3
  import { defineKuckitClientModule } from "@kuckit/sdk-react";
2
- import { useEffect, useState } from "react";
3
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
- import { GlareCard } from "@kuckit/polar-payments-module/client";
5
- import { Check, Zap } from "lucide-react";
6
4
 
7
- //#region src/client/components/terminal-animation.tsx
8
- function TerminalAnimation({ commands, className = "", minHeight = "min-h-[280px]" }) {
9
- const [activeCommand, setActiveCommand] = useState(0);
10
- const [displayedLines, setDisplayedLines] = useState([]);
11
- const [isTyping, setIsTyping] = useState(true);
12
- const [typedInput, setTypedInput] = useState("");
13
- useEffect(() => {
14
- const command = commands[activeCommand];
15
- if (!command) return;
16
- let inputIndex = 0;
17
- let outputIndex = 0;
18
- let outputInterval = null;
19
- setDisplayedLines([]);
20
- setTypedInput("");
21
- setIsTyping(true);
22
- const inputInterval = setInterval(() => {
23
- if (inputIndex <= command.input.length) {
24
- setTypedInput(command.input.slice(0, inputIndex));
25
- inputIndex++;
26
- } else {
27
- clearInterval(inputInterval);
28
- setIsTyping(false);
29
- outputInterval = setInterval(() => {
30
- if (outputIndex < command.output.length) {
31
- const line = command.output[outputIndex];
32
- if (line !== void 0) setDisplayedLines((prev) => [...prev, line]);
33
- outputIndex++;
34
- } else {
35
- if (outputInterval) clearInterval(outputInterval);
36
- setTimeout(() => {
37
- setActiveCommand((prev) => (prev + 1) % commands.length);
38
- }, 3e3);
39
- }
40
- }, 100);
41
- }
42
- }, 50);
43
- return () => {
44
- clearInterval(inputInterval);
45
- if (outputInterval) clearInterval(outputInterval);
46
- };
47
- }, [activeCommand, commands]);
48
- return /* @__PURE__ */ jsxs("div", {
49
- className,
50
- children: [/* @__PURE__ */ jsxs("div", {
51
- className: "border border-border bg-background",
52
- children: [/* @__PURE__ */ jsxs("div", {
53
- className: "flex items-center justify-between px-4 py-3 border-b border-border bg-card",
54
- children: [
55
- /* @__PURE__ */ jsxs("div", {
56
- className: "flex items-center gap-2",
57
- children: [
58
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-error)/0.8)]" }),
59
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-warning)/0.8)]" }),
60
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-success)/0.8)]" })
61
- ]
62
- }),
63
- /* @__PURE__ */ jsx("span", {
64
- className: "text-xs text-muted-foreground font-mono",
65
- children: "terminal"
66
- }),
67
- /* @__PURE__ */ jsx("div", { className: "w-16" })
68
- ]
69
- }), /* @__PURE__ */ jsxs("div", {
70
- className: `p-6 font-mono text-sm ${minHeight}`,
71
- children: [/* @__PURE__ */ jsxs("div", {
72
- className: "flex items-center gap-2 mb-4",
73
- children: [
74
- /* @__PURE__ */ jsx("span", {
75
- className: "text-primary",
76
- children: "$"
77
- }),
78
- /* @__PURE__ */ jsx("span", {
79
- className: "text-foreground",
80
- children: typedInput
81
- }),
82
- isTyping && /* @__PURE__ */ jsx("span", { className: "w-2 h-5 bg-primary animate-pulse" })
83
- ]
84
- }), /* @__PURE__ */ jsx("div", {
85
- className: "space-y-0.5",
86
- children: displayedLines.map((line, index) => /* @__PURE__ */ jsx("div", {
87
- className: `${line?.startsWith("✓") ? "text-[hsl(var(--status-success))]" : line?.includes("!") ? "text-foreground" : "text-muted-foreground"}`,
88
- children: line || "\xA0"
89
- }, index))
90
- })]
91
- })]
92
- }), /* @__PURE__ */ jsx("div", {
93
- className: "flex justify-center gap-2 mt-6",
94
- children: commands.map((_, index) => /* @__PURE__ */ jsx("button", {
95
- onClick: () => setActiveCommand(index),
96
- className: `h-1.5 transition-all ${index === activeCommand ? "bg-primary w-8" : "bg-muted hover:bg-muted-foreground/30 w-1.5"}`
97
- }, index))
98
- })]
99
- });
100
- }
101
-
102
- //#endregion
103
- //#region src/client/components/hero.tsx
104
- const heroCommands = [{
105
- input: "bunx create-kuckit-app my-saas",
106
- output: [
107
- "Creating new Kuckit project...",
108
- "",
109
- "✓ Cloned template",
110
- "✓ Installed dependencies",
111
- "✓ Set up database",
112
- "",
113
- "Run: cd my-saas && bun run dev"
114
- ]
115
- }, {
116
- input: "kuckit add @kuckit/payments-module",
117
- output: [
118
- "Installing @kuckit/payments-module...",
119
- "",
120
- "✓ Package installed",
121
- "✓ Server module wired",
122
- "✓ Client routes added",
123
- "",
124
- "Stripe + Polar ready!"
125
- ]
126
- }];
127
- function Hero() {
128
- const [copied, setCopied] = useState(false);
129
- const copyCommand = () => {
130
- navigator.clipboard.writeText("bunx create-kuckit-app my-app");
131
- setCopied(true);
132
- setTimeout(() => setCopied(false), 2e3);
133
- };
134
- return /* @__PURE__ */ jsxs("section", {
135
- className: "relative min-h-screen",
136
- children: [/* @__PURE__ */ jsx("nav", {
137
- className: "relative z-20 border-b border-border",
138
- children: /* @__PURE__ */ jsxs("div", {
139
- className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
140
- children: [
141
- /* @__PURE__ */ jsxs("div", {
142
- className: "flex items-center gap-3",
143
- children: [/* @__PURE__ */ jsxs("svg", {
144
- className: "w-8 h-8",
145
- viewBox: "0 0 512 512",
146
- fill: "none",
147
- xmlns: "http://www.w3.org/2000/svg",
148
- children: [
149
- /* @__PURE__ */ jsx("polygon", {
150
- points: "256,64 384,144 384,304 256,224",
151
- fill: "#3D3A39"
152
- }),
153
- /* @__PURE__ */ jsx("polygon", {
154
- points: "256,64 128,144 128,304 256,224",
155
- fill: "#5C5855"
156
- }),
157
- /* @__PURE__ */ jsx("polygon", {
158
- points: "128,144 256,224 384,144 256,64",
159
- fill: "#A49D9A"
160
- }),
161
- /* @__PURE__ */ jsx("polygon", {
162
- points: "256,224 352,280 352,392 256,336",
163
- fill: "#D15010"
164
- }),
165
- /* @__PURE__ */ jsx("polygon", {
166
- points: "256,224 160,280 160,392 256,336",
167
- fill: "#EE6018"
168
- }),
169
- /* @__PURE__ */ jsx("polygon", {
170
- points: "160,280 256,336 352,280 256,224",
171
- fill: "#EF6F2E"
172
- })
173
- ]
174
- }), /* @__PURE__ */ jsx("span", {
175
- className: "text-foreground font-medium tracking-tight",
176
- children: "Kuckit"
177
- })]
178
- }),
179
- /* @__PURE__ */ jsxs("div", {
180
- className: "hidden md:flex items-center gap-8",
181
- children: [
182
- /* @__PURE__ */ jsx("a", {
183
- href: "/docs",
184
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
185
- children: "Docs"
186
- }),
187
- /* @__PURE__ */ jsx("a", {
188
- href: "/modules",
189
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
190
- children: "Modules"
191
- }),
192
- /* @__PURE__ */ jsx("a", {
193
- href: "#pricing",
194
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
195
- children: "Pricing"
196
- })
197
- ]
198
- }),
199
- /* @__PURE__ */ jsxs("div", {
200
- className: "flex items-center gap-3",
201
- children: [/* @__PURE__ */ jsx("a", {
202
- href: "/login",
203
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
204
- children: "Sign in"
205
- }), /* @__PURE__ */ jsx("a", {
206
- href: "/docs/getting-started",
207
- className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
208
- children: "Get Started"
209
- })]
210
- })
211
- ]
212
- })
213
- }), /* @__PURE__ */ jsx("div", {
214
- className: "relative z-10 max-w-7xl mx-auto px-8 pt-24 pb-32",
215
- children: /* @__PURE__ */ jsxs("div", {
216
- className: "grid lg:grid-cols-12 gap-12 lg:gap-16 items-center",
217
- children: [/* @__PURE__ */ jsxs("div", {
218
- className: "lg:col-span-7",
219
- children: [
220
- /* @__PURE__ */ jsxs("div", {
221
- className: "flex items-center gap-4 mb-8",
222
- children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
223
- className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
224
- children: "Vibe coding ain't fun when you're stuck"
225
- })]
226
- }),
227
- /* @__PURE__ */ jsxs("h1", {
228
- className: "mb-8",
229
- children: [/* @__PURE__ */ jsx("span", {
230
- className: "block text-4xl md:text-5xl lg:text-6xl font-light text-foreground tracking-[-0.03em] leading-[1.1]",
231
- children: "You don't need more prompts."
232
- }), /* @__PURE__ */ jsx("span", {
233
- className: "block text-4xl md:text-5xl lg:text-6xl font-light text-primary tracking-[-0.03em] leading-[1.1] mt-2",
234
- children: "You need a foundation."
235
- })]
236
- }),
237
- /* @__PURE__ */ jsx("p", {
238
- className: "text-lg md:text-xl text-muted-foreground max-w-xl leading-relaxed mb-12",
239
- children: "Vibe coding builds fast. We build right. Ship in hours."
240
- }),
241
- /* @__PURE__ */ jsx("div", {
242
- className: "flex flex-col sm:flex-row items-start gap-4 mb-16",
243
- children: /* @__PURE__ */ jsxs("a", {
244
- href: "/docs/getting-started",
245
- className: "group inline-flex items-center gap-3 px-6 py-4 bg-primary text-primary-foreground font-medium hover:bg-primary/90 transition-all",
246
- children: [/* @__PURE__ */ jsx("span", { children: "Get Unstuck" }), /* @__PURE__ */ jsx("svg", {
247
- className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
248
- fill: "none",
249
- stroke: "currentColor",
250
- viewBox: "0 0 24 24",
251
- children: /* @__PURE__ */ jsx("path", {
252
- strokeLinecap: "round",
253
- strokeLinejoin: "round",
254
- strokeWidth: 2,
255
- d: "M17 8l4 4m0 0l-4 4m4-4H3"
256
- })
257
- })]
258
- })
259
- }),
260
- /* @__PURE__ */ jsxs("div", {
261
- className: "inline-block",
262
- children: [/* @__PURE__ */ jsx("div", {
263
- className: "text-xs text-muted-foreground tracking-[0.15em] uppercase mb-3",
264
- children: "Quick Start"
265
- }), /* @__PURE__ */ jsxs("button", {
266
- onClick: copyCommand,
267
- className: "group flex items-center gap-4 px-5 py-4 bg-card border border-border hover:border-primary/50 transition-colors font-mono text-sm",
268
- children: [
269
- /* @__PURE__ */ jsx("span", {
270
- className: "text-primary",
271
- children: "$"
272
- }),
273
- /* @__PURE__ */ jsx("code", {
274
- className: "text-foreground",
275
- children: "bunx create-kuckit-app my-app"
276
- }),
277
- /* @__PURE__ */ jsx("span", {
278
- className: "text-muted-foreground group-hover:text-primary transition-colors ml-4",
279
- children: copied ? /* @__PURE__ */ jsx("svg", {
280
- className: "w-4 h-4",
281
- fill: "none",
282
- stroke: "currentColor",
283
- viewBox: "0 0 24 24",
284
- children: /* @__PURE__ */ jsx("path", {
285
- strokeLinecap: "round",
286
- strokeLinejoin: "round",
287
- strokeWidth: 2,
288
- d: "M5 13l4 4L19 7"
289
- })
290
- }) : /* @__PURE__ */ jsx("svg", {
291
- className: "w-4 h-4",
292
- fill: "none",
293
- stroke: "currentColor",
294
- viewBox: "0 0 24 24",
295
- children: /* @__PURE__ */ jsx("path", {
296
- strokeLinecap: "round",
297
- strokeLinejoin: "round",
298
- strokeWidth: 2,
299
- d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
300
- })
301
- })
302
- })
303
- ]
304
- })]
305
- })
306
- ]
307
- }), /* @__PURE__ */ jsx("div", {
308
- className: "lg:col-span-5 relative",
309
- children: /* @__PURE__ */ jsxs("div", {
310
- className: "relative",
311
- children: [
312
- /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-primary/5 blur-2xl rounded-lg" }),
313
- /* @__PURE__ */ jsx("div", { className: "absolute -top-4 -left-4 w-8 h-8 border-l-2 border-t-2 border-primary/60" }),
314
- /* @__PURE__ */ jsx("div", { className: "absolute -top-4 -right-4 w-8 h-8 border-r-2 border-t-2 border-primary/60" }),
315
- /* @__PURE__ */ jsx("div", { className: "absolute -bottom-4 -left-4 w-8 h-8 border-l-2 border-b-2 border-primary/60" }),
316
- /* @__PURE__ */ jsx("div", { className: "absolute -bottom-4 -right-4 w-8 h-8 border-r-2 border-b-2 border-primary/60" }),
317
- /* @__PURE__ */ jsxs("div", {
318
- className: "absolute -top-8 left-0 flex items-center gap-2",
319
- children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary" }), /* @__PURE__ */ jsx("span", {
320
- className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
321
- children: "Live Demo"
322
- })]
323
- }),
324
- /* @__PURE__ */ jsx(TerminalAnimation, {
325
- commands: heroCommands,
326
- minHeight: "min-h-[320px]"
327
- })
328
- ]
329
- })
330
- })]
331
- })
332
- })]
333
- });
334
- }
335
-
336
- //#endregion
337
- //#region src/client/components/features.tsx
338
- const AI_FEATURES = [
339
- {
340
- title: "Context Engineering",
341
- tag: "Hot"
342
- },
343
- { title: "Skills Your AI Can Use" },
344
- {
345
- title: "Curated MCP Tools",
346
- tag: "New"
347
- },
348
- { title: "Multi-Agent Workflows" }
349
- ];
350
- function ScanLines() {
351
- return /* @__PURE__ */ jsx("div", {
352
- className: "absolute inset-0 pointer-events-none overflow-hidden opacity-[0.03]",
353
- children: /* @__PURE__ */ jsx("div", {
354
- className: "absolute inset-0",
355
- style: {
356
- backgroundImage: "repeating-linear-gradient(0deg, transparent, transparent 2px, currentColor 2px, currentColor 3px)",
357
- backgroundSize: "100% 4px"
358
- }
359
- })
360
- });
361
- }
362
- function GridPattern() {
363
- return /* @__PURE__ */ jsx("div", {
364
- className: "absolute inset-0 pointer-events-none opacity-[0.04]",
365
- children: /* @__PURE__ */ jsxs("svg", {
366
- className: "w-full h-full",
367
- xmlns: "http://www.w3.org/2000/svg",
368
- children: [/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("pattern", {
369
- id: "grid",
370
- width: "20",
371
- height: "20",
372
- patternUnits: "userSpaceOnUse",
373
- children: /* @__PURE__ */ jsx("path", {
374
- d: "M 20 0 L 0 0 0 20",
375
- fill: "none",
376
- stroke: "currentColor",
377
- strokeWidth: "0.5"
378
- })
379
- }) }), /* @__PURE__ */ jsx("rect", {
380
- width: "100%",
381
- height: "100%",
382
- fill: "url(#grid)"
383
- })]
384
- })
385
- });
386
- }
387
- function CornerMarkers({ glow = false }) {
388
- const baseClass = "absolute w-5 h-5 border-primary";
389
- const glowClass = glow ? "shadow-[0_0_10px_rgba(209,80,16,0.5)]" : "";
390
- return /* @__PURE__ */ jsxs(Fragment, { children: [
391
- /* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -top-px -left-px border-l-2 border-t-2` }),
392
- /* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -top-px -right-px border-r-2 border-t-2` }),
393
- /* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -bottom-px -left-px border-l-2 border-b-2` }),
394
- /* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -bottom-px -right-px border-r-2 border-b-2` })
395
- ] });
396
- }
397
- function DiagonalAccent() {
398
- return /* @__PURE__ */ jsx("div", {
399
- className: "absolute top-0 right-0 w-32 h-32 pointer-events-none",
400
- style: { background: "linear-gradient(135deg, hsl(var(--primary) / 0.15) 0%, transparent 50%)" }
401
- });
402
- }
403
- function CardA() {
404
- return /* @__PURE__ */ jsxs("div", {
405
- className: "group relative bg-gradient-to-br from-card via-card to-primary/5 border border-border overflow-hidden transform-gpu md:col-span-2 md:row-span-2 transition-all duration-500 hover:border-primary/60 hover:shadow-[0_0_40px_rgba(209,80,16,0.15)]",
406
- children: [
407
- /* @__PURE__ */ jsx(CornerMarkers, { glow: true }),
408
- /* @__PURE__ */ jsx(GridPattern, {}),
409
- /* @__PURE__ */ jsx(DiagonalAccent, {}),
410
- /* @__PURE__ */ jsx("div", { className: "absolute -top-20 -right-20 w-64 h-64 bg-primary/20 rounded-full blur-[80px] group-hover:scale-150 transition-transform duration-700" }),
411
- /* @__PURE__ */ jsx("div", {
412
- className: "absolute bottom-0 left-0 right-0 h-24 opacity-20 group-hover:opacity-40 transition-opacity",
413
- children: /* @__PURE__ */ jsxs("svg", {
414
- className: "w-full h-full",
415
- viewBox: "0 0 400 100",
416
- preserveAspectRatio: "none",
417
- children: [/* @__PURE__ */ jsx("path", {
418
- d: "M0,80 Q50,60 100,70 T200,50 T300,65 T400,45 L400,100 L0,100 Z",
419
- fill: "url(#waveGradient)"
420
- }), /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
421
- id: "waveGradient",
422
- x1: "0%",
423
- y1: "0%",
424
- x2: "0%",
425
- y2: "100%",
426
- children: [/* @__PURE__ */ jsx("stop", {
427
- offset: "0%",
428
- stopColor: "hsl(var(--primary))",
429
- stopOpacity: "0.4"
430
- }), /* @__PURE__ */ jsx("stop", {
431
- offset: "100%",
432
- stopColor: "hsl(var(--primary))",
433
- stopOpacity: "0"
434
- })]
435
- }) })]
436
- })
437
- }),
438
- /* @__PURE__ */ jsxs("div", {
439
- className: "absolute inset-0 flex flex-col justify-center p-8 md:p-12",
440
- children: [/* @__PURE__ */ jsxs("div", {
441
- className: "transition-transform duration-500 ease-out group-hover:-translate-y-6",
442
- children: [
443
- /* @__PURE__ */ jsxs("div", {
444
- className: "flex items-center gap-3 mb-6",
445
- children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary animate-pulse shadow-[0_0_8px_rgba(209,80,16,0.8)]" }), /* @__PURE__ */ jsx("span", {
446
- className: "text-[10px] text-primary tracking-[0.3em] uppercase font-medium",
447
- children: "Production Ready"
448
- })]
449
- }),
450
- /* @__PURE__ */ jsxs("h3", {
451
- className: "text-3xl md:text-4xl lg:text-5xl font-light tracking-[-0.04em] text-foreground mb-6 leading-[1.1]",
452
- children: [
453
- "Ship faster.",
454
- /* @__PURE__ */ jsx("br", {}),
455
- /* @__PURE__ */ jsx("span", {
456
- className: "text-primary",
457
- children: "Build right."
458
- })
459
- ]
460
- }),
461
- /* @__PURE__ */ jsx("div", {
462
- className: "flex flex-wrap gap-3",
463
- children: [
464
- "Production-ready",
465
- "Pre-built features",
466
- "AI-native"
467
- ].map((pill, i) => /* @__PURE__ */ jsx("span", {
468
- className: "px-4 py-2 text-xs border border-primary/40 text-foreground/80 bg-primary/5 backdrop-blur-sm tracking-wide transition-all duration-300 hover:bg-primary/20 hover:border-primary",
469
- style: { animationDelay: `${i * 100}ms` },
470
- children: pill
471
- }, pill))
472
- })
473
- ]
474
- }), /* @__PURE__ */ jsx("div", {
475
- className: "absolute bottom-8 md:bottom-12 left-8 md:left-12 opacity-0 group-hover:opacity-100 translate-y-6 group-hover:translate-y-0 transition-all duration-500 delay-100",
476
- children: /* @__PURE__ */ jsxs("a", {
477
- href: "/docs/getting-started",
478
- className: "inline-flex items-center gap-3 text-sm text-primary font-medium tracking-wide group/cta",
479
- children: [/* @__PURE__ */ jsxs("span", {
480
- className: "relative",
481
- children: ["Get Started", /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 left-0 w-0 h-px bg-primary group-hover/cta:w-full transition-all duration-300" })]
482
- }), /* @__PURE__ */ jsx("svg", {
483
- className: "w-4 h-4 group-hover/cta:translate-x-1 transition-transform",
484
- fill: "none",
485
- viewBox: "0 0 24 24",
486
- stroke: "currentColor",
487
- strokeWidth: 2,
488
- children: /* @__PURE__ */ jsx("path", {
489
- strokeLinecap: "round",
490
- strokeLinejoin: "round",
491
- d: "M17 8l4 4m0 0l-4 4m4-4H3"
492
- })
493
- })]
494
- })
495
- })]
496
- })
497
- ]
498
- });
499
- }
500
- function CardB({ className = "" }) {
501
- return /* @__PURE__ */ jsxs("div", {
502
- className: `group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 hover:shadow-[0_0_30px_rgba(209,80,16,0.1)] ${className}`,
503
- children: [
504
- /* @__PURE__ */ jsx(CornerMarkers, {}),
505
- /* @__PURE__ */ jsx(ScanLines, {}),
506
- /* @__PURE__ */ jsxs("div", {
507
- className: "absolute top-6 right-6 w-16 h-16",
508
- children: [
509
- /* @__PURE__ */ jsx("div", {
510
- className: "absolute inset-0 border border-primary/30 rounded-full animate-ping",
511
- style: { animationDuration: "3s" }
512
- }),
513
- /* @__PURE__ */ jsx("div", {
514
- className: "absolute inset-2 border border-primary/50 rounded-full animate-ping",
515
- style: {
516
- animationDuration: "3s",
517
- animationDelay: "0.5s"
518
- }
519
- }),
520
- /* @__PURE__ */ jsx("div", {
521
- className: "absolute inset-4 bg-primary/20 rounded-full flex items-center justify-center",
522
- children: /* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary rounded-full shadow-[0_0_10px_rgba(209,80,16,0.8)]" })
523
- })
524
- ]
525
- }),
526
- /* @__PURE__ */ jsxs("div", {
527
- className: "absolute inset-0 flex flex-col p-6",
528
- children: [
529
- /* @__PURE__ */ jsxs("div", {
530
- className: "flex items-center gap-2 mb-6",
531
- children: [/* @__PURE__ */ jsx("span", {
532
- className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
533
- children: "AI Enhancement"
534
- }), /* @__PURE__ */ jsx("span", {
535
- className: "px-1.5 py-0.5 text-[8px] bg-[hsl(var(--status-success))] text-white tracking-wider uppercase",
536
- children: "Active"
537
- })]
538
- }),
539
- /* @__PURE__ */ jsxs("div", {
540
- className: "flex-1 flex flex-col justify-center",
541
- children: [/* @__PURE__ */ jsxs("div", {
542
- className: "relative",
543
- children: [/* @__PURE__ */ jsxs("span", {
544
- className: "text-6xl md:text-7xl font-extralight text-foreground tracking-tighter",
545
- children: ["10", /* @__PURE__ */ jsx("span", {
546
- className: "text-primary",
547
- children: "x"
548
- })]
549
- }), /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-primary/10 blur-2xl -z-10" })]
550
- }), /* @__PURE__ */ jsx("span", {
551
- className: "text-sm text-muted-foreground mt-2 tracking-wide",
552
- children: "Faster AI responses"
553
- })]
554
- }),
555
- /* @__PURE__ */ jsx("div", {
556
- className: "space-y-2 mt-4",
557
- children: [
558
- {
559
- label: "Smart Context",
560
- value: "100%"
561
- },
562
- {
563
- label: "Auto-Complete",
564
- value: "95%"
565
- },
566
- {
567
- label: "Team of AIs",
568
- value: "∞"
569
- }
570
- ].map((cap, i) => /* @__PURE__ */ jsxs("div", {
571
- className: "group/bar relative overflow-hidden",
572
- children: [/* @__PURE__ */ jsxs("div", {
573
- className: "flex items-center justify-between text-xs mb-1",
574
- children: [/* @__PURE__ */ jsx("span", {
575
- className: "text-muted-foreground",
576
- children: cap.label
577
- }), /* @__PURE__ */ jsx("span", {
578
- className: "text-primary font-mono",
579
- children: cap.value
580
- })]
581
- }), /* @__PURE__ */ jsx("div", {
582
- className: "h-1 bg-border rounded-full overflow-hidden",
583
- children: /* @__PURE__ */ jsx("div", {
584
- className: "h-full bg-gradient-to-r from-primary/50 to-primary rounded-full transition-all duration-700 group-hover:from-primary group-hover:to-primary",
585
- style: {
586
- width: cap.value === "∞" ? "100%" : cap.value,
587
- transitionDelay: `${i * 100}ms`
588
- }
589
- })
590
- })]
591
- }, cap.label))
592
- })
593
- ]
594
- })
595
- ]
596
- });
597
- }
598
- function CardC({ className = "" }) {
599
- return /* @__PURE__ */ jsxs("div", {
600
- className: `group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 ${className}`,
601
- children: [
602
- /* @__PURE__ */ jsx(CornerMarkers, {}),
603
- /* @__PURE__ */ jsx("div", {
604
- className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500",
605
- style: { background: "linear-gradient(135deg, transparent 49.5%, hsl(var(--primary) / 0.1) 49.5%, hsl(var(--primary) / 0.1) 50.5%, transparent 50.5%)" }
606
- }),
607
- /* @__PURE__ */ jsxs("div", {
608
- className: "absolute inset-0 flex flex-col justify-center p-6",
609
- children: [/* @__PURE__ */ jsx("div", {
610
- className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase mb-4",
611
- children: "Transformation"
612
- }), /* @__PURE__ */ jsx("div", {
613
- className: "space-y-4",
614
- children: [
615
- {
616
- problem: "Stuck in loops",
617
- outcome: "Ship in hours",
618
- icon: "○"
619
- },
620
- {
621
- problem: "Can't debug",
622
- outcome: "Code you own",
623
- icon: "△"
624
- },
625
- {
626
- problem: "Won't deploy",
627
- outcome: "Launch confident",
628
- icon: "□"
629
- }
630
- ].map((t, i) => /* @__PURE__ */ jsxs("div", {
631
- className: "group/row relative flex items-center gap-3 transition-all duration-300",
632
- style: { transitionDelay: `${i * 50}ms` },
633
- children: [/* @__PURE__ */ jsx("span", {
634
- className: "w-6 h-6 flex items-center justify-center border border-border text-muted-foreground text-xs group-hover/row:border-primary group-hover/row:text-primary transition-colors",
635
- children: t.icon
636
- }), /* @__PURE__ */ jsxs("div", {
637
- className: "flex-1 flex items-center gap-2 text-sm",
638
- children: [
639
- /* @__PURE__ */ jsx("span", {
640
- className: "text-muted-foreground/60 line-through decoration-primary/50 group-hover:text-muted-foreground/40 transition-colors",
641
- children: t.problem
642
- }),
643
- /* @__PURE__ */ jsx("svg", {
644
- className: "w-4 h-4 text-primary shrink-0 group-hover:translate-x-1 transition-transform",
645
- viewBox: "0 0 24 24",
646
- fill: "none",
647
- stroke: "currentColor",
648
- strokeWidth: 2,
649
- children: /* @__PURE__ */ jsx("path", {
650
- strokeLinecap: "round",
651
- strokeLinejoin: "round",
652
- d: "M13 7l5 5m0 0l-5 5m5-5H6"
653
- })
654
- }),
655
- /* @__PURE__ */ jsx("span", {
656
- className: "text-foreground font-medium group-hover:text-primary transition-colors",
657
- children: t.outcome
658
- })
659
- ]
660
- })]
661
- }, t.problem))
662
- })]
663
- })
664
- ]
665
- });
666
- }
667
- function FeaturePill({ title, tag }) {
668
- return /* @__PURE__ */ jsxs("div", {
669
- className: "shrink-0 px-5 py-3 bg-gradient-to-r from-card to-primary/5 border border-border flex items-center gap-3 group-hover:border-primary/40 transition-colors",
670
- children: [
671
- /* @__PURE__ */ jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" }),
672
- /* @__PURE__ */ jsx("span", {
673
- className: "text-sm font-medium whitespace-nowrap text-foreground",
674
- children: title
675
- }),
676
- tag && /* @__PURE__ */ jsx("span", {
677
- className: `text-[9px] px-2 py-0.5 tracking-wider uppercase font-medium ${tag === "Hot" ? "bg-primary text-white" : "bg-[hsl(var(--status-info))] text-white"}`,
678
- children: tag
679
- })
680
- ]
681
- });
682
- }
683
- function CardD() {
684
- return /* @__PURE__ */ jsxs("div", {
685
- className: "group relative bg-card border border-border overflow-hidden transform-gpu md:col-span-2 transition-all duration-500 hover:border-primary/60",
686
- children: [
687
- /* @__PURE__ */ jsx(CornerMarkers, {}),
688
- /* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 bottom-0 w-16 bg-gradient-to-r from-card to-transparent z-10 pointer-events-none" }),
689
- /* @__PURE__ */ jsx("div", { className: "absolute right-0 top-0 bottom-0 w-16 bg-gradient-to-l from-card to-transparent z-10 pointer-events-none" }),
690
- /* @__PURE__ */ jsxs("div", {
691
- className: "absolute inset-0 flex flex-col justify-center",
692
- children: [/* @__PURE__ */ jsx("div", {
693
- className: "absolute top-4 left-4 z-20",
694
- children: /* @__PURE__ */ jsx("span", {
695
- className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
696
- children: "AI Superpowers"
697
- })
698
- }), /* @__PURE__ */ jsx("div", {
699
- className: "flex overflow-hidden py-4",
700
- children: /* @__PURE__ */ jsxs("div", {
701
- className: "flex gap-4 px-4 animate-marquee group-hover:[animation-play-state:paused]",
702
- children: [AI_FEATURES.map((f) => /* @__PURE__ */ jsx(FeaturePill, { ...f }, f.title)), AI_FEATURES.map((f) => /* @__PURE__ */ jsx(FeaturePill, { ...f }, `dup-${f.title}`))]
703
- })
704
- })]
705
- })
706
- ]
707
- });
708
- }
709
- function CardE() {
710
- const layers = [
711
- {
712
- name: "Apps",
713
- packages: ["web", "server"],
714
- radius: 95
715
- },
716
- {
717
- name: "Infrastructure",
718
- packages: [
719
- "db",
720
- "auth",
721
- "infra"
722
- ],
723
- radius: 75
724
- },
725
- {
726
- name: "Adapters",
727
- packages: ["api", "contracts"],
728
- radius: 55
729
- },
730
- {
731
- name: "Application",
732
- packages: ["application"],
733
- radius: 38
734
- },
735
- {
736
- name: "Domain",
737
- packages: ["domain"],
738
- radius: 20
739
- }
740
- ];
741
- return /* @__PURE__ */ jsxs("div", {
742
- className: "group relative bg-card border border-border overflow-hidden transform-gpu md:col-span-2 transition-all duration-500 hover:border-primary/60",
743
- children: [
744
- /* @__PURE__ */ jsx(CornerMarkers, {}),
745
- /* @__PURE__ */ jsx(ScanLines, {}),
746
- /* @__PURE__ */ jsx("div", {
747
- className: "absolute top-4 left-4 z-20",
748
- children: /* @__PURE__ */ jsx("span", {
749
- className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
750
- children: "Clean Architecture"
751
- })
752
- }),
753
- /* @__PURE__ */ jsxs("div", {
754
- className: "absolute top-4 right-4 z-20 flex items-center gap-2",
755
- children: [/* @__PURE__ */ jsx("span", {
756
- className: "text-[8px] text-muted-foreground tracking-wider uppercase",
757
- children: "deps flow in"
758
- }), /* @__PURE__ */ jsx("svg", {
759
- className: "w-3 h-3 text-primary animate-pulse",
760
- viewBox: "0 0 24 24",
761
- fill: "none",
762
- stroke: "currentColor",
763
- strokeWidth: 2,
764
- children: /* @__PURE__ */ jsx("circle", {
765
- cx: "12",
766
- cy: "12",
767
- r: "3",
768
- fill: "currentColor"
769
- })
770
- })]
771
- }),
772
- /* @__PURE__ */ jsx("div", {
773
- className: "absolute inset-0 flex items-center justify-center",
774
- children: /* @__PURE__ */ jsxs("div", {
775
- className: "relative w-48 h-48 md:w-56 md:h-56",
776
- children: [
777
- /* @__PURE__ */ jsx("div", {
778
- className: "absolute inset-0 flex items-center justify-center",
779
- children: [
780
- 0,
781
- 1,
782
- 2
783
- ].map((i) => /* @__PURE__ */ jsx("div", {
784
- className: "absolute rounded-full border border-primary/20",
785
- style: {
786
- width: "100%",
787
- height: "100%",
788
- animation: `pulseIn 3s ease-in-out infinite`,
789
- animationDelay: `${i * 1}s`
790
- }
791
- }, i))
792
- }),
793
- layers.map((layer, i) => /* @__PURE__ */ jsx("div", {
794
- className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border transition-all duration-300 group/layer flex items-center justify-center cursor-default",
795
- style: {
796
- width: `${layer.radius}%`,
797
- height: `${layer.radius}%`,
798
- borderColor: i === layers.length - 1 ? "hsl(var(--primary))" : `hsl(var(--primary) / ${.15 + i * .1})`,
799
- backgroundColor: i === layers.length - 1 ? "hsl(var(--primary) / 0.15)" : `hsl(var(--primary) / ${.02 + i * .02})`
800
- },
801
- children: i === layers.length - 1 ? /* @__PURE__ */ jsx("span", {
802
- className: "text-[9px] font-medium text-primary tracking-wide",
803
- children: layer.name
804
- }) : /* @__PURE__ */ jsx("span", {
805
- className: "absolute text-[8px] text-muted-foreground/60 tracking-wide opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap",
806
- style: {
807
- top: "2px",
808
- left: "50%",
809
- transform: "translateX(-50%)"
810
- },
811
- children: layer.name
812
- })
813
- }, layer.name)),
814
- /* @__PURE__ */ jsx("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-8 bg-primary/30 rounded-full blur-xl" })
815
- ]
816
- })
817
- }),
818
- /* @__PURE__ */ jsx("div", {
819
- className: "absolute right-4 top-1/2 -translate-y-1/2 space-y-1 opacity-0 group-hover:opacity-100 transition-opacity duration-300",
820
- children: layers.slice().reverse().map((layer) => /* @__PURE__ */ jsxs("div", {
821
- className: "flex items-center gap-2",
822
- children: [/* @__PURE__ */ jsx("div", {
823
- className: "w-2 h-2 rounded-full",
824
- style: { backgroundColor: "hsl(var(--primary) / 0.5)" }
825
- }), /* @__PURE__ */ jsx("code", {
826
- className: "text-[8px] text-muted-foreground font-mono",
827
- children: layer.packages.join(", ")
828
- })]
829
- }, layer.name))
830
- })
831
- ]
832
- });
833
- }
834
- function CardF() {
835
- return /* @__PURE__ */ jsxs("div", {
836
- className: "group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 hover:bg-primary/5",
837
- children: [
838
- /* @__PURE__ */ jsx(CornerMarkers, {}),
839
- /* @__PURE__ */ jsx("div", {
840
- className: "absolute inset-0 opacity-5",
841
- children: /* @__PURE__ */ jsxs("svg", {
842
- className: "w-full h-full",
843
- viewBox: "0 0 100 100",
844
- preserveAspectRatio: "none",
845
- children: [
846
- /* @__PURE__ */ jsx("circle", {
847
- cx: "50",
848
- cy: "50",
849
- r: "40",
850
- fill: "none",
851
- stroke: "currentColor",
852
- strokeWidth: "0.5"
853
- }),
854
- /* @__PURE__ */ jsx("circle", {
855
- cx: "50",
856
- cy: "50",
857
- r: "25",
858
- fill: "none",
859
- stroke: "currentColor",
860
- strokeWidth: "0.5"
861
- }),
862
- /* @__PURE__ */ jsx("line", {
863
- x1: "0",
864
- y1: "50",
865
- x2: "100",
866
- y2: "50",
867
- stroke: "currentColor",
868
- strokeWidth: "0.5"
869
- }),
870
- /* @__PURE__ */ jsx("line", {
871
- x1: "50",
872
- y1: "0",
873
- x2: "50",
874
- y2: "100",
875
- stroke: "currentColor",
876
- strokeWidth: "0.5"
877
- })
878
- ]
879
- })
880
- }),
881
- /* @__PURE__ */ jsxs("div", {
882
- className: "absolute inset-0 flex flex-col justify-center items-center p-6 text-center",
883
- children: [
884
- /* @__PURE__ */ jsxs("div", {
885
- className: "relative mb-4 group-hover:scale-110 transition-transform duration-300",
886
- children: [/* @__PURE__ */ jsx("svg", {
887
- className: "w-10 h-10 text-primary",
888
- fill: "none",
889
- viewBox: "0 0 24 24",
890
- stroke: "currentColor",
891
- strokeWidth: 1.5,
892
- children: /* @__PURE__ */ jsx("path", {
893
- strokeLinecap: "round",
894
- strokeLinejoin: "round",
895
- d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
896
- })
897
- }), /* @__PURE__ */ jsx("div", { className: "absolute -inset-2 bg-primary/20 blur-lg -z-10 group-hover:bg-primary/30 transition-colors" })]
898
- }),
899
- /* @__PURE__ */ jsx("span", {
900
- className: "text-sm font-mono text-primary tracking-wide",
901
- children: "AGENTS.md"
902
- }),
903
- /* @__PURE__ */ jsx("span", {
904
- className: "text-[10px] text-muted-foreground mt-1 tracking-wider uppercase",
905
- children: "In every package"
906
- })
907
- ]
908
- })
909
- ]
910
- });
911
- }
912
- function Features() {
913
- return /* @__PURE__ */ jsxs("section", {
914
- className: "relative border-t border-border overflow-hidden",
915
- children: [/* @__PURE__ */ jsxs("div", {
916
- className: "absolute inset-0 pointer-events-none",
917
- children: [/* @__PURE__ */ jsx("div", { className: "absolute top-1/4 -left-1/4 w-1/2 h-1/2 bg-primary/5 rounded-full blur-[120px]" }), /* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 -right-1/4 w-1/2 h-1/2 bg-primary/5 rounded-full blur-[120px]" })]
918
- }), /* @__PURE__ */ jsxs("div", {
919
- className: "relative max-w-7xl mx-auto px-8 py-20 md:py-28",
920
- children: [/* @__PURE__ */ jsxs("div", {
921
- className: "mb-16 md:mb-20",
922
- children: [
923
- /* @__PURE__ */ jsxs("div", {
924
- className: "flex items-center gap-4 mb-6",
925
- children: [/* @__PURE__ */ jsx("div", { className: "h-px w-16 bg-gradient-to-r from-primary to-transparent" }), /* @__PURE__ */ jsx("span", {
926
- className: "text-[11px] text-primary tracking-[0.3em] uppercase font-medium",
927
- children: "Features"
928
- })]
929
- }),
930
- /* @__PURE__ */ jsx("h2", {
931
- className: "text-4xl md:text-5xl lg:text-6xl font-light text-foreground tracking-[-0.04em] mb-6",
932
- children: "Everything You Need"
933
- }),
934
- /* @__PURE__ */ jsxs("p", {
935
- className: "text-lg md:text-xl text-muted-foreground max-w-2xl leading-relaxed",
936
- children: ["A complete foundation for building production-ready SaaS applications.", /* @__PURE__ */ jsx("span", {
937
- className: "text-foreground",
938
- children: " No assembly required."
939
- })]
940
- })
941
- ]
942
- }), /* @__PURE__ */ jsxs("div", {
943
- className: "grid grid-cols-1 md:grid-cols-3 auto-rows-[14rem] gap-4 md:gap-5",
944
- children: [
945
- /* @__PURE__ */ jsx(CardA, {}),
946
- /* @__PURE__ */ jsx(CardB, { className: "md:row-span-2" }),
947
- /* @__PURE__ */ jsx(CardC, { className: "md:row-span-2" }),
948
- /* @__PURE__ */ jsx(CardD, {}),
949
- /* @__PURE__ */ jsx(CardE, {}),
950
- /* @__PURE__ */ jsx(CardF, {})
951
- ]
952
- })]
953
- })]
954
- });
955
- }
956
-
957
- //#endregion
958
- //#region src/client/components/pricing.tsx
959
- const product = {
960
- name: "Kuckit",
961
- price: "249",
962
- description: "Stop debugging. Start launching. Everything you need to escape the vibe coding trap.",
963
- features: [
964
- "Production-ready architecture",
965
- "Auth, payments, dashboards included",
966
- "Code you can actually understand",
967
- "Deploy in hours, not weeks",
968
- "Support when you get stuck"
969
- ]
970
- };
971
- function Pricing() {
972
- return /* @__PURE__ */ jsxs("section", {
973
- id: "pricing",
974
- className: "relative border-t border-border scroll-mt-16",
975
- children: [/* @__PURE__ */ jsxs("div", {
976
- className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
977
- children: [
978
- /* @__PURE__ */ jsxs("div", {
979
- className: "flex items-center gap-4 mb-4",
980
- children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
981
- className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
982
- children: "One-time investment"
983
- })]
984
- }),
985
- /* @__PURE__ */ jsx("h2", {
986
- className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em]",
987
- children: "Skip months of debugging"
988
- }),
989
- /* @__PURE__ */ jsx("p", {
990
- className: "mt-4 text-lg text-muted-foreground max-w-2xl",
991
- children: "Pay once. Ship forever. No subscriptions, no surprises."
992
- })
993
- ]
994
- }), /* @__PURE__ */ jsx("div", {
995
- className: "max-w-7xl mx-auto px-8 py-16",
996
- children: /* @__PURE__ */ jsx("div", {
997
- className: "flex justify-center",
998
- children: /* @__PURE__ */ jsxs(GlareCard, {
999
- className: "flex flex-col p-8 min-h-[520px]",
1000
- children: [
1001
- /* @__PURE__ */ jsxs("div", {
1002
- className: "flex items-start justify-between mb-8",
1003
- children: [/* @__PURE__ */ jsxs("div", {
1004
- className: "space-y-3",
1005
- children: [/* @__PURE__ */ jsx("div", {
1006
- className: "inline-flex items-center justify-center size-12 rounded-sm bg-primary/10 border border-primary/20",
1007
- children: /* @__PURE__ */ jsx(Zap, { className: "size-6 text-primary" })
1008
- }), /* @__PURE__ */ jsx("h3", {
1009
- className: "text-2xl font-normal text-foreground tracking-tight",
1010
- children: product.name
1011
- })]
1012
- }), /* @__PURE__ */ jsx("span", {
1013
- className: "px-3 py-1.5 text-xs uppercase tracking-[0.15em] bg-primary/10 text-primary border border-primary/20",
1014
- children: "Popular"
1015
- })]
1016
- }),
1017
- /* @__PURE__ */ jsxs("div", {
1018
- className: "mb-8",
1019
- children: [/* @__PURE__ */ jsxs("div", {
1020
- className: "flex items-baseline gap-1",
1021
- children: [/* @__PURE__ */ jsx("span", {
1022
- className: "text-sm text-muted-foreground",
1023
- children: "$"
1024
- }), /* @__PURE__ */ jsx("span", {
1025
- className: "text-6xl font-light text-foreground tabular-nums tracking-tighter",
1026
- children: product.price
1027
- })]
1028
- }), /* @__PURE__ */ jsx("p", {
1029
- className: "text-muted-foreground text-sm mt-3 tracking-wide",
1030
- children: "one-time payment"
1031
- })]
1032
- }),
1033
- /* @__PURE__ */ jsx("div", { className: "h-px bg-gradient-to-r from-transparent via-border to-transparent mb-8" }),
1034
- /* @__PURE__ */ jsx("p", {
1035
- className: "text-muted-foreground text-sm leading-relaxed mb-8",
1036
- children: product.description
1037
- }),
1038
- /* @__PURE__ */ jsx("div", {
1039
- className: "space-y-3 mb-10 flex-grow",
1040
- children: product.features.map((feature) => /* @__PURE__ */ jsxs("div", {
1041
- className: "flex items-center gap-3",
1042
- children: [/* @__PURE__ */ jsx("div", {
1043
- className: "w-4 h-4 flex items-center justify-center",
1044
- children: /* @__PURE__ */ jsx(Check, { className: "w-3 h-3 text-primary" })
1045
- }), /* @__PURE__ */ jsx("span", {
1046
- className: "text-sm text-foreground",
1047
- children: feature
1048
- })]
1049
- }, feature))
1050
- }),
1051
- /* @__PURE__ */ jsx("a", {
1052
- href: "/billing",
1053
- className: "w-full py-4 text-sm font-medium tracking-wide transition-all duration-300 flex items-center justify-center gap-2 bg-primary text-primary-foreground hover:bg-primary/90",
1054
- children: "Get Started"
1055
- })
1056
- ]
1057
- })
1058
- })
1059
- })]
1060
- });
1061
- }
1062
-
1063
- //#endregion
1064
- //#region src/client/components/faq.tsx
1065
- const faqItems = [
1066
- {
1067
- id: "seller-1",
1068
- category: "seller",
1069
- question: "Can I develop and sell my own Kuckit modules?",
1070
- answer: "Yes. You can develop complete, production-ready modules extending Kuckit functionality. Set your own pricing and publish them to the Kuckit marketplace."
1071
- },
1072
- {
1073
- id: "seller-2",
1074
- category: "seller",
1075
- question: "What pricing models are available for my module?",
1076
- answer: "You have full control over your pricing strategy. Choose between one-time payments (pay once, own forever) or subscription models (recurring billing). Each module can use a different model."
1077
- },
1078
- {
1079
- id: "seller-3",
1080
- category: "seller",
1081
- question: "How does the partnership program work?",
1082
- answer: "If you want to partner with Kuckit, your module can be integrated into the core platform. As a partner, you receive revenue share benefits whenever Kuckit generates sales, giving you passive income from the platform's growth."
1083
- },
1084
- {
1085
- id: "seller-4",
1086
- category: "seller",
1087
- question: "What are the requirements for marketplace publishing?",
1088
- answer: "Modules must follow Kuckit's Clean Architecture patterns, include proper documentation, and pass quality checks. Review our module development guide for detailed requirements."
1089
- },
1090
- {
1091
- id: "seller-5",
1092
- category: "seller",
1093
- question: "Can I update my module after publishing?",
1094
- answer: "Absolutely. You can release new versions anytime. Existing customers are notified of updates, and you control version management and backwards compatibility."
1095
- },
1096
- {
1097
- id: "general-1",
1098
- category: "general",
1099
- question: "What is Kuckit?",
1100
- answer: "Kuckit is a full-stack, modular platform built on Clean Architecture and Dependency Injection. It provides a professional foundation for building scalable applications with a plugin-based module system."
1101
- },
1102
- {
1103
- id: "general-2",
1104
- category: "general",
1105
- question: "What is the Kuckit business model?",
1106
- answer: "Kuckit provides a foundation platform for building applications. Module creators can publish to the marketplace with flexible pricing (one-time or subscription), and partners can integrate modules into core for revenue sharing benefits."
1107
- },
1108
- {
1109
- id: "general-3",
1110
- category: "general",
1111
- question: "What technology stack does Kuckit use?",
1112
- answer: "Kuckit is built with TypeScript, React (frontend), Express (backend), Drizzle ORM, and features comprehensive tooling. The modular architecture lets you swap implementations as needed."
1113
- }
1114
- ];
1115
- function FAQ() {
1116
- const [expandedId, setExpandedId] = useState(null);
1117
- const sellerFaqs = faqItems.filter((item) => item.category === "seller");
1118
- const generalFaqs = faqItems.filter((item) => item.category === "general");
1119
- return /* @__PURE__ */ jsxs("section", {
1120
- className: "relative border-t border-border",
1121
- children: [/* @__PURE__ */ jsxs("div", {
1122
- className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
1123
- children: [
1124
- /* @__PURE__ */ jsxs("div", {
1125
- className: "flex items-center gap-4 mb-4",
1126
- children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
1127
- className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
1128
- children: "FAQ"
1129
- })]
1130
- }),
1131
- /* @__PURE__ */ jsx("h2", {
1132
- className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
1133
- children: "Frequently Asked Questions"
1134
- }),
1135
- /* @__PURE__ */ jsx("p", {
1136
- className: "text-lg text-muted-foreground max-w-2xl",
1137
- children: "Everything you need to know about developing, selling, and partnering with Kuckit"
1138
- })
1139
- ]
1140
- }), /* @__PURE__ */ jsx("div", {
1141
- className: "max-w-7xl mx-auto",
1142
- children: /* @__PURE__ */ jsxs("div", {
1143
- className: "grid lg:grid-cols-2",
1144
- children: [/* @__PURE__ */ jsxs("div", {
1145
- className: "border-b lg:border-b-0 lg:border-r border-border",
1146
- children: [/* @__PURE__ */ jsx("div", {
1147
- className: "px-8 py-6 border-b border-border bg-card",
1148
- children: /* @__PURE__ */ jsxs("div", {
1149
- className: "flex items-center gap-3",
1150
- children: [/* @__PURE__ */ jsx("span", {
1151
- className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
1152
- children: "01"
1153
- }), /* @__PURE__ */ jsx("span", {
1154
- className: "font-medium text-foreground",
1155
- children: "For Module Sellers"
1156
- })]
1157
- })
1158
- }), /* @__PURE__ */ jsx("div", {
1159
- className: "divide-y divide-border",
1160
- children: sellerFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
1161
- item,
1162
- index,
1163
- isExpanded: expandedId === item.id,
1164
- onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
1165
- }, item.id))
1166
- })]
1167
- }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
1168
- className: "px-8 py-6 border-b border-border bg-card",
1169
- children: /* @__PURE__ */ jsxs("div", {
1170
- className: "flex items-center gap-3",
1171
- children: [/* @__PURE__ */ jsx("span", {
1172
- className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
1173
- children: "02"
1174
- }), /* @__PURE__ */ jsx("span", {
1175
- className: "font-medium text-foreground",
1176
- children: "General"
1177
- })]
1178
- })
1179
- }), /* @__PURE__ */ jsx("div", {
1180
- className: "divide-y divide-border",
1181
- children: generalFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
1182
- item,
1183
- index,
1184
- isExpanded: expandedId === item.id,
1185
- onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
1186
- }, item.id))
1187
- })] })]
1188
- })
1189
- })]
1190
- });
1191
- }
1192
- function FAQItemComponent({ item, index, isExpanded, onToggle }) {
1193
- return /* @__PURE__ */ jsx("button", {
1194
- onClick: onToggle,
1195
- className: "w-full text-left p-6 hover:bg-card/50 transition-colors",
1196
- children: /* @__PURE__ */ jsxs("div", {
1197
- className: "flex items-start gap-4",
1198
- children: [/* @__PURE__ */ jsx("span", {
1199
- className: "text-xs text-muted-foreground font-mono shrink-0 pt-1",
1200
- children: String(index + 1).padStart(2, "0")
1201
- }), /* @__PURE__ */ jsxs("div", {
1202
- className: "flex-1",
1203
- children: [/* @__PURE__ */ jsxs("div", {
1204
- className: "flex items-start justify-between gap-4",
1205
- children: [/* @__PURE__ */ jsx("span", {
1206
- className: "text-foreground font-medium leading-relaxed",
1207
- children: item.question
1208
- }), /* @__PURE__ */ jsx("svg", {
1209
- className: `w-4 h-4 text-muted-foreground shrink-0 mt-1 transition-transform duration-200 ${isExpanded ? "rotate-45" : ""}`,
1210
- fill: "none",
1211
- stroke: "currentColor",
1212
- viewBox: "0 0 24 24",
1213
- children: /* @__PURE__ */ jsx("path", {
1214
- strokeLinecap: "round",
1215
- strokeLinejoin: "round",
1216
- strokeWidth: 2,
1217
- d: "M12 4v16m8-8H4"
1218
- })
1219
- })]
1220
- }), isExpanded && /* @__PURE__ */ jsx("p", {
1221
- className: "text-muted-foreground text-sm leading-relaxed mt-4 pr-8",
1222
- children: item.answer
1223
- })]
1224
- })]
1225
- })
1226
- });
1227
- }
1228
-
1229
- //#endregion
1230
- //#region src/client/components/LandingPage.tsx
1231
- function LandingPage() {
1232
- return /* @__PURE__ */ jsxs("div", {
1233
- className: "min-h-screen bg-background text-foreground overflow-x-hidden",
1234
- children: [
1235
- /* @__PURE__ */ jsx("div", {
1236
- className: "fixed inset-0 pointer-events-none",
1237
- style: {
1238
- backgroundImage: `
1239
- linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
1240
- linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
1241
- `,
1242
- backgroundSize: "60px 60px"
1243
- }
1244
- }),
1245
- /* @__PURE__ */ jsx("div", {
1246
- className: "fixed top-0 right-0 w-[1px] h-[200vh] bg-gradient-to-b from-primary via-primary/50 to-transparent pointer-events-none origin-top-right",
1247
- style: { transform: "rotate(-35deg) translateX(300px)" }
1248
- }),
1249
- /* @__PURE__ */ jsx("div", {
1250
- className: "fixed top-0 right-0 w-[500px] h-[500px] pointer-events-none",
1251
- children: /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-primary/8 blur-[100px] rounded-full -translate-y-1/2 translate-x-1/2" })
1252
- }),
1253
- /* @__PURE__ */ jsxs("div", {
1254
- className: "relative z-10",
1255
- children: [
1256
- /* @__PURE__ */ jsx(Hero, {}),
1257
- /* @__PURE__ */ jsx(Features, {}),
1258
- /* @__PURE__ */ jsx(Pricing, {}),
1259
- /* @__PURE__ */ jsx(FAQ, {})
1260
- ]
1261
- }),
1262
- /* @__PURE__ */ jsx("footer", {
1263
- className: "relative z-10 border-t border-border",
1264
- children: /* @__PURE__ */ jsxs("div", {
1265
- className: "max-w-7xl mx-auto",
1266
- children: [/* @__PURE__ */ jsxs("div", {
1267
- className: "grid grid-cols-1 md:grid-cols-12 border-b border-border",
1268
- children: [/* @__PURE__ */ jsxs("div", {
1269
- className: "md:col-span-4 p-8 md:p-12 border-b md:border-b-0 md:border-r border-border",
1270
- children: [/* @__PURE__ */ jsxs("div", {
1271
- className: "flex items-center gap-4 mb-6",
1272
- children: [/* @__PURE__ */ jsxs("svg", {
1273
- className: "w-10 h-10",
1274
- viewBox: "0 0 512 512",
1275
- fill: "none",
1276
- xmlns: "http://www.w3.org/2000/svg",
1277
- children: [
1278
- /* @__PURE__ */ jsx("polygon", {
1279
- points: "256,64 384,144 384,304 256,224",
1280
- fill: "#3D3A39"
1281
- }),
1282
- /* @__PURE__ */ jsx("polygon", {
1283
- points: "256,64 128,144 128,304 256,224",
1284
- fill: "#5C5855"
1285
- }),
1286
- /* @__PURE__ */ jsx("polygon", {
1287
- points: "128,144 256,224 384,144 256,64",
1288
- fill: "#A49D9A"
1289
- }),
1290
- /* @__PURE__ */ jsx("polygon", {
1291
- points: "256,224 352,280 352,392 256,336",
1292
- fill: "#D15010"
1293
- }),
1294
- /* @__PURE__ */ jsx("polygon", {
1295
- points: "256,224 160,280 160,392 256,336",
1296
- fill: "#EE6018"
1297
- }),
1298
- /* @__PURE__ */ jsx("polygon", {
1299
- points: "160,280 256,336 352,280 256,224",
1300
- fill: "#EF6F2E"
1301
- })
1302
- ]
1303
- }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
1304
- className: "text-foreground font-medium tracking-tight",
1305
- children: "Kuckit"
1306
- }), /* @__PURE__ */ jsx("div", {
1307
- className: "text-muted-foreground text-xs tracking-[0.15em] uppercase",
1308
- children: "Framework"
1309
- })] })]
1310
- }), /* @__PURE__ */ jsx("p", {
1311
- className: "text-muted-foreground text-sm leading-relaxed max-w-xs",
1312
- children: "The TypeScript module ecosystem where developers build once and sell forever."
1313
- })]
1314
- }), /* @__PURE__ */ jsxs("div", {
1315
- className: "md:col-span-8 grid grid-cols-3",
1316
- children: [
1317
- /* @__PURE__ */ jsxs("div", {
1318
- className: "p-8 border-r border-border",
1319
- children: [/* @__PURE__ */ jsx("div", {
1320
- className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
1321
- children: "Resources"
1322
- }), /* @__PURE__ */ jsxs("div", {
1323
- className: "space-y-4",
1324
- children: [
1325
- /* @__PURE__ */ jsx("a", {
1326
- href: "/docs",
1327
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1328
- children: "Documentation"
1329
- }),
1330
- /* @__PURE__ */ jsx("a", {
1331
- href: "/docs/getting-started",
1332
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1333
- children: "Quick Start"
1334
- }),
1335
- /* @__PURE__ */ jsx("a", {
1336
- href: "/docs/api",
1337
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1338
- children: "API Reference"
1339
- })
1340
- ]
1341
- })]
1342
- }),
1343
- /* @__PURE__ */ jsxs("div", {
1344
- className: "p-8 border-r border-border",
1345
- children: [/* @__PURE__ */ jsx("div", {
1346
- className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
1347
- children: "Community"
1348
- }), /* @__PURE__ */ jsxs("div", {
1349
- className: "space-y-4",
1350
- children: [/* @__PURE__ */ jsx("a", {
1351
- href: "/discord",
1352
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1353
- children: "Discord"
1354
- }), /* @__PURE__ */ jsx("a", {
1355
- href: "https://twitter.com/kuckit",
1356
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1357
- children: "Twitter"
1358
- })]
1359
- })]
1360
- }),
1361
- /* @__PURE__ */ jsxs("div", {
1362
- className: "p-8",
1363
- children: [/* @__PURE__ */ jsx("div", {
1364
- className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
1365
- children: "Legal"
1366
- }), /* @__PURE__ */ jsxs("div", {
1367
- className: "space-y-4",
1368
- children: [
1369
- /* @__PURE__ */ jsx("a", {
1370
- href: "/privacy",
1371
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1372
- children: "Privacy"
1373
- }),
1374
- /* @__PURE__ */ jsx("a", {
1375
- href: "/terms",
1376
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1377
- children: "Terms"
1378
- }),
1379
- /* @__PURE__ */ jsx("a", {
1380
- href: "/license",
1381
- className: "block text-foreground hover:text-primary transition-colors text-sm",
1382
- children: "License"
1383
- })
1384
- ]
1385
- })]
1386
- })
1387
- ]
1388
- })]
1389
- }), /* @__PURE__ */ jsxs("div", {
1390
- className: "flex flex-col md:flex-row items-center justify-between gap-4 px-8 md:px-12 py-6",
1391
- children: [/* @__PURE__ */ jsxs("div", {
1392
- className: "flex items-center gap-6 text-xs text-muted-foreground",
1393
- children: [
1394
- /* @__PURE__ */ jsxs("span", { children: [
1395
- "© ",
1396
- (/* @__PURE__ */ new Date()).getFullYear(),
1397
- " Kuckit"
1398
- ] }),
1399
- /* @__PURE__ */ jsx("span", {
1400
- className: "hidden md:inline text-border",
1401
- children: "|"
1402
- }),
1403
- /* @__PURE__ */ jsx("span", {
1404
- className: "hidden md:inline",
1405
- children: "MIT License"
1406
- })
1407
- ]
1408
- }), /* @__PURE__ */ jsxs("div", {
1409
- className: "flex items-center gap-3",
1410
- children: [/* @__PURE__ */ jsxs("div", {
1411
- className: "flex items-center gap-2 px-3 py-1.5 bg-muted border border-border",
1412
- children: [/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[hsl(var(--status-success))] animate-pulse" }), /* @__PURE__ */ jsx("span", {
1413
- className: "text-xs text-muted-foreground tracking-wide",
1414
- children: "All systems operational"
1415
- })]
1416
- }), /* @__PURE__ */ jsx("div", {
1417
- className: "text-xs text-muted-foreground font-mono",
1418
- children: "v1.0.0"
1419
- })]
1420
- })]
1421
- })]
1422
- })
1423
- })
1424
- ]
1425
- });
1426
- }
1427
-
1428
- //#endregion
1429
- //#region src/client/components/ModulesPage.tsx
1430
- const modules = [
1431
- {
1432
- name: "Payments",
1433
- slug: "payments",
1434
- package: "@kuckit/polar-payments-module",
1435
- desc: "Accept payments in minutes. Subscriptions, one-time purchases, customer portal.",
1436
- status: "stable",
1437
- features: [
1438
- "Stripe integration",
1439
- "Polar integration",
1440
- "Subscription management",
1441
- "Customer portal"
1442
- ]
1443
- },
1444
- {
1445
- name: "User Accounts",
1446
- slug: "users",
1447
- package: "@kuckit/users-module",
1448
- desc: "User registration, profiles, and account management ready to go.",
1449
- status: "stable",
1450
- features: [
1451
- "OAuth providers",
1452
- "Profile management",
1453
- "Settings UI",
1454
- "Account deletion"
1455
- ]
1456
- },
1457
- {
1458
- name: "Documentation",
1459
- slug: "docs",
1460
- package: "@kuckit/docs-module",
1461
- desc: "Beautiful docs for your users. Write in plain text, get a polished help center.",
1462
- status: "stable",
1463
- features: [
1464
- "MDX support",
1465
- "Search built-in",
1466
- "Auto-navigation",
1467
- "Code highlighting"
1468
- ]
1469
- },
1470
- {
1471
- name: "AI Chat",
1472
- slug: "ai",
1473
- package: "@kuckit/ai-module",
1474
- desc: "Add AI chat to your app. Streaming responses, conversation history included.",
1475
- status: "stable",
1476
- features: [
1477
- "OpenAI integration",
1478
- "Streaming responses",
1479
- "Chat history",
1480
- "Context management"
1481
- ]
1482
- },
1483
- {
1484
- name: "CLI Login",
1485
- slug: "cli-auth",
1486
- package: "@kuckit/cli-auth-module",
1487
- desc: "Let users log in from command line tools with a simple device code.",
1488
- status: "stable",
1489
- features: [
1490
- "Device code flow",
1491
- "Token management",
1492
- "CLI SDK",
1493
- "Secure auth"
1494
- ]
1495
- },
1496
- {
1497
- name: "More Coming",
1498
- slug: "coming-soon",
1499
- package: "Email, storage, analytics",
1500
- desc: "We're building more modules every week. Tell us what you need.",
1501
- status: "soon",
1502
- features: [
1503
- "Email service",
1504
- "File storage",
1505
- "Analytics",
1506
- "And more..."
1507
- ]
1508
- }
1509
- ];
1510
- function ModulesPage() {
1511
- return /* @__PURE__ */ jsxs("div", {
1512
- className: "min-h-screen bg-background text-foreground",
1513
- children: [
1514
- /* @__PURE__ */ jsx("div", {
1515
- className: "fixed inset-0 pointer-events-none",
1516
- style: {
1517
- backgroundImage: `
1518
- linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
1519
- linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
1520
- `,
1521
- backgroundSize: "60px 60px"
1522
- }
1523
- }),
1524
- /* @__PURE__ */ jsx("nav", {
1525
- className: "relative z-20 border-b border-border",
1526
- children: /* @__PURE__ */ jsxs("div", {
1527
- className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
1528
- children: [
1529
- /* @__PURE__ */ jsxs("a", {
1530
- href: "/",
1531
- className: "flex items-center gap-3",
1532
- children: [/* @__PURE__ */ jsxs("svg", {
1533
- className: "w-8 h-8",
1534
- viewBox: "0 0 512 512",
1535
- fill: "none",
1536
- xmlns: "http://www.w3.org/2000/svg",
1537
- children: [
1538
- /* @__PURE__ */ jsx("polygon", {
1539
- points: "256,64 384,144 384,304 256,224",
1540
- fill: "#3D3A39"
1541
- }),
1542
- /* @__PURE__ */ jsx("polygon", {
1543
- points: "256,64 128,144 128,304 256,224",
1544
- fill: "#5C5855"
1545
- }),
1546
- /* @__PURE__ */ jsx("polygon", {
1547
- points: "128,144 256,224 384,144 256,64",
1548
- fill: "#A49D9A"
1549
- }),
1550
- /* @__PURE__ */ jsx("polygon", {
1551
- points: "256,224 352,280 352,392 256,336",
1552
- fill: "#D15010"
1553
- }),
1554
- /* @__PURE__ */ jsx("polygon", {
1555
- points: "256,224 160,280 160,392 256,336",
1556
- fill: "#EE6018"
1557
- }),
1558
- /* @__PURE__ */ jsx("polygon", {
1559
- points: "160,280 256,336 352,280 256,224",
1560
- fill: "#EF6F2E"
1561
- })
1562
- ]
1563
- }), /* @__PURE__ */ jsx("span", {
1564
- className: "text-foreground font-medium tracking-tight",
1565
- children: "Kuckit"
1566
- })]
1567
- }),
1568
- /* @__PURE__ */ jsxs("div", {
1569
- className: "hidden md:flex items-center gap-8",
1570
- children: [
1571
- /* @__PURE__ */ jsx("a", {
1572
- href: "/docs",
1573
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
1574
- children: "Docs"
1575
- }),
1576
- /* @__PURE__ */ jsx("a", {
1577
- href: "/modules",
1578
- className: "text-sm text-foreground font-medium",
1579
- children: "Modules"
1580
- }),
1581
- /* @__PURE__ */ jsx("a", {
1582
- href: "/#pricing",
1583
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
1584
- children: "Pricing"
1585
- })
1586
- ]
1587
- }),
1588
- /* @__PURE__ */ jsxs("div", {
1589
- className: "flex items-center gap-3",
1590
- children: [/* @__PURE__ */ jsx("a", {
1591
- href: "/login",
1592
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
1593
- children: "Sign in"
1594
- }), /* @__PURE__ */ jsx("a", {
1595
- href: "/docs/getting-started",
1596
- className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
1597
- children: "Get Started"
1598
- })]
1599
- })
1600
- ]
1601
- })
1602
- }),
1603
- /* @__PURE__ */ jsx("div", {
1604
- className: "relative z-10 border-b border-border",
1605
- children: /* @__PURE__ */ jsxs("div", {
1606
- className: "max-w-7xl mx-auto px-8 py-20",
1607
- children: [
1608
- /* @__PURE__ */ jsxs("div", {
1609
- className: "flex items-center gap-4 mb-6",
1610
- children: [
1611
- /* @__PURE__ */ jsx("a", {
1612
- href: "/",
1613
- className: "text-xs text-muted-foreground hover:text-foreground transition-colors",
1614
- children: "Home"
1615
- }),
1616
- /* @__PURE__ */ jsx("span", {
1617
- className: "text-muted-foreground",
1618
- children: "/"
1619
- }),
1620
- /* @__PURE__ */ jsx("span", {
1621
- className: "text-xs text-primary tracking-[0.15em] uppercase",
1622
- children: "Modules"
1623
- })
1624
- ]
1625
- }),
1626
- /* @__PURE__ */ jsx("h1", {
1627
- className: "text-5xl md:text-6xl font-light text-foreground tracking-[-0.03em] mb-6",
1628
- children: "Module Ecosystem"
1629
- }),
1630
- /* @__PURE__ */ jsx("p", {
1631
- className: "text-xl text-muted-foreground max-w-2xl",
1632
- children: "Production-ready modules that integrate seamlessly. Skip weeks of development and focus on what makes your product unique."
1633
- })
1634
- ]
1635
- })
1636
- }),
1637
- /* @__PURE__ */ jsxs("div", {
1638
- className: "relative z-10 max-w-7xl mx-auto",
1639
- children: [/* @__PURE__ */ jsx("div", {
1640
- className: "grid lg:grid-cols-2",
1641
- children: modules.map((mod, index) => /* @__PURE__ */ jsxs("div", {
1642
- className: `group relative p-10 transition-colors hover:bg-card border-b border-border ${index % 2 === 0 ? "lg:border-r" : ""}`,
1643
- children: [
1644
- /* @__PURE__ */ jsx("div", {
1645
- className: "absolute top-8 right-8",
1646
- children: /* @__PURE__ */ jsx("span", {
1647
- className: `px-3 py-1.5 text-[10px] tracking-[0.15em] uppercase ${mod.status === "stable" ? "bg-[hsl(var(--status-success)/0.1)] text-[hsl(var(--status-success))] border border-[hsl(var(--status-success)/0.2)]" : mod.status === "beta" ? "bg-primary/10 text-primary border border-primary/20" : "bg-muted text-muted-foreground border border-border"}`,
1648
- children: mod.status
1649
- })
1650
- }),
1651
- /* @__PURE__ */ jsxs("div", {
1652
- className: "pr-24",
1653
- children: [
1654
- /* @__PURE__ */ jsx("span", {
1655
- className: "text-sm text-primary font-mono block mb-3",
1656
- children: mod.package
1657
- }),
1658
- /* @__PURE__ */ jsx("h2", {
1659
- className: "text-2xl font-medium text-foreground mb-3 tracking-tight group-hover:text-primary transition-colors",
1660
- children: mod.name
1661
- }),
1662
- /* @__PURE__ */ jsx("p", {
1663
- className: "text-muted-foreground mb-6",
1664
- children: mod.desc
1665
- }),
1666
- /* @__PURE__ */ jsx("div", {
1667
- className: "flex flex-wrap gap-2",
1668
- children: mod.features.map((feature) => /* @__PURE__ */ jsx("span", {
1669
- className: "px-3 py-1 text-xs text-muted-foreground bg-muted border border-border",
1670
- children: feature
1671
- }, feature))
1672
- })
1673
- ]
1674
- }),
1675
- mod.status !== "soon" && /* @__PURE__ */ jsx("a", {
1676
- href: `/docs/modules/${mod.slug}`,
1677
- className: "absolute bottom-8 right-8 opacity-0 group-hover:opacity-100 transition-opacity",
1678
- children: /* @__PURE__ */ jsx("svg", {
1679
- className: "w-6 h-6 text-primary",
1680
- fill: "none",
1681
- stroke: "currentColor",
1682
- viewBox: "0 0 24 24",
1683
- children: /* @__PURE__ */ jsx("path", {
1684
- strokeLinecap: "round",
1685
- strokeLinejoin: "round",
1686
- strokeWidth: 1.5,
1687
- d: "M17 8l4 4m0 0l-4 4m4-4H3"
1688
- })
1689
- })
1690
- })
1691
- ]
1692
- }, mod.slug))
1693
- }), /* @__PURE__ */ jsx("div", {
1694
- className: "border-t border-border",
1695
- children: /* @__PURE__ */ jsxs("div", {
1696
- className: "px-8 py-12 flex flex-col md:flex-row md:items-center justify-between gap-6",
1697
- children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
1698
- className: "text-xl font-medium text-foreground mb-2",
1699
- children: "Need a custom module?"
1700
- }), /* @__PURE__ */ jsx("p", {
1701
- className: "text-muted-foreground",
1702
- children: "We can help you build it, or tell us what you need and we'll add it to our roadmap."
1703
- })] }), /* @__PURE__ */ jsxs("div", {
1704
- className: "flex gap-4",
1705
- children: [/* @__PURE__ */ jsxs("a", {
1706
- href: "/docs/module-development",
1707
- className: "group inline-flex items-center gap-3 px-6 py-3 border border-border text-foreground hover:border-primary/50 hover:bg-card transition-all",
1708
- children: [/* @__PURE__ */ jsx("span", { children: "Build Your Own" }), /* @__PURE__ */ jsx("svg", {
1709
- className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
1710
- fill: "none",
1711
- stroke: "currentColor",
1712
- viewBox: "0 0 24 24",
1713
- children: /* @__PURE__ */ jsx("path", {
1714
- strokeLinecap: "round",
1715
- strokeLinejoin: "round",
1716
- strokeWidth: 2,
1717
- d: "M17 8l4 4m0 0l-4 4m4-4H3"
1718
- })
1719
- })]
1720
- }), /* @__PURE__ */ jsx("a", {
1721
- href: "/discord",
1722
- className: "group inline-flex items-center gap-3 px-6 py-3 bg-primary text-primary-foreground hover:bg-primary/90 transition-all",
1723
- children: /* @__PURE__ */ jsx("span", { children: "Request Module" })
1724
- })]
1725
- })]
1726
- })
1727
- })]
1728
- }),
1729
- /* @__PURE__ */ jsx("footer", {
1730
- className: "relative z-10 border-t border-border mt-20",
1731
- children: /* @__PURE__ */ jsxs("div", {
1732
- className: "max-w-7xl mx-auto px-8 py-8 flex items-center justify-between",
1733
- children: [/* @__PURE__ */ jsxs("span", {
1734
- className: "text-sm text-muted-foreground",
1735
- children: [
1736
- "© ",
1737
- (/* @__PURE__ */ new Date()).getFullYear(),
1738
- " Kuckit"
1739
- ]
1740
- }), /* @__PURE__ */ jsx("a", {
1741
- href: "/",
1742
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
1743
- children: "← Back to Home"
1744
- })]
1745
- })
1746
- })
1747
- ]
1748
- });
1749
- }
1750
-
1751
- //#endregion
1752
5
  //#region src/client/index.ts
1753
6
  const kuckitClientModule = defineKuckitClientModule({
1754
7
  id: "kuckit.landing",
@@ -1779,5 +32,4 @@ const kuckitClientModule = defineKuckitClientModule({
1779
32
  });
1780
33
 
1781
34
  //#endregion
1782
- export { LandingPage, ModulesPage, kuckitClientModule };
1783
- //# sourceMappingURL=index.js.map
35
+ export { LandingPage, ModulesPage, kuckitClientModule };