@weaverse/react 0.7.57 → 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",
@@ -693,39 +656,17 @@ Video.defaultProps = {
693
656
  };
694
657
  var Video_default = Video;
695
658
 
696
- // src/elements/Instagram.tsx
697
- var import_react25 = __toESM(require("react"));
698
-
699
- // src/components/Placeholder.tsx
700
- var import_react14 = __toESM(require("react"));
701
- var Placeholder = (0, import_react14.forwardRef)(
702
- (props, ref) => {
703
- let { element, children, ...rest } = props;
704
- return /* @__PURE__ */ import_react14.default.createElement("div", {
705
- "data-wv-placeholder": true,
706
- ref,
707
- ...rest
708
- }, /* @__PURE__ */ import_react14.default.createElement("div", {
709
- style: { fontWeight: 600, marginBottom: "10px" }
710
- }, element), /* @__PURE__ */ import_react14.default.createElement("div", null, children));
711
- }
712
- );
713
- 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"));
714
662
 
715
- // src/components/Modal/index.tsx
716
- var Modal_exports = {};
717
- __export(Modal_exports, {
718
- Modal: () => Modal,
719
- ModalClose: () => ModalClose,
720
- ModalContent: () => ModalContent,
721
- ModalHeader: () => ModalHeader,
722
- ModalTrigger: () => ModalTrigger
723
- });
724
- var import_react_dialog2 = require("@radix-ui/react-dialog");
725
- 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"));
726
667
 
727
668
  // src/components/Icons/index.tsx
728
- var import_react16 = __toESM(require("react"));
669
+ var import_react15 = __toESM(require("react"));
729
670
 
730
671
  // src/components/Icons/Phosphor.tsx
731
672
  var Phosphor_exports = {};
@@ -740,39 +681,39 @@ __export(Phosphor_exports, {
740
681
  ShoppingCart: () => ShoppingCart,
741
682
  X: () => X
742
683
  });
743
- var import_react15 = __toESM(require("react"));
684
+ var import_react14 = __toESM(require("react"));
744
685
  var CircleNotch = (props) => {
745
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
686
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
746
687
  xmlns: "http://www.w3.org/2000/svg",
747
688
  fill: "none",
748
689
  viewBox: "0 0 24 24",
749
690
  ...props
750
- }, /* @__PURE__ */ import_react15.default.createElement("circle", {
691
+ }, /* @__PURE__ */ import_react14.default.createElement("circle", {
751
692
  style: { opacity: ".25" },
752
693
  cx: "12",
753
694
  cy: "12",
754
695
  r: "10",
755
696
  stroke: "currentColor",
756
697
  strokeWidth: "4"
757
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
698
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
758
699
  style: { opacity: ".75" },
759
700
  fill: "currentColor",
760
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"
761
702
  }));
762
703
  };
763
704
  var X = (props) => {
764
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
705
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
765
706
  xmlns: "http://www.w3.org/2000/svg",
766
707
  width: "20",
767
708
  height: "20",
768
709
  fill: "currentColor",
769
710
  viewBox: "0 0 256 256",
770
711
  ...props
771
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
712
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
772
713
  width: "256",
773
714
  height: "256",
774
715
  fill: "none"
775
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
716
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
776
717
  x1: "200",
777
718
  y1: "56",
778
719
  x2: "56",
@@ -782,7 +723,7 @@ var X = (props) => {
782
723
  strokeLinecap: "round",
783
724
  strokeLinejoin: "round",
784
725
  strokeWidth: "12"
785
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
726
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
786
727
  x1: "200",
787
728
  y1: "200",
788
729
  x2: "56",
@@ -795,7 +736,7 @@ var X = (props) => {
795
736
  }));
796
737
  };
797
738
  var Minus = (props) => {
798
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
739
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
799
740
  width: "196",
800
741
  height: "196",
801
742
  fill: "currentColor",
@@ -803,12 +744,12 @@ var Minus = (props) => {
803
744
  xmlns: "http://www.w3.org/2000/svg",
804
745
  viewBox: "0 0 384 512",
805
746
  ...props
806
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
747
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
807
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"
808
749
  }));
809
750
  };
810
751
  var Plus = (props) => {
811
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
752
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
812
753
  width: "196",
813
754
  height: "196",
814
755
  fill: "currentColor",
@@ -816,23 +757,23 @@ var Plus = (props) => {
816
757
  xmlns: "http://www.w3.org/2000/svg",
817
758
  viewBox: "0 0 384 512",
818
759
  ...props
819
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
760
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
820
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"
821
762
  }));
822
763
  };
823
764
  var ArrowLeft = (props) => {
824
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
765
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
825
766
  xmlns: "http://www.w3.org/2000/svg",
826
767
  width: "192",
827
768
  height: "192",
828
769
  fill: "currentColor",
829
770
  viewBox: "0 0 256 256",
830
771
  ...props
831
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
772
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
832
773
  width: "256",
833
774
  height: "256",
834
775
  fill: "none"
835
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
776
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
836
777
  x1: "216",
837
778
  y1: "128",
838
779
  x2: "40",
@@ -842,7 +783,7 @@ var ArrowLeft = (props) => {
842
783
  strokeLinecap: "round",
843
784
  strokeLinejoin: "round",
844
785
  strokeWidth: "16"
845
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
786
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
846
787
  points: "112 56 40 128 112 200",
847
788
  fill: "none",
848
789
  stroke: "currentColor",
@@ -852,18 +793,18 @@ var ArrowLeft = (props) => {
852
793
  }));
853
794
  };
854
795
  var ArrowRight = (props) => {
855
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
796
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
856
797
  xmlns: "http://www.w3.org/2000/svg",
857
798
  width: "192",
858
799
  height: "192",
859
800
  fill: "currentColor",
860
801
  viewBox: "0 0 256 256",
861
802
  ...props
862
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
803
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
863
804
  width: "256",
864
805
  height: "256",
865
806
  fill: "none"
866
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
807
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
867
808
  x1: "40",
868
809
  y1: "128",
869
810
  x2: "216",
@@ -873,7 +814,7 @@ var ArrowRight = (props) => {
873
814
  strokeLinecap: "round",
874
815
  strokeLinejoin: "round",
875
816
  strokeWidth: "16"
876
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
817
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
877
818
  points: "144 56 216 128 144 200",
878
819
  fill: "none",
879
820
  stroke: "currentColor",
@@ -883,36 +824,36 @@ var ArrowRight = (props) => {
883
824
  }));
884
825
  };
885
826
  var Image2 = (props) => {
886
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
827
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
887
828
  xmlns: "http://www.w3.org/2000/svg",
888
829
  "aria-hidden": "true",
889
830
  fill: "currentColor",
890
831
  viewBox: "0 0 640 512",
891
832
  ...props
892
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
833
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
893
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"
894
835
  }));
895
836
  };
896
837
  var ShoppingCart = (props) => {
897
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
838
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
898
839
  xmlns: "http://www.w3.org/2000/svg",
899
840
  width: "192",
900
841
  height: "192",
901
842
  fill: "currentColor",
902
843
  viewBox: "0 0 256 256",
903
844
  ...props
904
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
845
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
905
846
  width: "256",
906
847
  height: "256",
907
848
  fill: "none"
908
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
849
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
909
850
  d: "M184,184H69.8L41.9,30.6A8,8,0,0,0,34.1,24H16",
910
851
  fill: "none",
911
852
  stroke: "currentColor",
912
853
  strokeLinecap: "round",
913
854
  strokeLinejoin: "round",
914
855
  strokeWidth: "16"
915
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
856
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
916
857
  cx: "80",
917
858
  cy: "204",
918
859
  r: "20",
@@ -921,7 +862,7 @@ var ShoppingCart = (props) => {
921
862
  strokeLinecap: "round",
922
863
  strokeLinejoin: "round",
923
864
  strokeWidth: "16"
924
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
865
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
925
866
  cx: "184",
926
867
  cy: "204",
927
868
  r: "20",
@@ -930,7 +871,7 @@ var ShoppingCart = (props) => {
930
871
  strokeLinecap: "round",
931
872
  strokeLinejoin: "round",
932
873
  strokeWidth: "16"
933
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
874
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
934
875
  d: "M62.5,144H188.1a15.9,15.9,0,0,0,15.7-13.1L216,64H48",
935
876
  fill: "none",
936
877
  stroke: "currentColor",
@@ -940,25 +881,25 @@ var ShoppingCart = (props) => {
940
881
  }));
941
882
  };
942
883
  var Eye = (props) => {
943
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
884
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
944
885
  xmlns: "http://www.w3.org/2000/svg",
945
886
  width: "192",
946
887
  height: "192",
947
888
  fill: "currentColor",
948
889
  viewBox: "0 0 256 256",
949
890
  ...props
950
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
891
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
951
892
  width: "256",
952
893
  height: "256",
953
894
  fill: "none"
954
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
895
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
955
896
  d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
956
897
  fill: "none",
957
898
  stroke: "currentColor",
958
899
  strokeLinecap: "round",
959
900
  strokeLinejoin: "round",
960
901
  strokeWidth: "12"
961
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
902
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
962
903
  cx: "128",
963
904
  cy: "128",
964
905
  r: "40",
@@ -971,28 +912,537 @@ var Eye = (props) => {
971
912
  };
972
913
 
973
914
  // src/components/Icons/index.tsx
974
- var import_clsx2 = __toESM(require("clsx"));
915
+ var import_clsx = __toESM(require("clsx"));
975
916
  function Icon({ name, className, ...props }) {
976
917
  let WeaverseIcon = Phosphor_exports[name];
977
- let cls = (0, import_clsx2.default)("wv-icon", className);
978
- 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, {
979
920
  className: cls,
980
921
  ...props
981
922
  });
982
923
  }
983
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
+
984
1434
  // src/components/Modal/styled.ts
985
1435
  var import_react_dialog = require("@radix-ui/react-dialog");
986
- var import_react17 = require("@stitches/react");
987
- var overlayShow = (0, import_react17.keyframes)({
1436
+ var import_react29 = require("@stitches/react");
1437
+ var overlayShow = (0, import_react29.keyframes)({
988
1438
  "0%": { opacity: 0 },
989
1439
  "100%": { opacity: 1 }
990
1440
  });
991
- var contentShow = (0, import_react17.keyframes)({
1441
+ var contentShow = (0, import_react29.keyframes)({
992
1442
  "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
993
1443
  "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
994
1444
  });
995
- var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
1445
+ var StyledOverlay2 = (0, import_react29.styled)(import_react_dialog.Overlay, {
996
1446
  display: "block !important",
997
1447
  backgroundColor: "rgba(0, 0, 0, .3)",
998
1448
  position: "fixed",
@@ -1000,7 +1450,7 @@ var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
1000
1450
  inset: 0,
1001
1451
  animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1002
1452
  });
1003
- var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1453
+ var StyledTitle = (0, import_react29.styled)(import_react_dialog.Title, {
1004
1454
  margin: "0 0 24px",
1005
1455
  fontWeight: 500,
1006
1456
  fontSize: 24,
@@ -1009,7 +1459,7 @@ var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1009
1459
  fontSize: 20
1010
1460
  }
1011
1461
  });
1012
- var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1462
+ var StyledContent = (0, import_react29.styled)(import_react_dialog.Content, {
1013
1463
  backgroundColor: "white",
1014
1464
  borderRadius: 6,
1015
1465
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
@@ -1040,7 +1490,7 @@ var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1040
1490
  }
1041
1491
  }
1042
1492
  });
1043
- var StyledCloseIcon = (0, import_react17.styled)("button", {
1493
+ var StyledCloseIcon = (0, import_react29.styled)("button", {
1044
1494
  all: "unset",
1045
1495
  cursor: "pointer",
1046
1496
  fontFamily: "inherit",
@@ -1065,10 +1515,10 @@ var StyledCloseIcon = (0, import_react17.styled)("button", {
1065
1515
  });
1066
1516
 
1067
1517
  // src/components/Modal/useOpenChangeEffect.ts
1068
- var import_react18 = require("react");
1518
+ var import_react30 = require("react");
1069
1519
  function useOpenChangeEffect(props) {
1070
1520
  let { open, defaultOpen, onOpenChange } = props;
1071
- let rootCtx = (0, import_react18.useContext)(WeaverseContext);
1521
+ let rootCtx = (0, import_react30.useContext)(WeaverseContext);
1072
1522
  let toggleRootzIndex = (open2) => {
1073
1523
  let { contentRootElement } = rootCtx;
1074
1524
  if (contentRootElement) {
@@ -1079,7 +1529,7 @@ function useOpenChangeEffect(props) {
1079
1529
  }
1080
1530
  }
1081
1531
  };
1082
- (0, import_react18.useEffect)(() => {
1532
+ (0, import_react30.useEffect)(() => {
1083
1533
  let isOpen = open || defaultOpen;
1084
1534
  toggleRootzIndex(isOpen);
1085
1535
  }, [open, defaultOpen]);
@@ -1094,7 +1544,7 @@ function useOpenChangeEffect(props) {
1094
1544
  var Modal = (props) => {
1095
1545
  let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1096
1546
  let handleOpenChange = useOpenChangeEffect(props);
1097
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Root, {
1547
+ return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Root, {
1098
1548
  open,
1099
1549
  defaultOpen,
1100
1550
  onOpenChange: handleOpenChange,
@@ -1102,30 +1552,30 @@ var Modal = (props) => {
1102
1552
  }, children);
1103
1553
  };
1104
1554
  var ModalTrigger = import_react_dialog2.Trigger;
1105
- var ModalHeader = (0, import_react19.forwardRef)(
1555
+ var ModalHeader = (0, import_react31.forwardRef)(
1106
1556
  (props, ref) => {
1107
1557
  let { children, ...rest } = props;
1108
- return /* @__PURE__ */ import_react19.default.createElement(StyledTitle, {
1558
+ return /* @__PURE__ */ import_react31.default.createElement(StyledTitle, {
1109
1559
  ref,
1110
1560
  ...rest,
1111
1561
  "data-wv-modal-header": true
1112
1562
  }, children);
1113
1563
  }
1114
1564
  );
1115
- var ModalContent = (0, import_react19.forwardRef)(
1565
+ var ModalContent = (0, import_react31.forwardRef)(
1116
1566
  (props, ref) => {
1117
1567
  let { children, size, portal, ...rest } = props;
1118
- 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, {
1119
1569
  ...rest,
1120
1570
  onCloseAutoFocus: (e) => e.preventDefault(),
1121
1571
  "data-wv-modal": true,
1122
1572
  "data-size": size,
1123
1573
  ref
1124
- }, /* @__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", {
1125
1575
  className: "wv-modal-content"
1126
1576
  }, children)));
1127
1577
  if (portal) {
1128
- 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);
1129
1579
  }
1130
1580
  return modalContent;
1131
1581
  }
@@ -1134,13 +1584,13 @@ ModalContent.defaultProps = {
1134
1584
  size: "auto",
1135
1585
  portal: false
1136
1586
  };
1137
- var ModalClose = (0, import_react19.forwardRef)(
1587
+ var ModalClose = (0, import_react31.forwardRef)(
1138
1588
  (props, ref) => {
1139
1589
  let { asChild, children, ...rest } = props;
1140
- 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, {
1141
1591
  name: "X"
1142
1592
  }));
1143
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Close, {
1593
+ return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Close, {
1144
1594
  asChild: true,
1145
1595
  ...rest,
1146
1596
  ref
@@ -1149,131 +1599,32 @@ var ModalClose = (0, import_react19.forwardRef)(
1149
1599
  );
1150
1600
 
1151
1601
  // src/components/Spinner.tsx
1152
- var import_react20 = __toESM(require("react"));
1602
+ var import_react32 = __toESM(require("react"));
1153
1603
  function Spinner() {
1154
- return /* @__PURE__ */ import_react20.default.createElement("span", {
1604
+ return /* @__PURE__ */ import_react32.default.createElement("span", {
1155
1605
  className: "wv-spinner-wrapper"
1156
- }, /* @__PURE__ */ import_react20.default.createElement(Icon, {
1606
+ }, /* @__PURE__ */ import_react32.default.createElement(Icon, {
1157
1607
  name: "CircleNotch",
1158
1608
  className: "wv-spinner"
1159
1609
  }));
1160
1610
  }
1161
1611
 
1162
1612
  // src/components/Tooltip.tsx
1163
- var import_react21 = __toESM(require("react"));
1613
+ var import_react33 = __toESM(require("react"));
1164
1614
  function Tooltip({ children }) {
1165
- return /* @__PURE__ */ import_react21.default.createElement("span", {
1615
+ return /* @__PURE__ */ import_react33.default.createElement("span", {
1166
1616
  className: "wv-tooltip"
1167
1617
  }, children);
1168
1618
  }
1169
1619
 
1170
1620
  // src/components/Slider/index.tsx
1171
- var import_clsx4 = __toESM(require("clsx"));
1172
- var import_react23 = require("keen-slider/react");
1173
- var import_react24 = __toESM(require("react"));
1174
-
1175
- // src/components/Slider/Arrows.tsx
1176
- var import_clsx3 = __toESM(require("clsx"));
1177
- var import_react22 = __toESM(require("react"));
1178
- function Arrows(props) {
1179
- let { currentSlide, instanceRef, className } = props;
1180
- let { stitchesInstance } = (0, import_react22.useContext)(WeaverseContext);
1181
- let { className: cssClass } = stitchesInstance.css(css9)();
1182
- let isFirstSlide = currentSlide === 0;
1183
- let isLastSlide = false;
1184
- if (instanceRef.current) {
1185
- isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1186
- }
1187
- let _className = (0, import_clsx3.default)(className, cssClass);
1188
- let arrowLeftClass = (0, import_clsx3.default)(
1189
- "wv-slider-arrow arrow--left",
1190
- isFirstSlide && "arrow--disabled"
1191
- );
1192
- let arrowRightClass = (0, import_clsx3.default)(
1193
- "wv-slider-arrow arrow--right",
1194
- isLastSlide && "arrow--disabled"
1195
- );
1196
- return /* @__PURE__ */ import_react22.default.createElement("div", {
1197
- className: _className
1198
- }, /* @__PURE__ */ import_react22.default.createElement("button", {
1199
- type: "button",
1200
- className: arrowLeftClass,
1201
- onClick: (e) => {
1202
- e.stopPropagation();
1203
- instanceRef?.current?.prev();
1204
- }
1205
- }, /* @__PURE__ */ import_react22.default.createElement(Icon, {
1206
- name: "ArrowLeft"
1207
- })), /* @__PURE__ */ import_react22.default.createElement("button", {
1208
- type: "button",
1209
- className: arrowRightClass,
1210
- onClick: (e) => {
1211
- e.stopPropagation();
1212
- instanceRef?.current?.next();
1213
- }
1214
- }, /* @__PURE__ */ import_react22.default.createElement(Icon, {
1215
- name: "ArrowRight"
1216
- })));
1217
- }
1218
- var css9 = {
1219
- "@desktop": {
1220
- ".wv-slider-arrow": {
1221
- position: "absolute",
1222
- top: "50%",
1223
- transform: "translateY(-50%)",
1224
- width: "44px",
1225
- height: "44px",
1226
- padding: "8px",
1227
- color: "#191919",
1228
- backgroundColor: "#f2f2f2",
1229
- textAlign: "center",
1230
- transition: "all 0.2s ease-in-out",
1231
- borderRadius: "4px",
1232
- border: "none",
1233
- cursor: "pointer",
1234
- "&:hover": {
1235
- backgroundColor: "#191919",
1236
- color: "#f2f2f2"
1237
- },
1238
- svg: {
1239
- verticalAlign: "middle",
1240
- width: "22px",
1241
- height: "22px"
1242
- },
1243
- "&.arrow--left": {
1244
- left: "-80px"
1245
- },
1246
- "&.arrow--right": {
1247
- right: "-80px"
1248
- },
1249
- "&.arrow--disabled": {
1250
- opacity: 0.5
1251
- }
1252
- }
1253
- },
1254
- "@mobile": {
1255
- ".wv-slider-arrow": {
1256
- display: "none"
1257
- }
1258
- }
1259
- };
1260
-
1261
- // src/components/Slider/ResizePlugin.ts
1262
- var ResizePlugin = (slider) => {
1263
- let observer = new ResizeObserver(() => slider.update());
1264
- slider.on("created", () => {
1265
- observer.observe(slider.container);
1266
- });
1267
- slider.on("destroyed", () => {
1268
- observer.unobserve(slider.container);
1269
- });
1270
- };
1271
-
1272
- // src/components/Slider/index.tsx
1621
+ var import_clsx5 = __toESM(require("clsx"));
1622
+ var import_react34 = require("keen-slider/react");
1623
+ var import_react35 = __toESM(require("react"));
1273
1624
  function Slider({ children, className, gap }) {
1274
- let [currentSlide, setCurrentSlide] = (0, import_react24.useState)(0);
1275
- let [created, setCreated] = (0, import_react24.useState)(false);
1276
- let [ref, instanceRef] = (0, import_react23.useKeenSlider)(
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)(
1277
1628
  {
1278
1629
  slides: { perView: 4, spacing: gap },
1279
1630
  breakpoints: {
@@ -1296,15 +1647,15 @@ function Slider({ children, className, gap }) {
1296
1647
  },
1297
1648
  [ResizePlugin]
1298
1649
  );
1299
- let _className = (0, import_clsx4.default)("keen-slider", className);
1300
- let arrowsClass = (0, import_clsx4.default)(className && `${className}-arrows`);
1301
- 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", {
1302
1653
  ref,
1303
1654
  className: _className
1304
- }, /* @__PURE__ */ import_react24.default.createElement("link", {
1655
+ }, /* @__PURE__ */ import_react35.default.createElement("link", {
1305
1656
  rel: "stylesheet",
1306
1657
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1307
- }), children), created && instanceRef?.current && /* @__PURE__ */ import_react24.default.createElement(Arrows, {
1658
+ }), children), created && instanceRef?.current && /* @__PURE__ */ import_react35.default.createElement(Arrows, {
1308
1659
  currentSlide,
1309
1660
  instanceRef,
1310
1661
  className: arrowsClass
@@ -1313,157 +1664,24 @@ function Slider({ children, className, gap }) {
1313
1664
 
1314
1665
  // src/components/index.ts
1315
1666
  var Components = {
1667
+ Background: Background2,
1668
+ Icon,
1669
+ ModalComponents: Modal_exports,
1670
+ Overlay: Overlay2,
1316
1671
  Placeholder: Placeholder_default,
1317
1672
  Spinner,
1318
- ModalComponents: Modal_exports,
1319
- Icon,
1320
1673
  Slider,
1321
1674
  Tooltip
1322
1675
  };
1323
1676
 
1324
- // src/elements/Instagram.tsx
1325
- var Instagram = (0, import_react25.forwardRef)(
1326
- (props, ref) => {
1327
- let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
1328
- let [media, setMedia] = (0, import_react25.useState)([]);
1329
- let [error, setError] = (0, import_react25.useState)(null);
1330
- (0, import_react25.useEffect)(() => {
1331
- if (token) {
1332
- let params = new URLSearchParams({
1333
- access_token: token,
1334
- fields: "id,media_type,caption,media_url,permalink,thumbnail_url"
1335
- });
1336
- fetch(`${INSTAGRAM_API}/me/media?${params.toString()}`).then((res) => res.json()).then((res) => {
1337
- if (res.error) {
1338
- setError(res);
1339
- } else {
1340
- setError(null);
1341
- setMedia([...res.data]);
1342
- }
1343
- }).catch(setError);
1344
- }
1345
- }, [token]);
1346
- if (!token || error) {
1347
- return /* @__PURE__ */ import_react25.default.createElement("div", {
1348
- ref,
1349
- ...rest
1350
- }, /* @__PURE__ */ import_react25.default.createElement(Components.Placeholder, {
1351
- element: "Instagram"
1352
- }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
1353
- }
1354
- let style = {
1355
- "--wv-ig-images-per-row": imagesPerRow,
1356
- "--wv-ig-images-gap": gap + "px"
1357
- };
1358
- return /* @__PURE__ */ import_react25.default.createElement("div", {
1359
- ref,
1360
- ...rest,
1361
- style
1362
- }, /* @__PURE__ */ import_react25.default.createElement("div", {
1363
- className: "wv-ig-media-container"
1364
- }, media.slice(0, numberOfImages).map((item) => {
1365
- let {
1366
- id,
1367
- permalink,
1368
- caption,
1369
- media_url,
1370
- media_type,
1371
- thumbnail_url
1372
- } = item;
1373
- if (media_type === "VIDEO") {
1374
- return /* @__PURE__ */ import_react25.default.createElement("video", {
1375
- key: id,
1376
- controls: true,
1377
- poster: thumbnail_url
1378
- }, /* @__PURE__ */ import_react25.default.createElement("source", {
1379
- src: media_url,
1380
- type: "video/mp4"
1381
- }));
1382
- }
1383
- return /* @__PURE__ */ import_react25.default.createElement("a", {
1384
- key: id,
1385
- href: permalink,
1386
- target: "_blank",
1387
- rel: "noreferrer"
1388
- }, /* @__PURE__ */ import_react25.default.createElement("img", {
1389
- alt: caption,
1390
- src: media_url
1391
- }));
1392
- })));
1393
- }
1394
- );
1395
- Instagram.defaultProps = {
1396
- token: "",
1397
- username: "",
1398
- numberOfImages: 8,
1399
- imagesPerRow: 4,
1400
- gap: 0
1401
- };
1402
-
1403
- // src/elements/index.ts
1404
- var Elements = {
1405
- Countdown: {
1406
- Component: Countdown_default,
1407
- type: "countdown",
1408
- defaultCss: css3
1409
- },
1410
- Button: {
1411
- Component: Button_default,
1412
- type: "button",
1413
- defaultCss: css
1414
- },
1415
- Container: {
1416
- Component: Container_default,
1417
- type: "container",
1418
- defaultCss: css2
1419
- },
1420
- Image: {
1421
- Component: Image_default,
1422
- type: "image",
1423
- defaultCss: css4
1424
- },
1425
- Layout: {
1426
- Component: Layout_default,
1427
- type: "layout",
1428
- defaultCss: css5
1429
- },
1430
- Map: {
1431
- Component: Map_default,
1432
- type: "map",
1433
- defaultCss: css6
1434
- },
1435
- Text: {
1436
- Component: Text_default,
1437
- type: "text",
1438
- defaultCss: css7
1439
- },
1440
- Video: {
1441
- Component: Video_default,
1442
- type: "video",
1443
- defaultCss: css8
1444
- }
1445
- };
1446
-
1447
- // src/context.ts
1448
- var createRootContext = (configs) => {
1449
- let rootContext = new import_core.Weaverse(configs);
1450
- Object.keys(Elements).forEach((key) => {
1451
- rootContext.registerElement(Elements[key]);
1452
- });
1453
- return rootContext;
1454
- };
1455
- var WeaverseContext = (0, import_react26.createContext)({});
1456
- var WeaverseContextProvider = WeaverseContext.Provider;
1457
- var WeaverseContextConsumer = WeaverseContext.Consumer;
1458
-
1459
1677
  // src/renderer.tsx
1460
1678
  var import_core2 = require("@weaverse/core");
1461
- var import_react27 = __toESM(require("react"));
1679
+ var import_react36 = __toESM(require("react"));
1462
1680
  var WeaverseRoot = ({ context }) => {
1463
- let [, setData] = (0, import_react27.useState)(context.projectData);
1464
- let rootRef = (0, import_react27.useRef)();
1681
+ let [, setData] = (0, import_react36.useState)(context.projectData);
1682
+ let rootRef = (0, import_react36.useRef)();
1465
1683
  let renderRoot = () => setData({});
1466
- (0, import_react27.useEffect)(() => {
1684
+ (0, import_react36.useEffect)(() => {
1467
1685
  context.subscribe(renderRoot);
1468
1686
  context.contentRootElement = rootRef.current;
1469
1687
  return () => {
@@ -1473,23 +1691,23 @@ var WeaverseRoot = ({ context }) => {
1473
1691
  let eventHandlers = context?.studioBridge?.eventHandlers || {};
1474
1692
  let themeClass = context.stitchesInstance.theme.className;
1475
1693
  if (context.projectData?.rootId) {
1476
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1694
+ return /* @__PURE__ */ import_react36.default.createElement("div", {
1477
1695
  className: `weaverse-content-root ${themeClass}`,
1478
1696
  ...eventHandlers,
1479
1697
  ref: rootRef
1480
- }, /* @__PURE__ */ import_react27.default.createElement(WeaverseContextProvider, {
1698
+ }, /* @__PURE__ */ import_react36.default.createElement(WeaverseContextProvider, {
1481
1699
  value: context
1482
- }, /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1700
+ }, /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1483
1701
  id: context.projectData.rootId
1484
1702
  })));
1485
1703
  }
1486
1704
  return null;
1487
1705
  };
1488
1706
  var ItemComponent = ({ instance }) => {
1489
- let { stitchesInstance, elementInstances } = (0, import_react27.useContext)(WeaverseContext);
1490
- let [data, setData] = (0, import_react27.useState)(instance.data);
1491
- let { id, type, childIds = [], css: css10, className, ...rest } = data;
1492
- (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)(() => {
1493
1711
  let render = (data2) => setData({ ...data2 });
1494
1712
  instance.subscribe(render);
1495
1713
  if (import_core2.isBrowser && !instance.ref.current) {
@@ -1505,13 +1723,13 @@ var ItemComponent = ({ instance }) => {
1505
1723
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1506
1724
  rest.ref = instance.ref;
1507
1725
  }
1508
- return /* @__PURE__ */ import_react27.default.createElement(Component, {
1726
+ return /* @__PURE__ */ import_react36.default.createElement(Component, {
1509
1727
  key: id,
1510
1728
  "data-wv-type": type,
1511
1729
  "data-wv-id": id,
1512
1730
  className: generateItemClassName(instance, stitchesInstance),
1513
1731
  ...rest
1514
- }, childIds.map((id2) => /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1732
+ }, childIds.map((id2) => /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1515
1733
  key: id2,
1516
1734
  id: id2
1517
1735
  })));
@@ -1521,15 +1739,15 @@ var ItemComponent = ({ instance }) => {
1521
1739
  }
1522
1740
  };
1523
1741
  var ItemInstance = ({ id }) => {
1524
- let context = (0, import_react27.useContext)(WeaverseContext);
1742
+ let context = (0, import_react36.useContext)(WeaverseContext);
1525
1743
  let { itemInstances } = context;
1526
1744
  let instance = itemInstances.get(id);
1527
1745
  if (!instance) {
1528
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1746
+ return /* @__PURE__ */ import_react36.default.createElement("div", {
1529
1747
  style: { display: "none" }
1530
1748
  }, "Item instance ", id, " not found");
1531
1749
  }
1532
- return /* @__PURE__ */ import_react27.default.createElement(ItemComponent, {
1750
+ return /* @__PURE__ */ import_react36.default.createElement(ItemComponent, {
1533
1751
  key: id,
1534
1752
  instance
1535
1753
  });