@kuckit/landing-module 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +1453 -1102
- package/dist/client/index.js.map +1 -1
- package/package.json +6 -5
package/dist/client/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defineKuckitClientModule
|
|
1
|
+
import { defineKuckitClientModule } from "@kuckit/sdk-react";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { GlareCard } from "@kuckit/polar-payments-module/client";
|
|
5
|
+
import { Check, Zap } from "lucide-react";
|
|
6
6
|
|
|
7
7
|
//#region src/client/components/hero.tsx
|
|
8
8
|
function Hero() {
|
|
@@ -13,533 +13,644 @@ function Hero() {
|
|
|
13
13
|
setTimeout(() => setCopied(false), 2e3);
|
|
14
14
|
};
|
|
15
15
|
return /* @__PURE__ */ jsxs("section", {
|
|
16
|
-
className: "relative min-h-
|
|
16
|
+
className: "relative min-h-screen",
|
|
17
17
|
children: [
|
|
18
|
-
/* @__PURE__ */
|
|
19
|
-
className: "
|
|
20
|
-
children:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
18
|
+
/* @__PURE__ */ jsx("nav", {
|
|
19
|
+
className: "relative z-20 border-b border-border",
|
|
20
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
21
|
+
className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", {
|
|
24
|
+
className: "flex items-center gap-3",
|
|
25
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
26
|
+
className: "w-8 h-8",
|
|
27
|
+
viewBox: "0 0 512 512",
|
|
28
|
+
fill: "none",
|
|
29
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
32
|
+
points: "256,64 384,144 384,304 256,224",
|
|
33
|
+
fill: "#3D3A39"
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
36
|
+
points: "256,64 128,144 128,304 256,224",
|
|
37
|
+
fill: "#5C5855"
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
40
|
+
points: "128,144 256,224 384,144 256,64",
|
|
41
|
+
fill: "#A49D9A"
|
|
42
|
+
}),
|
|
43
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
44
|
+
points: "256,224 352,280 352,392 256,336",
|
|
45
|
+
fill: "#D15010"
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
48
|
+
points: "256,224 160,280 160,392 256,336",
|
|
49
|
+
fill: "#EE6018"
|
|
50
|
+
}),
|
|
51
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
52
|
+
points: "160,280 256,336 352,280 256,224",
|
|
53
|
+
fill: "#EF6F2E"
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
57
|
+
className: "text-foreground font-medium tracking-tight",
|
|
58
|
+
children: "Kuckit"
|
|
59
|
+
})]
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ jsxs("div", {
|
|
62
|
+
className: "hidden md:flex items-center gap-8",
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ jsx("a", {
|
|
65
|
+
href: "/docs",
|
|
66
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
67
|
+
children: "Docs"
|
|
68
|
+
}),
|
|
69
|
+
/* @__PURE__ */ jsx("a", {
|
|
70
|
+
href: "#modules",
|
|
71
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
72
|
+
children: "Modules"
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ jsx("a", {
|
|
75
|
+
href: "#pricing",
|
|
76
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
77
|
+
children: "Pricing"
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ jsxs("div", {
|
|
82
|
+
className: "flex items-center gap-3",
|
|
83
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
84
|
+
href: "/login",
|
|
85
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
|
|
86
|
+
children: "Sign in"
|
|
87
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
88
|
+
href: "/docs/getting-started",
|
|
89
|
+
className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
|
|
90
|
+
children: "Get Started"
|
|
91
|
+
})]
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
})
|
|
48
95
|
}),
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
className: "relative z-10 max-w-
|
|
51
|
-
children:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}),
|
|
56
|
-
/* @__PURE__ */ jsxs("h1", {
|
|
57
|
-
className: "text-5xl md:text-7xl font-bold tracking-tight mb-6",
|
|
96
|
+
/* @__PURE__ */ jsx("div", {
|
|
97
|
+
className: "relative z-10 max-w-7xl mx-auto px-8 pt-24 pb-32",
|
|
98
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
99
|
+
className: "grid lg:grid-cols-12 gap-16 items-start",
|
|
100
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
101
|
+
className: "lg:col-span-7",
|
|
58
102
|
children: [
|
|
59
|
-
/* @__PURE__ */
|
|
60
|
-
className: "
|
|
61
|
-
children: "
|
|
103
|
+
/* @__PURE__ */ jsxs("div", {
|
|
104
|
+
className: "flex items-center gap-4 mb-8",
|
|
105
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
106
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
107
|
+
children: "Vibe coding ain't fun when you're stuck"
|
|
108
|
+
})]
|
|
62
109
|
}),
|
|
63
|
-
/* @__PURE__ */
|
|
64
|
-
className: "
|
|
65
|
-
children: "
|
|
110
|
+
/* @__PURE__ */ jsxs("h1", {
|
|
111
|
+
className: "mb-8",
|
|
112
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
113
|
+
className: "block text-4xl md:text-5xl lg:text-6xl font-light text-foreground tracking-[-0.03em] leading-[1.1]",
|
|
114
|
+
children: "You don't need more prompts."
|
|
115
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
116
|
+
className: "block text-4xl md:text-5xl lg:text-6xl font-light text-primary tracking-[-0.03em] leading-[1.1] mt-2",
|
|
117
|
+
children: "You need a foundation."
|
|
118
|
+
})]
|
|
66
119
|
}),
|
|
67
|
-
/* @__PURE__ */ jsx("
|
|
68
|
-
className: "
|
|
69
|
-
children: "Ship
|
|
70
|
-
})
|
|
71
|
-
]
|
|
72
|
-
}),
|
|
73
|
-
/* @__PURE__ */ jsx("p", {
|
|
74
|
-
className: "text-xl md:text-2xl text-white/60 max-w-2xl mx-auto mb-12 leading-relaxed",
|
|
75
|
-
children: "The TypeScript ecosystem where developers build once and sell forever, while builders ship in hours instead of months."
|
|
76
|
-
}),
|
|
77
|
-
/* @__PURE__ */ jsxs("div", {
|
|
78
|
-
className: "flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",
|
|
79
|
-
children: [/* @__PURE__ */ jsxs("button", {
|
|
80
|
-
className: "group relative px-8 py-4 bg-gradient-to-r from-emerald-500 to-teal-500 rounded-xl font-semibold text-black transition-all hover:scale-105 hover:shadow-lg hover:shadow-emerald-500/25",
|
|
81
|
-
children: ["Get Started", /* @__PURE__ */ jsx("span", { className: "absolute inset-0 rounded-xl bg-gradient-to-r from-emerald-400 to-teal-400 opacity-0 group-hover:opacity-100 transition-opacity blur-xl -z-10" })]
|
|
82
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
83
|
-
className: "px-8 py-4 rounded-xl font-semibold text-white border border-white/20 bg-white/5 backdrop-blur-sm hover:bg-white/10 hover:border-white/30 transition-all",
|
|
84
|
-
children: "Join Marketplace Waitlist"
|
|
85
|
-
})]
|
|
86
|
-
}),
|
|
87
|
-
/* @__PURE__ */ jsxs("div", {
|
|
88
|
-
onClick: copyCommand,
|
|
89
|
-
className: "inline-flex items-center gap-3 px-5 py-3 rounded-xl bg-black/50 border border-white/10 cursor-pointer hover:border-emerald-500/50 transition-colors group",
|
|
90
|
-
children: [
|
|
91
|
-
/* @__PURE__ */ jsx("span", {
|
|
92
|
-
className: "text-emerald-400 font-mono",
|
|
93
|
-
children: "$"
|
|
94
|
-
}),
|
|
95
|
-
/* @__PURE__ */ jsx("code", {
|
|
96
|
-
className: "text-white/80 font-mono text-sm",
|
|
97
|
-
children: "bunx create-kuckit-app my-app"
|
|
120
|
+
/* @__PURE__ */ jsx("p", {
|
|
121
|
+
className: "text-lg md:text-xl text-muted-foreground max-w-xl leading-relaxed mb-12",
|
|
122
|
+
children: "Vibe coding builds fast. We build right. Ship in hours."
|
|
98
123
|
}),
|
|
99
|
-
/* @__PURE__ */ jsx("
|
|
100
|
-
className: "
|
|
101
|
-
children:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
viewBox: "0 0 24 24",
|
|
117
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
118
|
-
strokeLinecap: "round",
|
|
119
|
-
strokeLinejoin: "round",
|
|
120
|
-
strokeWidth: 2,
|
|
121
|
-
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"
|
|
122
|
-
})
|
|
124
|
+
/* @__PURE__ */ jsx("div", {
|
|
125
|
+
className: "flex flex-col sm:flex-row items-start gap-4 mb-16",
|
|
126
|
+
children: /* @__PURE__ */ jsxs("a", {
|
|
127
|
+
href: "/docs/getting-started",
|
|
128
|
+
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",
|
|
129
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Get Unstuck" }), /* @__PURE__ */ jsx("svg", {
|
|
130
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
131
|
+
fill: "none",
|
|
132
|
+
stroke: "currentColor",
|
|
133
|
+
viewBox: "0 0 24 24",
|
|
134
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
135
|
+
strokeLinecap: "round",
|
|
136
|
+
strokeLinejoin: "round",
|
|
137
|
+
strokeWidth: 2,
|
|
138
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
139
|
+
})
|
|
140
|
+
})]
|
|
123
141
|
})
|
|
142
|
+
}),
|
|
143
|
+
/* @__PURE__ */ jsxs("div", {
|
|
144
|
+
className: "inline-block",
|
|
145
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
146
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase mb-3",
|
|
147
|
+
children: "Quick Start"
|
|
148
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
149
|
+
onClick: copyCommand,
|
|
150
|
+
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",
|
|
151
|
+
children: [
|
|
152
|
+
/* @__PURE__ */ jsx("span", {
|
|
153
|
+
className: "text-primary",
|
|
154
|
+
children: "$"
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ jsx("code", {
|
|
157
|
+
className: "text-foreground",
|
|
158
|
+
children: "bunx create-kuckit-app my-app"
|
|
159
|
+
}),
|
|
160
|
+
/* @__PURE__ */ jsx("span", {
|
|
161
|
+
className: "text-muted-foreground group-hover:text-primary transition-colors ml-4",
|
|
162
|
+
children: copied ? /* @__PURE__ */ jsx("svg", {
|
|
163
|
+
className: "w-4 h-4",
|
|
164
|
+
fill: "none",
|
|
165
|
+
stroke: "currentColor",
|
|
166
|
+
viewBox: "0 0 24 24",
|
|
167
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
168
|
+
strokeLinecap: "round",
|
|
169
|
+
strokeLinejoin: "round",
|
|
170
|
+
strokeWidth: 2,
|
|
171
|
+
d: "M5 13l4 4L19 7"
|
|
172
|
+
})
|
|
173
|
+
}) : /* @__PURE__ */ jsx("svg", {
|
|
174
|
+
className: "w-4 h-4",
|
|
175
|
+
fill: "none",
|
|
176
|
+
stroke: "currentColor",
|
|
177
|
+
viewBox: "0 0 24 24",
|
|
178
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
179
|
+
strokeLinecap: "round",
|
|
180
|
+
strokeLinejoin: "round",
|
|
181
|
+
strokeWidth: 2,
|
|
182
|
+
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"
|
|
183
|
+
})
|
|
184
|
+
})
|
|
185
|
+
})
|
|
186
|
+
]
|
|
187
|
+
})]
|
|
124
188
|
})
|
|
125
189
|
]
|
|
126
|
-
})
|
|
127
|
-
|
|
190
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
191
|
+
className: "lg:col-span-5 relative",
|
|
192
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
193
|
+
className: "sticky top-24",
|
|
194
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
195
|
+
className: "relative",
|
|
196
|
+
children: [
|
|
197
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-3 -left-3 w-6 h-6 border-l-2 border-t-2 border-primary/50" }),
|
|
198
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-3 -right-3 w-6 h-6 border-r-2 border-t-2 border-primary/50" }),
|
|
199
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-3 -left-3 w-6 h-6 border-l-2 border-b-2 border-primary/50" }),
|
|
200
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-3 -right-3 w-6 h-6 border-r-2 border-b-2 border-primary/50" }),
|
|
201
|
+
/* @__PURE__ */ jsxs("div", {
|
|
202
|
+
className: "border border-border bg-card/50 backdrop-blur-sm p-8",
|
|
203
|
+
children: [
|
|
204
|
+
/* @__PURE__ */ jsxs("div", {
|
|
205
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6 flex items-center gap-3",
|
|
206
|
+
children: [/* @__PURE__ */ jsx("span", { className: "w-2 h-2 bg-primary" }), "Available Modules"]
|
|
207
|
+
}),
|
|
208
|
+
/* @__PURE__ */ jsx("div", {
|
|
209
|
+
className: "grid grid-cols-2 gap-3",
|
|
210
|
+
children: [
|
|
211
|
+
{
|
|
212
|
+
name: "Payments",
|
|
213
|
+
status: "stable",
|
|
214
|
+
desc: "Subscriptions & checkout"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: "Users",
|
|
218
|
+
status: "stable",
|
|
219
|
+
desc: "Accounts & profiles"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: "Docs",
|
|
223
|
+
status: "stable",
|
|
224
|
+
desc: "Beautiful documentation"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: "AI Chat",
|
|
228
|
+
status: "stable",
|
|
229
|
+
desc: "LLM integration"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
name: "CLI Auth",
|
|
233
|
+
status: "stable",
|
|
234
|
+
desc: "Device login flow"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: "More...",
|
|
238
|
+
status: "soon",
|
|
239
|
+
desc: "Coming soon"
|
|
240
|
+
}
|
|
241
|
+
].map((mod) => /* @__PURE__ */ jsxs("div", {
|
|
242
|
+
className: "group p-4 border border-border hover:border-primary/50 bg-background hover:bg-card transition-all cursor-pointer",
|
|
243
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
244
|
+
className: "flex items-start justify-between mb-2",
|
|
245
|
+
children: [/* @__PURE__ */ jsx("code", {
|
|
246
|
+
className: "text-foreground text-sm font-medium",
|
|
247
|
+
children: mod.name
|
|
248
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
249
|
+
className: `text-[10px] tracking-wider uppercase px-1.5 py-0.5 ${mod.status === "new" ? "bg-primary/20 text-primary" : mod.status === "beta" ? "bg-muted text-muted-foreground" : "bg-[hsl(var(--status-success)/0.15)] text-[hsl(var(--status-success))]"}`,
|
|
250
|
+
children: mod.status
|
|
251
|
+
})]
|
|
252
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
253
|
+
className: "text-xs text-muted-foreground",
|
|
254
|
+
children: mod.desc
|
|
255
|
+
})]
|
|
256
|
+
}, mod.name))
|
|
257
|
+
}),
|
|
258
|
+
/* @__PURE__ */ jsxs("div", {
|
|
259
|
+
className: "mt-6 pt-6 border-t border-border flex items-center justify-between",
|
|
260
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
261
|
+
className: "text-xs text-muted-foreground",
|
|
262
|
+
children: "5 modules ready to use"
|
|
263
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
264
|
+
href: "/docs",
|
|
265
|
+
className: "text-xs text-primary hover:underline",
|
|
266
|
+
children: "View all →"
|
|
267
|
+
})]
|
|
268
|
+
})
|
|
269
|
+
]
|
|
270
|
+
})
|
|
271
|
+
]
|
|
272
|
+
})
|
|
273
|
+
})
|
|
274
|
+
})]
|
|
275
|
+
})
|
|
128
276
|
}),
|
|
129
277
|
/* @__PURE__ */ jsx("div", {
|
|
130
|
-
className: "
|
|
131
|
-
children: /* @__PURE__ */ jsx("
|
|
132
|
-
className: "w-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
278
|
+
className: "relative z-10 border-t border-border",
|
|
279
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
280
|
+
className: "max-w-7xl mx-auto",
|
|
281
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
282
|
+
className: "grid grid-cols-2 md:grid-cols-4",
|
|
283
|
+
children: [
|
|
284
|
+
{
|
|
285
|
+
value: "100%",
|
|
286
|
+
label: "TypeScript"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
value: "<5min",
|
|
290
|
+
label: "To first module"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
value: "50+",
|
|
294
|
+
label: "Components included"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
value: "MIT",
|
|
298
|
+
label: "Licensed"
|
|
299
|
+
}
|
|
300
|
+
].map((stat, i) => /* @__PURE__ */ jsxs("div", {
|
|
301
|
+
className: `p-8 ${i < 3 ? "border-r border-border" : ""} ${i < 2 ? "border-b md:border-b-0 border-border" : ""}`,
|
|
302
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
303
|
+
className: "text-3xl md:text-4xl font-light text-foreground tracking-tight mb-1",
|
|
304
|
+
children: stat.value
|
|
305
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
306
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
|
|
307
|
+
children: stat.label
|
|
308
|
+
})]
|
|
309
|
+
}, stat.label))
|
|
141
310
|
})
|
|
142
311
|
})
|
|
143
|
-
}),
|
|
144
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
145
|
-
@keyframes float {
|
|
146
|
-
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
|
147
|
-
50% { transform: translateY(-20px) rotate(3deg); }
|
|
148
|
-
}
|
|
149
|
-
@keyframes float-delayed {
|
|
150
|
-
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
|
151
|
-
50% { transform: translateY(-15px) rotate(-2deg); }
|
|
152
|
-
}
|
|
153
|
-
@keyframes float-slow {
|
|
154
|
-
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
|
155
|
-
50% { transform: translateY(-10px) rotate(1deg); }
|
|
156
|
-
}
|
|
157
|
-
.animate-float { animation: float 6s ease-in-out infinite; }
|
|
158
|
-
.animate-float-delayed { animation: float-delayed 7s ease-in-out infinite; animation-delay: 1s; }
|
|
159
|
-
.animate-float-slow { animation: float-slow 8s ease-in-out infinite; animation-delay: 2s; }
|
|
160
|
-
` })
|
|
161
|
-
]
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
function ModuleBlock({ className = "", label, size = "md" }) {
|
|
165
|
-
return /* @__PURE__ */ jsx("div", {
|
|
166
|
-
className: `${size === "sm" ? "w-16 h-16 text-[10px]" : "w-24 h-24 text-xs"} ${className}`,
|
|
167
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
168
|
-
className: "w-full h-full rounded-2xl bg-gradient-to-br from-white/10 to-white/5 border border-white/10 backdrop-blur-sm flex items-center justify-center",
|
|
169
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
170
|
-
className: "font-mono text-white/50",
|
|
171
|
-
children: label
|
|
172
312
|
})
|
|
173
|
-
|
|
313
|
+
]
|
|
174
314
|
});
|
|
175
315
|
}
|
|
176
316
|
|
|
177
317
|
//#endregion
|
|
178
318
|
//#region src/client/components/value-props.tsx
|
|
179
319
|
function ValueProps() {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
items: [
|
|
197
|
-
{
|
|
198
|
-
label: "Ship in hours",
|
|
199
|
-
desc: "Not weeks or months"
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
label: "One command install",
|
|
203
|
-
desc: "kuckit add @vendor/module"
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
label: "Focus on your product",
|
|
207
|
-
desc: "Not boilerplate"
|
|
208
|
-
}
|
|
209
|
-
]
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
title: "For Sellers",
|
|
213
|
-
icon: /* @__PURE__ */ jsx("svg", {
|
|
214
|
-
className: "w-6 h-6",
|
|
215
|
-
fill: "none",
|
|
216
|
-
stroke: "currentColor",
|
|
217
|
-
viewBox: "0 0 24 24",
|
|
218
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
219
|
-
strokeLinecap: "round",
|
|
220
|
-
strokeLinejoin: "round",
|
|
221
|
-
strokeWidth: 1.5,
|
|
222
|
-
d: "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
223
|
-
})
|
|
224
|
-
}),
|
|
225
|
-
color: "teal",
|
|
226
|
-
items: [
|
|
227
|
-
{
|
|
228
|
-
label: "Build once, sell forever",
|
|
229
|
-
desc: "Passive revenue stream"
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
label: "Growing marketplace",
|
|
233
|
-
desc: "Reach thousands of builders"
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
label: "Your code, your pricing",
|
|
237
|
-
desc: "Set your own terms"
|
|
238
|
-
}
|
|
239
|
-
]
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
title: "For Everyone",
|
|
243
|
-
icon: /* @__PURE__ */ jsx("svg", {
|
|
244
|
-
className: "w-6 h-6",
|
|
245
|
-
fill: "none",
|
|
246
|
-
stroke: "currentColor",
|
|
247
|
-
viewBox: "0 0 24 24",
|
|
248
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
249
|
-
strokeLinecap: "round",
|
|
250
|
-
strokeLinejoin: "round",
|
|
251
|
-
strokeWidth: 1.5,
|
|
252
|
-
d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"
|
|
253
|
-
})
|
|
254
|
-
}),
|
|
255
|
-
color: "cyan",
|
|
256
|
-
items: [
|
|
257
|
-
{
|
|
258
|
-
label: "Battle-tested code",
|
|
259
|
-
desc: "Community validated"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
label: "Guardrailed quality",
|
|
263
|
-
desc: "Enforced standards"
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
label: "Type-safe modules",
|
|
267
|
-
desc: "End-to-end TypeScript"
|
|
268
|
-
}
|
|
269
|
-
]
|
|
270
|
-
}
|
|
271
|
-
];
|
|
272
|
-
const colorMap = {
|
|
273
|
-
emerald: {
|
|
274
|
-
bg: "bg-emerald-500/10",
|
|
275
|
-
border: "border-emerald-500/20",
|
|
276
|
-
text: "text-emerald-400",
|
|
277
|
-
glow: "group-hover:shadow-emerald-500/10"
|
|
278
|
-
},
|
|
279
|
-
teal: {
|
|
280
|
-
bg: "bg-teal-500/10",
|
|
281
|
-
border: "border-teal-500/20",
|
|
282
|
-
text: "text-teal-400",
|
|
283
|
-
glow: "group-hover:shadow-teal-500/10"
|
|
284
|
-
},
|
|
285
|
-
cyan: {
|
|
286
|
-
bg: "bg-cyan-500/10",
|
|
287
|
-
border: "border-cyan-500/20",
|
|
288
|
-
text: "text-cyan-400",
|
|
289
|
-
glow: "group-hover:shadow-cyan-500/10"
|
|
290
|
-
}
|
|
291
|
-
};
|
|
292
|
-
return /* @__PURE__ */ jsx("section", {
|
|
293
|
-
className: "py-24 px-6",
|
|
294
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
295
|
-
className: "max-w-6xl mx-auto",
|
|
320
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
321
|
+
className: "relative border-t border-border",
|
|
322
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
323
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
324
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
325
|
+
className: "flex items-center gap-4 mb-4",
|
|
326
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
327
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
328
|
+
children: "Why you're stuck"
|
|
329
|
+
})]
|
|
330
|
+
}), /* @__PURE__ */ jsx("h2", {
|
|
331
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em]",
|
|
332
|
+
children: "The vibe coding trap"
|
|
333
|
+
})]
|
|
334
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
335
|
+
className: "max-w-7xl mx-auto",
|
|
296
336
|
children: /* @__PURE__ */ jsx("div", {
|
|
297
|
-
className: "grid md:grid-cols-3
|
|
298
|
-
children:
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
337
|
+
className: "grid md:grid-cols-3",
|
|
338
|
+
children: [
|
|
339
|
+
{
|
|
340
|
+
title: "The Problem",
|
|
341
|
+
tag: "01",
|
|
342
|
+
items: [
|
|
343
|
+
{
|
|
344
|
+
label: "Stuck in AI loops",
|
|
345
|
+
desc: "The more you prompt, the more it breaks"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
label: "Code you can't understand",
|
|
349
|
+
desc: "10,000 lines nobody can debug"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
label: "Works locally, won't deploy",
|
|
353
|
+
desc: "The last 20% takes 80% of the time"
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
title: "The Foundation",
|
|
359
|
+
tag: "02",
|
|
360
|
+
featured: true,
|
|
361
|
+
items: [
|
|
362
|
+
{
|
|
363
|
+
label: "Production-ready structure",
|
|
364
|
+
desc: "Architecture that actually scales"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
label: "Pre-built features that work",
|
|
368
|
+
desc: "Auth, payments, dashboards—done"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
label: "Code you can grow with",
|
|
372
|
+
desc: "Not spaghetti you're scared to touch"
|
|
373
|
+
}
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
title: "The Outcome",
|
|
378
|
+
tag: "03",
|
|
379
|
+
items: [
|
|
380
|
+
{
|
|
381
|
+
label: "Ship in hours",
|
|
382
|
+
desc: "Not weeks of debugging"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
label: "Launch with confidence",
|
|
386
|
+
desc: "Real software, not a fragile prototype"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
label: "Focus on your idea",
|
|
390
|
+
desc: "Not fighting your codebase"
|
|
391
|
+
}
|
|
392
|
+
]
|
|
393
|
+
}
|
|
394
|
+
].map((col, colIndex) => /* @__PURE__ */ jsxs("div", {
|
|
395
|
+
className: `relative border-b md:border-b-0 ${colIndex < 2 ? "md:border-r" : ""} border-border`,
|
|
396
|
+
children: [col.featured && /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 h-[2px] bg-primary" }), /* @__PURE__ */ jsxs("div", {
|
|
397
|
+
className: "p-8 md:p-10",
|
|
302
398
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
303
|
-
className: "flex items-
|
|
304
|
-
children: [/* @__PURE__ */
|
|
305
|
-
className:
|
|
306
|
-
children: col.
|
|
399
|
+
className: "flex items-start justify-between mb-10",
|
|
400
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("span", {
|
|
401
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase block mb-2",
|
|
402
|
+
children: col.tag
|
|
307
403
|
}), /* @__PURE__ */ jsx("h3", {
|
|
308
|
-
className: "text-xl font-
|
|
404
|
+
className: "text-xl font-medium text-foreground tracking-tight",
|
|
309
405
|
children: col.title
|
|
406
|
+
})] }), col.featured && /* @__PURE__ */ jsx("span", {
|
|
407
|
+
className: "px-2 py-1 text-[10px] tracking-[0.15em] uppercase bg-primary/10 text-primary border border-primary/20",
|
|
408
|
+
children: "Popular"
|
|
310
409
|
})]
|
|
311
410
|
}), /* @__PURE__ */ jsx("div", {
|
|
312
|
-
className: "space-y-
|
|
313
|
-
children: col.items.map((item) => /* @__PURE__ */
|
|
314
|
-
className: "
|
|
315
|
-
children:
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
411
|
+
className: "space-y-8",
|
|
412
|
+
children: col.items.map((item, i) => /* @__PURE__ */ jsx("div", {
|
|
413
|
+
className: "group",
|
|
414
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
415
|
+
className: "flex items-start gap-4",
|
|
416
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
417
|
+
className: `w-6 h-6 flex items-center justify-center border ${col.featured ? "border-primary/50 text-primary" : "border-border text-muted-foreground"} text-xs font-mono`,
|
|
418
|
+
children: i + 1
|
|
419
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
420
|
+
className: "flex-1",
|
|
421
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
422
|
+
className: "text-foreground font-medium mb-1 group-hover:text-primary transition-colors",
|
|
423
|
+
children: item.label
|
|
424
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
425
|
+
className: "text-muted-foreground text-sm",
|
|
426
|
+
children: item.desc
|
|
427
|
+
})]
|
|
428
|
+
})]
|
|
429
|
+
})
|
|
430
|
+
}, item.label))
|
|
320
431
|
})]
|
|
321
|
-
}
|
|
322
|
-
})
|
|
432
|
+
})]
|
|
433
|
+
}, col.title))
|
|
323
434
|
})
|
|
324
|
-
})
|
|
435
|
+
})]
|
|
325
436
|
});
|
|
326
437
|
}
|
|
327
438
|
|
|
328
439
|
//#endregion
|
|
329
|
-
//#region src/client/components/
|
|
330
|
-
function
|
|
440
|
+
//#region src/client/components/ai-superpowers.tsx
|
|
441
|
+
function AiSuperpowers() {
|
|
442
|
+
const features = [
|
|
443
|
+
{
|
|
444
|
+
num: "01",
|
|
445
|
+
title: "Context Engineering Built-In",
|
|
446
|
+
desc: "Your AI already knows your codebase. AGENTS.md files in every folder teach Cursor, Claude, and Copilot exactly how your app works.",
|
|
447
|
+
tag: "Hot"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
num: "02",
|
|
451
|
+
title: "Skills Your AI Can Use",
|
|
452
|
+
desc: "Pre-built skills for common tasks. Your AI assistant loads them automatically and just knows what to do.",
|
|
453
|
+
tag: null
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
num: "03",
|
|
457
|
+
title: "Curated MCP Tools",
|
|
458
|
+
desc: "Hand-picked Model Context Protocol tools, configured for maximum impact. Web search, code editing, UI components—all pre-tuned to work together.",
|
|
459
|
+
tag: "New"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
num: "04",
|
|
463
|
+
title: "Multi-Agent Workflows",
|
|
464
|
+
desc: "Run multiple AI agents on different parts of your app. They coordinate automatically without stepping on each other.",
|
|
465
|
+
tag: null
|
|
466
|
+
}
|
|
467
|
+
];
|
|
331
468
|
return /* @__PURE__ */ jsxs("section", {
|
|
332
|
-
className: "
|
|
333
|
-
children: [/* @__PURE__ */
|
|
334
|
-
className: "max-w-
|
|
335
|
-
children: [
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
/* @__PURE__ */
|
|
339
|
-
className: "
|
|
340
|
-
children:
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"
|
|
350
|
-
})
|
|
351
|
-
}), "Quality Guaranteed"]
|
|
352
|
-
}),
|
|
353
|
-
/* @__PURE__ */ jsx("h2", {
|
|
354
|
-
className: "text-4xl md:text-5xl font-bold text-white mb-6",
|
|
355
|
-
children: "Code That Stays Clean"
|
|
356
|
-
}),
|
|
357
|
-
/* @__PURE__ */ jsxs("p", {
|
|
358
|
-
className: "text-xl text-white/60 leading-relaxed",
|
|
359
|
-
children: ["Codebases rot. AI generates spaghetti. Developers cut corners.", /* @__PURE__ */ jsx("span", {
|
|
360
|
-
className: "text-white",
|
|
361
|
-
children: " Kuckit enforces structure automatically."
|
|
362
|
-
})]
|
|
363
|
-
})
|
|
364
|
-
]
|
|
365
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
366
|
-
className: "grid lg:grid-cols-2 gap-12 items-center",
|
|
367
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
368
|
-
className: "space-y-6",
|
|
469
|
+
className: "relative border-t border-border",
|
|
470
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
471
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
472
|
+
children: [
|
|
473
|
+
/* @__PURE__ */ jsxs("div", {
|
|
474
|
+
className: "flex items-center gap-4 mb-4",
|
|
475
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
476
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
477
|
+
children: "AI-Native Framework"
|
|
478
|
+
})]
|
|
479
|
+
}),
|
|
480
|
+
/* @__PURE__ */ jsx("h2", {
|
|
481
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
482
|
+
children: "Your AI Gets Superpowers"
|
|
483
|
+
}),
|
|
484
|
+
/* @__PURE__ */ jsxs("p", {
|
|
485
|
+
className: "text-lg text-muted-foreground max-w-2xl",
|
|
369
486
|
children: [
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
{
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
strokeLinecap: "round",
|
|
410
|
-
strokeLinejoin: "round",
|
|
411
|
-
strokeWidth: 1.5,
|
|
412
|
-
d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
413
|
-
})
|
|
414
|
-
}),
|
|
415
|
-
title: "CI/CD Validation",
|
|
416
|
-
desc: "Nothing merges without passing architecture checks. Every PR is verified."
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
icon: /* @__PURE__ */ jsx("svg", {
|
|
420
|
-
className: "w-5 h-5",
|
|
421
|
-
fill: "none",
|
|
422
|
-
stroke: "currentColor",
|
|
423
|
-
viewBox: "0 0 24 24",
|
|
424
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
425
|
-
strokeLinecap: "round",
|
|
426
|
-
strokeLinejoin: "round",
|
|
427
|
-
strokeWidth: 1.5,
|
|
428
|
-
d: "M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
|
|
429
|
-
})
|
|
430
|
-
}),
|
|
431
|
-
title: "Clean Architecture Layers",
|
|
432
|
-
desc: "Domain, Application, Infrastructure stay separated. Always."
|
|
433
|
-
}
|
|
434
|
-
].map((feature) => /* @__PURE__ */ jsxs("div", {
|
|
435
|
-
className: "group flex gap-4 p-4 rounded-xl hover:bg-white/[0.03] transition-colors",
|
|
436
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
437
|
-
className: "w-10 h-10 rounded-lg bg-emerald-500/10 border border-emerald-500/20 flex items-center justify-center text-emerald-400 shrink-0 group-hover:scale-110 transition-transform",
|
|
438
|
-
children: feature.icon
|
|
439
|
-
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
440
|
-
className: "text-white font-semibold mb-1",
|
|
441
|
-
children: feature.title
|
|
442
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
443
|
-
className: "text-white/50 text-sm leading-relaxed",
|
|
444
|
-
children: feature.desc
|
|
445
|
-
})] })]
|
|
487
|
+
"Cursor, Claude, Copilot—they all work better with Kuckit.",
|
|
488
|
+
" ",
|
|
489
|
+
/* @__PURE__ */ jsx("span", {
|
|
490
|
+
className: "text-foreground",
|
|
491
|
+
children: "Because we built the framework for AI-first development."
|
|
492
|
+
})
|
|
493
|
+
]
|
|
494
|
+
})
|
|
495
|
+
]
|
|
496
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
497
|
+
className: "max-w-7xl mx-auto",
|
|
498
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
499
|
+
className: "grid lg:grid-cols-12",
|
|
500
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
501
|
+
className: "lg:col-span-7 border-b lg:border-b-0 lg:border-r border-border",
|
|
502
|
+
children: features.map((feature, index) => /* @__PURE__ */ jsx("div", {
|
|
503
|
+
className: `p-8 ${index < features.length - 1 ? "border-b border-border" : ""}`,
|
|
504
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
505
|
+
className: "flex items-start gap-6",
|
|
506
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
507
|
+
className: "w-12 h-12 flex items-center justify-center border border-primary/30 bg-primary/5 text-primary font-mono text-sm shrink-0",
|
|
508
|
+
children: feature.num
|
|
509
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
510
|
+
className: "flex-1 pt-1",
|
|
511
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
512
|
+
className: "flex items-center gap-3 mb-2",
|
|
513
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
514
|
+
className: "text-lg font-medium text-foreground tracking-tight",
|
|
515
|
+
children: feature.title
|
|
516
|
+
}), feature.tag && /* @__PURE__ */ jsx("span", {
|
|
517
|
+
className: "px-2 py-0.5 text-[10px] tracking-[0.1em] uppercase bg-primary/10 text-primary border border-primary/20",
|
|
518
|
+
children: feature.tag
|
|
519
|
+
})]
|
|
520
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
521
|
+
className: "text-muted-foreground text-sm leading-relaxed",
|
|
522
|
+
children: feature.desc
|
|
523
|
+
})]
|
|
524
|
+
})]
|
|
525
|
+
})
|
|
446
526
|
}, feature.title))
|
|
447
527
|
}), /* @__PURE__ */ jsx("div", {
|
|
448
|
-
className: "
|
|
528
|
+
className: "lg:col-span-5 p-8 lg:p-12 bg-card",
|
|
449
529
|
children: /* @__PURE__ */ jsxs("div", {
|
|
450
|
-
className: "
|
|
451
|
-
children: [
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
/* @__PURE__ */
|
|
455
|
-
className: "
|
|
456
|
-
children:
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
})]
|
|
478
|
-
}),
|
|
479
|
-
/* @__PURE__ */ jsxs("div", {
|
|
480
|
-
className: "w-full space-y-2",
|
|
530
|
+
className: "h-full flex flex-col",
|
|
531
|
+
children: [
|
|
532
|
+
/* @__PURE__ */ jsxs("div", {
|
|
533
|
+
className: "flex items-center gap-3 mb-8",
|
|
534
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary animate-pulse" }), /* @__PURE__ */ jsx("span", {
|
|
535
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase",
|
|
536
|
+
children: "AI Enhancement Active"
|
|
537
|
+
})]
|
|
538
|
+
}),
|
|
539
|
+
/* @__PURE__ */ jsxs("div", {
|
|
540
|
+
className: "mb-10",
|
|
541
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
542
|
+
className: "text-6xl font-light text-foreground tracking-tighter mb-2",
|
|
543
|
+
children: "10x"
|
|
544
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
545
|
+
className: "text-sm text-muted-foreground tracking-wide",
|
|
546
|
+
children: "Faster AI responses with context"
|
|
547
|
+
})]
|
|
548
|
+
}),
|
|
549
|
+
/* @__PURE__ */ jsx("div", { className: "h-px bg-border mb-8" }),
|
|
550
|
+
/* @__PURE__ */ jsxs("div", {
|
|
551
|
+
className: "flex-1",
|
|
552
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
553
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase mb-4",
|
|
554
|
+
children: "What Your AI Gets"
|
|
555
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
556
|
+
className: "space-y-4",
|
|
481
557
|
children: [
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
558
|
+
{
|
|
559
|
+
icon: "brain",
|
|
560
|
+
label: "Smart Context",
|
|
561
|
+
desc: "AI understands your whole project"
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
icon: "zap",
|
|
565
|
+
label: "Auto-Complete",
|
|
566
|
+
desc: "Better suggestions, fewer errors"
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
icon: "users",
|
|
570
|
+
label: "Team of AIs",
|
|
571
|
+
desc: "Parallel agents, zero conflicts"
|
|
572
|
+
}
|
|
573
|
+
].map((cap) => /* @__PURE__ */ jsxs("div", {
|
|
574
|
+
className: "flex items-center gap-4 px-4 py-3 bg-primary/5 border-l-2 border-primary",
|
|
575
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
576
|
+
className: "w-8 h-8 flex items-center justify-center bg-primary/10 text-primary",
|
|
577
|
+
children: [
|
|
578
|
+
cap.icon === "brain" && /* @__PURE__ */ jsx("svg", {
|
|
579
|
+
className: "w-4 h-4",
|
|
580
|
+
fill: "none",
|
|
581
|
+
stroke: "currentColor",
|
|
582
|
+
viewBox: "0 0 24 24",
|
|
583
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
584
|
+
strokeLinecap: "round",
|
|
585
|
+
strokeLinejoin: "round",
|
|
586
|
+
strokeWidth: 2,
|
|
587
|
+
d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
|
|
588
|
+
})
|
|
589
|
+
}),
|
|
590
|
+
cap.icon === "zap" && /* @__PURE__ */ jsx("svg", {
|
|
591
|
+
className: "w-4 h-4",
|
|
592
|
+
fill: "none",
|
|
593
|
+
stroke: "currentColor",
|
|
594
|
+
viewBox: "0 0 24 24",
|
|
595
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
596
|
+
strokeLinecap: "round",
|
|
597
|
+
strokeLinejoin: "round",
|
|
598
|
+
strokeWidth: 2,
|
|
599
|
+
d: "M13 10V3L4 14h7v7l9-11h-7z"
|
|
600
|
+
})
|
|
601
|
+
}),
|
|
602
|
+
cap.icon === "users" && /* @__PURE__ */ jsx("svg", {
|
|
603
|
+
className: "w-4 h-4",
|
|
604
|
+
fill: "none",
|
|
605
|
+
stroke: "currentColor",
|
|
606
|
+
viewBox: "0 0 24 24",
|
|
607
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
608
|
+
strokeLinecap: "round",
|
|
609
|
+
strokeLinejoin: "round",
|
|
610
|
+
strokeWidth: 2,
|
|
611
|
+
d: "M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"
|
|
612
|
+
})
|
|
494
613
|
})
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
614
|
+
]
|
|
615
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
616
|
+
className: "flex-1",
|
|
617
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
618
|
+
className: "text-sm font-medium text-foreground",
|
|
619
|
+
children: cap.label
|
|
620
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
621
|
+
className: "text-xs text-muted-foreground",
|
|
622
|
+
children: cap.desc
|
|
498
623
|
})]
|
|
624
|
+
})]
|
|
625
|
+
}, cap.label))
|
|
626
|
+
})]
|
|
627
|
+
}),
|
|
628
|
+
/* @__PURE__ */ jsxs("div", {
|
|
629
|
+
className: "mt-8 pt-6 border-t border-border flex items-center justify-between",
|
|
630
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
631
|
+
className: "text-xs text-muted-foreground",
|
|
632
|
+
children: "Works with any AI tool"
|
|
633
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
634
|
+
className: "flex items-center gap-3 text-xs text-muted-foreground",
|
|
635
|
+
children: [
|
|
636
|
+
/* @__PURE__ */ jsx("span", { children: "Cursor" }),
|
|
637
|
+
/* @__PURE__ */ jsx("span", {
|
|
638
|
+
className: "text-border",
|
|
639
|
+
children: "•"
|
|
499
640
|
}),
|
|
500
|
-
/* @__PURE__ */
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
fill: "none",
|
|
505
|
-
stroke: "currentColor",
|
|
506
|
-
viewBox: "0 0 24 24",
|
|
507
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
508
|
-
strokeLinecap: "round",
|
|
509
|
-
strokeLinejoin: "round",
|
|
510
|
-
strokeWidth: 2,
|
|
511
|
-
d: "M6 18L18 6M6 6l12 12"
|
|
512
|
-
})
|
|
513
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
514
|
-
className: "text-sm text-red-400/80 font-mono",
|
|
515
|
-
children: "Layer violations"
|
|
516
|
-
})]
|
|
641
|
+
/* @__PURE__ */ jsx("span", { children: "Claude" }),
|
|
642
|
+
/* @__PURE__ */ jsx("span", {
|
|
643
|
+
className: "text-border",
|
|
644
|
+
children: "•"
|
|
517
645
|
}),
|
|
518
|
-
/* @__PURE__ */
|
|
519
|
-
className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-red-500/10 border border-red-500/20",
|
|
520
|
-
children: [/* @__PURE__ */ jsx("svg", {
|
|
521
|
-
className: "w-4 h-4 text-red-400",
|
|
522
|
-
fill: "none",
|
|
523
|
-
stroke: "currentColor",
|
|
524
|
-
viewBox: "0 0 24 24",
|
|
525
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
526
|
-
strokeLinecap: "round",
|
|
527
|
-
strokeLinejoin: "round",
|
|
528
|
-
strokeWidth: 2,
|
|
529
|
-
d: "M6 18L18 6M6 6l12 12"
|
|
530
|
-
})
|
|
531
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
532
|
-
className: "text-sm text-red-400/80 font-mono",
|
|
533
|
-
children: "Untyped exports"
|
|
534
|
-
})]
|
|
535
|
-
})
|
|
646
|
+
/* @__PURE__ */ jsx("span", { children: "Copilot" })
|
|
536
647
|
]
|
|
537
|
-
})
|
|
538
|
-
|
|
539
|
-
|
|
648
|
+
})]
|
|
649
|
+
})
|
|
650
|
+
]
|
|
540
651
|
})
|
|
541
652
|
})]
|
|
542
|
-
})
|
|
653
|
+
})
|
|
543
654
|
})]
|
|
544
655
|
});
|
|
545
656
|
}
|
|
@@ -549,188 +660,128 @@ function CodeQuality() {
|
|
|
549
660
|
function ModuleShowcase() {
|
|
550
661
|
const modules = [
|
|
551
662
|
{
|
|
552
|
-
name: "
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
stroke: "currentColor",
|
|
557
|
-
viewBox: "0 0 24 24",
|
|
558
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
559
|
-
strokeLinecap: "round",
|
|
560
|
-
strokeLinejoin: "round",
|
|
561
|
-
strokeWidth: 1.5,
|
|
562
|
-
d: "M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"
|
|
563
|
-
})
|
|
564
|
-
}),
|
|
565
|
-
desc: "OAuth, MFA, sessions",
|
|
566
|
-
color: "emerald"
|
|
663
|
+
name: "Payments",
|
|
664
|
+
package: "Subscriptions & checkout",
|
|
665
|
+
desc: "Accept payments in minutes. Subscriptions, one-time purchases, customer portal.",
|
|
666
|
+
status: "stable"
|
|
567
667
|
},
|
|
568
668
|
{
|
|
569
|
-
name: "
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
stroke: "currentColor",
|
|
574
|
-
viewBox: "0 0 24 24",
|
|
575
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
576
|
-
strokeLinecap: "round",
|
|
577
|
-
strokeLinejoin: "round",
|
|
578
|
-
strokeWidth: 1.5,
|
|
579
|
-
d: "M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z"
|
|
580
|
-
})
|
|
581
|
-
}),
|
|
582
|
-
desc: "Stripe, subscriptions",
|
|
583
|
-
color: "teal"
|
|
669
|
+
name: "User Accounts",
|
|
670
|
+
package: "Profiles & settings",
|
|
671
|
+
desc: "User registration, profiles, and account management ready to go.",
|
|
672
|
+
status: "stable"
|
|
584
673
|
},
|
|
585
674
|
{
|
|
586
|
-
name: "
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
stroke: "currentColor",
|
|
591
|
-
viewBox: "0 0 24 24",
|
|
592
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
593
|
-
strokeLinecap: "round",
|
|
594
|
-
strokeLinejoin: "round",
|
|
595
|
-
strokeWidth: 1.5,
|
|
596
|
-
d: "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"
|
|
597
|
-
})
|
|
598
|
-
}),
|
|
599
|
-
desc: "Events, dashboards",
|
|
600
|
-
color: "cyan"
|
|
675
|
+
name: "Documentation",
|
|
676
|
+
package: "Help & guides",
|
|
677
|
+
desc: "Beautiful docs for your users. Write in plain text, get a polished help center.",
|
|
678
|
+
status: "stable"
|
|
601
679
|
},
|
|
602
680
|
{
|
|
603
|
-
name: "
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
stroke: "currentColor",
|
|
608
|
-
viewBox: "0 0 24 24",
|
|
609
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
610
|
-
strokeLinecap: "round",
|
|
611
|
-
strokeLinejoin: "round",
|
|
612
|
-
strokeWidth: 1.5,
|
|
613
|
-
d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
|
|
614
|
-
})
|
|
615
|
-
}),
|
|
616
|
-
desc: "Transactional, templates",
|
|
617
|
-
color: "violet"
|
|
681
|
+
name: "AI Chat",
|
|
682
|
+
package: "Smart assistants",
|
|
683
|
+
desc: "Add AI chat to your app. Streaming responses, conversation history included.",
|
|
684
|
+
status: "stable"
|
|
618
685
|
},
|
|
619
686
|
{
|
|
620
|
-
name: "
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
stroke: "currentColor",
|
|
625
|
-
viewBox: "0 0 24 24",
|
|
626
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
627
|
-
strokeLinecap: "round",
|
|
628
|
-
strokeLinejoin: "round",
|
|
629
|
-
strokeWidth: 1.5,
|
|
630
|
-
d: "M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"
|
|
631
|
-
})
|
|
632
|
-
}),
|
|
633
|
-
desc: "S3, uploads, CDN",
|
|
634
|
-
color: "amber"
|
|
687
|
+
name: "CLI Login",
|
|
688
|
+
package: "Developer tools",
|
|
689
|
+
desc: "Let users log in from command line tools with a simple device code.",
|
|
690
|
+
status: "stable"
|
|
635
691
|
},
|
|
636
692
|
{
|
|
637
|
-
name: "
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
stroke: "currentColor",
|
|
642
|
-
viewBox: "0 0 24 24",
|
|
643
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
644
|
-
strokeLinecap: "round",
|
|
645
|
-
strokeLinejoin: "round",
|
|
646
|
-
strokeWidth: 1.5,
|
|
647
|
-
d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
|
|
648
|
-
})
|
|
649
|
-
}),
|
|
650
|
-
desc: "Chat, embeddings",
|
|
651
|
-
color: "pink"
|
|
693
|
+
name: "More Coming",
|
|
694
|
+
package: "Email, storage, analytics",
|
|
695
|
+
desc: "We're building more modules every week. Tell us what you need.",
|
|
696
|
+
status: "soon"
|
|
652
697
|
}
|
|
653
698
|
];
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
},
|
|
660
|
-
teal: {
|
|
661
|
-
bg: "bg-teal-500/10",
|
|
662
|
-
border: "border-teal-500/30",
|
|
663
|
-
text: "text-teal-400"
|
|
664
|
-
},
|
|
665
|
-
cyan: {
|
|
666
|
-
bg: "bg-cyan-500/10",
|
|
667
|
-
border: "border-cyan-500/30",
|
|
668
|
-
text: "text-cyan-400"
|
|
669
|
-
},
|
|
670
|
-
violet: {
|
|
671
|
-
bg: "bg-violet-500/10",
|
|
672
|
-
border: "border-violet-500/30",
|
|
673
|
-
text: "text-violet-400"
|
|
674
|
-
},
|
|
675
|
-
amber: {
|
|
676
|
-
bg: "bg-amber-500/10",
|
|
677
|
-
border: "border-amber-500/30",
|
|
678
|
-
text: "text-amber-400"
|
|
679
|
-
},
|
|
680
|
-
pink: {
|
|
681
|
-
bg: "bg-pink-500/10",
|
|
682
|
-
border: "border-pink-500/30",
|
|
683
|
-
text: "text-pink-400"
|
|
684
|
-
}
|
|
685
|
-
};
|
|
686
|
-
return /* @__PURE__ */ jsx("section", {
|
|
687
|
-
className: "py-24 px-6",
|
|
688
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
689
|
-
className: "max-w-6xl mx-auto",
|
|
699
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
700
|
+
id: "modules",
|
|
701
|
+
className: "relative border-t border-border",
|
|
702
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
703
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
690
704
|
children: [
|
|
691
705
|
/* @__PURE__ */ jsxs("div", {
|
|
692
|
-
className: "
|
|
693
|
-
children: [/* @__PURE__ */ jsx("
|
|
694
|
-
className: "text-
|
|
695
|
-
children: "
|
|
696
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
697
|
-
className: "text-xl text-white/60 max-w-2xl mx-auto",
|
|
698
|
-
children: "Skip weeks of development. Install battle-tested modules and focus on what makes your product unique."
|
|
706
|
+
className: "flex items-center gap-4 mb-4",
|
|
707
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
708
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
709
|
+
children: "Module Ecosystem"
|
|
699
710
|
})]
|
|
700
711
|
}),
|
|
701
|
-
/* @__PURE__ */ jsx("
|
|
702
|
-
className: "
|
|
703
|
-
children:
|
|
704
|
-
const colors = colorMap[mod.color];
|
|
705
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
706
|
-
className: "group relative rounded-2xl border border-white/10 bg-white/[0.02] p-6 hover:border-white/20 hover:bg-white/[0.04] transition-all cursor-pointer",
|
|
707
|
-
children: [
|
|
708
|
-
/* @__PURE__ */ jsx("div", {
|
|
709
|
-
className: "absolute top-3 right-3 px-2 py-0.5 rounded text-[10px] font-medium bg-white/10 text-white/50",
|
|
710
|
-
children: "Soon"
|
|
711
|
-
}),
|
|
712
|
-
/* @__PURE__ */ jsx("div", {
|
|
713
|
-
className: `w-12 h-12 rounded-xl ${colors.bg} ${colors.text} flex items-center justify-center mb-4 group-hover:scale-110 transition-transform`,
|
|
714
|
-
children: mod.icon
|
|
715
|
-
}),
|
|
716
|
-
/* @__PURE__ */ jsx("h3", {
|
|
717
|
-
className: "text-lg font-semibold text-white mb-1",
|
|
718
|
-
children: mod.name
|
|
719
|
-
}),
|
|
720
|
-
/* @__PURE__ */ jsx("p", {
|
|
721
|
-
className: "text-sm text-white/50",
|
|
722
|
-
children: mod.desc
|
|
723
|
-
})
|
|
724
|
-
]
|
|
725
|
-
}, mod.name);
|
|
726
|
-
})
|
|
712
|
+
/* @__PURE__ */ jsx("h2", {
|
|
713
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
714
|
+
children: "Modules for Everything"
|
|
727
715
|
}),
|
|
728
|
-
/* @__PURE__ */ jsx("
|
|
729
|
-
className: "
|
|
730
|
-
children:
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
716
|
+
/* @__PURE__ */ jsx("p", {
|
|
717
|
+
className: "text-lg text-muted-foreground max-w-2xl",
|
|
718
|
+
children: "Skip weeks of development. Install battle-tested modules and focus on what makes your product unique."
|
|
719
|
+
})
|
|
720
|
+
]
|
|
721
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
722
|
+
className: "max-w-7xl mx-auto",
|
|
723
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
724
|
+
className: "grid md:grid-cols-2 lg:grid-cols-3",
|
|
725
|
+
children: modules.map((mod, index) => {
|
|
726
|
+
const isLastRow = index >= modules.length - (modules.length % 3 || 3);
|
|
727
|
+
const isLastCol = (index + 1) % 3 === 0;
|
|
728
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
729
|
+
className: `group relative p-8 transition-colors hover:bg-card ${!isLastRow ? "border-b border-border" : ""} ${!isLastCol ? "lg:border-r border-border" : ""} ${index % 2 === 0 && index < modules.length - 1 ? "md:border-r" : ""} ${index < modules.length - 2 ? "md:border-b" : ""} lg:border-b-0 ${index < modules.length - 3 ? "lg:border-b lg:border-border" : ""}`,
|
|
730
|
+
children: [
|
|
731
|
+
/* @__PURE__ */ jsx("div", {
|
|
732
|
+
className: "absolute top-6 right-6",
|
|
733
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
734
|
+
className: `px-2 py-1 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"}`,
|
|
735
|
+
children: mod.status
|
|
736
|
+
})
|
|
737
|
+
}),
|
|
738
|
+
/* @__PURE__ */ jsxs("div", {
|
|
739
|
+
className: "pr-16",
|
|
740
|
+
children: [
|
|
741
|
+
/* @__PURE__ */ jsx("span", {
|
|
742
|
+
className: "text-sm text-primary block mb-3",
|
|
743
|
+
children: mod.package
|
|
744
|
+
}),
|
|
745
|
+
/* @__PURE__ */ jsx("h3", {
|
|
746
|
+
className: "text-xl font-medium text-foreground mb-2 tracking-tight group-hover:text-primary transition-colors",
|
|
747
|
+
children: mod.name
|
|
748
|
+
}),
|
|
749
|
+
/* @__PURE__ */ jsx("p", {
|
|
750
|
+
className: "text-sm text-muted-foreground",
|
|
751
|
+
children: mod.desc
|
|
752
|
+
})
|
|
753
|
+
]
|
|
754
|
+
}),
|
|
755
|
+
/* @__PURE__ */ jsx("div", {
|
|
756
|
+
className: "absolute bottom-6 right-6 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
757
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
758
|
+
className: "w-5 h-5 text-primary",
|
|
759
|
+
fill: "none",
|
|
760
|
+
stroke: "currentColor",
|
|
761
|
+
viewBox: "0 0 24 24",
|
|
762
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
763
|
+
strokeLinecap: "round",
|
|
764
|
+
strokeLinejoin: "round",
|
|
765
|
+
strokeWidth: 1.5,
|
|
766
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
767
|
+
})
|
|
768
|
+
})
|
|
769
|
+
})
|
|
770
|
+
]
|
|
771
|
+
}, mod.name);
|
|
772
|
+
})
|
|
773
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
774
|
+
className: "border-t border-border",
|
|
775
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
776
|
+
className: "px-8 py-8 flex flex-col md:flex-row md:items-center justify-between gap-6",
|
|
777
|
+
children: [/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("span", {
|
|
778
|
+
className: "text-sm text-muted-foreground",
|
|
779
|
+
children: "More modules coming soon. Explore the documentation to get started."
|
|
780
|
+
}) }), /* @__PURE__ */ jsxs("a", {
|
|
781
|
+
href: "/docs",
|
|
782
|
+
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",
|
|
783
|
+
children: [/* @__PURE__ */ jsx("span", { children: "View Documentation" }), /* @__PURE__ */ jsx("svg", {
|
|
784
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
734
785
|
fill: "none",
|
|
735
786
|
stroke: "currentColor",
|
|
736
787
|
viewBox: "0 0 24 24",
|
|
@@ -741,10 +792,10 @@ function ModuleShowcase() {
|
|
|
741
792
|
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
742
793
|
})
|
|
743
794
|
})]
|
|
744
|
-
})
|
|
795
|
+
})]
|
|
745
796
|
})
|
|
746
|
-
]
|
|
747
|
-
})
|
|
797
|
+
})]
|
|
798
|
+
})]
|
|
748
799
|
});
|
|
749
800
|
}
|
|
750
801
|
|
|
@@ -754,113 +805,129 @@ function HowItWorks() {
|
|
|
754
805
|
const [activeTab, setActiveTab] = useState("builders");
|
|
755
806
|
const steps = activeTab === "builders" ? [
|
|
756
807
|
{
|
|
757
|
-
|
|
808
|
+
num: "01",
|
|
758
809
|
command: "bunx create-kuckit-app my-app",
|
|
759
810
|
title: "Scaffold your app",
|
|
760
811
|
desc: "Get a production-ready TypeScript app with Clean Architecture baked in."
|
|
761
812
|
},
|
|
762
813
|
{
|
|
763
|
-
|
|
814
|
+
num: "02",
|
|
764
815
|
command: "kuckit add @vendor/billing",
|
|
765
816
|
title: "Install modules",
|
|
766
817
|
desc: "One command adds both server and client code, wired and ready."
|
|
767
818
|
},
|
|
768
819
|
{
|
|
769
|
-
|
|
820
|
+
num: "03",
|
|
770
821
|
command: "bun run dev",
|
|
771
822
|
title: "Ship it",
|
|
772
823
|
desc: "Your app is ready. Maintainable, type-safe, and battle-tested."
|
|
773
824
|
}
|
|
774
825
|
] : [
|
|
775
826
|
{
|
|
776
|
-
|
|
827
|
+
num: "01",
|
|
777
828
|
command: "kuckit generate module billing",
|
|
778
829
|
title: "Scaffold with AGENTS.md",
|
|
779
830
|
desc: "Generated structure includes documentation for AI and human developers."
|
|
780
831
|
},
|
|
781
832
|
{
|
|
782
|
-
|
|
833
|
+
num: "02",
|
|
783
834
|
command: "git commit && git push",
|
|
784
835
|
title: "Build & test",
|
|
785
836
|
desc: "Guardrails ensure your module meets quality standards before it ships."
|
|
786
837
|
},
|
|
787
838
|
{
|
|
788
|
-
|
|
839
|
+
num: "03",
|
|
789
840
|
command: "kuckit publish",
|
|
790
841
|
title: "Earn revenue",
|
|
791
842
|
desc: "Set your price, publish to the marketplace, and start earning."
|
|
792
843
|
}
|
|
793
844
|
];
|
|
794
845
|
return /* @__PURE__ */ jsxs("section", {
|
|
795
|
-
className: "
|
|
796
|
-
children: [
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
846
|
+
className: "relative border-t border-border",
|
|
847
|
+
children: [
|
|
848
|
+
/* @__PURE__ */ jsxs("div", {
|
|
849
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
850
|
+
children: [
|
|
851
|
+
/* @__PURE__ */ jsxs("div", {
|
|
852
|
+
className: "flex items-center gap-4 mb-4",
|
|
853
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
854
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
855
|
+
children: "Getting Started"
|
|
856
|
+
})]
|
|
857
|
+
}),
|
|
858
|
+
/* @__PURE__ */ jsx("h2", {
|
|
859
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
803
860
|
children: "How It Works"
|
|
804
|
-
}),
|
|
805
|
-
|
|
861
|
+
}),
|
|
862
|
+
/* @__PURE__ */ jsx("p", {
|
|
863
|
+
className: "text-lg text-muted-foreground",
|
|
806
864
|
children: "Three steps to shipping or selling."
|
|
807
|
-
})]
|
|
808
|
-
}),
|
|
809
|
-
/* @__PURE__ */ jsx("div", {
|
|
810
|
-
className: "flex justify-center mb-12",
|
|
811
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
812
|
-
className: "inline-flex rounded-xl bg-white/5 p-1",
|
|
813
|
-
children: [/* @__PURE__ */ jsx("button", {
|
|
814
|
-
onClick: () => setActiveTab("builders"),
|
|
815
|
-
className: `px-6 py-2.5 rounded-lg text-sm font-medium transition-all ${activeTab === "builders" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/80"}`,
|
|
816
|
-
children: "For Builders"
|
|
817
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
818
|
-
onClick: () => setActiveTab("sellers"),
|
|
819
|
-
className: `px-6 py-2.5 rounded-lg text-sm font-medium transition-all ${activeTab === "sellers" ? "bg-white/10 text-white" : "text-white/50 hover:text-white/80"}`,
|
|
820
|
-
children: "For Sellers"
|
|
821
|
-
})]
|
|
822
865
|
})
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
866
|
+
]
|
|
867
|
+
}),
|
|
868
|
+
/* @__PURE__ */ jsx("div", {
|
|
869
|
+
className: "max-w-7xl mx-auto border-b border-border",
|
|
870
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
871
|
+
className: "flex",
|
|
872
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
873
|
+
onClick: () => setActiveTab("builders"),
|
|
874
|
+
className: `relative px-8 py-5 text-sm font-medium transition-colors ${activeTab === "builders" ? "text-foreground" : "text-muted-foreground hover:text-foreground"}`,
|
|
875
|
+
children: ["For Builders", activeTab === "builders" && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2px] bg-primary" })]
|
|
876
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
877
|
+
onClick: () => setActiveTab("sellers"),
|
|
878
|
+
className: `relative px-8 py-5 text-sm font-medium transition-colors ${activeTab === "sellers" ? "text-foreground" : "text-muted-foreground hover:text-foreground"}`,
|
|
879
|
+
children: ["For Sellers", activeTab === "sellers" && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2px] bg-primary" })]
|
|
880
|
+
})]
|
|
881
|
+
})
|
|
882
|
+
}),
|
|
883
|
+
/* @__PURE__ */ jsx("div", {
|
|
884
|
+
className: "max-w-7xl mx-auto",
|
|
885
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
886
|
+
className: "grid lg:grid-cols-3",
|
|
826
887
|
children: steps.map((step, index) => /* @__PURE__ */ jsxs("div", {
|
|
827
|
-
className:
|
|
828
|
-
children: [
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
888
|
+
className: `relative p-8 lg:p-10 ${index < steps.length - 1 ? "border-b lg:border-b-0 lg:border-r border-border" : ""}`,
|
|
889
|
+
children: [
|
|
890
|
+
/* @__PURE__ */ jsxs("div", {
|
|
891
|
+
className: "flex items-start justify-between mb-8",
|
|
892
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
893
|
+
className: "text-4xl font-light text-primary tracking-tighter",
|
|
894
|
+
children: step.num
|
|
895
|
+
}), index < steps.length - 1 && /* @__PURE__ */ jsx("svg", {
|
|
896
|
+
className: "w-5 h-5 text-muted-foreground hidden lg:block mt-2",
|
|
897
|
+
fill: "none",
|
|
898
|
+
stroke: "currentColor",
|
|
899
|
+
viewBox: "0 0 24 24",
|
|
900
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
901
|
+
strokeLinecap: "round",
|
|
902
|
+
strokeLinejoin: "round",
|
|
903
|
+
strokeWidth: 1.5,
|
|
904
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
905
|
+
})
|
|
906
|
+
})]
|
|
907
|
+
}),
|
|
908
|
+
/* @__PURE__ */ jsx("h3", {
|
|
909
|
+
className: "text-xl font-medium text-foreground mb-3 tracking-tight",
|
|
910
|
+
children: step.title
|
|
911
|
+
}),
|
|
912
|
+
/* @__PURE__ */ jsx("p", {
|
|
913
|
+
className: "text-muted-foreground text-sm mb-6 leading-relaxed",
|
|
914
|
+
children: step.desc
|
|
915
|
+
}),
|
|
916
|
+
/* @__PURE__ */ jsxs("div", {
|
|
917
|
+
className: "flex items-center gap-3 px-4 py-3 bg-background border border-border font-mono text-sm",
|
|
918
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
919
|
+
className: "text-primary",
|
|
920
|
+
children: "$"
|
|
921
|
+
}), /* @__PURE__ */ jsx("code", {
|
|
922
|
+
className: "text-foreground/80",
|
|
923
|
+
children: step.command
|
|
924
|
+
})]
|
|
925
|
+
})
|
|
926
|
+
]
|
|
927
|
+
}, step.num))
|
|
861
928
|
})
|
|
862
|
-
|
|
863
|
-
|
|
929
|
+
})
|
|
930
|
+
]
|
|
864
931
|
});
|
|
865
932
|
}
|
|
866
933
|
|
|
@@ -869,140 +936,95 @@ function HowItWorks() {
|
|
|
869
936
|
function ArchitecturePreview() {
|
|
870
937
|
const layers = [
|
|
871
938
|
{
|
|
872
|
-
name: "Interface
|
|
939
|
+
name: "Interface",
|
|
873
940
|
items: ["apps/web", "apps/server"],
|
|
874
|
-
color: "emerald",
|
|
875
941
|
desc: "React UI + Express API"
|
|
876
942
|
},
|
|
877
943
|
{
|
|
878
|
-
name: "SDK
|
|
944
|
+
name: "SDK",
|
|
879
945
|
items: ["sdk", "sdk-react"],
|
|
880
|
-
color: "teal",
|
|
881
946
|
desc: "Module system + DI container"
|
|
882
947
|
},
|
|
883
948
|
{
|
|
884
|
-
name: "Application
|
|
949
|
+
name: "Application",
|
|
885
950
|
items: ["application", "api"],
|
|
886
|
-
color: "cyan",
|
|
887
951
|
desc: "Use cases + oRPC procedures"
|
|
888
952
|
},
|
|
889
953
|
{
|
|
890
|
-
name: "Domain
|
|
954
|
+
name: "Domain",
|
|
891
955
|
items: ["domain", "contracts"],
|
|
892
|
-
color: "violet",
|
|
893
956
|
desc: "Entities + Zod schemas"
|
|
894
957
|
},
|
|
895
958
|
{
|
|
896
|
-
name: "Infrastructure
|
|
959
|
+
name: "Infrastructure",
|
|
897
960
|
items: [
|
|
898
961
|
"infrastructure",
|
|
899
962
|
"db",
|
|
900
963
|
"auth"
|
|
901
964
|
],
|
|
902
|
-
color: "pink",
|
|
903
965
|
desc: "Repositories + Drizzle ORM"
|
|
904
966
|
}
|
|
905
|
-
];
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
text: "text-emerald-400",
|
|
911
|
-
glow: "shadow-emerald-500/20"
|
|
912
|
-
},
|
|
913
|
-
teal: {
|
|
914
|
-
bg: "bg-teal-500/10",
|
|
915
|
-
border: "border-teal-500/30",
|
|
916
|
-
text: "text-teal-400",
|
|
917
|
-
glow: "shadow-teal-500/20"
|
|
918
|
-
},
|
|
919
|
-
cyan: {
|
|
920
|
-
bg: "bg-cyan-500/10",
|
|
921
|
-
border: "border-cyan-500/30",
|
|
922
|
-
text: "text-cyan-400",
|
|
923
|
-
glow: "shadow-cyan-500/20"
|
|
924
|
-
},
|
|
925
|
-
violet: {
|
|
926
|
-
bg: "bg-violet-500/10",
|
|
927
|
-
border: "border-violet-500/30",
|
|
928
|
-
text: "text-violet-400",
|
|
929
|
-
glow: "shadow-violet-500/20"
|
|
930
|
-
},
|
|
931
|
-
pink: {
|
|
932
|
-
bg: "bg-pink-500/10",
|
|
933
|
-
border: "border-pink-500/30",
|
|
934
|
-
text: "text-pink-400",
|
|
935
|
-
glow: "shadow-pink-500/20"
|
|
936
|
-
}
|
|
937
|
-
};
|
|
938
|
-
return /* @__PURE__ */ jsx("section", {
|
|
939
|
-
className: "py-24 px-6",
|
|
940
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
941
|
-
className: "max-w-6xl mx-auto",
|
|
967
|
+
];
|
|
968
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
969
|
+
className: "relative border-t border-border",
|
|
970
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
971
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
942
972
|
children: [
|
|
943
973
|
/* @__PURE__ */ jsxs("div", {
|
|
944
|
-
className: "
|
|
945
|
-
children: [
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
className: "w-3.5 h-3.5",
|
|
950
|
-
fill: "none",
|
|
951
|
-
stroke: "currentColor",
|
|
952
|
-
viewBox: "0 0 24 24",
|
|
953
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
954
|
-
strokeLinecap: "round",
|
|
955
|
-
strokeLinejoin: "round",
|
|
956
|
-
strokeWidth: 2,
|
|
957
|
-
d: "M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
|
|
958
|
-
})
|
|
959
|
-
}), "Clean Architecture"]
|
|
960
|
-
}),
|
|
961
|
-
/* @__PURE__ */ jsx("h2", {
|
|
962
|
-
className: "text-4xl md:text-5xl font-bold text-white mb-6",
|
|
963
|
-
children: "Every Module, Same Structure"
|
|
964
|
-
}),
|
|
965
|
-
/* @__PURE__ */ jsx("p", {
|
|
966
|
-
className: "text-xl text-white/60 max-w-2xl mx-auto",
|
|
967
|
-
children: "Clear boundaries between layers. AGENTS.md in every package ensures AI and humans build consistently."
|
|
968
|
-
})
|
|
969
|
-
]
|
|
974
|
+
className: "flex items-center gap-4 mb-4",
|
|
975
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
976
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
977
|
+
children: "Clean Architecture"
|
|
978
|
+
})]
|
|
970
979
|
}),
|
|
971
|
-
/* @__PURE__ */ jsx("
|
|
972
|
-
className: "
|
|
973
|
-
children:
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
980
|
+
/* @__PURE__ */ jsx("h2", {
|
|
981
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
982
|
+
children: "Every Module, Same Structure"
|
|
983
|
+
}),
|
|
984
|
+
/* @__PURE__ */ jsx("p", {
|
|
985
|
+
className: "text-lg text-muted-foreground max-w-2xl",
|
|
986
|
+
children: "Clear boundaries between layers. AGENTS.md in every package ensures AI and humans build consistently."
|
|
987
|
+
})
|
|
988
|
+
]
|
|
989
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
990
|
+
className: "max-w-7xl mx-auto",
|
|
991
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
992
|
+
className: "grid lg:grid-cols-12",
|
|
993
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
994
|
+
className: "lg:col-span-8 border-b lg:border-b-0 lg:border-r border-border p-8 lg:p-12",
|
|
995
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
996
|
+
className: "space-y-1",
|
|
997
|
+
children: layers.map((layer, index) => /* @__PURE__ */ jsxs("div", {
|
|
998
|
+
className: "group relative",
|
|
999
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1000
|
+
className: "flex items-stretch border border-border hover:border-primary/30 transition-colors",
|
|
1001
|
+
children: [
|
|
1002
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1003
|
+
className: "w-40 shrink-0 p-4 bg-card border-r border-border flex flex-col justify-center",
|
|
1004
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
1005
|
+
className: "text-xs text-muted-foreground tracking-[0.1em] uppercase mb-1",
|
|
1006
|
+
children: ["Layer ", String(index + 1).padStart(2, "0")]
|
|
1007
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1008
|
+
className: "font-medium text-foreground",
|
|
1009
|
+
children: layer.name
|
|
1010
|
+
})]
|
|
1011
|
+
}),
|
|
1012
|
+
/* @__PURE__ */ jsx("div", {
|
|
1013
|
+
className: "flex-1 p-4 flex items-center gap-3 flex-wrap",
|
|
1014
|
+
children: layer.items.map((item) => /* @__PURE__ */ jsxs("div", {
|
|
1015
|
+
className: "inline-flex items-center gap-2 px-3 py-1.5 bg-background border border-border",
|
|
1016
|
+
children: [/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 bg-primary" }), /* @__PURE__ */ jsx("code", {
|
|
1017
|
+
className: "text-sm font-mono text-foreground/80",
|
|
1018
|
+
children: item
|
|
990
1019
|
})]
|
|
991
|
-
})
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
className: "text-sm font-mono text-white/70",
|
|
998
|
-
children: item
|
|
999
|
-
})]
|
|
1000
|
-
}, item))
|
|
1001
|
-
}),
|
|
1002
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1003
|
-
className: "shrink-0 flex items-center gap-1.5 px-2.5 py-1 rounded-md bg-emerald-500/10 border border-emerald-500/20",
|
|
1020
|
+
}, item))
|
|
1021
|
+
}),
|
|
1022
|
+
/* @__PURE__ */ jsx("div", {
|
|
1023
|
+
className: "hidden md:flex w-28 shrink-0 items-center justify-center border-l border-border bg-primary/5",
|
|
1024
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1025
|
+
className: "flex items-center gap-1.5 text-primary",
|
|
1004
1026
|
children: [/* @__PURE__ */ jsx("svg", {
|
|
1005
|
-
className: "w-3.5 h-3.5
|
|
1027
|
+
className: "w-3.5 h-3.5",
|
|
1006
1028
|
fill: "none",
|
|
1007
1029
|
stroke: "currentColor",
|
|
1008
1030
|
viewBox: "0 0 24 24",
|
|
@@ -1013,20 +1035,30 @@ function ArchitecturePreview() {
|
|
|
1013
1035
|
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"
|
|
1014
1036
|
})
|
|
1015
1037
|
}), /* @__PURE__ */ jsx("span", {
|
|
1016
|
-
className: "text-xs font-mono
|
|
1017
|
-
children: "
|
|
1038
|
+
className: "text-xs font-mono",
|
|
1039
|
+
children: ".md"
|
|
1018
1040
|
})]
|
|
1019
1041
|
})
|
|
1020
|
-
|
|
1042
|
+
})
|
|
1043
|
+
]
|
|
1044
|
+
}), index < layers.length - 1 && /* @__PURE__ */ jsx("div", {
|
|
1045
|
+
className: "flex justify-center py-1",
|
|
1046
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
1047
|
+
className: "w-4 h-4 text-muted-foreground",
|
|
1048
|
+
fill: "none",
|
|
1049
|
+
stroke: "currentColor",
|
|
1050
|
+
viewBox: "0 0 24 24",
|
|
1051
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
1052
|
+
strokeLinecap: "round",
|
|
1053
|
+
strokeLinejoin: "round",
|
|
1054
|
+
strokeWidth: 1.5,
|
|
1055
|
+
d: "M19 14l-7 7m0 0l-7-7m7 7V3"
|
|
1056
|
+
})
|
|
1021
1057
|
})
|
|
1022
1058
|
})]
|
|
1023
|
-
}, layer.name)
|
|
1024
|
-
})
|
|
1025
|
-
|
|
1026
|
-
/* @__PURE__ */ jsx("div", {
|
|
1027
|
-
className: "mt-8 flex justify-center",
|
|
1028
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1029
|
-
className: "flex items-center gap-2 text-sm text-white/40",
|
|
1059
|
+
}, layer.name))
|
|
1060
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1061
|
+
className: "mt-8 flex items-center gap-2 text-sm text-muted-foreground",
|
|
1030
1062
|
children: [/* @__PURE__ */ jsx("svg", {
|
|
1031
1063
|
className: "w-4 h-4",
|
|
1032
1064
|
fill: "none",
|
|
@@ -1035,14 +1067,41 @@ function ArchitecturePreview() {
|
|
|
1035
1067
|
children: /* @__PURE__ */ jsx("path", {
|
|
1036
1068
|
strokeLinecap: "round",
|
|
1037
1069
|
strokeLinejoin: "round",
|
|
1038
|
-
strokeWidth:
|
|
1070
|
+
strokeWidth: 1.5,
|
|
1039
1071
|
d: "M19 14l-7 7m0 0l-7-7m7 7V3"
|
|
1040
1072
|
})
|
|
1041
1073
|
}), /* @__PURE__ */ jsx("span", { children: "Dependencies flow down only" })]
|
|
1042
|
-
})
|
|
1043
|
-
})
|
|
1044
|
-
|
|
1045
|
-
|
|
1074
|
+
})]
|
|
1075
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1076
|
+
className: "lg:col-span-4 p-8 lg:p-12 bg-card",
|
|
1077
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1078
|
+
className: "flex items-center gap-3 mb-8",
|
|
1079
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1080
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase",
|
|
1081
|
+
children: "Layer Details"
|
|
1082
|
+
})]
|
|
1083
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1084
|
+
className: "space-y-6",
|
|
1085
|
+
children: layers.map((layer, index) => /* @__PURE__ */ jsx("div", {
|
|
1086
|
+
className: "group",
|
|
1087
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1088
|
+
className: "flex items-start gap-4",
|
|
1089
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1090
|
+
className: "w-6 h-6 flex items-center justify-center border border-border text-xs font-mono text-muted-foreground shrink-0",
|
|
1091
|
+
children: index + 1
|
|
1092
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
1093
|
+
className: "text-foreground font-medium mb-1 group-hover:text-primary transition-colors",
|
|
1094
|
+
children: layer.name
|
|
1095
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1096
|
+
className: "text-muted-foreground text-sm",
|
|
1097
|
+
children: layer.desc
|
|
1098
|
+
})] })]
|
|
1099
|
+
})
|
|
1100
|
+
}, layer.name))
|
|
1101
|
+
})]
|
|
1102
|
+
})]
|
|
1103
|
+
})
|
|
1104
|
+
})]
|
|
1046
1105
|
});
|
|
1047
1106
|
}
|
|
1048
1107
|
|
|
@@ -1130,67 +1189,237 @@ function CliDemo() {
|
|
|
1130
1189
|
};
|
|
1131
1190
|
}, [activeCommand]);
|
|
1132
1191
|
return /* @__PURE__ */ jsxs("section", {
|
|
1133
|
-
className: "
|
|
1134
|
-
children: [/* @__PURE__ */
|
|
1135
|
-
className: "max-w-
|
|
1192
|
+
className: "relative border-t border-border",
|
|
1193
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1194
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
1136
1195
|
children: [
|
|
1137
1196
|
/* @__PURE__ */ jsxs("div", {
|
|
1138
|
-
className: "
|
|
1139
|
-
children: [/* @__PURE__ */ jsx("
|
|
1140
|
-
className: "text-
|
|
1141
|
-
children: "
|
|
1142
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
1143
|
-
className: "text-xl text-white/60",
|
|
1144
|
-
children: "Generate, add, search, and validate modules from the command line."
|
|
1197
|
+
className: "flex items-center gap-4 mb-4",
|
|
1198
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1199
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
1200
|
+
children: "Developer Experience"
|
|
1145
1201
|
})]
|
|
1146
1202
|
}),
|
|
1147
|
-
/* @__PURE__ */
|
|
1148
|
-
className: "
|
|
1149
|
-
children:
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
className: "p-
|
|
1203
|
+
/* @__PURE__ */ jsx("h2", {
|
|
1204
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
1205
|
+
children: "Powerful CLI"
|
|
1206
|
+
}),
|
|
1207
|
+
/* @__PURE__ */ jsx("p", {
|
|
1208
|
+
className: "text-lg text-muted-foreground",
|
|
1209
|
+
children: "Generate, add, search, and validate modules from the command line."
|
|
1210
|
+
})
|
|
1211
|
+
]
|
|
1212
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1213
|
+
className: "max-w-7xl mx-auto",
|
|
1214
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1215
|
+
className: "grid lg:grid-cols-12",
|
|
1216
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1217
|
+
className: "lg:col-span-8 border-b lg:border-b-0 lg:border-r border-border",
|
|
1218
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1219
|
+
className: "p-8 lg:p-12",
|
|
1164
1220
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1165
|
-
className: "
|
|
1166
|
-
children: [
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1221
|
+
className: "border border-border bg-background",
|
|
1222
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1223
|
+
className: "flex items-center justify-between px-4 py-3 border-b border-border bg-card",
|
|
1224
|
+
children: [
|
|
1225
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1226
|
+
className: "flex items-center gap-2",
|
|
1227
|
+
children: [
|
|
1228
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-error)/0.8)]" }),
|
|
1229
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-warning)/0.8)]" }),
|
|
1230
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-success)/0.8)]" })
|
|
1231
|
+
]
|
|
1232
|
+
}),
|
|
1233
|
+
/* @__PURE__ */ jsx("span", {
|
|
1234
|
+
className: "text-xs text-muted-foreground font-mono",
|
|
1235
|
+
children: "terminal"
|
|
1236
|
+
}),
|
|
1237
|
+
/* @__PURE__ */ jsx("div", { className: "w-16" })
|
|
1238
|
+
]
|
|
1239
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1240
|
+
className: "p-6 font-mono text-sm min-h-[320px]",
|
|
1241
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1242
|
+
className: "flex items-center gap-2 mb-4",
|
|
1243
|
+
children: [
|
|
1244
|
+
/* @__PURE__ */ jsx("span", {
|
|
1245
|
+
className: "text-primary",
|
|
1246
|
+
children: "$"
|
|
1247
|
+
}),
|
|
1248
|
+
/* @__PURE__ */ jsx("span", {
|
|
1249
|
+
className: "text-foreground",
|
|
1250
|
+
children: typedInput
|
|
1251
|
+
}),
|
|
1252
|
+
isTyping && /* @__PURE__ */ jsx("span", { className: "w-2 h-5 bg-primary animate-pulse" })
|
|
1253
|
+
]
|
|
1254
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1255
|
+
className: "space-y-0.5",
|
|
1256
|
+
children: displayedLines.map((line, index) => /* @__PURE__ */ jsx("div", {
|
|
1257
|
+
className: `${line?.startsWith("✓") ? "text-[hsl(var(--status-success))]" : line?.includes("!") ? "text-foreground" : "text-muted-foreground"}`,
|
|
1258
|
+
children: line || "\xA0"
|
|
1259
|
+
}, index))
|
|
1260
|
+
})]
|
|
1261
|
+
})]
|
|
1177
1262
|
}), /* @__PURE__ */ jsx("div", {
|
|
1178
|
-
className: "
|
|
1179
|
-
children:
|
|
1180
|
-
|
|
1181
|
-
|
|
1263
|
+
className: "flex justify-center gap-2 mt-6",
|
|
1264
|
+
children: commands.map((_, index) => /* @__PURE__ */ jsx("button", {
|
|
1265
|
+
onClick: () => setActiveCommand(index),
|
|
1266
|
+
className: `h-1.5 transition-all ${index === activeCommand ? "bg-primary w-8" : "bg-muted hover:bg-muted-foreground/30 w-1.5"}`
|
|
1182
1267
|
}, index))
|
|
1183
1268
|
})]
|
|
1269
|
+
})
|
|
1270
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1271
|
+
className: "lg:col-span-4 p-8 lg:p-12 bg-card",
|
|
1272
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1273
|
+
className: "flex items-center gap-3 mb-8",
|
|
1274
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1275
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase",
|
|
1276
|
+
children: "Commands"
|
|
1277
|
+
})]
|
|
1278
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1279
|
+
className: "space-y-4",
|
|
1280
|
+
children: [
|
|
1281
|
+
{
|
|
1282
|
+
cmd: "generate",
|
|
1283
|
+
desc: "Scaffold new modules"
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
cmd: "add",
|
|
1287
|
+
desc: "Install from marketplace"
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
cmd: "doctor",
|
|
1291
|
+
desc: "Validate project setup"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
cmd: "deploy",
|
|
1295
|
+
desc: "Ship to production"
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
cmd: "publish",
|
|
1299
|
+
desc: "Publish to marketplace"
|
|
1300
|
+
}
|
|
1301
|
+
].map((item, index) => /* @__PURE__ */ jsxs("div", {
|
|
1302
|
+
className: "group flex items-start gap-4",
|
|
1303
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1304
|
+
className: "w-6 h-6 flex items-center justify-center border border-border text-xs font-mono text-muted-foreground shrink-0",
|
|
1305
|
+
children: index + 1
|
|
1306
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("code", {
|
|
1307
|
+
className: "text-foreground font-medium group-hover:text-primary transition-colors",
|
|
1308
|
+
children: ["kuckit ", item.cmd]
|
|
1309
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1310
|
+
className: "text-muted-foreground text-sm mt-0.5",
|
|
1311
|
+
children: item.desc
|
|
1312
|
+
})] })]
|
|
1313
|
+
}, item.cmd))
|
|
1314
|
+
})]
|
|
1315
|
+
})]
|
|
1316
|
+
})
|
|
1317
|
+
})]
|
|
1318
|
+
});
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
//#endregion
|
|
1322
|
+
//#region src/client/components/pricing.tsx
|
|
1323
|
+
const product = {
|
|
1324
|
+
name: "Kuckit",
|
|
1325
|
+
price: "249",
|
|
1326
|
+
description: "Stop debugging. Start launching. Everything you need to escape the vibe coding trap.",
|
|
1327
|
+
features: [
|
|
1328
|
+
"Production-ready architecture",
|
|
1329
|
+
"Auth, payments, dashboards included",
|
|
1330
|
+
"Code you can actually understand",
|
|
1331
|
+
"Deploy in hours, not weeks",
|
|
1332
|
+
"Support when you get stuck"
|
|
1333
|
+
]
|
|
1334
|
+
};
|
|
1335
|
+
function Pricing() {
|
|
1336
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
1337
|
+
id: "pricing",
|
|
1338
|
+
className: "relative border-t border-border scroll-mt-16",
|
|
1339
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1340
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
1341
|
+
children: [
|
|
1342
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1343
|
+
className: "flex items-center gap-4 mb-4",
|
|
1344
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1345
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
1346
|
+
children: "One-time investment"
|
|
1184
1347
|
})]
|
|
1185
1348
|
}),
|
|
1186
|
-
/* @__PURE__ */ jsx("
|
|
1187
|
-
className: "
|
|
1188
|
-
children:
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1349
|
+
/* @__PURE__ */ jsx("h2", {
|
|
1350
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em]",
|
|
1351
|
+
children: "Skip months of debugging"
|
|
1352
|
+
}),
|
|
1353
|
+
/* @__PURE__ */ jsx("p", {
|
|
1354
|
+
className: "mt-4 text-lg text-muted-foreground max-w-2xl",
|
|
1355
|
+
children: "Pay once. Ship forever. No subscriptions, no surprises."
|
|
1192
1356
|
})
|
|
1193
1357
|
]
|
|
1358
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1359
|
+
className: "max-w-7xl mx-auto px-8 py-16",
|
|
1360
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
1361
|
+
className: "flex justify-center",
|
|
1362
|
+
children: /* @__PURE__ */ jsxs(GlareCard, {
|
|
1363
|
+
className: "flex flex-col p-8 min-h-[520px]",
|
|
1364
|
+
children: [
|
|
1365
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1366
|
+
className: "flex items-start justify-between mb-8",
|
|
1367
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1368
|
+
className: "space-y-3",
|
|
1369
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1370
|
+
className: "inline-flex items-center justify-center size-12 rounded-sm bg-primary/10 border border-primary/20",
|
|
1371
|
+
children: /* @__PURE__ */ jsx(Zap, { className: "size-6 text-primary" })
|
|
1372
|
+
}), /* @__PURE__ */ jsx("h3", {
|
|
1373
|
+
className: "text-2xl font-normal text-foreground tracking-tight",
|
|
1374
|
+
children: product.name
|
|
1375
|
+
})]
|
|
1376
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1377
|
+
className: "px-3 py-1.5 text-xs uppercase tracking-[0.15em] bg-primary/10 text-primary border border-primary/20",
|
|
1378
|
+
children: "Popular"
|
|
1379
|
+
})]
|
|
1380
|
+
}),
|
|
1381
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1382
|
+
className: "mb-8",
|
|
1383
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1384
|
+
className: "flex items-baseline gap-1",
|
|
1385
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1386
|
+
className: "text-sm text-muted-foreground",
|
|
1387
|
+
children: "$"
|
|
1388
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1389
|
+
className: "text-6xl font-light text-foreground tabular-nums tracking-tighter",
|
|
1390
|
+
children: product.price
|
|
1391
|
+
})]
|
|
1392
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
1393
|
+
className: "text-muted-foreground text-sm mt-3 tracking-wide",
|
|
1394
|
+
children: "one-time payment"
|
|
1395
|
+
})]
|
|
1396
|
+
}),
|
|
1397
|
+
/* @__PURE__ */ jsx("div", { className: "h-px bg-gradient-to-r from-transparent via-border to-transparent mb-8" }),
|
|
1398
|
+
/* @__PURE__ */ jsx("p", {
|
|
1399
|
+
className: "text-muted-foreground text-sm leading-relaxed mb-8",
|
|
1400
|
+
children: product.description
|
|
1401
|
+
}),
|
|
1402
|
+
/* @__PURE__ */ jsx("div", {
|
|
1403
|
+
className: "space-y-3 mb-10 flex-grow",
|
|
1404
|
+
children: product.features.map((feature) => /* @__PURE__ */ jsxs("div", {
|
|
1405
|
+
className: "flex items-center gap-3",
|
|
1406
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1407
|
+
className: "w-4 h-4 flex items-center justify-center",
|
|
1408
|
+
children: /* @__PURE__ */ jsx(Check, { className: "w-3 h-3 text-primary" })
|
|
1409
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1410
|
+
className: "text-sm text-foreground",
|
|
1411
|
+
children: feature
|
|
1412
|
+
})]
|
|
1413
|
+
}, feature))
|
|
1414
|
+
}),
|
|
1415
|
+
/* @__PURE__ */ jsx("a", {
|
|
1416
|
+
href: "/billing",
|
|
1417
|
+
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",
|
|
1418
|
+
children: "Get Started"
|
|
1419
|
+
})
|
|
1420
|
+
]
|
|
1421
|
+
})
|
|
1422
|
+
})
|
|
1194
1423
|
})]
|
|
1195
1424
|
});
|
|
1196
1425
|
}
|
|
@@ -1251,112 +1480,113 @@ function FAQ() {
|
|
|
1251
1480
|
const [expandedId, setExpandedId] = useState(null);
|
|
1252
1481
|
const sellerFaqs = faqItems.filter((item) => item.category === "seller");
|
|
1253
1482
|
const generalFaqs = faqItems.filter((item) => item.category === "general");
|
|
1254
|
-
return /* @__PURE__ */
|
|
1255
|
-
className: "relative
|
|
1256
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1257
|
-
className: "max-w-
|
|
1483
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
1484
|
+
className: "relative border-t border-border",
|
|
1485
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1486
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
1258
1487
|
children: [
|
|
1259
1488
|
/* @__PURE__ */ jsxs("div", {
|
|
1260
|
-
className: "
|
|
1261
|
-
children: [/* @__PURE__ */ jsx("
|
|
1262
|
-
className: "text-
|
|
1263
|
-
children: "
|
|
1264
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
1265
|
-
className: "text-white/60 text-lg",
|
|
1266
|
-
children: "Everything you need to know about developing, selling, and partnering with Kuckit"
|
|
1489
|
+
className: "flex items-center gap-4 mb-4",
|
|
1490
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1491
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
1492
|
+
children: "FAQ"
|
|
1267
1493
|
})]
|
|
1268
1494
|
}),
|
|
1269
|
-
/* @__PURE__ */
|
|
1270
|
-
className: "mb-
|
|
1271
|
-
children:
|
|
1272
|
-
|
|
1273
|
-
|
|
1495
|
+
/* @__PURE__ */ jsx("h2", {
|
|
1496
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
|
|
1497
|
+
children: "Frequently Asked Questions"
|
|
1498
|
+
}),
|
|
1499
|
+
/* @__PURE__ */ jsx("p", {
|
|
1500
|
+
className: "text-lg text-muted-foreground max-w-2xl",
|
|
1501
|
+
children: "Everything you need to know about developing, selling, and partnering with Kuckit"
|
|
1502
|
+
})
|
|
1503
|
+
]
|
|
1504
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1505
|
+
className: "max-w-7xl mx-auto",
|
|
1506
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1507
|
+
className: "grid lg:grid-cols-2",
|
|
1508
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1509
|
+
className: "border-b lg:border-b-0 lg:border-r border-border",
|
|
1510
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1511
|
+
className: "px-8 py-6 border-b border-border bg-card",
|
|
1512
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1513
|
+
className: "flex items-center gap-3",
|
|
1514
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1515
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
|
|
1516
|
+
children: "01"
|
|
1517
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1518
|
+
className: "font-medium text-foreground",
|
|
1519
|
+
children: "For Module Sellers"
|
|
1520
|
+
})]
|
|
1521
|
+
})
|
|
1274
1522
|
}), /* @__PURE__ */ jsx("div", {
|
|
1275
|
-
className: "
|
|
1276
|
-
children: sellerFaqs.map((item) => /* @__PURE__ */ jsx(
|
|
1523
|
+
className: "divide-y divide-border",
|
|
1524
|
+
children: sellerFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
|
|
1277
1525
|
item,
|
|
1526
|
+
index,
|
|
1278
1527
|
isExpanded: expandedId === item.id,
|
|
1279
1528
|
onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
|
|
1280
1529
|
}, item.id))
|
|
1281
1530
|
})]
|
|
1282
|
-
}),
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1531
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
1532
|
+
className: "px-8 py-6 border-b border-border bg-card",
|
|
1533
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1534
|
+
className: "flex items-center gap-3",
|
|
1535
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1536
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
|
|
1537
|
+
children: "02"
|
|
1538
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1539
|
+
className: "font-medium text-foreground",
|
|
1540
|
+
children: "General"
|
|
1541
|
+
})]
|
|
1542
|
+
})
|
|
1286
1543
|
}), /* @__PURE__ */ jsx("div", {
|
|
1287
|
-
className: "
|
|
1288
|
-
children: generalFaqs.map((item) => /* @__PURE__ */ jsx(
|
|
1544
|
+
className: "divide-y divide-border",
|
|
1545
|
+
children: generalFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
|
|
1289
1546
|
item,
|
|
1547
|
+
index,
|
|
1290
1548
|
isExpanded: expandedId === item.id,
|
|
1291
1549
|
onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
|
|
1292
1550
|
}, item.id))
|
|
1293
|
-
})] })
|
|
1294
|
-
|
|
1295
|
-
})
|
|
1551
|
+
})] })]
|
|
1552
|
+
})
|
|
1553
|
+
})]
|
|
1296
1554
|
});
|
|
1297
1555
|
}
|
|
1298
|
-
function
|
|
1299
|
-
return /* @__PURE__ */
|
|
1556
|
+
function FAQItemComponent({ item, index, isExpanded, onToggle }) {
|
|
1557
|
+
return /* @__PURE__ */ jsx("button", {
|
|
1300
1558
|
onClick: onToggle,
|
|
1301
|
-
className: "w-full text-left
|
|
1302
|
-
children:
|
|
1303
|
-
className: "flex items-start
|
|
1559
|
+
className: "w-full text-left p-6 hover:bg-card/50 transition-colors",
|
|
1560
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1561
|
+
className: "flex items-start gap-4",
|
|
1304
1562
|
children: [/* @__PURE__ */ jsx("span", {
|
|
1305
|
-
className: "text-
|
|
1306
|
-
children:
|
|
1307
|
-
}), /* @__PURE__ */
|
|
1308
|
-
|
|
1309
|
-
|
|
1563
|
+
className: "text-xs text-muted-foreground font-mono shrink-0 pt-1",
|
|
1564
|
+
children: String(index + 1).padStart(2, "0")
|
|
1565
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1566
|
+
className: "flex-1",
|
|
1567
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1568
|
+
className: "flex items-start justify-between gap-4",
|
|
1569
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1570
|
+
className: "text-foreground font-medium leading-relaxed",
|
|
1571
|
+
children: item.question
|
|
1572
|
+
}), /* @__PURE__ */ jsx("svg", {
|
|
1573
|
+
className: `w-4 h-4 text-muted-foreground shrink-0 mt-1 transition-transform duration-200 ${isExpanded ? "rotate-45" : ""}`,
|
|
1574
|
+
fill: "none",
|
|
1575
|
+
stroke: "currentColor",
|
|
1576
|
+
viewBox: "0 0 24 24",
|
|
1577
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
1578
|
+
strokeLinecap: "round",
|
|
1579
|
+
strokeLinejoin: "round",
|
|
1580
|
+
strokeWidth: 2,
|
|
1581
|
+
d: "M12 4v16m8-8H4"
|
|
1582
|
+
})
|
|
1583
|
+
})]
|
|
1584
|
+
}), isExpanded && /* @__PURE__ */ jsx("p", {
|
|
1585
|
+
className: "text-muted-foreground text-sm leading-relaxed mt-4 pr-8",
|
|
1586
|
+
children: item.answer
|
|
1587
|
+
})]
|
|
1310
1588
|
})]
|
|
1311
|
-
})
|
|
1312
|
-
className: "text-white/70 mt-4 text-sm md:text-base leading-relaxed",
|
|
1313
|
-
children: item.answer
|
|
1314
|
-
})]
|
|
1315
|
-
});
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
|
-
//#endregion
|
|
1319
|
-
//#region src/client/components/WaitlistForm.tsx
|
|
1320
|
-
function WaitlistForm({ source = "landing", className }) {
|
|
1321
|
-
const rpc = useRpc();
|
|
1322
|
-
const [email, setEmail] = useState("");
|
|
1323
|
-
const [state, setState] = useState("idle");
|
|
1324
|
-
const handleSubmit = async (e) => {
|
|
1325
|
-
e.preventDefault();
|
|
1326
|
-
setState("loading");
|
|
1327
|
-
try {
|
|
1328
|
-
const result = await rpc.waitlist.join({
|
|
1329
|
-
email,
|
|
1330
|
-
source
|
|
1331
|
-
});
|
|
1332
|
-
if (result.success) {
|
|
1333
|
-
toast.success(result.message);
|
|
1334
|
-
setEmail("");
|
|
1335
|
-
} else toast.error(result.message || "Something went wrong. Please try again.");
|
|
1336
|
-
} catch (error) {
|
|
1337
|
-
console.error("Waitlist submission error:", error);
|
|
1338
|
-
toast.error("Network error. Please try again.");
|
|
1339
|
-
} finally {
|
|
1340
|
-
setState("idle");
|
|
1341
|
-
}
|
|
1342
|
-
};
|
|
1343
|
-
return /* @__PURE__ */ jsxs("form", {
|
|
1344
|
-
onSubmit: handleSubmit,
|
|
1345
|
-
className: `flex flex-col sm:flex-row gap-3 ${className}`,
|
|
1346
|
-
children: [/* @__PURE__ */ jsx("input", {
|
|
1347
|
-
type: "email",
|
|
1348
|
-
value: email,
|
|
1349
|
-
onChange: (e) => setEmail(e.target.value),
|
|
1350
|
-
placeholder: "Enter your email",
|
|
1351
|
-
required: true,
|
|
1352
|
-
disabled: state === "loading",
|
|
1353
|
-
className: "flex-1 px-5 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder:text-white/40 focus:outline-none focus:border-emerald-500/50 focus:ring-2 focus:ring-emerald-500/20 transition-all disabled:opacity-50"
|
|
1354
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
1355
|
-
type: "submit",
|
|
1356
|
-
disabled: state === "loading",
|
|
1357
|
-
className: "px-6 py-3 rounded-xl bg-white/10 border border-white/20 font-medium text-white hover:bg-white/15 transition-colors shrink-0 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1358
|
-
children: state === "loading" ? "Joining..." : "Join Waitlist"
|
|
1359
|
-
})]
|
|
1589
|
+
})
|
|
1360
1590
|
});
|
|
1361
1591
|
}
|
|
1362
1592
|
|
|
@@ -1364,97 +1594,79 @@ function WaitlistForm({ source = "landing", className }) {
|
|
|
1364
1594
|
//#region src/client/components/cta-section.tsx
|
|
1365
1595
|
function CtaSection() {
|
|
1366
1596
|
return /* @__PURE__ */ jsxs("section", {
|
|
1367
|
-
className: "
|
|
1368
|
-
children: [/* @__PURE__ */
|
|
1369
|
-
className: "
|
|
1370
|
-
children: /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-gradient-to-br from-emerald-500/20 via-teal-500/10 to-transparent rounded-full blur-3xl" })
|
|
1371
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1372
|
-
className: "max-w-4xl mx-auto relative",
|
|
1597
|
+
className: "relative border-t border-border",
|
|
1598
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1599
|
+
className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
|
|
1373
1600
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1374
|
-
className: "
|
|
1375
|
-
children: [
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
/* @__PURE__ */ jsx("p", {
|
|
1383
|
-
className: "text-xl text-white/60 mb-10 max-w-xl mx-auto",
|
|
1384
|
-
children: "Join thousands of developers building modular TypeScript applications."
|
|
1385
|
-
}),
|
|
1386
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1387
|
-
className: "flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",
|
|
1388
|
-
children: [/* @__PURE__ */ jsxs("a", {
|
|
1389
|
-
href: "/docs",
|
|
1390
|
-
className: "group relative px-8 py-4 bg-gradient-to-r from-emerald-500 to-teal-500 rounded-xl font-semibold text-black transition-all hover:scale-105 hover:shadow-lg hover:shadow-emerald-500/25",
|
|
1391
|
-
children: ["Read the Docs", /* @__PURE__ */ jsx("span", { className: "absolute inset-0 rounded-xl bg-gradient-to-r from-emerald-400 to-teal-400 opacity-0 group-hover:opacity-100 transition-opacity blur-xl -z-10" })]
|
|
1392
|
-
}), /* @__PURE__ */ jsxs("a", {
|
|
1393
|
-
href: "https://github.com/kuckit",
|
|
1394
|
-
className: "px-8 py-4 rounded-xl font-semibold text-white border border-white/20 bg-white/5 hover:bg-white/10 hover:border-white/30 transition-all flex items-center gap-2",
|
|
1395
|
-
children: [/* @__PURE__ */ jsx("svg", {
|
|
1396
|
-
className: "w-5 h-5",
|
|
1397
|
-
fill: "currentColor",
|
|
1398
|
-
viewBox: "0 0 24 24",
|
|
1399
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
1400
|
-
fillRule: "evenodd",
|
|
1401
|
-
clipRule: "evenodd",
|
|
1402
|
-
d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
|
1403
|
-
})
|
|
1404
|
-
}), "View on GitHub"]
|
|
1405
|
-
})]
|
|
1406
|
-
}),
|
|
1407
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1408
|
-
className: "flex items-center gap-4 mb-10",
|
|
1409
|
-
children: [
|
|
1410
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-white/10" }),
|
|
1411
|
-
/* @__PURE__ */ jsx("span", {
|
|
1412
|
-
className: "text-white/40 text-sm",
|
|
1413
|
-
children: "or join the marketplace waitlist"
|
|
1414
|
-
}),
|
|
1415
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-white/10" })
|
|
1416
|
-
]
|
|
1417
|
-
}),
|
|
1418
|
-
/* @__PURE__ */ jsx(WaitlistForm, {
|
|
1419
|
-
source: "cta-section",
|
|
1420
|
-
className: "max-w-md mx-auto"
|
|
1421
|
-
})
|
|
1422
|
-
]
|
|
1423
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1424
|
-
className: "grid grid-cols-3 gap-6 mt-12",
|
|
1425
|
-
children: [
|
|
1426
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1427
|
-
className: "text-center",
|
|
1428
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1429
|
-
className: "text-3xl md:text-4xl font-bold text-white mb-1",
|
|
1430
|
-
children: "100%"
|
|
1431
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1432
|
-
className: "text-white/50 text-sm",
|
|
1433
|
-
children: "TypeScript"
|
|
1434
|
-
})]
|
|
1435
|
-
}),
|
|
1436
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1437
|
-
className: "text-center",
|
|
1438
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1439
|
-
className: "text-3xl md:text-4xl font-bold text-white mb-1",
|
|
1440
|
-
children: "5 min"
|
|
1441
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1442
|
-
className: "text-white/50 text-sm",
|
|
1443
|
-
children: "To first module"
|
|
1444
|
-
})]
|
|
1445
|
-
}),
|
|
1446
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1447
|
-
className: "text-center",
|
|
1448
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1449
|
-
className: "text-3xl md:text-4xl font-bold text-white mb-1",
|
|
1450
|
-
children: "∞"
|
|
1451
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1452
|
-
className: "text-white/50 text-sm",
|
|
1453
|
-
children: "Modules possible"
|
|
1454
|
-
})]
|
|
1455
|
-
})
|
|
1456
|
-
]
|
|
1601
|
+
className: "flex items-center gap-4 mb-4",
|
|
1602
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
1603
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
1604
|
+
children: "The loop ends here"
|
|
1605
|
+
})]
|
|
1606
|
+
}), /* @__PURE__ */ jsx("h2", {
|
|
1607
|
+
className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em]",
|
|
1608
|
+
children: "Ready to ship?"
|
|
1457
1609
|
})]
|
|
1610
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1611
|
+
className: "max-w-7xl mx-auto",
|
|
1612
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
1613
|
+
className: "border-b border-border",
|
|
1614
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1615
|
+
className: "p-8 md:p-12",
|
|
1616
|
+
children: [
|
|
1617
|
+
/* @__PURE__ */ jsx("p", {
|
|
1618
|
+
className: "text-lg text-muted-foreground mb-10 max-w-lg leading-relaxed",
|
|
1619
|
+
children: "You've built something. Now let's make it launchable. Get the foundation you need to go from stuck to shipped."
|
|
1620
|
+
}),
|
|
1621
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1622
|
+
className: "flex flex-col sm:flex-row items-start gap-4 mb-12",
|
|
1623
|
+
children: [/* @__PURE__ */ jsxs("a", {
|
|
1624
|
+
href: "/docs/getting-started",
|
|
1625
|
+
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",
|
|
1626
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Get Unstuck" }), /* @__PURE__ */ jsx("svg", {
|
|
1627
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
1628
|
+
fill: "none",
|
|
1629
|
+
stroke: "currentColor",
|
|
1630
|
+
viewBox: "0 0 24 24",
|
|
1631
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
1632
|
+
strokeLinecap: "round",
|
|
1633
|
+
strokeLinejoin: "round",
|
|
1634
|
+
strokeWidth: 2,
|
|
1635
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
1636
|
+
})
|
|
1637
|
+
})]
|
|
1638
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
1639
|
+
href: "/docs",
|
|
1640
|
+
className: "inline-flex items-center gap-3 px-6 py-4 border border-border text-foreground hover:border-primary/50 hover:bg-card transition-all",
|
|
1641
|
+
children: /* @__PURE__ */ jsx("span", { children: "See How It Works" })
|
|
1642
|
+
})]
|
|
1643
|
+
}),
|
|
1644
|
+
/* @__PURE__ */ jsx("div", {
|
|
1645
|
+
className: "grid grid-cols-3 gap-6 pt-8 border-t border-border max-w-xl",
|
|
1646
|
+
children: [
|
|
1647
|
+
{
|
|
1648
|
+
value: "Hours",
|
|
1649
|
+
label: "To launch"
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
value: "0",
|
|
1653
|
+
label: "AI loops"
|
|
1654
|
+
},
|
|
1655
|
+
{
|
|
1656
|
+
value: "100%",
|
|
1657
|
+
label: "Yours to own"
|
|
1658
|
+
}
|
|
1659
|
+
].map((stat) => /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
1660
|
+
className: "text-2xl md:text-3xl font-light text-foreground tracking-tight mb-1",
|
|
1661
|
+
children: stat.value
|
|
1662
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1663
|
+
className: "text-xs text-muted-foreground tracking-wide",
|
|
1664
|
+
children: stat.label
|
|
1665
|
+
})] }, stat.label))
|
|
1666
|
+
})
|
|
1667
|
+
]
|
|
1668
|
+
})
|
|
1669
|
+
})
|
|
1458
1670
|
})]
|
|
1459
1671
|
});
|
|
1460
1672
|
}
|
|
@@ -1463,61 +1675,200 @@ function CtaSection() {
|
|
|
1463
1675
|
//#region src/client/components/LandingPage.tsx
|
|
1464
1676
|
function LandingPage() {
|
|
1465
1677
|
return /* @__PURE__ */ jsxs("div", {
|
|
1466
|
-
className: "min-h-screen bg-
|
|
1678
|
+
className: "min-h-screen bg-background text-foreground overflow-x-hidden",
|
|
1467
1679
|
children: [
|
|
1468
|
-
/* @__PURE__ */
|
|
1680
|
+
/* @__PURE__ */ jsx("div", {
|
|
1469
1681
|
className: "fixed inset-0 pointer-events-none",
|
|
1470
|
-
|
|
1682
|
+
style: {
|
|
1683
|
+
backgroundImage: `
|
|
1684
|
+
linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
|
|
1685
|
+
linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
|
|
1686
|
+
`,
|
|
1687
|
+
backgroundSize: "60px 60px"
|
|
1688
|
+
}
|
|
1689
|
+
}),
|
|
1690
|
+
/* @__PURE__ */ jsx("div", {
|
|
1691
|
+
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",
|
|
1692
|
+
style: { transform: "rotate(-35deg) translateX(300px)" }
|
|
1693
|
+
}),
|
|
1694
|
+
/* @__PURE__ */ jsx("div", {
|
|
1695
|
+
className: "fixed top-0 right-0 w-[500px] h-[500px] pointer-events-none",
|
|
1696
|
+
children: /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-primary/8 blur-[100px] rounded-full -translate-y-1/2 translate-x-1/2" })
|
|
1471
1697
|
}),
|
|
1472
1698
|
/* @__PURE__ */ jsxs("div", {
|
|
1473
1699
|
className: "relative z-10",
|
|
1474
1700
|
children: [
|
|
1475
1701
|
/* @__PURE__ */ jsx(Hero, {}),
|
|
1476
1702
|
/* @__PURE__ */ jsx(ValueProps, {}),
|
|
1477
|
-
/* @__PURE__ */ jsx(
|
|
1703
|
+
/* @__PURE__ */ jsx(AiSuperpowers, {}),
|
|
1478
1704
|
/* @__PURE__ */ jsx(ModuleShowcase, {}),
|
|
1479
1705
|
/* @__PURE__ */ jsx(HowItWorks, {}),
|
|
1480
1706
|
/* @__PURE__ */ jsx(ArchitecturePreview, {}),
|
|
1481
1707
|
/* @__PURE__ */ jsx(CliDemo, {}),
|
|
1708
|
+
/* @__PURE__ */ jsx(Pricing, {}),
|
|
1482
1709
|
/* @__PURE__ */ jsx(FAQ, {}),
|
|
1483
1710
|
/* @__PURE__ */ jsx(CtaSection, {})
|
|
1484
1711
|
]
|
|
1485
1712
|
}),
|
|
1486
1713
|
/* @__PURE__ */ jsx("footer", {
|
|
1487
|
-
className: "relative z-10 border-t border-
|
|
1714
|
+
className: "relative z-10 border-t border-border",
|
|
1488
1715
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1489
|
-
className: "max-w-
|
|
1716
|
+
className: "max-w-7xl mx-auto",
|
|
1490
1717
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1491
|
-
className: "
|
|
1492
|
-
children: [/* @__PURE__ */
|
|
1493
|
-
className: "
|
|
1494
|
-
children: /* @__PURE__ */
|
|
1495
|
-
className: "
|
|
1496
|
-
children: "
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1718
|
+
className: "grid grid-cols-1 md:grid-cols-12 border-b border-border",
|
|
1719
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1720
|
+
className: "md:col-span-4 p-8 md:p-12 border-b md:border-b-0 md:border-r border-border",
|
|
1721
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1722
|
+
className: "flex items-center gap-4 mb-6",
|
|
1723
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
1724
|
+
className: "w-10 h-10",
|
|
1725
|
+
viewBox: "0 0 512 512",
|
|
1726
|
+
fill: "none",
|
|
1727
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1728
|
+
children: [
|
|
1729
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1730
|
+
points: "256,64 384,144 384,304 256,224",
|
|
1731
|
+
fill: "#3D3A39"
|
|
1732
|
+
}),
|
|
1733
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1734
|
+
points: "256,64 128,144 128,304 256,224",
|
|
1735
|
+
fill: "#5C5855"
|
|
1736
|
+
}),
|
|
1737
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1738
|
+
points: "128,144 256,224 384,144 256,64",
|
|
1739
|
+
fill: "#A49D9A"
|
|
1740
|
+
}),
|
|
1741
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1742
|
+
points: "256,224 352,280 352,392 256,336",
|
|
1743
|
+
fill: "#D15010"
|
|
1744
|
+
}),
|
|
1745
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1746
|
+
points: "256,224 160,280 160,392 256,336",
|
|
1747
|
+
fill: "#EE6018"
|
|
1748
|
+
}),
|
|
1749
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1750
|
+
points: "160,280 256,336 352,280 256,224",
|
|
1751
|
+
fill: "#EF6F2E"
|
|
1752
|
+
})
|
|
1753
|
+
]
|
|
1754
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
1755
|
+
className: "text-foreground font-medium tracking-tight",
|
|
1756
|
+
children: "Kuckit"
|
|
1757
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1758
|
+
className: "text-muted-foreground text-xs tracking-[0.15em] uppercase",
|
|
1759
|
+
children: "Framework"
|
|
1760
|
+
})] })]
|
|
1761
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
1762
|
+
className: "text-muted-foreground text-sm leading-relaxed max-w-xs",
|
|
1763
|
+
children: "The TypeScript module ecosystem where developers build once and sell forever."
|
|
1764
|
+
})]
|
|
1765
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1766
|
+
className: "md:col-span-8 grid grid-cols-3",
|
|
1767
|
+
children: [
|
|
1768
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1769
|
+
className: "p-8 border-r border-border",
|
|
1770
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1771
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
1772
|
+
children: "Resources"
|
|
1773
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1774
|
+
className: "space-y-4",
|
|
1775
|
+
children: [
|
|
1776
|
+
/* @__PURE__ */ jsx("a", {
|
|
1777
|
+
href: "/docs",
|
|
1778
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1779
|
+
children: "Documentation"
|
|
1780
|
+
}),
|
|
1781
|
+
/* @__PURE__ */ jsx("a", {
|
|
1782
|
+
href: "/docs/getting-started",
|
|
1783
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1784
|
+
children: "Quick Start"
|
|
1785
|
+
}),
|
|
1786
|
+
/* @__PURE__ */ jsx("a", {
|
|
1787
|
+
href: "/docs/api",
|
|
1788
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1789
|
+
children: "API Reference"
|
|
1790
|
+
})
|
|
1791
|
+
]
|
|
1792
|
+
})]
|
|
1793
|
+
}),
|
|
1794
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1795
|
+
className: "p-8 border-r border-border",
|
|
1796
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1797
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
1798
|
+
children: "Community"
|
|
1799
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1800
|
+
className: "space-y-4",
|
|
1801
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
1802
|
+
href: "/discord",
|
|
1803
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1804
|
+
children: "Discord"
|
|
1805
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
1806
|
+
href: "https://twitter.com/kuckit",
|
|
1807
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1808
|
+
children: "Twitter"
|
|
1809
|
+
})]
|
|
1810
|
+
})]
|
|
1811
|
+
}),
|
|
1812
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1813
|
+
className: "p-8",
|
|
1814
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1815
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
1816
|
+
children: "Legal"
|
|
1817
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1818
|
+
className: "space-y-4",
|
|
1819
|
+
children: [
|
|
1820
|
+
/* @__PURE__ */ jsx("a", {
|
|
1821
|
+
href: "/privacy",
|
|
1822
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1823
|
+
children: "Privacy"
|
|
1824
|
+
}),
|
|
1825
|
+
/* @__PURE__ */ jsx("a", {
|
|
1826
|
+
href: "/terms",
|
|
1827
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1828
|
+
children: "Terms"
|
|
1829
|
+
}),
|
|
1830
|
+
/* @__PURE__ */ jsx("a", {
|
|
1831
|
+
href: "/license",
|
|
1832
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
1833
|
+
children: "License"
|
|
1834
|
+
})
|
|
1835
|
+
]
|
|
1836
|
+
})]
|
|
1837
|
+
})
|
|
1838
|
+
]
|
|
1501
1839
|
})]
|
|
1502
1840
|
}), /* @__PURE__ */ jsxs("div", {
|
|
1503
|
-
className: "flex gap-8
|
|
1504
|
-
children: [
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1841
|
+
className: "flex flex-col md:flex-row items-center justify-between gap-4 px-8 md:px-12 py-6",
|
|
1842
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1843
|
+
className: "flex items-center gap-6 text-xs text-muted-foreground",
|
|
1844
|
+
children: [
|
|
1845
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
1846
|
+
"© ",
|
|
1847
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
1848
|
+
" Kuckit"
|
|
1849
|
+
] }),
|
|
1850
|
+
/* @__PURE__ */ jsx("span", {
|
|
1851
|
+
className: "hidden md:inline text-border",
|
|
1852
|
+
children: "|"
|
|
1853
|
+
}),
|
|
1854
|
+
/* @__PURE__ */ jsx("span", {
|
|
1855
|
+
className: "hidden md:inline",
|
|
1856
|
+
children: "MIT License"
|
|
1857
|
+
})
|
|
1858
|
+
]
|
|
1859
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1860
|
+
className: "flex items-center gap-3",
|
|
1861
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1862
|
+
className: "flex items-center gap-2 px-3 py-1.5 bg-muted border border-border",
|
|
1863
|
+
children: [/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[hsl(var(--status-success))] animate-pulse" }), /* @__PURE__ */ jsx("span", {
|
|
1864
|
+
className: "text-xs text-muted-foreground tracking-wide",
|
|
1865
|
+
children: "All systems operational"
|
|
1866
|
+
})]
|
|
1867
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1868
|
+
className: "text-xs text-muted-foreground font-mono",
|
|
1869
|
+
children: "v1.0.0"
|
|
1870
|
+
})]
|
|
1871
|
+
})]
|
|
1521
1872
|
})]
|
|
1522
1873
|
})
|
|
1523
1874
|
})
|