oraculo-ui 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -95,6 +95,30 @@ function OraculoSectionTitle({
95
95
  ] });
96
96
  }
97
97
 
98
+ // src/atoms/OraculoCarouselDots/OraculoCarouselDots.tsx
99
+ import { jsx as jsx3 } from "react/jsx-runtime";
100
+ var OraculoCarouselDots = ({
101
+ total,
102
+ active,
103
+ onSelect,
104
+ className = ""
105
+ }) => {
106
+ if (total <= 1) return null;
107
+ const rootClass = ["orc-dots", className].filter(Boolean).join(" ");
108
+ return /* @__PURE__ */ jsx3("div", { className: rootClass, role: "tablist", children: Array.from({ length: total }).map((_, i) => /* @__PURE__ */ jsx3("span", { className: "orc-dots__cell", children: /* @__PURE__ */ jsx3(
109
+ "button",
110
+ {
111
+ type: "button",
112
+ role: "tab",
113
+ "aria-selected": i === active,
114
+ "aria-label": `Ir al slide ${i + 1}`,
115
+ className: "orc-dots__dot" + (i === active ? " orc-dots__dot--active" : ""),
116
+ onClick: () => onSelect == null ? void 0 : onSelect(i)
117
+ }
118
+ ) }, i)) });
119
+ };
120
+ var OraculoCarouselDots_default = OraculoCarouselDots;
121
+
98
122
  // src/molecules/OraculoCarousel/OraculoCarousel.tsx
99
123
  import {
100
124
  useRef,
@@ -106,7 +130,7 @@ import {
106
130
  Splide as SplideRaw,
107
131
  SplideSlide as SplideSlideRaw
108
132
  } from "@splidejs/react-splide";
109
- import { jsx as jsx3 } from "react/jsx-runtime";
133
+ import { jsx as jsx4 } from "react/jsx-runtime";
110
134
  var Splide = SplideRaw;
111
135
  var SplideSlide = SplideSlideRaw;
112
136
  var OraculoCarousel = forwardRef(
@@ -155,7 +179,7 @@ var OraculoCarousel = forwardRef(
155
179
  },
156
180
  [handleMove]
157
181
  );
158
- return /* @__PURE__ */ jsx3("div", { className, style: { width: "100%" }, children: /* @__PURE__ */ jsx3(
182
+ return /* @__PURE__ */ jsx4("div", { className, style: { width: "100%" }, children: /* @__PURE__ */ jsx4(
159
183
  Splide,
160
184
  {
161
185
  ref: splideRef,
@@ -177,7 +201,7 @@ var OraculoCarousel = forwardRef(
177
201
  onMounted: handleMounted,
178
202
  children: items.map((item, index) => {
179
203
  var _a;
180
- return /* @__PURE__ */ jsx3(SplideSlide, { children: renderItem(item, index) }, (_a = item.id) != null ? _a : index);
204
+ return /* @__PURE__ */ jsx4(SplideSlide, { children: renderItem(item, index) }, (_a = item.id) != null ? _a : index);
181
205
  })
182
206
  }
183
207
  ) });
@@ -185,6 +209,584 @@ var OraculoCarousel = forwardRef(
185
209
  );
186
210
  var OraculoCarousel_default = OraculoCarousel;
187
211
 
212
+ // src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx
213
+ import Box from "@mui/material/Box";
214
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
215
+ function OraculoGameRankCard({
216
+ imageUrl,
217
+ orden = 1,
218
+ onClick,
219
+ sizes = {
220
+ xs: { w: 104, h: 112, r: 18, font: 48 },
221
+ md: { w: 186, h: 264, r: 22.6, font: 64 }
222
+ }
223
+ }) {
224
+ var _a, _b, _c, _d;
225
+ const getVal = (k, def) => {
226
+ var _a2, _b2, _c2, _d2;
227
+ return {
228
+ xs: (_b2 = (_a2 = sizes.xs) == null ? void 0 : _a2[k]) != null ? _b2 : def,
229
+ md: (_d2 = (_c2 = sizes.md) == null ? void 0 : _c2[k]) != null ? _d2 : def
230
+ };
231
+ };
232
+ const W = getVal("w", 186);
233
+ const H = getVal("h", 264);
234
+ const R = getVal("r", 22.6);
235
+ const F = getVal("font", 64);
236
+ const hang = {
237
+ xs: Math.round(((_b = (_a = sizes.xs) == null ? void 0 : _a.font) != null ? _b : 64) * 0.28),
238
+ md: Math.round(((_d = (_c = sizes.md) == null ? void 0 : _c.font) != null ? _d : 64) * 0.28)
239
+ };
240
+ return /* @__PURE__ */ jsxs3(
241
+ Box,
242
+ {
243
+ onClick,
244
+ role: "button",
245
+ sx: {
246
+ position: "relative",
247
+ width: "100%",
248
+ maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },
249
+ aspectRatio: {
250
+ xs: `${W.xs}/${H.xs}`,
251
+ md: `${W.md}/${H.md}`
252
+ },
253
+ borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },
254
+ boxSizing: "border-box",
255
+ cursor: "pointer",
256
+ overflow: "visible",
257
+ pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },
258
+ transition: "transform .15s ease, box-shadow .15s ease",
259
+ "&:hover": { transform: "translateY(-2px)", boxShadow: 8 }
260
+ },
261
+ children: [
262
+ /* @__PURE__ */ jsxs3(
263
+ Box,
264
+ {
265
+ sx: {
266
+ position: "absolute",
267
+ inset: 0,
268
+ borderRadius: "inherit",
269
+ overflow: "hidden"
270
+ },
271
+ children: [
272
+ /* @__PURE__ */ jsx5(
273
+ "img",
274
+ {
275
+ src: imageUrl,
276
+ alt: "Juego de casino",
277
+ loading: "lazy",
278
+ style: {
279
+ width: "100%",
280
+ height: "100%",
281
+ objectFit: "cover",
282
+ display: "block"
283
+ }
284
+ }
285
+ ),
286
+ /* @__PURE__ */ jsx5(
287
+ Box,
288
+ {
289
+ sx: {
290
+ position: "absolute",
291
+ inset: 0,
292
+ background: "linear-gradient(21.29deg, rgba(11,13,27,.8) -1.16%, rgba(255,255,255,0) 55%)",
293
+ mixBlendMode: "multiply"
294
+ }
295
+ }
296
+ )
297
+ ]
298
+ }
299
+ ),
300
+ /* @__PURE__ */ jsx5(
301
+ Box,
302
+ {
303
+ component: "span",
304
+ sx: {
305
+ position: "absolute",
306
+ left: 8,
307
+ bottom: {
308
+ xs: `-${hang.xs}px`,
309
+ md: `-${hang.md}px`
310
+ },
311
+ fontFamily: "secondary",
312
+ fontSize: {
313
+ xs: `${F.xs}px`,
314
+ md: `${F.md}px`
315
+ },
316
+ lineHeight: 1,
317
+ color: "#3CC666",
318
+ WebkitTextStroke: "1px #9ee86e",
319
+ zIndex: 2,
320
+ userSelect: "none"
321
+ },
322
+ children: orden
323
+ }
324
+ )
325
+ ]
326
+ }
327
+ );
328
+ }
329
+
330
+ // src/molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard.tsx
331
+ import Box2 from "@mui/material/Box";
332
+ import Typography from "@mui/material/Typography";
333
+ import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
334
+ var OraculoLiveCasinoCard = ({
335
+ logo,
336
+ provider,
337
+ providerName,
338
+ machine,
339
+ onClick
340
+ }) => {
341
+ var _a;
342
+ return /* @__PURE__ */ jsxs4(
343
+ Box2,
344
+ {
345
+ onClick,
346
+ sx: {
347
+ flex: "0 0 auto",
348
+ position: "relative",
349
+ borderRadius: "20px",
350
+ overflow: "hidden",
351
+ width: { xs: 100, md: 180 },
352
+ height: { xs: 200, md: 380 },
353
+ transition: "width .50s ease, transform .28s ease",
354
+ willChange: "width, transform",
355
+ cursor: "pointer",
356
+ zIndex: 0,
357
+ "&:hover": {
358
+ zIndex: 2,
359
+ width: { md: 260, xs: 110 }
360
+ },
361
+ "&:hover .orc-live-provider-label": {
362
+ opacity: 1
363
+ }
364
+ },
365
+ children: [
366
+ /* @__PURE__ */ jsx6(
367
+ Box2,
368
+ {
369
+ component: "img",
370
+ src: logo,
371
+ alt: `Juego ${machine != null ? machine : ""}`,
372
+ sx: {
373
+ position: "absolute",
374
+ inset: 0,
375
+ width: "100%",
376
+ height: "100%",
377
+ objectFit: "cover",
378
+ display: "block"
379
+ }
380
+ }
381
+ ),
382
+ /* @__PURE__ */ jsx6(
383
+ Box2,
384
+ {
385
+ className: "orc-live-provider-label",
386
+ sx: {
387
+ position: "absolute",
388
+ left: "50%",
389
+ top: { xs: "75%", md: "80%" },
390
+ transform: "translate(-50%, -50%)",
391
+ zIndex: 3,
392
+ opacity: 0,
393
+ transition: "opacity .25s ease",
394
+ pointerEvents: "none"
395
+ },
396
+ children: /* @__PURE__ */ jsx6(
397
+ Typography,
398
+ {
399
+ sx: {
400
+ color: "#fff",
401
+ fontWeight: 700,
402
+ fontSize: { xs: 11, md: 14 },
403
+ textTransform: "capitalize"
404
+ },
405
+ children: (_a = provider != null ? provider : providerName) != null ? _a : ""
406
+ }
407
+ )
408
+ }
409
+ )
410
+ ]
411
+ }
412
+ );
413
+ };
414
+ var OraculoLiveCasinoCard_default = OraculoLiveCasinoCard;
415
+
416
+ // src/molecules/OraculoGameCard/OraculoGameCard.tsx
417
+ import Box3 from "@mui/material/Box";
418
+ import { jsx as jsx7 } from "react/jsx-runtime";
419
+ var OraculoGameCard = ({
420
+ imageUrl,
421
+ onClick,
422
+ size = "sm"
423
+ }) => {
424
+ const dim = size === "lg" ? { w: 280, h: 352 } : { w: 152, h: 168 };
425
+ return /* @__PURE__ */ jsx7(
426
+ Box3,
427
+ {
428
+ onClick,
429
+ role: "button",
430
+ sx: {
431
+ position: "relative",
432
+ width: `${dim.w}px`,
433
+ height: `${dim.h}px`,
434
+ borderRadius: "12px",
435
+ overflow: "hidden",
436
+ boxSizing: "border-box",
437
+ transition: "transform .15s ease, box-shadow .15s ease",
438
+ "&:hover": {
439
+ transform: "translateY(-2px)",
440
+ boxShadow: 8,
441
+ cursor: "pointer"
442
+ },
443
+ opacity: 1
444
+ },
445
+ children: /* @__PURE__ */ jsx7(
446
+ "img",
447
+ {
448
+ src: imageUrl,
449
+ alt: "Juego de casino",
450
+ loading: "lazy",
451
+ style: {
452
+ width: "100%",
453
+ height: "100%",
454
+ objectFit: "cover",
455
+ display: "block",
456
+ borderRadius: "inherit"
457
+ }
458
+ }
459
+ )
460
+ }
461
+ );
462
+ };
463
+ var OraculoGameCard_default = OraculoGameCard;
464
+
465
+ // src/molecules/OraculoGameSlide/OraculoGameSlide.tsx
466
+ import Box4 from "@mui/material/Box";
467
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
468
+ var GAP = 12;
469
+ var OraculoGameSlide = ({
470
+ items,
471
+ layout = "grid",
472
+ onClick
473
+ }) => {
474
+ if (layout === "mosaic") {
475
+ const big = items[0];
476
+ const smalls = items.slice(1, 5);
477
+ return /* @__PURE__ */ jsxs5(
478
+ Box4,
479
+ {
480
+ sx: {
481
+ display: "grid",
482
+ gridTemplateRows: {
483
+ xs: `repeat(2, 112px)`,
484
+ md: `repeat(2, 168px)`
485
+ },
486
+ gridTemplateColumns: {
487
+ xs: `184px`,
488
+ md: `280px`
489
+ },
490
+ gridAutoFlow: "column",
491
+ gridAutoColumns: {
492
+ xs: `104px`,
493
+ md: `152px`
494
+ },
495
+ columnGap: `${GAP}px`,
496
+ rowGap: `${GAP}px`,
497
+ alignItems: "stretch",
498
+ justifyItems: "stretch"
499
+ },
500
+ children: [
501
+ big && /* @__PURE__ */ jsx8(
502
+ Box4,
503
+ {
504
+ sx: {
505
+ width: { xs: 184, md: 280 },
506
+ height: { xs: 234, md: 352 },
507
+ gridRow: "1 / span 2",
508
+ overflow: "hidden",
509
+ borderRadius: 2,
510
+ "& > *": { width: "100%", height: "100%" }
511
+ },
512
+ children: /* @__PURE__ */ jsx8(
513
+ OraculoGameCard_default,
514
+ {
515
+ imageUrl: big.imageUrl,
516
+ size: "lg",
517
+ onClick: () => onClick == null ? void 0 : onClick(big)
518
+ }
519
+ )
520
+ }
521
+ ),
522
+ smalls.map((it) => /* @__PURE__ */ jsx8(
523
+ Box4,
524
+ {
525
+ sx: {
526
+ width: { xs: 104, md: 152 },
527
+ height: { xs: 112, md: 168 },
528
+ overflow: "hidden",
529
+ borderRadius: 2,
530
+ "& > *": { width: "100%", height: "100%" }
531
+ },
532
+ children: /* @__PURE__ */ jsx8(
533
+ OraculoGameCard_default,
534
+ {
535
+ imageUrl: it.imageUrl,
536
+ size: "sm",
537
+ onClick: () => onClick == null ? void 0 : onClick(it)
538
+ }
539
+ )
540
+ },
541
+ it.id
542
+ ))
543
+ ]
544
+ }
545
+ );
546
+ }
547
+ return /* @__PURE__ */ jsx8(
548
+ Box4,
549
+ {
550
+ sx: {
551
+ display: "grid",
552
+ gridTemplateColumns: {
553
+ xs: `repeat(2, 104px)`,
554
+ md: `repeat(2, 152px)`
555
+ },
556
+ gridTemplateRows: {
557
+ xs: `repeat(2, 112px)`,
558
+ md: `repeat(2, 168px)`
559
+ },
560
+ gap: `${GAP}px`,
561
+ "& > *": {
562
+ overflow: "hidden",
563
+ borderRadius: 2,
564
+ "& > *": { width: "100%", height: "100%" }
565
+ }
566
+ },
567
+ children: items.map((it) => /* @__PURE__ */ jsx8(Box4, { children: /* @__PURE__ */ jsx8(
568
+ OraculoGameCard_default,
569
+ {
570
+ imageUrl: it.imageUrl,
571
+ size: "sm",
572
+ onClick: () => onClick == null ? void 0 : onClick(it)
573
+ }
574
+ ) }, it.id))
575
+ }
576
+ );
577
+ };
578
+ var OraculoGameSlide_default = OraculoGameSlide;
579
+
580
+ // src/molecules/OraculoWelcomeBanner/OraculoWelcomeBanner.tsx
581
+ import Box5 from "@mui/material/Box";
582
+ import Typography2 from "@mui/material/Typography";
583
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
584
+ var OraculoWelcomeBanner = ({
585
+ title,
586
+ amount,
587
+ subtitle,
588
+ buttonText,
589
+ onButtonClick,
590
+ backgroundImage,
591
+ alt,
592
+ className = "",
593
+ variant = "small"
594
+ }) => {
595
+ const symbol = amount ? amount.slice(0, 2) : "";
596
+ const value = amount ? amount.slice(2) : "";
597
+ const isLarge = variant === "large";
598
+ return /* @__PURE__ */ jsxs6(
599
+ Box5,
600
+ {
601
+ className,
602
+ sx: {
603
+ position: "relative",
604
+ width: "100%",
605
+ maxWidth: {
606
+ xs: 328,
607
+ lg: isLarge ? 618 : 456
608
+ },
609
+ mx: "auto"
610
+ },
611
+ children: [
612
+ backgroundImage && /* @__PURE__ */ jsx9(
613
+ Box5,
614
+ {
615
+ sx: {
616
+ position: "relative",
617
+ width: "100%",
618
+ aspectRatio: {
619
+ xs: "328 / 188",
620
+ lg: isLarge ? "618 / 346" : "456 / 272"
621
+ },
622
+ borderRadius: "14px",
623
+ overflow: "hidden"
624
+ },
625
+ children: /* @__PURE__ */ jsx9(
626
+ Box5,
627
+ {
628
+ component: "img",
629
+ src: backgroundImage,
630
+ alt: alt != null ? alt : "Fondo promocional",
631
+ sx: {
632
+ width: "100%",
633
+ height: "100%",
634
+ objectFit: "cover",
635
+ objectPosition: {
636
+ xs: "50% 0%",
637
+ lg: "45% 0%"
638
+ },
639
+ display: "block"
640
+ }
641
+ }
642
+ )
643
+ }
644
+ ),
645
+ /* @__PURE__ */ jsx9(
646
+ Box5,
647
+ {
648
+ sx: {
649
+ position: "absolute",
650
+ inset: 0,
651
+ display: "flex",
652
+ alignItems: "center",
653
+ justifyContent: "flex-end",
654
+ color: "#e7f8ff",
655
+ textAlign: "center",
656
+ pl: "14%",
657
+ pr: { xs: "14%", lg: "15%" }
658
+ },
659
+ children: /* @__PURE__ */ jsxs6(
660
+ Box5,
661
+ {
662
+ sx: {
663
+ maxWidth: "60%",
664
+ display: "flex",
665
+ flexDirection: "column",
666
+ alignItems: "center"
667
+ },
668
+ children: [
669
+ title && /* @__PURE__ */ jsx9(
670
+ Typography2,
671
+ {
672
+ sx: {
673
+ fontSize: { xs: 12, lg: 20 },
674
+ fontWeight: 400,
675
+ color: "#e7f8ff"
676
+ },
677
+ children: title
678
+ }
679
+ ),
680
+ amount && /* @__PURE__ */ jsxs6(
681
+ Box5,
682
+ {
683
+ component: "p",
684
+ sx: {
685
+ lineHeight: { xs: 0.9, lg: 0.87 },
686
+ m: "4px 0",
687
+ background: "linear-gradient(175deg, #EDC421 -12.56%, #FFFABF 17.99%, #EDC421 49.74%)",
688
+ WebkitBackgroundClip: "text",
689
+ WebkitTextFillColor: "transparent",
690
+ WebkitTextStroke: "0.5px #fff8c1",
691
+ filter: "drop-shadow(0px 4px 0px #8D4406) drop-shadow(0px 4px 4px rgba(28, 28, 28, 0.4))",
692
+ display: "flex",
693
+ alignItems: "baseline",
694
+ justifyContent: "center"
695
+ },
696
+ children: [
697
+ /* @__PURE__ */ jsx9(
698
+ Box5,
699
+ {
700
+ component: "span",
701
+ sx: { fontSize: { xs: 35, lg: 48 }, mr: 0.5 },
702
+ children: symbol
703
+ }
704
+ ),
705
+ /* @__PURE__ */ jsx9(
706
+ Box5,
707
+ {
708
+ component: "span",
709
+ sx: { fontSize: { xs: 52, lg: 77 } },
710
+ children: value
711
+ }
712
+ )
713
+ ]
714
+ }
715
+ ),
716
+ subtitle && /* @__PURE__ */ jsx9(
717
+ Typography2,
718
+ {
719
+ sx: {
720
+ pb: "20px",
721
+ fontSize: 14,
722
+ fontWeight: 600,
723
+ color: "#e7f8ff"
724
+ },
725
+ children: subtitle
726
+ }
727
+ ),
728
+ buttonText && /* @__PURE__ */ jsx9(OraculoButton, { onClick: onButtonClick, children: buttonText })
729
+ ]
730
+ }
731
+ )
732
+ }
733
+ )
734
+ ]
735
+ }
736
+ );
737
+ };
738
+ var OraculoWelcomeBanner_default = OraculoWelcomeBanner;
739
+
740
+ // src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx
741
+ import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
742
+ var OraculoClubOlimpoVisual = ({
743
+ text,
744
+ buttonLabel = "Conoce m\xE1s",
745
+ onClick,
746
+ imgAlt = "Club Olimpo",
747
+ imgSrcMobile,
748
+ imgSrcDesktopBg,
749
+ imgSrcDesktopLogo
750
+ }) => {
751
+ return /* @__PURE__ */ jsxs7(Fragment2, { children: [
752
+ /* @__PURE__ */ jsx10("div", { className: "orc-co-bgMobile", children: /* @__PURE__ */ jsx10(
753
+ "img",
754
+ {
755
+ src: imgSrcMobile,
756
+ alt: imgAlt,
757
+ className: "orc-co-bgMobileImg"
758
+ }
759
+ ) }),
760
+ /* @__PURE__ */ jsxs7("div", { className: "orc-co-bgDesktop", children: [
761
+ imgSrcDesktopBg && /* @__PURE__ */ jsx10("div", { className: "orc-co-fillHost", children: /* @__PURE__ */ jsx10(
762
+ "img",
763
+ {
764
+ src: imgSrcDesktopBg,
765
+ alt: `${imgAlt} fondo`,
766
+ className: "orc-co-bgDesktopImg"
767
+ }
768
+ ) }),
769
+ imgSrcDesktopLogo && /* @__PURE__ */ jsx10("div", { className: "orc-co-logo", children: /* @__PURE__ */ jsx10(
770
+ "img",
771
+ {
772
+ src: imgSrcDesktopLogo,
773
+ alt: `${imgAlt} logo`,
774
+ className: "orc-co-logoImg"
775
+ }
776
+ ) }),
777
+ /* @__PURE__ */ jsxs7("div", { className: "orc-co-desktopContent", children: [
778
+ /* @__PURE__ */ jsx10("p", { className: "orc-co-captionDesktop", children: text }),
779
+ /* @__PURE__ */ jsx10(OraculoButton, { onClick, variant: "primary", size: "md", children: buttonLabel })
780
+ ] })
781
+ ] }),
782
+ /* @__PURE__ */ jsxs7("div", { className: "orc-co-bottom", children: [
783
+ /* @__PURE__ */ jsx10("p", { className: "orc-co-caption", children: text }),
784
+ /* @__PURE__ */ jsx10(OraculoButton, { onClick, variant: "primary", size: "md", children: buttonLabel })
785
+ ] })
786
+ ] });
787
+ };
788
+ var OraculoClubOlimpoVisual_default = OraculoClubOlimpoVisual;
789
+
188
790
  // src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx
189
791
  import { useRef as useRef2, useState } from "react";
190
792
 
@@ -204,7 +806,7 @@ var ChevronRightRounded_default = createSvgIcon(/* @__PURE__ */ _jsx2("path", {
204
806
  }), "ChevronRightRounded");
205
807
 
206
808
  // src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx
207
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
809
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
208
810
  function OraculoSeccionDestacados({
209
811
  items,
210
812
  title = "Destacados",
@@ -226,8 +828,8 @@ function OraculoSeccionDestacados({
226
828
  onViewMore == null ? void 0 : onViewMore();
227
829
  };
228
830
  const sectionClassName = className || void 0;
229
- return /* @__PURE__ */ jsxs3("section", { className: sectionClassName, style: { width: "100%" }, children: [
230
- /* @__PURE__ */ jsxs3(
831
+ return /* @__PURE__ */ jsxs8("section", { className: sectionClassName, style: { width: "100%" }, children: [
832
+ /* @__PURE__ */ jsxs8(
231
833
  "header",
232
834
  {
233
835
  style: {
@@ -239,7 +841,7 @@ function OraculoSeccionDestacados({
239
841
  marginBottom: 16
240
842
  },
241
843
  children: [
242
- /* @__PURE__ */ jsx4(
844
+ /* @__PURE__ */ jsx11(
243
845
  OraculoSectionTitle,
244
846
  {
245
847
  title,
@@ -247,7 +849,7 @@ function OraculoSeccionDestacados({
247
849
  size: "md"
248
850
  }
249
851
  ),
250
- /* @__PURE__ */ jsxs3(
852
+ /* @__PURE__ */ jsxs8(
251
853
  "div",
252
854
  {
253
855
  style: {
@@ -255,24 +857,24 @@ function OraculoSeccionDestacados({
255
857
  gap: 8
256
858
  },
257
859
  children: [
258
- /* @__PURE__ */ jsx4(
860
+ /* @__PURE__ */ jsx11(
259
861
  OraculoButton,
260
862
  {
261
863
  ariaLabel: "Anterior",
262
864
  variant: "secondary",
263
865
  iconOnly: true,
264
- leftIcon: /* @__PURE__ */ jsx4(ChevronLeftRounded_default, {}),
866
+ leftIcon: /* @__PURE__ */ jsx11(ChevronLeftRounded_default, {}),
265
867
  onClick: handlePrev,
266
868
  disabled: navState.isStart
267
869
  }
268
870
  ),
269
- /* @__PURE__ */ jsx4(
871
+ /* @__PURE__ */ jsx11(
270
872
  OraculoButton,
271
873
  {
272
874
  ariaLabel: "Siguiente",
273
875
  variant: "secondary",
274
876
  iconOnly: true,
275
- rightIcon: /* @__PURE__ */ jsx4(ChevronRightRounded_default, {}),
877
+ rightIcon: /* @__PURE__ */ jsx11(ChevronRightRounded_default, {}),
276
878
  onClick: handleNext,
277
879
  disabled: navState.isEnd
278
880
  }
@@ -280,11 +882,11 @@ function OraculoSeccionDestacados({
280
882
  ]
281
883
  }
282
884
  ),
283
- /* @__PURE__ */ jsx4(OraculoButton, { variant: "secondary", onClick: handleViewMore, children: "Ver m\xE1s" })
885
+ /* @__PURE__ */ jsx11(OraculoButton, { variant: "secondary", onClick: handleViewMore, children: "Ver m\xE1s" })
284
886
  ]
285
887
  }
286
888
  ),
287
- /* @__PURE__ */ jsx4(
889
+ /* @__PURE__ */ jsx11(
288
890
  OraculoCarousel_default,
289
891
  {
290
892
  ref: carouselRef,
@@ -298,14 +900,14 @@ function OraculoSeccionDestacados({
298
900
  },
299
901
  renderItem: (item) => {
300
902
  var _a;
301
- return /* @__PURE__ */ jsx4(
903
+ return /* @__PURE__ */ jsx11(
302
904
  "div",
303
905
  {
304
906
  style: {
305
907
  textAlign: "center",
306
908
  marginTop: 16
307
909
  },
308
- children: /* @__PURE__ */ jsx4(
910
+ children: /* @__PURE__ */ jsx11(
309
911
  "img",
310
912
  {
311
913
  src: item.src,
@@ -327,9 +929,778 @@ function OraculoSeccionDestacados({
327
929
  )
328
930
  ] });
329
931
  }
932
+
933
+ // src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx
934
+ import Stack from "@mui/material/Stack";
935
+ import Box6 from "@mui/material/Box";
936
+ import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
937
+ function OraculoSeccionTopJuegos({
938
+ items,
939
+ title = "Top Juegos",
940
+ iconUrl,
941
+ onCardClick,
942
+ className
943
+ }) {
944
+ return /* @__PURE__ */ jsx12("section", { className, style: { width: "100%" }, children: /* @__PURE__ */ jsxs9(Stack, { direction: "column", spacing: 2, useFlexGap: true, children: [
945
+ /* @__PURE__ */ jsx12(OraculoSectionTitle, { title, iconUrl, size: "md" }),
946
+ /* @__PURE__ */ jsx12(
947
+ Box6,
948
+ {
949
+ sx: {
950
+ display: "grid",
951
+ gridTemplateColumns: {
952
+ xs: "repeat(3, minmax(0, 1fr))",
953
+ md: "repeat(6, minmax(0, 1fr))"
954
+ },
955
+ gap: { xs: 1.5, md: 2 },
956
+ justifyItems: "center",
957
+ width: "100%"
958
+ },
959
+ children: items.slice(0, 6).map((juego, idx) => /* @__PURE__ */ jsx12(
960
+ OraculoGameRankCard,
961
+ {
962
+ imageUrl: juego.logo || "",
963
+ orden: juego.orden,
964
+ onClick: () => console.log(juego.machine)
965
+ },
966
+ juego.machine
967
+ ))
968
+ }
969
+ )
970
+ ] }) });
971
+ }
972
+
973
+ // src/organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo.tsx
974
+ import Box7 from "@mui/material/Box";
975
+ import Stack2 from "@mui/material/Stack";
976
+ import Typography3 from "@mui/material/Typography";
977
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
978
+ var OraculoSeccionCasinoEnVivo = ({
979
+ items,
980
+ title = "Casino en vivo",
981
+ subtitle = "Disfruta la emoci\xF3n en tus juegos favoritos y gana en tiempo real.",
982
+ backgroundMobileUrl = "/assets/img/home/CasinoEnVivo/FondoMobile3.png",
983
+ backgroundDesktopUrl = "/assets/img/home/CasinoEnVivo/FondoDesktop3.png",
984
+ onCardClick,
985
+ onViewMore,
986
+ className
987
+ }) => {
988
+ return /* @__PURE__ */ jsxs10(
989
+ Box7,
990
+ {
991
+ className,
992
+ sx: {
993
+ position: "relative",
994
+ width: "100vw",
995
+ left: "50%",
996
+ right: "50%",
997
+ transform: "translateX(-50%)",
998
+ color: "white",
999
+ overflow: "hidden"
1000
+ },
1001
+ children: [
1002
+ /* @__PURE__ */ jsx13(
1003
+ Box7,
1004
+ {
1005
+ sx: {
1006
+ position: "absolute",
1007
+ inset: 0,
1008
+ backgroundImage: {
1009
+ xs: `
1010
+ linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),
1011
+ linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),
1012
+ url('${backgroundMobileUrl}')
1013
+ `,
1014
+ md: `
1015
+ linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),
1016
+ linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),
1017
+ url('${backgroundDesktopUrl}')
1018
+ `
1019
+ },
1020
+ backgroundSize: "cover",
1021
+ backgroundPosition: "center",
1022
+ backgroundRepeat: "no-repeat",
1023
+ zIndex: 0
1024
+ }
1025
+ }
1026
+ ),
1027
+ /* @__PURE__ */ jsxs10(
1028
+ Box7,
1029
+ {
1030
+ sx: {
1031
+ position: "relative",
1032
+ zIndex: 1,
1033
+ maxWidth: 1200,
1034
+ height: { xs: "450px", md: "550px" },
1035
+ mx: "auto",
1036
+ px: { xs: 2.5, md: 6 },
1037
+ display: "flex",
1038
+ flexDirection: { xs: "column", md: "row" },
1039
+ alignItems: { xs: "center", md: "center" },
1040
+ justifyContent: "center",
1041
+ gap: { xs: 0, md: 15 },
1042
+ textAlign: { xs: "center", md: "left" }
1043
+ },
1044
+ children: [
1045
+ /* @__PURE__ */ jsxs10(Stack2, { spacing: 3, sx: { maxWidth: { md: 280 } }, children: [
1046
+ /* @__PURE__ */ jsx13(
1047
+ Typography3,
1048
+ {
1049
+ variant: "h4",
1050
+ sx: {
1051
+ fontWeight: 800,
1052
+ fontSize: { xs: 24, md: 40 },
1053
+ WebkitTextStroke: "0.5px rgba(255, 255, 255, .5)",
1054
+ textShadow: "0 0 2px rgba(255, 255, 255, .95),0 0 4px rgba(255, 255, 255, .6),0 1px 0 #898989"
1055
+ },
1056
+ children: title
1057
+ }
1058
+ ),
1059
+ /* @__PURE__ */ jsx13(
1060
+ Typography3,
1061
+ {
1062
+ sx: {
1063
+ fontSize: { xs: 14, md: 18 },
1064
+ color: "rgba(255,255,255,0.9)",
1065
+ marginX: { xs: 4, md: 0 },
1066
+ lineHeight: 1.5
1067
+ },
1068
+ children: subtitle
1069
+ }
1070
+ ),
1071
+ /* @__PURE__ */ jsx13(Box7, { sx: { display: { xs: "none", md: "block" } }, children: /* @__PURE__ */ jsx13(
1072
+ OraculoButton,
1073
+ {
1074
+ variant: "primary",
1075
+ size: "md",
1076
+ onClick: () => onViewMore == null ? void 0 : onViewMore(),
1077
+ children: "Ver m\xE1s"
1078
+ }
1079
+ ) })
1080
+ ] }),
1081
+ /* @__PURE__ */ jsx13(
1082
+ Box7,
1083
+ {
1084
+ sx: {
1085
+ display: "flex",
1086
+ gap: { xs: 2, md: 3 },
1087
+ justifyContent: "center",
1088
+ overflowX: { xs: "auto", md: "visible" },
1089
+ py: { xs: 3, md: 0 },
1090
+ alignItems: "center"
1091
+ },
1092
+ children: items.map((juego, idx) => {
1093
+ var _a, _b;
1094
+ return /* @__PURE__ */ jsx13(
1095
+ OraculoLiveCasinoCard_default,
1096
+ {
1097
+ logo: (_b = juego.logo) != null ? _b : "",
1098
+ provider: juego.provider,
1099
+ providerName: juego.web_name,
1100
+ machine: juego.machine,
1101
+ onClick: () => onCardClick == null ? void 0 : onCardClick(juego, idx)
1102
+ },
1103
+ (_a = juego.machine) != null ? _a : idx
1104
+ );
1105
+ })
1106
+ }
1107
+ ),
1108
+ /* @__PURE__ */ jsx13(Box7, { sx: { display: { xs: "block", md: "none" } }, children: /* @__PURE__ */ jsx13(
1109
+ OraculoButton,
1110
+ {
1111
+ variant: "primary",
1112
+ size: "lg",
1113
+ onClick: () => onViewMore == null ? void 0 : onViewMore(),
1114
+ children: "Ver m\xE1s"
1115
+ }
1116
+ ) })
1117
+ ]
1118
+ }
1119
+ )
1120
+ ]
1121
+ }
1122
+ );
1123
+ };
1124
+ var OraculoSeccionCasinoEnVivo_default = OraculoSeccionCasinoEnVivo;
1125
+
1126
+ // src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx
1127
+ import { useRef as useRef3, useState as useState2 } from "react";
1128
+ import Stack3 from "@mui/material/Stack";
1129
+ import Box8 from "@mui/material/Box";
1130
+ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
1131
+ var buildCasinoSlides = (games, mosaicFirst = true, gridSize = 4) => {
1132
+ const baseItems = games.map((g, idx) => {
1133
+ var _a, _b, _c, _d;
1134
+ return {
1135
+ id: (_b = (_a = g.id) != null ? _a : g.machine) != null ? _b : idx,
1136
+ imageUrl: (_d = (_c = g.imageUrl) != null ? _c : g.logo) != null ? _d : ""
1137
+ };
1138
+ });
1139
+ if (!baseItems.length) return [];
1140
+ const slides = [];
1141
+ let start = 0;
1142
+ if (mosaicFirst) {
1143
+ const take = Math.min(baseItems.length, 5);
1144
+ slides.push({
1145
+ id: "mosaic-0",
1146
+ kind: "mosaic",
1147
+ items: baseItems.slice(0, take)
1148
+ });
1149
+ start = take;
1150
+ }
1151
+ while (start < baseItems.length) {
1152
+ const end = Math.min(start + gridSize, baseItems.length);
1153
+ slides.push({
1154
+ id: `grid-${start}`,
1155
+ kind: "grid",
1156
+ items: baseItems.slice(start, end)
1157
+ });
1158
+ start = end;
1159
+ }
1160
+ return slides;
1161
+ };
1162
+ var OraculoSeccionCasino = ({
1163
+ items,
1164
+ title = "Casino",
1165
+ iconUrl = "/assets/img/home/Casino/diamante.svg",
1166
+ onItemClick,
1167
+ onViewMore,
1168
+ mosaicFirst = true,
1169
+ gridSize = 4,
1170
+ className
1171
+ }) => {
1172
+ const carouselRef = useRef3(null);
1173
+ const [navState, setNavState] = useState2({ isStart: true, isEnd: false });
1174
+ const slides = buildCasinoSlides(items, mosaicFirst, gridSize);
1175
+ const handlePrev = () => {
1176
+ var _a;
1177
+ (_a = carouselRef.current) == null ? void 0 : _a.prev();
1178
+ };
1179
+ const handleNext = () => {
1180
+ var _a;
1181
+ (_a = carouselRef.current) == null ? void 0 : _a.next();
1182
+ };
1183
+ const handleViewMore = () => {
1184
+ onViewMore == null ? void 0 : onViewMore();
1185
+ };
1186
+ return /* @__PURE__ */ jsx14("section", { className, children: /* @__PURE__ */ jsxs11(Stack3, { direction: "column", spacing: 2, useFlexGap: true, children: [
1187
+ /* @__PURE__ */ jsxs11(
1188
+ Box8,
1189
+ {
1190
+ sx: {
1191
+ display: "grid",
1192
+ gridTemplateColumns: "1fr auto auto",
1193
+ alignItems: "center",
1194
+ columnGap: 1.5,
1195
+ rowGap: 1
1196
+ },
1197
+ children: [
1198
+ /* @__PURE__ */ jsx14(
1199
+ OraculoSectionTitle,
1200
+ {
1201
+ title,
1202
+ iconUrl,
1203
+ size: "md"
1204
+ }
1205
+ ),
1206
+ /* @__PURE__ */ jsxs11(
1207
+ Box8,
1208
+ {
1209
+ sx: {
1210
+ display: "flex",
1211
+ gap: 1,
1212
+ justifyContent: "flex-end"
1213
+ },
1214
+ children: [
1215
+ /* @__PURE__ */ jsx14(
1216
+ OraculoButton,
1217
+ {
1218
+ ariaLabel: "Anterior",
1219
+ variant: "secondary",
1220
+ iconOnly: true,
1221
+ leftIcon: /* @__PURE__ */ jsx14(ChevronLeftRounded_default, {}),
1222
+ onClick: handlePrev,
1223
+ disabled: navState.isStart
1224
+ }
1225
+ ),
1226
+ /* @__PURE__ */ jsx14(
1227
+ OraculoButton,
1228
+ {
1229
+ ariaLabel: "Siguiente",
1230
+ variant: "secondary",
1231
+ iconOnly: true,
1232
+ rightIcon: /* @__PURE__ */ jsx14(ChevronRightRounded_default, {}),
1233
+ onClick: handleNext,
1234
+ disabled: navState.isEnd
1235
+ }
1236
+ )
1237
+ ]
1238
+ }
1239
+ ),
1240
+ /* @__PURE__ */ jsx14(Box8, { sx: { justifySelf: "end" }, children: /* @__PURE__ */ jsx14(OraculoButton, { variant: "secondary", onClick: handleViewMore, children: "Ver m\xE1s" }) })
1241
+ ]
1242
+ }
1243
+ ),
1244
+ /* @__PURE__ */ jsx14(
1245
+ OraculoCarousel_default,
1246
+ {
1247
+ ref: carouselRef,
1248
+ items: slides,
1249
+ perPage: 1,
1250
+ gap: "0px",
1251
+ options: {
1252
+ autoWidth: true,
1253
+ gap: "12px",
1254
+ trimSpace: false,
1255
+ pagination: false,
1256
+ arrows: false,
1257
+ drag: true,
1258
+ focus: "start"
1259
+ },
1260
+ renderItem: (slide) => /* @__PURE__ */ jsx14("div", { style: { alignSelf: "start" }, children: /* @__PURE__ */ jsx14(
1261
+ OraculoGameSlide_default,
1262
+ {
1263
+ items: slide.items,
1264
+ layout: slide.kind === "mosaic" ? "mosaic" : "grid",
1265
+ onClick: (itm) => {
1266
+ const game = items.find(
1267
+ (g, idx) => {
1268
+ var _a, _b;
1269
+ return ((_b = (_a = g.id) != null ? _a : g.machine) != null ? _b : idx) === itm.id;
1270
+ }
1271
+ );
1272
+ if (game) onItemClick == null ? void 0 : onItemClick(game);
1273
+ }
1274
+ }
1275
+ ) }),
1276
+ onMove: ({ isStart, isEnd }) => setNavState({ isStart, isEnd })
1277
+ }
1278
+ )
1279
+ ] }) });
1280
+ };
1281
+ var OraculoSeccionCasino_default = OraculoSeccionCasino;
1282
+
1283
+ // src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx
1284
+ import { useRef as useRef4, useState as useState3 } from "react";
1285
+ import Stack4 from "@mui/material/Stack";
1286
+ import Box9 from "@mui/material/Box";
1287
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
1288
+ var buildVirtualSlides = (games, mosaicFirst = true, gridSize = 4) => {
1289
+ const baseItems = games.map((g, idx) => {
1290
+ var _a, _b, _c, _d;
1291
+ return {
1292
+ id: (_b = (_a = g.id) != null ? _a : g.machine) != null ? _b : idx,
1293
+ imageUrl: (_d = (_c = g.imageUrl) != null ? _c : g.logo) != null ? _d : ""
1294
+ };
1295
+ });
1296
+ if (!baseItems.length) return [];
1297
+ const slides = [];
1298
+ let start = 0;
1299
+ if (mosaicFirst) {
1300
+ const take = Math.min(baseItems.length, 5);
1301
+ slides.push({
1302
+ id: "mosaic-0",
1303
+ kind: "mosaic",
1304
+ items: baseItems.slice(0, take)
1305
+ });
1306
+ start = take;
1307
+ }
1308
+ while (start < baseItems.length) {
1309
+ const end = Math.min(start + gridSize, baseItems.length);
1310
+ slides.push({
1311
+ id: `grid-${start}`,
1312
+ kind: "grid",
1313
+ items: baseItems.slice(start, end)
1314
+ });
1315
+ start = end;
1316
+ }
1317
+ return slides;
1318
+ };
1319
+ var OraculoSeccionVirtuales = ({
1320
+ items,
1321
+ title = "Virtuales",
1322
+ iconUrl = "/assets/img/home/Virtuales/virtuales.svg",
1323
+ onItemClick,
1324
+ onViewMore,
1325
+ mosaicFirst = true,
1326
+ gridSize = 4,
1327
+ className
1328
+ }) => {
1329
+ const carouselRef = useRef4(null);
1330
+ const [navState, setNavState] = useState3({ isStart: true, isEnd: false });
1331
+ const slides = buildVirtualSlides(items, mosaicFirst, gridSize);
1332
+ const handlePrev = () => {
1333
+ var _a;
1334
+ (_a = carouselRef.current) == null ? void 0 : _a.prev();
1335
+ };
1336
+ const handleNext = () => {
1337
+ var _a;
1338
+ (_a = carouselRef.current) == null ? void 0 : _a.next();
1339
+ };
1340
+ const handleViewMore = () => {
1341
+ onViewMore == null ? void 0 : onViewMore();
1342
+ };
1343
+ return /* @__PURE__ */ jsx15("section", { className, children: /* @__PURE__ */ jsxs12(Stack4, { direction: "column", spacing: 2, useFlexGap: true, children: [
1344
+ /* @__PURE__ */ jsxs12(
1345
+ Box9,
1346
+ {
1347
+ sx: {
1348
+ display: "grid",
1349
+ gridTemplateColumns: "1fr auto auto",
1350
+ alignItems: "center",
1351
+ columnGap: 1.5,
1352
+ rowGap: 1
1353
+ },
1354
+ children: [
1355
+ /* @__PURE__ */ jsx15(
1356
+ OraculoSectionTitle,
1357
+ {
1358
+ title,
1359
+ iconUrl,
1360
+ size: "md"
1361
+ }
1362
+ ),
1363
+ /* @__PURE__ */ jsxs12(
1364
+ Box9,
1365
+ {
1366
+ sx: {
1367
+ display: "flex",
1368
+ gap: 1,
1369
+ justifyContent: "flex-end"
1370
+ },
1371
+ children: [
1372
+ /* @__PURE__ */ jsx15(
1373
+ OraculoButton,
1374
+ {
1375
+ ariaLabel: "Anterior",
1376
+ variant: "secondary",
1377
+ iconOnly: true,
1378
+ leftIcon: /* @__PURE__ */ jsx15(ChevronLeftRounded_default, {}),
1379
+ onClick: handlePrev,
1380
+ disabled: navState.isStart
1381
+ }
1382
+ ),
1383
+ /* @__PURE__ */ jsx15(
1384
+ OraculoButton,
1385
+ {
1386
+ ariaLabel: "Siguiente",
1387
+ variant: "secondary",
1388
+ iconOnly: true,
1389
+ rightIcon: /* @__PURE__ */ jsx15(ChevronRightRounded_default, {}),
1390
+ onClick: handleNext,
1391
+ disabled: navState.isEnd
1392
+ }
1393
+ )
1394
+ ]
1395
+ }
1396
+ ),
1397
+ /* @__PURE__ */ jsx15(Box9, { sx: { justifySelf: "end" }, children: /* @__PURE__ */ jsx15(OraculoButton, { variant: "secondary", onClick: handleViewMore, children: "Ver m\xE1s" }) })
1398
+ ]
1399
+ }
1400
+ ),
1401
+ /* @__PURE__ */ jsx15(
1402
+ OraculoCarousel_default,
1403
+ {
1404
+ ref: carouselRef,
1405
+ items: slides,
1406
+ perPage: 1,
1407
+ gap: "0",
1408
+ options: {
1409
+ autoWidth: true,
1410
+ gap: "12px",
1411
+ trimSpace: false,
1412
+ pagination: false,
1413
+ arrows: false,
1414
+ drag: true,
1415
+ focus: "start",
1416
+ perMove: 1
1417
+ },
1418
+ renderItem: (slide) => /* @__PURE__ */ jsx15("div", { style: { alignSelf: "start" }, children: /* @__PURE__ */ jsx15(
1419
+ OraculoGameSlide_default,
1420
+ {
1421
+ items: slide.items,
1422
+ layout: slide.kind === "mosaic" ? "mosaic" : "grid",
1423
+ onClick: (itm) => {
1424
+ const game = items.find(
1425
+ (g, idx) => {
1426
+ var _a, _b;
1427
+ return ((_b = (_a = g.id) != null ? _a : g.machine) != null ? _b : idx) === itm.id;
1428
+ }
1429
+ );
1430
+ if (game) onItemClick == null ? void 0 : onItemClick(game);
1431
+ }
1432
+ }
1433
+ ) }),
1434
+ onMove: ({ isStart, isEnd }) => setNavState({ isStart, isEnd })
1435
+ }
1436
+ )
1437
+ ] }) });
1438
+ };
1439
+ var OraculoSeccionVirtuales_default = OraculoSeccionVirtuales;
1440
+
1441
+ // src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx
1442
+ import { useRef as useRef5, useState as useState4 } from "react";
1443
+ import Box10 from "@mui/material/Box";
1444
+ import Typography4 from "@mui/material/Typography";
1445
+ import useMediaQuery from "@mui/material/useMediaQuery";
1446
+ import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
1447
+ var buildSectionSx = (bgUrl) => ({
1448
+ width: "100vw",
1449
+ position: "relative",
1450
+ left: "50%",
1451
+ right: "50%",
1452
+ marginLeft: "-50vw",
1453
+ marginRight: "-50vw",
1454
+ py: 8,
1455
+ color: "#fff",
1456
+ backgroundImage: `
1457
+ linear-gradient(to bottom,#121212 0%, rgba(18,18,18,0) 10%),
1458
+ linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),
1459
+ linear-gradient(to left, #121212 0%, rgba(18,18,18,0) 10%),
1460
+ linear-gradient(to right, #121212 0%, rgba(18,18,18,0) 10%),
1461
+ url("${bgUrl}")
1462
+ `,
1463
+ backgroundRepeat: "no-repeat",
1464
+ backgroundPosition: "center",
1465
+ backgroundSize: "cover"
1466
+ });
1467
+ var headlineBaseSx = {
1468
+ textAlign: "center",
1469
+ lineHeight: 1.1,
1470
+ mb: 1.5
1471
+ };
1472
+ var hlTopSx = {
1473
+ display: "inline-block",
1474
+ fontWeight: 600,
1475
+ fontSize: 24
1476
+ };
1477
+ var hlBottomSx = {
1478
+ display: "inline-block",
1479
+ fontSize: 24,
1480
+ lineHeight: 1.1,
1481
+ WebkitTextStroke: "0.3px rgba(255, 255, 255, .5)",
1482
+ textShadow: `
1483
+ 0 0 2px rgba(255, 255, 255, .95),
1484
+ 0 0 6px rgba(255, 255, 255, .6),
1485
+ 0 1px 0 rgba(137, 137, 137, .85)
1486
+ `
1487
+ };
1488
+ var OraculoSeccionBonoBienvenida = ({
1489
+ headline,
1490
+ items,
1491
+ backgroundImageUrl
1492
+ }) => {
1493
+ const [hl1 = "", hl2 = ""] = (headline || "").split("\n");
1494
+ const isMobile = useMediaQuery("(max-width: 767px)");
1495
+ const showDots = items.length > 1;
1496
+ const bgUrl = backgroundImageUrl != null ? backgroundImageUrl : "/assets/img/home/BonoBienvenida/Fondobg.png";
1497
+ const sectionSx = buildSectionSx(bgUrl);
1498
+ const carouselRef = useRef5(null);
1499
+ const [navState, setNavState] = useState4({ isStart: true, isEnd: false });
1500
+ const [activeIndex, setActiveIndex] = useState4(0);
1501
+ if (isMobile) {
1502
+ return /* @__PURE__ */ jsxs13(
1503
+ Box10,
1504
+ {
1505
+ component: "section",
1506
+ sx: {
1507
+ ...sectionSx,
1508
+ textAlign: "center"
1509
+ },
1510
+ children: [
1511
+ (hl1 || hl2) && /* @__PURE__ */ jsxs13(Box10, { sx: headlineBaseSx, children: [
1512
+ hl1 && /* @__PURE__ */ jsx16(Typography4, { component: "span", sx: hlTopSx, children: hl1 }),
1513
+ hl2 && /* @__PURE__ */ jsxs13(Fragment3, { children: [
1514
+ /* @__PURE__ */ jsx16("br", {}),
1515
+ /* @__PURE__ */ jsx16(Typography4, { component: "span", sx: hlBottomSx, children: hl2 })
1516
+ ] })
1517
+ ] }),
1518
+ /* @__PURE__ */ jsxs13(Box10, { children: [
1519
+ /* @__PURE__ */ jsx16(
1520
+ OraculoCarousel_default,
1521
+ {
1522
+ ref: carouselRef,
1523
+ items,
1524
+ perPage: 1,
1525
+ gap: "12px",
1526
+ breakpoints: {
1527
+ 480: {
1528
+ perPage: 1,
1529
+ gap: "8px",
1530
+ padding: { left: "8px", right: "8px" }
1531
+ },
1532
+ 768: {
1533
+ perPage: 1,
1534
+ gap: "12px",
1535
+ padding: { left: "8px", right: "8px" }
1536
+ }
1537
+ },
1538
+ options: {
1539
+ autoWidth: false
1540
+ },
1541
+ renderItem: (it) => /* @__PURE__ */ jsx16(OraculoWelcomeBanner_default, { ...it }),
1542
+ onMove: ({ index, isStart, isEnd }) => {
1543
+ setNavState({ isStart, isEnd });
1544
+ setActiveIndex(index);
1545
+ }
1546
+ }
1547
+ ),
1548
+ showDots && /* @__PURE__ */ jsx16(
1549
+ OraculoCarouselDots_default,
1550
+ {
1551
+ total: items.length,
1552
+ active: activeIndex,
1553
+ onSelect: (i) => {
1554
+ var _a;
1555
+ setActiveIndex(i);
1556
+ (_a = carouselRef.current) == null ? void 0 : _a.go(i);
1557
+ }
1558
+ }
1559
+ )
1560
+ ] })
1561
+ ]
1562
+ }
1563
+ );
1564
+ }
1565
+ return /* @__PURE__ */ jsx16(Box10, { component: "section", sx: sectionSx, children: /* @__PURE__ */ jsxs13(
1566
+ Box10,
1567
+ {
1568
+ sx: {
1569
+ maxWidth: 1200,
1570
+ mx: 5,
1571
+ px: 2,
1572
+ display: "grid",
1573
+ gridTemplateColumns: "200px auto",
1574
+ alignItems: "center"
1575
+ },
1576
+ children: [
1577
+ (hl1 || hl2) && /* @__PURE__ */ jsx16(
1578
+ Box10,
1579
+ {
1580
+ sx: {
1581
+ display: "flex",
1582
+ alignItems: "center",
1583
+ justifyContent: "flex-start",
1584
+ minHeight: "100%"
1585
+ },
1586
+ children: /* @__PURE__ */ jsxs13(
1587
+ Box10,
1588
+ {
1589
+ sx: {
1590
+ ...headlineBaseSx,
1591
+ textAlign: "left",
1592
+ mb: 0
1593
+ },
1594
+ children: [
1595
+ hl1 && /* @__PURE__ */ jsx16(Typography4, { component: "span", sx: hlTopSx, children: hl1 }),
1596
+ hl2 && /* @__PURE__ */ jsxs13(Fragment3, { children: [
1597
+ /* @__PURE__ */ jsx16("br", {}),
1598
+ /* @__PURE__ */ jsx16(Typography4, { component: "span", sx: hlBottomSx, children: hl2 })
1599
+ ] })
1600
+ ]
1601
+ }
1602
+ )
1603
+ }
1604
+ ),
1605
+ /* @__PURE__ */ jsx16(
1606
+ Box10,
1607
+ {
1608
+ sx: {
1609
+ display: "flex",
1610
+ justifyContent: "center",
1611
+ alignItems: "center",
1612
+ flexWrap: "nowrap",
1613
+ gap: 4
1614
+ },
1615
+ children: items.map((it, idx) => /* @__PURE__ */ jsx16(
1616
+ OraculoWelcomeBanner_default,
1617
+ {
1618
+ ...it
1619
+ },
1620
+ idx
1621
+ ))
1622
+ }
1623
+ )
1624
+ ]
1625
+ }
1626
+ ) });
1627
+ };
1628
+ var OraculoSeccionBonoBienvenida_default = OraculoSeccionBonoBienvenida;
1629
+
1630
+ // src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx
1631
+ import { useLayoutEffect, useRef as useRef6 } from "react";
1632
+ import { jsx as jsx17 } from "react/jsx-runtime";
1633
+ var OraculoSeccionClubOlimpo = ({
1634
+ className = "",
1635
+ fullBleed = true,
1636
+ items,
1637
+ selectedIndex = 0,
1638
+ ariaLabel
1639
+ }) => {
1640
+ const rootRef = useRef6(null);
1641
+ const bottomRef = useRef6(null);
1642
+ if (!items || items.length === 0) return null;
1643
+ const safeIndex = Math.min(Math.max(selectedIndex, 0), items.length - 1);
1644
+ const item = items[safeIndex];
1645
+ useLayoutEffect(() => {
1646
+ if (!rootRef.current || !bottomRef.current) return;
1647
+ if (typeof ResizeObserver === "undefined") return;
1648
+ const root = rootRef.current;
1649
+ const bottom = bottomRef.current;
1650
+ const update = () => {
1651
+ root.style.setProperty(
1652
+ "--orc-co-bottomH",
1653
+ `${bottom.offsetHeight + 16}px`
1654
+ );
1655
+ };
1656
+ const ro = new ResizeObserver(update);
1657
+ ro.observe(bottom);
1658
+ update();
1659
+ return () => ro.disconnect();
1660
+ }, []);
1661
+ const rootClass = [
1662
+ "orc-co-wrap",
1663
+ fullBleed ? "orc-co-fullBleed" : "",
1664
+ className
1665
+ ].filter(Boolean).join(" ");
1666
+ return /* @__PURE__ */ jsx17(
1667
+ "section",
1668
+ {
1669
+ ref: rootRef,
1670
+ className: rootClass,
1671
+ "aria-label": ariaLabel || item.imgAlt || "Club Olimpo",
1672
+ children: /* @__PURE__ */ jsx17("div", { ref: bottomRef, children: /* @__PURE__ */ jsx17(
1673
+ OraculoClubOlimpoVisual_default,
1674
+ {
1675
+ text: item.text,
1676
+ onClick: item.onClick,
1677
+ imgAlt: item.imgAlt,
1678
+ imgSrcMobile: item.images.mobile,
1679
+ imgSrcDesktopBg: item.images.desktopBg,
1680
+ imgSrcDesktopLogo: item.images.desktopLogo,
1681
+ priority: item.priority
1682
+ }
1683
+ ) })
1684
+ }
1685
+ );
1686
+ };
1687
+ var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
330
1688
  export {
331
1689
  OraculoButton,
332
1690
  OraculoCarousel_default as OraculoCarousel,
1691
+ OraculoCarouselDots_default as OraculoCarouselDots,
1692
+ OraculoClubOlimpoVisual_default as OraculoClubOlimpoVisual,
1693
+ OraculoGameCard_default as OraculoGameCard,
1694
+ OraculoGameRankCard,
1695
+ OraculoGameSlide_default as OraculoGameSlide,
1696
+ OraculoLiveCasinoCard_default as OraculoLiveCasinoCard,
1697
+ OraculoSeccionBonoBienvenida_default as OraculoSeccionBonoBienvenida,
1698
+ OraculoSeccionCasino_default as OraculoSeccionCasino,
1699
+ OraculoSeccionCasinoEnVivo_default as OraculoSeccionCasinoEnVivo,
1700
+ OraculoSeccionClubOlimpo_default as OraculoSeccionClubOlimpo,
333
1701
  OraculoSeccionDestacados,
334
- OraculoSectionTitle
1702
+ OraculoSeccionTopJuegos,
1703
+ OraculoSeccionVirtuales_default as OraculoSeccionVirtuales,
1704
+ OraculoSectionTitle,
1705
+ OraculoWelcomeBanner_default as OraculoWelcomeBanner
335
1706
  };