@mdxui/tremor 6.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/README.md +255 -0
- package/dist/dashboard/components/index.d.ts +355 -0
- package/dist/dashboard/components/index.js +549 -0
- package/dist/dashboard/components/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +275 -0
- package/dist/dashboard/index.js +1062 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/database/index.d.ts +334 -0
- package/dist/database/index.js +474 -0
- package/dist/database/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1089 -0
- package/dist/index.js.map +1 -0
- package/dist/insights/components/index.d.ts +362 -0
- package/dist/insights/components/index.js +1397 -0
- package/dist/insights/components/index.js.map +1 -0
- package/dist/insights/index.d.ts +360 -0
- package/dist/insights/index.js +1815 -0
- package/dist/insights/index.js.map +1 -0
- package/dist/overview/components/index.d.ts +86 -0
- package/dist/overview/components/index.js +775 -0
- package/dist/overview/components/index.js.map +1 -0
- package/dist/overview/index.d.ts +301 -0
- package/dist/overview/index.js +1077 -0
- package/dist/overview/index.js.map +1 -0
- package/dist/shared/index.d.ts +296 -0
- package/dist/shared/index.js +395 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/solar/components/index.d.ts +341 -0
- package/dist/solar/components/index.js +831 -0
- package/dist/solar/components/index.js.map +1 -0
- package/dist/solar/index.d.ts +301 -0
- package/dist/solar/index.js +1130 -0
- package/dist/solar/index.js.map +1 -0
- package/package.json +135 -0
|
@@ -0,0 +1,1130 @@
|
|
|
1
|
+
// src/solar/shared/utils.ts
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
function cx(...args) {
|
|
4
|
+
return twMerge(
|
|
5
|
+
args.flat().filter(
|
|
6
|
+
(x) => typeof x === "string" || typeof x === "number"
|
|
7
|
+
).join(" ")
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
var focusRing = [
|
|
11
|
+
"outline outline-offset-2 outline-0 focus-visible:outline-2",
|
|
12
|
+
"outline-blue-500 dark:outline-blue-500"
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
// src/solar/components/cta/cta.tsx
|
|
16
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
function DefaultLink({ href, children, className }) {
|
|
18
|
+
return /* @__PURE__ */ jsx("a", { href, className, children });
|
|
19
|
+
}
|
|
20
|
+
function resolveAction(action, defaultHref = "#") {
|
|
21
|
+
if (!action) return { href: defaultHref };
|
|
22
|
+
if (typeof action === "string") return { href: action };
|
|
23
|
+
return { href: action.href, onClick: action.onClick, target: action.target };
|
|
24
|
+
}
|
|
25
|
+
function CTA({
|
|
26
|
+
title,
|
|
27
|
+
description,
|
|
28
|
+
callToAction,
|
|
29
|
+
secondaryCallToAction,
|
|
30
|
+
image,
|
|
31
|
+
imageAlt = "CTA image",
|
|
32
|
+
actions,
|
|
33
|
+
LinkComponent = DefaultLink,
|
|
34
|
+
className
|
|
35
|
+
}) {
|
|
36
|
+
const primaryAction = resolveAction(actions?.primary, "#");
|
|
37
|
+
const secondaryAction = resolveAction(actions?.secondary, "#");
|
|
38
|
+
const PrimaryButton = primaryAction.onClick ? /* @__PURE__ */ jsx(
|
|
39
|
+
"button",
|
|
40
|
+
{
|
|
41
|
+
type: "button",
|
|
42
|
+
onClick: primaryAction.onClick,
|
|
43
|
+
className: cx(
|
|
44
|
+
"inline-flex items-center justify-center rounded-md border-b-[1.5px] border-orange-700 bg-gradient-to-b from-orange-400 to-orange-500 px-4 py-2.5 text-base font-medium text-white shadow-sm transition-all hover:shadow-orange-300",
|
|
45
|
+
focusRing
|
|
46
|
+
),
|
|
47
|
+
children: callToAction
|
|
48
|
+
}
|
|
49
|
+
) : /* @__PURE__ */ jsx(
|
|
50
|
+
LinkComponent,
|
|
51
|
+
{
|
|
52
|
+
href: primaryAction.href,
|
|
53
|
+
className: cx(
|
|
54
|
+
"inline-flex items-center justify-center rounded-md border-b-[1.5px] border-orange-700 bg-gradient-to-b from-orange-400 to-orange-500 px-4 py-2.5 text-base font-medium text-white shadow-sm transition-all hover:shadow-orange-300",
|
|
55
|
+
focusRing
|
|
56
|
+
),
|
|
57
|
+
children: callToAction
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
const SecondaryButton = secondaryCallToAction ? secondaryAction.onClick ? /* @__PURE__ */ jsx(
|
|
61
|
+
"button",
|
|
62
|
+
{
|
|
63
|
+
type: "button",
|
|
64
|
+
onClick: secondaryAction.onClick,
|
|
65
|
+
className: cx(
|
|
66
|
+
"inline-flex items-center justify-center rounded-md border border-gray-300 bg-white px-4 py-2.5 text-base font-medium text-gray-900 shadow-xs transition-colors hover:bg-gray-50",
|
|
67
|
+
focusRing
|
|
68
|
+
),
|
|
69
|
+
children: secondaryCallToAction
|
|
70
|
+
}
|
|
71
|
+
) : /* @__PURE__ */ jsx(
|
|
72
|
+
LinkComponent,
|
|
73
|
+
{
|
|
74
|
+
href: secondaryAction.href,
|
|
75
|
+
className: cx(
|
|
76
|
+
"inline-flex items-center justify-center rounded-md border border-gray-300 bg-white px-4 py-2.5 text-base font-medium text-gray-900 shadow-xs transition-colors hover:bg-gray-50",
|
|
77
|
+
focusRing
|
|
78
|
+
),
|
|
79
|
+
children: secondaryCallToAction
|
|
80
|
+
}
|
|
81
|
+
) : null;
|
|
82
|
+
return /* @__PURE__ */ jsx(
|
|
83
|
+
"section",
|
|
84
|
+
{
|
|
85
|
+
"aria-labelledby": "cta-title",
|
|
86
|
+
className: cx("mx-auto max-w-6xl px-4 xl:px-0", className),
|
|
87
|
+
children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 sm:grid-cols-6", children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("div", { className: "sm:col-span-2", children: [
|
|
89
|
+
/* @__PURE__ */ jsx(
|
|
90
|
+
"h2",
|
|
91
|
+
{
|
|
92
|
+
id: "cta-title",
|
|
93
|
+
className: "scroll-my-60 text-3xl font-semibold tracking-tighter text-balance text-gray-900 md:text-4xl",
|
|
94
|
+
children: title
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-3 mb-8 text-lg text-gray-600", children: description }),
|
|
98
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
|
|
99
|
+
PrimaryButton,
|
|
100
|
+
SecondaryButton
|
|
101
|
+
] })
|
|
102
|
+
] }),
|
|
103
|
+
/* @__PURE__ */ jsx("div", { className: "relative isolate rounded-xl sm:col-span-4 sm:h-full", children: typeof image === "string" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
104
|
+
/* @__PURE__ */ jsx(
|
|
105
|
+
"img",
|
|
106
|
+
{
|
|
107
|
+
"aria-hidden": true,
|
|
108
|
+
alt: imageAlt,
|
|
109
|
+
src: image,
|
|
110
|
+
className: "absolute inset-0 -z-10 rounded-2xl blur-xl"
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
"img",
|
|
115
|
+
{
|
|
116
|
+
alt: imageAlt,
|
|
117
|
+
src: image,
|
|
118
|
+
className: "relative z-10 rounded-2xl w-full h-auto"
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
] }) : image ? image : /* @__PURE__ */ jsx("div", { className: "h-64 w-full rounded-2xl bg-gradient-to-br from-orange-100 to-orange-200" }) })
|
|
122
|
+
] })
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// src/solar/components/features/features.tsx
|
|
128
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
129
|
+
function Features({
|
|
130
|
+
id = "solutions",
|
|
131
|
+
blocks = [],
|
|
132
|
+
items = [],
|
|
133
|
+
columns = 3,
|
|
134
|
+
className,
|
|
135
|
+
children
|
|
136
|
+
}) {
|
|
137
|
+
const columnClasses = {
|
|
138
|
+
2: "md:grid-cols-2",
|
|
139
|
+
3: "md:grid-cols-3",
|
|
140
|
+
4: "md:grid-cols-4"
|
|
141
|
+
};
|
|
142
|
+
if (children) {
|
|
143
|
+
return /* @__PURE__ */ jsx2(
|
|
144
|
+
"section",
|
|
145
|
+
{
|
|
146
|
+
"aria-label": "Features",
|
|
147
|
+
id,
|
|
148
|
+
className: cx(
|
|
149
|
+
"relative mx-auto max-w-6xl scroll-my-24 px-4 xl:px-0",
|
|
150
|
+
className
|
|
151
|
+
),
|
|
152
|
+
children
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
if (blocks.length > 0) {
|
|
157
|
+
return /* @__PURE__ */ jsxs2(
|
|
158
|
+
"section",
|
|
159
|
+
{
|
|
160
|
+
"aria-label": "Features",
|
|
161
|
+
id,
|
|
162
|
+
className: cx("relative mx-auto max-w-6xl scroll-my-24", className),
|
|
163
|
+
children: [
|
|
164
|
+
/* @__PURE__ */ jsxs2("div", { className: "pointer-events-none inset-0 select-none", children: [
|
|
165
|
+
/* @__PURE__ */ jsx2(
|
|
166
|
+
"div",
|
|
167
|
+
{
|
|
168
|
+
className: "absolute inset-y-0 -my-20 w-px",
|
|
169
|
+
style: {
|
|
170
|
+
maskImage: "linear-gradient(transparent, white 5rem, white calc(100% - 5rem), transparent)"
|
|
171
|
+
},
|
|
172
|
+
children: /* @__PURE__ */ jsx2("svg", { className: "h-full w-full", preserveAspectRatio: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
|
|
173
|
+
"line",
|
|
174
|
+
{
|
|
175
|
+
x1: "0",
|
|
176
|
+
y1: "0",
|
|
177
|
+
x2: "0",
|
|
178
|
+
y2: "100%",
|
|
179
|
+
className: "stroke-gray-300",
|
|
180
|
+
strokeWidth: "2",
|
|
181
|
+
strokeDasharray: "3 3"
|
|
182
|
+
}
|
|
183
|
+
) })
|
|
184
|
+
}
|
|
185
|
+
),
|
|
186
|
+
/* @__PURE__ */ jsx2(
|
|
187
|
+
"div",
|
|
188
|
+
{
|
|
189
|
+
className: "absolute inset-y-0 right-0 -my-20 w-px",
|
|
190
|
+
style: {
|
|
191
|
+
maskImage: "linear-gradient(transparent, white 5rem, white calc(100% - 5rem), transparent)"
|
|
192
|
+
},
|
|
193
|
+
children: /* @__PURE__ */ jsx2("svg", { className: "h-full w-full", preserveAspectRatio: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
|
|
194
|
+
"line",
|
|
195
|
+
{
|
|
196
|
+
x1: "0",
|
|
197
|
+
y1: "0",
|
|
198
|
+
x2: "0",
|
|
199
|
+
y2: "100%",
|
|
200
|
+
className: "stroke-gray-300",
|
|
201
|
+
strokeWidth: "2",
|
|
202
|
+
strokeDasharray: "3 3"
|
|
203
|
+
}
|
|
204
|
+
) })
|
|
205
|
+
}
|
|
206
|
+
),
|
|
207
|
+
/* @__PURE__ */ jsx2(
|
|
208
|
+
"div",
|
|
209
|
+
{
|
|
210
|
+
className: "absolute inset-y-0 left-1/2 -z-10 -my-20 w-px",
|
|
211
|
+
style: {
|
|
212
|
+
maskImage: "linear-gradient(transparent, white 5rem, white calc(100% - 5rem), transparent)"
|
|
213
|
+
},
|
|
214
|
+
children: /* @__PURE__ */ jsx2("svg", { className: "h-full w-full", preserveAspectRatio: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
|
|
215
|
+
"line",
|
|
216
|
+
{
|
|
217
|
+
x1: "0",
|
|
218
|
+
y1: "0",
|
|
219
|
+
x2: "0",
|
|
220
|
+
y2: "100%",
|
|
221
|
+
className: "stroke-gray-300",
|
|
222
|
+
strokeWidth: "2",
|
|
223
|
+
strokeDasharray: "3 3"
|
|
224
|
+
}
|
|
225
|
+
) })
|
|
226
|
+
}
|
|
227
|
+
)
|
|
228
|
+
] }),
|
|
229
|
+
/* @__PURE__ */ jsx2("div", { className: "grid grid-cols-1 gap-12 md:grid-cols-4 md:gap-0", children: blocks.map((block, index) => /* @__PURE__ */ jsxs2("div", { className: "contents", children: [
|
|
230
|
+
/* @__PURE__ */ jsxs2(
|
|
231
|
+
"div",
|
|
232
|
+
{
|
|
233
|
+
className: cx(
|
|
234
|
+
"col-span-2 my-auto px-2",
|
|
235
|
+
index % 2 === 1 ? "md:order-2" : ""
|
|
236
|
+
),
|
|
237
|
+
children: [
|
|
238
|
+
/* @__PURE__ */ jsxs2("h2", { className: "relative text-lg font-semibold tracking-tight text-orange-500", children: [
|
|
239
|
+
block.badge,
|
|
240
|
+
/* @__PURE__ */ jsx2("div", { className: "absolute top-1 -left-[8px] h-5 w-[3px] rounded-r-sm bg-orange-500" })
|
|
241
|
+
] }),
|
|
242
|
+
/* @__PURE__ */ jsx2("p", { className: "mt-2 text-3xl font-semibold tracking-tighter text-balance text-gray-900 md:text-4xl", children: block.title }),
|
|
243
|
+
/* @__PURE__ */ jsx2("p", { className: "mt-4 text-balance text-gray-700", children: block.description })
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
),
|
|
247
|
+
/* @__PURE__ */ jsx2(
|
|
248
|
+
"div",
|
|
249
|
+
{
|
|
250
|
+
className: cx(
|
|
251
|
+
"relative col-span-2 flex items-center justify-center overflow-hidden",
|
|
252
|
+
index % 2 === 1 ? "md:order-1" : ""
|
|
253
|
+
),
|
|
254
|
+
children: block.illustration || /* @__PURE__ */ jsx2("div", { className: "h-64 w-full bg-gradient-to-br from-orange-50 to-orange-100 rounded-lg" })
|
|
255
|
+
}
|
|
256
|
+
)
|
|
257
|
+
] }, block.badge)) })
|
|
258
|
+
]
|
|
259
|
+
}
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
if (items.length > 0) {
|
|
263
|
+
return /* @__PURE__ */ jsx2(
|
|
264
|
+
"section",
|
|
265
|
+
{
|
|
266
|
+
"aria-label": "Features",
|
|
267
|
+
id,
|
|
268
|
+
className: cx("mx-auto max-w-6xl px-4 xl:px-0", className),
|
|
269
|
+
children: /* @__PURE__ */ jsx2("div", { className: cx("grid grid-cols-1 gap-8", columnClasses[columns]), children: items.map((item) => /* @__PURE__ */ jsxs2(
|
|
270
|
+
"div",
|
|
271
|
+
{
|
|
272
|
+
className: "rounded-lg border border-gray-200 bg-white p-6 shadow-sm",
|
|
273
|
+
children: [
|
|
274
|
+
item.icon && /* @__PURE__ */ jsx2("div", { className: "mb-4 inline-flex size-10 items-center justify-center rounded-lg bg-orange-100 text-orange-600", children: item.icon }),
|
|
275
|
+
/* @__PURE__ */ jsx2("h3", { className: "text-lg font-semibold text-gray-900", children: item.title }),
|
|
276
|
+
/* @__PURE__ */ jsx2("p", { className: "mt-2 text-sm text-gray-600", children: item.description })
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
item.title
|
|
280
|
+
)) })
|
|
281
|
+
}
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// src/solar/components/footer/index.tsx
|
|
288
|
+
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
289
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
290
|
+
function DefaultLink2({
|
|
291
|
+
href,
|
|
292
|
+
children,
|
|
293
|
+
className,
|
|
294
|
+
target,
|
|
295
|
+
rel
|
|
296
|
+
}) {
|
|
297
|
+
return /* @__PURE__ */ jsx3("a", { href, className, target, rel, children });
|
|
298
|
+
}
|
|
299
|
+
function SocialIcon({ platform }) {
|
|
300
|
+
const iconClass = "size-5";
|
|
301
|
+
switch (platform) {
|
|
302
|
+
case "twitter":
|
|
303
|
+
return /* @__PURE__ */ jsx3(
|
|
304
|
+
"svg",
|
|
305
|
+
{
|
|
306
|
+
className: iconClass,
|
|
307
|
+
fill: "currentColor",
|
|
308
|
+
viewBox: "0 0 24 24",
|
|
309
|
+
"aria-hidden": "true",
|
|
310
|
+
children: /* @__PURE__ */ jsx3("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" })
|
|
311
|
+
}
|
|
312
|
+
);
|
|
313
|
+
case "github":
|
|
314
|
+
return /* @__PURE__ */ jsx3(
|
|
315
|
+
"svg",
|
|
316
|
+
{
|
|
317
|
+
className: iconClass,
|
|
318
|
+
fill: "currentColor",
|
|
319
|
+
viewBox: "0 0 24 24",
|
|
320
|
+
"aria-hidden": "true",
|
|
321
|
+
children: /* @__PURE__ */ jsx3(
|
|
322
|
+
"path",
|
|
323
|
+
{
|
|
324
|
+
fillRule: "evenodd",
|
|
325
|
+
clipRule: "evenodd",
|
|
326
|
+
d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
|
327
|
+
}
|
|
328
|
+
)
|
|
329
|
+
}
|
|
330
|
+
);
|
|
331
|
+
case "youtube":
|
|
332
|
+
return /* @__PURE__ */ jsx3(
|
|
333
|
+
"svg",
|
|
334
|
+
{
|
|
335
|
+
className: iconClass,
|
|
336
|
+
fill: "currentColor",
|
|
337
|
+
viewBox: "0 0 24 24",
|
|
338
|
+
"aria-hidden": "true",
|
|
339
|
+
children: /* @__PURE__ */ jsx3(
|
|
340
|
+
"path",
|
|
341
|
+
{
|
|
342
|
+
fillRule: "evenodd",
|
|
343
|
+
clipRule: "evenodd",
|
|
344
|
+
d: "M19.812 5.418c.861.23 1.538.907 1.768 1.768C21.998 8.746 22 12 22 12s0 3.255-.418 4.814a2.504 2.504 0 0 1-1.768 1.768c-1.56.419-7.814.419-7.814.419s-6.255 0-7.814-.419a2.505 2.505 0 0 1-1.768-1.768C2 15.255 2 12 2 12s0-3.255.417-4.814a2.507 2.507 0 0 1 1.768-1.768C5.744 5 11.998 5 11.998 5s6.255 0 7.814.418ZM15.194 12 10 15V9l5.194 3Z"
|
|
345
|
+
}
|
|
346
|
+
)
|
|
347
|
+
}
|
|
348
|
+
);
|
|
349
|
+
case "discord":
|
|
350
|
+
return /* @__PURE__ */ jsx3(
|
|
351
|
+
"svg",
|
|
352
|
+
{
|
|
353
|
+
className: iconClass,
|
|
354
|
+
fill: "currentColor",
|
|
355
|
+
viewBox: "0 0 24 24",
|
|
356
|
+
"aria-hidden": "true",
|
|
357
|
+
children: /* @__PURE__ */ jsx3("path", { d: "M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" })
|
|
358
|
+
}
|
|
359
|
+
);
|
|
360
|
+
case "linkedin":
|
|
361
|
+
return /* @__PURE__ */ jsx3(
|
|
362
|
+
"svg",
|
|
363
|
+
{
|
|
364
|
+
className: iconClass,
|
|
365
|
+
fill: "currentColor",
|
|
366
|
+
viewBox: "0 0 24 24",
|
|
367
|
+
"aria-hidden": "true",
|
|
368
|
+
children: /* @__PURE__ */ jsx3("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" })
|
|
369
|
+
}
|
|
370
|
+
);
|
|
371
|
+
case "instagram":
|
|
372
|
+
return /* @__PURE__ */ jsx3(
|
|
373
|
+
"svg",
|
|
374
|
+
{
|
|
375
|
+
className: iconClass,
|
|
376
|
+
fill: "currentColor",
|
|
377
|
+
viewBox: "0 0 24 24",
|
|
378
|
+
"aria-hidden": "true",
|
|
379
|
+
children: /* @__PURE__ */ jsx3(
|
|
380
|
+
"path",
|
|
381
|
+
{
|
|
382
|
+
fillRule: "evenodd",
|
|
383
|
+
clipRule: "evenodd",
|
|
384
|
+
d: "M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z"
|
|
385
|
+
}
|
|
386
|
+
)
|
|
387
|
+
}
|
|
388
|
+
);
|
|
389
|
+
default:
|
|
390
|
+
return /* @__PURE__ */ jsx3(
|
|
391
|
+
"svg",
|
|
392
|
+
{
|
|
393
|
+
className: iconClass,
|
|
394
|
+
fill: "currentColor",
|
|
395
|
+
viewBox: "0 0 24 24",
|
|
396
|
+
"aria-hidden": "true",
|
|
397
|
+
children: /* @__PURE__ */ jsx3("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })
|
|
398
|
+
}
|
|
399
|
+
);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
function Footer({
|
|
403
|
+
logo,
|
|
404
|
+
links,
|
|
405
|
+
linkGroups = [],
|
|
406
|
+
social,
|
|
407
|
+
copyright,
|
|
408
|
+
LinkComponent = DefaultLink2,
|
|
409
|
+
className
|
|
410
|
+
}) {
|
|
411
|
+
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
412
|
+
const defaultCopyright = `${currentYear} All rights reserved.`;
|
|
413
|
+
return /* @__PURE__ */ jsxs3(
|
|
414
|
+
"footer",
|
|
415
|
+
{
|
|
416
|
+
id: "footer",
|
|
417
|
+
className: twMerge2(
|
|
418
|
+
"relative mx-auto flex max-w-6xl flex-wrap px-4 pt-4 xl:px-0",
|
|
419
|
+
className
|
|
420
|
+
),
|
|
421
|
+
children: [
|
|
422
|
+
/* @__PURE__ */ jsxs3("div", { className: "pointer-events-none inset-0", children: [
|
|
423
|
+
/* @__PURE__ */ jsx3(
|
|
424
|
+
"div",
|
|
425
|
+
{
|
|
426
|
+
className: "absolute inset-y-0 -my-20 w-px",
|
|
427
|
+
style: { maskImage: "linear-gradient(transparent, white 5rem)" },
|
|
428
|
+
children: /* @__PURE__ */ jsx3("svg", { className: "h-full w-full", preserveAspectRatio: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
|
|
429
|
+
"line",
|
|
430
|
+
{
|
|
431
|
+
x1: "0",
|
|
432
|
+
y1: "0",
|
|
433
|
+
x2: "0",
|
|
434
|
+
y2: "100%",
|
|
435
|
+
className: "stroke-gray-300",
|
|
436
|
+
strokeWidth: "2",
|
|
437
|
+
strokeDasharray: "3 3"
|
|
438
|
+
}
|
|
439
|
+
) })
|
|
440
|
+
}
|
|
441
|
+
),
|
|
442
|
+
/* @__PURE__ */ jsx3(
|
|
443
|
+
"div",
|
|
444
|
+
{
|
|
445
|
+
className: "absolute inset-y-0 right-0 -my-20 w-px",
|
|
446
|
+
style: { maskImage: "linear-gradient(transparent, white 5rem)" },
|
|
447
|
+
children: /* @__PURE__ */ jsx3("svg", { className: "h-full w-full", preserveAspectRatio: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
|
|
448
|
+
"line",
|
|
449
|
+
{
|
|
450
|
+
x1: "0",
|
|
451
|
+
y1: "0",
|
|
452
|
+
x2: "0",
|
|
453
|
+
y2: "100%",
|
|
454
|
+
className: "stroke-gray-300",
|
|
455
|
+
strokeWidth: "2",
|
|
456
|
+
strokeDasharray: "3 3"
|
|
457
|
+
}
|
|
458
|
+
) })
|
|
459
|
+
}
|
|
460
|
+
)
|
|
461
|
+
] }),
|
|
462
|
+
/* @__PURE__ */ jsxs3("svg", { className: "mb-10 h-20 w-full border-y border-dashed border-gray-300 stroke-gray-300", "aria-hidden": "true", children: [
|
|
463
|
+
/* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsx3(
|
|
464
|
+
"pattern",
|
|
465
|
+
{
|
|
466
|
+
id: "diagonal-footer-pattern",
|
|
467
|
+
patternUnits: "userSpaceOnUse",
|
|
468
|
+
width: "64",
|
|
469
|
+
height: "64",
|
|
470
|
+
children: Array.from({ length: 17 }, (_, i) => {
|
|
471
|
+
const offset = i * 8;
|
|
472
|
+
return /* @__PURE__ */ jsx3(
|
|
473
|
+
"path",
|
|
474
|
+
{
|
|
475
|
+
d: `M${-106 + offset} 110L${22 + offset} -18`,
|
|
476
|
+
strokeWidth: "1"
|
|
477
|
+
},
|
|
478
|
+
i.toString()
|
|
479
|
+
);
|
|
480
|
+
})
|
|
481
|
+
}
|
|
482
|
+
) }),
|
|
483
|
+
/* @__PURE__ */ jsx3(
|
|
484
|
+
"rect",
|
|
485
|
+
{
|
|
486
|
+
stroke: "none",
|
|
487
|
+
width: "100%",
|
|
488
|
+
height: "100%",
|
|
489
|
+
fill: "url(#diagonal-footer-pattern)"
|
|
490
|
+
}
|
|
491
|
+
)
|
|
492
|
+
] }),
|
|
493
|
+
/* @__PURE__ */ jsxs3("div", { className: "mr-auto flex w-full justify-between lg:w-fit lg:flex-col", children: [
|
|
494
|
+
logo && /* @__PURE__ */ jsx3(
|
|
495
|
+
LinkComponent,
|
|
496
|
+
{
|
|
497
|
+
href: "/",
|
|
498
|
+
className: "flex items-center font-medium text-gray-700 select-none sm:text-sm",
|
|
499
|
+
children: typeof logo === "string" ? /* @__PURE__ */ jsx3("span", { className: "ml-2 text-xl font-semibold", children: logo }) : logo
|
|
500
|
+
}
|
|
501
|
+
),
|
|
502
|
+
/* @__PURE__ */ jsxs3("div", { children: [
|
|
503
|
+
social && social.length > 0 && /* @__PURE__ */ jsx3("div", { className: "mt-4 flex items-center", children: social.map((item) => /* @__PURE__ */ jsx3(
|
|
504
|
+
LinkComponent,
|
|
505
|
+
{
|
|
506
|
+
href: item.href,
|
|
507
|
+
target: "_blank",
|
|
508
|
+
rel: "noopener noreferrer",
|
|
509
|
+
className: "rounded-sm p-2 text-gray-700 transition-colors duration-200 hover:bg-gray-200 hover:text-gray-900",
|
|
510
|
+
children: /* @__PURE__ */ jsx3(SocialIcon, { platform: item.platform })
|
|
511
|
+
},
|
|
512
|
+
item.platform
|
|
513
|
+
)) }),
|
|
514
|
+
/* @__PURE__ */ jsx3("div", { className: "ml-2 hidden text-sm text-gray-700 lg:inline", children: copyright || defaultCopyright })
|
|
515
|
+
] })
|
|
516
|
+
] }),
|
|
517
|
+
linkGroups.map((group) => /* @__PURE__ */ jsxs3("div", { className: "mt-10 min-w-44 pl-2 lg:mt-0 lg:pl-0", children: [
|
|
518
|
+
/* @__PURE__ */ jsx3("h3", { className: "mb-4 font-medium text-gray-900 sm:text-sm", children: group.title }),
|
|
519
|
+
/* @__PURE__ */ jsx3("ul", { className: "space-y-4", children: group.links.map((link) => /* @__PURE__ */ jsx3("li", { className: "text-sm", children: /* @__PURE__ */ jsx3(
|
|
520
|
+
LinkComponent,
|
|
521
|
+
{
|
|
522
|
+
href: link.href,
|
|
523
|
+
target: link.external ? "_blank" : void 0,
|
|
524
|
+
rel: link.external ? "noopener noreferrer" : void 0,
|
|
525
|
+
className: "text-gray-600 transition-colors duration-200 hover:text-gray-900",
|
|
526
|
+
children: link.label
|
|
527
|
+
}
|
|
528
|
+
) }, link.label)) })
|
|
529
|
+
] }, group.title)),
|
|
530
|
+
linkGroups.length === 0 && links.length > 0 && /* @__PURE__ */ jsx3("div", { className: "mt-10 flex flex-wrap gap-6 lg:mt-0", children: links.map((link) => /* @__PURE__ */ jsx3(
|
|
531
|
+
LinkComponent,
|
|
532
|
+
{
|
|
533
|
+
href: link.href,
|
|
534
|
+
target: link.external ? "_blank" : void 0,
|
|
535
|
+
rel: link.external ? "noopener noreferrer" : void 0,
|
|
536
|
+
className: "text-sm text-gray-600 transition-colors duration-200 hover:text-gray-900",
|
|
537
|
+
children: link.label
|
|
538
|
+
},
|
|
539
|
+
link.label
|
|
540
|
+
)) }),
|
|
541
|
+
/* @__PURE__ */ jsx3("div", { className: "mt-10 w-full text-center text-sm text-gray-700 lg:hidden", children: copyright || defaultCopyright })
|
|
542
|
+
]
|
|
543
|
+
}
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
// src/solar/components/header/index.tsx
|
|
548
|
+
import { useEffect, useState } from "react";
|
|
549
|
+
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
550
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
551
|
+
function DefaultLink3({ href, children, className, onClick }) {
|
|
552
|
+
return /* @__PURE__ */ jsx4("a", { href, className, onClick, children });
|
|
553
|
+
}
|
|
554
|
+
function MenuIcon({ className }) {
|
|
555
|
+
return /* @__PURE__ */ jsx4("svg", { className, fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx4("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" }) });
|
|
556
|
+
}
|
|
557
|
+
function CloseIcon({ className }) {
|
|
558
|
+
return /* @__PURE__ */ jsx4("svg", { className, fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx4("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) });
|
|
559
|
+
}
|
|
560
|
+
function Header({
|
|
561
|
+
logo,
|
|
562
|
+
navItems,
|
|
563
|
+
cta,
|
|
564
|
+
LinkComponent = DefaultLink3,
|
|
565
|
+
sticky = true,
|
|
566
|
+
transparentOnTop = false,
|
|
567
|
+
className
|
|
568
|
+
}) {
|
|
569
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
570
|
+
const [scrolled, setScrolled] = useState(false);
|
|
571
|
+
useEffect(() => {
|
|
572
|
+
const handleScroll = () => {
|
|
573
|
+
setScrolled(window.scrollY > 15);
|
|
574
|
+
};
|
|
575
|
+
window.addEventListener("scroll", handleScroll);
|
|
576
|
+
return () => window.removeEventListener("scroll", handleScroll);
|
|
577
|
+
}, []);
|
|
578
|
+
const closeMobileMenu = () => setMobileMenuOpen(false);
|
|
579
|
+
const showBackground = scrolled || mobileMenuOpen || !transparentOnTop;
|
|
580
|
+
return /* @__PURE__ */ jsx4(
|
|
581
|
+
"header",
|
|
582
|
+
{
|
|
583
|
+
className: twMerge3(
|
|
584
|
+
"inset-x-4 top-4 z-50 mx-auto flex max-w-6xl justify-center rounded-lg border border-transparent px-3 py-3 transition duration-300",
|
|
585
|
+
sticky && "fixed",
|
|
586
|
+
showBackground ? "border-gray-200/50 bg-white/80 shadow-2xl shadow-black/5 backdrop-blur-sm" : "bg-white/0",
|
|
587
|
+
className
|
|
588
|
+
),
|
|
589
|
+
children: /* @__PURE__ */ jsxs4("div", { className: "w-full md:my-auto", children: [
|
|
590
|
+
/* @__PURE__ */ jsxs4("div", { className: "relative flex items-center justify-between", children: [
|
|
591
|
+
/* @__PURE__ */ jsx4(LinkComponent, { href: "/", className: "flex items-center", children: typeof logo === "string" ? /* @__PURE__ */ jsx4("span", { className: "text-xl font-semibold text-gray-900", children: logo }) : logo }),
|
|
592
|
+
navItems.length > 0 && /* @__PURE__ */ jsx4("nav", { className: "hidden sm:block md:absolute md:top-1/2 md:left-1/2 md:-translate-x-1/2 md:-translate-y-1/2", children: /* @__PURE__ */ jsx4("div", { className: "flex items-center gap-10 font-medium", children: navItems.map((item) => /* @__PURE__ */ jsx4(LinkComponent, { href: item.href, className: "px-2 py-1 text-gray-900 hover:text-gray-600 transition-colors", children: item.label }, item.href)) }) }),
|
|
593
|
+
cta && /* @__PURE__ */ jsx4(
|
|
594
|
+
"button",
|
|
595
|
+
{
|
|
596
|
+
type: "button",
|
|
597
|
+
className: "hidden h-10 rounded-md border border-gray-200 bg-white px-4 font-semibold text-gray-900 transition-colors hover:bg-gray-50 sm:block",
|
|
598
|
+
onClick: cta.onClick,
|
|
599
|
+
children: cta.label
|
|
600
|
+
}
|
|
601
|
+
),
|
|
602
|
+
/* @__PURE__ */ jsx4(
|
|
603
|
+
"button",
|
|
604
|
+
{
|
|
605
|
+
type: "button",
|
|
606
|
+
onClick: () => setMobileMenuOpen(!mobileMenuOpen),
|
|
607
|
+
className: "rounded-md border border-gray-200 bg-white p-1.5 sm:hidden",
|
|
608
|
+
"aria-label": mobileMenuOpen ? "Close navigation menu" : "Open navigation menu",
|
|
609
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx4(CloseIcon, { className: "size-6 shrink-0 text-gray-900" }) : /* @__PURE__ */ jsx4(MenuIcon, { className: "size-6 shrink-0 text-gray-900" })
|
|
610
|
+
}
|
|
611
|
+
)
|
|
612
|
+
] }),
|
|
613
|
+
mobileMenuOpen && /* @__PURE__ */ jsxs4("nav", { className: "mt-6 flex flex-col gap-6 text-lg sm:hidden", children: [
|
|
614
|
+
/* @__PURE__ */ jsx4("ul", { className: "space-y-4 font-medium", children: navItems.map((item) => (
|
|
615
|
+
// biome-ignore lint/a11y/useKeyWithClickEvents: Header is a client component
|
|
616
|
+
/* @__PURE__ */ jsx4("li", { onClick: closeMobileMenu, children: /* @__PURE__ */ jsx4(LinkComponent, { href: item.href, className: "text-gray-900", children: item.label }) }, item.href)
|
|
617
|
+
)) }),
|
|
618
|
+
cta && /* @__PURE__ */ jsx4(
|
|
619
|
+
"button",
|
|
620
|
+
{
|
|
621
|
+
type: "button",
|
|
622
|
+
className: "rounded-md border border-gray-200 bg-white px-4 py-3 text-lg font-medium text-gray-900 transition-colors hover:bg-gray-50",
|
|
623
|
+
onClick: cta.onClick,
|
|
624
|
+
children: cta.label
|
|
625
|
+
}
|
|
626
|
+
)
|
|
627
|
+
] })
|
|
628
|
+
] })
|
|
629
|
+
}
|
|
630
|
+
);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// src/solar/components/hero/index.tsx
|
|
634
|
+
import { twMerge as twMerge4 } from "tailwind-merge";
|
|
635
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
636
|
+
function DefaultLink4({ href, children, className }) {
|
|
637
|
+
return /* @__PURE__ */ jsx5("a", { href, className, children });
|
|
638
|
+
}
|
|
639
|
+
function resolveAction2(action) {
|
|
640
|
+
if (!action) return {};
|
|
641
|
+
if (typeof action === "string") return { href: action };
|
|
642
|
+
return { onClick: action };
|
|
643
|
+
}
|
|
644
|
+
function CTAButton({
|
|
645
|
+
children,
|
|
646
|
+
action,
|
|
647
|
+
variant = "primary",
|
|
648
|
+
LinkComponent
|
|
649
|
+
}) {
|
|
650
|
+
const resolved = resolveAction2(action);
|
|
651
|
+
const isPrimary = variant === "primary";
|
|
652
|
+
const className = twMerge4(
|
|
653
|
+
"inline-flex items-center justify-center gap-1 rounded-md px-5 py-3 font-medium tracking-wide whitespace-nowrap transition-all duration-200",
|
|
654
|
+
isPrimary ? "border-b-[1.5px] border-orange-700 bg-gradient-to-b from-orange-400 to-orange-500 text-white shadow-[0_0_0_2px_rgba(0,0,0,0.04),0_0_14px_0_rgba(255,255,255,0.19)] hover:shadow-orange-300" : "border border-gray-300 bg-white text-gray-900 hover:bg-gray-50"
|
|
655
|
+
);
|
|
656
|
+
if (resolved.onClick) {
|
|
657
|
+
return /* @__PURE__ */ jsx5("button", { type: "button", className, onClick: resolved.onClick, children });
|
|
658
|
+
}
|
|
659
|
+
if (resolved.href) {
|
|
660
|
+
return /* @__PURE__ */ jsx5(LinkComponent, { href: resolved.href, className, children });
|
|
661
|
+
}
|
|
662
|
+
return /* @__PURE__ */ jsx5("button", { type: "button", className, children });
|
|
663
|
+
}
|
|
664
|
+
function Hero({
|
|
665
|
+
title,
|
|
666
|
+
subtitle,
|
|
667
|
+
badge,
|
|
668
|
+
callToAction,
|
|
669
|
+
secondaryCallToAction,
|
|
670
|
+
variant = "default",
|
|
671
|
+
actions,
|
|
672
|
+
LinkComponent = DefaultLink4,
|
|
673
|
+
className,
|
|
674
|
+
children
|
|
675
|
+
}) {
|
|
676
|
+
if (variant === "minimal") {
|
|
677
|
+
return /* @__PURE__ */ jsx5(
|
|
678
|
+
HeroMinimal,
|
|
679
|
+
{
|
|
680
|
+
title,
|
|
681
|
+
subtitle,
|
|
682
|
+
badge,
|
|
683
|
+
callToAction,
|
|
684
|
+
secondaryCallToAction,
|
|
685
|
+
actions,
|
|
686
|
+
LinkComponent,
|
|
687
|
+
className,
|
|
688
|
+
children
|
|
689
|
+
}
|
|
690
|
+
);
|
|
691
|
+
}
|
|
692
|
+
if (variant === "gradient") {
|
|
693
|
+
return /* @__PURE__ */ jsx5(
|
|
694
|
+
HeroGradient,
|
|
695
|
+
{
|
|
696
|
+
title,
|
|
697
|
+
subtitle,
|
|
698
|
+
badge,
|
|
699
|
+
callToAction,
|
|
700
|
+
secondaryCallToAction,
|
|
701
|
+
actions,
|
|
702
|
+
LinkComponent,
|
|
703
|
+
className,
|
|
704
|
+
children
|
|
705
|
+
}
|
|
706
|
+
);
|
|
707
|
+
}
|
|
708
|
+
return /* @__PURE__ */ jsx5("section", { "aria-label": "hero", className: twMerge4("relative", className), children: /* @__PURE__ */ jsxs5("div", { className: "relative flex flex-col items-center justify-center py-16 sm:py-24", children: [
|
|
709
|
+
badge && /* @__PURE__ */ jsx5("div", { className: "mb-6", children: /* @__PURE__ */ jsx5("div", { className: "inline-flex items-center gap-3 rounded-full bg-white/5 px-2.5 py-0.5 pr-3 pl-0.5 font-medium text-gray-900 ring-1 shadow-lg shadow-orange-400/20 ring-black/10 backdrop-blur-[1px] transition-colors hover:bg-orange-500/5 sm:text-sm", children: /* @__PURE__ */ jsx5("span", { className: "shrink-0 rounded-full border bg-gray-50 px-2.5 py-1 text-sm text-gray-600 sm:text-xs", children: badge }) }) }),
|
|
710
|
+
/* @__PURE__ */ jsx5("h1", { className: "mt-2 text-center text-5xl font-semibold tracking-tighter text-gray-900 sm:text-8xl sm:leading-[1.1]", children: title }),
|
|
711
|
+
subtitle && /* @__PURE__ */ jsx5("p", { className: "mt-5 max-w-xl text-center text-base text-balance text-gray-700 sm:mt-8 sm:text-xl", children: subtitle }),
|
|
712
|
+
(callToAction || secondaryCallToAction) && /* @__PURE__ */ jsxs5("div", { className: "mt-6 flex flex-wrap items-center justify-center gap-4", children: [
|
|
713
|
+
callToAction && /* @__PURE__ */ jsx5(
|
|
714
|
+
CTAButton,
|
|
715
|
+
{
|
|
716
|
+
action: typeof actions?.primary === "string" ? actions.primary : actions?.primary?.href,
|
|
717
|
+
variant: "primary",
|
|
718
|
+
LinkComponent,
|
|
719
|
+
children: callToAction
|
|
720
|
+
}
|
|
721
|
+
),
|
|
722
|
+
secondaryCallToAction && /* @__PURE__ */ jsx5(
|
|
723
|
+
CTAButton,
|
|
724
|
+
{
|
|
725
|
+
action: typeof actions?.secondary === "string" ? actions.secondary : actions?.secondary?.href,
|
|
726
|
+
variant: "secondary",
|
|
727
|
+
LinkComponent,
|
|
728
|
+
children: secondaryCallToAction
|
|
729
|
+
}
|
|
730
|
+
)
|
|
731
|
+
] }),
|
|
732
|
+
children
|
|
733
|
+
] }) });
|
|
734
|
+
}
|
|
735
|
+
function HeroMinimal({
|
|
736
|
+
title,
|
|
737
|
+
subtitle,
|
|
738
|
+
badge,
|
|
739
|
+
callToAction,
|
|
740
|
+
secondaryCallToAction,
|
|
741
|
+
actions,
|
|
742
|
+
LinkComponent = DefaultLink4,
|
|
743
|
+
className,
|
|
744
|
+
children
|
|
745
|
+
}) {
|
|
746
|
+
return /* @__PURE__ */ jsx5("section", { "aria-label": "hero", className: twMerge4("relative", className), children: /* @__PURE__ */ jsxs5("div", { className: "flex flex-col items-center justify-center py-12 sm:py-20", children: [
|
|
747
|
+
badge && /* @__PURE__ */ jsx5("div", { className: "mb-4", children: /* @__PURE__ */ jsx5("span", { className: "inline-flex rounded-full bg-gray-100 px-3 py-1 text-sm font-medium text-gray-700", children: badge }) }),
|
|
748
|
+
/* @__PURE__ */ jsx5("h1", { className: "text-center text-4xl font-semibold tracking-tight text-gray-900 sm:text-6xl", children: title }),
|
|
749
|
+
subtitle && /* @__PURE__ */ jsx5("p", { className: "mt-4 max-w-lg text-center text-base text-gray-600 sm:mt-6 sm:text-lg", children: subtitle }),
|
|
750
|
+
(callToAction || secondaryCallToAction) && /* @__PURE__ */ jsxs5("div", { className: "mt-6 flex flex-wrap items-center justify-center gap-4", children: [
|
|
751
|
+
callToAction && /* @__PURE__ */ jsx5(
|
|
752
|
+
CTAButton,
|
|
753
|
+
{
|
|
754
|
+
action: typeof actions?.primary === "string" ? actions.primary : actions?.primary?.href,
|
|
755
|
+
variant: "primary",
|
|
756
|
+
LinkComponent,
|
|
757
|
+
children: callToAction
|
|
758
|
+
}
|
|
759
|
+
),
|
|
760
|
+
secondaryCallToAction && /* @__PURE__ */ jsx5(
|
|
761
|
+
CTAButton,
|
|
762
|
+
{
|
|
763
|
+
action: typeof actions?.secondary === "string" ? actions.secondary : actions?.secondary?.href,
|
|
764
|
+
variant: "secondary",
|
|
765
|
+
LinkComponent,
|
|
766
|
+
children: secondaryCallToAction
|
|
767
|
+
}
|
|
768
|
+
)
|
|
769
|
+
] }),
|
|
770
|
+
children
|
|
771
|
+
] }) });
|
|
772
|
+
}
|
|
773
|
+
function HeroGradient({
|
|
774
|
+
title,
|
|
775
|
+
subtitle,
|
|
776
|
+
badge,
|
|
777
|
+
callToAction,
|
|
778
|
+
secondaryCallToAction,
|
|
779
|
+
actions,
|
|
780
|
+
LinkComponent = DefaultLink4,
|
|
781
|
+
className,
|
|
782
|
+
children
|
|
783
|
+
}) {
|
|
784
|
+
return /* @__PURE__ */ jsxs5(
|
|
785
|
+
"section",
|
|
786
|
+
{
|
|
787
|
+
"aria-label": "hero",
|
|
788
|
+
className: twMerge4("relative overflow-hidden", className),
|
|
789
|
+
children: [
|
|
790
|
+
/* @__PURE__ */ jsx5("div", { className: "absolute inset-0 -z-10 bg-gradient-to-br from-orange-50 via-white to-orange-100" }),
|
|
791
|
+
/* @__PURE__ */ jsx5("div", { className: "absolute inset-0 -z-10 bg-gradient-radial from-orange-200/30 via-transparent to-transparent" }),
|
|
792
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex flex-col items-center justify-center py-16 sm:py-24", children: [
|
|
793
|
+
badge && /* @__PURE__ */ jsx5("div", { className: "mb-6", children: /* @__PURE__ */ jsx5("div", { className: "inline-flex items-center gap-3 rounded-full bg-white/80 px-2.5 py-0.5 pr-3 pl-0.5 font-medium text-gray-900 ring-1 shadow-lg shadow-orange-400/20 ring-black/10 backdrop-blur-sm transition-colors hover:bg-white sm:text-sm", children: /* @__PURE__ */ jsx5("span", { className: "shrink-0 rounded-full border bg-orange-50 px-2.5 py-1 text-sm text-orange-700 sm:text-xs", children: badge }) }) }),
|
|
794
|
+
/* @__PURE__ */ jsx5("h1", { className: "text-center text-5xl font-semibold tracking-tighter text-gray-900 sm:text-8xl sm:leading-[1.1]", children: title }),
|
|
795
|
+
subtitle && /* @__PURE__ */ jsx5("p", { className: "mt-5 max-w-xl text-center text-base text-balance text-gray-700 sm:mt-8 sm:text-xl", children: subtitle }),
|
|
796
|
+
(callToAction || secondaryCallToAction) && /* @__PURE__ */ jsxs5("div", { className: "mt-6 flex flex-wrap items-center justify-center gap-4", children: [
|
|
797
|
+
callToAction && /* @__PURE__ */ jsx5(
|
|
798
|
+
CTAButton,
|
|
799
|
+
{
|
|
800
|
+
action: typeof actions?.primary === "string" ? actions.primary : actions?.primary?.href,
|
|
801
|
+
variant: "primary",
|
|
802
|
+
LinkComponent,
|
|
803
|
+
children: callToAction
|
|
804
|
+
}
|
|
805
|
+
),
|
|
806
|
+
secondaryCallToAction && /* @__PURE__ */ jsx5(
|
|
807
|
+
CTAButton,
|
|
808
|
+
{
|
|
809
|
+
action: typeof actions?.secondary === "string" ? actions.secondary : actions?.secondary?.href,
|
|
810
|
+
variant: "secondary",
|
|
811
|
+
LinkComponent,
|
|
812
|
+
children: secondaryCallToAction
|
|
813
|
+
}
|
|
814
|
+
)
|
|
815
|
+
] }),
|
|
816
|
+
children
|
|
817
|
+
] })
|
|
818
|
+
]
|
|
819
|
+
}
|
|
820
|
+
);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// src/solar/layouts/landing-page.tsx
|
|
824
|
+
import { isValidElement } from "react";
|
|
825
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
826
|
+
function HeroSection({
|
|
827
|
+
title,
|
|
828
|
+
subtitle,
|
|
829
|
+
callToAction,
|
|
830
|
+
secondaryCallToAction,
|
|
831
|
+
actions,
|
|
832
|
+
variant: _variant
|
|
833
|
+
}) {
|
|
834
|
+
return /* @__PURE__ */ jsx6("section", { className: "relative py-20 lg:py-32 bg-gradient-to-br from-slate-900 to-slate-800", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8 text-center", children: [
|
|
835
|
+
/* @__PURE__ */ jsx6("h1", { className: "text-4xl font-bold tracking-tight text-white sm:text-6xl", children: title }),
|
|
836
|
+
subtitle && /* @__PURE__ */ jsx6("p", { className: "mt-6 text-lg leading-8 text-slate-300", children: subtitle }),
|
|
837
|
+
/* @__PURE__ */ jsxs6("div", { className: "mt-10 flex items-center justify-center gap-x-6", children: [
|
|
838
|
+
/* @__PURE__ */ jsx6(
|
|
839
|
+
"a",
|
|
840
|
+
{
|
|
841
|
+
href: typeof actions?.primary === "string" ? actions.primary : actions?.primary?.href ?? "#",
|
|
842
|
+
className: "rounded-md bg-indigo-600 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500",
|
|
843
|
+
children: callToAction
|
|
844
|
+
}
|
|
845
|
+
),
|
|
846
|
+
secondaryCallToAction && /* @__PURE__ */ jsxs6(
|
|
847
|
+
"a",
|
|
848
|
+
{
|
|
849
|
+
href: typeof actions?.secondary === "string" ? actions.secondary : actions?.secondary?.href ?? "#",
|
|
850
|
+
className: "text-sm font-semibold leading-6 text-white",
|
|
851
|
+
children: [
|
|
852
|
+
secondaryCallToAction,
|
|
853
|
+
" ",
|
|
854
|
+
/* @__PURE__ */ jsx6("span", { "aria-hidden": "true", children: "->" })
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
)
|
|
858
|
+
] })
|
|
859
|
+
] }) });
|
|
860
|
+
}
|
|
861
|
+
function FeaturesSection({
|
|
862
|
+
title,
|
|
863
|
+
description,
|
|
864
|
+
features,
|
|
865
|
+
variant: _variant,
|
|
866
|
+
columns = 3
|
|
867
|
+
}) {
|
|
868
|
+
return /* @__PURE__ */ jsx6("section", { className: "py-20 lg:py-24 bg-white", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8", children: [
|
|
869
|
+
title && /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-2xl text-center", children: [
|
|
870
|
+
/* @__PURE__ */ jsx6("h2", { className: "text-3xl font-bold tracking-tight text-slate-900 sm:text-4xl", children: title }),
|
|
871
|
+
description && /* @__PURE__ */ jsx6("p", { className: "mt-4 text-lg leading-8 text-slate-600", children: description })
|
|
872
|
+
] }),
|
|
873
|
+
/* @__PURE__ */ jsx6(
|
|
874
|
+
"div",
|
|
875
|
+
{
|
|
876
|
+
className: `mx-auto mt-16 grid max-w-2xl gap-x-8 gap-y-16 lg:max-w-none ${columns === 2 ? "sm:grid-cols-2" : columns === 4 ? "sm:grid-cols-2 lg:grid-cols-4" : "sm:grid-cols-2 lg:grid-cols-3"}`,
|
|
877
|
+
children: features.map((feature, index) => /* @__PURE__ */ jsxs6("div", { className: "flex flex-col", children: [
|
|
878
|
+
/* @__PURE__ */ jsx6("h3", { className: "text-lg font-semibold leading-8 text-slate-900", children: feature.title }),
|
|
879
|
+
/* @__PURE__ */ jsx6("p", { className: "mt-2 text-base leading-7 text-slate-600", children: feature.description })
|
|
880
|
+
] }, index.toString()))
|
|
881
|
+
}
|
|
882
|
+
)
|
|
883
|
+
] }) });
|
|
884
|
+
}
|
|
885
|
+
function PricingSection({
|
|
886
|
+
title,
|
|
887
|
+
description,
|
|
888
|
+
tiers,
|
|
889
|
+
showToggle: _showToggle
|
|
890
|
+
}) {
|
|
891
|
+
return /* @__PURE__ */ jsx6("section", { className: "py-20 lg:py-24 bg-slate-50", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8", children: [
|
|
892
|
+
title && /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-2xl text-center", children: [
|
|
893
|
+
/* @__PURE__ */ jsx6("h2", { className: "text-3xl font-bold tracking-tight text-slate-900 sm:text-4xl", children: title }),
|
|
894
|
+
description && /* @__PURE__ */ jsx6("p", { className: "mt-4 text-lg leading-8 text-slate-600", children: description })
|
|
895
|
+
] }),
|
|
896
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-auto mt-16 grid max-w-lg gap-8 lg:max-w-none lg:grid-cols-3", children: tiers.map((tier, index) => /* @__PURE__ */ jsxs6(
|
|
897
|
+
"div",
|
|
898
|
+
{
|
|
899
|
+
className: `flex flex-col rounded-2xl p-8 ring-1 ${tier.highlighted ? "ring-2 ring-indigo-600 bg-white" : "ring-slate-200 bg-white"}`,
|
|
900
|
+
children: [
|
|
901
|
+
/* @__PURE__ */ jsx6("h3", { className: "text-lg font-semibold leading-8 text-slate-900", children: tier.name }),
|
|
902
|
+
/* @__PURE__ */ jsx6("p", { className: "mt-4 text-4xl font-bold tracking-tight text-slate-900", children: tier.price }),
|
|
903
|
+
tier.description && /* @__PURE__ */ jsx6("p", { className: "mt-4 text-base leading-7 text-slate-600", children: tier.description }),
|
|
904
|
+
/* @__PURE__ */ jsx6("ul", { className: "mt-8 space-y-3 text-sm leading-6 text-slate-600", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsxs6("li", { className: "flex gap-x-3", children: [
|
|
905
|
+
/* @__PURE__ */ jsx6("span", { className: "text-indigo-600", children: "*" }),
|
|
906
|
+
feature
|
|
907
|
+
] }, featureIndex.toString())) }),
|
|
908
|
+
/* @__PURE__ */ jsx6(
|
|
909
|
+
"a",
|
|
910
|
+
{
|
|
911
|
+
href: typeof tier.actions?.primary === "string" ? tier.actions.primary : tier.actions?.primary?.href ?? "#",
|
|
912
|
+
className: `mt-8 block rounded-md px-3 py-2 text-center text-sm font-semibold shadow-sm ${tier.highlighted ? "bg-indigo-600 text-white hover:bg-indigo-500" : "bg-white text-indigo-600 ring-1 ring-inset ring-indigo-200 hover:ring-indigo-300"}`,
|
|
913
|
+
children: tier.callToAction
|
|
914
|
+
}
|
|
915
|
+
)
|
|
916
|
+
]
|
|
917
|
+
},
|
|
918
|
+
index.toString()
|
|
919
|
+
)) })
|
|
920
|
+
] }) });
|
|
921
|
+
}
|
|
922
|
+
function TestimonialsSection({
|
|
923
|
+
title,
|
|
924
|
+
testimonials,
|
|
925
|
+
variant: _variant
|
|
926
|
+
}) {
|
|
927
|
+
return /* @__PURE__ */ jsx6("section", { className: "py-20 lg:py-24 bg-white", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8", children: [
|
|
928
|
+
title && /* @__PURE__ */ jsx6("h2", { className: "text-center text-3xl font-bold tracking-tight text-slate-900 sm:text-4xl", children: title }),
|
|
929
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-auto mt-16 grid max-w-2xl gap-8 lg:max-w-none lg:grid-cols-3", children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs6(
|
|
930
|
+
"div",
|
|
931
|
+
{
|
|
932
|
+
className: "flex flex-col bg-slate-50 p-8 rounded-2xl",
|
|
933
|
+
children: [
|
|
934
|
+
/* @__PURE__ */ jsxs6("blockquote", { className: "text-lg leading-7 text-slate-700", children: [
|
|
935
|
+
"\u201C",
|
|
936
|
+
testimonial.quote,
|
|
937
|
+
"\u201D"
|
|
938
|
+
] }),
|
|
939
|
+
/* @__PURE__ */ jsxs6("div", { className: "mt-6", children: [
|
|
940
|
+
/* @__PURE__ */ jsx6("p", { className: "font-semibold text-slate-900", children: testimonial.author }),
|
|
941
|
+
(testimonial.title || testimonial.company) && /* @__PURE__ */ jsxs6("p", { className: "text-sm text-slate-500", children: [
|
|
942
|
+
testimonial.title,
|
|
943
|
+
testimonial.title && testimonial.company ? ", " : "",
|
|
944
|
+
testimonial.company
|
|
945
|
+
] })
|
|
946
|
+
] })
|
|
947
|
+
]
|
|
948
|
+
},
|
|
949
|
+
index.toString()
|
|
950
|
+
)) })
|
|
951
|
+
] }) });
|
|
952
|
+
}
|
|
953
|
+
function CTASection({
|
|
954
|
+
title,
|
|
955
|
+
description,
|
|
956
|
+
callToAction,
|
|
957
|
+
secondaryCallToAction,
|
|
958
|
+
actions,
|
|
959
|
+
variant: _variant
|
|
960
|
+
}) {
|
|
961
|
+
return /* @__PURE__ */ jsx6("section", { className: "py-20 lg:py-24 bg-indigo-600", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8 text-center", children: [
|
|
962
|
+
/* @__PURE__ */ jsx6("h2", { className: "text-3xl font-bold tracking-tight text-white sm:text-4xl", children: title }),
|
|
963
|
+
description && /* @__PURE__ */ jsx6("p", { className: "mx-auto mt-6 max-w-xl text-lg leading-8 text-indigo-100", children: description }),
|
|
964
|
+
/* @__PURE__ */ jsxs6("div", { className: "mt-10 flex items-center justify-center gap-x-6", children: [
|
|
965
|
+
/* @__PURE__ */ jsx6(
|
|
966
|
+
"a",
|
|
967
|
+
{
|
|
968
|
+
href: typeof actions?.primary === "string" ? actions.primary : actions?.primary?.href ?? "#",
|
|
969
|
+
className: "rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold text-indigo-600 shadow-sm hover:bg-indigo-50",
|
|
970
|
+
children: callToAction
|
|
971
|
+
}
|
|
972
|
+
),
|
|
973
|
+
secondaryCallToAction && /* @__PURE__ */ jsxs6(
|
|
974
|
+
"a",
|
|
975
|
+
{
|
|
976
|
+
href: typeof actions?.secondary === "string" ? actions.secondary : actions?.secondary?.href ?? "#",
|
|
977
|
+
className: "text-sm font-semibold leading-6 text-white",
|
|
978
|
+
children: [
|
|
979
|
+
secondaryCallToAction,
|
|
980
|
+
" ",
|
|
981
|
+
/* @__PURE__ */ jsx6("span", { "aria-hidden": "true", children: "->" })
|
|
982
|
+
]
|
|
983
|
+
}
|
|
984
|
+
)
|
|
985
|
+
] })
|
|
986
|
+
] }) });
|
|
987
|
+
}
|
|
988
|
+
function FAQSection({ title, items, variant: _variant }) {
|
|
989
|
+
return /* @__PURE__ */ jsx6("section", { className: "py-20 lg:py-24 bg-white", children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto max-w-7xl px-6 lg:px-8", children: [
|
|
990
|
+
title && /* @__PURE__ */ jsx6("h2", { className: "text-center text-3xl font-bold tracking-tight text-slate-900 sm:text-4xl", children: title }),
|
|
991
|
+
/* @__PURE__ */ jsx6("div", { className: "mx-auto mt-16 max-w-3xl divide-y divide-slate-200", children: items.map((item, index) => /* @__PURE__ */ jsxs6("div", { className: "py-6", children: [
|
|
992
|
+
/* @__PURE__ */ jsx6("h3", { className: "text-lg font-semibold leading-7 text-slate-900", children: item.question }),
|
|
993
|
+
/* @__PURE__ */ jsx6("p", { className: "mt-2 text-base leading-7 text-slate-600", children: item.answer })
|
|
994
|
+
] }, index.toString())) })
|
|
995
|
+
] }) });
|
|
996
|
+
}
|
|
997
|
+
function LandingPage({
|
|
998
|
+
hero,
|
|
999
|
+
features,
|
|
1000
|
+
pricing,
|
|
1001
|
+
testimonials,
|
|
1002
|
+
cta,
|
|
1003
|
+
faq,
|
|
1004
|
+
sections,
|
|
1005
|
+
children,
|
|
1006
|
+
className
|
|
1007
|
+
}) {
|
|
1008
|
+
return /* @__PURE__ */ jsxs6("div", { className, children: [
|
|
1009
|
+
hero && (isValidElement(hero) ? hero : /* @__PURE__ */ jsx6(HeroSection, { ...hero })),
|
|
1010
|
+
features && (isValidElement(features) ? features : /* @__PURE__ */ jsx6(FeaturesSection, { ...features })),
|
|
1011
|
+
pricing && (isValidElement(pricing) ? pricing : /* @__PURE__ */ jsx6(PricingSection, { ...pricing })),
|
|
1012
|
+
testimonials && (isValidElement(testimonials) ? testimonials : /* @__PURE__ */ jsx6(TestimonialsSection, { ...testimonials })),
|
|
1013
|
+
cta && (isValidElement(cta) ? cta : /* @__PURE__ */ jsx6(CTASection, { ...cta })),
|
|
1014
|
+
faq && (isValidElement(faq) ? faq : /* @__PURE__ */ jsx6(FAQSection, { ...faq })),
|
|
1015
|
+
sections?.map((section, index) => /* @__PURE__ */ jsx6("div", { children: section }, index.toString())),
|
|
1016
|
+
children
|
|
1017
|
+
] });
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
// src/solar/layouts/site.tsx
|
|
1021
|
+
import { isValidElement as isValidElement2 } from "react";
|
|
1022
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1023
|
+
function Header2({ logo, nav, cta, LinkComponent }) {
|
|
1024
|
+
const Link = LinkComponent ?? (({
|
|
1025
|
+
href,
|
|
1026
|
+
children,
|
|
1027
|
+
className
|
|
1028
|
+
}) => /* @__PURE__ */ jsx7("a", { href, className, children }));
|
|
1029
|
+
return /* @__PURE__ */ jsx7("header", { className: "sticky top-0 z-50 bg-white/80 backdrop-blur-md border-b border-slate-200", children: /* @__PURE__ */ jsxs7("nav", { className: "mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8", children: [
|
|
1030
|
+
/* @__PURE__ */ jsx7("div", { className: "flex lg:flex-1", children: /* @__PURE__ */ jsx7(Link, { href: "/", className: "-m-1.5 p-1.5", children: logo }) }),
|
|
1031
|
+
/* @__PURE__ */ jsx7("div", { className: "hidden lg:flex lg:gap-x-12", children: nav.map((item, index) => /* @__PURE__ */ jsx7(
|
|
1032
|
+
Link,
|
|
1033
|
+
{
|
|
1034
|
+
href: item.href,
|
|
1035
|
+
className: "text-sm font-semibold leading-6 text-slate-900 hover:text-slate-600",
|
|
1036
|
+
children: item.label
|
|
1037
|
+
},
|
|
1038
|
+
index.toString()
|
|
1039
|
+
)) }),
|
|
1040
|
+
/* @__PURE__ */ jsx7("div", { className: "hidden lg:flex lg:flex-1 lg:justify-end", children: cta && /* @__PURE__ */ jsx7(
|
|
1041
|
+
Link,
|
|
1042
|
+
{
|
|
1043
|
+
href: cta.href,
|
|
1044
|
+
className: "rounded-md bg-indigo-600 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500",
|
|
1045
|
+
children: cta.text
|
|
1046
|
+
}
|
|
1047
|
+
) })
|
|
1048
|
+
] }) });
|
|
1049
|
+
}
|
|
1050
|
+
function Footer2({ logo, links, social, copyright }) {
|
|
1051
|
+
return /* @__PURE__ */ jsx7("footer", { className: "bg-slate-900", children: /* @__PURE__ */ jsxs7("div", { className: "mx-auto max-w-7xl px-6 py-12 lg:px-8 lg:py-16", children: [
|
|
1052
|
+
/* @__PURE__ */ jsxs7("div", { className: "xl:grid xl:grid-cols-3 xl:gap-8", children: [
|
|
1053
|
+
/* @__PURE__ */ jsx7("div", { className: "space-y-8", children: logo }),
|
|
1054
|
+
links.length > 0 && /* @__PURE__ */ jsx7("div", { className: "mt-16 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0", children: links.map((group, groupIndex) => /* @__PURE__ */ jsxs7("div", { children: [
|
|
1055
|
+
/* @__PURE__ */ jsx7("h3", { className: "text-sm font-semibold leading-6 text-white", children: group.title }),
|
|
1056
|
+
/* @__PURE__ */ jsx7("ul", { className: "mt-6 space-y-4", children: group.links.map((link, linkIndex) => /* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
1057
|
+
"a",
|
|
1058
|
+
{
|
|
1059
|
+
href: link.href,
|
|
1060
|
+
className: "text-sm leading-6 text-slate-300 hover:text-white",
|
|
1061
|
+
children: link.label
|
|
1062
|
+
}
|
|
1063
|
+
) }, linkIndex.toString())) })
|
|
1064
|
+
] }, groupIndex.toString())) })
|
|
1065
|
+
] }),
|
|
1066
|
+
(social || copyright) && /* @__PURE__ */ jsx7("div", { className: "mt-16 border-t border-slate-700 pt-8 sm:mt-20 lg:mt-24", children: /* @__PURE__ */ jsxs7("div", { className: "flex items-center justify-between", children: [
|
|
1067
|
+
copyright && /* @__PURE__ */ jsx7("p", { className: "text-sm leading-5 text-slate-400", children: copyright }),
|
|
1068
|
+
social && social.length > 0 && /* @__PURE__ */ jsx7("div", { className: "flex space-x-6", children: social.map((item, index) => /* @__PURE__ */ jsxs7(
|
|
1069
|
+
"a",
|
|
1070
|
+
{
|
|
1071
|
+
href: item.href,
|
|
1072
|
+
className: "text-slate-400 hover:text-slate-300",
|
|
1073
|
+
children: [
|
|
1074
|
+
/* @__PURE__ */ jsx7("span", { className: "sr-only", children: item.platform }),
|
|
1075
|
+
item.icon ?? item.platform
|
|
1076
|
+
]
|
|
1077
|
+
},
|
|
1078
|
+
index.toString()
|
|
1079
|
+
)) })
|
|
1080
|
+
] }) })
|
|
1081
|
+
] }) });
|
|
1082
|
+
}
|
|
1083
|
+
function Site({
|
|
1084
|
+
name: _name,
|
|
1085
|
+
domain: _domain,
|
|
1086
|
+
theme,
|
|
1087
|
+
header,
|
|
1088
|
+
footer,
|
|
1089
|
+
children
|
|
1090
|
+
}) {
|
|
1091
|
+
const isHeaderNode = isValidElement2(header);
|
|
1092
|
+
const isFooterNode = isValidElement2(footer);
|
|
1093
|
+
return /* @__PURE__ */ jsxs7("div", { className: "min-h-screen flex flex-col", "data-theme": theme, children: [
|
|
1094
|
+
isHeaderNode ? header : /* @__PURE__ */ jsx7(Header2, { ...header }),
|
|
1095
|
+
/* @__PURE__ */ jsx7("main", { className: "flex-1", children }),
|
|
1096
|
+
isFooterNode ? footer : /* @__PURE__ */ jsx7(Footer2, { ...footer })
|
|
1097
|
+
] });
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
// src/solar/index.ts
|
|
1101
|
+
var components = {
|
|
1102
|
+
// Layout components (required by SiteComponents)
|
|
1103
|
+
Site,
|
|
1104
|
+
Header,
|
|
1105
|
+
Footer,
|
|
1106
|
+
LandingPage,
|
|
1107
|
+
// Section components
|
|
1108
|
+
Hero,
|
|
1109
|
+
HeroMinimal,
|
|
1110
|
+
HeroGradient,
|
|
1111
|
+
Features,
|
|
1112
|
+
CTA,
|
|
1113
|
+
// Page component (using LandingPage as default Page)
|
|
1114
|
+
Page: LandingPage
|
|
1115
|
+
};
|
|
1116
|
+
var siteComponents = components;
|
|
1117
|
+
export {
|
|
1118
|
+
CTA,
|
|
1119
|
+
Features,
|
|
1120
|
+
Footer,
|
|
1121
|
+
Header,
|
|
1122
|
+
Hero,
|
|
1123
|
+
HeroGradient,
|
|
1124
|
+
HeroMinimal,
|
|
1125
|
+
LandingPage,
|
|
1126
|
+
Site,
|
|
1127
|
+
components,
|
|
1128
|
+
siteComponents
|
|
1129
|
+
};
|
|
1130
|
+
//# sourceMappingURL=index.js.map
|