@mission-studio/puck 1.0.21 → 1.0.24
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/Popup-Dg78fu78.d.mts +260 -0
- package/dist/Popup-L7kcJo05.d.ts +260 -0
- package/dist/ResponsiveToggleField-65CqZEK-.d.mts +10 -0
- package/dist/ResponsiveToggleField-QCve94L_.d.ts +10 -0
- package/dist/chunk-MYS3PLMF.mjs +463 -0
- package/dist/chunk-TRPKXVMO.mjs +695 -0
- package/dist/{chunk-MWW5LYLN.mjs → chunk-YIPEC4L4.mjs} +709 -1075
- package/dist/components/page/astro/index.d.mts +54 -0
- package/dist/components/page/astro/index.d.ts +54 -0
- package/dist/components/page/astro/index.js +2056 -0
- package/dist/components/page/astro/index.mjs +51 -0
- package/dist/config/server.js +630 -700
- package/dist/config/server.mjs +33 -83
- package/dist/config-entry.js +592 -478
- package/dist/config-entry.mjs +11 -11
- package/dist/{ResponsiveToggleField-CfBKL5oY.d.ts → defaults-j55hBQHu.d.mts} +2 -8
- package/dist/{ResponsiveToggleField-BihXsGIJ.d.mts → defaults-z8Ft2j5r.d.ts} +2 -8
- package/dist/editor.d.mts +5 -4
- package/dist/editor.d.ts +5 -4
- package/dist/index.d.mts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +388 -274
- package/dist/index.mjs +11 -11
- package/dist/renderer.d.mts +9 -250
- package/dist/renderer.d.ts +9 -250
- package/dist/renderer.js +388 -274
- package/dist/renderer.mjs +11 -11
- package/dist/resolve/index.d.mts +1 -1
- package/dist/resolve/index.d.ts +1 -1
- package/dist/{types-D-CIduaE.d.mts → types-HQ6hIbYr.d.mts} +1 -1
- package/dist/{types-D-CIduaE.d.ts → types-HQ6hIbYr.d.ts} +1 -1
- package/package.json +6 -1
- package/dist/chunk-WFLVAZV2.mjs +0 -142
package/dist/config/server.js
CHANGED
|
@@ -146,181 +146,7 @@ function Paragraph({
|
|
|
146
146
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { id, style, children: resolvedText });
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
//
|
|
150
|
-
var import_react = require("react");
|
|
151
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
152
|
-
var EntriesContext = (0, import_react.createContext)(null);
|
|
153
|
-
function useEntries() {
|
|
154
|
-
const context = (0, import_react.useContext)(EntriesContext);
|
|
155
|
-
if (!context) {
|
|
156
|
-
return {
|
|
157
|
-
entries: [],
|
|
158
|
-
entryNames: [],
|
|
159
|
-
getEntry: () => void 0,
|
|
160
|
-
getEntryValue: () => void 0
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
return context;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// hooks/useGtmEvent.ts
|
|
167
|
-
function useGtmEvent() {
|
|
168
|
-
return (eventName, data) => {
|
|
169
|
-
if (typeof window === "undefined") return;
|
|
170
|
-
if (typeof window.gtag === "function") {
|
|
171
|
-
window.gtag("event", eventName, data || {});
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// hooks/useUtmParams.ts
|
|
177
|
-
var import_react2 = require("react");
|
|
178
|
-
function useUtmParams() {
|
|
179
|
-
const [utmParams, setUtmParams] = (0, import_react2.useState)({});
|
|
180
|
-
(0, import_react2.useEffect)(() => {
|
|
181
|
-
if (typeof window === "undefined") return;
|
|
182
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
183
|
-
const source = urlParams.get("utm_source");
|
|
184
|
-
const medium = urlParams.get("utm_medium");
|
|
185
|
-
const campaign = urlParams.get("utm_campaign");
|
|
186
|
-
const content = urlParams.get("utm_content");
|
|
187
|
-
const term = urlParams.get("utm_term");
|
|
188
|
-
const params = {};
|
|
189
|
-
if (source) {
|
|
190
|
-
params.source = source;
|
|
191
|
-
sessionStorage.setItem("utm_source", source);
|
|
192
|
-
} else {
|
|
193
|
-
const stored = sessionStorage.getItem("utm_source");
|
|
194
|
-
if (stored) params.source = stored;
|
|
195
|
-
}
|
|
196
|
-
if (medium) {
|
|
197
|
-
params.medium = medium;
|
|
198
|
-
sessionStorage.setItem("utm_medium", medium);
|
|
199
|
-
} else {
|
|
200
|
-
const stored = sessionStorage.getItem("utm_medium");
|
|
201
|
-
if (stored) params.medium = stored;
|
|
202
|
-
}
|
|
203
|
-
if (campaign) {
|
|
204
|
-
params.campaign = campaign;
|
|
205
|
-
sessionStorage.setItem("utm_campaign", campaign);
|
|
206
|
-
} else {
|
|
207
|
-
const stored = sessionStorage.getItem("utm_campaign");
|
|
208
|
-
if (stored) params.campaign = stored;
|
|
209
|
-
}
|
|
210
|
-
if (content) {
|
|
211
|
-
params.content = content;
|
|
212
|
-
sessionStorage.setItem("utm_content", content);
|
|
213
|
-
} else {
|
|
214
|
-
const stored = sessionStorage.getItem("utm_content");
|
|
215
|
-
if (stored) params.content = stored;
|
|
216
|
-
}
|
|
217
|
-
if (term) {
|
|
218
|
-
params.term = term;
|
|
219
|
-
sessionStorage.setItem("utm_term", term);
|
|
220
|
-
} else {
|
|
221
|
-
const stored = sessionStorage.getItem("utm_term");
|
|
222
|
-
if (stored) params.term = stored;
|
|
223
|
-
}
|
|
224
|
-
setUtmParams(params);
|
|
225
|
-
}, []);
|
|
226
|
-
return utmParams;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// theme/context.tsx
|
|
230
|
-
var import_react3 = require("react");
|
|
231
|
-
|
|
232
|
-
// theme/defaults.ts
|
|
233
|
-
var DEFAULT_THEME = {
|
|
234
|
-
id: "default",
|
|
235
|
-
name: "Default Theme",
|
|
236
|
-
colors: {
|
|
237
|
-
primary: { color: "#3B82F6", opacity: 100 },
|
|
238
|
-
secondary: { color: "#8B5CF6", opacity: 100 },
|
|
239
|
-
accent: { color: "#10B981", opacity: 100 },
|
|
240
|
-
background: { color: "#FFFFFF", opacity: 100 },
|
|
241
|
-
foreground: { color: "#111827", opacity: 100 },
|
|
242
|
-
muted: { color: "#F3F4F6", opacity: 100 }
|
|
243
|
-
},
|
|
244
|
-
typography: {
|
|
245
|
-
fontFamily: {
|
|
246
|
-
heading: "system-ui, sans-serif",
|
|
247
|
-
body: "system-ui, sans-serif"
|
|
248
|
-
},
|
|
249
|
-
fontSize: {
|
|
250
|
-
base: "base",
|
|
251
|
-
heading: "4xl"
|
|
252
|
-
},
|
|
253
|
-
fontWeight: {
|
|
254
|
-
normal: 400,
|
|
255
|
-
heading: 700
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
spacing: {
|
|
259
|
-
xs: 8,
|
|
260
|
-
sm: 12,
|
|
261
|
-
md: 16,
|
|
262
|
-
lg: 24,
|
|
263
|
-
xl: 32
|
|
264
|
-
},
|
|
265
|
-
borders: {
|
|
266
|
-
radiusSmall: 4,
|
|
267
|
-
radiusMedium: 8,
|
|
268
|
-
radiusLarge: 16
|
|
269
|
-
},
|
|
270
|
-
shadows: {
|
|
271
|
-
small: "sm",
|
|
272
|
-
medium: "md",
|
|
273
|
-
large: "lg"
|
|
274
|
-
}
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
// theme/context.tsx
|
|
278
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
279
|
-
var ThemeContext = (0, import_react3.createContext)(null);
|
|
280
|
-
function useTheme() {
|
|
281
|
-
const context = (0, import_react3.useContext)(ThemeContext);
|
|
282
|
-
if (!context) {
|
|
283
|
-
return {
|
|
284
|
-
theme: DEFAULT_THEME,
|
|
285
|
-
resolveColor: (key) => DEFAULT_THEME.colors[key],
|
|
286
|
-
resolveSpacing: (key) => DEFAULT_THEME.spacing[key],
|
|
287
|
-
resolveBorderRadius: (key) => DEFAULT_THEME.borders[key],
|
|
288
|
-
resolveShadow: (key) => DEFAULT_THEME.shadows[key]
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
return context;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// utils/index.ts
|
|
295
|
-
var import_tailwind_merge = require("tailwind-merge");
|
|
296
|
-
var import_clsx = require("clsx");
|
|
297
|
-
function hexToRgba(hex, opacity) {
|
|
298
|
-
if (hex.startsWith("rgba(")) {
|
|
299
|
-
const rgbaMatch = hex.match(
|
|
300
|
-
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/
|
|
301
|
-
);
|
|
302
|
-
if (rgbaMatch) {
|
|
303
|
-
return `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, ${opacity / 100})`;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
if (hex.startsWith("rgb(")) {
|
|
307
|
-
const rgbMatch = hex.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
308
|
-
if (rgbMatch) {
|
|
309
|
-
return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${opacity / 100})`;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
const sanitized = hex.replace("#", "");
|
|
313
|
-
const r = parseInt(sanitized.slice(0, 2), 16);
|
|
314
|
-
const g = parseInt(sanitized.slice(2, 4), 16);
|
|
315
|
-
const b = parseInt(sanitized.slice(4, 6), 16);
|
|
316
|
-
return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
|
|
317
|
-
}
|
|
318
|
-
function cn(...inputs) {
|
|
319
|
-
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
// components/page/Button.tsx
|
|
323
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
149
|
+
// components/page/primitives/Button.ts
|
|
324
150
|
var sizeStyles = {
|
|
325
151
|
sm: { padding: "8px 16px", fontSize: "0.875rem" },
|
|
326
152
|
md: { padding: "12px 24px", fontSize: "1rem" },
|
|
@@ -334,75 +160,8 @@ var radiusMap = {
|
|
|
334
160
|
lg: "16px",
|
|
335
161
|
full: "9999px"
|
|
336
162
|
};
|
|
337
|
-
function
|
|
338
|
-
return
|
|
339
|
-
}
|
|
340
|
-
function isEntryBoundValue(value) {
|
|
341
|
-
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
342
|
-
}
|
|
343
|
-
function Button({
|
|
344
|
-
text,
|
|
345
|
-
href,
|
|
346
|
-
target = "_self",
|
|
347
|
-
variant = "solid",
|
|
348
|
-
size = "md",
|
|
349
|
-
color,
|
|
350
|
-
textColor,
|
|
351
|
-
borderRadius = "md",
|
|
352
|
-
fullWidth = false,
|
|
353
|
-
align = "center",
|
|
354
|
-
id
|
|
355
|
-
}) {
|
|
356
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
357
|
-
const { getEntryValue } = useEntries();
|
|
358
|
-
const utm = useUtmParams();
|
|
359
|
-
const sendEvent = useGtmEvent();
|
|
360
|
-
const resolvedText = (() => {
|
|
361
|
-
if (!text) return "Button";
|
|
362
|
-
if (typeof text === "string") return text;
|
|
363
|
-
if (isEntryBoundValue(text)) {
|
|
364
|
-
if (text.useEntry) {
|
|
365
|
-
return String(getEntryValue(text.entryName, text.fieldKey) ?? "Button");
|
|
366
|
-
}
|
|
367
|
-
return text.value;
|
|
368
|
-
}
|
|
369
|
-
return "Button";
|
|
370
|
-
})();
|
|
371
|
-
const handleClick = () => {
|
|
372
|
-
const sessionId = typeof window !== "undefined" ? sessionStorage.getItem("session_id") : null;
|
|
373
|
-
sendEvent("button_click", {
|
|
374
|
-
text: resolvedText,
|
|
375
|
-
href: href || void 0,
|
|
376
|
-
variant,
|
|
377
|
-
session_id: sessionId,
|
|
378
|
-
...utm
|
|
379
|
-
});
|
|
380
|
-
};
|
|
381
|
-
const resolvedColor = (() => {
|
|
382
|
-
if (!color) return resolveColor2("primary");
|
|
383
|
-
if (typeof color === "string") return { color, opacity: 100 };
|
|
384
|
-
if (isThemeableValue(color)) {
|
|
385
|
-
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
386
|
-
}
|
|
387
|
-
if ("color" in color) return color;
|
|
388
|
-
return resolveColor2("primary");
|
|
389
|
-
})();
|
|
390
|
-
const resolvedTextColor = (() => {
|
|
391
|
-
if (!textColor) {
|
|
392
|
-
if (variant === "solid") return { color: "#FFFFFF", opacity: 100 };
|
|
393
|
-
return resolvedColor;
|
|
394
|
-
}
|
|
395
|
-
if (typeof textColor === "string")
|
|
396
|
-
return { color: textColor, opacity: 100 };
|
|
397
|
-
if (isThemeableValue(textColor)) {
|
|
398
|
-
return textColor.useTheme ? resolveColor2(textColor.themeKey) : textColor.value;
|
|
399
|
-
}
|
|
400
|
-
if ("color" in textColor) return textColor;
|
|
401
|
-
return { color: "#FFFFFF", opacity: 100 };
|
|
402
|
-
})();
|
|
403
|
-
const bgColor = hexToRgba(resolvedColor.color, resolvedColor.opacity);
|
|
404
|
-
const fgColor = hexToRgba(resolvedTextColor.color, resolvedTextColor.opacity);
|
|
405
|
-
const baseStyle = {
|
|
163
|
+
function getBaseStyle(size, borderRadius, fullWidth) {
|
|
164
|
+
return {
|
|
406
165
|
...sizeStyles[size],
|
|
407
166
|
borderRadius: radiusMap[borderRadius],
|
|
408
167
|
fontWeight: 600,
|
|
@@ -415,6 +174,8 @@ function Button({
|
|
|
415
174
|
width: fullWidth ? "100%" : "auto",
|
|
416
175
|
border: "none"
|
|
417
176
|
};
|
|
177
|
+
}
|
|
178
|
+
function getVariantStyles(variant, bgColor, fgColor) {
|
|
418
179
|
const variantStyles = {
|
|
419
180
|
solid: {
|
|
420
181
|
backgroundColor: bgColor,
|
|
@@ -436,14 +197,45 @@ function Button({
|
|
|
436
197
|
textDecoration: "underline"
|
|
437
198
|
}
|
|
438
199
|
};
|
|
439
|
-
|
|
440
|
-
|
|
200
|
+
return variantStyles[variant] || variantStyles.solid;
|
|
201
|
+
}
|
|
202
|
+
function getWrapperStyle(align) {
|
|
203
|
+
return {
|
|
441
204
|
display: "flex",
|
|
442
205
|
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
443
206
|
};
|
|
444
|
-
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// components/page/astro/Button.tsx
|
|
210
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
211
|
+
function Button({
|
|
212
|
+
text,
|
|
213
|
+
href,
|
|
214
|
+
target = "_self",
|
|
215
|
+
variant = "solid",
|
|
216
|
+
size = "md",
|
|
217
|
+
color,
|
|
218
|
+
textColor,
|
|
219
|
+
borderRadius = "md",
|
|
220
|
+
fullWidth = false,
|
|
221
|
+
align = "center",
|
|
222
|
+
id
|
|
223
|
+
}) {
|
|
224
|
+
const resolvedText = typeof text === "string" ? text : "Button";
|
|
225
|
+
const bgColor = typeof color === "string" ? color : "rgba(99, 102, 241, 1)";
|
|
226
|
+
const fgColor = typeof textColor === "string" ? textColor : variant === "solid" ? "rgba(255, 255, 255, 1)" : bgColor;
|
|
227
|
+
const baseStyle = getBaseStyle(size, borderRadius, fullWidth);
|
|
228
|
+
const variantStyle = getVariantStyles(variant, bgColor, fgColor);
|
|
229
|
+
const style = { ...baseStyle, ...variantStyle };
|
|
230
|
+
const wrapperStyle = getWrapperStyle(align);
|
|
231
|
+
const dataAttrs = {
|
|
232
|
+
"data-gtm-event": "button_click",
|
|
233
|
+
"data-gtm-text": resolvedText,
|
|
234
|
+
"data-gtm-href": href || "",
|
|
235
|
+
"data-gtm-variant": variant
|
|
236
|
+
};
|
|
445
237
|
if (href) {
|
|
446
|
-
return /* @__PURE__ */ (0,
|
|
238
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
447
239
|
"a",
|
|
448
240
|
{
|
|
449
241
|
id,
|
|
@@ -451,16 +243,15 @@ function Button({
|
|
|
451
243
|
target,
|
|
452
244
|
style,
|
|
453
245
|
rel: target === "_blank" ? "noopener noreferrer" : void 0,
|
|
454
|
-
|
|
246
|
+
...dataAttrs,
|
|
455
247
|
children: resolvedText
|
|
456
248
|
}
|
|
457
249
|
) });
|
|
458
250
|
}
|
|
459
|
-
return /* @__PURE__ */ (0,
|
|
251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { id, type: "button", style, ...dataAttrs, children: resolvedText }) });
|
|
460
252
|
}
|
|
461
253
|
|
|
462
|
-
// components/page/Image.
|
|
463
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
254
|
+
// components/page/primitives/Image.ts
|
|
464
255
|
var widthMap = {
|
|
465
256
|
auto: "auto",
|
|
466
257
|
full: "100%",
|
|
@@ -491,66 +282,16 @@ var shadowMap = {
|
|
|
491
282
|
lg: "0 10px 15px rgba(0,0,0,0.1)",
|
|
492
283
|
xl: "0 20px 25px rgba(0,0,0,0.15)"
|
|
493
284
|
};
|
|
494
|
-
function
|
|
495
|
-
return
|
|
496
|
-
}
|
|
497
|
-
function isEntryBoundValue2(value) {
|
|
498
|
-
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
499
|
-
}
|
|
500
|
-
function Image({
|
|
501
|
-
src,
|
|
502
|
-
alt = "",
|
|
503
|
-
width = "full",
|
|
504
|
-
aspectRatio = "auto",
|
|
505
|
-
objectFit = "cover",
|
|
506
|
-
borderRadius = "none",
|
|
507
|
-
shadow = "none",
|
|
508
|
-
align = "center",
|
|
509
|
-
caption,
|
|
510
|
-
captionColor,
|
|
511
|
-
id
|
|
512
|
-
}) {
|
|
513
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
514
|
-
const { getEntryValue } = useEntries();
|
|
515
|
-
const resolvedSrc = (() => {
|
|
516
|
-
if (!src) return "";
|
|
517
|
-
if (typeof src === "string") return src;
|
|
518
|
-
if (isEntryBoundValue2(src)) {
|
|
519
|
-
if (src.useEntry) {
|
|
520
|
-
return String(getEntryValue(src.entryName, src.fieldKey) ?? "");
|
|
521
|
-
}
|
|
522
|
-
return src.value;
|
|
523
|
-
}
|
|
524
|
-
return "";
|
|
525
|
-
})();
|
|
526
|
-
const resolvedCaption = (() => {
|
|
527
|
-
if (!caption) return "";
|
|
528
|
-
if (typeof caption === "string") return caption;
|
|
529
|
-
if (isEntryBoundValue2(caption)) {
|
|
530
|
-
if (caption.useEntry) {
|
|
531
|
-
return String(getEntryValue(caption.entryName, caption.fieldKey) ?? "");
|
|
532
|
-
}
|
|
533
|
-
return caption.value;
|
|
534
|
-
}
|
|
535
|
-
return "";
|
|
536
|
-
})();
|
|
537
|
-
const resolvedCaptionColor = (() => {
|
|
538
|
-
if (!captionColor) return resolveColor2("muted");
|
|
539
|
-
if (typeof captionColor === "string")
|
|
540
|
-
return { color: captionColor, opacity: 100 };
|
|
541
|
-
if (isThemeableValue2(captionColor)) {
|
|
542
|
-
return captionColor.useTheme ? resolveColor2(captionColor.themeKey) : captionColor.value;
|
|
543
|
-
}
|
|
544
|
-
if ("color" in captionColor) return captionColor;
|
|
545
|
-
return resolveColor2("muted");
|
|
546
|
-
})();
|
|
547
|
-
const wrapperStyle = {
|
|
285
|
+
function getWrapperStyle2(align) {
|
|
286
|
+
return {
|
|
548
287
|
display: "flex",
|
|
549
288
|
flexDirection: "column",
|
|
550
289
|
alignItems: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
|
|
551
290
|
gap: "8px"
|
|
552
291
|
};
|
|
553
|
-
|
|
292
|
+
}
|
|
293
|
+
function getImageStyle(width, aspectRatio, objectFit, borderRadius, shadow) {
|
|
294
|
+
return {
|
|
554
295
|
width: widthMap[width],
|
|
555
296
|
maxWidth: "100%",
|
|
556
297
|
aspectRatio: aspectRatioMap[aspectRatio],
|
|
@@ -559,18 +300,49 @@ function Image({
|
|
|
559
300
|
boxShadow: shadowMap[shadow],
|
|
560
301
|
display: "block"
|
|
561
302
|
};
|
|
562
|
-
|
|
303
|
+
}
|
|
304
|
+
function getCaptionStyle(align, width, captionColor) {
|
|
305
|
+
return {
|
|
563
306
|
fontSize: "0.875rem",
|
|
564
|
-
color:
|
|
307
|
+
color: captionColor,
|
|
565
308
|
textAlign: align,
|
|
566
309
|
maxWidth: widthMap[width]
|
|
567
310
|
};
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// components/page/astro/Image.tsx
|
|
314
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
315
|
+
function Image({
|
|
316
|
+
src,
|
|
317
|
+
alt = "",
|
|
318
|
+
width = "full",
|
|
319
|
+
aspectRatio = "auto",
|
|
320
|
+
objectFit = "cover",
|
|
321
|
+
borderRadius = "none",
|
|
322
|
+
shadow = "none",
|
|
323
|
+
align = "center",
|
|
324
|
+
caption,
|
|
325
|
+
captionColor,
|
|
326
|
+
id
|
|
327
|
+
}) {
|
|
328
|
+
const resolvedSrc = typeof src === "string" ? src : "";
|
|
329
|
+
const resolvedCaption = typeof caption === "string" ? caption : "";
|
|
330
|
+
const resolvedCaptionColorStr = typeof captionColor === "string" ? captionColor : "rgba(107, 114, 128, 1)";
|
|
331
|
+
const wrapperStyle = getWrapperStyle2(align);
|
|
332
|
+
const imageStyle2 = getImageStyle(
|
|
333
|
+
width,
|
|
334
|
+
aspectRatio,
|
|
335
|
+
objectFit,
|
|
336
|
+
borderRadius,
|
|
337
|
+
shadow
|
|
338
|
+
);
|
|
339
|
+
const captionStyle = getCaptionStyle(align, width, resolvedCaptionColorStr);
|
|
568
340
|
if (!resolvedSrc) {
|
|
569
|
-
return /* @__PURE__ */ (0,
|
|
341
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
570
342
|
"div",
|
|
571
343
|
{
|
|
572
344
|
style: {
|
|
573
|
-
...
|
|
345
|
+
...imageStyle2,
|
|
574
346
|
backgroundColor: "#e5e7eb",
|
|
575
347
|
display: "flex",
|
|
576
348
|
alignItems: "center",
|
|
@@ -582,15 +354,16 @@ function Image({
|
|
|
582
354
|
}
|
|
583
355
|
) });
|
|
584
356
|
}
|
|
585
|
-
return /* @__PURE__ */ (0,
|
|
586
|
-
/* @__PURE__ */ (0,
|
|
587
|
-
resolvedCaption && /* @__PURE__ */ (0,
|
|
357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("figure", { id, style: { ...wrapperStyle, margin: 0 }, children: [
|
|
358
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: resolvedSrc, alt, style: imageStyle2, loading: "lazy" }),
|
|
359
|
+
resolvedCaption && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("figcaption", { style: captionStyle, children: resolvedCaption })
|
|
588
360
|
] });
|
|
589
361
|
}
|
|
590
362
|
|
|
591
|
-
// components/page/ImageCarousel.tsx
|
|
592
|
-
var
|
|
593
|
-
|
|
363
|
+
// components/page/astro/ImageCarousel.tsx
|
|
364
|
+
var import_react = require("react");
|
|
365
|
+
|
|
366
|
+
// components/page/primitives/ImageCarousel.ts
|
|
594
367
|
var aspectRatioMap2 = {
|
|
595
368
|
"16:9": "16 / 9",
|
|
596
369
|
"4:3": "4 / 3",
|
|
@@ -603,115 +376,38 @@ var radiusMap3 = {
|
|
|
603
376
|
md: "8px",
|
|
604
377
|
lg: "16px"
|
|
605
378
|
};
|
|
606
|
-
function
|
|
607
|
-
return
|
|
608
|
-
}
|
|
609
|
-
function ImageCarousel({
|
|
610
|
-
images = [],
|
|
611
|
-
aspectRatio = "16:9",
|
|
612
|
-
borderRadius = "none",
|
|
613
|
-
showDots = true,
|
|
614
|
-
showArrows = true,
|
|
615
|
-
arrowColor,
|
|
616
|
-
dotColor,
|
|
617
|
-
id
|
|
618
|
-
}) {
|
|
619
|
-
const [currentIndex, setCurrentIndex] = (0, import_react4.useState)(0);
|
|
620
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
621
|
-
const utm = useUtmParams();
|
|
622
|
-
const sendEvent = useGtmEvent();
|
|
623
|
-
const resolvedArrowColor = (() => {
|
|
624
|
-
if (!arrowColor) return { color: "#FFFFFF", opacity: 100 };
|
|
625
|
-
if (typeof arrowColor === "string")
|
|
626
|
-
return { color: arrowColor, opacity: 100 };
|
|
627
|
-
if (isThemeableValue3(arrowColor)) {
|
|
628
|
-
return arrowColor.useTheme ? resolveColor2(arrowColor.themeKey) : arrowColor.value;
|
|
629
|
-
}
|
|
630
|
-
if ("color" in arrowColor) return arrowColor;
|
|
631
|
-
return { color: "#FFFFFF", opacity: 100 };
|
|
632
|
-
})();
|
|
633
|
-
const resolvedDotColor = (() => {
|
|
634
|
-
if (!dotColor) return resolveColor2("primary");
|
|
635
|
-
if (typeof dotColor === "string") return { color: dotColor, opacity: 100 };
|
|
636
|
-
if (isThemeableValue3(dotColor)) {
|
|
637
|
-
return dotColor.useTheme ? resolveColor2(dotColor.themeKey) : dotColor.value;
|
|
638
|
-
}
|
|
639
|
-
if ("color" in dotColor) return dotColor;
|
|
640
|
-
return resolveColor2("primary");
|
|
641
|
-
})();
|
|
642
|
-
const goToPrevious = () => {
|
|
643
|
-
const newIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1;
|
|
644
|
-
setCurrentIndex(newIndex);
|
|
645
|
-
sendEvent("carousel_navigate", {
|
|
646
|
-
direction: "previous",
|
|
647
|
-
slideIndex: newIndex,
|
|
648
|
-
totalSlides: images.length,
|
|
649
|
-
...utm
|
|
650
|
-
});
|
|
651
|
-
};
|
|
652
|
-
const goToNext = () => {
|
|
653
|
-
const newIndex = currentIndex === images.length - 1 ? 0 : currentIndex + 1;
|
|
654
|
-
setCurrentIndex(newIndex);
|
|
655
|
-
sendEvent("carousel_navigate", {
|
|
656
|
-
direction: "next",
|
|
657
|
-
slideIndex: newIndex,
|
|
658
|
-
totalSlides: images.length,
|
|
659
|
-
...utm
|
|
660
|
-
});
|
|
661
|
-
};
|
|
662
|
-
const goToSlide = (index) => {
|
|
663
|
-
setCurrentIndex(index);
|
|
664
|
-
sendEvent("carousel_navigate", {
|
|
665
|
-
direction: "direct",
|
|
666
|
-
slideIndex: index,
|
|
667
|
-
totalSlides: images.length,
|
|
668
|
-
...utm
|
|
669
|
-
});
|
|
670
|
-
};
|
|
671
|
-
if (images.length === 0) {
|
|
672
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
673
|
-
"div",
|
|
674
|
-
{
|
|
675
|
-
style: {
|
|
676
|
-
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
677
|
-
backgroundColor: "#e5e7eb",
|
|
678
|
-
borderRadius: radiusMap3[borderRadius],
|
|
679
|
-
display: "flex",
|
|
680
|
-
alignItems: "center",
|
|
681
|
-
justifyContent: "center",
|
|
682
|
-
color: "#9ca3af"
|
|
683
|
-
},
|
|
684
|
-
children: "No images"
|
|
685
|
-
}
|
|
686
|
-
);
|
|
687
|
-
}
|
|
688
|
-
const containerStyle = {
|
|
379
|
+
function getContainerStyle(aspectRatio, borderRadius) {
|
|
380
|
+
return {
|
|
689
381
|
position: "relative",
|
|
690
382
|
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
691
383
|
borderRadius: radiusMap3[borderRadius],
|
|
692
384
|
overflow: "hidden"
|
|
693
385
|
};
|
|
694
|
-
|
|
386
|
+
}
|
|
387
|
+
function getSlideContainerStyle(currentIndex) {
|
|
388
|
+
return {
|
|
695
389
|
display: "flex",
|
|
696
390
|
transition: "transform 0.3s ease-in-out",
|
|
697
391
|
transform: `translateX(-${currentIndex * 100}%)`,
|
|
698
392
|
height: "100%"
|
|
699
393
|
};
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
394
|
+
}
|
|
395
|
+
var slideStyle = {
|
|
396
|
+
minWidth: "100%",
|
|
397
|
+
height: "100%"
|
|
398
|
+
};
|
|
399
|
+
var imageStyle = {
|
|
400
|
+
width: "100%",
|
|
401
|
+
height: "100%",
|
|
402
|
+
objectFit: "cover"
|
|
403
|
+
};
|
|
404
|
+
function getArrowStyle(arrowColor) {
|
|
405
|
+
return {
|
|
710
406
|
position: "absolute",
|
|
711
407
|
top: "50%",
|
|
712
408
|
transform: "translateY(-50%)",
|
|
713
409
|
backgroundColor: "rgba(0,0,0,0.5)",
|
|
714
|
-
color:
|
|
410
|
+
color: arrowColor,
|
|
715
411
|
border: "none",
|
|
716
412
|
borderRadius: "50%",
|
|
717
413
|
width: "40px",
|
|
@@ -723,25 +419,102 @@ function ImageCarousel({
|
|
|
723
419
|
fontSize: "20px",
|
|
724
420
|
zIndex: 1
|
|
725
421
|
};
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
422
|
+
}
|
|
423
|
+
var dotsContainerStyle = {
|
|
424
|
+
position: "absolute",
|
|
425
|
+
bottom: "16px",
|
|
426
|
+
left: "50%",
|
|
427
|
+
transform: "translateX(-50%)",
|
|
428
|
+
display: "flex",
|
|
429
|
+
gap: "8px",
|
|
430
|
+
zIndex: 1
|
|
431
|
+
};
|
|
432
|
+
function getDotStyle(isActive, dotColor) {
|
|
433
|
+
return {
|
|
736
434
|
width: "10px",
|
|
737
435
|
height: "10px",
|
|
738
436
|
borderRadius: "50%",
|
|
739
437
|
border: "none",
|
|
740
438
|
cursor: "pointer",
|
|
741
|
-
backgroundColor: isActive ?
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
|
|
439
|
+
backgroundColor: isActive ? dotColor : "rgba(255,255,255,0.5)"
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
function getEmptyState(aspectRatio, borderRadius) {
|
|
443
|
+
return {
|
|
444
|
+
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
445
|
+
backgroundColor: "#e5e7eb",
|
|
446
|
+
borderRadius: radiusMap3[borderRadius],
|
|
447
|
+
display: "flex",
|
|
448
|
+
alignItems: "center",
|
|
449
|
+
justifyContent: "center",
|
|
450
|
+
color: "#9ca3af"
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// components/page/astro/ImageCarousel.tsx
|
|
455
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
456
|
+
function ImageCarousel({
|
|
457
|
+
images = [],
|
|
458
|
+
aspectRatio = "16:9",
|
|
459
|
+
borderRadius = "none",
|
|
460
|
+
showDots = true,
|
|
461
|
+
showArrows = true,
|
|
462
|
+
arrowColor,
|
|
463
|
+
dotColor,
|
|
464
|
+
id
|
|
465
|
+
}) {
|
|
466
|
+
const [currentIndex, setCurrentIndex] = (0, import_react.useState)(0);
|
|
467
|
+
const arrowColorStr = typeof arrowColor === "string" ? arrowColor : "rgba(255, 255, 255, 1)";
|
|
468
|
+
const dotColorStr = typeof dotColor === "string" ? dotColor : "rgba(99, 102, 241, 1)";
|
|
469
|
+
const goToPrevious = () => {
|
|
470
|
+
const newIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1;
|
|
471
|
+
setCurrentIndex(newIndex);
|
|
472
|
+
if (typeof window !== "undefined") {
|
|
473
|
+
window.dispatchEvent(
|
|
474
|
+
new CustomEvent("carousel_navigate", {
|
|
475
|
+
detail: {
|
|
476
|
+
direction: "previous",
|
|
477
|
+
slideIndex: newIndex,
|
|
478
|
+
totalSlides: images.length
|
|
479
|
+
}
|
|
480
|
+
})
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
const goToNext = () => {
|
|
485
|
+
const newIndex = currentIndex === images.length - 1 ? 0 : currentIndex + 1;
|
|
486
|
+
setCurrentIndex(newIndex);
|
|
487
|
+
if (typeof window !== "undefined") {
|
|
488
|
+
window.dispatchEvent(
|
|
489
|
+
new CustomEvent("carousel_navigate", {
|
|
490
|
+
detail: {
|
|
491
|
+
direction: "next",
|
|
492
|
+
slideIndex: newIndex,
|
|
493
|
+
totalSlides: images.length
|
|
494
|
+
}
|
|
495
|
+
})
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
const goToSlide = (index) => {
|
|
500
|
+
setCurrentIndex(index);
|
|
501
|
+
if (typeof window !== "undefined") {
|
|
502
|
+
window.dispatchEvent(
|
|
503
|
+
new CustomEvent("carousel_navigate", {
|
|
504
|
+
detail: {
|
|
505
|
+
direction: "direct",
|
|
506
|
+
slideIndex: index,
|
|
507
|
+
totalSlides: images.length
|
|
508
|
+
}
|
|
509
|
+
})
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
if (images.length === 0) {
|
|
514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: getEmptyState(aspectRatio, borderRadius), children: "No images" });
|
|
515
|
+
}
|
|
516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { id, style: getContainerStyle(aspectRatio, borderRadius), children: [
|
|
517
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: getSlideContainerStyle(currentIndex), children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: slideStyle, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
745
518
|
"img",
|
|
746
519
|
{
|
|
747
520
|
src: image.src,
|
|
@@ -750,34 +523,34 @@ function ImageCarousel({
|
|
|
750
523
|
loading: "lazy"
|
|
751
524
|
}
|
|
752
525
|
) }, index)) }),
|
|
753
|
-
showArrows && images.length > 1 && /* @__PURE__ */ (0,
|
|
754
|
-
/* @__PURE__ */ (0,
|
|
526
|
+
showArrows && images.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
527
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
755
528
|
"button",
|
|
756
529
|
{
|
|
757
530
|
type: "button",
|
|
758
531
|
onClick: goToPrevious,
|
|
759
|
-
style: { ...
|
|
532
|
+
style: { ...getArrowStyle(arrowColorStr), left: "16px" },
|
|
760
533
|
"aria-label": "Previous slide",
|
|
761
534
|
children: "\u2039"
|
|
762
535
|
}
|
|
763
536
|
),
|
|
764
|
-
/* @__PURE__ */ (0,
|
|
537
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
765
538
|
"button",
|
|
766
539
|
{
|
|
767
540
|
type: "button",
|
|
768
541
|
onClick: goToNext,
|
|
769
|
-
style: { ...
|
|
542
|
+
style: { ...getArrowStyle(arrowColorStr), right: "16px" },
|
|
770
543
|
"aria-label": "Next slide",
|
|
771
544
|
children: "\u203A"
|
|
772
545
|
}
|
|
773
546
|
)
|
|
774
547
|
] }),
|
|
775
|
-
showDots && images.length > 1 && /* @__PURE__ */ (0,
|
|
548
|
+
showDots && images.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: dotsContainerStyle, children: images.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
776
549
|
"button",
|
|
777
550
|
{
|
|
778
551
|
type: "button",
|
|
779
552
|
onClick: () => goToSlide(index),
|
|
780
|
-
style:
|
|
553
|
+
style: getDotStyle(index === currentIndex, dotColorStr),
|
|
781
554
|
"aria-label": `Go to slide ${index + 1}`
|
|
782
555
|
},
|
|
783
556
|
index
|
|
@@ -785,8 +558,25 @@ function ImageCarousel({
|
|
|
785
558
|
] });
|
|
786
559
|
}
|
|
787
560
|
|
|
561
|
+
// entries/context.tsx
|
|
562
|
+
var import_react2 = require("react");
|
|
563
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
564
|
+
var EntriesContext = (0, import_react2.createContext)(null);
|
|
565
|
+
function useEntries() {
|
|
566
|
+
const context = (0, import_react2.useContext)(EntriesContext);
|
|
567
|
+
if (!context) {
|
|
568
|
+
return {
|
|
569
|
+
entries: [],
|
|
570
|
+
entryNames: [],
|
|
571
|
+
getEntry: () => void 0,
|
|
572
|
+
getEntryValue: () => void 0
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
return context;
|
|
576
|
+
}
|
|
577
|
+
|
|
788
578
|
// components/page/VideoEmbed.tsx
|
|
789
|
-
var
|
|
579
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
790
580
|
var aspectRatioMap3 = {
|
|
791
581
|
"16:9": "56.25%",
|
|
792
582
|
// 9/16 * 100
|
|
@@ -807,7 +597,7 @@ var maxWidthMap = {
|
|
|
807
597
|
xl: "1000px",
|
|
808
598
|
full: "100%"
|
|
809
599
|
};
|
|
810
|
-
function
|
|
600
|
+
function isEntryBoundValue(value) {
|
|
811
601
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
812
602
|
}
|
|
813
603
|
function parseVideoUrl(url) {
|
|
@@ -844,7 +634,7 @@ function VideoEmbed({
|
|
|
844
634
|
const resolvedUrl = (() => {
|
|
845
635
|
if (!url) return "";
|
|
846
636
|
if (typeof url === "string") return url;
|
|
847
|
-
if (
|
|
637
|
+
if (isEntryBoundValue(url)) {
|
|
848
638
|
if (url.useEntry) {
|
|
849
639
|
return String(getEntryValue(url.entryName, url.fieldKey) ?? "");
|
|
850
640
|
}
|
|
@@ -853,7 +643,7 @@ function VideoEmbed({
|
|
|
853
643
|
return "";
|
|
854
644
|
})();
|
|
855
645
|
if (!resolvedUrl) {
|
|
856
|
-
return /* @__PURE__ */ (0,
|
|
646
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
857
647
|
"div",
|
|
858
648
|
{
|
|
859
649
|
style: {
|
|
@@ -898,7 +688,7 @@ function VideoEmbed({
|
|
|
898
688
|
height: "100%",
|
|
899
689
|
border: "none"
|
|
900
690
|
};
|
|
901
|
-
return /* @__PURE__ */ (0,
|
|
691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: containerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
902
692
|
"iframe",
|
|
903
693
|
{
|
|
904
694
|
src: finalUrl,
|
|
@@ -910,8 +700,8 @@ function VideoEmbed({
|
|
|
910
700
|
) }) });
|
|
911
701
|
}
|
|
912
702
|
|
|
913
|
-
// components/page/Icon.tsx
|
|
914
|
-
var
|
|
703
|
+
// components/page/primitives/Icon.tsx
|
|
704
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
915
705
|
var sizeMap = {
|
|
916
706
|
sm: { size: "16px", strokeWidth: 2 },
|
|
917
707
|
md: { size: "24px", strokeWidth: 2 },
|
|
@@ -920,7 +710,7 @@ var sizeMap = {
|
|
|
920
710
|
"2xl": { size: "64px", strokeWidth: 1.5 }
|
|
921
711
|
};
|
|
922
712
|
var icons = {
|
|
923
|
-
check: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
713
|
+
check: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
924
714
|
"svg",
|
|
925
715
|
{
|
|
926
716
|
width: size,
|
|
@@ -931,10 +721,10 @@ var icons = {
|
|
|
931
721
|
strokeWidth,
|
|
932
722
|
strokeLinecap: "round",
|
|
933
723
|
strokeLinejoin: "round",
|
|
934
|
-
children: /* @__PURE__ */ (0,
|
|
724
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "20 6 9 17 4 12" })
|
|
935
725
|
}
|
|
936
726
|
),
|
|
937
|
-
x: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
727
|
+
x: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
938
728
|
"svg",
|
|
939
729
|
{
|
|
940
730
|
width: size,
|
|
@@ -946,12 +736,12 @@ var icons = {
|
|
|
946
736
|
strokeLinecap: "round",
|
|
947
737
|
strokeLinejoin: "round",
|
|
948
738
|
children: [
|
|
949
|
-
/* @__PURE__ */ (0,
|
|
950
|
-
/* @__PURE__ */ (0,
|
|
739
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
740
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
951
741
|
]
|
|
952
742
|
}
|
|
953
743
|
),
|
|
954
|
-
star: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
744
|
+
star: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
955
745
|
"svg",
|
|
956
746
|
{
|
|
957
747
|
width: size,
|
|
@@ -962,10 +752,10 @@ var icons = {
|
|
|
962
752
|
strokeWidth,
|
|
963
753
|
strokeLinecap: "round",
|
|
964
754
|
strokeLinejoin: "round",
|
|
965
|
-
children: /* @__PURE__ */ (0,
|
|
755
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.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" })
|
|
966
756
|
}
|
|
967
757
|
),
|
|
968
|
-
heart: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
758
|
+
heart: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
969
759
|
"svg",
|
|
970
760
|
{
|
|
971
761
|
width: size,
|
|
@@ -976,10 +766,10 @@ var icons = {
|
|
|
976
766
|
strokeWidth,
|
|
977
767
|
strokeLinecap: "round",
|
|
978
768
|
strokeLinejoin: "round",
|
|
979
|
-
children: /* @__PURE__ */ (0,
|
|
769
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.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" })
|
|
980
770
|
}
|
|
981
771
|
),
|
|
982
|
-
arrowRight: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
772
|
+
arrowRight: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
983
773
|
"svg",
|
|
984
774
|
{
|
|
985
775
|
width: size,
|
|
@@ -991,12 +781,12 @@ var icons = {
|
|
|
991
781
|
strokeLinecap: "round",
|
|
992
782
|
strokeLinejoin: "round",
|
|
993
783
|
children: [
|
|
994
|
-
/* @__PURE__ */ (0,
|
|
995
|
-
/* @__PURE__ */ (0,
|
|
784
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
|
|
785
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "12 5 19 12 12 19" })
|
|
996
786
|
]
|
|
997
787
|
}
|
|
998
788
|
),
|
|
999
|
-
arrowLeft: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
789
|
+
arrowLeft: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1000
790
|
"svg",
|
|
1001
791
|
{
|
|
1002
792
|
width: size,
|
|
@@ -1008,12 +798,12 @@ var icons = {
|
|
|
1008
798
|
strokeLinecap: "round",
|
|
1009
799
|
strokeLinejoin: "round",
|
|
1010
800
|
children: [
|
|
1011
|
-
/* @__PURE__ */ (0,
|
|
1012
|
-
/* @__PURE__ */ (0,
|
|
801
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "19", y1: "12", x2: "5", y2: "12" }),
|
|
802
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "12 19 5 12 12 5" })
|
|
1013
803
|
]
|
|
1014
804
|
}
|
|
1015
805
|
),
|
|
1016
|
-
mail: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
806
|
+
mail: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1017
807
|
"svg",
|
|
1018
808
|
{
|
|
1019
809
|
width: size,
|
|
@@ -1025,12 +815,12 @@ var icons = {
|
|
|
1025
815
|
strokeLinecap: "round",
|
|
1026
816
|
strokeLinejoin: "round",
|
|
1027
817
|
children: [
|
|
1028
|
-
/* @__PURE__ */ (0,
|
|
1029
|
-
/* @__PURE__ */ (0,
|
|
818
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" }),
|
|
819
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "22,6 12,13 2,6" })
|
|
1030
820
|
]
|
|
1031
821
|
}
|
|
1032
822
|
),
|
|
1033
|
-
phone: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
823
|
+
phone: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1034
824
|
"svg",
|
|
1035
825
|
{
|
|
1036
826
|
width: size,
|
|
@@ -1041,10 +831,10 @@ var icons = {
|
|
|
1041
831
|
strokeWidth,
|
|
1042
832
|
strokeLinecap: "round",
|
|
1043
833
|
strokeLinejoin: "round",
|
|
1044
|
-
children: /* @__PURE__ */ (0,
|
|
834
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" })
|
|
1045
835
|
}
|
|
1046
836
|
),
|
|
1047
|
-
mapPin: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
837
|
+
mapPin: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1048
838
|
"svg",
|
|
1049
839
|
{
|
|
1050
840
|
width: size,
|
|
@@ -1056,12 +846,12 @@ var icons = {
|
|
|
1056
846
|
strokeLinecap: "round",
|
|
1057
847
|
strokeLinejoin: "round",
|
|
1058
848
|
children: [
|
|
1059
|
-
/* @__PURE__ */ (0,
|
|
1060
|
-
/* @__PURE__ */ (0,
|
|
849
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z" }),
|
|
850
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("circle", { cx: "12", cy: "10", r: "3" })
|
|
1061
851
|
]
|
|
1062
852
|
}
|
|
1063
853
|
),
|
|
1064
|
-
zap: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
854
|
+
zap: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1065
855
|
"svg",
|
|
1066
856
|
{
|
|
1067
857
|
width: size,
|
|
@@ -1072,10 +862,10 @@ var icons = {
|
|
|
1072
862
|
strokeWidth,
|
|
1073
863
|
strokeLinecap: "round",
|
|
1074
864
|
strokeLinejoin: "round",
|
|
1075
|
-
children: /* @__PURE__ */ (0,
|
|
865
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })
|
|
1076
866
|
}
|
|
1077
867
|
),
|
|
1078
|
-
shield: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
868
|
+
shield: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1079
869
|
"svg",
|
|
1080
870
|
{
|
|
1081
871
|
width: size,
|
|
@@ -1086,10 +876,10 @@ var icons = {
|
|
|
1086
876
|
strokeWidth,
|
|
1087
877
|
strokeLinecap: "round",
|
|
1088
878
|
strokeLinejoin: "round",
|
|
1089
|
-
children: /* @__PURE__ */ (0,
|
|
879
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" })
|
|
1090
880
|
}
|
|
1091
881
|
),
|
|
1092
|
-
users: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0,
|
|
882
|
+
users: ({ size, color, strokeWidth }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1093
883
|
"svg",
|
|
1094
884
|
{
|
|
1095
885
|
width: size,
|
|
@@ -1101,17 +891,24 @@ var icons = {
|
|
|
1101
891
|
strokeLinecap: "round",
|
|
1102
892
|
strokeLinejoin: "round",
|
|
1103
893
|
children: [
|
|
1104
|
-
/* @__PURE__ */ (0,
|
|
1105
|
-
/* @__PURE__ */ (0,
|
|
1106
|
-
/* @__PURE__ */ (0,
|
|
1107
|
-
/* @__PURE__ */ (0,
|
|
894
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }),
|
|
895
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("circle", { cx: "9", cy: "7", r: "4" }),
|
|
896
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M23 21v-2a4 4 0 0 0-3-3.87" }),
|
|
897
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
1108
898
|
]
|
|
1109
899
|
}
|
|
1110
900
|
)
|
|
1111
901
|
};
|
|
1112
|
-
function
|
|
1113
|
-
return
|
|
902
|
+
function getWrapperStyle3(align) {
|
|
903
|
+
return {
|
|
904
|
+
display: "flex",
|
|
905
|
+
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
906
|
+
};
|
|
1114
907
|
}
|
|
908
|
+
var availableIcons = Object.keys(icons);
|
|
909
|
+
|
|
910
|
+
// components/page/astro/Icon.tsx
|
|
911
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1115
912
|
function Icon({
|
|
1116
913
|
name = "check",
|
|
1117
914
|
size = "md",
|
|
@@ -1119,23 +916,10 @@ function Icon({
|
|
|
1119
916
|
align = "center",
|
|
1120
917
|
id
|
|
1121
918
|
}) {
|
|
1122
|
-
const
|
|
1123
|
-
const resolvedColor = (() => {
|
|
1124
|
-
if (!color) return resolveColor2("primary");
|
|
1125
|
-
if (typeof color === "string") return { color, opacity: 100 };
|
|
1126
|
-
if (isThemeableValue4(color)) {
|
|
1127
|
-
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
1128
|
-
}
|
|
1129
|
-
if ("color" in color) return color;
|
|
1130
|
-
return resolveColor2("primary");
|
|
1131
|
-
})();
|
|
919
|
+
const colorValue = typeof color === "string" ? color : "rgba(99, 102, 241, 1)";
|
|
1132
920
|
const IconComponent = icons[name.toLowerCase()] || icons.check;
|
|
1133
921
|
const { size: iconSize, strokeWidth } = sizeMap[size];
|
|
1134
|
-
const
|
|
1135
|
-
const wrapperStyle = {
|
|
1136
|
-
display: "flex",
|
|
1137
|
-
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
1138
|
-
};
|
|
922
|
+
const wrapperStyle = getWrapperStyle3(align);
|
|
1139
923
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1140
924
|
IconComponent,
|
|
1141
925
|
{
|
|
@@ -1145,7 +929,34 @@ function Icon({
|
|
|
1145
929
|
}
|
|
1146
930
|
) });
|
|
1147
931
|
}
|
|
1148
|
-
|
|
932
|
+
|
|
933
|
+
// utils/index.ts
|
|
934
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
935
|
+
var import_clsx = require("clsx");
|
|
936
|
+
function hexToRgba(hex, opacity) {
|
|
937
|
+
if (hex.startsWith("rgba(")) {
|
|
938
|
+
const rgbaMatch = hex.match(
|
|
939
|
+
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/
|
|
940
|
+
);
|
|
941
|
+
if (rgbaMatch) {
|
|
942
|
+
return `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, ${opacity / 100})`;
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
if (hex.startsWith("rgb(")) {
|
|
946
|
+
const rgbMatch = hex.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
947
|
+
if (rgbMatch) {
|
|
948
|
+
return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${opacity / 100})`;
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
const sanitized = hex.replace("#", "");
|
|
952
|
+
const r = parseInt(sanitized.slice(0, 2), 16);
|
|
953
|
+
const g = parseInt(sanitized.slice(2, 4), 16);
|
|
954
|
+
const b = parseInt(sanitized.slice(4, 6), 16);
|
|
955
|
+
return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
|
|
956
|
+
}
|
|
957
|
+
function cn(...inputs) {
|
|
958
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
959
|
+
}
|
|
1149
960
|
|
|
1150
961
|
// design-system/shadows.ts
|
|
1151
962
|
var shadowPresets = [
|
|
@@ -1183,26 +994,7 @@ var getShadowCSS = (value) => {
|
|
|
1183
994
|
return preset?.css ?? "none";
|
|
1184
995
|
};
|
|
1185
996
|
|
|
1186
|
-
// components/page/Section.
|
|
1187
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1188
|
-
function isThemeableValue5(value) {
|
|
1189
|
-
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1190
|
-
}
|
|
1191
|
-
function resolveBackgroundColor(bg, resolveColor2) {
|
|
1192
|
-
if (!bg) return void 0;
|
|
1193
|
-
if (typeof bg === "string") return bg;
|
|
1194
|
-
if (isThemeableValue5(bg)) {
|
|
1195
|
-
if (bg.useTheme) {
|
|
1196
|
-
const themeColor = resolveColor2(bg.themeKey);
|
|
1197
|
-
return hexToRgba(themeColor.color, themeColor.opacity);
|
|
1198
|
-
}
|
|
1199
|
-
return hexToRgba(bg.value.color, bg.value.opacity);
|
|
1200
|
-
}
|
|
1201
|
-
if ("color" in bg && "opacity" in bg) {
|
|
1202
|
-
return hexToRgba(bg.color, bg.opacity);
|
|
1203
|
-
}
|
|
1204
|
-
return void 0;
|
|
1205
|
-
}
|
|
997
|
+
// components/page/primitives/Section.ts
|
|
1206
998
|
function getVisibilityClasses(visibility) {
|
|
1207
999
|
if (!visibility) return "";
|
|
1208
1000
|
if (!visibility.mobile && !visibility.desktop) {
|
|
@@ -1216,6 +1008,20 @@ function getVisibilityClasses(visibility) {
|
|
|
1216
1008
|
}
|
|
1217
1009
|
return "";
|
|
1218
1010
|
}
|
|
1011
|
+
function getSectionStyle(verticalPadding, horizontalPadding, gap, backgroundColor, backgroundImage, shadow, borderRadius) {
|
|
1012
|
+
return {
|
|
1013
|
+
padding: `${verticalPadding}px ${horizontalPadding}px`,
|
|
1014
|
+
gap: `${gap}px`,
|
|
1015
|
+
backgroundColor,
|
|
1016
|
+
backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
|
|
1017
|
+
backgroundSize: "cover",
|
|
1018
|
+
backgroundPosition: "center",
|
|
1019
|
+
borderRadius: `${borderRadius}px`
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
// components/page/astro/Section.tsx
|
|
1024
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1219
1025
|
function Section({
|
|
1220
1026
|
children: _children,
|
|
1221
1027
|
verticalPadding = 48,
|
|
@@ -1230,30 +1036,32 @@ function Section({
|
|
|
1230
1036
|
visibility,
|
|
1231
1037
|
puck
|
|
1232
1038
|
}) {
|
|
1233
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
1234
1039
|
const DropZone = puck?.renderDropZone;
|
|
1040
|
+
const bgColor = typeof backgroundColor === "string" ? backgroundColor : void 0;
|
|
1041
|
+
const style = {
|
|
1042
|
+
...getSectionStyle(
|
|
1043
|
+
verticalPadding,
|
|
1044
|
+
horizontalPadding,
|
|
1045
|
+
gap,
|
|
1046
|
+
bgColor,
|
|
1047
|
+
backgroundImage,
|
|
1048
|
+
shadow,
|
|
1049
|
+
borderRadius
|
|
1050
|
+
),
|
|
1051
|
+
boxShadow: getShadowCSS(shadow)
|
|
1052
|
+
};
|
|
1235
1053
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1236
1054
|
"section",
|
|
1237
1055
|
{
|
|
1238
1056
|
id: anchorLink,
|
|
1239
1057
|
className: cn("flex w-full flex-col", getVisibilityClasses(visibility)),
|
|
1240
|
-
style
|
|
1241
|
-
padding: `${verticalPadding}px ${horizontalPadding}px`,
|
|
1242
|
-
gap: `${gap}px`,
|
|
1243
|
-
backgroundColor: resolveBackgroundColor(backgroundColor, resolveColor2),
|
|
1244
|
-
backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
|
|
1245
|
-
backgroundSize: "cover",
|
|
1246
|
-
backgroundPosition: "center",
|
|
1247
|
-
boxShadow: getShadowCSS(shadow),
|
|
1248
|
-
borderRadius: `${borderRadius}px`
|
|
1249
|
-
},
|
|
1058
|
+
style,
|
|
1250
1059
|
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "mx-auto w-full", style: { maxWidth: contentMaxWidth }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropZone, { zone: "content" }) })
|
|
1251
1060
|
}
|
|
1252
1061
|
);
|
|
1253
1062
|
}
|
|
1254
1063
|
|
|
1255
|
-
// components/page/Container.
|
|
1256
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1064
|
+
// components/page/primitives/Container.ts
|
|
1257
1065
|
var maxWidthMap2 = {
|
|
1258
1066
|
sm: "640px",
|
|
1259
1067
|
md: "768px",
|
|
@@ -1269,9 +1077,22 @@ var paddingMap = {
|
|
|
1269
1077
|
lg: "32px",
|
|
1270
1078
|
xl: "48px"
|
|
1271
1079
|
};
|
|
1272
|
-
function
|
|
1273
|
-
return
|
|
1080
|
+
function getContainerStyle2(maxWidth, paddingX, paddingY, centered, backgroundColor) {
|
|
1081
|
+
return {
|
|
1082
|
+
maxWidth: maxWidthMap2[maxWidth],
|
|
1083
|
+
marginLeft: centered ? "auto" : void 0,
|
|
1084
|
+
marginRight: centered ? "auto" : void 0,
|
|
1085
|
+
paddingLeft: paddingMap[paddingX],
|
|
1086
|
+
paddingRight: paddingMap[paddingX],
|
|
1087
|
+
paddingTop: paddingMap[paddingY],
|
|
1088
|
+
paddingBottom: paddingMap[paddingY],
|
|
1089
|
+
backgroundColor,
|
|
1090
|
+
width: "100%"
|
|
1091
|
+
};
|
|
1274
1092
|
}
|
|
1093
|
+
|
|
1094
|
+
// components/page/astro/Container.tsx
|
|
1095
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1275
1096
|
function Container({
|
|
1276
1097
|
maxWidth = "lg",
|
|
1277
1098
|
padding,
|
|
@@ -1282,36 +1103,21 @@ function Container({
|
|
|
1282
1103
|
id,
|
|
1283
1104
|
puck
|
|
1284
1105
|
}) {
|
|
1285
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
1286
1106
|
const DropZone = puck?.renderDropZone;
|
|
1287
|
-
const
|
|
1288
|
-
if (!backgroundColor) return null;
|
|
1289
|
-
if (typeof backgroundColor === "string")
|
|
1290
|
-
return { color: backgroundColor, opacity: 100 };
|
|
1291
|
-
if (isThemeableValue6(backgroundColor)) {
|
|
1292
|
-
return backgroundColor.useTheme ? resolveColor2(backgroundColor.themeKey) : backgroundColor.value;
|
|
1293
|
-
}
|
|
1294
|
-
if ("color" in backgroundColor) return backgroundColor;
|
|
1295
|
-
return null;
|
|
1296
|
-
})();
|
|
1107
|
+
const bgColor = typeof backgroundColor === "string" ? backgroundColor : void 0;
|
|
1297
1108
|
const effectivePaddingX = padding || paddingX;
|
|
1298
1109
|
const effectivePaddingY = padding || paddingY;
|
|
1299
|
-
const style =
|
|
1300
|
-
maxWidth
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
paddingBottom: paddingMap[effectivePaddingY],
|
|
1307
|
-
backgroundColor: resolvedBgColor ? hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity) : void 0,
|
|
1308
|
-
width: "100%"
|
|
1309
|
-
};
|
|
1110
|
+
const style = getContainerStyle2(
|
|
1111
|
+
maxWidth,
|
|
1112
|
+
effectivePaddingX,
|
|
1113
|
+
effectivePaddingY,
|
|
1114
|
+
centered,
|
|
1115
|
+
bgColor
|
|
1116
|
+
);
|
|
1310
1117
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropZone, { zone: "container-content" }) });
|
|
1311
1118
|
}
|
|
1312
1119
|
|
|
1313
|
-
// components/page/Columns.
|
|
1314
|
-
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1120
|
+
// components/page/primitives/Columns.ts
|
|
1315
1121
|
var gapMap = {
|
|
1316
1122
|
none: "0",
|
|
1317
1123
|
sm: "16px",
|
|
@@ -1325,6 +1131,17 @@ var alignMap = {
|
|
|
1325
1131
|
bottom: "flex-end",
|
|
1326
1132
|
stretch: "stretch"
|
|
1327
1133
|
};
|
|
1134
|
+
function getContainerStyle3(columns, gap, verticalAlign) {
|
|
1135
|
+
return {
|
|
1136
|
+
display: "grid",
|
|
1137
|
+
gridTemplateColumns: `repeat(${columns}, 1fr)`,
|
|
1138
|
+
gap: gapMap[gap],
|
|
1139
|
+
alignItems: alignMap[verticalAlign]
|
|
1140
|
+
};
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
// components/page/astro/Columns.tsx
|
|
1144
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1328
1145
|
function Columns({
|
|
1329
1146
|
columns = 2,
|
|
1330
1147
|
gap = "md",
|
|
@@ -1334,17 +1151,11 @@ function Columns({
|
|
|
1334
1151
|
puck
|
|
1335
1152
|
}) {
|
|
1336
1153
|
const DropZone = puck?.renderDropZone;
|
|
1337
|
-
const containerStyle =
|
|
1338
|
-
display: "grid",
|
|
1339
|
-
gridTemplateColumns: `repeat(${columns}, 1fr)`,
|
|
1340
|
-
gap: gapMap[gap],
|
|
1341
|
-
alignItems: alignMap[verticalAlign]
|
|
1342
|
-
};
|
|
1154
|
+
const containerStyle = getContainerStyle3(columns, gap, verticalAlign);
|
|
1343
1155
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id, style: containerStyle, children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { minWidth: 0 }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropZone, { zone: `column-${index}` }) }, index)) });
|
|
1344
1156
|
}
|
|
1345
1157
|
|
|
1346
|
-
// components/page/Card.
|
|
1347
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1158
|
+
// components/page/primitives/Card.ts
|
|
1348
1159
|
var borderWidthMap = {
|
|
1349
1160
|
none: "0",
|
|
1350
1161
|
thin: "1px",
|
|
@@ -1372,9 +1183,18 @@ var paddingMap2 = {
|
|
|
1372
1183
|
lg: "32px",
|
|
1373
1184
|
xl: "48px"
|
|
1374
1185
|
};
|
|
1375
|
-
function
|
|
1376
|
-
return
|
|
1186
|
+
function getCardStyle(backgroundColor, borderColor, borderWidth, borderRadius, shadow, padding) {
|
|
1187
|
+
return {
|
|
1188
|
+
backgroundColor,
|
|
1189
|
+
border: borderWidth !== "none" ? `${borderWidthMap[borderWidth]} solid ${borderColor}` : "none",
|
|
1190
|
+
borderRadius: radiusMap5[borderRadius],
|
|
1191
|
+
boxShadow: shadowMap2[shadow],
|
|
1192
|
+
padding: paddingMap2[padding]
|
|
1193
|
+
};
|
|
1377
1194
|
}
|
|
1195
|
+
|
|
1196
|
+
// components/page/astro/Card.tsx
|
|
1197
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1378
1198
|
function Card({
|
|
1379
1199
|
backgroundColor,
|
|
1380
1200
|
borderColor,
|
|
@@ -1385,40 +1205,21 @@ function Card({
|
|
|
1385
1205
|
id,
|
|
1386
1206
|
puck
|
|
1387
1207
|
}) {
|
|
1388
|
-
const { resolveColor: resolveColor2 } = useTheme();
|
|
1389
1208
|
const DropZone = puck?.renderDropZone;
|
|
1390
|
-
const
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
const resolvedBorderColor = (() => {
|
|
1401
|
-
if (!borderColor) return resolveColor2("muted");
|
|
1402
|
-
if (typeof borderColor === "string")
|
|
1403
|
-
return { color: borderColor, opacity: 100 };
|
|
1404
|
-
if (isThemeableValue7(borderColor)) {
|
|
1405
|
-
return borderColor.useTheme ? resolveColor2(borderColor.themeKey) : borderColor.value;
|
|
1406
|
-
}
|
|
1407
|
-
if ("color" in borderColor) return borderColor;
|
|
1408
|
-
return resolveColor2("muted");
|
|
1409
|
-
})();
|
|
1410
|
-
const style = {
|
|
1411
|
-
backgroundColor: hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity),
|
|
1412
|
-
border: borderWidth !== "none" ? `${borderWidthMap[borderWidth]} solid ${hexToRgba(resolvedBorderColor.color, resolvedBorderColor.opacity)}` : "none",
|
|
1413
|
-
borderRadius: radiusMap5[borderRadius],
|
|
1414
|
-
boxShadow: shadowMap2[shadow],
|
|
1415
|
-
padding: paddingMap2[padding]
|
|
1416
|
-
};
|
|
1209
|
+
const bgColor = typeof backgroundColor === "string" ? backgroundColor : "rgba(255, 255, 255, 1)";
|
|
1210
|
+
const bColor = typeof borderColor === "string" ? borderColor : "rgba(229, 231, 235, 1)";
|
|
1211
|
+
const style = getCardStyle(
|
|
1212
|
+
bgColor,
|
|
1213
|
+
bColor,
|
|
1214
|
+
borderWidth,
|
|
1215
|
+
borderRadius,
|
|
1216
|
+
shadow,
|
|
1217
|
+
padding
|
|
1218
|
+
);
|
|
1417
1219
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: "card-content" }) });
|
|
1418
1220
|
}
|
|
1419
1221
|
|
|
1420
|
-
// components/page/Divider.
|
|
1421
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1222
|
+
// components/page/primitives/Divider.ts
|
|
1422
1223
|
var thicknessMap = {
|
|
1423
1224
|
thin: "1px",
|
|
1424
1225
|
medium: "2px",
|
|
@@ -1436,9 +1237,24 @@ var spacingMap = {
|
|
|
1436
1237
|
lg: "32px",
|
|
1437
1238
|
xl: "48px"
|
|
1438
1239
|
};
|
|
1439
|
-
function
|
|
1440
|
-
return
|
|
1240
|
+
function getWrapperStyle4(align, spacing) {
|
|
1241
|
+
return {
|
|
1242
|
+
display: "flex",
|
|
1243
|
+
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
|
|
1244
|
+
padding: `${spacingMap[spacing]} 0`
|
|
1245
|
+
};
|
|
1246
|
+
}
|
|
1247
|
+
function getHrStyle(width, thickness, lineStyle, color) {
|
|
1248
|
+
return {
|
|
1249
|
+
width: widthMap2[width],
|
|
1250
|
+
border: "none",
|
|
1251
|
+
borderTop: `${thicknessMap[thickness]} ${lineStyle} ${color}`,
|
|
1252
|
+
margin: 0
|
|
1253
|
+
};
|
|
1441
1254
|
}
|
|
1255
|
+
|
|
1256
|
+
// components/page/astro/Divider.tsx
|
|
1257
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1442
1258
|
function Divider({
|
|
1443
1259
|
style: lineStyle = "solid",
|
|
1444
1260
|
thickness = "thin",
|
|
@@ -1448,32 +1264,13 @@ function Divider({
|
|
|
1448
1264
|
spacing = "md",
|
|
1449
1265
|
id
|
|
1450
1266
|
}) {
|
|
1451
|
-
const
|
|
1452
|
-
const
|
|
1453
|
-
|
|
1454
|
-
if (typeof color === "string") return { color, opacity: 100 };
|
|
1455
|
-
if (isThemeableValue8(color)) {
|
|
1456
|
-
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
1457
|
-
}
|
|
1458
|
-
if ("color" in color) return color;
|
|
1459
|
-
return resolveColor2("muted");
|
|
1460
|
-
})();
|
|
1461
|
-
const wrapperStyle = {
|
|
1462
|
-
display: "flex",
|
|
1463
|
-
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
|
|
1464
|
-
padding: `${spacingMap[spacing]} 0`
|
|
1465
|
-
};
|
|
1466
|
-
const hrStyle = {
|
|
1467
|
-
width: widthMap2[width],
|
|
1468
|
-
border: "none",
|
|
1469
|
-
borderTop: `${thicknessMap[thickness]} ${lineStyle} ${hexToRgba(resolvedColor.color, resolvedColor.opacity)}`,
|
|
1470
|
-
margin: 0
|
|
1471
|
-
};
|
|
1267
|
+
const colorValue = typeof color === "string" ? color : "rgba(107, 114, 128, 1)";
|
|
1268
|
+
const wrapperStyle = getWrapperStyle4(align, spacing);
|
|
1269
|
+
const hrStyle = getHrStyle(width, thickness, lineStyle, colorValue);
|
|
1472
1270
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("hr", { style: hrStyle }) });
|
|
1473
1271
|
}
|
|
1474
1272
|
|
|
1475
|
-
// components/page/Spacer.
|
|
1476
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1273
|
+
// components/page/primitives/Spacer.ts
|
|
1477
1274
|
var sizeMap2 = {
|
|
1478
1275
|
xs: "8px",
|
|
1479
1276
|
sm: "16px",
|
|
@@ -1483,6 +1280,9 @@ var sizeMap2 = {
|
|
|
1483
1280
|
"2xl": "64px",
|
|
1484
1281
|
"3xl": "96px"
|
|
1485
1282
|
};
|
|
1283
|
+
|
|
1284
|
+
// components/page/astro/Spacer.tsx
|
|
1285
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1486
1286
|
function Spacer({ size = "md", id }) {
|
|
1487
1287
|
const style = {
|
|
1488
1288
|
height: sizeMap2[size],
|
|
@@ -1491,8 +1291,73 @@ function Spacer({ size = "md", id }) {
|
|
|
1491
1291
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { id, style, "aria-hidden": "true" });
|
|
1492
1292
|
}
|
|
1493
1293
|
|
|
1494
|
-
//
|
|
1294
|
+
// theme/context.tsx
|
|
1295
|
+
var import_react3 = require("react");
|
|
1296
|
+
|
|
1297
|
+
// theme/defaults.ts
|
|
1298
|
+
var DEFAULT_THEME = {
|
|
1299
|
+
id: "default",
|
|
1300
|
+
name: "Default Theme",
|
|
1301
|
+
colors: {
|
|
1302
|
+
primary: { color: "#3B82F6", opacity: 100 },
|
|
1303
|
+
secondary: { color: "#8B5CF6", opacity: 100 },
|
|
1304
|
+
accent: { color: "#10B981", opacity: 100 },
|
|
1305
|
+
background: { color: "#FFFFFF", opacity: 100 },
|
|
1306
|
+
foreground: { color: "#111827", opacity: 100 },
|
|
1307
|
+
muted: { color: "#F3F4F6", opacity: 100 }
|
|
1308
|
+
},
|
|
1309
|
+
typography: {
|
|
1310
|
+
fontFamily: {
|
|
1311
|
+
heading: "system-ui, sans-serif",
|
|
1312
|
+
body: "system-ui, sans-serif"
|
|
1313
|
+
},
|
|
1314
|
+
fontSize: {
|
|
1315
|
+
base: "base",
|
|
1316
|
+
heading: "4xl"
|
|
1317
|
+
},
|
|
1318
|
+
fontWeight: {
|
|
1319
|
+
normal: 400,
|
|
1320
|
+
heading: 700
|
|
1321
|
+
}
|
|
1322
|
+
},
|
|
1323
|
+
spacing: {
|
|
1324
|
+
xs: 8,
|
|
1325
|
+
sm: 12,
|
|
1326
|
+
md: 16,
|
|
1327
|
+
lg: 24,
|
|
1328
|
+
xl: 32
|
|
1329
|
+
},
|
|
1330
|
+
borders: {
|
|
1331
|
+
radiusSmall: 4,
|
|
1332
|
+
radiusMedium: 8,
|
|
1333
|
+
radiusLarge: 16
|
|
1334
|
+
},
|
|
1335
|
+
shadows: {
|
|
1336
|
+
small: "sm",
|
|
1337
|
+
medium: "md",
|
|
1338
|
+
large: "lg"
|
|
1339
|
+
}
|
|
1340
|
+
};
|
|
1341
|
+
|
|
1342
|
+
// theme/context.tsx
|
|
1495
1343
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1344
|
+
var ThemeContext = (0, import_react3.createContext)(null);
|
|
1345
|
+
function useTheme() {
|
|
1346
|
+
const context = (0, import_react3.useContext)(ThemeContext);
|
|
1347
|
+
if (!context) {
|
|
1348
|
+
return {
|
|
1349
|
+
theme: DEFAULT_THEME,
|
|
1350
|
+
resolveColor: (key) => DEFAULT_THEME.colors[key],
|
|
1351
|
+
resolveSpacing: (key) => DEFAULT_THEME.spacing[key],
|
|
1352
|
+
resolveBorderRadius: (key) => DEFAULT_THEME.borders[key],
|
|
1353
|
+
resolveShadow: (key) => DEFAULT_THEME.shadows[key]
|
|
1354
|
+
};
|
|
1355
|
+
}
|
|
1356
|
+
return context;
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
// components/page/TextBlock.tsx
|
|
1360
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1496
1361
|
var alignmentMap = {
|
|
1497
1362
|
left: "text-left",
|
|
1498
1363
|
center: "text-center",
|
|
@@ -1505,16 +1370,16 @@ var sizeMap3 = {
|
|
|
1505
1370
|
large: "text-5xl",
|
|
1506
1371
|
xlarge: "text-6xl"
|
|
1507
1372
|
};
|
|
1508
|
-
function
|
|
1373
|
+
function isThemeableValue(value) {
|
|
1509
1374
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1510
1375
|
}
|
|
1511
|
-
function
|
|
1376
|
+
function isEntryBoundValue2(value) {
|
|
1512
1377
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
1513
1378
|
}
|
|
1514
1379
|
function resolveColor(color, resolveThemeColor) {
|
|
1515
1380
|
if (!color) return "#000000";
|
|
1516
1381
|
if (typeof color === "string") return color;
|
|
1517
|
-
if (
|
|
1382
|
+
if (isThemeableValue(color)) {
|
|
1518
1383
|
if (color.useTheme) {
|
|
1519
1384
|
const themeColor = resolveThemeColor(color.themeKey);
|
|
1520
1385
|
return hexToRgba(themeColor.color, themeColor.opacity);
|
|
@@ -1529,7 +1394,7 @@ function resolveColor(color, resolveThemeColor) {
|
|
|
1529
1394
|
function resolveColorHex(color, resolveThemeColor) {
|
|
1530
1395
|
if (!color) return "#000000";
|
|
1531
1396
|
if (typeof color === "string") return color;
|
|
1532
|
-
if (
|
|
1397
|
+
if (isThemeableValue(color)) {
|
|
1533
1398
|
if (color.useTheme) {
|
|
1534
1399
|
return resolveThemeColor(color.themeKey).color;
|
|
1535
1400
|
}
|
|
@@ -1558,7 +1423,7 @@ function TextBlock({
|
|
|
1558
1423
|
const resolveText = (value) => {
|
|
1559
1424
|
if (!value) return void 0;
|
|
1560
1425
|
if (typeof value === "string") return value;
|
|
1561
|
-
if (
|
|
1426
|
+
if (isEntryBoundValue2(value)) {
|
|
1562
1427
|
if (value.useEntry) {
|
|
1563
1428
|
const entryVal = getEntryValue(value.entryName, value.fieldKey);
|
|
1564
1429
|
return entryVal != null ? String(entryVal) : void 0;
|
|
@@ -1578,13 +1443,13 @@ function TextBlock({
|
|
|
1578
1443
|
WebkitTextFillColor: "transparent",
|
|
1579
1444
|
backgroundClip: "text"
|
|
1580
1445
|
} : { color: titleColorValue };
|
|
1581
|
-
return /* @__PURE__ */ (0,
|
|
1446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1582
1447
|
"div",
|
|
1583
1448
|
{
|
|
1584
1449
|
id: anchorLink,
|
|
1585
1450
|
className: cn("flex flex-col gap-4", alignmentMap[alignment]),
|
|
1586
1451
|
children: [
|
|
1587
|
-
resolvedTitle && /* @__PURE__ */ (0,
|
|
1452
|
+
resolvedTitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1588
1453
|
"h2",
|
|
1589
1454
|
{
|
|
1590
1455
|
className: cn("font-bold", sizeMap3[textSize]),
|
|
@@ -1592,8 +1457,8 @@ function TextBlock({
|
|
|
1592
1457
|
children: resolvedTitle
|
|
1593
1458
|
}
|
|
1594
1459
|
),
|
|
1595
|
-
resolvedSubtitle && /* @__PURE__ */ (0,
|
|
1596
|
-
resolvedBody && /* @__PURE__ */ (0,
|
|
1460
|
+
resolvedSubtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xl", style: { color: subtitleColorValue }, children: resolvedSubtitle }),
|
|
1461
|
+
resolvedBody && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1597
1462
|
"div",
|
|
1598
1463
|
{
|
|
1599
1464
|
className: "prose max-w-none",
|
|
@@ -1607,7 +1472,7 @@ function TextBlock({
|
|
|
1607
1472
|
}
|
|
1608
1473
|
|
|
1609
1474
|
// components/page/CustomImage.tsx
|
|
1610
|
-
var
|
|
1475
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1611
1476
|
var alignmentMap2 = {
|
|
1612
1477
|
left: "mr-auto",
|
|
1613
1478
|
center: "mx-auto",
|
|
@@ -1621,9 +1486,9 @@ function CustomImage({
|
|
|
1621
1486
|
fitContent = false
|
|
1622
1487
|
}) {
|
|
1623
1488
|
if (!image) {
|
|
1624
|
-
return /* @__PURE__ */ (0,
|
|
1489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex h-48 w-full items-center justify-center bg-gray-200 text-gray-400", children: "No image" });
|
|
1625
1490
|
}
|
|
1626
|
-
return /* @__PURE__ */ (0,
|
|
1491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1627
1492
|
"img",
|
|
1628
1493
|
{
|
|
1629
1494
|
src: image,
|
|
@@ -1640,7 +1505,7 @@ function CustomImage({
|
|
|
1640
1505
|
|
|
1641
1506
|
// components/page/FeaturesList.tsx
|
|
1642
1507
|
var import_lucide_react = require("lucide-react");
|
|
1643
|
-
var
|
|
1508
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1644
1509
|
var sizeMap4 = {
|
|
1645
1510
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1646
1511
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
@@ -1658,7 +1523,7 @@ function FeaturesList({
|
|
|
1658
1523
|
const formatted = iconName.charAt(0).toUpperCase() + iconName.slice(1);
|
|
1659
1524
|
return import_lucide_react.icons[formatted] || null;
|
|
1660
1525
|
};
|
|
1661
|
-
return /* @__PURE__ */ (0,
|
|
1526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1662
1527
|
"div",
|
|
1663
1528
|
{
|
|
1664
1529
|
id: anchorLink,
|
|
@@ -1669,7 +1534,7 @@ function FeaturesList({
|
|
|
1669
1534
|
),
|
|
1670
1535
|
children: features.map((feature, index) => {
|
|
1671
1536
|
const IconComponent = feature.icon ? getIcon(feature.icon) : null;
|
|
1672
|
-
return /* @__PURE__ */ (0,
|
|
1537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1673
1538
|
"div",
|
|
1674
1539
|
{
|
|
1675
1540
|
className: cn(
|
|
@@ -1678,7 +1543,7 @@ function FeaturesList({
|
|
|
1678
1543
|
align === "right" && "flex-row-reverse"
|
|
1679
1544
|
),
|
|
1680
1545
|
children: [
|
|
1681
|
-
feature.image ? /* @__PURE__ */ (0,
|
|
1546
|
+
feature.image ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1682
1547
|
"img",
|
|
1683
1548
|
{
|
|
1684
1549
|
src: feature.image,
|
|
@@ -1686,7 +1551,7 @@ function FeaturesList({
|
|
|
1686
1551
|
className: "object-contain",
|
|
1687
1552
|
style: { width: sizeConfig.icon, height: sizeConfig.icon }
|
|
1688
1553
|
}
|
|
1689
|
-
) : IconComponent ? /* @__PURE__ */ (0,
|
|
1554
|
+
) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1690
1555
|
IconComponent,
|
|
1691
1556
|
{
|
|
1692
1557
|
size: sizeConfig.icon,
|
|
@@ -1694,9 +1559,9 @@ function FeaturesList({
|
|
|
1694
1559
|
className: "flex-shrink-0"
|
|
1695
1560
|
}
|
|
1696
1561
|
) : null,
|
|
1697
|
-
/* @__PURE__ */ (0,
|
|
1698
|
-
feature.title && /* @__PURE__ */ (0,
|
|
1699
|
-
feature.description && /* @__PURE__ */ (0,
|
|
1562
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
1563
|
+
feature.title && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h3", { className: cn("font-semibold", sizeConfig.title), children: feature.title }),
|
|
1564
|
+
feature.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
|
|
1700
1565
|
] })
|
|
1701
1566
|
]
|
|
1702
1567
|
},
|
|
@@ -1709,7 +1574,7 @@ function FeaturesList({
|
|
|
1709
1574
|
|
|
1710
1575
|
// components/page/FeatureGrid.tsx
|
|
1711
1576
|
var import_lucide_react2 = require("lucide-react");
|
|
1712
|
-
var
|
|
1577
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1713
1578
|
var sizeMap5 = {
|
|
1714
1579
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1715
1580
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
@@ -1736,8 +1601,8 @@ function FeatureGrid({
|
|
|
1736
1601
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
|
|
1737
1602
|
4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
|
|
1738
1603
|
};
|
|
1739
|
-
return /* @__PURE__ */ (0,
|
|
1740
|
-
(heading || description) && /* @__PURE__ */ (0,
|
|
1604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { id: anchorLink, className: "flex flex-col gap-8", children: [
|
|
1605
|
+
(heading || description) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1741
1606
|
"div",
|
|
1742
1607
|
{
|
|
1743
1608
|
className: cn(
|
|
@@ -1746,14 +1611,14 @@ function FeatureGrid({
|
|
|
1746
1611
|
align === "right" && "text-right"
|
|
1747
1612
|
),
|
|
1748
1613
|
children: [
|
|
1749
|
-
heading && /* @__PURE__ */ (0,
|
|
1750
|
-
description && /* @__PURE__ */ (0,
|
|
1614
|
+
heading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h2", { className: "text-3xl font-bold", style: { color: textColor }, children: heading }),
|
|
1615
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-gray-600", children: description })
|
|
1751
1616
|
]
|
|
1752
1617
|
}
|
|
1753
1618
|
),
|
|
1754
|
-
/* @__PURE__ */ (0,
|
|
1619
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("grid gap-6", columnClass[columns]), children: features.map((feature, index) => {
|
|
1755
1620
|
const IconComponent = feature.icon ? getIcon(feature.icon) : null;
|
|
1756
|
-
return /* @__PURE__ */ (0,
|
|
1621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1757
1622
|
"div",
|
|
1758
1623
|
{
|
|
1759
1624
|
className: cn(
|
|
@@ -1761,7 +1626,7 @@ function FeatureGrid({
|
|
|
1761
1626
|
align === "center" && "items-center text-center"
|
|
1762
1627
|
),
|
|
1763
1628
|
children: [
|
|
1764
|
-
feature.image ? /* @__PURE__ */ (0,
|
|
1629
|
+
feature.image ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1765
1630
|
"img",
|
|
1766
1631
|
{
|
|
1767
1632
|
src: feature.image,
|
|
@@ -1769,14 +1634,14 @@ function FeatureGrid({
|
|
|
1769
1634
|
className: "object-contain",
|
|
1770
1635
|
style: { width: sizeConfig.icon, height: sizeConfig.icon }
|
|
1771
1636
|
}
|
|
1772
|
-
) : IconComponent ? /* @__PURE__ */ (0,
|
|
1637
|
+
) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1773
1638
|
IconComponent,
|
|
1774
1639
|
{
|
|
1775
1640
|
size: sizeConfig.icon,
|
|
1776
1641
|
style: { color: iconColor }
|
|
1777
1642
|
}
|
|
1778
1643
|
) : null,
|
|
1779
|
-
feature.title && /* @__PURE__ */ (0,
|
|
1644
|
+
feature.title && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1780
1645
|
"h3",
|
|
1781
1646
|
{
|
|
1782
1647
|
className: cn("font-semibold", sizeConfig.title),
|
|
@@ -1784,7 +1649,7 @@ function FeatureGrid({
|
|
|
1784
1649
|
children: feature.title
|
|
1785
1650
|
}
|
|
1786
1651
|
),
|
|
1787
|
-
feature.description && /* @__PURE__ */ (0,
|
|
1652
|
+
feature.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
|
|
1788
1653
|
]
|
|
1789
1654
|
},
|
|
1790
1655
|
index
|
|
@@ -1795,7 +1660,72 @@ function FeatureGrid({
|
|
|
1795
1660
|
|
|
1796
1661
|
// components/page/Footer.tsx
|
|
1797
1662
|
var import_lucide_react3 = require("lucide-react");
|
|
1798
|
-
|
|
1663
|
+
|
|
1664
|
+
// hooks/useGtmEvent.ts
|
|
1665
|
+
function useGtmEvent() {
|
|
1666
|
+
return (eventName, data) => {
|
|
1667
|
+
if (typeof window === "undefined") return;
|
|
1668
|
+
if (typeof window.gtag === "function") {
|
|
1669
|
+
window.gtag("event", eventName, data || {});
|
|
1670
|
+
}
|
|
1671
|
+
};
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
// hooks/useUtmParams.ts
|
|
1675
|
+
var import_react4 = require("react");
|
|
1676
|
+
function useUtmParams() {
|
|
1677
|
+
const [utmParams, setUtmParams] = (0, import_react4.useState)({});
|
|
1678
|
+
(0, import_react4.useEffect)(() => {
|
|
1679
|
+
if (typeof window === "undefined") return;
|
|
1680
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
1681
|
+
const source = urlParams.get("utm_source");
|
|
1682
|
+
const medium = urlParams.get("utm_medium");
|
|
1683
|
+
const campaign = urlParams.get("utm_campaign");
|
|
1684
|
+
const content = urlParams.get("utm_content");
|
|
1685
|
+
const term = urlParams.get("utm_term");
|
|
1686
|
+
const params = {};
|
|
1687
|
+
if (source) {
|
|
1688
|
+
params.source = source;
|
|
1689
|
+
sessionStorage.setItem("utm_source", source);
|
|
1690
|
+
} else {
|
|
1691
|
+
const stored = sessionStorage.getItem("utm_source");
|
|
1692
|
+
if (stored) params.source = stored;
|
|
1693
|
+
}
|
|
1694
|
+
if (medium) {
|
|
1695
|
+
params.medium = medium;
|
|
1696
|
+
sessionStorage.setItem("utm_medium", medium);
|
|
1697
|
+
} else {
|
|
1698
|
+
const stored = sessionStorage.getItem("utm_medium");
|
|
1699
|
+
if (stored) params.medium = stored;
|
|
1700
|
+
}
|
|
1701
|
+
if (campaign) {
|
|
1702
|
+
params.campaign = campaign;
|
|
1703
|
+
sessionStorage.setItem("utm_campaign", campaign);
|
|
1704
|
+
} else {
|
|
1705
|
+
const stored = sessionStorage.getItem("utm_campaign");
|
|
1706
|
+
if (stored) params.campaign = stored;
|
|
1707
|
+
}
|
|
1708
|
+
if (content) {
|
|
1709
|
+
params.content = content;
|
|
1710
|
+
sessionStorage.setItem("utm_content", content);
|
|
1711
|
+
} else {
|
|
1712
|
+
const stored = sessionStorage.getItem("utm_content");
|
|
1713
|
+
if (stored) params.content = stored;
|
|
1714
|
+
}
|
|
1715
|
+
if (term) {
|
|
1716
|
+
params.term = term;
|
|
1717
|
+
sessionStorage.setItem("utm_term", term);
|
|
1718
|
+
} else {
|
|
1719
|
+
const stored = sessionStorage.getItem("utm_term");
|
|
1720
|
+
if (stored) params.term = stored;
|
|
1721
|
+
}
|
|
1722
|
+
setUtmParams(params);
|
|
1723
|
+
}, []);
|
|
1724
|
+
return utmParams;
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
// components/page/Footer.tsx
|
|
1728
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1799
1729
|
function Footer({
|
|
1800
1730
|
logo,
|
|
1801
1731
|
copyright = "\xA9 2024 Company. All rights reserved.",
|
|
@@ -1830,15 +1760,15 @@ function Footer({
|
|
|
1830
1760
|
].filter(
|
|
1831
1761
|
(link) => !!link.url
|
|
1832
1762
|
);
|
|
1833
|
-
return /* @__PURE__ */ (0,
|
|
1763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1834
1764
|
"footer",
|
|
1835
1765
|
{
|
|
1836
1766
|
className: "w-full px-6 py-8",
|
|
1837
1767
|
style: { backgroundColor, color: textColor },
|
|
1838
|
-
children: /* @__PURE__ */ (0,
|
|
1839
|
-
/* @__PURE__ */ (0,
|
|
1840
|
-
DropZone && /* @__PURE__ */ (0,
|
|
1841
|
-
/* @__PURE__ */ (0,
|
|
1768
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "mx-auto flex max-w-7xl flex-col items-center justify-between gap-6 md:flex-row", children: [
|
|
1769
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex items-center gap-4", children: logo && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("img", { src: logo, alt: "Logo", className: "h-8" }) }),
|
|
1770
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: "footer-content" }),
|
|
1771
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex items-center gap-4", children: socialLinks.map(({ url, Icon: Icon3 }, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1842
1772
|
"a",
|
|
1843
1773
|
{
|
|
1844
1774
|
href: url,
|
|
@@ -1846,11 +1776,11 @@ function Footer({
|
|
|
1846
1776
|
rel: "noopener noreferrer",
|
|
1847
1777
|
className: "transition-opacity hover:opacity-80",
|
|
1848
1778
|
onClick: () => handleSocialClick(url),
|
|
1849
|
-
children: /* @__PURE__ */ (0,
|
|
1779
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon3, { size: 24, style: { color: textColor } })
|
|
1850
1780
|
},
|
|
1851
1781
|
index
|
|
1852
1782
|
)) }),
|
|
1853
|
-
copyright && /* @__PURE__ */ (0,
|
|
1783
|
+
copyright && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "text-sm opacity-80", children: copyright })
|
|
1854
1784
|
] })
|
|
1855
1785
|
}
|
|
1856
1786
|
);
|
|
@@ -1859,7 +1789,7 @@ function Footer({
|
|
|
1859
1789
|
// components/page/Topbar.tsx
|
|
1860
1790
|
var import_react5 = require("react");
|
|
1861
1791
|
var import_lucide_react4 = require("lucide-react");
|
|
1862
|
-
var
|
|
1792
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1863
1793
|
function Topbar({
|
|
1864
1794
|
logo,
|
|
1865
1795
|
logoUrl = "/",
|
|
@@ -1892,7 +1822,7 @@ function Topbar({
|
|
|
1892
1822
|
const renderLink = (item, index) => {
|
|
1893
1823
|
const className = "hover:opacity-80 transition-opacity";
|
|
1894
1824
|
if (item.linkType === "external") {
|
|
1895
|
-
return /* @__PURE__ */ (0,
|
|
1825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1896
1826
|
"a",
|
|
1897
1827
|
{
|
|
1898
1828
|
href: item.url,
|
|
@@ -1906,7 +1836,7 @@ function Topbar({
|
|
|
1906
1836
|
);
|
|
1907
1837
|
}
|
|
1908
1838
|
if (item.linkType === "scrollTo") {
|
|
1909
|
-
return /* @__PURE__ */ (0,
|
|
1839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1910
1840
|
"a",
|
|
1911
1841
|
{
|
|
1912
1842
|
href: item.url,
|
|
@@ -1917,7 +1847,7 @@ function Topbar({
|
|
|
1917
1847
|
index
|
|
1918
1848
|
);
|
|
1919
1849
|
}
|
|
1920
|
-
return /* @__PURE__ */ (0,
|
|
1850
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1921
1851
|
"a",
|
|
1922
1852
|
{
|
|
1923
1853
|
href: item.url,
|
|
@@ -1928,19 +1858,19 @@ function Topbar({
|
|
|
1928
1858
|
index
|
|
1929
1859
|
);
|
|
1930
1860
|
};
|
|
1931
|
-
return /* @__PURE__ */ (0,
|
|
1861
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1932
1862
|
"nav",
|
|
1933
1863
|
{
|
|
1934
1864
|
className: "sticky top-0 z-50 w-full px-6 py-4",
|
|
1935
1865
|
style: { backgroundColor, color: textColor },
|
|
1936
1866
|
children: [
|
|
1937
|
-
/* @__PURE__ */ (0,
|
|
1867
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1938
1868
|
"div",
|
|
1939
1869
|
{
|
|
1940
1870
|
className: "mx-auto flex items-center justify-between",
|
|
1941
1871
|
style: { maxWidth },
|
|
1942
1872
|
children: [
|
|
1943
|
-
/* @__PURE__ */ (0,
|
|
1873
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1944
1874
|
"a",
|
|
1945
1875
|
{
|
|
1946
1876
|
href: logoUrl,
|
|
@@ -1951,25 +1881,25 @@ function Topbar({
|
|
|
1951
1881
|
linkType: "internal",
|
|
1952
1882
|
...utm
|
|
1953
1883
|
}),
|
|
1954
|
-
children: logo ? /* @__PURE__ */ (0,
|
|
1884
|
+
children: logo ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("img", { src: logo, alt: "Logo", className: "h-8" }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "text-xl font-bold", children: "Logo" })
|
|
1955
1885
|
}
|
|
1956
1886
|
),
|
|
1957
|
-
/* @__PURE__ */ (0,
|
|
1887
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "hidden items-center gap-8 md:flex", children: [
|
|
1958
1888
|
navItems.map(renderLink),
|
|
1959
|
-
DropZone && /* @__PURE__ */ (0,
|
|
1889
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
|
|
1960
1890
|
] }),
|
|
1961
|
-
/* @__PURE__ */ (0,
|
|
1891
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { className: "md:hidden", onClick: handleMobileMenuToggle, children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react4.X, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react4.Menu, { size: 24 }) })
|
|
1962
1892
|
]
|
|
1963
1893
|
}
|
|
1964
1894
|
),
|
|
1965
|
-
mobileMenuOpen && /* @__PURE__ */ (0,
|
|
1895
|
+
mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1966
1896
|
"div",
|
|
1967
1897
|
{
|
|
1968
1898
|
className: "absolute top-full right-0 left-0 flex flex-col gap-4 px-6 py-4 md:hidden",
|
|
1969
1899
|
style: { backgroundColor },
|
|
1970
1900
|
children: [
|
|
1971
1901
|
navItems.map(renderLink),
|
|
1972
|
-
DropZone && /* @__PURE__ */ (0,
|
|
1902
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
|
|
1973
1903
|
]
|
|
1974
1904
|
}
|
|
1975
1905
|
)
|
|
@@ -1981,12 +1911,12 @@ function Topbar({
|
|
|
1981
1911
|
// components/page/Popup.tsx
|
|
1982
1912
|
var import_react6 = require("react");
|
|
1983
1913
|
var import_lucide_react5 = require("lucide-react");
|
|
1984
|
-
var
|
|
1914
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1985
1915
|
function Icon2({ name, ...props }) {
|
|
1986
1916
|
const formatted = name.charAt(0).toUpperCase() + name.slice(1);
|
|
1987
1917
|
const IconComponent = import_lucide_react5.icons[formatted];
|
|
1988
1918
|
if (!IconComponent) return null;
|
|
1989
|
-
return /* @__PURE__ */ (0,
|
|
1919
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(IconComponent, { ...props });
|
|
1990
1920
|
}
|
|
1991
1921
|
var widthMap3 = {
|
|
1992
1922
|
small: "max-w-sm",
|
|
@@ -2024,7 +1954,7 @@ function Popup({
|
|
|
2024
1954
|
setIsOpen(false);
|
|
2025
1955
|
sendEvent("popup_close", { ctaText, ...utm });
|
|
2026
1956
|
};
|
|
2027
|
-
const trigger = textLink ? /* @__PURE__ */ (0,
|
|
1957
|
+
const trigger = textLink ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2028
1958
|
"button",
|
|
2029
1959
|
{
|
|
2030
1960
|
onClick: handleOpen,
|
|
@@ -2032,7 +1962,7 @@ function Popup({
|
|
|
2032
1962
|
style: { color: buttonColor },
|
|
2033
1963
|
children: ctaText
|
|
2034
1964
|
}
|
|
2035
|
-
) : /* @__PURE__ */ (0,
|
|
1965
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2036
1966
|
"button",
|
|
2037
1967
|
{
|
|
2038
1968
|
onClick: handleOpen,
|
|
@@ -2042,20 +1972,20 @@ function Popup({
|
|
|
2042
1972
|
),
|
|
2043
1973
|
style: { backgroundColor: buttonColor, color: textColor },
|
|
2044
1974
|
children: [
|
|
2045
|
-
icon && iconPosition === "left" && /* @__PURE__ */ (0,
|
|
1975
|
+
icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 }),
|
|
2046
1976
|
ctaText,
|
|
2047
|
-
icon && iconPosition === "right" && /* @__PURE__ */ (0,
|
|
1977
|
+
icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 })
|
|
2048
1978
|
]
|
|
2049
1979
|
}
|
|
2050
1980
|
);
|
|
2051
|
-
return /* @__PURE__ */ (0,
|
|
1981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
2052
1982
|
trigger,
|
|
2053
|
-
isOpen && /* @__PURE__ */ (0,
|
|
1983
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2054
1984
|
"div",
|
|
2055
1985
|
{
|
|
2056
1986
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
2057
1987
|
onClick: handleClose,
|
|
2058
|
-
children: /* @__PURE__ */ (0,
|
|
1988
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2059
1989
|
"div",
|
|
2060
1990
|
{
|
|
2061
1991
|
className: cn(
|
|
@@ -2064,15 +1994,15 @@ function Popup({
|
|
|
2064
1994
|
),
|
|
2065
1995
|
onClick: (e) => e.stopPropagation(),
|
|
2066
1996
|
children: [
|
|
2067
|
-
/* @__PURE__ */ (0,
|
|
1997
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2068
1998
|
"button",
|
|
2069
1999
|
{
|
|
2070
2000
|
onClick: handleClose,
|
|
2071
2001
|
className: "absolute top-4 right-4 text-gray-500 hover:text-gray-700",
|
|
2072
|
-
children: /* @__PURE__ */ (0,
|
|
2002
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react5.X, { size: 24 })
|
|
2073
2003
|
}
|
|
2074
2004
|
),
|
|
2075
|
-
puck && /* @__PURE__ */ (0,
|
|
2005
|
+
puck && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(puck.renderDropZone, { zone: "popup-content" })
|
|
2076
2006
|
]
|
|
2077
2007
|
}
|
|
2078
2008
|
)
|
|
@@ -2082,7 +2012,7 @@ function Popup({
|
|
|
2082
2012
|
}
|
|
2083
2013
|
|
|
2084
2014
|
// config/server.tsx
|
|
2085
|
-
var
|
|
2015
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2086
2016
|
var config = {
|
|
2087
2017
|
categories: {
|
|
2088
2018
|
typography: {
|
|
@@ -2124,64 +2054,64 @@ var config = {
|
|
|
2124
2054
|
},
|
|
2125
2055
|
components: {
|
|
2126
2056
|
Heading: {
|
|
2127
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2057
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Heading, { ...props })
|
|
2128
2058
|
},
|
|
2129
2059
|
Paragraph: {
|
|
2130
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2060
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Paragraph, { ...props })
|
|
2131
2061
|
},
|
|
2132
2062
|
Button: {
|
|
2133
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2063
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { ...props })
|
|
2134
2064
|
},
|
|
2135
2065
|
Image: {
|
|
2136
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2066
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Image, { ...props })
|
|
2137
2067
|
},
|
|
2138
2068
|
ImageCarousel: {
|
|
2139
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2069
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ImageCarousel, { ...props })
|
|
2140
2070
|
},
|
|
2141
2071
|
VideoEmbed: {
|
|
2142
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2072
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(VideoEmbed, { ...props })
|
|
2143
2073
|
},
|
|
2144
2074
|
Icon: {
|
|
2145
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2075
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { ...props })
|
|
2146
2076
|
},
|
|
2147
2077
|
Section: {
|
|
2148
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2078
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Section, { ...props })
|
|
2149
2079
|
},
|
|
2150
2080
|
Container: {
|
|
2151
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2081
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Container, { ...props })
|
|
2152
2082
|
},
|
|
2153
2083
|
Columns: {
|
|
2154
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2084
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Columns, { ...props })
|
|
2155
2085
|
},
|
|
2156
2086
|
Card: {
|
|
2157
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2087
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Card, { ...props })
|
|
2158
2088
|
},
|
|
2159
2089
|
Divider: {
|
|
2160
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2090
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Divider, { ...props })
|
|
2161
2091
|
},
|
|
2162
2092
|
Spacer: {
|
|
2163
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2093
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Spacer, { ...props })
|
|
2164
2094
|
},
|
|
2165
2095
|
TextBlock: {
|
|
2166
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2096
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TextBlock, { ...props })
|
|
2167
2097
|
},
|
|
2168
2098
|
CustomImage: {
|
|
2169
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2099
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CustomImage, { ...props })
|
|
2170
2100
|
},
|
|
2171
2101
|
FeaturesList: {
|
|
2172
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2102
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FeaturesList, { ...props })
|
|
2173
2103
|
},
|
|
2174
2104
|
FeatureGrid: {
|
|
2175
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2105
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FeatureGrid, { ...props })
|
|
2176
2106
|
},
|
|
2177
2107
|
Footer: {
|
|
2178
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2108
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Footer, { ...props })
|
|
2179
2109
|
},
|
|
2180
2110
|
Topbar: {
|
|
2181
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2111
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Topbar, { ...props })
|
|
2182
2112
|
},
|
|
2183
2113
|
Popup: {
|
|
2184
|
-
render: (props) => /* @__PURE__ */ (0,
|
|
2114
|
+
render: (props) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Popup, { ...props })
|
|
2185
2115
|
}
|
|
2186
2116
|
}
|
|
2187
2117
|
};
|