oraculo-ui 0.1.9 → 0.1.10

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.
@@ -1,30 +0,0 @@
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
- };
@@ -1,174 +0,0 @@
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
- };
@@ -1,192 +0,0 @@
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
- };
@@ -1,183 +0,0 @@
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
- };
@@ -1,91 +0,0 @@
1
- // src/molecules/OraculoCarousel/OraculoCarousel.tsx
2
- import {
3
- forwardRef,
4
- useCallback,
5
- useImperativeHandle,
6
- useRef
7
- } from "react";
8
- import {
9
- Splide as SplideRaw,
10
- SplideSlide as SplideSlideRaw
11
- } from "@splidejs/react-splide";
12
- import { jsx } from "react/jsx-runtime";
13
- var Splide = SplideRaw;
14
- var SplideSlide = SplideSlideRaw;
15
- var OraculoCarousel = forwardRef(
16
- ({
17
- items = [],
18
- renderItem,
19
- perPage = 1,
20
- gap = "0px",
21
- breakpoints,
22
- options = {},
23
- className = "",
24
- onMove
25
- }, ref) => {
26
- const splideRef = useRef(null);
27
- useImperativeHandle(ref, () => ({
28
- next: () => {
29
- var _a;
30
- return (_a = splideRef.current) == null ? void 0 : _a.go(">");
31
- },
32
- prev: () => {
33
- var _a;
34
- return (_a = splideRef.current) == null ? void 0 : _a.go("<");
35
- },
36
- go: (index) => {
37
- var _a;
38
- return (_a = splideRef.current) == null ? void 0 : _a.go(index);
39
- }
40
- }));
41
- const handleMove = useCallback(
42
- (splide) => {
43
- const index = splide.index;
44
- const total = splide.length;
45
- const currentPerPage = splide.options.perPage || 1;
46
- const isStart = index === 0;
47
- const isEnd = index >= total - currentPerPage;
48
- onMove == null ? void 0 : onMove({ index, isStart, isEnd, total });
49
- },
50
- [onMove]
51
- );
52
- const handleMounted = useCallback(
53
- (splide) => {
54
- handleMove(splide);
55
- },
56
- [handleMove]
57
- );
58
- const mergedOptions = {
59
- type: "slide",
60
- trimSpace: false,
61
- drag: true,
62
- pagination: false,
63
- arrows: false,
64
- rewind: false,
65
- focus: "start",
66
- autoWidth: false,
67
- perPage,
68
- gap,
69
- breakpoints,
70
- ...options
71
- };
72
- return /* @__PURE__ */ jsx("div", { className, style: { width: "100%" }, children: /* @__PURE__ */ jsx(
73
- Splide,
74
- {
75
- ref: splideRef,
76
- options: mergedOptions,
77
- onMove: handleMove,
78
- onMounted: handleMounted,
79
- children: items.map((item, index) => {
80
- var _a;
81
- return /* @__PURE__ */ jsx(SplideSlide, { children: renderItem(item, index) }, (_a = item.id) != null ? _a : index);
82
- })
83
- }
84
- ) });
85
- }
86
- );
87
- var OraculoCarousel_default = OraculoCarousel;
88
-
89
- export {
90
- OraculoCarousel_default
91
- };