@weaverse/react 0.7.56 → 0.7.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ __reExport(src_exports, require("@weaverse/core"), module.exports);
40
40
 
41
41
  // src/context.ts
42
42
  var import_core = require("@weaverse/core");
43
- var import_react26 = require("react");
43
+ var import_react27 = require("react");
44
44
 
45
45
  // src/elements/Button.tsx
46
46
  var React = __toESM(require("react"));
@@ -118,42 +118,6 @@ var import_react4 = __toESM(require("react"));
118
118
  // src/constant/index.ts
119
119
  var TIMES = ["days", "hours", "minutes", "seconds"];
120
120
  var COUNTDOWN_KEY = "wv-cd-evergreen-start";
121
- var INSTAGRAM_API = "https://graph.instagram.com";
122
-
123
- // src/utils/css.ts
124
- var import_clsx = __toESM(require("clsx"));
125
- function formatCSS(css10) {
126
- return {
127
- "@desktop": css10["@desktop"],
128
- "@mobile": css10["@mobile"]
129
- };
130
- }
131
- var permanentClasses = {};
132
- function generateItemClassName(instance, stitchesInstance) {
133
- let { css: css10, type, className: cls = "" } = instance.data;
134
- let className = "";
135
- let permanentClass = "";
136
- let perCss = instance.Element?.permanentCss;
137
- if (perCss) {
138
- if (type in permanentClasses) {
139
- permanentClass = permanentClasses[type];
140
- } else {
141
- let { className: perCls } = stitchesInstance.css(perCss)();
142
- Object.assign(permanentClasses, { [type]: perCls });
143
- permanentClass = perCls;
144
- }
145
- }
146
- className = permanentClass;
147
- if (css10) {
148
- let formattedCss = formatCSS(css10);
149
- let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
150
- let { stitchesClass } = instance;
151
- let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
152
- className = (0, import_clsx.default)(permanentClass, cls, newStitchesClass, otherClass);
153
- instance.stitchesClass = newStitchesClass;
154
- }
155
- return className;
156
- }
157
121
 
158
122
  // src/utils/index.ts
159
123
  function getTime(_seconds) {
@@ -270,7 +234,6 @@ var Countdown = (0, import_react4.forwardRef)(
270
234
  );
271
235
  var css3 = {
272
236
  "@desktop": {
273
- fontFamily: "Inter",
274
237
  fontSize: "36px",
275
238
  fontWeight: 500,
276
239
  display: "flex",
@@ -361,7 +324,7 @@ Image.defaultProps = {
361
324
  src: "https://ucarecdn.com/cf54e41e-36a0-4547-a140-a302e0387890/",
362
325
  alt: "Image alt text",
363
326
  objectFit: "cover",
364
- objectPosition: "center",
327
+ objectPosition: "center center",
365
328
  clickAction: "none",
366
329
  openLinkInNewTab: false,
367
330
  linkTo: ""
@@ -499,7 +462,11 @@ Layout.defaultProps = {
499
462
  rows: 16,
500
463
  columns: 12,
501
464
  gap: 16,
502
- rowSize: 48
465
+ rowSize: 48,
466
+ objectFit: "cover",
467
+ objectPosition: "center center",
468
+ enableOverlay: false,
469
+ overlayOpacity: 30
503
470
  };
504
471
  var Layout_default = Layout;
505
472
 
@@ -689,39 +656,17 @@ Video.defaultProps = {
689
656
  };
690
657
  var Video_default = Video;
691
658
 
692
- // src/elements/Instagram.tsx
693
- var import_react25 = __toESM(require("react"));
694
-
695
- // src/components/Placeholder.tsx
696
- var import_react14 = __toESM(require("react"));
697
- var Placeholder = (0, import_react14.forwardRef)(
698
- (props, ref) => {
699
- let { element, children, ...rest } = props;
700
- return /* @__PURE__ */ import_react14.default.createElement("div", {
701
- "data-wv-placeholder": true,
702
- ref,
703
- ...rest
704
- }, /* @__PURE__ */ import_react14.default.createElement("div", {
705
- style: { fontWeight: 600, marginBottom: "10px" }
706
- }, element), /* @__PURE__ */ import_react14.default.createElement("div", null, children));
707
- }
708
- );
709
- var Placeholder_default = Placeholder;
659
+ // src/elements/Slideshow/index.tsx
660
+ var import_react20 = require("keen-slider/react");
661
+ var import_react21 = __toESM(require("react"));
710
662
 
711
- // src/components/Modal/index.tsx
712
- var Modal_exports = {};
713
- __export(Modal_exports, {
714
- Modal: () => Modal,
715
- ModalClose: () => ModalClose,
716
- ModalContent: () => ModalContent,
717
- ModalHeader: () => ModalHeader,
718
- ModalTrigger: () => ModalTrigger
719
- });
720
- var import_react_dialog2 = require("@radix-ui/react-dialog");
721
- var import_react19 = __toESM(require("react"));
663
+ // src/components/Slider/Arrows.tsx
664
+ var import_react16 = require("@stitches/react");
665
+ var import_clsx2 = __toESM(require("clsx"));
666
+ var import_react17 = __toESM(require("react"));
722
667
 
723
668
  // src/components/Icons/index.tsx
724
- var import_react16 = __toESM(require("react"));
669
+ var import_react15 = __toESM(require("react"));
725
670
 
726
671
  // src/components/Icons/Phosphor.tsx
727
672
  var Phosphor_exports = {};
@@ -736,39 +681,39 @@ __export(Phosphor_exports, {
736
681
  ShoppingCart: () => ShoppingCart,
737
682
  X: () => X
738
683
  });
739
- var import_react15 = __toESM(require("react"));
684
+ var import_react14 = __toESM(require("react"));
740
685
  var CircleNotch = (props) => {
741
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
686
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
742
687
  xmlns: "http://www.w3.org/2000/svg",
743
688
  fill: "none",
744
689
  viewBox: "0 0 24 24",
745
690
  ...props
746
- }, /* @__PURE__ */ import_react15.default.createElement("circle", {
691
+ }, /* @__PURE__ */ import_react14.default.createElement("circle", {
747
692
  style: { opacity: ".25" },
748
693
  cx: "12",
749
694
  cy: "12",
750
695
  r: "10",
751
696
  stroke: "currentColor",
752
697
  strokeWidth: "4"
753
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
698
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
754
699
  style: { opacity: ".75" },
755
700
  fill: "currentColor",
756
701
  d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
757
702
  }));
758
703
  };
759
704
  var X = (props) => {
760
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
705
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
761
706
  xmlns: "http://www.w3.org/2000/svg",
762
707
  width: "20",
763
708
  height: "20",
764
709
  fill: "currentColor",
765
710
  viewBox: "0 0 256 256",
766
711
  ...props
767
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
712
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
768
713
  width: "256",
769
714
  height: "256",
770
715
  fill: "none"
771
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
716
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
772
717
  x1: "200",
773
718
  y1: "56",
774
719
  x2: "56",
@@ -778,7 +723,7 @@ var X = (props) => {
778
723
  strokeLinecap: "round",
779
724
  strokeLinejoin: "round",
780
725
  strokeWidth: "12"
781
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
726
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
782
727
  x1: "200",
783
728
  y1: "200",
784
729
  x2: "56",
@@ -791,7 +736,7 @@ var X = (props) => {
791
736
  }));
792
737
  };
793
738
  var Minus = (props) => {
794
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
739
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
795
740
  width: "196",
796
741
  height: "196",
797
742
  fill: "currentColor",
@@ -799,12 +744,12 @@ var Minus = (props) => {
799
744
  xmlns: "http://www.w3.org/2000/svg",
800
745
  viewBox: "0 0 384 512",
801
746
  ...props
802
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
747
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
803
748
  d: "M376 232H8c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h368c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z"
804
749
  }));
805
750
  };
806
751
  var Plus = (props) => {
807
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
752
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
808
753
  width: "196",
809
754
  height: "196",
810
755
  fill: "currentColor",
@@ -812,23 +757,23 @@ var Plus = (props) => {
812
757
  xmlns: "http://www.w3.org/2000/svg",
813
758
  viewBox: "0 0 384 512",
814
759
  ...props
815
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
760
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
816
761
  d: "M376 232H216V72c0-4.42-3.58-8-8-8h-32c-4.42 0-8 3.58-8 8v160H8c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h160v160c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8V280h160c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z"
817
762
  }));
818
763
  };
819
764
  var ArrowLeft = (props) => {
820
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
765
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
821
766
  xmlns: "http://www.w3.org/2000/svg",
822
767
  width: "192",
823
768
  height: "192",
824
769
  fill: "currentColor",
825
770
  viewBox: "0 0 256 256",
826
771
  ...props
827
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
772
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
828
773
  width: "256",
829
774
  height: "256",
830
775
  fill: "none"
831
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
776
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
832
777
  x1: "216",
833
778
  y1: "128",
834
779
  x2: "40",
@@ -838,7 +783,7 @@ var ArrowLeft = (props) => {
838
783
  strokeLinecap: "round",
839
784
  strokeLinejoin: "round",
840
785
  strokeWidth: "16"
841
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
786
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
842
787
  points: "112 56 40 128 112 200",
843
788
  fill: "none",
844
789
  stroke: "currentColor",
@@ -848,18 +793,18 @@ var ArrowLeft = (props) => {
848
793
  }));
849
794
  };
850
795
  var ArrowRight = (props) => {
851
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
796
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
852
797
  xmlns: "http://www.w3.org/2000/svg",
853
798
  width: "192",
854
799
  height: "192",
855
800
  fill: "currentColor",
856
801
  viewBox: "0 0 256 256",
857
802
  ...props
858
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
803
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
859
804
  width: "256",
860
805
  height: "256",
861
806
  fill: "none"
862
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
807
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
863
808
  x1: "40",
864
809
  y1: "128",
865
810
  x2: "216",
@@ -869,7 +814,7 @@ var ArrowRight = (props) => {
869
814
  strokeLinecap: "round",
870
815
  strokeLinejoin: "round",
871
816
  strokeWidth: "16"
872
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
817
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
873
818
  points: "144 56 216 128 144 200",
874
819
  fill: "none",
875
820
  stroke: "currentColor",
@@ -879,36 +824,36 @@ var ArrowRight = (props) => {
879
824
  }));
880
825
  };
881
826
  var Image2 = (props) => {
882
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
827
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
883
828
  xmlns: "http://www.w3.org/2000/svg",
884
829
  "aria-hidden": "true",
885
830
  fill: "currentColor",
886
831
  viewBox: "0 0 640 512",
887
832
  ...props
888
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
833
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
889
834
  d: "M480 80C480 35.82 515.8 0 560 0C604.2 0 640 35.82 640 80C640 124.2 604.2 160 560 160C515.8 160 480 124.2 480 80zM0 456.1C0 445.6 2.964 435.3 8.551 426.4L225.3 81.01C231.9 70.42 243.5 64 256 64C268.5 64 280.1 70.42 286.8 81.01L412.7 281.7L460.9 202.7C464.1 196.1 472.2 192 480 192C487.8 192 495 196.1 499.1 202.7L631.1 419.1C636.9 428.6 640 439.7 640 450.9C640 484.6 612.6 512 578.9 512H55.91C25.03 512 .0006 486.1 .0006 456.1L0 456.1z"
890
835
  }));
891
836
  };
892
837
  var ShoppingCart = (props) => {
893
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
838
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
894
839
  xmlns: "http://www.w3.org/2000/svg",
895
840
  width: "192",
896
841
  height: "192",
897
842
  fill: "currentColor",
898
843
  viewBox: "0 0 256 256",
899
844
  ...props
900
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
845
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
901
846
  width: "256",
902
847
  height: "256",
903
848
  fill: "none"
904
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
849
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
905
850
  d: "M184,184H69.8L41.9,30.6A8,8,0,0,0,34.1,24H16",
906
851
  fill: "none",
907
852
  stroke: "currentColor",
908
853
  strokeLinecap: "round",
909
854
  strokeLinejoin: "round",
910
855
  strokeWidth: "16"
911
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
856
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
912
857
  cx: "80",
913
858
  cy: "204",
914
859
  r: "20",
@@ -917,7 +862,7 @@ var ShoppingCart = (props) => {
917
862
  strokeLinecap: "round",
918
863
  strokeLinejoin: "round",
919
864
  strokeWidth: "16"
920
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
865
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
921
866
  cx: "184",
922
867
  cy: "204",
923
868
  r: "20",
@@ -926,7 +871,7 @@ var ShoppingCart = (props) => {
926
871
  strokeLinecap: "round",
927
872
  strokeLinejoin: "round",
928
873
  strokeWidth: "16"
929
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
874
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
930
875
  d: "M62.5,144H188.1a15.9,15.9,0,0,0,15.7-13.1L216,64H48",
931
876
  fill: "none",
932
877
  stroke: "currentColor",
@@ -936,25 +881,25 @@ var ShoppingCart = (props) => {
936
881
  }));
937
882
  };
938
883
  var Eye = (props) => {
939
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
884
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
940
885
  xmlns: "http://www.w3.org/2000/svg",
941
886
  width: "192",
942
887
  height: "192",
943
888
  fill: "currentColor",
944
889
  viewBox: "0 0 256 256",
945
890
  ...props
946
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
891
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
947
892
  width: "256",
948
893
  height: "256",
949
894
  fill: "none"
950
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
895
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
951
896
  d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
952
897
  fill: "none",
953
898
  stroke: "currentColor",
954
899
  strokeLinecap: "round",
955
900
  strokeLinejoin: "round",
956
901
  strokeWidth: "12"
957
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
902
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
958
903
  cx: "128",
959
904
  cy: "128",
960
905
  r: "40",
@@ -967,28 +912,537 @@ var Eye = (props) => {
967
912
  };
968
913
 
969
914
  // src/components/Icons/index.tsx
970
- var import_clsx2 = __toESM(require("clsx"));
915
+ var import_clsx = __toESM(require("clsx"));
971
916
  function Icon({ name, className, ...props }) {
972
917
  let WeaverseIcon = Phosphor_exports[name];
973
- let cls = (0, import_clsx2.default)("wv-icon", className);
974
- return /* @__PURE__ */ import_react16.default.createElement(WeaverseIcon, {
918
+ let cls = (0, import_clsx.default)("wv-icon", className);
919
+ return /* @__PURE__ */ import_react15.default.createElement(WeaverseIcon, {
975
920
  className: cls,
976
921
  ...props
977
922
  });
978
923
  }
979
924
 
925
+ // src/components/Slider/Arrows.tsx
926
+ function Arrows(props) {
927
+ let { currentSlide, instanceRef, className } = props;
928
+ let isFirstSlide = currentSlide === 0;
929
+ let isLastSlide = false;
930
+ if (instanceRef.current) {
931
+ isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
932
+ }
933
+ let arrowLeftClass = (0, import_clsx2.default)(
934
+ "wv-slider-arrow arrow--left",
935
+ isFirstSlide && "arrow--disabled"
936
+ );
937
+ let arrowRightClass = (0, import_clsx2.default)(
938
+ "wv-slider-arrow arrow--right",
939
+ isLastSlide && "arrow--disabled"
940
+ );
941
+ return /* @__PURE__ */ import_react17.default.createElement(StyledArrows, {
942
+ className
943
+ }, /* @__PURE__ */ import_react17.default.createElement("button", {
944
+ type: "button",
945
+ className: arrowLeftClass,
946
+ onClick: (e) => {
947
+ e.stopPropagation();
948
+ instanceRef?.current?.prev();
949
+ }
950
+ }, /* @__PURE__ */ import_react17.default.createElement(Icon, {
951
+ name: "ArrowLeft"
952
+ })), /* @__PURE__ */ import_react17.default.createElement("button", {
953
+ type: "button",
954
+ className: arrowRightClass,
955
+ onClick: (e) => {
956
+ e.stopPropagation();
957
+ instanceRef?.current?.next();
958
+ }
959
+ }, /* @__PURE__ */ import_react17.default.createElement(Icon, {
960
+ name: "ArrowRight"
961
+ })));
962
+ }
963
+ var StyledArrows = (0, import_react16.styled)("div", {
964
+ ".wv-slider-arrow": {
965
+ position: "absolute",
966
+ top: "50%",
967
+ transform: "translateY(-50%)",
968
+ width: "44px",
969
+ height: "44px",
970
+ padding: "8px",
971
+ color: "#191919",
972
+ backgroundColor: "#f2f2f2",
973
+ textAlign: "center",
974
+ transition: "all 0.2s ease-in-out",
975
+ borderRadius: "4px",
976
+ border: "none",
977
+ cursor: "pointer",
978
+ "&:hover": {
979
+ backgroundColor: "#191919",
980
+ color: "#f2f2f2"
981
+ },
982
+ svg: {
983
+ verticalAlign: "middle",
984
+ width: "22px",
985
+ height: "22px"
986
+ },
987
+ "&.arrow--left": {
988
+ left: "-80px"
989
+ },
990
+ "&.arrow--right": {
991
+ right: "-80px"
992
+ },
993
+ "&.arrow--disabled": {
994
+ opacity: 0.5
995
+ }
996
+ },
997
+ "@media (max-width: 768px)": {
998
+ ".wv-slider-arrow": {
999
+ display: "none"
1000
+ }
1001
+ }
1002
+ });
1003
+
1004
+ // src/components/Slider/Dots.tsx
1005
+ var import_react18 = require("@stitches/react");
1006
+ var import_clsx3 = __toESM(require("clsx"));
1007
+ var import_react19 = __toESM(require("react"));
1008
+ function Dots(props) {
1009
+ let { currentSlide, instanceRef, className } = props;
1010
+ return /* @__PURE__ */ import_react19.default.createElement(StyledDots, {
1011
+ className
1012
+ }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1013
+ (idx) => {
1014
+ let className2 = (0, import_clsx3.default)("dot", currentSlide === idx && "dot--active");
1015
+ return /* @__PURE__ */ import_react19.default.createElement("button", {
1016
+ key: idx,
1017
+ type: "button",
1018
+ onClick: () => instanceRef.current?.moveToIdx(idx),
1019
+ className: className2
1020
+ });
1021
+ }
1022
+ ));
1023
+ }
1024
+ var StyledDots = (0, import_react18.styled)("div", {
1025
+ padding: "10px 0",
1026
+ justifyContent: "center",
1027
+ ".dot": {
1028
+ width: "9px",
1029
+ height: "9px",
1030
+ padding: "0",
1031
+ margin: "0 5px",
1032
+ border: "none",
1033
+ borderRadius: "50%",
1034
+ background: "#2125291a",
1035
+ transition: "all 0.2s ease-in-out",
1036
+ "&.dot--active": {
1037
+ background: "#212529"
1038
+ }
1039
+ }
1040
+ });
1041
+
1042
+ // src/components/Slider/ResizePlugin.ts
1043
+ var ResizePlugin = (slider) => {
1044
+ let observer = new ResizeObserver(() => slider.update());
1045
+ slider.on("created", () => {
1046
+ observer.observe(slider.container);
1047
+ });
1048
+ slider.on("destroyed", () => {
1049
+ observer.unobserve(slider.container);
1050
+ });
1051
+ };
1052
+
1053
+ // src/utils/css.ts
1054
+ var import_clsx4 = __toESM(require("clsx"));
1055
+ function formatCSS(css11) {
1056
+ return {
1057
+ "@desktop": css11["@desktop"],
1058
+ "@mobile": css11["@mobile"]
1059
+ };
1060
+ }
1061
+ var permanentClasses = {};
1062
+ function generateItemClassName(instance, stitchesInstance) {
1063
+ let { css: css11, type, className: cls = "" } = instance.data;
1064
+ let className = "";
1065
+ let permanentClass = "";
1066
+ let perCss = instance.Element?.permanentCss;
1067
+ if (perCss) {
1068
+ if (type in permanentClasses) {
1069
+ permanentClass = permanentClasses[type];
1070
+ } else {
1071
+ let { className: perCls } = stitchesInstance.css(perCss)();
1072
+ Object.assign(permanentClasses, { [type]: perCls });
1073
+ permanentClass = perCls;
1074
+ }
1075
+ }
1076
+ className = permanentClass;
1077
+ if (css11) {
1078
+ let formattedCss = formatCSS(css11);
1079
+ let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
1080
+ let { stitchesClass } = instance;
1081
+ let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
1082
+ className = (0, import_clsx4.default)(permanentClass, cls, newStitchesClass, otherClass);
1083
+ instance.stitchesClass = newStitchesClass;
1084
+ }
1085
+ return className;
1086
+ }
1087
+ function loadCSS(attrs) {
1088
+ return new Promise((resolve, reject) => {
1089
+ let found = document.querySelector(`link[href="${attrs.href}"]`);
1090
+ if (found) {
1091
+ return resolve(true);
1092
+ }
1093
+ let link = document.createElement("link");
1094
+ Object.assign(link, attrs);
1095
+ link.addEventListener("load", () => resolve(true));
1096
+ link.onerror = reject;
1097
+ document.head.appendChild(link);
1098
+ });
1099
+ }
1100
+
1101
+ // src/elements/Slideshow/index.tsx
1102
+ var Slideshow = (0, import_react21.forwardRef)((props, ref) => {
1103
+ let {
1104
+ animation,
1105
+ slidesPerView,
1106
+ spacing,
1107
+ showArrows,
1108
+ showDots,
1109
+ dotsPosition,
1110
+ autoRotate,
1111
+ changeSlidesEvery,
1112
+ children,
1113
+ ...rest
1114
+ } = props;
1115
+ let [cssLoaded, setCssLoaded] = (0, import_react21.useState)(false);
1116
+ let [created, setCreated] = (0, import_react21.useState)(false);
1117
+ let [ready, setReady] = (0, import_react21.useState)(false);
1118
+ let [currentSlide, setCurrentSlide] = (0, import_react21.useState)(0);
1119
+ let [sliderRef, instanceRef] = (0, import_react20.useKeenSlider)(
1120
+ {
1121
+ slides: {
1122
+ perView: slidesPerView
1123
+ },
1124
+ created: () => {
1125
+ setCreated(true);
1126
+ },
1127
+ slideChanged: (slider) => {
1128
+ setCurrentSlide(slider.track.details.rel);
1129
+ }
1130
+ },
1131
+ [ResizePlugin]
1132
+ );
1133
+ (0, import_react21.useEffect)(() => {
1134
+ loadCSS({
1135
+ rel: "stylesheet",
1136
+ href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1137
+ }).then(() => setCssLoaded(true));
1138
+ }, []);
1139
+ (0, import_react21.useEffect)(() => {
1140
+ if (created && cssLoaded) {
1141
+ setReady(true);
1142
+ }
1143
+ }, [created, cssLoaded]);
1144
+ let style = {
1145
+ "--slider-opacity": ready ? 1 : 0
1146
+ };
1147
+ return /* @__PURE__ */ import_react21.default.createElement("div", {
1148
+ ref,
1149
+ style,
1150
+ ...rest
1151
+ }, /* @__PURE__ */ import_react21.default.createElement("div", {
1152
+ ref: sliderRef,
1153
+ className: "keen-slider"
1154
+ }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react21.default.createElement(Arrows, {
1155
+ instanceRef,
1156
+ currentSlide,
1157
+ className: "wv-slideshow--arrows"
1158
+ }), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react21.default.createElement(Dots, {
1159
+ instanceRef,
1160
+ currentSlide,
1161
+ className: "wv-slideshow--dots"
1162
+ }));
1163
+ });
1164
+ var css9 = {
1165
+ "@desktop": {
1166
+ opacity: "var(--slider-opacity, 0)",
1167
+ padding: "32px 0",
1168
+ ".keen-slider": {
1169
+ height: "100%"
1170
+ }
1171
+ }
1172
+ };
1173
+ Slideshow.defaultProps = {
1174
+ animation: "fade",
1175
+ slidesPerView: 1,
1176
+ spacing: 0,
1177
+ showArrows: true,
1178
+ showDots: true,
1179
+ dotsPosition: "bottom",
1180
+ autoRotate: false,
1181
+ changeSlidesEvery: 5
1182
+ };
1183
+ var Slideshow_default = Slideshow;
1184
+
1185
+ // src/elements/Slideshow/Slide.tsx
1186
+ var import_react26 = __toESM(require("react"));
1187
+
1188
+ // src/components/Background.tsx
1189
+ var import_react22 = require("@stitches/react");
1190
+ var import_react23 = __toESM(require("react"));
1191
+ function Background2(props) {
1192
+ let {
1193
+ backgroundColor,
1194
+ backgroundImage,
1195
+ backgroundFit,
1196
+ backgroundPosition,
1197
+ className
1198
+ } = props;
1199
+ let style = {
1200
+ ["--bg-color"]: backgroundColor,
1201
+ ["--bg-fit"]: backgroundFit,
1202
+ ["--bg-position"]: backgroundPosition
1203
+ };
1204
+ if (backgroundImage || backgroundColor) {
1205
+ return /* @__PURE__ */ import_react23.default.createElement(StyledBackground, {
1206
+ style,
1207
+ className
1208
+ }, backgroundImage && /* @__PURE__ */ import_react23.default.createElement("img", {
1209
+ width: "100%",
1210
+ height: "100%",
1211
+ "data-blink-src": backgroundImage,
1212
+ alt: "Background"
1213
+ }));
1214
+ }
1215
+ return null;
1216
+ }
1217
+ var StyledBackground = (0, import_react22.styled)("div", {
1218
+ display: "block !important",
1219
+ position: "absolute",
1220
+ inset: 0,
1221
+ backgroundColor: "var(--bg-color)",
1222
+ img: {
1223
+ objectFit: "var(--bg-fit, cover)",
1224
+ objectPosition: "var(--bg-position, 50% 50%)"
1225
+ }
1226
+ });
1227
+
1228
+ // src/components/Overlay.tsx
1229
+ var import_react24 = require("@stitches/react");
1230
+ var import_react25 = __toESM(require("react"));
1231
+ function Overlay2(props) {
1232
+ let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1233
+ if (enabled) {
1234
+ return /* @__PURE__ */ import_react25.default.createElement(StyledOverlay, {
1235
+ className,
1236
+ css: { ["--overlay-opacity"]: opacity / 100 }
1237
+ });
1238
+ }
1239
+ return null;
1240
+ }
1241
+ var StyledOverlay = (0, import_react24.styled)("div", {
1242
+ display: "block !important",
1243
+ position: "absolute",
1244
+ inset: 0,
1245
+ backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1246
+ });
1247
+
1248
+ // src/elements/Slideshow/position.ts
1249
+ var slidePositionMap = {
1250
+ "top left": {
1251
+ justifyContent: "flex-start",
1252
+ alignItems: "flex-start"
1253
+ },
1254
+ "top center": {
1255
+ justifyContent: "flex-start",
1256
+ alignItems: "center"
1257
+ },
1258
+ "top right": {
1259
+ justifyContent: "flex-start",
1260
+ alignItems: "flex-end"
1261
+ },
1262
+ "center left": {
1263
+ justifyContent: "center",
1264
+ alignItems: "flex-start"
1265
+ },
1266
+ "center center": {
1267
+ justifyContent: "center",
1268
+ alignItems: "center"
1269
+ },
1270
+ "center right": {
1271
+ justifyContent: "center",
1272
+ alignItems: "flex-end"
1273
+ },
1274
+ "bottom left": {
1275
+ justifyContent: "flex-end",
1276
+ alignItems: "flex-start"
1277
+ },
1278
+ "bottom center": {
1279
+ justifyContent: "flex-end",
1280
+ alignItems: "center"
1281
+ },
1282
+ "bottom right": {
1283
+ justifyContent: "flex-end",
1284
+ alignItems: "flex-end"
1285
+ }
1286
+ };
1287
+
1288
+ // src/elements/Slideshow/Slide.tsx
1289
+ var Slide = (0, import_react26.forwardRef)((props, ref) => {
1290
+ let {
1291
+ contentPosition,
1292
+ backgroundColor,
1293
+ backgroundImage,
1294
+ backgroundFit,
1295
+ backgroundPosition,
1296
+ enableOverlay,
1297
+ overlayOpacity,
1298
+ children,
1299
+ ...rest
1300
+ } = props;
1301
+ let style = slidePositionMap[contentPosition];
1302
+ return /* @__PURE__ */ import_react26.default.createElement("div", {
1303
+ className: "keen-slider__slide"
1304
+ }, /* @__PURE__ */ import_react26.default.createElement(Background2, {
1305
+ backgroundColor,
1306
+ backgroundImage,
1307
+ backgroundFit,
1308
+ backgroundPosition,
1309
+ className: "slide-background"
1310
+ }), /* @__PURE__ */ import_react26.default.createElement(Overlay2, {
1311
+ enableOverlay,
1312
+ overlayOpacity,
1313
+ className: "slide-overlay"
1314
+ }), /* @__PURE__ */ import_react26.default.createElement("div", {
1315
+ ref,
1316
+ style,
1317
+ ...rest
1318
+ }, children?.length ? children : "Add element here"));
1319
+ });
1320
+ var css10 = {
1321
+ "@desktop": {
1322
+ position: "relative",
1323
+ height: "100%",
1324
+ width: "1224px",
1325
+ margin: "0 auto",
1326
+ display: "flex",
1327
+ flexDirection: "column",
1328
+ padding: "100px 20px"
1329
+ }
1330
+ };
1331
+ Slide.defaultProps = {
1332
+ contentPosition: "center center",
1333
+ backgroundFit: "cover",
1334
+ backgroundPosition: "center center",
1335
+ enableOverlay: false,
1336
+ overlayOpacity: 30
1337
+ };
1338
+ var Slide_default = Slide;
1339
+
1340
+ // src/elements/index.ts
1341
+ var Elements = {
1342
+ Countdown: {
1343
+ Component: Countdown_default,
1344
+ type: "countdown",
1345
+ defaultCss: css3
1346
+ },
1347
+ Button: {
1348
+ Component: Button_default,
1349
+ type: "button",
1350
+ defaultCss: css
1351
+ },
1352
+ Container: {
1353
+ Component: Container_default,
1354
+ type: "container",
1355
+ defaultCss: css2
1356
+ },
1357
+ Image: {
1358
+ Component: Image_default,
1359
+ type: "image",
1360
+ defaultCss: css4
1361
+ },
1362
+ Layout: {
1363
+ Component: Layout_default,
1364
+ type: "layout",
1365
+ defaultCss: css5
1366
+ },
1367
+ Map: {
1368
+ Component: Map_default,
1369
+ type: "map",
1370
+ defaultCss: css6
1371
+ },
1372
+ Text: {
1373
+ Component: Text_default,
1374
+ type: "text",
1375
+ defaultCss: css7
1376
+ },
1377
+ Video: {
1378
+ Component: Video_default,
1379
+ type: "video",
1380
+ defaultCss: css8
1381
+ },
1382
+ Slideshow: {
1383
+ Component: Slideshow_default,
1384
+ type: "slideshow",
1385
+ defaultCss: css9
1386
+ },
1387
+ Slide: {
1388
+ Component: Slide_default,
1389
+ type: "slide",
1390
+ defaultCss: css10
1391
+ }
1392
+ };
1393
+
1394
+ // src/context.ts
1395
+ var createRootContext = (configs) => {
1396
+ let rootContext = new import_core.Weaverse(configs);
1397
+ Object.keys(Elements).forEach((key) => {
1398
+ rootContext.registerElement(Elements[key]);
1399
+ });
1400
+ return rootContext;
1401
+ };
1402
+ var WeaverseContext = (0, import_react27.createContext)({});
1403
+ var WeaverseContextProvider = WeaverseContext.Provider;
1404
+ var WeaverseContextConsumer = WeaverseContext.Consumer;
1405
+
1406
+ // src/components/Placeholder.tsx
1407
+ var import_react28 = __toESM(require("react"));
1408
+ var Placeholder = (0, import_react28.forwardRef)(
1409
+ (props, ref) => {
1410
+ let { element, children, ...rest } = props;
1411
+ return /* @__PURE__ */ import_react28.default.createElement("div", {
1412
+ "data-wv-placeholder": true,
1413
+ ref,
1414
+ ...rest
1415
+ }, /* @__PURE__ */ import_react28.default.createElement("div", {
1416
+ style: { fontWeight: 600, marginBottom: "10px" }
1417
+ }, element), /* @__PURE__ */ import_react28.default.createElement("div", null, children));
1418
+ }
1419
+ );
1420
+ var Placeholder_default = Placeholder;
1421
+
1422
+ // src/components/Modal/index.tsx
1423
+ var Modal_exports = {};
1424
+ __export(Modal_exports, {
1425
+ Modal: () => Modal,
1426
+ ModalClose: () => ModalClose,
1427
+ ModalContent: () => ModalContent,
1428
+ ModalHeader: () => ModalHeader,
1429
+ ModalTrigger: () => ModalTrigger
1430
+ });
1431
+ var import_react_dialog2 = require("@radix-ui/react-dialog");
1432
+ var import_react31 = __toESM(require("react"));
1433
+
980
1434
  // src/components/Modal/styled.ts
981
1435
  var import_react_dialog = require("@radix-ui/react-dialog");
982
- var import_react17 = require("@stitches/react");
983
- var overlayShow = (0, import_react17.keyframes)({
1436
+ var import_react29 = require("@stitches/react");
1437
+ var overlayShow = (0, import_react29.keyframes)({
984
1438
  "0%": { opacity: 0 },
985
1439
  "100%": { opacity: 1 }
986
1440
  });
987
- var contentShow = (0, import_react17.keyframes)({
1441
+ var contentShow = (0, import_react29.keyframes)({
988
1442
  "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
989
1443
  "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
990
1444
  });
991
- var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
1445
+ var StyledOverlay2 = (0, import_react29.styled)(import_react_dialog.Overlay, {
992
1446
  display: "block !important",
993
1447
  backgroundColor: "rgba(0, 0, 0, .3)",
994
1448
  position: "fixed",
@@ -996,7 +1450,7 @@ var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
996
1450
  inset: 0,
997
1451
  animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
998
1452
  });
999
- var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1453
+ var StyledTitle = (0, import_react29.styled)(import_react_dialog.Title, {
1000
1454
  margin: "0 0 24px",
1001
1455
  fontWeight: 500,
1002
1456
  fontSize: 24,
@@ -1005,7 +1459,7 @@ var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1005
1459
  fontSize: 20
1006
1460
  }
1007
1461
  });
1008
- var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1462
+ var StyledContent = (0, import_react29.styled)(import_react_dialog.Content, {
1009
1463
  backgroundColor: "white",
1010
1464
  borderRadius: 6,
1011
1465
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
@@ -1036,7 +1490,7 @@ var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1036
1490
  }
1037
1491
  }
1038
1492
  });
1039
- var StyledCloseIcon = (0, import_react17.styled)("button", {
1493
+ var StyledCloseIcon = (0, import_react29.styled)("button", {
1040
1494
  all: "unset",
1041
1495
  cursor: "pointer",
1042
1496
  fontFamily: "inherit",
@@ -1061,10 +1515,10 @@ var StyledCloseIcon = (0, import_react17.styled)("button", {
1061
1515
  });
1062
1516
 
1063
1517
  // src/components/Modal/useOpenChangeEffect.ts
1064
- var import_react18 = require("react");
1518
+ var import_react30 = require("react");
1065
1519
  function useOpenChangeEffect(props) {
1066
1520
  let { open, defaultOpen, onOpenChange } = props;
1067
- let rootCtx = (0, import_react18.useContext)(WeaverseContext);
1521
+ let rootCtx = (0, import_react30.useContext)(WeaverseContext);
1068
1522
  let toggleRootzIndex = (open2) => {
1069
1523
  let { contentRootElement } = rootCtx;
1070
1524
  if (contentRootElement) {
@@ -1075,7 +1529,7 @@ function useOpenChangeEffect(props) {
1075
1529
  }
1076
1530
  }
1077
1531
  };
1078
- (0, import_react18.useEffect)(() => {
1532
+ (0, import_react30.useEffect)(() => {
1079
1533
  let isOpen = open || defaultOpen;
1080
1534
  toggleRootzIndex(isOpen);
1081
1535
  }, [open, defaultOpen]);
@@ -1090,7 +1544,7 @@ function useOpenChangeEffect(props) {
1090
1544
  var Modal = (props) => {
1091
1545
  let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1092
1546
  let handleOpenChange = useOpenChangeEffect(props);
1093
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Root, {
1547
+ return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Root, {
1094
1548
  open,
1095
1549
  defaultOpen,
1096
1550
  onOpenChange: handleOpenChange,
@@ -1098,30 +1552,30 @@ var Modal = (props) => {
1098
1552
  }, children);
1099
1553
  };
1100
1554
  var ModalTrigger = import_react_dialog2.Trigger;
1101
- var ModalHeader = (0, import_react19.forwardRef)(
1555
+ var ModalHeader = (0, import_react31.forwardRef)(
1102
1556
  (props, ref) => {
1103
1557
  let { children, ...rest } = props;
1104
- return /* @__PURE__ */ import_react19.default.createElement(StyledTitle, {
1558
+ return /* @__PURE__ */ import_react31.default.createElement(StyledTitle, {
1105
1559
  ref,
1106
1560
  ...rest,
1107
1561
  "data-wv-modal-header": true
1108
1562
  }, children);
1109
1563
  }
1110
1564
  );
1111
- var ModalContent = (0, import_react19.forwardRef)(
1565
+ var ModalContent = (0, import_react31.forwardRef)(
1112
1566
  (props, ref) => {
1113
1567
  let { children, size, portal, ...rest } = props;
1114
- let modalContent = /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react19.default.createElement(StyledContent, {
1568
+ let modalContent = /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(StyledOverlay2, null), /* @__PURE__ */ import_react31.default.createElement(StyledContent, {
1115
1569
  ...rest,
1116
1570
  onCloseAutoFocus: (e) => e.preventDefault(),
1117
1571
  "data-wv-modal": true,
1118
1572
  "data-size": size,
1119
1573
  ref
1120
- }, /* @__PURE__ */ import_react19.default.createElement(ModalClose, null), /* @__PURE__ */ import_react19.default.createElement("div", {
1574
+ }, /* @__PURE__ */ import_react31.default.createElement(ModalClose, null), /* @__PURE__ */ import_react31.default.createElement("div", {
1121
1575
  className: "wv-modal-content"
1122
1576
  }, children)));
1123
1577
  if (portal) {
1124
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Portal, null, modalContent);
1578
+ return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Portal, null, modalContent);
1125
1579
  }
1126
1580
  return modalContent;
1127
1581
  }
@@ -1130,13 +1584,13 @@ ModalContent.defaultProps = {
1130
1584
  size: "auto",
1131
1585
  portal: false
1132
1586
  };
1133
- var ModalClose = (0, import_react19.forwardRef)(
1587
+ var ModalClose = (0, import_react31.forwardRef)(
1134
1588
  (props, ref) => {
1135
1589
  let { asChild, children, ...rest } = props;
1136
- let closeIcon = /* @__PURE__ */ import_react19.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react19.default.createElement(Icon, {
1590
+ let closeIcon = /* @__PURE__ */ import_react31.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react31.default.createElement(Icon, {
1137
1591
  name: "X"
1138
1592
  }));
1139
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Close, {
1593
+ return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Close, {
1140
1594
  asChild: true,
1141
1595
  ...rest,
1142
1596
  ref
@@ -1145,136 +1599,37 @@ var ModalClose = (0, import_react19.forwardRef)(
1145
1599
  );
1146
1600
 
1147
1601
  // src/components/Spinner.tsx
1148
- var import_react20 = __toESM(require("react"));
1602
+ var import_react32 = __toESM(require("react"));
1149
1603
  function Spinner() {
1150
- return /* @__PURE__ */ import_react20.default.createElement("span", {
1604
+ return /* @__PURE__ */ import_react32.default.createElement("span", {
1151
1605
  className: "wv-spinner-wrapper"
1152
- }, /* @__PURE__ */ import_react20.default.createElement(Icon, {
1606
+ }, /* @__PURE__ */ import_react32.default.createElement(Icon, {
1153
1607
  name: "CircleNotch",
1154
1608
  className: "wv-spinner"
1155
1609
  }));
1156
1610
  }
1157
1611
 
1158
1612
  // src/components/Tooltip.tsx
1159
- var import_react21 = __toESM(require("react"));
1613
+ var import_react33 = __toESM(require("react"));
1160
1614
  function Tooltip({ children }) {
1161
- return /* @__PURE__ */ import_react21.default.createElement("span", {
1615
+ return /* @__PURE__ */ import_react33.default.createElement("span", {
1162
1616
  className: "wv-tooltip"
1163
1617
  }, children);
1164
1618
  }
1165
1619
 
1166
1620
  // src/components/Slider/index.tsx
1167
- var import_clsx4 = __toESM(require("clsx"));
1168
- var import_react23 = require("keen-slider/react");
1169
- var import_react24 = __toESM(require("react"));
1170
-
1171
- // src/components/Slider/Arrows.tsx
1172
- var import_clsx3 = __toESM(require("clsx"));
1173
- var import_react22 = __toESM(require("react"));
1174
- function Arrows(props) {
1175
- let { currentSlide, instanceRef, className } = props;
1176
- let { stitchesInstance } = (0, import_react22.useContext)(WeaverseContext);
1177
- let { className: cssClass } = stitchesInstance.css(css9)();
1178
- let isFirstSlide = currentSlide === 0;
1179
- let isLastSlide = false;
1180
- if (instanceRef.current) {
1181
- isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1182
- }
1183
- let _className = (0, import_clsx3.default)(className, cssClass);
1184
- let arrowLeftClass = (0, import_clsx3.default)(
1185
- "wv-slider-arrow arrow--left",
1186
- isFirstSlide && "arrow--disabled"
1187
- );
1188
- let arrowRightClass = (0, import_clsx3.default)(
1189
- "wv-slider-arrow arrow--right",
1190
- isLastSlide && "arrow--disabled"
1191
- );
1192
- return /* @__PURE__ */ import_react22.default.createElement("div", {
1193
- className: _className
1194
- }, /* @__PURE__ */ import_react22.default.createElement("button", {
1195
- type: "button",
1196
- className: arrowLeftClass,
1197
- onClick: (e) => {
1198
- e.stopPropagation();
1199
- instanceRef?.current?.prev();
1200
- }
1201
- }, /* @__PURE__ */ import_react22.default.createElement(Icon, {
1202
- name: "ArrowLeft"
1203
- })), /* @__PURE__ */ import_react22.default.createElement("button", {
1204
- type: "button",
1205
- className: arrowRightClass,
1206
- onClick: (e) => {
1207
- e.stopPropagation();
1208
- instanceRef?.current?.next();
1209
- }
1210
- }, /* @__PURE__ */ import_react22.default.createElement(Icon, {
1211
- name: "ArrowRight"
1212
- })));
1213
- }
1214
- var css9 = {
1215
- "@desktop": {
1216
- ".wv-slider-arrow": {
1217
- position: "absolute",
1218
- top: "50%",
1219
- transform: "translateY(-50%)",
1220
- width: "44px",
1221
- height: "44px",
1222
- padding: "8px",
1223
- color: "#191919",
1224
- backgroundColor: "#f2f2f2",
1225
- textAlign: "center",
1226
- transition: "all 0.2s ease-in-out",
1227
- borderRadius: "4px",
1228
- border: "none",
1229
- cursor: "pointer",
1230
- "&:hover": {
1231
- backgroundColor: "#191919",
1232
- color: "#f2f2f2"
1233
- },
1234
- svg: {
1235
- verticalAlign: "middle",
1236
- width: "22px",
1237
- height: "22px"
1238
- },
1239
- "&.arrow--left": {
1240
- left: "-80px"
1241
- },
1242
- "&.arrow--right": {
1243
- right: "-80px"
1244
- },
1245
- "&.arrow--disabled": {
1246
- opacity: 0.5
1247
- }
1248
- }
1249
- },
1250
- "@mobile": {
1251
- ".wv-slider-arrow": {
1252
- display: "none"
1253
- }
1254
- }
1255
- };
1256
-
1257
- // src/components/Slider/ResizePlugin.ts
1258
- var ResizePlugin = (slider) => {
1259
- let observer = new ResizeObserver(() => slider.update());
1260
- slider.on("created", () => {
1261
- observer.observe(slider.container);
1262
- });
1263
- slider.on("destroyed", () => {
1264
- observer.unobserve(slider.container);
1265
- });
1266
- };
1267
-
1268
- // src/components/Slider/index.tsx
1269
- function Slider({ children, className }) {
1270
- let [currentSlide, setCurrentSlide] = (0, import_react24.useState)(0);
1271
- let [created, setCreated] = (0, import_react24.useState)(false);
1272
- let [ref, instanceRef] = (0, import_react23.useKeenSlider)(
1621
+ var import_clsx5 = __toESM(require("clsx"));
1622
+ var import_react34 = require("keen-slider/react");
1623
+ var import_react35 = __toESM(require("react"));
1624
+ function Slider({ children, className, gap }) {
1625
+ let [currentSlide, setCurrentSlide] = (0, import_react35.useState)(0);
1626
+ let [created, setCreated] = (0, import_react35.useState)(false);
1627
+ let [ref, instanceRef] = (0, import_react34.useKeenSlider)(
1273
1628
  {
1274
- slides: { perView: 4, spacing: 16 },
1629
+ slides: { perView: 4, spacing: gap },
1275
1630
  breakpoints: {
1276
1631
  "(max-width: 1024px)": {
1277
- slides: { perView: 3, spacing: 16 }
1632
+ slides: { perView: 3, spacing: gap }
1278
1633
  },
1279
1634
  "(max-width: 768px)": {
1280
1635
  slides: {
@@ -1292,15 +1647,15 @@ function Slider({ children, className }) {
1292
1647
  },
1293
1648
  [ResizePlugin]
1294
1649
  );
1295
- let _className = (0, import_clsx4.default)("keen-slider", className);
1296
- let arrowsClass = (0, import_clsx4.default)(className && `${className}-arrows`);
1297
- return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", {
1650
+ let _className = (0, import_clsx5.default)("keen-slider", className);
1651
+ let arrowsClass = (0, import_clsx5.default)(className && `${className}-arrows`);
1652
+ return /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement("div", {
1298
1653
  ref,
1299
1654
  className: _className
1300
- }, /* @__PURE__ */ import_react24.default.createElement("link", {
1655
+ }, /* @__PURE__ */ import_react35.default.createElement("link", {
1301
1656
  rel: "stylesheet",
1302
1657
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1303
- }), children), created && instanceRef?.current && /* @__PURE__ */ import_react24.default.createElement(Arrows, {
1658
+ }), children), created && instanceRef?.current && /* @__PURE__ */ import_react35.default.createElement(Arrows, {
1304
1659
  currentSlide,
1305
1660
  instanceRef,
1306
1661
  className: arrowsClass
@@ -1309,157 +1664,24 @@ function Slider({ children, className }) {
1309
1664
 
1310
1665
  // src/components/index.ts
1311
1666
  var Components = {
1667
+ Background: Background2,
1668
+ Icon,
1669
+ ModalComponents: Modal_exports,
1670
+ Overlay: Overlay2,
1312
1671
  Placeholder: Placeholder_default,
1313
1672
  Spinner,
1314
- ModalComponents: Modal_exports,
1315
- Icon,
1316
1673
  Slider,
1317
1674
  Tooltip
1318
1675
  };
1319
1676
 
1320
- // src/elements/Instagram.tsx
1321
- var Instagram = (0, import_react25.forwardRef)(
1322
- (props, ref) => {
1323
- let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
1324
- let [media, setMedia] = (0, import_react25.useState)([]);
1325
- let [error, setError] = (0, import_react25.useState)(null);
1326
- (0, import_react25.useEffect)(() => {
1327
- if (token) {
1328
- let params = new URLSearchParams({
1329
- access_token: token,
1330
- fields: "id,media_type,caption,media_url,permalink,thumbnail_url"
1331
- });
1332
- fetch(`${INSTAGRAM_API}/me/media?${params.toString()}`).then((res) => res.json()).then((res) => {
1333
- if (res.error) {
1334
- setError(res);
1335
- } else {
1336
- setError(null);
1337
- setMedia([...res.data]);
1338
- }
1339
- }).catch(setError);
1340
- }
1341
- }, [token]);
1342
- if (!token || error) {
1343
- return /* @__PURE__ */ import_react25.default.createElement("div", {
1344
- ref,
1345
- ...rest
1346
- }, /* @__PURE__ */ import_react25.default.createElement(Components.Placeholder, {
1347
- element: "Instagram"
1348
- }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
1349
- }
1350
- let style = {
1351
- "--wv-ig-images-per-row": imagesPerRow,
1352
- "--wv-ig-images-gap": gap + "px"
1353
- };
1354
- return /* @__PURE__ */ import_react25.default.createElement("div", {
1355
- ref,
1356
- ...rest,
1357
- style
1358
- }, /* @__PURE__ */ import_react25.default.createElement("div", {
1359
- className: "wv-ig-media-container"
1360
- }, media.slice(0, numberOfImages).map((item) => {
1361
- let {
1362
- id,
1363
- permalink,
1364
- caption,
1365
- media_url,
1366
- media_type,
1367
- thumbnail_url
1368
- } = item;
1369
- if (media_type === "VIDEO") {
1370
- return /* @__PURE__ */ import_react25.default.createElement("video", {
1371
- key: id,
1372
- controls: true,
1373
- poster: thumbnail_url
1374
- }, /* @__PURE__ */ import_react25.default.createElement("source", {
1375
- src: media_url,
1376
- type: "video/mp4"
1377
- }));
1378
- }
1379
- return /* @__PURE__ */ import_react25.default.createElement("a", {
1380
- key: id,
1381
- href: permalink,
1382
- target: "_blank",
1383
- rel: "noreferrer"
1384
- }, /* @__PURE__ */ import_react25.default.createElement("img", {
1385
- alt: caption,
1386
- src: media_url
1387
- }));
1388
- })));
1389
- }
1390
- );
1391
- Instagram.defaultProps = {
1392
- token: "",
1393
- username: "",
1394
- numberOfImages: 8,
1395
- imagesPerRow: 4,
1396
- gap: 0
1397
- };
1398
-
1399
- // src/elements/index.ts
1400
- var Elements = {
1401
- Countdown: {
1402
- Component: Countdown_default,
1403
- type: "countdown",
1404
- defaultCss: css3
1405
- },
1406
- Button: {
1407
- Component: Button_default,
1408
- type: "button",
1409
- defaultCss: css
1410
- },
1411
- Container: {
1412
- Component: Container_default,
1413
- type: "container",
1414
- defaultCss: css2
1415
- },
1416
- Image: {
1417
- Component: Image_default,
1418
- type: "image",
1419
- defaultCss: css4
1420
- },
1421
- Layout: {
1422
- Component: Layout_default,
1423
- type: "layout",
1424
- defaultCss: css5
1425
- },
1426
- Map: {
1427
- Component: Map_default,
1428
- type: "map",
1429
- defaultCss: css6
1430
- },
1431
- Text: {
1432
- Component: Text_default,
1433
- type: "text",
1434
- defaultCss: css7
1435
- },
1436
- Video: {
1437
- Component: Video_default,
1438
- type: "video",
1439
- defaultCss: css8
1440
- }
1441
- };
1442
-
1443
- // src/context.ts
1444
- var createRootContext = (configs) => {
1445
- let rootContext = new import_core.Weaverse(configs);
1446
- Object.keys(Elements).forEach((key) => {
1447
- rootContext.registerElement(Elements[key]);
1448
- });
1449
- return rootContext;
1450
- };
1451
- var WeaverseContext = (0, import_react26.createContext)({});
1452
- var WeaverseContextProvider = WeaverseContext.Provider;
1453
- var WeaverseContextConsumer = WeaverseContext.Consumer;
1454
-
1455
1677
  // src/renderer.tsx
1456
1678
  var import_core2 = require("@weaverse/core");
1457
- var import_react27 = __toESM(require("react"));
1679
+ var import_react36 = __toESM(require("react"));
1458
1680
  var WeaverseRoot = ({ context }) => {
1459
- let [, setData] = (0, import_react27.useState)(context.projectData);
1460
- let rootRef = (0, import_react27.useRef)();
1681
+ let [, setData] = (0, import_react36.useState)(context.projectData);
1682
+ let rootRef = (0, import_react36.useRef)();
1461
1683
  let renderRoot = () => setData({});
1462
- (0, import_react27.useEffect)(() => {
1684
+ (0, import_react36.useEffect)(() => {
1463
1685
  context.subscribe(renderRoot);
1464
1686
  context.contentRootElement = rootRef.current;
1465
1687
  return () => {
@@ -1469,23 +1691,23 @@ var WeaverseRoot = ({ context }) => {
1469
1691
  let eventHandlers = context?.studioBridge?.eventHandlers || {};
1470
1692
  let themeClass = context.stitchesInstance.theme.className;
1471
1693
  if (context.projectData?.rootId) {
1472
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1694
+ return /* @__PURE__ */ import_react36.default.createElement("div", {
1473
1695
  className: `weaverse-content-root ${themeClass}`,
1474
1696
  ...eventHandlers,
1475
1697
  ref: rootRef
1476
- }, /* @__PURE__ */ import_react27.default.createElement(WeaverseContextProvider, {
1698
+ }, /* @__PURE__ */ import_react36.default.createElement(WeaverseContextProvider, {
1477
1699
  value: context
1478
- }, /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1700
+ }, /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1479
1701
  id: context.projectData.rootId
1480
1702
  })));
1481
1703
  }
1482
1704
  return null;
1483
1705
  };
1484
1706
  var ItemComponent = ({ instance }) => {
1485
- let { stitchesInstance, elementInstances } = (0, import_react27.useContext)(WeaverseContext);
1486
- let [data, setData] = (0, import_react27.useState)(instance.data);
1487
- let { id, type, childIds = [], css: css10, className, ...rest } = data;
1488
- (0, import_react27.useEffect)(() => {
1707
+ let { stitchesInstance, elementInstances } = (0, import_react36.useContext)(WeaverseContext);
1708
+ let [data, setData] = (0, import_react36.useState)(instance.data);
1709
+ let { id, type, childIds = [], css: css11, className, ...rest } = data;
1710
+ (0, import_react36.useEffect)(() => {
1489
1711
  let render = (data2) => setData({ ...data2 });
1490
1712
  instance.subscribe(render);
1491
1713
  if (import_core2.isBrowser && !instance.ref.current) {
@@ -1501,13 +1723,13 @@ var ItemComponent = ({ instance }) => {
1501
1723
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1502
1724
  rest.ref = instance.ref;
1503
1725
  }
1504
- return /* @__PURE__ */ import_react27.default.createElement(Component, {
1726
+ return /* @__PURE__ */ import_react36.default.createElement(Component, {
1505
1727
  key: id,
1506
1728
  "data-wv-type": type,
1507
1729
  "data-wv-id": id,
1508
1730
  className: generateItemClassName(instance, stitchesInstance),
1509
1731
  ...rest
1510
- }, childIds.map((id2) => /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1732
+ }, childIds.map((id2) => /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1511
1733
  key: id2,
1512
1734
  id: id2
1513
1735
  })));
@@ -1517,15 +1739,15 @@ var ItemComponent = ({ instance }) => {
1517
1739
  }
1518
1740
  };
1519
1741
  var ItemInstance = ({ id }) => {
1520
- let context = (0, import_react27.useContext)(WeaverseContext);
1742
+ let context = (0, import_react36.useContext)(WeaverseContext);
1521
1743
  let { itemInstances } = context;
1522
1744
  let instance = itemInstances.get(id);
1523
1745
  if (!instance) {
1524
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1746
+ return /* @__PURE__ */ import_react36.default.createElement("div", {
1525
1747
  style: { display: "none" }
1526
1748
  }, "Item instance ", id, " not found");
1527
1749
  }
1528
- return /* @__PURE__ */ import_react27.default.createElement(ItemComponent, {
1750
+ return /* @__PURE__ */ import_react36.default.createElement(ItemComponent, {
1529
1751
  key: id,
1530
1752
  instance
1531
1753
  });