oraculo-ui 0.1.4 → 0.1.6

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.d.mts CHANGED
@@ -156,7 +156,7 @@ interface OraculoSeccionDestacadosProps {
156
156
  }
157
157
  declare function OraculoSeccionDestacados({ items, title, iconUrl, onViewMore, className, }: OraculoSeccionDestacadosProps): react_jsx_runtime.JSX.Element;
158
158
 
159
- interface OraculoTopJuegoItem {
159
+ interface OraculoGameItem {
160
160
  orden?: number;
161
161
  logo?: string;
162
162
  machine?: number | string;
@@ -169,65 +169,33 @@ interface OraculoTopJuegoItem {
169
169
  tags?: string;
170
170
  lobby_tag?: string | null;
171
171
  background?: string;
172
- rtp?: number;
172
+ rtp?: number | null;
173
173
  demo_allowed?: boolean;
174
174
  gaming_session_required?: boolean;
175
175
  }
176
+
176
177
  interface OraculoSeccionTopJuegosProps {
177
- items: OraculoTopJuegoItem[];
178
+ items: OraculoGameItem[];
178
179
  title?: string;
179
180
  iconUrl?: string;
180
- onCardClick?: () => void;
181
- className?: string;
181
+ onCardClick?: (item: OraculoGameItem) => void;
182
182
  }
183
- declare function OraculoSeccionTopJuegos({ items, title, iconUrl, onCardClick, className, }: OraculoSeccionTopJuegosProps): react_jsx_runtime.JSX.Element;
184
183
 
185
- interface OraculoLiveCasinoItem {
186
- orden?: number;
187
- logo?: string;
188
- machine?: number | string;
189
- name?: string;
190
- web_name?: string;
191
- provider?: string;
192
- sub_provider?: string;
193
- external_id?: string;
194
- type?: string;
195
- tags?: string;
196
- lobby_tag?: string | null;
197
- background?: string;
198
- rtp?: number;
199
- demo_allowed?: boolean;
200
- gaming_session_required?: boolean;
201
- }
184
+ declare function OraculoSeccionTopJuegos({ items, title, iconUrl, onCardClick, }: OraculoSeccionTopJuegosProps): react_jsx_runtime.JSX.Element;
185
+
202
186
  interface OraculoSeccionCasinoEnVivoProps {
203
- items: OraculoLiveCasinoItem[];
187
+ items: OraculoGameItem[];
204
188
  title?: string;
205
189
  subtitle?: string;
206
190
  backgroundMobileUrl?: string;
207
191
  backgroundDesktopUrl?: string;
208
- onCardClick?: (juego: OraculoLiveCasinoItem, index: number) => void;
192
+ onCardClick?: (juego: OraculoGameItem, index: number) => void;
209
193
  onViewMore?: () => void;
210
194
  className?: string;
211
195
  }
196
+
212
197
  declare const OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps>;
213
198
 
214
- interface OraculoGameItem {
215
- orden?: string | number;
216
- logo?: string;
217
- machine?: number | string;
218
- name?: string;
219
- web_name?: string;
220
- provider?: string;
221
- sub_provider?: string;
222
- external_id?: string;
223
- type?: string;
224
- tags?: string;
225
- lobby_tag?: string | null;
226
- background?: string;
227
- rtp?: number | null;
228
- demo_allowed?: boolean;
229
- gaming_session_required?: boolean;
230
- }
231
199
  interface OraculoSeccionCasinoProps {
232
200
  items: OraculoGameItem[];
233
201
  title?: string;
@@ -236,8 +204,8 @@ interface OraculoSeccionCasinoProps {
236
204
  onViewMore?: () => void;
237
205
  mosaicFirst?: boolean;
238
206
  gridSize?: number;
239
- className?: string;
240
207
  }
208
+
241
209
  declare const OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps>;
242
210
 
243
211
  interface OraculoSeccionVirtualesProps {
@@ -248,17 +216,24 @@ interface OraculoSeccionVirtualesProps {
248
216
  onViewMore?: () => void;
249
217
  mosaicFirst?: boolean;
250
218
  gridSize?: number;
251
- className?: string;
252
219
  }
220
+
253
221
  declare const OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps>;
254
222
 
255
- interface OraculoSeccionBonoBienvenidaProps {
256
- /** Título principal, admite salto con "\n" para dos líneas */
223
+ interface OraculoBonosItem {
224
+ title?: string;
225
+ amount?: string;
226
+ subtitle?: string;
227
+ buttonText?: string;
228
+ onButtonClick?: () => void;
229
+ }
230
+ interface OraculoSeccionBonoProps {
257
231
  headline?: string;
258
- items: OraculoWelcomeBannerProps[];
232
+ items: OraculoBonosItem[];
259
233
  backgroundImageUrl?: string;
260
234
  }
261
- declare const OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoBienvenidaProps>;
235
+
236
+ declare const OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps>;
262
237
 
263
238
  interface OraculoSeccionClubOlimpoItem {
264
239
  text: string;
@@ -285,4 +260,16 @@ interface OraculoSeccionClubOlimpoItems {
285
260
  }
286
261
  declare const OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems>;
287
262
 
288
- export { OraculoButton, type OraculoButtonProps, OraculoCarousel, OraculoCarouselDots, type OraculoCarouselDotsProps, type OraculoCarouselOptions, type OraculoCarouselProps, type OraculoCarouselRef, OraculoClubOlimpoVisual, type OraculoClubOlimpoVisualProps, type OraculoDestacadoItem, OraculoGameCard, type OraculoGameCardProps, type OraculoGameItem, OraculoGameRankCard, type OraculoGameRankCardProps, type OraculoGameRankCardSizes, OraculoGameSlide, type OraculoGameSlideItem, type OraculoGameSlideProps, OraculoLiveCasinoCard, type OraculoLiveCasinoCardProps, type OraculoLiveCasinoItem, OraculoSeccionBonoBienvenida, type OraculoSeccionBonoBienvenidaProps, OraculoSeccionCasino, OraculoSeccionCasinoEnVivo, type OraculoSeccionCasinoEnVivoProps, type OraculoSeccionCasinoProps, OraculoSeccionClubOlimpo, OraculoSeccionDestacados, type OraculoSeccionDestacadosProps, OraculoSeccionTopJuegos, type OraculoSeccionTopJuegosProps, OraculoSeccionVirtuales, type OraculoSeccionVirtualesProps, OraculoSectionTitle, type OraculoSectionTitleProps, type OraculoTopJuegoItem, OraculoWelcomeBanner, type OraculoWelcomeBannerProps };
263
+ interface parametros {
264
+ bonos: OraculoSeccionBonoProps;
265
+ topJuegos: OraculoSeccionTopJuegosProps;
266
+ casino: OraculoSeccionCasinoProps;
267
+ casinoEnVivo: OraculoSeccionCasinoEnVivoProps;
268
+ virtuales: OraculoSeccionVirtualesProps;
269
+ clubOlimpo: OraculoSeccionClubOlimpoItem;
270
+ }
271
+ declare function OraculoPageLanding({ props }: {
272
+ props: parametros;
273
+ }): react_jsx_runtime.JSX.Element;
274
+
275
+ export { type OraculoBonosItem, OraculoButton, type OraculoButtonProps, OraculoCarousel, OraculoCarouselDots, type OraculoCarouselDotsProps, type OraculoCarouselOptions, type OraculoCarouselProps, type OraculoCarouselRef, OraculoClubOlimpoVisual, type OraculoClubOlimpoVisualProps, type OraculoDestacadoItem, OraculoGameCard, type OraculoGameCardProps, type OraculoGameItem, OraculoGameRankCard, type OraculoGameRankCardProps, type OraculoGameRankCardSizes, OraculoGameSlide, type OraculoGameSlideItem, type OraculoGameSlideProps, OraculoLiveCasinoCard, type OraculoLiveCasinoCardProps, OraculoPageLanding, OraculoSeccionBonoBienvenida, type OraculoSeccionBonoProps, OraculoSeccionCasino, OraculoSeccionCasinoEnVivo, type OraculoSeccionCasinoEnVivoProps, type OraculoSeccionCasinoProps, OraculoSeccionClubOlimpo, type OraculoSeccionClubOlimpoItem, OraculoSeccionDestacados, type OraculoSeccionDestacadosProps, OraculoSeccionTopJuegos, type OraculoSeccionTopJuegosProps, OraculoSeccionVirtuales, type OraculoSeccionVirtualesProps, OraculoSectionTitle, type OraculoSectionTitleProps, OraculoSeccionTopJuegos as OraculoTopJuegoItem, OraculoWelcomeBanner, type OraculoWelcomeBannerProps };
package/dist/index.d.ts CHANGED
@@ -156,7 +156,7 @@ interface OraculoSeccionDestacadosProps {
156
156
  }
157
157
  declare function OraculoSeccionDestacados({ items, title, iconUrl, onViewMore, className, }: OraculoSeccionDestacadosProps): react_jsx_runtime.JSX.Element;
158
158
 
159
- interface OraculoTopJuegoItem {
159
+ interface OraculoGameItem {
160
160
  orden?: number;
161
161
  logo?: string;
162
162
  machine?: number | string;
@@ -169,65 +169,33 @@ interface OraculoTopJuegoItem {
169
169
  tags?: string;
170
170
  lobby_tag?: string | null;
171
171
  background?: string;
172
- rtp?: number;
172
+ rtp?: number | null;
173
173
  demo_allowed?: boolean;
174
174
  gaming_session_required?: boolean;
175
175
  }
176
+
176
177
  interface OraculoSeccionTopJuegosProps {
177
- items: OraculoTopJuegoItem[];
178
+ items: OraculoGameItem[];
178
179
  title?: string;
179
180
  iconUrl?: string;
180
- onCardClick?: () => void;
181
- className?: string;
181
+ onCardClick?: (item: OraculoGameItem) => void;
182
182
  }
183
- declare function OraculoSeccionTopJuegos({ items, title, iconUrl, onCardClick, className, }: OraculoSeccionTopJuegosProps): react_jsx_runtime.JSX.Element;
184
183
 
185
- interface OraculoLiveCasinoItem {
186
- orden?: number;
187
- logo?: string;
188
- machine?: number | string;
189
- name?: string;
190
- web_name?: string;
191
- provider?: string;
192
- sub_provider?: string;
193
- external_id?: string;
194
- type?: string;
195
- tags?: string;
196
- lobby_tag?: string | null;
197
- background?: string;
198
- rtp?: number;
199
- demo_allowed?: boolean;
200
- gaming_session_required?: boolean;
201
- }
184
+ declare function OraculoSeccionTopJuegos({ items, title, iconUrl, onCardClick, }: OraculoSeccionTopJuegosProps): react_jsx_runtime.JSX.Element;
185
+
202
186
  interface OraculoSeccionCasinoEnVivoProps {
203
- items: OraculoLiveCasinoItem[];
187
+ items: OraculoGameItem[];
204
188
  title?: string;
205
189
  subtitle?: string;
206
190
  backgroundMobileUrl?: string;
207
191
  backgroundDesktopUrl?: string;
208
- onCardClick?: (juego: OraculoLiveCasinoItem, index: number) => void;
192
+ onCardClick?: (juego: OraculoGameItem, index: number) => void;
209
193
  onViewMore?: () => void;
210
194
  className?: string;
211
195
  }
196
+
212
197
  declare const OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps>;
213
198
 
214
- interface OraculoGameItem {
215
- orden?: string | number;
216
- logo?: string;
217
- machine?: number | string;
218
- name?: string;
219
- web_name?: string;
220
- provider?: string;
221
- sub_provider?: string;
222
- external_id?: string;
223
- type?: string;
224
- tags?: string;
225
- lobby_tag?: string | null;
226
- background?: string;
227
- rtp?: number | null;
228
- demo_allowed?: boolean;
229
- gaming_session_required?: boolean;
230
- }
231
199
  interface OraculoSeccionCasinoProps {
232
200
  items: OraculoGameItem[];
233
201
  title?: string;
@@ -236,8 +204,8 @@ interface OraculoSeccionCasinoProps {
236
204
  onViewMore?: () => void;
237
205
  mosaicFirst?: boolean;
238
206
  gridSize?: number;
239
- className?: string;
240
207
  }
208
+
241
209
  declare const OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps>;
242
210
 
243
211
  interface OraculoSeccionVirtualesProps {
@@ -248,17 +216,24 @@ interface OraculoSeccionVirtualesProps {
248
216
  onViewMore?: () => void;
249
217
  mosaicFirst?: boolean;
250
218
  gridSize?: number;
251
- className?: string;
252
219
  }
220
+
253
221
  declare const OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps>;
254
222
 
255
- interface OraculoSeccionBonoBienvenidaProps {
256
- /** Título principal, admite salto con "\n" para dos líneas */
223
+ interface OraculoBonosItem {
224
+ title?: string;
225
+ amount?: string;
226
+ subtitle?: string;
227
+ buttonText?: string;
228
+ onButtonClick?: () => void;
229
+ }
230
+ interface OraculoSeccionBonoProps {
257
231
  headline?: string;
258
- items: OraculoWelcomeBannerProps[];
232
+ items: OraculoBonosItem[];
259
233
  backgroundImageUrl?: string;
260
234
  }
261
- declare const OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoBienvenidaProps>;
235
+
236
+ declare const OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps>;
262
237
 
263
238
  interface OraculoSeccionClubOlimpoItem {
264
239
  text: string;
@@ -285,4 +260,16 @@ interface OraculoSeccionClubOlimpoItems {
285
260
  }
286
261
  declare const OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems>;
287
262
 
288
- export { OraculoButton, type OraculoButtonProps, OraculoCarousel, OraculoCarouselDots, type OraculoCarouselDotsProps, type OraculoCarouselOptions, type OraculoCarouselProps, type OraculoCarouselRef, OraculoClubOlimpoVisual, type OraculoClubOlimpoVisualProps, type OraculoDestacadoItem, OraculoGameCard, type OraculoGameCardProps, type OraculoGameItem, OraculoGameRankCard, type OraculoGameRankCardProps, type OraculoGameRankCardSizes, OraculoGameSlide, type OraculoGameSlideItem, type OraculoGameSlideProps, OraculoLiveCasinoCard, type OraculoLiveCasinoCardProps, type OraculoLiveCasinoItem, OraculoSeccionBonoBienvenida, type OraculoSeccionBonoBienvenidaProps, OraculoSeccionCasino, OraculoSeccionCasinoEnVivo, type OraculoSeccionCasinoEnVivoProps, type OraculoSeccionCasinoProps, OraculoSeccionClubOlimpo, OraculoSeccionDestacados, type OraculoSeccionDestacadosProps, OraculoSeccionTopJuegos, type OraculoSeccionTopJuegosProps, OraculoSeccionVirtuales, type OraculoSeccionVirtualesProps, OraculoSectionTitle, type OraculoSectionTitleProps, type OraculoTopJuegoItem, OraculoWelcomeBanner, type OraculoWelcomeBannerProps };
263
+ interface parametros {
264
+ bonos: OraculoSeccionBonoProps;
265
+ topJuegos: OraculoSeccionTopJuegosProps;
266
+ casino: OraculoSeccionCasinoProps;
267
+ casinoEnVivo: OraculoSeccionCasinoEnVivoProps;
268
+ virtuales: OraculoSeccionVirtualesProps;
269
+ clubOlimpo: OraculoSeccionClubOlimpoItem;
270
+ }
271
+ declare function OraculoPageLanding({ props }: {
272
+ props: parametros;
273
+ }): react_jsx_runtime.JSX.Element;
274
+
275
+ export { type OraculoBonosItem, OraculoButton, type OraculoButtonProps, OraculoCarousel, OraculoCarouselDots, type OraculoCarouselDotsProps, type OraculoCarouselOptions, type OraculoCarouselProps, type OraculoCarouselRef, OraculoClubOlimpoVisual, type OraculoClubOlimpoVisualProps, type OraculoDestacadoItem, OraculoGameCard, type OraculoGameCardProps, type OraculoGameItem, OraculoGameRankCard, type OraculoGameRankCardProps, type OraculoGameRankCardSizes, OraculoGameSlide, type OraculoGameSlideItem, type OraculoGameSlideProps, OraculoLiveCasinoCard, type OraculoLiveCasinoCardProps, OraculoPageLanding, OraculoSeccionBonoBienvenida, type OraculoSeccionBonoProps, OraculoSeccionCasino, OraculoSeccionCasinoEnVivo, type OraculoSeccionCasinoEnVivoProps, type OraculoSeccionCasinoProps, OraculoSeccionClubOlimpo, type OraculoSeccionClubOlimpoItem, OraculoSeccionDestacados, type OraculoSeccionDestacadosProps, OraculoSeccionTopJuegos, type OraculoSeccionTopJuegosProps, OraculoSeccionVirtuales, type OraculoSeccionVirtualesProps, OraculoSectionTitle, type OraculoSectionTitleProps, OraculoSeccionTopJuegos as OraculoTopJuegoItem, OraculoWelcomeBanner, type OraculoWelcomeBannerProps };
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ __export(index_exports, {
38
38
  OraculoGameRankCard: () => OraculoGameRankCard,
39
39
  OraculoGameSlide: () => OraculoGameSlide_default,
40
40
  OraculoLiveCasinoCard: () => OraculoLiveCasinoCard_default,
41
+ OraculoPageLanding: () => OraculoPageLanding,
41
42
  OraculoSeccionBonoBienvenida: () => OraculoSeccionBonoBienvenida_default,
42
43
  OraculoSeccionCasino: () => OraculoSeccionCasino_default,
43
44
  OraculoSeccionCasinoEnVivo: () => OraculoSeccionCasinoEnVivo_default,
@@ -46,6 +47,7 @@ __export(index_exports, {
46
47
  OraculoSeccionTopJuegos: () => OraculoSeccionTopJuegos,
47
48
  OraculoSeccionVirtuales: () => OraculoSeccionVirtuales_default,
48
49
  OraculoSectionTitle: () => OraculoSectionTitle,
50
+ OraculoTopJuegoItem: () => OraculoSeccionTopJuegos,
49
51
  OraculoWelcomeBanner: () => OraculoWelcomeBanner_default
50
52
  });
51
53
  module.exports = __toCommonJS(index_exports);
@@ -316,7 +318,7 @@ function OraculoGameRankCard({
316
318
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
317
319
  "img",
318
320
  {
319
- src: imageUrl,
321
+ src: `https://olimpo.bet${imageUrl}`,
320
322
  alt: "Juego de casino",
321
323
  loading: "lazy",
322
324
  style: {
@@ -578,7 +580,7 @@ var OraculoGameSlide = ({
578
580
  {
579
581
  imageUrl: it.imageUrl,
580
582
  size: "sm",
581
- onClick: () => onClick == null ? void 0 : onClick(it, index)
583
+ onClick: () => onClick == null ? void 0 : onClick(it, index + 1)
582
584
  }
583
585
  )
584
586
  },
@@ -976,6 +978,7 @@ function OraculoSeccionDestacados({
976
978
  }
977
979
 
978
980
  // src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx
981
+ var import_react3 = require("react");
979
982
  var import_Stack = __toESM(require("@mui/material/Stack"));
980
983
  var import_Box6 = __toESM(require("@mui/material/Box"));
981
984
  var import_jsx_runtime14 = require("react/jsx-runtime");
@@ -983,10 +986,24 @@ function OraculoSeccionTopJuegos({
983
986
  items,
984
987
  title = "Top Juegos",
985
988
  iconUrl,
986
- onCardClick,
987
- className
989
+ onCardClick
988
990
  }) {
989
- 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: [
991
+ const normalizedItems = (0, import_react3.useMemo)(
992
+ () => items.map((item, index) => {
993
+ var _a;
994
+ return {
995
+ ...item,
996
+ // si no viene orden, usamos el índice (1-based)
997
+ orden: (_a = item.orden) != null ? _a : index + 1,
998
+ _originalIndex: index
999
+ };
1000
+ }).sort((a, b) => {
1001
+ if (a.orden != null && b.orden != null) return a.orden - b.orden;
1002
+ return a._originalIndex - b._originalIndex;
1003
+ }),
1004
+ [items]
1005
+ );
1006
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("section", { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_Stack.default, { direction: "column", spacing: 2, useFlexGap: true, children: [
990
1007
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(OraculoSectionTitle, { title, iconUrl, size: "md" }),
991
1008
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
992
1009
  import_Box6.default,
@@ -1001,12 +1018,12 @@ function OraculoSeccionTopJuegos({
1001
1018
  justifyItems: "center",
1002
1019
  width: "100%"
1003
1020
  },
1004
- children: items.slice(0, 6).map((juego, idx) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1021
+ children: normalizedItems.slice(0, 6).map((juego) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1005
1022
  OraculoGameRankCard,
1006
1023
  {
1007
1024
  imageUrl: juego.logo || "",
1008
- orden: juego.orden || idx + 1,
1009
- onClick: () => console.log(juego.machine)
1025
+ orden: juego.orden,
1026
+ onClick: () => onCardClick == null ? void 0 : onCardClick(juego)
1010
1027
  },
1011
1028
  juego.machine
1012
1029
  ))
@@ -1169,7 +1186,7 @@ var OraculoSeccionCasinoEnVivo = ({
1169
1186
  var OraculoSeccionCasinoEnVivo_default = OraculoSeccionCasinoEnVivo;
1170
1187
 
1171
1188
  // src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx
1172
- var import_react3 = require("react");
1189
+ var import_react4 = require("react");
1173
1190
  var import_Stack3 = __toESM(require("@mui/material/Stack"));
1174
1191
  var import_Box8 = __toESM(require("@mui/material/Box"));
1175
1192
  var import_jsx_runtime16 = require("react/jsx-runtime");
@@ -1211,11 +1228,10 @@ var OraculoSeccionCasino = ({
1211
1228
  onItemClick,
1212
1229
  onViewMore,
1213
1230
  mosaicFirst = true,
1214
- gridSize = 4,
1215
- className
1231
+ gridSize = 4
1216
1232
  }) => {
1217
- const carouselRef = (0, import_react3.useRef)(null);
1218
- const [navState, setNavState] = (0, import_react3.useState)({ isStart: true, isEnd: false });
1233
+ const carouselRef = (0, import_react4.useRef)(null);
1234
+ const [navState, setNavState] = (0, import_react4.useState)({ isStart: true, isEnd: false });
1219
1235
  const slides = buildCasinoSlides(items, mosaicFirst, gridSize);
1220
1236
  const handlePrev = () => {
1221
1237
  var _a;
@@ -1228,7 +1244,7 @@ var OraculoSeccionCasino = ({
1228
1244
  const handleViewMore = () => {
1229
1245
  onViewMore == null ? void 0 : onViewMore();
1230
1246
  };
1231
- 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: [
1247
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("section", { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_Stack3.default, { direction: "column", spacing: 2, useFlexGap: true, children: [
1232
1248
  /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1233
1249
  import_Box8.default,
1234
1250
  {
@@ -1326,7 +1342,7 @@ var OraculoSeccionCasino = ({
1326
1342
  var OraculoSeccionCasino_default = OraculoSeccionCasino;
1327
1343
 
1328
1344
  // src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx
1329
- var import_react4 = require("react");
1345
+ var import_react5 = require("react");
1330
1346
  var import_Stack4 = __toESM(require("@mui/material/Stack"));
1331
1347
  var import_Box9 = __toESM(require("@mui/material/Box"));
1332
1348
  var import_jsx_runtime17 = require("react/jsx-runtime");
@@ -1368,11 +1384,10 @@ var OraculoSeccionVirtuales = ({
1368
1384
  onItemClick,
1369
1385
  onViewMore,
1370
1386
  mosaicFirst = true,
1371
- gridSize = 4,
1372
- className
1387
+ gridSize = 4
1373
1388
  }) => {
1374
- const carouselRef = (0, import_react4.useRef)(null);
1375
- const [navState, setNavState] = (0, import_react4.useState)({ isStart: true, isEnd: false });
1389
+ const carouselRef = (0, import_react5.useRef)(null);
1390
+ const [navState, setNavState] = (0, import_react5.useState)({ isStart: true, isEnd: false });
1376
1391
  const slides = buildVirtualSlides(items, mosaicFirst, gridSize);
1377
1392
  const handlePrev = () => {
1378
1393
  var _a;
@@ -1385,7 +1400,7 @@ var OraculoSeccionVirtuales = ({
1385
1400
  const handleViewMore = () => {
1386
1401
  onViewMore == null ? void 0 : onViewMore();
1387
1402
  };
1388
- 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: [
1403
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("section", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_Stack4.default, { direction: "column", spacing: 2, useFlexGap: true, children: [
1389
1404
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1390
1405
  import_Box9.default,
1391
1406
  {
@@ -1484,7 +1499,7 @@ var OraculoSeccionVirtuales = ({
1484
1499
  var OraculoSeccionVirtuales_default = OraculoSeccionVirtuales;
1485
1500
 
1486
1501
  // src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx
1487
- var import_react5 = require("react");
1502
+ var import_react6 = require("react");
1488
1503
  var import_Box10 = __toESM(require("@mui/material/Box"));
1489
1504
  var import_Typography4 = __toESM(require("@mui/material/Typography"));
1490
1505
  var import_useMediaQuery = __toESM(require("@mui/material/useMediaQuery"));
@@ -1540,9 +1555,9 @@ var OraculoSeccionBonoBienvenida = ({
1540
1555
  const showDots = items.length > 1;
1541
1556
  const bgUrl = backgroundImageUrl != null ? backgroundImageUrl : "/assets/img/home/BonoBienvenida/Fondobg.png";
1542
1557
  const sectionSx = buildSectionSx(bgUrl);
1543
- const carouselRef = (0, import_react5.useRef)(null);
1544
- const [navState, setNavState] = (0, import_react5.useState)({ isStart: true, isEnd: false });
1545
- const [activeIndex, setActiveIndex] = (0, import_react5.useState)(0);
1558
+ const carouselRef = (0, import_react6.useRef)(null);
1559
+ const [navState, setNavState] = (0, import_react6.useState)({ isStart: true, isEnd: false });
1560
+ const [activeIndex, setActiveIndex] = (0, import_react6.useState)(0);
1546
1561
  if (isMobile) {
1547
1562
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1548
1563
  import_Box10.default,
@@ -1674,7 +1689,7 @@ var OraculoSeccionBonoBienvenida = ({
1674
1689
  var OraculoSeccionBonoBienvenida_default = OraculoSeccionBonoBienvenida;
1675
1690
 
1676
1691
  // src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx
1677
- var import_react6 = require("react");
1692
+ var import_react7 = require("react");
1678
1693
  var import_jsx_runtime19 = require("react/jsx-runtime");
1679
1694
  var OraculoSeccionClubOlimpo = ({
1680
1695
  className = "",
@@ -1683,12 +1698,12 @@ var OraculoSeccionClubOlimpo = ({
1683
1698
  selectedIndex = 0,
1684
1699
  ariaLabel
1685
1700
  }) => {
1686
- const rootRef = (0, import_react6.useRef)(null);
1687
- const bottomRef = (0, import_react6.useRef)(null);
1701
+ const rootRef = (0, import_react7.useRef)(null);
1702
+ const bottomRef = (0, import_react7.useRef)(null);
1688
1703
  if (!items) return null;
1689
1704
  const safeIndex = Math.min(Math.max(selectedIndex, 0), 1);
1690
1705
  const item = items;
1691
- (0, import_react6.useLayoutEffect)(() => {
1706
+ (0, import_react7.useLayoutEffect)(() => {
1692
1707
  if (!rootRef.current || !bottomRef.current) return;
1693
1708
  if (typeof ResizeObserver === "undefined") return;
1694
1709
  const root = rootRef.current;
@@ -1730,6 +1745,94 @@ var OraculoSeccionClubOlimpo = ({
1730
1745
  );
1731
1746
  };
1732
1747
  var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
1748
+
1749
+ // src/templates/OraculoPageLanding.tsx
1750
+ var import_material2 = require("@mui/material");
1751
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1752
+ function OraculoPageLanding({ props }) {
1753
+ const clubOlimpoItems = [
1754
+ {
1755
+ text: "\xA1Canjea bonos, productos \n y las mejores experiencias!",
1756
+ imgAlt: "Club Olimpo",
1757
+ images: {
1758
+ mobile: "/assets/img/home/ClubOlimpo/FondoMobile.png",
1759
+ desktopBg: "/assets/img/home/ClubOlimpo/FondoDesktop.png",
1760
+ desktopLogo: "/assets/img/home/ClubOlimpo/Logo.png"
1761
+ },
1762
+ onClick: () => console.log("CTA Club Olimpo")
1763
+ }
1764
+ ];
1765
+ const listaDestacados = [
1766
+ { id: 1, src: "/assets/img/home/Destacados/Banner01.png", alt: "Gol Seguro", href: "/destacados" },
1767
+ { id: 2, src: "/assets/img/home/Destacados/Banner02.png", alt: "Promo 2", href: "/destacados" },
1768
+ { id: 3, src: "/assets/img/home/Destacados/Banner01.png", alt: "Gol Seguro", href: "/destacados" },
1769
+ { id: 4, src: "/assets/img/home/Destacados/Banner02.png", alt: "Promo 2", href: "/destacados" }
1770
+ ];
1771
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_material2.Container, { className: "oli-font", sx: { backgroundColor: "#121212", position: "relative", pb: 5 }, maxWidth: false, children: [
1772
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1773
+ OraculoSeccionBonoBienvenida_default,
1774
+ {
1775
+ headline: props.bonos.headline,
1776
+ items: props.bonos.items
1777
+ }
1778
+ ),
1779
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_material2.Stack, { direction: "column", spacing: 12, useFlexGap: true, children: [
1780
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1781
+ OraculoSeccionTopJuegos,
1782
+ {
1783
+ items: props.topJuegos.items,
1784
+ title: props.topJuegos.title,
1785
+ iconUrl: props.topJuegos.iconUrl,
1786
+ onCardClick: props.topJuegos.onCardClick
1787
+ }
1788
+ ),
1789
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1790
+ OraculoSeccionCasino_default,
1791
+ {
1792
+ items: props.casino.items,
1793
+ title: props.casino.title,
1794
+ iconUrl: props.casino.iconUrl,
1795
+ onItemClick: props.casino.onItemClick,
1796
+ onViewMore: props.casino.onViewMore
1797
+ }
1798
+ )
1799
+ ] }),
1800
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1801
+ OraculoSeccionCasinoEnVivo_default,
1802
+ {
1803
+ items: props.casinoEnVivo.items,
1804
+ title: props.casinoEnVivo.title,
1805
+ subtitle: props.casinoEnVivo.subtitle,
1806
+ backgroundMobileUrl: props.casinoEnVivo.backgroundMobileUrl,
1807
+ backgroundDesktopUrl: props.casinoEnVivo.backgroundDesktopUrl,
1808
+ onCardClick: props.casinoEnVivo.onCardClick,
1809
+ onViewMore: props.casinoEnVivo.onViewMore
1810
+ }
1811
+ ),
1812
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_material2.Stack, { direction: "column", spacing: 12, useFlexGap: true, children: [
1813
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1814
+ OraculoSeccionVirtuales_default,
1815
+ {
1816
+ items: props.virtuales.items,
1817
+ title: props.virtuales.title,
1818
+ iconUrl: props.virtuales.iconUrl,
1819
+ onItemClick: props.virtuales.onItemClick,
1820
+ onViewMore: props.virtuales.onViewMore
1821
+ }
1822
+ ),
1823
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1824
+ OraculoSeccionDestacados,
1825
+ {
1826
+ items: listaDestacados,
1827
+ title: "Destacados",
1828
+ iconUrl: "/assets/img/home/Destacados/starIcon.svg",
1829
+ onViewMore: () => console.log("Ver m\xE1s clickeado")
1830
+ }
1831
+ ),
1832
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(OraculoSeccionClubOlimpo_default, { items: props.clubOlimpo })
1833
+ ] })
1834
+ ] });
1835
+ }
1733
1836
  // Annotate the CommonJS export names for ESM import in node:
1734
1837
  0 && (module.exports = {
1735
1838
  OraculoButton,
@@ -1740,6 +1843,7 @@ var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
1740
1843
  OraculoGameRankCard,
1741
1844
  OraculoGameSlide,
1742
1845
  OraculoLiveCasinoCard,
1846
+ OraculoPageLanding,
1743
1847
  OraculoSeccionBonoBienvenida,
1744
1848
  OraculoSeccionCasino,
1745
1849
  OraculoSeccionCasinoEnVivo,
@@ -1748,5 +1852,6 @@ var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
1748
1852
  OraculoSeccionTopJuegos,
1749
1853
  OraculoSeccionVirtuales,
1750
1854
  OraculoSectionTitle,
1855
+ OraculoTopJuegoItem,
1751
1856
  OraculoWelcomeBanner
1752
1857
  });
package/dist/index.mjs CHANGED
@@ -272,7 +272,7 @@ function OraculoGameRankCard({
272
272
  /* @__PURE__ */ jsx5(
273
273
  "img",
274
274
  {
275
- src: imageUrl,
275
+ src: `https://olimpo.bet${imageUrl}`,
276
276
  alt: "Juego de casino",
277
277
  loading: "lazy",
278
278
  style: {
@@ -534,7 +534,7 @@ var OraculoGameSlide = ({
534
534
  {
535
535
  imageUrl: it.imageUrl,
536
536
  size: "sm",
537
- onClick: () => onClick == null ? void 0 : onClick(it, index)
537
+ onClick: () => onClick == null ? void 0 : onClick(it, index + 1)
538
538
  }
539
539
  )
540
540
  },
@@ -932,6 +932,7 @@ function OraculoSeccionDestacados({
932
932
  }
933
933
 
934
934
  // src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx
935
+ import { useMemo } from "react";
935
936
  import Stack from "@mui/material/Stack";
936
937
  import Box6 from "@mui/material/Box";
937
938
  import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
@@ -939,10 +940,24 @@ function OraculoSeccionTopJuegos({
939
940
  items,
940
941
  title = "Top Juegos",
941
942
  iconUrl,
942
- onCardClick,
943
- className
943
+ onCardClick
944
944
  }) {
945
- return /* @__PURE__ */ jsx12("section", { className, style: { width: "100%" }, children: /* @__PURE__ */ jsxs9(Stack, { direction: "column", spacing: 2, useFlexGap: true, children: [
945
+ const normalizedItems = useMemo(
946
+ () => items.map((item, index) => {
947
+ var _a;
948
+ return {
949
+ ...item,
950
+ // si no viene orden, usamos el índice (1-based)
951
+ orden: (_a = item.orden) != null ? _a : index + 1,
952
+ _originalIndex: index
953
+ };
954
+ }).sort((a, b) => {
955
+ if (a.orden != null && b.orden != null) return a.orden - b.orden;
956
+ return a._originalIndex - b._originalIndex;
957
+ }),
958
+ [items]
959
+ );
960
+ return /* @__PURE__ */ jsx12("section", { style: { width: "100%" }, children: /* @__PURE__ */ jsxs9(Stack, { direction: "column", spacing: 2, useFlexGap: true, children: [
946
961
  /* @__PURE__ */ jsx12(OraculoSectionTitle, { title, iconUrl, size: "md" }),
947
962
  /* @__PURE__ */ jsx12(
948
963
  Box6,
@@ -957,12 +972,12 @@ function OraculoSeccionTopJuegos({
957
972
  justifyItems: "center",
958
973
  width: "100%"
959
974
  },
960
- children: items.slice(0, 6).map((juego, idx) => /* @__PURE__ */ jsx12(
975
+ children: normalizedItems.slice(0, 6).map((juego) => /* @__PURE__ */ jsx12(
961
976
  OraculoGameRankCard,
962
977
  {
963
978
  imageUrl: juego.logo || "",
964
- orden: juego.orden || idx + 1,
965
- onClick: () => console.log(juego.machine)
979
+ orden: juego.orden,
980
+ onClick: () => onCardClick == null ? void 0 : onCardClick(juego)
966
981
  },
967
982
  juego.machine
968
983
  ))
@@ -1167,8 +1182,7 @@ var OraculoSeccionCasino = ({
1167
1182
  onItemClick,
1168
1183
  onViewMore,
1169
1184
  mosaicFirst = true,
1170
- gridSize = 4,
1171
- className
1185
+ gridSize = 4
1172
1186
  }) => {
1173
1187
  const carouselRef = useRef3(null);
1174
1188
  const [navState, setNavState] = useState2({ isStart: true, isEnd: false });
@@ -1184,7 +1198,7 @@ var OraculoSeccionCasino = ({
1184
1198
  const handleViewMore = () => {
1185
1199
  onViewMore == null ? void 0 : onViewMore();
1186
1200
  };
1187
- return /* @__PURE__ */ jsx14("section", { className, children: /* @__PURE__ */ jsxs11(Stack3, { direction: "column", spacing: 2, useFlexGap: true, children: [
1201
+ return /* @__PURE__ */ jsx14("section", { children: /* @__PURE__ */ jsxs11(Stack3, { direction: "column", spacing: 2, useFlexGap: true, children: [
1188
1202
  /* @__PURE__ */ jsxs11(
1189
1203
  Box8,
1190
1204
  {
@@ -1324,8 +1338,7 @@ var OraculoSeccionVirtuales = ({
1324
1338
  onItemClick,
1325
1339
  onViewMore,
1326
1340
  mosaicFirst = true,
1327
- gridSize = 4,
1328
- className
1341
+ gridSize = 4
1329
1342
  }) => {
1330
1343
  const carouselRef = useRef4(null);
1331
1344
  const [navState, setNavState] = useState3({ isStart: true, isEnd: false });
@@ -1341,7 +1354,7 @@ var OraculoSeccionVirtuales = ({
1341
1354
  const handleViewMore = () => {
1342
1355
  onViewMore == null ? void 0 : onViewMore();
1343
1356
  };
1344
- return /* @__PURE__ */ jsx15("section", { className, children: /* @__PURE__ */ jsxs12(Stack4, { direction: "column", spacing: 2, useFlexGap: true, children: [
1357
+ return /* @__PURE__ */ jsx15("section", { children: /* @__PURE__ */ jsxs12(Stack4, { direction: "column", spacing: 2, useFlexGap: true, children: [
1345
1358
  /* @__PURE__ */ jsxs12(
1346
1359
  Box9,
1347
1360
  {
@@ -1686,6 +1699,97 @@ var OraculoSeccionClubOlimpo = ({
1686
1699
  );
1687
1700
  };
1688
1701
  var OraculoSeccionClubOlimpo_default = OraculoSeccionClubOlimpo;
1702
+
1703
+ // src/templates/OraculoPageLanding.tsx
1704
+ import {
1705
+ Container,
1706
+ Stack as Stack5
1707
+ } from "@mui/material";
1708
+ import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
1709
+ function OraculoPageLanding({ props }) {
1710
+ const clubOlimpoItems = [
1711
+ {
1712
+ text: "\xA1Canjea bonos, productos \n y las mejores experiencias!",
1713
+ imgAlt: "Club Olimpo",
1714
+ images: {
1715
+ mobile: "/assets/img/home/ClubOlimpo/FondoMobile.png",
1716
+ desktopBg: "/assets/img/home/ClubOlimpo/FondoDesktop.png",
1717
+ desktopLogo: "/assets/img/home/ClubOlimpo/Logo.png"
1718
+ },
1719
+ onClick: () => console.log("CTA Club Olimpo")
1720
+ }
1721
+ ];
1722
+ const listaDestacados = [
1723
+ { id: 1, src: "/assets/img/home/Destacados/Banner01.png", alt: "Gol Seguro", href: "/destacados" },
1724
+ { id: 2, src: "/assets/img/home/Destacados/Banner02.png", alt: "Promo 2", href: "/destacados" },
1725
+ { id: 3, src: "/assets/img/home/Destacados/Banner01.png", alt: "Gol Seguro", href: "/destacados" },
1726
+ { id: 4, src: "/assets/img/home/Destacados/Banner02.png", alt: "Promo 2", href: "/destacados" }
1727
+ ];
1728
+ return /* @__PURE__ */ jsxs14(Container, { className: "oli-font", sx: { backgroundColor: "#121212", position: "relative", pb: 5 }, maxWidth: false, children: [
1729
+ /* @__PURE__ */ jsx18(
1730
+ OraculoSeccionBonoBienvenida_default,
1731
+ {
1732
+ headline: props.bonos.headline,
1733
+ items: props.bonos.items
1734
+ }
1735
+ ),
1736
+ /* @__PURE__ */ jsxs14(Stack5, { direction: "column", spacing: 12, useFlexGap: true, children: [
1737
+ /* @__PURE__ */ jsx18(
1738
+ OraculoSeccionTopJuegos,
1739
+ {
1740
+ items: props.topJuegos.items,
1741
+ title: props.topJuegos.title,
1742
+ iconUrl: props.topJuegos.iconUrl,
1743
+ onCardClick: props.topJuegos.onCardClick
1744
+ }
1745
+ ),
1746
+ /* @__PURE__ */ jsx18(
1747
+ OraculoSeccionCasino_default,
1748
+ {
1749
+ items: props.casino.items,
1750
+ title: props.casino.title,
1751
+ iconUrl: props.casino.iconUrl,
1752
+ onItemClick: props.casino.onItemClick,
1753
+ onViewMore: props.casino.onViewMore
1754
+ }
1755
+ )
1756
+ ] }),
1757
+ /* @__PURE__ */ jsx18(
1758
+ OraculoSeccionCasinoEnVivo_default,
1759
+ {
1760
+ items: props.casinoEnVivo.items,
1761
+ title: props.casinoEnVivo.title,
1762
+ subtitle: props.casinoEnVivo.subtitle,
1763
+ backgroundMobileUrl: props.casinoEnVivo.backgroundMobileUrl,
1764
+ backgroundDesktopUrl: props.casinoEnVivo.backgroundDesktopUrl,
1765
+ onCardClick: props.casinoEnVivo.onCardClick,
1766
+ onViewMore: props.casinoEnVivo.onViewMore
1767
+ }
1768
+ ),
1769
+ /* @__PURE__ */ jsxs14(Stack5, { direction: "column", spacing: 12, useFlexGap: true, children: [
1770
+ /* @__PURE__ */ jsx18(
1771
+ OraculoSeccionVirtuales_default,
1772
+ {
1773
+ items: props.virtuales.items,
1774
+ title: props.virtuales.title,
1775
+ iconUrl: props.virtuales.iconUrl,
1776
+ onItemClick: props.virtuales.onItemClick,
1777
+ onViewMore: props.virtuales.onViewMore
1778
+ }
1779
+ ),
1780
+ /* @__PURE__ */ jsx18(
1781
+ OraculoSeccionDestacados,
1782
+ {
1783
+ items: listaDestacados,
1784
+ title: "Destacados",
1785
+ iconUrl: "/assets/img/home/Destacados/starIcon.svg",
1786
+ onViewMore: () => console.log("Ver m\xE1s clickeado")
1787
+ }
1788
+ ),
1789
+ /* @__PURE__ */ jsx18(OraculoSeccionClubOlimpo_default, { items: props.clubOlimpo })
1790
+ ] })
1791
+ ] });
1792
+ }
1689
1793
  export {
1690
1794
  OraculoButton,
1691
1795
  OraculoCarousel_default as OraculoCarousel,
@@ -1695,6 +1799,7 @@ export {
1695
1799
  OraculoGameRankCard,
1696
1800
  OraculoGameSlide_default as OraculoGameSlide,
1697
1801
  OraculoLiveCasinoCard_default as OraculoLiveCasinoCard,
1802
+ OraculoPageLanding,
1698
1803
  OraculoSeccionBonoBienvenida_default as OraculoSeccionBonoBienvenida,
1699
1804
  OraculoSeccionCasino_default as OraculoSeccionCasino,
1700
1805
  OraculoSeccionCasinoEnVivo_default as OraculoSeccionCasinoEnVivo,
@@ -1703,5 +1808,6 @@ export {
1703
1808
  OraculoSeccionTopJuegos,
1704
1809
  OraculoSeccionVirtuales_default as OraculoSeccionVirtuales,
1705
1810
  OraculoSectionTitle,
1811
+ OraculoSeccionTopJuegos as OraculoTopJuegoItem,
1706
1812
  OraculoWelcomeBanner_default as OraculoWelcomeBanner
1707
1813
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oraculo-ui",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",