@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.
Files changed (33) hide show
  1. package/dist/Popup-Dg78fu78.d.mts +260 -0
  2. package/dist/Popup-L7kcJo05.d.ts +260 -0
  3. package/dist/ResponsiveToggleField-65CqZEK-.d.mts +10 -0
  4. package/dist/ResponsiveToggleField-QCve94L_.d.ts +10 -0
  5. package/dist/chunk-MYS3PLMF.mjs +463 -0
  6. package/dist/chunk-TRPKXVMO.mjs +695 -0
  7. package/dist/{chunk-MWW5LYLN.mjs → chunk-YIPEC4L4.mjs} +709 -1075
  8. package/dist/components/page/astro/index.d.mts +54 -0
  9. package/dist/components/page/astro/index.d.ts +54 -0
  10. package/dist/components/page/astro/index.js +2056 -0
  11. package/dist/components/page/astro/index.mjs +51 -0
  12. package/dist/config/server.js +630 -700
  13. package/dist/config/server.mjs +33 -83
  14. package/dist/config-entry.js +592 -478
  15. package/dist/config-entry.mjs +11 -11
  16. package/dist/{ResponsiveToggleField-CfBKL5oY.d.ts → defaults-j55hBQHu.d.mts} +2 -8
  17. package/dist/{ResponsiveToggleField-BihXsGIJ.d.mts → defaults-z8Ft2j5r.d.ts} +2 -8
  18. package/dist/editor.d.mts +5 -4
  19. package/dist/editor.d.ts +5 -4
  20. package/dist/index.d.mts +5 -3
  21. package/dist/index.d.ts +5 -3
  22. package/dist/index.js +388 -274
  23. package/dist/index.mjs +11 -11
  24. package/dist/renderer.d.mts +9 -250
  25. package/dist/renderer.d.ts +9 -250
  26. package/dist/renderer.js +388 -274
  27. package/dist/renderer.mjs +11 -11
  28. package/dist/resolve/index.d.mts +1 -1
  29. package/dist/resolve/index.d.ts +1 -1
  30. package/dist/{types-D-CIduaE.d.mts → types-HQ6hIbYr.d.mts} +1 -1
  31. package/dist/{types-D-CIduaE.d.ts → types-HQ6hIbYr.d.ts} +1 -1
  32. package/package.json +6 -1
  33. package/dist/chunk-WFLVAZV2.mjs +0 -142
@@ -413,8 +413,7 @@ function useUtmParams() {
413
413
  return utmParams;
414
414
  }
415
415
 
416
- // components/page/Button.tsx
417
- var import_jsx_runtime5 = require("react/jsx-runtime");
416
+ // components/page/primitives/Button.ts
418
417
  var sizeStyles = {
419
418
  sm: { padding: "8px 16px", fontSize: "0.875rem" },
420
419
  md: { padding: "12px 24px", fontSize: "1rem" },
@@ -434,6 +433,54 @@ function isThemeableValue3(value) {
434
433
  function isEntryBoundValue3(value) {
435
434
  return typeof value === "object" && value !== null && "useEntry" in value;
436
435
  }
436
+ function getBaseStyle(size4, borderRadius, fullWidth) {
437
+ return {
438
+ ...sizeStyles[size4],
439
+ borderRadius: radiusMap[borderRadius],
440
+ fontWeight: 600,
441
+ cursor: "pointer",
442
+ display: "inline-flex",
443
+ alignItems: "center",
444
+ justifyContent: "center",
445
+ textDecoration: "none",
446
+ transition: "opacity 0.2s, transform 0.2s",
447
+ width: fullWidth ? "100%" : "auto",
448
+ border: "none"
449
+ };
450
+ }
451
+ function getVariantStyles(variant, bgColor, fgColor) {
452
+ const variantStyles = {
453
+ solid: {
454
+ backgroundColor: bgColor,
455
+ color: fgColor
456
+ },
457
+ outline: {
458
+ backgroundColor: "transparent",
459
+ color: bgColor,
460
+ border: `2px solid ${bgColor}`
461
+ },
462
+ ghost: {
463
+ backgroundColor: "transparent",
464
+ color: bgColor
465
+ },
466
+ link: {
467
+ backgroundColor: "transparent",
468
+ color: bgColor,
469
+ padding: "0",
470
+ textDecoration: "underline"
471
+ }
472
+ };
473
+ return variantStyles[variant] || variantStyles.solid;
474
+ }
475
+ function getWrapperStyle(align) {
476
+ return {
477
+ display: "flex",
478
+ justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
479
+ };
480
+ }
481
+
482
+ // components/page/next/Button.tsx
483
+ var import_jsx_runtime5 = require("react/jsx-runtime");
437
484
  function Button({
438
485
  text,
439
486
  href,
@@ -496,46 +543,10 @@ function Button({
496
543
  })();
497
544
  const bgColor = hexToRgba(resolvedColor.color, resolvedColor.opacity);
498
545
  const fgColor = hexToRgba(resolvedTextColor.color, resolvedTextColor.opacity);
499
- const baseStyle = {
500
- ...sizeStyles[size4],
501
- borderRadius: radiusMap[borderRadius],
502
- fontWeight: 600,
503
- cursor: "pointer",
504
- display: "inline-flex",
505
- alignItems: "center",
506
- justifyContent: "center",
507
- textDecoration: "none",
508
- transition: "opacity 0.2s, transform 0.2s",
509
- width: fullWidth ? "100%" : "auto",
510
- border: "none"
511
- };
512
- const variantStyles = {
513
- solid: {
514
- backgroundColor: bgColor,
515
- color: fgColor
516
- },
517
- outline: {
518
- backgroundColor: "transparent",
519
- color: bgColor,
520
- border: `2px solid ${bgColor}`
521
- },
522
- ghost: {
523
- backgroundColor: "transparent",
524
- color: bgColor
525
- },
526
- link: {
527
- backgroundColor: "transparent",
528
- color: bgColor,
529
- padding: "0",
530
- textDecoration: "underline"
531
- }
532
- };
533
- const style = { ...baseStyle, ...variantStyles[variant] };
534
- const wrapperStyle = {
535
- display: "flex",
536
- justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
537
- };
538
- const content = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style, children: resolvedText });
546
+ const baseStyle = getBaseStyle(size4, borderRadius, fullWidth);
547
+ const variantStyle = getVariantStyles(variant, bgColor, fgColor);
548
+ const style = { ...baseStyle, ...variantStyle };
549
+ const wrapperStyle = getWrapperStyle(align);
539
550
  if (href) {
540
551
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
541
552
  "a",
@@ -553,8 +564,7 @@ function Button({
553
564
  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 }) });
554
565
  }
555
566
 
556
- // components/page/Image.tsx
557
- var import_jsx_runtime6 = require("react/jsx-runtime");
567
+ // components/page/primitives/Image.ts
558
568
  var widthMap = {
559
569
  auto: "auto",
560
570
  full: "100%",
@@ -591,6 +601,36 @@ function isThemeableValue4(value) {
591
601
  function isEntryBoundValue4(value) {
592
602
  return typeof value === "object" && value !== null && "useEntry" in value;
593
603
  }
604
+ function getWrapperStyle2(align) {
605
+ return {
606
+ display: "flex",
607
+ flexDirection: "column",
608
+ alignItems: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
609
+ gap: "8px"
610
+ };
611
+ }
612
+ function getImageStyle(width, aspectRatio, objectFit, borderRadius, shadow) {
613
+ return {
614
+ width: widthMap[width],
615
+ maxWidth: "100%",
616
+ aspectRatio: aspectRatioMap[aspectRatio],
617
+ objectFit,
618
+ borderRadius: radiusMap2[borderRadius],
619
+ boxShadow: shadowMap[shadow],
620
+ display: "block"
621
+ };
622
+ }
623
+ function getCaptionStyle(align, width, captionColor) {
624
+ return {
625
+ fontSize: "0.875rem",
626
+ color: captionColor,
627
+ textAlign: align,
628
+ maxWidth: widthMap[width]
629
+ };
630
+ }
631
+
632
+ // components/page/next/Image.tsx
633
+ var import_jsx_runtime6 = require("react/jsx-runtime");
594
634
  function Image({
595
635
  src,
596
636
  alt = "",
@@ -638,33 +678,25 @@ function Image({
638
678
  if ("color" in captionColor) return captionColor;
639
679
  return resolveColor2("muted");
640
680
  })();
641
- const wrapperStyle = {
642
- display: "flex",
643
- flexDirection: "column",
644
- alignItems: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
645
- gap: "8px"
646
- };
647
- const imageStyle = {
648
- width: widthMap[width],
649
- maxWidth: "100%",
650
- aspectRatio: aspectRatioMap[aspectRatio],
681
+ const wrapperStyle = getWrapperStyle2(align);
682
+ const imageStyle2 = getImageStyle(
683
+ width,
684
+ aspectRatio,
651
685
  objectFit,
652
- borderRadius: radiusMap2[borderRadius],
653
- boxShadow: shadowMap[shadow],
654
- display: "block"
655
- };
656
- const captionStyle = {
657
- fontSize: "0.875rem",
658
- color: hexToRgba(resolvedCaptionColor.color, resolvedCaptionColor.opacity),
659
- textAlign: align,
660
- maxWidth: widthMap[width]
661
- };
686
+ borderRadius,
687
+ shadow
688
+ );
689
+ const captionStyle = getCaptionStyle(
690
+ align,
691
+ width,
692
+ hexToRgba(resolvedCaptionColor.color, resolvedCaptionColor.opacity)
693
+ );
662
694
  if (!resolvedSrc) {
663
695
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
664
696
  "div",
665
697
  {
666
698
  style: {
667
- ...imageStyle,
699
+ ...imageStyle2,
668
700
  backgroundColor: "#e5e7eb",
669
701
  display: "flex",
670
702
  alignItems: "center",
@@ -677,14 +709,15 @@ function Image({
677
709
  ) });
678
710
  }
679
711
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("figure", { id, style: { ...wrapperStyle, margin: 0 }, children: [
680
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: resolvedSrc, alt, style: imageStyle, loading: "lazy" }),
712
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: resolvedSrc, alt, style: imageStyle2, loading: "lazy" }),
681
713
  resolvedCaption && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("figcaption", { style: captionStyle, children: resolvedCaption })
682
714
  ] });
683
715
  }
684
716
 
685
- // components/page/ImageCarousel.tsx
717
+ // components/page/next/ImageCarousel.tsx
686
718
  var import_react4 = require("react");
687
- var import_jsx_runtime7 = require("react/jsx-runtime");
719
+
720
+ // components/page/primitives/ImageCarousel.ts
688
721
  var aspectRatioMap2 = {
689
722
  "16:9": "16 / 9",
690
723
  "4:3": "4 / 3",
@@ -700,6 +733,83 @@ var radiusMap3 = {
700
733
  function isThemeableValue5(value) {
701
734
  return typeof value === "object" && value !== null && "useTheme" in value;
702
735
  }
736
+ function getContainerStyle(aspectRatio, borderRadius) {
737
+ return {
738
+ position: "relative",
739
+ aspectRatio: aspectRatioMap2[aspectRatio],
740
+ borderRadius: radiusMap3[borderRadius],
741
+ overflow: "hidden"
742
+ };
743
+ }
744
+ function getSlideContainerStyle(currentIndex) {
745
+ return {
746
+ display: "flex",
747
+ transition: "transform 0.3s ease-in-out",
748
+ transform: `translateX(-${currentIndex * 100}%)`,
749
+ height: "100%"
750
+ };
751
+ }
752
+ var slideStyle = {
753
+ minWidth: "100%",
754
+ height: "100%"
755
+ };
756
+ var imageStyle = {
757
+ width: "100%",
758
+ height: "100%",
759
+ objectFit: "cover"
760
+ };
761
+ function getArrowStyle(arrowColor) {
762
+ return {
763
+ position: "absolute",
764
+ top: "50%",
765
+ transform: "translateY(-50%)",
766
+ backgroundColor: "rgba(0,0,0,0.5)",
767
+ color: arrowColor,
768
+ border: "none",
769
+ borderRadius: "50%",
770
+ width: "40px",
771
+ height: "40px",
772
+ cursor: "pointer",
773
+ display: "flex",
774
+ alignItems: "center",
775
+ justifyContent: "center",
776
+ fontSize: "20px",
777
+ zIndex: 1
778
+ };
779
+ }
780
+ var dotsContainerStyle = {
781
+ position: "absolute",
782
+ bottom: "16px",
783
+ left: "50%",
784
+ transform: "translateX(-50%)",
785
+ display: "flex",
786
+ gap: "8px",
787
+ zIndex: 1
788
+ };
789
+ function getDotStyle(isActive, dotColor) {
790
+ return {
791
+ width: "10px",
792
+ height: "10px",
793
+ borderRadius: "50%",
794
+ border: "none",
795
+ cursor: "pointer",
796
+ backgroundColor: isActive ? dotColor : "rgba(255,255,255,0.5)"
797
+ };
798
+ }
799
+ function getEmptyState(aspectRatio, borderRadius) {
800
+ return {
801
+ aspectRatio: aspectRatioMap2[aspectRatio],
802
+ backgroundColor: "#e5e7eb",
803
+ borderRadius: radiusMap3[borderRadius],
804
+ display: "flex",
805
+ alignItems: "center",
806
+ justifyContent: "center",
807
+ color: "#9ca3af"
808
+ };
809
+ }
810
+
811
+ // components/page/next/ImageCarousel.tsx
812
+ var import_jsx_runtime7 = require("react/jsx-runtime");
703
813
  function ImageCarousel({
704
814
  images = [],
705
815
  aspectRatio = "16:9",
@@ -763,79 +873,18 @@ function ImageCarousel({
763
873
  });
764
874
  };
765
875
  if (images.length === 0) {
766
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
767
- "div",
768
- {
769
- style: {
770
- aspectRatio: aspectRatioMap2[aspectRatio],
771
- backgroundColor: "#e5e7eb",
772
- borderRadius: radiusMap3[borderRadius],
773
- display: "flex",
774
- alignItems: "center",
775
- justifyContent: "center",
776
- color: "#9ca3af"
777
- },
778
- children: "No images"
779
- }
780
- );
876
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: getEmptyState(aspectRatio, borderRadius), children: "No images" });
781
877
  }
782
- const containerStyle = {
783
- position: "relative",
784
- aspectRatio: aspectRatioMap2[aspectRatio],
785
- borderRadius: radiusMap3[borderRadius],
786
- overflow: "hidden"
787
- };
788
- const slideContainerStyle = {
789
- display: "flex",
790
- transition: "transform 0.3s ease-in-out",
791
- transform: `translateX(-${currentIndex * 100}%)`,
792
- height: "100%"
793
- };
794
- const slideStyle = {
795
- minWidth: "100%",
796
- height: "100%"
797
- };
798
- const imageStyle = {
799
- width: "100%",
800
- height: "100%",
801
- objectFit: "cover"
802
- };
803
- const arrowStyle = {
804
- position: "absolute",
805
- top: "50%",
806
- transform: "translateY(-50%)",
807
- backgroundColor: "rgba(0,0,0,0.5)",
808
- color: hexToRgba(resolvedArrowColor.color, resolvedArrowColor.opacity),
809
- border: "none",
810
- borderRadius: "50%",
811
- width: "40px",
812
- height: "40px",
813
- cursor: "pointer",
814
- display: "flex",
815
- alignItems: "center",
816
- justifyContent: "center",
817
- fontSize: "20px",
818
- zIndex: 1
819
- };
820
- const dotsContainerStyle = {
821
- position: "absolute",
822
- bottom: "16px",
823
- left: "50%",
824
- transform: "translateX(-50%)",
825
- display: "flex",
826
- gap: "8px",
827
- zIndex: 1
828
- };
829
- const dotStyle = (isActive) => ({
830
- width: "10px",
831
- height: "10px",
832
- borderRadius: "50%",
833
- border: "none",
834
- cursor: "pointer",
835
- backgroundColor: isActive ? hexToRgba(resolvedDotColor.color, resolvedDotColor.opacity) : "rgba(255,255,255,0.5)"
836
- });
837
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { id, style: containerStyle, children: [
838
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideContainerStyle, children: images.map((image, index2) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
878
+ const arrowColorStr = hexToRgba(
879
+ resolvedArrowColor.color,
880
+ resolvedArrowColor.opacity
881
+ );
882
+ const dotColorStr = hexToRgba(
883
+ resolvedDotColor.color,
884
+ resolvedDotColor.opacity
885
+ );
886
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { id, style: getContainerStyle(aspectRatio, borderRadius), children: [
887
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: getSlideContainerStyle(currentIndex), children: images.map((image, index2) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: slideStyle, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
839
888
  "img",
840
889
  {
841
890
  src: image.src,
@@ -850,7 +899,7 @@ function ImageCarousel({
850
899
  {
851
900
  type: "button",
852
901
  onClick: goToPrevious,
853
- style: { ...arrowStyle, left: "16px" },
902
+ style: { ...getArrowStyle(arrowColorStr), left: "16px" },
854
903
  "aria-label": "Previous slide",
855
904
  children: "\u2039"
856
905
  }
@@ -860,7 +909,7 @@ function ImageCarousel({
860
909
  {
861
910
  type: "button",
862
911
  onClick: goToNext,
863
- style: { ...arrowStyle, right: "16px" },
912
+ style: { ...getArrowStyle(arrowColorStr), right: "16px" },
864
913
  "aria-label": "Next slide",
865
914
  children: "\u203A"
866
915
  }
@@ -871,7 +920,7 @@ function ImageCarousel({
871
920
  {
872
921
  type: "button",
873
922
  onClick: () => goToSlide(index2),
874
- style: dotStyle(index2 === currentIndex),
923
+ style: getDotStyle(index2 === currentIndex, dotColorStr),
875
924
  "aria-label": `Go to slide ${index2 + 1}`
876
925
  },
877
926
  index2
@@ -1004,7 +1053,7 @@ function VideoEmbed({
1004
1053
  ) }) });
1005
1054
  }
1006
1055
 
1007
- // components/page/Icon.tsx
1056
+ // components/page/primitives/Icon.tsx
1008
1057
  var import_jsx_runtime9 = require("react/jsx-runtime");
1009
1058
  var sizeMap = {
1010
1059
  sm: { size: "16px", strokeWidth: 2 },
@@ -1206,6 +1255,16 @@ var icons = {
1206
1255
  function isThemeableValue6(value) {
1207
1256
  return typeof value === "object" && value !== null && "useTheme" in value;
1208
1257
  }
1258
+ function getWrapperStyle3(align) {
1259
+ return {
1260
+ display: "flex",
1261
+ justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
1262
+ };
1263
+ }
1264
+ var availableIcons = Object.keys(icons);
1265
+
1266
+ // components/page/next/Icon.tsx
1267
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1209
1268
  function Icon({
1210
1269
  name = "check",
1211
1270
  size: size4 = "md",
@@ -1226,11 +1285,8 @@ function Icon({
1226
1285
  const IconComponent = icons[name.toLowerCase()] || icons.check;
1227
1286
  const { size: iconSize, strokeWidth } = sizeMap[size4];
1228
1287
  const colorValue = hexToRgba(resolvedColor.color, resolvedColor.opacity);
1229
- const wrapperStyle = {
1230
- display: "flex",
1231
- justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center"
1232
- };
1233
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1288
+ const wrapperStyle = getWrapperStyle3(align);
1289
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1234
1290
  IconComponent,
1235
1291
  {
1236
1292
  size: iconSize,
@@ -1239,7 +1295,6 @@ function Icon({
1239
1295
  }
1240
1296
  ) });
1241
1297
  }
1242
- var availableIcons = Object.keys(icons);
1243
1298
 
1244
1299
  // design-system/shadows.ts
1245
1300
  var shadowPresets = [
@@ -1277,8 +1332,7 @@ var getShadowCSS = (value) => {
1277
1332
  return preset?.css ?? "none";
1278
1333
  };
1279
1334
 
1280
- // components/page/Section.tsx
1281
- var import_jsx_runtime10 = require("react/jsx-runtime");
1335
+ // components/page/primitives/Section.ts
1282
1336
  function isThemeableValue7(value) {
1283
1337
  return typeof value === "object" && value !== null && "useTheme" in value;
1284
1338
  }
@@ -1310,6 +1364,20 @@ function getVisibilityClasses(visibility) {
1310
1364
  }
1311
1365
  return "";
1312
1366
  }
1367
+ function getSectionStyle(verticalPadding, horizontalPadding, gap, backgroundColor, backgroundImage, shadow, borderRadius) {
1368
+ return {
1369
+ padding: `${verticalPadding}px ${horizontalPadding}px`,
1370
+ gap: `${gap}px`,
1371
+ backgroundColor,
1372
+ backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
1373
+ backgroundSize: "cover",
1374
+ backgroundPosition: "center",
1375
+ borderRadius: `${borderRadius}px`
1376
+ };
1377
+ }
1378
+
1379
+ // components/page/next/Section.tsx
1380
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1313
1381
  function Section({
1314
1382
  children: _children,
1315
1383
  verticalPadding = 48,
@@ -1326,28 +1394,30 @@ function Section({
1326
1394
  }) {
1327
1395
  const { resolveColor: resolveColor2 } = useTheme();
1328
1396
  const DropZone = puck?.renderDropZone;
1329
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1397
+ const style = {
1398
+ ...getSectionStyle(
1399
+ verticalPadding,
1400
+ horizontalPadding,
1401
+ gap,
1402
+ resolveBackgroundColor(backgroundColor, resolveColor2),
1403
+ backgroundImage,
1404
+ shadow,
1405
+ borderRadius
1406
+ ),
1407
+ boxShadow: getShadowCSS(shadow)
1408
+ };
1409
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1330
1410
  "section",
1331
1411
  {
1332
1412
  id: anchorLink,
1333
1413
  className: cn("flex w-full flex-col", getVisibilityClasses(visibility)),
1334
- style: {
1335
- padding: `${verticalPadding}px ${horizontalPadding}px`,
1336
- gap: `${gap}px`,
1337
- backgroundColor: resolveBackgroundColor(backgroundColor, resolveColor2),
1338
- backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0,
1339
- backgroundSize: "cover",
1340
- backgroundPosition: "center",
1341
- boxShadow: getShadowCSS(shadow),
1342
- borderRadius: `${borderRadius}px`
1343
- },
1344
- 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" }) })
1414
+ style,
1415
+ 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" }) })
1345
1416
  }
1346
1417
  );
1347
1418
  }
1348
1419
 
1349
- // components/page/Container.tsx
1350
- var import_jsx_runtime11 = require("react/jsx-runtime");
1420
+ // components/page/primitives/Container.ts
1351
1421
  var maxWidthMap2 = {
1352
1422
  sm: "640px",
1353
1423
  md: "768px",
@@ -1366,6 +1436,22 @@ var paddingMap = {
1366
1436
  function isThemeableValue8(value) {
1367
1437
  return typeof value === "object" && value !== null && "useTheme" in value;
1368
1438
  }
1439
+ function getContainerStyle2(maxWidth, paddingX, paddingY, centered, backgroundColor) {
1440
+ return {
1441
+ maxWidth: maxWidthMap2[maxWidth],
1442
+ marginLeft: centered ? "auto" : void 0,
1443
+ marginRight: centered ? "auto" : void 0,
1444
+ paddingLeft: paddingMap[paddingX],
1445
+ paddingRight: paddingMap[paddingX],
1446
+ paddingTop: paddingMap[paddingY],
1447
+ paddingBottom: paddingMap[paddingY],
1448
+ backgroundColor,
1449
+ width: "100%"
1450
+ };
1451
+ }
1452
+
1453
+ // components/page/next/Container.tsx
1454
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1369
1455
  function Container({
1370
1456
  maxWidth = "lg",
1371
1457
  padding,
@@ -1390,22 +1476,17 @@ function Container({
1390
1476
  })();
1391
1477
  const effectivePaddingX = padding || paddingX;
1392
1478
  const effectivePaddingY = padding || paddingY;
1393
- const style = {
1394
- maxWidth: maxWidthMap2[maxWidth],
1395
- marginLeft: centered ? "auto" : void 0,
1396
- marginRight: centered ? "auto" : void 0,
1397
- paddingLeft: paddingMap[effectivePaddingX],
1398
- paddingRight: paddingMap[effectivePaddingX],
1399
- paddingTop: paddingMap[effectivePaddingY],
1400
- paddingBottom: paddingMap[effectivePaddingY],
1401
- backgroundColor: resolvedBgColor ? hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity) : void 0,
1402
- width: "100%"
1403
- };
1404
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropZone, { zone: "container-content" }) });
1479
+ const style = getContainerStyle2(
1480
+ maxWidth,
1481
+ effectivePaddingX,
1482
+ effectivePaddingY,
1483
+ centered,
1484
+ resolvedBgColor ? hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity) : void 0
1485
+ );
1486
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropZone, { zone: "container-content" }) });
1405
1487
  }
1406
1488
 
1407
- // components/page/Columns.tsx
1408
- var import_jsx_runtime12 = require("react/jsx-runtime");
1489
+ // components/page/primitives/Columns.ts
1409
1490
  var gapMap = {
1410
1491
  none: "0",
1411
1492
  sm: "16px",
@@ -1419,6 +1500,17 @@ var alignMap = {
1419
1500
  bottom: "flex-end",
1420
1501
  stretch: "stretch"
1421
1502
  };
1503
+ function getContainerStyle3(columns, gap, verticalAlign) {
1504
+ return {
1505
+ display: "grid",
1506
+ gridTemplateColumns: `repeat(${columns}, 1fr)`,
1507
+ gap: gapMap[gap],
1508
+ alignItems: alignMap[verticalAlign]
1509
+ };
1510
+ }
1511
+
1512
+ // components/page/next/Columns.tsx
1513
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1422
1514
  function Columns({
1423
1515
  columns = 2,
1424
1516
  gap = "md",
@@ -1428,17 +1520,11 @@ function Columns({
1428
1520
  puck
1429
1521
  }) {
1430
1522
  const DropZone = puck?.renderDropZone;
1431
- const containerStyle = {
1432
- display: "grid",
1433
- gridTemplateColumns: `repeat(${columns}, 1fr)`,
1434
- gap: gapMap[gap],
1435
- alignItems: alignMap[verticalAlign]
1436
- };
1437
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id, style: containerStyle, children: Array.from({ length: columns }).map((_, index2) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { minWidth: 0 }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropZone, { zone: `column-${index2}` }) }, index2)) });
1523
+ const containerStyle = getContainerStyle3(columns, gap, verticalAlign);
1524
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { id, style: containerStyle, children: Array.from({ length: columns }).map((_, index2) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { minWidth: 0 }, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: `column-${index2}` }) }, index2)) });
1438
1525
  }
1439
1526
 
1440
- // components/page/Card.tsx
1441
- var import_jsx_runtime13 = require("react/jsx-runtime");
1527
+ // components/page/primitives/Card.ts
1442
1528
  var borderWidthMap = {
1443
1529
  none: "0",
1444
1530
  thin: "1px",
@@ -1469,6 +1555,18 @@ var paddingMap2 = {
1469
1555
  function isThemeableValue9(value) {
1470
1556
  return typeof value === "object" && value !== null && "useTheme" in value;
1471
1557
  }
1558
+ function getCardStyle(backgroundColor, borderColor, borderWidth, borderRadius, shadow, padding) {
1559
+ return {
1560
+ backgroundColor,
1561
+ border: borderWidth !== "none" ? `${borderWidthMap[borderWidth]} solid ${borderColor}` : "none",
1562
+ borderRadius: radiusMap5[borderRadius],
1563
+ boxShadow: shadowMap2[shadow],
1564
+ padding: paddingMap2[padding]
1565
+ };
1566
+ }
1567
+
1568
+ // components/page/next/Card.tsx
1569
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1472
1570
  function Card({
1473
1571
  backgroundColor,
1474
1572
  borderColor,
@@ -1501,18 +1599,18 @@ function Card({
1501
1599
  if ("color" in borderColor) return borderColor;
1502
1600
  return resolveColor2("muted");
1503
1601
  })();
1504
- const style = {
1505
- backgroundColor: hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity),
1506
- border: borderWidth !== "none" ? `${borderWidthMap[borderWidth]} solid ${hexToRgba(resolvedBorderColor.color, resolvedBorderColor.opacity)}` : "none",
1507
- borderRadius: radiusMap5[borderRadius],
1508
- boxShadow: shadowMap2[shadow],
1509
- padding: paddingMap2[padding]
1510
- };
1511
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: "card-content" }) });
1602
+ const style = getCardStyle(
1603
+ hexToRgba(resolvedBgColor.color, resolvedBgColor.opacity),
1604
+ hexToRgba(resolvedBorderColor.color, resolvedBorderColor.opacity),
1605
+ borderWidth,
1606
+ borderRadius,
1607
+ shadow,
1608
+ padding
1609
+ );
1610
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id, style, children: DropZone && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZone, { zone: "card-content" }) });
1512
1611
  }
1513
1612
 
1514
- // components/page/Divider.tsx
1515
- var import_jsx_runtime14 = require("react/jsx-runtime");
1613
+ // components/page/primitives/Divider.ts
1516
1614
  var thicknessMap = {
1517
1615
  thin: "1px",
1518
1616
  medium: "2px",
@@ -1533,6 +1631,24 @@ var spacingMap = {
1533
1631
  function isThemeableValue10(value) {
1534
1632
  return typeof value === "object" && value !== null && "useTheme" in value;
1535
1633
  }
1634
+ function getWrapperStyle4(align, spacing) {
1635
+ return {
1636
+ display: "flex",
1637
+ justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
1638
+ padding: `${spacingMap[spacing]} 0`
1639
+ };
1640
+ }
1641
+ function getHrStyle(width, thickness, lineStyle, color) {
1642
+ return {
1643
+ width: widthMap2[width],
1644
+ border: "none",
1645
+ borderTop: `${thicknessMap[thickness]} ${lineStyle} ${color}`,
1646
+ margin: 0
1647
+ };
1648
+ }
1649
+
1650
+ // components/page/next/Divider.tsx
1651
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1536
1652
  function Divider({
1537
1653
  style: lineStyle = "solid",
1538
1654
  thickness = "thin",
@@ -1552,22 +1668,17 @@ function Divider({
1552
1668
  if ("color" in color) return color;
1553
1669
  return resolveColor2("muted");
1554
1670
  })();
1555
- const wrapperStyle = {
1556
- display: "flex",
1557
- justifyContent: align === "left" ? "flex-start" : align === "right" ? "flex-end" : "center",
1558
- padding: `${spacingMap[spacing]} 0`
1559
- };
1560
- const hrStyle = {
1561
- width: widthMap2[width],
1562
- border: "none",
1563
- borderTop: `${thicknessMap[thickness]} ${lineStyle} ${hexToRgba(resolvedColor.color, resolvedColor.opacity)}`,
1564
- margin: 0
1565
- };
1566
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("hr", { style: hrStyle }) });
1671
+ const wrapperStyle = getWrapperStyle4(align, spacing);
1672
+ const hrStyle = getHrStyle(
1673
+ width,
1674
+ thickness,
1675
+ lineStyle,
1676
+ hexToRgba(resolvedColor.color, resolvedColor.opacity)
1677
+ );
1678
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { id, style: wrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("hr", { style: hrStyle }) });
1567
1679
  }
1568
1680
 
1569
- // components/page/Spacer.tsx
1570
- var import_jsx_runtime15 = require("react/jsx-runtime");
1681
+ // components/page/primitives/Spacer.ts
1571
1682
  var sizeMap2 = {
1572
1683
  xs: "8px",
1573
1684
  sm: "16px",
@@ -1577,16 +1688,19 @@ var sizeMap2 = {
1577
1688
  "2xl": "64px",
1578
1689
  "3xl": "96px"
1579
1690
  };
1691
+
1692
+ // components/page/next/Spacer.tsx
1693
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1580
1694
  function Spacer({ size: size4 = "md", id }) {
1581
1695
  const style = {
1582
1696
  height: sizeMap2[size4],
1583
1697
  width: "100%"
1584
1698
  };
1585
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { id, style, "aria-hidden": "true" });
1699
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { id, style, "aria-hidden": "true" });
1586
1700
  }
1587
1701
 
1588
1702
  // components/page/TextBlock.tsx
1589
- var import_jsx_runtime16 = require("react/jsx-runtime");
1703
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1590
1704
  var alignmentMap = {
1591
1705
  left: "text-left",
1592
1706
  center: "text-center",
@@ -1672,13 +1786,13 @@ function TextBlock({
1672
1786
  WebkitTextFillColor: "transparent",
1673
1787
  backgroundClip: "text"
1674
1788
  } : { color: titleColorValue };
1675
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1789
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1676
1790
  "div",
1677
1791
  {
1678
1792
  id: anchorLink,
1679
1793
  className: cn("flex flex-col gap-4", alignmentMap[alignment]),
1680
1794
  children: [
1681
- resolvedTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1795
+ resolvedTitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1682
1796
  "h2",
1683
1797
  {
1684
1798
  className: cn("font-bold", sizeMap3[textSize]),
@@ -1686,8 +1800,8 @@ function TextBlock({
1686
1800
  children: resolvedTitle
1687
1801
  }
1688
1802
  ),
1689
- resolvedSubtitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xl", style: { color: subtitleColorValue }, children: resolvedSubtitle }),
1690
- resolvedBody && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1803
+ resolvedSubtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xl", style: { color: subtitleColorValue }, children: resolvedSubtitle }),
1804
+ resolvedBody && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1691
1805
  "div",
1692
1806
  {
1693
1807
  className: "prose max-w-none",
@@ -1701,7 +1815,7 @@ function TextBlock({
1701
1815
  }
1702
1816
 
1703
1817
  // components/page/CustomImage.tsx
1704
- var import_jsx_runtime17 = require("react/jsx-runtime");
1818
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1705
1819
  var alignmentMap2 = {
1706
1820
  left: "mr-auto",
1707
1821
  center: "mx-auto",
@@ -1715,9 +1829,9 @@ function CustomImage({
1715
1829
  fitContent = false
1716
1830
  }) {
1717
1831
  if (!image) {
1718
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex h-48 w-full items-center justify-center bg-gray-200 text-gray-400", children: "No image" });
1832
+ 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" });
1719
1833
  }
1720
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1834
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1721
1835
  "img",
1722
1836
  {
1723
1837
  src: image,
@@ -1734,7 +1848,7 @@ function CustomImage({
1734
1848
 
1735
1849
  // components/page/FeaturesList.tsx
1736
1850
  var import_lucide_react = require("lucide-react");
1737
- var import_jsx_runtime18 = require("react/jsx-runtime");
1851
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1738
1852
  var sizeMap4 = {
1739
1853
  small: { icon: 24, title: "text-base", desc: "text-sm" },
1740
1854
  medium: { icon: 32, title: "text-lg", desc: "text-base" },
@@ -1752,7 +1866,7 @@ function FeaturesList({
1752
1866
  const formatted = iconName.charAt(0).toUpperCase() + iconName.slice(1);
1753
1867
  return import_lucide_react.icons[formatted] || null;
1754
1868
  };
1755
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1869
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1756
1870
  "div",
1757
1871
  {
1758
1872
  id: anchorLink,
@@ -1763,7 +1877,7 @@ function FeaturesList({
1763
1877
  ),
1764
1878
  children: features.map((feature, index2) => {
1765
1879
  const IconComponent = feature.icon ? getIcon(feature.icon) : null;
1766
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1880
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1767
1881
  "div",
1768
1882
  {
1769
1883
  className: cn(
@@ -1772,7 +1886,7 @@ function FeaturesList({
1772
1886
  align === "right" && "flex-row-reverse"
1773
1887
  ),
1774
1888
  children: [
1775
- feature.image ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1889
+ feature.image ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1776
1890
  "img",
1777
1891
  {
1778
1892
  src: feature.image,
@@ -1780,7 +1894,7 @@ function FeaturesList({
1780
1894
  className: "object-contain",
1781
1895
  style: { width: sizeConfig.icon, height: sizeConfig.icon }
1782
1896
  }
1783
- ) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1897
+ ) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1784
1898
  IconComponent,
1785
1899
  {
1786
1900
  size: sizeConfig.icon,
@@ -1788,9 +1902,9 @@ function FeaturesList({
1788
1902
  className: "flex-shrink-0"
1789
1903
  }
1790
1904
  ) : null,
1791
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1", children: [
1792
- feature.title && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { className: cn("font-semibold", sizeConfig.title), children: feature.title }),
1793
- feature.description && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
1905
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col gap-1", children: [
1906
+ feature.title && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h3", { className: cn("font-semibold", sizeConfig.title), children: feature.title }),
1907
+ feature.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
1794
1908
  ] })
1795
1909
  ]
1796
1910
  },
@@ -1803,7 +1917,7 @@ function FeaturesList({
1803
1917
 
1804
1918
  // components/page/FeatureGrid.tsx
1805
1919
  var import_lucide_react2 = require("lucide-react");
1806
- var import_jsx_runtime19 = require("react/jsx-runtime");
1920
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1807
1921
  var sizeMap5 = {
1808
1922
  small: { icon: 24, title: "text-base", desc: "text-sm" },
1809
1923
  medium: { icon: 32, title: "text-lg", desc: "text-base" },
@@ -1830,8 +1944,8 @@ function FeatureGrid({
1830
1944
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
1831
1945
  4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
1832
1946
  };
1833
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { id: anchorLink, className: "flex flex-col gap-8", children: [
1834
- (heading || description) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1947
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { id: anchorLink, className: "flex flex-col gap-8", children: [
1948
+ (heading || description) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1835
1949
  "div",
1836
1950
  {
1837
1951
  className: cn(
@@ -1840,14 +1954,14 @@ function FeatureGrid({
1840
1954
  align === "right" && "text-right"
1841
1955
  ),
1842
1956
  children: [
1843
- heading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: "text-3xl font-bold", style: { color: textColor }, children: heading }),
1844
- description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-gray-600", children: description })
1957
+ heading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h2", { className: "text-3xl font-bold", style: { color: textColor }, children: heading }),
1958
+ description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-gray-600", children: description })
1845
1959
  ]
1846
1960
  }
1847
1961
  ),
1848
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("grid gap-6", columnClass[columns]), children: features.map((feature, index2) => {
1962
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("grid gap-6", columnClass[columns]), children: features.map((feature, index2) => {
1849
1963
  const IconComponent = feature.icon ? getIcon(feature.icon) : null;
1850
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1964
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1851
1965
  "div",
1852
1966
  {
1853
1967
  className: cn(
@@ -1855,7 +1969,7 @@ function FeatureGrid({
1855
1969
  align === "center" && "items-center text-center"
1856
1970
  ),
1857
1971
  children: [
1858
- feature.image ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1972
+ feature.image ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1859
1973
  "img",
1860
1974
  {
1861
1975
  src: feature.image,
@@ -1863,14 +1977,14 @@ function FeatureGrid({
1863
1977
  className: "object-contain",
1864
1978
  style: { width: sizeConfig.icon, height: sizeConfig.icon }
1865
1979
  }
1866
- ) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1980
+ ) : IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1867
1981
  IconComponent,
1868
1982
  {
1869
1983
  size: sizeConfig.icon,
1870
1984
  style: { color: iconColor }
1871
1985
  }
1872
1986
  ) : null,
1873
- feature.title && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1987
+ feature.title && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1874
1988
  "h3",
1875
1989
  {
1876
1990
  className: cn("font-semibold", sizeConfig.title),
@@ -1878,7 +1992,7 @@ function FeatureGrid({
1878
1992
  children: feature.title
1879
1993
  }
1880
1994
  ),
1881
- feature.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
1995
+ feature.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: cn("text-gray-600", sizeConfig.desc), children: feature.description })
1882
1996
  ]
1883
1997
  },
1884
1998
  index2
@@ -1889,7 +2003,7 @@ function FeatureGrid({
1889
2003
 
1890
2004
  // components/page/Footer.tsx
1891
2005
  var import_lucide_react3 = require("lucide-react");
1892
- var import_jsx_runtime20 = require("react/jsx-runtime");
2006
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1893
2007
  function Footer({
1894
2008
  logo,
1895
2009
  copyright = "\xA9 2024 Company. All rights reserved.",
@@ -1924,15 +2038,15 @@ function Footer({
1924
2038
  ].filter(
1925
2039
  (link) => !!link.url
1926
2040
  );
1927
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2041
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1928
2042
  "footer",
1929
2043
  {
1930
2044
  className: "w-full px-6 py-8",
1931
2045
  style: { backgroundColor, color: textColor },
1932
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "mx-auto flex max-w-7xl flex-col items-center justify-between gap-6 md:flex-row", children: [
1933
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center gap-4", children: logo && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: logo, alt: "Logo", className: "h-8" }) }),
1934
- DropZone && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropZone, { zone: "footer-content" }),
1935
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center gap-4", children: socialLinks.map(({ url, Icon: Icon4 }, index2) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2046
+ 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: [
2047
+ /* @__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" }) }),
2048
+ DropZone && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: "footer-content" }),
2049
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex items-center gap-4", children: socialLinks.map(({ url, Icon: Icon4 }, index2) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1936
2050
  "a",
1937
2051
  {
1938
2052
  href: url,
@@ -1940,11 +2054,11 @@ function Footer({
1940
2054
  rel: "noopener noreferrer",
1941
2055
  className: "transition-opacity hover:opacity-80",
1942
2056
  onClick: () => handleSocialClick(url),
1943
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Icon4, { size: 24, style: { color: textColor } })
2057
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon4, { size: 24, style: { color: textColor } })
1944
2058
  },
1945
2059
  index2
1946
2060
  )) }),
1947
- copyright && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-sm opacity-80", children: copyright })
2061
+ copyright && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "text-sm opacity-80", children: copyright })
1948
2062
  ] })
1949
2063
  }
1950
2064
  );
@@ -1953,7 +2067,7 @@ function Footer({
1953
2067
  // components/page/Topbar.tsx
1954
2068
  var import_react5 = require("react");
1955
2069
  var import_lucide_react4 = require("lucide-react");
1956
- var import_jsx_runtime21 = require("react/jsx-runtime");
2070
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1957
2071
  function Topbar({
1958
2072
  logo,
1959
2073
  logoUrl = "/",
@@ -1986,7 +2100,7 @@ function Topbar({
1986
2100
  const renderLink = (item, index2) => {
1987
2101
  const className = "hover:opacity-80 transition-opacity";
1988
2102
  if (item.linkType === "external") {
1989
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2103
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1990
2104
  "a",
1991
2105
  {
1992
2106
  href: item.url,
@@ -2000,7 +2114,7 @@ function Topbar({
2000
2114
  );
2001
2115
  }
2002
2116
  if (item.linkType === "scrollTo") {
2003
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2117
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2004
2118
  "a",
2005
2119
  {
2006
2120
  href: item.url,
@@ -2011,7 +2125,7 @@ function Topbar({
2011
2125
  index2
2012
2126
  );
2013
2127
  }
2014
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2128
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2015
2129
  "a",
2016
2130
  {
2017
2131
  href: item.url,
@@ -2022,19 +2136,19 @@ function Topbar({
2022
2136
  index2
2023
2137
  );
2024
2138
  };
2025
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2139
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2026
2140
  "nav",
2027
2141
  {
2028
2142
  className: "sticky top-0 z-50 w-full px-6 py-4",
2029
2143
  style: { backgroundColor, color: textColor },
2030
2144
  children: [
2031
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2145
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2032
2146
  "div",
2033
2147
  {
2034
2148
  className: "mx-auto flex items-center justify-between",
2035
2149
  style: { maxWidth },
2036
2150
  children: [
2037
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2151
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2038
2152
  "a",
2039
2153
  {
2040
2154
  href: logoUrl,
@@ -2045,25 +2159,25 @@ function Topbar({
2045
2159
  linkType: "internal",
2046
2160
  ...utm
2047
2161
  }),
2048
- children: logo ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("img", { src: logo, alt: "Logo", className: "h-8" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-xl font-bold", children: "Logo" })
2162
+ 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" })
2049
2163
  }
2050
2164
  ),
2051
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "hidden items-center gap-8 md:flex", children: [
2165
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "hidden items-center gap-8 md:flex", children: [
2052
2166
  navItems.map(renderLink),
2053
- DropZone && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: "cta" })
2167
+ DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
2054
2168
  ] }),
2055
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("button", { className: "md:hidden", onClick: handleMobileMenuToggle, children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react4.X, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react4.Menu, { size: 24 }) })
2169
+ /* @__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 }) })
2056
2170
  ]
2057
2171
  }
2058
2172
  ),
2059
- mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2173
+ mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2060
2174
  "div",
2061
2175
  {
2062
2176
  className: "absolute top-full right-0 left-0 flex flex-col gap-4 px-6 py-4 md:hidden",
2063
2177
  style: { backgroundColor },
2064
2178
  children: [
2065
2179
  navItems.map(renderLink),
2066
- DropZone && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: "cta" })
2180
+ DropZone && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: "cta" })
2067
2181
  ]
2068
2182
  }
2069
2183
  )
@@ -2075,12 +2189,12 @@ function Topbar({
2075
2189
  // components/page/Popup.tsx
2076
2190
  var import_react6 = require("react");
2077
2191
  var import_lucide_react5 = require("lucide-react");
2078
- var import_jsx_runtime22 = require("react/jsx-runtime");
2192
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2079
2193
  function Icon2({ name, ...props }) {
2080
2194
  const formatted = name.charAt(0).toUpperCase() + name.slice(1);
2081
2195
  const IconComponent = import_lucide_react5.icons[formatted];
2082
2196
  if (!IconComponent) return null;
2083
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconComponent, { ...props });
2197
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(IconComponent, { ...props });
2084
2198
  }
2085
2199
  var widthMap3 = {
2086
2200
  small: "max-w-sm",
@@ -2118,7 +2232,7 @@ function Popup({
2118
2232
  setIsOpen(false);
2119
2233
  sendEvent("popup_close", { ctaText, ...utm });
2120
2234
  };
2121
- const trigger = textLink ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2235
+ const trigger = textLink ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2122
2236
  "button",
2123
2237
  {
2124
2238
  onClick: handleOpen,
@@ -2126,7 +2240,7 @@ function Popup({
2126
2240
  style: { color: buttonColor },
2127
2241
  children: ctaText
2128
2242
  }
2129
- ) : /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2243
+ ) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2130
2244
  "button",
2131
2245
  {
2132
2246
  onClick: handleOpen,
@@ -2136,20 +2250,20 @@ function Popup({
2136
2250
  ),
2137
2251
  style: { backgroundColor: buttonColor, color: textColor },
2138
2252
  children: [
2139
- icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icon2, { name: icon, size: 18 }),
2253
+ icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 }),
2140
2254
  ctaText,
2141
- icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icon2, { name: icon, size: 18 })
2255
+ icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon2, { name: icon, size: 18 })
2142
2256
  ]
2143
2257
  }
2144
2258
  );
2145
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
2259
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
2146
2260
  trigger,
2147
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2261
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2148
2262
  "div",
2149
2263
  {
2150
2264
  className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
2151
2265
  onClick: handleClose,
2152
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2266
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2153
2267
  "div",
2154
2268
  {
2155
2269
  className: cn(
@@ -2158,15 +2272,15 @@ function Popup({
2158
2272
  ),
2159
2273
  onClick: (e) => e.stopPropagation(),
2160
2274
  children: [
2161
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2275
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2162
2276
  "button",
2163
2277
  {
2164
2278
  onClick: handleClose,
2165
2279
  className: "absolute top-4 right-4 text-gray-500 hover:text-gray-700",
2166
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react5.X, { size: 24 })
2280
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react5.X, { size: 24 })
2167
2281
  }
2168
2282
  ),
2169
- puck && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(puck.renderDropZone, { zone: "popup-content" })
2283
+ puck && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(puck.renderDropZone, { zone: "popup-content" })
2170
2284
  ]
2171
2285
  }
2172
2286
  )
@@ -2182,7 +2296,7 @@ var import_lucide_react6 = require("lucide-react");
2182
2296
  // shadcn/button.tsx
2183
2297
  var import_react_slot = require("@radix-ui/react-slot");
2184
2298
  var import_class_variance_authority = require("class-variance-authority");
2185
- var import_jsx_runtime23 = require("react/jsx-runtime");
2299
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2186
2300
  var buttonVariants = (0, import_class_variance_authority.cva)(
2187
2301
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
2188
2302
  {
@@ -2220,7 +2334,7 @@ function Button2({
2220
2334
  ...props
2221
2335
  }) {
2222
2336
  const Comp = asChild ? import_react_slot.Slot : "button";
2223
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2337
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2224
2338
  Comp,
2225
2339
  {
2226
2340
  "data-slot": "button",
@@ -2233,9 +2347,9 @@ function Button2({
2233
2347
  }
2234
2348
 
2235
2349
  // shadcn/input.tsx
2236
- var import_jsx_runtime24 = require("react/jsx-runtime");
2350
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2237
2351
  function Input({ className, type, ...props }) {
2238
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2352
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2239
2353
  "input",
2240
2354
  {
2241
2355
  type,
@@ -2253,12 +2367,12 @@ function Input({ className, type, ...props }) {
2253
2367
 
2254
2368
  // shadcn/label.tsx
2255
2369
  var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
2256
- var import_jsx_runtime25 = require("react/jsx-runtime");
2370
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2257
2371
  function Label({
2258
2372
  className,
2259
2373
  ...props
2260
2374
  }) {
2261
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2375
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2262
2376
  LabelPrimitive.Root,
2263
2377
  {
2264
2378
  "data-slot": "label",
@@ -2274,7 +2388,7 @@ function Label({
2274
2388
  // shadcn/slider.tsx
2275
2389
  var React = __toESM(require("react"));
2276
2390
  var import_radix_ui = require("radix-ui");
2277
- var import_jsx_runtime26 = require("react/jsx-runtime");
2391
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2278
2392
  function Slider({
2279
2393
  className,
2280
2394
  defaultValue,
@@ -2287,7 +2401,7 @@ function Slider({
2287
2401
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min2, max2],
2288
2402
  [value, defaultValue, min2, max2]
2289
2403
  );
2290
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2404
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2291
2405
  import_radix_ui.Slider.Root,
2292
2406
  {
2293
2407
  "data-slot": "slider",
@@ -2301,14 +2415,14 @@ function Slider({
2301
2415
  ),
2302
2416
  ...props,
2303
2417
  children: [
2304
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2418
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2305
2419
  import_radix_ui.Slider.Track,
2306
2420
  {
2307
2421
  "data-slot": "slider-track",
2308
2422
  className: cn(
2309
2423
  "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
2310
2424
  ),
2311
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2425
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2312
2426
  import_radix_ui.Slider.Range,
2313
2427
  {
2314
2428
  "data-slot": "slider-range",
@@ -2319,7 +2433,7 @@ function Slider({
2319
2433
  )
2320
2434
  }
2321
2435
  ),
2322
- Array.from({ length: _values.length }, (_, index2) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2436
+ Array.from({ length: _values.length }, (_, index2) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2323
2437
  import_radix_ui.Slider.Thumb,
2324
2438
  {
2325
2439
  "data-slot": "slider-thumb",
@@ -2335,7 +2449,7 @@ function Slider({
2335
2449
  // shadcn/toggle.tsx
2336
2450
  var import_class_variance_authority2 = require("class-variance-authority");
2337
2451
  var import_radix_ui2 = require("radix-ui");
2338
- var import_jsx_runtime27 = require("react/jsx-runtime");
2452
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2339
2453
  var toggleVariants = (0, import_class_variance_authority2.cva)(
2340
2454
  "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
2341
2455
  {
@@ -2362,7 +2476,7 @@ function Toggle({
2362
2476
  size: size4,
2363
2477
  ...props
2364
2478
  }) {
2365
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2479
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2366
2480
  import_radix_ui2.Toggle.Root,
2367
2481
  {
2368
2482
  "data-slot": "toggle",
@@ -2390,7 +2504,7 @@ var getClosestBorderRadiusValue = (value) => {
2390
2504
  };
2391
2505
 
2392
2506
  // fields/BorderRadiusField.tsx
2393
- var import_jsx_runtime28 = require("react/jsx-runtime");
2507
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2394
2508
  var MAX_VALUE = borderRadiusScale[borderRadiusScale.length - 1].value;
2395
2509
  function BorderRadiusField({
2396
2510
  value,
@@ -2432,10 +2546,10 @@ function BorderRadiusField({
2432
2546
  (s) => s.value === currentValue
2433
2547
  );
2434
2548
  const displayLabel = matchingPreset?.label ?? "Custom";
2435
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-col gap-3", children: [
2436
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center justify-between", children: [
2437
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Label, { className: "text-sm font-medium", children: label }),
2438
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2549
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-col gap-3", children: [
2550
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center justify-between", children: [
2551
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Label, { className: "text-sm font-medium", children: label }),
2552
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2439
2553
  Toggle,
2440
2554
  {
2441
2555
  pressed: quantized,
@@ -2444,13 +2558,13 @@ function BorderRadiusField({
2444
2558
  variant: "outline",
2445
2559
  "aria-label": "Snap to grid",
2446
2560
  title: quantized ? "Snap to grid (on)" : "Snap to grid (off)",
2447
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react6.Magnet, { className: "size-3.5" })
2561
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react6.Magnet, { className: "size-3.5" })
2448
2562
  }
2449
2563
  )
2450
2564
  ] }),
2451
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
2452
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-muted-foreground flex-1 text-sm", children: displayLabel }),
2453
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2565
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center gap-2", children: [
2566
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-muted-foreground flex-1 text-sm", children: displayLabel }),
2567
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2454
2568
  Input,
2455
2569
  {
2456
2570
  type: "number",
@@ -2462,9 +2576,9 @@ function BorderRadiusField({
2462
2576
  max: MAX_VALUE
2463
2577
  }
2464
2578
  ),
2465
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-muted-foreground text-xs", children: "px" })
2579
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-muted-foreground text-xs", children: "px" })
2466
2580
  ] }),
2467
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2581
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2468
2582
  Slider,
2469
2583
  {
2470
2584
  value: [currentValue],
@@ -2475,7 +2589,7 @@ function BorderRadiusField({
2475
2589
  disabled
2476
2590
  }
2477
2591
  ),
2478
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex flex-wrap gap-1", children: borderRadiusScale.map((preset) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2592
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex flex-wrap gap-1", children: borderRadiusScale.map((preset) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2479
2593
  Button2,
2480
2594
  {
2481
2595
  type: "button",
@@ -2493,7 +2607,7 @@ function BorderRadiusField({
2493
2607
  // fields/ColorPickerField.tsx
2494
2608
  var import_react8 = require("react");
2495
2609
  var import_lucide_react7 = require("lucide-react");
2496
- var import_jsx_runtime29 = require("react/jsx-runtime");
2610
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2497
2611
  function ColorPickerField({
2498
2612
  value,
2499
2613
  onChangeAction,
@@ -2516,19 +2630,19 @@ function ColorPickerField({
2516
2630
  const handleOpacityChange = (values) => {
2517
2631
  onChangeAction({ color: currentColor, opacity: values[0] });
2518
2632
  };
2519
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-col gap-3", children: [
2633
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-col gap-3", children: [
2520
2634
  label,
2521
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { children: [
2522
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Label, { className: "text-muted-foreground mb-1.5 text-xs", children: "Custom" }),
2523
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center gap-2", children: [
2524
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2635
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { children: [
2636
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Label, { className: "text-muted-foreground mb-1.5 text-xs", children: "Custom" }),
2637
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
2638
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2525
2639
  "label",
2526
2640
  {
2527
2641
  className: "border-input relative size-9 shrink-0 cursor-pointer rounded-md border transition-transform hover:scale-105",
2528
2642
  style: {
2529
2643
  backgroundColor: hexToRgba(currentColor, currentOpacity)
2530
2644
  },
2531
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2645
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2532
2646
  "input",
2533
2647
  {
2534
2648
  type: "color",
@@ -2544,7 +2658,7 @@ function ColorPickerField({
2544
2658
  )
2545
2659
  }
2546
2660
  ),
2547
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2661
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2548
2662
  Input,
2549
2663
  {
2550
2664
  type: "text",
@@ -2560,15 +2674,15 @@ function ColorPickerField({
2560
2674
  )
2561
2675
  ] })
2562
2676
  ] }),
2563
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { children: [
2564
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "mb-1.5 flex items-center justify-between", children: [
2565
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Label, { className: "text-muted-foreground text-xs", children: "Opacity" }),
2566
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("span", { className: "text-muted-foreground text-xs", children: [
2677
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { children: [
2678
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "mb-1.5 flex items-center justify-between", children: [
2679
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Label, { className: "text-muted-foreground text-xs", children: "Opacity" }),
2680
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "text-muted-foreground text-xs", children: [
2567
2681
  currentOpacity,
2568
2682
  "%"
2569
2683
  ] })
2570
2684
  ] }),
2571
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2685
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2572
2686
  Slider,
2573
2687
  {
2574
2688
  value: [currentOpacity],
@@ -2608,7 +2722,7 @@ var import_react9 = __toESM(require("react"), 1);
2608
2722
 
2609
2723
  // node_modules/@radix-ui/react-context/dist/index.mjs
2610
2724
  var React2 = __toESM(require("react"), 1);
2611
- var import_jsx_runtime30 = require("react/jsx-runtime");
2725
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2612
2726
  function createContextScope(scopeName, createContextScopeDeps = []) {
2613
2727
  let defaultContexts = [];
2614
2728
  function createContext32(rootComponentName, defaultContext) {
@@ -2619,7 +2733,7 @@ function createContextScope(scopeName, createContextScopeDeps = []) {
2619
2733
  const { scope, children, ...context } = props;
2620
2734
  const Context = scope?.[scopeName]?.[index2] || BaseContext;
2621
2735
  const value = React2.useMemo(() => context, Object.values(context));
2622
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Context.Provider, { value, children });
2736
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Context.Provider, { value, children });
2623
2737
  };
2624
2738
  Provider.displayName = rootComponentName + "Provider";
2625
2739
  function useContext22(consumerName, scope) {
@@ -2706,10 +2820,10 @@ function useComposedRefs(...refs) {
2706
2820
 
2707
2821
  // node_modules/@radix-ui/react-collection/dist/index.mjs
2708
2822
  var import_react_slot2 = require("@radix-ui/react-slot");
2709
- var import_jsx_runtime31 = require("react/jsx-runtime");
2823
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2710
2824
  var import_react10 = __toESM(require("react"), 1);
2711
2825
  var import_react_slot3 = require("@radix-ui/react-slot");
2712
- var import_jsx_runtime32 = require("react/jsx-runtime");
2826
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2713
2827
  function createCollection(name) {
2714
2828
  const PROVIDER_NAME = name + "CollectionProvider";
2715
2829
  const [createCollectionContext, createCollectionScope2] = createContextScope(PROVIDER_NAME);
@@ -2721,7 +2835,7 @@ function createCollection(name) {
2721
2835
  const { scope, children } = props;
2722
2836
  const ref = import_react9.default.useRef(null);
2723
2837
  const itemMap = import_react9.default.useRef(/* @__PURE__ */ new Map()).current;
2724
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
2838
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
2725
2839
  };
2726
2840
  CollectionProvider.displayName = PROVIDER_NAME;
2727
2841
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
@@ -2731,7 +2845,7 @@ function createCollection(name) {
2731
2845
  const { scope, children } = props;
2732
2846
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
2733
2847
  const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
2734
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CollectionSlotImpl, { ref: composedRefs, children });
2848
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CollectionSlotImpl, { ref: composedRefs, children });
2735
2849
  }
2736
2850
  );
2737
2851
  CollectionSlot.displayName = COLLECTION_SLOT_NAME;
@@ -2748,7 +2862,7 @@ function createCollection(name) {
2748
2862
  context.itemMap.set(ref, { ref, ...itemData });
2749
2863
  return () => void context.itemMap.delete(ref);
2750
2864
  });
2751
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
2865
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
2752
2866
  }
2753
2867
  );
2754
2868
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
@@ -2775,7 +2889,7 @@ function createCollection(name) {
2775
2889
 
2776
2890
  // node_modules/@radix-ui/react-direction/dist/index.mjs
2777
2891
  var React5 = __toESM(require("react"), 1);
2778
- var import_jsx_runtime33 = require("react/jsx-runtime");
2892
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2779
2893
  var DirectionContext = React5.createContext(void 0);
2780
2894
  function useDirection(localDir) {
2781
2895
  const globalDir = React5.useContext(DirectionContext);
@@ -2789,7 +2903,7 @@ var React9 = __toESM(require("react"), 1);
2789
2903
  var React6 = __toESM(require("react"), 1);
2790
2904
  var ReactDOM = __toESM(require("react-dom"), 1);
2791
2905
  var import_react_slot4 = require("@radix-ui/react-slot");
2792
- var import_jsx_runtime34 = require("react/jsx-runtime");
2906
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2793
2907
  var NODES = [
2794
2908
  "a",
2795
2909
  "button",
@@ -2817,7 +2931,7 @@ var Primitive = NODES.reduce((primitive, node) => {
2817
2931
  if (typeof window !== "undefined") {
2818
2932
  window[/* @__PURE__ */ Symbol.for("radix-ui")] = true;
2819
2933
  }
2820
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
2934
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
2821
2935
  });
2822
2936
  Node2.displayName = `Primitive.${node}`;
2823
2937
  return { ...primitive, [node]: Node2 };
@@ -2852,7 +2966,7 @@ function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.docum
2852
2966
  }
2853
2967
 
2854
2968
  // node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
2855
- var import_jsx_runtime35 = require("react/jsx-runtime");
2969
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2856
2970
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
2857
2971
  var CONTEXT_UPDATE = "dismissableLayer.update";
2858
2972
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -2940,7 +3054,7 @@ var DismissableLayer = React9.forwardRef(
2940
3054
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
2941
3055
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
2942
3056
  }, []);
2943
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3057
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2944
3058
  Primitive.div,
2945
3059
  {
2946
3060
  ...layerProps,
@@ -2974,7 +3088,7 @@ var DismissableLayerBranch = React9.forwardRef((props, forwardedRef) => {
2974
3088
  };
2975
3089
  }
2976
3090
  }, [context.branches]);
2977
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Primitive.div, { ...props, ref: composedRefs });
3091
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Primitive.div, { ...props, ref: composedRefs });
2978
3092
  });
2979
3093
  DismissableLayerBranch.displayName = BRANCH_NAME;
2980
3094
  function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
@@ -3086,7 +3200,7 @@ function createFocusGuard() {
3086
3200
 
3087
3201
  // node_modules/@radix-ui/react-focus-scope/dist/index.mjs
3088
3202
  var React11 = __toESM(require("react"), 1);
3089
- var import_jsx_runtime36 = require("react/jsx-runtime");
3203
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3090
3204
  var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
3091
3205
  var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
3092
3206
  var EVENT_OPTIONS = { bubbles: false, cancelable: true };
@@ -3205,7 +3319,7 @@ var FocusScope = React11.forwardRef((props, forwardedRef) => {
3205
3319
  },
3206
3320
  [loop, trapped, focusScope.paused]
3207
3321
  );
3208
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
3322
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
3209
3323
  });
3210
3324
  FocusScope.displayName = FOCUS_SCOPE_NAME;
3211
3325
  function focusFirst(candidates, { select = false } = {}) {
@@ -5208,11 +5322,11 @@ var arrow3 = (options, deps) => ({
5208
5322
 
5209
5323
  // node_modules/@radix-ui/react-arrow/dist/index.mjs
5210
5324
  var React15 = __toESM(require("react"), 1);
5211
- var import_jsx_runtime37 = require("react/jsx-runtime");
5325
+ var import_jsx_runtime38 = require("react/jsx-runtime");
5212
5326
  var NAME = "Arrow";
5213
5327
  var Arrow = React15.forwardRef((props, forwardedRef) => {
5214
5328
  const { children, width = 10, height = 5, ...arrowProps } = props;
5215
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5329
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5216
5330
  Primitive.svg,
5217
5331
  {
5218
5332
  ...arrowProps,
@@ -5221,7 +5335,7 @@ var Arrow = React15.forwardRef((props, forwardedRef) => {
5221
5335
  height,
5222
5336
  viewBox: "0 0 30 10",
5223
5337
  preserveAspectRatio: "none",
5224
- children: props.asChild ? children : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("polygon", { points: "0,0 30,0 15,10" })
5338
+ children: props.asChild ? children : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("polygon", { points: "0,0 30,0 15,10" })
5225
5339
  }
5226
5340
  );
5227
5341
  });
@@ -5266,14 +5380,14 @@ function useSize(element) {
5266
5380
  }
5267
5381
 
5268
5382
  // node_modules/@radix-ui/react-popper/dist/index.mjs
5269
- var import_jsx_runtime38 = require("react/jsx-runtime");
5383
+ var import_jsx_runtime39 = require("react/jsx-runtime");
5270
5384
  var POPPER_NAME = "Popper";
5271
5385
  var [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);
5272
5386
  var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
5273
5387
  var Popper = (props) => {
5274
5388
  const { __scopePopper, children } = props;
5275
5389
  const [anchor, setAnchor] = React17.useState(null);
5276
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
5390
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
5277
5391
  };
5278
5392
  Popper.displayName = POPPER_NAME;
5279
5393
  var ANCHOR_NAME = "PopperAnchor";
@@ -5291,7 +5405,7 @@ var PopperAnchor = React17.forwardRef(
5291
5405
  context.onAnchorChange(anchorRef.current);
5292
5406
  }
5293
5407
  });
5294
- return virtualRef ? null : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Primitive.div, { ...anchorProps, ref: composedRefs });
5408
+ return virtualRef ? null : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Primitive.div, { ...anchorProps, ref: composedRefs });
5295
5409
  }
5296
5410
  );
5297
5411
  PopperAnchor.displayName = ANCHOR_NAME;
@@ -5384,7 +5498,7 @@ var PopperContent = React17.forwardRef(
5384
5498
  useLayoutEffect2(() => {
5385
5499
  if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
5386
5500
  }, [content]);
5387
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5501
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5388
5502
  "div",
5389
5503
  {
5390
5504
  ref: refs.setFloating,
@@ -5408,7 +5522,7 @@ var PopperContent = React17.forwardRef(
5408
5522
  }
5409
5523
  },
5410
5524
  dir: props.dir,
5411
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5525
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5412
5526
  PopperContentProvider,
5413
5527
  {
5414
5528
  scope: __scopePopper,
@@ -5417,7 +5531,7 @@ var PopperContent = React17.forwardRef(
5417
5531
  arrowX,
5418
5532
  arrowY,
5419
5533
  shouldHideArrow: cannotCenterArrow,
5420
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5534
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5421
5535
  Primitive.div,
5422
5536
  {
5423
5537
  "data-side": placedSide,
@@ -5454,7 +5568,7 @@ var PopperArrow = React17.forwardRef(function PopperArrow2(props, forwardedRef)
5454
5568
  // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)
5455
5569
  // doesn't report size as we'd expect on SVG elements.
5456
5570
  // it reports their bounding box which is effectively the largest path inside the SVG.
5457
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5571
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5458
5572
  "span",
5459
5573
  {
5460
5574
  ref: contentContext.onArrowChange,
@@ -5477,7 +5591,7 @@ var PopperArrow = React17.forwardRef(function PopperArrow2(props, forwardedRef)
5477
5591
  }[contentContext.placedSide],
5478
5592
  visibility: contentContext.shouldHideArrow ? "hidden" : void 0
5479
5593
  },
5480
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5594
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5481
5595
  Root2,
5482
5596
  {
5483
5597
  ...arrowProps,
@@ -5540,14 +5654,14 @@ var Arrow2 = PopperArrow;
5540
5654
  // node_modules/@radix-ui/react-portal/dist/index.mjs
5541
5655
  var React18 = __toESM(require("react"), 1);
5542
5656
  var import_react_dom2 = __toESM(require("react-dom"), 1);
5543
- var import_jsx_runtime39 = require("react/jsx-runtime");
5657
+ var import_jsx_runtime40 = require("react/jsx-runtime");
5544
5658
  var PORTAL_NAME = "Portal";
5545
5659
  var Portal = React18.forwardRef((props, forwardedRef) => {
5546
5660
  const { container: containerProp, ...portalProps } = props;
5547
5661
  const [mounted, setMounted] = React18.useState(false);
5548
5662
  useLayoutEffect2(() => setMounted(true), []);
5549
5663
  const container = containerProp || mounted && globalThis?.document?.body;
5550
- return container ? import_react_dom2.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
5664
+ return container ? import_react_dom2.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
5551
5665
  });
5552
5666
  Portal.displayName = PORTAL_NAME;
5553
5667
 
@@ -5637,7 +5751,7 @@ function usePrevious(value) {
5637
5751
 
5638
5752
  // node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
5639
5753
  var React21 = __toESM(require("react"), 1);
5640
- var import_jsx_runtime40 = require("react/jsx-runtime");
5754
+ var import_jsx_runtime41 = require("react/jsx-runtime");
5641
5755
  var VISUALLY_HIDDEN_STYLES = Object.freeze({
5642
5756
  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
5643
5757
  position: "absolute",
@@ -5654,7 +5768,7 @@ var VISUALLY_HIDDEN_STYLES = Object.freeze({
5654
5768
  var NAME2 = "VisuallyHidden";
5655
5769
  var VisuallyHidden = React21.forwardRef(
5656
5770
  (props, forwardedRef) => {
5657
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
5771
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5658
5772
  Primitive.span,
5659
5773
  {
5660
5774
  ...props,
@@ -6508,7 +6622,7 @@ ReactRemoveScroll.classNames = RemoveScroll.classNames;
6508
6622
  var Combination_default = ReactRemoveScroll;
6509
6623
 
6510
6624
  // node_modules/@radix-ui/react-select/dist/index.mjs
6511
- var import_jsx_runtime41 = require("react/jsx-runtime");
6625
+ var import_jsx_runtime42 = require("react/jsx-runtime");
6512
6626
  var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
6513
6627
  var SELECTION_KEYS = [" ", "Enter"];
6514
6628
  var SELECT_NAME = "Select";
@@ -6558,7 +6672,7 @@ var Select = (props) => {
6558
6672
  const isFormControl = trigger ? form || !!trigger.closest("form") : true;
6559
6673
  const [nativeOptionsSet, setNativeOptionsSet] = React31.useState(/* @__PURE__ */ new Set());
6560
6674
  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
6561
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Root22, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
6675
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Root22, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
6562
6676
  SelectProvider,
6563
6677
  {
6564
6678
  required,
@@ -6578,7 +6692,7 @@ var Select = (props) => {
6578
6692
  triggerPointerDownPosRef,
6579
6693
  disabled,
6580
6694
  children: [
6581
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6695
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6582
6696
  SelectNativeOptionsProvider,
6583
6697
  {
6584
6698
  scope: props.__scopeSelect,
@@ -6595,7 +6709,7 @@ var Select = (props) => {
6595
6709
  children
6596
6710
  }
6597
6711
  ) }),
6598
- isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
6712
+ isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
6599
6713
  SelectBubbleInput,
6600
6714
  {
6601
6715
  "aria-hidden": true,
@@ -6608,7 +6722,7 @@ var Select = (props) => {
6608
6722
  disabled,
6609
6723
  form,
6610
6724
  children: [
6611
- value === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("option", { value: "" }) : null,
6725
+ value === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("option", { value: "" }) : null,
6612
6726
  Array.from(nativeOptionsSet)
6613
6727
  ]
6614
6728
  },
@@ -6649,7 +6763,7 @@ var SelectTrigger = React31.forwardRef(
6649
6763
  };
6650
6764
  }
6651
6765
  };
6652
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6766
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6653
6767
  Primitive.button,
6654
6768
  {
6655
6769
  type: "button",
@@ -6708,13 +6822,13 @@ var SelectValue = React31.forwardRef(
6708
6822
  useLayoutEffect2(() => {
6709
6823
  onValueNodeHasChildrenChange(hasChildren);
6710
6824
  }, [onValueNodeHasChildrenChange, hasChildren]);
6711
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6825
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6712
6826
  Primitive.span,
6713
6827
  {
6714
6828
  ...valueProps,
6715
6829
  ref: composedRefs,
6716
6830
  style: { pointerEvents: "none" },
6717
- children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: placeholder }) : children
6831
+ children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: placeholder }) : children
6718
6832
  }
6719
6833
  );
6720
6834
  }
@@ -6724,13 +6838,13 @@ var ICON_NAME = "SelectIcon";
6724
6838
  var SelectIcon = React31.forwardRef(
6725
6839
  (props, forwardedRef) => {
6726
6840
  const { __scopeSelect, children, ...iconProps } = props;
6727
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "\u25BC" });
6841
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "\u25BC" });
6728
6842
  }
6729
6843
  );
6730
6844
  SelectIcon.displayName = ICON_NAME;
6731
6845
  var PORTAL_NAME2 = "SelectPortal";
6732
6846
  var SelectPortal = (props) => {
6733
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Portal, { asChild: true, ...props });
6847
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Portal, { asChild: true, ...props });
6734
6848
  };
6735
6849
  SelectPortal.displayName = PORTAL_NAME2;
6736
6850
  var CONTENT_NAME2 = "SelectContent";
@@ -6744,11 +6858,11 @@ var SelectContent = React31.forwardRef(
6744
6858
  if (!context.open) {
6745
6859
  const frag = fragment;
6746
6860
  return frag ? ReactDOM4.createPortal(
6747
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { children: props.children }) }) }),
6861
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: props.children }) }) }),
6748
6862
  frag
6749
6863
  ) : null;
6750
6864
  }
6751
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SelectContentImpl, { ...props, ref: forwardedRef });
6865
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectContentImpl, { ...props, ref: forwardedRef });
6752
6866
  }
6753
6867
  );
6754
6868
  SelectContent.displayName = CONTENT_NAME2;
@@ -6902,7 +7016,7 @@ var SelectContentImpl = React31.forwardRef(
6902
7016
  hideWhenDetached,
6903
7017
  avoidCollisions
6904
7018
  } : {};
6905
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7019
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6906
7020
  SelectContentProvider,
6907
7021
  {
6908
7022
  scope: __scopeSelect,
@@ -6918,7 +7032,7 @@ var SelectContentImpl = React31.forwardRef(
6918
7032
  position,
6919
7033
  isPositioned,
6920
7034
  searchRef,
6921
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Combination_default, { as: Slot2, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7035
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Combination_default, { as: Slot2, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6922
7036
  FocusScope,
6923
7037
  {
6924
7038
  asChild: true,
@@ -6930,7 +7044,7 @@ var SelectContentImpl = React31.forwardRef(
6930
7044
  context.trigger?.focus({ preventScroll: true });
6931
7045
  event.preventDefault();
6932
7046
  }),
6933
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7047
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6934
7048
  DismissableLayer,
6935
7049
  {
6936
7050
  asChild: true,
@@ -6939,7 +7053,7 @@ var SelectContentImpl = React31.forwardRef(
6939
7053
  onPointerDownOutside,
6940
7054
  onFocusOutside: (event) => event.preventDefault(),
6941
7055
  onDismiss: () => context.onOpenChange(false),
6942
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7056
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6943
7057
  SelectPosition,
6944
7058
  {
6945
7059
  role: "listbox",
@@ -7115,14 +7229,14 @@ var SelectItemAlignedPosition = React31.forwardRef((props, forwardedRef) => {
7115
7229
  },
7116
7230
  [position, focusSelectedItem]
7117
7231
  );
7118
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7232
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7119
7233
  SelectViewportProvider,
7120
7234
  {
7121
7235
  scope: __scopeSelect,
7122
7236
  contentWrapper,
7123
7237
  shouldExpandOnScrollRef,
7124
7238
  onScrollButtonChange: handleScrollButtonChange,
7125
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7239
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7126
7240
  "div",
7127
7241
  {
7128
7242
  ref: setContentWrapper,
@@ -7132,7 +7246,7 @@ var SelectItemAlignedPosition = React31.forwardRef((props, forwardedRef) => {
7132
7246
  position: "fixed",
7133
7247
  zIndex: contentZIndex
7134
7248
  },
7135
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7249
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7136
7250
  Primitive.div,
7137
7251
  {
7138
7252
  ...popperProps,
@@ -7162,7 +7276,7 @@ var SelectPopperPosition = React31.forwardRef((props, forwardedRef) => {
7162
7276
  ...popperProps
7163
7277
  } = props;
7164
7278
  const popperScope = usePopperScope(__scopeSelect);
7165
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7279
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7166
7280
  Content,
7167
7281
  {
7168
7282
  ...popperScope,
@@ -7196,8 +7310,8 @@ var SelectViewport = React31.forwardRef(
7196
7310
  const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
7197
7311
  const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);
7198
7312
  const prevScrollTopRef = React31.useRef(0);
7199
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
7200
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7313
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
7314
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7201
7315
  "style",
7202
7316
  {
7203
7317
  dangerouslySetInnerHTML: {
@@ -7206,7 +7320,7 @@ var SelectViewport = React31.forwardRef(
7206
7320
  nonce
7207
7321
  }
7208
7322
  ),
7209
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7323
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7210
7324
  Primitive.div,
7211
7325
  {
7212
7326
  "data-radix-select-viewport": "",
@@ -7262,7 +7376,7 @@ var SelectGroup = React31.forwardRef(
7262
7376
  (props, forwardedRef) => {
7263
7377
  const { __scopeSelect, ...groupProps } = props;
7264
7378
  const groupId = useId();
7265
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
7379
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
7266
7380
  }
7267
7381
  );
7268
7382
  SelectGroup.displayName = GROUP_NAME;
@@ -7271,7 +7385,7 @@ var SelectLabel = React31.forwardRef(
7271
7385
  (props, forwardedRef) => {
7272
7386
  const { __scopeSelect, ...labelProps } = props;
7273
7387
  const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
7274
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
7388
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
7275
7389
  }
7276
7390
  );
7277
7391
  SelectLabel.displayName = LABEL_NAME;
@@ -7308,7 +7422,7 @@ var SelectItem = React31.forwardRef(
7308
7422
  "A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder."
7309
7423
  );
7310
7424
  }
7311
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7425
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7312
7426
  SelectItemContextProvider,
7313
7427
  {
7314
7428
  scope: __scopeSelect,
@@ -7319,14 +7433,14 @@ var SelectItem = React31.forwardRef(
7319
7433
  onItemTextChange: React31.useCallback((node) => {
7320
7434
  setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
7321
7435
  }, []),
7322
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7436
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7323
7437
  Collection.ItemSlot,
7324
7438
  {
7325
7439
  scope: __scopeSelect,
7326
7440
  value,
7327
7441
  disabled,
7328
7442
  textValue,
7329
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7443
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7330
7444
  Primitive.div,
7331
7445
  {
7332
7446
  role: "option",
@@ -7395,7 +7509,7 @@ var SelectItemText = React31.forwardRef(
7395
7509
  );
7396
7510
  const textContent = itemTextNode?.textContent;
7397
7511
  const nativeOption = React31.useMemo(
7398
- () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
7512
+ () => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
7399
7513
  [itemContext.disabled, itemContext.value, textContent]
7400
7514
  );
7401
7515
  const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;
@@ -7403,8 +7517,8 @@ var SelectItemText = React31.forwardRef(
7403
7517
  onNativeOptionAdd(nativeOption);
7404
7518
  return () => onNativeOptionRemove(nativeOption);
7405
7519
  }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
7406
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
7407
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
7520
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
7521
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
7408
7522
  itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM4.createPortal(itemTextProps.children, context.valueNode) : null
7409
7523
  ] });
7410
7524
  }
@@ -7415,7 +7529,7 @@ var SelectItemIndicator = React31.forwardRef(
7415
7529
  (props, forwardedRef) => {
7416
7530
  const { __scopeSelect, ...itemIndicatorProps } = props;
7417
7531
  const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
7418
- return itemContext.isSelected ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
7532
+ return itemContext.isSelected ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
7419
7533
  }
7420
7534
  );
7421
7535
  SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
@@ -7438,7 +7552,7 @@ var SelectScrollUpButton = React31.forwardRef((props, forwardedRef) => {
7438
7552
  return () => viewport.removeEventListener("scroll", handleScroll22);
7439
7553
  }
7440
7554
  }, [contentContext.viewport, contentContext.isPositioned]);
7441
- return canScrollUp ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7555
+ return canScrollUp ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7442
7556
  SelectScrollButtonImpl,
7443
7557
  {
7444
7558
  ...props,
@@ -7473,7 +7587,7 @@ var SelectScrollDownButton = React31.forwardRef((props, forwardedRef) => {
7473
7587
  return () => viewport.removeEventListener("scroll", handleScroll22);
7474
7588
  }
7475
7589
  }, [contentContext.viewport, contentContext.isPositioned]);
7476
- return canScrollDown ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7590
+ return canScrollDown ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7477
7591
  SelectScrollButtonImpl,
7478
7592
  {
7479
7593
  ...props,
@@ -7506,7 +7620,7 @@ var SelectScrollButtonImpl = React31.forwardRef((props, forwardedRef) => {
7506
7620
  const activeItem = getItems().find((item) => item.ref.current === document.activeElement);
7507
7621
  activeItem?.ref.current?.scrollIntoView({ block: "nearest" });
7508
7622
  }, [getItems]);
7509
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7623
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7510
7624
  Primitive.div,
7511
7625
  {
7512
7626
  "aria-hidden": true,
@@ -7534,7 +7648,7 @@ var SEPARATOR_NAME = "SelectSeparator";
7534
7648
  var SelectSeparator = React31.forwardRef(
7535
7649
  (props, forwardedRef) => {
7536
7650
  const { __scopeSelect, ...separatorProps } = props;
7537
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
7651
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
7538
7652
  }
7539
7653
  );
7540
7654
  SelectSeparator.displayName = SEPARATOR_NAME;
@@ -7545,7 +7659,7 @@ var SelectArrow = React31.forwardRef(
7545
7659
  const popperScope = usePopperScope(__scopeSelect);
7546
7660
  const context = useSelectContext(ARROW_NAME2, __scopeSelect);
7547
7661
  const contentContext = useSelectContentContext(ARROW_NAME2, __scopeSelect);
7548
- return context.open && contentContext.position === "popper" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
7662
+ return context.open && contentContext.position === "popper" ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
7549
7663
  }
7550
7664
  );
7551
7665
  SelectArrow.displayName = ARROW_NAME2;
@@ -7570,7 +7684,7 @@ var SelectBubbleInput = React31.forwardRef(
7570
7684
  select.dispatchEvent(event);
7571
7685
  }
7572
7686
  }, [prevValue, value]);
7573
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
7687
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7574
7688
  Primitive.select,
7575
7689
  {
7576
7690
  ...props,
@@ -7640,16 +7754,16 @@ var ScrollDownButton = SelectScrollDownButton;
7640
7754
 
7641
7755
  // shadcn/select.tsx
7642
7756
  var import_lucide_react8 = require("lucide-react");
7643
- var import_jsx_runtime42 = require("react/jsx-runtime");
7757
+ var import_jsx_runtime43 = require("react/jsx-runtime");
7644
7758
  function Select2({
7645
7759
  ...props
7646
7760
  }) {
7647
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Root23, { "data-slot": "select", ...props });
7761
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Root23, { "data-slot": "select", ...props });
7648
7762
  }
7649
7763
  function SelectValue2({
7650
7764
  ...props
7651
7765
  }) {
7652
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Value, { "data-slot": "select-value", ...props });
7766
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Value, { "data-slot": "select-value", ...props });
7653
7767
  }
7654
7768
  function SelectTrigger2({
7655
7769
  className,
@@ -7657,7 +7771,7 @@ function SelectTrigger2({
7657
7771
  children,
7658
7772
  ...props
7659
7773
  }) {
7660
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
7774
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
7661
7775
  Trigger,
7662
7776
  {
7663
7777
  "data-slot": "select-trigger",
@@ -7669,7 +7783,7 @@ function SelectTrigger2({
7669
7783
  ...props,
7670
7784
  children: [
7671
7785
  children,
7672
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon3, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4 opacity-50" }) })
7786
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon3, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4 opacity-50" }) })
7673
7787
  ]
7674
7788
  }
7675
7789
  );
@@ -7681,7 +7795,7 @@ function SelectContent2({
7681
7795
  align = "center",
7682
7796
  ...props
7683
7797
  }) {
7684
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Portal2, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
7798
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Portal2, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
7685
7799
  Content2,
7686
7800
  {
7687
7801
  "data-slot": "select-content",
@@ -7694,8 +7808,8 @@ function SelectContent2({
7694
7808
  align,
7695
7809
  ...props,
7696
7810
  children: [
7697
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectScrollUpButton2, {}),
7698
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7811
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectScrollUpButton2, {}),
7812
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7699
7813
  Viewport,
7700
7814
  {
7701
7815
  className: cn(
@@ -7705,7 +7819,7 @@ function SelectContent2({
7705
7819
  children
7706
7820
  }
7707
7821
  ),
7708
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectScrollDownButton2, {})
7822
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectScrollDownButton2, {})
7709
7823
  ]
7710
7824
  }
7711
7825
  ) });
@@ -7715,7 +7829,7 @@ function SelectItem2({
7715
7829
  children,
7716
7830
  ...props
7717
7831
  }) {
7718
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
7832
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
7719
7833
  Item,
7720
7834
  {
7721
7835
  "data-slot": "select-item",
@@ -7725,15 +7839,15 @@ function SelectItem2({
7725
7839
  ),
7726
7840
  ...props,
7727
7841
  children: [
7728
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7842
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7729
7843
  "span",
7730
7844
  {
7731
7845
  "data-slot": "select-item-indicator",
7732
7846
  className: "absolute right-2 flex size-3.5 items-center justify-center",
7733
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react8.CheckIcon, { className: "size-4" }) })
7847
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react8.CheckIcon, { className: "size-4" }) })
7734
7848
  }
7735
7849
  ),
7736
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ItemText, { children })
7850
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ItemText, { children })
7737
7851
  ]
7738
7852
  }
7739
7853
  );
@@ -7742,7 +7856,7 @@ function SelectScrollUpButton2({
7742
7856
  className,
7743
7857
  ...props
7744
7858
  }) {
7745
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7859
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7746
7860
  ScrollUpButton,
7747
7861
  {
7748
7862
  "data-slot": "select-scroll-up-button",
@@ -7751,7 +7865,7 @@ function SelectScrollUpButton2({
7751
7865
  className
7752
7866
  ),
7753
7867
  ...props,
7754
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react8.ChevronUpIcon, { className: "size-4" })
7868
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react8.ChevronUpIcon, { className: "size-4" })
7755
7869
  }
7756
7870
  );
7757
7871
  }
@@ -7759,7 +7873,7 @@ function SelectScrollDownButton2({
7759
7873
  className,
7760
7874
  ...props
7761
7875
  }) {
7762
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7876
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7763
7877
  ScrollDownButton,
7764
7878
  {
7765
7879
  "data-slot": "select-scroll-down-button",
@@ -7768,13 +7882,13 @@ function SelectScrollDownButton2({
7768
7882
  className
7769
7883
  ),
7770
7884
  ...props,
7771
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4" })
7885
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4" })
7772
7886
  }
7773
7887
  );
7774
7888
  }
7775
7889
 
7776
7890
  // fields/EntryBoundTextField.tsx
7777
- var import_jsx_runtime43 = require("react/jsx-runtime");
7891
+ var import_jsx_runtime44 = require("react/jsx-runtime");
7778
7892
  function isEntryBoundValue7(value) {
7779
7893
  return typeof value === "object" && value !== null && "useEntry" in value;
7780
7894
  }
@@ -7829,10 +7943,10 @@ function EntryBoundTextField({
7829
7943
  }
7830
7944
  };
7831
7945
  const hasEntries = entryNames.length > 0;
7832
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex flex-col gap-2", children: [
7833
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-center justify-between", children: [
7834
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "text-sm font-medium", children: label }),
7835
- hasEntries && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7946
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col gap-2", children: [
7947
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center justify-between", children: [
7948
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "text-sm font-medium", children: label }),
7949
+ hasEntries && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
7836
7950
  Toggle,
7837
7951
  {
7838
7952
  pressed: isUsingEntry,
@@ -7845,38 +7959,38 @@ function EntryBoundTextField({
7845
7959
  }
7846
7960
  )
7847
7961
  ] }),
7848
- isUsingEntry ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "space-y-2", children: [
7849
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex gap-2", children: [
7850
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
7962
+ isUsingEntry ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "space-y-2", children: [
7963
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex gap-2", children: [
7964
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
7851
7965
  Select2,
7852
7966
  {
7853
7967
  value: currentEntryName,
7854
7968
  onValueChange: handleEntryChange,
7855
7969
  disabled,
7856
7970
  children: [
7857
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectTrigger2, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectValue2, { placeholder: "Select entry" }) }),
7858
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectContent2, { children: entryNames.map((name) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectItem2, { value: name, children: name }, name)) })
7971
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectTrigger2, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectValue2, { placeholder: "Select entry" }) }),
7972
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectContent2, { children: entryNames.map((name) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectItem2, { value: name, children: name }, name)) })
7859
7973
  ]
7860
7974
  }
7861
7975
  ),
7862
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
7976
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
7863
7977
  Select2,
7864
7978
  {
7865
7979
  value: currentFieldKey,
7866
7980
  onValueChange: handleFieldChange,
7867
7981
  disabled: disabled || !currentEntryName,
7868
7982
  children: [
7869
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectTrigger2, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectValue2, { placeholder: "Select field" }) }),
7870
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectContent2, { children: availableFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectItem2, { value: field, children: field }, field)) })
7983
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectTrigger2, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectValue2, { placeholder: "Select field" }) }),
7984
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectContent2, { children: availableFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectItem2, { value: field, children: field }, field)) })
7871
7985
  ]
7872
7986
  }
7873
7987
  )
7874
7988
  ] }),
7875
- resolvedValue && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "bg-muted rounded-md p-2", children: [
7876
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Label, { className: "text-muted-foreground text-xs", children: "Preview" }),
7877
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "text-sm", children: resolvedValue })
7989
+ resolvedValue && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "bg-muted rounded-md p-2", children: [
7990
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Label, { className: "text-muted-foreground text-xs", children: "Preview" }),
7991
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm", children: resolvedValue })
7878
7992
  ] })
7879
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7993
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
7880
7994
  Input,
7881
7995
  {
7882
7996
  value: resolvedValue,
@@ -7895,7 +8009,7 @@ function createEntryBoundTextField(label, placeholder) {
7895
8009
  value,
7896
8010
  onChange,
7897
8011
  readOnly
7898
- }) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
8012
+ }) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
7899
8013
  EntryBoundTextField,
7900
8014
  {
7901
8015
  value,
@@ -7910,7 +8024,7 @@ function createEntryBoundTextField(label, placeholder) {
7910
8024
 
7911
8025
  // fields/ResponsiveToggleField.tsx
7912
8026
  var import_lucide_react9 = require("lucide-react");
7913
- var import_jsx_runtime44 = require("react/jsx-runtime");
8027
+ var import_jsx_runtime45 = require("react/jsx-runtime");
7914
8028
  var breakpoints = [
7915
8029
  { key: "mobile", label: "Mobile", icon: import_lucide_react9.Smartphone },
7916
8030
  { key: "desktop", label: "Desktop", icon: import_lucide_react9.Monitor }
@@ -7931,9 +8045,9 @@ function ResponsiveToggleField({
7931
8045
  [key]: !visibility[key]
7932
8046
  });
7933
8047
  };
7934
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col gap-3", children: [
7935
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Label, { className: "text-sm font-medium", children: label }),
7936
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex gap-2", children: breakpoints.map(({ key, label: bpLabel, icon: Icon4 }) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
8048
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex flex-col gap-3", children: [
8049
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Label, { className: "text-sm font-medium", children: label }),
8050
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "flex gap-2", children: breakpoints.map(({ key, label: bpLabel, icon: Icon4 }) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
7937
8051
  "button",
7938
8052
  {
7939
8053
  type: "button",
@@ -7945,13 +8059,13 @@ function ResponsiveToggleField({
7945
8059
  ),
7946
8060
  "aria-label": `${bpLabel} visibility`,
7947
8061
  children: [
7948
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Icon4, { className: "size-5" }),
7949
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "text-xs font-medium", children: bpLabel })
8062
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icon4, { className: "size-5" }),
8063
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-xs font-medium", children: bpLabel })
7950
8064
  ]
7951
8065
  },
7952
8066
  key
7953
8067
  )) }),
7954
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-muted-foreground text-xs", children: !visibility.mobile && !visibility.desktop ? "Hidden on all devices" : `Visible on ${[
8068
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "text-muted-foreground text-xs", children: !visibility.mobile && !visibility.desktop ? "Hidden on all devices" : `Visible on ${[
7955
8069
  visibility.mobile && "mobile",
7956
8070
  visibility.desktop && "desktop"
7957
8071
  ].filter(Boolean).join(" & ")}` })
@@ -7959,7 +8073,7 @@ function ResponsiveToggleField({
7959
8073
  }
7960
8074
 
7961
8075
  // fields/ShadowField.tsx
7962
- var import_jsx_runtime45 = require("react/jsx-runtime");
8076
+ var import_jsx_runtime46 = require("react/jsx-runtime");
7963
8077
  function ShadowField({
7964
8078
  value,
7965
8079
  onChangeAction,
@@ -7967,9 +8081,9 @@ function ShadowField({
7967
8081
  label
7968
8082
  }) {
7969
8083
  const currentValue = value ?? "none";
7970
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex flex-col gap-3", children: [
7971
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Label, { className: "text-sm font-medium", children: label }),
7972
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "grid grid-cols-4 gap-2", children: shadowPresets.map((preset) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
8084
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-3", children: [
8085
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Label, { className: "text-sm font-medium", children: label }),
8086
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "grid grid-cols-4 gap-2", children: shadowPresets.map((preset) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
7973
8087
  Button2,
7974
8088
  {
7975
8089
  type: "button",
@@ -7982,14 +8096,14 @@ function ShadowField({
7982
8096
  currentValue === preset.value && "ring-ring ring-2"
7983
8097
  ),
7984
8098
  children: [
7985
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
8099
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
7986
8100
  "div",
7987
8101
  {
7988
8102
  className: "bg-background size-8 rounded",
7989
8103
  style: { boxShadow: preset.css }
7990
8104
  }
7991
8105
  ),
7992
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-xs", children: preset.label })
8106
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "text-xs", children: preset.label })
7993
8107
  ]
7994
8108
  },
7995
8109
  preset.value
@@ -8021,7 +8135,7 @@ var getClosestSpacingValue = (value) => {
8021
8135
  };
8022
8136
 
8023
8137
  // fields/SpacingSliderField.tsx
8024
- var import_jsx_runtime46 = require("react/jsx-runtime");
8138
+ var import_jsx_runtime47 = require("react/jsx-runtime");
8025
8139
  var MAX_VALUE2 = spacingScale[spacingScale.length - 1].value;
8026
8140
  function SpacingSliderField({
8027
8141
  value,
@@ -8061,10 +8175,10 @@ function SpacingSliderField({
8061
8175
  };
8062
8176
  const matchingPreset = spacingScale.find((s) => s.value === currentValue);
8063
8177
  const displayLabel = matchingPreset?.label ?? "Custom";
8064
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-3", children: [
8065
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center justify-between", children: [
8066
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Label, { className: "text-sm font-medium", children: label }),
8067
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
8178
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-col gap-3", children: [
8179
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center justify-between", children: [
8180
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Label, { className: "text-sm font-medium", children: label }),
8181
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8068
8182
  Toggle,
8069
8183
  {
8070
8184
  pressed: quantized,
@@ -8073,13 +8187,13 @@ function SpacingSliderField({
8073
8187
  variant: "outline",
8074
8188
  "aria-label": "Snap to grid",
8075
8189
  title: quantized ? "Snap to grid (on)" : "Snap to grid (off)",
8076
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react10.Magnet, { className: "size-3.5" })
8190
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react10.Magnet, { className: "size-3.5" })
8077
8191
  }
8078
8192
  )
8079
8193
  ] }),
8080
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-2", children: [
8081
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "text-muted-foreground flex-1 text-sm", children: displayLabel }),
8082
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
8194
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-2", children: [
8195
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-muted-foreground flex-1 text-sm", children: displayLabel }),
8196
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8083
8197
  Input,
8084
8198
  {
8085
8199
  type: "number",
@@ -8091,9 +8205,9 @@ function SpacingSliderField({
8091
8205
  max: MAX_VALUE2
8092
8206
  }
8093
8207
  ),
8094
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "text-muted-foreground text-xs", children: "px" })
8208
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-muted-foreground text-xs", children: "px" })
8095
8209
  ] }),
8096
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
8210
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8097
8211
  Slider,
8098
8212
  {
8099
8213
  value: [currentValue],
@@ -8104,7 +8218,7 @@ function SpacingSliderField({
8104
8218
  disabled
8105
8219
  }
8106
8220
  ),
8107
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex flex-wrap gap-1", children: spacingScale.filter((_, i) => i % 2 === 0 || i === spacingScale.length - 1).map((preset) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
8221
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "flex flex-wrap gap-1", children: spacingScale.filter((_, i) => i % 2 === 0 || i === spacingScale.length - 1).map((preset) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8108
8222
  Button2,
8109
8223
  {
8110
8224
  type: "button",
@@ -8120,7 +8234,7 @@ function SpacingSliderField({
8120
8234
  }
8121
8235
 
8122
8236
  // fields/ThemeableColorField.tsx
8123
- var import_jsx_runtime47 = require("react/jsx-runtime");
8237
+ var import_jsx_runtime48 = require("react/jsx-runtime");
8124
8238
  function isThemeableValue12(value) {
8125
8239
  return typeof value === "object" && value !== null && "useTheme" in value;
8126
8240
  }
@@ -8145,10 +8259,10 @@ function ThemeableColorField({
8145
8259
  const handleColorChange = (newColor) => {
8146
8260
  onChange({ useTheme: false, value: newColor });
8147
8261
  };
8148
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-col gap-2", children: [
8149
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center justify-between", children: [
8150
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-sm font-medium", children: label }),
8151
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8262
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "flex flex-col gap-2", children: [
8263
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center justify-between", children: [
8264
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "text-sm font-medium", children: label }),
8265
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
8152
8266
  Toggle,
8153
8267
  {
8154
8268
  pressed: isUsingTheme,
@@ -8161,8 +8275,8 @@ function ThemeableColorField({
8161
8275
  }
8162
8276
  )
8163
8277
  ] }),
8164
- isUsingTheme ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-2 rounded-md border p-2", children: [
8165
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8278
+ isUsingTheme ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center gap-2 rounded-md border p-2", children: [
8279
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
8166
8280
  "div",
8167
8281
  {
8168
8282
  className: "size-6 shrink-0 rounded border",
@@ -8171,11 +8285,11 @@ function ThemeableColorField({
8171
8285
  }
8172
8286
  }
8173
8287
  ),
8174
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: "text-muted-foreground text-sm capitalize", children: [
8288
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("span", { className: "text-muted-foreground text-sm capitalize", children: [
8175
8289
  "Theme: ",
8176
8290
  themeKey
8177
8291
  ] })
8178
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8292
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
8179
8293
  ColorPickerField,
8180
8294
  {
8181
8295
  value: customValue,
@@ -8194,7 +8308,7 @@ function createThemeableColorField(label, themeKey) {
8194
8308
  value,
8195
8309
  onChange,
8196
8310
  readOnly
8197
- }) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8311
+ }) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
8198
8312
  ThemeableColorField,
8199
8313
  {
8200
8314
  value,
@@ -8208,10 +8322,10 @@ function createThemeableColorField(label, themeKey) {
8208
8322
  }
8209
8323
 
8210
8324
  // fields/TypographyField.tsx
8211
- var import_jsx_runtime48 = require("react/jsx-runtime");
8325
+ var import_jsx_runtime49 = require("react/jsx-runtime");
8212
8326
 
8213
8327
  // fields/index.tsx
8214
- var import_jsx_runtime49 = require("react/jsx-runtime");
8328
+ var import_jsx_runtime50 = require("react/jsx-runtime");
8215
8329
  function createColorField(label) {
8216
8330
  return {
8217
8331
  type: "custom",
@@ -8220,7 +8334,7 @@ function createColorField(label) {
8220
8334
  value,
8221
8335
  onChange,
8222
8336
  readOnly
8223
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
8337
+ }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
8224
8338
  ColorPickerField,
8225
8339
  {
8226
8340
  value,
@@ -8239,7 +8353,7 @@ function createSpacingField(label) {
8239
8353
  value,
8240
8354
  onChange,
8241
8355
  readOnly
8242
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
8356
+ }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
8243
8357
  SpacingSliderField,
8244
8358
  {
8245
8359
  value,
@@ -8258,7 +8372,7 @@ function createShadowField(label) {
8258
8372
  value,
8259
8373
  onChange,
8260
8374
  readOnly
8261
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
8375
+ }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
8262
8376
  ShadowField,
8263
8377
  {
8264
8378
  value,
@@ -8277,7 +8391,7 @@ function createBorderRadiusField(label) {
8277
8391
  value,
8278
8392
  onChange,
8279
8393
  readOnly
8280
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
8394
+ }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
8281
8395
  BorderRadiusField,
8282
8396
  {
8283
8397
  value,
@@ -8296,7 +8410,7 @@ function createResponsiveField(label) {
8296
8410
  value,
8297
8411
  onChange,
8298
8412
  readOnly
8299
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
8413
+ }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
8300
8414
  ResponsiveToggleField,
8301
8415
  {
8302
8416
  value,
@@ -8309,7 +8423,7 @@ function createResponsiveField(label) {
8309
8423
  }
8310
8424
 
8311
8425
  // config.tsx
8312
- var import_jsx_runtime50 = require("react/jsx-runtime");
8426
+ var import_jsx_runtime51 = require("react/jsx-runtime");
8313
8427
  var config = {
8314
8428
  categories: {
8315
8429
  typography: {
@@ -8426,7 +8540,7 @@ var config = {
8426
8540
  letterSpacing: "normal",
8427
8541
  lineHeight: "tight"
8428
8542
  },
8429
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Heading, { ...props })
8543
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Heading, { ...props })
8430
8544
  },
8431
8545
  Paragraph: {
8432
8546
  fields: {
@@ -8477,7 +8591,7 @@ var config = {
8477
8591
  align: "left",
8478
8592
  lineHeight: "normal"
8479
8593
  },
8480
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Paragraph, { ...props })
8594
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Paragraph, { ...props })
8481
8595
  },
8482
8596
  // ==================
8483
8597
  // ACTIONS
@@ -8550,7 +8664,7 @@ var config = {
8550
8664
  align: "center",
8551
8665
  target: "_self"
8552
8666
  },
8553
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { ...props })
8667
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { ...props })
8554
8668
  },
8555
8669
  // ==================
8556
8670
  // MEDIA
@@ -8630,7 +8744,7 @@ var config = {
8630
8744
  align: "center",
8631
8745
  captionColor: { useTheme: true, themeKey: "muted" }
8632
8746
  },
8633
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Image, { ...props })
8747
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Image, { ...props })
8634
8748
  },
8635
8749
  ImageCarousel: {
8636
8750
  fields: {
@@ -8694,7 +8808,7 @@ var config = {
8694
8808
  arrowColor: { useTheme: true, themeKey: "background" },
8695
8809
  dotColor: { useTheme: true, themeKey: "primary" }
8696
8810
  },
8697
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ImageCarousel, { ...props })
8811
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ImageCarousel, { ...props })
8698
8812
  },
8699
8813
  VideoEmbed: {
8700
8814
  fields: {
@@ -8766,7 +8880,7 @@ var config = {
8766
8880
  muted: false,
8767
8881
  loop: false
8768
8882
  },
8769
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(VideoEmbed, { ...props })
8883
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(VideoEmbed, { ...props })
8770
8884
  },
8771
8885
  Icon: {
8772
8886
  fields: {
@@ -8803,7 +8917,7 @@ var config = {
8803
8917
  color: { useTheme: true, themeKey: "primary" },
8804
8918
  align: "center"
8805
8919
  },
8806
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon, { ...props })
8920
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Icon, { ...props })
8807
8921
  },
8808
8922
  // ==================
8809
8923
  // LAYOUT
@@ -8834,7 +8948,7 @@ var config = {
8834
8948
  contentMaxWidth: "1400px",
8835
8949
  visibility: { mobile: true, desktop: true }
8836
8950
  },
8837
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Section, { ...props })
8951
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Section, { ...props })
8838
8952
  },
8839
8953
  Container: {
8840
8954
  fields: {
@@ -8887,7 +9001,7 @@ var config = {
8887
9001
  paddingY: "none",
8888
9002
  centered: true
8889
9003
  },
8890
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Container, { ...props })
9004
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Container, { ...props })
8891
9005
  },
8892
9006
  Columns: {
8893
9007
  fields: {
@@ -8932,7 +9046,7 @@ var config = {
8932
9046
  verticalAlign: "top",
8933
9047
  stackOnMobile: true
8934
9048
  },
8935
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Columns, { ...props })
9049
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Columns, { ...props })
8936
9050
  },
8937
9051
  Card: {
8938
9052
  fields: {
@@ -8989,7 +9103,7 @@ var config = {
8989
9103
  shadow: "sm",
8990
9104
  padding: "md"
8991
9105
  },
8992
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Card, { ...props })
9106
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Card, { ...props })
8993
9107
  },
8994
9108
  Divider: {
8995
9109
  fields: {
@@ -9045,7 +9159,7 @@ var config = {
9045
9159
  align: "center",
9046
9160
  spacing: "md"
9047
9161
  },
9048
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Divider, { ...props })
9162
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Divider, { ...props })
9049
9163
  },
9050
9164
  Spacer: {
9051
9165
  fields: {
@@ -9065,7 +9179,7 @@ var config = {
9065
9179
  defaultProps: {
9066
9180
  size: "md"
9067
9181
  },
9068
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Spacer, { ...props })
9182
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Spacer, { ...props })
9069
9183
  },
9070
9184
  // ==================
9071
9185
  // LEGACY COMPONENTS
@@ -9118,7 +9232,7 @@ var config = {
9118
9232
  gradientColor1: { useTheme: true, themeKey: "primary" },
9119
9233
  gradientColor2: { useTheme: true, themeKey: "secondary" }
9120
9234
  },
9121
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TextBlock, { ...props })
9235
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TextBlock, { ...props })
9122
9236
  },
9123
9237
  CustomImage: {
9124
9238
  fields: {
@@ -9145,7 +9259,7 @@ var config = {
9145
9259
  alignment: "center",
9146
9260
  fitContent: false
9147
9261
  },
9148
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CustomImage, { ...props })
9262
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CustomImage, { ...props })
9149
9263
  },
9150
9264
  FeaturesList: {
9151
9265
  fields: {
@@ -9186,7 +9300,7 @@ var config = {
9186
9300
  size: "medium",
9187
9301
  iconColor: { color: "#3B82F6", opacity: 100 }
9188
9302
  },
9189
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(FeaturesList, { ...props })
9303
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(FeaturesList, { ...props })
9190
9304
  },
9191
9305
  FeatureGrid: {
9192
9306
  fields: {
@@ -9242,7 +9356,7 @@ var config = {
9242
9356
  iconColor: { color: "#3B82F6", opacity: 100 },
9243
9357
  textColor: { color: "#000000", opacity: 100 }
9244
9358
  },
9245
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(FeatureGrid, { ...props })
9359
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(FeatureGrid, { ...props })
9246
9360
  },
9247
9361
  Footer: {
9248
9362
  fields: {
@@ -9259,7 +9373,7 @@ var config = {
9259
9373
  backgroundColor: { color: "#111827", opacity: 100 },
9260
9374
  textColor: { color: "#FFFFFF", opacity: 100 }
9261
9375
  },
9262
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Footer, { ...props })
9376
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Footer, { ...props })
9263
9377
  },
9264
9378
  Topbar: {
9265
9379
  fields: {
@@ -9294,7 +9408,7 @@ var config = {
9294
9408
  textColor: { color: "#000000", opacity: 100 },
9295
9409
  maxWidth: "1400px"
9296
9410
  },
9297
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Topbar, { ...props })
9411
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Topbar, { ...props })
9298
9412
  },
9299
9413
  Popup: {
9300
9414
  fields: {
@@ -9342,7 +9456,7 @@ var config = {
9342
9456
  width: "medium",
9343
9457
  textLink: false
9344
9458
  },
9345
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Popup, { ...props })
9459
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Popup, { ...props })
9346
9460
  }
9347
9461
  }
9348
9462
  };