@weaverse/react 1.0.5 → 1.0.7

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.mjs CHANGED
@@ -87,6 +87,7 @@ import React4, { forwardRef as forwardRef3, useContext as useContext2, useEffect
87
87
  // src/constant/index.ts
88
88
  var TIMES = ["days", "hours", "minutes", "seconds"];
89
89
  var COUNTDOWN_KEY = "wv-cd-evergreen-start";
90
+ var INSTAGRAM_API = "https://graph.instagram.com";
90
91
 
91
92
  // src/utils/index.ts
92
93
  function getTime(_seconds) {
@@ -289,46 +290,65 @@ Image.defaultProps = {
289
290
  };
290
291
  var image_default = Image;
291
292
 
292
- // src/elements/layout/index.tsx
293
+ // src/elements/layout.tsx
293
294
  import React8, { forwardRef as forwardRef4 } from "react";
294
295
 
295
- // src/elements/layout/Background.tsx
296
+ // src/components/background.tsx
296
297
  import React6 from "react";
297
298
  function Background(props) {
298
- let { bgColor, imgUrl, objectFit, objectPosition } = props;
299
+ let {
300
+ backgroundColor,
301
+ backgroundImage,
302
+ backgroundFit,
303
+ backgroundPosition,
304
+ className
305
+ } = props;
299
306
  let style = {
300
- ["--layout-bg-color"]: bgColor,
301
- ["--layout-bg-image-object-fit"]: objectFit,
302
- ["--layout-bg-image-position"]: objectPosition
307
+ display: "block",
308
+ position: "absolute",
309
+ inset: 0,
310
+ backgroundColor
303
311
  };
304
- if (imgUrl || bgColor) {
305
- return /* @__PURE__ */ React6.createElement("div", { style, className: "wv-layout-background" }, imgUrl && /* @__PURE__ */ React6.createElement(
312
+ if (backgroundImage || backgroundColor) {
313
+ return /* @__PURE__ */ React6.createElement("div", { style, className }, backgroundImage && /* @__PURE__ */ React6.createElement(
306
314
  "img",
307
315
  {
308
316
  width: "100%",
309
317
  height: "100%",
310
- "data-blink-src": imgUrl,
311
- alt: "Section background"
318
+ "data-blink-src": backgroundImage,
319
+ alt: "Background",
320
+ style: {
321
+ objectFit: backgroundFit,
322
+ objectPosition: backgroundPosition
323
+ }
312
324
  }
313
325
  ));
314
326
  }
315
327
  return null;
316
328
  }
317
329
 
318
- // src/elements/layout/Overlay.tsx
330
+ // src/components/overlay.tsx
319
331
  import React7 from "react";
320
332
  function Overlay(props) {
321
- let { enableOverlay, overlayOpacity } = props;
333
+ let { enableOverlay, overlayOpacity, className } = props;
322
334
  if (enableOverlay) {
323
- let style = {
324
- ["--layout-overlay-opacity"]: overlayOpacity / 100
325
- };
326
- return /* @__PURE__ */ React7.createElement("div", { className: "wv-layout-overlay", style });
335
+ return /* @__PURE__ */ React7.createElement(
336
+ "div",
337
+ {
338
+ className,
339
+ style: {
340
+ position: "absolute",
341
+ inset: 0,
342
+ display: "block",
343
+ backgroundColor: `rgba(0, 0, 0, ${overlayOpacity / 100})`
344
+ }
345
+ }
346
+ );
327
347
  }
328
348
  return null;
329
349
  }
330
350
 
331
- // src/elements/layout/index.tsx
351
+ // src/elements/layout.tsx
332
352
  var Layout = forwardRef4((props, ref) => {
333
353
  let {
334
354
  children,
@@ -359,10 +379,10 @@ var Layout = forwardRef4((props, ref) => {
359
379
  return /* @__PURE__ */ React8.createElement("div", { ref, ...rest, style }, /* @__PURE__ */ React8.createElement(
360
380
  Background,
361
381
  {
362
- imgUrl: backgroundImage,
363
- bgColor: backgroundColor,
364
- objectFit,
365
- objectPosition
382
+ backgroundImage,
383
+ backgroundColor,
384
+ backgroundFit: objectFit,
385
+ backgroundPosition: objectPosition
366
386
  }
367
387
  ), /* @__PURE__ */ React8.createElement(Overlay, { enableOverlay, overlayOpacity }), /* @__PURE__ */ React8.createElement("div", { "data-layout-content": true }, children));
368
388
  });
@@ -379,22 +399,6 @@ var css5 = {
379
399
  gridAutoRows: "var(--row-size)",
380
400
  gap: "var(--gap)",
381
401
  maxWidth: "var(--layout-content-width)"
382
- },
383
- ".wv-layout-background": {
384
- display: "block",
385
- position: "absolute",
386
- inset: 0,
387
- backgroundColor: "var(--layout-bg-color)",
388
- img: {
389
- objectFit: "var(--layout-bg-image-object-fit, cover)",
390
- objectPosition: "var(--layout-bg-image-position, 50% 50%)"
391
- }
392
- },
393
- ".wv-layout-overlay": {
394
- display: "block",
395
- position: "absolute",
396
- inset: 0,
397
- backgroundColor: "rgba(0, 0, 0, var(--layout-overlay-opacity, 0.5))"
398
402
  }
399
403
  },
400
404
  "@mobile": {
@@ -474,7 +478,7 @@ var css7 = {
474
478
  overflow: "hidden",
475
479
  ".wv-text-content": {
476
480
  width: "100%",
477
- height: "100%",
481
+ height: "fit-content",
478
482
  "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
479
483
  all: "inherit",
480
484
  margin: "0",
@@ -491,14 +495,76 @@ Text.defaultProps = {
491
495
  };
492
496
  var text_default = Text;
493
497
 
498
+ // src/elements/scrolling-text.tsx
499
+ import React11 from "react";
500
+ import { useState } from "react";
501
+ var ScrollingText = React11.forwardRef((props, ref) => {
502
+ let { children, value, gap, speed, pauseOnHover, ...rest } = props;
503
+ let [playState, setPlayState] = useState("running");
504
+ let style = {
505
+ "--gap": `${gap}px`,
506
+ "--speed": `${speed}s`,
507
+ "--play-state": playState
508
+ };
509
+ let events = {};
510
+ if (pauseOnHover) {
511
+ events = {
512
+ onMouseEnter: () => setPlayState("paused"),
513
+ onMouseLeave: () => setPlayState("running")
514
+ };
515
+ }
516
+ return /* @__PURE__ */ React11.createElement("div", { ref, ...rest }, /* @__PURE__ */ React11.createElement("div", { className: "wv-scrolling-text__container", style, ...events }, Array.from({ length: 30 }).map((_, i) => /* @__PURE__ */ React11.createElement(
517
+ "div",
518
+ {
519
+ key: i,
520
+ className: "wv-text-content",
521
+ dangerouslySetInnerHTML: { __html: value }
522
+ }
523
+ ))));
524
+ });
525
+ var css8 = {
526
+ "@desktop": {
527
+ display: "flex",
528
+ padding: "10px",
529
+ overflow: "hidden",
530
+ ".wv-scrolling-text__container": {
531
+ visibility: "visible",
532
+ whiteSpace: "nowrap",
533
+ display: "flex",
534
+ gap: "var(--gap, 40px)",
535
+ animation: "wv-scrolling-text var(--speed, 100s) linear infinite",
536
+ animationPlayState: "var(--play-state, running)",
537
+ ".wv-text-content": {
538
+ width: "100%",
539
+ height: "fit-content",
540
+ "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
541
+ all: "inherit",
542
+ margin: "0",
543
+ wordBreak: "break-word",
544
+ overflowWrap: "break-word",
545
+ width: "auto",
546
+ height: "auto"
547
+ }
548
+ }
549
+ }
550
+ }
551
+ };
552
+ ScrollingText.defaultProps = {
553
+ value: "<p>The quick brown fox jumps over the lazy dog</p>",
554
+ gap: 40,
555
+ speed: 200,
556
+ pauseOnHover: true
557
+ };
558
+ var scrolling_text_default = ScrollingText;
559
+
494
560
  // src/elements/video/index.tsx
495
- import React14, { forwardRef as forwardRef7, useContext as useContext3 } from "react";
561
+ import React15, { forwardRef as forwardRef7, useContext as useContext3 } from "react";
496
562
 
497
563
  // src/elements/video/html-video.tsx
498
- import React11 from "react";
564
+ import React12 from "react";
499
565
  function HTMLVideo(props) {
500
566
  let { src, type, controls, autoPlay, loop, muted } = props;
501
- return /* @__PURE__ */ React11.createElement(
567
+ return /* @__PURE__ */ React12.createElement(
502
568
  "video",
503
569
  {
504
570
  controls,
@@ -508,23 +574,23 @@ function HTMLVideo(props) {
508
574
  controlsList: "nodownload",
509
575
  disablePictureInPicture: true
510
576
  },
511
- /* @__PURE__ */ React11.createElement("source", { src, type: type || "video/mp4" }),
512
- /* @__PURE__ */ React11.createElement("source", { src, type: "video/ogg" }),
577
+ /* @__PURE__ */ React12.createElement("source", { src, type: type || "video/mp4" }),
578
+ /* @__PURE__ */ React12.createElement("source", { src, type: "video/ogg" }),
513
579
  "Your browser does not support the video tag."
514
580
  );
515
581
  }
516
582
 
517
583
  // src/elements/video/vimeo.tsx
518
- import React12 from "react";
584
+ import React13 from "react";
519
585
  function Vimeo(props) {
520
586
  let { vimeoId, controls, autoPlay, loop, muted } = props;
521
587
  let params = `autoplay=${autoPlay}&loop=${loop}&controls=${controls}&muted=${muted}`;
522
588
  let vimeoSrc = `https://player.vimeo.com/video/${vimeoId}?${params}`;
523
- return /* @__PURE__ */ React12.createElement("iframe", { src: vimeoSrc, width: "100%", height: "100%", allowFullScreen: true });
589
+ return /* @__PURE__ */ React13.createElement("iframe", { src: vimeoSrc, width: "100%", height: "100%", allowFullScreen: true });
524
590
  }
525
591
 
526
592
  // src/elements/video/youtube.tsx
527
- import React13 from "react";
593
+ import React14 from "react";
528
594
  function Youtube(props) {
529
595
  let { youtubeId, controls, autoPlay, loop, muted } = props;
530
596
  let params = new URLSearchParams({
@@ -535,7 +601,7 @@ function Youtube(props) {
535
601
  });
536
602
  let youtubeSrc = `https://www.youtube.com/embed/${youtubeId}?playlist=${youtubeId}&${params.toString()}`;
537
603
  let allow = `accelerometer;${autoPlay ? "autoplay;" : ""} clipboard-write; encrypted-media; gyroscope; picture-in-picture`;
538
- return /* @__PURE__ */ React13.createElement("iframe", { src: youtubeSrc, width: "100%", height: "100%", allow });
604
+ return /* @__PURE__ */ React14.createElement("iframe", { src: youtubeSrc, width: "100%", height: "100%", allow });
539
605
  }
540
606
 
541
607
  // src/elements/video/index.tsx
@@ -556,15 +622,15 @@ var Video = forwardRef7((props, ref) => {
556
622
  let youtubeId = getYoutubeEmbedId(src);
557
623
  let vimeoId = getVimeoId(src);
558
624
  if (youtubeId) {
559
- content = /* @__PURE__ */ React14.createElement(Youtube, { ...videoProps, youtubeId });
625
+ content = /* @__PURE__ */ React15.createElement(Youtube, { ...videoProps, youtubeId });
560
626
  } else if (vimeoId) {
561
- content = /* @__PURE__ */ React14.createElement(Vimeo, { ...videoProps, vimeoId });
627
+ content = /* @__PURE__ */ React15.createElement(Vimeo, { ...videoProps, vimeoId });
562
628
  } else {
563
- content = /* @__PURE__ */ React14.createElement(HTMLVideo, { ...videoProps });
629
+ content = /* @__PURE__ */ React15.createElement(HTMLVideo, { ...videoProps });
564
630
  }
565
- return /* @__PURE__ */ React14.createElement("div", { ref, ...rest }, content);
631
+ return /* @__PURE__ */ React15.createElement("div", { ref, ...rest }, content);
566
632
  });
567
- var css8 = {
633
+ var css9 = {
568
634
  "@desktop": {
569
635
  video: {
570
636
  height: "100%",
@@ -591,18 +657,23 @@ Video.defaultProps = {
591
657
  };
592
658
  var video_default = Video;
593
659
 
594
- // src/elements/slideshow/index.tsx
595
- import { css as stitchesCss } from "@stitches/react";
596
- import clsx5 from "clsx";
597
- import React20, { forwardRef as forwardRef8 } from "react";
660
+ // src/elements/instagram.tsx
661
+ import React25, { forwardRef as forwardRef10, useEffect as useEffect3, useState as useState3 } from "react";
598
662
 
599
- // src/components/slider/arrows.tsx
600
- import { styled } from "@stitches/react";
601
- import clsx2 from "clsx";
602
- import React17 from "react";
663
+ // src/components/modal/index.tsx
664
+ var modal_exports = {};
665
+ __export(modal_exports, {
666
+ Modal: () => Modal,
667
+ ModalClose: () => ModalClose,
668
+ ModalContent: () => ModalContent,
669
+ ModalHeader: () => ModalHeader,
670
+ ModalTrigger: () => ModalTrigger
671
+ });
672
+ import { Close, Portal, Root, Trigger } from "@radix-ui/react-dialog";
673
+ import React18, { forwardRef as forwardRef8 } from "react";
603
674
 
604
675
  // src/components/icons/index.tsx
605
- import React16 from "react";
676
+ import React17 from "react";
606
677
 
607
678
  // src/components/icons/phosphor.tsx
608
679
  var phosphor_exports = {};
@@ -612,8 +683,10 @@ __export(phosphor_exports, {
612
683
  Backpack: () => Backpack,
613
684
  CaretLeft: () => CaretLeft,
614
685
  CaretRight: () => CaretRight,
686
+ Circle: () => Circle,
615
687
  CircleNotch: () => CircleNotch,
616
688
  Eye: () => Eye,
689
+ HandBag: () => HandBag,
617
690
  Image: () => Image2,
618
691
  Minus: () => Minus,
619
692
  Newspaper: () => Newspaper,
@@ -621,11 +694,27 @@ __export(phosphor_exports, {
621
694
  Plus: () => Plus,
622
695
  ShoppingCart: () => ShoppingCart,
623
696
  Storefront: () => Storefront,
697
+ Tag: () => Tag,
624
698
  X: () => X
625
699
  });
626
- import React15 from "react";
700
+ import React16 from "react";
701
+ var Circle = (props) => {
702
+ return /* @__PURE__ */ React16.createElement(
703
+ "svg",
704
+ {
705
+ xmlns: "http://www.w3.org/2000/svg",
706
+ width: "192",
707
+ height: "192",
708
+ fill: "currentColor",
709
+ viewBox: "0 0 256 256",
710
+ ...props
711
+ },
712
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
713
+ /* @__PURE__ */ React16.createElement("circle", { cx: "128", cy: "128", r: "104" })
714
+ );
715
+ };
627
716
  var CircleNotch = (props) => {
628
- return /* @__PURE__ */ React15.createElement(
717
+ return /* @__PURE__ */ React16.createElement(
629
718
  "svg",
630
719
  {
631
720
  xmlns: "http://www.w3.org/2000/svg",
@@ -633,7 +722,7 @@ var CircleNotch = (props) => {
633
722
  viewBox: "0 0 24 24",
634
723
  ...props
635
724
  },
636
- /* @__PURE__ */ React15.createElement(
725
+ /* @__PURE__ */ React16.createElement(
637
726
  "circle",
638
727
  {
639
728
  style: { opacity: ".25" },
@@ -644,7 +733,7 @@ var CircleNotch = (props) => {
644
733
  strokeWidth: "4"
645
734
  }
646
735
  ),
647
- /* @__PURE__ */ React15.createElement(
736
+ /* @__PURE__ */ React16.createElement(
648
737
  "path",
649
738
  {
650
739
  style: { opacity: ".75" },
@@ -655,7 +744,7 @@ var CircleNotch = (props) => {
655
744
  );
656
745
  };
657
746
  var X = (props) => {
658
- return /* @__PURE__ */ React15.createElement(
747
+ return /* @__PURE__ */ React16.createElement(
659
748
  "svg",
660
749
  {
661
750
  xmlns: "http://www.w3.org/2000/svg",
@@ -665,8 +754,8 @@ var X = (props) => {
665
754
  viewBox: "0 0 256 256",
666
755
  ...props
667
756
  },
668
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
669
- /* @__PURE__ */ React15.createElement(
757
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
758
+ /* @__PURE__ */ React16.createElement(
670
759
  "line",
671
760
  {
672
761
  x1: "200",
@@ -680,7 +769,7 @@ var X = (props) => {
680
769
  strokeWidth: "12"
681
770
  }
682
771
  ),
683
- /* @__PURE__ */ React15.createElement(
772
+ /* @__PURE__ */ React16.createElement(
684
773
  "line",
685
774
  {
686
775
  x1: "200",
@@ -697,37 +786,77 @@ var X = (props) => {
697
786
  );
698
787
  };
699
788
  var Minus = (props) => {
700
- return /* @__PURE__ */ React15.createElement(
789
+ return /* @__PURE__ */ React16.createElement(
701
790
  "svg",
702
791
  {
703
- width: "196",
704
- height: "196",
705
- fill: "currentColor",
706
- stroke: "currentColor",
707
792
  xmlns: "http://www.w3.org/2000/svg",
708
- viewBox: "0 0 384 512",
793
+ width: "192",
794
+ height: "192",
795
+ fill: "currentColor",
796
+ viewBox: "0 0 256 256",
709
797
  ...props
710
798
  },
711
- /* @__PURE__ */ React15.createElement("path", { 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" })
799
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
800
+ /* @__PURE__ */ React16.createElement(
801
+ "line",
802
+ {
803
+ x1: "40",
804
+ y1: "128",
805
+ x2: "216",
806
+ y2: "128",
807
+ fill: "none",
808
+ stroke: "currentColor",
809
+ strokeLinecap: "round",
810
+ strokeLinejoin: "round",
811
+ strokeWidth: "16"
812
+ }
813
+ )
712
814
  );
713
815
  };
714
816
  var Plus = (props) => {
715
- return /* @__PURE__ */ React15.createElement(
817
+ return /* @__PURE__ */ React16.createElement(
716
818
  "svg",
717
819
  {
718
- width: "196",
719
- height: "196",
720
- fill: "currentColor",
721
- stroke: "currentColor",
722
820
  xmlns: "http://www.w3.org/2000/svg",
723
- viewBox: "0 0 384 512",
821
+ width: "192",
822
+ height: "192",
823
+ fill: "currentColor",
824
+ viewBox: "0 0 256 256",
724
825
  ...props
725
826
  },
726
- /* @__PURE__ */ React15.createElement("path", { 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" })
827
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
828
+ /* @__PURE__ */ React16.createElement(
829
+ "line",
830
+ {
831
+ x1: "40",
832
+ y1: "128",
833
+ x2: "216",
834
+ y2: "128",
835
+ fill: "none",
836
+ stroke: "currentColor",
837
+ strokeLinecap: "round",
838
+ strokeLinejoin: "round",
839
+ strokeWidth: "16"
840
+ }
841
+ ),
842
+ /* @__PURE__ */ React16.createElement(
843
+ "line",
844
+ {
845
+ x1: "128",
846
+ y1: "40",
847
+ x2: "128",
848
+ y2: "216",
849
+ fill: "none",
850
+ stroke: "currentColor",
851
+ strokeLinecap: "round",
852
+ strokeLinejoin: "round",
853
+ strokeWidth: "16"
854
+ }
855
+ )
727
856
  );
728
857
  };
729
858
  var CaretLeft = (props) => {
730
- return /* @__PURE__ */ React15.createElement(
859
+ return /* @__PURE__ */ React16.createElement(
731
860
  "svg",
732
861
  {
733
862
  xmlns: "http://www.w3.org/2000/svg",
@@ -737,8 +866,8 @@ var CaretLeft = (props) => {
737
866
  viewBox: "0 0 256 256",
738
867
  ...props
739
868
  },
740
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
741
- /* @__PURE__ */ React15.createElement(
869
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
870
+ /* @__PURE__ */ React16.createElement(
742
871
  "polyline",
743
872
  {
744
873
  points: "160 208 80 128 160 48",
@@ -752,7 +881,7 @@ var CaretLeft = (props) => {
752
881
  );
753
882
  };
754
883
  var CaretRight = (props) => {
755
- return /* @__PURE__ */ React15.createElement(
884
+ return /* @__PURE__ */ React16.createElement(
756
885
  "svg",
757
886
  {
758
887
  xmlns: "http://www.w3.org/2000/svg",
@@ -762,8 +891,8 @@ var CaretRight = (props) => {
762
891
  viewBox: "0 0 256 256",
763
892
  ...props
764
893
  },
765
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
766
- /* @__PURE__ */ React15.createElement(
894
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
895
+ /* @__PURE__ */ React16.createElement(
767
896
  "polyline",
768
897
  {
769
898
  points: "96 48 176 128 96 208",
@@ -777,7 +906,7 @@ var CaretRight = (props) => {
777
906
  );
778
907
  };
779
908
  var ArrowLeft = (props) => {
780
- return /* @__PURE__ */ React15.createElement(
909
+ return /* @__PURE__ */ React16.createElement(
781
910
  "svg",
782
911
  {
783
912
  xmlns: "http://www.w3.org/2000/svg",
@@ -787,8 +916,8 @@ var ArrowLeft = (props) => {
787
916
  viewBox: "0 0 256 256",
788
917
  ...props
789
918
  },
790
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
791
- /* @__PURE__ */ React15.createElement(
919
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
920
+ /* @__PURE__ */ React16.createElement(
792
921
  "line",
793
922
  {
794
923
  x1: "216",
@@ -802,7 +931,7 @@ var ArrowLeft = (props) => {
802
931
  strokeWidth: "16"
803
932
  }
804
933
  ),
805
- /* @__PURE__ */ React15.createElement(
934
+ /* @__PURE__ */ React16.createElement(
806
935
  "polyline",
807
936
  {
808
937
  points: "112 56 40 128 112 200",
@@ -816,7 +945,7 @@ var ArrowLeft = (props) => {
816
945
  );
817
946
  };
818
947
  var ArrowRight = (props) => {
819
- return /* @__PURE__ */ React15.createElement(
948
+ return /* @__PURE__ */ React16.createElement(
820
949
  "svg",
821
950
  {
822
951
  xmlns: "http://www.w3.org/2000/svg",
@@ -826,8 +955,8 @@ var ArrowRight = (props) => {
826
955
  viewBox: "0 0 256 256",
827
956
  ...props
828
957
  },
829
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
830
- /* @__PURE__ */ React15.createElement(
958
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
959
+ /* @__PURE__ */ React16.createElement(
831
960
  "line",
832
961
  {
833
962
  x1: "40",
@@ -841,7 +970,7 @@ var ArrowRight = (props) => {
841
970
  strokeWidth: "16"
842
971
  }
843
972
  ),
844
- /* @__PURE__ */ React15.createElement(
973
+ /* @__PURE__ */ React16.createElement(
845
974
  "polyline",
846
975
  {
847
976
  points: "144 56 216 128 144 200",
@@ -855,7 +984,7 @@ var ArrowRight = (props) => {
855
984
  );
856
985
  };
857
986
  var Image2 = (props) => {
858
- return /* @__PURE__ */ React15.createElement(
987
+ return /* @__PURE__ */ React16.createElement(
859
988
  "svg",
860
989
  {
861
990
  xmlns: "http://www.w3.org/2000/svg",
@@ -864,11 +993,11 @@ var Image2 = (props) => {
864
993
  viewBox: "0 0 640 512",
865
994
  ...props
866
995
  },
867
- /* @__PURE__ */ React15.createElement("path", { 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" })
996
+ /* @__PURE__ */ React16.createElement("path", { 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" })
868
997
  );
869
998
  };
870
999
  var ShoppingCart = (props) => {
871
- return /* @__PURE__ */ React15.createElement(
1000
+ return /* @__PURE__ */ React16.createElement(
872
1001
  "svg",
873
1002
  {
874
1003
  xmlns: "http://www.w3.org/2000/svg",
@@ -878,8 +1007,8 @@ var ShoppingCart = (props) => {
878
1007
  viewBox: "0 0 256 256",
879
1008
  ...props
880
1009
  },
881
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
882
- /* @__PURE__ */ React15.createElement(
1010
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1011
+ /* @__PURE__ */ React16.createElement(
883
1012
  "path",
884
1013
  {
885
1014
  d: "M184,184H69.8L41.9,30.6A8,8,0,0,0,34.1,24H16",
@@ -890,7 +1019,7 @@ var ShoppingCart = (props) => {
890
1019
  strokeWidth: "16"
891
1020
  }
892
1021
  ),
893
- /* @__PURE__ */ React15.createElement(
1022
+ /* @__PURE__ */ React16.createElement(
894
1023
  "circle",
895
1024
  {
896
1025
  cx: "80",
@@ -903,7 +1032,7 @@ var ShoppingCart = (props) => {
903
1032
  strokeWidth: "16"
904
1033
  }
905
1034
  ),
906
- /* @__PURE__ */ React15.createElement(
1035
+ /* @__PURE__ */ React16.createElement(
907
1036
  "circle",
908
1037
  {
909
1038
  cx: "184",
@@ -916,7 +1045,7 @@ var ShoppingCart = (props) => {
916
1045
  strokeWidth: "16"
917
1046
  }
918
1047
  ),
919
- /* @__PURE__ */ React15.createElement(
1048
+ /* @__PURE__ */ React16.createElement(
920
1049
  "path",
921
1050
  {
922
1051
  d: "M62.5,144H188.1a15.9,15.9,0,0,0,15.7-13.1L216,64H48",
@@ -930,7 +1059,7 @@ var ShoppingCart = (props) => {
930
1059
  );
931
1060
  };
932
1061
  var Storefront = (props) => {
933
- return /* @__PURE__ */ React15.createElement(
1062
+ return /* @__PURE__ */ React16.createElement(
934
1063
  "svg",
935
1064
  {
936
1065
  xmlns: "http://www.w3.org/2000/svg",
@@ -940,8 +1069,8 @@ var Storefront = (props) => {
940
1069
  viewBox: "0 0 256 256",
941
1070
  ...props
942
1071
  },
943
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
944
- /* @__PURE__ */ React15.createElement(
1072
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1073
+ /* @__PURE__ */ React16.createElement(
945
1074
  "path",
946
1075
  {
947
1076
  d: "M48,139.6V208a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V139.6",
@@ -952,7 +1081,7 @@ var Storefront = (props) => {
952
1081
  strokeWidth: "12"
953
1082
  }
954
1083
  ),
955
- /* @__PURE__ */ React15.createElement(
1084
+ /* @__PURE__ */ React16.createElement(
956
1085
  "path",
957
1086
  {
958
1087
  d: "M54,40H202a8.1,8.1,0,0,1,7.7,5.8L224,96H32L46.3,45.8A8.1,8.1,0,0,1,54,40Z",
@@ -963,7 +1092,7 @@ var Storefront = (props) => {
963
1092
  strokeWidth: "12"
964
1093
  }
965
1094
  ),
966
- /* @__PURE__ */ React15.createElement(
1095
+ /* @__PURE__ */ React16.createElement(
967
1096
  "path",
968
1097
  {
969
1098
  d: "M96,96v16a32,32,0,0,1-64,0V96",
@@ -974,7 +1103,7 @@ var Storefront = (props) => {
974
1103
  strokeWidth: "12"
975
1104
  }
976
1105
  ),
977
- /* @__PURE__ */ React15.createElement(
1106
+ /* @__PURE__ */ React16.createElement(
978
1107
  "path",
979
1108
  {
980
1109
  d: "M160,96v16a32,32,0,0,1-64,0V96",
@@ -985,7 +1114,7 @@ var Storefront = (props) => {
985
1114
  strokeWidth: "12"
986
1115
  }
987
1116
  ),
988
- /* @__PURE__ */ React15.createElement(
1117
+ /* @__PURE__ */ React16.createElement(
989
1118
  "path",
990
1119
  {
991
1120
  d: "M224,96v16a32,32,0,0,1-64,0V96",
@@ -999,7 +1128,7 @@ var Storefront = (props) => {
999
1128
  );
1000
1129
  };
1001
1130
  var Package = (props) => {
1002
- return /* @__PURE__ */ React15.createElement(
1131
+ return /* @__PURE__ */ React16.createElement(
1003
1132
  "svg",
1004
1133
  {
1005
1134
  xmlns: "http://www.w3.org/2000/svg",
@@ -1009,8 +1138,8 @@ var Package = (props) => {
1009
1138
  viewBox: "0 0 256 256",
1010
1139
  ...props
1011
1140
  },
1012
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
1013
- /* @__PURE__ */ React15.createElement(
1141
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1142
+ /* @__PURE__ */ React16.createElement(
1014
1143
  "path",
1015
1144
  {
1016
1145
  d: "M224,177.3V78.7a8.1,8.1,0,0,0-4.1-7l-88-49.5a7.8,7.8,0,0,0-7.8,0l-88,49.5a8.1,8.1,0,0,0-4.1,7v98.6a8.1,8.1,0,0,0,4.1,7l88,49.5a7.8,7.8,0,0,0,7.8,0l88-49.5A8.1,8.1,0,0,0,224,177.3Z",
@@ -1021,7 +1150,7 @@ var Package = (props) => {
1021
1150
  strokeWidth: "8"
1022
1151
  }
1023
1152
  ),
1024
- /* @__PURE__ */ React15.createElement(
1153
+ /* @__PURE__ */ React16.createElement(
1025
1154
  "polyline",
1026
1155
  {
1027
1156
  points: "177 152.5 177 100.5 80 47",
@@ -1032,7 +1161,7 @@ var Package = (props) => {
1032
1161
  strokeWidth: "8"
1033
1162
  }
1034
1163
  ),
1035
- /* @__PURE__ */ React15.createElement(
1164
+ /* @__PURE__ */ React16.createElement(
1036
1165
  "polyline",
1037
1166
  {
1038
1167
  points: "222.9 74.6 128.9 128 33.1 74.6",
@@ -1043,7 +1172,7 @@ var Package = (props) => {
1043
1172
  strokeWidth: "8"
1044
1173
  }
1045
1174
  ),
1046
- /* @__PURE__ */ React15.createElement(
1175
+ /* @__PURE__ */ React16.createElement(
1047
1176
  "line",
1048
1177
  {
1049
1178
  x1: "128.9",
@@ -1059,8 +1188,70 @@ var Package = (props) => {
1059
1188
  )
1060
1189
  );
1061
1190
  };
1191
+ var HandBag = (props) => {
1192
+ return /* @__PURE__ */ React16.createElement(
1193
+ "svg",
1194
+ {
1195
+ xmlns: "http://www.w3.org/2000/svg",
1196
+ width: "192",
1197
+ height: "192",
1198
+ fill: "currentColor",
1199
+ viewBox: "0 0 256 256",
1200
+ ...props
1201
+ },
1202
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1203
+ /* @__PURE__ */ React16.createElement(
1204
+ "path",
1205
+ {
1206
+ d: "M208.8,72H47.2a8.1,8.1,0,0,0-8,7.1L25,207.1a8,8,0,0,0,7.9,8.9H223.1a8,8,0,0,0,7.9-8.9l-14.2-128A8.1,8.1,0,0,0,208.8,72Z",
1207
+ fill: "none",
1208
+ stroke: "currentColor",
1209
+ strokeLinecap: "round",
1210
+ strokeLinejoin: "round",
1211
+ strokeWidth: "16"
1212
+ }
1213
+ ),
1214
+ /* @__PURE__ */ React16.createElement(
1215
+ "path",
1216
+ {
1217
+ d: "M88,104V72a40,40,0,0,1,80,0v32",
1218
+ fill: "none",
1219
+ stroke: "currentColor",
1220
+ strokeLinecap: "round",
1221
+ strokeLinejoin: "round",
1222
+ strokeWidth: "16"
1223
+ }
1224
+ )
1225
+ );
1226
+ };
1227
+ var Tag = (props) => {
1228
+ return /* @__PURE__ */ React16.createElement(
1229
+ "svg",
1230
+ {
1231
+ xmlns: "http://www.w3.org/2000/svg",
1232
+ width: "192",
1233
+ height: "192",
1234
+ fill: "currentColor",
1235
+ viewBox: "0 0 256 256",
1236
+ ...props
1237
+ },
1238
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1239
+ /* @__PURE__ */ React16.createElement(
1240
+ "path",
1241
+ {
1242
+ d: "M122.7,25.9,42,42,25.9,122.7a8,8,0,0,0,2.2,7.2L132.5,234.3a7.9,7.9,0,0,0,11.3,0l90.5-90.5a7.9,7.9,0,0,0,0-11.3L129.9,28.1A8,8,0,0,0,122.7,25.9Z",
1243
+ fill: "none",
1244
+ stroke: "currentColor",
1245
+ strokeLinecap: "round",
1246
+ strokeLinejoin: "round",
1247
+ strokeWidth: "16"
1248
+ }
1249
+ ),
1250
+ /* @__PURE__ */ React16.createElement("circle", { cx: "84", cy: "84", r: "12" })
1251
+ );
1252
+ };
1062
1253
  var Backpack = (props) => {
1063
- return /* @__PURE__ */ React15.createElement(
1254
+ return /* @__PURE__ */ React16.createElement(
1064
1255
  "svg",
1065
1256
  {
1066
1257
  xmlns: "http://www.w3.org/2000/svg",
@@ -1070,8 +1261,8 @@ var Backpack = (props) => {
1070
1261
  viewBox: "0 0 256 256",
1071
1262
  ...props
1072
1263
  },
1073
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
1074
- /* @__PURE__ */ React15.createElement(
1264
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1265
+ /* @__PURE__ */ React16.createElement(
1075
1266
  "path",
1076
1267
  {
1077
1268
  d: "M96,48h64a48,48,0,0,1,48,48V216a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V96A48,48,0,0,1,96,48Z",
@@ -1082,7 +1273,7 @@ var Backpack = (props) => {
1082
1273
  strokeWidth: "12"
1083
1274
  }
1084
1275
  ),
1085
- /* @__PURE__ */ React15.createElement(
1276
+ /* @__PURE__ */ React16.createElement(
1086
1277
  "path",
1087
1278
  {
1088
1279
  d: "M80,224V152a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v72",
@@ -1093,7 +1284,7 @@ var Backpack = (props) => {
1093
1284
  strokeWidth: "12"
1094
1285
  }
1095
1286
  ),
1096
- /* @__PURE__ */ React15.createElement(
1287
+ /* @__PURE__ */ React16.createElement(
1097
1288
  "path",
1098
1289
  {
1099
1290
  d: "M96,48V32a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V48",
@@ -1104,7 +1295,7 @@ var Backpack = (props) => {
1104
1295
  strokeWidth: "12"
1105
1296
  }
1106
1297
  ),
1107
- /* @__PURE__ */ React15.createElement(
1298
+ /* @__PURE__ */ React16.createElement(
1108
1299
  "line",
1109
1300
  {
1110
1301
  x1: "112",
@@ -1118,7 +1309,7 @@ var Backpack = (props) => {
1118
1309
  strokeWidth: "12"
1119
1310
  }
1120
1311
  ),
1121
- /* @__PURE__ */ React15.createElement(
1312
+ /* @__PURE__ */ React16.createElement(
1122
1313
  "line",
1123
1314
  {
1124
1315
  x1: "80",
@@ -1132,7 +1323,7 @@ var Backpack = (props) => {
1132
1323
  strokeWidth: "12"
1133
1324
  }
1134
1325
  ),
1135
- /* @__PURE__ */ React15.createElement(
1326
+ /* @__PURE__ */ React16.createElement(
1136
1327
  "line",
1137
1328
  {
1138
1329
  x1: "144",
@@ -1149,7 +1340,7 @@ var Backpack = (props) => {
1149
1340
  );
1150
1341
  };
1151
1342
  var Newspaper = (props) => {
1152
- return /* @__PURE__ */ React15.createElement(
1343
+ return /* @__PURE__ */ React16.createElement(
1153
1344
  "svg",
1154
1345
  {
1155
1346
  xmlns: "http://www.w3.org/2000/svg",
@@ -1159,8 +1350,8 @@ var Newspaper = (props) => {
1159
1350
  viewBox: "0 0 256 256",
1160
1351
  ...props
1161
1352
  },
1162
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
1163
- /* @__PURE__ */ React15.createElement(
1353
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1354
+ /* @__PURE__ */ React16.createElement(
1164
1355
  "line",
1165
1356
  {
1166
1357
  x1: "96",
@@ -1174,7 +1365,7 @@ var Newspaper = (props) => {
1174
1365
  strokeWidth: "8"
1175
1366
  }
1176
1367
  ),
1177
- /* @__PURE__ */ React15.createElement(
1368
+ /* @__PURE__ */ React16.createElement(
1178
1369
  "line",
1179
1370
  {
1180
1371
  x1: "96",
@@ -1188,7 +1379,7 @@ var Newspaper = (props) => {
1188
1379
  strokeWidth: "8"
1189
1380
  }
1190
1381
  ),
1191
- /* @__PURE__ */ React15.createElement(
1382
+ /* @__PURE__ */ React16.createElement(
1192
1383
  "path",
1193
1384
  {
1194
1385
  d: "M32,200a16,16,0,0,0,16-16V64a8,8,0,0,1,8-8H216a8,8,0,0,1,8,8V184a16,16,0,0,1-16,16Z",
@@ -1199,7 +1390,7 @@ var Newspaper = (props) => {
1199
1390
  strokeWidth: "8"
1200
1391
  }
1201
1392
  ),
1202
- /* @__PURE__ */ React15.createElement(
1393
+ /* @__PURE__ */ React16.createElement(
1203
1394
  "path",
1204
1395
  {
1205
1396
  d: "M32,200a16,16,0,0,1-16-16h0V88",
@@ -1213,7 +1404,7 @@ var Newspaper = (props) => {
1213
1404
  );
1214
1405
  };
1215
1406
  var Eye = (props) => {
1216
- return /* @__PURE__ */ React15.createElement(
1407
+ return /* @__PURE__ */ React16.createElement(
1217
1408
  "svg",
1218
1409
  {
1219
1410
  xmlns: "http://www.w3.org/2000/svg",
@@ -1223,8 +1414,8 @@ var Eye = (props) => {
1223
1414
  viewBox: "0 0 256 256",
1224
1415
  ...props
1225
1416
  },
1226
- /* @__PURE__ */ React15.createElement("rect", { width: "256", height: "256", fill: "none" }),
1227
- /* @__PURE__ */ React15.createElement(
1417
+ /* @__PURE__ */ React16.createElement("rect", { width: "256", height: "256", fill: "none" }),
1418
+ /* @__PURE__ */ React16.createElement(
1228
1419
  "path",
1229
1420
  {
1230
1421
  d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
@@ -1235,7 +1426,7 @@ var Eye = (props) => {
1235
1426
  strokeWidth: "12"
1236
1427
  }
1237
1428
  ),
1238
- /* @__PURE__ */ React15.createElement(
1429
+ /* @__PURE__ */ React16.createElement(
1239
1430
  "circle",
1240
1431
  {
1241
1432
  cx: "128",
@@ -1256,101 +1447,344 @@ import clsx from "clsx";
1256
1447
  function Icon({ name, className, ...props }) {
1257
1448
  let WeaverseIcon = phosphor_exports[name];
1258
1449
  let cls = clsx("wv-icon", className);
1259
- return /* @__PURE__ */ React16.createElement(WeaverseIcon, { className: cls, ...props });
1450
+ return /* @__PURE__ */ React17.createElement(WeaverseIcon, { className: cls, ...props });
1260
1451
  }
1261
1452
 
1262
- // src/components/slider/arrows.tsx
1263
- function Arrows(props) {
1264
- let { currentSlide, instanceRef, className, icon, offset } = props;
1265
- let isFirst = currentSlide === 0;
1266
- let isLast = false;
1267
- if (instanceRef.current) {
1268
- isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1269
- }
1270
- let style = {
1271
- "--offset": `${offset}px`
1272
- };
1273
- return /* @__PURE__ */ React17.createElement(StyledArrows, { className, style }, /* @__PURE__ */ React17.createElement(
1274
- "button",
1275
- {
1276
- type: "button",
1277
- className: clsx2("arrow arrow--left", isFirst && "arrow--disabled"),
1278
- onClick: (e) => {
1279
- e.stopPropagation();
1280
- instanceRef?.current?.prev();
1281
- }
1282
- },
1283
- /* @__PURE__ */ React17.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1284
- ), /* @__PURE__ */ React17.createElement(
1285
- "button",
1286
- {
1287
- type: "button",
1288
- className: clsx2("arrow arrow--right", isLast && "arrow--disabled"),
1289
- onClick: (e) => {
1290
- e.stopPropagation();
1291
- instanceRef?.current?.next();
1292
- }
1293
- },
1294
- /* @__PURE__ */ React17.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1295
- ));
1296
- }
1297
- var StyledArrows = styled("div", {
1298
- ".arrow": {
1299
- position: "absolute",
1300
- top: "50%",
1301
- transform: "translateY(-50%)",
1302
- width: "44px",
1303
- height: "44px",
1304
- padding: "8px",
1305
- color: "#191919",
1306
- backgroundColor: "#f2f2f2",
1307
- textAlign: "center",
1308
- transition: "all 0.2s ease-in-out",
1309
- borderRadius: "4px",
1310
- border: "none",
1311
- cursor: "pointer",
1312
- "&:hover": {
1313
- backgroundColor: "#191919",
1314
- color: "#f2f2f2"
1315
- },
1316
- svg: {
1317
- verticalAlign: "middle",
1318
- width: "22px",
1319
- height: "22px"
1320
- },
1321
- "&.arrow--left": {
1322
- left: "var(--offset, 0px)"
1323
- },
1324
- "&.arrow--right": {
1325
- right: "var(--offset, 0px)"
1326
- },
1327
- "&.arrow--disabled": {
1328
- opacity: 0.5
1329
- }
1330
- },
1331
- "@media (max-width: 768px)": {
1332
- ".arrow": {
1333
- display: "none"
1334
- }
1335
- }
1453
+ // src/components/modal/styled.ts
1454
+ import { Content, Overlay as Overlay2, Title } from "@radix-ui/react-dialog";
1455
+ import { keyframes, styled } from "@stitches/react";
1456
+ var overlayShow = keyframes({
1457
+ "0%": { opacity: 0 },
1458
+ "100%": { opacity: 1 }
1459
+ });
1460
+ var contentShow = keyframes({
1461
+ "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
1462
+ "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
1463
+ });
1464
+ var StyledOverlay = styled(Overlay2, {
1465
+ display: "block !important",
1466
+ backgroundColor: "rgba(0, 0, 0, .3)",
1467
+ position: "fixed",
1468
+ zIndex: 99999,
1469
+ inset: 0,
1470
+ animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1471
+ });
1472
+ var StyledTitle = styled(Title, {
1473
+ margin: "0 0 24px",
1474
+ fontWeight: 500,
1475
+ fontSize: 24,
1476
+ "@media (max-width: 768px)": {
1477
+ margin: "0 0 16px",
1478
+ fontSize: 20
1479
+ }
1480
+ });
1481
+ var StyledContent = styled(Content, {
1482
+ backgroundColor: "white",
1483
+ borderRadius: 6,
1484
+ boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
1485
+ position: "fixed",
1486
+ top: "50%",
1487
+ left: "50%",
1488
+ transform: "translate(-50%, -50%)",
1489
+ padding: 24,
1490
+ animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
1491
+ zIndex: 99999,
1492
+ maxWidth: "90vw",
1493
+ width: "auto",
1494
+ "*": {
1495
+ maxWidth: "100%"
1496
+ },
1497
+ "&:focus": { outline: "none" },
1498
+ '&[data-size="fullscreen"]': {
1499
+ width: "100vw",
1500
+ height: "100vh",
1501
+ maxWidth: "100vw",
1502
+ borderRadius: 0
1503
+ },
1504
+ "@media (max-width: 768px)": {
1505
+ width: "90vw",
1506
+ padding: 12,
1507
+ '&[data-size="fullscreen"]': {
1508
+ width: "100vw"
1509
+ }
1510
+ }
1511
+ });
1512
+ var StyledCloseIcon = styled("button", {
1513
+ all: "unset",
1514
+ cursor: "pointer",
1515
+ fontFamily: "inherit",
1516
+ borderRadius: "100%",
1517
+ height: 32,
1518
+ width: 32,
1519
+ padding: 4,
1520
+ display: "inline-flex",
1521
+ alignItems: "center",
1522
+ justifyContent: "center",
1523
+ color: "rgb(55, 65, 81)",
1524
+ position: "absolute",
1525
+ top: 8,
1526
+ right: 8,
1527
+ "&:hover": {
1528
+ backgroundColor: "rgba(112, 112, 112, .1)"
1529
+ },
1530
+ svg: {
1531
+ width: 24,
1532
+ height: 24
1533
+ }
1336
1534
  });
1337
1535
 
1338
- // src/components/slider/dots.tsx
1339
- import { styled as styled2 } from "@stitches/react";
1536
+ // src/components/modal/use-open-change-effect.ts
1537
+ import { useContext as useContext4, useEffect as useEffect2 } from "react";
1538
+ function useOpenChangeEffect(props) {
1539
+ let { open, defaultOpen, onOpenChange } = props;
1540
+ let rootCtx = useContext4(WeaverseContext);
1541
+ let toggleRootzIndex = (open2) => {
1542
+ let { contentRootElement } = rootCtx;
1543
+ if (contentRootElement) {
1544
+ if (open2) {
1545
+ contentRootElement.classList.add("modal-open");
1546
+ } else {
1547
+ contentRootElement.classList.remove("modal-open");
1548
+ }
1549
+ }
1550
+ };
1551
+ useEffect2(() => {
1552
+ let isOpen = open || defaultOpen;
1553
+ toggleRootzIndex(isOpen);
1554
+ }, [open, defaultOpen]);
1555
+ let handleOpenChange = (open2) => {
1556
+ toggleRootzIndex(open2);
1557
+ onOpenChange?.(open2);
1558
+ };
1559
+ return handleOpenChange;
1560
+ }
1561
+
1562
+ // src/components/modal/index.tsx
1563
+ var Modal = (props) => {
1564
+ let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1565
+ let handleOpenChange = useOpenChangeEffect(props);
1566
+ return /* @__PURE__ */ React18.createElement(
1567
+ Root,
1568
+ {
1569
+ open,
1570
+ defaultOpen,
1571
+ onOpenChange: handleOpenChange,
1572
+ ...rest
1573
+ },
1574
+ children
1575
+ );
1576
+ };
1577
+ var ModalTrigger = Trigger;
1578
+ var ModalHeader = forwardRef8(
1579
+ (props, ref) => {
1580
+ let { children, ...rest } = props;
1581
+ return /* @__PURE__ */ React18.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
1582
+ }
1583
+ );
1584
+ var ModalContent = forwardRef8(
1585
+ (props, ref) => {
1586
+ let { children, size, portal, ...rest } = props;
1587
+ let modalContent = /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(StyledOverlay, null), /* @__PURE__ */ React18.createElement(
1588
+ StyledContent,
1589
+ {
1590
+ ...rest,
1591
+ onCloseAutoFocus: (e) => e.preventDefault(),
1592
+ "data-wv-modal": true,
1593
+ "data-size": size,
1594
+ ref
1595
+ },
1596
+ /* @__PURE__ */ React18.createElement(ModalClose, null),
1597
+ /* @__PURE__ */ React18.createElement("div", { className: "wv-modal-content" }, children)
1598
+ ));
1599
+ if (portal) {
1600
+ return /* @__PURE__ */ React18.createElement(Portal, null, modalContent);
1601
+ }
1602
+ return modalContent;
1603
+ }
1604
+ );
1605
+ ModalContent.defaultProps = {
1606
+ size: "auto",
1607
+ portal: false
1608
+ };
1609
+ var ModalClose = forwardRef8(
1610
+ (props, ref) => {
1611
+ let { asChild, children, ...rest } = props;
1612
+ let closeIcon = /* @__PURE__ */ React18.createElement(StyledCloseIcon, null, /* @__PURE__ */ React18.createElement(Icon, { name: "X" }));
1613
+ return /* @__PURE__ */ React18.createElement(Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
1614
+ }
1615
+ );
1616
+
1617
+ // src/components/spinner.tsx
1618
+ import React19 from "react";
1619
+ function Spinner() {
1620
+ return /* @__PURE__ */ React19.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ React19.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
1621
+ }
1622
+
1623
+ // src/components/tooltip.tsx
1624
+ import React20 from "react";
1625
+ function Tooltip({ children }) {
1626
+ return /* @__PURE__ */ React20.createElement("span", { className: "wv-tooltip" }, children);
1627
+ }
1628
+
1629
+ // src/components/slider/index.tsx
1340
1630
  import clsx3 from "clsx";
1341
- import React18 from "react";
1631
+ import { useKeenSlider } from "keen-slider/react";
1632
+ import React22, { useState as useState2 } from "react";
1633
+
1634
+ // src/components/slider/arrows.tsx
1635
+ import { styled as styled2 } from "@stitches/react";
1636
+ import clsx2 from "clsx";
1637
+ import React21 from "react";
1638
+ function Arrows(props) {
1639
+ let { currentSlide, instanceRef, className, icon, offset } = props;
1640
+ let isFirst = currentSlide === 0;
1641
+ let isLast = false;
1642
+ if (instanceRef.current) {
1643
+ isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1644
+ }
1645
+ let style = {
1646
+ "--offset": `${offset}px`
1647
+ };
1648
+ return /* @__PURE__ */ React21.createElement(StyledArrows, { className, style }, /* @__PURE__ */ React21.createElement(
1649
+ "button",
1650
+ {
1651
+ type: "button",
1652
+ className: clsx2("arrow arrow--left", isFirst && "arrow--disabled"),
1653
+ onClick: (e) => {
1654
+ e.stopPropagation();
1655
+ instanceRef?.current?.prev();
1656
+ }
1657
+ },
1658
+ /* @__PURE__ */ React21.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1659
+ ), /* @__PURE__ */ React21.createElement(
1660
+ "button",
1661
+ {
1662
+ type: "button",
1663
+ className: clsx2("arrow arrow--right", isLast && "arrow--disabled"),
1664
+ onClick: (e) => {
1665
+ e.stopPropagation();
1666
+ instanceRef?.current?.next();
1667
+ }
1668
+ },
1669
+ /* @__PURE__ */ React21.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1670
+ ));
1671
+ }
1672
+ var StyledArrows = styled2("div", {
1673
+ ".arrow": {
1674
+ position: "absolute",
1675
+ top: "50%",
1676
+ transform: "translateY(-50%)",
1677
+ width: "44px",
1678
+ height: "44px",
1679
+ padding: "8px",
1680
+ color: "#191919",
1681
+ backgroundColor: "#f2f2f2",
1682
+ textAlign: "center",
1683
+ transition: "all 0.2s ease-in-out",
1684
+ borderRadius: "4px",
1685
+ border: "none",
1686
+ cursor: "pointer",
1687
+ "&:hover": {
1688
+ backgroundColor: "#191919",
1689
+ color: "#f2f2f2"
1690
+ },
1691
+ svg: {
1692
+ verticalAlign: "middle",
1693
+ width: "22px",
1694
+ height: "22px"
1695
+ },
1696
+ "&.arrow--left": {
1697
+ left: "var(--offset, 0px)"
1698
+ },
1699
+ "&.arrow--right": {
1700
+ right: "var(--offset, 0px)"
1701
+ },
1702
+ "&.arrow--disabled": {
1703
+ opacity: 0.5
1704
+ }
1705
+ },
1706
+ "@media (max-width: 768px)": {
1707
+ ".arrow": {
1708
+ display: "none"
1709
+ }
1710
+ }
1711
+ });
1712
+
1713
+ // src/components/slider/resize-plugin.ts
1714
+ var ResizePlugin = (slider) => {
1715
+ let observer = new ResizeObserver(() => slider.update());
1716
+ slider.on("created", () => {
1717
+ observer.observe(slider.container);
1718
+ });
1719
+ slider.on("destroyed", () => {
1720
+ observer.unobserve(slider.container);
1721
+ });
1722
+ };
1723
+
1724
+ // src/components/slider/index.tsx
1725
+ function Slider(props) {
1726
+ let { children, className, gap, slidesPerView, arrowOffset } = props;
1727
+ let [currentSlide, setCurrentSlide] = useState2(0);
1728
+ let [created, setCreated] = useState2(false);
1729
+ let [ref, instanceRef] = useKeenSlider(
1730
+ {
1731
+ slides: { perView: slidesPerView, spacing: gap },
1732
+ breakpoints: {
1733
+ "(max-width: 1024px)": {
1734
+ slides: { perView: 3, spacing: gap }
1735
+ },
1736
+ "(max-width: 768px)": {
1737
+ slides: {
1738
+ perView: 1,
1739
+ spacing: 32
1740
+ }
1741
+ }
1742
+ },
1743
+ created: () => {
1744
+ setCreated(true);
1745
+ },
1746
+ slideChanged: (slider) => {
1747
+ setCurrentSlide(slider.track.details.rel);
1748
+ }
1749
+ },
1750
+ [ResizePlugin]
1751
+ );
1752
+ let _className = clsx3("keen-slider", className);
1753
+ let arrowsClass = clsx3(className && `${className}-arrows`);
1754
+ return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { ref, className: _className }, /* @__PURE__ */ React22.createElement(
1755
+ "link",
1756
+ {
1757
+ rel: "stylesheet",
1758
+ href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1759
+ }
1760
+ ), children), created && instanceRef?.current && /* @__PURE__ */ React22.createElement(
1761
+ Arrows,
1762
+ {
1763
+ currentSlide,
1764
+ instanceRef,
1765
+ className: arrowsClass,
1766
+ offset: arrowOffset,
1767
+ icon: "arrow"
1768
+ }
1769
+ ));
1770
+ }
1771
+
1772
+ // src/components/slider/dots.tsx
1773
+ import { styled as styled3 } from "@stitches/react";
1774
+ import clsx4 from "clsx";
1775
+ import React23 from "react";
1342
1776
  function Dots(props) {
1343
1777
  let { currentSlide, instanceRef, className, absolute, position, color } = props;
1344
- let _className = clsx3(
1778
+ let _className = clsx4(
1345
1779
  className,
1346
1780
  absolute && "dots--absolute",
1347
1781
  position && `dots--${position}`,
1348
1782
  color && `dots--${color}`
1349
1783
  );
1350
- return /* @__PURE__ */ React18.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1784
+ return /* @__PURE__ */ React23.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1351
1785
  (idx) => {
1352
- let className2 = clsx3("dot", currentSlide === idx && "dot--active");
1353
- return /* @__PURE__ */ React18.createElement(
1786
+ let className2 = clsx4("dot", currentSlide === idx && "dot--active");
1787
+ return /* @__PURE__ */ React23.createElement(
1354
1788
  "button",
1355
1789
  {
1356
1790
  key: idx,
@@ -1362,7 +1796,7 @@ function Dots(props) {
1362
1796
  }
1363
1797
  ));
1364
1798
  }
1365
- var StyledDots = styled2("div", {
1799
+ var StyledDots = styled3("div", {
1366
1800
  padding: "10px 0",
1367
1801
  display: "flex",
1368
1802
  justifyContent: "center",
@@ -1407,10 +1841,6 @@ var StyledDots = styled2("div", {
1407
1841
  }
1408
1842
  });
1409
1843
 
1410
- // src/elements/slideshow/use-slideshow-configs.ts
1411
- import { useKeenSlider } from "keen-slider/react";
1412
- import React19, { useContext as useContext4, useEffect as useEffect2, useState } from "react";
1413
-
1414
1844
  // src/components/slider/autoplay-plugin.ts
1415
1845
  function AutoplayPlugin(changeSlidesEvery) {
1416
1846
  return (slider) => {
@@ -1444,28 +1874,161 @@ function AutoplayPlugin(changeSlidesEvery) {
1444
1874
  };
1445
1875
  }
1446
1876
 
1447
- // src/components/slider/resize-plugin.ts
1448
- var ResizePlugin = (slider) => {
1449
- let observer = new ResizeObserver(() => slider.update());
1450
- slider.on("created", () => {
1451
- observer.observe(slider.container);
1452
- });
1453
- slider.on("destroyed", () => {
1454
- observer.unobserve(slider.container);
1455
- });
1877
+ // src/components/placeholder.tsx
1878
+ import React24, { forwardRef as forwardRef9 } from "react";
1879
+ var Placeholder = forwardRef9(
1880
+ (props, ref) => {
1881
+ let { element, className, children, ...rest } = props;
1882
+ return /* @__PURE__ */ React24.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ React24.createElement("div", { style: { fontWeight: 600, marginBottom: "10px" } }, element), /* @__PURE__ */ React24.createElement("div", null, children));
1883
+ }
1884
+ );
1885
+ var placeholder_default = Placeholder;
1886
+
1887
+ // src/components/index.ts
1888
+ var Components = {
1889
+ Background,
1890
+ Icon,
1891
+ ModalComponents: modal_exports,
1892
+ Overlay,
1893
+ Placeholder: placeholder_default,
1894
+ Spinner,
1895
+ Slider,
1896
+ Tooltip
1897
+ };
1898
+ var SliderComponents = {
1899
+ Arrows,
1900
+ Dots,
1901
+ ResizePlugin,
1902
+ AutoplayPlugin
1903
+ };
1904
+
1905
+ // src/elements/instagram.tsx
1906
+ var Instagram = forwardRef10(
1907
+ (props, ref) => {
1908
+ let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
1909
+ let [media, setMedia] = useState3([]);
1910
+ let [error, setError] = useState3(null);
1911
+ useEffect3(() => {
1912
+ if (token) {
1913
+ let params = new URLSearchParams({
1914
+ access_token: token,
1915
+ fields: "id,media_type,caption,media_url,permalink,thumbnail_url"
1916
+ });
1917
+ fetch(`${INSTAGRAM_API}/me/media?${params.toString()}`).then((res) => res.json()).then((res) => {
1918
+ if (res.error) {
1919
+ setError(res);
1920
+ } else {
1921
+ setError(null);
1922
+ setMedia([...res.data]);
1923
+ }
1924
+ }).catch(setError);
1925
+ }
1926
+ }, [token]);
1927
+ if (!token || error) {
1928
+ return /* @__PURE__ */ React25.createElement("div", { ref, ...rest }, /* @__PURE__ */ React25.createElement(Components.Placeholder, { element: "Instagram" }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
1929
+ }
1930
+ let style = {
1931
+ "--wv-ig-images-per-row": imagesPerRow,
1932
+ "--wv-ig-images-gap": gap + "px"
1933
+ };
1934
+ return /* @__PURE__ */ React25.createElement("div", { ref, ...rest, style }, /* @__PURE__ */ React25.createElement("div", { className: "wv-ig-media-container" }, media.slice(0, numberOfImages).map((item) => {
1935
+ let {
1936
+ id,
1937
+ permalink,
1938
+ caption,
1939
+ media_url,
1940
+ media_type,
1941
+ thumbnail_url
1942
+ } = item;
1943
+ if (media_type === "VIDEO") {
1944
+ return /* @__PURE__ */ React25.createElement("video", { key: id, controls: true, poster: thumbnail_url }, /* @__PURE__ */ React25.createElement("source", { src: media_url, type: "video/mp4" }));
1945
+ }
1946
+ return /* @__PURE__ */ React25.createElement("a", { key: id, href: permalink, target: "_blank", rel: "noreferrer" }, /* @__PURE__ */ React25.createElement("img", { alt: caption, src: media_url }));
1947
+ })));
1948
+ }
1949
+ );
1950
+ var css10 = {
1951
+ // '@desktop': {
1952
+ // '.wv-ig-media-container': {
1953
+ // overflow: 'hidden',
1954
+ // maxWidth: '100%',
1955
+ // maxHeight: '100%',
1956
+ // display: 'grid',
1957
+ // gridTemplateColumns: 'repeat(var(--wv-ig-images-per-row, 4), 1fr)',
1958
+ // gap: 'var(--wv-ig-images-gap, 0px)',
1959
+ // img: {
1960
+ // // aspectRatio: '1 / 1',
1961
+ // maxWidth: '100%',
1962
+ // maxHeight: '100%',
1963
+ // objectFit: 'cover',
1964
+ // },
1965
+ // },
1966
+ // },
1967
+ };
1968
+ var permanentCss = {
1969
+ "@desktop": {
1970
+ ".wv-ig-media-container": {
1971
+ overflow: "hidden",
1972
+ maxWidth: "100%",
1973
+ maxHeight: "100%",
1974
+ display: "grid",
1975
+ gridTemplateColumns: "repeat(var(--wv-ig-images-per-row, 4), 1fr)",
1976
+ gap: "var(--wv-ig-images-gap, 0px)",
1977
+ img: {
1978
+ // aspectRatio: '1 / 1',
1979
+ maxWidth: "100%",
1980
+ maxHeight: "100%",
1981
+ objectFit: "cover"
1982
+ },
1983
+ video: {
1984
+ width: "100%",
1985
+ height: "100%"
1986
+ }
1987
+ }
1988
+ },
1989
+ "@mobile": {
1990
+ ".wv-ig-media-container": {
1991
+ overflowX: "auto",
1992
+ display: "flex",
1993
+ scrollSnapType: "x mandatory"
1994
+ },
1995
+ ".wv-ig-media-container a": {
1996
+ scrollSnapAlign: "start",
1997
+ flexGrow: 0,
1998
+ flexShrink: 0,
1999
+ flexBasis: "100%"
2000
+ }
2001
+ }
1456
2002
  };
2003
+ Instagram.defaultProps = {
2004
+ token: "",
2005
+ username: "",
2006
+ numberOfImages: 8,
2007
+ imagesPerRow: 4,
2008
+ gap: 0
2009
+ };
2010
+ var instagram_default = Instagram;
2011
+
2012
+ // src/elements/slideshow/index.tsx
2013
+ import { css as stitchesCss } from "@stitches/react";
2014
+ import clsx6 from "clsx";
2015
+ import React27, { forwardRef as forwardRef11 } from "react";
2016
+
2017
+ // src/elements/slideshow/use-slideshow-configs.ts
2018
+ import { useKeenSlider as useKeenSlider2 } from "keen-slider/react";
2019
+ import React26, { useContext as useContext5, useEffect as useEffect4, useState as useState4 } from "react";
1457
2020
 
1458
2021
  // src/utils/css.ts
1459
- import clsx4 from "clsx";
1460
- function formatCSS(css11) {
2022
+ import clsx5 from "clsx";
2023
+ function formatCSS(css13) {
1461
2024
  return {
1462
- "@desktop": css11["@desktop"],
1463
- "@mobile": css11["@mobile"]
2025
+ "@desktop": css13["@desktop"],
2026
+ "@mobile": css13["@mobile"]
1464
2027
  };
1465
2028
  }
1466
2029
  var permanentClasses = {};
1467
2030
  function generateItemClassName(instance, stitchesInstance) {
1468
- let { css: css11, type, className: cls = "" } = instance.data;
2031
+ let { css: css13, type, className: cls = "" } = instance.data;
1469
2032
  let className = "";
1470
2033
  let permanentClass = "";
1471
2034
  let perCss = instance.Element?.permanentCss;
@@ -1479,12 +2042,12 @@ function generateItemClassName(instance, stitchesInstance) {
1479
2042
  }
1480
2043
  }
1481
2044
  className = permanentClass;
1482
- if (css11) {
1483
- let formattedCss = formatCSS(css11);
2045
+ if (css13) {
2046
+ let formattedCss = formatCSS(css13);
1484
2047
  let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
1485
2048
  let { stitchesClass } = instance;
1486
2049
  let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
1487
- className = clsx4(permanentClass, cls, newStitchesClass, otherClass);
2050
+ className = clsx5(permanentClass, cls, newStitchesClass, otherClass);
1488
2051
  instance.stitchesClass = newStitchesClass;
1489
2052
  }
1490
2053
  return className;
@@ -1513,19 +2076,19 @@ function useSlideshowConfigs(props) {
1513
2076
  changeSlidesEvery,
1514
2077
  children
1515
2078
  } = props;
1516
- let { isDesignMode, isPreviewMode } = useContext4(WeaverseContext);
1517
- let [opacities, setOpacities] = React19.useState([]);
1518
- let [cssLoaded, setCssLoaded] = useState(false);
1519
- let [created, setCreated] = useState(false);
1520
- let [ready, setReady] = useState(false);
1521
- let [currentSlide, setCurrentSlide] = useState(0);
2079
+ let { isDesignMode, isPreviewMode } = useContext5(WeaverseContext);
2080
+ let [opacities, setOpacities] = React26.useState([]);
2081
+ let [cssLoaded, setCssLoaded] = useState4(false);
2082
+ let [created, setCreated] = useState4(false);
2083
+ let [ready, setReady] = useState4(false);
2084
+ let [currentSlide, setCurrentSlide] = useState4(0);
1522
2085
  let sliderPlugins = [ResizePlugin];
1523
2086
  if (autoRotate && (isPreviewMode || !isDesignMode)) {
1524
2087
  sliderPlugins.push(AutoplayPlugin(changeSlidesEvery));
1525
2088
  }
1526
- let [sliderRef, instanceRef] = useKeenSlider(
2089
+ let [sliderRef, instanceRef] = useKeenSlider2(
1527
2090
  {
1528
- slides: animation === "fade" ? React19.Children.count(children) : { perView: slidesPerView, number: React19.Children.count(children) },
2091
+ slides: animation === "fade" ? React26.Children.count(children) : { perView: slidesPerView, number: React26.Children.count(children) },
1529
2092
  drag: isPreviewMode || !isDesignMode,
1530
2093
  loop,
1531
2094
  selector: animation === "fade" ? null : ".keen-slider__slide",
@@ -1555,13 +2118,13 @@ function useSlideshowConfigs(props) {
1555
2118
  },
1556
2119
  sliderPlugins
1557
2120
  );
1558
- useEffect2(() => {
2121
+ useEffect4(() => {
1559
2122
  loadCSS({
1560
2123
  rel: "stylesheet",
1561
2124
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1562
2125
  }).then(() => setCssLoaded(true));
1563
2126
  }, []);
1564
- useEffect2(() => {
2127
+ useEffect4(() => {
1565
2128
  if (created && cssLoaded) {
1566
2129
  setReady(true);
1567
2130
  }
@@ -1577,7 +2140,7 @@ function useSlideshowConfigs(props) {
1577
2140
  }
1578
2141
 
1579
2142
  // src/elements/slideshow/index.tsx
1580
- var Slideshow = forwardRef8((props, ref) => {
2143
+ var Slideshow = forwardRef11((props, ref) => {
1581
2144
  let {
1582
2145
  animation,
1583
2146
  showArrows,
@@ -1605,16 +2168,16 @@ var Slideshow = forwardRef8((props, ref) => {
1605
2168
  }, {})
1606
2169
  })().className;
1607
2170
  }
1608
- let _className = clsx5(
2171
+ let _className = clsx6(
1609
2172
  faderClass,
1610
2173
  animation === "slide" ? "keen-slider" : "keen-fader"
1611
2174
  );
1612
- let arrowsClass = clsx5(
2175
+ let arrowsClass = clsx6(
1613
2176
  "wv-slideshow--arrows",
1614
2177
  showArrowsOnHover && "show-on-hover",
1615
2178
  `arrows--${arrowsColor}`
1616
2179
  );
1617
- return /* @__PURE__ */ React20.createElement("div", { ref, style, ...rest }, /* @__PURE__ */ React20.createElement("div", { ref: sliderRef, className: _className }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ React20.createElement(
2180
+ return /* @__PURE__ */ React27.createElement("div", { ref, style, ...rest }, /* @__PURE__ */ React27.createElement("div", { ref: sliderRef, className: _className }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ React27.createElement(
1618
2181
  Arrows,
1619
2182
  {
1620
2183
  instanceRef,
@@ -1623,7 +2186,7 @@ var Slideshow = forwardRef8((props, ref) => {
1623
2186
  icon: arrowIcon,
1624
2187
  offset: 20
1625
2188
  }
1626
- ), showDots && created && instanceRef?.current && /* @__PURE__ */ React20.createElement(
2189
+ ), showDots && created && instanceRef?.current && /* @__PURE__ */ React27.createElement(
1627
2190
  Dots,
1628
2191
  {
1629
2192
  instanceRef,
@@ -1635,7 +2198,7 @@ var Slideshow = forwardRef8((props, ref) => {
1635
2198
  }
1636
2199
  ));
1637
2200
  });
1638
- var css9 = {
2201
+ var css11 = {
1639
2202
  "@desktop": {
1640
2203
  opacity: "var(--slider-opacity, 0)",
1641
2204
  padding: "32px 0",
@@ -1694,90 +2257,17 @@ Slideshow.defaultProps = {
1694
2257
  showArrowsOnHover: false,
1695
2258
  arrowIcon: "caret",
1696
2259
  arrowsColor: "dark",
1697
- showDots: true,
1698
- dotsPosition: "bottom",
1699
- dotsColor: "dark",
1700
- loop: true,
1701
- autoRotate: false,
1702
- changeSlidesEvery: 5
1703
- };
1704
- var slideshow_default = Slideshow;
1705
-
1706
- // src/elements/slideshow/slide.tsx
1707
- import React24, { forwardRef as forwardRef10 } from "react";
1708
-
1709
- // src/components/background.tsx
1710
- import { styled as styled3 } from "@stitches/react";
1711
- import React21 from "react";
1712
- function Background2(props) {
1713
- let {
1714
- backgroundColor,
1715
- backgroundImage,
1716
- backgroundFit,
1717
- backgroundPosition,
1718
- className
1719
- } = props;
1720
- let style = {
1721
- ["--bg-color"]: backgroundColor,
1722
- ["--bg-fit"]: backgroundFit,
1723
- ["--bg-position"]: backgroundPosition
1724
- };
1725
- if (backgroundImage || backgroundColor) {
1726
- return /* @__PURE__ */ React21.createElement(StyledBackground, { style, className }, backgroundImage && /* @__PURE__ */ React21.createElement(
1727
- "img",
1728
- {
1729
- width: "100%",
1730
- height: "100%",
1731
- "data-blink-src": backgroundImage,
1732
- alt: "Background"
1733
- }
1734
- ));
1735
- }
1736
- return null;
1737
- }
1738
- var StyledBackground = styled3("div", {
1739
- display: "block !important",
1740
- position: "absolute",
1741
- inset: 0,
1742
- backgroundColor: "var(--bg-color)",
1743
- img: {
1744
- objectFit: "var(--bg-fit, cover)",
1745
- objectPosition: "var(--bg-position, 50% 50%)"
1746
- }
1747
- });
1748
-
1749
- // src/components/overlay.tsx
1750
- import { styled as styled4 } from "@stitches/react";
1751
- import React22 from "react";
1752
- function Overlay2(props) {
1753
- let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1754
- if (enabled) {
1755
- return /* @__PURE__ */ React22.createElement(
1756
- StyledOverlay,
1757
- {
1758
- className,
1759
- css: { ["--overlay-opacity"]: opacity / 100 }
1760
- }
1761
- );
1762
- }
1763
- return null;
1764
- }
1765
- var StyledOverlay = styled4("div", {
1766
- display: "block !important",
1767
- position: "absolute",
1768
- inset: 0,
1769
- backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1770
- });
2260
+ showDots: true,
2261
+ dotsPosition: "bottom",
2262
+ dotsColor: "dark",
2263
+ loop: true,
2264
+ autoRotate: false,
2265
+ changeSlidesEvery: 5
2266
+ };
2267
+ var slideshow_default = Slideshow;
1771
2268
 
1772
- // src/components/placeholder.tsx
1773
- import React23, { forwardRef as forwardRef9 } from "react";
1774
- var Placeholder = forwardRef9(
1775
- (props, ref) => {
1776
- let { element, className, children, ...rest } = props;
1777
- return /* @__PURE__ */ React23.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ React23.createElement("div", { style: { fontWeight: 600, marginBottom: "10px" } }, element), /* @__PURE__ */ React23.createElement("div", null, children));
1778
- }
1779
- );
1780
- var placeholder_default = Placeholder;
2269
+ // src/elements/slideshow/slide.tsx
2270
+ import React28, { forwardRef as forwardRef12 } from "react";
1781
2271
 
1782
2272
  // src/elements/slideshow/position.ts
1783
2273
  var slidePositionMap = {
@@ -1820,7 +2310,7 @@ var slidePositionMap = {
1820
2310
  };
1821
2311
 
1822
2312
  // src/elements/slideshow/slide.tsx
1823
- var Slide = forwardRef10((props, ref) => {
2313
+ var Slide = forwardRef12((props, ref) => {
1824
2314
  let {
1825
2315
  contentPosition,
1826
2316
  backgroundColor,
@@ -1832,8 +2322,8 @@ var Slide = forwardRef10((props, ref) => {
1832
2322
  children,
1833
2323
  ...rest
1834
2324
  } = props;
1835
- return /* @__PURE__ */ React24.createElement("div", { className: "keen-slider__slide" }, /* @__PURE__ */ React24.createElement(
1836
- Background2,
2325
+ return /* @__PURE__ */ React28.createElement("div", { className: "keen-slider__slide" }, /* @__PURE__ */ React28.createElement(
2326
+ Background,
1837
2327
  {
1838
2328
  backgroundColor,
1839
2329
  backgroundImage,
@@ -1841,16 +2331,16 @@ var Slide = forwardRef10((props, ref) => {
1841
2331
  backgroundPosition,
1842
2332
  className: "slide-background"
1843
2333
  }
1844
- ), /* @__PURE__ */ React24.createElement(
1845
- Overlay2,
2334
+ ), /* @__PURE__ */ React28.createElement(
2335
+ Overlay,
1846
2336
  {
1847
2337
  enableOverlay,
1848
2338
  overlayOpacity,
1849
2339
  className: "slide-overlay"
1850
2340
  }
1851
- ), /* @__PURE__ */ React24.createElement("div", { ref, style: slidePositionMap[contentPosition], ...rest }, children?.length ? children : /* @__PURE__ */ React24.createElement(placeholder_default, { element: "Slide", className: "wv-slide-placeholder" }, "Drag and drop elements here")));
2341
+ ), /* @__PURE__ */ React28.createElement("div", { ref, style: slidePositionMap[contentPosition], ...rest }, children?.length ? children : /* @__PURE__ */ React28.createElement(placeholder_default, { element: "Slide", className: "wv-slide-placeholder" }, "Drag and drop elements here")));
1852
2342
  });
1853
- var css10 = {
2343
+ var css12 = {
1854
2344
  "@desktop": {
1855
2345
  position: "relative",
1856
2346
  height: "100%",
@@ -1897,12 +2387,12 @@ var Elements = {
1897
2387
  type: "image",
1898
2388
  defaultCss: css4
1899
2389
  },
1900
- // Instagram: {
1901
- // Component: Instagram.default,
1902
- // type: 'instagram',
1903
- // defaultCss: Instagram.css,
1904
- // permanentCss: Instagram.permanentCss,
1905
- // },
2390
+ Instagram: {
2391
+ Component: instagram_default,
2392
+ type: "instagram",
2393
+ defaultCss: css10,
2394
+ permanentCss
2395
+ },
1906
2396
  Layout: {
1907
2397
  Component: layout_default,
1908
2398
  type: "layout",
@@ -1918,45 +2408,25 @@ var Elements = {
1918
2408
  type: "text",
1919
2409
  defaultCss: css7
1920
2410
  },
2411
+ ScrollingText: {
2412
+ Component: scrolling_text_default,
2413
+ type: "scrolling-text",
2414
+ defaultCss: css8
2415
+ },
1921
2416
  Video: {
1922
2417
  Component: video_default,
1923
2418
  type: "video",
1924
- defaultCss: css8
2419
+ defaultCss: css9
1925
2420
  },
1926
- // Accordion: {
1927
- // Component: Accordion.default,
1928
- // type: 'accordion',
1929
- // defaultCss: Accordion.css,
1930
- // },
1931
- // AccordionWrapper: {
1932
- // Component: AccordionWrapper.default,
1933
- // type: 'accordion.wrapper',
1934
- // defaultCss: AccordionWrapper.css,
1935
- // },
1936
- // AccordionContent: {
1937
- // Component: AccordionContent.default,
1938
- // type: 'accordion.content',
1939
- // defaultCss: AccordionContent.css,
1940
- // },
1941
- // Tab: {
1942
- // Component: Tab.default,
1943
- // type: 'tab',
1944
- // defaultCss: Tab.css,
1945
- // },
1946
- // TabContent: {
1947
- // Component: TabContent.default,
1948
- // type: 'tab.content',
1949
- // defaultCss: TabContent.css,
1950
- // },
1951
2421
  Slideshow: {
1952
2422
  Component: slideshow_default,
1953
2423
  type: "slideshow",
1954
- defaultCss: css9
2424
+ defaultCss: css11
1955
2425
  },
1956
2426
  Slide: {
1957
2427
  Component: slide_default,
1958
2428
  type: "slide",
1959
- defaultCss: css10
2429
+ defaultCss: css12
1960
2430
  }
1961
2431
  };
1962
2432
 
@@ -2002,271 +2472,14 @@ var WeaverseContext = createContext({});
2002
2472
  var WeaverseContextProvider = WeaverseContext.Provider;
2003
2473
  var WeaverseContextConsumer = WeaverseContext.Consumer;
2004
2474
 
2005
- // src/components/modal/index.tsx
2006
- var modal_exports = {};
2007
- __export(modal_exports, {
2008
- Modal: () => Modal,
2009
- ModalClose: () => ModalClose,
2010
- ModalContent: () => ModalContent,
2011
- ModalHeader: () => ModalHeader,
2012
- ModalTrigger: () => ModalTrigger
2013
- });
2014
- import { Close, Portal, Root, Trigger } from "@radix-ui/react-dialog";
2015
- import React25, { forwardRef as forwardRef11 } from "react";
2016
-
2017
- // src/components/modal/styled.ts
2018
- import { Content, Overlay as Overlay3, Title } from "@radix-ui/react-dialog";
2019
- import { keyframes, styled as styled5 } from "@stitches/react";
2020
- var overlayShow = keyframes({
2021
- "0%": { opacity: 0 },
2022
- "100%": { opacity: 1 }
2023
- });
2024
- var contentShow = keyframes({
2025
- "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
2026
- "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
2027
- });
2028
- var StyledOverlay2 = styled5(Overlay3, {
2029
- display: "block !important",
2030
- backgroundColor: "rgba(0, 0, 0, .3)",
2031
- position: "fixed",
2032
- zIndex: 99999,
2033
- inset: 0,
2034
- animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
2035
- });
2036
- var StyledTitle = styled5(Title, {
2037
- margin: "0 0 24px",
2038
- fontWeight: 500,
2039
- fontSize: 24,
2040
- "@media (max-width: 768px)": {
2041
- margin: "0 0 16px",
2042
- fontSize: 20
2043
- }
2044
- });
2045
- var StyledContent = styled5(Content, {
2046
- backgroundColor: "white",
2047
- borderRadius: 6,
2048
- boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
2049
- position: "fixed",
2050
- top: "50%",
2051
- left: "50%",
2052
- transform: "translate(-50%, -50%)",
2053
- padding: 24,
2054
- animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
2055
- zIndex: 99999,
2056
- maxWidth: "90vw",
2057
- width: "auto",
2058
- "*": {
2059
- maxWidth: "100%"
2060
- },
2061
- "&:focus": { outline: "none" },
2062
- '&[data-size="fullscreen"]': {
2063
- width: "100vw",
2064
- height: "100vh",
2065
- maxWidth: "100vw",
2066
- borderRadius: 0
2067
- },
2068
- "@media (max-width: 768px)": {
2069
- width: "90vw",
2070
- padding: 12,
2071
- '&[data-size="fullscreen"]': {
2072
- width: "100vw"
2073
- }
2074
- }
2075
- });
2076
- var StyledCloseIcon = styled5("button", {
2077
- all: "unset",
2078
- cursor: "pointer",
2079
- fontFamily: "inherit",
2080
- borderRadius: "100%",
2081
- height: 32,
2082
- width: 32,
2083
- padding: 4,
2084
- display: "inline-flex",
2085
- alignItems: "center",
2086
- justifyContent: "center",
2087
- color: "rgb(55, 65, 81)",
2088
- position: "absolute",
2089
- top: 8,
2090
- right: 8,
2091
- "&:hover": {
2092
- backgroundColor: "rgba(112, 112, 112, .1)"
2093
- },
2094
- svg: {
2095
- width: 24,
2096
- height: 24
2097
- }
2098
- });
2099
-
2100
- // src/components/modal/use-open-change-effect.ts
2101
- import { useContext as useContext5, useEffect as useEffect3 } from "react";
2102
- function useOpenChangeEffect(props) {
2103
- let { open, defaultOpen, onOpenChange } = props;
2104
- let rootCtx = useContext5(WeaverseContext);
2105
- let toggleRootzIndex = (open2) => {
2106
- let { contentRootElement } = rootCtx;
2107
- if (contentRootElement) {
2108
- if (open2) {
2109
- contentRootElement.classList.add("modal-open");
2110
- } else {
2111
- contentRootElement.classList.remove("modal-open");
2112
- }
2113
- }
2114
- };
2115
- useEffect3(() => {
2116
- let isOpen = open || defaultOpen;
2117
- toggleRootzIndex(isOpen);
2118
- }, [open, defaultOpen]);
2119
- let handleOpenChange = (open2) => {
2120
- toggleRootzIndex(open2);
2121
- onOpenChange?.(open2);
2122
- };
2123
- return handleOpenChange;
2124
- }
2125
-
2126
- // src/components/modal/index.tsx
2127
- var Modal = (props) => {
2128
- let { children, open, defaultOpen, onOpenChange, ...rest } = props;
2129
- let handleOpenChange = useOpenChangeEffect(props);
2130
- return /* @__PURE__ */ React25.createElement(
2131
- Root,
2132
- {
2133
- open,
2134
- defaultOpen,
2135
- onOpenChange: handleOpenChange,
2136
- ...rest
2137
- },
2138
- children
2139
- );
2140
- };
2141
- var ModalTrigger = Trigger;
2142
- var ModalHeader = forwardRef11(
2143
- (props, ref) => {
2144
- let { children, ...rest } = props;
2145
- return /* @__PURE__ */ React25.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
2146
- }
2147
- );
2148
- var ModalContent = forwardRef11(
2149
- (props, ref) => {
2150
- let { children, size, portal, ...rest } = props;
2151
- let modalContent = /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(StyledOverlay2, null), /* @__PURE__ */ React25.createElement(
2152
- StyledContent,
2153
- {
2154
- ...rest,
2155
- onCloseAutoFocus: (e) => e.preventDefault(),
2156
- "data-wv-modal": true,
2157
- "data-size": size,
2158
- ref
2159
- },
2160
- /* @__PURE__ */ React25.createElement(ModalClose, null),
2161
- /* @__PURE__ */ React25.createElement("div", { className: "wv-modal-content" }, children)
2162
- ));
2163
- if (portal) {
2164
- return /* @__PURE__ */ React25.createElement(Portal, null, modalContent);
2165
- }
2166
- return modalContent;
2167
- }
2168
- );
2169
- ModalContent.defaultProps = {
2170
- size: "auto",
2171
- portal: false
2172
- };
2173
- var ModalClose = forwardRef11(
2174
- (props, ref) => {
2175
- let { asChild, children, ...rest } = props;
2176
- let closeIcon = /* @__PURE__ */ React25.createElement(StyledCloseIcon, null, /* @__PURE__ */ React25.createElement(Icon, { name: "X" }));
2177
- return /* @__PURE__ */ React25.createElement(Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
2178
- }
2179
- );
2180
-
2181
- // src/components/spinner.tsx
2182
- import React26 from "react";
2183
- function Spinner() {
2184
- return /* @__PURE__ */ React26.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ React26.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
2185
- }
2186
-
2187
- // src/components/tooltip.tsx
2188
- import React27 from "react";
2189
- function Tooltip({ children }) {
2190
- return /* @__PURE__ */ React27.createElement("span", { className: "wv-tooltip" }, children);
2191
- }
2192
-
2193
- // src/components/slider/index.tsx
2194
- import clsx6 from "clsx";
2195
- import { useKeenSlider as useKeenSlider2 } from "keen-slider/react";
2196
- import React28, { useState as useState2 } from "react";
2197
- function Slider(props) {
2198
- let { children, className, gap, slidesPerView, arrowOffset } = props;
2199
- let [currentSlide, setCurrentSlide] = useState2(0);
2200
- let [created, setCreated] = useState2(false);
2201
- let [ref, instanceRef] = useKeenSlider2(
2202
- {
2203
- slides: { perView: slidesPerView, spacing: gap },
2204
- breakpoints: {
2205
- "(max-width: 1024px)": {
2206
- slides: { perView: 3, spacing: gap }
2207
- },
2208
- "(max-width: 768px)": {
2209
- slides: {
2210
- perView: 1,
2211
- spacing: 32
2212
- }
2213
- }
2214
- },
2215
- created: () => {
2216
- setCreated(true);
2217
- },
2218
- slideChanged: (slider) => {
2219
- setCurrentSlide(slider.track.details.rel);
2220
- }
2221
- },
2222
- [ResizePlugin]
2223
- );
2224
- let _className = clsx6("keen-slider", className);
2225
- let arrowsClass = clsx6(className && `${className}-arrows`);
2226
- return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("div", { ref, className: _className }, /* @__PURE__ */ React28.createElement(
2227
- "link",
2228
- {
2229
- rel: "stylesheet",
2230
- href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
2231
- }
2232
- ), children), created && instanceRef?.current && /* @__PURE__ */ React28.createElement(
2233
- Arrows,
2234
- {
2235
- currentSlide,
2236
- instanceRef,
2237
- className: arrowsClass,
2238
- offset: arrowOffset,
2239
- icon: "arrow"
2240
- }
2241
- ));
2242
- }
2243
-
2244
- // src/components/index.ts
2245
- var Components = {
2246
- Background: Background2,
2247
- Icon,
2248
- ModalComponents: modal_exports,
2249
- Overlay: Overlay2,
2250
- Placeholder: placeholder_default,
2251
- Spinner,
2252
- Slider,
2253
- Tooltip
2254
- };
2255
- var SliderComponents = {
2256
- Arrows,
2257
- Dots,
2258
- ResizePlugin,
2259
- AutoplayPlugin
2260
- };
2261
-
2262
2475
  // src/renderer.tsx
2263
2476
  import { isBrowser as isBrowser2 } from "@weaverse/core";
2264
- import React29, { useContext as useContext6, useEffect as useEffect4, useRef, useState as useState3 } from "react";
2477
+ import React29, { useContext as useContext6, useEffect as useEffect5, useRef, useState as useState5 } from "react";
2265
2478
  var WeaverseRoot = ({ context }) => {
2266
- let [, setData] = useState3(context.data);
2479
+ let [, setData] = useState5(context.data);
2267
2480
  let rootRef = useRef();
2268
2481
  let renderRoot = () => setData({});
2269
- useEffect4(() => {
2482
+ useEffect5(() => {
2270
2483
  context.subscribe(renderRoot);
2271
2484
  context.contentRootElement = rootRef.current;
2272
2485
  initUploadCareAdaptiveDelivery(context.weaverseHost);
@@ -2292,9 +2505,9 @@ var WeaverseRoot = ({ context }) => {
2292
2505
  };
2293
2506
  var ItemComponent = ({ instance }) => {
2294
2507
  let { stitchesInstance, elementInstances } = useContext6(WeaverseContext);
2295
- let [data, setData] = useState3(instance.data);
2296
- let { id, type, childIds = [], css: css11, className, ...rest } = data;
2297
- useEffect4(() => {
2508
+ let [data, setData] = useState5(instance.data);
2509
+ let { id, type, childIds = [], css: css13, className, ...rest } = data;
2510
+ useEffect5(() => {
2298
2511
  let render = (data2) => setData({ ...data2 });
2299
2512
  instance.subscribe(render);
2300
2513
  if (isBrowser2 && !instance.ref.current) {