@sprintup-cms/sdk 1.8.32 → 1.8.41
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/next/index.cjs +243 -0
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.js +243 -0
- package/dist/next/index.js.map +1 -1
- package/dist/react/index.cjs +243 -0
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +243 -0
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -117,6 +117,24 @@ function FAQBlock({ block }) {
|
|
|
117
117
|
] }, i)) })
|
|
118
118
|
] });
|
|
119
119
|
}
|
|
120
|
+
function TeamMemberBlock({ block }) {
|
|
121
|
+
const d = getData(block);
|
|
122
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row items-center sm:items-start gap-4 p-6 rounded-xl border border-border bg-card", children: [
|
|
123
|
+
d.avatar ? /* @__PURE__ */ jsx(
|
|
124
|
+
"img",
|
|
125
|
+
{
|
|
126
|
+
src: d.avatar,
|
|
127
|
+
alt: d.name || "Team member",
|
|
128
|
+
className: "w-20 h-20 rounded-full object-cover border-2 border-border flex-shrink-0"
|
|
129
|
+
}
|
|
130
|
+
) : /* @__PURE__ */ jsx("div", { className: "w-20 h-20 rounded-full bg-muted flex items-center justify-center text-muted-foreground text-2xl font-semibold flex-shrink-0", children: (d.name || "T").charAt(0).toUpperCase() }),
|
|
131
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center sm:text-left", children: [
|
|
132
|
+
d.name && /* @__PURE__ */ jsx("h3", { className: "font-semibold text-lg", children: d.name }),
|
|
133
|
+
d.role && /* @__PURE__ */ jsx("p", { className: "text-sm text-primary font-medium", children: d.role }),
|
|
134
|
+
d.bio && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-2 leading-relaxed", children: d.bio })
|
|
135
|
+
] })
|
|
136
|
+
] });
|
|
137
|
+
}
|
|
120
138
|
function StatsBlock({ block }) {
|
|
121
139
|
const d = getData(block);
|
|
122
140
|
const items = d.items || d.stats || [];
|
|
@@ -316,6 +334,221 @@ function SectionBlock({ block, pageType }) {
|
|
|
316
334
|
([key, value]) => isHtml(value) ? /* @__PURE__ */ jsx("div", { className: "prose prose-neutral dark:prose-invert max-w-none", dangerouslySetInnerHTML: { __html: String(value) } }, key) : /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: String(value) }, key)
|
|
317
335
|
) });
|
|
318
336
|
}
|
|
337
|
+
var FEATURE_ICONS = {
|
|
338
|
+
zap: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: /* @__PURE__ */ jsx("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" }) }),
|
|
339
|
+
shield: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: /* @__PURE__ */ jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) }),
|
|
340
|
+
star: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: /* @__PURE__ */ jsx("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) }),
|
|
341
|
+
check: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }),
|
|
342
|
+
lock: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
343
|
+
/* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
|
|
344
|
+
/* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
345
|
+
] }),
|
|
346
|
+
globe: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
347
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
348
|
+
/* @__PURE__ */ jsx("line", { x1: "2", y1: "12", x2: "22", y2: "12" }),
|
|
349
|
+
/* @__PURE__ */ jsx("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
|
|
350
|
+
] }),
|
|
351
|
+
clock: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
352
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
353
|
+
/* @__PURE__ */ jsx("polyline", { points: "12 6 12 12 16 14" })
|
|
354
|
+
] }),
|
|
355
|
+
heart: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: /* @__PURE__ */ jsx("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" }) }),
|
|
356
|
+
settings: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
357
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "3" }),
|
|
358
|
+
/* @__PURE__ */ jsx("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" })
|
|
359
|
+
] }),
|
|
360
|
+
users: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
361
|
+
/* @__PURE__ */ jsx("path", { d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }),
|
|
362
|
+
/* @__PURE__ */ jsx("circle", { cx: "9", cy: "7", r: "4" }),
|
|
363
|
+
/* @__PURE__ */ jsx("path", { d: "M23 21v-2a4 4 0 0 0-3-3.87" }),
|
|
364
|
+
/* @__PURE__ */ jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
365
|
+
] }),
|
|
366
|
+
trending: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "w-5 h-5", children: [
|
|
367
|
+
/* @__PURE__ */ jsx("polyline", { points: "23 6 13.5 15.5 8.5 10.5 1 18" }),
|
|
368
|
+
/* @__PURE__ */ jsx("polyline", { points: "17 6 23 6 23 12" })
|
|
369
|
+
] })
|
|
370
|
+
};
|
|
371
|
+
function ButtonBlock({ block }) {
|
|
372
|
+
const d = getData(block);
|
|
373
|
+
const label = d.label || d.text || "Button";
|
|
374
|
+
const url = d.url || "#";
|
|
375
|
+
const variant = d.variant || "default";
|
|
376
|
+
const base = "inline-flex items-center justify-center px-5 py-2.5 rounded-lg text-sm font-medium transition-opacity hover:opacity-90";
|
|
377
|
+
const cls = variant === "outline" ? `${base} border border-primary text-primary bg-transparent` : variant === "ghost" ? `${base} text-primary hover:bg-primary/10` : `${base} bg-primary text-primary-foreground`;
|
|
378
|
+
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("a", { href: url, className: cls, children: label }) });
|
|
379
|
+
}
|
|
380
|
+
function ListBlock({ block }) {
|
|
381
|
+
const d = getData(block);
|
|
382
|
+
const items = Array.isArray(d.items) ? d.items : [];
|
|
383
|
+
const ordered = Boolean(d.ordered);
|
|
384
|
+
const Tag = ordered ? "ol" : "ul";
|
|
385
|
+
const listCls = ordered ? "list-decimal" : "list-disc";
|
|
386
|
+
return /* @__PURE__ */ jsx(Tag, { className: `${listCls} pl-6 space-y-1.5 text-base text-foreground leading-relaxed`, children: items.map((item, i) => /* @__PURE__ */ jsx("li", { children: item }, i)) });
|
|
387
|
+
}
|
|
388
|
+
function GalleryBlock({ block }) {
|
|
389
|
+
const d = getData(block);
|
|
390
|
+
const images = Array.isArray(d.images) ? d.images : [];
|
|
391
|
+
const cols = Number(d.columns) || 3;
|
|
392
|
+
const gridCols = cols === 2 ? "grid-cols-2" : cols === 4 ? "grid-cols-2 md:grid-cols-4" : "grid-cols-2 md:grid-cols-3";
|
|
393
|
+
if (!images.length) return null;
|
|
394
|
+
return /* @__PURE__ */ jsx("div", { className: `grid gap-3 ${gridCols}`, children: images.filter((img) => img.src).map((img, i) => /* @__PURE__ */ jsxs("figure", { className: "overflow-hidden rounded-lg border border-border", children: [
|
|
395
|
+
/* @__PURE__ */ jsx("img", { src: img.src, alt: img.alt || "", className: "w-full h-48 object-cover" }),
|
|
396
|
+
img.caption && /* @__PURE__ */ jsx("figcaption", { className: "px-2 py-1 text-xs text-muted-foreground text-center", children: img.caption })
|
|
397
|
+
] }, i)) });
|
|
398
|
+
}
|
|
399
|
+
function PricingTableBlock({ block }) {
|
|
400
|
+
const d = getData(block);
|
|
401
|
+
const tiers = Array.isArray(d.tiers) ? d.tiers : [];
|
|
402
|
+
const [yearly, setYearly] = React.useState(false);
|
|
403
|
+
return /* @__PURE__ */ jsxs("section", { className: "py-12", children: [
|
|
404
|
+
(d.title || d.subtitle) && /* @__PURE__ */ jsxs("div", { className: "text-center mb-8", children: [
|
|
405
|
+
d.title && /* @__PURE__ */ jsx("h2", { className: "text-2xl md:text-3xl font-bold tracking-tight", children: d.title }),
|
|
406
|
+
d.subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: d.subtitle })
|
|
407
|
+
] }),
|
|
408
|
+
d.billingToggle && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-3 mb-8", children: [
|
|
409
|
+
/* @__PURE__ */ jsx("span", { className: `text-sm ${!yearly ? "font-semibold" : "text-muted-foreground"}`, children: "Monthly" }),
|
|
410
|
+
/* @__PURE__ */ jsx(
|
|
411
|
+
"button",
|
|
412
|
+
{
|
|
413
|
+
onClick: () => setYearly((v) => !v),
|
|
414
|
+
className: `relative w-10 h-6 rounded-full transition-colors ${yearly ? "bg-primary" : "bg-muted"}`,
|
|
415
|
+
"aria-label": "Toggle billing period",
|
|
416
|
+
children: /* @__PURE__ */ jsx("span", { className: `absolute top-1 w-4 h-4 rounded-full bg-white shadow transition-all ${yearly ? "left-5" : "left-1"}` })
|
|
417
|
+
}
|
|
418
|
+
),
|
|
419
|
+
/* @__PURE__ */ jsx("span", { className: `text-sm ${yearly ? "font-semibold" : "text-muted-foreground"}`, children: "Yearly" })
|
|
420
|
+
] }),
|
|
421
|
+
/* @__PURE__ */ jsx("div", { className: `grid gap-6 ${tiers.length === 2 ? "md:grid-cols-2" : tiers.length >= 3 ? "md:grid-cols-3" : ""}`, children: tiers.map((tier, i) => {
|
|
422
|
+
const price = yearly ? tier.yearlyPrice ?? tier.monthlyPrice : tier.monthlyPrice;
|
|
423
|
+
const featured = Boolean(tier.featured);
|
|
424
|
+
return /* @__PURE__ */ jsxs("div", { className: `flex flex-col rounded-2xl border p-8 ${featured ? "border-primary bg-primary text-primary-foreground shadow-xl" : "border-border bg-card"}`, children: [
|
|
425
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-6", children: [
|
|
426
|
+
/* @__PURE__ */ jsx("h3", { className: `text-xl font-bold ${featured ? "text-primary-foreground" : ""}`, children: tier.name }),
|
|
427
|
+
tier.description && /* @__PURE__ */ jsx("p", { className: `text-sm mt-1 ${featured ? "text-primary-foreground/70" : "text-muted-foreground"}`, children: tier.description }),
|
|
428
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-end gap-1", children: [
|
|
429
|
+
/* @__PURE__ */ jsxs("span", { className: `text-4xl font-extrabold ${featured ? "text-primary-foreground" : ""}`, children: [
|
|
430
|
+
d.currency ?? "$",
|
|
431
|
+
price ?? 0
|
|
432
|
+
] }),
|
|
433
|
+
/* @__PURE__ */ jsx("span", { className: `text-sm mb-1 ${featured ? "text-primary-foreground/70" : "text-muted-foreground"}`, children: "/mo" })
|
|
434
|
+
] })
|
|
435
|
+
] }),
|
|
436
|
+
/* @__PURE__ */ jsx("ul", { className: "space-y-2 flex-1 mb-8", children: (tier.features ?? []).map((f, j) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
437
|
+
/* @__PURE__ */ jsx("svg", { className: `w-4 h-4 flex-shrink-0 ${f.included ? featured ? "text-primary-foreground" : "text-primary" : "text-muted-foreground opacity-40"}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: f.included ? /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) : /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }) }),
|
|
438
|
+
/* @__PURE__ */ jsx("span", { className: !f.included ? "opacity-50" : "", children: f.text })
|
|
439
|
+
] }, j)) }),
|
|
440
|
+
tier.cta && /* @__PURE__ */ jsx("a", { href: tier.ctaUrl || "#", className: `block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? "bg-primary-foreground text-primary" : "bg-primary text-primary-foreground"}`, children: tier.cta })
|
|
441
|
+
] }, tier.id || i);
|
|
442
|
+
}) })
|
|
443
|
+
] });
|
|
444
|
+
}
|
|
445
|
+
function CardGridBlock({ block }) {
|
|
446
|
+
const d = getData(block);
|
|
447
|
+
const cards = Array.isArray(d.cards) ? d.cards : [];
|
|
448
|
+
const cols = Number(d.columns) || 3;
|
|
449
|
+
const gridCols = cols === 2 ? "sm:grid-cols-2" : cols === 4 ? "sm:grid-cols-2 lg:grid-cols-4" : "sm:grid-cols-2 lg:grid-cols-3";
|
|
450
|
+
return /* @__PURE__ */ jsx("section", { className: "py-12", children: /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto px-4", children: [
|
|
451
|
+
d.title && /* @__PURE__ */ jsx("h2", { className: "text-2xl md:text-3xl font-bold tracking-tight text-center text-balance mb-8", children: d.title }),
|
|
452
|
+
cards.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-muted-foreground", children: "No cards added yet." }) : /* @__PURE__ */ jsx("div", { className: `grid grid-cols-1 gap-6 ${gridCols}`, children: cards.map((card, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col rounded-xl border border-border bg-card overflow-hidden hover:shadow-md transition-shadow", children: [
|
|
453
|
+
card.image && /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx(
|
|
454
|
+
"img",
|
|
455
|
+
{
|
|
456
|
+
src: card.image,
|
|
457
|
+
alt: card.title || "",
|
|
458
|
+
className: "w-full h-full object-cover",
|
|
459
|
+
onError: (e) => {
|
|
460
|
+
e.target.style.display = "none";
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
) }),
|
|
464
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5 gap-2", children: [
|
|
465
|
+
card.title && /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", children: card.title }),
|
|
466
|
+
card.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground leading-relaxed flex-1", children: card.description }),
|
|
467
|
+
card.link && /* @__PURE__ */ jsxs("a", { href: card.link, className: "inline-flex items-center text-sm font-medium text-primary hover:underline mt-2", children: [
|
|
468
|
+
card.linkText || "Learn more",
|
|
469
|
+
" \u2192"
|
|
470
|
+
] })
|
|
471
|
+
] })
|
|
472
|
+
] }, i)) })
|
|
473
|
+
] }) });
|
|
474
|
+
}
|
|
475
|
+
function TimelineBlock({ block }) {
|
|
476
|
+
const d = getData(block);
|
|
477
|
+
const items = Array.isArray(d.items) ? d.items : [];
|
|
478
|
+
return /* @__PURE__ */ jsx("section", { className: "py-12", children: /* @__PURE__ */ jsxs("div", { className: "max-w-3xl mx-auto px-4", children: [
|
|
479
|
+
(d.title || d.subtitle) && /* @__PURE__ */ jsxs("div", { className: "text-center mb-10", children: [
|
|
480
|
+
d.title && /* @__PURE__ */ jsx("h2", { className: "text-2xl md:text-3xl font-bold tracking-tight text-balance", children: d.title }),
|
|
481
|
+
d.subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground text-pretty", children: d.subtitle })
|
|
482
|
+
] }),
|
|
483
|
+
items.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-muted-foreground", children: "No timeline items added yet." }) : /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
484
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-6 top-0 bottom-0 w-px bg-border", "aria-hidden": "true" }),
|
|
485
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-8", children: items.map((item, i) => /* @__PURE__ */ jsxs("div", { className: "relative flex gap-6", children: [
|
|
486
|
+
/* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold z-10 ring-4 ring-background", children: item.year || i + 1 }),
|
|
487
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 pb-2 pt-1", children: [
|
|
488
|
+
item.title && /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", children: item.title }),
|
|
489
|
+
item.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: item.description })
|
|
490
|
+
] })
|
|
491
|
+
] }, i)) })
|
|
492
|
+
] })
|
|
493
|
+
] }) });
|
|
494
|
+
}
|
|
495
|
+
function PricingCardBlock({ block }) {
|
|
496
|
+
const d = getData(block);
|
|
497
|
+
const features = Array.isArray(d.features) ? d.features : [];
|
|
498
|
+
const featured = Boolean(d.featured);
|
|
499
|
+
return /* @__PURE__ */ jsxs("div", { className: `relative flex flex-col rounded-2xl border p-8 ${featured ? "border-primary bg-primary text-primary-foreground shadow-xl scale-105" : "border-border bg-card"}`, children: [
|
|
500
|
+
featured && /* @__PURE__ */ jsx("span", { className: "absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-primary-foreground text-primary text-xs font-semibold", children: "Most Popular" }),
|
|
501
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-6", children: [
|
|
502
|
+
d.name && /* @__PURE__ */ jsx("h3", { className: `text-xl font-bold ${featured ? "text-primary-foreground" : ""}`, children: d.name }),
|
|
503
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-end gap-1", children: [
|
|
504
|
+
d.price && /* @__PURE__ */ jsx("span", { className: `text-4xl font-extrabold tracking-tight ${featured ? "text-primary-foreground" : ""}`, children: d.price }),
|
|
505
|
+
d.period && /* @__PURE__ */ jsx("span", { className: `text-sm mb-1 ${featured ? "text-primary-foreground/70" : "text-muted-foreground"}`, children: d.period })
|
|
506
|
+
] })
|
|
507
|
+
] }),
|
|
508
|
+
features.length > 0 && /* @__PURE__ */ jsx("ul", { className: "space-y-3 flex-1 mb-8", children: features.map((feat, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
509
|
+
/* @__PURE__ */ jsx("svg", { className: `w-4 h-4 flex-shrink-0 ${featured ? "text-primary-foreground" : "text-primary"}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }),
|
|
510
|
+
/* @__PURE__ */ jsx("span", { className: featured ? "text-primary-foreground/90" : "", children: feat })
|
|
511
|
+
] }, i)) }),
|
|
512
|
+
d.button && /* @__PURE__ */ jsx(
|
|
513
|
+
"a",
|
|
514
|
+
{
|
|
515
|
+
href: d.url || "#",
|
|
516
|
+
className: `block text-center py-2.5 px-6 rounded-lg font-semibold text-sm transition-opacity hover:opacity-90 ${featured ? "bg-primary-foreground text-primary" : "bg-primary text-primary-foreground"}`,
|
|
517
|
+
children: d.button
|
|
518
|
+
}
|
|
519
|
+
)
|
|
520
|
+
] });
|
|
521
|
+
}
|
|
522
|
+
function IconFeatureBlock({ block }) {
|
|
523
|
+
const d = getData(block);
|
|
524
|
+
const iconKey = (d.icon || "zap").toLowerCase();
|
|
525
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4 p-6 rounded-xl border border-border bg-card", children: [
|
|
526
|
+
/* @__PURE__ */ jsx("div", { className: "w-12 h-12 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0", children: FEATURE_ICONS[iconKey] ?? /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "w-6 h-6", children: /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }) }) }),
|
|
527
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
528
|
+
d.title && /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", children: d.title }),
|
|
529
|
+
d.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: d.description })
|
|
530
|
+
] })
|
|
531
|
+
] });
|
|
532
|
+
}
|
|
533
|
+
function FeatureGridBlock({ block }) {
|
|
534
|
+
const d = getData(block);
|
|
535
|
+
const features = Array.isArray(d.features) ? d.features : [];
|
|
536
|
+
const cols = Number(d.columns) || 3;
|
|
537
|
+
const gridCols = cols === 2 ? "sm:grid-cols-2" : cols === 4 ? "sm:grid-cols-2 lg:grid-cols-4" : "sm:grid-cols-2 lg:grid-cols-3";
|
|
538
|
+
return /* @__PURE__ */ jsx("section", { className: "py-12", children: /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto px-4", children: [
|
|
539
|
+
(d.title || d.subtitle) && /* @__PURE__ */ jsxs("div", { className: "text-center mb-10", children: [
|
|
540
|
+
d.title && /* @__PURE__ */ jsx("h2", { className: "text-2xl md:text-3xl font-bold tracking-tight text-balance", children: d.title }),
|
|
541
|
+
d.subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground text-pretty", children: d.subtitle })
|
|
542
|
+
] }),
|
|
543
|
+
features.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-muted-foreground", children: "No features added yet." }) : /* @__PURE__ */ jsx("div", { className: `grid grid-cols-1 gap-6 ${gridCols}`, children: features.map((feat, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 p-6 rounded-xl border border-border bg-card hover:shadow-md transition-shadow", children: [
|
|
544
|
+
feat.icon && /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-lg bg-primary/10 text-primary flex items-center justify-center flex-shrink-0", children: FEATURE_ICONS[feat.icon] ?? /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "w-5 h-5", children: /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }) }) }),
|
|
545
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
546
|
+
feat.title && /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base", children: feat.title }),
|
|
547
|
+
feat.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground mt-1 leading-relaxed prose prose-sm max-w-none", dangerouslySetInnerHTML: { __html: feat.description } })
|
|
548
|
+
] })
|
|
549
|
+
] }, i)) })
|
|
550
|
+
] }) });
|
|
551
|
+
}
|
|
319
552
|
function TwoColumnBlock({ block }) {
|
|
320
553
|
const d = getData(block);
|
|
321
554
|
const imagePos = d.imagePosition === "left" ? "flex-row-reverse" : "flex-row";
|
|
@@ -351,10 +584,15 @@ var BUILT_IN = {
|
|
|
351
584
|
text: (b) => /* @__PURE__ */ jsx(TextBlock, { block: b }),
|
|
352
585
|
richtext: (b) => /* @__PURE__ */ jsx(RichTextBlock, { block: b }),
|
|
353
586
|
image: (b) => /* @__PURE__ */ jsx(ImageBlock, { block: b }),
|
|
587
|
+
button: (b) => /* @__PURE__ */ jsx(ButtonBlock, { block: b }),
|
|
588
|
+
list: (b) => /* @__PURE__ */ jsx(ListBlock, { block: b }),
|
|
589
|
+
gallery: (b) => /* @__PURE__ */ jsx(GalleryBlock, { block: b }),
|
|
590
|
+
"pricing-table": (b) => /* @__PURE__ */ jsx(PricingTableBlock, { block: b }),
|
|
354
591
|
hero: (b) => /* @__PURE__ */ jsx(HeroBlock, { block: b }),
|
|
355
592
|
"hero-section": (b) => /* @__PURE__ */ jsx(HeroBlock, { block: b }),
|
|
356
593
|
cta: (b) => /* @__PURE__ */ jsx(CTABlock, { block: b }),
|
|
357
594
|
faq: (b) => /* @__PURE__ */ jsx(FAQBlock, { block: b }),
|
|
595
|
+
"team-member": (b) => /* @__PURE__ */ jsx(TeamMemberBlock, { block: b }),
|
|
358
596
|
stats: (b) => /* @__PURE__ */ jsx(StatsBlock, { block: b }),
|
|
359
597
|
testimonial: (b) => /* @__PURE__ */ jsx(TestimonialBlock, { block: b }),
|
|
360
598
|
quote: (b) => /* @__PURE__ */ jsx(QuoteBlock, { block: b }),
|
|
@@ -362,6 +600,11 @@ var BUILT_IN = {
|
|
|
362
600
|
divider: () => /* @__PURE__ */ jsx(DividerBlock, {}),
|
|
363
601
|
spacer: (b) => /* @__PURE__ */ jsx(SpacerBlock, { block: b }),
|
|
364
602
|
video: (b) => /* @__PURE__ */ jsx(VideoBlock, { block: b }),
|
|
603
|
+
"card-grid": (b) => /* @__PURE__ */ jsx(CardGridBlock, { block: b }),
|
|
604
|
+
timeline: (b) => /* @__PURE__ */ jsx(TimelineBlock, { block: b }),
|
|
605
|
+
"pricing-card": (b) => /* @__PURE__ */ jsx(PricingCardBlock, { block: b }),
|
|
606
|
+
"icon-feature": (b) => /* @__PURE__ */ jsx(IconFeatureBlock, { block: b }),
|
|
607
|
+
"feature-grid": (b) => /* @__PURE__ */ jsx(FeatureGridBlock, { block: b }),
|
|
365
608
|
"two-column": (b) => /* @__PURE__ */ jsx(TwoColumnBlock, { block: b }),
|
|
366
609
|
"product-list": (b) => /* @__PURE__ */ jsx(ProductListBlock, { block: b })
|
|
367
610
|
};
|