@kuckit/landing-module 4.0.4 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/components/LandingPage.d.ts +6 -0
- package/dist/client/components/LandingPage.js +206 -0
- package/dist/client/components/ModulesPage.d.ts +6 -0
- package/dist/client/components/ModulesPage.js +326 -0
- package/dist/client/components/faq.js +170 -0
- package/dist/client/components/features.js +624 -0
- package/dist/client/components/hero.js +239 -0
- package/dist/client/components/pricing.js +111 -0
- package/dist/client/components/terminal-animation.js +100 -0
- package/dist/client/components/ui/glare-card.js +375 -0
- package/dist/client/components/ui/utils.js +10 -0
- package/dist/client/index.d.ts +10 -10
- package/dist/client/index.js +3 -1751
- package/dist/server/module.d.ts +1 -2
- package/dist/server/module.js +6 -79
- package/dist/server/repository/waitlist.repository.js +22 -0
- package/dist/server/router/waitlist.router.js +19 -0
- package/dist/server/schema/index.d.ts +2 -0
- package/dist/server/schema/index.js +3 -0
- package/dist/server/schema/waitlist.d.ts +99 -0
- package/dist/server/schema/waitlist.js +13 -0
- package/dist/server/use-cases/join-waitlist.js +32 -0
- package/package.json +12 -7
- package/dist/client/index.js.map +0 -1
- package/dist/server/module.js.map +0 -1
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Hero } from "./hero.js";
|
|
2
|
+
import { Features } from "./features.js";
|
|
3
|
+
import { Pricing } from "./pricing.js";
|
|
4
|
+
import { FAQ } from "./faq.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
|
|
7
|
+
//#region src/client/components/LandingPage.tsx
|
|
8
|
+
function LandingPage() {
|
|
9
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
10
|
+
className: "min-h-screen bg-background text-foreground overflow-x-hidden",
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ jsx("div", {
|
|
13
|
+
className: "fixed inset-0 pointer-events-none",
|
|
14
|
+
style: {
|
|
15
|
+
backgroundImage: `
|
|
16
|
+
linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
|
|
17
|
+
linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
|
|
18
|
+
`,
|
|
19
|
+
backgroundSize: "60px 60px"
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ jsx("div", {
|
|
23
|
+
className: "fixed top-0 right-0 w-[1px] h-[200vh] bg-gradient-to-b from-primary via-primary/50 to-transparent pointer-events-none origin-top-right",
|
|
24
|
+
style: { transform: "rotate(-35deg) translateX(300px)" }
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ jsx("div", {
|
|
27
|
+
className: "fixed top-0 right-0 w-[500px] h-[500px] pointer-events-none",
|
|
28
|
+
children: /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-primary/8 blur-[100px] rounded-full -translate-y-1/2 translate-x-1/2" })
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ jsxs("div", {
|
|
31
|
+
className: "relative z-10",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ jsx(Hero, {}),
|
|
34
|
+
/* @__PURE__ */ jsx(Features, {}),
|
|
35
|
+
/* @__PURE__ */ jsx(Pricing, {}),
|
|
36
|
+
/* @__PURE__ */ jsx(FAQ, {})
|
|
37
|
+
]
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ jsx("footer", {
|
|
40
|
+
className: "relative z-10 border-t border-border",
|
|
41
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
42
|
+
className: "max-w-7xl mx-auto",
|
|
43
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
44
|
+
className: "grid grid-cols-1 md:grid-cols-12 border-b border-border",
|
|
45
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "md:col-span-4 p-8 md:p-12 border-b md:border-b-0 md:border-r border-border",
|
|
47
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
48
|
+
className: "flex items-center gap-4 mb-6",
|
|
49
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
50
|
+
className: "w-10 h-10",
|
|
51
|
+
viewBox: "0 0 512 512",
|
|
52
|
+
fill: "none",
|
|
53
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
56
|
+
points: "256,64 384,144 384,304 256,224",
|
|
57
|
+
fill: "#3D3A39"
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
60
|
+
points: "256,64 128,144 128,304 256,224",
|
|
61
|
+
fill: "#5C5855"
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
64
|
+
points: "128,144 256,224 384,144 256,64",
|
|
65
|
+
fill: "#A49D9A"
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
68
|
+
points: "256,224 352,280 352,392 256,336",
|
|
69
|
+
fill: "#D15010"
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
72
|
+
points: "256,224 160,280 160,392 256,336",
|
|
73
|
+
fill: "#EE6018"
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
76
|
+
points: "160,280 256,336 352,280 256,224",
|
|
77
|
+
fill: "#EF6F2E"
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
81
|
+
className: "text-foreground font-medium tracking-tight",
|
|
82
|
+
children: "Kuckit"
|
|
83
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
84
|
+
className: "text-muted-foreground text-xs tracking-[0.15em] uppercase",
|
|
85
|
+
children: "Framework"
|
|
86
|
+
})] })]
|
|
87
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
88
|
+
className: "text-muted-foreground text-sm leading-relaxed max-w-xs",
|
|
89
|
+
children: "The TypeScript module ecosystem where developers build once and sell forever."
|
|
90
|
+
})]
|
|
91
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
92
|
+
className: "md:col-span-8 grid grid-cols-3",
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ jsxs("div", {
|
|
95
|
+
className: "p-8 border-r border-border",
|
|
96
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
97
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
98
|
+
children: "Resources"
|
|
99
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
100
|
+
className: "space-y-4",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ jsx("a", {
|
|
103
|
+
href: "/docs",
|
|
104
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
105
|
+
children: "Documentation"
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ jsx("a", {
|
|
108
|
+
href: "/docs/getting-started",
|
|
109
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
110
|
+
children: "Quick Start"
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ jsx("a", {
|
|
113
|
+
href: "/docs/api",
|
|
114
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
115
|
+
children: "API Reference"
|
|
116
|
+
})
|
|
117
|
+
]
|
|
118
|
+
})]
|
|
119
|
+
}),
|
|
120
|
+
/* @__PURE__ */ jsxs("div", {
|
|
121
|
+
className: "p-8 border-r border-border",
|
|
122
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
123
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
124
|
+
children: "Community"
|
|
125
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
126
|
+
className: "space-y-4",
|
|
127
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
128
|
+
href: "/discord",
|
|
129
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
130
|
+
children: "Discord"
|
|
131
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
132
|
+
href: "https://twitter.com/kuckit",
|
|
133
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
134
|
+
children: "Twitter"
|
|
135
|
+
})]
|
|
136
|
+
})]
|
|
137
|
+
}),
|
|
138
|
+
/* @__PURE__ */ jsxs("div", {
|
|
139
|
+
className: "p-8",
|
|
140
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
141
|
+
className: "text-xs text-muted-foreground tracking-[0.2em] uppercase mb-6",
|
|
142
|
+
children: "Legal"
|
|
143
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
144
|
+
className: "space-y-4",
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ jsx("a", {
|
|
147
|
+
href: "/privacy",
|
|
148
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
149
|
+
children: "Privacy"
|
|
150
|
+
}),
|
|
151
|
+
/* @__PURE__ */ jsx("a", {
|
|
152
|
+
href: "/terms",
|
|
153
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
154
|
+
children: "Terms"
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ jsx("a", {
|
|
157
|
+
href: "/license",
|
|
158
|
+
className: "block text-foreground hover:text-primary transition-colors text-sm",
|
|
159
|
+
children: "License"
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
})]
|
|
163
|
+
})
|
|
164
|
+
]
|
|
165
|
+
})]
|
|
166
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
167
|
+
className: "flex flex-col md:flex-row items-center justify-between gap-4 px-8 md:px-12 py-6",
|
|
168
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
169
|
+
className: "flex items-center gap-6 text-xs text-muted-foreground",
|
|
170
|
+
children: [
|
|
171
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
172
|
+
"© ",
|
|
173
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
174
|
+
" Kuckit"
|
|
175
|
+
] }),
|
|
176
|
+
/* @__PURE__ */ jsx("span", {
|
|
177
|
+
className: "hidden md:inline text-border",
|
|
178
|
+
children: "|"
|
|
179
|
+
}),
|
|
180
|
+
/* @__PURE__ */ jsx("span", {
|
|
181
|
+
className: "hidden md:inline",
|
|
182
|
+
children: "MIT License"
|
|
183
|
+
})
|
|
184
|
+
]
|
|
185
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
186
|
+
className: "flex items-center gap-3",
|
|
187
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
188
|
+
className: "flex items-center gap-2 px-3 py-1.5 bg-muted border border-border",
|
|
189
|
+
children: [/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-[hsl(var(--status-success))] animate-pulse" }), /* @__PURE__ */ jsx("span", {
|
|
190
|
+
className: "text-xs text-muted-foreground tracking-wide",
|
|
191
|
+
children: "All systems operational"
|
|
192
|
+
})]
|
|
193
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
194
|
+
className: "text-xs text-muted-foreground font-mono",
|
|
195
|
+
children: "v1.0.0"
|
|
196
|
+
})]
|
|
197
|
+
})]
|
|
198
|
+
})]
|
|
199
|
+
})
|
|
200
|
+
})
|
|
201
|
+
]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
//#endregion
|
|
206
|
+
export { LandingPage };
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/client/components/ModulesPage.tsx
|
|
4
|
+
const modules = [
|
|
5
|
+
{
|
|
6
|
+
name: "Payments",
|
|
7
|
+
slug: "payments",
|
|
8
|
+
package: "@kuckit/polar-payments-module",
|
|
9
|
+
desc: "Accept payments in minutes. Subscriptions, one-time purchases, customer portal.",
|
|
10
|
+
status: "stable",
|
|
11
|
+
features: [
|
|
12
|
+
"Stripe integration",
|
|
13
|
+
"Polar integration",
|
|
14
|
+
"Subscription management",
|
|
15
|
+
"Customer portal"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "User Accounts",
|
|
20
|
+
slug: "users",
|
|
21
|
+
package: "@kuckit/users-module",
|
|
22
|
+
desc: "User registration, profiles, and account management ready to go.",
|
|
23
|
+
status: "stable",
|
|
24
|
+
features: [
|
|
25
|
+
"OAuth providers",
|
|
26
|
+
"Profile management",
|
|
27
|
+
"Settings UI",
|
|
28
|
+
"Account deletion"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "Documentation",
|
|
33
|
+
slug: "docs",
|
|
34
|
+
package: "@kuckit/docs-module",
|
|
35
|
+
desc: "Beautiful docs for your users. Write in plain text, get a polished help center.",
|
|
36
|
+
status: "stable",
|
|
37
|
+
features: [
|
|
38
|
+
"MDX support",
|
|
39
|
+
"Search built-in",
|
|
40
|
+
"Auto-navigation",
|
|
41
|
+
"Code highlighting"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "AI Chat",
|
|
46
|
+
slug: "ai",
|
|
47
|
+
package: "@kuckit/ai-module",
|
|
48
|
+
desc: "Add AI chat to your app. Streaming responses, conversation history included.",
|
|
49
|
+
status: "stable",
|
|
50
|
+
features: [
|
|
51
|
+
"OpenAI integration",
|
|
52
|
+
"Streaming responses",
|
|
53
|
+
"Chat history",
|
|
54
|
+
"Context management"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "CLI Login",
|
|
59
|
+
slug: "cli-auth",
|
|
60
|
+
package: "@kuckit/cli-auth-module",
|
|
61
|
+
desc: "Let users log in from command line tools with a simple device code.",
|
|
62
|
+
status: "stable",
|
|
63
|
+
features: [
|
|
64
|
+
"Device code flow",
|
|
65
|
+
"Token management",
|
|
66
|
+
"CLI SDK",
|
|
67
|
+
"Secure auth"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "More Coming",
|
|
72
|
+
slug: "coming-soon",
|
|
73
|
+
package: "Email, storage, analytics",
|
|
74
|
+
desc: "We're building more modules every week. Tell us what you need.",
|
|
75
|
+
status: "soon",
|
|
76
|
+
features: [
|
|
77
|
+
"Email service",
|
|
78
|
+
"File storage",
|
|
79
|
+
"Analytics",
|
|
80
|
+
"And more..."
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
];
|
|
84
|
+
function ModulesPage() {
|
|
85
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
86
|
+
className: "min-h-screen bg-background text-foreground",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ jsx("div", {
|
|
89
|
+
className: "fixed inset-0 pointer-events-none",
|
|
90
|
+
style: {
|
|
91
|
+
backgroundImage: `
|
|
92
|
+
linear-gradient(to right, hsl(var(--border) / 0.15) 1px, transparent 1px),
|
|
93
|
+
linear-gradient(to bottom, hsl(var(--border) / 0.15) 1px, transparent 1px)
|
|
94
|
+
`,
|
|
95
|
+
backgroundSize: "60px 60px"
|
|
96
|
+
}
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ jsx("nav", {
|
|
99
|
+
className: "relative z-20 border-b border-border",
|
|
100
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
101
|
+
className: "max-w-7xl mx-auto flex items-center justify-between h-16 px-8",
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ jsxs("a", {
|
|
104
|
+
href: "/",
|
|
105
|
+
className: "flex items-center gap-3",
|
|
106
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
107
|
+
className: "w-8 h-8",
|
|
108
|
+
viewBox: "0 0 512 512",
|
|
109
|
+
fill: "none",
|
|
110
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
113
|
+
points: "256,64 384,144 384,304 256,224",
|
|
114
|
+
fill: "#3D3A39"
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
117
|
+
points: "256,64 128,144 128,304 256,224",
|
|
118
|
+
fill: "#5C5855"
|
|
119
|
+
}),
|
|
120
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
121
|
+
points: "128,144 256,224 384,144 256,64",
|
|
122
|
+
fill: "#A49D9A"
|
|
123
|
+
}),
|
|
124
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
125
|
+
points: "256,224 352,280 352,392 256,336",
|
|
126
|
+
fill: "#D15010"
|
|
127
|
+
}),
|
|
128
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
129
|
+
points: "256,224 160,280 160,392 256,336",
|
|
130
|
+
fill: "#EE6018"
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
133
|
+
points: "160,280 256,336 352,280 256,224",
|
|
134
|
+
fill: "#EF6F2E"
|
|
135
|
+
})
|
|
136
|
+
]
|
|
137
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
138
|
+
className: "text-foreground font-medium tracking-tight",
|
|
139
|
+
children: "Kuckit"
|
|
140
|
+
})]
|
|
141
|
+
}),
|
|
142
|
+
/* @__PURE__ */ jsxs("div", {
|
|
143
|
+
className: "hidden md:flex items-center gap-8",
|
|
144
|
+
children: [
|
|
145
|
+
/* @__PURE__ */ jsx("a", {
|
|
146
|
+
href: "/docs",
|
|
147
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
148
|
+
children: "Docs"
|
|
149
|
+
}),
|
|
150
|
+
/* @__PURE__ */ jsx("a", {
|
|
151
|
+
href: "/modules",
|
|
152
|
+
className: "text-sm text-foreground font-medium",
|
|
153
|
+
children: "Modules"
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ jsx("a", {
|
|
156
|
+
href: "/#pricing",
|
|
157
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
158
|
+
children: "Pricing"
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
}),
|
|
162
|
+
/* @__PURE__ */ jsxs("div", {
|
|
163
|
+
className: "flex items-center gap-3",
|
|
164
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
165
|
+
href: "/login",
|
|
166
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors px-4 py-2",
|
|
167
|
+
children: "Sign in"
|
|
168
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
169
|
+
href: "/docs/getting-started",
|
|
170
|
+
className: "text-sm bg-primary text-primary-foreground px-4 py-2 hover:bg-primary/90 transition-colors",
|
|
171
|
+
children: "Get Started"
|
|
172
|
+
})]
|
|
173
|
+
})
|
|
174
|
+
]
|
|
175
|
+
})
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ jsx("div", {
|
|
178
|
+
className: "relative z-10 border-b border-border",
|
|
179
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
180
|
+
className: "max-w-7xl mx-auto px-8 py-20",
|
|
181
|
+
children: [
|
|
182
|
+
/* @__PURE__ */ jsxs("div", {
|
|
183
|
+
className: "flex items-center gap-4 mb-6",
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ jsx("a", {
|
|
186
|
+
href: "/",
|
|
187
|
+
className: "text-xs text-muted-foreground hover:text-foreground transition-colors",
|
|
188
|
+
children: "Home"
|
|
189
|
+
}),
|
|
190
|
+
/* @__PURE__ */ jsx("span", {
|
|
191
|
+
className: "text-muted-foreground",
|
|
192
|
+
children: "/"
|
|
193
|
+
}),
|
|
194
|
+
/* @__PURE__ */ jsx("span", {
|
|
195
|
+
className: "text-xs text-primary tracking-[0.15em] uppercase",
|
|
196
|
+
children: "Modules"
|
|
197
|
+
})
|
|
198
|
+
]
|
|
199
|
+
}),
|
|
200
|
+
/* @__PURE__ */ jsx("h1", {
|
|
201
|
+
className: "text-5xl md:text-6xl font-light text-foreground tracking-[-0.03em] mb-6",
|
|
202
|
+
children: "Module Ecosystem"
|
|
203
|
+
}),
|
|
204
|
+
/* @__PURE__ */ jsx("p", {
|
|
205
|
+
className: "text-xl text-muted-foreground max-w-2xl",
|
|
206
|
+
children: "Production-ready modules that integrate seamlessly. Skip weeks of development and focus on what makes your product unique."
|
|
207
|
+
})
|
|
208
|
+
]
|
|
209
|
+
})
|
|
210
|
+
}),
|
|
211
|
+
/* @__PURE__ */ jsxs("div", {
|
|
212
|
+
className: "relative z-10 max-w-7xl mx-auto",
|
|
213
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
214
|
+
className: "grid lg:grid-cols-2",
|
|
215
|
+
children: modules.map((mod, index) => /* @__PURE__ */ jsxs("div", {
|
|
216
|
+
className: `group relative p-10 transition-colors hover:bg-card border-b border-border ${index % 2 === 0 ? "lg:border-r" : ""}`,
|
|
217
|
+
children: [
|
|
218
|
+
/* @__PURE__ */ jsx("div", {
|
|
219
|
+
className: "absolute top-8 right-8",
|
|
220
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
221
|
+
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"}`,
|
|
222
|
+
children: mod.status
|
|
223
|
+
})
|
|
224
|
+
}),
|
|
225
|
+
/* @__PURE__ */ jsxs("div", {
|
|
226
|
+
className: "pr-24",
|
|
227
|
+
children: [
|
|
228
|
+
/* @__PURE__ */ jsx("span", {
|
|
229
|
+
className: "text-sm text-primary font-mono block mb-3",
|
|
230
|
+
children: mod.package
|
|
231
|
+
}),
|
|
232
|
+
/* @__PURE__ */ jsx("h2", {
|
|
233
|
+
className: "text-2xl font-medium text-foreground mb-3 tracking-tight group-hover:text-primary transition-colors",
|
|
234
|
+
children: mod.name
|
|
235
|
+
}),
|
|
236
|
+
/* @__PURE__ */ jsx("p", {
|
|
237
|
+
className: "text-muted-foreground mb-6",
|
|
238
|
+
children: mod.desc
|
|
239
|
+
}),
|
|
240
|
+
/* @__PURE__ */ jsx("div", {
|
|
241
|
+
className: "flex flex-wrap gap-2",
|
|
242
|
+
children: mod.features.map((feature) => /* @__PURE__ */ jsx("span", {
|
|
243
|
+
className: "px-3 py-1 text-xs text-muted-foreground bg-muted border border-border",
|
|
244
|
+
children: feature
|
|
245
|
+
}, feature))
|
|
246
|
+
})
|
|
247
|
+
]
|
|
248
|
+
}),
|
|
249
|
+
mod.status !== "soon" && /* @__PURE__ */ jsx("a", {
|
|
250
|
+
href: `/docs/modules/${mod.slug}`,
|
|
251
|
+
className: "absolute bottom-8 right-8 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
252
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
253
|
+
className: "w-6 h-6 text-primary",
|
|
254
|
+
fill: "none",
|
|
255
|
+
stroke: "currentColor",
|
|
256
|
+
viewBox: "0 0 24 24",
|
|
257
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
258
|
+
strokeLinecap: "round",
|
|
259
|
+
strokeLinejoin: "round",
|
|
260
|
+
strokeWidth: 1.5,
|
|
261
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
262
|
+
})
|
|
263
|
+
})
|
|
264
|
+
})
|
|
265
|
+
]
|
|
266
|
+
}, mod.slug))
|
|
267
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
268
|
+
className: "border-t border-border",
|
|
269
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
270
|
+
className: "px-8 py-12 flex flex-col md:flex-row md:items-center justify-between gap-6",
|
|
271
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
272
|
+
className: "text-xl font-medium text-foreground mb-2",
|
|
273
|
+
children: "Need a custom module?"
|
|
274
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
275
|
+
className: "text-muted-foreground",
|
|
276
|
+
children: "We can help you build it, or tell us what you need and we'll add it to our roadmap."
|
|
277
|
+
})] }), /* @__PURE__ */ jsxs("div", {
|
|
278
|
+
className: "flex gap-4",
|
|
279
|
+
children: [/* @__PURE__ */ jsxs("a", {
|
|
280
|
+
href: "/docs/module-development",
|
|
281
|
+
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",
|
|
282
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Build Your Own" }), /* @__PURE__ */ jsx("svg", {
|
|
283
|
+
className: "w-4 h-4 group-hover:translate-x-1 transition-transform",
|
|
284
|
+
fill: "none",
|
|
285
|
+
stroke: "currentColor",
|
|
286
|
+
viewBox: "0 0 24 24",
|
|
287
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
288
|
+
strokeLinecap: "round",
|
|
289
|
+
strokeLinejoin: "round",
|
|
290
|
+
strokeWidth: 2,
|
|
291
|
+
d: "M17 8l4 4m0 0l-4 4m4-4H3"
|
|
292
|
+
})
|
|
293
|
+
})]
|
|
294
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
295
|
+
href: "/discord",
|
|
296
|
+
className: "group inline-flex items-center gap-3 px-6 py-3 bg-primary text-primary-foreground hover:bg-primary/90 transition-all",
|
|
297
|
+
children: /* @__PURE__ */ jsx("span", { children: "Request Module" })
|
|
298
|
+
})]
|
|
299
|
+
})]
|
|
300
|
+
})
|
|
301
|
+
})]
|
|
302
|
+
}),
|
|
303
|
+
/* @__PURE__ */ jsx("footer", {
|
|
304
|
+
className: "relative z-10 border-t border-border mt-20",
|
|
305
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
306
|
+
className: "max-w-7xl mx-auto px-8 py-8 flex items-center justify-between",
|
|
307
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
308
|
+
className: "text-sm text-muted-foreground",
|
|
309
|
+
children: [
|
|
310
|
+
"© ",
|
|
311
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
312
|
+
" Kuckit"
|
|
313
|
+
]
|
|
314
|
+
}), /* @__PURE__ */ jsx("a", {
|
|
315
|
+
href: "/",
|
|
316
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
317
|
+
children: "← Back to Home"
|
|
318
|
+
})]
|
|
319
|
+
})
|
|
320
|
+
})
|
|
321
|
+
]
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
//#endregion
|
|
326
|
+
export { ModulesPage };
|