@kuckit/landing-module 3.0.3 → 3.0.5
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.d.ts +4 -1
- package/dist/client/index.js +1191 -1309
- package/dist/client/index.js.map +1 -1
- package/dist/styles.css +9 -0
- package/package.json +10 -12
package/dist/client/index.js
CHANGED
|
@@ -1,10 +1,129 @@
|
|
|
1
1
|
import { defineKuckitClientModule } from "@kuckit/sdk-react";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { GlareCard } from "@kuckit/polar-payments-module/client";
|
|
5
5
|
import { Check, Zap } from "lucide-react";
|
|
6
6
|
|
|
7
|
+
//#region src/client/components/terminal-animation.tsx
|
|
8
|
+
function TerminalAnimation({ commands, className = "", minHeight = "min-h-[280px]" }) {
|
|
9
|
+
const [activeCommand, setActiveCommand] = useState(0);
|
|
10
|
+
const [displayedLines, setDisplayedLines] = useState([]);
|
|
11
|
+
const [isTyping, setIsTyping] = useState(true);
|
|
12
|
+
const [typedInput, setTypedInput] = useState("");
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const command = commands[activeCommand];
|
|
15
|
+
if (!command) return;
|
|
16
|
+
let inputIndex = 0;
|
|
17
|
+
let outputIndex = 0;
|
|
18
|
+
let outputInterval = null;
|
|
19
|
+
setDisplayedLines([]);
|
|
20
|
+
setTypedInput("");
|
|
21
|
+
setIsTyping(true);
|
|
22
|
+
const inputInterval = setInterval(() => {
|
|
23
|
+
if (inputIndex <= command.input.length) {
|
|
24
|
+
setTypedInput(command.input.slice(0, inputIndex));
|
|
25
|
+
inputIndex++;
|
|
26
|
+
} else {
|
|
27
|
+
clearInterval(inputInterval);
|
|
28
|
+
setIsTyping(false);
|
|
29
|
+
outputInterval = setInterval(() => {
|
|
30
|
+
if (outputIndex < command.output.length) {
|
|
31
|
+
const line = command.output[outputIndex];
|
|
32
|
+
if (line !== void 0) setDisplayedLines((prev) => [...prev, line]);
|
|
33
|
+
outputIndex++;
|
|
34
|
+
} else {
|
|
35
|
+
if (outputInterval) clearInterval(outputInterval);
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
setActiveCommand((prev) => (prev + 1) % commands.length);
|
|
38
|
+
}, 3e3);
|
|
39
|
+
}
|
|
40
|
+
}, 100);
|
|
41
|
+
}
|
|
42
|
+
}, 50);
|
|
43
|
+
return () => {
|
|
44
|
+
clearInterval(inputInterval);
|
|
45
|
+
if (outputInterval) clearInterval(outputInterval);
|
|
46
|
+
};
|
|
47
|
+
}, [activeCommand, commands]);
|
|
48
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
49
|
+
className,
|
|
50
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
51
|
+
className: "border border-border bg-background",
|
|
52
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
53
|
+
className: "flex items-center justify-between px-4 py-3 border-b border-border bg-card",
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsxs("div", {
|
|
56
|
+
className: "flex items-center gap-2",
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-error)/0.8)]" }),
|
|
59
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-warning)/0.8)]" }),
|
|
60
|
+
/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-[hsl(var(--status-success)/0.8)]" })
|
|
61
|
+
]
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ jsx("span", {
|
|
64
|
+
className: "text-xs text-muted-foreground font-mono",
|
|
65
|
+
children: "terminal"
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx("div", { className: "w-16" })
|
|
68
|
+
]
|
|
69
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
70
|
+
className: `p-6 font-mono text-sm ${minHeight}`,
|
|
71
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
72
|
+
className: "flex items-center gap-2 mb-4",
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ jsx("span", {
|
|
75
|
+
className: "text-primary",
|
|
76
|
+
children: "$"
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ jsx("span", {
|
|
79
|
+
className: "text-foreground",
|
|
80
|
+
children: typedInput
|
|
81
|
+
}),
|
|
82
|
+
isTyping && /* @__PURE__ */ jsx("span", { className: "w-2 h-5 bg-primary animate-pulse" })
|
|
83
|
+
]
|
|
84
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
85
|
+
className: "space-y-0.5",
|
|
86
|
+
children: displayedLines.map((line, index) => /* @__PURE__ */ jsx("div", {
|
|
87
|
+
className: `${line?.startsWith("✓") ? "text-[hsl(var(--status-success))]" : line?.includes("!") ? "text-foreground" : "text-muted-foreground"}`,
|
|
88
|
+
children: line || "\xA0"
|
|
89
|
+
}, index))
|
|
90
|
+
})]
|
|
91
|
+
})]
|
|
92
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
93
|
+
className: "flex justify-center gap-2 mt-6",
|
|
94
|
+
children: commands.map((_, index) => /* @__PURE__ */ jsx("button", {
|
|
95
|
+
onClick: () => setActiveCommand(index),
|
|
96
|
+
className: `h-1.5 transition-all ${index === activeCommand ? "bg-primary w-8" : "bg-muted hover:bg-muted-foreground/30 w-1.5"}`
|
|
97
|
+
}, index))
|
|
98
|
+
})]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
7
103
|
//#region src/client/components/hero.tsx
|
|
104
|
+
const heroCommands = [{
|
|
105
|
+
input: "bunx create-kuckit-app my-saas",
|
|
106
|
+
output: [
|
|
107
|
+
"Creating new Kuckit project...",
|
|
108
|
+
"",
|
|
109
|
+
"✓ Cloned template",
|
|
110
|
+
"✓ Installed dependencies",
|
|
111
|
+
"✓ Set up database",
|
|
112
|
+
"",
|
|
113
|
+
"Run: cd my-saas && bun run dev"
|
|
114
|
+
]
|
|
115
|
+
}, {
|
|
116
|
+
input: "kuckit add @kuckit/payments-module",
|
|
117
|
+
output: [
|
|
118
|
+
"Installing @kuckit/payments-module...",
|
|
119
|
+
"",
|
|
120
|
+
"✓ Package installed",
|
|
121
|
+
"✓ Server module wired",
|
|
122
|
+
"✓ Client routes added",
|
|
123
|
+
"",
|
|
124
|
+
"Stripe + Polar ready!"
|
|
125
|
+
]
|
|
126
|
+
}];
|
|
8
127
|
function Hero() {
|
|
9
128
|
const [copied, setCopied] = useState(false);
|
|
10
129
|
const copyCommand = () => {
|
|
@@ -14,1306 +133,823 @@ function Hero() {
|
|
|
14
133
|
};
|
|
15
134
|
return /* @__PURE__ */ jsxs("section", {
|
|
16
135
|
className: "relative min-h-screen",
|
|
17
|
-
children: [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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",
|
|
136
|
+
children: [/* @__PURE__ */ jsx("nav", {
|
|
137
|
+
className: "relative z-20 border-b border-border",
|
|
138
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
139
|
+
className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
|
|
140
|
+
children: [
|
|
141
|
+
/* @__PURE__ */ jsxs("div", {
|
|
142
|
+
className: "flex items-center gap-3",
|
|
143
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
144
|
+
className: "w-8 h-8",
|
|
145
|
+
viewBox: "0 0 512 512",
|
|
146
|
+
fill: "none",
|
|
147
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
63
148
|
children: [
|
|
64
|
-
/* @__PURE__ */ jsx("
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
children: "Docs"
|
|
149
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
150
|
+
points: "256,64 384,144 384,304 256,224",
|
|
151
|
+
fill: "#3D3A39"
|
|
68
152
|
}),
|
|
69
|
-
/* @__PURE__ */ jsx("
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
children: "Modules"
|
|
153
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
154
|
+
points: "256,64 128,144 128,304 256,224",
|
|
155
|
+
fill: "#5C5855"
|
|
73
156
|
}),
|
|
74
|
-
/* @__PURE__ */ jsx("
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
157
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
158
|
+
points: "128,144 256,224 384,144 256,64",
|
|
159
|
+
fill: "#A49D9A"
|
|
160
|
+
}),
|
|
161
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
162
|
+
points: "256,224 352,280 352,392 256,336",
|
|
163
|
+
fill: "#D15010"
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
166
|
+
points: "256,224 160,280 160,392 256,336",
|
|
167
|
+
fill: "#EE6018"
|
|
168
|
+
}),
|
|
169
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
170
|
+
points: "160,280 256,336 352,280 256,224",
|
|
171
|
+
fill: "#EF6F2E"
|
|
78
172
|
})
|
|
79
173
|
]
|
|
80
|
-
}),
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
})
|
|
95
|
-
}),
|
|
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",
|
|
174
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
175
|
+
className: "text-foreground font-medium tracking-tight",
|
|
176
|
+
children: "Kuckit"
|
|
177
|
+
})]
|
|
178
|
+
}),
|
|
179
|
+
/* @__PURE__ */ jsxs("div", {
|
|
180
|
+
className: "hidden md:flex items-center gap-8",
|
|
102
181
|
children: [
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
children: "Vibe coding ain't fun when you're stuck"
|
|
108
|
-
})]
|
|
109
|
-
}),
|
|
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
|
-
})]
|
|
119
|
-
}),
|
|
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."
|
|
182
|
+
/* @__PURE__ */ jsx("a", {
|
|
183
|
+
href: "/docs",
|
|
184
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
185
|
+
children: "Docs"
|
|
123
186
|
}),
|
|
124
|
-
/* @__PURE__ */ jsx("
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
})]
|
|
141
|
-
})
|
|
187
|
+
/* @__PURE__ */ jsx("a", {
|
|
188
|
+
href: "/modules",
|
|
189
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
190
|
+
children: "Modules"
|
|
142
191
|
}),
|
|
143
|
-
/* @__PURE__ */
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
})]
|
|
192
|
+
/* @__PURE__ */ jsx("a", {
|
|
193
|
+
href: "#pricing",
|
|
194
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
195
|
+
children: "Pricing"
|
|
188
196
|
})
|
|
189
197
|
]
|
|
190
|
-
}),
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
198
|
+
}),
|
|
199
|
+
/* @__PURE__ */ jsxs("div", {
|
|
200
|
+
className: "flex items-center gap-3",
|
|
201
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
202
|
+
href: "/login",
|
|
203
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
|
|
204
|
+
children: "Sign in"
|
|
205
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
206
|
+
href: "/docs/getting-started",
|
|
207
|
+
className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
|
|
208
|
+
children: "Get Started"
|
|
209
|
+
})]
|
|
210
|
+
})
|
|
211
|
+
]
|
|
212
|
+
})
|
|
213
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
214
|
+
className: "relative z-10 max-w-7xl mx-auto px-8 pt-24 pb-32",
|
|
215
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
216
|
+
className: "grid lg:grid-cols-12 gap-12 lg:gap-16 items-center",
|
|
217
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
218
|
+
className: "lg:col-span-7",
|
|
219
|
+
children: [
|
|
220
|
+
/* @__PURE__ */ jsxs("div", {
|
|
221
|
+
className: "flex items-center gap-4 mb-8",
|
|
222
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
223
|
+
className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
|
|
224
|
+
children: "Vibe coding ain't fun when you're stuck"
|
|
225
|
+
})]
|
|
226
|
+
}),
|
|
227
|
+
/* @__PURE__ */ jsxs("h1", {
|
|
228
|
+
className: "mb-8",
|
|
229
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
230
|
+
className: "block text-4xl md:text-5xl lg:text-6xl font-light text-foreground tracking-[-0.03em] leading-[1.1]",
|
|
231
|
+
children: "You don't need more prompts."
|
|
232
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
233
|
+
className: "block text-4xl md:text-5xl lg:text-6xl font-light text-primary tracking-[-0.03em] leading-[1.1] mt-2",
|
|
234
|
+
children: "You need a foundation."
|
|
235
|
+
})]
|
|
236
|
+
}),
|
|
237
|
+
/* @__PURE__ */ jsx("p", {
|
|
238
|
+
className: "text-lg md:text-xl text-muted-foreground max-w-xl leading-relaxed mb-12",
|
|
239
|
+
children: "Vibe coding builds fast. We build right. Ship in hours."
|
|
240
|
+
}),
|
|
241
|
+
/* @__PURE__ */ jsx("div", {
|
|
242
|
+
className: "flex flex-col sm:flex-row items-start gap-4 mb-16",
|
|
243
|
+
children: /* @__PURE__ */ jsxs("a", {
|
|
244
|
+
href: "/docs/getting-started",
|
|
245
|
+
className: "group inline-flex items-center gap-3 px-6 py-4 bg-primary text-primary-foreground font-medium hover:bg-primary/90 transition-all",
|
|
246
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Get Unstuck" }), /* @__PURE__ */ jsx("svg", {
|
|
247
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
248
|
+
fill: "none",
|
|
249
|
+
stroke: "currentColor",
|
|
250
|
+
viewBox: "0 0 24 24",
|
|
251
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
252
|
+
strokeLinecap: "round",
|
|
253
|
+
strokeLinejoin: "round",
|
|
254
|
+
strokeWidth: 2,
|
|
255
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
256
|
+
})
|
|
257
|
+
})]
|
|
258
|
+
})
|
|
259
|
+
}),
|
|
260
|
+
/* @__PURE__ */ jsxs("div", {
|
|
261
|
+
className: "inline-block",
|
|
262
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
263
|
+
className: "text-xs text-muted-foreground tracking-[0.15em] uppercase mb-3",
|
|
264
|
+
children: "Quick Start"
|
|
265
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
266
|
+
onClick: copyCommand,
|
|
267
|
+
className: "group flex items-center gap-4 px-5 py-4 bg-card border border-border hover:border-primary/50 transition-colors font-mono text-sm",
|
|
196
268
|
children: [
|
|
197
|
-
/* @__PURE__ */ jsx("
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
className: "
|
|
203
|
-
children:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
})]
|
|
269
|
+
/* @__PURE__ */ jsx("span", {
|
|
270
|
+
className: "text-primary",
|
|
271
|
+
children: "$"
|
|
272
|
+
}),
|
|
273
|
+
/* @__PURE__ */ jsx("code", {
|
|
274
|
+
className: "text-foreground",
|
|
275
|
+
children: "bunx create-kuckit-app my-app"
|
|
276
|
+
}),
|
|
277
|
+
/* @__PURE__ */ jsx("span", {
|
|
278
|
+
className: "text-muted-foreground group-hover:text-primary transition-colors ml-4",
|
|
279
|
+
children: copied ? /* @__PURE__ */ jsx("svg", {
|
|
280
|
+
className: "w-4 h-4",
|
|
281
|
+
fill: "none",
|
|
282
|
+
stroke: "currentColor",
|
|
283
|
+
viewBox: "0 0 24 24",
|
|
284
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
285
|
+
strokeLinecap: "round",
|
|
286
|
+
strokeLinejoin: "round",
|
|
287
|
+
strokeWidth: 2,
|
|
288
|
+
d: "M5 13l4 4L19 7"
|
|
268
289
|
})
|
|
269
|
-
|
|
290
|
+
}) : /* @__PURE__ */ jsx("svg", {
|
|
291
|
+
className: "w-4 h-4",
|
|
292
|
+
fill: "none",
|
|
293
|
+
stroke: "currentColor",
|
|
294
|
+
viewBox: "0 0 24 24",
|
|
295
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
296
|
+
strokeLinecap: "round",
|
|
297
|
+
strokeLinejoin: "round",
|
|
298
|
+
strokeWidth: 2,
|
|
299
|
+
d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
|
|
300
|
+
})
|
|
301
|
+
})
|
|
270
302
|
})
|
|
271
303
|
]
|
|
272
|
-
})
|
|
304
|
+
})]
|
|
273
305
|
})
|
|
274
|
-
|
|
275
|
-
})
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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",
|
|
306
|
+
]
|
|
307
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
308
|
+
className: "lg:col-span-5 relative",
|
|
309
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
310
|
+
className: "relative",
|
|
283
311
|
children: [
|
|
284
|
-
{
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
300
|
-
]
|
|
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))
|
|
312
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-primary/5 blur-2xl rounded-lg" }),
|
|
313
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-4 -left-4 w-8 h-8 border-l-2 border-t-2 border-primary/60" }),
|
|
314
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-4 -right-4 w-8 h-8 border-r-2 border-t-2 border-primary/60" }),
|
|
315
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-4 -left-4 w-8 h-8 border-l-2 border-b-2 border-primary/60" }),
|
|
316
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-4 -right-4 w-8 h-8 border-r-2 border-b-2 border-primary/60" }),
|
|
317
|
+
/* @__PURE__ */ jsxs("div", {
|
|
318
|
+
className: "absolute -top-8 left-0 flex items-center gap-2",
|
|
319
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary" }), /* @__PURE__ */ jsx("span", {
|
|
320
|
+
className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
|
|
321
|
+
children: "Live Demo"
|
|
322
|
+
})]
|
|
323
|
+
}),
|
|
324
|
+
/* @__PURE__ */ jsx(TerminalAnimation, {
|
|
325
|
+
commands: heroCommands,
|
|
326
|
+
minHeight: "min-h-[320px]"
|
|
327
|
+
})
|
|
328
|
+
]
|
|
310
329
|
})
|
|
311
|
-
})
|
|
330
|
+
})]
|
|
312
331
|
})
|
|
313
|
-
]
|
|
332
|
+
})]
|
|
314
333
|
});
|
|
315
334
|
}
|
|
316
335
|
|
|
317
336
|
//#endregion
|
|
318
|
-
//#region src/client/components/
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
337
|
+
//#region src/client/components/features.tsx
|
|
338
|
+
const AI_FEATURES = [
|
|
339
|
+
{
|
|
340
|
+
title: "Context Engineering",
|
|
341
|
+
tag: "Hot"
|
|
342
|
+
},
|
|
343
|
+
{ title: "Skills Your AI Can Use" },
|
|
344
|
+
{
|
|
345
|
+
title: "Curated MCP Tools",
|
|
346
|
+
tag: "New"
|
|
347
|
+
},
|
|
348
|
+
{ title: "Multi-Agent Workflows" }
|
|
349
|
+
];
|
|
350
|
+
function ScanLines() {
|
|
351
|
+
return /* @__PURE__ */ jsx("div", {
|
|
352
|
+
className: "absolute inset-0 pointer-events-none overflow-hidden opacity-[0.03]",
|
|
353
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
354
|
+
className: "absolute inset-0",
|
|
355
|
+
style: {
|
|
356
|
+
backgroundImage: "repeating-linear-gradient(0deg, transparent, transparent 2px, currentColor 2px, currentColor 3px)",
|
|
357
|
+
backgroundSize: "100% 4px"
|
|
358
|
+
}
|
|
359
|
+
})
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
function GridPattern() {
|
|
363
|
+
return /* @__PURE__ */ jsx("div", {
|
|
364
|
+
className: "absolute inset-0 pointer-events-none opacity-[0.04]",
|
|
365
|
+
children: /* @__PURE__ */ jsxs("svg", {
|
|
366
|
+
className: "w-full h-full",
|
|
367
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
368
|
+
children: [/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("pattern", {
|
|
369
|
+
id: "grid",
|
|
370
|
+
width: "20",
|
|
371
|
+
height: "20",
|
|
372
|
+
patternUnits: "userSpaceOnUse",
|
|
373
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
374
|
+
d: "M 20 0 L 0 0 0 20",
|
|
375
|
+
fill: "none",
|
|
376
|
+
stroke: "currentColor",
|
|
377
|
+
strokeWidth: "0.5"
|
|
378
|
+
})
|
|
379
|
+
}) }), /* @__PURE__ */ jsx("rect", {
|
|
380
|
+
width: "100%",
|
|
381
|
+
height: "100%",
|
|
382
|
+
fill: "url(#grid)"
|
|
333
383
|
})]
|
|
334
|
-
})
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
384
|
+
})
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
function CornerMarkers({ glow = false }) {
|
|
388
|
+
const baseClass = "absolute w-5 h-5 border-primary";
|
|
389
|
+
const glowClass = glow ? "shadow-[0_0_10px_rgba(209,80,16,0.5)]" : "";
|
|
390
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
391
|
+
/* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -top-px -left-px border-l-2 border-t-2` }),
|
|
392
|
+
/* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -top-px -right-px border-r-2 border-t-2` }),
|
|
393
|
+
/* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -bottom-px -left-px border-l-2 border-b-2` }),
|
|
394
|
+
/* @__PURE__ */ jsx("div", { className: `${baseClass} ${glowClass} -bottom-px -right-px border-r-2 border-b-2` })
|
|
395
|
+
] });
|
|
396
|
+
}
|
|
397
|
+
function DiagonalAccent() {
|
|
398
|
+
return /* @__PURE__ */ jsx("div", {
|
|
399
|
+
className: "absolute top-0 right-0 w-32 h-32 pointer-events-none",
|
|
400
|
+
style: { background: "linear-gradient(135deg, hsl(var(--primary) / 0.15) 0%, transparent 50%)" }
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
function CardA() {
|
|
404
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
405
|
+
className: "group relative bg-gradient-to-br from-card via-card to-primary/5 border border-border overflow-hidden transform-gpu md:col-span-2 md:row-span-2 transition-all duration-500 hover:border-primary/60 hover:shadow-[0_0_40px_rgba(209,80,16,0.15)]",
|
|
406
|
+
children: [
|
|
407
|
+
/* @__PURE__ */ jsx(CornerMarkers, { glow: true }),
|
|
408
|
+
/* @__PURE__ */ jsx(GridPattern, {}),
|
|
409
|
+
/* @__PURE__ */ jsx(DiagonalAccent, {}),
|
|
410
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-20 -right-20 w-64 h-64 bg-primary/20 rounded-full blur-[80px] group-hover:scale-150 transition-transform duration-700" }),
|
|
411
|
+
/* @__PURE__ */ jsx("div", {
|
|
412
|
+
className: "absolute bottom-0 left-0 right-0 h-24 opacity-20 group-hover:opacity-40 transition-opacity",
|
|
413
|
+
children: /* @__PURE__ */ jsxs("svg", {
|
|
414
|
+
className: "w-full h-full",
|
|
415
|
+
viewBox: "0 0 400 100",
|
|
416
|
+
preserveAspectRatio: "none",
|
|
417
|
+
children: [/* @__PURE__ */ jsx("path", {
|
|
418
|
+
d: "M0,80 Q50,60 100,70 T200,50 T300,65 T400,45 L400,100 L0,100 Z",
|
|
419
|
+
fill: "url(#waveGradient)"
|
|
420
|
+
}), /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
|
|
421
|
+
id: "waveGradient",
|
|
422
|
+
x1: "0%",
|
|
423
|
+
y1: "0%",
|
|
424
|
+
x2: "0%",
|
|
425
|
+
y2: "100%",
|
|
426
|
+
children: [/* @__PURE__ */ jsx("stop", {
|
|
427
|
+
offset: "0%",
|
|
428
|
+
stopColor: "hsl(var(--primary))",
|
|
429
|
+
stopOpacity: "0.4"
|
|
430
|
+
}), /* @__PURE__ */ jsx("stop", {
|
|
431
|
+
offset: "100%",
|
|
432
|
+
stopColor: "hsl(var(--primary))",
|
|
433
|
+
stopOpacity: "0"
|
|
434
|
+
})]
|
|
435
|
+
}) })]
|
|
436
|
+
})
|
|
437
|
+
}),
|
|
438
|
+
/* @__PURE__ */ jsxs("div", {
|
|
439
|
+
className: "absolute inset-0 flex flex-col justify-center p-8 md:p-12",
|
|
440
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
441
|
+
className: "transition-transform duration-500 ease-out group-hover:-translate-y-6",
|
|
442
|
+
children: [
|
|
443
|
+
/* @__PURE__ */ jsxs("div", {
|
|
444
|
+
className: "flex items-center gap-3 mb-6",
|
|
445
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary animate-pulse shadow-[0_0_8px_rgba(209,80,16,0.8)]" }), /* @__PURE__ */ jsx("span", {
|
|
446
|
+
className: "text-[10px] text-primary tracking-[0.3em] uppercase font-medium",
|
|
447
|
+
children: "Production Ready"
|
|
448
|
+
})]
|
|
449
|
+
}),
|
|
450
|
+
/* @__PURE__ */ jsxs("h3", {
|
|
451
|
+
className: "text-3xl md:text-4xl lg:text-5xl font-light tracking-[-0.04em] text-foreground mb-6 leading-[1.1]",
|
|
452
|
+
children: [
|
|
453
|
+
"Ship faster.",
|
|
454
|
+
/* @__PURE__ */ jsx("br", {}),
|
|
455
|
+
/* @__PURE__ */ jsx("span", {
|
|
456
|
+
className: "text-primary",
|
|
457
|
+
children: "Build right."
|
|
458
|
+
})
|
|
459
|
+
]
|
|
460
|
+
}),
|
|
461
|
+
/* @__PURE__ */ jsx("div", {
|
|
462
|
+
className: "flex flex-wrap gap-3",
|
|
463
|
+
children: [
|
|
464
|
+
"Production-ready",
|
|
465
|
+
"Pre-built features",
|
|
466
|
+
"AI-native"
|
|
467
|
+
].map((pill, i) => /* @__PURE__ */ jsx("span", {
|
|
468
|
+
className: "px-4 py-2 text-xs border border-primary/40 text-foreground/80 bg-primary/5 backdrop-blur-sm tracking-wide transition-all duration-300 hover:bg-primary/20 hover:border-primary",
|
|
469
|
+
style: { animationDelay: `${i * 100}ms` },
|
|
470
|
+
children: pill
|
|
471
|
+
}, pill))
|
|
472
|
+
})
|
|
473
|
+
]
|
|
474
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
475
|
+
className: "absolute bottom-8 md:bottom-12 left-8 md:left-12 opacity-0 group-hover:opacity-100 translate-y-6 group-hover:translate-y-0 transition-all duration-500 delay-100",
|
|
476
|
+
children: /* @__PURE__ */ jsxs("a", {
|
|
477
|
+
href: "/docs/getting-started",
|
|
478
|
+
className: "inline-flex items-center gap-3 text-sm text-primary font-medium tracking-wide group/cta",
|
|
479
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
480
|
+
className: "relative",
|
|
481
|
+
children: ["Get Started", /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 left-0 w-0 h-px bg-primary group-hover/cta:w-full transition-all duration-300" })]
|
|
482
|
+
}), /* @__PURE__ */ jsx("svg", {
|
|
483
|
+
className: "w-4 h-4 group-hover/cta:translate-x-1 transition-transform",
|
|
484
|
+
fill: "none",
|
|
485
|
+
viewBox: "0 0 24 24",
|
|
486
|
+
stroke: "currentColor",
|
|
487
|
+
strokeWidth: 2,
|
|
488
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
489
|
+
strokeLinecap: "round",
|
|
490
|
+
strokeLinejoin: "round",
|
|
491
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
492
|
+
})
|
|
493
|
+
})]
|
|
494
|
+
})
|
|
495
|
+
})]
|
|
496
|
+
})
|
|
497
|
+
]
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
function CardB({ className = "" }) {
|
|
501
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
502
|
+
className: `group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 hover:shadow-[0_0_30px_rgba(209,80,16,0.1)] ${className}`,
|
|
503
|
+
children: [
|
|
504
|
+
/* @__PURE__ */ jsx(CornerMarkers, {}),
|
|
505
|
+
/* @__PURE__ */ jsx(ScanLines, {}),
|
|
506
|
+
/* @__PURE__ */ jsxs("div", {
|
|
507
|
+
className: "absolute top-6 right-6 w-16 h-16",
|
|
338
508
|
children: [
|
|
339
|
-
{
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
509
|
+
/* @__PURE__ */ jsx("div", {
|
|
510
|
+
className: "absolute inset-0 border border-primary/30 rounded-full animate-ping",
|
|
511
|
+
style: { animationDuration: "3s" }
|
|
512
|
+
}),
|
|
513
|
+
/* @__PURE__ */ jsx("div", {
|
|
514
|
+
className: "absolute inset-2 border border-primary/50 rounded-full animate-ping",
|
|
515
|
+
style: {
|
|
516
|
+
animationDuration: "3s",
|
|
517
|
+
animationDelay: "0.5s"
|
|
518
|
+
}
|
|
519
|
+
}),
|
|
520
|
+
/* @__PURE__ */ jsx("div", {
|
|
521
|
+
className: "absolute inset-4 bg-primary/20 rounded-full flex items-center justify-center",
|
|
522
|
+
children: /* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-primary rounded-full shadow-[0_0_10px_rgba(209,80,16,0.8)]" })
|
|
523
|
+
})
|
|
524
|
+
]
|
|
525
|
+
}),
|
|
526
|
+
/* @__PURE__ */ jsxs("div", {
|
|
527
|
+
className: "absolute inset-0 flex flex-col p-6",
|
|
528
|
+
children: [
|
|
529
|
+
/* @__PURE__ */ jsxs("div", {
|
|
530
|
+
className: "flex items-center gap-2 mb-6",
|
|
531
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
532
|
+
className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
|
|
533
|
+
children: "AI Enhancement"
|
|
534
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
535
|
+
className: "px-1.5 py-0.5 text-[8px] bg-[hsl(var(--status-success))] text-white tracking-wider uppercase",
|
|
536
|
+
children: "Active"
|
|
537
|
+
})]
|
|
538
|
+
}),
|
|
539
|
+
/* @__PURE__ */ jsxs("div", {
|
|
540
|
+
className: "flex-1 flex flex-col justify-center",
|
|
541
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
542
|
+
className: "relative",
|
|
543
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
544
|
+
className: "text-6xl md:text-7xl font-extralight text-foreground tracking-tighter",
|
|
545
|
+
children: ["10", /* @__PURE__ */ jsx("span", {
|
|
546
|
+
className: "text-primary",
|
|
547
|
+
children: "x"
|
|
548
|
+
})]
|
|
549
|
+
}), /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-primary/10 blur-2xl -z-10" })]
|
|
550
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
551
|
+
className: "text-sm text-muted-foreground mt-2 tracking-wide",
|
|
552
|
+
children: "Faster AI responses"
|
|
553
|
+
})]
|
|
554
|
+
}),
|
|
555
|
+
/* @__PURE__ */ jsx("div", {
|
|
556
|
+
className: "space-y-2 mt-4",
|
|
557
|
+
children: [
|
|
380
558
|
{
|
|
381
|
-
label: "
|
|
382
|
-
|
|
559
|
+
label: "Smart Context",
|
|
560
|
+
value: "100%"
|
|
383
561
|
},
|
|
384
562
|
{
|
|
385
|
-
label: "
|
|
386
|
-
|
|
563
|
+
label: "Auto-Complete",
|
|
564
|
+
value: "95%"
|
|
387
565
|
},
|
|
388
566
|
{
|
|
389
|
-
label: "
|
|
390
|
-
|
|
567
|
+
label: "Team of AIs",
|
|
568
|
+
value: "∞"
|
|
391
569
|
}
|
|
392
|
-
]
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}), /* @__PURE__ */ jsx("
|
|
404
|
-
className: "
|
|
405
|
-
children:
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
570
|
+
].map((cap, i) => /* @__PURE__ */ jsxs("div", {
|
|
571
|
+
className: "group/bar relative overflow-hidden",
|
|
572
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
573
|
+
className: "flex items-center justify-between text-xs mb-1",
|
|
574
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
575
|
+
className: "text-muted-foreground",
|
|
576
|
+
children: cap.label
|
|
577
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
578
|
+
className: "text-primary font-mono",
|
|
579
|
+
children: cap.value
|
|
580
|
+
})]
|
|
581
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
582
|
+
className: "h-1 bg-border rounded-full overflow-hidden",
|
|
583
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
584
|
+
className: "h-full bg-gradient-to-r from-primary/50 to-primary rounded-full transition-all duration-700 group-hover:from-primary group-hover:to-primary",
|
|
585
|
+
style: {
|
|
586
|
+
width: cap.value === "∞" ? "100%" : cap.value,
|
|
587
|
+
transitionDelay: `${i * 100}ms`
|
|
588
|
+
}
|
|
589
|
+
})
|
|
409
590
|
})]
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
591
|
+
}, cap.label))
|
|
592
|
+
})
|
|
593
|
+
]
|
|
594
|
+
})
|
|
595
|
+
]
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
function CardC({ className = "" }) {
|
|
599
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
600
|
+
className: `group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 ${className}`,
|
|
601
|
+
children: [
|
|
602
|
+
/* @__PURE__ */ jsx(CornerMarkers, {}),
|
|
603
|
+
/* @__PURE__ */ jsx("div", {
|
|
604
|
+
className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500",
|
|
605
|
+
style: { background: "linear-gradient(135deg, transparent 49.5%, hsl(var(--primary) / 0.1) 49.5%, hsl(var(--primary) / 0.1) 50.5%, transparent 50.5%)" }
|
|
606
|
+
}),
|
|
607
|
+
/* @__PURE__ */ jsxs("div", {
|
|
608
|
+
className: "absolute inset-0 flex flex-col justify-center p-6",
|
|
609
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
610
|
+
className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase mb-4",
|
|
611
|
+
children: "Transformation"
|
|
612
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
613
|
+
className: "space-y-4",
|
|
614
|
+
children: [
|
|
615
|
+
{
|
|
616
|
+
problem: "Stuck in loops",
|
|
617
|
+
outcome: "Ship in hours",
|
|
618
|
+
icon: "○"
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
problem: "Can't debug",
|
|
622
|
+
outcome: "Code you own",
|
|
623
|
+
icon: "△"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
problem: "Won't deploy",
|
|
627
|
+
outcome: "Launch confident",
|
|
628
|
+
icon: "□"
|
|
629
|
+
}
|
|
630
|
+
].map((t, i) => /* @__PURE__ */ jsxs("div", {
|
|
631
|
+
className: "group/row relative flex items-center gap-3 transition-all duration-300",
|
|
632
|
+
style: { transitionDelay: `${i * 50}ms` },
|
|
633
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
634
|
+
className: "w-6 h-6 flex items-center justify-center border border-border text-muted-foreground text-xs group-hover/row:border-primary group-hover/row:text-primary transition-colors",
|
|
635
|
+
children: t.icon
|
|
636
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
637
|
+
className: "flex-1 flex items-center gap-2 text-sm",
|
|
638
|
+
children: [
|
|
639
|
+
/* @__PURE__ */ jsx("span", {
|
|
640
|
+
className: "text-muted-foreground/60 line-through decoration-primary/50 group-hover:text-muted-foreground/40 transition-colors",
|
|
641
|
+
children: t.problem
|
|
642
|
+
}),
|
|
643
|
+
/* @__PURE__ */ jsx("svg", {
|
|
644
|
+
className: "w-4 h-4 text-primary shrink-0 group-hover:translate-x-1 transition-transform",
|
|
645
|
+
viewBox: "0 0 24 24",
|
|
646
|
+
fill: "none",
|
|
647
|
+
stroke: "currentColor",
|
|
648
|
+
strokeWidth: 2,
|
|
649
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
650
|
+
strokeLinecap: "round",
|
|
651
|
+
strokeLinejoin: "round",
|
|
652
|
+
d: "M13 7l5 5m0 0l-5 5m5-5H6"
|
|
653
|
+
})
|
|
654
|
+
}),
|
|
655
|
+
/* @__PURE__ */ jsx("span", {
|
|
656
|
+
className: "text-foreground font-medium group-hover:text-primary transition-colors",
|
|
657
|
+
children: t.outcome
|
|
429
658
|
})
|
|
430
|
-
|
|
659
|
+
]
|
|
431
660
|
})]
|
|
432
|
-
})
|
|
433
|
-
}
|
|
661
|
+
}, t.problem))
|
|
662
|
+
})]
|
|
434
663
|
})
|
|
435
|
-
|
|
664
|
+
]
|
|
436
665
|
});
|
|
437
666
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
tag
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
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
|
-
];
|
|
468
|
-
return /* @__PURE__ */ jsxs("section", {
|
|
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",
|
|
486
|
-
children: [
|
|
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",
|
|
667
|
+
function FeaturePill({ title, tag }) {
|
|
668
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
669
|
+
className: "shrink-0 px-5 py-3 bg-gradient-to-r from-card to-primary/5 border border-border flex items-center gap-3 group-hover:border-primary/40 transition-colors",
|
|
670
|
+
children: [
|
|
671
|
+
/* @__PURE__ */ jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" }),
|
|
672
|
+
/* @__PURE__ */ jsx("span", {
|
|
673
|
+
className: "text-sm font-medium whitespace-nowrap text-foreground",
|
|
674
|
+
children: title
|
|
675
|
+
}),
|
|
676
|
+
tag && /* @__PURE__ */ jsx("span", {
|
|
677
|
+
className: `text-[9px] px-2 py-0.5 tracking-wider uppercase font-medium ${tag === "Hot" ? "bg-primary text-white" : "bg-[hsl(var(--status-info))] text-white"}`,
|
|
678
|
+
children: tag
|
|
679
|
+
})
|
|
680
|
+
]
|
|
681
|
+
});
|
|
682
|
+
}
|
|
683
|
+
function CardD() {
|
|
684
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
685
|
+
className: "group relative bg-card border border-border overflow-hidden transform-gpu md:col-span-2 transition-all duration-500 hover:border-primary/60",
|
|
686
|
+
children: [
|
|
687
|
+
/* @__PURE__ */ jsx(CornerMarkers, {}),
|
|
688
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 bottom-0 w-16 bg-gradient-to-r from-card to-transparent z-10 pointer-events-none" }),
|
|
689
|
+
/* @__PURE__ */ jsx("div", { className: "absolute right-0 top-0 bottom-0 w-16 bg-gradient-to-l from-card to-transparent z-10 pointer-events-none" }),
|
|
690
|
+
/* @__PURE__ */ jsxs("div", {
|
|
691
|
+
className: "absolute inset-0 flex flex-col justify-center",
|
|
500
692
|
children: [/* @__PURE__ */ jsx("div", {
|
|
501
|
-
className: "
|
|
502
|
-
children:
|
|
503
|
-
className:
|
|
504
|
-
children:
|
|
505
|
-
|
|
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
|
-
})
|
|
526
|
-
}, feature.title))
|
|
693
|
+
className: "absolute top-4 left-4 z-20",
|
|
694
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
695
|
+
className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
|
|
696
|
+
children: "AI Superpowers"
|
|
697
|
+
})
|
|
527
698
|
}), /* @__PURE__ */ jsx("div", {
|
|
528
|
-
className: "
|
|
699
|
+
className: "flex overflow-hidden py-4",
|
|
529
700
|
children: /* @__PURE__ */ jsxs("div", {
|
|
530
|
-
className: "
|
|
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",
|
|
557
|
-
children: [
|
|
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
|
-
})
|
|
613
|
-
})
|
|
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
|
|
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: "•"
|
|
640
|
-
}),
|
|
641
|
-
/* @__PURE__ */ jsx("span", { children: "Claude" }),
|
|
642
|
-
/* @__PURE__ */ jsx("span", {
|
|
643
|
-
className: "text-border",
|
|
644
|
-
children: "•"
|
|
645
|
-
}),
|
|
646
|
-
/* @__PURE__ */ jsx("span", { children: "Copilot" })
|
|
647
|
-
]
|
|
648
|
-
})]
|
|
649
|
-
})
|
|
650
|
-
]
|
|
701
|
+
className: "flex gap-4 px-4 animate-marquee group-hover:[animation-play-state:paused]",
|
|
702
|
+
children: [AI_FEATURES.map((f) => /* @__PURE__ */ jsx(FeaturePill, { ...f }, f.title)), AI_FEATURES.map((f) => /* @__PURE__ */ jsx(FeaturePill, { ...f }, `dup-${f.title}`))]
|
|
651
703
|
})
|
|
652
704
|
})]
|
|
653
705
|
})
|
|
654
|
-
|
|
706
|
+
]
|
|
655
707
|
});
|
|
656
708
|
}
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
//#region src/client/components/module-showcase.tsx
|
|
660
|
-
function ModuleShowcase() {
|
|
661
|
-
const modules = [
|
|
662
|
-
{
|
|
663
|
-
name: "Payments",
|
|
664
|
-
package: "Subscriptions & checkout",
|
|
665
|
-
desc: "Accept payments in minutes. Subscriptions, one-time purchases, customer portal.",
|
|
666
|
-
status: "stable"
|
|
667
|
-
},
|
|
709
|
+
function CardE() {
|
|
710
|
+
const layers = [
|
|
668
711
|
{
|
|
669
|
-
name: "
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
status: "stable"
|
|
712
|
+
name: "Apps",
|
|
713
|
+
packages: ["web", "server"],
|
|
714
|
+
radius: 95
|
|
673
715
|
},
|
|
674
716
|
{
|
|
675
|
-
name: "
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
717
|
+
name: "Infrastructure",
|
|
718
|
+
packages: [
|
|
719
|
+
"db",
|
|
720
|
+
"auth",
|
|
721
|
+
"infra"
|
|
722
|
+
],
|
|
723
|
+
radius: 75
|
|
679
724
|
},
|
|
680
725
|
{
|
|
681
|
-
name: "
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
status: "stable"
|
|
726
|
+
name: "Adapters",
|
|
727
|
+
packages: ["api", "contracts"],
|
|
728
|
+
radius: 55
|
|
685
729
|
},
|
|
686
730
|
{
|
|
687
|
-
name: "
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
status: "stable"
|
|
731
|
+
name: "Application",
|
|
732
|
+
packages: ["application"],
|
|
733
|
+
radius: 38
|
|
691
734
|
},
|
|
692
735
|
{
|
|
693
|
-
name: "
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
status: "soon"
|
|
736
|
+
name: "Domain",
|
|
737
|
+
packages: ["domain"],
|
|
738
|
+
radius: 20
|
|
697
739
|
}
|
|
698
740
|
];
|
|
699
|
-
return /* @__PURE__ */ jsxs("
|
|
700
|
-
|
|
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",
|
|
704
|
-
children: [
|
|
705
|
-
/* @__PURE__ */ jsxs("div", {
|
|
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"
|
|
710
|
-
})]
|
|
711
|
-
}),
|
|
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"
|
|
715
|
-
}),
|
|
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",
|
|
785
|
-
fill: "none",
|
|
786
|
-
stroke: "currentColor",
|
|
787
|
-
viewBox: "0 0 24 24",
|
|
788
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
789
|
-
strokeLinecap: "round",
|
|
790
|
-
strokeLinejoin: "round",
|
|
791
|
-
strokeWidth: 2,
|
|
792
|
-
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
793
|
-
})
|
|
794
|
-
})]
|
|
795
|
-
})]
|
|
796
|
-
})
|
|
797
|
-
})]
|
|
798
|
-
})]
|
|
799
|
-
});
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
//#endregion
|
|
803
|
-
//#region src/client/components/how-it-works.tsx
|
|
804
|
-
function HowItWorks() {
|
|
805
|
-
const [activeTab, setActiveTab] = useState("builders");
|
|
806
|
-
const steps = activeTab === "builders" ? [
|
|
807
|
-
{
|
|
808
|
-
num: "01",
|
|
809
|
-
command: "bunx create-kuckit-app my-app",
|
|
810
|
-
title: "Scaffold your app",
|
|
811
|
-
desc: "Get a production-ready TypeScript app with Clean Architecture baked in."
|
|
812
|
-
},
|
|
813
|
-
{
|
|
814
|
-
num: "02",
|
|
815
|
-
command: "kuckit add @vendor/billing",
|
|
816
|
-
title: "Install modules",
|
|
817
|
-
desc: "One command adds both server and client code, wired and ready."
|
|
818
|
-
},
|
|
819
|
-
{
|
|
820
|
-
num: "03",
|
|
821
|
-
command: "bun run dev",
|
|
822
|
-
title: "Ship it",
|
|
823
|
-
desc: "Your app is ready. Maintainable, type-safe, and battle-tested."
|
|
824
|
-
}
|
|
825
|
-
] : [
|
|
826
|
-
{
|
|
827
|
-
num: "01",
|
|
828
|
-
command: "kuckit generate module billing",
|
|
829
|
-
title: "Scaffold with AGENTS.md",
|
|
830
|
-
desc: "Generated structure includes documentation for AI and human developers."
|
|
831
|
-
},
|
|
832
|
-
{
|
|
833
|
-
num: "02",
|
|
834
|
-
command: "git commit && git push",
|
|
835
|
-
title: "Build & test",
|
|
836
|
-
desc: "Guardrails ensure your module meets quality standards before it ships."
|
|
837
|
-
},
|
|
838
|
-
{
|
|
839
|
-
num: "03",
|
|
840
|
-
command: "kuckit publish",
|
|
841
|
-
title: "Earn revenue",
|
|
842
|
-
desc: "Set your price, publish to the marketplace, and start earning."
|
|
843
|
-
}
|
|
844
|
-
];
|
|
845
|
-
return /* @__PURE__ */ jsxs("section", {
|
|
846
|
-
className: "relative border-t border-border",
|
|
741
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
742
|
+
className: "group relative bg-card border border-border overflow-hidden transform-gpu md:col-span-2 transition-all duration-500 hover:border-primary/60",
|
|
847
743
|
children: [
|
|
744
|
+
/* @__PURE__ */ jsx(CornerMarkers, {}),
|
|
745
|
+
/* @__PURE__ */ jsx(ScanLines, {}),
|
|
746
|
+
/* @__PURE__ */ jsx("div", {
|
|
747
|
+
className: "absolute top-4 left-4 z-20",
|
|
748
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
749
|
+
className: "text-[10px] text-muted-foreground tracking-[0.2em] uppercase",
|
|
750
|
+
children: "Clean Architecture"
|
|
751
|
+
})
|
|
752
|
+
}),
|
|
848
753
|
/* @__PURE__ */ jsxs("div", {
|
|
849
|
-
className: "
|
|
850
|
-
children: [
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
children: "Three steps to shipping or selling."
|
|
754
|
+
className: "absolute top-4 right-4 z-20 flex items-center gap-2",
|
|
755
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
756
|
+
className: "text-[8px] text-muted-foreground tracking-wider uppercase",
|
|
757
|
+
children: "deps flow in"
|
|
758
|
+
}), /* @__PURE__ */ jsx("svg", {
|
|
759
|
+
className: "w-3 h-3 text-primary animate-pulse",
|
|
760
|
+
viewBox: "0 0 24 24",
|
|
761
|
+
fill: "none",
|
|
762
|
+
stroke: "currentColor",
|
|
763
|
+
strokeWidth: 2,
|
|
764
|
+
children: /* @__PURE__ */ jsx("circle", {
|
|
765
|
+
cx: "12",
|
|
766
|
+
cy: "12",
|
|
767
|
+
r: "3",
|
|
768
|
+
fill: "currentColor"
|
|
865
769
|
})
|
|
866
|
-
]
|
|
770
|
+
})]
|
|
867
771
|
}),
|
|
868
772
|
/* @__PURE__ */ jsx("div", {
|
|
869
|
-
className: "
|
|
773
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
870
774
|
children: /* @__PURE__ */ jsxs("div", {
|
|
871
|
-
className: "
|
|
872
|
-
children: [
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
775
|
+
className: "relative w-48 h-48 md:w-56 md:h-56",
|
|
776
|
+
children: [
|
|
777
|
+
/* @__PURE__ */ jsx("div", {
|
|
778
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
779
|
+
children: [
|
|
780
|
+
0,
|
|
781
|
+
1,
|
|
782
|
+
2
|
|
783
|
+
].map((i) => /* @__PURE__ */ jsx("div", {
|
|
784
|
+
className: "absolute rounded-full border border-primary/20",
|
|
785
|
+
style: {
|
|
786
|
+
width: "100%",
|
|
787
|
+
height: "100%",
|
|
788
|
+
animation: `pulseIn 3s ease-in-out infinite`,
|
|
789
|
+
animationDelay: `${i * 1}s`
|
|
790
|
+
}
|
|
791
|
+
}, i))
|
|
792
|
+
}),
|
|
793
|
+
layers.map((layer, i) => /* @__PURE__ */ jsx("div", {
|
|
794
|
+
className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border transition-all duration-300 group/layer flex items-center justify-center cursor-default",
|
|
795
|
+
style: {
|
|
796
|
+
width: `${layer.radius}%`,
|
|
797
|
+
height: `${layer.radius}%`,
|
|
798
|
+
borderColor: i === layers.length - 1 ? "hsl(var(--primary))" : `hsl(var(--primary) / ${.15 + i * .1})`,
|
|
799
|
+
backgroundColor: i === layers.length - 1 ? "hsl(var(--primary) / 0.15)" : `hsl(var(--primary) / ${.02 + i * .02})`
|
|
800
|
+
},
|
|
801
|
+
children: i === layers.length - 1 ? /* @__PURE__ */ jsx("span", {
|
|
802
|
+
className: "text-[9px] font-medium text-primary tracking-wide",
|
|
803
|
+
children: layer.name
|
|
804
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
805
|
+
className: "absolute text-[8px] text-muted-foreground/60 tracking-wide opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap",
|
|
806
|
+
style: {
|
|
807
|
+
top: "2px",
|
|
808
|
+
left: "50%",
|
|
809
|
+
transform: "translateX(-50%)"
|
|
810
|
+
},
|
|
811
|
+
children: layer.name
|
|
812
|
+
})
|
|
813
|
+
}, layer.name)),
|
|
814
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-8 bg-primary/30 rounded-full blur-xl" })
|
|
815
|
+
]
|
|
881
816
|
})
|
|
882
817
|
}),
|
|
883
818
|
/* @__PURE__ */ jsx("div", {
|
|
884
|
-
className: "
|
|
885
|
-
children: /* @__PURE__ */
|
|
886
|
-
className: "
|
|
887
|
-
children:
|
|
888
|
-
className:
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
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))
|
|
928
|
-
})
|
|
819
|
+
className: "absolute right-4 top-1/2 -translate-y-1/2 space-y-1 opacity-0 group-hover:opacity-100 transition-opacity duration-300",
|
|
820
|
+
children: layers.slice().reverse().map((layer) => /* @__PURE__ */ jsxs("div", {
|
|
821
|
+
className: "flex items-center gap-2",
|
|
822
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
823
|
+
className: "w-2 h-2 rounded-full",
|
|
824
|
+
style: { backgroundColor: "hsl(var(--primary) / 0.5)" }
|
|
825
|
+
}), /* @__PURE__ */ jsx("code", {
|
|
826
|
+
className: "text-[8px] text-muted-foreground font-mono",
|
|
827
|
+
children: layer.packages.join(", ")
|
|
828
|
+
})]
|
|
829
|
+
}, layer.name))
|
|
929
830
|
})
|
|
930
831
|
]
|
|
931
832
|
});
|
|
932
833
|
}
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
})]
|
|
979
|
-
}),
|
|
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."
|
|
834
|
+
function CardF() {
|
|
835
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
836
|
+
className: "group relative bg-card border border-border overflow-hidden transform-gpu transition-all duration-500 hover:border-primary/60 hover:bg-primary/5",
|
|
837
|
+
children: [
|
|
838
|
+
/* @__PURE__ */ jsx(CornerMarkers, {}),
|
|
839
|
+
/* @__PURE__ */ jsx("div", {
|
|
840
|
+
className: "absolute inset-0 opacity-5",
|
|
841
|
+
children: /* @__PURE__ */ jsxs("svg", {
|
|
842
|
+
className: "w-full h-full",
|
|
843
|
+
viewBox: "0 0 100 100",
|
|
844
|
+
preserveAspectRatio: "none",
|
|
845
|
+
children: [
|
|
846
|
+
/* @__PURE__ */ jsx("circle", {
|
|
847
|
+
cx: "50",
|
|
848
|
+
cy: "50",
|
|
849
|
+
r: "40",
|
|
850
|
+
fill: "none",
|
|
851
|
+
stroke: "currentColor",
|
|
852
|
+
strokeWidth: "0.5"
|
|
853
|
+
}),
|
|
854
|
+
/* @__PURE__ */ jsx("circle", {
|
|
855
|
+
cx: "50",
|
|
856
|
+
cy: "50",
|
|
857
|
+
r: "25",
|
|
858
|
+
fill: "none",
|
|
859
|
+
stroke: "currentColor",
|
|
860
|
+
strokeWidth: "0.5"
|
|
861
|
+
}),
|
|
862
|
+
/* @__PURE__ */ jsx("line", {
|
|
863
|
+
x1: "0",
|
|
864
|
+
y1: "50",
|
|
865
|
+
x2: "100",
|
|
866
|
+
y2: "50",
|
|
867
|
+
stroke: "currentColor",
|
|
868
|
+
strokeWidth: "0.5"
|
|
869
|
+
}),
|
|
870
|
+
/* @__PURE__ */ jsx("line", {
|
|
871
|
+
x1: "50",
|
|
872
|
+
y1: "0",
|
|
873
|
+
x2: "50",
|
|
874
|
+
y2: "100",
|
|
875
|
+
stroke: "currentColor",
|
|
876
|
+
strokeWidth: "0.5"
|
|
877
|
+
})
|
|
878
|
+
]
|
|
987
879
|
})
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
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
|
|
1019
|
-
})]
|
|
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",
|
|
1026
|
-
children: [/* @__PURE__ */ jsx("svg", {
|
|
1027
|
-
className: "w-3.5 h-3.5",
|
|
1028
|
-
fill: "none",
|
|
1029
|
-
stroke: "currentColor",
|
|
1030
|
-
viewBox: "0 0 24 24",
|
|
1031
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
1032
|
-
strokeLinecap: "round",
|
|
1033
|
-
strokeLinejoin: "round",
|
|
1034
|
-
strokeWidth: 2,
|
|
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"
|
|
1036
|
-
})
|
|
1037
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
1038
|
-
className: "text-xs font-mono",
|
|
1039
|
-
children: ".md"
|
|
1040
|
-
})]
|
|
1041
|
-
})
|
|
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
|
-
})
|
|
1057
|
-
})
|
|
1058
|
-
})]
|
|
1059
|
-
}, layer.name))
|
|
1060
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1061
|
-
className: "mt-8 flex items-center gap-2 text-sm text-muted-foreground",
|
|
880
|
+
}),
|
|
881
|
+
/* @__PURE__ */ jsxs("div", {
|
|
882
|
+
className: "absolute inset-0 flex flex-col justify-center items-center p-6 text-center",
|
|
883
|
+
children: [
|
|
884
|
+
/* @__PURE__ */ jsxs("div", {
|
|
885
|
+
className: "relative mb-4 group-hover:scale-110 transition-transform duration-300",
|
|
1062
886
|
children: [/* @__PURE__ */ jsx("svg", {
|
|
1063
|
-
className: "w-
|
|
887
|
+
className: "w-10 h-10 text-primary",
|
|
1064
888
|
fill: "none",
|
|
1065
|
-
stroke: "currentColor",
|
|
1066
889
|
viewBox: "0 0 24 24",
|
|
890
|
+
stroke: "currentColor",
|
|
891
|
+
strokeWidth: 1.5,
|
|
1067
892
|
children: /* @__PURE__ */ jsx("path", {
|
|
1068
893
|
strokeLinecap: "round",
|
|
1069
894
|
strokeLinejoin: "round",
|
|
1070
|
-
|
|
1071
|
-
d: "M19 14l-7 7m0 0l-7-7m7 7V3"
|
|
1072
|
-
})
|
|
1073
|
-
}), /* @__PURE__ */ jsx("span", { children: "Dependencies flow down only" })]
|
|
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
|
-
})] })]
|
|
895
|
+
d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
1099
896
|
})
|
|
1100
|
-
},
|
|
1101
|
-
})
|
|
1102
|
-
|
|
897
|
+
}), /* @__PURE__ */ jsx("div", { className: "absolute -inset-2 bg-primary/20 blur-lg -z-10 group-hover:bg-primary/30 transition-colors" })]
|
|
898
|
+
}),
|
|
899
|
+
/* @__PURE__ */ jsx("span", {
|
|
900
|
+
className: "text-sm font-mono text-primary tracking-wide",
|
|
901
|
+
children: "AGENTS.md"
|
|
902
|
+
}),
|
|
903
|
+
/* @__PURE__ */ jsx("span", {
|
|
904
|
+
className: "text-[10px] text-muted-foreground mt-1 tracking-wider uppercase",
|
|
905
|
+
children: "In every package"
|
|
906
|
+
})
|
|
907
|
+
]
|
|
1103
908
|
})
|
|
1104
|
-
|
|
909
|
+
]
|
|
1105
910
|
});
|
|
1106
911
|
}
|
|
1107
|
-
|
|
1108
|
-
//#endregion
|
|
1109
|
-
//#region src/client/components/cli-demo.tsx
|
|
1110
|
-
function CliDemo() {
|
|
1111
|
-
const commands = [
|
|
1112
|
-
{
|
|
1113
|
-
input: "kuckit generate module billing",
|
|
1114
|
-
output: [
|
|
1115
|
-
"Creating module: @myapp/billing-module",
|
|
1116
|
-
" Directory: ./packages/billing-module",
|
|
1117
|
-
"",
|
|
1118
|
-
"✓ Created src/server/module.ts",
|
|
1119
|
-
"✓ Created src/client/index.ts",
|
|
1120
|
-
"✓ Created AGENTS.md",
|
|
1121
|
-
"✓ Created package.json",
|
|
1122
|
-
"",
|
|
1123
|
-
"Module created successfully!"
|
|
1124
|
-
]
|
|
1125
|
-
},
|
|
1126
|
-
{
|
|
1127
|
-
input: "kuckit add @vendor/auth-module",
|
|
1128
|
-
output: [
|
|
1129
|
-
"Installing @vendor/auth-module...",
|
|
1130
|
-
"",
|
|
1131
|
-
"✓ Package installed",
|
|
1132
|
-
"✓ Server module wired in modules.ts",
|
|
1133
|
-
"✓ Client module wired in modules.client.ts",
|
|
1134
|
-
"✓ TypeScript types available",
|
|
1135
|
-
"",
|
|
1136
|
-
"Module ready to use!"
|
|
1137
|
-
]
|
|
1138
|
-
},
|
|
1139
|
-
{
|
|
1140
|
-
input: "kuckit doctor",
|
|
1141
|
-
output: [
|
|
1142
|
-
"Checking project setup...",
|
|
1143
|
-
"",
|
|
1144
|
-
"✓ kuckit.config.ts found",
|
|
1145
|
-
"✓ All modules registered",
|
|
1146
|
-
"✓ No circular dependencies",
|
|
1147
|
-
"✓ AGENTS.md in all packages",
|
|
1148
|
-
"✓ Pre-commit hooks configured",
|
|
1149
|
-
"",
|
|
1150
|
-
"All checks passed!"
|
|
1151
|
-
]
|
|
1152
|
-
}
|
|
1153
|
-
];
|
|
1154
|
-
const [activeCommand, setActiveCommand] = useState(0);
|
|
1155
|
-
const [displayedLines, setDisplayedLines] = useState([]);
|
|
1156
|
-
const [isTyping, setIsTyping] = useState(true);
|
|
1157
|
-
const [typedInput, setTypedInput] = useState("");
|
|
1158
|
-
useEffect(() => {
|
|
1159
|
-
const command = commands[activeCommand];
|
|
1160
|
-
if (!command) return;
|
|
1161
|
-
let inputIndex = 0;
|
|
1162
|
-
let outputIndex = 0;
|
|
1163
|
-
setDisplayedLines([]);
|
|
1164
|
-
setTypedInput("");
|
|
1165
|
-
setIsTyping(true);
|
|
1166
|
-
const inputInterval = setInterval(() => {
|
|
1167
|
-
if (inputIndex <= command.input.length) {
|
|
1168
|
-
setTypedInput(command.input.slice(0, inputIndex));
|
|
1169
|
-
inputIndex++;
|
|
1170
|
-
} else {
|
|
1171
|
-
clearInterval(inputInterval);
|
|
1172
|
-
setIsTyping(false);
|
|
1173
|
-
const outputInterval = setInterval(() => {
|
|
1174
|
-
if (outputIndex < command.output.length) {
|
|
1175
|
-
const line = command.output[outputIndex];
|
|
1176
|
-
if (line !== void 0) setDisplayedLines((prev) => [...prev, line]);
|
|
1177
|
-
outputIndex++;
|
|
1178
|
-
} else {
|
|
1179
|
-
clearInterval(outputInterval);
|
|
1180
|
-
setTimeout(() => {
|
|
1181
|
-
setActiveCommand((prev) => (prev + 1) % commands.length);
|
|
1182
|
-
}, 3e3);
|
|
1183
|
-
}
|
|
1184
|
-
}, 100);
|
|
1185
|
-
}
|
|
1186
|
-
}, 50);
|
|
1187
|
-
return () => {
|
|
1188
|
-
clearInterval(inputInterval);
|
|
1189
|
-
};
|
|
1190
|
-
}, [activeCommand]);
|
|
912
|
+
function Features() {
|
|
1191
913
|
return /* @__PURE__ */ jsxs("section", {
|
|
1192
|
-
className: "relative border-t border-border",
|
|
914
|
+
className: "relative border-t border-border overflow-hidden",
|
|
1193
915
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1194
|
-
className: "
|
|
1195
|
-
children: [
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
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",
|
|
1220
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
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
|
-
})]
|
|
1262
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
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"}`
|
|
1267
|
-
}, index))
|
|
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"
|
|
916
|
+
className: "absolute inset-0 pointer-events-none",
|
|
917
|
+
children: [/* @__PURE__ */ jsx("div", { className: "absolute top-1/4 -left-1/4 w-1/2 h-1/2 bg-primary/5 rounded-full blur-[120px]" }), /* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 -right-1/4 w-1/2 h-1/2 bg-primary/5 rounded-full blur-[120px]" })]
|
|
918
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
919
|
+
className: "relative max-w-7xl mx-auto px-8 py-20 md:py-28",
|
|
920
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
921
|
+
className: "mb-16 md:mb-20",
|
|
922
|
+
children: [
|
|
923
|
+
/* @__PURE__ */ jsxs("div", {
|
|
924
|
+
className: "flex items-center gap-4 mb-6",
|
|
925
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-px w-16 bg-gradient-to-r from-primary to-transparent" }), /* @__PURE__ */ jsx("span", {
|
|
926
|
+
className: "text-[11px] text-primary tracking-[0.3em] uppercase font-medium",
|
|
927
|
+
children: "Features"
|
|
1277
928
|
})]
|
|
1278
|
-
}),
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
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
|
-
})
|
|
929
|
+
}),
|
|
930
|
+
/* @__PURE__ */ jsx("h2", {
|
|
931
|
+
className: "text-4xl md:text-5xl lg:text-6xl font-light text-foreground tracking-[-0.04em] mb-6",
|
|
932
|
+
children: "Everything You Need"
|
|
933
|
+
}),
|
|
934
|
+
/* @__PURE__ */ jsxs("p", {
|
|
935
|
+
className: "text-lg md:text-xl text-muted-foreground max-w-2xl leading-relaxed",
|
|
936
|
+
children: ["A complete foundation for building production-ready SaaS applications.", /* @__PURE__ */ jsx("span", {
|
|
937
|
+
className: "text-foreground",
|
|
938
|
+
children: " No assembly required."
|
|
939
|
+
})]
|
|
940
|
+
})
|
|
941
|
+
]
|
|
942
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
943
|
+
className: "grid grid-cols-1 md:grid-cols-3 auto-rows-[14rem] gap-4 md:gap-5",
|
|
944
|
+
children: [
|
|
945
|
+
/* @__PURE__ */ jsx(CardA, {}),
|
|
946
|
+
/* @__PURE__ */ jsx(CardB, { className: "md:row-span-2" }),
|
|
947
|
+
/* @__PURE__ */ jsx(CardC, { className: "md:row-span-2" }),
|
|
948
|
+
/* @__PURE__ */ jsx(CardD, {}),
|
|
949
|
+
/* @__PURE__ */ jsx(CardE, {}),
|
|
950
|
+
/* @__PURE__ */ jsx(CardF, {})
|
|
951
|
+
]
|
|
952
|
+
})]
|
|
1317
953
|
})]
|
|
1318
954
|
});
|
|
1319
955
|
}
|
|
@@ -1590,87 +1226,6 @@ function FAQItemComponent({ item, index, isExpanded, onToggle }) {
|
|
|
1590
1226
|
});
|
|
1591
1227
|
}
|
|
1592
1228
|
|
|
1593
|
-
//#endregion
|
|
1594
|
-
//#region src/client/components/cta-section.tsx
|
|
1595
|
-
function CtaSection() {
|
|
1596
|
-
return /* @__PURE__ */ jsxs("section", {
|
|
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",
|
|
1600
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
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?"
|
|
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
|
-
})
|
|
1670
|
-
})]
|
|
1671
|
-
});
|
|
1672
|
-
}
|
|
1673
|
-
|
|
1674
1229
|
//#endregion
|
|
1675
1230
|
//#region src/client/components/LandingPage.tsx
|
|
1676
1231
|
function LandingPage() {
|
|
@@ -1699,15 +1254,9 @@ function LandingPage() {
|
|
|
1699
1254
|
className: "relative z-10",
|
|
1700
1255
|
children: [
|
|
1701
1256
|
/* @__PURE__ */ jsx(Hero, {}),
|
|
1702
|
-
/* @__PURE__ */ jsx(
|
|
1703
|
-
/* @__PURE__ */ jsx(AiSuperpowers, {}),
|
|
1704
|
-
/* @__PURE__ */ jsx(ModuleShowcase, {}),
|
|
1705
|
-
/* @__PURE__ */ jsx(HowItWorks, {}),
|
|
1706
|
-
/* @__PURE__ */ jsx(ArchitecturePreview, {}),
|
|
1707
|
-
/* @__PURE__ */ jsx(CliDemo, {}),
|
|
1257
|
+
/* @__PURE__ */ jsx(Features, {}),
|
|
1708
1258
|
/* @__PURE__ */ jsx(Pricing, {}),
|
|
1709
|
-
/* @__PURE__ */ jsx(FAQ, {})
|
|
1710
|
-
/* @__PURE__ */ jsx(CtaSection, {})
|
|
1259
|
+
/* @__PURE__ */ jsx(FAQ, {})
|
|
1711
1260
|
]
|
|
1712
1261
|
}),
|
|
1713
1262
|
/* @__PURE__ */ jsx("footer", {
|
|
@@ -1876,6 +1425,329 @@ function LandingPage() {
|
|
|
1876
1425
|
});
|
|
1877
1426
|
}
|
|
1878
1427
|
|
|
1428
|
+
//#endregion
|
|
1429
|
+
//#region src/client/components/ModulesPage.tsx
|
|
1430
|
+
const modules = [
|
|
1431
|
+
{
|
|
1432
|
+
name: "Payments",
|
|
1433
|
+
slug: "payments",
|
|
1434
|
+
package: "@kuckit/polar-payments-module",
|
|
1435
|
+
desc: "Accept payments in minutes. Subscriptions, one-time purchases, customer portal.",
|
|
1436
|
+
status: "stable",
|
|
1437
|
+
features: [
|
|
1438
|
+
"Stripe integration",
|
|
1439
|
+
"Polar integration",
|
|
1440
|
+
"Subscription management",
|
|
1441
|
+
"Customer portal"
|
|
1442
|
+
]
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
name: "User Accounts",
|
|
1446
|
+
slug: "users",
|
|
1447
|
+
package: "@kuckit/users-module",
|
|
1448
|
+
desc: "User registration, profiles, and account management ready to go.",
|
|
1449
|
+
status: "stable",
|
|
1450
|
+
features: [
|
|
1451
|
+
"OAuth providers",
|
|
1452
|
+
"Profile management",
|
|
1453
|
+
"Settings UI",
|
|
1454
|
+
"Account deletion"
|
|
1455
|
+
]
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
name: "Documentation",
|
|
1459
|
+
slug: "docs",
|
|
1460
|
+
package: "@kuckit/docs-module",
|
|
1461
|
+
desc: "Beautiful docs for your users. Write in plain text, get a polished help center.",
|
|
1462
|
+
status: "stable",
|
|
1463
|
+
features: [
|
|
1464
|
+
"MDX support",
|
|
1465
|
+
"Search built-in",
|
|
1466
|
+
"Auto-navigation",
|
|
1467
|
+
"Code highlighting"
|
|
1468
|
+
]
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
name: "AI Chat",
|
|
1472
|
+
slug: "ai",
|
|
1473
|
+
package: "@kuckit/ai-module",
|
|
1474
|
+
desc: "Add AI chat to your app. Streaming responses, conversation history included.",
|
|
1475
|
+
status: "stable",
|
|
1476
|
+
features: [
|
|
1477
|
+
"OpenAI integration",
|
|
1478
|
+
"Streaming responses",
|
|
1479
|
+
"Chat history",
|
|
1480
|
+
"Context management"
|
|
1481
|
+
]
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
name: "CLI Login",
|
|
1485
|
+
slug: "cli-auth",
|
|
1486
|
+
package: "@kuckit/cli-auth-module",
|
|
1487
|
+
desc: "Let users log in from command line tools with a simple device code.",
|
|
1488
|
+
status: "stable",
|
|
1489
|
+
features: [
|
|
1490
|
+
"Device code flow",
|
|
1491
|
+
"Token management",
|
|
1492
|
+
"CLI SDK",
|
|
1493
|
+
"Secure auth"
|
|
1494
|
+
]
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
name: "More Coming",
|
|
1498
|
+
slug: "coming-soon",
|
|
1499
|
+
package: "Email, storage, analytics",
|
|
1500
|
+
desc: "We're building more modules every week. Tell us what you need.",
|
|
1501
|
+
status: "soon",
|
|
1502
|
+
features: [
|
|
1503
|
+
"Email service",
|
|
1504
|
+
"File storage",
|
|
1505
|
+
"Analytics",
|
|
1506
|
+
"And more..."
|
|
1507
|
+
]
|
|
1508
|
+
}
|
|
1509
|
+
];
|
|
1510
|
+
function ModulesPage() {
|
|
1511
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1512
|
+
className: "min-h-screen bg-background text-foreground",
|
|
1513
|
+
children: [
|
|
1514
|
+
/* @__PURE__ */ jsx("div", {
|
|
1515
|
+
className: "fixed inset-0 pointer-events-none",
|
|
1516
|
+
style: {
|
|
1517
|
+
backgroundImage: `
|
|
1518
|
+
linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
|
|
1519
|
+
linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
|
|
1520
|
+
`,
|
|
1521
|
+
backgroundSize: "60px 60px"
|
|
1522
|
+
}
|
|
1523
|
+
}),
|
|
1524
|
+
/* @__PURE__ */ jsx("nav", {
|
|
1525
|
+
className: "relative z-20 border-b border-border",
|
|
1526
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1527
|
+
className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
|
|
1528
|
+
children: [
|
|
1529
|
+
/* @__PURE__ */ jsxs("a", {
|
|
1530
|
+
href: "/",
|
|
1531
|
+
className: "flex items-center gap-3",
|
|
1532
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
1533
|
+
className: "w-8 h-8",
|
|
1534
|
+
viewBox: "0 0 512 512",
|
|
1535
|
+
fill: "none",
|
|
1536
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1537
|
+
children: [
|
|
1538
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1539
|
+
points: "256,64 384,144 384,304 256,224",
|
|
1540
|
+
fill: "#3D3A39"
|
|
1541
|
+
}),
|
|
1542
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1543
|
+
points: "256,64 128,144 128,304 256,224",
|
|
1544
|
+
fill: "#5C5855"
|
|
1545
|
+
}),
|
|
1546
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1547
|
+
points: "128,144 256,224 384,144 256,64",
|
|
1548
|
+
fill: "#A49D9A"
|
|
1549
|
+
}),
|
|
1550
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1551
|
+
points: "256,224 352,280 352,392 256,336",
|
|
1552
|
+
fill: "#D15010"
|
|
1553
|
+
}),
|
|
1554
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1555
|
+
points: "256,224 160,280 160,392 256,336",
|
|
1556
|
+
fill: "#EE6018"
|
|
1557
|
+
}),
|
|
1558
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
1559
|
+
points: "160,280 256,336 352,280 256,224",
|
|
1560
|
+
fill: "#EF6F2E"
|
|
1561
|
+
})
|
|
1562
|
+
]
|
|
1563
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1564
|
+
className: "text-foreground font-medium tracking-tight",
|
|
1565
|
+
children: "Kuckit"
|
|
1566
|
+
})]
|
|
1567
|
+
}),
|
|
1568
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1569
|
+
className: "hidden md:flex items-center gap-8",
|
|
1570
|
+
children: [
|
|
1571
|
+
/* @__PURE__ */ jsx("a", {
|
|
1572
|
+
href: "/docs",
|
|
1573
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
1574
|
+
children: "Docs"
|
|
1575
|
+
}),
|
|
1576
|
+
/* @__PURE__ */ jsx("a", {
|
|
1577
|
+
href: "/modules",
|
|
1578
|
+
className: "text-sm text-foreground font-medium",
|
|
1579
|
+
children: "Modules"
|
|
1580
|
+
}),
|
|
1581
|
+
/* @__PURE__ */ jsx("a", {
|
|
1582
|
+
href: "/#pricing",
|
|
1583
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
1584
|
+
children: "Pricing"
|
|
1585
|
+
})
|
|
1586
|
+
]
|
|
1587
|
+
}),
|
|
1588
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1589
|
+
className: "flex items-center gap-3",
|
|
1590
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
1591
|
+
href: "/login",
|
|
1592
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
|
|
1593
|
+
children: "Sign in"
|
|
1594
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
1595
|
+
href: "/docs/getting-started",
|
|
1596
|
+
className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
|
|
1597
|
+
children: "Get Started"
|
|
1598
|
+
})]
|
|
1599
|
+
})
|
|
1600
|
+
]
|
|
1601
|
+
})
|
|
1602
|
+
}),
|
|
1603
|
+
/* @__PURE__ */ jsx("div", {
|
|
1604
|
+
className: "relative z-10 border-b border-border",
|
|
1605
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1606
|
+
className: "max-w-7xl mx-auto px-8 py-20",
|
|
1607
|
+
children: [
|
|
1608
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1609
|
+
className: "flex items-center gap-4 mb-6",
|
|
1610
|
+
children: [
|
|
1611
|
+
/* @__PURE__ */ jsx("a", {
|
|
1612
|
+
href: "/",
|
|
1613
|
+
className: "text-xs text-muted-foreground hover:text-foreground transition-colors",
|
|
1614
|
+
children: "Home"
|
|
1615
|
+
}),
|
|
1616
|
+
/* @__PURE__ */ jsx("span", {
|
|
1617
|
+
className: "text-muted-foreground",
|
|
1618
|
+
children: "/"
|
|
1619
|
+
}),
|
|
1620
|
+
/* @__PURE__ */ jsx("span", {
|
|
1621
|
+
className: "text-xs text-primary tracking-[0.15em] uppercase",
|
|
1622
|
+
children: "Modules"
|
|
1623
|
+
})
|
|
1624
|
+
]
|
|
1625
|
+
}),
|
|
1626
|
+
/* @__PURE__ */ jsx("h1", {
|
|
1627
|
+
className: "text-5xl md:text-6xl font-light text-foreground tracking-[-0.03em] mb-6",
|
|
1628
|
+
children: "Module Ecosystem"
|
|
1629
|
+
}),
|
|
1630
|
+
/* @__PURE__ */ jsx("p", {
|
|
1631
|
+
className: "text-xl text-muted-foreground max-w-2xl",
|
|
1632
|
+
children: "Production-ready modules that integrate seamlessly. Skip weeks of development and focus on what makes your product unique."
|
|
1633
|
+
})
|
|
1634
|
+
]
|
|
1635
|
+
})
|
|
1636
|
+
}),
|
|
1637
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1638
|
+
className: "relative z-10 max-w-7xl mx-auto",
|
|
1639
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1640
|
+
className: "grid lg:grid-cols-2",
|
|
1641
|
+
children: modules.map((mod, index) => /* @__PURE__ */ jsxs("div", {
|
|
1642
|
+
className: `group relative p-10 transition-colors hover:bg-card border-b border-border ${index % 2 === 0 ? "lg:border-r" : ""}`,
|
|
1643
|
+
children: [
|
|
1644
|
+
/* @__PURE__ */ jsx("div", {
|
|
1645
|
+
className: "absolute top-8 right-8",
|
|
1646
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
1647
|
+
className: `px-3 py-1.5 text-[10px] tracking-[0.15em] uppercase ${mod.status === "stable" ? "bg-[hsl(var(--status-success)/0.1)] text-[hsl(var(--status-success))] border border-[hsl(var(--status-success)/0.2)]" : mod.status === "beta" ? "bg-primary/10 text-primary border border-primary/20" : "bg-muted text-muted-foreground border border-border"}`,
|
|
1648
|
+
children: mod.status
|
|
1649
|
+
})
|
|
1650
|
+
}),
|
|
1651
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1652
|
+
className: "pr-24",
|
|
1653
|
+
children: [
|
|
1654
|
+
/* @__PURE__ */ jsx("span", {
|
|
1655
|
+
className: "text-sm text-primary font-mono block mb-3",
|
|
1656
|
+
children: mod.package
|
|
1657
|
+
}),
|
|
1658
|
+
/* @__PURE__ */ jsx("h2", {
|
|
1659
|
+
className: "text-2xl font-medium text-foreground mb-3 tracking-tight group-hover:text-primary transition-colors",
|
|
1660
|
+
children: mod.name
|
|
1661
|
+
}),
|
|
1662
|
+
/* @__PURE__ */ jsx("p", {
|
|
1663
|
+
className: "text-muted-foreground mb-6",
|
|
1664
|
+
children: mod.desc
|
|
1665
|
+
}),
|
|
1666
|
+
/* @__PURE__ */ jsx("div", {
|
|
1667
|
+
className: "flex flex-wrap gap-2",
|
|
1668
|
+
children: mod.features.map((feature) => /* @__PURE__ */ jsx("span", {
|
|
1669
|
+
className: "px-3 py-1 text-xs text-muted-foreground bg-muted border border-border",
|
|
1670
|
+
children: feature
|
|
1671
|
+
}, feature))
|
|
1672
|
+
})
|
|
1673
|
+
]
|
|
1674
|
+
}),
|
|
1675
|
+
mod.status !== "soon" && /* @__PURE__ */ jsx("a", {
|
|
1676
|
+
href: `/docs/modules/${mod.slug}`,
|
|
1677
|
+
className: "absolute bottom-8 right-8 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
1678
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
1679
|
+
className: "w-6 h-6 text-primary",
|
|
1680
|
+
fill: "none",
|
|
1681
|
+
stroke: "currentColor",
|
|
1682
|
+
viewBox: "0 0 24 24",
|
|
1683
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
1684
|
+
strokeLinecap: "round",
|
|
1685
|
+
strokeLinejoin: "round",
|
|
1686
|
+
strokeWidth: 1.5,
|
|
1687
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
1688
|
+
})
|
|
1689
|
+
})
|
|
1690
|
+
})
|
|
1691
|
+
]
|
|
1692
|
+
}, mod.slug))
|
|
1693
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
1694
|
+
className: "border-t border-border",
|
|
1695
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1696
|
+
className: "px-8 py-12 flex flex-col md:flex-row md:items-center justify-between gap-6",
|
|
1697
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
1698
|
+
className: "text-xl font-medium text-foreground mb-2",
|
|
1699
|
+
children: "Need a custom module?"
|
|
1700
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
1701
|
+
className: "text-muted-foreground",
|
|
1702
|
+
children: "We can help you build it, or tell us what you need and we'll add it to our roadmap."
|
|
1703
|
+
})] }), /* @__PURE__ */ jsxs("div", {
|
|
1704
|
+
className: "flex gap-4",
|
|
1705
|
+
children: [/* @__PURE__ */ jsxs("a", {
|
|
1706
|
+
href: "/docs/module-development",
|
|
1707
|
+
className: "group inline-flex items-center gap-3 px-6 py-3 border border-border text-foreground hover:border-primary/50 hover:bg-card transition-all",
|
|
1708
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Build Your Own" }), /* @__PURE__ */ jsx("svg", {
|
|
1709
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
1710
|
+
fill: "none",
|
|
1711
|
+
stroke: "currentColor",
|
|
1712
|
+
viewBox: "0 0 24 24",
|
|
1713
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
1714
|
+
strokeLinecap: "round",
|
|
1715
|
+
strokeLinejoin: "round",
|
|
1716
|
+
strokeWidth: 2,
|
|
1717
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
1718
|
+
})
|
|
1719
|
+
})]
|
|
1720
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
1721
|
+
href: "/discord",
|
|
1722
|
+
className: "group inline-flex items-center gap-3 px-6 py-3 bg-primary text-primary-foreground hover:bg-primary/90 transition-all",
|
|
1723
|
+
children: /* @__PURE__ */ jsx("span", { children: "Request Module" })
|
|
1724
|
+
})]
|
|
1725
|
+
})]
|
|
1726
|
+
})
|
|
1727
|
+
})]
|
|
1728
|
+
}),
|
|
1729
|
+
/* @__PURE__ */ jsx("footer", {
|
|
1730
|
+
className: "relative z-10 border-t border-border mt-20",
|
|
1731
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1732
|
+
className: "max-w-7xl mx-auto px-8 py-8 flex items-center justify-between",
|
|
1733
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
1734
|
+
className: "text-sm text-muted-foreground",
|
|
1735
|
+
children: [
|
|
1736
|
+
"© ",
|
|
1737
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
1738
|
+
" Kuckit"
|
|
1739
|
+
]
|
|
1740
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
1741
|
+
href: "/",
|
|
1742
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
1743
|
+
children: "← Back to Home"
|
|
1744
|
+
})]
|
|
1745
|
+
})
|
|
1746
|
+
})
|
|
1747
|
+
]
|
|
1748
|
+
});
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1879
1751
|
//#endregion
|
|
1880
1752
|
//#region src/client/index.ts
|
|
1881
1753
|
const kuckitClientModule = defineKuckitClientModule({
|
|
@@ -1884,6 +1756,7 @@ const kuckitClientModule = defineKuckitClientModule({
|
|
|
1884
1756
|
version: "0.1.0",
|
|
1885
1757
|
register(ctx) {
|
|
1886
1758
|
ctx.registerComponent("LandingPage", LandingPage);
|
|
1759
|
+
ctx.registerComponent("ModulesPage", ModulesPage);
|
|
1887
1760
|
ctx.addRoute({
|
|
1888
1761
|
id: "landing",
|
|
1889
1762
|
path: "/",
|
|
@@ -1893,9 +1766,18 @@ const kuckitClientModule = defineKuckitClientModule({
|
|
|
1893
1766
|
requiresAuth: false
|
|
1894
1767
|
}
|
|
1895
1768
|
});
|
|
1769
|
+
ctx.addRoute({
|
|
1770
|
+
id: "modules",
|
|
1771
|
+
path: "/modules",
|
|
1772
|
+
component: ModulesPage,
|
|
1773
|
+
meta: {
|
|
1774
|
+
title: "Modules - Kuckit",
|
|
1775
|
+
requiresAuth: false
|
|
1776
|
+
}
|
|
1777
|
+
});
|
|
1896
1778
|
}
|
|
1897
1779
|
});
|
|
1898
1780
|
|
|
1899
1781
|
//#endregion
|
|
1900
|
-
export { LandingPage, kuckitClientModule };
|
|
1782
|
+
export { LandingPage, ModulesPage, kuckitClientModule };
|
|
1901
1783
|
//# sourceMappingURL=index.js.map
|