oraculo-ui 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/OraculoSeccionBonoBienvenida-EDS6UQVL.mjs +9 -0
  2. package/dist/OraculoSeccionBonoBienvenida-MGMLDCRG.css +220 -0
  3. package/dist/OraculoSeccionCasino-GXRRODCJ.mjs +11 -0
  4. package/dist/OraculoSeccionCasino-Q2VV44XD.css +216 -0
  5. package/dist/OraculoSeccionCasinoEnVivo-ISYMJSUN.mjs +8 -0
  6. package/dist/OraculoSeccionCasinoEnVivo-MMXETHJA.css +156 -0
  7. package/dist/OraculoSeccionClubOlimpo-APZYPQ5V.css +116 -0
  8. package/dist/OraculoSeccionClubOlimpo-MYTRV5IN.css +273 -0
  9. package/dist/OraculoSeccionClubOlimpo-TV3LABJ5.mjs +9 -0
  10. package/dist/OraculoSeccionClubOlimpo-XGB4KUKX.mjs +7 -0
  11. package/dist/OraculoSeccionDestacados-QU6BT2NM.mjs +18 -0
  12. package/dist/OraculoSeccionDestacados-WQX2GQNY.css +397 -0
  13. package/dist/OraculoSeccionTopJuegos-3AR4L7SZ.css +59 -0
  14. package/dist/OraculoSeccionTopJuegos-FZUYQEMC.mjs +8 -0
  15. package/dist/OraculoSeccionVirtuales-MGW5X23B.mjs +11 -0
  16. package/dist/OraculoSeccionVirtuales-OP2CSKUP.css +216 -0
  17. package/dist/chunk-2D7ZJMJV.mjs +118 -0
  18. package/dist/chunk-5GTDKE3I.mjs +30 -0
  19. package/dist/chunk-AFPCFXMZ.mjs +174 -0
  20. package/dist/chunk-AIT7B2J3.mjs +192 -0
  21. package/dist/chunk-DKP3HTEP.mjs +183 -0
  22. package/dist/chunk-IJQLK4NO.mjs +73 -0
  23. package/dist/chunk-PVY5Z3JS.mjs +249 -0
  24. package/dist/chunk-PXIOKT7L.mjs +39177 -0
  25. package/dist/chunk-PZJSZNXJ.mjs +6 -0
  26. package/dist/chunk-VHW77D2M.mjs +91 -0
  27. package/dist/chunk-VIPLL6XT.mjs +43 -0
  28. package/dist/chunk-WPLILXPP.mjs +389 -0
  29. package/dist/chunk-YY5T37WR.mjs +175 -0
  30. package/dist/index.d.mts +45 -2
  31. package/dist/index.d.ts +45 -2
  32. package/dist/index.js +39897 -1277
  33. package/dist/index.mjs +41 -1812
  34. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ import {
2
+ OraculoButton
3
+ } from "./chunk-IJQLK4NO.mjs";
4
+
5
+ // src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx
6
+ import { useLayoutEffect, useRef } from "react";
7
+
8
+ // src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ var OraculoClubOlimpoVisual = ({
11
+ text,
12
+ buttonLabel = "Conoce m\xE1s",
13
+ onClick,
14
+ imgAlt = "Club Olimpo",
15
+ imgSrcMobile,
16
+ imgSrcDesktopBg,
17
+ imgSrcDesktopLogo
18
+ }) => {
19
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
20
+ /* @__PURE__ */ jsx("div", { className: "orc-co-bgMobile", children: /* @__PURE__ */ jsx(
21
+ "img",
22
+ {
23
+ src: imgSrcMobile,
24
+ alt: imgAlt,
25
+ className: "orc-co-bgMobileImg"
26
+ }
27
+ ) }),
28
+ /* @__PURE__ */ jsxs("div", { className: "orc-co-bgDesktop", children: [
29
+ imgSrcDesktopBg && /* @__PURE__ */ jsx("div", { className: "orc-co-fillHost", children: /* @__PURE__ */ jsx(
30
+ "img",
31
+ {
32
+ src: imgSrcDesktopBg,
33
+ alt: `${imgAlt} fondo`,
34
+ className: "orc-co-bgDesktopImg"
35
+ }
36
+ ) }),
37
+ imgSrcDesktopLogo && /* @__PURE__ */ jsx("div", { className: "orc-co-logo", children: /* @__PURE__ */ jsx(
38
+ "img",
39
+ {
40
+ src: imgSrcDesktopLogo,
41
+ alt: `${imgAlt} logo`,
42
+ className: "orc-co-logoImg"
43
+ }
44
+ ) }),
45
+ /* @__PURE__ */ jsxs("div", { className: "orc-co-desktopContent", children: [
46
+ /* @__PURE__ */ jsx("p", { className: "orc-co-captionDesktop", children: text }),
47
+ /* @__PURE__ */ jsx(OraculoButton, { onClick, variant: "primary", size: "md", children: buttonLabel })
48
+ ] })
49
+ ] }),
50
+ /* @__PURE__ */ jsxs("div", { className: "orc-co-bottom", children: [
51
+ /* @__PURE__ */ jsx("p", { className: "orc-co-caption", children: text }),
52
+ /* @__PURE__ */ jsx(OraculoButton, { onClick, variant: "primary", size: "md", children: buttonLabel })
53
+ ] })
54
+ ] });
55
+ };
56
+ var OraculoClubOlimpoVisual_default = OraculoClubOlimpoVisual;
57
+
58
+ // src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx
59
+ import { jsx as jsx2 } from "react/jsx-runtime";
60
+ var OraculoSeccionClubOlimpo = ({
61
+ className = "",
62
+ fullBleed = true,
63
+ items,
64
+ selectedIndex = 0,
65
+ ariaLabel
66
+ }) => {
67
+ const rootRef = useRef(null);
68
+ const bottomRef = useRef(null);
69
+ if (!items) return null;
70
+ const safeIndex = Math.min(Math.max(selectedIndex, 0), 1);
71
+ const item = items;
72
+ useLayoutEffect(() => {
73
+ if (!rootRef.current || !bottomRef.current) return;
74
+ if (typeof ResizeObserver === "undefined") return;
75
+ const root = rootRef.current;
76
+ const bottom = bottomRef.current;
77
+ const update = () => {
78
+ root.style.setProperty(
79
+ "--orc-co-bottomH",
80
+ `${bottom.offsetHeight + 16}px`
81
+ );
82
+ };
83
+ const ro = new ResizeObserver(update);
84
+ ro.observe(bottom);
85
+ update();
86
+ return () => ro.disconnect();
87
+ }, []);
88
+ const rootClass = [
89
+ "orc-co-wrap",
90
+ fullBleed ? "orc-co-fullBleed" : "",
91
+ className
92
+ ].filter(Boolean).join(" ");
93
+ return /* @__PURE__ */ jsx2(
94
+ "section",
95
+ {
96
+ ref: rootRef,
97
+ className: rootClass,
98
+ "aria-label": ariaLabel || item.imgAlt || "Club Olimpo",
99
+ children: /* @__PURE__ */ jsx2("div", { ref: bottomRef, children: /* @__PURE__ */ jsx2(
100
+ OraculoClubOlimpoVisual_default,
101
+ {
102
+ text: item.text,
103
+ onClick: item.onClick,
104
+ imgAlt: item.imgAlt,
105
+ imgSrcMobile: item.images.mobile,
106
+ imgSrcDesktopBg: item.images.desktopBg,
107
+ imgSrcDesktopLogo: item.images.desktopLogo
108
+ }
109
+ ) })
110
+ }
111
+ );
112
+ };
113
+ var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
114
+
115
+ export {
116
+ OraculoClubOlimpoVisual_default,
117
+ OraculoSeccionClubOlimpo_default
118
+ };
@@ -0,0 +1,30 @@
1
+ // src/atoms/OraculoSectionTitle/OraculoSectionTitle.tsx
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ function OraculoSectionTitle({
4
+ title,
5
+ iconUrl,
6
+ size = "md",
7
+ className = ""
8
+ }) {
9
+ const sizeClass = size ? `orc-section-title--${size}` : "";
10
+ const wrapperClass = [
11
+ "orc-section-title",
12
+ sizeClass,
13
+ className
14
+ ].filter(Boolean).join(" ");
15
+ return /* @__PURE__ */ jsxs("div", { className: wrapperClass, children: [
16
+ iconUrl && /* @__PURE__ */ jsx(
17
+ "img",
18
+ {
19
+ src: iconUrl,
20
+ alt: "",
21
+ className: "orc-section-title__icon"
22
+ }
23
+ ),
24
+ /* @__PURE__ */ jsx("h2", { className: "orc-section-title__title", children: title })
25
+ ] });
26
+ }
27
+
28
+ export {
29
+ OraculoSectionTitle
30
+ };
@@ -0,0 +1,174 @@
1
+ import {
2
+ ChevronLeftRounded_default,
3
+ ChevronRightRounded_default,
4
+ OraculoGameSlide_default
5
+ } from "./chunk-AIT7B2J3.mjs";
6
+ import {
7
+ OraculoSectionTitle
8
+ } from "./chunk-5GTDKE3I.mjs";
9
+ import {
10
+ OraculoCarousel_default
11
+ } from "./chunk-VHW77D2M.mjs";
12
+ import {
13
+ OraculoButton
14
+ } from "./chunk-IJQLK4NO.mjs";
15
+
16
+ // src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx
17
+ import { useRef, useState } from "react";
18
+ import Stack from "@mui/material/Stack";
19
+ import Box from "@mui/material/Box";
20
+ import { jsx, jsxs } from "react/jsx-runtime";
21
+ var buildCasinoSlides = (games, mosaicFirst = true, gridSize = 4) => {
22
+ const baseItems = games.map((g, idx) => {
23
+ var _a, _b, _c;
24
+ return {
25
+ id: (_b = (_a = g.orden) != null ? _a : g.machine) != null ? _b : idx,
26
+ imageUrl: (_c = g.logo) != null ? _c : ""
27
+ };
28
+ });
29
+ if (!baseItems.length) return [];
30
+ const slides = [];
31
+ let start = 0;
32
+ if (mosaicFirst) {
33
+ const take = Math.min(baseItems.length, 5);
34
+ slides.push({
35
+ id: "mosaic-0",
36
+ kind: "mosaic",
37
+ items: baseItems.slice(0, take)
38
+ });
39
+ start = take;
40
+ }
41
+ while (start < baseItems.length) {
42
+ const end = Math.min(start + gridSize, baseItems.length);
43
+ slides.push({
44
+ id: `grid-${start}`,
45
+ kind: "grid",
46
+ items: baseItems.slice(start, end)
47
+ });
48
+ start = end;
49
+ }
50
+ return slides;
51
+ };
52
+ var OraculoSeccionCasino = ({
53
+ items,
54
+ title = "Casino",
55
+ iconUrl = "/assets/img/home/Casino/diamante.svg",
56
+ onItemClick,
57
+ onViewMore,
58
+ mosaicFirst = true,
59
+ gridSize = 4
60
+ }) => {
61
+ const carouselRef = useRef(null);
62
+ const [navState, setNavState] = useState({ isStart: true, isEnd: false });
63
+ const slides = buildCasinoSlides(items, mosaicFirst, gridSize);
64
+ const handlePrev = () => {
65
+ var _a;
66
+ (_a = carouselRef.current) == null ? void 0 : _a.prev();
67
+ };
68
+ const handleNext = () => {
69
+ var _a;
70
+ (_a = carouselRef.current) == null ? void 0 : _a.next();
71
+ };
72
+ const handleViewMore = () => {
73
+ onViewMore == null ? void 0 : onViewMore();
74
+ };
75
+ return /* @__PURE__ */ jsx("section", { children: /* @__PURE__ */ jsxs(Stack, { direction: "column", spacing: 2, useFlexGap: true, children: [
76
+ /* @__PURE__ */ jsxs(
77
+ Box,
78
+ {
79
+ sx: {
80
+ display: "grid",
81
+ gridTemplateColumns: "1fr auto auto",
82
+ alignItems: "center",
83
+ columnGap: 1.5,
84
+ rowGap: 1
85
+ },
86
+ children: [
87
+ /* @__PURE__ */ jsx(
88
+ OraculoSectionTitle,
89
+ {
90
+ title,
91
+ iconUrl,
92
+ size: "md"
93
+ }
94
+ ),
95
+ /* @__PURE__ */ jsxs(
96
+ Box,
97
+ {
98
+ sx: {
99
+ display: "flex",
100
+ gap: 1,
101
+ justifyContent: "flex-end"
102
+ },
103
+ children: [
104
+ /* @__PURE__ */ jsx(
105
+ OraculoButton,
106
+ {
107
+ ariaLabel: "Anterior",
108
+ variant: "secondary",
109
+ iconOnly: true,
110
+ leftIcon: /* @__PURE__ */ jsx(ChevronLeftRounded_default, {}),
111
+ onClick: handlePrev,
112
+ disabled: navState.isStart
113
+ }
114
+ ),
115
+ /* @__PURE__ */ jsx(
116
+ OraculoButton,
117
+ {
118
+ ariaLabel: "Siguiente",
119
+ variant: "secondary",
120
+ iconOnly: true,
121
+ rightIcon: /* @__PURE__ */ jsx(ChevronRightRounded_default, {}),
122
+ onClick: handleNext,
123
+ disabled: navState.isEnd
124
+ }
125
+ )
126
+ ]
127
+ }
128
+ ),
129
+ /* @__PURE__ */ jsx(Box, { sx: { justifySelf: "end" }, children: /* @__PURE__ */ jsx(OraculoButton, { variant: "secondary", onClick: handleViewMore, children: "Ver m\xE1s" }) })
130
+ ]
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsx(
134
+ OraculoCarousel_default,
135
+ {
136
+ ref: carouselRef,
137
+ items: slides,
138
+ perPage: 1,
139
+ gap: "0px",
140
+ options: {
141
+ autoWidth: true,
142
+ gap: "12px",
143
+ trimSpace: false,
144
+ pagination: false,
145
+ arrows: false,
146
+ drag: true,
147
+ focus: "start"
148
+ },
149
+ renderItem: (slide) => /* @__PURE__ */ jsx("div", { style: { alignSelf: "start" }, children: /* @__PURE__ */ jsx(
150
+ OraculoGameSlide_default,
151
+ {
152
+ items: slide.items,
153
+ layout: slide.kind === "mosaic" ? "mosaic" : "grid",
154
+ onClick: (itm) => {
155
+ const game = items.find(
156
+ (g, idx) => {
157
+ var _a;
158
+ return ((_a = g.orden) != null ? _a : idx) === itm.id;
159
+ }
160
+ );
161
+ if (game) onItemClick == null ? void 0 : onItemClick(game);
162
+ }
163
+ }
164
+ ) }),
165
+ onMove: ({ isStart, isEnd }) => setNavState({ isStart, isEnd })
166
+ }
167
+ )
168
+ ] }) });
169
+ };
170
+ var OraculoSeccionCasino_default = OraculoSeccionCasino;
171
+
172
+ export {
173
+ OraculoSeccionCasino_default
174
+ };
@@ -0,0 +1,192 @@
1
+ // src/molecules/OraculoGameCard/OraculoGameCard.tsx
2
+ import Box from "@mui/material/Box";
3
+ import { jsx } from "react/jsx-runtime";
4
+ var OraculoGameCard = ({
5
+ imageUrl,
6
+ onClick,
7
+ size = "sm"
8
+ }) => {
9
+ const dim = size === "lg" ? { w: 280, h: 352 } : { w: 152, h: 168 };
10
+ return /* @__PURE__ */ jsx(
11
+ Box,
12
+ {
13
+ onClick,
14
+ role: "button",
15
+ sx: {
16
+ position: "relative",
17
+ width: `${dim.w}px`,
18
+ height: `${dim.h}px`,
19
+ borderRadius: "12px",
20
+ overflow: "hidden",
21
+ boxSizing: "border-box",
22
+ transition: "transform .15s ease, box-shadow .15s ease",
23
+ "&:hover": {
24
+ transform: "translateY(-2px)",
25
+ boxShadow: 8,
26
+ cursor: "pointer"
27
+ },
28
+ opacity: 1
29
+ },
30
+ children: /* @__PURE__ */ jsx(
31
+ "img",
32
+ {
33
+ src: imageUrl,
34
+ alt: "Juego de casino",
35
+ loading: "lazy",
36
+ style: {
37
+ width: "100%",
38
+ height: "100%",
39
+ objectFit: "cover",
40
+ display: "block",
41
+ borderRadius: "inherit"
42
+ }
43
+ }
44
+ )
45
+ }
46
+ );
47
+ };
48
+ var OraculoGameCard_default = OraculoGameCard;
49
+
50
+ // src/molecules/OraculoGameSlide/OraculoGameSlide.tsx
51
+ import Box2 from "@mui/material/Box";
52
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
53
+ var GAP = 12;
54
+ var OraculoGameSlide = ({
55
+ items,
56
+ layout = "grid",
57
+ onClick
58
+ }) => {
59
+ var _a;
60
+ if (layout === "mosaic") {
61
+ const big = items[0];
62
+ const smalls = items.slice(1, 5);
63
+ return /* @__PURE__ */ jsxs(
64
+ Box2,
65
+ {
66
+ sx: {
67
+ display: "grid",
68
+ gridTemplateRows: {
69
+ xs: `repeat(2, 112px)`,
70
+ md: `repeat(2, 168px)`
71
+ },
72
+ gridTemplateColumns: {
73
+ xs: `184px`,
74
+ md: `280px`
75
+ },
76
+ gridAutoFlow: "column",
77
+ gridAutoColumns: {
78
+ xs: `104px`,
79
+ md: `152px`
80
+ },
81
+ columnGap: `${GAP}px`,
82
+ rowGap: `${GAP}px`,
83
+ alignItems: "stretch",
84
+ justifyItems: "stretch"
85
+ },
86
+ children: [
87
+ big && /* @__PURE__ */ jsx2(
88
+ Box2,
89
+ {
90
+ sx: {
91
+ width: { xs: 184, md: 280 },
92
+ height: { xs: 234, md: 352 },
93
+ gridRow: "1 / span 2",
94
+ overflow: "hidden",
95
+ borderRadius: 2,
96
+ "& > *": { width: "100%", height: "100%" }
97
+ },
98
+ children: /* @__PURE__ */ jsx2(
99
+ OraculoGameCard_default,
100
+ {
101
+ imageUrl: `https://olimpo.bet${(_a = big.imageUrl) != null ? _a : ""}`,
102
+ size: "lg",
103
+ onClick: () => onClick == null ? void 0 : onClick(big, 0)
104
+ }
105
+ )
106
+ }
107
+ ),
108
+ smalls.map((it, index) => {
109
+ var _a2;
110
+ return /* @__PURE__ */ jsx2(
111
+ Box2,
112
+ {
113
+ sx: {
114
+ width: { xs: 104, md: 152 },
115
+ height: { xs: 112, md: 168 },
116
+ overflow: "hidden",
117
+ borderRadius: 2,
118
+ "& > *": { width: "100%", height: "100%" }
119
+ },
120
+ children: /* @__PURE__ */ jsx2(
121
+ OraculoGameCard_default,
122
+ {
123
+ imageUrl: `https://olimpo.bet${(_a2 = it.imageUrl) != null ? _a2 : ""}`,
124
+ size: "sm",
125
+ onClick: () => onClick == null ? void 0 : onClick(it, index + 1)
126
+ }
127
+ )
128
+ },
129
+ it.id
130
+ );
131
+ })
132
+ ]
133
+ }
134
+ );
135
+ }
136
+ return /* @__PURE__ */ jsx2(
137
+ Box2,
138
+ {
139
+ sx: {
140
+ display: "grid",
141
+ gridTemplateColumns: {
142
+ xs: `repeat(2, 104px)`,
143
+ md: `repeat(2, 152px)`
144
+ },
145
+ gridTemplateRows: {
146
+ xs: `repeat(2, 112px)`,
147
+ md: `repeat(2, 168px)`
148
+ },
149
+ gap: `${GAP}px`,
150
+ "& > *": {
151
+ overflow: "hidden",
152
+ borderRadius: 2,
153
+ "& > *": { width: "100%", height: "100%" }
154
+ }
155
+ },
156
+ children: items.map((it, index) => {
157
+ var _a2, _b;
158
+ return /* @__PURE__ */ jsx2(Box2, { children: /* @__PURE__ */ jsx2(
159
+ OraculoGameCard_default,
160
+ {
161
+ imageUrl: `https://olimpo.bet${(_b = it.imageUrl) != null ? _b : ""}`,
162
+ size: "sm",
163
+ onClick: () => onClick == null ? void 0 : onClick(it, index)
164
+ }
165
+ ) }, (_a2 = it.id) != null ? _a2 : index);
166
+ })
167
+ }
168
+ );
169
+ };
170
+ var OraculoGameSlide_default = OraculoGameSlide;
171
+
172
+ // ../node_modules/@mui/icons-material/esm/utils/createSvgIcon.js
173
+ import { createSvgIcon } from "@mui/material/utils";
174
+
175
+ // ../node_modules/@mui/icons-material/esm/ChevronLeftRounded.js
176
+ import { jsx as _jsx } from "react/jsx-runtime";
177
+ var ChevronLeftRounded_default = createSvgIcon(/* @__PURE__ */ _jsx("path", {
178
+ 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"
179
+ }), "ChevronLeftRounded");
180
+
181
+ // ../node_modules/@mui/icons-material/esm/ChevronRightRounded.js
182
+ import { jsx as _jsx2 } from "react/jsx-runtime";
183
+ var ChevronRightRounded_default = createSvgIcon(/* @__PURE__ */ _jsx2("path", {
184
+ 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"
185
+ }), "ChevronRightRounded");
186
+
187
+ export {
188
+ OraculoGameCard_default,
189
+ OraculoGameSlide_default,
190
+ ChevronLeftRounded_default,
191
+ ChevronRightRounded_default
192
+ };
@@ -0,0 +1,183 @@
1
+ import {
2
+ OraculoSectionTitle
3
+ } from "./chunk-5GTDKE3I.mjs";
4
+
5
+ // src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx
6
+ import { useMemo } from "react";
7
+ import Stack from "@mui/material/Stack";
8
+ import Box2 from "@mui/material/Box";
9
+
10
+ // src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx
11
+ import Box from "@mui/material/Box";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ function OraculoGameRankCard({
14
+ imageUrl,
15
+ orden = 1,
16
+ onClick,
17
+ sizes = {
18
+ xs: { w: 104, h: 112, r: 18, font: 48 },
19
+ md: { w: 186, h: 264, r: 22.6, font: 64 }
20
+ }
21
+ }) {
22
+ var _a, _b, _c, _d;
23
+ const getVal = (k, def) => {
24
+ var _a2, _b2, _c2, _d2;
25
+ return {
26
+ xs: (_b2 = (_a2 = sizes.xs) == null ? void 0 : _a2[k]) != null ? _b2 : def,
27
+ md: (_d2 = (_c2 = sizes.md) == null ? void 0 : _c2[k]) != null ? _d2 : def
28
+ };
29
+ };
30
+ const W = getVal("w", 186);
31
+ const H = getVal("h", 264);
32
+ const R = getVal("r", 22.6);
33
+ const F = getVal("font", 64);
34
+ const hang = {
35
+ xs: Math.round(((_b = (_a = sizes.xs) == null ? void 0 : _a.font) != null ? _b : 64) * 0.28),
36
+ md: Math.round(((_d = (_c = sizes.md) == null ? void 0 : _c.font) != null ? _d : 64) * 0.28)
37
+ };
38
+ return /* @__PURE__ */ jsxs(
39
+ Box,
40
+ {
41
+ onClick,
42
+ role: "button",
43
+ sx: {
44
+ position: "relative",
45
+ width: "100%",
46
+ maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },
47
+ aspectRatio: {
48
+ xs: `${W.xs}/${H.xs}`,
49
+ md: `${W.md}/${H.md}`
50
+ },
51
+ borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },
52
+ boxSizing: "border-box",
53
+ cursor: "pointer",
54
+ overflow: "visible",
55
+ pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },
56
+ transition: "transform .15s ease, box-shadow .15s ease",
57
+ "&:hover": { transform: "translateY(-2px)", boxShadow: 8 }
58
+ },
59
+ children: [
60
+ /* @__PURE__ */ jsxs(
61
+ Box,
62
+ {
63
+ sx: {
64
+ position: "absolute",
65
+ inset: 0,
66
+ borderRadius: "inherit",
67
+ overflow: "hidden"
68
+ },
69
+ children: [
70
+ /* @__PURE__ */ jsx(
71
+ "img",
72
+ {
73
+ src: `https://olimpo.bet${imageUrl}`,
74
+ alt: "Juego de casino",
75
+ loading: "lazy",
76
+ style: {
77
+ width: "100%",
78
+ height: "100%",
79
+ objectFit: "cover",
80
+ display: "block"
81
+ }
82
+ }
83
+ ),
84
+ /* @__PURE__ */ jsx(
85
+ Box,
86
+ {
87
+ sx: {
88
+ position: "absolute",
89
+ inset: 0,
90
+ background: "linear-gradient(21.29deg, rgba(11,13,27,.8) -1.16%, rgba(255,255,255,0) 55%)",
91
+ mixBlendMode: "multiply"
92
+ }
93
+ }
94
+ )
95
+ ]
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsx(
99
+ Box,
100
+ {
101
+ component: "span",
102
+ sx: {
103
+ position: "absolute",
104
+ left: 8,
105
+ bottom: {
106
+ xs: `-${hang.xs}px`,
107
+ md: `-${hang.md}px`
108
+ },
109
+ fontFamily: "secondary",
110
+ fontSize: {
111
+ xs: `${F.xs}px`,
112
+ md: `${F.md}px`
113
+ },
114
+ lineHeight: 1,
115
+ color: "#3CC666",
116
+ WebkitTextStroke: "1px #9ee86e",
117
+ zIndex: 2,
118
+ userSelect: "none"
119
+ },
120
+ children: orden
121
+ }
122
+ )
123
+ ]
124
+ }
125
+ );
126
+ }
127
+
128
+ // src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx
129
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
130
+ function OraculoSeccionTopJuegos({
131
+ items,
132
+ title = "Top Juegos",
133
+ iconUrl,
134
+ onCardClick
135
+ }) {
136
+ const normalizedItems = useMemo(
137
+ () => items.map((item, index) => {
138
+ var _a;
139
+ return {
140
+ ...item,
141
+ // si no viene orden, usamos el índice (1-based)
142
+ orden: (_a = item.orden) != null ? _a : index + 1,
143
+ _originalIndex: index
144
+ };
145
+ }).sort((a, b) => {
146
+ if (a.orden != null && b.orden != null) return a.orden - b.orden;
147
+ return a._originalIndex - b._originalIndex;
148
+ }),
149
+ [items]
150
+ );
151
+ return /* @__PURE__ */ jsx2("section", { style: { width: "100%" }, children: /* @__PURE__ */ jsxs2(Stack, { direction: "column", spacing: 2, useFlexGap: true, children: [
152
+ /* @__PURE__ */ jsx2(OraculoSectionTitle, { title, iconUrl, size: "md" }),
153
+ /* @__PURE__ */ jsx2(
154
+ Box2,
155
+ {
156
+ sx: {
157
+ display: "grid",
158
+ gridTemplateColumns: {
159
+ xs: "repeat(3, minmax(0, 1fr))",
160
+ md: "repeat(6, minmax(0, 1fr))"
161
+ },
162
+ gap: { xs: 1.5, md: 2 },
163
+ justifyItems: "center",
164
+ width: "100%"
165
+ },
166
+ children: normalizedItems.slice(0, 6).map((juego) => /* @__PURE__ */ jsx2(
167
+ OraculoGameRankCard,
168
+ {
169
+ imageUrl: juego.logo || "",
170
+ orden: juego.orden,
171
+ onClick: () => onCardClick == null ? void 0 : onCardClick(juego)
172
+ },
173
+ juego.machine
174
+ ))
175
+ }
176
+ )
177
+ ] }) });
178
+ }
179
+
180
+ export {
181
+ OraculoGameRankCard,
182
+ OraculoSeccionTopJuegos
183
+ };