@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.
@@ -0,0 +1,170 @@
1
+ import { useState } from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+
4
+ //#region src/client/components/faq.tsx
5
+ const faqItems = [
6
+ {
7
+ id: "seller-1",
8
+ category: "seller",
9
+ question: "Can I develop and sell my own Kuckit modules?",
10
+ answer: "Yes. You can develop complete, production-ready modules extending Kuckit functionality. Set your own pricing and publish them to the Kuckit marketplace."
11
+ },
12
+ {
13
+ id: "seller-2",
14
+ category: "seller",
15
+ question: "What pricing models are available for my module?",
16
+ answer: "You have full control over your pricing strategy. Choose between one-time payments (pay once, own forever) or subscription models (recurring billing). Each module can use a different model."
17
+ },
18
+ {
19
+ id: "seller-3",
20
+ category: "seller",
21
+ question: "How does the partnership program work?",
22
+ answer: "If you want to partner with Kuckit, your module can be integrated into the core platform. As a partner, you receive revenue share benefits whenever Kuckit generates sales, giving you passive income from the platform's growth."
23
+ },
24
+ {
25
+ id: "seller-4",
26
+ category: "seller",
27
+ question: "What are the requirements for marketplace publishing?",
28
+ answer: "Modules must follow Kuckit's Clean Architecture patterns, include proper documentation, and pass quality checks. Review our module development guide for detailed requirements."
29
+ },
30
+ {
31
+ id: "seller-5",
32
+ category: "seller",
33
+ question: "Can I update my module after publishing?",
34
+ answer: "Absolutely. You can release new versions anytime. Existing customers are notified of updates, and you control version management and backwards compatibility."
35
+ },
36
+ {
37
+ id: "general-1",
38
+ category: "general",
39
+ question: "What is Kuckit?",
40
+ answer: "Kuckit is a full-stack, modular platform built on Clean Architecture and Dependency Injection. It provides a professional foundation for building scalable applications with a plugin-based module system."
41
+ },
42
+ {
43
+ id: "general-2",
44
+ category: "general",
45
+ question: "What is the Kuckit business model?",
46
+ answer: "Kuckit provides a foundation platform for building applications. Module creators can publish to the marketplace with flexible pricing (one-time or subscription), and partners can integrate modules into core for revenue sharing benefits."
47
+ },
48
+ {
49
+ id: "general-3",
50
+ category: "general",
51
+ question: "What technology stack does Kuckit use?",
52
+ answer: "Kuckit is built with TypeScript, React (frontend), Express (backend), Drizzle ORM, and features comprehensive tooling. The modular architecture lets you swap implementations as needed."
53
+ }
54
+ ];
55
+ function FAQ() {
56
+ const [expandedId, setExpandedId] = useState(null);
57
+ const sellerFaqs = faqItems.filter((item) => item.category === "seller");
58
+ const generalFaqs = faqItems.filter((item) => item.category === "general");
59
+ return /* @__PURE__ */ jsxs("section", {
60
+ className: "relative border-t border-border",
61
+ children: [/* @__PURE__ */ jsxs("div", {
62
+ className: "max-w-7xl mx-auto px-8 py-16 border-b border-border",
63
+ children: [
64
+ /* @__PURE__ */ jsxs("div", {
65
+ className: "flex items-center gap-4 mb-4",
66
+ children: [/* @__PURE__ */ jsx("div", { className: "h-px w-12 bg-primary" }), /* @__PURE__ */ jsx("span", {
67
+ className: "text-xs text-primary tracking-[0.25em] uppercase font-medium",
68
+ children: "FAQ"
69
+ })]
70
+ }),
71
+ /* @__PURE__ */ jsx("h2", {
72
+ className: "text-4xl md:text-5xl font-light text-foreground tracking-[-0.03em] mb-4",
73
+ children: "Frequently Asked Questions"
74
+ }),
75
+ /* @__PURE__ */ jsx("p", {
76
+ className: "text-lg text-muted-foreground max-w-2xl",
77
+ children: "Everything you need to know about developing, selling, and partnering with Kuckit"
78
+ })
79
+ ]
80
+ }), /* @__PURE__ */ jsx("div", {
81
+ className: "max-w-7xl mx-auto",
82
+ children: /* @__PURE__ */ jsxs("div", {
83
+ className: "grid lg:grid-cols-2",
84
+ children: [/* @__PURE__ */ jsxs("div", {
85
+ className: "border-b lg:border-b-0 lg:border-r border-border",
86
+ children: [/* @__PURE__ */ jsx("div", {
87
+ className: "px-8 py-6 border-b border-border bg-card",
88
+ children: /* @__PURE__ */ jsxs("div", {
89
+ className: "flex items-center gap-3",
90
+ children: [/* @__PURE__ */ jsx("span", {
91
+ className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
92
+ children: "01"
93
+ }), /* @__PURE__ */ jsx("span", {
94
+ className: "font-medium text-foreground",
95
+ children: "For Module Sellers"
96
+ })]
97
+ })
98
+ }), /* @__PURE__ */ jsx("div", {
99
+ className: "divide-y divide-border",
100
+ children: sellerFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
101
+ item,
102
+ index,
103
+ isExpanded: expandedId === item.id,
104
+ onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
105
+ }, item.id))
106
+ })]
107
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
108
+ className: "px-8 py-6 border-b border-border bg-card",
109
+ children: /* @__PURE__ */ jsxs("div", {
110
+ className: "flex items-center gap-3",
111
+ children: [/* @__PURE__ */ jsx("span", {
112
+ className: "text-xs text-muted-foreground tracking-[0.15em] uppercase",
113
+ children: "02"
114
+ }), /* @__PURE__ */ jsx("span", {
115
+ className: "font-medium text-foreground",
116
+ children: "General"
117
+ })]
118
+ })
119
+ }), /* @__PURE__ */ jsx("div", {
120
+ className: "divide-y divide-border",
121
+ children: generalFaqs.map((item, index) => /* @__PURE__ */ jsx(FAQItemComponent, {
122
+ item,
123
+ index,
124
+ isExpanded: expandedId === item.id,
125
+ onToggle: () => setExpandedId(expandedId === item.id ? null : item.id)
126
+ }, item.id))
127
+ })] })]
128
+ })
129
+ })]
130
+ });
131
+ }
132
+ function FAQItemComponent({ item, index, isExpanded, onToggle }) {
133
+ return /* @__PURE__ */ jsx("button", {
134
+ onClick: onToggle,
135
+ className: "w-full text-left p-6 hover:bg-card/50 transition-colors",
136
+ children: /* @__PURE__ */ jsxs("div", {
137
+ className: "flex items-start gap-4",
138
+ children: [/* @__PURE__ */ jsx("span", {
139
+ className: "text-xs text-muted-foreground font-mono shrink-0 pt-1",
140
+ children: String(index + 1).padStart(2, "0")
141
+ }), /* @__PURE__ */ jsxs("div", {
142
+ className: "flex-1",
143
+ children: [/* @__PURE__ */ jsxs("div", {
144
+ className: "flex items-start justify-between gap-4",
145
+ children: [/* @__PURE__ */ jsx("span", {
146
+ className: "text-foreground font-medium leading-relaxed",
147
+ children: item.question
148
+ }), /* @__PURE__ */ jsx("svg", {
149
+ className: `w-4 h-4 text-muted-foreground shrink-0 mt-1 transition-transform duration-200 ${isExpanded ? "rotate-45" : ""}`,
150
+ fill: "none",
151
+ stroke: "currentColor",
152
+ viewBox: "0 0 24 24",
153
+ children: /* @__PURE__ */ jsx("path", {
154
+ strokeLinecap: "round",
155
+ strokeLinejoin: "round",
156
+ strokeWidth: 2,
157
+ d: "M12 4v16m8-8H4"
158
+ })
159
+ })]
160
+ }), isExpanded && /* @__PURE__ */ jsx("p", {
161
+ className: "text-muted-foreground text-sm leading-relaxed mt-4 pr-8",
162
+ children: item.answer
163
+ })]
164
+ })]
165
+ })
166
+ });
167
+ }
168
+
169
+ //#endregion
170
+ export { FAQ };