@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/renderer.js
CHANGED
|
@@ -430,8 +430,7 @@ function useUtmParams() {
|
|
|
430
430
|
return utmParams;
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
// components/page/Button.
|
|
434
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
433
|
+
// components/page/primitives/Button.ts
|
|
435
434
|
var sizeStyles = {
|
|
436
435
|
sm: { padding: "8px 16px", fontSize: "0.875rem" },
|
|
437
436
|
md: { padding: "12px 24px", fontSize: "1rem" },
|
|
@@ -451,6 +450,54 @@ function isThemeableValue3(value) {
|
|
|
451
450
|
function isEntryBoundValue3(value) {
|
|
452
451
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
453
452
|
}
|
|
453
|
+
function getBaseStyle(size, borderRadius, fullWidth) {
|
|
454
|
+
return {
|
|
455
|
+
...sizeStyles[size],
|
|
456
|
+
borderRadius: radiusMap[borderRadius],
|
|
457
|
+
fontWeight: 600,
|
|
458
|
+
cursor: "pointer",
|
|
459
|
+
display: "inline-flex",
|
|
460
|
+
alignItems: "center",
|
|
461
|
+
justifyContent: "center",
|
|
462
|
+
textDecoration: "none",
|
|
463
|
+
transition: "opacity 0.2s, transform 0.2s",
|
|
464
|
+
width: fullWidth ? "100%" : "auto",
|
|
465
|
+
border: "none"
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
function getVariantStyles(variant, bgColor, fgColor) {
|
|
469
|
+
const variantStyles = {
|
|
470
|
+
solid: {
|
|
471
|
+
backgroundColor: bgColor,
|
|
472
|
+
color: fgColor
|
|
473
|
+
},
|
|
474
|
+
outline: {
|
|
475
|
+
backgroundColor: "transparent",
|
|
476
|
+
color: bgColor,
|
|
477
|
+
border: `2px solid ${bgColor}`
|
|
478
|
+
},
|
|
479
|
+
ghost: {
|
|
480
|
+
backgroundColor: "transparent",
|
|
481
|
+
color: bgColor
|
|
482
|
+
},
|
|
483
|
+
link: {
|
|
484
|
+
backgroundColor: "transparent",
|
|
485
|
+
color: bgColor,
|
|
486
|
+
padding: "0",
|
|
487
|
+
textDecoration: "underline"
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
return variantStyles[variant] || variantStyles.solid;
|
|
491
|
+
}
|
|
492
|
+
function getWrapperStyle(align) {
|
|
493
|
+
return {
|
|
494
|
+
display: "flex",
|
|
495
|
+
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// components/page/next/Button.tsx
|
|
500
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
454
501
|
function Button({
|
|
455
502
|
text,
|
|
456
503
|
href,
|
|
@@ -513,46 +560,10 @@ function Button({
|
|
|
513
560
|
})();
|
|
514
561
|
const bgColor = hexToRgba(resolvedColor.color, resolvedColor.opacity);
|
|
515
562
|
const fgColor = hexToRgba(resolvedTextColor.color, resolvedTextColor.opacity);
|
|
516
|
-
const baseStyle =
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
cursor: "pointer",
|
|
521
|
-
display: "inline-flex",
|
|
522
|
-
alignItems: "center",
|
|
523
|
-
justifyContent: "center",
|
|
524
|
-
textDecoration: "none",
|
|
525
|
-
transition: "opacity 0.2s, transform 0.2s",
|
|
526
|
-
width: fullWidth ? "100%" : "auto",
|
|
527
|
-
border: "none"
|
|
528
|
-
};
|
|
529
|
-
const variantStyles = {
|
|
530
|
-
solid: {
|
|
531
|
-
backgroundColor: bgColor,
|
|
532
|
-
color: fgColor
|
|
533
|
-
},
|
|
534
|
-
outline: {
|
|
535
|
-
backgroundColor: "transparent",
|
|
536
|
-
color: bgColor,
|
|
537
|
-
border: `2px solid ${bgColor}`
|
|
538
|
-
},
|
|
539
|
-
ghost: {
|
|
540
|
-
backgroundColor: "transparent",
|
|
541
|
-
color: bgColor
|
|
542
|
-
},
|
|
543
|
-
link: {
|
|
544
|
-
backgroundColor: "transparent",
|
|
545
|
-
color: bgColor,
|
|
546
|
-
padding: "0",
|
|
547
|
-
textDecoration: "underline"
|
|
548
|
-
}
|
|
549
|
-
};
|
|
550
|
-
const style = { ...baseStyle, ...variantStyles[variant] };
|
|
551
|
-
const wrapperStyle = {
|
|
552
|
-
display: "flex",
|
|
553
|
-
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
554
|
-
};
|
|
555
|
-
const content = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style, children: resolvedText });
|
|
563
|
+
const baseStyle = getBaseStyle(size, borderRadius, fullWidth);
|
|
564
|
+
const variantStyle = getVariantStyles(variant, bgColor, fgColor);
|
|
565
|
+
const style = { ...baseStyle, ...variantStyle };
|
|
566
|
+
const wrapperStyle = getWrapperStyle(align);
|
|
556
567
|
if (href) {
|
|
557
568
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
558
569
|
"a",
|
|
@@ -570,8 +581,7 @@ function Button({
|
|
|
570
581
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { id, type: "button", style, onClick: handleClick, children: resolvedText }) });
|
|
571
582
|
}
|
|
572
583
|
|
|
573
|
-
// components/page/Image.
|
|
574
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
584
|
+
// components/page/primitives/Image.ts
|
|
575
585
|
var widthMap = {
|
|
576
586
|
auto: "auto",
|
|
577
587
|
full: "100%",
|
|
@@ -608,6 +618,36 @@ function isThemeableValue4(value) {
|
|
|
608
618
|
function isEntryBoundValue4(value) {
|
|
609
619
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
610
620
|
}
|
|
621
|
+
function getWrapperStyle2(align) {
|
|
622
|
+
return {
|
|
623
|
+
display: "flex",
|
|
624
|
+
flexDirection: "column",
|
|
625
|
+
alignItems: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
|
|
626
|
+
gap: "8px"
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
function getImageStyle(width, aspectRatio, objectFit, borderRadius, shadow) {
|
|
630
|
+
return {
|
|
631
|
+
width: widthMap[width],
|
|
632
|
+
maxWidth: "100%",
|
|
633
|
+
aspectRatio: aspectRatioMap[aspectRatio],
|
|
634
|
+
objectFit,
|
|
635
|
+
borderRadius: radiusMap2[borderRadius],
|
|
636
|
+
boxShadow: shadowMap[shadow],
|
|
637
|
+
display: "block"
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
function getCaptionStyle(align, width, captionColor) {
|
|
641
|
+
return {
|
|
642
|
+
fontSize: "0.875rem",
|
|
643
|
+
color: captionColor,
|
|
644
|
+
textAlign: align,
|
|
645
|
+
maxWidth: widthMap[width]
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// components/page/next/Image.tsx
|
|
650
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
611
651
|
function Image({
|
|
612
652
|
src,
|
|
613
653
|
alt = "",
|
|
@@ -655,33 +695,25 @@ function Image({
|
|
|
655
695
|
if ("color" in captionColor) return captionColor;
|
|
656
696
|
return resolveColor2("muted");
|
|
657
697
|
})();
|
|
658
|
-
const wrapperStyle =
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
gap: "8px"
|
|
663
|
-
};
|
|
664
|
-
const imageStyle = {
|
|
665
|
-
width: widthMap[width],
|
|
666
|
-
maxWidth: "100%",
|
|
667
|
-
aspectRatio: aspectRatioMap[aspectRatio],
|
|
698
|
+
const wrapperStyle = getWrapperStyle2(align);
|
|
699
|
+
const imageStyle2 = getImageStyle(
|
|
700
|
+
width,
|
|
701
|
+
aspectRatio,
|
|
668
702
|
objectFit,
|
|
669
|
-
borderRadius
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
maxWidth: widthMap[width]
|
|
678
|
-
};
|
|
703
|
+
borderRadius,
|
|
704
|
+
shadow
|
|
705
|
+
);
|
|
706
|
+
const captionStyle = getCaptionStyle(
|
|
707
|
+
align,
|
|
708
|
+
width,
|
|
709
|
+
hexToRgba(resolvedCaptionColor.color, resolvedCaptionColor.opacity)
|
|
710
|
+
);
|
|
679
711
|
if (!resolvedSrc) {
|
|
680
712
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
681
713
|
"div",
|
|
682
714
|
{
|
|
683
715
|
style: {
|
|
684
|
-
...
|
|
716
|
+
...imageStyle2,
|
|
685
717
|
backgroundColor: "#e5e7eb",
|
|
686
718
|
display: "flex",
|
|
687
719
|
alignItems: "center",
|
|
@@ -694,14 +726,15 @@ function Image({
|
|
|
694
726
|
) });
|
|
695
727
|
}
|
|
696
728
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("figure", { id, style: { ...wrapperStyle, margin: 0 }, children: [
|
|
697
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: resolvedSrc, alt, style:
|
|
729
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: resolvedSrc, alt, style: imageStyle2, loading: "lazy" }),
|
|
698
730
|
resolvedCaption && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("figcaption", { style: captionStyle, children: resolvedCaption })
|
|
699
731
|
] });
|
|
700
732
|
}
|
|
701
733
|
|
|
702
|
-
// components/page/ImageCarousel.tsx
|
|
734
|
+
// components/page/next/ImageCarousel.tsx
|
|
703
735
|
var import_react4 = require("react");
|
|
704
|
-
|
|
736
|
+
|
|
737
|
+
// components/page/primitives/ImageCarousel.ts
|
|
705
738
|
var aspectRatioMap2 = {
|
|
706
739
|
"16:9": "16 / 9",
|
|
707
740
|
"4:3": "4 / 3",
|
|
@@ -717,6 +750,83 @@ var radiusMap3 = {
|
|
|
717
750
|
function isThemeableValue5(value) {
|
|
718
751
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
719
752
|
}
|
|
753
|
+
function getContainerStyle(aspectRatio, borderRadius) {
|
|
754
|
+
return {
|
|
755
|
+
position: "relative",
|
|
756
|
+
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
757
|
+
borderRadius: radiusMap3[borderRadius],
|
|
758
|
+
overflow: "hidden"
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
function getSlideContainerStyle(currentIndex) {
|
|
762
|
+
return {
|
|
763
|
+
display: "flex",
|
|
764
|
+
transition: "transform 0.3s ease-in-out",
|
|
765
|
+
transform: `translateX(-${currentIndex * 100}%)`,
|
|
766
|
+
height: "100%"
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
var slideStyle = {
|
|
770
|
+
minWidth: "100%",
|
|
771
|
+
height: "100%"
|
|
772
|
+
};
|
|
773
|
+
var imageStyle = {
|
|
774
|
+
width: "100%",
|
|
775
|
+
height: "100%",
|
|
776
|
+
objectFit: "cover"
|
|
777
|
+
};
|
|
778
|
+
function getArrowStyle(arrowColor) {
|
|
779
|
+
return {
|
|
780
|
+
position: "absolute",
|
|
781
|
+
top: "50%",
|
|
782
|
+
transform: "translateY(-50%)",
|
|
783
|
+
backgroundColor: "rgba(0,0,0,0.5)",
|
|
784
|
+
color: arrowColor,
|
|
785
|
+
border: "none",
|
|
786
|
+
borderRadius: "50%",
|
|
787
|
+
width: "40px",
|
|
788
|
+
height: "40px",
|
|
789
|
+
cursor: "pointer",
|
|
790
|
+
display: "flex",
|
|
791
|
+
alignItems: "center",
|
|
792
|
+
justifyContent: "center",
|
|
793
|
+
fontSize: "20px",
|
|
794
|
+
zIndex: 1
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
var dotsContainerStyle = {
|
|
798
|
+
position: "absolute",
|
|
799
|
+
bottom: "16px",
|
|
800
|
+
left: "50%",
|
|
801
|
+
transform: "translateX(-50%)",
|
|
802
|
+
display: "flex",
|
|
803
|
+
gap: "8px",
|
|
804
|
+
zIndex: 1
|
|
805
|
+
};
|
|
806
|
+
function getDotStyle(isActive, dotColor) {
|
|
807
|
+
return {
|
|
808
|
+
width: "10px",
|
|
809
|
+
height: "10px",
|
|
810
|
+
borderRadius: "50%",
|
|
811
|
+
border: "none",
|
|
812
|
+
cursor: "pointer",
|
|
813
|
+
backgroundColor: isActive ? dotColor : "rgba(255,255,255,0.5)"
|
|
814
|
+
};
|
|
815
|
+
}
|
|
816
|
+
function getEmptyState(aspectRatio, borderRadius) {
|
|
817
|
+
return {
|
|
818
|
+
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
819
|
+
backgroundColor: "#e5e7eb",
|
|
820
|
+
borderRadius: radiusMap3[borderRadius],
|
|
821
|
+
display: "flex",
|
|
822
|
+
alignItems: "center",
|
|
823
|
+
justifyContent: "center",
|
|
824
|
+
color: "#9ca3af"
|
|
825
|
+
};
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
// components/page/next/ImageCarousel.tsx
|
|
829
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
720
830
|
function ImageCarousel({
|
|
721
831
|
images = [],
|
|
722
832
|
aspectRatio = "16:9",
|
|
@@ -780,79 +890,18 @@ function ImageCarousel({
|
|
|
780
890
|
});
|
|
781
891
|
};
|
|
782
892
|
if (images.length === 0) {
|
|
783
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
784
|
-
"div",
|
|
785
|
-
{
|
|
786
|
-
style: {
|
|
787
|
-
aspectRatio: aspectRatioMap2[aspectRatio],
|
|
788
|
-
backgroundColor: "#e5e7eb",
|
|
789
|
-
borderRadius: radiusMap3[borderRadius],
|
|
790
|
-
display: "flex",
|
|
791
|
-
alignItems: "center",
|
|
792
|
-
justifyContent: "center",
|
|
793
|
-
color: "#9ca3af"
|
|
794
|
-
},
|
|
795
|
-
children: "No images"
|
|
796
|
-
}
|
|
797
|
-
);
|
|
893
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: getEmptyState(aspectRatio, borderRadius), children: "No images" });
|
|
798
894
|
}
|
|
799
|
-
const
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
height: "100%"
|
|
810
|
-
};
|
|
811
|
-
const slideStyle = {
|
|
812
|
-
minWidth: "100%",
|
|
813
|
-
height: "100%"
|
|
814
|
-
};
|
|
815
|
-
const imageStyle = {
|
|
816
|
-
width: "100%",
|
|
817
|
-
height: "100%",
|
|
818
|
-
objectFit: "cover"
|
|
819
|
-
};
|
|
820
|
-
const arrowStyle = {
|
|
821
|
-
position: "absolute",
|
|
822
|
-
top: "50%",
|
|
823
|
-
transform: "translateY(-50%)",
|
|
824
|
-
backgroundColor: "rgba(0,0,0,0.5)",
|
|
825
|
-
color: hexToRgba(resolvedArrowColor.color, resolvedArrowColor.opacity),
|
|
826
|
-
border: "none",
|
|
827
|
-
borderRadius: "50%",
|
|
828
|
-
width: "40px",
|
|
829
|
-
height: "40px",
|
|
830
|
-
cursor: "pointer",
|
|
831
|
-
display: "flex",
|
|
832
|
-
alignItems: "center",
|
|
833
|
-
justifyContent: "center",
|
|
834
|
-
fontSize: "20px",
|
|
835
|
-
zIndex: 1
|
|
836
|
-
};
|
|
837
|
-
const dotsContainerStyle = {
|
|
838
|
-
position: "absolute",
|
|
839
|
-
bottom: "16px",
|
|
840
|
-
left: "50%",
|
|
841
|
-
transform: "translateX(-50%)",
|
|
842
|
-
display: "flex",
|
|
843
|
-
gap: "8px",
|
|
844
|
-
zIndex: 1
|
|
845
|
-
};
|
|
846
|
-
const dotStyle = (isActive) => ({
|
|
847
|
-
width: "10px",
|
|
848
|
-
height: "10px",
|
|
849
|
-
borderRadius: "50%",
|
|
850
|
-
border: "none",
|
|
851
|
-
cursor: "pointer",
|
|
852
|
-
backgroundColor: isActive ? hexToRgba(resolvedDotColor.color, resolvedDotColor.opacity) : "rgba(255,255,255,0.5)"
|
|
853
|
-
});
|
|
854
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { id, style: containerStyle, children: [
|
|
855
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideContainerStyle, children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
895
|
+
const arrowColorStr = hexToRgba(
|
|
896
|
+
resolvedArrowColor.color,
|
|
897
|
+
resolvedArrowColor.opacity
|
|
898
|
+
);
|
|
899
|
+
const dotColorStr = hexToRgba(
|
|
900
|
+
resolvedDotColor.color,
|
|
901
|
+
resolvedDotColor.opacity
|
|
902
|
+
);
|
|
903
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { id, style: getContainerStyle(aspectRatio, borderRadius), children: [
|
|
904
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: getSlideContainerStyle(currentIndex), children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
856
905
|
"img",
|
|
857
906
|
{
|
|
858
907
|
src: image.src,
|
|
@@ -867,7 +916,7 @@ function ImageCarousel({
|
|
|
867
916
|
{
|
|
868
917
|
type: "button",
|
|
869
918
|
onClick: goToPrevious,
|
|
870
|
-
style: { ...
|
|
919
|
+
style: { ...getArrowStyle(arrowColorStr), left: "16px" },
|
|
871
920
|
"aria-label": "Previous slide",
|
|
872
921
|
children: "\u2039"
|
|
873
922
|
}
|
|
@@ -877,7 +926,7 @@ function ImageCarousel({
|
|
|
877
926
|
{
|
|
878
927
|
type: "button",
|
|
879
928
|
onClick: goToNext,
|
|
880
|
-
style: { ...
|
|
929
|
+
style: { ...getArrowStyle(arrowColorStr), right: "16px" },
|
|
881
930
|
"aria-label": "Next slide",
|
|
882
931
|
children: "\u203A"
|
|
883
932
|
}
|
|
@@ -888,7 +937,7 @@ function ImageCarousel({
|
|
|
888
937
|
{
|
|
889
938
|
type: "button",
|
|
890
939
|
onClick: () => goToSlide(index),
|
|
891
|
-
style:
|
|
940
|
+
style: getDotStyle(index === currentIndex, dotColorStr),
|
|
892
941
|
"aria-label": `Go to slide ${index + 1}`
|
|
893
942
|
},
|
|
894
943
|
index
|
|
@@ -1021,7 +1070,7 @@ function VideoEmbed({
|
|
|
1021
1070
|
) }) });
|
|
1022
1071
|
}
|
|
1023
1072
|
|
|
1024
|
-
// components/page/Icon.tsx
|
|
1073
|
+
// components/page/primitives/Icon.tsx
|
|
1025
1074
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1026
1075
|
var sizeMap = {
|
|
1027
1076
|
sm: { size: "16px", strokeWidth: 2 },
|
|
@@ -1223,6 +1272,16 @@ var icons = {
|
|
|
1223
1272
|
function isThemeableValue6(value) {
|
|
1224
1273
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1225
1274
|
}
|
|
1275
|
+
function getWrapperStyle3(align) {
|
|
1276
|
+
return {
|
|
1277
|
+
display: "flex",
|
|
1278
|
+
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
1279
|
+
};
|
|
1280
|
+
}
|
|
1281
|
+
var availableIcons = Object.keys(icons);
|
|
1282
|
+
|
|
1283
|
+
// components/page/next/Icon.tsx
|
|
1284
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1226
1285
|
function Icon({
|
|
1227
1286
|
name = "check",
|
|
1228
1287
|
size = "md",
|
|
@@ -1243,11 +1302,8 @@ function Icon({
|
|
|
1243
1302
|
const IconComponent = icons[name.toLowerCase()] || icons.check;
|
|
1244
1303
|
const { size: iconSize, strokeWidth } = sizeMap[size];
|
|
1245
1304
|
const colorValue = hexToRgba(resolvedColor.color, resolvedColor.opacity);
|
|
1246
|
-
const wrapperStyle =
|
|
1247
|
-
|
|
1248
|
-
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
|
|
1249
|
-
};
|
|
1250
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1305
|
+
const wrapperStyle = getWrapperStyle3(align);
|
|
1306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1251
1307
|
IconComponent,
|
|
1252
1308
|
{
|
|
1253
1309
|
size: iconSize,
|
|
@@ -1256,7 +1312,6 @@ function Icon({
|
|
|
1256
1312
|
}
|
|
1257
1313
|
) });
|
|
1258
1314
|
}
|
|
1259
|
-
var availableIcons = Object.keys(icons);
|
|
1260
1315
|
|
|
1261
1316
|
// design-system/shadows.ts
|
|
1262
1317
|
var shadowPresets = [
|
|
@@ -1294,8 +1349,7 @@ var getShadowCSS = (value) => {
|
|
|
1294
1349
|
return preset?.css ?? "none";
|
|
1295
1350
|
};
|
|
1296
1351
|
|
|
1297
|
-
// components/page/Section.
|
|
1298
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1352
|
+
// components/page/primitives/Section.ts
|
|
1299
1353
|
function isThemeableValue7(value) {
|
|
1300
1354
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1301
1355
|
}
|
|
@@ -1327,6 +1381,20 @@ function getVisibilityClasses(visibility) {
|
|
|
1327
1381
|
}
|
|
1328
1382
|
return "";
|
|
1329
1383
|
}
|
|
1384
|
+
function getSectionStyle(verticalPadding, horizontalPadding, gap, backgroundColor, backgroundImage, shadow, borderRadius) {
|
|
1385
|
+
return {
|
|
1386
|
+
padding: `${verticalPadding}px ${horizontalPadding}px`,
|
|
1387
|
+
gap: `${gap}px`,
|
|
1388
|
+
backgroundColor,
|
|
1389
|
+
backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
|
|
1390
|
+
backgroundSize: "cover",
|
|
1391
|
+
backgroundPosition: "center",
|
|
1392
|
+
borderRadius: `${borderRadius}px`
|
|
1393
|
+
};
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
// components/page/next/Section.tsx
|
|
1397
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1330
1398
|
function Section({
|
|
1331
1399
|
children: _children,
|
|
1332
1400
|
verticalPadding = 48,
|
|
@@ -1343,28 +1411,30 @@ function Section({
|
|
|
1343
1411
|
}) {
|
|
1344
1412
|
const { resolveColor: resolveColor2 } = useTheme();
|
|
1345
1413
|
const DropZone = puck?.renderDropZone;
|
|
1346
|
-
|
|
1414
|
+
const style = {
|
|
1415
|
+
...getSectionStyle(
|
|
1416
|
+
verticalPadding,
|
|
1417
|
+
horizontalPadding,
|
|
1418
|
+
gap,
|
|
1419
|
+
resolveBackgroundColor(backgroundColor, resolveColor2),
|
|
1420
|
+
backgroundImage,
|
|
1421
|
+
shadow,
|
|
1422
|
+
borderRadius
|
|
1423
|
+
),
|
|
1424
|
+
boxShadow: getShadowCSS(shadow)
|
|
1425
|
+
};
|
|
1426
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1347
1427
|
"section",
|
|
1348
1428
|
{
|
|
1349
1429
|
id: anchorLink,
|
|
1350
1430
|
className: cn("flex w-full flex-col", getVisibilityClasses(visibility)),
|
|
1351
|
-
style
|
|
1352
|
-
|
|
1353
|
-
gap: `${gap}px`,
|
|
1354
|
-
backgroundColor: resolveBackgroundColor(backgroundColor, resolveColor2),
|
|
1355
|
-
backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
|
|
1356
|
-
backgroundSize: "cover",
|
|
1357
|
-
backgroundPosition: "center",
|
|
1358
|
-
boxShadow: getShadowCSS(shadow),
|
|
1359
|
-
borderRadius: `${borderRadius}px`
|
|
1360
|
-
},
|
|
1361
|
-
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" }) })
|
|
1431
|
+
style,
|
|
1432
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mx-auto w-full", style: { maxWidth: contentMaxWidth }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropZone, { zone: "content" }) })
|
|
1362
1433
|
}
|
|
1363
1434
|
);
|
|
1364
1435
|
}
|
|
1365
1436
|
|
|
1366
|
-
// components/page/Container.
|
|
1367
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1437
|
+
// components/page/primitives/Container.ts
|
|
1368
1438
|
var maxWidthMap2 = {
|
|
1369
1439
|
sm: "640px",
|
|
1370
1440
|
md: "768px",
|
|
@@ -1383,6 +1453,22 @@ var paddingMap = {
|
|
|
1383
1453
|
function isThemeableValue8(value) {
|
|
1384
1454
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1385
1455
|
}
|
|
1456
|
+
function getContainerStyle2(maxWidth, paddingX, paddingY, centered, backgroundColor) {
|
|
1457
|
+
return {
|
|
1458
|
+
maxWidth: maxWidthMap2[maxWidth],
|
|
1459
|
+
marginLeft: centered ? "auto" : void 0,
|
|
1460
|
+
marginRight: centered ? "auto" : void 0,
|
|
1461
|
+
paddingLeft: paddingMap[paddingX],
|
|
1462
|
+
paddingRight: paddingMap[paddingX],
|
|
1463
|
+
paddingTop: paddingMap[paddingY],
|
|
1464
|
+
paddingBottom: paddingMap[paddingY],
|
|
1465
|
+
backgroundColor,
|
|
1466
|
+
width: "100%"
|
|
1467
|
+
};
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
// components/page/next/Container.tsx
|
|
1471
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1386
1472
|
function Container({
|
|
1387
1473
|
maxWidth = "lg",
|
|
1388
1474
|
padding,
|
|
@@ -1407,22 +1493,17 @@ function Container({
|
|
|
1407
1493
|
})();
|
|
1408
1494
|
const effectivePaddingX = padding || paddingX;
|
|
1409
1495
|
const effectivePaddingY = padding || paddingY;
|
|
1410
|
-
const style =
|
|
1411
|
-
maxWidth
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
backgroundColor: resolvedBgColor ? hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity) : void 0,
|
|
1419
|
-
width: "100%"
|
|
1420
|
-
};
|
|
1421
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropZone, { zone: "container-content" }) });
|
|
1496
|
+
const style = getContainerStyle2(
|
|
1497
|
+
maxWidth,
|
|
1498
|
+
effectivePaddingX,
|
|
1499
|
+
effectivePaddingY,
|
|
1500
|
+
centered,
|
|
1501
|
+
resolvedBgColor ? hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity) : void 0
|
|
1502
|
+
);
|
|
1503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropZone, { zone: "container-content" }) });
|
|
1422
1504
|
}
|
|
1423
1505
|
|
|
1424
|
-
// components/page/Columns.
|
|
1425
|
-
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1506
|
+
// components/page/primitives/Columns.ts
|
|
1426
1507
|
var gapMap = {
|
|
1427
1508
|
none: "0",
|
|
1428
1509
|
sm: "16px",
|
|
@@ -1436,6 +1517,17 @@ var alignMap = {
|
|
|
1436
1517
|
bottom: "flex-end",
|
|
1437
1518
|
stretch: "stretch"
|
|
1438
1519
|
};
|
|
1520
|
+
function getContainerStyle3(columns, gap, verticalAlign) {
|
|
1521
|
+
return {
|
|
1522
|
+
display: "grid",
|
|
1523
|
+
gridTemplateColumns: `repeat(${columns}, 1fr)`,
|
|
1524
|
+
gap: gapMap[gap],
|
|
1525
|
+
alignItems: alignMap[verticalAlign]
|
|
1526
|
+
};
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
// components/page/next/Columns.tsx
|
|
1530
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1439
1531
|
function Columns({
|
|
1440
1532
|
columns = 2,
|
|
1441
1533
|
gap = "md",
|
|
@@ -1445,17 +1537,11 @@ function Columns({
|
|
|
1445
1537
|
puck
|
|
1446
1538
|
}) {
|
|
1447
1539
|
const DropZone = puck?.renderDropZone;
|
|
1448
|
-
const containerStyle =
|
|
1449
|
-
|
|
1450
|
-
gridTemplateColumns: `repeat(${columns}, 1fr)`,
|
|
1451
|
-
gap: gapMap[gap],
|
|
1452
|
-
alignItems: alignMap[verticalAlign]
|
|
1453
|
-
};
|
|
1454
|
-
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)) });
|
|
1540
|
+
const containerStyle = getContainerStyle3(columns, gap, verticalAlign);
|
|
1541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { id, style: containerStyle, children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { minWidth: 0 }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: `column-${index}` }) }, index)) });
|
|
1455
1542
|
}
|
|
1456
1543
|
|
|
1457
|
-
// components/page/Card.
|
|
1458
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1544
|
+
// components/page/primitives/Card.ts
|
|
1459
1545
|
var borderWidthMap = {
|
|
1460
1546
|
none: "0",
|
|
1461
1547
|
thin: "1px",
|
|
@@ -1486,6 +1572,18 @@ var paddingMap2 = {
|
|
|
1486
1572
|
function isThemeableValue9(value) {
|
|
1487
1573
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1488
1574
|
}
|
|
1575
|
+
function getCardStyle(backgroundColor, borderColor, borderWidth, borderRadius, shadow, padding) {
|
|
1576
|
+
return {
|
|
1577
|
+
backgroundColor,
|
|
1578
|
+
border: borderWidth !== "none" ? `${borderWidthMap[borderWidth]} solid ${borderColor}` : "none",
|
|
1579
|
+
borderRadius: radiusMap5[borderRadius],
|
|
1580
|
+
boxShadow: shadowMap2[shadow],
|
|
1581
|
+
padding: paddingMap2[padding]
|
|
1582
|
+
};
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
// components/page/next/Card.tsx
|
|
1586
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1489
1587
|
function Card({
|
|
1490
1588
|
backgroundColor,
|
|
1491
1589
|
borderColor,
|
|
@@ -1518,18 +1616,18 @@ function Card({
|
|
|
1518
1616
|
if ("color" in borderColor) return borderColor;
|
|
1519
1617
|
return resolveColor2("muted");
|
|
1520
1618
|
})();
|
|
1521
|
-
const style =
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1619
|
+
const style = getCardStyle(
|
|
1620
|
+
hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity),
|
|
1621
|
+
hexToRgba(resolvedBorderColor.color, resolvedBorderColor.opacity),
|
|
1622
|
+
borderWidth,
|
|
1623
|
+
borderRadius,
|
|
1624
|
+
shadow,
|
|
1625
|
+
padding
|
|
1626
|
+
);
|
|
1627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZone, { zone: "card-content" }) });
|
|
1529
1628
|
}
|
|
1530
1629
|
|
|
1531
|
-
// components/page/Divider.
|
|
1532
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1630
|
+
// components/page/primitives/Divider.ts
|
|
1533
1631
|
var thicknessMap = {
|
|
1534
1632
|
thin: "1px",
|
|
1535
1633
|
medium: "2px",
|
|
@@ -1550,6 +1648,24 @@ var spacingMap = {
|
|
|
1550
1648
|
function isThemeableValue10(value) {
|
|
1551
1649
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1552
1650
|
}
|
|
1651
|
+
function getWrapperStyle4(align, spacing) {
|
|
1652
|
+
return {
|
|
1653
|
+
display: "flex",
|
|
1654
|
+
justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
|
|
1655
|
+
padding: `${spacingMap[spacing]} 0`
|
|
1656
|
+
};
|
|
1657
|
+
}
|
|
1658
|
+
function getHrStyle(width, thickness, lineStyle, color) {
|
|
1659
|
+
return {
|
|
1660
|
+
width: widthMap2[width],
|
|
1661
|
+
border: "none",
|
|
1662
|
+
borderTop: `${thicknessMap[thickness]} ${lineStyle} ${color}`,
|
|
1663
|
+
margin: 0
|
|
1664
|
+
};
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
// components/page/next/Divider.tsx
|
|
1668
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1553
1669
|
function Divider({
|
|
1554
1670
|
style: lineStyle = "solid",
|
|
1555
1671
|
thickness = "thin",
|
|
@@ -1569,22 +1685,17 @@ function Divider({
|
|
|
1569
1685
|
if ("color" in color) return color;
|
|
1570
1686
|
return resolveColor2("muted");
|
|
1571
1687
|
})();
|
|
1572
|
-
const wrapperStyle =
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
borderTop: `${thicknessMap[thickness]} ${lineStyle} ${hexToRgba(resolvedColor.color, resolvedColor.opacity)}`,
|
|
1581
|
-
margin: 0
|
|
1582
|
-
};
|
|
1583
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("hr", { style: hrStyle }) });
|
|
1688
|
+
const wrapperStyle = getWrapperStyle4(align, spacing);
|
|
1689
|
+
const hrStyle = getHrStyle(
|
|
1690
|
+
width,
|
|
1691
|
+
thickness,
|
|
1692
|
+
lineStyle,
|
|
1693
|
+
hexToRgba(resolvedColor.color, resolvedColor.opacity)
|
|
1694
|
+
);
|
|
1695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("hr", { style: hrStyle }) });
|
|
1584
1696
|
}
|
|
1585
1697
|
|
|
1586
|
-
// components/page/Spacer.
|
|
1587
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1698
|
+
// components/page/primitives/Spacer.ts
|
|
1588
1699
|
var sizeMap2 = {
|
|
1589
1700
|
xs: "8px",
|
|
1590
1701
|
sm: "16px",
|
|
@@ -1594,16 +1705,19 @@ var sizeMap2 = {
|
|
|
1594
1705
|
"2xl": "64px",
|
|
1595
1706
|
"3xl": "96px"
|
|
1596
1707
|
};
|
|
1708
|
+
|
|
1709
|
+
// components/page/next/Spacer.tsx
|
|
1710
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1597
1711
|
function Spacer({ size = "md", id }) {
|
|
1598
1712
|
const style = {
|
|
1599
1713
|
height: sizeMap2[size],
|
|
1600
1714
|
width: "100%"
|
|
1601
1715
|
};
|
|
1602
|
-
return /* @__PURE__ */ (0,
|
|
1716
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { id, style, "aria-hidden": "true" });
|
|
1603
1717
|
}
|
|
1604
1718
|
|
|
1605
1719
|
// components/page/TextBlock.tsx
|
|
1606
|
-
var
|
|
1720
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1607
1721
|
var alignmentMap = {
|
|
1608
1722
|
left: "text-left",
|
|
1609
1723
|
center: "text-center",
|
|
@@ -1689,13 +1803,13 @@ function TextBlock({
|
|
|
1689
1803
|
WebkitTextFillColor: "transparent",
|
|
1690
1804
|
backgroundClip: "text"
|
|
1691
1805
|
} : { color: titleColorValue };
|
|
1692
|
-
return /* @__PURE__ */ (0,
|
|
1806
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1693
1807
|
"div",
|
|
1694
1808
|
{
|
|
1695
1809
|
id: anchorLink,
|
|
1696
1810
|
className: cn("flex flex-col gap-4", alignmentMap[alignment]),
|
|
1697
1811
|
children: [
|
|
1698
|
-
resolvedTitle && /* @__PURE__ */ (0,
|
|
1812
|
+
resolvedTitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1699
1813
|
"h2",
|
|
1700
1814
|
{
|
|
1701
1815
|
className: cn("font-bold", sizeMap3[textSize]),
|
|
@@ -1703,8 +1817,8 @@ function TextBlock({
|
|
|
1703
1817
|
children: resolvedTitle
|
|
1704
1818
|
}
|
|
1705
1819
|
),
|
|
1706
|
-
resolvedSubtitle && /* @__PURE__ */ (0,
|
|
1707
|
-
resolvedBody && /* @__PURE__ */ (0,
|
|
1820
|
+
resolvedSubtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xl", style: { color: subtitleColorValue }, children: resolvedSubtitle }),
|
|
1821
|
+
resolvedBody && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1708
1822
|
"div",
|
|
1709
1823
|
{
|
|
1710
1824
|
className: "prose max-w-none",
|
|
@@ -1718,7 +1832,7 @@ function TextBlock({
|
|
|
1718
1832
|
}
|
|
1719
1833
|
|
|
1720
1834
|
// components/page/CustomImage.tsx
|
|
1721
|
-
var
|
|
1835
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1722
1836
|
var alignmentMap2 = {
|
|
1723
1837
|
left: "mr-auto",
|
|
1724
1838
|
center: "mx-auto",
|
|
@@ -1732,9 +1846,9 @@ function CustomImage({
|
|
|
1732
1846
|
fitContent = false
|
|
1733
1847
|
}) {
|
|
1734
1848
|
if (!image) {
|
|
1735
|
-
return /* @__PURE__ */ (0,
|
|
1849
|
+
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" });
|
|
1736
1850
|
}
|
|
1737
|
-
return /* @__PURE__ */ (0,
|
|
1851
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1738
1852
|
"img",
|
|
1739
1853
|
{
|
|
1740
1854
|
src: image,
|
|
@@ -1751,7 +1865,7 @@ function CustomImage({
|
|
|
1751
1865
|
|
|
1752
1866
|
// components/page/FeaturesList.tsx
|
|
1753
1867
|
var import_lucide_react = require("lucide-react");
|
|
1754
|
-
var
|
|
1868
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1755
1869
|
var sizeMap4 = {
|
|
1756
1870
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1757
1871
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
@@ -1769,7 +1883,7 @@ function FeaturesList({
|
|
|
1769
1883
|
const formatted = iconName.charAt(0).toUpperCase() + iconName.slice(1);
|
|
1770
1884
|
return import_lucide_react.icons[formatted] || null;
|
|
1771
1885
|
};
|
|
1772
|
-
return /* @__PURE__ */ (0,
|
|
1886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1773
1887
|
"div",
|
|
1774
1888
|
{
|
|
1775
1889
|
id: anchorLink,
|
|
@@ -1780,7 +1894,7 @@ function FeaturesList({
|
|
|
1780
1894
|
),
|
|
1781
1895
|
children: features.map((feature, index) => {
|
|
1782
1896
|
const IconComponent = feature.icon ? getIcon(feature.icon) : null;
|
|
1783
|
-
return /* @__PURE__ */ (0,
|
|
1897
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1784
1898
|
"div",
|
|
1785
1899
|
{
|
|
1786
1900
|
className: cn(
|
|
@@ -1789,7 +1903,7 @@ function FeaturesList({
|
|
|
1789
1903
|
align === "right" && "flex-row-reverse"
|
|
1790
1904
|
),
|
|
1791
1905
|
children: [
|
|
1792
|
-
feature.image ? /* @__PURE__ */ (0,
|
|
1906
|
+
feature.image ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1793
1907
|
"img",
|
|
1794
1908
|
{
|
|
1795
1909
|
src: feature.image,
|
|
@@ -1797,7 +1911,7 @@ function FeaturesList({
|
|
|
1797
1911
|
className: "object-contain",
|
|
1798
1912
|
style: { width: sizeConfig.icon, height: sizeConfig.icon }
|
|
1799
1913
|
}
|
|
1800
|
-
) : IconComponent ? /* @__PURE__ */ (0,
|
|
1914
|
+
) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1801
1915
|
IconComponent,
|
|
1802
1916
|
{
|
|
1803
1917
|
size: sizeConfig.icon,
|
|
@@ -1805,9 +1919,9 @@ function FeaturesList({
|
|
|
1805
1919
|
className: "flex-shrink-0"
|
|
1806
1920
|
}
|
|
1807
1921
|
) : null,
|
|
1808
|
-
/* @__PURE__ */ (0,
|
|
1809
|
-
feature.title && /* @__PURE__ */ (0,
|
|
1810
|
-
feature.description && /* @__PURE__ */ (0,
|
|
1922
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
1923
|
+
feature.title && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h3", { className: cn("font-semibold", sizeConfig.title), children: feature.title }),
|
|
1924
|
+
feature.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
|
|
1811
1925
|
] })
|
|
1812
1926
|
]
|
|
1813
1927
|
},
|
|
@@ -1820,7 +1934,7 @@ function FeaturesList({
|
|
|
1820
1934
|
|
|
1821
1935
|
// components/page/FeatureGrid.tsx
|
|
1822
1936
|
var import_lucide_react2 = require("lucide-react");
|
|
1823
|
-
var
|
|
1937
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1824
1938
|
var sizeMap5 = {
|
|
1825
1939
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1826
1940
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
@@ -1847,8 +1961,8 @@ function FeatureGrid({
|
|
|
1847
1961
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
|
|
1848
1962
|
4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
|
|
1849
1963
|
};
|
|
1850
|
-
return /* @__PURE__ */ (0,
|
|
1851
|
-
(heading || description) && /* @__PURE__ */ (0,
|
|
1964
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { id: anchorLink, className: "flex flex-col gap-8", children: [
|
|
1965
|
+
(heading || description) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1852
1966
|
"div",
|
|
1853
1967
|
{
|
|
1854
1968
|
className: cn(
|
|
@@ -1857,14 +1971,14 @@ function FeatureGrid({
|
|
|
1857
1971
|
align === "right" && "text-right"
|
|
1858
1972
|
),
|
|
1859
1973
|
children: [
|
|
1860
|
-
heading && /* @__PURE__ */ (0,
|
|
1861
|
-
description && /* @__PURE__ */ (0,
|
|
1974
|
+
heading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h2", { className: "text-3xl font-bold", style: { color: textColor }, children: heading }),
|
|
1975
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-gray-600", children: description })
|
|
1862
1976
|
]
|
|
1863
1977
|
}
|
|
1864
1978
|
),
|
|
1865
|
-
/* @__PURE__ */ (0,
|
|
1979
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("grid gap-6", columnClass[columns]), children: features.map((feature, index) => {
|
|
1866
1980
|
const IconComponent = feature.icon ? getIcon(feature.icon) : null;
|
|
1867
|
-
return /* @__PURE__ */ (0,
|
|
1981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1868
1982
|
"div",
|
|
1869
1983
|
{
|
|
1870
1984
|
className: cn(
|
|
@@ -1872,7 +1986,7 @@ function FeatureGrid({
|
|
|
1872
1986
|
align === "center" && "items-center text-center"
|
|
1873
1987
|
),
|
|
1874
1988
|
children: [
|
|
1875
|
-
feature.image ? /* @__PURE__ */ (0,
|
|
1989
|
+
feature.image ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1876
1990
|
"img",
|
|
1877
1991
|
{
|
|
1878
1992
|
src: feature.image,
|
|
@@ -1880,14 +1994,14 @@ function FeatureGrid({
|
|
|
1880
1994
|
className: "object-contain",
|
|
1881
1995
|
style: { width: sizeConfig.icon, height: sizeConfig.icon }
|
|
1882
1996
|
}
|
|
1883
|
-
) : IconComponent ? /* @__PURE__ */ (0,
|
|
1997
|
+
) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1884
1998
|
IconComponent,
|
|
1885
1999
|
{
|
|
1886
2000
|
size: sizeConfig.icon,
|
|
1887
2001
|
style: { color: iconColor }
|
|
1888
2002
|
}
|
|
1889
2003
|
) : null,
|
|
1890
|
-
feature.title && /* @__PURE__ */ (0,
|
|
2004
|
+
feature.title && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1891
2005
|
"h3",
|
|
1892
2006
|
{
|
|
1893
2007
|
className: cn("font-semibold", sizeConfig.title),
|
|
@@ -1895,7 +2009,7 @@ function FeatureGrid({
|
|
|
1895
2009
|
children: feature.title
|
|
1896
2010
|
}
|
|
1897
2011
|
),
|
|
1898
|
-
feature.description && /* @__PURE__ */ (0,
|
|
2012
|
+
feature.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
|
|
1899
2013
|
]
|
|
1900
2014
|
},
|
|
1901
2015
|
index
|
|
@@ -1906,7 +2020,7 @@ function FeatureGrid({
|
|
|
1906
2020
|
|
|
1907
2021
|
// components/page/Footer.tsx
|
|
1908
2022
|
var import_lucide_react3 = require("lucide-react");
|
|
1909
|
-
var
|
|
2023
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1910
2024
|
function Footer({
|
|
1911
2025
|
logo,
|
|
1912
2026
|
copyright = "\xA9 2024 Company. All rights reserved.",
|
|
@@ -1941,15 +2055,15 @@ function Footer({
|
|
|
1941
2055
|
].filter(
|
|
1942
2056
|
(link) => !!link.url
|
|
1943
2057
|
);
|
|
1944
|
-
return /* @__PURE__ */ (0,
|
|
2058
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1945
2059
|
"footer",
|
|
1946
2060
|
{
|
|
1947
2061
|
className: "w-full px-6 py-8",
|
|
1948
2062
|
style: { backgroundColor, color: textColor },
|
|
1949
|
-
children: /* @__PURE__ */ (0,
|
|
1950
|
-
/* @__PURE__ */ (0,
|
|
1951
|
-
DropZone && /* @__PURE__ */ (0,
|
|
1952
|
-
/* @__PURE__ */ (0,
|
|
2063
|
+
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: [
|
|
2064
|
+
/* @__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" }) }),
|
|
2065
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: "footer-content" }),
|
|
2066
|
+
/* @__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)(
|
|
1953
2067
|
"a",
|
|
1954
2068
|
{
|
|
1955
2069
|
href: url,
|
|
@@ -1957,11 +2071,11 @@ function Footer({
|
|
|
1957
2071
|
rel: "noopener noreferrer",
|
|
1958
2072
|
className: "transition-opacity hover:opacity-80",
|
|
1959
2073
|
onClick: () => handleSocialClick(url),
|
|
1960
|
-
children: /* @__PURE__ */ (0,
|
|
2074
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon3, { size: 24, style: { color: textColor } })
|
|
1961
2075
|
},
|
|
1962
2076
|
index
|
|
1963
2077
|
)) }),
|
|
1964
|
-
copyright && /* @__PURE__ */ (0,
|
|
2078
|
+
copyright && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "text-sm opacity-80", children: copyright })
|
|
1965
2079
|
] })
|
|
1966
2080
|
}
|
|
1967
2081
|
);
|
|
@@ -1970,7 +2084,7 @@ function Footer({
|
|
|
1970
2084
|
// components/page/Topbar.tsx
|
|
1971
2085
|
var import_react5 = require("react");
|
|
1972
2086
|
var import_lucide_react4 = require("lucide-react");
|
|
1973
|
-
var
|
|
2087
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1974
2088
|
function Topbar({
|
|
1975
2089
|
logo,
|
|
1976
2090
|
logoUrl = "/",
|
|
@@ -2003,7 +2117,7 @@ function Topbar({
|
|
|
2003
2117
|
const renderLink = (item, index) => {
|
|
2004
2118
|
const className = "hover:opacity-80 transition-opacity";
|
|
2005
2119
|
if (item.linkType === "external") {
|
|
2006
|
-
return /* @__PURE__ */ (0,
|
|
2120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2007
2121
|
"a",
|
|
2008
2122
|
{
|
|
2009
2123
|
href: item.url,
|
|
@@ -2017,7 +2131,7 @@ function Topbar({
|
|
|
2017
2131
|
);
|
|
2018
2132
|
}
|
|
2019
2133
|
if (item.linkType === "scrollTo") {
|
|
2020
|
-
return /* @__PURE__ */ (0,
|
|
2134
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2021
2135
|
"a",
|
|
2022
2136
|
{
|
|
2023
2137
|
href: item.url,
|
|
@@ -2028,7 +2142,7 @@ function Topbar({
|
|
|
2028
2142
|
index
|
|
2029
2143
|
);
|
|
2030
2144
|
}
|
|
2031
|
-
return /* @__PURE__ */ (0,
|
|
2145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2032
2146
|
"a",
|
|
2033
2147
|
{
|
|
2034
2148
|
href: item.url,
|
|
@@ -2039,19 +2153,19 @@ function Topbar({
|
|
|
2039
2153
|
index
|
|
2040
2154
|
);
|
|
2041
2155
|
};
|
|
2042
|
-
return /* @__PURE__ */ (0,
|
|
2156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2043
2157
|
"nav",
|
|
2044
2158
|
{
|
|
2045
2159
|
className: "sticky top-0 z-50 w-full px-6 py-4",
|
|
2046
2160
|
style: { backgroundColor, color: textColor },
|
|
2047
2161
|
children: [
|
|
2048
|
-
/* @__PURE__ */ (0,
|
|
2162
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2049
2163
|
"div",
|
|
2050
2164
|
{
|
|
2051
2165
|
className: "mx-auto flex items-center justify-between",
|
|
2052
2166
|
style: { maxWidth },
|
|
2053
2167
|
children: [
|
|
2054
|
-
/* @__PURE__ */ (0,
|
|
2168
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2055
2169
|
"a",
|
|
2056
2170
|
{
|
|
2057
2171
|
href: logoUrl,
|
|
@@ -2062,25 +2176,25 @@ function Topbar({
|
|
|
2062
2176
|
linkType: "internal",
|
|
2063
2177
|
...utm
|
|
2064
2178
|
}),
|
|
2065
|
-
children: logo ? /* @__PURE__ */ (0,
|
|
2179
|
+
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" })
|
|
2066
2180
|
}
|
|
2067
2181
|
),
|
|
2068
|
-
/* @__PURE__ */ (0,
|
|
2182
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "hidden items-center gap-8 md:flex", children: [
|
|
2069
2183
|
navItems.map(renderLink),
|
|
2070
|
-
DropZone && /* @__PURE__ */ (0,
|
|
2184
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
|
|
2071
2185
|
] }),
|
|
2072
|
-
/* @__PURE__ */ (0,
|
|
2186
|
+
/* @__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 }) })
|
|
2073
2187
|
]
|
|
2074
2188
|
}
|
|
2075
2189
|
),
|
|
2076
|
-
mobileMenuOpen && /* @__PURE__ */ (0,
|
|
2190
|
+
mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2077
2191
|
"div",
|
|
2078
2192
|
{
|
|
2079
2193
|
className: "absolute top-full right-0 left-0 flex flex-col gap-4 px-6 py-4 md:hidden",
|
|
2080
2194
|
style: { backgroundColor },
|
|
2081
2195
|
children: [
|
|
2082
2196
|
navItems.map(renderLink),
|
|
2083
|
-
DropZone && /* @__PURE__ */ (0,
|
|
2197
|
+
DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
|
|
2084
2198
|
]
|
|
2085
2199
|
}
|
|
2086
2200
|
)
|
|
@@ -2092,12 +2206,12 @@ function Topbar({
|
|
|
2092
2206
|
// components/page/Popup.tsx
|
|
2093
2207
|
var import_react6 = require("react");
|
|
2094
2208
|
var import_lucide_react5 = require("lucide-react");
|
|
2095
|
-
var
|
|
2209
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2096
2210
|
function Icon2({ name, ...props }) {
|
|
2097
2211
|
const formatted = name.charAt(0).toUpperCase() + name.slice(1);
|
|
2098
2212
|
const IconComponent = import_lucide_react5.icons[formatted];
|
|
2099
2213
|
if (!IconComponent) return null;
|
|
2100
|
-
return /* @__PURE__ */ (0,
|
|
2214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(IconComponent, { ...props });
|
|
2101
2215
|
}
|
|
2102
2216
|
var widthMap3 = {
|
|
2103
2217
|
small: "max-w-sm",
|
|
@@ -2135,7 +2249,7 @@ function Popup({
|
|
|
2135
2249
|
setIsOpen(false);
|
|
2136
2250
|
sendEvent("popup_close", { ctaText, ...utm });
|
|
2137
2251
|
};
|
|
2138
|
-
const trigger = textLink ? /* @__PURE__ */ (0,
|
|
2252
|
+
const trigger = textLink ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2139
2253
|
"button",
|
|
2140
2254
|
{
|
|
2141
2255
|
onClick: handleOpen,
|
|
@@ -2143,7 +2257,7 @@ function Popup({
|
|
|
2143
2257
|
style: { color: buttonColor },
|
|
2144
2258
|
children: ctaText
|
|
2145
2259
|
}
|
|
2146
|
-
) : /* @__PURE__ */ (0,
|
|
2260
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2147
2261
|
"button",
|
|
2148
2262
|
{
|
|
2149
2263
|
onClick: handleOpen,
|
|
@@ -2153,20 +2267,20 @@ function Popup({
|
|
|
2153
2267
|
),
|
|
2154
2268
|
style: { backgroundColor: buttonColor, color: textColor },
|
|
2155
2269
|
children: [
|
|
2156
|
-
icon && iconPosition === "left" && /* @__PURE__ */ (0,
|
|
2270
|
+
icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 }),
|
|
2157
2271
|
ctaText,
|
|
2158
|
-
icon && iconPosition === "right" && /* @__PURE__ */ (0,
|
|
2272
|
+
icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 })
|
|
2159
2273
|
]
|
|
2160
2274
|
}
|
|
2161
2275
|
);
|
|
2162
|
-
return /* @__PURE__ */ (0,
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
2163
2277
|
trigger,
|
|
2164
|
-
isOpen && /* @__PURE__ */ (0,
|
|
2278
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2165
2279
|
"div",
|
|
2166
2280
|
{
|
|
2167
2281
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
2168
2282
|
onClick: handleClose,
|
|
2169
|
-
children: /* @__PURE__ */ (0,
|
|
2283
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2170
2284
|
"div",
|
|
2171
2285
|
{
|
|
2172
2286
|
className: cn(
|
|
@@ -2175,15 +2289,15 @@ function Popup({
|
|
|
2175
2289
|
),
|
|
2176
2290
|
onClick: (e) => e.stopPropagation(),
|
|
2177
2291
|
children: [
|
|
2178
|
-
/* @__PURE__ */ (0,
|
|
2292
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2179
2293
|
"button",
|
|
2180
2294
|
{
|
|
2181
2295
|
onClick: handleClose,
|
|
2182
2296
|
className: "absolute top-4 right-4 text-gray-500 hover:text-gray-700",
|
|
2183
|
-
children: /* @__PURE__ */ (0,
|
|
2297
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react5.X, { size: 24 })
|
|
2184
2298
|
}
|
|
2185
2299
|
),
|
|
2186
|
-
puck && /* @__PURE__ */ (0,
|
|
2300
|
+
puck && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(puck.renderDropZone, { zone: "popup-content" })
|
|
2187
2301
|
]
|
|
2188
2302
|
}
|
|
2189
2303
|
)
|