@weaverse/react 1.0.33 → 1.0.35

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.
Files changed (3) hide show
  1. package/dist/index.js +1297 -1299
  2. package/dist/index.mjs +1325 -1327
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -98,736 +98,135 @@ var css = {
98
98
  var button_default = Button;
99
99
 
100
100
  // src/elements/container.tsx
101
- var import_react2 = __toESM(require("react"));
102
- var Container = (0, import_react2.forwardRef)(
103
- (props, ref) => {
104
- let { children, ...rest } = props;
105
- return /* @__PURE__ */ import_react2.default.createElement("div", { ref, ...rest }, children);
106
- }
107
- );
108
- var css2 = {
109
- "@desktop": {
110
- display: "flex",
111
- alignItems: "flex-start",
112
- justifyContent: "flex-start",
113
- gridArea: "1 / 1 / 3 / 6",
114
- overflow: "hidden",
115
- // minWidth: '300px',
116
- minHeight: "100px"
117
- },
118
- "@mobile": {
119
- minHeight: "100px"
120
- }
121
- };
122
- Container.defaultProps = {};
123
- var container_default = Container;
124
-
125
- // src/elements/countdown/index.tsx
126
- var import_react4 = __toESM(require("react"));
127
-
128
- // src/constant/index.ts
129
- var TIMES = ["days", "hours", "minutes", "seconds"];
130
- var COUNTDOWN_KEY = "wv-cd-evergreen-start";
131
- var INSTAGRAM_API = "https://graph.instagram.com";
101
+ var import_react19 = __toESM(require("react"));
132
102
 
133
- // src/utils/index.ts
134
- function getTime(_seconds) {
135
- let ONE_MINUTE = 60 * 1e3;
136
- let ONE_HOUR = 60 * ONE_MINUTE;
137
- let ONE_DAY = 24 * ONE_HOUR;
138
- let days = Math.floor(_seconds / ONE_DAY);
139
- let hours = Math.floor((_seconds - days * ONE_DAY) / ONE_HOUR);
140
- let minutes = Math.floor(
141
- (_seconds - days * ONE_DAY - hours * ONE_HOUR) / ONE_MINUTE
142
- );
143
- let seconds = Math.floor(
144
- (_seconds - days * ONE_DAY - hours * ONE_HOUR - minutes * ONE_MINUTE) / 1e3
145
- );
146
- return { days, hours, minutes, seconds };
147
- }
148
- function getYoutubeEmbedId(url) {
149
- const match = url.match(
150
- /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/
151
- );
152
- return match ? match[1] : null;
153
- }
154
- function getVimeoId(url) {
155
- const match = url.match(/(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(.+)/);
156
- return match ? match[1] : null;
157
- }
103
+ // src/components/modal/index.tsx
104
+ var modal_exports = {};
105
+ __export(modal_exports, {
106
+ Modal: () => Modal,
107
+ ModalClose: () => ModalClose,
108
+ ModalContent: () => ModalContent,
109
+ ModalHeader: () => ModalHeader,
110
+ ModalTrigger: () => ModalTrigger
111
+ });
112
+ var import_react_dialog2 = require("@radix-ui/react-dialog");
113
+ var import_react6 = __toESM(require("react"));
158
114
 
159
- // src/elements/countdown/timer-block.tsx
115
+ // src/components/icons/index.tsx
160
116
  var import_react3 = __toESM(require("react"));
161
- function TimerBlock({ value, label }) {
162
- return /* @__PURE__ */ import_react3.default.createElement("div", { className: "wv-cd-block" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "wv-cd-number" }, typeof value === "string" ? value : value.toString().padStart(2, "0")), label && /* @__PURE__ */ import_react3.default.createElement("div", { className: "wv-cd-label" }, label));
163
- }
164
117
 
165
- // src/elements/countdown/index.tsx
166
- var Countdown = (0, import_react4.forwardRef)(
167
- (props, ref) => {
168
- const { isDesignMode } = (0, import_react4.useContext)(WeaverseContext);
169
- let {
170
- timerType,
171
- startTime: startTimeProp,
172
- endTime: endTimeProp,
173
- periods: periodsProp,
174
- redirectWhenTimerStops,
175
- redirectUrl,
176
- openInNewTab,
177
- showColon,
178
- showLabel,
179
- ...rest
180
- } = props;
181
- const [remaining, setRemaining] = import_react4.default.useState(0);
182
- let periods = periodsProp * 60 * 1e3;
183
- const handleEnd = () => {
184
- if (!isDesignMode && redirectWhenTimerStops && redirectUrl)
185
- window.open(redirectUrl, openInNewTab ? "_blank" : "_self");
186
- };
187
- const getStartTime = () => {
188
- let startTime = startTimeProp;
189
- if (timerType === "evergreen") {
190
- const start = localStorage.getItem(COUNTDOWN_KEY);
191
- if (start) {
192
- startTime = Number.parseInt(start);
193
- if (startTime + periods < Date.now()) {
194
- startTime = Date.now();
195
- localStorage.setItem(COUNTDOWN_KEY, startTime.toString());
196
- }
197
- } else {
198
- startTime = Date.now();
199
- localStorage.setItem(COUNTDOWN_KEY, startTime.toString());
200
- }
201
- }
202
- return startTime;
203
- };
204
- const checkActive = (startTime) => startTime < Date.now() && endTimeProp > Date.now();
205
- const handleRemaining = () => {
206
- let startTime = getStartTime();
207
- let endTime = timerType === "fixed-time" ? endTimeProp : startTime + periods;
208
- let isActive = checkActive(startTime);
209
- const remainingTime = isActive ? Math.max(endTime - Date.now(), 0) : 0;
210
- if (remainingTime > 0 && remainingTime < 1e3) {
211
- handleEnd();
118
+ // src/components/icons/phosphor.tsx
119
+ var phosphor_exports = {};
120
+ __export(phosphor_exports, {
121
+ ArrowLeft: () => ArrowLeft,
122
+ ArrowRight: () => ArrowRight,
123
+ Backpack: () => Backpack,
124
+ CaretLeft: () => CaretLeft,
125
+ CaretRight: () => CaretRight,
126
+ Circle: () => Circle,
127
+ CircleNotch: () => CircleNotch,
128
+ Eye: () => Eye,
129
+ HandBag: () => HandBag,
130
+ Image: () => Image,
131
+ Minus: () => Minus,
132
+ Newspaper: () => Newspaper,
133
+ Package: () => Package,
134
+ Plus: () => Plus,
135
+ ShoppingCart: () => ShoppingCart,
136
+ Storefront: () => Storefront,
137
+ Tag: () => Tag,
138
+ X: () => X
139
+ });
140
+ var import_react2 = __toESM(require("react"));
141
+ var Circle = (props) => {
142
+ return /* @__PURE__ */ import_react2.default.createElement(
143
+ "svg",
144
+ {
145
+ xmlns: "http://www.w3.org/2000/svg",
146
+ width: "192",
147
+ height: "192",
148
+ fill: "currentColor",
149
+ viewBox: "0 0 256 256",
150
+ ...props
151
+ },
152
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
153
+ /* @__PURE__ */ import_react2.default.createElement("circle", { cx: "128", cy: "128", r: "104" })
154
+ );
155
+ };
156
+ var CircleNotch = (props) => {
157
+ return /* @__PURE__ */ import_react2.default.createElement(
158
+ "svg",
159
+ {
160
+ xmlns: "http://www.w3.org/2000/svg",
161
+ fill: "none",
162
+ viewBox: "0 0 24 24",
163
+ ...props
164
+ },
165
+ /* @__PURE__ */ import_react2.default.createElement(
166
+ "circle",
167
+ {
168
+ style: { opacity: ".25" },
169
+ cx: "12",
170
+ cy: "12",
171
+ r: "10",
172
+ stroke: "currentColor",
173
+ strokeWidth: "4"
212
174
  }
213
- setRemaining(remainingTime);
214
- };
215
- (0, import_react4.useEffect)(() => {
216
- let intervalFlag = setInterval(
217
- handleRemaining,
218
- 1e3
219
- );
220
- return () => {
221
- clearInterval(intervalFlag);
222
- };
223
- }, [startTimeProp, endTimeProp, periods, timerType]);
224
- const timer = getTime(remaining);
225
- return /* @__PURE__ */ import_react4.default.createElement("div", { ref, ...rest }, TIMES.map((time) => {
226
- return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, { key: time }, /* @__PURE__ */ import_react4.default.createElement(
227
- TimerBlock,
228
- {
229
- label: showLabel ? time : "",
230
- value: remaining === 0 ? "--" : timer[time]
231
- }
232
- ), time !== "seconds" && /* @__PURE__ */ import_react4.default.createElement("div", { className: "wv-cd-separator" }, showColon && /* @__PURE__ */ import_react4.default.createElement("span", null, ":")));
233
- }));
234
- }
235
- );
236
- var css3 = {
237
- "@desktop": {
238
- fontSize: "36px",
239
- fontWeight: 500,
240
- display: "flex",
241
- alignItems: "center",
242
- overflow: "hidden",
243
- justifyContent: "center",
244
- gap: 10,
245
- lineHeight: "initial",
246
- ".wv-cd-block": {
247
- width: 48,
248
- textAlign: "center",
249
- ".wv-cd-label": {
250
- fontSize: 10
175
+ ),
176
+ /* @__PURE__ */ import_react2.default.createElement(
177
+ "path",
178
+ {
179
+ style: { opacity: ".75" },
180
+ fill: "currentColor",
181
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
251
182
  }
183
+ )
184
+ );
185
+ };
186
+ var X = (props) => {
187
+ return /* @__PURE__ */ import_react2.default.createElement(
188
+ "svg",
189
+ {
190
+ xmlns: "http://www.w3.org/2000/svg",
191
+ width: "20",
192
+ height: "20",
193
+ fill: "currentColor",
194
+ viewBox: "0 0 256 256",
195
+ ...props
252
196
  },
253
- ".wv-cd-separator": {
254
- span: {
255
- lineHeight: "100%"
256
- },
257
- ".hidden": {
258
- visibility: "hidden"
197
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
198
+ /* @__PURE__ */ import_react2.default.createElement(
199
+ "line",
200
+ {
201
+ x1: "200",
202
+ y1: "56",
203
+ x2: "56",
204
+ y2: "200",
205
+ fill: "none",
206
+ stroke: "currentColor",
207
+ strokeLinecap: "round",
208
+ strokeLinejoin: "round",
209
+ strokeWidth: "12"
259
210
  }
260
- }
261
- }
262
- };
263
- Countdown.defaultProps = {
264
- timerType: "fixed-time",
265
- startTime: Date.now(),
266
- endTime: Date.now() + 1e3 * 60 * 60 * 24,
267
- periods: 90,
268
- redirectWhenTimerStops: false,
269
- redirectUrl: "",
270
- openInNewTab: false,
271
- showLabel: true,
272
- showColon: true
273
- };
274
- var countdown_default = Countdown;
275
-
276
- // src/elements/image.tsx
277
- var import_react5 = __toESM(require("react"));
278
- var Image = import_react5.default.forwardRef(
279
- (props, ref) => {
280
- let {
281
- src,
282
- alt,
283
- objectFit,
284
- objectPosition,
285
- clickAction,
286
- openLinkInNewTab,
287
- linkTo,
288
- ...rest
289
- } = props;
290
- let style = {
291
- "--img-object-fit": objectFit,
292
- "--img-object-position": objectPosition
293
- };
294
- let content = /* @__PURE__ */ import_react5.default.createElement("img", { alt, "data-blink-src": src });
295
- if (clickAction === "openLink" && linkTo) {
296
- content = /* @__PURE__ */ import_react5.default.createElement(
297
- "a",
298
- {
299
- href: linkTo,
300
- target: openLinkInNewTab ? "_blank" : "_self",
301
- rel: "noreferrer"
302
- },
303
- /* @__PURE__ */ import_react5.default.createElement("img", { alt, "data-blink-src": src })
304
- );
305
- }
306
- return /* @__PURE__ */ import_react5.default.createElement("div", { ref, style, ...rest }, content);
307
- }
308
- );
309
- var css4 = {
310
- "@desktop": {
311
- display: "flex",
312
- overflow: "hidden",
313
- justifyContent: "center",
314
- alignItems: "center",
315
- img: {
316
- width: "100%",
317
- height: "100%",
318
- objectFit: "var(--img-object-fit, cover)",
319
- objectPosition: "var(--img-object-position, center)"
320
- }
321
- }
322
- };
323
- Image.defaultProps = {
324
- src: "https://ucarecdn.com/dac0f414-2b1f-46df-99ce-41554f0f653a/",
325
- alt: "Alternative information",
326
- objectFit: "cover",
327
- objectPosition: "center center",
328
- clickAction: "none",
329
- openLinkInNewTab: false,
330
- linkTo: ""
331
- };
332
- var image_default = Image;
333
-
334
- // src/elements/layout.tsx
335
- var import_react8 = __toESM(require("react"));
336
-
337
- // src/components/background.tsx
338
- var import_react6 = __toESM(require("react"));
339
- function Background(props) {
340
- let {
341
- backgroundColor,
342
- backgroundImage,
343
- backgroundFit,
344
- backgroundPosition,
345
- className
346
- } = props;
347
- let style = {
348
- display: "block",
349
- position: "absolute",
350
- inset: 0,
351
- backgroundColor
352
- };
353
- if (backgroundImage || backgroundColor) {
354
- return /* @__PURE__ */ import_react6.default.createElement("div", { style, className }, backgroundImage && /* @__PURE__ */ import_react6.default.createElement(
355
- "img",
356
- {
357
- width: "100%",
358
- height: "100%",
359
- "data-blink-src": backgroundImage,
360
- alt: "Background",
361
- style: {
362
- objectFit: backgroundFit,
363
- objectPosition: backgroundPosition
364
- }
365
- }
366
- ));
367
- }
368
- return null;
369
- }
370
-
371
- // src/components/overlay.tsx
372
- var import_react7 = __toESM(require("react"));
373
- function Overlay(props) {
374
- let { enableOverlay, overlayOpacity, className } = props;
375
- if (enableOverlay) {
376
- return /* @__PURE__ */ import_react7.default.createElement(
377
- "div",
378
- {
379
- className,
380
- style: {
381
- position: "absolute",
382
- inset: 0,
383
- display: "block",
384
- backgroundColor: `rgba(0, 0, 0, ${overlayOpacity / 100})`
385
- }
386
- }
387
- );
388
- }
389
- return null;
390
- }
391
-
392
- // src/elements/layout.tsx
393
- var Layout = (0, import_react8.forwardRef)((props, ref) => {
394
- let {
395
- children,
396
- rows,
397
- gap,
398
- rowSize,
399
- columns,
400
- contentSize,
401
- gridSize,
402
- backgroundColor,
403
- backgroundImage,
404
- objectFit,
405
- objectPosition,
406
- enableOverlay,
407
- overlayOpacity,
408
- ...rest
409
- } = props;
410
- let style = {
411
- "--layout-content-width": "100vw",
412
- "--content-size": contentSize + "px",
413
- "--grid-size": gridSize + "px",
414
- "--rows": rows,
415
- "--columns": columns,
416
- "--gap": gap + "px",
417
- "--row-size": rowSize + "px",
418
- "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
419
- };
420
- return /* @__PURE__ */ import_react8.default.createElement("div", { ref, ...rest, style }, /* @__PURE__ */ import_react8.default.createElement(
421
- Background,
422
- {
423
- backgroundImage,
424
- backgroundColor,
425
- backgroundFit: objectFit,
426
- backgroundPosition: objectPosition
427
- }
428
- ), /* @__PURE__ */ import_react8.default.createElement(Overlay, { enableOverlay, overlayOpacity }), /* @__PURE__ */ import_react8.default.createElement("div", { "data-layout-content": true }, children));
429
- });
430
- var css5 = {
431
- "@desktop": {
432
- position: "relative",
433
- "> [data-layout-content]": {
434
- // paddingTop: 'var(--gap)',
435
- // paddingBottom: 'var(--gap)',
436
- margin: "0 auto",
437
- display: "grid",
438
- gridTemplateRows: "repeat(var(--rows), var(--row-size))",
439
- gridTemplateColumns: "calc((var(--layout-content-width) - var(--content-size)) / 2) 1fr repeat(var(--columns), minmax(0, var(--col-size))) 1fr calc((var(--layout-content-width) - var(--content-size)) / 2)",
440
- gridAutoRows: "var(--row-size)",
441
- gap: "var(--gap)",
442
- maxWidth: "var(--layout-content-width)"
443
- }
444
- },
445
- "@mobile": {
446
- padding: "0 16px",
447
- "> [data-layout-content]": {
448
- display: "flex",
449
- flexDirection: "column"
450
- }
451
- }
452
- };
453
- Layout.defaultProps = {
454
- contentSize: 1600,
455
- gridSize: 1224,
456
- rows: 16,
457
- columns: 12,
458
- gap: 16,
459
- rowSize: 48,
460
- objectFit: "cover",
461
- objectPosition: "center center",
462
- enableOverlay: false,
463
- overlayOpacity: 30
464
- };
465
- var layout_default = Layout;
466
-
467
- // src/elements/map.tsx
468
- var import_react9 = __toESM(require("react"));
469
- var Map = (0, import_react9.forwardRef)((props, ref) => {
470
- let { place, zoom, ...rest } = props;
471
- return /* @__PURE__ */ import_react9.default.createElement("div", { ref, ...rest }, /* @__PURE__ */ import_react9.default.createElement(
472
- "iframe",
473
- {
474
- loading: "lazy",
475
- width: "100%",
476
- height: "100%",
477
- title: "map",
478
- src: `https://maps.google.com/maps?z=${zoom}&t=m&q=${place}&ie=UTF8&&output=embed`,
479
- style: { pointerEvents: "none" }
480
- }
481
- ));
482
- });
483
- var css6 = {
484
- "@desktop": {
485
- iframe: {
486
- border: "none"
487
- }
488
- },
489
- "@mobile": {
490
- iframe: {
491
- border: "none"
492
- }
493
- }
494
- };
495
- Map.defaultProps = {
496
- place: "Hanoi",
497
- zoom: 14
498
- };
499
- var map_default = Map;
500
-
501
- // src/elements/text.tsx
502
- var React10 = __toESM(require("react"));
503
- var Text = React10.forwardRef(
504
- (props, ref) => {
505
- let { children, value, ...rest } = props;
506
- return /* @__PURE__ */ React10.createElement("div", { ref, ...rest }, /* @__PURE__ */ React10.createElement(
507
- "div",
508
- {
509
- className: "wv-text-content",
510
- dangerouslySetInnerHTML: { __html: value }
511
- }
512
- ));
513
- }
514
- );
515
- var css7 = {
516
- "@desktop": {
517
- display: "flex",
518
- padding: "10px",
519
- overflow: "hidden",
520
- ".wv-text-content": {
521
- width: "100%",
522
- height: "fit-content",
523
- "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
524
- all: "inherit",
525
- margin: "0",
526
- wordBreak: "break-word",
527
- overflowWrap: "break-word",
528
- width: "auto",
529
- height: "auto"
530
- }
531
- }
532
- }
533
- };
534
- Text.defaultProps = {
535
- value: "<p>The quick brown fox jumps over the lazy dog</p>"
536
- };
537
- var text_default = Text;
538
-
539
- // src/elements/scrolling-text.tsx
540
- var import_react10 = __toESM(require("react"));
541
- var import_react11 = require("react");
542
- var ScrollingText = import_react10.default.forwardRef((props, ref) => {
543
- let { children, value, gap, speed, pauseOnHover, ...rest } = props;
544
- let [playState, setPlayState] = (0, import_react11.useState)("running");
545
- let style = {
546
- "--gap": `${gap}px`,
547
- "--speed": `${speed}s`,
548
- "--play-state": playState
549
- };
550
- let events = {};
551
- if (pauseOnHover) {
552
- events = {
553
- onMouseEnter: () => setPlayState("paused"),
554
- onMouseLeave: () => setPlayState("running")
555
- };
556
- }
557
- return /* @__PURE__ */ import_react10.default.createElement("div", { ref, ...rest }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "wv-scrolling-text__container", style, ...events }, Array.from({ length: 30 }).map((_, i) => /* @__PURE__ */ import_react10.default.createElement(
558
- "div",
559
- {
560
- key: i,
561
- className: "wv-text-content",
562
- dangerouslySetInnerHTML: { __html: value }
563
- }
564
- ))));
565
- });
566
- var css8 = {
567
- "@desktop": {
568
- display: "flex",
569
- padding: "10px",
570
- overflow: "hidden",
571
- ".wv-scrolling-text__container": {
572
- visibility: "visible",
573
- whiteSpace: "nowrap",
574
- display: "flex",
575
- gap: "var(--gap, 40px)",
576
- animation: "wv-scrolling-text var(--speed, 100s) linear infinite",
577
- animationPlayState: "var(--play-state, running)",
578
- ".wv-text-content": {
579
- width: "100%",
580
- height: "fit-content",
581
- "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
582
- all: "inherit",
583
- margin: "0",
584
- wordBreak: "break-word",
585
- overflowWrap: "break-word",
586
- width: "auto",
587
- height: "auto"
588
- }
589
- }
590
- }
591
- }
592
- };
593
- ScrollingText.defaultProps = {
594
- value: "<p>The quick brown fox jumps over the lazy dog</p>",
595
- gap: 40,
596
- speed: 200,
597
- pauseOnHover: true
598
- };
599
- var scrolling_text_default = ScrollingText;
600
-
601
- // src/elements/video/index.tsx
602
- var import_react15 = __toESM(require("react"));
603
-
604
- // src/elements/video/html-video.tsx
605
- var import_react12 = __toESM(require("react"));
606
- function HTMLVideo(props) {
607
- let { src, type, controls, autoPlay, loop, muted } = props;
608
- return /* @__PURE__ */ import_react12.default.createElement(
609
- "video",
610
- {
611
- controls,
612
- autoPlay,
613
- loop,
614
- muted,
615
- controlsList: "nodownload",
616
- disablePictureInPicture: true
617
- },
618
- /* @__PURE__ */ import_react12.default.createElement("source", { src, type: type || "video/mp4" }),
619
- /* @__PURE__ */ import_react12.default.createElement("source", { src, type: "video/ogg" }),
620
- "Your browser does not support the video tag."
621
- );
622
- }
623
-
624
- // src/elements/video/vimeo.tsx
625
- var import_react13 = __toESM(require("react"));
626
- function Vimeo(props) {
627
- let { vimeoId, controls, autoPlay, loop, muted } = props;
628
- let params = `autoplay=${autoPlay}&loop=${loop}&controls=${controls}&muted=${muted}`;
629
- let vimeoSrc = `https://player.vimeo.com/video/${vimeoId}?${params}`;
630
- return /* @__PURE__ */ import_react13.default.createElement("iframe", { src: vimeoSrc, width: "100%", height: "100%", allowFullScreen: true });
631
- }
632
-
633
- // src/elements/video/youtube.tsx
634
- var import_react14 = __toESM(require("react"));
635
- function Youtube(props) {
636
- let { youtubeId, controls, autoPlay, loop, muted } = props;
637
- let params = new URLSearchParams({
638
- autoplay: autoPlay ? "1" : "0",
639
- controls: controls ? "1" : "0",
640
- loop: loop ? "1" : "0",
641
- mute: muted ? "1" : "0"
642
- });
643
- let youtubeSrc = `https://www.youtube.com/embed/${youtubeId}?playlist=${youtubeId}&${params.toString()}`;
644
- let allow = `accelerometer;${autoPlay ? "autoplay;" : ""} clipboard-write; encrypted-media; gyroscope; picture-in-picture`;
645
- return /* @__PURE__ */ import_react14.default.createElement("iframe", { src: youtubeSrc, width: "100%", height: "100%", allow });
646
- }
647
-
648
- // src/elements/video/index.tsx
649
- var Video = (0, import_react15.forwardRef)((props, ref) => {
650
- let { isDesignMode } = (0, import_react15.useContext)(WeaverseContext);
651
- let {
652
- src,
653
- controls,
654
- poster,
655
- autoPlay: originAutoPlay,
656
- loop,
657
- muted,
658
- ...rest
659
- } = props;
660
- let autoPlay = !isDesignMode && originAutoPlay;
661
- let videoProps = { src, controls, poster, autoPlay, loop, muted };
662
- let content;
663
- let youtubeId = getYoutubeEmbedId(src);
664
- let vimeoId = getVimeoId(src);
665
- if (youtubeId) {
666
- content = /* @__PURE__ */ import_react15.default.createElement(Youtube, { ...videoProps, youtubeId });
667
- } else if (vimeoId) {
668
- content = /* @__PURE__ */ import_react15.default.createElement(Vimeo, { ...videoProps, vimeoId });
669
- } else {
670
- content = /* @__PURE__ */ import_react15.default.createElement(HTMLVideo, { ...videoProps });
671
- }
672
- return /* @__PURE__ */ import_react15.default.createElement("div", { ref, ...rest }, content);
673
- });
674
- var css9 = {
675
- "@desktop": {
676
- video: {
677
- height: "100%",
678
- width: "100%",
679
- aspectRatio: "16 / 9"
680
- },
681
- iframe: {
682
- border: "none"
683
- }
684
- },
685
- "@mobile": {
686
- iframe: {
687
- border: "none"
688
- }
689
- }
690
- };
691
- Video.defaultProps = {
692
- src: "https://youtu.be/wM-NT6hcw48",
693
- poster: "https://ucarecdn.com/c413b8fe-ceec-4948-9c42-a0434c4ca920/-/preview/-/quality/smart/-/format/auto/",
694
- loop: false,
695
- controls: false,
696
- autoPlay: true,
697
- muted: true
698
- };
699
- var video_default = Video;
700
-
701
- // src/elements/instagram.tsx
702
- var import_react31 = __toESM(require("react"));
703
-
704
- // src/components/modal/index.tsx
705
- var modal_exports = {};
706
- __export(modal_exports, {
707
- Modal: () => Modal,
708
- ModalClose: () => ModalClose,
709
- ModalContent: () => ModalContent,
710
- ModalHeader: () => ModalHeader,
711
- ModalTrigger: () => ModalTrigger
712
- });
713
- var import_react_dialog2 = require("@radix-ui/react-dialog");
714
- var import_react20 = __toESM(require("react"));
715
-
716
- // src/components/icons/index.tsx
717
- var import_react17 = __toESM(require("react"));
718
-
719
- // src/components/icons/phosphor.tsx
720
- var phosphor_exports = {};
721
- __export(phosphor_exports, {
722
- ArrowLeft: () => ArrowLeft,
723
- ArrowRight: () => ArrowRight,
724
- Backpack: () => Backpack,
725
- CaretLeft: () => CaretLeft,
726
- CaretRight: () => CaretRight,
727
- Circle: () => Circle,
728
- CircleNotch: () => CircleNotch,
729
- Eye: () => Eye,
730
- HandBag: () => HandBag,
731
- Image: () => Image2,
732
- Minus: () => Minus,
733
- Newspaper: () => Newspaper,
734
- Package: () => Package,
735
- Plus: () => Plus,
736
- ShoppingCart: () => ShoppingCart,
737
- Storefront: () => Storefront,
738
- Tag: () => Tag,
739
- X: () => X
740
- });
741
- var import_react16 = __toESM(require("react"));
742
- var Circle = (props) => {
743
- return /* @__PURE__ */ import_react16.default.createElement(
744
- "svg",
745
- {
746
- xmlns: "http://www.w3.org/2000/svg",
747
- width: "192",
748
- height: "192",
749
- fill: "currentColor",
750
- viewBox: "0 0 256 256",
751
- ...props
752
- },
753
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
754
- /* @__PURE__ */ import_react16.default.createElement("circle", { cx: "128", cy: "128", r: "104" })
755
- );
756
- };
757
- var CircleNotch = (props) => {
758
- return /* @__PURE__ */ import_react16.default.createElement(
759
- "svg",
760
- {
761
- xmlns: "http://www.w3.org/2000/svg",
762
- fill: "none",
763
- viewBox: "0 0 24 24",
764
- ...props
765
- },
766
- /* @__PURE__ */ import_react16.default.createElement(
767
- "circle",
768
- {
769
- style: { opacity: ".25" },
770
- cx: "12",
771
- cy: "12",
772
- r: "10",
773
- stroke: "currentColor",
774
- strokeWidth: "4"
775
- }
776
- ),
777
- /* @__PURE__ */ import_react16.default.createElement(
778
- "path",
779
- {
780
- style: { opacity: ".75" },
781
- fill: "currentColor",
782
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
783
- }
784
- )
785
- );
786
- };
787
- var X = (props) => {
788
- return /* @__PURE__ */ import_react16.default.createElement(
789
- "svg",
790
- {
791
- xmlns: "http://www.w3.org/2000/svg",
792
- width: "20",
793
- height: "20",
794
- fill: "currentColor",
795
- viewBox: "0 0 256 256",
796
- ...props
797
- },
798
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
799
- /* @__PURE__ */ import_react16.default.createElement(
800
- "line",
801
- {
802
- x1: "200",
803
- y1: "56",
804
- x2: "56",
805
- y2: "200",
806
- fill: "none",
807
- stroke: "currentColor",
808
- strokeLinecap: "round",
809
- strokeLinejoin: "round",
810
- strokeWidth: "12"
811
- }
812
- ),
813
- /* @__PURE__ */ import_react16.default.createElement(
814
- "line",
815
- {
816
- x1: "200",
817
- y1: "200",
818
- x2: "56",
819
- y2: "56",
820
- fill: "none",
821
- stroke: "currentColor",
822
- strokeLinecap: "round",
823
- strokeLinejoin: "round",
824
- strokeWidth: "12"
825
- }
826
- )
827
- );
211
+ ),
212
+ /* @__PURE__ */ import_react2.default.createElement(
213
+ "line",
214
+ {
215
+ x1: "200",
216
+ y1: "200",
217
+ x2: "56",
218
+ y2: "56",
219
+ fill: "none",
220
+ stroke: "currentColor",
221
+ strokeLinecap: "round",
222
+ strokeLinejoin: "round",
223
+ strokeWidth: "12"
224
+ }
225
+ )
226
+ );
828
227
  };
829
228
  var Minus = (props) => {
830
- return /* @__PURE__ */ import_react16.default.createElement(
229
+ return /* @__PURE__ */ import_react2.default.createElement(
831
230
  "svg",
832
231
  {
833
232
  xmlns: "http://www.w3.org/2000/svg",
@@ -837,8 +236,8 @@ var Minus = (props) => {
837
236
  viewBox: "0 0 256 256",
838
237
  ...props
839
238
  },
840
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
841
- /* @__PURE__ */ import_react16.default.createElement(
239
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
240
+ /* @__PURE__ */ import_react2.default.createElement(
842
241
  "line",
843
242
  {
844
243
  x1: "40",
@@ -855,7 +254,7 @@ var Minus = (props) => {
855
254
  );
856
255
  };
857
256
  var Plus = (props) => {
858
- return /* @__PURE__ */ import_react16.default.createElement(
257
+ return /* @__PURE__ */ import_react2.default.createElement(
859
258
  "svg",
860
259
  {
861
260
  xmlns: "http://www.w3.org/2000/svg",
@@ -865,8 +264,8 @@ var Plus = (props) => {
865
264
  viewBox: "0 0 256 256",
866
265
  ...props
867
266
  },
868
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
869
- /* @__PURE__ */ import_react16.default.createElement(
267
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
268
+ /* @__PURE__ */ import_react2.default.createElement(
870
269
  "line",
871
270
  {
872
271
  x1: "40",
@@ -880,7 +279,7 @@ var Plus = (props) => {
880
279
  strokeWidth: "16"
881
280
  }
882
281
  ),
883
- /* @__PURE__ */ import_react16.default.createElement(
282
+ /* @__PURE__ */ import_react2.default.createElement(
884
283
  "line",
885
284
  {
886
285
  x1: "128",
@@ -897,7 +296,7 @@ var Plus = (props) => {
897
296
  );
898
297
  };
899
298
  var CaretLeft = (props) => {
900
- return /* @__PURE__ */ import_react16.default.createElement(
299
+ return /* @__PURE__ */ import_react2.default.createElement(
901
300
  "svg",
902
301
  {
903
302
  xmlns: "http://www.w3.org/2000/svg",
@@ -907,8 +306,8 @@ var CaretLeft = (props) => {
907
306
  viewBox: "0 0 256 256",
908
307
  ...props
909
308
  },
910
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
911
- /* @__PURE__ */ import_react16.default.createElement(
309
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
310
+ /* @__PURE__ */ import_react2.default.createElement(
912
311
  "polyline",
913
312
  {
914
313
  points: "160 208 80 128 160 48",
@@ -922,7 +321,7 @@ var CaretLeft = (props) => {
922
321
  );
923
322
  };
924
323
  var CaretRight = (props) => {
925
- return /* @__PURE__ */ import_react16.default.createElement(
324
+ return /* @__PURE__ */ import_react2.default.createElement(
926
325
  "svg",
927
326
  {
928
327
  xmlns: "http://www.w3.org/2000/svg",
@@ -932,8 +331,8 @@ var CaretRight = (props) => {
932
331
  viewBox: "0 0 256 256",
933
332
  ...props
934
333
  },
935
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
936
- /* @__PURE__ */ import_react16.default.createElement(
334
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
335
+ /* @__PURE__ */ import_react2.default.createElement(
937
336
  "polyline",
938
337
  {
939
338
  points: "96 48 176 128 96 208",
@@ -947,7 +346,7 @@ var CaretRight = (props) => {
947
346
  );
948
347
  };
949
348
  var ArrowLeft = (props) => {
950
- return /* @__PURE__ */ import_react16.default.createElement(
349
+ return /* @__PURE__ */ import_react2.default.createElement(
951
350
  "svg",
952
351
  {
953
352
  xmlns: "http://www.w3.org/2000/svg",
@@ -957,8 +356,8 @@ var ArrowLeft = (props) => {
957
356
  viewBox: "0 0 256 256",
958
357
  ...props
959
358
  },
960
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
961
- /* @__PURE__ */ import_react16.default.createElement(
359
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
360
+ /* @__PURE__ */ import_react2.default.createElement(
962
361
  "line",
963
362
  {
964
363
  x1: "216",
@@ -972,7 +371,7 @@ var ArrowLeft = (props) => {
972
371
  strokeWidth: "16"
973
372
  }
974
373
  ),
975
- /* @__PURE__ */ import_react16.default.createElement(
374
+ /* @__PURE__ */ import_react2.default.createElement(
976
375
  "polyline",
977
376
  {
978
377
  points: "112 56 40 128 112 200",
@@ -986,7 +385,7 @@ var ArrowLeft = (props) => {
986
385
  );
987
386
  };
988
387
  var ArrowRight = (props) => {
989
- return /* @__PURE__ */ import_react16.default.createElement(
388
+ return /* @__PURE__ */ import_react2.default.createElement(
990
389
  "svg",
991
390
  {
992
391
  xmlns: "http://www.w3.org/2000/svg",
@@ -996,8 +395,8 @@ var ArrowRight = (props) => {
996
395
  viewBox: "0 0 256 256",
997
396
  ...props
998
397
  },
999
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1000
- /* @__PURE__ */ import_react16.default.createElement(
398
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
399
+ /* @__PURE__ */ import_react2.default.createElement(
1001
400
  "line",
1002
401
  {
1003
402
  x1: "40",
@@ -1011,7 +410,7 @@ var ArrowRight = (props) => {
1011
410
  strokeWidth: "16"
1012
411
  }
1013
412
  ),
1014
- /* @__PURE__ */ import_react16.default.createElement(
413
+ /* @__PURE__ */ import_react2.default.createElement(
1015
414
  "polyline",
1016
415
  {
1017
416
  points: "144 56 216 128 144 200",
@@ -1024,8 +423,8 @@ var ArrowRight = (props) => {
1024
423
  )
1025
424
  );
1026
425
  };
1027
- var Image2 = (props) => {
1028
- return /* @__PURE__ */ import_react16.default.createElement(
426
+ var Image = (props) => {
427
+ return /* @__PURE__ */ import_react2.default.createElement(
1029
428
  "svg",
1030
429
  {
1031
430
  xmlns: "http://www.w3.org/2000/svg",
@@ -1034,11 +433,11 @@ var Image2 = (props) => {
1034
433
  viewBox: "0 0 640 512",
1035
434
  ...props
1036
435
  },
1037
- /* @__PURE__ */ import_react16.default.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" })
436
+ /* @__PURE__ */ import_react2.default.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" })
1038
437
  );
1039
438
  };
1040
439
  var ShoppingCart = (props) => {
1041
- return /* @__PURE__ */ import_react16.default.createElement(
440
+ return /* @__PURE__ */ import_react2.default.createElement(
1042
441
  "svg",
1043
442
  {
1044
443
  xmlns: "http://www.w3.org/2000/svg",
@@ -1048,8 +447,8 @@ var ShoppingCart = (props) => {
1048
447
  viewBox: "0 0 256 256",
1049
448
  ...props
1050
449
  },
1051
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1052
- /* @__PURE__ */ import_react16.default.createElement(
450
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
451
+ /* @__PURE__ */ import_react2.default.createElement(
1053
452
  "path",
1054
453
  {
1055
454
  d: "M184,184H69.8L41.9,30.6A8,8,0,0,0,34.1,24H16",
@@ -1060,7 +459,7 @@ var ShoppingCart = (props) => {
1060
459
  strokeWidth: "16"
1061
460
  }
1062
461
  ),
1063
- /* @__PURE__ */ import_react16.default.createElement(
462
+ /* @__PURE__ */ import_react2.default.createElement(
1064
463
  "circle",
1065
464
  {
1066
465
  cx: "80",
@@ -1073,7 +472,7 @@ var ShoppingCart = (props) => {
1073
472
  strokeWidth: "16"
1074
473
  }
1075
474
  ),
1076
- /* @__PURE__ */ import_react16.default.createElement(
475
+ /* @__PURE__ */ import_react2.default.createElement(
1077
476
  "circle",
1078
477
  {
1079
478
  cx: "184",
@@ -1086,7 +485,7 @@ var ShoppingCart = (props) => {
1086
485
  strokeWidth: "16"
1087
486
  }
1088
487
  ),
1089
- /* @__PURE__ */ import_react16.default.createElement(
488
+ /* @__PURE__ */ import_react2.default.createElement(
1090
489
  "path",
1091
490
  {
1092
491
  d: "M62.5,144H188.1a15.9,15.9,0,0,0,15.7-13.1L216,64H48",
@@ -1100,7 +499,7 @@ var ShoppingCart = (props) => {
1100
499
  );
1101
500
  };
1102
501
  var Storefront = (props) => {
1103
- return /* @__PURE__ */ import_react16.default.createElement(
502
+ return /* @__PURE__ */ import_react2.default.createElement(
1104
503
  "svg",
1105
504
  {
1106
505
  xmlns: "http://www.w3.org/2000/svg",
@@ -1110,8 +509,8 @@ var Storefront = (props) => {
1110
509
  viewBox: "0 0 256 256",
1111
510
  ...props
1112
511
  },
1113
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1114
- /* @__PURE__ */ import_react16.default.createElement(
512
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
513
+ /* @__PURE__ */ import_react2.default.createElement(
1115
514
  "path",
1116
515
  {
1117
516
  d: "M48,139.6V208a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V139.6",
@@ -1122,7 +521,7 @@ var Storefront = (props) => {
1122
521
  strokeWidth: "12"
1123
522
  }
1124
523
  ),
1125
- /* @__PURE__ */ import_react16.default.createElement(
524
+ /* @__PURE__ */ import_react2.default.createElement(
1126
525
  "path",
1127
526
  {
1128
527
  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",
@@ -1133,7 +532,7 @@ var Storefront = (props) => {
1133
532
  strokeWidth: "12"
1134
533
  }
1135
534
  ),
1136
- /* @__PURE__ */ import_react16.default.createElement(
535
+ /* @__PURE__ */ import_react2.default.createElement(
1137
536
  "path",
1138
537
  {
1139
538
  d: "M96,96v16a32,32,0,0,1-64,0V96",
@@ -1144,7 +543,7 @@ var Storefront = (props) => {
1144
543
  strokeWidth: "12"
1145
544
  }
1146
545
  ),
1147
- /* @__PURE__ */ import_react16.default.createElement(
546
+ /* @__PURE__ */ import_react2.default.createElement(
1148
547
  "path",
1149
548
  {
1150
549
  d: "M160,96v16a32,32,0,0,1-64,0V96",
@@ -1155,7 +554,7 @@ var Storefront = (props) => {
1155
554
  strokeWidth: "12"
1156
555
  }
1157
556
  ),
1158
- /* @__PURE__ */ import_react16.default.createElement(
557
+ /* @__PURE__ */ import_react2.default.createElement(
1159
558
  "path",
1160
559
  {
1161
560
  d: "M224,96v16a32,32,0,0,1-64,0V96",
@@ -1169,7 +568,7 @@ var Storefront = (props) => {
1169
568
  );
1170
569
  };
1171
570
  var Package = (props) => {
1172
- return /* @__PURE__ */ import_react16.default.createElement(
571
+ return /* @__PURE__ */ import_react2.default.createElement(
1173
572
  "svg",
1174
573
  {
1175
574
  xmlns: "http://www.w3.org/2000/svg",
@@ -1179,8 +578,8 @@ var Package = (props) => {
1179
578
  viewBox: "0 0 256 256",
1180
579
  ...props
1181
580
  },
1182
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1183
- /* @__PURE__ */ import_react16.default.createElement(
581
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
582
+ /* @__PURE__ */ import_react2.default.createElement(
1184
583
  "path",
1185
584
  {
1186
585
  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",
@@ -1191,7 +590,7 @@ var Package = (props) => {
1191
590
  strokeWidth: "8"
1192
591
  }
1193
592
  ),
1194
- /* @__PURE__ */ import_react16.default.createElement(
593
+ /* @__PURE__ */ import_react2.default.createElement(
1195
594
  "polyline",
1196
595
  {
1197
596
  points: "177 152.5 177 100.5 80 47",
@@ -1202,7 +601,7 @@ var Package = (props) => {
1202
601
  strokeWidth: "8"
1203
602
  }
1204
603
  ),
1205
- /* @__PURE__ */ import_react16.default.createElement(
604
+ /* @__PURE__ */ import_react2.default.createElement(
1206
605
  "polyline",
1207
606
  {
1208
607
  points: "222.9 74.6 128.9 128 33.1 74.6",
@@ -1213,7 +612,7 @@ var Package = (props) => {
1213
612
  strokeWidth: "8"
1214
613
  }
1215
614
  ),
1216
- /* @__PURE__ */ import_react16.default.createElement(
615
+ /* @__PURE__ */ import_react2.default.createElement(
1217
616
  "line",
1218
617
  {
1219
618
  x1: "128.9",
@@ -1230,7 +629,7 @@ var Package = (props) => {
1230
629
  );
1231
630
  };
1232
631
  var HandBag = (props) => {
1233
- return /* @__PURE__ */ import_react16.default.createElement(
632
+ return /* @__PURE__ */ import_react2.default.createElement(
1234
633
  "svg",
1235
634
  {
1236
635
  xmlns: "http://www.w3.org/2000/svg",
@@ -1240,8 +639,8 @@ var HandBag = (props) => {
1240
639
  viewBox: "0 0 256 256",
1241
640
  ...props
1242
641
  },
1243
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1244
- /* @__PURE__ */ import_react16.default.createElement(
642
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
643
+ /* @__PURE__ */ import_react2.default.createElement(
1245
644
  "path",
1246
645
  {
1247
646
  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",
@@ -1252,7 +651,7 @@ var HandBag = (props) => {
1252
651
  strokeWidth: "16"
1253
652
  }
1254
653
  ),
1255
- /* @__PURE__ */ import_react16.default.createElement(
654
+ /* @__PURE__ */ import_react2.default.createElement(
1256
655
  "path",
1257
656
  {
1258
657
  d: "M88,104V72a40,40,0,0,1,80,0v32",
@@ -1266,7 +665,7 @@ var HandBag = (props) => {
1266
665
  );
1267
666
  };
1268
667
  var Tag = (props) => {
1269
- return /* @__PURE__ */ import_react16.default.createElement(
668
+ return /* @__PURE__ */ import_react2.default.createElement(
1270
669
  "svg",
1271
670
  {
1272
671
  xmlns: "http://www.w3.org/2000/svg",
@@ -1276,8 +675,8 @@ var Tag = (props) => {
1276
675
  viewBox: "0 0 256 256",
1277
676
  ...props
1278
677
  },
1279
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1280
- /* @__PURE__ */ import_react16.default.createElement(
678
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
679
+ /* @__PURE__ */ import_react2.default.createElement(
1281
680
  "path",
1282
681
  {
1283
682
  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",
@@ -1288,11 +687,11 @@ var Tag = (props) => {
1288
687
  strokeWidth: "16"
1289
688
  }
1290
689
  ),
1291
- /* @__PURE__ */ import_react16.default.createElement("circle", { cx: "84", cy: "84", r: "12" })
690
+ /* @__PURE__ */ import_react2.default.createElement("circle", { cx: "84", cy: "84", r: "12" })
1292
691
  );
1293
692
  };
1294
693
  var Backpack = (props) => {
1295
- return /* @__PURE__ */ import_react16.default.createElement(
694
+ return /* @__PURE__ */ import_react2.default.createElement(
1296
695
  "svg",
1297
696
  {
1298
697
  xmlns: "http://www.w3.org/2000/svg",
@@ -1302,8 +701,8 @@ var Backpack = (props) => {
1302
701
  viewBox: "0 0 256 256",
1303
702
  ...props
1304
703
  },
1305
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1306
- /* @__PURE__ */ import_react16.default.createElement(
704
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
705
+ /* @__PURE__ */ import_react2.default.createElement(
1307
706
  "path",
1308
707
  {
1309
708
  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",
@@ -1314,7 +713,7 @@ var Backpack = (props) => {
1314
713
  strokeWidth: "12"
1315
714
  }
1316
715
  ),
1317
- /* @__PURE__ */ import_react16.default.createElement(
716
+ /* @__PURE__ */ import_react2.default.createElement(
1318
717
  "path",
1319
718
  {
1320
719
  d: "M80,224V152a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v72",
@@ -1325,7 +724,7 @@ var Backpack = (props) => {
1325
724
  strokeWidth: "12"
1326
725
  }
1327
726
  ),
1328
- /* @__PURE__ */ import_react16.default.createElement(
727
+ /* @__PURE__ */ import_react2.default.createElement(
1329
728
  "path",
1330
729
  {
1331
730
  d: "M96,48V32a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V48",
@@ -1336,7 +735,7 @@ var Backpack = (props) => {
1336
735
  strokeWidth: "12"
1337
736
  }
1338
737
  ),
1339
- /* @__PURE__ */ import_react16.default.createElement(
738
+ /* @__PURE__ */ import_react2.default.createElement(
1340
739
  "line",
1341
740
  {
1342
741
  x1: "112",
@@ -1350,7 +749,7 @@ var Backpack = (props) => {
1350
749
  strokeWidth: "12"
1351
750
  }
1352
751
  ),
1353
- /* @__PURE__ */ import_react16.default.createElement(
752
+ /* @__PURE__ */ import_react2.default.createElement(
1354
753
  "line",
1355
754
  {
1356
755
  x1: "80",
@@ -1364,7 +763,7 @@ var Backpack = (props) => {
1364
763
  strokeWidth: "12"
1365
764
  }
1366
765
  ),
1367
- /* @__PURE__ */ import_react16.default.createElement(
766
+ /* @__PURE__ */ import_react2.default.createElement(
1368
767
  "line",
1369
768
  {
1370
769
  x1: "144",
@@ -1381,601 +780,1200 @@ var Backpack = (props) => {
1381
780
  );
1382
781
  };
1383
782
  var Newspaper = (props) => {
1384
- return /* @__PURE__ */ import_react16.default.createElement(
783
+ return /* @__PURE__ */ import_react2.default.createElement(
784
+ "svg",
785
+ {
786
+ xmlns: "http://www.w3.org/2000/svg",
787
+ width: "192",
788
+ height: "192",
789
+ fill: "currentColor",
790
+ viewBox: "0 0 256 256",
791
+ ...props
792
+ },
793
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
794
+ /* @__PURE__ */ import_react2.default.createElement(
795
+ "line",
796
+ {
797
+ x1: "96",
798
+ y1: "112",
799
+ x2: "176",
800
+ y2: "112",
801
+ fill: "none",
802
+ stroke: "currentColor",
803
+ strokeLinecap: "round",
804
+ strokeLinejoin: "round",
805
+ strokeWidth: "8"
806
+ }
807
+ ),
808
+ /* @__PURE__ */ import_react2.default.createElement(
809
+ "line",
810
+ {
811
+ x1: "96",
812
+ y1: "144",
813
+ x2: "176",
814
+ y2: "144",
815
+ fill: "none",
816
+ stroke: "currentColor",
817
+ strokeLinecap: "round",
818
+ strokeLinejoin: "round",
819
+ strokeWidth: "8"
820
+ }
821
+ ),
822
+ /* @__PURE__ */ import_react2.default.createElement(
823
+ "path",
824
+ {
825
+ 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",
826
+ fill: "none",
827
+ stroke: "currentColor",
828
+ strokeLinecap: "round",
829
+ strokeLinejoin: "round",
830
+ strokeWidth: "8"
831
+ }
832
+ ),
833
+ /* @__PURE__ */ import_react2.default.createElement(
834
+ "path",
835
+ {
836
+ d: "M32,200a16,16,0,0,1-16-16h0V88",
837
+ fill: "none",
838
+ stroke: "currentColor",
839
+ strokeLinecap: "round",
840
+ strokeLinejoin: "round",
841
+ strokeWidth: "8"
842
+ }
843
+ )
844
+ );
845
+ };
846
+ var Eye = (props) => {
847
+ return /* @__PURE__ */ import_react2.default.createElement(
1385
848
  "svg",
1386
849
  {
1387
- xmlns: "http://www.w3.org/2000/svg",
1388
- width: "192",
1389
- height: "192",
1390
- fill: "currentColor",
1391
- viewBox: "0 0 256 256",
1392
- ...props
850
+ xmlns: "http://www.w3.org/2000/svg",
851
+ width: "192",
852
+ height: "192",
853
+ fill: "currentColor",
854
+ viewBox: "0 0 256 256",
855
+ ...props
856
+ },
857
+ /* @__PURE__ */ import_react2.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
858
+ /* @__PURE__ */ import_react2.default.createElement(
859
+ "path",
860
+ {
861
+ d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
862
+ fill: "none",
863
+ stroke: "currentColor",
864
+ strokeLinecap: "round",
865
+ strokeLinejoin: "round",
866
+ strokeWidth: "12"
867
+ }
868
+ ),
869
+ /* @__PURE__ */ import_react2.default.createElement(
870
+ "circle",
871
+ {
872
+ cx: "128",
873
+ cy: "128",
874
+ r: "40",
875
+ fill: "none",
876
+ stroke: "currentColor",
877
+ strokeLinecap: "round",
878
+ strokeLinejoin: "round",
879
+ strokeWidth: "12"
880
+ }
881
+ )
882
+ );
883
+ };
884
+
885
+ // src/components/icons/index.tsx
886
+ var import_clsx = __toESM(require("clsx"));
887
+ function Icon({ name, className, ...props }) {
888
+ let WeaverseIcon = phosphor_exports[name];
889
+ let cls = (0, import_clsx.default)("wv-icon", className);
890
+ return /* @__PURE__ */ import_react3.default.createElement(WeaverseIcon, { className: cls, ...props });
891
+ }
892
+
893
+ // src/components/modal/styled.ts
894
+ var import_react_dialog = require("@radix-ui/react-dialog");
895
+ var import_react4 = require("@stitches/react");
896
+ var overlayShow = (0, import_react4.keyframes)({
897
+ "0%": { opacity: 0 },
898
+ "100%": { opacity: 1 }
899
+ });
900
+ var contentShow = (0, import_react4.keyframes)({
901
+ "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
902
+ "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
903
+ });
904
+ var StyledOverlay = (0, import_react4.styled)(import_react_dialog.Overlay, {
905
+ display: "block !important",
906
+ backgroundColor: "rgba(0, 0, 0, .3)",
907
+ position: "fixed",
908
+ zIndex: 99999,
909
+ inset: 0,
910
+ animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
911
+ });
912
+ var StyledTitle = (0, import_react4.styled)(import_react_dialog.Title, {
913
+ margin: "0 0 24px",
914
+ fontWeight: 500,
915
+ fontSize: 24,
916
+ "@media (max-width: 768px)": {
917
+ margin: "0 0 16px",
918
+ fontSize: 20
919
+ }
920
+ });
921
+ var StyledContent = (0, import_react4.styled)(import_react_dialog.Content, {
922
+ backgroundColor: "white",
923
+ borderRadius: 6,
924
+ boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
925
+ position: "fixed",
926
+ top: "50%",
927
+ left: "50%",
928
+ transform: "translate(-50%, -50%)",
929
+ padding: 24,
930
+ animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
931
+ zIndex: 99999,
932
+ maxWidth: "90vw",
933
+ width: "auto",
934
+ "*": {
935
+ maxWidth: "100%"
936
+ },
937
+ "&:focus": { outline: "none" },
938
+ '&[data-size="fullscreen"]': {
939
+ width: "100vw",
940
+ height: "100vh",
941
+ maxWidth: "100vw",
942
+ borderRadius: 0
943
+ },
944
+ "@media (max-width: 768px)": {
945
+ width: "90vw",
946
+ padding: 12,
947
+ '&[data-size="fullscreen"]': {
948
+ width: "100vw"
949
+ }
950
+ }
951
+ });
952
+ var StyledCloseIcon = (0, import_react4.styled)("button", {
953
+ all: "unset",
954
+ cursor: "pointer",
955
+ fontFamily: "inherit",
956
+ borderRadius: "100%",
957
+ height: 32,
958
+ width: 32,
959
+ padding: 4,
960
+ display: "inline-flex",
961
+ alignItems: "center",
962
+ justifyContent: "center",
963
+ color: "rgb(55, 65, 81)",
964
+ position: "absolute",
965
+ top: 8,
966
+ right: 8,
967
+ "&:hover": {
968
+ backgroundColor: "rgba(112, 112, 112, .1)"
969
+ },
970
+ svg: {
971
+ width: 24,
972
+ height: 24
973
+ }
974
+ });
975
+
976
+ // src/components/modal/use-open-change-effect.ts
977
+ var import_react5 = require("react");
978
+ function useOpenChangeEffect(props) {
979
+ let { open, defaultOpen, onOpenChange } = props;
980
+ let rootCtx = (0, import_react5.useContext)(WeaverseContext);
981
+ let toggleRootzIndex = (open2) => {
982
+ let { contentRootElement } = rootCtx;
983
+ if (contentRootElement) {
984
+ if (open2) {
985
+ contentRootElement.classList.add("modal-open");
986
+ } else {
987
+ contentRootElement.classList.remove("modal-open");
988
+ }
989
+ }
990
+ };
991
+ (0, import_react5.useEffect)(() => {
992
+ let isOpen = open || defaultOpen;
993
+ toggleRootzIndex(isOpen);
994
+ }, [open, defaultOpen]);
995
+ let handleOpenChange = (open2) => {
996
+ toggleRootzIndex(open2);
997
+ onOpenChange?.(open2);
998
+ };
999
+ return handleOpenChange;
1000
+ }
1001
+
1002
+ // src/components/modal/index.tsx
1003
+ var Modal = (props) => {
1004
+ let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1005
+ let handleOpenChange = useOpenChangeEffect(props);
1006
+ return /* @__PURE__ */ import_react6.default.createElement(
1007
+ import_react_dialog2.Root,
1008
+ {
1009
+ open,
1010
+ defaultOpen,
1011
+ onOpenChange: handleOpenChange,
1012
+ ...rest
1393
1013
  },
1394
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1395
- /* @__PURE__ */ import_react16.default.createElement(
1396
- "line",
1397
- {
1398
- x1: "96",
1399
- y1: "112",
1400
- x2: "176",
1401
- y2: "112",
1402
- fill: "none",
1403
- stroke: "currentColor",
1404
- strokeLinecap: "round",
1405
- strokeLinejoin: "round",
1406
- strokeWidth: "8"
1407
- }
1408
- ),
1409
- /* @__PURE__ */ import_react16.default.createElement(
1410
- "line",
1411
- {
1412
- x1: "96",
1413
- y1: "144",
1414
- x2: "176",
1415
- y2: "144",
1416
- fill: "none",
1417
- stroke: "currentColor",
1418
- strokeLinecap: "round",
1419
- strokeLinejoin: "round",
1420
- strokeWidth: "8"
1421
- }
1422
- ),
1423
- /* @__PURE__ */ import_react16.default.createElement(
1424
- "path",
1014
+ children
1015
+ );
1016
+ };
1017
+ var ModalTrigger = import_react_dialog2.Trigger;
1018
+ var ModalHeader = (0, import_react6.forwardRef)(
1019
+ (props, ref) => {
1020
+ let { children, ...rest } = props;
1021
+ return /* @__PURE__ */ import_react6.default.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
1022
+ }
1023
+ );
1024
+ var ModalContent = (0, import_react6.forwardRef)(
1025
+ (props, ref) => {
1026
+ let { children, size, portal, ...rest } = props;
1027
+ let modalContent = /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react6.default.createElement(
1028
+ StyledContent,
1425
1029
  {
1426
- 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",
1427
- fill: "none",
1428
- stroke: "currentColor",
1429
- strokeLinecap: "round",
1430
- strokeLinejoin: "round",
1431
- strokeWidth: "8"
1030
+ ...rest,
1031
+ onCloseAutoFocus: (e) => e.preventDefault(),
1032
+ "data-wv-modal": true,
1033
+ "data-size": size,
1034
+ ref
1035
+ },
1036
+ /* @__PURE__ */ import_react6.default.createElement(ModalClose, null),
1037
+ /* @__PURE__ */ import_react6.default.createElement("div", { className: "wv-modal-content" }, children)
1038
+ ));
1039
+ if (portal) {
1040
+ return /* @__PURE__ */ import_react6.default.createElement(import_react_dialog2.Portal, null, modalContent);
1041
+ }
1042
+ return modalContent;
1043
+ }
1044
+ );
1045
+ ModalContent.defaultProps = {
1046
+ size: "auto",
1047
+ portal: false
1048
+ };
1049
+ var ModalClose = (0, import_react6.forwardRef)(
1050
+ (props, ref) => {
1051
+ let { asChild, children, ...rest } = props;
1052
+ let closeIcon = /* @__PURE__ */ import_react6.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react6.default.createElement(Icon, { name: "X" }));
1053
+ return /* @__PURE__ */ import_react6.default.createElement(import_react_dialog2.Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
1054
+ }
1055
+ );
1056
+
1057
+ // src/components/spinner.tsx
1058
+ var import_react7 = __toESM(require("react"));
1059
+ function Spinner() {
1060
+ return /* @__PURE__ */ import_react7.default.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ import_react7.default.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
1061
+ }
1062
+
1063
+ // src/components/tooltip.tsx
1064
+ var import_react8 = __toESM(require("react"));
1065
+ function Tooltip({ children }) {
1066
+ return /* @__PURE__ */ import_react8.default.createElement("span", { className: "wv-tooltip" }, children);
1067
+ }
1068
+
1069
+ // src/components/slider/index.tsx
1070
+ var import_clsx3 = __toESM(require("clsx"));
1071
+ var import_react11 = require("keen-slider/react");
1072
+ var import_react12 = __toESM(require("react"));
1073
+
1074
+ // src/components/slider/arrows.tsx
1075
+ var import_react9 = require("@stitches/react");
1076
+ var import_clsx2 = __toESM(require("clsx"));
1077
+ var import_react10 = __toESM(require("react"));
1078
+ function Arrows(props) {
1079
+ let { currentSlide, instanceRef, className, icon, offset } = props;
1080
+ let isFirst = currentSlide === 0;
1081
+ let isLast = false;
1082
+ if (instanceRef.current) {
1083
+ isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1084
+ }
1085
+ let style = {
1086
+ "--offset": `${offset}px`
1087
+ };
1088
+ return /* @__PURE__ */ import_react10.default.createElement(StyledArrows, { className, style }, /* @__PURE__ */ import_react10.default.createElement(
1089
+ "button",
1090
+ {
1091
+ type: "button",
1092
+ className: (0, import_clsx2.default)("arrow arrow--left", isFirst && "arrow--disabled"),
1093
+ onClick: (e) => {
1094
+ e.stopPropagation();
1095
+ instanceRef?.current?.prev();
1432
1096
  }
1433
- ),
1434
- /* @__PURE__ */ import_react16.default.createElement(
1435
- "path",
1436
- {
1437
- d: "M32,200a16,16,0,0,1-16-16h0V88",
1438
- fill: "none",
1439
- stroke: "currentColor",
1440
- strokeLinecap: "round",
1441
- strokeLinejoin: "round",
1442
- strokeWidth: "8"
1097
+ },
1098
+ /* @__PURE__ */ import_react10.default.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1099
+ ), /* @__PURE__ */ import_react10.default.createElement(
1100
+ "button",
1101
+ {
1102
+ type: "button",
1103
+ className: (0, import_clsx2.default)("arrow arrow--right", isLast && "arrow--disabled"),
1104
+ onClick: (e) => {
1105
+ e.stopPropagation();
1106
+ instanceRef?.current?.next();
1443
1107
  }
1444
- )
1445
- );
1108
+ },
1109
+ /* @__PURE__ */ import_react10.default.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1110
+ ));
1111
+ }
1112
+ var StyledArrows = (0, import_react9.styled)("div", {
1113
+ ".arrow": {
1114
+ position: "absolute",
1115
+ top: "50%",
1116
+ transform: "translateY(-50%)",
1117
+ width: "44px",
1118
+ height: "44px",
1119
+ padding: "8px",
1120
+ color: "#191919",
1121
+ backgroundColor: "#f2f2f2",
1122
+ textAlign: "center",
1123
+ transition: "all 0.2s ease-in-out",
1124
+ borderRadius: "4px",
1125
+ border: "none",
1126
+ cursor: "pointer",
1127
+ "&:hover": {
1128
+ backgroundColor: "#191919",
1129
+ color: "#f2f2f2"
1130
+ },
1131
+ svg: {
1132
+ verticalAlign: "middle",
1133
+ width: "22px",
1134
+ height: "22px"
1135
+ },
1136
+ "&.arrow--left": {
1137
+ left: "var(--offset, 0px)"
1138
+ },
1139
+ "&.arrow--right": {
1140
+ right: "var(--offset, 0px)"
1141
+ },
1142
+ "&.arrow--disabled": {
1143
+ opacity: 0.5
1144
+ }
1145
+ },
1146
+ "@media (max-width: 768px)": {
1147
+ ".arrow": {
1148
+ display: "none"
1149
+ }
1150
+ }
1151
+ });
1152
+
1153
+ // src/components/slider/resize-plugin.ts
1154
+ var ResizePlugin = (slider) => {
1155
+ let observer = new ResizeObserver(() => slider.update());
1156
+ slider.on("created", () => {
1157
+ observer.observe(slider.container);
1158
+ });
1159
+ slider.on("destroyed", () => {
1160
+ observer.unobserve(slider.container);
1161
+ });
1446
1162
  };
1447
- var Eye = (props) => {
1448
- return /* @__PURE__ */ import_react16.default.createElement(
1449
- "svg",
1163
+
1164
+ // src/components/slider/index.tsx
1165
+ function Slider(props) {
1166
+ let { children, className, gap, slidesPerView, arrowOffset } = props;
1167
+ let [currentSlide, setCurrentSlide] = (0, import_react12.useState)(0);
1168
+ let [created, setCreated] = (0, import_react12.useState)(false);
1169
+ let [ref, instanceRef] = (0, import_react11.useKeenSlider)(
1450
1170
  {
1451
- xmlns: "http://www.w3.org/2000/svg",
1452
- width: "192",
1453
- height: "192",
1454
- fill: "currentColor",
1455
- viewBox: "0 0 256 256",
1456
- ...props
1457
- },
1458
- /* @__PURE__ */ import_react16.default.createElement("rect", { width: "256", height: "256", fill: "none" }),
1459
- /* @__PURE__ */ import_react16.default.createElement(
1460
- "path",
1461
- {
1462
- d: "M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z",
1463
- fill: "none",
1464
- stroke: "currentColor",
1465
- strokeLinecap: "round",
1466
- strokeLinejoin: "round",
1467
- strokeWidth: "12"
1171
+ slides: { perView: slidesPerView, spacing: gap },
1172
+ breakpoints: {
1173
+ "(max-width: 1024px)": {
1174
+ slides: { perView: 3, spacing: gap }
1175
+ },
1176
+ "(max-width: 768px)": {
1177
+ slides: {
1178
+ perView: 1,
1179
+ spacing: 32
1180
+ }
1181
+ }
1182
+ },
1183
+ created: () => {
1184
+ setCreated(true);
1185
+ },
1186
+ slideChanged: (slider) => {
1187
+ setCurrentSlide(slider.track.details.rel);
1468
1188
  }
1469
- ),
1470
- /* @__PURE__ */ import_react16.default.createElement(
1471
- "circle",
1189
+ },
1190
+ [ResizePlugin]
1191
+ );
1192
+ let _className = (0, import_clsx3.default)("keen-slider", className);
1193
+ let arrowsClass = (0, import_clsx3.default)(className && `${className}-arrows`);
1194
+ return /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null, /* @__PURE__ */ import_react12.default.createElement("div", { ref, className: _className }, /* @__PURE__ */ import_react12.default.createElement(
1195
+ "link",
1196
+ {
1197
+ rel: "stylesheet",
1198
+ href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1199
+ }
1200
+ ), children), created && instanceRef?.current && /* @__PURE__ */ import_react12.default.createElement(
1201
+ Arrows,
1202
+ {
1203
+ currentSlide,
1204
+ instanceRef,
1205
+ className: arrowsClass,
1206
+ offset: arrowOffset,
1207
+ icon: "arrow"
1208
+ }
1209
+ ));
1210
+ }
1211
+
1212
+ // src/components/background.tsx
1213
+ var import_react13 = __toESM(require("react"));
1214
+ function Background(props) {
1215
+ let {
1216
+ backgroundColor,
1217
+ backgroundImage,
1218
+ backgroundFit,
1219
+ backgroundPosition,
1220
+ className
1221
+ } = props;
1222
+ let style = {
1223
+ display: "block",
1224
+ position: "absolute",
1225
+ inset: 0,
1226
+ backgroundColor
1227
+ };
1228
+ if (backgroundImage || backgroundColor) {
1229
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style, className }, backgroundImage && /* @__PURE__ */ import_react13.default.createElement(
1230
+ "img",
1472
1231
  {
1473
- cx: "128",
1474
- cy: "128",
1475
- r: "40",
1476
- fill: "none",
1477
- stroke: "currentColor",
1478
- strokeLinecap: "round",
1479
- strokeLinejoin: "round",
1480
- strokeWidth: "12"
1232
+ width: "100%",
1233
+ height: "100%",
1234
+ "data-blink-src": backgroundImage,
1235
+ alt: "Background",
1236
+ style: {
1237
+ objectFit: backgroundFit,
1238
+ objectPosition: backgroundPosition
1239
+ }
1481
1240
  }
1482
- )
1483
- );
1484
- };
1485
-
1486
- // src/components/icons/index.tsx
1487
- var import_clsx = __toESM(require("clsx"));
1488
- function Icon({ name, className, ...props }) {
1489
- let WeaverseIcon = phosphor_exports[name];
1490
- let cls = (0, import_clsx.default)("wv-icon", className);
1491
- return /* @__PURE__ */ import_react17.default.createElement(WeaverseIcon, { className: cls, ...props });
1241
+ ));
1242
+ }
1243
+ return null;
1492
1244
  }
1493
1245
 
1494
- // src/components/modal/styled.ts
1495
- var import_react_dialog = require("@radix-ui/react-dialog");
1496
- var import_react18 = require("@stitches/react");
1497
- var overlayShow = (0, import_react18.keyframes)({
1498
- "0%": { opacity: 0 },
1499
- "100%": { opacity: 1 }
1500
- });
1501
- var contentShow = (0, import_react18.keyframes)({
1502
- "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
1503
- "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
1504
- });
1505
- var StyledOverlay = (0, import_react18.styled)(import_react_dialog.Overlay, {
1506
- display: "block !important",
1507
- backgroundColor: "rgba(0, 0, 0, .3)",
1508
- position: "fixed",
1509
- zIndex: 99999,
1510
- inset: 0,
1511
- animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1512
- });
1513
- var StyledTitle = (0, import_react18.styled)(import_react_dialog.Title, {
1514
- margin: "0 0 24px",
1515
- fontWeight: 500,
1516
- fontSize: 24,
1517
- "@media (max-width: 768px)": {
1518
- margin: "0 0 16px",
1519
- fontSize: 20
1246
+ // src/components/overlay.tsx
1247
+ var import_react14 = __toESM(require("react"));
1248
+ function Overlay2(props) {
1249
+ let { enableOverlay, overlayOpacity, className } = props;
1250
+ if (enableOverlay) {
1251
+ return /* @__PURE__ */ import_react14.default.createElement(
1252
+ "div",
1253
+ {
1254
+ className,
1255
+ style: {
1256
+ position: "absolute",
1257
+ inset: 0,
1258
+ display: "block",
1259
+ backgroundColor: `rgba(0, 0, 0, ${overlayOpacity / 100})`
1260
+ }
1261
+ }
1262
+ );
1520
1263
  }
1521
- });
1522
- var StyledContent = (0, import_react18.styled)(import_react_dialog.Content, {
1523
- backgroundColor: "white",
1524
- borderRadius: 6,
1525
- boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
1526
- position: "fixed",
1527
- top: "50%",
1528
- left: "50%",
1529
- transform: "translate(-50%, -50%)",
1530
- padding: 24,
1531
- animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
1532
- zIndex: 99999,
1533
- maxWidth: "90vw",
1534
- width: "auto",
1535
- "*": {
1536
- maxWidth: "100%"
1264
+ return null;
1265
+ }
1266
+
1267
+ // src/components/slider/dots.tsx
1268
+ var import_react15 = require("@stitches/react");
1269
+ var import_clsx4 = __toESM(require("clsx"));
1270
+ var import_react16 = __toESM(require("react"));
1271
+ function Dots(props) {
1272
+ let { currentSlide, instanceRef, className, absolute, position, color } = props;
1273
+ let _className = (0, import_clsx4.default)(
1274
+ className,
1275
+ absolute && "dots--absolute",
1276
+ position && `dots--${position}`,
1277
+ color && `dots--${color}`
1278
+ );
1279
+ return /* @__PURE__ */ import_react16.default.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1280
+ (idx) => {
1281
+ let className2 = (0, import_clsx4.default)("dot", currentSlide === idx && "dot--active");
1282
+ return /* @__PURE__ */ import_react16.default.createElement(
1283
+ "button",
1284
+ {
1285
+ key: idx,
1286
+ type: "button",
1287
+ onClick: () => instanceRef.current?.moveToIdx(idx),
1288
+ className: className2
1289
+ }
1290
+ );
1291
+ }
1292
+ ));
1293
+ }
1294
+ var StyledDots = (0, import_react15.styled)("div", {
1295
+ padding: "10px 0",
1296
+ display: "flex",
1297
+ justifyContent: "center",
1298
+ alignItems: "center",
1299
+ gap: "12px",
1300
+ "&.dots--absolute": {
1301
+ position: "absolute",
1302
+ "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1303
+ "&.dots--top": { top: 10 },
1304
+ "&.dots--bottom": { bottom: 10 },
1305
+ "&.dots--left, &.dots--right": {
1306
+ top: 0,
1307
+ bottom: 0,
1308
+ flexDirection: "column"
1309
+ },
1310
+ "&.dots--left": { left: 20 },
1311
+ "&.dots--right": { right: 20 }
1537
1312
  },
1538
- "&:focus": { outline: "none" },
1539
- '&[data-size="fullscreen"]': {
1540
- width: "100vw",
1541
- height: "100vh",
1542
- maxWidth: "100vw",
1543
- borderRadius: 0
1313
+ "&.dots--light": {
1314
+ ".dot": {
1315
+ backgroundColor: "#ffffff66",
1316
+ "&.dot--active": {
1317
+ backgroundColor: "#ffffff"
1318
+ }
1319
+ }
1544
1320
  },
1545
- "@media (max-width: 768px)": {
1546
- width: "90vw",
1547
- padding: 12,
1548
- '&[data-size="fullscreen"]': {
1549
- width: "100vw"
1321
+ "&.dots--dark": {
1322
+ ".dot": {
1323
+ backgroundColor: "#00000033",
1324
+ "&.dot--active": {
1325
+ backgroundColor: "#000000"
1326
+ }
1550
1327
  }
1551
- }
1552
- });
1553
- var StyledCloseIcon = (0, import_react18.styled)("button", {
1554
- all: "unset",
1555
- cursor: "pointer",
1556
- fontFamily: "inherit",
1557
- borderRadius: "100%",
1558
- height: 32,
1559
- width: 32,
1560
- padding: 4,
1561
- display: "inline-flex",
1562
- alignItems: "center",
1563
- justifyContent: "center",
1564
- color: "rgb(55, 65, 81)",
1565
- position: "absolute",
1566
- top: 8,
1567
- right: 8,
1568
- "&:hover": {
1569
- backgroundColor: "rgba(112, 112, 112, .1)"
1570
1328
  },
1571
- svg: {
1572
- width: 24,
1573
- height: 24
1329
+ ".dot": {
1330
+ width: "9px",
1331
+ height: "9px",
1332
+ padding: "0",
1333
+ border: "none",
1334
+ borderRadius: "50%",
1335
+ transition: "all 0.2s ease-in-out"
1574
1336
  }
1575
1337
  });
1576
1338
 
1577
- // src/components/modal/use-open-change-effect.ts
1578
- var import_react19 = require("react");
1579
- function useOpenChangeEffect(props) {
1580
- let { open, defaultOpen, onOpenChange } = props;
1581
- let rootCtx = (0, import_react19.useContext)(WeaverseContext);
1582
- let toggleRootzIndex = (open2) => {
1583
- let { contentRootElement } = rootCtx;
1584
- if (contentRootElement) {
1585
- if (open2) {
1586
- contentRootElement.classList.add("modal-open");
1587
- } else {
1588
- contentRootElement.classList.remove("modal-open");
1589
- }
1339
+ // src/components/slider/autoplay-plugin.ts
1340
+ function AutoplayPlugin(changeSlidesEvery) {
1341
+ return (slider) => {
1342
+ let timeout;
1343
+ let mouseOver = false;
1344
+ function clearNextTimeout() {
1345
+ clearTimeout(timeout);
1590
1346
  }
1347
+ function nextTimeout() {
1348
+ clearTimeout(timeout);
1349
+ if (mouseOver)
1350
+ return;
1351
+ timeout = setTimeout(() => {
1352
+ slider.next();
1353
+ }, changeSlidesEvery * 1e3);
1354
+ }
1355
+ slider.on("created", () => {
1356
+ slider.container.addEventListener("mouseover", () => {
1357
+ mouseOver = true;
1358
+ clearNextTimeout();
1359
+ });
1360
+ slider.container.addEventListener("mouseout", () => {
1361
+ mouseOver = false;
1362
+ nextTimeout();
1363
+ });
1364
+ nextTimeout();
1365
+ });
1366
+ slider.on("dragStarted", clearNextTimeout);
1367
+ slider.on("animationEnded", nextTimeout);
1368
+ slider.on("updated", nextTimeout);
1591
1369
  };
1592
- (0, import_react19.useEffect)(() => {
1593
- let isOpen = open || defaultOpen;
1594
- toggleRootzIndex(isOpen);
1595
- }, [open, defaultOpen]);
1596
- let handleOpenChange = (open2) => {
1597
- toggleRootzIndex(open2);
1598
- onOpenChange?.(open2);
1599
- };
1600
- return handleOpenChange;
1601
1370
  }
1602
1371
 
1603
- // src/components/modal/index.tsx
1604
- var Modal = (props) => {
1605
- let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1606
- let handleOpenChange = useOpenChangeEffect(props);
1607
- return /* @__PURE__ */ import_react20.default.createElement(
1608
- import_react_dialog2.Root,
1609
- {
1610
- open,
1611
- defaultOpen,
1612
- onOpenChange: handleOpenChange,
1613
- ...rest
1614
- },
1615
- children
1616
- );
1617
- };
1618
- var ModalTrigger = import_react_dialog2.Trigger;
1619
- var ModalHeader = (0, import_react20.forwardRef)(
1620
- (props, ref) => {
1621
- let { children, ...rest } = props;
1622
- return /* @__PURE__ */ import_react20.default.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
1623
- }
1624
- );
1625
- var ModalContent = (0, import_react20.forwardRef)(
1372
+ // src/components/placeholder.tsx
1373
+ var import_react17 = __toESM(require("react"));
1374
+ var Placeholder = (0, import_react17.forwardRef)(
1626
1375
  (props, ref) => {
1627
- let { children, size, portal, ...rest } = props;
1628
- let modalContent = /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react20.default.createElement(
1629
- StyledContent,
1376
+ let { element, className, children, ...rest } = props;
1377
+ return /* @__PURE__ */ import_react17.default.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ import_react17.default.createElement(
1378
+ "div",
1379
+ {
1380
+ style: { fontWeight: 600, margin: "10px 0 5px", padding: "0 10px" }
1381
+ },
1382
+ element
1383
+ ), /* @__PURE__ */ import_react17.default.createElement(
1384
+ "div",
1630
1385
  {
1631
- ...rest,
1632
- onCloseAutoFocus: (e) => e.preventDefault(),
1633
- "data-wv-modal": true,
1634
- "data-size": size,
1635
- ref
1386
+ style: {
1387
+ margin: "5px 0 10px",
1388
+ textAlign: "center",
1389
+ padding: "0 10px"
1390
+ }
1636
1391
  },
1637
- /* @__PURE__ */ import_react20.default.createElement(ModalClose, null),
1638
- /* @__PURE__ */ import_react20.default.createElement("div", { className: "wv-modal-content" }, children)
1392
+ children
1639
1393
  ));
1640
- if (portal) {
1641
- return /* @__PURE__ */ import_react20.default.createElement(import_react_dialog2.Portal, null, modalContent);
1642
- }
1643
- return modalContent;
1644
1394
  }
1645
1395
  );
1646
- ModalContent.defaultProps = {
1647
- size: "auto",
1648
- portal: false
1396
+ var placeholder_default = Placeholder;
1397
+
1398
+ // src/components/no-hydrate.tsx
1399
+ var import_react18 = __toESM(require("react"));
1400
+ function NoHydrate({ id, getHTML, ...rest }) {
1401
+ let [html] = (0, import_react18.useState)(() => {
1402
+ if (typeof document === "undefined") {
1403
+ return getHTML?.() ?? "";
1404
+ }
1405
+ let el = document.getElementById(id);
1406
+ if (!el)
1407
+ return getHTML?.() ?? "";
1408
+ return el.innerHTML;
1409
+ });
1410
+ return /* @__PURE__ */ import_react18.default.createElement("div", { ...rest, id, dangerouslySetInnerHTML: { __html: html } });
1411
+ }
1412
+
1413
+ // src/components/index.ts
1414
+ var Components = {
1415
+ Background,
1416
+ Icon,
1417
+ ModalComponents: modal_exports,
1418
+ Overlay: Overlay2,
1419
+ Placeholder: placeholder_default,
1420
+ Spinner,
1421
+ Slider,
1422
+ Tooltip,
1423
+ NoHydrate
1424
+ };
1425
+ var SliderComponents = {
1426
+ Arrows,
1427
+ Dots,
1428
+ ResizePlugin,
1429
+ AutoplayPlugin
1649
1430
  };
1650
- var ModalClose = (0, import_react20.forwardRef)(
1431
+
1432
+ // src/elements/container.tsx
1433
+ var Container = (0, import_react19.forwardRef)(
1651
1434
  (props, ref) => {
1652
- let { asChild, children, ...rest } = props;
1653
- let closeIcon = /* @__PURE__ */ import_react20.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react20.default.createElement(Icon, { name: "X" }));
1654
- return /* @__PURE__ */ import_react20.default.createElement(import_react_dialog2.Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
1435
+ let { children, ...rest } = props;
1436
+ return /* @__PURE__ */ import_react19.default.createElement("div", { ref, ...rest }, import_react19.Children.count(children) ? children : /* @__PURE__ */ import_react19.default.createElement(Components.Placeholder, { element: "Container" }, "Drop element here"));
1655
1437
  }
1656
1438
  );
1439
+ var css2 = {
1440
+ "@desktop": {
1441
+ display: "flex",
1442
+ alignItems: "flex-start",
1443
+ justifyContent: "flex-start",
1444
+ gridArea: "1 / 1 / 3 / 6",
1445
+ overflow: "hidden",
1446
+ // minWidth: '300px',
1447
+ minHeight: "100px"
1448
+ },
1449
+ "@mobile": {
1450
+ minHeight: "100px"
1451
+ }
1452
+ };
1453
+ Container.defaultProps = {};
1454
+ var container_default = Container;
1657
1455
 
1658
- // src/components/spinner.tsx
1456
+ // src/elements/countdown/index.tsx
1659
1457
  var import_react21 = __toESM(require("react"));
1660
- function Spinner() {
1661
- return /* @__PURE__ */ import_react21.default.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ import_react21.default.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
1662
- }
1663
1458
 
1664
- // src/components/tooltip.tsx
1665
- var import_react22 = __toESM(require("react"));
1666
- function Tooltip({ children }) {
1667
- return /* @__PURE__ */ import_react22.default.createElement("span", { className: "wv-tooltip" }, children);
1459
+ // src/constant/index.ts
1460
+ var TIMES = ["days", "hours", "minutes", "seconds"];
1461
+ var COUNTDOWN_KEY = "wv-cd-evergreen-start";
1462
+ var INSTAGRAM_API = "https://graph.instagram.com";
1463
+
1464
+ // src/utils/index.ts
1465
+ function getTime(_seconds) {
1466
+ let ONE_MINUTE = 60 * 1e3;
1467
+ let ONE_HOUR = 60 * ONE_MINUTE;
1468
+ let ONE_DAY = 24 * ONE_HOUR;
1469
+ let days = Math.floor(_seconds / ONE_DAY);
1470
+ let hours = Math.floor((_seconds - days * ONE_DAY) / ONE_HOUR);
1471
+ let minutes = Math.floor(
1472
+ (_seconds - days * ONE_DAY - hours * ONE_HOUR) / ONE_MINUTE
1473
+ );
1474
+ let seconds = Math.floor(
1475
+ (_seconds - days * ONE_DAY - hours * ONE_HOUR - minutes * ONE_MINUTE) / 1e3
1476
+ );
1477
+ return { days, hours, minutes, seconds };
1478
+ }
1479
+ function getYoutubeEmbedId(url) {
1480
+ const match = url.match(
1481
+ /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/
1482
+ );
1483
+ return match ? match[1] : null;
1484
+ }
1485
+ function getVimeoId(url) {
1486
+ const match = url.match(/(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(.+)/);
1487
+ return match ? match[1] : null;
1668
1488
  }
1669
1489
 
1670
- // src/components/slider/index.tsx
1671
- var import_clsx3 = __toESM(require("clsx"));
1672
- var import_react25 = require("keen-slider/react");
1673
- var import_react26 = __toESM(require("react"));
1490
+ // src/elements/countdown/timer-block.tsx
1491
+ var import_react20 = __toESM(require("react"));
1492
+ function TimerBlock({ value, label }) {
1493
+ return /* @__PURE__ */ import_react20.default.createElement("div", { className: "wv-cd-block" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "wv-cd-number" }, typeof value === "string" ? value : value.toString().padStart(2, "0")), label && /* @__PURE__ */ import_react20.default.createElement("div", { className: "wv-cd-label" }, label));
1494
+ }
1674
1495
 
1675
- // src/components/slider/arrows.tsx
1676
- var import_react23 = require("@stitches/react");
1677
- var import_clsx2 = __toESM(require("clsx"));
1678
- var import_react24 = __toESM(require("react"));
1679
- function Arrows(props) {
1680
- let { currentSlide, instanceRef, className, icon, offset } = props;
1681
- let isFirst = currentSlide === 0;
1682
- let isLast = false;
1683
- if (instanceRef.current) {
1684
- isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
1685
- }
1686
- let style = {
1687
- "--offset": `${offset}px`
1688
- };
1689
- return /* @__PURE__ */ import_react24.default.createElement(StyledArrows, { className, style }, /* @__PURE__ */ import_react24.default.createElement(
1690
- "button",
1691
- {
1692
- type: "button",
1693
- className: (0, import_clsx2.default)("arrow arrow--left", isFirst && "arrow--disabled"),
1694
- onClick: (e) => {
1695
- e.stopPropagation();
1696
- instanceRef?.current?.prev();
1496
+ // src/elements/countdown/index.tsx
1497
+ var Countdown = (0, import_react21.forwardRef)(
1498
+ (props, ref) => {
1499
+ const { isDesignMode } = (0, import_react21.useContext)(WeaverseContext);
1500
+ let {
1501
+ timerType,
1502
+ startTime: startTimeProp,
1503
+ endTime: endTimeProp,
1504
+ periods: periodsProp,
1505
+ redirectWhenTimerStops,
1506
+ redirectUrl,
1507
+ openInNewTab,
1508
+ showColon,
1509
+ showLabel,
1510
+ ...rest
1511
+ } = props;
1512
+ const [remaining, setRemaining] = import_react21.default.useState(0);
1513
+ let periods = periodsProp * 60 * 1e3;
1514
+ const handleEnd = () => {
1515
+ if (!isDesignMode && redirectWhenTimerStops && redirectUrl)
1516
+ window.open(redirectUrl, openInNewTab ? "_blank" : "_self");
1517
+ };
1518
+ const getStartTime = () => {
1519
+ let startTime = startTimeProp;
1520
+ if (timerType === "evergreen") {
1521
+ const start = localStorage.getItem(COUNTDOWN_KEY);
1522
+ if (start) {
1523
+ startTime = Number.parseInt(start);
1524
+ if (startTime + periods < Date.now()) {
1525
+ startTime = Date.now();
1526
+ localStorage.setItem(COUNTDOWN_KEY, startTime.toString());
1527
+ }
1528
+ } else {
1529
+ startTime = Date.now();
1530
+ localStorage.setItem(COUNTDOWN_KEY, startTime.toString());
1531
+ }
1697
1532
  }
1698
- },
1699
- /* @__PURE__ */ import_react24.default.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1700
- ), /* @__PURE__ */ import_react24.default.createElement(
1701
- "button",
1702
- {
1703
- type: "button",
1704
- className: (0, import_clsx2.default)("arrow arrow--right", isLast && "arrow--disabled"),
1705
- onClick: (e) => {
1706
- e.stopPropagation();
1707
- instanceRef?.current?.next();
1533
+ return startTime;
1534
+ };
1535
+ const checkActive = (startTime) => startTime < Date.now() && endTimeProp > Date.now();
1536
+ const handleRemaining = () => {
1537
+ let startTime = getStartTime();
1538
+ let endTime = timerType === "fixed-time" ? endTimeProp : startTime + periods;
1539
+ let isActive = checkActive(startTime);
1540
+ const remainingTime = isActive ? Math.max(endTime - Date.now(), 0) : 0;
1541
+ if (remainingTime > 0 && remainingTime < 1e3) {
1542
+ handleEnd();
1543
+ }
1544
+ setRemaining(remainingTime);
1545
+ };
1546
+ (0, import_react21.useEffect)(() => {
1547
+ let intervalFlag = setInterval(
1548
+ handleRemaining,
1549
+ 1e3
1550
+ );
1551
+ return () => {
1552
+ clearInterval(intervalFlag);
1553
+ };
1554
+ }, [startTimeProp, endTimeProp, periods, timerType]);
1555
+ const timer = getTime(remaining);
1556
+ return /* @__PURE__ */ import_react21.default.createElement("div", { ref, ...rest }, TIMES.map((time) => {
1557
+ return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, { key: time }, /* @__PURE__ */ import_react21.default.createElement(
1558
+ TimerBlock,
1559
+ {
1560
+ label: showLabel ? time : "",
1561
+ value: remaining === 0 ? "--" : timer[time]
1562
+ }
1563
+ ), time !== "seconds" && /* @__PURE__ */ import_react21.default.createElement("div", { className: "wv-cd-separator" }, showColon && /* @__PURE__ */ import_react21.default.createElement("span", null, ":")));
1564
+ }));
1565
+ }
1566
+ );
1567
+ var css3 = {
1568
+ "@desktop": {
1569
+ fontSize: "36px",
1570
+ fontWeight: 500,
1571
+ display: "flex",
1572
+ alignItems: "center",
1573
+ overflow: "hidden",
1574
+ justifyContent: "center",
1575
+ gap: 10,
1576
+ lineHeight: "initial",
1577
+ ".wv-cd-block": {
1578
+ width: 48,
1579
+ textAlign: "center",
1580
+ ".wv-cd-label": {
1581
+ fontSize: 10
1582
+ }
1583
+ },
1584
+ ".wv-cd-separator": {
1585
+ span: {
1586
+ lineHeight: "100%"
1587
+ },
1588
+ ".hidden": {
1589
+ visibility: "hidden"
1708
1590
  }
1709
- },
1710
- /* @__PURE__ */ import_react24.default.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1711
- ));
1712
- }
1713
- var StyledArrows = (0, import_react23.styled)("div", {
1714
- ".arrow": {
1715
- position: "absolute",
1716
- top: "50%",
1717
- transform: "translateY(-50%)",
1718
- width: "44px",
1719
- height: "44px",
1720
- padding: "8px",
1721
- color: "#191919",
1722
- backgroundColor: "#f2f2f2",
1723
- textAlign: "center",
1724
- transition: "all 0.2s ease-in-out",
1725
- borderRadius: "4px",
1726
- border: "none",
1727
- cursor: "pointer",
1728
- "&:hover": {
1729
- backgroundColor: "#191919",
1730
- color: "#f2f2f2"
1731
- },
1732
- svg: {
1733
- verticalAlign: "middle",
1734
- width: "22px",
1735
- height: "22px"
1736
- },
1737
- "&.arrow--left": {
1738
- left: "var(--offset, 0px)"
1739
- },
1740
- "&.arrow--right": {
1741
- right: "var(--offset, 0px)"
1742
- },
1743
- "&.arrow--disabled": {
1744
- opacity: 0.5
1745
- }
1746
- },
1747
- "@media (max-width: 768px)": {
1748
- ".arrow": {
1749
- display: "none"
1750
1591
  }
1751
1592
  }
1752
- });
1753
-
1754
- // src/components/slider/resize-plugin.ts
1755
- var ResizePlugin = (slider) => {
1756
- let observer = new ResizeObserver(() => slider.update());
1757
- slider.on("created", () => {
1758
- observer.observe(slider.container);
1759
- });
1760
- slider.on("destroyed", () => {
1761
- observer.unobserve(slider.container);
1762
- });
1763
1593
  };
1594
+ Countdown.defaultProps = {
1595
+ timerType: "fixed-time",
1596
+ startTime: Date.now(),
1597
+ endTime: Date.now() + 1e3 * 60 * 60 * 24,
1598
+ periods: 90,
1599
+ redirectWhenTimerStops: false,
1600
+ redirectUrl: "",
1601
+ openInNewTab: false,
1602
+ showLabel: true,
1603
+ showColon: true
1604
+ };
1605
+ var countdown_default = Countdown;
1764
1606
 
1765
- // src/components/slider/index.tsx
1766
- function Slider(props) {
1767
- let { children, className, gap, slidesPerView, arrowOffset } = props;
1768
- let [currentSlide, setCurrentSlide] = (0, import_react26.useState)(0);
1769
- let [created, setCreated] = (0, import_react26.useState)(false);
1770
- let [ref, instanceRef] = (0, import_react25.useKeenSlider)(
1771
- {
1772
- slides: { perView: slidesPerView, spacing: gap },
1773
- breakpoints: {
1774
- "(max-width: 1024px)": {
1775
- slides: { perView: 3, spacing: gap }
1607
+ // src/elements/image.tsx
1608
+ var import_react22 = __toESM(require("react"));
1609
+ var Image2 = import_react22.default.forwardRef(
1610
+ (props, ref) => {
1611
+ let {
1612
+ src,
1613
+ alt,
1614
+ objectFit,
1615
+ objectPosition,
1616
+ clickAction,
1617
+ openLinkInNewTab,
1618
+ linkTo,
1619
+ ...rest
1620
+ } = props;
1621
+ let style = {
1622
+ "--img-object-fit": objectFit,
1623
+ "--img-object-position": objectPosition
1624
+ };
1625
+ let content = /* @__PURE__ */ import_react22.default.createElement("img", { alt, "data-blink-src": src });
1626
+ if (clickAction === "openLink" && linkTo) {
1627
+ content = /* @__PURE__ */ import_react22.default.createElement(
1628
+ "a",
1629
+ {
1630
+ href: linkTo,
1631
+ target: openLinkInNewTab ? "_blank" : "_self",
1632
+ rel: "noreferrer"
1776
1633
  },
1777
- "(max-width: 768px)": {
1778
- slides: {
1779
- perView: 1,
1780
- spacing: 32
1781
- }
1782
- }
1783
- },
1784
- created: () => {
1785
- setCreated(true);
1786
- },
1787
- slideChanged: (slider) => {
1788
- setCurrentSlide(slider.track.details.rel);
1789
- }
1790
- },
1791
- [ResizePlugin]
1792
- );
1793
- let _className = (0, import_clsx3.default)("keen-slider", className);
1794
- let arrowsClass = (0, import_clsx3.default)(className && `${className}-arrows`);
1795
- return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", { ref, className: _className }, /* @__PURE__ */ import_react26.default.createElement(
1796
- "link",
1797
- {
1798
- rel: "stylesheet",
1799
- href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1634
+ /* @__PURE__ */ import_react22.default.createElement("img", { alt, "data-blink-src": src })
1635
+ );
1800
1636
  }
1801
- ), children), created && instanceRef?.current && /* @__PURE__ */ import_react26.default.createElement(
1802
- Arrows,
1803
- {
1804
- currentSlide,
1805
- instanceRef,
1806
- className: arrowsClass,
1807
- offset: arrowOffset,
1808
- icon: "arrow"
1637
+ return /* @__PURE__ */ import_react22.default.createElement("div", { ref, style, ...rest }, content);
1638
+ }
1639
+ );
1640
+ var css4 = {
1641
+ "@desktop": {
1642
+ display: "flex",
1643
+ overflow: "hidden",
1644
+ justifyContent: "center",
1645
+ alignItems: "center",
1646
+ img: {
1647
+ width: "100%",
1648
+ height: "100%",
1649
+ objectFit: "var(--img-object-fit, cover)",
1650
+ objectPosition: "var(--img-object-position, center)"
1809
1651
  }
1810
- ));
1811
- }
1652
+ }
1653
+ };
1654
+ Image2.defaultProps = {
1655
+ src: "https://ucarecdn.com/dac0f414-2b1f-46df-99ce-41554f0f653a/",
1656
+ alt: "Alternative information",
1657
+ objectFit: "cover",
1658
+ objectPosition: "center center",
1659
+ clickAction: "none",
1660
+ openLinkInNewTab: false,
1661
+ linkTo: ""
1662
+ };
1663
+ var image_default = Image2;
1812
1664
 
1813
- // src/components/slider/dots.tsx
1814
- var import_react27 = require("@stitches/react");
1815
- var import_clsx4 = __toESM(require("clsx"));
1816
- var import_react28 = __toESM(require("react"));
1817
- function Dots(props) {
1818
- let { currentSlide, instanceRef, className, absolute, position, color } = props;
1819
- let _className = (0, import_clsx4.default)(
1820
- className,
1821
- absolute && "dots--absolute",
1822
- position && `dots--${position}`,
1823
- color && `dots--${color}`
1824
- );
1825
- return /* @__PURE__ */ import_react28.default.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1826
- (idx) => {
1827
- let className2 = (0, import_clsx4.default)("dot", currentSlide === idx && "dot--active");
1828
- return /* @__PURE__ */ import_react28.default.createElement(
1829
- "button",
1830
- {
1831
- key: idx,
1832
- type: "button",
1833
- onClick: () => instanceRef.current?.moveToIdx(idx),
1834
- className: className2
1835
- }
1836
- );
1665
+ // src/elements/layout.tsx
1666
+ var import_react23 = __toESM(require("react"));
1667
+ var Layout = (0, import_react23.forwardRef)((props, ref) => {
1668
+ let {
1669
+ children,
1670
+ rows,
1671
+ gap,
1672
+ rowSize,
1673
+ columns,
1674
+ contentSize,
1675
+ gridSize,
1676
+ backgroundColor,
1677
+ backgroundImage,
1678
+ objectFit,
1679
+ objectPosition,
1680
+ enableOverlay,
1681
+ overlayOpacity,
1682
+ ...rest
1683
+ } = props;
1684
+ let style = {
1685
+ "--layout-content-width": "100vw",
1686
+ "--content-size": contentSize + "px",
1687
+ "--grid-size": gridSize + "px",
1688
+ "--rows": rows,
1689
+ "--columns": columns,
1690
+ "--gap": gap + "px",
1691
+ "--row-size": rowSize + "px",
1692
+ "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
1693
+ };
1694
+ return /* @__PURE__ */ import_react23.default.createElement("div", { ref, ...rest, style }, /* @__PURE__ */ import_react23.default.createElement(
1695
+ Background,
1696
+ {
1697
+ backgroundImage,
1698
+ backgroundColor,
1699
+ backgroundFit: objectFit,
1700
+ backgroundPosition: objectPosition
1837
1701
  }
1838
- ));
1839
- }
1840
- var StyledDots = (0, import_react27.styled)("div", {
1841
- padding: "10px 0",
1842
- display: "flex",
1843
- justifyContent: "center",
1844
- alignItems: "center",
1845
- gap: "12px",
1846
- "&.dots--absolute": {
1847
- position: "absolute",
1848
- "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1849
- "&.dots--top": { top: 10 },
1850
- "&.dots--bottom": { bottom: 10 },
1851
- "&.dots--left, &.dots--right": {
1852
- top: 0,
1853
- bottom: 0,
1854
- flexDirection: "column"
1855
- },
1856
- "&.dots--left": { left: 20 },
1857
- "&.dots--right": { right: 20 }
1858
- },
1859
- "&.dots--light": {
1860
- ".dot": {
1861
- backgroundColor: "#ffffff66",
1862
- "&.dot--active": {
1863
- backgroundColor: "#ffffff"
1864
- }
1702
+ ), /* @__PURE__ */ import_react23.default.createElement(Overlay2, { enableOverlay, overlayOpacity }), /* @__PURE__ */ import_react23.default.createElement("div", { "data-layout-content": true }, children));
1703
+ });
1704
+ var css5 = {
1705
+ "@desktop": {
1706
+ position: "relative",
1707
+ "> [data-layout-content]": {
1708
+ // paddingTop: 'var(--gap)',
1709
+ // paddingBottom: 'var(--gap)',
1710
+ margin: "0 auto",
1711
+ display: "grid",
1712
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
1713
+ gridTemplateColumns: "calc((var(--layout-content-width) - var(--content-size)) / 2) 1fr repeat(var(--columns), minmax(0, var(--col-size))) 1fr calc((var(--layout-content-width) - var(--content-size)) / 2)",
1714
+ gridAutoRows: "var(--row-size)",
1715
+ gap: "var(--gap)",
1716
+ maxWidth: "var(--layout-content-width)"
1865
1717
  }
1866
1718
  },
1867
- "&.dots--dark": {
1868
- ".dot": {
1869
- backgroundColor: "#00000033",
1870
- "&.dot--active": {
1871
- backgroundColor: "#000000"
1872
- }
1719
+ "@mobile": {
1720
+ padding: "0 16px",
1721
+ "> [data-layout-content]": {
1722
+ display: "flex",
1723
+ flexDirection: "column"
1873
1724
  }
1874
- },
1875
- ".dot": {
1876
- width: "9px",
1877
- height: "9px",
1878
- padding: "0",
1879
- border: "none",
1880
- borderRadius: "50%",
1881
- transition: "all 0.2s ease-in-out"
1882
1725
  }
1726
+ };
1727
+ Layout.defaultProps = {
1728
+ contentSize: 1600,
1729
+ gridSize: 1224,
1730
+ rows: 16,
1731
+ columns: 12,
1732
+ gap: 16,
1733
+ rowSize: 48,
1734
+ objectFit: "cover",
1735
+ objectPosition: "center center",
1736
+ enableOverlay: false,
1737
+ overlayOpacity: 30
1738
+ };
1739
+ var layout_default = Layout;
1740
+
1741
+ // src/elements/map.tsx
1742
+ var import_react24 = __toESM(require("react"));
1743
+ var Map = (0, import_react24.forwardRef)((props, ref) => {
1744
+ let { place, zoom, ...rest } = props;
1745
+ return /* @__PURE__ */ import_react24.default.createElement("div", { ref, ...rest }, /* @__PURE__ */ import_react24.default.createElement(
1746
+ "iframe",
1747
+ {
1748
+ loading: "lazy",
1749
+ width: "100%",
1750
+ height: "100%",
1751
+ title: "map",
1752
+ src: `https://maps.google.com/maps?z=${zoom}&t=m&q=${place}&ie=UTF8&&output=embed`,
1753
+ style: { pointerEvents: "none" }
1754
+ }
1755
+ ));
1883
1756
  });
1884
-
1885
- // src/components/slider/autoplay-plugin.ts
1886
- function AutoplayPlugin(changeSlidesEvery) {
1887
- return (slider) => {
1888
- let timeout;
1889
- let mouseOver = false;
1890
- function clearNextTimeout() {
1891
- clearTimeout(timeout);
1757
+ var css6 = {
1758
+ "@desktop": {
1759
+ iframe: {
1760
+ border: "none"
1892
1761
  }
1893
- function nextTimeout() {
1894
- clearTimeout(timeout);
1895
- if (mouseOver)
1896
- return;
1897
- timeout = setTimeout(() => {
1898
- slider.next();
1899
- }, changeSlidesEvery * 1e3);
1762
+ },
1763
+ "@mobile": {
1764
+ iframe: {
1765
+ border: "none"
1900
1766
  }
1901
- slider.on("created", () => {
1902
- slider.container.addEventListener("mouseover", () => {
1903
- mouseOver = true;
1904
- clearNextTimeout();
1905
- });
1906
- slider.container.addEventListener("mouseout", () => {
1907
- mouseOver = false;
1908
- nextTimeout();
1909
- });
1910
- nextTimeout();
1911
- });
1912
- slider.on("dragStarted", clearNextTimeout);
1913
- slider.on("animationEnded", nextTimeout);
1914
- slider.on("updated", nextTimeout);
1915
- };
1916
- }
1767
+ }
1768
+ };
1769
+ Map.defaultProps = {
1770
+ place: "Hanoi",
1771
+ zoom: 14
1772
+ };
1773
+ var map_default = Map;
1917
1774
 
1918
- // src/components/placeholder.tsx
1919
- var import_react29 = __toESM(require("react"));
1920
- var Placeholder = (0, import_react29.forwardRef)(
1775
+ // src/elements/text.tsx
1776
+ var React20 = __toESM(require("react"));
1777
+ var Text = React20.forwardRef(
1921
1778
  (props, ref) => {
1922
- let { element, className, children, ...rest } = props;
1923
- return /* @__PURE__ */ import_react29.default.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ import_react29.default.createElement(
1924
- "div",
1925
- {
1926
- style: { fontWeight: 600, margin: "10px 0 5px", padding: "0 10px" }
1927
- },
1928
- element
1929
- ), /* @__PURE__ */ import_react29.default.createElement(
1779
+ let { children, value, ...rest } = props;
1780
+ return /* @__PURE__ */ React20.createElement("div", { ref, ...rest }, /* @__PURE__ */ React20.createElement(
1930
1781
  "div",
1931
1782
  {
1932
- style: {
1933
- margin: "5px 0 10px",
1934
- textAlign: "center",
1935
- padding: "0 10px"
1936
- }
1937
- },
1938
- children
1783
+ className: "wv-text-content",
1784
+ dangerouslySetInnerHTML: { __html: value }
1785
+ }
1939
1786
  ));
1940
1787
  }
1941
1788
  );
1942
- var placeholder_default = Placeholder;
1789
+ var css7 = {
1790
+ "@desktop": {
1791
+ display: "flex",
1792
+ padding: "10px",
1793
+ overflow: "hidden",
1794
+ ".wv-text-content": {
1795
+ width: "100%",
1796
+ height: "fit-content",
1797
+ "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
1798
+ all: "inherit",
1799
+ margin: "0",
1800
+ wordBreak: "break-word",
1801
+ overflowWrap: "break-word",
1802
+ width: "auto",
1803
+ height: "auto"
1804
+ }
1805
+ }
1806
+ }
1807
+ };
1808
+ Text.defaultProps = {
1809
+ value: "<p>The quick brown fox jumps over the lazy dog</p>"
1810
+ };
1811
+ var text_default = Text;
1943
1812
 
1944
- // src/components/no-hydrate.tsx
1945
- var import_react30 = __toESM(require("react"));
1946
- function NoHydrate({ id, getHTML, ...rest }) {
1947
- let [html] = (0, import_react30.useState)(() => {
1948
- if (typeof document === "undefined") {
1949
- return getHTML?.() ?? "";
1813
+ // src/elements/scrolling-text.tsx
1814
+ var import_react25 = __toESM(require("react"));
1815
+ var import_react26 = require("react");
1816
+ var ScrollingText = import_react25.default.forwardRef((props, ref) => {
1817
+ let { children, value, gap, speed, pauseOnHover, ...rest } = props;
1818
+ let [playState, setPlayState] = (0, import_react26.useState)("running");
1819
+ let style = {
1820
+ "--gap": `${gap}px`,
1821
+ "--speed": `${speed}s`,
1822
+ "--play-state": playState
1823
+ };
1824
+ let events = {};
1825
+ if (pauseOnHover) {
1826
+ events = {
1827
+ onMouseEnter: () => setPlayState("paused"),
1828
+ onMouseLeave: () => setPlayState("running")
1829
+ };
1830
+ }
1831
+ return /* @__PURE__ */ import_react25.default.createElement("div", { ref, ...rest }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "wv-scrolling-text__container", style, ...events }, Array.from({ length: 30 }).map((_, i) => /* @__PURE__ */ import_react25.default.createElement(
1832
+ "div",
1833
+ {
1834
+ key: i,
1835
+ className: "wv-text-content",
1836
+ dangerouslySetInnerHTML: { __html: value }
1950
1837
  }
1951
- let el = document.getElementById(id);
1952
- if (!el)
1953
- return getHTML?.() ?? "";
1954
- return el.innerHTML;
1838
+ ))));
1839
+ });
1840
+ var css8 = {
1841
+ "@desktop": {
1842
+ display: "flex",
1843
+ padding: "10px",
1844
+ overflow: "hidden",
1845
+ ".wv-scrolling-text__container": {
1846
+ visibility: "visible",
1847
+ whiteSpace: "nowrap",
1848
+ display: "flex",
1849
+ gap: "var(--gap, 40px)",
1850
+ animation: "wv-scrolling-text var(--speed, 100s) linear infinite",
1851
+ animationPlayState: "var(--play-state, running)",
1852
+ ".wv-text-content": {
1853
+ width: "100%",
1854
+ height: "fit-content",
1855
+ "> p, > h1, > h2, > h3, > h4, > h5, > h6": {
1856
+ all: "inherit",
1857
+ margin: "0",
1858
+ wordBreak: "break-word",
1859
+ overflowWrap: "break-word",
1860
+ width: "auto",
1861
+ height: "auto"
1862
+ }
1863
+ }
1864
+ }
1865
+ }
1866
+ };
1867
+ ScrollingText.defaultProps = {
1868
+ value: "<p>The quick brown fox jumps over the lazy dog</p>",
1869
+ gap: 40,
1870
+ speed: 200,
1871
+ pauseOnHover: true
1872
+ };
1873
+ var scrolling_text_default = ScrollingText;
1874
+
1875
+ // src/elements/video/index.tsx
1876
+ var import_react30 = __toESM(require("react"));
1877
+
1878
+ // src/elements/video/html-video.tsx
1879
+ var import_react27 = __toESM(require("react"));
1880
+ function HTMLVideo(props) {
1881
+ let { src, type, controls, autoPlay, loop, muted } = props;
1882
+ return /* @__PURE__ */ import_react27.default.createElement(
1883
+ "video",
1884
+ {
1885
+ controls,
1886
+ autoPlay,
1887
+ loop,
1888
+ muted,
1889
+ controlsList: "nodownload",
1890
+ disablePictureInPicture: true
1891
+ },
1892
+ /* @__PURE__ */ import_react27.default.createElement("source", { src, type: type || "video/mp4" }),
1893
+ /* @__PURE__ */ import_react27.default.createElement("source", { src, type: "video/ogg" }),
1894
+ "Your browser does not support the video tag."
1895
+ );
1896
+ }
1897
+
1898
+ // src/elements/video/vimeo.tsx
1899
+ var import_react28 = __toESM(require("react"));
1900
+ function Vimeo(props) {
1901
+ let { vimeoId, controls, autoPlay, loop, muted } = props;
1902
+ let params = `autoplay=${autoPlay}&loop=${loop}&controls=${controls}&muted=${muted}`;
1903
+ let vimeoSrc = `https://player.vimeo.com/video/${vimeoId}?${params}`;
1904
+ return /* @__PURE__ */ import_react28.default.createElement("iframe", { src: vimeoSrc, width: "100%", height: "100%", allowFullScreen: true });
1905
+ }
1906
+
1907
+ // src/elements/video/youtube.tsx
1908
+ var import_react29 = __toESM(require("react"));
1909
+ function Youtube(props) {
1910
+ let { youtubeId, controls, autoPlay, loop, muted } = props;
1911
+ let params = new URLSearchParams({
1912
+ autoplay: autoPlay ? "1" : "0",
1913
+ controls: controls ? "1" : "0",
1914
+ loop: loop ? "1" : "0",
1915
+ mute: muted ? "1" : "0"
1955
1916
  });
1956
- return /* @__PURE__ */ import_react30.default.createElement("div", { ...rest, id, dangerouslySetInnerHTML: { __html: html } });
1917
+ let youtubeSrc = `https://www.youtube.com/embed/${youtubeId}?playlist=${youtubeId}&${params.toString()}`;
1918
+ let allow = `accelerometer;${autoPlay ? "autoplay;" : ""} clipboard-write; encrypted-media; gyroscope; picture-in-picture`;
1919
+ return /* @__PURE__ */ import_react29.default.createElement("iframe", { src: youtubeSrc, width: "100%", height: "100%", allow });
1957
1920
  }
1958
1921
 
1959
- // src/components/index.ts
1960
- var Components = {
1961
- Background,
1962
- Icon,
1963
- ModalComponents: modal_exports,
1964
- Overlay,
1965
- Placeholder: placeholder_default,
1966
- Spinner,
1967
- Slider,
1968
- Tooltip,
1969
- NoHydrate
1922
+ // src/elements/video/index.tsx
1923
+ var Video = (0, import_react30.forwardRef)((props, ref) => {
1924
+ let { isDesignMode } = (0, import_react30.useContext)(WeaverseContext);
1925
+ let {
1926
+ src,
1927
+ controls,
1928
+ poster,
1929
+ autoPlay: originAutoPlay,
1930
+ loop,
1931
+ muted,
1932
+ ...rest
1933
+ } = props;
1934
+ let autoPlay = !isDesignMode && originAutoPlay;
1935
+ let videoProps = { src, controls, poster, autoPlay, loop, muted };
1936
+ let content;
1937
+ let youtubeId = getYoutubeEmbedId(src);
1938
+ let vimeoId = getVimeoId(src);
1939
+ if (youtubeId) {
1940
+ content = /* @__PURE__ */ import_react30.default.createElement(Youtube, { ...videoProps, youtubeId });
1941
+ } else if (vimeoId) {
1942
+ content = /* @__PURE__ */ import_react30.default.createElement(Vimeo, { ...videoProps, vimeoId });
1943
+ } else {
1944
+ content = /* @__PURE__ */ import_react30.default.createElement(HTMLVideo, { ...videoProps });
1945
+ }
1946
+ return /* @__PURE__ */ import_react30.default.createElement("div", { ref, ...rest }, content);
1947
+ });
1948
+ var css9 = {
1949
+ "@desktop": {
1950
+ video: {
1951
+ height: "100%",
1952
+ width: "100%",
1953
+ aspectRatio: "16 / 9"
1954
+ },
1955
+ iframe: {
1956
+ border: "none"
1957
+ }
1958
+ },
1959
+ "@mobile": {
1960
+ iframe: {
1961
+ border: "none"
1962
+ }
1963
+ }
1970
1964
  };
1971
- var SliderComponents = {
1972
- Arrows,
1973
- Dots,
1974
- ResizePlugin,
1975
- AutoplayPlugin
1965
+ Video.defaultProps = {
1966
+ src: "https://youtu.be/wM-NT6hcw48",
1967
+ poster: "https://ucarecdn.com/c413b8fe-ceec-4948-9c42-a0434c4ca920/-/preview/-/quality/smart/-/format/auto/",
1968
+ loop: false,
1969
+ controls: false,
1970
+ autoPlay: true,
1971
+ muted: true
1976
1972
  };
1973
+ var video_default = Video;
1977
1974
 
1978
1975
  // src/elements/instagram.tsx
1976
+ var import_react31 = __toESM(require("react"));
1979
1977
  var Instagram = (0, import_react31.forwardRef)(
1980
1978
  (props, ref) => {
1981
1979
  let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
@@ -2411,7 +2409,7 @@ var Slide = (0, import_react36.forwardRef)((props, ref) => {
2411
2409
  className: "slide-background"
2412
2410
  }
2413
2411
  ), /* @__PURE__ */ import_react36.default.createElement(
2414
- Overlay,
2412
+ Overlay2,
2415
2413
  {
2416
2414
  enableOverlay,
2417
2415
  overlayOpacity,