@weaverse/react 0.7.6 → 0.7.9

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.d.ts CHANGED
@@ -26,10 +26,11 @@ interface PlaceholderProps {
26
26
  style?: CSSProperties;
27
27
  }
28
28
  interface ButtonElementProps extends WeaverseElementProps {
29
- value: string;
30
- openInNewTab: boolean;
31
- target: string;
32
29
  type: 'button' | 'submit' | 'reset';
30
+ text: string;
31
+ clickAction: 'none' | 'openLink';
32
+ linkTo: string;
33
+ openInNewTab: boolean;
33
34
  }
34
35
  interface ContainerElementProps extends WeaverseElementProps {
35
36
  [key: string]: any;
package/dist/index.js CHANGED
@@ -37,31 +37,32 @@ module.exports = __toCommonJS(src_exports);
37
37
 
38
38
  // src/context.ts
39
39
  var import_core = require("@weaverse/core");
40
- var import_react19 = require("react");
40
+ var import_react20 = require("react");
41
41
 
42
42
  // src/elements/button.tsx
43
43
  var React = __toESM(require("react"));
44
44
  var Button = React.forwardRef((props, ref) => {
45
- let { openInNewTab, target, value, ...rest } = props;
46
- if (target) {
45
+ let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
46
+ if (clickAction && linkTo) {
47
47
  return /* @__PURE__ */ React.createElement("a", {
48
- href: target,
48
+ href: linkTo,
49
49
  target: openInNewTab ? "_blank" : "_self",
50
50
  rel: "noreferrer",
51
51
  ...rest,
52
52
  ref
53
- }, value);
53
+ }, text);
54
54
  }
55
55
  return /* @__PURE__ */ React.createElement("button", {
56
56
  ref,
57
57
  ...rest
58
- }, value);
58
+ }, text);
59
59
  });
60
60
  Button.defaultProps = {
61
- value: "Shop now",
62
- openInNewTab: false,
63
- target: "",
64
61
  type: "button",
62
+ text: "Shop now",
63
+ clickAction: "none",
64
+ linkTo: "",
65
+ openInNewTab: false,
65
66
  css: {
66
67
  "@desktop": {
67
68
  borderRadius: "72px",
@@ -367,10 +368,7 @@ Text.defaultProps = {
367
368
  value: "The quick brown fox jumps over the lazy dog",
368
369
  css: {
369
370
  "@desktop": {
370
- width: "100%",
371
- height: "fit-content",
372
- padding: "20px",
373
- outline: "none",
371
+ padding: "10px",
374
372
  wordBreak: "break-word",
375
373
  overflowWrap: "break-word",
376
374
  whiteSpace: "break-spaces"
@@ -426,27 +424,10 @@ var import_react9 = __toESM(require("react"));
426
424
  var import_react8 = __toESM(require("react"));
427
425
  var Placeholder = (0, import_react8.forwardRef)(
428
426
  (props, ref) => {
429
- let { element, children, style: newStyle, ...rest } = props;
430
- let defaultStyle = {
431
- position: "absolute",
432
- height: "calc(100% - 20px)",
433
- width: "calc(100% - 20px)",
434
- display: "flex",
435
- flexDirection: "column",
436
- alignItems: "center",
437
- justifyContent: "center",
438
- pointerEvents: "none",
439
- zIndex: 1,
440
- color: "#374151",
441
- backgroundColor: "#F9FAFB",
442
- border: "1px dashed #0F71FF",
443
- borderRadius: 4,
444
- margin: 10
445
- };
446
- const style = { ...defaultStyle, ...newStyle };
427
+ let { element, children, ...rest } = props;
447
428
  return /* @__PURE__ */ import_react8.default.createElement("div", {
448
429
  "data-wv-type": "placeholder",
449
- style,
430
+ style: { display: "none" },
450
431
  ref,
451
432
  ...rest
452
433
  }, /* @__PURE__ */ import_react8.default.createElement("div", {
@@ -485,7 +466,7 @@ var Instagram = (0, import_react9.forwardRef)(
485
466
  ...rest
486
467
  }, /* @__PURE__ */ import_react9.default.createElement(Placeholder_default, {
487
468
  element: "Instagram"
488
- }, !token ? "Connect your Instagram account to display photos on your site." : "Invalid or expired token!"));
469
+ }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
489
470
  }
490
471
  let style = {
491
472
  "--wv-ig-images-per-row": imagesPerRow,
@@ -541,78 +522,169 @@ var instagram_default = Instagram;
541
522
  // src/elements/accordion/index.tsx
542
523
  var import_react10 = __toESM(require("react"));
543
524
  var AccordionContext = (0, import_react10.createContext)({
544
- active: null,
525
+ iconName: "arrow",
526
+ active: [],
545
527
  setActive: () => {
546
528
  }
547
529
  });
548
530
  var Accordion = (0, import_react10.forwardRef)(
549
531
  (props, ref) => {
550
- const { items, children, ...rest } = props;
551
- const [active, setActive] = (0, import_react10.useState)(null);
532
+ const { iconName, children, ...rest } = props;
533
+ const [active, setActive] = (0, import_react10.useState)([]);
552
534
  const setOpenAccordion = (id) => {
553
- if (id === active) {
554
- setActive(null);
535
+ if (active.includes(id)) {
536
+ setActive(active.filter((_id) => _id !== id));
555
537
  } else {
556
- setActive(id);
538
+ setActive([...active, id]);
557
539
  }
558
540
  };
559
541
  return /* @__PURE__ */ import_react10.default.createElement("div", {
560
542
  ref,
561
543
  ...rest
562
544
  }, /* @__PURE__ */ import_react10.default.createElement(AccordionContext.Provider, {
563
- value: { active, setActive: setOpenAccordion }
545
+ value: { active, setActive: setOpenAccordion, iconName }
564
546
  }, children));
565
547
  }
566
548
  );
567
549
  Accordion.defaultProps = {
550
+ iconName: "arrow",
568
551
  css: {
569
552
  "@desktop": {
570
553
  display: "flex",
571
554
  flexDirection: "column",
572
- gap: 4,
573
- ".wv-accordion-header": {
574
- borderRadius: 4,
575
- padding: 12,
576
- marginBottom: 4,
577
- border: "1px solid #76A9FA",
578
- "&.active": {
579
- color: "blue"
580
- },
581
- '&.active + [data-wv-type="accordion.content"]': {
582
- maxHeight: "var(--max-height, inherit)"
583
- }
584
- }
555
+ gap: 4
585
556
  }
586
557
  }
587
558
  };
588
559
  var accordion_default = Accordion;
589
560
 
590
561
  // src/elements/accordion/AccordionWrapper.tsx
562
+ var import_react12 = __toESM(require("react"));
563
+
564
+ // src/elements/accordion/Icon.tsx
591
565
  var import_react11 = __toESM(require("react"));
592
- var AccordionWrapper = (0, import_react11.forwardRef)((props, ref) => {
566
+ var ICONS = {
567
+ caret: {
568
+ animationType: "rotate90",
569
+ css: {
570
+ position: "absolute!important",
571
+ left: 5,
572
+ top: 2,
573
+ width: 0,
574
+ height: 0,
575
+ borderTop: "6px solid transparent",
576
+ borderBottom: "6px solid transparent",
577
+ borderLeft: "6px solid #1F2A37"
578
+ }
579
+ },
580
+ arrow: {
581
+ animationType: "rotate90",
582
+ css: {
583
+ border: "solid #1F2A37",
584
+ borderWidth: "0 1px 1px 0",
585
+ display: "inline-block",
586
+ transform: "rotate(-45deg) translate(15%, -15%)",
587
+ padding: 4
588
+ }
589
+ },
590
+ plus: {
591
+ animationType: "custom",
592
+ css: {
593
+ display: "inline-block",
594
+ top: -6,
595
+ width: 15,
596
+ height: 1,
597
+ backgroundColor: "#1F2A37",
598
+ "&:after": {
599
+ position: "absolute",
600
+ content: "",
601
+ top: -7,
602
+ left: 7,
603
+ width: 1,
604
+ height: 15,
605
+ backgroundColor: "#1F2A37",
606
+ transition: "all 0.3s ease-in-out 0s"
607
+ },
608
+ "&.active": {
609
+ "&:after": {
610
+ transform: "rotate(90deg)"
611
+ }
612
+ }
613
+ }
614
+ }
615
+ };
616
+ var rotateAnimation = {
617
+ transition: "all 0.3s ease-in-out 0s",
618
+ transform: "rotate(90deg)"
619
+ };
620
+ function Icon(props) {
621
+ let { name, active = false, style, ...rest } = props;
622
+ let { stitchesInstance } = (0, import_react11.useContext)(WeaverseContext);
623
+ const { animationType, css } = ICONS[name];
624
+ if (active && animationType === "rotate90") {
625
+ style = { ...rotateAnimation, ...style };
626
+ }
627
+ let { className } = stitchesInstance.css(css)();
628
+ if (active)
629
+ className += " active";
630
+ return /* @__PURE__ */ import_react11.default.createElement("span", {
631
+ style,
632
+ ...rest
633
+ }, /* @__PURE__ */ import_react11.default.createElement("i", {
634
+ className
635
+ }));
636
+ }
637
+ var Icon_default = Icon;
638
+
639
+ // src/elements/accordion/AccordionWrapper.tsx
640
+ var AccordionWrapper = (0, import_react12.forwardRef)((props, ref) => {
593
641
  const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
594
- const { active, setActive } = (0, import_react11.useContext)(AccordionContext);
595
- return /* @__PURE__ */ import_react11.default.createElement("div", {
642
+ const { iconName, active, setActive } = (0, import_react12.useContext)(AccordionContext);
643
+ const isActive = active.includes(wvId);
644
+ return /* @__PURE__ */ import_react12.default.createElement("div", {
596
645
  ref,
597
646
  ...rest
598
- }, /* @__PURE__ */ import_react11.default.createElement("div", {
647
+ }, /* @__PURE__ */ import_react12.default.createElement("div", {
599
648
  onClick: () => setActive(wvId),
600
- className: `wv-accordion-header ${active === wvId ? "active" : ""}`
601
- }, name), children);
649
+ className: `wv-acc-header ${isActive ? "active" : ""}`
650
+ }, /* @__PURE__ */ import_react12.default.createElement("span", null, name), /* @__PURE__ */ import_react12.default.createElement(Icon_default, {
651
+ className: "wv-acc-icon",
652
+ active: isActive,
653
+ name: iconName
654
+ })), children);
602
655
  });
603
656
  AccordionWrapper.defaultProps = {
604
657
  name: "Accordion item",
605
658
  css: {
606
659
  "@desktop": {
607
- maxHeight: "100%"
660
+ maxHeight: "100%",
661
+ ".wv-acc-icon": {
662
+ position: "absolute",
663
+ right: 16,
664
+ width: 16,
665
+ height: 16,
666
+ transition: "all 0.3s ease-in-out 0s"
667
+ },
668
+ ".wv-acc-header": {
669
+ display: "flex",
670
+ alignItems: "center",
671
+ borderRadius: 4,
672
+ padding: 12,
673
+ marginBottom: 4,
674
+ border: "1px solid #76A9FA",
675
+ cursor: "pointer",
676
+ '&.active + [data-wv-type="accordion.content"]': {
677
+ maxHeight: "var(--max-height, inherit)"
678
+ }
679
+ }
608
680
  }
609
681
  }
610
682
  };
611
683
  var AccordionWrapper_default = AccordionWrapper;
612
684
 
613
685
  // src/elements/accordion/AccordionContent.tsx
614
- var import_react12 = __toESM(require("react"));
615
- var AccordionContent = (0, import_react12.forwardRef)(
686
+ var import_react13 = __toESM(require("react"));
687
+ var AccordionContent = (0, import_react13.forwardRef)(
616
688
  (props, ref) => {
617
689
  const { rows, columns, gap, rowSize, children, ...rest } = props;
618
690
  let style = {
@@ -623,17 +695,17 @@ var AccordionContent = (0, import_react12.forwardRef)(
623
695
  "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
624
696
  "--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
625
697
  };
626
- return /* @__PURE__ */ import_react12.default.createElement("div", {
698
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
627
699
  ref,
628
700
  ...rest,
629
701
  style
630
- }, import_react12.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react12.default.createElement(Placeholder_default, {
702
+ }, import_react13.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react13.default.createElement(Placeholder_default, {
631
703
  element: "Accordion Content"
632
- }, "Please drag and drop an element here"));
704
+ }, "Drag and drop an element here."));
633
705
  }
634
706
  );
635
707
  AccordionContent.defaultProps = {
636
- rows: 2,
708
+ rows: 3,
637
709
  columns: 12,
638
710
  gap: 4,
639
711
  rowSize: 48,
@@ -655,65 +727,69 @@ AccordionContent.defaultProps = {
655
727
  var AccordionContent_default = AccordionContent;
656
728
 
657
729
  // src/elements/tab/index.tsx
658
- var import_react14 = __toESM(require("react"));
730
+ var import_react15 = __toESM(require("react"));
659
731
 
660
732
  // src/elements/tab/TabHeaderWrapper.tsx
661
- var import_react13 = __toESM(require("react"));
733
+ var import_react14 = __toESM(require("react"));
662
734
  function TabHeader(props) {
663
735
  const { wvId } = props;
664
- const { active, setActive } = (0, import_react13.useContext)(TabContext);
665
- const { itemInstances } = (0, import_react13.useContext)(WeaverseContext);
736
+ const { active, setActive } = (0, import_react14.useContext)(TabContext);
737
+ const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
666
738
  const instance = itemInstances.get(wvId);
667
- let [data, setData] = (0, import_react13.useState)(instance.data);
668
- (0, import_react13.useEffect)(() => {
739
+ let [data, setData] = (0, import_react14.useState)(instance.data);
740
+ (0, import_react14.useEffect)(() => {
669
741
  let update = (data2) => setData({ ...data2 });
670
742
  instance.subscribe(update);
671
743
  }, []);
672
- return /* @__PURE__ */ import_react13.default.createElement("div", {
744
+ return /* @__PURE__ */ import_react14.default.createElement("div", {
673
745
  onClick: () => setActive(wvId),
674
746
  className: `wv-tab-header${active === wvId ? " active" : ""}`
675
747
  }, data.name);
676
748
  }
677
749
  function TabHeaderWrapper(props) {
678
- const { itemInstances } = (0, import_react13.useContext)(WeaverseContext);
750
+ const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
679
751
  const instance = itemInstances.get(props.wvId);
680
752
  const data = instance.data;
681
753
  const childIds = data.childIds;
682
- return /* @__PURE__ */ import_react13.default.createElement("div", {
754
+ return /* @__PURE__ */ import_react14.default.createElement("div", {
683
755
  className: "wv-tab-header-wrapper"
684
- }, childIds.map((id) => /* @__PURE__ */ import_react13.default.createElement(TabHeader, {
756
+ }, childIds.map((id) => /* @__PURE__ */ import_react14.default.createElement(TabHeader, {
685
757
  key: id,
686
758
  wvId: id
687
759
  })));
688
760
  }
689
761
 
690
762
  // src/elements/tab/index.tsx
691
- var TabContext = (0, import_react14.createContext)({
763
+ var TabContext = (0, import_react15.createContext)({
692
764
  active: null,
693
765
  setActive: () => {
694
766
  }
695
767
  });
696
- var Tab = (0, import_react14.forwardRef)((props, ref) => {
768
+ var Tab = (0, import_react15.forwardRef)((props, ref) => {
697
769
  var _a, _b, _c;
698
770
  const wvId = props["data-wv-id"];
699
- const { children, ...rest } = props;
700
- const defaultActive = (_c = (_b = (_a = import_react14.default.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
701
- const [active, setActive] = (0, import_react14.useState)(defaultActive);
771
+ const { fullWidthTabHeader, children, ...rest } = props;
772
+ const defaultActive = (_c = (_b = (_a = import_react15.default.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
773
+ const [active, setActive] = (0, import_react15.useState)(defaultActive);
702
774
  const setOpenTab = (id) => {
703
775
  if (id !== active) {
704
776
  setActive(id);
705
777
  }
706
778
  };
707
- return /* @__PURE__ */ import_react14.default.createElement("div", {
779
+ return /* @__PURE__ */ import_react15.default.createElement("div", {
708
780
  ref,
709
- ...rest
710
- }, /* @__PURE__ */ import_react14.default.createElement(TabContext.Provider, {
781
+ ...rest,
782
+ style: {
783
+ "--tab-width": fullWidthTabHeader ? "100%" : "auto"
784
+ }
785
+ }, /* @__PURE__ */ import_react15.default.createElement(TabContext.Provider, {
711
786
  value: { active, setActive: setOpenTab }
712
- }, /* @__PURE__ */ import_react14.default.createElement(TabHeaderWrapper, {
787
+ }, /* @__PURE__ */ import_react15.default.createElement(TabHeaderWrapper, {
713
788
  wvId
714
789
  }), children));
715
790
  });
716
791
  Tab.defaultProps = {
792
+ fullWidthTabHeader: false,
717
793
  css: {
718
794
  "@desktop": {
719
795
  display: "flex",
@@ -729,6 +805,8 @@ Tab.defaultProps = {
729
805
  padding: "15px 24px",
730
806
  border: "1px solid #E4E7EB",
731
807
  cursor: "pointer",
808
+ textAlign: "center",
809
+ width: "var(--tab-width, auto)",
732
810
  "&.active": {
733
811
  backgroundColor: "#E4E7EB"
734
812
  }
@@ -739,10 +817,10 @@ Tab.defaultProps = {
739
817
  var tab_default = Tab;
740
818
 
741
819
  // src/elements/tab/TabContent.tsx
742
- var import_react15 = __toESM(require("react"));
743
- var TabContent = (0, import_react15.forwardRef)(
820
+ var import_react16 = __toESM(require("react"));
821
+ var TabContent = (0, import_react16.forwardRef)(
744
822
  (props, ref) => {
745
- const { active } = (0, import_react15.useContext)(TabContext);
823
+ const { active } = (0, import_react16.useContext)(TabContext);
746
824
  const wvId = props["data-wv-id"];
747
825
  const { rows, columns, gap, rowSize, children, ...rest } = props;
748
826
  let style = {
@@ -754,17 +832,17 @@ var TabContent = (0, import_react15.forwardRef)(
754
832
  "--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
755
833
  "--content-active": active === wvId ? "grid" : "none"
756
834
  };
757
- return /* @__PURE__ */ import_react15.default.createElement("div", {
835
+ return /* @__PURE__ */ import_react16.default.createElement("div", {
758
836
  ref,
759
837
  ...rest,
760
838
  style
761
- }, import_react15.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react15.default.createElement(Placeholder_default, {
839
+ }, import_react16.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react16.default.createElement(Placeholder_default, {
762
840
  element: "Tab Content"
763
- }, "Please drag and drop an element here"));
841
+ }, "Drag and drop an element here."));
764
842
  }
765
843
  );
766
844
  TabContent.defaultProps = {
767
- rows: 2,
845
+ rows: 3,
768
846
  columns: 12,
769
847
  gap: 4,
770
848
  rowSize: 48,
@@ -784,29 +862,28 @@ TabContent.defaultProps = {
784
862
  var TabContent_default = TabContent;
785
863
 
786
864
  // src/elements/slider/index.tsx
787
- var import_react16 = __toESM(require("react"));
788
- var import_nuka_carousel = __toESM(require("nuka-carousel"));
789
- var Carousel = import_nuka_carousel.default.default;
790
- var Slider = (0, import_react16.forwardRef)((props, ref) => {
791
- const { isDesignMode } = (0, import_react16.useContext)(WeaverseContext);
865
+ var import_react17 = __toESM(require("react"));
866
+ var import_carousel = require("nuka-carousel/lib/carousel");
867
+ var Slider = (0, import_react17.forwardRef)((props, ref) => {
868
+ const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
792
869
  const { autoplay, delay, children, ...rest } = props;
793
- return /* @__PURE__ */ import_react16.default.createElement("div", {
870
+ return /* @__PURE__ */ import_react17.default.createElement("div", {
794
871
  ...rest,
795
872
  ref
796
- }, /* @__PURE__ */ import_react16.default.createElement(Carousel, {
873
+ }, /* @__PURE__ */ import_react17.default.createElement(import_carousel.Carousel, {
797
874
  dragging: false,
798
- renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react16.default.createElement("button", {
875
+ renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
799
876
  className: "wv-slider-btn",
800
877
  onClick: props2.previousSlide,
801
878
  disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
802
- }, /* @__PURE__ */ import_react16.default.createElement("i", {
879
+ }, /* @__PURE__ */ import_react17.default.createElement("i", {
803
880
  className: "wv-slider-arrow wv-slider-arrow-left"
804
881
  })),
805
- renderCenterRightControls: (props2) => /* @__PURE__ */ import_react16.default.createElement("button", {
882
+ renderCenterRightControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
806
883
  className: "wv-slider-btn",
807
884
  onClick: props2.nextSlide,
808
885
  disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
809
- }, /* @__PURE__ */ import_react16.default.createElement("i", {
886
+ }, /* @__PURE__ */ import_react17.default.createElement("i", {
810
887
  className: "wv-slider-arrow wv-slider-arrow-right"
811
888
  })),
812
889
  wrapAround: !isDesignMode,
@@ -854,10 +931,10 @@ Slider.defaultProps = {
854
931
  var slider_default = Slider;
855
932
 
856
933
  // src/elements/slider/SliderContent.tsx
857
- var import_react17 = __toESM(require("react"));
858
- var SliderContent = (0, import_react17.forwardRef)(
934
+ var import_react18 = __toESM(require("react"));
935
+ var SliderContent = (0, import_react18.forwardRef)(
859
936
  (props, ref) => {
860
- const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
937
+ const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
861
938
  const {
862
939
  mediaUrl,
863
940
  targetLink,
@@ -883,13 +960,13 @@ var SliderContent = (0, import_react17.forwardRef)(
883
960
  window.open(targetLink, openInNewTab ? "_blank" : "_self");
884
961
  }
885
962
  };
886
- return /* @__PURE__ */ import_react17.default.createElement("div", {
963
+ return /* @__PURE__ */ import_react18.default.createElement("div", {
887
964
  ...rest,
888
965
  style,
889
966
  onClick: handleClick
890
- }, import_react17.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react17.default.createElement(Placeholder_default, {
967
+ }, import_react18.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react18.default.createElement(Placeholder_default, {
891
968
  element: "Slider Content"
892
- }, "Please drag and drop an element here"));
969
+ }, "Drag and drop an element here."));
893
970
  }
894
971
  );
895
972
  SliderContent.defaultProps = {
@@ -917,22 +994,22 @@ SliderContent.defaultProps = {
917
994
  var SliderContent_default = SliderContent;
918
995
 
919
996
  // src/elements/custom-html.tsx
920
- var import_react18 = __toESM(require("react"));
921
- var CustomHTML = (0, import_react18.forwardRef)(
997
+ var import_react19 = __toESM(require("react"));
998
+ var CustomHTML = (0, import_react19.forwardRef)(
922
999
  (props, ref) => {
923
1000
  const { content, children, ...rest } = props;
924
- const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
1001
+ const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
925
1002
  const style = {
926
1003
  "--pointer-events": isDesignMode ? "none" : "auto"
927
1004
  };
928
1005
  if (!content)
929
- return /* @__PURE__ */ import_react18.default.createElement("div", {
1006
+ return /* @__PURE__ */ import_react19.default.createElement("div", {
930
1007
  ref,
931
1008
  ...rest
932
- }, /* @__PURE__ */ import_react18.default.createElement(Placeholder_default, {
1009
+ }, /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
933
1010
  element: "Custom HTML"
934
- }, "Please add your custom HTML codes."));
935
- return /* @__PURE__ */ import_react18.default.createElement("div", {
1011
+ }, "Add your custom HTML code."));
1012
+ return /* @__PURE__ */ import_react19.default.createElement("div", {
936
1013
  ref,
937
1014
  ...rest,
938
1015
  style,
@@ -1033,13 +1110,13 @@ var createRootContext = (configs) => {
1033
1110
  });
1034
1111
  return rootContext;
1035
1112
  };
1036
- var WeaverseContext = (0, import_react19.createContext)({});
1113
+ var WeaverseContext = (0, import_react20.createContext)({});
1037
1114
  var WeaverseContextProvider = WeaverseContext.Provider;
1038
1115
  var WeaverseContextConsumer = WeaverseContext.Consumer;
1039
1116
 
1040
1117
  // src/renderer.tsx
1041
1118
  var import_core2 = require("@weaverse/core");
1042
- var import_react20 = __toESM(require("react"));
1119
+ var import_react21 = __toESM(require("react"));
1043
1120
 
1044
1121
  // src/utils/index.ts
1045
1122
  function shortCssObject(css) {
@@ -1067,10 +1144,10 @@ function generateItemClass(instance, stitchesInstance) {
1067
1144
  // src/renderer.tsx
1068
1145
  var WeaverseRoot = ({ context }) => {
1069
1146
  var _a, _b;
1070
- let [, setData] = (0, import_react20.useState)(context.projectData);
1071
- let rootRef = (0, import_react20.useRef)();
1147
+ let [, setData] = (0, import_react21.useState)(context.projectData);
1148
+ let rootRef = (0, import_react21.useRef)();
1072
1149
  let update = () => setData({});
1073
- (0, import_react20.useEffect)(() => {
1150
+ (0, import_react21.useEffect)(() => {
1074
1151
  context.subscribe(update);
1075
1152
  context.contentRootElement = rootRef.current;
1076
1153
  return () => {
@@ -1079,21 +1156,21 @@ var WeaverseRoot = ({ context }) => {
1079
1156
  }, []);
1080
1157
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
1081
1158
  let themeClass = context.stitchesInstance.theme.className;
1082
- return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react20.default.createElement("div", {
1159
+ return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react21.default.createElement("div", {
1083
1160
  className: `weaverse-content-root ${themeClass}`,
1084
1161
  ...eventHandlers,
1085
1162
  ref: rootRef
1086
- }, /* @__PURE__ */ import_react20.default.createElement(WeaverseContextProvider, {
1163
+ }, /* @__PURE__ */ import_react21.default.createElement(WeaverseContextProvider, {
1087
1164
  value: context
1088
- }, /* @__PURE__ */ import_react20.default.createElement(ItemInstance, {
1165
+ }, /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
1089
1166
  id: context.projectData.rootId
1090
1167
  }))) : null;
1091
1168
  };
1092
1169
  var ItemComponent = ({ instance }) => {
1093
- let { stitchesInstance, elementInstances } = (0, import_react20.useContext)(WeaverseContext);
1094
- let [data, setData] = (0, import_react20.useState)(instance.data);
1170
+ let { stitchesInstance, elementInstances } = (0, import_react21.useContext)(WeaverseContext);
1171
+ let [data, setData] = (0, import_react21.useState)(instance.data);
1095
1172
  let { id, type, childIds = [], css, className, ...rest } = data;
1096
- (0, import_react20.useEffect)(() => {
1173
+ (0, import_react21.useEffect)(() => {
1097
1174
  var _a;
1098
1175
  let update = (data2) => setData({ ...data2 });
1099
1176
  instance.subscribe(update);
@@ -1113,13 +1190,13 @@ var ItemComponent = ({ instance }) => {
1113
1190
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1114
1191
  rest.ref = instance.ref;
1115
1192
  }
1116
- return /* @__PURE__ */ import_react20.default.createElement(Component, {
1193
+ return /* @__PURE__ */ import_react21.default.createElement(Component, {
1117
1194
  key: id,
1118
1195
  "data-wv-type": type,
1119
1196
  "data-wv-id": id,
1120
1197
  className: generateItemClass(instance, stitchesInstance),
1121
1198
  ...rest
1122
- }, childIds.map((id2) => /* @__PURE__ */ import_react20.default.createElement(ItemInstance, {
1199
+ }, childIds.map((id2) => /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
1123
1200
  key: id2,
1124
1201
  id: id2
1125
1202
  })));
@@ -1127,15 +1204,15 @@ var ItemComponent = ({ instance }) => {
1127
1204
  return null;
1128
1205
  };
1129
1206
  var ItemInstance = ({ id }) => {
1130
- let context = (0, import_react20.useContext)(WeaverseContext);
1207
+ let context = (0, import_react21.useContext)(WeaverseContext);
1131
1208
  let { itemInstances } = context;
1132
1209
  let instance = itemInstances.get(id);
1133
1210
  if (!instance) {
1134
- return /* @__PURE__ */ import_react20.default.createElement("div", {
1211
+ return /* @__PURE__ */ import_react21.default.createElement("div", {
1135
1212
  style: { display: "none" }
1136
1213
  }, "Item instance ", id, " not found");
1137
1214
  }
1138
- return /* @__PURE__ */ import_react20.default.createElement(ItemComponent, {
1215
+ return /* @__PURE__ */ import_react21.default.createElement(ItemComponent, {
1139
1216
  instance
1140
1217
  });
1141
1218
  };
package/dist/index.mjs CHANGED
@@ -5,26 +5,27 @@ import { createContext as createContext3 } from "react";
5
5
  // src/elements/button.tsx
6
6
  import * as React from "react";
7
7
  var Button = React.forwardRef((props, ref) => {
8
- let { openInNewTab, target, value, ...rest } = props;
9
- if (target) {
8
+ let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
9
+ if (clickAction && linkTo) {
10
10
  return /* @__PURE__ */ React.createElement("a", {
11
- href: target,
11
+ href: linkTo,
12
12
  target: openInNewTab ? "_blank" : "_self",
13
13
  rel: "noreferrer",
14
14
  ...rest,
15
15
  ref
16
- }, value);
16
+ }, text);
17
17
  }
18
18
  return /* @__PURE__ */ React.createElement("button", {
19
19
  ref,
20
20
  ...rest
21
- }, value);
21
+ }, text);
22
22
  });
23
23
  Button.defaultProps = {
24
- value: "Shop now",
25
- openInNewTab: false,
26
- target: "",
27
24
  type: "button",
25
+ text: "Shop now",
26
+ clickAction: "none",
27
+ linkTo: "",
28
+ openInNewTab: false,
28
29
  css: {
29
30
  "@desktop": {
30
31
  borderRadius: "72px",
@@ -330,10 +331,7 @@ Text.defaultProps = {
330
331
  value: "The quick brown fox jumps over the lazy dog",
331
332
  css: {
332
333
  "@desktop": {
333
- width: "100%",
334
- height: "fit-content",
335
- padding: "20px",
336
- outline: "none",
334
+ padding: "10px",
337
335
  wordBreak: "break-word",
338
336
  overflowWrap: "break-word",
339
337
  whiteSpace: "break-spaces"
@@ -389,27 +387,10 @@ import React11, { forwardRef as forwardRef9, useEffect as useEffect2, useState }
389
387
  import React10, { forwardRef as forwardRef8 } from "react";
390
388
  var Placeholder = forwardRef8(
391
389
  (props, ref) => {
392
- let { element, children, style: newStyle, ...rest } = props;
393
- let defaultStyle = {
394
- position: "absolute",
395
- height: "calc(100% - 20px)",
396
- width: "calc(100% - 20px)",
397
- display: "flex",
398
- flexDirection: "column",
399
- alignItems: "center",
400
- justifyContent: "center",
401
- pointerEvents: "none",
402
- zIndex: 1,
403
- color: "#374151",
404
- backgroundColor: "#F9FAFB",
405
- border: "1px dashed #0F71FF",
406
- borderRadius: 4,
407
- margin: 10
408
- };
409
- const style = { ...defaultStyle, ...newStyle };
390
+ let { element, children, ...rest } = props;
410
391
  return /* @__PURE__ */ React10.createElement("div", {
411
392
  "data-wv-type": "placeholder",
412
- style,
393
+ style: { display: "none" },
413
394
  ref,
414
395
  ...rest
415
396
  }, /* @__PURE__ */ React10.createElement("div", {
@@ -448,7 +429,7 @@ var Instagram = forwardRef9(
448
429
  ...rest
449
430
  }, /* @__PURE__ */ React11.createElement(Placeholder_default, {
450
431
  element: "Instagram"
451
- }, !token ? "Connect your Instagram account to display photos on your site." : "Invalid or expired token!"));
432
+ }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
452
433
  }
453
434
  let style = {
454
435
  "--wv-ig-images-per-row": imagesPerRow,
@@ -504,77 +485,168 @@ var instagram_default = Instagram;
504
485
  // src/elements/accordion/index.tsx
505
486
  import React12, { createContext, forwardRef as forwardRef10, useState as useState2 } from "react";
506
487
  var AccordionContext = createContext({
507
- active: null,
488
+ iconName: "arrow",
489
+ active: [],
508
490
  setActive: () => {
509
491
  }
510
492
  });
511
493
  var Accordion = forwardRef10(
512
494
  (props, ref) => {
513
- const { items, children, ...rest } = props;
514
- const [active, setActive] = useState2(null);
495
+ const { iconName, children, ...rest } = props;
496
+ const [active, setActive] = useState2([]);
515
497
  const setOpenAccordion = (id) => {
516
- if (id === active) {
517
- setActive(null);
498
+ if (active.includes(id)) {
499
+ setActive(active.filter((_id) => _id !== id));
518
500
  } else {
519
- setActive(id);
501
+ setActive([...active, id]);
520
502
  }
521
503
  };
522
504
  return /* @__PURE__ */ React12.createElement("div", {
523
505
  ref,
524
506
  ...rest
525
507
  }, /* @__PURE__ */ React12.createElement(AccordionContext.Provider, {
526
- value: { active, setActive: setOpenAccordion }
508
+ value: { active, setActive: setOpenAccordion, iconName }
527
509
  }, children));
528
510
  }
529
511
  );
530
512
  Accordion.defaultProps = {
513
+ iconName: "arrow",
531
514
  css: {
532
515
  "@desktop": {
533
516
  display: "flex",
534
517
  flexDirection: "column",
535
- gap: 4,
536
- ".wv-accordion-header": {
537
- borderRadius: 4,
538
- padding: 12,
539
- marginBottom: 4,
540
- border: "1px solid #76A9FA",
541
- "&.active": {
542
- color: "blue"
543
- },
544
- '&.active + [data-wv-type="accordion.content"]': {
545
- maxHeight: "var(--max-height, inherit)"
518
+ gap: 4
519
+ }
520
+ }
521
+ };
522
+ var accordion_default = Accordion;
523
+
524
+ // src/elements/accordion/AccordionWrapper.tsx
525
+ import React14, { forwardRef as forwardRef11, useContext as useContext5 } from "react";
526
+
527
+ // src/elements/accordion/Icon.tsx
528
+ import React13, { useContext as useContext4 } from "react";
529
+ var ICONS = {
530
+ caret: {
531
+ animationType: "rotate90",
532
+ css: {
533
+ position: "absolute!important",
534
+ left: 5,
535
+ top: 2,
536
+ width: 0,
537
+ height: 0,
538
+ borderTop: "6px solid transparent",
539
+ borderBottom: "6px solid transparent",
540
+ borderLeft: "6px solid #1F2A37"
541
+ }
542
+ },
543
+ arrow: {
544
+ animationType: "rotate90",
545
+ css: {
546
+ border: "solid #1F2A37",
547
+ borderWidth: "0 1px 1px 0",
548
+ display: "inline-block",
549
+ transform: "rotate(-45deg) translate(15%, -15%)",
550
+ padding: 4
551
+ }
552
+ },
553
+ plus: {
554
+ animationType: "custom",
555
+ css: {
556
+ display: "inline-block",
557
+ top: -6,
558
+ width: 15,
559
+ height: 1,
560
+ backgroundColor: "#1F2A37",
561
+ "&:after": {
562
+ position: "absolute",
563
+ content: "",
564
+ top: -7,
565
+ left: 7,
566
+ width: 1,
567
+ height: 15,
568
+ backgroundColor: "#1F2A37",
569
+ transition: "all 0.3s ease-in-out 0s"
570
+ },
571
+ "&.active": {
572
+ "&:after": {
573
+ transform: "rotate(90deg)"
546
574
  }
547
575
  }
548
576
  }
549
577
  }
550
578
  };
551
- var accordion_default = Accordion;
579
+ var rotateAnimation = {
580
+ transition: "all 0.3s ease-in-out 0s",
581
+ transform: "rotate(90deg)"
582
+ };
583
+ function Icon(props) {
584
+ let { name, active = false, style, ...rest } = props;
585
+ let { stitchesInstance } = useContext4(WeaverseContext);
586
+ const { animationType, css } = ICONS[name];
587
+ if (active && animationType === "rotate90") {
588
+ style = { ...rotateAnimation, ...style };
589
+ }
590
+ let { className } = stitchesInstance.css(css)();
591
+ if (active)
592
+ className += " active";
593
+ return /* @__PURE__ */ React13.createElement("span", {
594
+ style,
595
+ ...rest
596
+ }, /* @__PURE__ */ React13.createElement("i", {
597
+ className
598
+ }));
599
+ }
600
+ var Icon_default = Icon;
552
601
 
553
602
  // src/elements/accordion/AccordionWrapper.tsx
554
- import React13, { forwardRef as forwardRef11, useContext as useContext4 } from "react";
555
603
  var AccordionWrapper = forwardRef11((props, ref) => {
556
604
  const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
557
- const { active, setActive } = useContext4(AccordionContext);
558
- return /* @__PURE__ */ React13.createElement("div", {
605
+ const { iconName, active, setActive } = useContext5(AccordionContext);
606
+ const isActive = active.includes(wvId);
607
+ return /* @__PURE__ */ React14.createElement("div", {
559
608
  ref,
560
609
  ...rest
561
- }, /* @__PURE__ */ React13.createElement("div", {
610
+ }, /* @__PURE__ */ React14.createElement("div", {
562
611
  onClick: () => setActive(wvId),
563
- className: `wv-accordion-header ${active === wvId ? "active" : ""}`
564
- }, name), children);
612
+ className: `wv-acc-header ${isActive ? "active" : ""}`
613
+ }, /* @__PURE__ */ React14.createElement("span", null, name), /* @__PURE__ */ React14.createElement(Icon_default, {
614
+ className: "wv-acc-icon",
615
+ active: isActive,
616
+ name: iconName
617
+ })), children);
565
618
  });
566
619
  AccordionWrapper.defaultProps = {
567
620
  name: "Accordion item",
568
621
  css: {
569
622
  "@desktop": {
570
- maxHeight: "100%"
623
+ maxHeight: "100%",
624
+ ".wv-acc-icon": {
625
+ position: "absolute",
626
+ right: 16,
627
+ width: 16,
628
+ height: 16,
629
+ transition: "all 0.3s ease-in-out 0s"
630
+ },
631
+ ".wv-acc-header": {
632
+ display: "flex",
633
+ alignItems: "center",
634
+ borderRadius: 4,
635
+ padding: 12,
636
+ marginBottom: 4,
637
+ border: "1px solid #76A9FA",
638
+ cursor: "pointer",
639
+ '&.active + [data-wv-type="accordion.content"]': {
640
+ maxHeight: "var(--max-height, inherit)"
641
+ }
642
+ }
571
643
  }
572
644
  }
573
645
  };
574
646
  var AccordionWrapper_default = AccordionWrapper;
575
647
 
576
648
  // src/elements/accordion/AccordionContent.tsx
577
- import React14, { forwardRef as forwardRef12 } from "react";
649
+ import React15, { forwardRef as forwardRef12 } from "react";
578
650
  var AccordionContent = forwardRef12(
579
651
  (props, ref) => {
580
652
  const { rows, columns, gap, rowSize, children, ...rest } = props;
@@ -586,17 +658,17 @@ var AccordionContent = forwardRef12(
586
658
  "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
587
659
  "--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
588
660
  };
589
- return /* @__PURE__ */ React14.createElement("div", {
661
+ return /* @__PURE__ */ React15.createElement("div", {
590
662
  ref,
591
663
  ...rest,
592
664
  style
593
- }, React14.Children.count(children) > 0 ? children : /* @__PURE__ */ React14.createElement(Placeholder_default, {
665
+ }, React15.Children.count(children) > 0 ? children : /* @__PURE__ */ React15.createElement(Placeholder_default, {
594
666
  element: "Accordion Content"
595
- }, "Please drag and drop an element here"));
667
+ }, "Drag and drop an element here."));
596
668
  }
597
669
  );
598
670
  AccordionContent.defaultProps = {
599
- rows: 2,
671
+ rows: 3,
600
672
  columns: 12,
601
673
  gap: 4,
602
674
  rowSize: 48,
@@ -618,33 +690,33 @@ AccordionContent.defaultProps = {
618
690
  var AccordionContent_default = AccordionContent;
619
691
 
620
692
  // src/elements/tab/index.tsx
621
- import React16, { createContext as createContext2, forwardRef as forwardRef13, useState as useState4 } from "react";
693
+ import React17, { createContext as createContext2, forwardRef as forwardRef13, useState as useState4 } from "react";
622
694
 
623
695
  // src/elements/tab/TabHeaderWrapper.tsx
624
- import React15, { useContext as useContext5, useEffect as useEffect3, useState as useState3 } from "react";
696
+ import React16, { useContext as useContext6, useEffect as useEffect3, useState as useState3 } from "react";
625
697
  function TabHeader(props) {
626
698
  const { wvId } = props;
627
- const { active, setActive } = useContext5(TabContext);
628
- const { itemInstances } = useContext5(WeaverseContext);
699
+ const { active, setActive } = useContext6(TabContext);
700
+ const { itemInstances } = useContext6(WeaverseContext);
629
701
  const instance = itemInstances.get(wvId);
630
702
  let [data, setData] = useState3(instance.data);
631
703
  useEffect3(() => {
632
704
  let update = (data2) => setData({ ...data2 });
633
705
  instance.subscribe(update);
634
706
  }, []);
635
- return /* @__PURE__ */ React15.createElement("div", {
707
+ return /* @__PURE__ */ React16.createElement("div", {
636
708
  onClick: () => setActive(wvId),
637
709
  className: `wv-tab-header${active === wvId ? " active" : ""}`
638
710
  }, data.name);
639
711
  }
640
712
  function TabHeaderWrapper(props) {
641
- const { itemInstances } = useContext5(WeaverseContext);
713
+ const { itemInstances } = useContext6(WeaverseContext);
642
714
  const instance = itemInstances.get(props.wvId);
643
715
  const data = instance.data;
644
716
  const childIds = data.childIds;
645
- return /* @__PURE__ */ React15.createElement("div", {
717
+ return /* @__PURE__ */ React16.createElement("div", {
646
718
  className: "wv-tab-header-wrapper"
647
- }, childIds.map((id) => /* @__PURE__ */ React15.createElement(TabHeader, {
719
+ }, childIds.map((id) => /* @__PURE__ */ React16.createElement(TabHeader, {
648
720
  key: id,
649
721
  wvId: id
650
722
  })));
@@ -659,24 +731,28 @@ var TabContext = createContext2({
659
731
  var Tab = forwardRef13((props, ref) => {
660
732
  var _a, _b, _c;
661
733
  const wvId = props["data-wv-id"];
662
- const { children, ...rest } = props;
663
- const defaultActive = (_c = (_b = (_a = React16.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
734
+ const { fullWidthTabHeader, children, ...rest } = props;
735
+ const defaultActive = (_c = (_b = (_a = React17.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
664
736
  const [active, setActive] = useState4(defaultActive);
665
737
  const setOpenTab = (id) => {
666
738
  if (id !== active) {
667
739
  setActive(id);
668
740
  }
669
741
  };
670
- return /* @__PURE__ */ React16.createElement("div", {
742
+ return /* @__PURE__ */ React17.createElement("div", {
671
743
  ref,
672
- ...rest
673
- }, /* @__PURE__ */ React16.createElement(TabContext.Provider, {
744
+ ...rest,
745
+ style: {
746
+ "--tab-width": fullWidthTabHeader ? "100%" : "auto"
747
+ }
748
+ }, /* @__PURE__ */ React17.createElement(TabContext.Provider, {
674
749
  value: { active, setActive: setOpenTab }
675
- }, /* @__PURE__ */ React16.createElement(TabHeaderWrapper, {
750
+ }, /* @__PURE__ */ React17.createElement(TabHeaderWrapper, {
676
751
  wvId
677
752
  }), children));
678
753
  });
679
754
  Tab.defaultProps = {
755
+ fullWidthTabHeader: false,
680
756
  css: {
681
757
  "@desktop": {
682
758
  display: "flex",
@@ -692,6 +768,8 @@ Tab.defaultProps = {
692
768
  padding: "15px 24px",
693
769
  border: "1px solid #E4E7EB",
694
770
  cursor: "pointer",
771
+ textAlign: "center",
772
+ width: "var(--tab-width, auto)",
695
773
  "&.active": {
696
774
  backgroundColor: "#E4E7EB"
697
775
  }
@@ -702,10 +780,10 @@ Tab.defaultProps = {
702
780
  var tab_default = Tab;
703
781
 
704
782
  // src/elements/tab/TabContent.tsx
705
- import React17, { forwardRef as forwardRef14, useContext as useContext6 } from "react";
783
+ import React18, { forwardRef as forwardRef14, useContext as useContext7 } from "react";
706
784
  var TabContent = forwardRef14(
707
785
  (props, ref) => {
708
- const { active } = useContext6(TabContext);
786
+ const { active } = useContext7(TabContext);
709
787
  const wvId = props["data-wv-id"];
710
788
  const { rows, columns, gap, rowSize, children, ...rest } = props;
711
789
  let style = {
@@ -717,17 +795,17 @@ var TabContent = forwardRef14(
717
795
  "--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
718
796
  "--content-active": active === wvId ? "grid" : "none"
719
797
  };
720
- return /* @__PURE__ */ React17.createElement("div", {
798
+ return /* @__PURE__ */ React18.createElement("div", {
721
799
  ref,
722
800
  ...rest,
723
801
  style
724
- }, React17.Children.count(children) > 0 ? children : /* @__PURE__ */ React17.createElement(Placeholder_default, {
802
+ }, React18.Children.count(children) > 0 ? children : /* @__PURE__ */ React18.createElement(Placeholder_default, {
725
803
  element: "Tab Content"
726
- }, "Please drag and drop an element here"));
804
+ }, "Drag and drop an element here."));
727
805
  }
728
806
  );
729
807
  TabContent.defaultProps = {
730
- rows: 2,
808
+ rows: 3,
731
809
  columns: 12,
732
810
  gap: 4,
733
811
  rowSize: 48,
@@ -747,29 +825,28 @@ TabContent.defaultProps = {
747
825
  var TabContent_default = TabContent;
748
826
 
749
827
  // src/elements/slider/index.tsx
750
- import React18, { forwardRef as forwardRef15, useContext as useContext7 } from "react";
751
- import C from "nuka-carousel";
752
- var Carousel = C.default;
828
+ import React19, { forwardRef as forwardRef15, useContext as useContext8 } from "react";
829
+ import { Carousel } from "nuka-carousel/lib/carousel";
753
830
  var Slider = forwardRef15((props, ref) => {
754
- const { isDesignMode } = useContext7(WeaverseContext);
831
+ const { isDesignMode } = useContext8(WeaverseContext);
755
832
  const { autoplay, delay, children, ...rest } = props;
756
- return /* @__PURE__ */ React18.createElement("div", {
833
+ return /* @__PURE__ */ React19.createElement("div", {
757
834
  ...rest,
758
835
  ref
759
- }, /* @__PURE__ */ React18.createElement(Carousel, {
836
+ }, /* @__PURE__ */ React19.createElement(Carousel, {
760
837
  dragging: false,
761
- renderCenterLeftControls: (props2) => /* @__PURE__ */ React18.createElement("button", {
838
+ renderCenterLeftControls: (props2) => /* @__PURE__ */ React19.createElement("button", {
762
839
  className: "wv-slider-btn",
763
840
  onClick: props2.previousSlide,
764
841
  disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
765
- }, /* @__PURE__ */ React18.createElement("i", {
842
+ }, /* @__PURE__ */ React19.createElement("i", {
766
843
  className: "wv-slider-arrow wv-slider-arrow-left"
767
844
  })),
768
- renderCenterRightControls: (props2) => /* @__PURE__ */ React18.createElement("button", {
845
+ renderCenterRightControls: (props2) => /* @__PURE__ */ React19.createElement("button", {
769
846
  className: "wv-slider-btn",
770
847
  onClick: props2.nextSlide,
771
848
  disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
772
- }, /* @__PURE__ */ React18.createElement("i", {
849
+ }, /* @__PURE__ */ React19.createElement("i", {
773
850
  className: "wv-slider-arrow wv-slider-arrow-right"
774
851
  })),
775
852
  wrapAround: !isDesignMode,
@@ -817,10 +894,10 @@ Slider.defaultProps = {
817
894
  var slider_default = Slider;
818
895
 
819
896
  // src/elements/slider/SliderContent.tsx
820
- import React19, { forwardRef as forwardRef16, useContext as useContext8 } from "react";
897
+ import React20, { forwardRef as forwardRef16, useContext as useContext9 } from "react";
821
898
  var SliderContent = forwardRef16(
822
899
  (props, ref) => {
823
- const { isDesignMode } = useContext8(WeaverseContext);
900
+ const { isDesignMode } = useContext9(WeaverseContext);
824
901
  const {
825
902
  mediaUrl,
826
903
  targetLink,
@@ -846,13 +923,13 @@ var SliderContent = forwardRef16(
846
923
  window.open(targetLink, openInNewTab ? "_blank" : "_self");
847
924
  }
848
925
  };
849
- return /* @__PURE__ */ React19.createElement("div", {
926
+ return /* @__PURE__ */ React20.createElement("div", {
850
927
  ...rest,
851
928
  style,
852
929
  onClick: handleClick
853
- }, React19.Children.count(children) > 0 ? children : /* @__PURE__ */ React19.createElement(Placeholder_default, {
930
+ }, React20.Children.count(children) > 0 ? children : /* @__PURE__ */ React20.createElement(Placeholder_default, {
854
931
  element: "Slider Content"
855
- }, "Please drag and drop an element here"));
932
+ }, "Drag and drop an element here."));
856
933
  }
857
934
  );
858
935
  SliderContent.defaultProps = {
@@ -880,22 +957,22 @@ SliderContent.defaultProps = {
880
957
  var SliderContent_default = SliderContent;
881
958
 
882
959
  // src/elements/custom-html.tsx
883
- import React20, { forwardRef as forwardRef17, useContext as useContext9 } from "react";
960
+ import React21, { forwardRef as forwardRef17, useContext as useContext10 } from "react";
884
961
  var CustomHTML = forwardRef17(
885
962
  (props, ref) => {
886
963
  const { content, children, ...rest } = props;
887
- const { isDesignMode } = useContext9(WeaverseContext);
964
+ const { isDesignMode } = useContext10(WeaverseContext);
888
965
  const style = {
889
966
  "--pointer-events": isDesignMode ? "none" : "auto"
890
967
  };
891
968
  if (!content)
892
- return /* @__PURE__ */ React20.createElement("div", {
969
+ return /* @__PURE__ */ React21.createElement("div", {
893
970
  ref,
894
971
  ...rest
895
- }, /* @__PURE__ */ React20.createElement(Placeholder_default, {
972
+ }, /* @__PURE__ */ React21.createElement(Placeholder_default, {
896
973
  element: "Custom HTML"
897
- }, "Please add your custom HTML codes."));
898
- return /* @__PURE__ */ React20.createElement("div", {
974
+ }, "Add your custom HTML code."));
975
+ return /* @__PURE__ */ React21.createElement("div", {
899
976
  ref,
900
977
  ...rest,
901
978
  style,
@@ -1002,7 +1079,7 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
1002
1079
 
1003
1080
  // src/renderer.tsx
1004
1081
  import { isBrowser } from "@weaverse/core";
1005
- import React21, { useContext as useContext10, useEffect as useEffect4, useRef, useState as useState5 } from "react";
1082
+ import React22, { useContext as useContext11, useEffect as useEffect4, useRef, useState as useState5 } from "react";
1006
1083
 
1007
1084
  // src/utils/index.ts
1008
1085
  function shortCssObject(css) {
@@ -1042,18 +1119,18 @@ var WeaverseRoot = ({ context }) => {
1042
1119
  }, []);
1043
1120
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
1044
1121
  let themeClass = context.stitchesInstance.theme.className;
1045
- return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React21.createElement("div", {
1122
+ return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React22.createElement("div", {
1046
1123
  className: `weaverse-content-root ${themeClass}`,
1047
1124
  ...eventHandlers,
1048
1125
  ref: rootRef
1049
- }, /* @__PURE__ */ React21.createElement(WeaverseContextProvider, {
1126
+ }, /* @__PURE__ */ React22.createElement(WeaverseContextProvider, {
1050
1127
  value: context
1051
- }, /* @__PURE__ */ React21.createElement(ItemInstance, {
1128
+ }, /* @__PURE__ */ React22.createElement(ItemInstance, {
1052
1129
  id: context.projectData.rootId
1053
1130
  }))) : null;
1054
1131
  };
1055
1132
  var ItemComponent = ({ instance }) => {
1056
- let { stitchesInstance, elementInstances } = useContext10(WeaverseContext);
1133
+ let { stitchesInstance, elementInstances } = useContext11(WeaverseContext);
1057
1134
  let [data, setData] = useState5(instance.data);
1058
1135
  let { id, type, childIds = [], css, className, ...rest } = data;
1059
1136
  useEffect4(() => {
@@ -1076,13 +1153,13 @@ var ItemComponent = ({ instance }) => {
1076
1153
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1077
1154
  rest.ref = instance.ref;
1078
1155
  }
1079
- return /* @__PURE__ */ React21.createElement(Component, {
1156
+ return /* @__PURE__ */ React22.createElement(Component, {
1080
1157
  key: id,
1081
1158
  "data-wv-type": type,
1082
1159
  "data-wv-id": id,
1083
1160
  className: generateItemClass(instance, stitchesInstance),
1084
1161
  ...rest
1085
- }, childIds.map((id2) => /* @__PURE__ */ React21.createElement(ItemInstance, {
1162
+ }, childIds.map((id2) => /* @__PURE__ */ React22.createElement(ItemInstance, {
1086
1163
  key: id2,
1087
1164
  id: id2
1088
1165
  })));
@@ -1090,15 +1167,15 @@ var ItemComponent = ({ instance }) => {
1090
1167
  return null;
1091
1168
  };
1092
1169
  var ItemInstance = ({ id }) => {
1093
- let context = useContext10(WeaverseContext);
1170
+ let context = useContext11(WeaverseContext);
1094
1171
  let { itemInstances } = context;
1095
1172
  let instance = itemInstances.get(id);
1096
1173
  if (!instance) {
1097
- return /* @__PURE__ */ React21.createElement("div", {
1174
+ return /* @__PURE__ */ React22.createElement("div", {
1098
1175
  style: { display: "none" }
1099
1176
  }, "Item instance ", id, " not found");
1100
1177
  }
1101
- return /* @__PURE__ */ React21.createElement(ItemComponent, {
1178
+ return /* @__PURE__ */ React22.createElement(ItemComponent, {
1102
1179
  instance
1103
1180
  });
1104
1181
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.7.6",
2
+ "version": "0.7.9",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -31,7 +31,7 @@
31
31
  "name": "@weaverse/react",
32
32
  "author": "Weaverse Team",
33
33
  "dependencies": {
34
- "@weaverse/core": "0.7.6",
35
- "nuka-carousel": "^5.2.0"
34
+ "@weaverse/core": "0.7.9",
35
+ "nuka-carousel": "^5.3.0"
36
36
  }
37
37
  }