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