@weaverse/react 0.7.57 → 0.7.59

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
@@ -29,6 +29,7 @@ var src_exports = {};
29
29
  __export(src_exports, {
30
30
  Components: () => Components,
31
31
  Elements: () => Elements,
32
+ SliderComponents: () => SliderComponents,
32
33
  WeaverseContext: () => WeaverseContext,
33
34
  WeaverseContextConsumer: () => WeaverseContextConsumer,
34
35
  WeaverseContextProvider: () => WeaverseContextProvider,
@@ -40,7 +41,7 @@ __reExport(src_exports, require("@weaverse/core"), module.exports);
40
41
 
41
42
  // src/context.ts
42
43
  var import_core = require("@weaverse/core");
43
- var import_react26 = require("react");
44
+ var import_react30 = require("react");
44
45
 
45
46
  // src/elements/Button.tsx
46
47
  var React = __toESM(require("react"));
@@ -118,42 +119,6 @@ var import_react4 = __toESM(require("react"));
118
119
  // src/constant/index.ts
119
120
  var TIMES = ["days", "hours", "minutes", "seconds"];
120
121
  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
122
 
158
123
  // src/utils/index.ts
159
124
  function getTime(_seconds) {
@@ -270,7 +235,6 @@ var Countdown = (0, import_react4.forwardRef)(
270
235
  );
271
236
  var css3 = {
272
237
  "@desktop": {
273
- fontFamily: "Inter",
274
238
  fontSize: "36px",
275
239
  fontWeight: 500,
276
240
  display: "flex",
@@ -557,6 +521,7 @@ var Text = React10.forwardRef(
557
521
  );
558
522
  var css7 = {
559
523
  "@desktop": {
524
+ display: "flex",
560
525
  padding: "10px",
561
526
  overflow: "hidden",
562
527
  ".wv-text-content": {
@@ -693,39 +658,18 @@ Video.defaultProps = {
693
658
  };
694
659
  var Video_default = Video;
695
660
 
696
- // src/elements/Instagram.tsx
697
- var import_react25 = __toESM(require("react"));
661
+ // src/elements/Slideshow/index.tsx
662
+ var import_react22 = require("@stitches/react");
663
+ var import_clsx5 = __toESM(require("clsx"));
664
+ var import_react23 = __toESM(require("react"));
698
665
 
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;
714
-
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"));
666
+ // src/components/Slider/Arrows.tsx
667
+ var import_react16 = require("@stitches/react");
668
+ var import_clsx2 = __toESM(require("clsx"));
669
+ var import_react17 = __toESM(require("react"));
726
670
 
727
671
  // src/components/Icons/index.tsx
728
- var import_react16 = __toESM(require("react"));
672
+ var import_react15 = __toESM(require("react"));
729
673
 
730
674
  // src/components/Icons/Phosphor.tsx
731
675
  var Phosphor_exports = {};
@@ -740,39 +684,39 @@ __export(Phosphor_exports, {
740
684
  ShoppingCart: () => ShoppingCart,
741
685
  X: () => X
742
686
  });
743
- var import_react15 = __toESM(require("react"));
687
+ var import_react14 = __toESM(require("react"));
744
688
  var CircleNotch = (props) => {
745
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
689
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
746
690
  xmlns: "http://www.w3.org/2000/svg",
747
691
  fill: "none",
748
692
  viewBox: "0 0 24 24",
749
693
  ...props
750
- }, /* @__PURE__ */ import_react15.default.createElement("circle", {
694
+ }, /* @__PURE__ */ import_react14.default.createElement("circle", {
751
695
  style: { opacity: ".25" },
752
696
  cx: "12",
753
697
  cy: "12",
754
698
  r: "10",
755
699
  stroke: "currentColor",
756
700
  strokeWidth: "4"
757
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
701
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
758
702
  style: { opacity: ".75" },
759
703
  fill: "currentColor",
760
704
  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
705
  }));
762
706
  };
763
707
  var X = (props) => {
764
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
708
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
765
709
  xmlns: "http://www.w3.org/2000/svg",
766
710
  width: "20",
767
711
  height: "20",
768
712
  fill: "currentColor",
769
713
  viewBox: "0 0 256 256",
770
714
  ...props
771
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
715
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
772
716
  width: "256",
773
717
  height: "256",
774
718
  fill: "none"
775
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
719
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
776
720
  x1: "200",
777
721
  y1: "56",
778
722
  x2: "56",
@@ -782,7 +726,7 @@ var X = (props) => {
782
726
  strokeLinecap: "round",
783
727
  strokeLinejoin: "round",
784
728
  strokeWidth: "12"
785
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
729
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
786
730
  x1: "200",
787
731
  y1: "200",
788
732
  x2: "56",
@@ -795,7 +739,7 @@ var X = (props) => {
795
739
  }));
796
740
  };
797
741
  var Minus = (props) => {
798
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
742
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
799
743
  width: "196",
800
744
  height: "196",
801
745
  fill: "currentColor",
@@ -803,12 +747,12 @@ var Minus = (props) => {
803
747
  xmlns: "http://www.w3.org/2000/svg",
804
748
  viewBox: "0 0 384 512",
805
749
  ...props
806
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
750
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
807
751
  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
752
  }));
809
753
  };
810
754
  var Plus = (props) => {
811
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
755
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
812
756
  width: "196",
813
757
  height: "196",
814
758
  fill: "currentColor",
@@ -816,23 +760,23 @@ var Plus = (props) => {
816
760
  xmlns: "http://www.w3.org/2000/svg",
817
761
  viewBox: "0 0 384 512",
818
762
  ...props
819
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
763
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
820
764
  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
765
  }));
822
766
  };
823
767
  var ArrowLeft = (props) => {
824
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
768
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
825
769
  xmlns: "http://www.w3.org/2000/svg",
826
770
  width: "192",
827
771
  height: "192",
828
772
  fill: "currentColor",
829
773
  viewBox: "0 0 256 256",
830
774
  ...props
831
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
775
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
832
776
  width: "256",
833
777
  height: "256",
834
778
  fill: "none"
835
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
779
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
836
780
  x1: "216",
837
781
  y1: "128",
838
782
  x2: "40",
@@ -842,7 +786,7 @@ var ArrowLeft = (props) => {
842
786
  strokeLinecap: "round",
843
787
  strokeLinejoin: "round",
844
788
  strokeWidth: "16"
845
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
789
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
846
790
  points: "112 56 40 128 112 200",
847
791
  fill: "none",
848
792
  stroke: "currentColor",
@@ -852,18 +796,18 @@ var ArrowLeft = (props) => {
852
796
  }));
853
797
  };
854
798
  var ArrowRight = (props) => {
855
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
799
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
856
800
  xmlns: "http://www.w3.org/2000/svg",
857
801
  width: "192",
858
802
  height: "192",
859
803
  fill: "currentColor",
860
804
  viewBox: "0 0 256 256",
861
805
  ...props
862
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
806
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
863
807
  width: "256",
864
808
  height: "256",
865
809
  fill: "none"
866
- }), /* @__PURE__ */ import_react15.default.createElement("line", {
810
+ }), /* @__PURE__ */ import_react14.default.createElement("line", {
867
811
  x1: "40",
868
812
  y1: "128",
869
813
  x2: "216",
@@ -873,7 +817,7 @@ var ArrowRight = (props) => {
873
817
  strokeLinecap: "round",
874
818
  strokeLinejoin: "round",
875
819
  strokeWidth: "16"
876
- }), /* @__PURE__ */ import_react15.default.createElement("polyline", {
820
+ }), /* @__PURE__ */ import_react14.default.createElement("polyline", {
877
821
  points: "144 56 216 128 144 200",
878
822
  fill: "none",
879
823
  stroke: "currentColor",
@@ -883,36 +827,36 @@ var ArrowRight = (props) => {
883
827
  }));
884
828
  };
885
829
  var Image2 = (props) => {
886
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
830
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
887
831
  xmlns: "http://www.w3.org/2000/svg",
888
832
  "aria-hidden": "true",
889
833
  fill: "currentColor",
890
834
  viewBox: "0 0 640 512",
891
835
  ...props
892
- }, /* @__PURE__ */ import_react15.default.createElement("path", {
836
+ }, /* @__PURE__ */ import_react14.default.createElement("path", {
893
837
  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
838
  }));
895
839
  };
896
840
  var ShoppingCart = (props) => {
897
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
841
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
898
842
  xmlns: "http://www.w3.org/2000/svg",
899
843
  width: "192",
900
844
  height: "192",
901
845
  fill: "currentColor",
902
846
  viewBox: "0 0 256 256",
903
847
  ...props
904
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
848
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
905
849
  width: "256",
906
850
  height: "256",
907
851
  fill: "none"
908
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
852
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
909
853
  d: "M184,184H69.8L41.9,30.6A8,8,0,0,0,34.1,24H16",
910
854
  fill: "none",
911
855
  stroke: "currentColor",
912
856
  strokeLinecap: "round",
913
857
  strokeLinejoin: "round",
914
858
  strokeWidth: "16"
915
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
859
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
916
860
  cx: "80",
917
861
  cy: "204",
918
862
  r: "20",
@@ -921,7 +865,7 @@ var ShoppingCart = (props) => {
921
865
  strokeLinecap: "round",
922
866
  strokeLinejoin: "round",
923
867
  strokeWidth: "16"
924
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
868
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
925
869
  cx: "184",
926
870
  cy: "204",
927
871
  r: "20",
@@ -930,7 +874,7 @@ var ShoppingCart = (props) => {
930
874
  strokeLinecap: "round",
931
875
  strokeLinejoin: "round",
932
876
  strokeWidth: "16"
933
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
877
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
934
878
  d: "M62.5,144H188.1a15.9,15.9,0,0,0,15.7-13.1L216,64H48",
935
879
  fill: "none",
936
880
  stroke: "currentColor",
@@ -940,25 +884,25 @@ var ShoppingCart = (props) => {
940
884
  }));
941
885
  };
942
886
  var Eye = (props) => {
943
- return /* @__PURE__ */ import_react15.default.createElement("svg", {
887
+ return /* @__PURE__ */ import_react14.default.createElement("svg", {
944
888
  xmlns: "http://www.w3.org/2000/svg",
945
889
  width: "192",
946
890
  height: "192",
947
891
  fill: "currentColor",
948
892
  viewBox: "0 0 256 256",
949
893
  ...props
950
- }, /* @__PURE__ */ import_react15.default.createElement("rect", {
894
+ }, /* @__PURE__ */ import_react14.default.createElement("rect", {
951
895
  width: "256",
952
896
  height: "256",
953
897
  fill: "none"
954
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
898
+ }), /* @__PURE__ */ import_react14.default.createElement("path", {
955
899
  d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
956
900
  fill: "none",
957
901
  stroke: "currentColor",
958
902
  strokeLinecap: "round",
959
903
  strokeLinejoin: "round",
960
904
  strokeWidth: "12"
961
- }), /* @__PURE__ */ import_react15.default.createElement("circle", {
905
+ }), /* @__PURE__ */ import_react14.default.createElement("circle", {
962
906
  cx: "128",
963
907
  cy: "128",
964
908
  r: "40",
@@ -971,28 +915,672 @@ var Eye = (props) => {
971
915
  };
972
916
 
973
917
  // src/components/Icons/index.tsx
974
- var import_clsx2 = __toESM(require("clsx"));
918
+ var import_clsx = __toESM(require("clsx"));
975
919
  function Icon({ name, className, ...props }) {
976
920
  let WeaverseIcon = Phosphor_exports[name];
977
- let cls = (0, import_clsx2.default)("wv-icon", className);
978
- return /* @__PURE__ */ import_react16.default.createElement(WeaverseIcon, {
921
+ let cls = (0, import_clsx.default)("wv-icon", className);
922
+ return /* @__PURE__ */ import_react15.default.createElement(WeaverseIcon, {
979
923
  className: cls,
980
924
  ...props
981
925
  });
982
926
  }
983
927
 
928
+ // src/components/Slider/Arrows.tsx
929
+ function Arrows(props) {
930
+ let { currentSlide, instanceRef, className, offset } = props;
931
+ let isFirst = currentSlide === 0;
932
+ let isLast = false;
933
+ if (instanceRef.current) {
934
+ isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
935
+ }
936
+ let style = {
937
+ "--offset": `${offset}px`
938
+ };
939
+ return /* @__PURE__ */ import_react17.default.createElement(StyledArrows, {
940
+ className,
941
+ style
942
+ }, /* @__PURE__ */ import_react17.default.createElement("button", {
943
+ type: "button",
944
+ className: (0, import_clsx2.default)("arrow arrow--left", isFirst && "arrow--disabled"),
945
+ onClick: (e) => {
946
+ e.stopPropagation();
947
+ instanceRef?.current?.prev();
948
+ }
949
+ }, /* @__PURE__ */ import_react17.default.createElement(Icon, {
950
+ name: "ArrowLeft"
951
+ })), /* @__PURE__ */ import_react17.default.createElement("button", {
952
+ type: "button",
953
+ className: (0, import_clsx2.default)("arrow arrow--right", isLast && "arrow--disabled"),
954
+ onClick: (e) => {
955
+ e.stopPropagation();
956
+ instanceRef?.current?.next();
957
+ }
958
+ }, /* @__PURE__ */ import_react17.default.createElement(Icon, {
959
+ name: "ArrowRight"
960
+ })));
961
+ }
962
+ var StyledArrows = (0, import_react16.styled)("div", {
963
+ ".arrow": {
964
+ position: "absolute",
965
+ top: "50%",
966
+ transform: "translateY(-50%)",
967
+ width: "44px",
968
+ height: "44px",
969
+ padding: "8px",
970
+ color: "#191919",
971
+ backgroundColor: "#f2f2f2",
972
+ textAlign: "center",
973
+ transition: "all 0.2s ease-in-out",
974
+ borderRadius: "4px",
975
+ border: "none",
976
+ cursor: "pointer",
977
+ "&:hover": {
978
+ backgroundColor: "#191919",
979
+ color: "#f2f2f2"
980
+ },
981
+ svg: {
982
+ verticalAlign: "middle",
983
+ width: "22px",
984
+ height: "22px"
985
+ },
986
+ "&.arrow--left": {
987
+ left: "var(--offset, 0px)"
988
+ },
989
+ "&.arrow--right": {
990
+ right: "var(--offset, 0px)"
991
+ },
992
+ "&.arrow--disabled": {
993
+ opacity: 0.5
994
+ }
995
+ },
996
+ "@media (max-width: 768px)": {
997
+ ".arrow": {
998
+ display: "none"
999
+ }
1000
+ }
1001
+ });
1002
+
1003
+ // src/components/Slider/Dots.tsx
1004
+ var import_react18 = require("@stitches/react");
1005
+ var import_clsx3 = __toESM(require("clsx"));
1006
+ var import_react19 = __toESM(require("react"));
1007
+ function Dots(props) {
1008
+ let { currentSlide, instanceRef, className, absolute, position, color } = props;
1009
+ let _className = (0, import_clsx3.default)(
1010
+ className,
1011
+ absolute && "dots--absolute",
1012
+ position && `dots--${position}`,
1013
+ color && `dots--${color}`
1014
+ );
1015
+ return /* @__PURE__ */ import_react19.default.createElement(StyledDots, {
1016
+ className: _className
1017
+ }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1018
+ (idx) => {
1019
+ let className2 = (0, import_clsx3.default)("dot", currentSlide === idx && "dot--active");
1020
+ return /* @__PURE__ */ import_react19.default.createElement("button", {
1021
+ key: idx,
1022
+ type: "button",
1023
+ onClick: () => instanceRef.current?.moveToIdx(idx),
1024
+ className: className2
1025
+ });
1026
+ }
1027
+ ));
1028
+ }
1029
+ var StyledDots = (0, import_react18.styled)("div", {
1030
+ padding: "10px 0",
1031
+ display: "flex",
1032
+ justifyContent: "center",
1033
+ alignItems: "center",
1034
+ gap: "12px",
1035
+ "&.dots--absolute": {
1036
+ position: "absolute",
1037
+ "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1038
+ "&.dots--top": { top: 10 },
1039
+ "&.dots--bottom": { bottom: 10 },
1040
+ "&.dots--left, &.dots--right": {
1041
+ top: 0,
1042
+ bottom: 0,
1043
+ flexDirection: "column"
1044
+ },
1045
+ "&.dots--left": { left: 20 },
1046
+ "&.dots--right": { right: 20 }
1047
+ },
1048
+ "&.dots--light": {
1049
+ ".dot": {
1050
+ backgroundColor: "#ffffff66",
1051
+ "&.dot--active": {
1052
+ backgroundColor: "#ffffff"
1053
+ }
1054
+ }
1055
+ },
1056
+ "&.dots--dark": {
1057
+ ".dot": {
1058
+ backgroundColor: "#00000033",
1059
+ "&.dot--active": {
1060
+ backgroundColor: "#000000"
1061
+ }
1062
+ }
1063
+ },
1064
+ ".dot": {
1065
+ width: "9px",
1066
+ height: "9px",
1067
+ padding: "0",
1068
+ border: "none",
1069
+ borderRadius: "50%",
1070
+ transition: "all 0.2s ease-in-out"
1071
+ }
1072
+ });
1073
+
1074
+ // src/elements/Slideshow/useSlideshowConfigs.ts
1075
+ var import_react20 = require("keen-slider/react");
1076
+ var import_react21 = __toESM(require("react"));
1077
+
1078
+ // src/components/Slider/AutoplayPlugin.ts
1079
+ function AutoplayPlugin(changeSlidesEvery) {
1080
+ return (slider) => {
1081
+ let timeout;
1082
+ let mouseOver = false;
1083
+ function clearNextTimeout() {
1084
+ clearTimeout(timeout);
1085
+ }
1086
+ function nextTimeout() {
1087
+ clearTimeout(timeout);
1088
+ if (mouseOver)
1089
+ return;
1090
+ timeout = setTimeout(() => {
1091
+ slider.next();
1092
+ }, changeSlidesEvery * 1e3);
1093
+ }
1094
+ slider.on("created", () => {
1095
+ slider.container.addEventListener("mouseover", () => {
1096
+ mouseOver = true;
1097
+ clearNextTimeout();
1098
+ });
1099
+ slider.container.addEventListener("mouseout", () => {
1100
+ mouseOver = false;
1101
+ nextTimeout();
1102
+ });
1103
+ nextTimeout();
1104
+ });
1105
+ slider.on("dragStarted", clearNextTimeout);
1106
+ slider.on("animationEnded", nextTimeout);
1107
+ slider.on("updated", nextTimeout);
1108
+ };
1109
+ }
1110
+
1111
+ // src/components/Slider/ResizePlugin.ts
1112
+ var ResizePlugin = (slider) => {
1113
+ let observer = new ResizeObserver(() => slider.update());
1114
+ slider.on("created", () => {
1115
+ observer.observe(slider.container);
1116
+ });
1117
+ slider.on("destroyed", () => {
1118
+ observer.unobserve(slider.container);
1119
+ });
1120
+ };
1121
+
1122
+ // src/utils/css.ts
1123
+ var import_clsx4 = __toESM(require("clsx"));
1124
+ function formatCSS(css11) {
1125
+ return {
1126
+ "@desktop": css11["@desktop"],
1127
+ "@mobile": css11["@mobile"]
1128
+ };
1129
+ }
1130
+ var permanentClasses = {};
1131
+ function generateItemClassName(instance, stitchesInstance) {
1132
+ let { css: css11, type, className: cls = "" } = instance.data;
1133
+ let className = "";
1134
+ let permanentClass = "";
1135
+ let perCss = instance.Element?.permanentCss;
1136
+ if (perCss) {
1137
+ if (type in permanentClasses) {
1138
+ permanentClass = permanentClasses[type];
1139
+ } else {
1140
+ let { className: perCls } = stitchesInstance.css(perCss)();
1141
+ Object.assign(permanentClasses, { [type]: perCls });
1142
+ permanentClass = perCls;
1143
+ }
1144
+ }
1145
+ className = permanentClass;
1146
+ if (css11) {
1147
+ let formattedCss = formatCSS(css11);
1148
+ let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
1149
+ let { stitchesClass } = instance;
1150
+ let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
1151
+ className = (0, import_clsx4.default)(permanentClass, cls, newStitchesClass, otherClass);
1152
+ instance.stitchesClass = newStitchesClass;
1153
+ }
1154
+ return className;
1155
+ }
1156
+ function loadCSS(attrs) {
1157
+ return new Promise((resolve, reject) => {
1158
+ let found = document.querySelector(`link[href="${attrs.href}"]`);
1159
+ if (found) {
1160
+ return resolve(true);
1161
+ }
1162
+ let link = document.createElement("link");
1163
+ Object.assign(link, attrs);
1164
+ link.addEventListener("load", () => resolve(true));
1165
+ link.onerror = reject;
1166
+ document.head.appendChild(link);
1167
+ });
1168
+ }
1169
+
1170
+ // src/elements/Slideshow/useSlideshowConfigs.ts
1171
+ function useSlideshowConfigs(props) {
1172
+ let {
1173
+ animation,
1174
+ slidesPerView,
1175
+ loop,
1176
+ autoRotate,
1177
+ changeSlidesEvery,
1178
+ children
1179
+ } = props;
1180
+ let { isDesignMode } = (0, import_react21.useContext)(WeaverseContext);
1181
+ let [opacities, setOpacities] = import_react21.default.useState([]);
1182
+ let [cssLoaded, setCssLoaded] = (0, import_react21.useState)(false);
1183
+ let [created, setCreated] = (0, import_react21.useState)(false);
1184
+ let [ready, setReady] = (0, import_react21.useState)(false);
1185
+ let [currentSlide, setCurrentSlide] = (0, import_react21.useState)(0);
1186
+ let sliderPlugins = [ResizePlugin];
1187
+ if (autoRotate && !isDesignMode) {
1188
+ sliderPlugins.push(AutoplayPlugin(changeSlidesEvery));
1189
+ }
1190
+ let [sliderRef, instanceRef] = (0, import_react20.useKeenSlider)(
1191
+ {
1192
+ slides: animation === "fade" ? import_react21.default.Children.count(children) : { perView: slidesPerView },
1193
+ drag: !isDesignMode,
1194
+ loop,
1195
+ selector: animation === "fade" ? null : ".keen-slider__slide",
1196
+ created: () => {
1197
+ setCreated(true);
1198
+ },
1199
+ slideChanged: (slider) => {
1200
+ setCurrentSlide(slider.track.details.rel);
1201
+ },
1202
+ detailsChanged: (slider) => {
1203
+ let newOpacities = slider.track?.details?.slides?.map(
1204
+ (slide) => slide.portion
1205
+ );
1206
+ setOpacities(newOpacities);
1207
+ }
1208
+ },
1209
+ sliderPlugins
1210
+ );
1211
+ (0, import_react21.useEffect)(() => {
1212
+ loadCSS({
1213
+ rel: "stylesheet",
1214
+ href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1215
+ }).then(() => setCssLoaded(true));
1216
+ }, []);
1217
+ (0, import_react21.useEffect)(() => {
1218
+ if (created && cssLoaded) {
1219
+ setReady(true);
1220
+ }
1221
+ }, [created, cssLoaded]);
1222
+ return {
1223
+ sliderRef,
1224
+ instanceRef,
1225
+ currentSlide,
1226
+ opacities,
1227
+ ready,
1228
+ created
1229
+ };
1230
+ }
1231
+
1232
+ // src/elements/Slideshow/index.tsx
1233
+ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1234
+ let {
1235
+ animation,
1236
+ showArrows,
1237
+ showDots,
1238
+ dotsPosition,
1239
+ dotsColor,
1240
+ children,
1241
+ ...rest
1242
+ } = props;
1243
+ let { sliderRef, instanceRef, currentSlide, opacities, ready, created } = useSlideshowConfigs(props);
1244
+ let style = {
1245
+ "--slider-opacity": ready ? 1 : 0
1246
+ };
1247
+ let faderClass = "";
1248
+ if (animation === "fade") {
1249
+ faderClass = (0, import_react22.css)({
1250
+ ".keen-slider__slide": opacities.reduce((acc, opacity, index) => {
1251
+ acc[`&:nth-child(${index + 1})`] = {
1252
+ opacity
1253
+ };
1254
+ return acc;
1255
+ }, {})
1256
+ })().className;
1257
+ }
1258
+ let _className = (0, import_clsx5.default)(
1259
+ faderClass,
1260
+ animation === "slide" ? "keen-slider" : "keen-fader"
1261
+ );
1262
+ return /* @__PURE__ */ import_react23.default.createElement("div", {
1263
+ ref,
1264
+ style,
1265
+ ...rest
1266
+ }, /* @__PURE__ */ import_react23.default.createElement("div", {
1267
+ ref: sliderRef,
1268
+ className: _className
1269
+ }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(Arrows, {
1270
+ instanceRef,
1271
+ currentSlide,
1272
+ className: "wv-slideshow--arrows",
1273
+ offset: 20
1274
+ }), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(Dots, {
1275
+ instanceRef,
1276
+ currentSlide,
1277
+ className: "wv-slideshow--dots",
1278
+ position: dotsPosition,
1279
+ color: dotsColor,
1280
+ absolute: true
1281
+ }));
1282
+ });
1283
+ var css9 = {
1284
+ "@desktop": {
1285
+ opacity: "var(--slider-opacity, 0)",
1286
+ padding: "32px 0",
1287
+ position: "relative",
1288
+ ".keen-slider": {
1289
+ height: "100%"
1290
+ },
1291
+ ".keen-fader": {
1292
+ position: "relative",
1293
+ height: "100%",
1294
+ ".keen-slider__slide": {
1295
+ position: "absolute",
1296
+ inset: 0
1297
+ }
1298
+ }
1299
+ }
1300
+ };
1301
+ Slideshow.defaultProps = {
1302
+ animation: "slide",
1303
+ slidesPerView: 1,
1304
+ spacing: 0,
1305
+ showArrows: true,
1306
+ showDots: true,
1307
+ dotsPosition: "bottom",
1308
+ dotsColor: "light",
1309
+ loop: true,
1310
+ autoRotate: false,
1311
+ changeSlidesEvery: 5
1312
+ };
1313
+ var Slideshow_default = Slideshow;
1314
+
1315
+ // src/elements/Slideshow/Slide.tsx
1316
+ var import_react29 = __toESM(require("react"));
1317
+
1318
+ // src/components/Background.tsx
1319
+ var import_react24 = require("@stitches/react");
1320
+ var import_react25 = __toESM(require("react"));
1321
+ function Background2(props) {
1322
+ let {
1323
+ backgroundColor,
1324
+ backgroundImage,
1325
+ backgroundFit,
1326
+ backgroundPosition,
1327
+ className
1328
+ } = props;
1329
+ let style = {
1330
+ ["--bg-color"]: backgroundColor,
1331
+ ["--bg-fit"]: backgroundFit,
1332
+ ["--bg-position"]: backgroundPosition
1333
+ };
1334
+ if (backgroundImage || backgroundColor) {
1335
+ return /* @__PURE__ */ import_react25.default.createElement(StyledBackground, {
1336
+ style,
1337
+ className
1338
+ }, backgroundImage && /* @__PURE__ */ import_react25.default.createElement("img", {
1339
+ width: "100%",
1340
+ height: "100%",
1341
+ "data-blink-src": backgroundImage,
1342
+ alt: "Background"
1343
+ }));
1344
+ }
1345
+ return null;
1346
+ }
1347
+ var StyledBackground = (0, import_react24.styled)("div", {
1348
+ display: "block !important",
1349
+ position: "absolute",
1350
+ inset: 0,
1351
+ backgroundColor: "var(--bg-color)",
1352
+ img: {
1353
+ objectFit: "var(--bg-fit, cover)",
1354
+ objectPosition: "var(--bg-position, 50% 50%)"
1355
+ }
1356
+ });
1357
+
1358
+ // src/components/Overlay.tsx
1359
+ var import_react26 = require("@stitches/react");
1360
+ var import_react27 = __toESM(require("react"));
1361
+ function Overlay2(props) {
1362
+ let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1363
+ if (enabled) {
1364
+ return /* @__PURE__ */ import_react27.default.createElement(StyledOverlay, {
1365
+ className,
1366
+ css: { ["--overlay-opacity"]: opacity / 100 }
1367
+ });
1368
+ }
1369
+ return null;
1370
+ }
1371
+ var StyledOverlay = (0, import_react26.styled)("div", {
1372
+ display: "block !important",
1373
+ position: "absolute",
1374
+ inset: 0,
1375
+ backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1376
+ });
1377
+
1378
+ // src/components/Placeholder.tsx
1379
+ var import_react28 = __toESM(require("react"));
1380
+ var Placeholder = (0, import_react28.forwardRef)(
1381
+ (props, ref) => {
1382
+ let { element, className, children, ...rest } = props;
1383
+ return /* @__PURE__ */ import_react28.default.createElement("div", {
1384
+ "data-wv-placeholder": true,
1385
+ ref,
1386
+ className,
1387
+ ...rest
1388
+ }, /* @__PURE__ */ import_react28.default.createElement("div", {
1389
+ style: { fontWeight: 600, marginBottom: "10px" }
1390
+ }, element), /* @__PURE__ */ import_react28.default.createElement("div", null, children));
1391
+ }
1392
+ );
1393
+ var Placeholder_default = Placeholder;
1394
+
1395
+ // src/elements/Slideshow/position.ts
1396
+ var slidePositionMap = {
1397
+ "top left": {
1398
+ justifyContent: "flex-start",
1399
+ alignItems: "flex-start"
1400
+ },
1401
+ "top center": {
1402
+ justifyContent: "flex-start",
1403
+ alignItems: "center"
1404
+ },
1405
+ "top right": {
1406
+ justifyContent: "flex-start",
1407
+ alignItems: "flex-end"
1408
+ },
1409
+ "center left": {
1410
+ justifyContent: "center",
1411
+ alignItems: "flex-start"
1412
+ },
1413
+ "center center": {
1414
+ justifyContent: "center",
1415
+ alignItems: "center"
1416
+ },
1417
+ "center right": {
1418
+ justifyContent: "center",
1419
+ alignItems: "flex-end"
1420
+ },
1421
+ "bottom left": {
1422
+ justifyContent: "flex-end",
1423
+ alignItems: "flex-start"
1424
+ },
1425
+ "bottom center": {
1426
+ justifyContent: "flex-end",
1427
+ alignItems: "center"
1428
+ },
1429
+ "bottom right": {
1430
+ justifyContent: "flex-end",
1431
+ alignItems: "flex-end"
1432
+ }
1433
+ };
1434
+
1435
+ // src/elements/Slideshow/Slide.tsx
1436
+ var Slide = (0, import_react29.forwardRef)((props, ref) => {
1437
+ let {
1438
+ contentPosition,
1439
+ backgroundColor,
1440
+ backgroundImage,
1441
+ backgroundFit,
1442
+ backgroundPosition,
1443
+ enableOverlay,
1444
+ overlayOpacity,
1445
+ children,
1446
+ ...rest
1447
+ } = props;
1448
+ return /* @__PURE__ */ import_react29.default.createElement("div", {
1449
+ className: "keen-slider__slide"
1450
+ }, /* @__PURE__ */ import_react29.default.createElement(Background2, {
1451
+ backgroundColor,
1452
+ backgroundImage,
1453
+ backgroundFit,
1454
+ backgroundPosition,
1455
+ className: "slide-background"
1456
+ }), /* @__PURE__ */ import_react29.default.createElement(Overlay2, {
1457
+ enableOverlay,
1458
+ overlayOpacity,
1459
+ className: "slide-overlay"
1460
+ }), /* @__PURE__ */ import_react29.default.createElement("div", {
1461
+ ref,
1462
+ style: slidePositionMap[contentPosition],
1463
+ ...rest
1464
+ }, children?.length ? children : /* @__PURE__ */ import_react29.default.createElement(Placeholder_default, {
1465
+ element: "Slide",
1466
+ className: "wv-slide-placeholder"
1467
+ }, "Drag and drop elements here")));
1468
+ });
1469
+ var css10 = {
1470
+ "@desktop": {
1471
+ position: "relative",
1472
+ height: "100%",
1473
+ width: "1224px",
1474
+ maxWidth: "100%",
1475
+ margin: "0 auto",
1476
+ display: "flex",
1477
+ flexDirection: "column",
1478
+ padding: "100px 20px",
1479
+ ".wv-slide-placeholder": {
1480
+ height: "200px",
1481
+ zIndex: 1
1482
+ }
1483
+ }
1484
+ };
1485
+ Slide.defaultProps = {
1486
+ contentPosition: "center center",
1487
+ backgroundFit: "cover",
1488
+ backgroundPosition: "center center",
1489
+ enableOverlay: false,
1490
+ overlayOpacity: 30
1491
+ };
1492
+ var Slide_default = Slide;
1493
+
1494
+ // src/elements/index.ts
1495
+ var Elements = {
1496
+ Countdown: {
1497
+ Component: Countdown_default,
1498
+ type: "countdown",
1499
+ defaultCss: css3
1500
+ },
1501
+ Button: {
1502
+ Component: Button_default,
1503
+ type: "button",
1504
+ defaultCss: css
1505
+ },
1506
+ Container: {
1507
+ Component: Container_default,
1508
+ type: "container",
1509
+ defaultCss: css2
1510
+ },
1511
+ Image: {
1512
+ Component: Image_default,
1513
+ type: "image",
1514
+ defaultCss: css4
1515
+ },
1516
+ Layout: {
1517
+ Component: Layout_default,
1518
+ type: "layout",
1519
+ defaultCss: css5
1520
+ },
1521
+ Map: {
1522
+ Component: Map_default,
1523
+ type: "map",
1524
+ defaultCss: css6
1525
+ },
1526
+ Text: {
1527
+ Component: Text_default,
1528
+ type: "text",
1529
+ defaultCss: css7
1530
+ },
1531
+ Video: {
1532
+ Component: Video_default,
1533
+ type: "video",
1534
+ defaultCss: css8
1535
+ },
1536
+ Slideshow: {
1537
+ Component: Slideshow_default,
1538
+ type: "slideshow",
1539
+ defaultCss: css9
1540
+ },
1541
+ Slide: {
1542
+ Component: Slide_default,
1543
+ type: "slide",
1544
+ defaultCss: css10
1545
+ }
1546
+ };
1547
+
1548
+ // src/context.ts
1549
+ var createRootContext = (configs) => {
1550
+ let rootContext = new import_core.Weaverse(configs);
1551
+ Object.keys(Elements).forEach((key) => {
1552
+ rootContext.registerElement(Elements[key]);
1553
+ });
1554
+ return rootContext;
1555
+ };
1556
+ var WeaverseContext = (0, import_react30.createContext)({});
1557
+ var WeaverseContextProvider = WeaverseContext.Provider;
1558
+ var WeaverseContextConsumer = WeaverseContext.Consumer;
1559
+
1560
+ // src/components/Modal/index.tsx
1561
+ var Modal_exports = {};
1562
+ __export(Modal_exports, {
1563
+ Modal: () => Modal,
1564
+ ModalClose: () => ModalClose,
1565
+ ModalContent: () => ModalContent,
1566
+ ModalHeader: () => ModalHeader,
1567
+ ModalTrigger: () => ModalTrigger
1568
+ });
1569
+ var import_react_dialog2 = require("@radix-ui/react-dialog");
1570
+ var import_react33 = __toESM(require("react"));
1571
+
984
1572
  // src/components/Modal/styled.ts
985
1573
  var import_react_dialog = require("@radix-ui/react-dialog");
986
- var import_react17 = require("@stitches/react");
987
- var overlayShow = (0, import_react17.keyframes)({
1574
+ var import_react31 = require("@stitches/react");
1575
+ var overlayShow = (0, import_react31.keyframes)({
988
1576
  "0%": { opacity: 0 },
989
1577
  "100%": { opacity: 1 }
990
1578
  });
991
- var contentShow = (0, import_react17.keyframes)({
1579
+ var contentShow = (0, import_react31.keyframes)({
992
1580
  "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
993
1581
  "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
994
1582
  });
995
- var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
1583
+ var StyledOverlay2 = (0, import_react31.styled)(import_react_dialog.Overlay, {
996
1584
  display: "block !important",
997
1585
  backgroundColor: "rgba(0, 0, 0, .3)",
998
1586
  position: "fixed",
@@ -1000,7 +1588,7 @@ var StyledOverlay = (0, import_react17.styled)(import_react_dialog.Overlay, {
1000
1588
  inset: 0,
1001
1589
  animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1002
1590
  });
1003
- var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1591
+ var StyledTitle = (0, import_react31.styled)(import_react_dialog.Title, {
1004
1592
  margin: "0 0 24px",
1005
1593
  fontWeight: 500,
1006
1594
  fontSize: 24,
@@ -1009,7 +1597,7 @@ var StyledTitle = (0, import_react17.styled)(import_react_dialog.Title, {
1009
1597
  fontSize: 20
1010
1598
  }
1011
1599
  });
1012
- var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1600
+ var StyledContent = (0, import_react31.styled)(import_react_dialog.Content, {
1013
1601
  backgroundColor: "white",
1014
1602
  borderRadius: 6,
1015
1603
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
@@ -1040,7 +1628,7 @@ var StyledContent = (0, import_react17.styled)(import_react_dialog.Content, {
1040
1628
  }
1041
1629
  }
1042
1630
  });
1043
- var StyledCloseIcon = (0, import_react17.styled)("button", {
1631
+ var StyledCloseIcon = (0, import_react31.styled)("button", {
1044
1632
  all: "unset",
1045
1633
  cursor: "pointer",
1046
1634
  fontFamily: "inherit",
@@ -1065,10 +1653,10 @@ var StyledCloseIcon = (0, import_react17.styled)("button", {
1065
1653
  });
1066
1654
 
1067
1655
  // src/components/Modal/useOpenChangeEffect.ts
1068
- var import_react18 = require("react");
1656
+ var import_react32 = require("react");
1069
1657
  function useOpenChangeEffect(props) {
1070
1658
  let { open, defaultOpen, onOpenChange } = props;
1071
- let rootCtx = (0, import_react18.useContext)(WeaverseContext);
1659
+ let rootCtx = (0, import_react32.useContext)(WeaverseContext);
1072
1660
  let toggleRootzIndex = (open2) => {
1073
1661
  let { contentRootElement } = rootCtx;
1074
1662
  if (contentRootElement) {
@@ -1079,7 +1667,7 @@ function useOpenChangeEffect(props) {
1079
1667
  }
1080
1668
  }
1081
1669
  };
1082
- (0, import_react18.useEffect)(() => {
1670
+ (0, import_react32.useEffect)(() => {
1083
1671
  let isOpen = open || defaultOpen;
1084
1672
  toggleRootzIndex(isOpen);
1085
1673
  }, [open, defaultOpen]);
@@ -1094,7 +1682,7 @@ function useOpenChangeEffect(props) {
1094
1682
  var Modal = (props) => {
1095
1683
  let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1096
1684
  let handleOpenChange = useOpenChangeEffect(props);
1097
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Root, {
1685
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Root, {
1098
1686
  open,
1099
1687
  defaultOpen,
1100
1688
  onOpenChange: handleOpenChange,
@@ -1102,30 +1690,30 @@ var Modal = (props) => {
1102
1690
  }, children);
1103
1691
  };
1104
1692
  var ModalTrigger = import_react_dialog2.Trigger;
1105
- var ModalHeader = (0, import_react19.forwardRef)(
1693
+ var ModalHeader = (0, import_react33.forwardRef)(
1106
1694
  (props, ref) => {
1107
1695
  let { children, ...rest } = props;
1108
- return /* @__PURE__ */ import_react19.default.createElement(StyledTitle, {
1696
+ return /* @__PURE__ */ import_react33.default.createElement(StyledTitle, {
1109
1697
  ref,
1110
1698
  ...rest,
1111
1699
  "data-wv-modal-header": true
1112
1700
  }, children);
1113
1701
  }
1114
1702
  );
1115
- var ModalContent = (0, import_react19.forwardRef)(
1703
+ var ModalContent = (0, import_react33.forwardRef)(
1116
1704
  (props, ref) => {
1117
1705
  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, {
1706
+ let modalContent = /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, /* @__PURE__ */ import_react33.default.createElement(StyledOverlay2, null), /* @__PURE__ */ import_react33.default.createElement(StyledContent, {
1119
1707
  ...rest,
1120
1708
  onCloseAutoFocus: (e) => e.preventDefault(),
1121
1709
  "data-wv-modal": true,
1122
1710
  "data-size": size,
1123
1711
  ref
1124
- }, /* @__PURE__ */ import_react19.default.createElement(ModalClose, null), /* @__PURE__ */ import_react19.default.createElement("div", {
1712
+ }, /* @__PURE__ */ import_react33.default.createElement(ModalClose, null), /* @__PURE__ */ import_react33.default.createElement("div", {
1125
1713
  className: "wv-modal-content"
1126
1714
  }, children)));
1127
1715
  if (portal) {
1128
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Portal, null, modalContent);
1716
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Portal, null, modalContent);
1129
1717
  }
1130
1718
  return modalContent;
1131
1719
  }
@@ -1134,13 +1722,13 @@ ModalContent.defaultProps = {
1134
1722
  size: "auto",
1135
1723
  portal: false
1136
1724
  };
1137
- var ModalClose = (0, import_react19.forwardRef)(
1725
+ var ModalClose = (0, import_react33.forwardRef)(
1138
1726
  (props, ref) => {
1139
1727
  let { asChild, children, ...rest } = props;
1140
- let closeIcon = /* @__PURE__ */ import_react19.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react19.default.createElement(Icon, {
1728
+ let closeIcon = /* @__PURE__ */ import_react33.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react33.default.createElement(Icon, {
1141
1729
  name: "X"
1142
1730
  }));
1143
- return /* @__PURE__ */ import_react19.default.createElement(import_react_dialog2.Close, {
1731
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Close, {
1144
1732
  asChild: true,
1145
1733
  ...rest,
1146
1734
  ref
@@ -1149,131 +1737,33 @@ var ModalClose = (0, import_react19.forwardRef)(
1149
1737
  );
1150
1738
 
1151
1739
  // src/components/Spinner.tsx
1152
- var import_react20 = __toESM(require("react"));
1740
+ var import_react34 = __toESM(require("react"));
1153
1741
  function Spinner() {
1154
- return /* @__PURE__ */ import_react20.default.createElement("span", {
1742
+ return /* @__PURE__ */ import_react34.default.createElement("span", {
1155
1743
  className: "wv-spinner-wrapper"
1156
- }, /* @__PURE__ */ import_react20.default.createElement(Icon, {
1744
+ }, /* @__PURE__ */ import_react34.default.createElement(Icon, {
1157
1745
  name: "CircleNotch",
1158
1746
  className: "wv-spinner"
1159
1747
  }));
1160
1748
  }
1161
1749
 
1162
1750
  // src/components/Tooltip.tsx
1163
- var import_react21 = __toESM(require("react"));
1751
+ var import_react35 = __toESM(require("react"));
1164
1752
  function Tooltip({ children }) {
1165
- return /* @__PURE__ */ import_react21.default.createElement("span", {
1753
+ return /* @__PURE__ */ import_react35.default.createElement("span", {
1166
1754
  className: "wv-tooltip"
1167
1755
  }, children);
1168
1756
  }
1169
1757
 
1170
1758
  // 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
1273
- 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)(
1759
+ var import_clsx6 = __toESM(require("clsx"));
1760
+ var import_react36 = require("keen-slider/react");
1761
+ var import_react37 = __toESM(require("react"));
1762
+ function Slider(props) {
1763
+ let { children, className, gap, arrowOffset } = props;
1764
+ let [currentSlide, setCurrentSlide] = (0, import_react37.useState)(0);
1765
+ let [created, setCreated] = (0, import_react37.useState)(false);
1766
+ let [ref, instanceRef] = (0, import_react36.useKeenSlider)(
1277
1767
  {
1278
1768
  slides: { perView: 4, spacing: gap },
1279
1769
  breakpoints: {
@@ -1296,174 +1786,48 @@ function Slider({ children, className, gap }) {
1296
1786
  },
1297
1787
  [ResizePlugin]
1298
1788
  );
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", {
1789
+ let _className = (0, import_clsx6.default)("keen-slider", className);
1790
+ let arrowsClass = (0, import_clsx6.default)(className && `${className}-arrows`);
1791
+ return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement("div", {
1302
1792
  ref,
1303
1793
  className: _className
1304
- }, /* @__PURE__ */ import_react24.default.createElement("link", {
1794
+ }, /* @__PURE__ */ import_react37.default.createElement("link", {
1305
1795
  rel: "stylesheet",
1306
1796
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1307
- }), children), created && instanceRef?.current && /* @__PURE__ */ import_react24.default.createElement(Arrows, {
1797
+ }), children), created && instanceRef?.current && /* @__PURE__ */ import_react37.default.createElement(Arrows, {
1308
1798
  currentSlide,
1309
1799
  instanceRef,
1310
- className: arrowsClass
1800
+ className: arrowsClass,
1801
+ offset: arrowOffset
1311
1802
  }));
1312
1803
  }
1313
1804
 
1314
1805
  // src/components/index.ts
1315
1806
  var Components = {
1807
+ Background: Background2,
1808
+ Icon,
1809
+ ModalComponents: Modal_exports,
1810
+ Overlay: Overlay2,
1316
1811
  Placeholder: Placeholder_default,
1317
1812
  Spinner,
1318
- ModalComponents: Modal_exports,
1319
- Icon,
1320
1813
  Slider,
1321
1814
  Tooltip
1322
1815
  };
1323
-
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;
1816
+ var SliderComponents = {
1817
+ Arrows,
1818
+ Dots,
1819
+ ResizePlugin,
1820
+ AutoplayPlugin
1454
1821
  };
1455
- var WeaverseContext = (0, import_react26.createContext)({});
1456
- var WeaverseContextProvider = WeaverseContext.Provider;
1457
- var WeaverseContextConsumer = WeaverseContext.Consumer;
1458
1822
 
1459
1823
  // src/renderer.tsx
1460
1824
  var import_core2 = require("@weaverse/core");
1461
- var import_react27 = __toESM(require("react"));
1825
+ var import_react38 = __toESM(require("react"));
1462
1826
  var WeaverseRoot = ({ context }) => {
1463
- let [, setData] = (0, import_react27.useState)(context.projectData);
1464
- let rootRef = (0, import_react27.useRef)();
1827
+ let [, setData] = (0, import_react38.useState)(context.projectData);
1828
+ let rootRef = (0, import_react38.useRef)();
1465
1829
  let renderRoot = () => setData({});
1466
- (0, import_react27.useEffect)(() => {
1830
+ (0, import_react38.useEffect)(() => {
1467
1831
  context.subscribe(renderRoot);
1468
1832
  context.contentRootElement = rootRef.current;
1469
1833
  return () => {
@@ -1473,23 +1837,23 @@ var WeaverseRoot = ({ context }) => {
1473
1837
  let eventHandlers = context?.studioBridge?.eventHandlers || {};
1474
1838
  let themeClass = context.stitchesInstance.theme.className;
1475
1839
  if (context.projectData?.rootId) {
1476
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1840
+ return /* @__PURE__ */ import_react38.default.createElement("div", {
1477
1841
  className: `weaverse-content-root ${themeClass}`,
1478
1842
  ...eventHandlers,
1479
1843
  ref: rootRef
1480
- }, /* @__PURE__ */ import_react27.default.createElement(WeaverseContextProvider, {
1844
+ }, /* @__PURE__ */ import_react38.default.createElement(WeaverseContextProvider, {
1481
1845
  value: context
1482
- }, /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1846
+ }, /* @__PURE__ */ import_react38.default.createElement(ItemInstance, {
1483
1847
  id: context.projectData.rootId
1484
1848
  })));
1485
1849
  }
1486
1850
  return null;
1487
1851
  };
1488
1852
  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)(() => {
1853
+ let { stitchesInstance, elementInstances } = (0, import_react38.useContext)(WeaverseContext);
1854
+ let [data, setData] = (0, import_react38.useState)(instance.data);
1855
+ let { id, type, childIds = [], css: css11, className, ...rest } = data;
1856
+ (0, import_react38.useEffect)(() => {
1493
1857
  let render = (data2) => setData({ ...data2 });
1494
1858
  instance.subscribe(render);
1495
1859
  if (import_core2.isBrowser && !instance.ref.current) {
@@ -1505,13 +1869,13 @@ var ItemComponent = ({ instance }) => {
1505
1869
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1506
1870
  rest.ref = instance.ref;
1507
1871
  }
1508
- return /* @__PURE__ */ import_react27.default.createElement(Component, {
1872
+ return /* @__PURE__ */ import_react38.default.createElement(Component, {
1509
1873
  key: id,
1510
1874
  "data-wv-type": type,
1511
1875
  "data-wv-id": id,
1512
1876
  className: generateItemClassName(instance, stitchesInstance),
1513
1877
  ...rest
1514
- }, childIds.map((id2) => /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
1878
+ }, childIds.map((id2) => /* @__PURE__ */ import_react38.default.createElement(ItemInstance, {
1515
1879
  key: id2,
1516
1880
  id: id2
1517
1881
  })));
@@ -1521,15 +1885,15 @@ var ItemComponent = ({ instance }) => {
1521
1885
  }
1522
1886
  };
1523
1887
  var ItemInstance = ({ id }) => {
1524
- let context = (0, import_react27.useContext)(WeaverseContext);
1888
+ let context = (0, import_react38.useContext)(WeaverseContext);
1525
1889
  let { itemInstances } = context;
1526
1890
  let instance = itemInstances.get(id);
1527
1891
  if (!instance) {
1528
- return /* @__PURE__ */ import_react27.default.createElement("div", {
1892
+ return /* @__PURE__ */ import_react38.default.createElement("div", {
1529
1893
  style: { display: "none" }
1530
1894
  }, "Item instance ", id, " not found");
1531
1895
  }
1532
- return /* @__PURE__ */ import_react27.default.createElement(ItemComponent, {
1896
+ return /* @__PURE__ */ import_react38.default.createElement(ItemComponent, {
1533
1897
  key: id,
1534
1898
  instance
1535
1899
  });
@@ -1538,6 +1902,7 @@ var ItemInstance = ({ id }) => {
1538
1902
  0 && (module.exports = {
1539
1903
  Components,
1540
1904
  Elements,
1905
+ SliderComponents,
1541
1906
  WeaverseContext,
1542
1907
  WeaverseContextConsumer,
1543
1908
  WeaverseContextProvider,