oraculo-ui 0.1.77 → 0.1.78
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.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +859 -825
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/atoms/OraculoButton/OraculoButton.tsx","../src/atoms/OraculoSectionTitle/OraculoSectionTitle.tsx","../src/atoms/OraculoCarouselDots/OraculoCarouselDots.tsx","../src/atoms/OraculoGridGroup/OraculoGridGroup.tsx","../src/atoms/OraculoLogo/OraculoLogoMediosPago.tsx","../src/atoms/OraculoEvent/OraculoEventTitle.tsx","../src/atoms/OraculoEvent/OraculoEventStatusBadge.tsx","../src/atoms/OraculoEvent/OraculoEventStatus.tsx","../src/atoms/OraculoEvent/OraculoEventHeader.tsx","../src/atoms/OraculoEvent/OraculoEventLabel.tsx","../src/atoms/OraculoEvent/OraculoEventLeague.tsx","../src/atoms/OraculoEvent/OraculoEventScore.tsx","../src/atoms/OraculoEvent/OraculoTeamPolo.tsx","../src/atoms/OraculoEvent/OraculoEventTeamInfo.tsx","../src/molecules/OraculoCarousel/useHorizontalWheelSplide.tsx","../src/molecules/OraculoCarousel/OraculoCarousel.tsx","../src/molecules/OraculoGameCard/OraculoGameCard.tsx","../src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx","../src/molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard.tsx","../src/molecules/OraculoGameSlide/OraculoGameSlide.tsx","../src/molecules/OraculoWelcomeBanner/OraculoWelcomeBanner.tsx","../src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx","../src/atoms/OraculoEvent/KambiOpenBet.tsx","../src/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/atoms/OraculoButtonBet/OraculoButtonBet.tsx","../src/atoms/OraculoEvent/KambiJersey.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../src/utils/openMachineRegistry.ts","../src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx","../src/organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo.tsx","../src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx","../src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx","../src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx","../src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx","../src/organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCardSkeleton.tsx","../src/molecules/OraculoEventCard/FadeItemWrapper.tsx","../src/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCardSkeleton.tsx","../src/organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana.tsx","../src/organisms/OraculoSeccionBanners/OraculoSeccionBanners.tsx","../src/organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago.tsx","../src/templates/landingRegistry.ts","../src/templates/OraculoPageLandingPreview.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./OraculoButton.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButton({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n \"orc-btn\",\r\n variant === \"secondary\"\r\n ? \"orc-btn--secondary\"\r\n : variant === \"tertiary\"\r\n ? \"orc-btn--tertiary\"\r\n : \"orc-btn--primary\",\r\n size ? `orc-btn--${size}` : \"\",\r\n fullWidth ? \"orc-btn--full\" : \"\",\r\n fullHeight ? \"orc-btn--fullHeight\" : \"\",\r\n isIconOnly ? \"orc-btn--iconOnly\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className=\"orc-btn__icon\">{leftIcon}</span>}\r\n {!isIconOnly && <span className=\"orc-btn__label\">{children}</span>}\r\n {rightIcon && <span className=\"orc-btn__icon\">{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoSectionTitle.css\";\r\n\r\nexport interface OraculoSectionTitleProps {\r\n title: string;\r\n iconUrl?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nexport default function OraculoSectionTitle({\r\n title,\r\n iconUrl,\r\n size = \"md\",\r\n className = \"\",\r\n}: OraculoSectionTitleProps) {\r\n const sizeClass = size ? `orc-section-title--${size}` : \"\";\r\n\r\n const wrapperClass = [\r\n \"orc-section-title\",\r\n sizeClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {iconUrl && (\r\n <img\r\n src={iconUrl}\r\n alt=\"\"\r\n className=\"orc-section-title__icon\"\r\n />\r\n )}\r\n <h2 className=\"orc-section-title__title\">{title}</h2>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoCarouselDots.css\";\r\n\r\nexport interface OraculoCarouselDotsProps {\r\n total: number;\r\n active: number;\r\n onSelect?: (index: number) => void;\r\n className?: string;\r\n}\r\n\r\nconst OraculoCarouselDots: React.FC<OraculoCarouselDotsProps> = ({\r\n total,\r\n active,\r\n onSelect,\r\n className = \"\",\r\n}) => {\r\n if (total <= 1) return null;\r\n\r\n const rootClass = [\"orc-dots\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={rootClass} role=\"tablist\">\r\n {Array.from({ length: total }).map((_, i) => (\r\n <span key={i} className=\"orc-dots__cell\">\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={i === active}\r\n aria-label={`Ir al slide ${i + 1}`}\r\n className={\r\n \"orc-dots__dot\" +\r\n (i === active ? \" orc-dots__dot--active\" : \"\")\r\n }\r\n onClick={() => onSelect?.(i)}\r\n />\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default OraculoCarouselDots;\r\n","import React, { ReactNode } from \"react\";\r\n\r\nexport interface OraculoGridGroupProps {\r\n /** Children inside the grid */\r\n children: ReactNode;\r\n\r\n /** Minimum width (in px) for auto-fit columns */\r\n minWidth?: number;\r\n\r\n /** Gap spacing: number → multiplier of 8px, or string → custom CSS value */\r\n spacing?: number | string;\r\n\r\n /** Horizontal alignment of grid items */\r\n justify?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n\r\n /** Custom grid template definition (overrides auto-fit/minmax behavior) */\r\n columns?: string | null;\r\n}\r\n\r\nexport default function OraculoGridGroup({\r\n children,\r\n minWidth = 32,\r\n spacing = 2,\r\n justify = \"stretch\",\r\n columns = null,\r\n}: OraculoGridGroupProps) {\r\n const gridTemplate = columns\r\n ? columns\r\n : `repeat(auto-fit, minmax(${minWidth}px, 1fr))`;\r\n\r\n const gap = typeof spacing === \"number\" ? `${spacing * 8}px` : spacing;\r\n\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplate,\r\n justifyItems: justify,\r\n gap,\r\n height: \"inherit\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\n\r\nexport type Logo = { src: string; alt: string };\r\n\r\nexport default function OraculoLogoMediosPago({ src, alt }: Logo) {\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: { xs: 65, sm: 80, md: 120, lg: 160 }, // 65 en móvil, 80 en desktop\r\n height: { xs: 48, md: 96 }, // 48 en móvil, 96 en desktop\r\n display: \"inline-block\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={src}\r\n alt={alt}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTitle.module.css\";\r\n\r\ninterface OraculoEventTitleProps {\r\n title: string;\r\n subtitle?: string;\r\n}\r\n\r\nexport default function OraculoEventTitle({ title, subtitle }: OraculoEventTitleProps) {\r\n return (\r\n <div\r\n className={styles.contenedor}\r\n >\r\n <span\r\n style={{\r\n fontWeight: 700,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {title}\r\n </span>\r\n\r\n {subtitle && (\r\n <div\r\n className={styles.flexGroup}\r\n >\r\n <svg width=\"4\"height=\"4\"viewBox=\"0 0 5 5\"xmlns=\"http://www.w3.org/2000/svg\"style={{ flexShrink: 0 }}> <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"white\" /> </svg>\r\n <span className={styles.subtitle}>\r\n {subtitle}\r\n </span>\r\n <div></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\nexport interface OraculoEventStatusBadgeProps {\r\n /** Text inside the badge */\r\n text: string;\r\n\r\n /** Background color of the badge */\r\n color?: string;\r\n\r\n /** Text color */\r\n textColor?: string;\r\n}\r\n\r\nexport default function OraculoEventStatusBadge({ text, color = \"#ff3b3b\", textColor = \"#fff\" } : OraculoEventStatusBadgeProps) {\r\n return (\r\n <span\r\n className=\"oli-font\"\r\n style={{\r\n backgroundColor: color,\r\n color: textColor,\r\n borderRadius: \"8px\",\r\n padding: \"4px 8px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n fontWeight: 700,\r\n width : '41px',\r\n height : '16px',\r\n textAlign: 'center',\r\n }}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventStatusBadge from \"./OraculoEventStatusBadge\";\r\n\r\nexport interface OraculoEventStatusProps {\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoEventStatus({ live, time } : OraculoEventStatusProps) {\r\n return (\r\n <div className=\"oli-font\" style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\r\n {live && <OraculoEventStatusBadge text=\"En vivo\" />}\r\n {time && <span style={{ fontSize: \"14px\", fontWeight: 400, lineHeight: '18px', paddingTop: '4px' }}>{time}</span>}\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventTitle from \"./OraculoEventTitle\";\r\nimport OraculoEventStatus from \"./OraculoEventStatus\";\r\n\r\nexport interface OraculoMatchHeaderProps {\r\n title: string;\r\n subtitle?: string;\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoMatchHeader({ title, subtitle, live = false, time = \"\" } : OraculoMatchHeaderProps) {\r\n return (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n color: '#FFFFFF'\r\n }}\r\n >\r\n <OraculoEventTitle title={title} subtitle={subtitle} />\r\n <OraculoEventStatus live={live} time={time} />\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLabel.module.css\";\r\ninterface OraculoEventLabelProps {\r\n text: string;\r\n}\r\nexport default function OraculoEventLabel({ text } : OraculoEventLabelProps) {\r\n return <span className={styles.label}>{text}</span>;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLeague.module.css\";\r\ninterface EventLeague {\r\n title: string;\r\n}\r\nexport default function OraculoEventLeague({ title } : EventLeague) {\r\n return (\r\n <div className={styles.container}>\r\n {title.toUpperCase()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventScore.module.css\";\r\n\r\nexport interface OraculoEventScoreProps {\r\n text: string | number;\r\n\r\n name?: string;\r\n\r\n size?: \"normal\" | \"small\";\r\n}\r\n\r\nexport default function OraculoEventScore({ text, name, size = \"normal\" } : OraculoEventScoreProps) {\r\n return (\r\n <div\r\n className={`${styles.scoreWrapper} ${styles[size]}`}\r\n >\r\n <div className={`${styles.score} ${styles[size]}`}>{text}</div>\r\n {name && <span className={`${styles.name} ${styles[size]}`}>{name}</span>}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoTeamPolo.module.css\";\r\n\r\ninterface JerseyPlayer {\r\n base: string;\r\n sleeve?: string; // optional\r\n stripes?: string;\r\n sleevelong?: string;\r\n real?: boolean;\r\n}\r\n\r\nexport default function OraculoTeamPolo({ jersey, className }: { jersey: JerseyPlayer, className?:string }) {\r\nconst base = `#${jersey.base}`;\r\nconst sleeve = jersey.sleeve ? `#${jersey.sleeve}` : base;\r\nconst stripes = jersey.stripes ? `#${jersey.stripes}` : null;\r\nconst sleevelong = jersey.sleevelong ? `#${jersey.sleevelong}` : null;\r\n\r\n return (\r\n <div className={`${styles.polo} ${className ?? \"\"}`}>\r\n {/* BODY */}\r\n <div className={styles.svgWrapper}>\r\n <svg viewBox=\"0 0 656 656\" aria-hidden>\r\n {/* BASE / BODY */}\r\n <path\r\n fill={base}\r\n d=\"m62 265 5.8-17c-.4-.7-.6-1.5-.4-2 .2-.7.8-1.2 1.2-1.4l1.2-4 9-21.6c.2-1 1-3.5 2.4-6.4a69.9 69.9 0 0 1 4.1-17.2l2.9-7 2.9-11.4c1.7-5.8 5.2-18.4 5.8-22 .6-3.6 6.8-19 9.8-26.2.4-.9 2.4-4.7 7.2-12.8 5.4-12.2 23.5-27.2 32-33.1l6.6-3.7 7.9-3.6 17.3-6.2 16.6-7.1L215 52c7-4.1 21.8-12.5 24.1-13.2 2.3-.8 5-3.5 6-4.7 1.2-1.2 4.2-3.8 6.6-4.7 2.3-1 8.2-6.8 10.8-9.6 1.6-1.4 3.8-4.7 9.2-7.5 5.3-2.9 20.4-4 27.2-4.3h25.6l16.7.3 14.1.6 10.3.7 9.5 1.7c6.4.6 12.6 4.3 15.4 8l2.7 3.1 8.9 8 1.8.7 4.9 3 2.7 3.5c4.2 2.2 13.1 7.1 15.2 8.7 2 1.6 30.1 15.4 44 22 8 3.2 39 12.3 55.3 30 5.2 4.3 7 7.8 11.4 12.4 5.1 5.3 15.1 29 16.9 32 1.4 2.6 5 17 6.8 24l4.8 20.5 8.4 29 8.9 22.7 2.3 5.4.6 1.5c.5.6 1.4 2 1 2.6-.2.6 0 2 .2 2.7l1 2.6 2 5.8 2.2 5.9c.3 1.3-4.3 4-6.6 5.2l-11.1 5-12.6 4.7-15 5-14.6 4.6-10.9 2.4a66 66 0 0 1-8.6 1.4c-3.4.3-4.7-.4-4.9-.8l-5-12.3-1.9-3.8-1.8-1.6.1-.8v-1l-.4-1.8-1.3-4.1-3.3-9-1.3-2-2.2-5.7-2.5-.3-1 .8v2l-2.7 13.1-8.7 58-.9 6.4-.2 7.9c0 3-1 16-1.7 18.3l-2.5 9-.2 7.6-.3 8.7-.3 7.5.3 4 .5 15c.3 1.9-.6 7-1.1 9.3-.6 2.4-1.6 7.5-1.4 8.8.3 1.4-.2 4.4-.5 5.8l-1.3 8.9c-.2 1.4-.8 5-1.3 7.2.7 1.6 4.7 14.6 5.9 17.8 1.2 3.3 4.8 19.4 5 20.7.3 1 1.1 7.8 1.5 11 .1 2.5.3 8 .2 10 0 2-.8 6.6-1.1 8.6-.2 1.7-.7 5.5-1.2 7s-1.2 8.5-1.4 11.8A81.1 81.1 0 0 1 477 552l.3 7.1.2 6.5 1.4 17.7.5 6 1.5 7.7.4 4.6c.3 2.1.7 7 .7 10.1.3 3-2.5 6-4 7 0 .2-1.2 1-4.6 3-6.4 5-26.3 11.6-35.5 14.3a379.2 379.2 0 0 1-58.6 11.2c-2.3.8-27 2.2-39 2.7-8.3 0-27 0-34.5-.4-11.5.9-47.4-4.8-63.9-7.7-6.3-.9-42.1-10.4-48-14.4-3.7-2.4-14.3-8-16.9-9.7a10.7 10.7 0 0 1-4.1-5.4c-.3-1 .1-8.6.4-12.3l.6-5 1.4-9.6 1-8 .3-4.3-.4-7.7-1-10.8v-13.8l.7-10 1.1-7.7 1.8-8 2.8-9.5 3.3-9.3a78 78 0 0 1-2.5-20.8 1112.2 1112.2 0 0 1 .6-14.1c-.1-.7 2.1-10.2 3.3-15l1-3.8-.1-.8c-1.4-8.3-1.5-14-1.9-15.4a78 78 0 0 1 .4-10.9l2-6.7.4-2-.4-1.5a67.6 67.6 0 0 1-7.3-27l-.2-7.7.5-5.4.3-1.5.4-3.9.7-5 .2-2.2-.2-.4-.3-6-1-3.1-.3-4-.7-7.6-1.5-8.3-.8-4.2-1.4-9.2-.4-4.3L172 279l-2.2-14.6a545 545 0 0 1-1.7-8.5c-.1-1-2-2.1-3-2.6 0 .6-.6 1.5-1.7 2-1.2.7-2.4 1.3-2.7 2.2l-.8 4.7a15 15 0 0 1-2.5 4.1 16.4 16.4 0 0 0-2.6 6.3l-.3 2.4v1.3l-1.4 1.1-.3.3-6 14.5c-.7 2.3-1.3 1.8-1.9 1.5l-10.5-3.1-9-3-18.3-6-20-6.8-13-4.8c-2.1-1-7-3-9.4-3.8-2.5-.8-3-1.3-2.8-1.4Z\"\r\n />\r\n\r\n {stripes && (\r\n <>\r\n <path fill={stripes} d=\"m153 277.8-5.8 14.5c-1 2.8-2.5 1.4-4.6.7l-2-.5-7.8-2.4-15.6-5-19-6.5-16-5.7-12-4.4-5.5-2.2c-3.5-1.1-3.1-1.2-1.9-4l1.8-4.9 3.2-9.3c-1.1-1.9 0-3.1.8-3.5l.2-.7.5-2 4.3-10.3 2.4-6 2.6-6.2.8-2.6 1.7-4.1v-.4l.3-2.6.6-3.4 1-3.5 1-3.8c.1-.9 2-5.6 3-7.8l.7-1.5.7-2 .9-3.6 3.4-12.6 2.4-8.6 2.7-11.2 3.5-9.6 3.6-9.4 3-6 2-4.1 3.6-5.8 2.2-4.3 3-4.4 3.2-3.9 1.7-1.9 3.6-3.6 3-2.9a109.3 109.3 0 0 1 13.3-11.2l1.2-.8a79.3 79.3 0 0 1 18-9l11.4-4.2 4-1.4 6.3-2.7 3.3-1.4 2.8-1.2 4-1.6 3.9-2.1 10.1-5 4.8-2.4 5.7-3.2 13.8-7.7c1.5-.8 4.7-2.7 6-3a8.5 8.5 0 0 0 3-1.8c3.4-2.5 4.5-4.8 6-5.3.4-.4 2-1.6 5.2-3.2-4.4 3.3-3.2 11-2.1 14.6a77 77 0 0 0 8.7 18.8l-.6.4-3.9 2-9 5-6.6 3.7-10 3.2c-4.3.8-13.2 2.4-14.4 2.8-1.2.3-10.2 4-14.5 5.8l-11.8 5.6-8.8 3.2-12 3.4-19 8.7c-5.8 1.4-19.3 14.2-25.3 20.4L122 128l.3.4 6.6 16.6 10.5 22.6 6.2 10.8c2.9 3 8.7 9.7 9.1 11.7.5 2 4.3 5.1 6.1 6.5.2.8.8 3.1 1.7 5.4-3.2 4.8-.4 10.6 1.4 12.9l1 4.6.3 6.5-.5 1c-1.4 1.4-.3 4 .4 5l.1 3c.5 1.4 1.3 4.2.8 5.2s0 2.7.3 3.4v4.9c-3.1.5-2 3.7-1 5.2-.5.7-1.8 2.2-3.2 2.7-1.4.5-1.8 3.6-1.8 5.2a9 9 0 0 1-2.7 4.7c-1.8 1.6-2.8 7.4-3 10.1l-1.6 1.5ZM403.8 31.1l-1.6-.7c1.2 1 2 2.2 2.8 4 1.8 2.8.6 8-.7 12.2a78 78 0 0 1-7.6 17l.5.2 3.3 1.5 5.4 3.3 5.9 3 7.2 3 8.2 2.2c.7.2 3.3 1 8.4 2 5.5.1 21.1 8 28.2 11.8l14 4.5a517 517 0 0 1 23.8 9.3c6.3.5 24.7 17 33.1 25.2l-4.6 11.6-8.2 19.3-3.8 9-5.2 8.6c-2.2 3.2-7.3 10.2-9.4 12.4-1.3-.3-5.6 4.4-7.6 6.7.3 2 .6 6.7-1.4 9.1-2 2.5-1.8 6.9-1.4 8.7.3.8.5 3-1 5.3-1.4 2.4-1 4-.5 4.5-.2.8-.7 2.5-1.4 3.4-.8.8-.4 3.3 0 4.5l.1 3-.1 2.2c-.2.6-.6 2.6-1.1 6.2 3.6 3.3 1.3 5.7-.3 6.5l2.2.3 1.3 2.7 1.5 3.8 1.1 2.3 2.7 7.1 1.6 4.8.3 2.1v1.6l1.9 1.9 4 8.9 1.8 4.5c.5 4 5.5 3.6 8 3l5.9-1.1 7.3-1.7 5.2-1.2 7.3-2.1 8.3-2.7 7.5-2.5 9.8-3.6 8-3 6.3-2.8 3.4-1.6 3-1.3 2.5-1.6 1-.8c1.9-1 2-2.1 1.6-2.9l-.6-1.7-1-2.7-1.6-4.2-1.4-4-.5-1.4-.1-.7v-1.2c.7-1-.4-2.5-1-3v-.2l-1-2-2.4-6-3.3-8.3-2.3-6a3896.4 3896.4 0 0 0-3.1-8.4l-2.2-7.1-1.5-5.7-2.5-8.9-1-3.1-1.2-4.5-2-8.2-2.2-9.3-2.8-11.4-2.6-9.1-.9-3c0-.3-.6-1.5-1-2l-2.5-5.6-3-6.6-5.7-11.3-2.5-4.3-2.3-3.3-.7-.7-4.3-5-3-3.8a73 73 0 0 0-4.2-3.8c-1.1-2-7.6-7-10.8-9.4-6.2-5-23.4-12.8-34-16.7l-11-4-16-7.9-20.1-10-7.1-3.8-2.4-1.5-13-7.3-2.6-3.4-5-3Z\" />\r\n <path fill={stripes} d=\"M292.1 648.8c-15.7-1.4-37.7-5-49.7-7.1-4.3-.6-22.6-5.3-35.5-9.5 1.5-10 3-21 4.3-32.7 7-60.5 4.8-132.8 3.1-185.6l-.9-32c-1-49-2.4-83.5-3.6-112-1.2-29-2.1-51.7-2.1-77 0-29 2.9-77.3 5.3-112.9l2.6-1c1.3-.3 10.1-2 14.4-2.7l10-3.2 6.6-3.7 9-5 4-2 .5-.3c1.2 2 2.6 4.1 3.4 4.8l6.1 7.8 15 14.6 4.8 4c-.6 26.4-1.1 60.6-1.1 100.1 0 59.3 1.1 82.6 2.7 114.6.9 18.8 2 40.7 3 74.9 1.5 48.3.8 98.4 0 148.6l-.8 68.3c0 13-.6 32.8-1.1 49Zm157.5-16.4-11.2 3.6a379.2 379.2 0 0 1-67 12c.2-11 .3-25.6.3-44.6 0-49.2-1.2-74.9-2.4-99.5-1.3-27.2-2.5-53-2-107.5.6-50.4 1.7-81.5 2.6-109.3 1-29.3 1.8-54.9 1.8-95.6 0-35.5-.6-70.6-1.2-98.6l3.6-3 5.3-5.1 3.5-3.6 3.5-3.4 4-5 4.2-5.3 2.7-4 .5.3 3.2 1.5 5.5 3.3 5.8 3 7.3 3 8.1 2.2c.7.2 3.3 1 8.4 2 2.4 0 6.5 1.5 11 3.4 2.6 29 5.2 68 5.2 107.8 0 41.5-1.6 70.2-3.2 102-1.6 28.7-3.3 60-4 105.6-.7 41.1.4 82.5 1.4 124.4.7 25.7 1.4 51.6 1.6 77.8a435 435 0 0 0 1.5 32.6Z\" />\r\n </>\r\n )}\r\n\r\n {sleevelong && (\r\n <>\r\n <path fill={sleevelong} d=\"m153 277.8-5.8 14.5c-1 2.8-2.5 1.4-4.6.7l-2-.5-7.8-2.4-15.6-5-19-6.5-16-5.7-12-4.4-5.5-2.2c-3.5-1.1-3.1-1.2-1.9-4l1.8-4.9 3.2-9.3c-1.1-1.9 0-3.1.8-3.5l.2-.7.5-2 4.3-10.3 2.4-6 2.6-6.2.8-2.6 1.7-4.1v-.4l.3-2.6.6-3.4 1-3.5 1-3.8c.1-.9 2-5.6 3-7.8l.7-1.5.7-2 .9-3.6 3.4-12.6 2.4-8.6 2.7-11.2 3.5-9.6 3.6-9.4 3-6 2-4.1 3.6-5.8 2.2-4.3 3-4.4 3.2-3.9 1.7-1.9 3.6-3.6 3-2.9a109.3 109.3 0 0 1 13.3-11.2l1.2-.8a79.3 79.3 0 0 1 18-9l11.4-4.2 4-1.4 6.3-2.7 3.3-1.4 2.8-1.2 4-1.6 3.9-2.1 10.1-5 4.8-2.4 5.7-3.2 13.8-7.7c1.5-.8 4.7-2.7 6-3a8.5 8.5 0 0 0 3-1.8c3.4-2.5 4.5-4.8 6-5.3.4-.4 2-1.6 5.2-3.2-4.4 3.3-3.2 11-2.1 14.6a77 77 0 0 0 8.7 18.8l-.6.4-3.9 2-9 5-6.6 3.7-10 3.2c-4.3.8-13.2 2.4-14.4 2.8-1.2.3-10.2 4-14.5 5.8l-11.8 5.6-8.8 3.2-12 3.4-19 8.7c-5.8 1.4-19.3 14.2-25.3 20.4L122 128l.3.4 6.6 16.6 10.5 22.6 6.2 10.8c2.9 3 8.7 9.7 9.1 11.7.5 2 4.3 5.1 6.1 6.5.2.8.8 3.1 1.7 5.4-3.2 4.8-.4 10.6 1.4 12.9l1 4.6.3 6.5-.5 1c-1.4 1.4-.3 4 .4 5l.1 3c.5 1.4 1.3 4.2.8 5.2s0 2.7.3 3.4v4.9c-3.1.5-2 3.7-1 5.2-.5.7-1.8 2.2-3.2 2.7-1.4.5-1.8 3.6-1.8 5.2a9 9 0 0 1-2.7 4.7c-1.8 1.6-2.8 7.4-3 10.1l-1.6 1.5ZM403.8 31.1l-1.6-.7c1.2 1 2 2.2 2.8 4 1.8 2.8.6 8-.7 12.2a78 78 0 0 1-7.6 17l.5.2 3.3 1.5 5.4 3.3 5.9 3 7.2 3 8.2 2.2c.7.2 3.3 1 8.4 2 5.5.1 21.1 8 28.2 11.8l14 4.5a517 517 0 0 1 23.8 9.3c6.3.5 24.7 17 33.1 25.2l-4.6 11.6-8.2 19.3-3.8 9-5.2 8.6c-2.2 3.2-7.3 10.2-9.4 12.4-1.3-.3-5.6 4.4-7.6 6.7.3 2 .6 6.7-1.4 9.1-2 2.5-1.8 6.9-1.4 8.7.3.8.5 3-1 5.3-1.4 2.4-1 4-.5 4.5-.2.8-.7 2.5-1.4 3.4-.8.8-.4 3.3 0 4.5l.1 3-.1 2.2c-.2.6-.6 2.6-1.1 6.2 3.6 3.3 1.3 5.7-.3 6.5l2.2.3 1.3 2.7 1.5 3.8 1.1 2.3 2.7 7.1 1.6 4.8.3 2.1v1.6l1.9 1.9 4 8.9 1.8 4.5c.5 4 5.5 3.6 8 3l5.9-1.1 7.3-1.7 5.2-1.2 7.3-2.1 8.3-2.7 7.5-2.5 9.8-3.6 8-3 6.3-2.8 3.4-1.6 3-1.3 2.5-1.6 1-.8c1.9-1 2-2.1 1.6-2.9l-.6-1.7-1-2.7-1.6-4.2-1.4-4-.5-1.4-.1-.7v-1.2c.7-1-.4-2.5-1-3v-.2l-1-2-2.4-6-3.3-8.3-2.3-6a3896.4 3896.4 0 0 0-3.1-8.4l-2.2-7.1-1.5-5.7-2.5-8.9-1-3.1-1.2-4.5-2-8.2-2.2-9.3-2.8-11.4-2.6-9.1-.9-3c0-.3-.6-1.5-1-2l-2.5-5.6-3-6.6-5.7-11.3-2.5-4.3-2.3-3.3-.7-.7-4.3-5-3-3.8a73 73 0 0 0-4.2-3.8c-1.1-2-7.6-7-10.8-9.4-6.2-5-23.4-12.8-34-16.7l-11-4-16-7.9-20.1-10-7.1-3.8-2.4-1.5-13-7.3-2.6-3.4-5-3Z\" />\r\n </>\r\n )}\r\n\r\n {/* COLLAR */}\r\n <path\r\n fill={sleeve}\r\n fillRule=\"evenodd\"\r\n d=\"m262.9 19.6-3.7 3.8-3.5 3.3-2.7 2.1c-2 1.6-5 5.7-1 17.1 4 9.8 5.2 12 5.3 11.9 1.4 2.5 4.4 7.9 5.9 9.1l6 7.8 15 14.6 10.5 8.7 12.6 11.3 8.3 6.2 7.6.6 17 .8 9.2-6.6 7-5.6 10.3-9 7-5.7 5.3-5.2 3.6-3.6 3.4-3.4 4.2-5 4-5.3 2.7-4C403.5 53 407 40 406 37.3c0-1.3-.9-4.6-3.9-7.2A129 129 0 0 1 391.2 20c-.8-1.1-4.2-4.3-7.3-6a52 52 0 0 0-15.3-3.9L353.5 9l-10.2-.4-15.4-.4H301.6c-4.6.2-14.6.6-17.2 1.2l-3.4.6c-3.2.5-6.9 1-8.4 2l-1.4.8c-1.5.7-2.8 1.4-5 3.7l-3.3 3.2Zm4.3 14 1.9 5.5 4.6 8.2 5 6.7 5.3 6.6 11 10.7 10.8 9.8 12.8 11.7 7.4 7 3 3 15-13.3 16.7-15.7 6.7-6.2 6-6.6a104.1 104.1 0 0 0 13.8-19.6c1-1.9 1.8-4.5 2-5.6 2.7-7.9 1.4-13.8-1.5-17.8-4-5.2-14.9-6.6-18.5-7.1h-.7c-13.8-1.9-39.8-2-46-1.9-9-.2-28.1.2-32.5.7-.6 0-1.2 0-1.9.2-6.8.6-19.9 1.9-22.6 10.6a22.6 22.6 0 0 0 .9 10.3l.8 2.9Z\"\r\n />\r\n\r\n {/* LEFT SLEEVE */}\r\n <path\r\n fill={sleeve}\r\n d=\"m74.8 250.8-6.8-2.7-.3.7-3 8.7-2 5.7c-1 2.2-.5 1.9.1 2.3l2.2 1 8.8 3.3 10.4 3.8 10.7 3.8 14.3 4.8 13 4.3 7 2.3 13.8 4.3c2.2.7 3 1.4 3.8 0l6.3-15.6-4.6-1.8a88 88 0 0 1-9.4-3c-.8-.6-11.8-3.7-17.3-5.4l-7-2.4-13-4.3c-3.2-1.3-9.9-3.8-11-4-1.2-.2-11-3.8-16-5.8Z\"\r\n />\r\n\r\n {/* RIGHT SLEEVE */}\r\n <path\r\n fill={sleeve}\r\n d=\"m505 284.5-3.5-7.5c.2-.2 1.2-.4 3 0 1.6.4 11.3-1.7 16-2.7l22.5-6.6 13.7-4.5 16.8-6.7a90 90 0 0 0 13.7-7.7v1l.6 2 1.9 5.5 2.9 7.8c.6 1.6-5.5 4.8-8.6 6.3l-17 7.2-15.3 5.4-13 4.2-13 3.3-9.9 2c-6.8 1.2-7.2-.4-8-2l-2.7-7Z\"\r\n />\r\n\r\n </svg>\r\n\r\n \r\n </div>\r\n\r\n {/* SHADOW */}\r\n <img\r\n src=\"https://widgets.sir.sportradar.com/assets/media/shadow.7a42eb6e.png\"\r\n className={styles.shadow}\r\n alt=\"\"\r\n aria-hidden\r\n />\r\n\r\n {/* HIGHLIGHT */}\r\n <img\r\n src=\"https://widgets.sir.sportradar.com/assets/media/highlight.b1ac6c3e.png\"\r\n className={styles.highlight}\r\n alt=\"\"\r\n aria-hidden\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTeamInfo.module.css\";\r\nimport OraculoTeamPolo from \"./OraculoTeamPolo\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport { Jersey } from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n jersey?: Jersey | null; \r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, jersey , size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n {jersey?.base ? (\r\n <OraculoTeamPolo\r\n jersey={jersey} className={`${styles.logo}`}\r\n />\r\n ) : (\r\n <Skeleton variant=\"circular\" className={`${styles.logo} ${styles.skeleton}`} />\r\n )}\r\n <span className={styles.name}>{name}</span>\r\n </div>\r\n );\r\n}","import { useEffect, useRef } from \"react\";\r\n\r\nexport function useHorizontalWheelSplide(\r\n hostRef: React.RefObject<HTMLElement>,\r\n splideRef: React.RefObject<any>,\r\n { enabled = true }: { enabled?: boolean } = {}\r\n) {\r\n const rafRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n if (!enabled) return;\r\n\r\n const host = hostRef.current;\r\n if (!host) return;\r\n\r\n const onWheel = (e: WheelEvent) => {\r\n const splide = splideRef.current;\r\n if (!splide || !splide.go) return;\r\n\r\n const { deltaX, deltaY } = e;\r\n\r\n // 🧠 Detect horizontal intent ONLY\r\n if (Math.abs(deltaX) <= Math.abs(deltaY)) {\r\n // vertical scroll → allow normal page scrolling\r\n return;\r\n }\r\n\r\n // Ignore tiny horizontal noise\r\n if (Math.abs(deltaX) < 2) return;\r\n\r\n // We handle horizontal → stop native scroll\r\n e.preventDefault();\r\n\r\n const direction = deltaX > 0 ? \">\" : \"<\";\r\n\r\n // Throttle to one navigation per frame\r\n if (rafRef.current !== null) return;\r\n\r\n rafRef.current = requestAnimationFrame(() => {\r\n rafRef.current = null;\r\n splide.go(direction);\r\n });\r\n };\r\n\r\n host.addEventListener(\"wheel\", onWheel, { passive: false });\r\n\r\n return () => {\r\n host.removeEventListener(\"wheel\", onWheel);\r\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\r\n };\r\n }, [enabled, hostRef, splideRef]);\r\n}\r\n","// src/molecules/OraculoCarousel/OraculoCarousel.tsx\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useImperativeHandle,\r\n useRef,\r\n ReactNode,\r\n} from \"react\";\r\nimport {\r\n Splide as SplideRaw,\r\n SplideSlide as SplideSlideRaw,\r\n} from \"@splidejs/react-splide\";\r\n\r\nimport {useHorizontalWheelSplide} from \"./useHorizontalWheelSplide\";\r\n\r\nexport interface OraculoCarouselOptions {\r\n type?: string;\r\n perPage?: number;\r\n gap?: string;\r\n pagination?: boolean;\r\n arrows?: boolean;\r\n drag?: boolean;\r\n focus?: string | \"center\";\r\n autoWidth?: boolean;\r\n trimSpace?: any;\r\n rewind?: boolean;\r\n padding?: { left?: string; right?: string };\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface OraculoCarouselRef {\r\n next: () => void;\r\n prev: () => void;\r\n go: (index: number | string) => void;\r\n}\r\n\r\nexport interface OraculoCarouselProps<T = any> {\r\n items: T[];\r\n renderItem: (item: T, index: number) => ReactNode;\r\n perPage?: number;\r\n gap?: string;\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n options?: OraculoCarouselOptions;\r\n className?: string;\r\n useIndexAsKey?: boolean;\r\n onMove?: (info: {\r\n index: number;\r\n isStart: boolean;\r\n isEnd: boolean;\r\n total: number;\r\n visibleEnd: number;\r\n visibleStart: number;\r\n }) => void;\r\n enableHorizontalWheel?: boolean;\r\n}\r\n\r\n// 👇 Aislamos tipos de Splide: internamente es any, hacia afuera tu API está tipada\r\nconst Splide: any = SplideRaw;\r\nconst SplideSlide: any = SplideSlideRaw;\r\n\r\nconst OraculoCarousel = forwardRef<OraculoCarouselRef, OraculoCarouselProps<any>>(\r\n (\r\n {\r\n items = [],\r\n renderItem,\r\n perPage = 1,\r\n gap = \"0px\",\r\n breakpoints,\r\n options = {},\r\n className = \"\",\r\n onMove,\r\n useIndexAsKey = false,\r\n enableHorizontalWheel = true,\r\n },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\r\n const wheelHostRef = useRef<HTMLDivElement>(null);\r\n\r\n useHorizontalWheelSplide(wheelHostRef, splideRef, {\r\n enabled: enableHorizontalWheel,\r\n });\r\n useImperativeHandle(ref, () => ({\r\n next: () => splideRef.current?.go(\">\"),\r\n prev: () => splideRef.current?.go(\"<\"),\r\n go: (index) => splideRef.current?.go(index),\r\n }));\r\n\r\n const getVisibleRange = (splide: any) => {\r\n const Slides = splide.Components.Slides;\r\n const Controller = splide.Components.Controller;\r\n const track = splide.root.querySelector(\".splide__track\");\r\n\r\n const trackWidth = track?.clientWidth ?? 0;\r\n const visibleStart = Controller.getIndex();\r\n const total = Slides.getLength();\r\n\r\n let currentWidth = 0;\r\n let visibleEnd = visibleStart;\r\n\r\n for (let i = visibleStart; i < total; i++) {\r\n const slide = Slides.getAt(i);\r\n if (!slide) break;\r\n\r\n currentWidth += slide.slide.getBoundingClientRect().width;\r\n\r\n if (currentWidth > trackWidth) {\r\n break;\r\n }\r\n\r\n visibleEnd = i;\r\n }\r\n\r\n return { visibleStart, visibleEnd };\r\n};\r\n\r\nconst handleMove = useCallback((splide: any) => {\r\n const controller = splide.Components.Controller;\r\n\r\n const index = controller.getIndex(); // real current index\r\n const end = controller.getEnd(); // real max reachable index\r\n\r\n const isStart = index === 0;\r\n const isEnd = index >= end;\r\n\r\n const total = splide.Components.Slides.getLength(); // real total slides\r\n const { visibleStart, visibleEnd } = getVisibleRange(splide);\r\n\r\n onMove?.({ index, isStart, isEnd, total, visibleEnd, visibleStart});\r\n}, [onMove]);\r\n\r\n const handleMounted = useCallback(\r\n (splide: any) => {\r\n handleMove(splide);\r\n },\r\n [handleMove]\r\n );\r\n\r\n const mergedOptions: OraculoCarouselOptions = {\r\n type: \"slide\",\r\n trimSpace: false,\r\n drag: true,\r\n pagination: false,\r\n arrows: false,\r\n rewind: false,\r\n focus: \"start\",\r\n autoWidth: false,\r\n perPage,\r\n gap,\r\n breakpoints,\r\n ...options,\r\n\r\n ...(enableHorizontalWheel ? { wheel: false } : {}),\r\n\r\n };\r\n\r\n return (\r\n <div ref={wheelHostRef} className={className} style={{ width: \"100%\" }}>\r\n <Splide\r\n ref={splideRef}\r\n options={mergedOptions}\r\n onMove={handleMove}\r\n onMounted={handleMounted}\r\n >\r\n {items.map((item, index) => (\r\n <SplideSlide key={useIndexAsKey ? index : (item as any).id ?? index}>\r\n {renderItem(item, index)}\r\n </SplideSlide>\r\n ))}\r\n </Splide>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport default OraculoCarousel;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { OraculoButton } from \"../..\";\r\n\r\nexport interface OraculoGameCardProps {\r\n imageUrl: string;\r\n onClick?: () => void;\r\n size?: \"lg\" | \"sm\";\r\n fillParent?: boolean;\r\n}\r\n\r\nconst OraculoGameCard: React.FC<OraculoGameCardProps> = ({\r\n imageUrl,\r\n onClick,\r\n size = \"sm\",\r\n fillParent = false,\r\n}) => {\r\n const dim =\r\n size === \"lg\"\r\n ? { w: 280, h: 352 }\r\n : { w: 152, h: 168 };\r\n\r\n const handleButtonClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.stopPropagation();\r\n onClick?.();\r\n };\r\n\r\n const sizeStyles = fillParent\r\n ? { width: \"100%\", height: \"100%\" }\r\n : { width: `${dim.w}px`, height: `${dim.h}px` };\r\n\r\n return (\r\n <Box\r\n onClick={onClick}\r\n role=\"button\"\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"12px\",\r\n overflow: \"hidden\",\r\n boxSizing: \"border-box\",\r\n transition: \"transform .15s ease, box-shadow .15s ease\",\r\n ...sizeStyles,\r\n \"&:hover\": {\r\n transform: \"translateY(-2px)\",\r\n boxShadow: 8,\r\n cursor: \"pointer\",\r\n },\r\n \"&:hover .oraculo-game-card-overlay\": {\r\n opacity: 1,\r\n },\r\n \"&:hover .oraculo-game-card-btn\": {\r\n opacity: 1,\r\n transform: \"translate(-50%, -50%) scale(1)\",\r\n pointerEvents: \"auto\",\r\n },\r\n }}\r\n >\r\n <img\r\n src={imageUrl}\r\n alt=\"Juego de casino\"\r\n loading=\"lazy\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n borderRadius: \"inherit\",\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-overlay\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.45)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease\",\r\n pointerEvents: \"none\",\r\n zIndex: 1,\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-btn\"\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n zIndex: 2,\r\n transform: \"translate(-50%, -50%) scale(0.95)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease, transform .15s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <OraculoButton variant=\"primary\" size=\"md\" onClick={handleButtonClick}>\r\n Jugar\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\ntype SizeOpt = { w: number; h: number; r?: number; font?: number };\r\n\r\nexport interface OraculoGameRankCardSizes {\r\n xs: SizeOpt;\r\n md: SizeOpt;\r\n}\r\n\r\nexport interface OraculoGameRankCardProps {\r\n imageUrl: string;\r\n orden?: number;\r\n onClick?: () => void;\r\n sizes?: OraculoGameRankCardSizes;\r\n\r\n /** si true, muestra skeleton en vez de la card */\r\n loading?: boolean;\r\n}\r\n\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\r\n loading = false,\r\n sizes = {\r\n xs: { w: 104, h: 112, r: 18, font: 48 },\r\n md: { w: 186, h: 264, r: 22.6, font: 64 },\r\n },\r\n}: OraculoGameRankCardProps) {\r\n const getVal = <K extends keyof SizeOpt>(k: K, def: number) => ({\r\n xs: sizes.xs?.[k] ?? def,\r\n md: sizes.md?.[k] ?? def,\r\n });\r\n\r\n const W = getVal(\"w\", 186);\r\n const H = getVal(\"h\", 264);\r\n const R = getVal(\"r\", 22.6);\r\n const F = getVal(\"font\", 64);\r\n\r\n const hang = {\r\n xs: Math.round((sizes.xs?.font ?? 64) * 0.28),\r\n md: Math.round((sizes.md?.font ?? 64) * 0.28),\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },\r\n aspectRatio: {\r\n xs: `${W.xs}/${H.xs}`,\r\n md: `${W.md}/${H.md}`,\r\n },\r\n borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },\r\n boxSizing: \"border-box\",\r\n overflow: \"visible\",\r\n pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },\r\n\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n pointerEvents: \"none\",\r\n zIndex: 2,\r\n background:\r\n \"linear-gradient(21.29deg, #0B0D1B -1.16%, rgba(255,255,255,0) 51.92%, rgba(255,255,255,0) 127.62%)\",\r\n backgroundBlendMode: \"multiply\",\r\n },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {loading ? (\r\n <Skeleton\r\n variant=\"rectangular\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n sx={{\r\n bgcolor: \"rgba(255,255,255,0.10)\", // gris oscuro visible en fondo oscuro\r\n \"&::after\": {\r\n background:\r\n \"linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent)\",\r\n },\r\n }}\r\n />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\r\n />\r\n )}\r\n </Box>\r\n\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n position: \"absolute\",\r\n left: 8,\r\n bottom: {\r\n xs: `-${hang.xs}px`,\r\n md: `-${hang.md}px`,\r\n },\r\n fontFamily: \"secondary\",\r\n fontSize: {\r\n xs: `${F.xs}px`,\r\n md: `${F.md}px`,\r\n },\r\n lineHeight: 1,\r\n color: \"#3CC666\",\r\n WebkitTextStroke: \"1px #9ee86e\",\r\n zIndex: 3,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {orden}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\n\r\nexport interface OraculoLiveCasinoCardProps {\r\n logo: string;\r\n provider?: string;\r\n providerName?: string;\r\n machine?: number | string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst OraculoLiveCasinoCard: React.FC<OraculoLiveCasinoCardProps> = ({\r\n logo,\r\n provider,\r\n providerName,\r\n machine,\r\n onClick,\r\n}) => {\r\n return (\r\n <Box\r\n onClick={onClick}\r\n sx={{\r\n flex: \"0 0 auto\",\r\n position: \"relative\",\r\n borderRadius: \"20px\",\r\n overflow: \"hidden\",\r\n width: { xs: 100, md: 180 },\r\n height: { xs: 200, md: 380 },\r\n transition: \"width .50s ease, transform .28s ease\",\r\n willChange: \"width, transform\",\r\n cursor: \"pointer\",\r\n zIndex: 0,\r\n \"&:hover\": {\r\n zIndex: 2,\r\n width: { md: 260, xs: 110 },\r\n },\r\n \"&:hover .orc-live-provider-label\": {\r\n opacity: 1,\r\n },\r\n }}\r\n >\r\n {/* Imagen de fondo */}\r\n <Box\r\n component=\"img\"\r\n src={logo}\r\n alt={`Juego ${machine ?? \"\"}`}\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n\r\n {/* Label del provider */}\r\n <Box\r\n className=\"orc-live-provider-label\"\r\n sx={{\r\n position: \"absolute\",\r\n left: \"50%\",\r\n top: { xs: \"75%\", md: \"80%\" },\r\n transform: \"translate(-50%, -50%)\",\r\n zIndex: 3,\r\n opacity: 0,\r\n transition: \"opacity .25s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#fff\",\r\n fontWeight: 700,\r\n fontSize: { xs: 11, md: 14 },\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n {provider ?? providerName ?? \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoLiveCasinoCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: string;\r\n background?: string;\r\n}\r\n\r\nexport interface OraculoGameSlideProps {\r\n items: OraculoGameSlideItem[];\r\n layout?: \"mosaic\" | \"grid\";\r\n onClick?: (item: OraculoGameSlideItem, index: number) => void;\r\n\r\n /** si true, renderiza skeletons en vez de cards */\r\n loading?: boolean;\r\n\r\n /** cuantos skeletons en grid (default 4) */\r\n gridSkeletonCount?: number;\r\n}\r\n\r\nconst GAP = 12; // px\r\n\r\nconst SkCard = ({ r = 16 }: { r?: number }) => (\r\n <Box sx={{ width: \"100%\", height: \"100%\", borderRadius: r, overflow: \"hidden\" }}>\r\n <Skeleton\r\n variant=\"rectangular\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n sx={{\r\n bgcolor: \"rgba(255,255,255,0.10)\", // gris oscuro sobre fondo oscuro\r\n \"&::after\": {\r\n // opcional: brillo un poquito más visible\r\n background: \"linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent)\",\r\n },\r\n }}\r\n />\r\n </Box>\r\n);\r\n\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n loading = false,\r\n gridSkeletonCount = 4,\r\n}) => {\r\n // =========================\r\n // MOSAIC: 1 grande + 4 chicas\r\n // =========================\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\r\n console.log(\"big: \", big);\r\n \r\n const smalls = items.slice(1, 5);\r\n\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gridTemplateColumns: {\r\n xs: `184px`,\r\n md: `280px`,\r\n },\r\n gridAutoFlow: \"column\",\r\n gridAutoColumns: {\r\n xs: `104px`,\r\n md: `152px`,\r\n },\r\n columnGap: `${GAP}px`,\r\n rowGap: `${GAP}px`,\r\n alignItems: \"stretch\",\r\n justifyItems: \"stretch\",\r\n }}\r\n >\r\n {/* BIG */}\r\n <Box\r\n sx={{\r\n width: { xs: 184, md: 280 },\r\n height: { xs: 234, md: 352 },\r\n gridRow: \"1 / span 2\",\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n big && (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.background ?? big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n )\r\n )}\r\n </Box>\r\n\r\n {/* SMALLS */}\r\n {(loading ? Array.from({ length: 4 }) : smalls).map((it: any, index: number) => (\r\n <Box\r\n key={loading ? `sk-${index}` : it.id}\r\n sx={{\r\n width: { xs: 104, md: 152 },\r\n height: { xs: 112, md: 168 },\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.background ?? it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n )}\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // =========================\r\n // GRID 2x2\r\n // =========================\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: `repeat(2, 104px)`,\r\n md: `repeat(2, 152px)`,\r\n },\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gap: `${GAP}px`,\r\n gridAutoFlow: \"column\",\r\n }}\r\n >\r\n {(loading ? Array.from({ length: gridSkeletonCount }) : items).map((it: any, index: number) => (\r\n <Box\r\n key={loading ? `sk-${index}` : it.id ?? index}\r\n sx={{ overflow: \"hidden\", borderRadius: 2 }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.background ?? it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n )}\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameSlide;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoWelcomeBannerProps {\r\n title?: string;\r\n amount?: string; // ej: \"S/40\"\r\n subtitle?: string;\r\n buttonText?: string;\r\n onButtonClick?: () => void;\r\n backgroundImage?: string;\r\n alt?: string;\r\n className?: string;\r\n /** Tamaño en desktop: \"small\" (456x272) o \"large\" (618x346) */\r\n variant?: \"small\" | \"large\";\r\n}\r\n\r\nconst OraculoWelcomeBanner: React.FC<OraculoWelcomeBannerProps> = ({\r\n title,\r\n amount,\r\n subtitle,\r\n buttonText,\r\n onButtonClick,\r\n backgroundImage,\r\n alt,\r\n className = \"\",\r\n variant = \"small\",\r\n}) => {\r\n const symbol = amount ? amount.slice(0, 2) : \"\";\r\n const value = amount ? amount.slice(2) : \"\";\r\n const isLarge = variant === \"large\";\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: {\r\n xs: 328,\r\n md: isLarge ? 618 : 456,\r\n },\r\n mx: \"auto\",\r\n }}\r\n >\r\n {backgroundImage && (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n aspectRatio: {\r\n xs: \"328 / 188\",\r\n md: isLarge ? \"618 / 346\" : \"456 / 272\",\r\n },\r\n borderRadius: \"14px\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={backgroundImage}\r\n alt={alt ?? \"Fondo promocional\"}\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n objectPosition: {\r\n xs: \"50% 0%\",\r\n md: \"45% 0%\",\r\n },\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n {/* Capa de contenido */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n color: \"#e7f8ff\",\r\n textAlign: \"center\",\r\n pl: \"14%\",\r\n pr: { xs: \"14%\", lg: \"15%\" },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxWidth: \"60%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* Título superior */}\r\n {title && (\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 12, md: 20 },\r\n fontWeight: 400,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n )}\r\n\r\n {/* Monto */}\r\n {amount && (\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n fontFamily: '\"secondary\", sans-serif',\r\n lineHeight: { xs: 0.9, lg: 0.87 },\r\n m: \"4px 0\",\r\n background:\r\n \"linear-gradient(175deg, #EDC421 -12.56%, #FFFABF 17.99%, #EDC421 49.74%)\",\r\n WebkitBackgroundClip: \"text\",\r\n WebkitTextFillColor: \"transparent\",\r\n WebkitTextStroke: \"0.5px #fff8c1\",\r\n filter:\r\n \"drop-shadow(0px 4px 0px #8D4406) drop-shadow(0px 4px 4px rgba(28, 28, 28, 0.4))\",\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 35, md: 48 }, mr: 0.5 }}\r\n >\r\n {symbol}\r\n </Box>\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 52, md: 77 } }}\r\n >\r\n {value}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Subtítulo */}\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n pb: \"20px\",\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n\r\n {/* Botón */}\r\n {buttonText && (\r\n <OraculoButton onClick={onButtonClick}>\r\n {buttonText}\r\n </OraculoButton>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoWelcomeBanner;\r\n","import React from \"react\";\r\nimport \"../../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.css\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoClubOlimpoVisualProps {\r\n text: string;\r\n buttonLabel?: string;\r\n onClick?: () => void;\r\n\r\n // MOBILE\r\n imgAlt?: string;\r\n imgSrcMobile: string;\r\n\r\n // DESKTOP\r\n imgSrcDesktopBg?: string;\r\n imgSrcDesktopLogo?: string;\r\n}\r\n\r\nconst OraculoClubOlimpoVisual: React.FC<OraculoClubOlimpoVisualProps> = ({\r\n text,\r\n buttonLabel = \"Conoce más\",\r\n onClick,\r\n imgAlt = \"Club Olimpo\",\r\n imgSrcMobile,\r\n imgSrcDesktopBg,\r\n imgSrcDesktopLogo,\r\n}) => {\r\n return (\r\n <>\r\n {/* MOBILE */}\r\n <div className=\"orc-co-bgMobile\">\r\n <img\r\n src={imgSrcMobile}\r\n alt={imgAlt}\r\n className=\"orc-co-bgMobileImg\"\r\n />\r\n </div>\r\n\r\n {/* DESKTOP */}\r\n <div className=\"orc-co-bgDesktop\">\r\n {imgSrcDesktopBg && (\r\n <div className=\"orc-co-fillHost\">\r\n <img\r\n src={imgSrcDesktopBg}\r\n alt={`${imgAlt} fondo`}\r\n className=\"orc-co-bgDesktopImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Bloque izquierdo: LOGO + TEXTO + BOTÓN */}\r\n <div className=\"orc-co-desktopContent\">\r\n {imgSrcDesktopLogo && (\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n )}\r\n\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\r\n\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </div>\r\n\r\n {/* MOBILE: barra inferior */}\r\n <div className=\"orc-co-bottom\">\r\n <p className=\"orc-co-caption\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default OraculoClubOlimpoVisual;\r\n","import { useState, useEffect} from \"react\";\r\n\r\nexport function redirectHomeWithOutcomes(outcomes: number | number[]) {\r\n const arr = Array.isArray(outcomes) ? outcomes : [outcomes];\r\n sessionStorage.setItem(\"landingOutcomes\", JSON.stringify(arr));\r\n window.location.href = \"/deportes#in-play\";\r\n}\r\n\r\nexport function verMasSeccionEnVivo() {\r\n window.location.href = \"/deportes#in-play\";\r\n}\r\n\r\nexport function verMasSeccionSemana() {\r\n window.location.href = \"/deportes#sports-hub/football\";\r\n}\r\n\r\n\r\nexport function verMasSeccionCombinadas() {\r\n window.location.href = \"/deportes#specials\";\r\n}\r\n\r\nexport async function fetchJerseys(eventIds: number[]) {\r\n const res = await fetch(\"https://api.mktolimpo.com/api/jerseys/search\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n events: eventIds,\r\n }),\r\n });\r\n\r\n return await res.json();\r\n }\r\n\r\n\r\nexport function useDebouncedValue<T>(value: T, delay = 250): T {\r\n const [debounced, setDebounced] = useState(value);\r\n\r\n useEffect(() => {\r\n const id = setTimeout(() => setDebounced(value), delay);\r\n return () => clearTimeout(id);\r\n }, [value, delay]);\r\n\r\n return debounced;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventCombinadasCard.module.css\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { CombinadoEventProps, BetOffer} from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\nfunction processOutcome(event : any) {\r\n const apuestas = event.betoffers ?? [];\r\n const homeName = event.homeName;\r\n const awayName = event.awayName;\r\n\r\n const outcomes = apuestas.map((a : any) => {\r\n let best = a.outcomes[0];\r\n let value = \"\";\r\n\r\n let line = best?.line ? best.line / 1000 : \"\";\r\n \r\n if ([\"Más de\", \"Mas de\", \"Over\"].includes(best?.label)) {\r\n value = `Más de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n else if ([\"Menos de\", \"Menos\"].includes(best?.label)) {\r\n value = `Menos de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n \r\nelse if ([\"Sí\", \"No\"].includes(best?.label) ) {\r\n value = best?.label;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n}\r\n\r\n// ----- PRIORITY 3: DOUBLE CHANCE (1X, 12, X2) -----\r\nelse if ([\"1X\", \"12\", \"X2\"].includes(best?.label)) {\r\n \r\n if (best.label === \"1X\") {\r\n value = `${homeName} o Empate`;//event.participants?.[0]?.name || \r\n } else if (best.label === \"12\") {\r\n value = `${homeName} o ${awayName}`;\r\n } else if (best.label === \"X2\") {\r\n value = `${awayName} o Empate`;\r\n }\r\n\r\n}\r\n // ----- DEFAULT LOGIC -----\r\n else {\r\n if (best?.participant) value = best.participant;\r\n else value = best?.label ?? \"\";\r\n\r\n if (line !== \"\" && value === best.label) {\r\n value = `${best.label} ${line}`;\r\n }\r\n }\r\n\r\n return {\r\n id : best?.id ?? 0,\r\n value,\r\n label: a.criterion.label,\r\n odds: best?.odds ?? 0,\r\n bl: best?.label ?? 0,\r\n position: best?.position ?? 0,\r\n\r\n };\r\n });\r\n\r\n const total = outcomes.reduce((acc: any, o:any) => acc + o.odds, 0) / 1000;\r\n\r\n return {\r\n outcomes,\r\n total: total.toFixed(2),\r\n };\r\n}\r\nconst eventOutcomes = processOutcome(event)\r\n\r\n\r\n return (\r\n <div className={styles.card}>\r\n <div className={styles.combinadas}>\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n <OraculoSectionTitle \r\n title={event.name}\r\n iconUrl=\"/assets/img/home/Combinadas/pelota.png\"\r\n size=\"xs\" \r\n />\r\n <img loading=\"lazy\" src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].sort((a: any, b: any) => a.position - b.position).map((a :any, i : number) => {\r\n\r\n return (\r\n <div className={styles.apuestaItem} key={i}>\r\n <div className={styles.lineContainer}>\r\n <div className={styles.circle} />\r\n {i < eventOutcomes.outcomes.length - 1 && <div className={styles.line} />}\r\n </div>\r\n\r\n <div className={styles.apuestaText}>\r\n <strong>\r\n {a['value']}\r\n </strong>{\" \"}\r\n | {a['label']}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n <button onClick={() => redirectHomeWithOutcomes(eventOutcomes?.outcomes?.map((o : any) => o?.id) ?? []) } className={styles.cuotaTotal}>\r\n <span>\r\n Cuota total: <strong>{(((event as any)['combinadoTotal'] ?? 0 ) / 1000).toFixed(2)}</strong>\r\n </span>\r\n <img loading=\"lazy\" src=\"/assets/img/home/Combinadas/cuotaTotal.svg\" alt=\"cuota total\" />\r\n</button>\r\n </div>\r\n );\r\n}\r\n\r\n","import React from \"react\";\r\nimport styles from \"./OraculoButtonBet.module.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButtonBet({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n styles[\"orc-btn\"], // base\r\n styles[`orc-btn--${variant}`], // variant primary/secondary/tertiary\r\n size ? styles[`orc-btn--${size}`] : \"\", // sm / md / lg\r\n fullWidth ? styles[\"orc-btn--full\"] : \"\",\r\n fullHeight ? styles[\"orc-btn--fullHeight\"] : \"\",\r\n isIconOnly ? styles[\"orc-btn--iconOnly\"] : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className={styles[\"orc-btn__icon\"]}>{leftIcon}</span>}\r\n {!isIconOnly && (\r\n <span className={styles[\"orc-btn__label\"]}>{children}</span>\r\n )}\r\n {rightIcon && <span className={styles[\"orc-btn__icon\"]}>{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","export type Jersey = {\r\n base: string;\r\n sleeve: string;\r\n number: string;\r\n real: boolean;\r\n type: string;\r\n};\r\n\r\nexport type TeamSide = \"home\" | \"away\";\r\nexport type JerseyRole = \"player\" | \"GK\";\r\n\r\n\r\n const DEFAULT_HOME_JERSEY = {\r\n base: \"FFFFFF\",\r\n sleeve: \"FFFFFF\",\r\n number: \"000000\",\r\n real: false,\r\n type: \"short_sleeves\",\r\n};\r\n\r\nconst DEFAULT_AWAY_JERSEY = {\r\n base: \"000000\",\r\n sleeve: \"000000\",\r\n number: \"FFFFFF\",\r\n real: false,\r\n type: \"short_sleeves\",\r\n};\r\n\r\nexport type JerseyEvent =\r\n | {\r\n externalId?: number;\r\n jerseys?: {\r\n home?: {\r\n player?: Jersey;\r\n GK?: Jersey;\r\n };\r\n away?: {\r\n player?: Jersey;\r\n GK?: Jersey;\r\n };\r\n };\r\n }\r\n | null\r\n | undefined;\r\n\r\nexport const getTeamJersey = (\r\n jerseyEvent: JerseyEvent,\r\n side: TeamSide,\r\n role: JerseyRole = \"player\"\r\n): Jersey | null => {\r\n\r\n if (jerseyEvent === undefined) {\r\n return null;\r\n }\r\n\r\n if (jerseyEvent === null) {\r\n return side === \"home\"\r\n ? DEFAULT_HOME_JERSEY\r\n : DEFAULT_AWAY_JERSEY;\r\n }\r\n\r\n const jersey = jerseyEvent?.jerseys?.[side]?.[role];\r\n\r\n if (jersey) return jersey;\r\n\r\n return side === \"home\"\r\n ? DEFAULT_HOME_JERSEY\r\n : DEFAULT_AWAY_JERSEY;\r\n};","import React from \"react\";\r\nimport OraculoButtonBet from \"../../atoms/OraculoButtonBet/OraculoButtonBet\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport styles from \"./OraculoEventEnVivoCard.module.css\";\r\nimport {getTeamJersey} from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,jersey } : EnVivoEventProps) {\r\n const selectedOffer = betOffers?.find(\r\n (offer) => offer.betOfferType?.id === 2\r\n ); \r\n\r\n return (\r\n <div className={styles.cardWrapper} >\r\n \r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoEventHeader\r\n title={event?.path?.[0]?.name ?? ''}\r\n subtitle={event?.group ?? ''}\r\n live={true}\r\n time={liveData?.matchClock?.minute != null ? `${liveData.matchClock.minute}'` : ''}\r\n />\r\n\r\n <div style={{ padding: \"0 4px\" }}>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo name={event?.homeName} jersey={getTeamJersey(jersey, \"home\")}/>\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event?.awayName} jersey={getTeamJersey(jersey, \"away\")} />\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n\r\n <OraculoGridGroup spacing={2}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButtonBet key={index} variant=\"primary\" disabled={item.odds == undefined || selectedOffer?.cashOutStatus == 'SUSPENDED'} onClick={()=>{redirectHomeWithOutcomes(item.id);}} >\r\n {item.odds === undefined ? \"\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButtonBet>\r\n ))}\r\n </OraculoGridGroup>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventDate.module.css\";\r\n\r\ninterface OraculoEventDateProps {\r\n text: string;\r\n}\r\n\r\nexport default function OraculoEventDate({ text }: OraculoEventDateProps) {\r\n return <div className={`oli-font ${styles.date}`}>{text}</div>;\r\n}","import React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\nimport OraculoEventDate from \"../../atoms/OraculoEvent/OraculoEventDate\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport {getTeamJersey} from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\nexport default function OraculoEventSemanaCard({event, jersey} : SemanaEventProps ) {\r\n\r\n\tfunction formatDate(dateString : string): string {\r\n\t\tconst date = new Date(dateString);\r\n\r\n\t\tconst dayShort = date.toLocaleDateString(\"es-ES\", { weekday: \"short\" }).toUpperCase();\r\n\r\n\t\tconst day = date.getDate().toString().padStart(2, \"0\");\r\n\t\tconst month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n\t\tlet time = date.toLocaleTimeString(\"es-PE\", { hour: \"numeric\", minute: \"2-digit\", hour12: true }).toUpperCase();\r\n\r\n\t\ttime = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n\t\treturn `${dayShort} ${day}/${month} | ${time}`;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<div className={styles.cardContainer}>\r\n\t\t\t<OraculoEventLeague title={event?.group ?? ''} />\r\n\t\t\t<div className={styles.cardBackground} >\r\n\t\t\t\t\r\n\t\t\t\t<Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n\t\t\t\t<Stack direction=\"column\" spacing={1} useFlexGap> \r\n\t\t\t\t\t\r\n\t\t\t\t\t<div className={styles.equipos}>\r\n\t\t\t\t\t\t<OraculoEventTeamInfo name={event.homeName} size=\"compact\" jersey={getTeamJersey(jersey, \"home\")} />\r\n\t\t\t\t\t\t<OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n\t\t\t\t\t\t<OraculoEventTeamInfo name={event.awayName} size=\"compact\" jersey={getTeamJersey(jersey, \"away\")} />\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<OraculoEventDate text={formatDate(event.start)} />\r\n\r\n\t\t\t\t</Stack>\r\n\r\n\t\t\t\t<Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n\t\t\t\t\t<OraculoGridGroup spacing={1}>\r\n\t\t\t\t\t\t{(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n\t\t\t\t\t\t\t<OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</OraculoGridGroup>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<div className={styles.jugadas}>\r\n\t\t\t\t\t<OraculoGridGroup spacing={1}>\r\n\t\t\t\t\t\t{(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n\t\t\t\t\t\t\t<OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{redirectHomeWithOutcomes(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</OraculoGridGroup>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</Stack>\r\n\t\t\t\t</Stack>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t);\r\n}","import React, { useRef, useState } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport {\r\n OraculoSeccionDestacadosItem,\r\n OraculoSeccionDestacadosProps,\r\n} from \"../../interfaces/oraculo/InterfaceDestacados\";\r\n\r\nexport default function OraculoSeccionDestacados({\r\n items,\r\n title = \"Destacados\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: OraculoSeccionDestacadosProps) {\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/promociones\";\r\n };\r\n\r\n const redirectToPromotion = (promotion?: string) => {\r\n if (!promotion) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const slug = encodeURIComponent(promotion);\r\n const url = `https://www.olimpo.bet/promociones/${slug}`;\r\n window.location.href = url;\r\n };\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <header\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 12,\r\n rowGap: 8,\r\n marginBottom: 16,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart || isLoading}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd || isLoading}\r\n />\r\n </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </header>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={2}\r\n gap=\"16px\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n breakpoints={{\r\n 768: { perPage: 2, focus: \"start\" },\r\n 1024: { perPage: 2.5, focus: \"start\" },\r\n }}\r\n renderItem={(item: OraculoSeccionDestacadosItem) => (\r\n <div\r\n key={`${item.title}-${item.image}`}\r\n style={{\r\n textAlign: \"center\",\r\n marginTop: 16,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => redirectToPromotion(item.promotion)}\r\n >\r\n <img\r\n src={`https://olimpo.bet${item.image !== \"\" ? item.image : item.summary_image}`}\r\n alt={item.title}\r\n style={{\r\n width: \"100%\",\r\n height:\r\n typeof window !== \"undefined\" && window.innerWidth < 768 ? \"80px\" : \"137px\",\r\n borderRadius: 8,\r\n display: \"block\",\r\n objectFit: \"cover\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","\r\nconst KEY = \"__ORACULO_EXTRAS__\" as const;\r\n\r\ntype Store = {\r\n extras?: Record<string, unknown>;\r\n};\r\n\r\nfunction getStore(): Store {\r\n const g = globalThis as any;\r\n if (!g[KEY]) g[KEY] = {};\r\n return g[KEY] as Store;\r\n}\r\n\r\nexport function setOraculoExtras(extrasObj: Record<string, unknown>) {\r\n getStore().extras = extrasObj;\r\n}\r\nexport function getOraculoExtra<T = unknown>(key: string): T | undefined {\r\n return getStore().extras?.[key] as T | undefined;\r\n}\r\nexport function clearOraculoExtras() {\r\n delete (globalThis as any)[KEY];\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoGameRankCard from \"../../molecules/OraculoGameRankCard/OraculoGameRankCard\";\r\nimport { OraculoSeccionTopJuegosProps } from \"../../interfaces/oraculo/InterfaceTopJuegos\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\nexport default function OraculoSeccionTopJuegos({\r\n items,\r\n title = \"Top Juegos\",\r\n iconUrl,\r\n onCardClick,\r\n}: OraculoSeccionTopJuegosProps) {\r\n const normalizedItems = useMemo(\r\n () =>\r\n (items ?? [])\r\n .map((item, index) => ({\r\n ...item,\r\n orden: item.orden ?? index + 1,\r\n _originalIndex: index,\r\n }))\r\n .sort((a, b) => {\r\n if (a.orden != null && b.orden != null) return a.orden - b.orden;\r\n return a._originalIndex - b._originalIndex;\r\n }),\r\n [items]\r\n );\r\n\r\n const isLoading = !items || items.length === 0;\r\n const top6 = isLoading ? Array.from({ length: 6 }) : normalizedItems.slice(0, 6);\r\n\r\n const handleOpen = (juego: any) => {\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n\r\n requestAnimationFrame(() => {\r\n loadMachine?.(juego, false, \"CASINO\");\r\n });\r\n };\r\n\r\n return (\r\n <section style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: \"repeat(3, minmax(0, 1fr))\",\r\n md: \"repeat(6, minmax(0, 1fr))\",\r\n },\r\n gap: { xs: 1.5, md: 2 },\r\n justifyItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {top6.map((juego: any, index: number) => (\r\n <OraculoGameRankCard\r\n key={isLoading ? `sk-${index}` : (juego.machine ?? `${index}`)}\r\n imageUrl={isLoading ? \"\" : juego.background ? `https://olimpo.bet${juego.background}` : `https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={isLoading ? index + 1 : juego.orden}\r\n loading={isLoading}\r\n onClick={\r\n isLoading\r\n ? undefined\r\n : () => {\r\n onCardClick?.(juego);\r\n handleOpen(juego);\r\n }\r\n }\r\n />\r\n ))}\r\n </Box>\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoLiveCasinoCard from \"../../molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard\";\r\nimport { OraculoSeccionCasinoEnVivoProps } from \"../../interfaces/oraculo/InterfaceCasinoEnVivo\";\r\nimport { OraculoGameItem } from \"../..\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps> = ({\r\n items,\r\n title = \"Casino en vivo\",\r\n subtitle = \"Disfruta la emoción en tus juegos favoritos y gana en tiempo real.\",\r\n backgroundMobileUrl = \"\",\r\n backgroundDesktopUrl = \"\",\r\n onViewMore,\r\n className,\r\n}) => {\r\n const handleOpenLive = (juego: any) => {\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n // 1) Mostrar contenedor del iframe\r\n showIframe?.();\r\n\r\n // 2) Subir arriba (para que el iframe no aparezca “desde donde estabas”)\r\n if (typeof window !== \"undefined\") {\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n }\r\n\r\n // 3) Abrir juego con el flujo del host (mismo que casino/virtuales)\r\n // Espera 1 frame por si el DOM del iframe se monta/actualiza al mostrarlo\r\n requestAnimationFrame(() => {\r\n loadMachine?.(juego, false, \"casino_en_vivo\");\r\n });\r\n };\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n color: \"white\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Fondo */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundImage: {\r\n xs: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundMobileUrl}')\r\n `,\r\n md: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundDesktopUrl}')\r\n `,\r\n },\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n zIndex: 0,\r\n }}\r\n />\r\n\r\n {/* Contenido */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n zIndex: 1,\r\n maxWidth: 1200,\r\n height: { xs: \"450px\", md: \"550px\" },\r\n mx: \"auto\",\r\n px: { xs: 2.5, md: 6 },\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: { xs: \"center\", md: \"center\" },\r\n justifyContent: \"center\",\r\n gap: { xs: 0, md: 15 },\r\n textAlign: { xs: \"center\", md: \"left\" },\r\n }}\r\n >\r\n {/* Columna izquierda */}\r\n <Stack spacing={3} sx={{ maxWidth: { md: 280 } }}>\r\n <Typography\r\n variant=\"h4\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 24, md: 40 },\r\n WebkitTextStroke: \"0.5px rgba(255, 255, 255, .5)\",\r\n textShadow:\r\n \"0 0 2px rgba(255, 255, 255, .95),\" +\r\n \"0 0 4px rgba(255, 255, 255, .6),\" +\r\n \"0 1px 0 #898989\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 14, md: 18 },\r\n color: \"rgba(255,255,255,0.9)\",\r\n marginX: { xs: 4, md: 0 },\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n\r\n <Box sx={{ display: { xs: \"none\", md: \"block\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"md\"\r\n onClick={() => onViewMore?.() || (window.location.href = \"https://www.olimpo.bet/casino-en-vivo\")}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Stack>\r\n\r\n {/* Lista de tarjetas */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: { xs: 2, md: 3 },\r\n justifyContent: \"center\",\r\n overflowX: { xs: \"auto\", md: \"visible\" },\r\n py: { xs: 3, md: 0 },\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {(items ?? []).slice(0, 3).map((juego, idx) => (\r\n <OraculoLiveCasinoCard\r\n key={getGameId(juego, idx)}\r\n logo={`https://olimpo.bet${juego.background ? juego.background : juego.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => handleOpenLive(juego)}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {/* Botón mobile */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"lg\"\r\n onClick={() => onViewMore?.() || (window.location.href = \"https://www.olimpo.bet/casino-en-vivo\")}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasinoEnVivo;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, { OraculoGameSlideItem } from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\ninterface CasinoSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst buildCasinoSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): CasinoSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n ...(g.background ? { background: g.background } : {}),\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: CasinoSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({ id: \"mosaic-0\", kind: \"mosaic\", items: baseItems.slice(0, take) });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({ id: `grid-${start}`, kind: \"grid\", items: baseItems.slice(start, end) });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps> = ({\r\n items,\r\n title = \"Casino\",\r\n iconUrl = \"/assets/img/home/Casino/diamante.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/casino\";\r\n };\r\n\r\n const buildLoadingSlides = (mosaicFirst = true, gridSize = 4): CasinoSlide[] => {\r\n const mkItems = (n: number) =>\r\n Array.from({ length: n }, (_, i) => ({ id: `sk-${n}-${i}`, imageUrl: \"\" }));\r\n\r\n const slides: CasinoSlide[] = [];\r\n if (mosaicFirst) slides.push({ id: \"mosaic-loading\", kind: \"mosaic\", items: mkItems(5) });\r\n slides.push({ id: \"grid-loading\", kind: \"grid\", items: mkItems(gridSize) });\r\n return slides;\r\n };\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const slides = isLoading\r\n ? buildLoadingSlides(mosaicFirst, gridSize)\r\n : buildCasinoSlides(items, mosaicFirst, gridSize);\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, justifyContent: \"flex-end\" }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n {/* Carousel (wheel interno por prop) */}\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0px\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n loading={isLoading}\r\n onClick={(itm) => {\r\n if (isLoading) return;\r\n\r\n const game = items.find((g, idx) => String(getGameId(g, idx)) === String(itm.id));\r\n if (!game) return;\r\n\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n loadMachine?.(game, false, \"CASINO\");\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasino;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, { OraculoGameSlideItem } from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\ninterface VirtualSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst buildVirtualSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): VirtualSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n ...(g.background ? { background: g.background } : {}),\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: VirtualSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({ id: \"mosaic-0\", kind: \"mosaic\", items: baseItems.slice(0, take) });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({ id: `grid-${start}`, kind: \"grid\", items: baseItems.slice(start, end) });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst buildLoadingVirtualSlides = (mosaicFirst = true, gridSize = 4): VirtualSlide[] => {\r\n const mkItems = (n: number) =>\r\n Array.from({ length: n }, (_, i) => ({ id: `sk-${n}-${i}`, imageUrl: \"\" }));\r\n\r\n const slides: VirtualSlide[] = [];\r\n if (mosaicFirst) slides.push({ id: \"mosaic-loading\", kind: \"mosaic\", items: mkItems(5) });\r\n slides.push({ id: \"grid-loading\", kind: \"grid\", items: mkItems(gridSize) });\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps> = ({\r\n items,\r\n title = \"Virtuales\",\r\n iconUrl = \"/assets/img/home/Virtuales/virtuales.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/juegos-virtuales\";\r\n };\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const slides = isLoading\r\n ? buildLoadingVirtualSlides(mosaicFirst, gridSize)\r\n : buildVirtualSlides(items, mosaicFirst, gridSize);\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, justifyContent: \"flex-end\" }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n perMove: 1,\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n loading={isLoading}\r\n onClick={(itm) => {\r\n if (isLoading) return;\r\n\r\n const game = items.find((g, idx) => String(getGameId(g, idx)) === String(itm.id));\r\n if (!game) {\r\n console.warn(\"[virtuales] no se encontró game para id:\", itm.id);\r\n return;\r\n }\r\n\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n loadMachine?.(game, false, \"VIRTUALES\");\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\n\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps, OraculoBonosItem } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n position: \"relative\" as const,\r\n py: 8,\r\n color: \"#fff\",\r\n backgroundImage: `\r\n linear-gradient(to bottom,#121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to left, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to right, #121212 0%, rgba(18,18,18,0) 10%),\r\n url(\"${bgUrl}\")\r\n `,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n});\r\n\r\nconst headlineBaseSx = {\r\n textAlign: \"center\" as const,\r\n lineHeight: 1.1,\r\n mb: 1.5,\r\n};\r\n\r\nconst hlTopSx = {\r\n display: \"inline-block\",\r\n fontWeight: 600,\r\n fontSize: 24,\r\n};\r\n\r\nconst hlBottomSx = {\r\n display: \"inline-block\",\r\n fontSize: 24,\r\n lineHeight: 1.1,\r\n WebkitTextStroke: \"0.3px rgba(255, 255, 255, .5)\",\r\n textShadow: `\r\n 0 0 2px rgba(255, 255, 255, .95),\r\n 0 0 6px rgba(255, 255, 255, .6),\r\n 0 1px 0 rgba(137, 137, 137, .85)\r\n `,\r\n};\r\n\r\nconst OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps> = ({\r\n headline,\r\n headline2,\r\n items,\r\n backgroundImageUrl,\r\n}) => {\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const wheelHostRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const navRef = useRef(navState);\r\n useEffect(() => {\r\n navRef.current = navState;\r\n }, [navState]);\r\n\r\n const wheelLockRef = useRef(false);\r\n const wheelUnlockTimerRef = useRef<number | null>(null);\r\n\r\n const activeSlide = items?.[activeIndex];\r\n\r\n const bgUrl = useMemo(\r\n () => activeSlide?.backgroundImageUrl ?? backgroundImageUrl ?? \"\",\r\n [activeSlide, backgroundImageUrl]\r\n );\r\n\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n useEffect(() => {\r\n const el = wheelHostRef.current;\r\n if (!el) return;\r\n\r\n const THRESHOLD = 6;\r\n const INVERT = false;\r\n const LOCK_MS = 380;\r\n\r\n const onWheel = (e: WheelEvent) => {\r\n if (isLoading) return;\r\n if (e.ctrlKey) return;\r\n\r\n if (wheelLockRef.current) return;\r\n\r\n const dx = e.deltaX;\r\n const dy = e.deltaY;\r\n\r\n // solo horizontal\r\n if (Math.abs(dx) <= Math.abs(dy)) return;\r\n if (Math.abs(dx) < THRESHOLD) return;\r\n\r\n const dirNext = INVERT ? dx < 0 : dx > 0;\r\n\r\n // si no es loop, evitamos “rebotar” en bordes\r\n if (dirNext && navRef.current.isEnd) return;\r\n if (!dirNext && navRef.current.isStart) return;\r\n\r\n e.preventDefault();\r\n\r\n wheelLockRef.current = true;\r\n if (dirNext) carouselRef.current?.next();\r\n else carouselRef.current?.prev();\r\n\r\n if (wheelUnlockTimerRef.current) window.clearTimeout(wheelUnlockTimerRef.current);\r\n wheelUnlockTimerRef.current = window.setTimeout(() => {\r\n wheelLockRef.current = false;\r\n }, LOCK_MS);\r\n };\r\n\r\n el.addEventListener(\"wheel\", onWheel, { passive: false });\r\n return () => {\r\n el.removeEventListener(\"wheel\", onWheel as any);\r\n if (wheelUnlockTimerRef.current) window.clearTimeout(wheelUnlockTimerRef.current);\r\n };\r\n }, [isLoading]);\r\n\r\n const renderSlide = (it: OraculoBonosItem, desktop: boolean) => {\r\n const hl1 = it.headline ?? headline;\r\n const hl2 = it.headline2 ?? headline2;\r\n\r\n if (!desktop) {\r\n return (\r\n <Box sx={{ textAlign: \"center\" }}>\r\n {(hl1 || hl2) && (\r\n <Box sx={headlineBaseSx}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <OraculoWelcomeBanner {...it} onButtonClick={it.onButtonClick} variant=\"small\" />\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: \"auto\",\r\n px: 15,\r\n display: \"grid\",\r\n gridTemplateColumns: \"260px minmax(0, 1fr)\",\r\n alignItems: \"center\",\r\n columnGap: 6,\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n minHeight: \"100%\",\r\n }}\r\n >\r\n <Box sx={{ ...headlineBaseSx, textAlign: \"left\", mb: 0 }}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", maxWidth: 600, mx: \"auto\" }}>\r\n <OraculoWelcomeBanner {...it} onButtonClick={it.onButtonClick} variant=\"large\" />\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n };\r\n\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <div ref={wheelHostRef} style={{ width: \"100%\" }}>\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap={\"0px\"}\r\n options={{\r\n autoWidth: false,\r\n // si quieres, puedes activar loop acá:\r\n // type: \"loop\",\r\n // perMove: 1,\r\n // focus: \"center\",\r\n // pagination: false,\r\n // arrows: false,\r\n // drag: true,\r\n }}\r\n renderItem={(it) => (\r\n <Box sx={{ width: \"100%\" }}>\r\n {renderSlide(it, !isMobile)}\r\n </Box>\r\n )}\r\n onMove={({ index, isStart, isEnd }: any) => {\r\n setActiveIndex(index);\r\n if (typeof isStart === \"boolean\" && typeof isEnd === \"boolean\") {\r\n setNavState({ isStart, isEnd });\r\n }\r\n }}\r\n />\r\n </div>\r\n\r\n {showDots && (\r\n <Box sx={{ mt: 2, display: \"flex\", justifyContent: \"center\" }}>\r\n <OraculoCarouselDots\r\n total={items.length}\r\n active={activeIndex}\r\n onSelect={(i) => {\r\n setActiveIndex(i);\r\n carouselRef.current?.go(i);\r\n }}\r\n />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionBonoBienvenida;\r\n","import React, { useLayoutEffect, useRef } from \"react\";\r\nimport \"./OraculoSeccionClubOlimpo.css\";\r\nimport OraculoClubOlimpoVisual from \"../../molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual\";\r\nimport { OraculoSeccionClubOlimpoItem } from \"../../interfaces/oraculo/InterfaceClubOlimpo\";\r\n\r\nexport interface OraculoSeccionClubOlimpoItems {\r\n className?: string;\r\n /** Si true, hace el efecto full-bleed (100vw centrado) */\r\n fullBleed?: boolean;\r\n /** Lista de variantes (puedes pasar 1 o varias). */\r\n items: OraculoSeccionClubOlimpoItem;\r\n /** Índice del item a mostrar si pasas varios. */\r\n selectedIndex?: number;\r\n /** aria-label de la sección (fallback al imgAlt del item seleccionado). */\r\n ariaLabel?: string;\r\n}\r\n\r\nconst OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems> = ({\r\n className = \"\",\r\n fullBleed = true,\r\n items,\r\n selectedIndex = 0,\r\n ariaLabel,\r\n}) => {\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const bottomRef = useRef<HTMLDivElement | null>(null);\r\n\r\n if (!items ) return null;\r\n\r\n const onClick = () => {\r\n window.location.href = \"https://www.olimpo.bet/conoce-club-olimpo\";\r\n };\r\n\r\n const item = Array.isArray(items) \r\n ? items[selectedIndex]\r\n : items;\r\n\r\n useLayoutEffect(() => {\r\n if (!rootRef.current || !bottomRef.current) return;\r\n if (typeof ResizeObserver === \"undefined\") return;\r\n\r\n const root = rootRef.current;\r\n const bottom = bottomRef.current;\r\n\r\n const update = () => {\r\n root.style.setProperty(\r\n \"--orc-co-bottomH\",\r\n `${bottom.offsetHeight + 16}px`\r\n );\r\n };\r\n\r\n const ro = new ResizeObserver(update);\r\n ro.observe(bottom);\r\n update();\r\n\r\n return () => ro.disconnect();\r\n }, []);\r\n\r\n const rootClass = [\r\n \"orc-co-wrap\",\r\n fullBleed ? \"orc-co-fullBleed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <section\r\n ref={rootRef}\r\n className={rootClass}\r\n aria-label={ariaLabel || item.imgAlt || \"Club Olimpo\"}\r\n >\r\n <div ref={bottomRef}>\r\n <OraculoClubOlimpoVisual\r\n text={item.text}\r\n // onClick={item.onClick}\r\n onClick={onClick}\r\n imgAlt={item.imgAlt}\r\n imgSrcMobile={item.imgMobile}\r\n imgSrcDesktopBg={item.imgDesktopBg}\r\n imgSrcDesktopLogo={item.imgDesktopLogo}\r\n />\r\n </div>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionClubOlimpo;\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventCombinadasCard from \"../../molecules/OraculoEventCard/OraculoEventCombinadasCard\";\r\nimport styles from \"./OraculoSeccionEventoCombinadas.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\nimport { verMasSeccionCombinadas } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl = \"https://stg-www.contodobet.com/static/img/landing/EventoCombinada/rayoIcon.svg\",\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState([]);\r\n const SPECIALS_GROUPS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group/prepackcoupon.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764284658793&prePackCouponTags=CUSTOM'\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n verMasSeccionCombinadas();\r\n };\r\n\r\n async function loadDataEventSpecial() {\r\n try {\r\n const listRes = await fetch(SPECIALS_GROUPS_URL);\r\n const listData = await listRes.json();\r\n\r\n const groupId = listData?.group?.groups?.[0]?.id;\r\n\r\n if (!groupId) {\r\n console.error(\"Could not extract group ID\");\r\n return;\r\n }\r\n\r\n const SPECIALS_URL = `https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/prepackcoupon/eventgroup/${groupId}.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764283566783&prePackCouponTags=CUSTOM`;\r\n\r\n const response = await fetch(SPECIALS_URL);\r\n const data = await response.json();\r\n\r\n setEvents(\r\n mergeEventOffers(data.events, data.betOffers, data.prePackCoupons)\r\n );\r\n } catch (e) {\r\n console.error(\"loadDataEventSpecial error:\", e);\r\n }\r\n}\r\n\r\n function mergeEventOffers(eventos:any, apuestas : any, prePackCoupons : any) {\r\n const results : any = [] ;\r\n\r\n for (const coupon of prePackCoupons) {\r\n // Build outcome set only for this coupon\r\n const usedOutcomeIds = getUsedOutcomeIds([coupon]);\r\n const reqs = extractRequirements(coupon);\r\n\r\n // Filter apuestas only using this coupon’s outcomes\r\n const apuestasByEvent = apuestas.reduce((acc:any, a:any) => {\r\n if (!acc[a.eventId]) acc[a.eventId] = [];\r\n\r\n const filteredOutcomes = a.outcomes.filter((o:any) =>\r\n usedOutcomeIds.has(o.id)\r\n );\r\n\r\n if (filteredOutcomes.length > 0) {\r\n const requiredIds = Array.from(\r\n reqs?.[0]?.requiredOutcomeIds ?? []\r\n );\r\n const outcomesWithPosition = filteredOutcomes.map((o: any) => ({\r\n ...o,\r\n position: requiredIds.indexOf(o.id)\r\n }))\r\n \r\n acc[a.eventId].push({\r\n ...a,\r\n outcomes: outcomesWithPosition\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n\r\n // Now create duplicated event\r\n eventos.forEach((evento : any) => {\r\n if (evento.id !== coupon.prePackCouponRows[0].eventId) return;\r\n\r\n const eventOutcomeSet = usedOutcomeIds;\r\n\r\n let combinadoTotal = null;\r\n for (const r of reqs) {\r\n const fullMatch =\r\n [...r.requiredOutcomeIds].every(id => eventOutcomeSet.has(id));\r\n\r\n if (fullMatch) {\r\n combinadoTotal = r.decimal;\r\n break;\r\n }\r\n }\r\n\r\n results.push({\r\n ...evento,\r\n combinadoTotal,\r\n betoffers: apuestasByEvent[evento.id] || [],\r\n couponId: coupon.id // optional for tracking\r\n });\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nfunction extractRequirements(coupon : any) {\r\n const reqs = [];\r\n\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n const requiredOutcomeIds = new Set();\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => requiredOutcomeIds.add(o.id));\r\n });\r\n\r\n reqs.push({\r\n requiredOutcomeIds,\r\n decimal: row.odds.decimal\r\n });\r\n }\r\n }\r\n\r\n return reqs;\r\n}\r\n\r\nfunction getUsedOutcomeIds(prePackCoupons : any) {\r\n const allIds = new Set();\r\n\r\n for (const coupon of prePackCoupons) {\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n // Extract outcomes inside nested groups\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => allIds.add(o.id));\r\n });\r\n }\r\n\r\n if (row.type === \"SIMPLE\" && row.outcome) {\r\n allIds.add(row.outcome.id);\r\n }\r\n }\r\n }\r\n return allIds;\r\n}\r\n\r\n useEffect(() => {\r\n loadDataEventSpecial();\r\n}, []);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n if (!events || events.length === 0) {\r\n return null; \r\n}\r\n\r\n return (\r\n <section className={sectionClassName} style={{ \r\n // paddingLeft: 16,\r\n // paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",}}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div className={styles.controls}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events.filter(event => event['combinadoTotal'] !== null)}\r\n perPage={undefined}\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move' }}\r\n useIndexAsKey\r\n enableHorizontalWheel\r\n breakpoints={{\r\n 768: { perPage: 1.2, gap: \"12px\", padding: { left: \"0px\", right: \"0px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventCombinadasCard event={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport styles from \"./OraculoEventEnVivoCard.module.css\";\r\n\r\nexport default function OraculoEventEnVivoCardSkeleton({}) {\r\n return (\r\n <div\r\n className={styles.cardWrapper}\r\n >\r\n <Stack direction=\"column\" spacing={1}>\r\n\r\n {/* Header */}\r\n <Stack spacing={1} direction=\"row\" >\r\n <Skeleton variant=\"text\" width=\"60%\" height={24} />\r\n <Skeleton variant=\"text\" width=\"39%\" height={24} />\r\n </Stack>\r\n\r\n {/* Teams + Score */}\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"circular\" width={32} height={40} />\r\n <Skeleton variant=\"text\" width={40} height={40} />\r\n <Skeleton variant=\"circular\" width={32} height={40} />\r\n </Stack>\r\n\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={32} height={16} />\r\n <Skeleton variant=\"text\" width={40} height={16} />\r\n <Skeleton variant=\"text\" width={32} height={16} />\r\n </Stack>\r\n\r\n {/* Labels */}\r\n <Stack spacing={2} direction=\"row\">\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n </Stack>\r\n\r\n {/* Buttons */}\r\n <Stack spacing={2} direction=\"row\">\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n </Stack>\r\n\r\n </Stack>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./FadeItemWrapper.module.css\";\r\n\r\nexport default function FadeItemWrapper({ children }: { children: React.ReactNode }) {\r\n return <div className={styles.fadeWrapper}>{children}</div>;\r\n}\r\n","import { useRef, useState, useEffect, useCallback } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventEnVivoCard from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCard\";\r\nimport OraculoEventEnVivoCardSkeleton from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCardSkeleton\";\r\nimport FadeItemWrapper from \"../../molecules/OraculoEventCard/FadeItemWrapper\";\r\n\r\nimport React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { verMasSeccionEnVivo, fetchJerseys, useDebouncedValue } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl = 'https://stg-www.contodobet.com/static/img/landing/EventoEnVivo/icon.svg',\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const LIVE_EVENTS_URL = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football/all/all/all/in-play.json?channel_id=3&channel_id=3&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true\"; //cada 20s\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState<any[] | null>(null);\r\n const [jerseys, setJerseys] = useState<Record<number, any>>({});\r\n const [visibleRange, setVisibleRange] = useState<{start: number | null;end: number | null;}>({ start: null, end: null });\r\n const fetchingRef = useRef(false);\r\n const [orderedEventIds, setOrderedEventIds] = useState<string[] | null>(null);\r\n const orderIdsFetchedRef = useRef(false);\r\n\r\n\r\n const debouncedVisibleRange = useDebouncedValue(visibleRange, 300);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n verMasSeccionEnVivo();\r\n };\r\n const blocked = [\"esports\", \"cyber\"];\r\n\r\n const filterFootballEvents = (events: any[]) =>\r\n events.filter(ev => {\r\n if (ev.event.sport !== \"FOOTBALL\") return false;\r\n\r\n const group = ev.event.group?.toLowerCase() || \"\";\r\n return !blocked.some(word => group.includes(word));\r\n });\r\n\r\n\r\n\r\n const loadData = useCallback(async () => {\r\n try {\r\n let orderIds = orderedEventIds;\r\n\r\n if (!orderIdsFetchedRef.current && orderedEventIds === null) {\r\n orderIdsFetchedRef.current = true;\r\n\r\n try {\r\n const response = await fetch(\r\n \"https://api.mktolimpo.com/api/kambi/eventos/orden\"\r\n );\r\n\r\n const json = response.ok ? await response.json() : null;\r\n orderIds = json?.data?.event_ids || [];\r\n } catch {\r\n orderIds = [];\r\n }\r\n\r\n setOrderedEventIds(orderIds);\r\n }\r\n\r\n const response = await fetch(LIVE_EVENTS_URL);\r\n const data = await response.json();\r\n const filteredEvents = filterFootballEvents(data.events);\r\n\r\n if (!orderIds || orderIds.length === 0) {\r\n setEvents(filteredEvents);\r\n return;\r\n }\r\n\r\n const orderMap = new Map(\r\n orderIds.map((id, index) => [String(id), index])\r\n );\r\n\r\n const sortedEvents = [...filteredEvents].sort((a, b) => {\r\n const aIndex = orderMap.get(String(a.event.id));\r\n const bIndex = orderMap.get(String(b.event.id));\r\n\r\n if (aIndex !== undefined && bIndex !== undefined) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== undefined) return -1;\r\n if (bIndex !== undefined) return 1;\r\n return 0;\r\n });\r\n\r\n setEvents(sortedEvents);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}, [orderedEventIds]);\r\n\r\n\r\nuseEffect(() => {\r\n loadData();\r\n const interval = setInterval(loadData, 20000);\r\n return () => clearInterval(interval);\r\n}, [loadData]);\r\n\r\nuseEffect(() => {\r\n if (\r\n debouncedVisibleRange.start === null ||\r\n debouncedVisibleRange.end === null ||\r\n !events?.length ||\r\n fetchingRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n const BUFFER = 3;\r\n const from = Math.max(0, debouncedVisibleRange.start - BUFFER);\r\n const to = Math.min(events.length - 1, debouncedVisibleRange.end + BUFFER);\r\n\r\n const idsToFetch = events\r\n .slice(from, to + 1)\r\n .map(ev => ev?.event.id)\r\n .filter(Boolean)\r\n .filter(id => jerseys[id] === undefined);\r\n\r\n if (!idsToFetch.length) return;\r\n\r\n fetchingRef.current = true;\r\n\r\n fetchJerseys(idsToFetch)\r\n .then(res => {\r\n setJerseys(prev => ({\r\n ...prev,\r\n ...res.events,\r\n }));\r\n })\r\n .catch(e => {\r\n console.error(\"Jersey fetch error\", e);\r\n })\r\n .finally(() => {\r\n fetchingRef.current = false;\r\n });\r\n}, [debouncedVisibleRange, events, jerseys]);\r\n\r\n\r\n \r\n\r\n const sectionClassName = className || undefined;\r\n const isLoading = events === null;\r\n\r\nif (!isLoading && events.length === 0) {\r\n return null;\r\n}\r\n\r\n return (\r\n <section className={sectionClassName} style={{ \r\n // paddingLeft: 16,\r\n // paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\", }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n \r\n <div style={{ display: \"flex\", gap: 8 , alignItems:'center'}}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n \r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={\r\n isLoading\r\n ? Array(4).fill({}) // show 4 skeleton slides\r\n : events.slice(0,20)\r\n }\r\n perPage={undefined}\r\n \r\n enableHorizontalWheel\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move'}}\r\n breakpoints={{\r\n 400: { gap: \"4px\", focus: \"center\" }, \r\n 768: { gap: \"8px\", focus: \"center\" }, \r\n 1024: { gap: \"10px\" , focus: \"center\" },\r\n }}\r\n renderItem={(p) => {\r\n const eventId = p.event?.id || p.eventId;\r\n const jersey =\r\n eventId in jerseys ? jerseys[eventId] : undefined;\r\n\r\n return isLoading ? (\r\n <FadeItemWrapper>\r\n <OraculoEventEnVivoCardSkeleton />\r\n </FadeItemWrapper>\r\n ) : (\r\n <FadeItemWrapper>\r\n <OraculoEventEnVivoCard\r\n {...p}\r\n jersey={jersey}\r\n />\r\n </FadeItemWrapper>\r\n );\r\n}}\r\n\r\n\r\n onMove={({ isStart, isEnd, visibleStart, visibleEnd }) => {\r\n\t\t\t\t\t\t\tsetNavState({ isStart, isEnd });\r\n\t\t\t\t\t\t\tsetVisibleRange({\r\n\t\t\t\t\t\t\t\tstart: visibleStart,\r\n\t\t\t\t\t\t\t\tend: visibleEnd,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\n\r\nexport default function OraculoEventSemanaCardSkeleton() {\r\n return (\r\n <div className={styles.cardContainer}>\r\n \r\n {/* League name */}\r\n \r\n <OraculoEventLeague title={''} />\r\n <div className={styles.cardBackground}>\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n \r\n {/* Teams + VS + Date */}\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"circular\" width={48} height={48} />\r\n <Skeleton variant=\"circular\" width={48} height={48} />\r\n\r\n </Stack>\r\n\r\n {/* Labels + Buttons */}\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={80} height={12} />\r\n <Skeleton variant=\"text\" width={80} height={12} />\r\n </Stack>\r\n\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={160} height={12} />\r\n </Stack>\r\n\r\n {/* Labels */}\r\n <Stack direction=\"row\" spacing={1}>\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n </Stack>\r\n\r\n {/* Buttons */}\r\n <div className={styles.jugadas}>\r\n <Stack direction=\"row\" spacing={1}>\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n </Stack>\r\n </div>\r\n\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useRef, useState, useEffect, useCallback} from \"react\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport OraculoEventSemanaCardSkeleton from \"../../molecules/OraculoEventCard/OraculoEventSemanaCardSkeleton\";\r\nimport FadeItemWrapper from \"../../molecules/OraculoEventCard/FadeItemWrapper\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\nimport { verMasSeccionSemana, fetchJerseys, useDebouncedValue } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\n\tasync function fetchInBatches(urls: string[], batchSize = 2, signal: AbortSignal,) {\r\n\t\tconst results: any[] = [];\r\n\t\tfor (let i = 0; i < urls.length; i += batchSize) {\r\n\t\t\tif (signal.aborted) {\r\n\t\t\t\tthrow new DOMException(\"Aborted\", \"AbortError\");\r\n\t\t\t}\r\n\t\t\tconst batch = urls.slice(i, i + batchSize);\r\n\t\t\tconst responses = await Promise.all(\r\n\t\t\tbatch.map(u => fetch(u, { signal }).then(r => r.json()))\r\n\t\t\t);\r\n\t\t\tresults.push(...responses);\r\n\t\t}\r\n\t\treturn results;\r\n\t}\r\n\r\n\tfunction sortEvents(evs: any[]) {\r\n\t\treturn [...evs].sort(\r\n\t\t(a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()\r\n\t\t);\r\n\t}\r\n\tfunction filterEventsWithinOneWeek(events: any[]) {\r\n\t\tconst now = new Date();\r\n\t\tconst oneWeekLater = new Date(now.getTime() + 20 * 24 * 60 * 60 * 1000);\r\n\r\n\t\treturn events.filter((event: any) => {\r\n\t\tif (!event.start) return false;\r\n\r\n\t\tconst eventDate = new Date(event.start);\r\n\t\treturn eventDate >= now && eventDate <= oneWeekLater;\r\n\t\t});\r\n\t}\r\n\tfunction mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n\t\tconst filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n\t\tconst apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n\t\tif (!acc[b.eventId]) acc[b.eventId] = [];\r\n\t\tacc[b.eventId].push(b);\r\n\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\t\treturn eventos\r\n\t\t.filter((evento : any) => apuestasByEvent[evento.id]) \r\n\t\t.map((evento: any) => ({\r\n\t\t\t...evento,\r\n\t\t\toutcome: apuestasByEvent[evento.id],\r\n\t\t}));\r\n\t}\r\nexport default function OraculoSeccionEventoSemana({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n \r\n\tconst WEEK_EVENTS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group.json?channel_id=1&client_id=200&lang=es_PE&market=PE'\r\n\tconst carouselRef = useRef<any>(null);\r\n\tconst [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\tconst [events, setEvents] = useState<any[] | null>(null);\r\n\tconst pendingJerseysRef = useRef<Set<number>>(new Set());\r\n\tconst [jerseys, setJerseys] = useState<Record<number, any>>({});\r\n\tconst [visibleRange, setVisibleRange] = useState<{start: number | null;end: number | null;}>({ start: null, end: null });\r\n\tconst COMMON_QUERY = \"channel_id=1&client_id=200&competitionId=undefined&lang=es_PE&market=PE&useCombined=true\";\r\n\tconst debouncedVisibleRange = useDebouncedValue(visibleRange, 250);\r\n const fetchingRef = useRef(false);\r\n\r\n\tconst handleViewMore = () => {\r\n\t\t\tverMasSeccionSemana();\r\n\t};\r\n\r\n\tasync function loadDataWeekEvent(signal: AbortSignal) {\r\n\t\tlet orderedGroupIds: string[] = [];\r\n\t\tlet orderedEventIds: string[] = []\r\n\t\ttry {\r\n\t\tconst orderResponse = await fetch(\r\n\t\t\t\"https://api.mktolimpo.com/api/kambi/eventos/orden\",\r\n \t\t{ signal }\r\n\t\t);\r\n\r\n\t\tif (orderResponse.ok) {\r\n\t\t\tconst orderJson = await orderResponse.json();\r\n\t\t\torderedGroupIds = orderJson?.data?.group_ids || [];\r\n\t\t\torderedEventIds = orderJson?.data?.event_ids || [];\r\n\t\t}\r\n\t\t} catch (e: any) {\r\n\t\t\tif (e.name !== \"AbortError\") {\r\n\t\t\tconsole.warn(\"Order API not available, using default group order\");\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(WEEK_EVENTS_URL, { signal });\r\n\t\t\tconst data = await response.json();\r\n\t\t\tconst football = data.group.groups.find(\r\n\t\t\t(g : any) => g.englishName === \"Football\"\r\n\t\t\t);\r\n\r\n\t\t\tif (!football || !Array.isArray(football.groups)) {\r\n\t\t\t\tconsole.error(\"Football groups not found\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet groups = [...football.groups];\r\n\r\n\t\t\t// 3️⃣ Apply group_ids order\r\n\t\t\tif (orderedGroupIds.length > 0) {\r\n\t\t\tconst orderMap = new Map(\r\n\t\t\t\torderedGroupIds.map((id, index) => [id, index])\r\n\t\t\t);\r\n\r\n\t\t\tgroups.sort((a: any, b: any) => {\r\n\t\t\t\tconst aIndex = orderMap.get(String(a.id));\r\n\t\t\t\tconst bIndex = orderMap.get(String(b.id));\r\n\r\n\t\t\t\tif (aIndex !== undefined && bIndex !== undefined) {\r\n\t\t\t\treturn aIndex - bIndex;\r\n\t\t\t\t}\r\n\t\t\t\tif (aIndex !== undefined) return -1;\r\n\t\t\t\tif (bIndex !== undefined) return 1;\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst N = 5; \r\n\r\n\t\t\tconst firstGroups = groups.slice(0, N);\r\n\r\n\t\t\tconst buildUrls = (group : any) => {\r\n\t\t\t\tconst base = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football\";\r\n\r\n\t\t\t\tif (group.groups && group.groups.length > 0) {\r\n\t\t\t\tconst sub = group.groups[0]; // ONLY FIRST child\r\n\t\t\t\treturn [\r\n\t\t\t\t\t`${base}/${group.termKey}/${sub.termKey}/all/matches.json?${COMMON_QUERY}`\r\n\t\t\t\t];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn [\r\n\t\t\t\t\t`${base}/${group.termKey}/all/all/matches.json?${COMMON_QUERY}`\r\n\t\t\t\t];\r\n\t\t\t};\r\n\r\n\t\t\tconst urls = firstGroups.flatMap(buildUrls);\r\n\r\n\t\t\tloadAllGroupEvents(urls, orderedEventIds, signal\r\n\r\n\t\t\t)\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tasync function loadAllGroupEvents(urls : any, orderEvents : any, signal: AbortSignal) {\r\n\t\ttry {\r\n\t\t\tconst responses = await fetchInBatches(urls, 2, signal);\r\n\r\n\t\t\tlet allEvents : any = [];\r\n\t\t\tlet allBetOffers : any = [];\r\n\r\n\t\t\tresponses.forEach(data => {\r\n\t\t\t\tif (!data.events) return;\r\n\r\n\t\t\t\tallEvents.push(...data.events.map((item: any) => item.event));\r\n\t\t\t\tallBetOffers.push(...data.events.flatMap((item:any) => item.betOffers || []));\r\n\t\t\t});\r\n\r\n\t\t\tconst merged = mergeEventOffersOutcome(allEvents, allBetOffers);\r\n\t\t\tconst finalEvents = sortEvents(filterEventsWithinOneWeek(merged));\r\n\r\n\t\t\tlet orderedEvents = finalEvents;\r\n\r\n\t\t\tif (orderEvents.length > 0) {\r\n\t\t\t\t\tconst orderMap = new Map<string, number>(\r\n\t\t\t\torderEvents.map((id: number | string, index: number) => [\r\n\t\t\t\t\tString(id),\r\n\t\t\t\t\tindex,\r\n\t\t\t\t])\r\n\t\t\t);\r\n\t\t\torderedEvents = [...finalEvents].sort((a, b) => {\r\n\t\t\t\tconst aIndex = orderMap.get(String(a.id));\r\n\t\t\t\tconst bIndex = orderMap.get(String(b.id));\r\n\r\n\t\t\t\tif (aIndex !== undefined && bIndex !== undefined) {\r\n\t\t\t\t\treturn aIndex - bIndex;\r\n\t\t\t\t}\r\n\t\t\t\tif (aIndex !== undefined) return -1;\r\n\t\t\t\tif (bIndex !== undefined) return 1;\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t\tif (signal.aborted) return;\r\n\t\t\tsetEvents(orderedEvents);\r\n\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"Error loading events:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n \tuseEffect(() => {\r\n\t\tif (!items) return;\r\n\r\n\t\tconst controller = new AbortController();\r\n\r\n\t\tloadDataWeekEvent(controller.signal);\r\n\r\n\t\treturn () => {\r\n\t\t\tcontroller.abort();\r\n\t\t};\r\n\t}, [items]);\r\n\r\n\r\nuseEffect(() => {\r\n\r\n\tif (\r\n\t debouncedVisibleRange.start === null ||\r\n\t debouncedVisibleRange.end === null ||\r\n\t !events?.length ||\r\n\t fetchingRef.current\r\n\t) {\r\n\t return;\r\n\t}\r\n\r\n const BUFFER = 2;\r\n\tconst from = Math.max(0, debouncedVisibleRange.start - BUFFER);\r\n\tconst to = Math.min(events.length - 1, debouncedVisibleRange.end + BUFFER);\r\n\r\n\tconst idsToFetch = events\r\n\t .slice(from, to + 1)\r\n\t .map(ev => ev?.id)\r\n\t .filter(Boolean)\r\n\t .filter(id => jerseys[id] === undefined);\r\n\tif (!idsToFetch.length) return;\r\n\r\n\tlet cancelled = false;\r\n\tfetchingRef.current = true;\r\n\r\n\t(async () => {\r\n\t try {\r\n\t const res = await fetchJerseys(idsToFetch);\r\n\r\n\t if (!cancelled) {\r\n\t\tsetJerseys(prev => ({\r\n\t\t...prev,\r\n\t\t...res.events,\r\n\t\t}));\r\n\t }\r\n\t } catch (e) {\r\n\t console.error(\"Jersey fetch error\", e);\r\n\t } finally {\r\n\t fetchingRef.current = false;\r\n\t }\r\n\t})();\r\n\r\n\treturn () => {\r\n\t cancelled = true;\r\n\t};\r\n }, [debouncedVisibleRange, events]);\r\n\tconst sectionClassName = className || undefined;\r\n\t\tconst sectionStyle : React.CSSProperties = { paddingLeft: 0, width: \"100%\", boxSizing: \"border-box\"};\r\n\r\n const isLoading = events === null;\r\n\r\nif (!isLoading && events.length === 0) {\r\n return null;\r\n}\r\n\r\n\r\n\treturn (\r\n\t\t<section className={sectionClassName} style={sectionStyle}>\r\n\r\n\t\t\t<div className={styles.wrapper}>\r\n\t\t\t\t<div className={styles.container}>\r\n\r\n\t\t\t\t\t<Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\t\t\t\t\t\t<OraculoSectionTitle title=\"Eventos de la semana\" />\r\n\t\t\t\t\t\t<div className={styles.buttonWrapper}>\r\n\t\t\t\t\t\t<OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div style={{ minWidth: '180px' }}>\r\n\r\n\t\t\t\r\n\t\t\t\t\t<OraculoCarousel\r\n\t\t\t\t\t\tref={carouselRef}\r\n\t\t\t\t\t\titems={\r\n\t\t\t\t\t\tisLoading\r\n\t\t\t\t\t\t\t? Array(6).fill({}) // show 4 skeleton slides\r\n\t\t\t\t\t\t\t: events.slice(0, 20)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tperPage={3.5}\r\n\t\t\t\t\t\tgap=\"16px\"\r\n\t\t\t\t\t\tenableHorizontalWheel\r\n\t\t\t\t\t\toptions={{ autoWidth: true, trimSpace: true }}\r\n\t\t\t\t\t\tbreakpoints={{\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\trenderItem={(p) => {\r\n\t\t\t const eventId = p.id ;\r\n const jersey =\r\n eventId in jerseys ? jerseys[eventId] : undefined;\r\n\t\t\t\t\t\t\treturn isLoading ? (\r\n\t\t\t\t\t\t\t\t<FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t\t<OraculoEventSemanaCardSkeleton />\r\n\t\t\t\t\t\t\t\t</FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t\t<OraculoEventSemanaCard event ={p} jersey={jersey} />\r\n\t\t\t\t\t\t\t\t</FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonMove={({ isStart, isEnd, visibleStart, visibleEnd }) => {\r\n\t\t\t\t\t\t\tsetNavState({ isStart, isEnd });\r\n\t\t\t\t\t\t\tsetVisibleRange({\r\n\t\t\t\t\t\t\t\tstart: visibleStart,\r\n\t\t\t\t\t\t\t\tend: visibleEnd,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</section>\r\n\t);\r\n}\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds,\r\n items,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n\r\n const totalDots = backgrounds?.length || 1;\r\n const isLoading = !backgrounds || backgrounds.length === 0;\r\n\r\n useEffect(() => {\r\n if (isLoading) return;\r\n if (!backgrounds || backgrounds.length <= 1) return;\r\n\r\n const id = window.setInterval(() => {\r\n carouselRef.current?.next();\r\n }, 5000);\r\n\r\n return () => window.clearInterval(id);\r\n }, [isLoading, backgrounds?.length]);\r\n\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n overflow: \"visible\",\r\n }}\r\n >\r\n {/* Carrusel de backgrounds */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n borderRadius: 0,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={backgrounds}\r\n perPage={1}\r\n gap=\"0px\"\r\n enableHorizontalWheel\r\n options={{\r\n type: \"loop\",\r\n perMove: 1,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n }}\r\n onMove={({ index }) => {\r\n const safe = ((index % totalDots) + totalDots) % totalDots;\r\n setActiveDot(safe);\r\n }}\r\n renderItem={(bg) => (\r\n <Box\r\n component=\"a\"\r\n href={bg.href}\r\n target={bg.target ?? \"_self\"}\r\n rel={bg.target === \"_blank\" ? \"noopener noreferrer\" : undefined}\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n display: \"block\",\r\n textDecoration: \"none\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <Box\r\n component=\"picture\"\r\n sx={{ position: \"absolute\", inset: 0, lineHeight: 0 }}\r\n >\r\n <source srcSet={bg.desktopSrc} media=\"(min-width:800px)\" />\r\n <source srcSet={bg.mobileSrc} media=\"(max-width:799px)\" />\r\n <Box\r\n component=\"img\"\r\n src={bg.fallbackSrc ?? bg.desktopSrc}\r\n alt=\"\"\r\n aria-hidden\r\n loading=\"lazy\"\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n pointerEvents: \"none\",\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n top: \"40%\",\r\n background:\r\n \"linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(18,18,18,0.85) 80%, #121212 100%)\",\r\n },\r\n }}\r\n />\r\n </Box>\r\n )}\r\n />\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 72,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n zIndex: 2,\r\n }}\r\n >\r\n <OraculoCarouselDots total={totalDots} active={activeDot} />\r\n </Box>\r\n </Box>\r\n\r\n {/* Dock de items */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n bottom: { xs: -12, sm: 0 },\r\n left: 120,\r\n right: 120,\r\n \"@media (max-width:1024px)\": {\r\n left: 24,\r\n right: 24,\r\n },\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n p: 1.5,\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n boxShadow: \"0 10px 24px rgba(0,0,0,.35)\",\r\n zIndex: 3,\r\n }}\r\n >\r\n {items?.map((item: OraculoBannerItem) => (\r\n <Box\r\n key={item.id}\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: { xs: 0.5, md: 1 },\r\n color: \"#FFFFFF\",\r\n minWidth: 0,\r\n cursor: item.onClick || item.href ? \"pointer\" : \"default\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n onClick={() => {\r\n if (item.onClick) return item.onClick();\r\n if (item.href) return (window.location.href = item.href ?? \"/#\");\r\n }}\r\n >\r\n {item.icon && (\r\n <Box\r\n component=\"img\"\r\n src={item.icon}\r\n alt={item.label || `icon-${item.id}`}\r\n sx={{\r\n width: { xs: 20, sm: 22, md: 24 },\r\n height: { xs: 20, sm: 22, md: 24 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 10, sm: 11, md: 12 },\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoLogoMediosPago from \"../../atoms/OraculoLogo/OraculoLogoMediosPago\";\r\n\r\ntype LogoType = {\r\n src: string;\r\n alt: string;\r\n};\r\n\r\ntype Props = {\r\n title?: string;\r\n items?: LogoType[]; // <-- ahora solo 1 arreglo\r\n};\r\n\r\n// 7 items (ejemplo)\r\nconst DEFAULT_ITEMS: LogoType[] = [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/IBK.svg\", alt: \"Interbank\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/Yape.svg\", alt: \"Yape\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/BCP.png\", alt: \"BCP\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/pagoEfectivo.png\", alt: \"PagoEfectivo\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/tupay.svg\", alt: \"Tupay\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/monnet.svg\", alt: \"Monnet\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/niubiz.svg\", alt: \"Niubiz\" },\r\n];\r\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n items = DEFAULT_ITEMS,\r\n}: Props) {\r\n // 4/3 cuando son 7\r\n const split = Math.ceil(items.length / 2);\r\n const row1 = items.slice(0, split);\r\n const row2 = items.slice(split);\r\n\r\n return (\r\n <Box component=\"section\" aria-labelledby=\"mp-title\" sx={{ color: \"#fff\" }}>\r\n <Typography\r\n id=\"mp-title\"\r\n variant=\"h6\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 20, md: 32 },\r\n textAlign: \"center\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Box\r\n sx={{\r\n width: \"288px\",\r\n height: \"2px\",\r\n mx: \"auto\",\r\n mb: 3,\r\n opacity: 0.95,\r\n filter: \"blur(0.2px)\",\r\n background:\r\n \"linear-gradient(90deg, rgba(0,0,0,0) 0%, #1dd75b 18%, #23d46b 50%, #1dd75b 82%, rgba(0,0,0,0) 100%)\",\r\n }}\r\n />\r\n\r\n {/* 2 filas SIEMPRE (móvil y desktop) */}\r\n <Stack spacing={{ xs: 2, md: 3 }} alignItems=\"center\">\r\n <Stack\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={{ xs: 2, md: 3 }}\r\n flexWrap=\"wrap\"\r\n >\r\n {row1.map((l, idx) => (\r\n <OraculoLogoMediosPago key={`${l.alt}-${l.src}-${idx}`} {...l} />\r\n ))}\r\n </Stack>\r\n\r\n <Stack\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={{ xs: 2, md: 3 }}\r\n flexWrap=\"wrap\"\r\n >\r\n {row2.map((l, idx) => (\r\n <OraculoLogoMediosPago key={`${l.alt}-${l.src}-${idx}`} {...l} />\r\n ))}\r\n </Stack>\r\n </Stack>\r\n </Box>\r\n );\r\n}\r\n","import OraculoSeccionBonoBienvenida from \"../organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida\";\r\nimport OraculoSeccionTopJuegos from \"../organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos\";\r\nimport OraculoSeccionCasino from \"../organisms/OraculoSeccionCasino/OraculoSeccionCasino\";\r\nimport OraculoSeccionCasinoEnVivo from \"../organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo\";\r\nimport OraculoSeccionVirtuales from \"../organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales\";\r\nimport OraculoSeccionClubOlimpo from \"../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo\";\r\nimport OraculoSeccionDestacados from \"../organisms/OraculoSeccionDestacados/OraculoSeccionDestacados\";\r\nimport OraculoSeccionBanners from \"../organisms/OraculoSeccionBanners/OraculoSeccionBanners\";\r\nimport OraculoSeccionMediosPago from \"../organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago\";\r\nimport OraculoSeccionEventoCombinadas from \"../organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas\";\r\nimport OraculoSeccionEventoEnVivo from \"../organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo\";\r\nimport OraculoSeccionEventoSemana from \"../organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana\";\r\n\r\nimport React from \"react\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\nexport const Landing: LandingComponentMap = {\r\n OraculoSeccionDestacados,\r\n OraculoSeccionTopJuegos,\r\n OraculoSeccionCasinoEnVivo,\r\n OraculoSeccionCasino,\r\n OraculoSeccionVirtuales,\r\n OraculoSeccionClubOlimpo,\r\n OraculoSeccionBonoBienvenida,\r\n OraculoSeccionBanners,\r\n OraculoSeccionMediosPago,\r\n OraculoSeccionEventoEnVivo,\r\n OraculoSeccionEventoSemana,\r\n OraculoSeccionEventoCombinadas,\r\n};","\"use client\";\r\nimport React, { useEffect, useState, useMemo } from \"react\";\r\nimport { Container, Stack, useMediaQuery } from \"@mui/material\";\r\nimport { doc, onSnapshot, Firestore } from \"firebase/firestore\";\r\n// import \"@splidejs/react-splide/css\";\r\n\r\nimport { Landing } from \"./landingRegistry\";\r\nimport { clearOraculoExtras, setOraculoExtras } from \"../utils/openMachineRegistry\";\r\n// import \"../index.css\"\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\n// Es componente React si es función o componente objeto (MUI, etc.)\r\nconst isComponent = (val: any) =>\r\n typeof val === \"function\" ||\r\n (val && typeof val === \"object\" && \"$$typeof\" in val);\r\n\r\n// En oraculo-ui los organismos de landing se llaman OraculoSeccionXXX\r\nconst isSectionName = (key: string) => /^OraculoSeccion[A-Z]/.test(key);\r\n\r\nexport const LandingComponents: LandingComponentMap = Object.fromEntries(\r\n Object.entries(Landing).filter(\r\n ([key, val]) => isSectionName(key) && isComponent(val)\r\n )\r\n) as LandingComponentMap;\r\n\r\n// Section item model mirrors Firestore persisted structure\r\nexport type OraculoPageLandingPreviewSection = {\r\n id: number;\r\n title: string;\r\n componentKey: string;\r\n visible: boolean;\r\n order: number;\r\n props?: Record<string, unknown>;\r\n apiUrl?: string;\r\n dataMode?: \"url\" | \"manual\";\r\n variableName?: string;\r\n manualItems?: { fields: { name: string; type: string; value: string }[] }[];\r\n variableName2?: string;\r\n manualItems2?: { fields: { name: string; type: string; value: string }[] }[];\r\n manualScalarFields?: { name: string; type: string; value: string }[];\r\n apiMethod?: \"GET\" | \"POST\";\r\n apiParams?: { id: string; key: string; value: string }[];\r\n};\r\n\r\nexport type OpenMachineFn = (\r\n machine_name: string,\r\n provider: any,\r\n machine: any,\r\n external_id: any,\r\n type: any,\r\n demo: any,\r\n source: string\r\n) => void;\r\n\r\nexport type OraculoExtras = Array<[string, unknown]>;\r\n\r\nconst extrasToObject = (extras?: OraculoExtras): Record<string, unknown> => {\r\n try {\r\n return Object.fromEntries(extras ?? []);\r\n } catch (e) {\r\n console.warn(\"[oraculo] extras inválidos. Debe ser Array<[string, unknown]>\", extras);\r\n return {};\r\n }\r\n};\r\n\r\nconst asComponent = <T,>(val: unknown): T | undefined =>\r\n typeof val === \"function\" ? (val as T) : undefined;\r\n\r\nconst asFn = <T extends Function>(val: unknown): T | undefined =>\r\n typeof val === \"function\" ? (val as T) : undefined;\r\n\r\n/** Payload bruto obtenido por fetch o construido manualmente */\r\ntype SectionPayload =\r\n | Record<string, unknown>\r\n | Array<unknown>\r\n | null\r\n | undefined;\r\n\r\nexport interface OraculoPageLandingPreviewProps {\r\n /** Optional override: if provided, renders these sections instead of fetching Firestore */\r\n sectionsOverride?: OraculoPageLandingPreviewSection[];\r\n /** Firestore document id (default 'home') */\r\n docId?: string;\r\n /** Instancia de Firestore proporcionada por la app que consume el paquete */\r\n db: Firestore;\r\n /** Componente que se renderizará mientras carga */\r\n loader?: React.ComponentType<any>;\r\n // Optional extras\r\n extras?: OraculoExtras;\r\n}\r\n\r\nclass HttpError extends Error {\r\n constructor(\r\n public status: number,\r\n public url: string,\r\n public statusText: string\r\n ) {\r\n super(`HTTP ${status} ${statusText}`);\r\n this.name = \"HttpError\";\r\n }\r\n}\r\n\r\ntype ComponentMap = Record<\r\n string,\r\n React.ComponentType<Record<string, unknown>>\r\n>;\r\n\r\nconst noMostrarSinItems = [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n];\r\n\r\nconst OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n extras,\r\n loader\r\n}) => {\r\n const extrasObj = useMemo(() => extrasToObject(extras), [extras]);\r\n\r\n const Loader = loader || extrasObj[\"loader\"] as React.ComponentType<any> | undefined;\r\n \r\n\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [sectionDataMap, setSectionDataMap] = useState<\r\n Record<number, SectionPayload>\r\n >({});\r\n const [sectionLoadingMap, setSectionLoadingMap] = useState<\r\n Record<number, boolean>\r\n >({});\r\n const [sectionErrorMap, setSectionErrorMap] = useState<\r\n Record<number, string>\r\n >({});\r\n\r\n const isDesktop = useMediaQuery(\"(min-width:1024px)\");\r\n\r\n // Fetch sections from Firestore unless override provided\r\n useEffect(() => {\r\n if (sectionsOverride) return;\r\n if (!db) return; // seguridad extra por si alguien no pasa db\r\n\r\n setLoading(true);\r\n\r\n const unsubscribe = onSnapshot(\r\n doc(db, \"landings\", docId),\r\n (snap) => {\r\n try {\r\n let fetched: OraculoPageLandingPreviewSection[] = snap.exists()\r\n ? (snap.data()?.sections as OraculoPageLandingPreviewSection[]) ||\r\n []\r\n : [];\r\n fetched = fetched\r\n .slice()\r\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n .map((s, i) => ({ ...s, order: i + 1 }));\r\n // setSections([...new Set([...fetched, ...arraydemo])]);\r\n setSections(fetched);\r\n console.log(\"fetched: \", fetched);\r\n } catch (e) {\r\n console.error(\"Error procesando landings/\" + docId, e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n (error) => {\r\n console.error(\"Error escuchando landings/\" + docId, error);\r\n setLoading(false);\r\n }\r\n );\r\n\r\n return () => unsubscribe();\r\n }, [sectionsOverride, docId, db]);\r\n\r\n useEffect(() => {\r\n setOraculoExtras(extrasObj);\r\n return () => clearOraculoExtras();\r\n }, [extrasObj]);\r\n\r\n useEffect(() => {\r\n // preload all components used in sections\r\n const effectiveSections = sectionsOverride\r\n ? sectionsOverride.slice()\r\n : sections.slice();\r\n const toLoad = effectiveSections\r\n .map((s) => s.componentKey)\r\n .filter((key) => !!key);\r\n\r\n if (toLoad.length === 0) return;\r\n\r\n }, [sectionsOverride, sections]);\r\n\r\n const fetchSectionData = async (\r\n section: OraculoPageLandingPreviewSection\r\n ): Promise<SectionPayload> => {\r\n\r\n if (noMostrarSinItems.includes(section.componentKey)) {\r\n return {\r\n // whatever empty structure your UI expects\r\n items: [],\r\n events: [],\r\n data: {},\r\n } as SectionPayload;\r\n }\r\n\r\n const rawUrl = (section.apiUrl || \"\").trim();\r\n if (!rawUrl) return undefined;\r\n\r\n const method = section.apiMethod || \"GET\";\r\n const params = section.apiParams || [];\r\n\r\n let url = rawUrl;\r\n let body: BodyInit | undefined;\r\n let headers: HeadersInit | undefined;\r\n\r\n if (method === \"GET\") {\r\n const u = new URL(\r\n rawUrl,\r\n typeof window == \"undefined\"\r\n ? \"http://localhost\"\r\n : window.location.origin\r\n );\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n u.searchParams.append(p.key, p.value);\r\n }\r\n url = u.toString();\r\n } else {\r\n // application/x-www-form-urlencoded\r\n const encoded = new URLSearchParams();\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n // el value se manda tal cual; URLSearchParams se encarga del %7B%22...%7D\r\n encoded.append(p.key, p.value);\r\n }\r\n body = encoded.toString();\r\n headers = {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n };\r\n }\r\n\r\n const res = await fetch(url, {\r\n method,\r\n headers,\r\n body,\r\n });\r\n\r\n if (!res.ok) throw new HttpError(res.status, url, res.statusText);\r\n return res.json();\r\n };\r\n\r\n // Use override if provided\r\n const effectiveSections = useMemo(\r\n () => (sectionsOverride ? sectionsOverride.slice() : sections.slice()),\r\n [sectionsOverride, sections]\r\n );\r\n\r\n const fetchedKeysRef = React.useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n const fetchables = effectiveSections\r\n .map((s) => ({ s, url: (s.apiUrl || \"\").trim() }))\r\n .filter(({ url }) => !!url);\r\n\r\n if (!fetchables.length) return;\r\n\r\n for (const { s, url } of fetchables) {\r\n const key = `${s.id}|${url}`;\r\n if (fetchedKeysRef.current.has(key)) continue;\r\n fetchedKeysRef.current.add(key);\r\n\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: true }));\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: \"\" }));\r\n\r\n (async () => {\r\n try {\r\n const json = await fetchSectionData(s);\r\n setSectionDataMap((prev) => ({ ...prev, [s.id]: json }));\r\n } catch (err: unknown) {\r\n let message = \"Error desconocido\";\r\n if (err instanceof HttpError) {\r\n message = `Error HTTP ${err.status} (${err.statusText}) en ${err.url}`;\r\n } else if (err instanceof SyntaxError) {\r\n message = \"Respuesta no es JSON válido\";\r\n } else if (err instanceof TypeError) {\r\n message = \"Fallo de red / CORS / conexión\";\r\n } else if (typeof err === \"string\") {\r\n message = err.toString();\r\n }\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: message }));\r\n } finally {\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: false }));\r\n }\r\n })();\r\n }\r\n }, [effectiveSections]);\r\n\r\n const orderedVisible = useMemo(\r\n () =>\r\n effectiveSections\r\n .filter((s) => s.visible)\r\n .sort((a, b) => a.order - b.order),\r\n [effectiveSections]\r\n );\r\n\r\n const toManualArray = (\r\n items:\r\n | { fields: { name: string; type: string; value: string }[] }[]\r\n | undefined\r\n ): Array<Record<string, unknown>> => {\r\n if (!Array.isArray(items)) return [];\r\n return items.map((it) => {\r\n const obj: Record<string, unknown> = {};\r\n for (const f of it.fields || []) {\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n obj[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n obj[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n obj[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else obj[f.name] = f.value;\r\n }\r\n return obj;\r\n });\r\n };\r\n\r\n const toManualScalars = (\r\n fields: { name: string; type: string; value: string }[] | undefined\r\n ): Record<string, unknown> => {\r\n const out: Record<string, unknown> = {};\r\n if (!Array.isArray(fields)) return out;\r\n for (const f of fields) {\r\n if (!f.name) continue;\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n // Si el valor está vacío o es inválido, NO agregar el prop (usar default del componente)\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n out[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n out[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n out[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else out[f.name] = f.value;\r\n }\r\n return out;\r\n };\r\n\r\n const mapPayloadToProps = (\r\n payload: SectionPayload,\r\n manual: { arr?: unknown[]; variableName?: string } | null,\r\n base?: Record<string, unknown>\r\n ): Record<string, unknown> => {\r\n const merged: Record<string, unknown> = base ? { ...base } : {};\r\n if (manual) {\r\n const name = (manual.variableName || \"items\").trim() || \"items\";\r\n merged[name] = manual.arr || [];\r\n return merged;\r\n }\r\n const pl = payload;\r\n const isArr = Array.isArray(pl);\r\n const obj =\r\n !isArr && typeof pl === \"object\" && pl !== null ? pl : undefined;\r\n const arrData =\r\n obj && Array.isArray((obj as any).lobby || (obj as any).items)\r\n ? (((obj as any).lobby || (obj as any).items) as unknown[])\r\n : undefined;\r\n const choose = (fallback: unknown[]) => (isArr ? pl : arrData || fallback);\r\n merged.items = choose(arrData || []);\r\n return merged;\r\n };\r\n\r\n const buildCompProps = (\r\n s: OraculoPageLandingPreviewSection\r\n ): Record<string, unknown> => {\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload: SectionPayload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n let compProps: Record<string, unknown> = s.props ? { ...s.props } : {};\r\n const scalars = toManualScalars(s.manualScalarFields);\r\n if (\r\n noMostrarSinItems.includes(s.componentKey)\r\n ) {\r\n //console.log(payload);\r\n return { items: payload, ...compProps, ...scalars };\r\n }\r\n\r\n compProps = { ...compProps, ...scalars };\r\n if (hasUrl) compProps = mapPayloadToProps(payload, null, compProps);\r\n else if (s.dataMode === \"manual\") {\r\n const arr = toManualArray(s.manualItems);\r\n compProps = mapPayloadToProps(\r\n null,\r\n { arr, variableName: s.variableName },\r\n compProps\r\n );\r\n\r\n // Si existe variableName2 y manualItems2, agregar también ese prop\r\n if (s.variableName2 && s.manualItems2) {\r\n const arr2 = toManualArray(s.manualItems2);\r\n const varName2 = (s.variableName2 || \"items2\").trim() || \"items2\";\r\n compProps[varName2] = arr2;\r\n }\r\n }\r\n\r\n return compProps;\r\n };\r\n\r\n const renderStatusBox = (\r\n key: number,\r\n type: \"loading\" | \"error\" | \"component\",\r\n message: string\r\n ) => {\r\n const colorMap: Record<string, string> = {\r\n loading: \"bg-blue-100 text-blue-800\",\r\n error: \"bg-red-100 text-red-800\",\r\n component: \"bg-yellow-100 text-yellow-800\",\r\n };\r\n return (\r\n <div key={key} className={`mx-4 p-4 rounded ${colorMap[type]}`}>\r\n {message}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSingleSection = (s: OraculoPageLandingPreviewSection) => {\r\n const rawKey = s.componentKey;\r\n\r\n const Comp = LandingComponents[rawKey];\r\n\r\n if (!Comp) {\r\n console.warn(`No hay componente registrado para \"${rawKey}\"`);\r\n return renderStatusBox(\r\n s.id,\r\n \"component\",\r\n `Componente \"${rawKey}\" no encontrado`\r\n );\r\n }\r\n\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n const loadingSec = hasUrl ? !!sectionLoadingMap[s.id] : false;\r\n const errorSec = hasUrl ? sectionErrorMap[s.id] : \"\";\r\n\r\n if (hasUrl) {\r\n if (loadingSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"loading\",\r\n `Cargando datos desde ${s.apiUrl}...`\r\n );\r\n if (errorSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"error\",\r\n `Error cargando ${s.apiUrl}: ${errorSec}`\r\n );\r\n }\r\n\r\n const compProps = buildCompProps(s);\r\n const fullBleedComponents = new Set([\r\n \"OraculoSeccionBanners\",\r\n \"OraculoSeccionBonoBienvenida\",\r\n \"OraculoSeccionCasinoEnVivo\",\r\n !isDesktop ? \"OraculoSeccionClubOlimpo\" : \"\",\r\n ]);\r\n const isFullBleed = fullBleedComponents.has(s.componentKey);\r\n\r\n const paddingX = isDesktop ? 120 : 24;\r\n\r\n const wrapperStyle: React.CSSProperties = isFullBleed\r\n ? {\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }\r\n : {\r\n paddingLeft: paddingX,\r\n paddingRight: paddingX,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n };\r\n\r\n // if (\r\n // noMostrarSinItems.includes(s.componentKey)\r\n // ) {\r\n // //console.log(payload);\r\n // return (<Comp key={s.id}{...compProps} />);\r\n // }\r\n return (\r\n <div key={s.id} style={wrapperStyle} className=\"oraculo-section-wrapper\">\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return Loader ? <Loader /> : <div>Cargando...</div>;\r\n\r\n if (!loading && !sectionsOverride && sections.length === 0) {\r\n return (\r\n <div className=\"text-xs text-gray-500\">Sin secciones (Firestore)</div>\r\n );\r\n }\r\n\r\n return (\r\n <Container\r\n className=\"oli-font\"\r\n maxWidth={false}\r\n disableGutters\r\n sx={{\r\n backgroundColor: \"#121212\",\r\n position: \"relative\",\r\n pb: 5,\r\n // pt: 5,\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n <Stack\r\n direction=\"column\"\r\n spacing={isDesktop ? 8 : 5}\r\n useFlexGap\r\n >\r\n {orderedVisible.map(renderSingleSection)}\r\n </Stack>\r\n </Container>\r\n );\r\n};\r\n\r\nexport default OraculoPageLandingPreview;\r\n"],"names":["OraculoButton","children","onClick","href","target","rel","type","disabled","variant","size","fullWidth","fullHeight","className","ariaLabel","leftIcon","rightIcon","iconOnly","hasText","onlyOneIcon","isIconOnly","cls","content","jsxs","Fragment","jsx","ariaDisabled","MuiLink","e","OraculoSectionTitle","title","iconUrl","wrapperClass","OraculoCarouselDots","total","active","onSelect","rootClass","_","i","OraculoGridGroup","minWidth","spacing","justify","columns","gridTemplate","gap","OraculoLogoMediosPago","src","alt","Box","OraculoEventTitle","subtitle","styles","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","OraculoEventLeague","OraculoEventScore","name","OraculoTeamPolo","jersey","base","sleeve","stripes","sleevelong","OraculoEventTeamInfo","Skeleton","useHorizontalWheelSplide","hostRef","splideRef","enabled","rafRef","useRef","useEffect","host","onWheel","splide","deltaX","deltaY","direction","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","enableHorizontalWheel","ref","wheelHostRef","useImperativeHandle","_a","index","getVisibleRange","Slides","Controller","track","trackWidth","visibleStart","currentWidth","visibleEnd","slide","handleMove","useCallback","controller","end","isStart","isEnd","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","loading","sizes","getVal","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","logo","provider","providerName","machine","Typography","GAP","SkCard","r","OraculoGameSlide","layout","gridSkeletonCount","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","redirectHomeWithOutcomes","outcomes","arr","verMasSeccionEnVivo","verMasSeccionSemana","verMasSeccionCombinadas","fetchJerseys","eventIds","useDebouncedValue","delay","debounced","setDebounced","useState","id","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","a","best","line","_e","acc","o","eventOutcomes","Stack","b","OraculoButtonBet","DEFAULT_HOME_JERSEY","DEFAULT_AWAY_JERSEY","getTeamJersey","jerseyEvent","side","role","OraculoEventEnVivoCard","liveData","betOffers","selectedOffer","offer","OraculoEventHeader","_g","_f","_i","_h","_j","_k","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","isLoading","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","KEY","getStore","g","setOraculoExtras","extrasObj","getOraculoExtra","key","clearOraculoExtras","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","top6","handleOpen","juego","showIframe","loadMachine","getGameId","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","handleOpenLive","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","OraculoSeccionCasino","onItemClick","buildLoadingSlides","mkItems","n","itm","game","buildVirtualSlides","buildLoadingVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","isMobile","useMediaQuery","showDots","activeIndex","setActiveIndex","navRef","wheelLockRef","wheelUnlockTimerRef","activeSlide","sectionSx","el","THRESHOLD","LOCK_MS","dx","dy","dirNext","renderSlide","desktop","hl1","hl2","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","SPECIALS_GROUPS_URL","loadDataEventSpecial","listData","groupId","SPECIALS_URL","data","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","reqs","extractRequirements","apuestasByEvent","filteredOutcomes","requiredIds","outcomesWithPosition","evento","eventOutcomeSet","combinadoTotal","row","requiredOutcomeIds","allIds","sectionClassName","p","OraculoEventCombinadasCard","OraculoEventEnVivoCardSkeleton","FadeItemWrapper","OraculoSeccionEventoEnVivo","LIVE_EVENTS_URL","jerseys","setJerseys","visibleRange","setVisibleRange","fetchingRef","orderedEventIds","setOrderedEventIds","orderIdsFetchedRef","debouncedVisibleRange","blocked","filterFootballEvents","ev","group","word","loadData","orderIds","response","json","filteredEvents","orderMap","sortedEvents","aIndex","bIndex","interval","BUFFER","from","to","idsToFetch","res","prev","eventId","OraculoEventSemanaCardSkeleton","fetchInBatches","urls","batchSize","signal","batch","responses","u","sortEvents","evs","filterEventsWithinOneWeek","now","oneWeekLater","eventDate","mergeEventOffersOutcome","OraculoSeccionEventoSemana","WEEK_EVENTS_URL","COMMON_QUERY","loadDataWeekEvent","orderedGroupIds","orderResponse","orderJson","football","groups","firstGroups","buildUrls","sub","loadAllGroupEvents","orderEvents","allEvents","allBetOffers","merged","finalEvents","orderedEvents","error","cancelled","sectionStyle","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","safe","bg","DEFAULT_ITEMS","OraculoSeccionMediosPago","split","row1","row2","l","Landing","isComponent","val","isSectionName","LandingComponents","extrasToObject","extras","HttpError","status","statusText","noMostrarSinItems","OraculoPageLandingPreview","sectionsOverride","docId","db","loader","Loader","sections","setSections","setLoading","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","isDesktop","unsubscribe","onSnapshot","doc","snap","fetched","s","fetchSectionData","section","rawUrl","method","params","body","headers","encoded","effectiveSections","fetchedKeysRef","React","fetchables","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","pl","isArr","arrData","choose","fallback","buildCompProps","hasUrl","compProps","scalars","arr2","varName2","renderStatusBox","renderSingleSection","rawKey","Comp","loadingSec","errorSec","isFullBleed","paddingX","Container"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/atoms/OraculoButton/OraculoButton.tsx","../src/atoms/OraculoSectionTitle/OraculoSectionTitle.tsx","../src/atoms/OraculoCarouselDots/OraculoCarouselDots.tsx","../src/atoms/OraculoGridGroup/OraculoGridGroup.tsx","../src/atoms/OraculoLogo/OraculoLogoMediosPago.tsx","../src/atoms/OraculoEvent/OraculoEventTitle.tsx","../src/atoms/OraculoEvent/OraculoEventStatusBadge.tsx","../src/atoms/OraculoEvent/OraculoEventStatus.tsx","../src/atoms/OraculoEvent/OraculoEventHeader.tsx","../src/atoms/OraculoEvent/OraculoEventLabel.tsx","../src/atoms/OraculoEvent/OraculoEventLeague.tsx","../src/atoms/OraculoEvent/OraculoEventScore.tsx","../src/atoms/OraculoEvent/OraculoTeamPolo.tsx","../src/atoms/OraculoEvent/OraculoEventTeamInfo.tsx","../src/molecules/OraculoCarousel/useHorizontalWheelSplide.tsx","../src/molecules/OraculoCarousel/OraculoCarousel.tsx","../src/molecules/OraculoGameCard/OraculoGameCard.tsx","../src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx","../src/molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard.tsx","../src/molecules/OraculoGameSlide/OraculoGameSlide.tsx","../src/molecules/OraculoWelcomeBanner/OraculoWelcomeBanner.tsx","../src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx","../src/atoms/OraculoEvent/KambiOpenBet.tsx","../src/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/atoms/OraculoButtonBet/OraculoButtonBet.tsx","../src/atoms/OraculoEvent/KambiJersey.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../src/utils/openMachineRegistry.ts","../src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx","../src/organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo.tsx","../src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx","../src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx","../src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx","../src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx","../src/organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCardSkeleton.tsx","../src/molecules/OraculoEventCard/FadeItemWrapper.tsx","../src/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCardSkeleton.tsx","../src/organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana.tsx","../src/organisms/OraculoSeccionBanners/OraculoSeccionBanners.tsx","../src/organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago.tsx","../src/templates/landingRegistry.ts","../src/templates/OraculoPageLandingPreview.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./OraculoButton.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButton({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n \"orc-btn\",\r\n variant === \"secondary\"\r\n ? \"orc-btn--secondary\"\r\n : variant === \"tertiary\"\r\n ? \"orc-btn--tertiary\"\r\n : \"orc-btn--primary\",\r\n size ? `orc-btn--${size}` : \"\",\r\n fullWidth ? \"orc-btn--full\" : \"\",\r\n fullHeight ? \"orc-btn--fullHeight\" : \"\",\r\n isIconOnly ? \"orc-btn--iconOnly\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className=\"orc-btn__icon\">{leftIcon}</span>}\r\n {!isIconOnly && <span className=\"orc-btn__label\">{children}</span>}\r\n {rightIcon && <span className=\"orc-btn__icon\">{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoSectionTitle.css\";\r\n\r\nexport interface OraculoSectionTitleProps {\r\n title: string;\r\n iconUrl?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nexport default function OraculoSectionTitle({\r\n title,\r\n iconUrl,\r\n size = \"md\",\r\n className = \"\",\r\n}: OraculoSectionTitleProps) {\r\n const sizeClass = size ? `orc-section-title--${size}` : \"\";\r\n\r\n const wrapperClass = [\r\n \"orc-section-title\",\r\n sizeClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {iconUrl && (\r\n <img\r\n src={iconUrl}\r\n alt=\"\"\r\n className=\"orc-section-title__icon\"\r\n />\r\n )}\r\n <h2 className=\"orc-section-title__title\">{title}</h2>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoCarouselDots.css\";\r\n\r\nexport interface OraculoCarouselDotsProps {\r\n total: number;\r\n active: number;\r\n onSelect?: (index: number) => void;\r\n className?: string;\r\n}\r\n\r\nconst OraculoCarouselDots: React.FC<OraculoCarouselDotsProps> = ({\r\n total,\r\n active,\r\n onSelect,\r\n className = \"\",\r\n}) => {\r\n if (total <= 1) return null;\r\n\r\n const rootClass = [\"orc-dots\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={rootClass} role=\"tablist\">\r\n {Array.from({ length: total }).map((_, i) => (\r\n <span key={i} className=\"orc-dots__cell\">\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={i === active}\r\n aria-label={`Ir al slide ${i + 1}`}\r\n className={\r\n \"orc-dots__dot\" +\r\n (i === active ? \" orc-dots__dot--active\" : \"\")\r\n }\r\n onClick={() => onSelect?.(i)}\r\n />\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default OraculoCarouselDots;\r\n","import React, { ReactNode } from \"react\";\r\n\r\nexport interface OraculoGridGroupProps {\r\n /** Children inside the grid */\r\n children: ReactNode;\r\n\r\n /** Minimum width (in px) for auto-fit columns */\r\n minWidth?: number;\r\n\r\n /** Gap spacing: number → multiplier of 8px, or string → custom CSS value */\r\n spacing?: number | string;\r\n\r\n /** Horizontal alignment of grid items */\r\n justify?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n\r\n /** Custom grid template definition (overrides auto-fit/minmax behavior) */\r\n columns?: string | null;\r\n}\r\n\r\nexport default function OraculoGridGroup({\r\n children,\r\n minWidth = 32,\r\n spacing = 2,\r\n justify = \"stretch\",\r\n columns = null,\r\n}: OraculoGridGroupProps) {\r\n const gridTemplate = columns\r\n ? columns\r\n : `repeat(auto-fit, minmax(${minWidth}px, 1fr))`;\r\n\r\n const gap = typeof spacing === \"number\" ? `${spacing * 8}px` : spacing;\r\n\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplate,\r\n justifyItems: justify,\r\n gap,\r\n height: \"inherit\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\n\r\nexport type Logo = { src: string; alt: string };\r\n\r\nexport default function OraculoLogoMediosPago({ src, alt }: Logo) {\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: { xs: 65, sm: 80, md: 120, lg: 160 }, // 65 en móvil, 80 en desktop\r\n height: { xs: 48, md: 96 }, // 48 en móvil, 96 en desktop\r\n display: \"inline-block\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={src}\r\n alt={alt}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTitle.module.css\";\r\n\r\ninterface OraculoEventTitleProps {\r\n title: string;\r\n subtitle?: string;\r\n}\r\n\r\nexport default function OraculoEventTitle({ title, subtitle }: OraculoEventTitleProps) {\r\n return (\r\n <div\r\n className={styles.contenedor}\r\n >\r\n <span\r\n style={{\r\n fontWeight: 700,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {title}\r\n </span>\r\n\r\n {subtitle && (\r\n <div\r\n className={styles.flexGroup}\r\n >\r\n <svg width=\"4\"height=\"4\"viewBox=\"0 0 5 5\"xmlns=\"http://www.w3.org/2000/svg\"style={{ flexShrink: 0 }}> <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"white\" /> </svg>\r\n <span className={styles.subtitle}>\r\n {subtitle}\r\n </span>\r\n <div></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\nexport interface OraculoEventStatusBadgeProps {\r\n /** Text inside the badge */\r\n text: string;\r\n\r\n /** Background color of the badge */\r\n color?: string;\r\n\r\n /** Text color */\r\n textColor?: string;\r\n}\r\n\r\nexport default function OraculoEventStatusBadge({ text, color = \"#ff3b3b\", textColor = \"#fff\" } : OraculoEventStatusBadgeProps) {\r\n return (\r\n <span\r\n className=\"oli-font\"\r\n style={{\r\n backgroundColor: color,\r\n color: textColor,\r\n borderRadius: \"8px\",\r\n padding: \"4px 8px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n fontWeight: 700,\r\n width : '41px',\r\n height : '16px',\r\n textAlign: 'center',\r\n }}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventStatusBadge from \"./OraculoEventStatusBadge\";\r\n\r\nexport interface OraculoEventStatusProps {\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoEventStatus({ live, time } : OraculoEventStatusProps) {\r\n return (\r\n <div className=\"oli-font\" style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\r\n {live && <OraculoEventStatusBadge text=\"En vivo\" />}\r\n {time && <span style={{ fontSize: \"14px\", fontWeight: 400, lineHeight: '18px', paddingTop: '4px' }}>{time}</span>}\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventTitle from \"./OraculoEventTitle\";\r\nimport OraculoEventStatus from \"./OraculoEventStatus\";\r\n\r\nexport interface OraculoMatchHeaderProps {\r\n title: string;\r\n subtitle?: string;\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoMatchHeader({ title, subtitle, live = false, time = \"\" } : OraculoMatchHeaderProps) {\r\n return (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n color: '#FFFFFF'\r\n }}\r\n >\r\n <OraculoEventTitle title={title} subtitle={subtitle} />\r\n <OraculoEventStatus live={live} time={time} />\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLabel.module.css\";\r\ninterface OraculoEventLabelProps {\r\n text: string;\r\n}\r\nexport default function OraculoEventLabel({ text } : OraculoEventLabelProps) {\r\n return <span className={styles.label}>{text}</span>;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLeague.module.css\";\r\ninterface EventLeague {\r\n title: string;\r\n}\r\nexport default function OraculoEventLeague({ title } : EventLeague) {\r\n return (\r\n <div className={styles.container}>\r\n {title.toUpperCase()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventScore.module.css\";\r\n\r\nexport interface OraculoEventScoreProps {\r\n text: string | number;\r\n\r\n name?: string;\r\n\r\n size?: \"normal\" | \"small\";\r\n}\r\n\r\nexport default function OraculoEventScore({ text, name, size = \"normal\" } : OraculoEventScoreProps) {\r\n return (\r\n <div\r\n className={`${styles.scoreWrapper} ${styles[size]}`}\r\n >\r\n <div className={`${styles.score} ${styles[size]}`}>{text}</div>\r\n {name && <span className={`${styles.name} ${styles[size]}`}>{name}</span>}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoTeamPolo.module.css\";\r\n\r\ninterface JerseyPlayer {\r\n base: string;\r\n sleeve?: string; // optional\r\n stripes?: string;\r\n sleevelong?: string;\r\n real?: boolean;\r\n}\r\n\r\nexport default function OraculoTeamPolo({ jersey, className }: { jersey: JerseyPlayer, className?:string }) {\r\nconst base = `#${jersey.base}`;\r\nconst sleeve = jersey.sleeve ? `#${jersey.sleeve}` : base;\r\nconst stripes = jersey.stripes ? `#${jersey.stripes}` : null;\r\nconst sleevelong = jersey.sleevelong ? `#${jersey.sleevelong}` : null;\r\n\r\n return (\r\n <div className={`${styles.polo} ${className ?? \"\"}`}>\r\n {/* BODY */}\r\n <div className={styles.svgWrapper}>\r\n <svg viewBox=\"0 0 656 656\" aria-hidden>\r\n {/* BASE / BODY */}\r\n <path\r\n fill={base}\r\n d=\"m62 265 5.8-17c-.4-.7-.6-1.5-.4-2 .2-.7.8-1.2 1.2-1.4l1.2-4 9-21.6c.2-1 1-3.5 2.4-6.4a69.9 69.9 0 0 1 4.1-17.2l2.9-7 2.9-11.4c1.7-5.8 5.2-18.4 5.8-22 .6-3.6 6.8-19 9.8-26.2.4-.9 2.4-4.7 7.2-12.8 5.4-12.2 23.5-27.2 32-33.1l6.6-3.7 7.9-3.6 17.3-6.2 16.6-7.1L215 52c7-4.1 21.8-12.5 24.1-13.2 2.3-.8 5-3.5 6-4.7 1.2-1.2 4.2-3.8 6.6-4.7 2.3-1 8.2-6.8 10.8-9.6 1.6-1.4 3.8-4.7 9.2-7.5 5.3-2.9 20.4-4 27.2-4.3h25.6l16.7.3 14.1.6 10.3.7 9.5 1.7c6.4.6 12.6 4.3 15.4 8l2.7 3.1 8.9 8 1.8.7 4.9 3 2.7 3.5c4.2 2.2 13.1 7.1 15.2 8.7 2 1.6 30.1 15.4 44 22 8 3.2 39 12.3 55.3 30 5.2 4.3 7 7.8 11.4 12.4 5.1 5.3 15.1 29 16.9 32 1.4 2.6 5 17 6.8 24l4.8 20.5 8.4 29 8.9 22.7 2.3 5.4.6 1.5c.5.6 1.4 2 1 2.6-.2.6 0 2 .2 2.7l1 2.6 2 5.8 2.2 5.9c.3 1.3-4.3 4-6.6 5.2l-11.1 5-12.6 4.7-15 5-14.6 4.6-10.9 2.4a66 66 0 0 1-8.6 1.4c-3.4.3-4.7-.4-4.9-.8l-5-12.3-1.9-3.8-1.8-1.6.1-.8v-1l-.4-1.8-1.3-4.1-3.3-9-1.3-2-2.2-5.7-2.5-.3-1 .8v2l-2.7 13.1-8.7 58-.9 6.4-.2 7.9c0 3-1 16-1.7 18.3l-2.5 9-.2 7.6-.3 8.7-.3 7.5.3 4 .5 15c.3 1.9-.6 7-1.1 9.3-.6 2.4-1.6 7.5-1.4 8.8.3 1.4-.2 4.4-.5 5.8l-1.3 8.9c-.2 1.4-.8 5-1.3 7.2.7 1.6 4.7 14.6 5.9 17.8 1.2 3.3 4.8 19.4 5 20.7.3 1 1.1 7.8 1.5 11 .1 2.5.3 8 .2 10 0 2-.8 6.6-1.1 8.6-.2 1.7-.7 5.5-1.2 7s-1.2 8.5-1.4 11.8A81.1 81.1 0 0 1 477 552l.3 7.1.2 6.5 1.4 17.7.5 6 1.5 7.7.4 4.6c.3 2.1.7 7 .7 10.1.3 3-2.5 6-4 7 0 .2-1.2 1-4.6 3-6.4 5-26.3 11.6-35.5 14.3a379.2 379.2 0 0 1-58.6 11.2c-2.3.8-27 2.2-39 2.7-8.3 0-27 0-34.5-.4-11.5.9-47.4-4.8-63.9-7.7-6.3-.9-42.1-10.4-48-14.4-3.7-2.4-14.3-8-16.9-9.7a10.7 10.7 0 0 1-4.1-5.4c-.3-1 .1-8.6.4-12.3l.6-5 1.4-9.6 1-8 .3-4.3-.4-7.7-1-10.8v-13.8l.7-10 1.1-7.7 1.8-8 2.8-9.5 3.3-9.3a78 78 0 0 1-2.5-20.8 1112.2 1112.2 0 0 1 .6-14.1c-.1-.7 2.1-10.2 3.3-15l1-3.8-.1-.8c-1.4-8.3-1.5-14-1.9-15.4a78 78 0 0 1 .4-10.9l2-6.7.4-2-.4-1.5a67.6 67.6 0 0 1-7.3-27l-.2-7.7.5-5.4.3-1.5.4-3.9.7-5 .2-2.2-.2-.4-.3-6-1-3.1-.3-4-.7-7.6-1.5-8.3-.8-4.2-1.4-9.2-.4-4.3L172 279l-2.2-14.6a545 545 0 0 1-1.7-8.5c-.1-1-2-2.1-3-2.6 0 .6-.6 1.5-1.7 2-1.2.7-2.4 1.3-2.7 2.2l-.8 4.7a15 15 0 0 1-2.5 4.1 16.4 16.4 0 0 0-2.6 6.3l-.3 2.4v1.3l-1.4 1.1-.3.3-6 14.5c-.7 2.3-1.3 1.8-1.9 1.5l-10.5-3.1-9-3-18.3-6-20-6.8-13-4.8c-2.1-1-7-3-9.4-3.8-2.5-.8-3-1.3-2.8-1.4Z\"\r\n />\r\n\r\n {stripes && (\r\n <>\r\n <path fill={stripes} d=\"m153 277.8-5.8 14.5c-1 2.8-2.5 1.4-4.6.7l-2-.5-7.8-2.4-15.6-5-19-6.5-16-5.7-12-4.4-5.5-2.2c-3.5-1.1-3.1-1.2-1.9-4l1.8-4.9 3.2-9.3c-1.1-1.9 0-3.1.8-3.5l.2-.7.5-2 4.3-10.3 2.4-6 2.6-6.2.8-2.6 1.7-4.1v-.4l.3-2.6.6-3.4 1-3.5 1-3.8c.1-.9 2-5.6 3-7.8l.7-1.5.7-2 .9-3.6 3.4-12.6 2.4-8.6 2.7-11.2 3.5-9.6 3.6-9.4 3-6 2-4.1 3.6-5.8 2.2-4.3 3-4.4 3.2-3.9 1.7-1.9 3.6-3.6 3-2.9a109.3 109.3 0 0 1 13.3-11.2l1.2-.8a79.3 79.3 0 0 1 18-9l11.4-4.2 4-1.4 6.3-2.7 3.3-1.4 2.8-1.2 4-1.6 3.9-2.1 10.1-5 4.8-2.4 5.7-3.2 13.8-7.7c1.5-.8 4.7-2.7 6-3a8.5 8.5 0 0 0 3-1.8c3.4-2.5 4.5-4.8 6-5.3.4-.4 2-1.6 5.2-3.2-4.4 3.3-3.2 11-2.1 14.6a77 77 0 0 0 8.7 18.8l-.6.4-3.9 2-9 5-6.6 3.7-10 3.2c-4.3.8-13.2 2.4-14.4 2.8-1.2.3-10.2 4-14.5 5.8l-11.8 5.6-8.8 3.2-12 3.4-19 8.7c-5.8 1.4-19.3 14.2-25.3 20.4L122 128l.3.4 6.6 16.6 10.5 22.6 6.2 10.8c2.9 3 8.7 9.7 9.1 11.7.5 2 4.3 5.1 6.1 6.5.2.8.8 3.1 1.7 5.4-3.2 4.8-.4 10.6 1.4 12.9l1 4.6.3 6.5-.5 1c-1.4 1.4-.3 4 .4 5l.1 3c.5 1.4 1.3 4.2.8 5.2s0 2.7.3 3.4v4.9c-3.1.5-2 3.7-1 5.2-.5.7-1.8 2.2-3.2 2.7-1.4.5-1.8 3.6-1.8 5.2a9 9 0 0 1-2.7 4.7c-1.8 1.6-2.8 7.4-3 10.1l-1.6 1.5ZM403.8 31.1l-1.6-.7c1.2 1 2 2.2 2.8 4 1.8 2.8.6 8-.7 12.2a78 78 0 0 1-7.6 17l.5.2 3.3 1.5 5.4 3.3 5.9 3 7.2 3 8.2 2.2c.7.2 3.3 1 8.4 2 5.5.1 21.1 8 28.2 11.8l14 4.5a517 517 0 0 1 23.8 9.3c6.3.5 24.7 17 33.1 25.2l-4.6 11.6-8.2 19.3-3.8 9-5.2 8.6c-2.2 3.2-7.3 10.2-9.4 12.4-1.3-.3-5.6 4.4-7.6 6.7.3 2 .6 6.7-1.4 9.1-2 2.5-1.8 6.9-1.4 8.7.3.8.5 3-1 5.3-1.4 2.4-1 4-.5 4.5-.2.8-.7 2.5-1.4 3.4-.8.8-.4 3.3 0 4.5l.1 3-.1 2.2c-.2.6-.6 2.6-1.1 6.2 3.6 3.3 1.3 5.7-.3 6.5l2.2.3 1.3 2.7 1.5 3.8 1.1 2.3 2.7 7.1 1.6 4.8.3 2.1v1.6l1.9 1.9 4 8.9 1.8 4.5c.5 4 5.5 3.6 8 3l5.9-1.1 7.3-1.7 5.2-1.2 7.3-2.1 8.3-2.7 7.5-2.5 9.8-3.6 8-3 6.3-2.8 3.4-1.6 3-1.3 2.5-1.6 1-.8c1.9-1 2-2.1 1.6-2.9l-.6-1.7-1-2.7-1.6-4.2-1.4-4-.5-1.4-.1-.7v-1.2c.7-1-.4-2.5-1-3v-.2l-1-2-2.4-6-3.3-8.3-2.3-6a3896.4 3896.4 0 0 0-3.1-8.4l-2.2-7.1-1.5-5.7-2.5-8.9-1-3.1-1.2-4.5-2-8.2-2.2-9.3-2.8-11.4-2.6-9.1-.9-3c0-.3-.6-1.5-1-2l-2.5-5.6-3-6.6-5.7-11.3-2.5-4.3-2.3-3.3-.7-.7-4.3-5-3-3.8a73 73 0 0 0-4.2-3.8c-1.1-2-7.6-7-10.8-9.4-6.2-5-23.4-12.8-34-16.7l-11-4-16-7.9-20.1-10-7.1-3.8-2.4-1.5-13-7.3-2.6-3.4-5-3Z\" />\r\n <path fill={stripes} d=\"M292.1 648.8c-15.7-1.4-37.7-5-49.7-7.1-4.3-.6-22.6-5.3-35.5-9.5 1.5-10 3-21 4.3-32.7 7-60.5 4.8-132.8 3.1-185.6l-.9-32c-1-49-2.4-83.5-3.6-112-1.2-29-2.1-51.7-2.1-77 0-29 2.9-77.3 5.3-112.9l2.6-1c1.3-.3 10.1-2 14.4-2.7l10-3.2 6.6-3.7 9-5 4-2 .5-.3c1.2 2 2.6 4.1 3.4 4.8l6.1 7.8 15 14.6 4.8 4c-.6 26.4-1.1 60.6-1.1 100.1 0 59.3 1.1 82.6 2.7 114.6.9 18.8 2 40.7 3 74.9 1.5 48.3.8 98.4 0 148.6l-.8 68.3c0 13-.6 32.8-1.1 49Zm157.5-16.4-11.2 3.6a379.2 379.2 0 0 1-67 12c.2-11 .3-25.6.3-44.6 0-49.2-1.2-74.9-2.4-99.5-1.3-27.2-2.5-53-2-107.5.6-50.4 1.7-81.5 2.6-109.3 1-29.3 1.8-54.9 1.8-95.6 0-35.5-.6-70.6-1.2-98.6l3.6-3 5.3-5.1 3.5-3.6 3.5-3.4 4-5 4.2-5.3 2.7-4 .5.3 3.2 1.5 5.5 3.3 5.8 3 7.3 3 8.1 2.2c.7.2 3.3 1 8.4 2 2.4 0 6.5 1.5 11 3.4 2.6 29 5.2 68 5.2 107.8 0 41.5-1.6 70.2-3.2 102-1.6 28.7-3.3 60-4 105.6-.7 41.1.4 82.5 1.4 124.4.7 25.7 1.4 51.6 1.6 77.8a435 435 0 0 0 1.5 32.6Z\" />\r\n </>\r\n )}\r\n\r\n {sleevelong && (\r\n <>\r\n <path fill={sleevelong} d=\"m153 277.8-5.8 14.5c-1 2.8-2.5 1.4-4.6.7l-2-.5-7.8-2.4-15.6-5-19-6.5-16-5.7-12-4.4-5.5-2.2c-3.5-1.1-3.1-1.2-1.9-4l1.8-4.9 3.2-9.3c-1.1-1.9 0-3.1.8-3.5l.2-.7.5-2 4.3-10.3 2.4-6 2.6-6.2.8-2.6 1.7-4.1v-.4l.3-2.6.6-3.4 1-3.5 1-3.8c.1-.9 2-5.6 3-7.8l.7-1.5.7-2 .9-3.6 3.4-12.6 2.4-8.6 2.7-11.2 3.5-9.6 3.6-9.4 3-6 2-4.1 3.6-5.8 2.2-4.3 3-4.4 3.2-3.9 1.7-1.9 3.6-3.6 3-2.9a109.3 109.3 0 0 1 13.3-11.2l1.2-.8a79.3 79.3 0 0 1 18-9l11.4-4.2 4-1.4 6.3-2.7 3.3-1.4 2.8-1.2 4-1.6 3.9-2.1 10.1-5 4.8-2.4 5.7-3.2 13.8-7.7c1.5-.8 4.7-2.7 6-3a8.5 8.5 0 0 0 3-1.8c3.4-2.5 4.5-4.8 6-5.3.4-.4 2-1.6 5.2-3.2-4.4 3.3-3.2 11-2.1 14.6a77 77 0 0 0 8.7 18.8l-.6.4-3.9 2-9 5-6.6 3.7-10 3.2c-4.3.8-13.2 2.4-14.4 2.8-1.2.3-10.2 4-14.5 5.8l-11.8 5.6-8.8 3.2-12 3.4-19 8.7c-5.8 1.4-19.3 14.2-25.3 20.4L122 128l.3.4 6.6 16.6 10.5 22.6 6.2 10.8c2.9 3 8.7 9.7 9.1 11.7.5 2 4.3 5.1 6.1 6.5.2.8.8 3.1 1.7 5.4-3.2 4.8-.4 10.6 1.4 12.9l1 4.6.3 6.5-.5 1c-1.4 1.4-.3 4 .4 5l.1 3c.5 1.4 1.3 4.2.8 5.2s0 2.7.3 3.4v4.9c-3.1.5-2 3.7-1 5.2-.5.7-1.8 2.2-3.2 2.7-1.4.5-1.8 3.6-1.8 5.2a9 9 0 0 1-2.7 4.7c-1.8 1.6-2.8 7.4-3 10.1l-1.6 1.5ZM403.8 31.1l-1.6-.7c1.2 1 2 2.2 2.8 4 1.8 2.8.6 8-.7 12.2a78 78 0 0 1-7.6 17l.5.2 3.3 1.5 5.4 3.3 5.9 3 7.2 3 8.2 2.2c.7.2 3.3 1 8.4 2 5.5.1 21.1 8 28.2 11.8l14 4.5a517 517 0 0 1 23.8 9.3c6.3.5 24.7 17 33.1 25.2l-4.6 11.6-8.2 19.3-3.8 9-5.2 8.6c-2.2 3.2-7.3 10.2-9.4 12.4-1.3-.3-5.6 4.4-7.6 6.7.3 2 .6 6.7-1.4 9.1-2 2.5-1.8 6.9-1.4 8.7.3.8.5 3-1 5.3-1.4 2.4-1 4-.5 4.5-.2.8-.7 2.5-1.4 3.4-.8.8-.4 3.3 0 4.5l.1 3-.1 2.2c-.2.6-.6 2.6-1.1 6.2 3.6 3.3 1.3 5.7-.3 6.5l2.2.3 1.3 2.7 1.5 3.8 1.1 2.3 2.7 7.1 1.6 4.8.3 2.1v1.6l1.9 1.9 4 8.9 1.8 4.5c.5 4 5.5 3.6 8 3l5.9-1.1 7.3-1.7 5.2-1.2 7.3-2.1 8.3-2.7 7.5-2.5 9.8-3.6 8-3 6.3-2.8 3.4-1.6 3-1.3 2.5-1.6 1-.8c1.9-1 2-2.1 1.6-2.9l-.6-1.7-1-2.7-1.6-4.2-1.4-4-.5-1.4-.1-.7v-1.2c.7-1-.4-2.5-1-3v-.2l-1-2-2.4-6-3.3-8.3-2.3-6a3896.4 3896.4 0 0 0-3.1-8.4l-2.2-7.1-1.5-5.7-2.5-8.9-1-3.1-1.2-4.5-2-8.2-2.2-9.3-2.8-11.4-2.6-9.1-.9-3c0-.3-.6-1.5-1-2l-2.5-5.6-3-6.6-5.7-11.3-2.5-4.3-2.3-3.3-.7-.7-4.3-5-3-3.8a73 73 0 0 0-4.2-3.8c-1.1-2-7.6-7-10.8-9.4-6.2-5-23.4-12.8-34-16.7l-11-4-16-7.9-20.1-10-7.1-3.8-2.4-1.5-13-7.3-2.6-3.4-5-3Z\" />\r\n </>\r\n )}\r\n\r\n {/* COLLAR */}\r\n <path\r\n fill={sleeve}\r\n fillRule=\"evenodd\"\r\n d=\"m262.9 19.6-3.7 3.8-3.5 3.3-2.7 2.1c-2 1.6-5 5.7-1 17.1 4 9.8 5.2 12 5.3 11.9 1.4 2.5 4.4 7.9 5.9 9.1l6 7.8 15 14.6 10.5 8.7 12.6 11.3 8.3 6.2 7.6.6 17 .8 9.2-6.6 7-5.6 10.3-9 7-5.7 5.3-5.2 3.6-3.6 3.4-3.4 4.2-5 4-5.3 2.7-4C403.5 53 407 40 406 37.3c0-1.3-.9-4.6-3.9-7.2A129 129 0 0 1 391.2 20c-.8-1.1-4.2-4.3-7.3-6a52 52 0 0 0-15.3-3.9L353.5 9l-10.2-.4-15.4-.4H301.6c-4.6.2-14.6.6-17.2 1.2l-3.4.6c-3.2.5-6.9 1-8.4 2l-1.4.8c-1.5.7-2.8 1.4-5 3.7l-3.3 3.2Zm4.3 14 1.9 5.5 4.6 8.2 5 6.7 5.3 6.6 11 10.7 10.8 9.8 12.8 11.7 7.4 7 3 3 15-13.3 16.7-15.7 6.7-6.2 6-6.6a104.1 104.1 0 0 0 13.8-19.6c1-1.9 1.8-4.5 2-5.6 2.7-7.9 1.4-13.8-1.5-17.8-4-5.2-14.9-6.6-18.5-7.1h-.7c-13.8-1.9-39.8-2-46-1.9-9-.2-28.1.2-32.5.7-.6 0-1.2 0-1.9.2-6.8.6-19.9 1.9-22.6 10.6a22.6 22.6 0 0 0 .9 10.3l.8 2.9Z\"\r\n />\r\n\r\n {/* LEFT SLEEVE */}\r\n <path\r\n fill={sleeve}\r\n d=\"m74.8 250.8-6.8-2.7-.3.7-3 8.7-2 5.7c-1 2.2-.5 1.9.1 2.3l2.2 1 8.8 3.3 10.4 3.8 10.7 3.8 14.3 4.8 13 4.3 7 2.3 13.8 4.3c2.2.7 3 1.4 3.8 0l6.3-15.6-4.6-1.8a88 88 0 0 1-9.4-3c-.8-.6-11.8-3.7-17.3-5.4l-7-2.4-13-4.3c-3.2-1.3-9.9-3.8-11-4-1.2-.2-11-3.8-16-5.8Z\"\r\n />\r\n\r\n {/* RIGHT SLEEVE */}\r\n <path\r\n fill={sleeve}\r\n d=\"m505 284.5-3.5-7.5c.2-.2 1.2-.4 3 0 1.6.4 11.3-1.7 16-2.7l22.5-6.6 13.7-4.5 16.8-6.7a90 90 0 0 0 13.7-7.7v1l.6 2 1.9 5.5 2.9 7.8c.6 1.6-5.5 4.8-8.6 6.3l-17 7.2-15.3 5.4-13 4.2-13 3.3-9.9 2c-6.8 1.2-7.2-.4-8-2l-2.7-7Z\"\r\n />\r\n\r\n </svg>\r\n\r\n \r\n </div>\r\n\r\n {/* SHADOW */}\r\n <img\r\n src=\"https://widgets.sir.sportradar.com/assets/media/shadow.7a42eb6e.png\"\r\n className={styles.shadow}\r\n alt=\"\"\r\n aria-hidden\r\n />\r\n\r\n {/* HIGHLIGHT */}\r\n <img\r\n src=\"https://widgets.sir.sportradar.com/assets/media/highlight.b1ac6c3e.png\"\r\n className={styles.highlight}\r\n alt=\"\"\r\n aria-hidden\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTeamInfo.module.css\";\r\nimport OraculoTeamPolo from \"./OraculoTeamPolo\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport { Jersey } from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n jersey?: Jersey | null; \r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, jersey , size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n {jersey?.base ? (\r\n <OraculoTeamPolo\r\n jersey={jersey} className={`${styles.logo}`}\r\n />\r\n ) : (\r\n <Skeleton variant=\"circular\" className={`${styles.logo} ${styles.skeleton}`} />\r\n )}\r\n <span className={styles.name}>{name}</span>\r\n </div>\r\n );\r\n}","import { useEffect, useRef } from \"react\";\r\n\r\nexport function useHorizontalWheelSplide(\r\n hostRef: React.RefObject<HTMLElement>,\r\n splideRef: React.RefObject<any>,\r\n { enabled = true }: { enabled?: boolean } = {}\r\n) {\r\n const rafRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n if (!enabled) return;\r\n\r\n const host = hostRef.current;\r\n if (!host) return;\r\n\r\n const onWheel = (e: WheelEvent) => {\r\n const splide = splideRef.current;\r\n if (!splide || !splide.go) return;\r\n\r\n const { deltaX, deltaY } = e;\r\n\r\n // 🧠 Detect horizontal intent ONLY\r\n if (Math.abs(deltaX) <= Math.abs(deltaY)) {\r\n // vertical scroll → allow normal page scrolling\r\n return;\r\n }\r\n\r\n // Ignore tiny horizontal noise\r\n if (Math.abs(deltaX) < 2) return;\r\n\r\n // We handle horizontal → stop native scroll\r\n e.preventDefault();\r\n\r\n const direction = deltaX > 0 ? \">\" : \"<\";\r\n\r\n // Throttle to one navigation per frame\r\n if (rafRef.current !== null) return;\r\n\r\n rafRef.current = requestAnimationFrame(() => {\r\n rafRef.current = null;\r\n splide.go(direction);\r\n });\r\n };\r\n\r\n host.addEventListener(\"wheel\", onWheel, { passive: false });\r\n\r\n return () => {\r\n host.removeEventListener(\"wheel\", onWheel);\r\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\r\n };\r\n }, [enabled, hostRef, splideRef]);\r\n}\r\n","// src/molecules/OraculoCarousel/OraculoCarousel.tsx\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useImperativeHandle,\r\n useRef,\r\n ReactNode,\r\n} from \"react\";\r\nimport {\r\n Splide as SplideRaw,\r\n SplideSlide as SplideSlideRaw,\r\n} from \"@splidejs/react-splide\";\r\n\r\nimport {useHorizontalWheelSplide} from \"./useHorizontalWheelSplide\";\r\n\r\nexport interface OraculoCarouselOptions {\r\n type?: string;\r\n perPage?: number;\r\n gap?: string;\r\n pagination?: boolean;\r\n arrows?: boolean;\r\n drag?: boolean;\r\n focus?: string | \"center\";\r\n autoWidth?: boolean;\r\n trimSpace?: any;\r\n rewind?: boolean;\r\n padding?: { left?: string; right?: string };\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface OraculoCarouselRef {\r\n next: () => void;\r\n prev: () => void;\r\n go: (index: number | string) => void;\r\n}\r\n\r\nexport interface OraculoCarouselProps<T = any> {\r\n items: T[];\r\n renderItem: (item: T, index: number) => ReactNode;\r\n perPage?: number;\r\n gap?: string;\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n options?: OraculoCarouselOptions;\r\n className?: string;\r\n useIndexAsKey?: boolean;\r\n onMove?: (info: {\r\n index: number;\r\n isStart: boolean;\r\n isEnd: boolean;\r\n total: number;\r\n visibleEnd: number;\r\n visibleStart: number;\r\n }) => void;\r\n enableHorizontalWheel?: boolean;\r\n}\r\n\r\n// 👇 Aislamos tipos de Splide: internamente es any, hacia afuera tu API está tipada\r\nconst Splide: any = SplideRaw;\r\nconst SplideSlide: any = SplideSlideRaw;\r\n\r\nconst OraculoCarousel = forwardRef<OraculoCarouselRef, OraculoCarouselProps<any>>(\r\n (\r\n {\r\n items = [],\r\n renderItem,\r\n perPage = 1,\r\n gap = \"0px\",\r\n breakpoints,\r\n options = {},\r\n className = \"\",\r\n onMove,\r\n useIndexAsKey = false,\r\n enableHorizontalWheel = true,\r\n },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\r\n const wheelHostRef = useRef<HTMLDivElement>(null);\r\n const prevLengthRef = useRef(items.length);\r\n\r\n useHorizontalWheelSplide(wheelHostRef, splideRef, {\r\n enabled: enableHorizontalWheel,\r\n });\r\n useImperativeHandle(ref, () => ({\r\n next: () => splideRef.current?.go(\">\"),\r\n prev: () => splideRef.current?.go(\"<\"),\r\n go: (index) => splideRef.current?.go(index),\r\n }));\r\n\r\nconst getVisibleRange = (splide: any) => {\r\n const Slides = splide.Components.Slides;\r\n const Controller = splide.Components.Controller;\r\n const track = splide.root.querySelector(\".splide__track\");\r\n\r\n const trackWidth = track?.clientWidth ?? 0;\r\n const visibleStart = Controller.getIndex();\r\n const total = Slides.getLength();\r\n\r\n let currentWidth = 0;\r\n let visibleEnd = visibleStart;\r\n\r\n for (let i = visibleStart; i < total; i++) {\r\n const slide = Slides.getAt(i);\r\n if (!slide) break;\r\n\r\n // use offsetWidth (cheaper than getBoundingClientRect)\r\n currentWidth += slide.slide.offsetWidth;\r\n\r\n if (currentWidth > trackWidth) break;\r\n visibleEnd = i;\r\n }\r\n\r\n return { visibleStart, visibleEnd };\r\n};\r\nconst hasOverflow = (splide: any) => {\r\n const track = splide.root.querySelector(\".splide__track\");\r\n const list = splide.root.querySelector(\".splide__list\");\r\n\r\n if (!track || !list) return false;\r\n\r\n return list.scrollWidth > track.clientWidth + 1;\r\n};\r\n\r\nconst handleMove = useCallback((splide: any) => {\r\n const slides = splide.Components.Slides;\r\n const total = slides.getLength();\r\n\r\n // NO SCROLL POSSIBLE\r\n if (!hasOverflow(splide)) {\r\n onMove?.({\r\n index: 0,\r\n isStart: true,\r\n isEnd: true,\r\n total,\r\n visibleStart: 0,\r\n visibleEnd: total - 1,\r\n });\r\n return;\r\n }\r\n\r\n const { visibleStart, visibleEnd } = getVisibleRange(splide);\r\n\r\n const isStart = visibleStart === 0;\r\n const isEnd = visibleEnd === total - 1;\r\n\r\n const index = splide.Components.Controller.getIndex();\r\n\r\n onMove?.({\r\n index,\r\n isStart,\r\n isEnd,\r\n total,\r\n visibleStart,\r\n visibleEnd,\r\n });\r\n}, [onMove]);\r\nReact.useEffect(() => {\r\n const splide = splideRef.current?.splide;\r\n if (!splide) return;\r\n\r\n const lengthChanged = prevLengthRef.current !== items.length;\r\n prevLengthRef.current = items.length;\r\n\r\n if (!lengthChanged) return;\r\n\r\n // let React commit DOM first\r\n requestAnimationFrame(() => {\r\n splide.refresh();\r\n handleMove(splide);\r\n });\r\n}, [items.length, handleMove]);\r\nconst handleResize = useCallback(() => {\r\n const splide = splideRef.current?.splide;\r\n if (!splide) return;\r\n\r\n splide.go(0, false); \r\n handleMove(splide);\r\n}, [handleMove]);\r\n const handleMounted = useCallback(\r\n (splide: any) => {\r\n handleMove(splide);\r\n },\r\n [handleMove]\r\n );\r\n\r\n const mergedOptions: OraculoCarouselOptions = {\r\n type: \"slide\",\r\n trimSpace: false,\r\n drag: true,\r\n pagination: false,\r\n arrows: false,\r\n rewind: false,\r\n focus: \"start\",\r\n autoWidth: false,\r\n perPage,\r\n gap,\r\n breakpoints,\r\n ...options,\r\n\r\n ...(enableHorizontalWheel ? { wheel: false } : {}),\r\n\r\n };\r\n\r\n return (\r\n <div ref={wheelHostRef} className={className} style={{ width: \"100%\" }}>\r\n <Splide\r\n ref={splideRef}\r\n options={mergedOptions}\r\n onMove={handleMove}\r\n onMounted={handleMounted}\r\n onResize={handleResize}\r\n >\r\n {items.map((item, index) => (\r\n <SplideSlide key={useIndexAsKey ? index : (item as any).id ?? index}>\r\n {renderItem(item, index)}\r\n </SplideSlide>\r\n ))}\r\n </Splide>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport default OraculoCarousel;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { OraculoButton } from \"../..\";\r\n\r\nexport interface OraculoGameCardProps {\r\n imageUrl: string;\r\n onClick?: () => void;\r\n size?: \"lg\" | \"sm\";\r\n fillParent?: boolean;\r\n}\r\n\r\nconst OraculoGameCard: React.FC<OraculoGameCardProps> = ({\r\n imageUrl,\r\n onClick,\r\n size = \"sm\",\r\n fillParent = false,\r\n}) => {\r\n const dim =\r\n size === \"lg\"\r\n ? { w: 280, h: 352 }\r\n : { w: 152, h: 168 };\r\n\r\n const handleButtonClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.stopPropagation();\r\n onClick?.();\r\n };\r\n\r\n const sizeStyles = fillParent\r\n ? { width: \"100%\", height: \"100%\" }\r\n : { width: `${dim.w}px`, height: `${dim.h}px` };\r\n\r\n return (\r\n <Box\r\n onClick={onClick}\r\n role=\"button\"\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"12px\",\r\n overflow: \"hidden\",\r\n boxSizing: \"border-box\",\r\n transition: \"transform .15s ease, box-shadow .15s ease\",\r\n ...sizeStyles,\r\n \"&:hover\": {\r\n transform: \"translateY(-2px)\",\r\n boxShadow: 8,\r\n cursor: \"pointer\",\r\n },\r\n \"&:hover .oraculo-game-card-overlay\": {\r\n opacity: 1,\r\n },\r\n \"&:hover .oraculo-game-card-btn\": {\r\n opacity: 1,\r\n transform: \"translate(-50%, -50%) scale(1)\",\r\n pointerEvents: \"auto\",\r\n },\r\n }}\r\n >\r\n <img\r\n src={imageUrl}\r\n alt=\"Juego de casino\"\r\n loading=\"lazy\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n borderRadius: \"inherit\",\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-overlay\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.45)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease\",\r\n pointerEvents: \"none\",\r\n zIndex: 1,\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-btn\"\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n zIndex: 2,\r\n transform: \"translate(-50%, -50%) scale(0.95)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease, transform .15s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <OraculoButton variant=\"primary\" size=\"md\" onClick={handleButtonClick}>\r\n Jugar\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\ntype SizeOpt = { w: number; h: number; r?: number; font?: number };\r\n\r\nexport interface OraculoGameRankCardSizes {\r\n xs: SizeOpt;\r\n md: SizeOpt;\r\n}\r\n\r\nexport interface OraculoGameRankCardProps {\r\n imageUrl: string;\r\n orden?: number;\r\n onClick?: () => void;\r\n sizes?: OraculoGameRankCardSizes;\r\n\r\n /** si true, muestra skeleton en vez de la card */\r\n loading?: boolean;\r\n}\r\n\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\r\n loading = false,\r\n sizes = {\r\n xs: { w: 104, h: 112, r: 18, font: 48 },\r\n md: { w: 186, h: 264, r: 22.6, font: 64 },\r\n },\r\n}: OraculoGameRankCardProps) {\r\n const getVal = <K extends keyof SizeOpt>(k: K, def: number) => ({\r\n xs: sizes.xs?.[k] ?? def,\r\n md: sizes.md?.[k] ?? def,\r\n });\r\n\r\n const W = getVal(\"w\", 186);\r\n const H = getVal(\"h\", 264);\r\n const R = getVal(\"r\", 22.6);\r\n const F = getVal(\"font\", 64);\r\n\r\n const hang = {\r\n xs: Math.round((sizes.xs?.font ?? 64) * 0.28),\r\n md: Math.round((sizes.md?.font ?? 64) * 0.28),\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },\r\n aspectRatio: {\r\n xs: `${W.xs}/${H.xs}`,\r\n md: `${W.md}/${H.md}`,\r\n },\r\n borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },\r\n boxSizing: \"border-box\",\r\n overflow: \"visible\",\r\n pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },\r\n\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n pointerEvents: \"none\",\r\n zIndex: 2,\r\n background:\r\n \"linear-gradient(21.29deg, #0B0D1B -1.16%, rgba(255,255,255,0) 51.92%, rgba(255,255,255,0) 127.62%)\",\r\n backgroundBlendMode: \"multiply\",\r\n },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {loading ? (\r\n <Skeleton\r\n variant=\"rectangular\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n sx={{\r\n bgcolor: \"rgba(255,255,255,0.10)\", // gris oscuro visible en fondo oscuro\r\n \"&::after\": {\r\n background:\r\n \"linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent)\",\r\n },\r\n }}\r\n />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\r\n />\r\n )}\r\n </Box>\r\n\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n position: \"absolute\",\r\n left: 8,\r\n bottom: {\r\n xs: `-${hang.xs}px`,\r\n md: `-${hang.md}px`,\r\n },\r\n fontFamily: \"secondary\",\r\n fontSize: {\r\n xs: `${F.xs}px`,\r\n md: `${F.md}px`,\r\n },\r\n lineHeight: 1,\r\n color: \"#3CC666\",\r\n WebkitTextStroke: \"1px #9ee86e\",\r\n zIndex: 3,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {orden}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\n\r\nexport interface OraculoLiveCasinoCardProps {\r\n logo: string;\r\n provider?: string;\r\n providerName?: string;\r\n machine?: number | string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst OraculoLiveCasinoCard: React.FC<OraculoLiveCasinoCardProps> = ({\r\n logo,\r\n provider,\r\n providerName,\r\n machine,\r\n onClick,\r\n}) => {\r\n return (\r\n <Box\r\n onClick={onClick}\r\n sx={{\r\n flex: \"0 0 auto\",\r\n position: \"relative\",\r\n borderRadius: \"20px\",\r\n overflow: \"hidden\",\r\n width: { xs: 100, md: 180 },\r\n height: { xs: 200, md: 380 },\r\n transition: \"width .50s ease, transform .28s ease\",\r\n willChange: \"width, transform\",\r\n cursor: \"pointer\",\r\n zIndex: 0,\r\n \"&:hover\": {\r\n zIndex: 2,\r\n width: { md: 260, xs: 110 },\r\n },\r\n \"&:hover .orc-live-provider-label\": {\r\n opacity: 1,\r\n },\r\n }}\r\n >\r\n {/* Imagen de fondo */}\r\n <Box\r\n component=\"img\"\r\n src={logo}\r\n alt={`Juego ${machine ?? \"\"}`}\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n\r\n {/* Label del provider */}\r\n <Box\r\n className=\"orc-live-provider-label\"\r\n sx={{\r\n position: \"absolute\",\r\n left: \"50%\",\r\n top: { xs: \"75%\", md: \"80%\" },\r\n transform: \"translate(-50%, -50%)\",\r\n zIndex: 3,\r\n opacity: 0,\r\n transition: \"opacity .25s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#fff\",\r\n fontWeight: 700,\r\n fontSize: { xs: 11, md: 14 },\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n {provider ?? providerName ?? \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoLiveCasinoCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: string;\r\n background?: string;\r\n}\r\n\r\nexport interface OraculoGameSlideProps {\r\n items: OraculoGameSlideItem[];\r\n layout?: \"mosaic\" | \"grid\";\r\n onClick?: (item: OraculoGameSlideItem, index: number) => void;\r\n\r\n /** si true, renderiza skeletons en vez de cards */\r\n loading?: boolean;\r\n\r\n /** cuantos skeletons en grid (default 4) */\r\n gridSkeletonCount?: number;\r\n}\r\n\r\nconst GAP = 12; // px\r\n\r\nconst SkCard = ({ r = 16 }: { r?: number }) => (\r\n <Box sx={{ width: \"100%\", height: \"100%\", borderRadius: r, overflow: \"hidden\" }}>\r\n <Skeleton\r\n variant=\"rectangular\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n sx={{\r\n bgcolor: \"rgba(255,255,255,0.10)\", // gris oscuro sobre fondo oscuro\r\n \"&::after\": {\r\n // opcional: brillo un poquito más visible\r\n background: \"linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent)\",\r\n },\r\n }}\r\n />\r\n </Box>\r\n);\r\n\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n loading = false,\r\n gridSkeletonCount = 4,\r\n}) => {\r\n // =========================\r\n // MOSAIC: 1 grande + 4 chicas\r\n // =========================\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\r\n // console.log(\"big: \", big);\r\n \r\n const smalls = items.slice(1, 5);\r\n\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gridTemplateColumns: {\r\n xs: `184px`,\r\n md: `280px`,\r\n },\r\n gridAutoFlow: \"column\",\r\n gridAutoColumns: {\r\n xs: `104px`,\r\n md: `152px`,\r\n },\r\n columnGap: `${GAP}px`,\r\n rowGap: `${GAP}px`,\r\n alignItems: \"stretch\",\r\n justifyItems: \"stretch\",\r\n }}\r\n >\r\n {/* BIG */}\r\n <Box\r\n sx={{\r\n width: { xs: 184, md: 280 },\r\n height: { xs: 234, md: 352 },\r\n gridRow: \"1 / span 2\",\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n big && (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.background ?? big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n )\r\n )}\r\n </Box>\r\n\r\n {/* SMALLS */}\r\n {(loading ? Array.from({ length: 4 }) : smalls).map((it: any, index: number) => (\r\n <Box\r\n key={loading ? `sk-${index}` : it.id}\r\n sx={{\r\n width: { xs: 104, md: 152 },\r\n height: { xs: 112, md: 168 },\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.background ?? it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n )}\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // =========================\r\n // GRID 2x2\r\n // =========================\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: `repeat(2, 104px)`,\r\n md: `repeat(2, 152px)`,\r\n },\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gap: `${GAP}px`,\r\n gridAutoFlow: \"column\",\r\n }}\r\n >\r\n {(loading ? Array.from({ length: gridSkeletonCount }) : items).map((it: any, index: number) => (\r\n <Box\r\n key={loading ? `sk-${index}` : it.id ?? index}\r\n sx={{ overflow: \"hidden\", borderRadius: 2 }}\r\n >\r\n {loading ? (\r\n <SkCard />\r\n ) : (\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.background ?? it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n )}\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameSlide;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoWelcomeBannerProps {\r\n title?: string;\r\n amount?: string; // ej: \"S/40\"\r\n subtitle?: string;\r\n buttonText?: string;\r\n onButtonClick?: () => void;\r\n backgroundImage?: string;\r\n alt?: string;\r\n className?: string;\r\n /** Tamaño en desktop: \"small\" (456x272) o \"large\" (618x346) */\r\n variant?: \"small\" | \"large\";\r\n}\r\n\r\nconst OraculoWelcomeBanner: React.FC<OraculoWelcomeBannerProps> = ({\r\n title,\r\n amount,\r\n subtitle,\r\n buttonText,\r\n onButtonClick,\r\n backgroundImage,\r\n alt,\r\n className = \"\",\r\n variant = \"small\",\r\n}) => {\r\n const symbol = amount ? amount.slice(0, 2) : \"\";\r\n const value = amount ? amount.slice(2) : \"\";\r\n const isLarge = variant === \"large\";\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: {\r\n xs: 328,\r\n md: isLarge ? 618 : 456,\r\n },\r\n mx: \"auto\",\r\n }}\r\n >\r\n {backgroundImage && (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n aspectRatio: {\r\n xs: \"328 / 188\",\r\n md: isLarge ? \"618 / 346\" : \"456 / 272\",\r\n },\r\n borderRadius: \"14px\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={backgroundImage}\r\n alt={alt ?? \"Fondo promocional\"}\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n objectPosition: {\r\n xs: \"50% 0%\",\r\n md: \"45% 0%\",\r\n },\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n {/* Capa de contenido */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n color: \"#e7f8ff\",\r\n textAlign: \"center\",\r\n pl: \"14%\",\r\n pr: { xs: \"14%\", lg: \"15%\" },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxWidth: \"60%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* Título superior */}\r\n {title && (\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 12, md: 20 },\r\n fontWeight: 400,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n )}\r\n\r\n {/* Monto */}\r\n {amount && (\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n fontFamily: '\"secondary\", sans-serif',\r\n lineHeight: { xs: 0.9, lg: 0.87 },\r\n m: \"4px 0\",\r\n background:\r\n \"linear-gradient(175deg, #EDC421 -12.56%, #FFFABF 17.99%, #EDC421 49.74%)\",\r\n WebkitBackgroundClip: \"text\",\r\n WebkitTextFillColor: \"transparent\",\r\n WebkitTextStroke: \"0.5px #fff8c1\",\r\n filter:\r\n \"drop-shadow(0px 4px 0px #8D4406) drop-shadow(0px 4px 4px rgba(28, 28, 28, 0.4))\",\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 35, md: 48 }, mr: 0.5 }}\r\n >\r\n {symbol}\r\n </Box>\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 52, md: 77 } }}\r\n >\r\n {value}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Subtítulo */}\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n pb: \"20px\",\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n\r\n {/* Botón */}\r\n {buttonText && (\r\n <OraculoButton onClick={onButtonClick}>\r\n {buttonText}\r\n </OraculoButton>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoWelcomeBanner;\r\n","import React from \"react\";\r\nimport \"../../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.css\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoClubOlimpoVisualProps {\r\n text: string;\r\n buttonLabel?: string;\r\n onClick?: () => void;\r\n\r\n // MOBILE\r\n imgAlt?: string;\r\n imgSrcMobile: string;\r\n\r\n // DESKTOP\r\n imgSrcDesktopBg?: string;\r\n imgSrcDesktopLogo?: string;\r\n}\r\n\r\nconst OraculoClubOlimpoVisual: React.FC<OraculoClubOlimpoVisualProps> = ({\r\n text,\r\n buttonLabel = \"Conoce más\",\r\n onClick,\r\n imgAlt = \"Club Olimpo\",\r\n imgSrcMobile,\r\n imgSrcDesktopBg,\r\n imgSrcDesktopLogo,\r\n}) => {\r\n return (\r\n <>\r\n {/* MOBILE */}\r\n <div className=\"orc-co-bgMobile\">\r\n <img\r\n src={imgSrcMobile}\r\n alt={imgAlt}\r\n className=\"orc-co-bgMobileImg\"\r\n />\r\n </div>\r\n\r\n {/* DESKTOP */}\r\n <div className=\"orc-co-bgDesktop\">\r\n {imgSrcDesktopBg && (\r\n <div className=\"orc-co-fillHost\">\r\n <img\r\n src={imgSrcDesktopBg}\r\n alt={`${imgAlt} fondo`}\r\n className=\"orc-co-bgDesktopImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Bloque izquierdo: LOGO + TEXTO + BOTÓN */}\r\n <div className=\"orc-co-desktopContent\">\r\n {imgSrcDesktopLogo && (\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n )}\r\n\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\r\n\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </div>\r\n\r\n {/* MOBILE: barra inferior */}\r\n <div className=\"orc-co-bottom\">\r\n <p className=\"orc-co-caption\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default OraculoClubOlimpoVisual;\r\n","import { useState, useEffect} from \"react\";\r\n\r\nexport function redirectHomeWithOutcomes(outcomes: number | number[]) {\r\n const arr = Array.isArray(outcomes) ? outcomes : [outcomes];\r\n sessionStorage.setItem(\"landingOutcomes\", JSON.stringify(arr));\r\n window.location.href = \"/deportes#in-play\";\r\n}\r\n\r\nexport function verMasSeccionEnVivo() {\r\n window.location.href = \"/deportes#in-play\";\r\n}\r\n\r\nexport function verMasSeccionSemana() {\r\n window.location.href = \"/deportes#sports-hub/football\";\r\n}\r\n\r\n\r\nexport function verMasSeccionCombinadas() {\r\n window.location.href = \"/deportes#specials\";\r\n}\r\n\r\nexport async function fetchJerseys(eventIds: number[]) {\r\n const res = await fetch(\"https://api.mktolimpo.com/api/jerseys/search\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n events: eventIds,\r\n }),\r\n });\r\n\r\n return await res.json();\r\n }\r\n\r\n\r\nexport function useDebouncedValue<T>(value: T, delay = 250): T {\r\n const [debounced, setDebounced] = useState(value);\r\n\r\n useEffect(() => {\r\n const id = setTimeout(() => setDebounced(value), delay);\r\n return () => clearTimeout(id);\r\n }, [value, delay]);\r\n\r\n return debounced;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventCombinadasCard.module.css\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { CombinadoEventProps, BetOffer} from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\nfunction processOutcome(event : any) {\r\n const apuestas = event.betoffers ?? [];\r\n const homeName = event.homeName;\r\n const awayName = event.awayName;\r\n\r\n const outcomes = apuestas.map((a : any) => {\r\n let best = a.outcomes[0];\r\n let value = \"\";\r\n\r\n let line = best?.line ? best.line / 1000 : \"\";\r\n \r\n if ([\"Más de\", \"Mas de\", \"Over\"].includes(best?.label)) {\r\n value = `Más de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n else if ([\"Menos de\", \"Menos\"].includes(best?.label)) {\r\n value = `Menos de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n \r\nelse if ([\"Sí\", \"No\"].includes(best?.label) ) {\r\n value = best?.label;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n}\r\n\r\n// ----- PRIORITY 3: DOUBLE CHANCE (1X, 12, X2) -----\r\nelse if ([\"1X\", \"12\", \"X2\"].includes(best?.label)) {\r\n \r\n if (best.label === \"1X\") {\r\n value = `${homeName} o Empate`;//event.participants?.[0]?.name || \r\n } else if (best.label === \"12\") {\r\n value = `${homeName} o ${awayName}`;\r\n } else if (best.label === \"X2\") {\r\n value = `${awayName} o Empate`;\r\n }\r\n\r\n}\r\n // ----- DEFAULT LOGIC -----\r\n else {\r\n if (best?.participant) value = best.participant;\r\n else value = best?.label ?? \"\";\r\n\r\n if (line !== \"\" && value === best.label) {\r\n value = `${best.label} ${line}`;\r\n }\r\n }\r\n\r\n return {\r\n id : best?.id ?? 0,\r\n value,\r\n label: a.criterion.label,\r\n odds: best?.odds ?? 0,\r\n bl: best?.label ?? 0,\r\n position: best?.position ?? 0,\r\n\r\n };\r\n });\r\n\r\n const total = outcomes.reduce((acc: any, o:any) => acc + o.odds, 0) / 1000;\r\n\r\n return {\r\n outcomes,\r\n total: total.toFixed(2),\r\n };\r\n}\r\nconst eventOutcomes = processOutcome(event)\r\n\r\n\r\n return (\r\n <div className={styles.card}>\r\n <div className={styles.combinadas}>\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n <OraculoSectionTitle \r\n title={event.name}\r\n iconUrl=\"/assets/img/home/Combinadas/pelota.png\"\r\n size=\"xs\" \r\n />\r\n <img loading=\"lazy\" src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].sort((a: any, b: any) => a.position - b.position).map((a :any, i : number) => {\r\n\r\n return (\r\n <div className={styles.apuestaItem} key={i}>\r\n <div className={styles.lineContainer}>\r\n <div className={styles.circle} />\r\n {i < eventOutcomes.outcomes.length - 1 && <div className={styles.line} />}\r\n </div>\r\n\r\n <div className={styles.apuestaText}>\r\n <strong>\r\n {a['value']}\r\n </strong>{\" \"}\r\n | {a['label']}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n <button onClick={() => redirectHomeWithOutcomes(eventOutcomes?.outcomes?.map((o : any) => o?.id) ?? []) } className={styles.cuotaTotal}>\r\n <span>\r\n Cuota total: <strong>{(((event as any)['combinadoTotal'] ?? 0 ) / 1000).toFixed(2)}</strong>\r\n </span>\r\n <img loading=\"lazy\" src=\"/assets/img/home/Combinadas/cuotaTotal.svg\" alt=\"cuota total\" />\r\n</button>\r\n </div>\r\n );\r\n}\r\n\r\n","import React from \"react\";\r\nimport styles from \"./OraculoButtonBet.module.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButtonBet({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n styles[\"orc-btn\"], // base\r\n styles[`orc-btn--${variant}`], // variant primary/secondary/tertiary\r\n size ? styles[`orc-btn--${size}`] : \"\", // sm / md / lg\r\n fullWidth ? styles[\"orc-btn--full\"] : \"\",\r\n fullHeight ? styles[\"orc-btn--fullHeight\"] : \"\",\r\n isIconOnly ? styles[\"orc-btn--iconOnly\"] : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className={styles[\"orc-btn__icon\"]}>{leftIcon}</span>}\r\n {!isIconOnly && (\r\n <span className={styles[\"orc-btn__label\"]}>{children}</span>\r\n )}\r\n {rightIcon && <span className={styles[\"orc-btn__icon\"]}>{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","export type Jersey = {\r\n base: string;\r\n sleeve: string;\r\n number: string;\r\n real: boolean;\r\n type: string;\r\n};\r\n\r\nexport type TeamSide = \"home\" | \"away\";\r\nexport type JerseyRole = \"player\" | \"GK\";\r\n\r\n\r\n const DEFAULT_HOME_JERSEY = {\r\n base: \"FFFFFF\",\r\n sleeve: \"FFFFFF\",\r\n number: \"000000\",\r\n real: false,\r\n type: \"short_sleeves\",\r\n};\r\n\r\nconst DEFAULT_AWAY_JERSEY = {\r\n base: \"000000\",\r\n sleeve: \"000000\",\r\n number: \"FFFFFF\",\r\n real: false,\r\n type: \"short_sleeves\",\r\n};\r\n\r\nexport type JerseyEvent =\r\n | {\r\n externalId?: number;\r\n jerseys?: {\r\n home?: {\r\n player?: Jersey;\r\n GK?: Jersey;\r\n };\r\n away?: {\r\n player?: Jersey;\r\n GK?: Jersey;\r\n };\r\n };\r\n }\r\n | null\r\n | undefined;\r\n\r\nexport const getTeamJersey = (\r\n jerseyEvent: JerseyEvent,\r\n side: TeamSide,\r\n role: JerseyRole = \"player\"\r\n): Jersey | null => {\r\n\r\n if (jerseyEvent === undefined) {\r\n return null;\r\n }\r\n\r\n if (jerseyEvent === null) {\r\n return side === \"home\"\r\n ? DEFAULT_HOME_JERSEY\r\n : DEFAULT_AWAY_JERSEY;\r\n }\r\n\r\n const jersey = jerseyEvent?.jerseys?.[side]?.[role];\r\n\r\n if (jersey) return jersey;\r\n\r\n return side === \"home\"\r\n ? DEFAULT_HOME_JERSEY\r\n : DEFAULT_AWAY_JERSEY;\r\n};","import React from \"react\";\r\nimport OraculoButtonBet from \"../../atoms/OraculoButtonBet/OraculoButtonBet\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport styles from \"./OraculoEventEnVivoCard.module.css\";\r\nimport {getTeamJersey} from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,jersey } : EnVivoEventProps) {\r\n const selectedOffer = betOffers?.find(\r\n (offer) => offer.betOfferType?.id === 2\r\n ); \r\n\r\n return (\r\n <div className={styles.cardWrapper} >\r\n \r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoEventHeader\r\n title={event?.path?.[0]?.name ?? ''}\r\n subtitle={event?.group ?? ''}\r\n live={true}\r\n time={liveData?.matchClock?.minute != null ? `${liveData.matchClock.minute}'` : ''}\r\n />\r\n\r\n <div style={{ padding: \"0 4px\" }}>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo name={event?.homeName} jersey={getTeamJersey(jersey, \"home\")}/>\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event?.awayName} jersey={getTeamJersey(jersey, \"away\")} />\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n\r\n <OraculoGridGroup spacing={2}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButtonBet key={index} variant=\"primary\" disabled={item.odds == undefined || selectedOffer?.cashOutStatus == 'SUSPENDED'} onClick={()=>{redirectHomeWithOutcomes(item.id);}} >\r\n {item.odds === undefined ? \"\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButtonBet>\r\n ))}\r\n </OraculoGridGroup>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventDate.module.css\";\r\n\r\ninterface OraculoEventDateProps {\r\n text: string;\r\n}\r\n\r\nexport default function OraculoEventDate({ text }: OraculoEventDateProps) {\r\n return <div className={`oli-font ${styles.date}`}>{text}</div>;\r\n}","import React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\nimport OraculoEventDate from \"../../atoms/OraculoEvent/OraculoEventDate\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport {getTeamJersey} from \"../../atoms/OraculoEvent/KambiJersey\";\r\n\r\nexport default function OraculoEventSemanaCard({event, jersey} : SemanaEventProps ) {\r\n\r\n\tfunction formatDate(dateString : string): string {\r\n\t\tconst date = new Date(dateString);\r\n\r\n\t\tconst dayShort = date.toLocaleDateString(\"es-ES\", { weekday: \"short\" }).toUpperCase();\r\n\r\n\t\tconst day = date.getDate().toString().padStart(2, \"0\");\r\n\t\tconst month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n\t\tlet time = date.toLocaleTimeString(\"es-PE\", { hour: \"numeric\", minute: \"2-digit\", hour12: true }).toUpperCase();\r\n\r\n\t\ttime = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n\t\treturn `${dayShort} ${day}/${month} | ${time}`;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<div className={styles.cardContainer}>\r\n\t\t\t<OraculoEventLeague title={event?.group ?? ''} />\r\n\t\t\t<div className={styles.cardBackground} >\r\n\t\t\t\t\r\n\t\t\t\t<Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n\t\t\t\t<Stack direction=\"column\" spacing={1} useFlexGap> \r\n\t\t\t\t\t\r\n\t\t\t\t\t<div className={styles.equipos}>\r\n\t\t\t\t\t\t<OraculoEventTeamInfo name={event.homeName} size=\"compact\" jersey={getTeamJersey(jersey, \"home\")} />\r\n\t\t\t\t\t\t<OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n\t\t\t\t\t\t<OraculoEventTeamInfo name={event.awayName} size=\"compact\" jersey={getTeamJersey(jersey, \"away\")} />\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<OraculoEventDate text={formatDate(event.start)} />\r\n\r\n\t\t\t\t</Stack>\r\n\r\n\t\t\t\t<Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n\t\t\t\t\t<OraculoGridGroup spacing={1}>\r\n\t\t\t\t\t\t{(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n\t\t\t\t\t\t\t<OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</OraculoGridGroup>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<div className={styles.jugadas}>\r\n\t\t\t\t\t<OraculoGridGroup spacing={1}>\r\n\t\t\t\t\t\t{(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n\t\t\t\t\t\t\t<OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{redirectHomeWithOutcomes(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</OraculoGridGroup>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</Stack>\r\n\t\t\t\t</Stack>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t);\r\n}","import React, { useRef, useState } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport {\r\n OraculoSeccionDestacadosItem,\r\n OraculoSeccionDestacadosProps,\r\n} from \"../../interfaces/oraculo/InterfaceDestacados\";\r\n\r\nexport default function OraculoSeccionDestacados({\r\n items,\r\n title = \"Destacados\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: OraculoSeccionDestacadosProps) {\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/promociones\";\r\n };\r\n\r\n const redirectToPromotion = (promotion?: string) => {\r\n if (!promotion) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const slug = encodeURIComponent(promotion);\r\n const url = `https://www.olimpo.bet/promociones/${slug}`;\r\n window.location.href = url;\r\n };\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <header\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 12,\r\n rowGap: 8,\r\n marginBottom: 16,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart || isLoading}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd || isLoading}\r\n />\r\n </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </header>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={2}\r\n gap=\"16px\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n breakpoints={{\r\n 768: { perPage: 2, focus: \"start\" },\r\n 1024: { perPage: 2.5, focus: \"start\" },\r\n }}\r\n renderItem={(item: OraculoSeccionDestacadosItem) => (\r\n <div\r\n key={`${item.title}-${item.image}`}\r\n style={{\r\n textAlign: \"center\",\r\n marginTop: 16,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => redirectToPromotion(item.promotion)}\r\n >\r\n <img\r\n src={`https://olimpo.bet${item.image !== \"\" ? item.image : item.summary_image}`}\r\n alt={item.title}\r\n style={{\r\n width: \"100%\",\r\n height:\r\n typeof window !== \"undefined\" && window.innerWidth < 768 ? \"80px\" : \"137px\",\r\n borderRadius: 8,\r\n display: \"block\",\r\n objectFit: \"cover\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","\r\nconst KEY = \"__ORACULO_EXTRAS__\" as const;\r\n\r\ntype Store = {\r\n extras?: Record<string, unknown>;\r\n};\r\n\r\nfunction getStore(): Store {\r\n const g = globalThis as any;\r\n if (!g[KEY]) g[KEY] = {};\r\n return g[KEY] as Store;\r\n}\r\n\r\nexport function setOraculoExtras(extrasObj: Record<string, unknown>) {\r\n getStore().extras = extrasObj;\r\n}\r\nexport function getOraculoExtra<T = unknown>(key: string): T | undefined {\r\n return getStore().extras?.[key] as T | undefined;\r\n}\r\nexport function clearOraculoExtras() {\r\n delete (globalThis as any)[KEY];\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoGameRankCard from \"../../molecules/OraculoGameRankCard/OraculoGameRankCard\";\r\nimport { OraculoSeccionTopJuegosProps } from \"../../interfaces/oraculo/InterfaceTopJuegos\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\nexport default function OraculoSeccionTopJuegos({\r\n items,\r\n title = \"Top Juegos\",\r\n iconUrl,\r\n onCardClick,\r\n}: OraculoSeccionTopJuegosProps) {\r\n const normalizedItems = useMemo(\r\n () =>\r\n (items ?? [])\r\n .map((item, index) => ({\r\n ...item,\r\n orden: item.orden ?? index + 1,\r\n _originalIndex: index,\r\n }))\r\n .sort((a, b) => {\r\n if (a.orden != null && b.orden != null) return a.orden - b.orden;\r\n return a._originalIndex - b._originalIndex;\r\n }),\r\n [items]\r\n );\r\n\r\n const isLoading = !items || items.length === 0;\r\n const top6 = isLoading ? Array.from({ length: 6 }) : normalizedItems.slice(0, 6);\r\n\r\n const handleOpen = (juego: any) => {\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n\r\n requestAnimationFrame(() => {\r\n loadMachine?.(juego, false, \"CASINO\");\r\n });\r\n };\r\n\r\n return (\r\n <section style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: \"repeat(3, minmax(0, 1fr))\",\r\n md: \"repeat(6, minmax(0, 1fr))\",\r\n },\r\n gap: { xs: 1.5, md: 2 },\r\n justifyItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {top6.map((juego: any, index: number) => (\r\n <OraculoGameRankCard\r\n key={isLoading ? `sk-${index}` : (juego.machine ?? `${index}`)}\r\n imageUrl={isLoading ? \"\" : juego.background ? `https://olimpo.bet${juego.background}` : `https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={isLoading ? index + 1 : juego.orden}\r\n loading={isLoading}\r\n onClick={\r\n isLoading\r\n ? undefined\r\n : () => {\r\n onCardClick?.(juego);\r\n handleOpen(juego);\r\n }\r\n }\r\n />\r\n ))}\r\n </Box>\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoLiveCasinoCard from \"../../molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard\";\r\nimport { OraculoSeccionCasinoEnVivoProps } from \"../../interfaces/oraculo/InterfaceCasinoEnVivo\";\r\nimport { OraculoGameItem } from \"../..\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps> = ({\r\n items,\r\n title = \"Casino en vivo\",\r\n subtitle = \"Disfruta la emoción en tus juegos favoritos y gana en tiempo real.\",\r\n backgroundMobileUrl = \"\",\r\n backgroundDesktopUrl = \"\",\r\n onViewMore,\r\n className,\r\n}) => {\r\n const handleOpenLive = (juego: any) => {\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n // 1) Mostrar contenedor del iframe\r\n showIframe?.();\r\n\r\n // 2) Subir arriba (para que el iframe no aparezca “desde donde estabas”)\r\n if (typeof window !== \"undefined\") {\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n }\r\n\r\n // 3) Abrir juego con el flujo del host (mismo que casino/virtuales)\r\n // Espera 1 frame por si el DOM del iframe se monta/actualiza al mostrarlo\r\n requestAnimationFrame(() => {\r\n loadMachine?.(juego, false, \"casino_en_vivo\");\r\n });\r\n };\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n color: \"white\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Fondo */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundImage: {\r\n xs: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundMobileUrl}')\r\n `,\r\n md: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundDesktopUrl}')\r\n `,\r\n },\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n zIndex: 0,\r\n }}\r\n />\r\n\r\n {/* Contenido */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n zIndex: 1,\r\n maxWidth: 1200,\r\n height: { xs: \"450px\", md: \"550px\" },\r\n mx: \"auto\",\r\n px: { xs: 2.5, md: 6 },\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: { xs: \"center\", md: \"center\" },\r\n justifyContent: \"center\",\r\n gap: { xs: 0, md: 15 },\r\n textAlign: { xs: \"center\", md: \"left\" },\r\n }}\r\n >\r\n {/* Columna izquierda */}\r\n <Stack spacing={3} sx={{ maxWidth: { md: 280 } }}>\r\n <Typography\r\n variant=\"h4\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 24, md: 40 },\r\n WebkitTextStroke: \"0.5px rgba(255, 255, 255, .5)\",\r\n textShadow:\r\n \"0 0 2px rgba(255, 255, 255, .95),\" +\r\n \"0 0 4px rgba(255, 255, 255, .6),\" +\r\n \"0 1px 0 #898989\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 14, md: 18 },\r\n color: \"rgba(255,255,255,0.9)\",\r\n marginX: { xs: 4, md: 0 },\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n\r\n <Box sx={{ display: { xs: \"none\", md: \"block\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"md\"\r\n onClick={() => onViewMore?.() || (window.location.href = \"https://www.olimpo.bet/casino-en-vivo\")}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Stack>\r\n\r\n {/* Lista de tarjetas */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: { xs: 2, md: 3 },\r\n justifyContent: \"center\",\r\n overflowX: { xs: \"auto\", md: \"visible\" },\r\n py: { xs: 3, md: 0 },\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {(items ?? []).slice(0, 3).map((juego, idx) => (\r\n <OraculoLiveCasinoCard\r\n key={getGameId(juego, idx)}\r\n logo={`https://olimpo.bet${juego.background ? juego.background : juego.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => handleOpenLive(juego)}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {/* Botón mobile */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"lg\"\r\n onClick={() => onViewMore?.() || (window.location.href = \"https://www.olimpo.bet/casino-en-vivo\")}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasinoEnVivo;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, { OraculoGameSlideItem } from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\ninterface CasinoSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst buildCasinoSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 1\r\n): CasinoSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n ...(g.background ? { background: g.background } : {}),\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: CasinoSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 1);\r\n slides.push({ id: \"mosaic-0\", kind: \"mosaic\", items: baseItems.slice(0, take) });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({ id: `grid-${start}`, kind: \"grid\", items: baseItems.slice(start, end) });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps> = ({\r\n items,\r\n title = \"Casino\",\r\n iconUrl = \"/assets/img/home/Casino/diamante.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 1,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/casino\";\r\n };\r\n\r\n const buildLoadingSlides = (mosaicFirst = true, gridSize = 4): CasinoSlide[] => {\r\n const mkItems = (n: number) =>\r\n Array.from({ length: n }, (_, i) => ({ id: `sk-${n}-${i}`, imageUrl: \"\" }));\r\n\r\n const slides: CasinoSlide[] = [];\r\n if (mosaicFirst) slides.push({ id: \"mosaic-loading\", kind: \"mosaic\", items: mkItems(5) });\r\n slides.push({ id: \"grid-loading\", kind: \"grid\", items: mkItems(gridSize) });\r\n return slides;\r\n };\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const slides = isLoading\r\n ? buildLoadingSlides(mosaicFirst, gridSize)\r\n : buildCasinoSlides(items, mosaicFirst, gridSize);\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, justifyContent: \"flex-end\" }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n {/* Carousel (wheel interno por prop) */}\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0px\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n loading={isLoading}\r\n onClick={(itm) => {\r\n if (isLoading) return;\r\n\r\n const game = items.find((g, idx) => String(getGameId(g, idx)) === String(itm.id));\r\n if (!game) return;\r\n\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n loadMachine?.(game, false, \"CASINO\");\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasino;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, { OraculoGameSlideItem } from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\nimport { getOraculoExtra } from \"../../utils/openMachineRegistry\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\ntype LoadMachineFn = (game: any, demo: boolean, source: string) => void;\r\n\r\ninterface VirtualSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) => g.orden ?? g.machine ?? idx;\r\n\r\nconst buildVirtualSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 1\r\n): VirtualSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n ...(g.background ? { background: g.background } : {}),\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: VirtualSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 1);\r\n slides.push({ id: \"mosaic-0\", kind: \"mosaic\", items: baseItems.slice(0, take) });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({ id: `grid-${start}`, kind: \"grid\", items: baseItems.slice(start, end) });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst buildLoadingVirtualSlides = (mosaicFirst = true, gridSize = 4): VirtualSlide[] => {\r\n const mkItems = (n: number) =>\r\n Array.from({ length: n }, (_, i) => ({ id: `sk-${n}-${i}`, imageUrl: \"\" }));\r\n\r\n const slides: VirtualSlide[] = [];\r\n if (mosaicFirst) slides.push({ id: \"mosaic-loading\", kind: \"mosaic\", items: mkItems(5) });\r\n slides.push({ id: \"grid-loading\", kind: \"grid\", items: mkItems(gridSize) });\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps> = ({\r\n items,\r\n title = \"Virtuales\",\r\n iconUrl = \"/assets/img/home/Virtuales/virtuales.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 1,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => carouselRef.current?.prev();\r\n const handleNext = () => carouselRef.current?.next();\r\n\r\n const handleViewMore = () => {\r\n window.location.href = \"https://www.olimpo.bet/juegos-virtuales\";\r\n };\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n const slides = isLoading\r\n ? buildLoadingVirtualSlides(mosaicFirst, gridSize)\r\n : buildVirtualSlides(items, mosaicFirst, gridSize);\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, justifyContent: \"flex-end\" }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0\"\r\n enableHorizontalWheel\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: true,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n perMove: 1,\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n loading={isLoading}\r\n onClick={(itm) => {\r\n if (isLoading) return;\r\n\r\n const game = items.find((g, idx) => String(getGameId(g, idx)) === String(itm.id));\r\n if (!game) {\r\n console.warn(\"[virtuales] no se encontró game para id:\", itm.id);\r\n return;\r\n }\r\n\r\n const showIframe = getOraculoExtra<() => void>(\"showIframe\");\r\n const loadMachine = getOraculoExtra<LoadMachineFn>(\"loadMachine\");\r\n\r\n showIframe?.();\r\n loadMachine?.(game, false, \"VIRTUALES\");\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\n\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps, OraculoBonosItem } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n position: \"relative\" as const,\r\n py: 8,\r\n color: \"#fff\",\r\n backgroundImage: `\r\n linear-gradient(to bottom,#121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to left, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to right, #121212 0%, rgba(18,18,18,0) 10%),\r\n url(\"${bgUrl}\")\r\n `,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n});\r\n\r\nconst headlineBaseSx = {\r\n textAlign: \"center\" as const,\r\n lineHeight: 1.1,\r\n mb: 1.5,\r\n};\r\n\r\nconst hlTopSx = {\r\n display: \"inline-block\",\r\n fontWeight: 600,\r\n fontSize: 24,\r\n};\r\n\r\nconst hlBottomSx = {\r\n display: \"inline-block\",\r\n fontSize: 24,\r\n lineHeight: 1.1,\r\n WebkitTextStroke: \"0.3px rgba(255, 255, 255, .5)\",\r\n textShadow: `\r\n 0 0 2px rgba(255, 255, 255, .95),\r\n 0 0 6px rgba(255, 255, 255, .6),\r\n 0 1px 0 rgba(137, 137, 137, .85)\r\n `,\r\n};\r\n\r\nconst OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps> = ({\r\n headline,\r\n headline2,\r\n items,\r\n backgroundImageUrl,\r\n}) => {\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const wheelHostRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const navRef = useRef(navState);\r\n useEffect(() => {\r\n navRef.current = navState;\r\n }, [navState]);\r\n\r\n const wheelLockRef = useRef(false);\r\n const wheelUnlockTimerRef = useRef<number | null>(null);\r\n\r\n const activeSlide = items?.[activeIndex];\r\n\r\n const bgUrl = useMemo(\r\n () => activeSlide?.backgroundImageUrl ?? backgroundImageUrl ?? \"\",\r\n [activeSlide, backgroundImageUrl]\r\n );\r\n\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const isLoading = !items || items.length === 0;\r\n\r\n useEffect(() => {\r\n const el = wheelHostRef.current;\r\n if (!el) return;\r\n\r\n const THRESHOLD = 6;\r\n const INVERT = false;\r\n const LOCK_MS = 380;\r\n\r\n const onWheel = (e: WheelEvent) => {\r\n if (isLoading) return;\r\n if (e.ctrlKey) return;\r\n\r\n if (wheelLockRef.current) return;\r\n\r\n const dx = e.deltaX;\r\n const dy = e.deltaY;\r\n\r\n // solo horizontal\r\n if (Math.abs(dx) <= Math.abs(dy)) return;\r\n if (Math.abs(dx) < THRESHOLD) return;\r\n\r\n const dirNext = INVERT ? dx < 0 : dx > 0;\r\n\r\n // si no es loop, evitamos “rebotar” en bordes\r\n if (dirNext && navRef.current.isEnd) return;\r\n if (!dirNext && navRef.current.isStart) return;\r\n\r\n e.preventDefault();\r\n\r\n wheelLockRef.current = true;\r\n if (dirNext) carouselRef.current?.next();\r\n else carouselRef.current?.prev();\r\n\r\n if (wheelUnlockTimerRef.current) window.clearTimeout(wheelUnlockTimerRef.current);\r\n wheelUnlockTimerRef.current = window.setTimeout(() => {\r\n wheelLockRef.current = false;\r\n }, LOCK_MS);\r\n };\r\n\r\n el.addEventListener(\"wheel\", onWheel, { passive: false });\r\n return () => {\r\n el.removeEventListener(\"wheel\", onWheel as any);\r\n if (wheelUnlockTimerRef.current) window.clearTimeout(wheelUnlockTimerRef.current);\r\n };\r\n }, [isLoading]);\r\n\r\n const renderSlide = (it: OraculoBonosItem, desktop: boolean) => {\r\n const hl1 = it.headline ?? headline;\r\n const hl2 = it.headline2 ?? headline2;\r\n\r\n if (!desktop) {\r\n return (\r\n <Box sx={{ textAlign: \"center\" }}>\r\n {(hl1 || hl2) && (\r\n <Box sx={headlineBaseSx}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <OraculoWelcomeBanner {...it} onButtonClick={it.onButtonClick} variant=\"small\" />\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: \"auto\",\r\n px: 15,\r\n display: \"grid\",\r\n gridTemplateColumns: \"260px minmax(0, 1fr)\",\r\n alignItems: \"center\",\r\n columnGap: 6,\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n minHeight: \"100%\",\r\n }}\r\n >\r\n <Box sx={{ ...headlineBaseSx, textAlign: \"left\", mb: 0 }}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", maxWidth: 600, mx: \"auto\" }}>\r\n <OraculoWelcomeBanner {...it} onButtonClick={it.onButtonClick} variant=\"large\" />\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n };\r\n\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <div ref={wheelHostRef} style={{ width: \"100%\" }}>\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap={\"0px\"}\r\n options={{\r\n autoWidth: false,\r\n // si quieres, puedes activar loop acá:\r\n // type: \"loop\",\r\n // perMove: 1,\r\n // focus: \"center\",\r\n // pagination: false,\r\n // arrows: false,\r\n // drag: true,\r\n }}\r\n renderItem={(it) => (\r\n <Box sx={{ width: \"100%\" }}>\r\n {renderSlide(it, !isMobile)}\r\n </Box>\r\n )}\r\n onMove={({ index, isStart, isEnd }: any) => {\r\n setActiveIndex(index);\r\n if (typeof isStart === \"boolean\" && typeof isEnd === \"boolean\") {\r\n setNavState({ isStart, isEnd });\r\n }\r\n }}\r\n />\r\n </div>\r\n\r\n {showDots && (\r\n <Box sx={{ mt: 2, display: \"flex\", justifyContent: \"center\" }}>\r\n <OraculoCarouselDots\r\n total={items.length}\r\n active={activeIndex}\r\n onSelect={(i) => {\r\n setActiveIndex(i);\r\n carouselRef.current?.go(i);\r\n }}\r\n />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionBonoBienvenida;\r\n","import React, { useLayoutEffect, useRef } from \"react\";\r\nimport \"./OraculoSeccionClubOlimpo.css\";\r\nimport OraculoClubOlimpoVisual from \"../../molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual\";\r\nimport { OraculoSeccionClubOlimpoItem } from \"../../interfaces/oraculo/InterfaceClubOlimpo\";\r\n\r\nexport interface OraculoSeccionClubOlimpoItems {\r\n className?: string;\r\n /** Si true, hace el efecto full-bleed (100vw centrado) */\r\n fullBleed?: boolean;\r\n /** Lista de variantes (puedes pasar 1 o varias). */\r\n items: OraculoSeccionClubOlimpoItem;\r\n /** Índice del item a mostrar si pasas varios. */\r\n selectedIndex?: number;\r\n /** aria-label de la sección (fallback al imgAlt del item seleccionado). */\r\n ariaLabel?: string;\r\n}\r\n\r\nconst OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems> = ({\r\n className = \"\",\r\n fullBleed = true,\r\n items,\r\n selectedIndex = 0,\r\n ariaLabel,\r\n}) => {\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const bottomRef = useRef<HTMLDivElement | null>(null);\r\n\r\n if (!items ) return null;\r\n\r\n const onClick = () => {\r\n window.location.href = \"https://www.olimpo.bet/conoce-club-olimpo\";\r\n };\r\n\r\n const item = Array.isArray(items) \r\n ? items[selectedIndex]\r\n : items;\r\n\r\n useLayoutEffect(() => {\r\n if (!rootRef.current || !bottomRef.current) return;\r\n if (typeof ResizeObserver === \"undefined\") return;\r\n\r\n const root = rootRef.current;\r\n const bottom = bottomRef.current;\r\n\r\n const update = () => {\r\n root.style.setProperty(\r\n \"--orc-co-bottomH\",\r\n `${bottom.offsetHeight + 16}px`\r\n );\r\n };\r\n\r\n const ro = new ResizeObserver(update);\r\n ro.observe(bottom);\r\n update();\r\n\r\n return () => ro.disconnect();\r\n }, []);\r\n\r\n const rootClass = [\r\n \"orc-co-wrap\",\r\n fullBleed ? \"orc-co-fullBleed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <section\r\n ref={rootRef}\r\n className={rootClass}\r\n aria-label={ariaLabel || item.imgAlt || \"Club Olimpo\"}\r\n >\r\n <div ref={bottomRef}>\r\n <OraculoClubOlimpoVisual\r\n text={item.text}\r\n // onClick={item.onClick}\r\n onClick={onClick}\r\n imgAlt={item.imgAlt}\r\n imgSrcMobile={item.imgMobile}\r\n imgSrcDesktopBg={item.imgDesktopBg}\r\n imgSrcDesktopLogo={item.imgDesktopLogo}\r\n />\r\n </div>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionClubOlimpo;\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventCombinadasCard from \"../../molecules/OraculoEventCard/OraculoEventCombinadasCard\";\r\nimport styles from \"./OraculoSeccionEventoCombinadas.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\nimport { verMasSeccionCombinadas } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl = \"https://stg-www.contodobet.com/static/img/landing/EventoCombinada/rayoIcon.svg\",\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState([]);\r\n const SPECIALS_GROUPS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group/prepackcoupon.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764284658793&prePackCouponTags=CUSTOM'\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n verMasSeccionCombinadas();\r\n };\r\n\r\n async function loadDataEventSpecial() {\r\n try {\r\n const listRes = await fetch(SPECIALS_GROUPS_URL);\r\n const listData = await listRes.json();\r\n\r\n const groupId = listData?.group?.groups?.[0]?.id;\r\n\r\n if (!groupId) {\r\n console.error(\"Could not extract group ID\");\r\n return;\r\n }\r\n\r\n const SPECIALS_URL = `https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/prepackcoupon/eventgroup/${groupId}.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764283566783&prePackCouponTags=CUSTOM`;\r\n\r\n const response = await fetch(SPECIALS_URL);\r\n const data = await response.json();\r\n\r\n setEvents(\r\n mergeEventOffers(data.events, data.betOffers, data.prePackCoupons)\r\n );\r\n } catch (e) {\r\n console.error(\"loadDataEventSpecial error:\", e);\r\n }\r\n}\r\n\r\n function mergeEventOffers(eventos:any, apuestas : any, prePackCoupons : any) {\r\n const results : any = [] ;\r\n\r\n for (const coupon of prePackCoupons) {\r\n // Build outcome set only for this coupon\r\n const usedOutcomeIds = getUsedOutcomeIds([coupon]);\r\n const reqs = extractRequirements(coupon);\r\n\r\n // Filter apuestas only using this coupon’s outcomes\r\n const apuestasByEvent = apuestas.reduce((acc:any, a:any) => {\r\n if (!acc[a.eventId]) acc[a.eventId] = [];\r\n\r\n const filteredOutcomes = a.outcomes.filter((o:any) =>\r\n usedOutcomeIds.has(o.id)\r\n );\r\n\r\n if (filteredOutcomes.length > 0) {\r\n const requiredIds = Array.from(\r\n reqs?.[0]?.requiredOutcomeIds ?? []\r\n );\r\n const outcomesWithPosition = filteredOutcomes.map((o: any) => ({\r\n ...o,\r\n position: requiredIds.indexOf(o.id)\r\n }))\r\n \r\n acc[a.eventId].push({\r\n ...a,\r\n outcomes: outcomesWithPosition\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n\r\n // Now create duplicated event\r\n eventos.forEach((evento : any) => {\r\n if (evento.id !== coupon.prePackCouponRows[0].eventId) return;\r\n\r\n const eventOutcomeSet = usedOutcomeIds;\r\n\r\n let combinadoTotal = null;\r\n for (const r of reqs) {\r\n const fullMatch =\r\n [...r.requiredOutcomeIds].every(id => eventOutcomeSet.has(id));\r\n\r\n if (fullMatch) {\r\n combinadoTotal = r.decimal;\r\n break;\r\n }\r\n }\r\n\r\n results.push({\r\n ...evento,\r\n combinadoTotal,\r\n betoffers: apuestasByEvent[evento.id] || [],\r\n couponId: coupon.id // optional for tracking\r\n });\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nfunction extractRequirements(coupon : any) {\r\n const reqs = [];\r\n\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n const requiredOutcomeIds = new Set();\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => requiredOutcomeIds.add(o.id));\r\n });\r\n\r\n reqs.push({\r\n requiredOutcomeIds,\r\n decimal: row.odds.decimal\r\n });\r\n }\r\n }\r\n\r\n return reqs;\r\n}\r\n\r\nfunction getUsedOutcomeIds(prePackCoupons : any) {\r\n const allIds = new Set();\r\n\r\n for (const coupon of prePackCoupons) {\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n // Extract outcomes inside nested groups\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => allIds.add(o.id));\r\n });\r\n }\r\n\r\n if (row.type === \"SIMPLE\" && row.outcome) {\r\n allIds.add(row.outcome.id);\r\n }\r\n }\r\n }\r\n return allIds;\r\n}\r\n\r\n useEffect(() => {\r\n loadDataEventSpecial();\r\n}, []);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n if (!events || events.length === 0) {\r\n return null; \r\n}\r\n\r\n return (\r\n <section className={sectionClassName} style={{ \r\n // paddingLeft: 16,\r\n // paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",}}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div className={styles.controls}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events.filter(event => event['combinadoTotal'] !== null)}\r\n perPage={undefined}\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move' }}\r\n useIndexAsKey\r\n enableHorizontalWheel\r\n breakpoints={{\r\n 768: { perPage: 1.2, gap: \"12px\", padding: { left: \"0px\", right: \"0px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventCombinadasCard event={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport styles from \"./OraculoEventEnVivoCard.module.css\";\r\n\r\nexport default function OraculoEventEnVivoCardSkeleton({}) {\r\n return (\r\n <div\r\n className={styles.cardWrapper}\r\n >\r\n <Stack direction=\"column\" spacing={1}>\r\n\r\n {/* Header */}\r\n <Stack spacing={1} direction=\"row\" >\r\n <Skeleton variant=\"text\" width=\"60%\" height={24} />\r\n <Skeleton variant=\"text\" width=\"39%\" height={24} />\r\n </Stack>\r\n\r\n {/* Teams + Score */}\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"circular\" width={32} height={40} />\r\n <Skeleton variant=\"text\" width={40} height={40} />\r\n <Skeleton variant=\"circular\" width={32} height={40} />\r\n </Stack>\r\n\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={32} height={16} />\r\n <Skeleton variant=\"text\" width={40} height={16} />\r\n <Skeleton variant=\"text\" width={32} height={16} />\r\n </Stack>\r\n\r\n {/* Labels */}\r\n <Stack spacing={2} direction=\"row\">\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n <Skeleton variant=\"rounded\" width={88} height={16} />\r\n </Stack>\r\n\r\n {/* Buttons */}\r\n <Stack spacing={2} direction=\"row\">\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n <Skeleton variant=\"rounded\" width={88} height={32} />\r\n </Stack>\r\n\r\n </Stack>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./FadeItemWrapper.module.css\";\r\n\r\nexport default function FadeItemWrapper({ children }: { children: React.ReactNode }) {\r\n return <div className={styles.fadeWrapper}>{children}</div>;\r\n}\r\n","import { useRef, useState, useEffect, useCallback } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventEnVivoCard from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCard\";\r\nimport OraculoEventEnVivoCardSkeleton from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCardSkeleton\";\r\nimport FadeItemWrapper from \"../../molecules/OraculoEventCard/FadeItemWrapper\";\r\n\r\nimport React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { verMasSeccionEnVivo, fetchJerseys, useDebouncedValue } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl = 'https://stg-www.contodobet.com/static/img/landing/EventoEnVivo/icon.svg',\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const LIVE_EVENTS_URL = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football/all/all/all/in-play.json?channel_id=3&channel_id=3&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true\"; //cada 20s\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState<any[] | null>(null);\r\n const [jerseys, setJerseys] = useState<Record<number, any>>({});\r\n const [visibleRange, setVisibleRange] = useState<{start: number | null;end: number | null;}>({ start: null, end: null });\r\n const fetchingRef = useRef(false);\r\n const [orderedEventIds, setOrderedEventIds] = useState<string[] | null>(null);\r\n const orderIdsFetchedRef = useRef(false);\r\n\r\n\r\n const debouncedVisibleRange = useDebouncedValue(visibleRange, 300);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n verMasSeccionEnVivo();\r\n };\r\n const blocked = [\"esports\", \"cyber\"];\r\n\r\n const filterFootballEvents = (events: any[]) =>\r\n events.filter(ev => {\r\n if (ev.event.sport !== \"FOOTBALL\") return false;\r\n\r\n const group = ev.event.group?.toLowerCase() || \"\";\r\n return !blocked.some(word => group.includes(word));\r\n });\r\n\r\n\r\n\r\n const loadData = useCallback(async () => {\r\n try {\r\n let orderIds = orderedEventIds;\r\n\r\n if (!orderIdsFetchedRef.current && orderedEventIds === null) {\r\n orderIdsFetchedRef.current = true;\r\n\r\n try {\r\n const response = await fetch(\r\n \"https://api.mktolimpo.com/api/kambi/eventos/orden\"\r\n );\r\n\r\n const json = response.ok ? await response.json() : null;\r\n orderIds = json?.data?.event_ids || [];\r\n } catch {\r\n orderIds = [];\r\n }\r\n\r\n setOrderedEventIds(orderIds);\r\n }\r\n\r\n const response = await fetch(LIVE_EVENTS_URL);\r\n const data = await response.json();\r\n const filteredEvents = filterFootballEvents(data.events);\r\n\r\n if (!orderIds || orderIds.length === 0) {\r\n setEvents(filteredEvents);\r\n return;\r\n }\r\n\r\n const orderMap = new Map(\r\n orderIds.map((id, index) => [String(id), index])\r\n );\r\n\r\n const sortedEvents = [...filteredEvents].sort((a, b) => {\r\n const aIndex = orderMap.get(String(a.event.id));\r\n const bIndex = orderMap.get(String(b.event.id));\r\n\r\n if (aIndex !== undefined && bIndex !== undefined) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== undefined) return -1;\r\n if (bIndex !== undefined) return 1;\r\n return 0;\r\n });\r\n\r\n setEvents(sortedEvents);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}, [orderedEventIds]);\r\n\r\n\r\nuseEffect(() => {\r\n loadData();\r\n const interval = setInterval(loadData, 20000);\r\n return () => clearInterval(interval);\r\n}, [loadData]);\r\n\r\nuseEffect(() => {\r\n if (\r\n debouncedVisibleRange.start === null ||\r\n debouncedVisibleRange.end === null ||\r\n !events?.length ||\r\n fetchingRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n const BUFFER = 3;\r\n const from = Math.max(0, debouncedVisibleRange.start - BUFFER);\r\n const to = Math.min(events.length - 1, debouncedVisibleRange.end + BUFFER);\r\n\r\n const idsToFetch = events\r\n .slice(from, to + 1)\r\n .map(ev => ev?.event.id)\r\n .filter(Boolean)\r\n .filter(id => jerseys[id] === undefined);\r\n\r\n if (!idsToFetch.length) return;\r\n\r\n fetchingRef.current = true;\r\n\r\n fetchJerseys(idsToFetch)\r\n .then(res => {\r\n setJerseys(prev => ({\r\n ...prev,\r\n ...res.events,\r\n }));\r\n })\r\n .catch(e => {\r\n console.error(\"Jersey fetch error\", e);\r\n })\r\n .finally(() => {\r\n fetchingRef.current = false;\r\n });\r\n}, [debouncedVisibleRange, events, jerseys]);\r\n\r\n\r\n \r\n\r\n const sectionClassName = className || undefined;\r\n const isLoading = events === null;\r\n\r\nif (!isLoading && events.length === 0) {\r\n return null;\r\n}\r\n\r\n return (\r\n <section className={sectionClassName} style={{ \r\n // paddingLeft: 16,\r\n // paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\", }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n \r\n <div style={{ display: \"flex\", gap: 8 , alignItems:'center'}}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n \r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={\r\n isLoading\r\n ? Array(4).fill({}) // show 4 skeleton slides\r\n : events.slice(0,20)\r\n }\r\n perPage={undefined}\r\n \r\n enableHorizontalWheel\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move'}}\r\n breakpoints={{\r\n 400: { gap: \"4px\", focus: \"center\" }, \r\n 768: { gap: \"8px\", focus: \"center\" }, \r\n 1024: { gap: \"10px\" , focus: \"center\" },\r\n }}\r\n renderItem={(p) => {\r\n const eventId = p.event?.id || p.eventId;\r\n const jersey =\r\n eventId in jerseys ? jerseys[eventId] : undefined;\r\n\r\n return isLoading ? (\r\n <FadeItemWrapper>\r\n <OraculoEventEnVivoCardSkeleton />\r\n </FadeItemWrapper>\r\n ) : (\r\n <FadeItemWrapper>\r\n <OraculoEventEnVivoCard\r\n {...p}\r\n jersey={jersey}\r\n />\r\n </FadeItemWrapper>\r\n );\r\n}}\r\n\r\n\r\n onMove={({ isStart, isEnd, visibleStart, visibleEnd }) => {\r\n\t\t\t\t\t\t\tsetNavState({ isStart, isEnd });\r\n\t\t\t\t\t\t\tsetVisibleRange({\r\n\t\t\t\t\t\t\t\tstart: visibleStart,\r\n\t\t\t\t\t\t\t\tend: visibleEnd,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Skeleton from \"@mui/material/Skeleton\";\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\n\r\nexport default function OraculoEventSemanaCardSkeleton() {\r\n return (\r\n <div className={styles.cardContainer}>\r\n \r\n {/* League name */}\r\n \r\n <OraculoEventLeague title={''} />\r\n <div className={styles.cardBackground}>\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n \r\n {/* Teams + VS + Date */}\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"circular\" width={48} height={48} />\r\n <Skeleton variant=\"circular\" width={48} height={48} />\r\n\r\n </Stack>\r\n\r\n {/* Labels + Buttons */}\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={80} height={12} />\r\n <Skeleton variant=\"text\" width={80} height={12} />\r\n </Stack>\r\n\r\n <Stack spacing={8} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" >\r\n <Skeleton variant=\"text\" width={160} height={12} />\r\n </Stack>\r\n\r\n {/* Labels */}\r\n <Stack direction=\"row\" spacing={1}>\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n <Skeleton variant=\"text\" width={80} height={16} />\r\n </Stack>\r\n\r\n {/* Buttons */}\r\n <div className={styles.jugadas}>\r\n <Stack direction=\"row\" spacing={1}>\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n <Skeleton variant=\"rounded\" width={80} height={32} />\r\n </Stack>\r\n </div>\r\n\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useRef, useState, useEffect, useCallback} from \"react\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport OraculoEventSemanaCardSkeleton from \"../../molecules/OraculoEventCard/OraculoEventSemanaCardSkeleton\";\r\nimport FadeItemWrapper from \"../../molecules/OraculoEventCard/FadeItemWrapper\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\nimport { verMasSeccionSemana, fetchJerseys, useDebouncedValue } from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\n\tasync function fetchInBatches(urls: string[], batchSize = 2, signal: AbortSignal,) {\r\n\t\tconst results: any[] = [];\r\n\t\tfor (let i = 0; i < urls.length; i += batchSize) {\r\n\t\t\tif (signal.aborted) {\r\n\t\t\t\tthrow new DOMException(\"Aborted\", \"AbortError\");\r\n\t\t\t}\r\n\t\t\tconst batch = urls.slice(i, i + batchSize);\r\n\t\t\tconst responses = await Promise.all(\r\n\t\t\tbatch.map(u => fetch(u, { signal }).then(r => r.json()))\r\n\t\t\t);\r\n\t\t\tresults.push(...responses);\r\n\t\t}\r\n\t\treturn results;\r\n\t}\r\n\r\n\tfunction sortEvents(evs: any[]) {\r\n\t\treturn [...evs].sort(\r\n\t\t(a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()\r\n\t\t);\r\n\t}\r\n\tfunction filterEventsWithinOneWeek(events: any[]) {\r\n\t\tconst now = new Date();\r\n\t\tconst oneWeekLater = new Date(now.getTime() + 20 * 24 * 60 * 60 * 1000);\r\n\r\n\t\treturn events.filter((event: any) => {\r\n\t\tif (!event.start) return false;\r\n\r\n\t\tconst eventDate = new Date(event.start);\r\n\t\treturn eventDate >= now && eventDate <= oneWeekLater;\r\n\t\t});\r\n\t}\r\n\tfunction mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n\t\tconst filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n\t\tconst apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n\t\tif (!acc[b.eventId]) acc[b.eventId] = [];\r\n\t\tacc[b.eventId].push(b);\r\n\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\t\treturn eventos\r\n\t\t.filter((evento : any) => apuestasByEvent[evento.id]) \r\n\t\t.map((evento: any) => ({\r\n\t\t\t...evento,\r\n\t\t\toutcome: apuestasByEvent[evento.id],\r\n\t\t}));\r\n\t}\r\nexport default function OraculoSeccionEventoSemana({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n \r\n\tconst WEEK_EVENTS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group.json?channel_id=1&client_id=200&lang=es_PE&market=PE'\r\n\tconst carouselRef = useRef<any>(null);\r\n\tconst [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\tconst [events, setEvents] = useState<any[] | null>(null);\r\n\tconst pendingJerseysRef = useRef<Set<number>>(new Set());\r\n\tconst [jerseys, setJerseys] = useState<Record<number, any>>({});\r\n\tconst [visibleRange, setVisibleRange] = useState<{start: number | null;end: number | null;}>({ start: null, end: null });\r\n\tconst COMMON_QUERY = \"channel_id=1&client_id=200&competitionId=undefined&lang=es_PE&market=PE&useCombined=true\";\r\n\tconst debouncedVisibleRange = useDebouncedValue(visibleRange, 250);\r\n const fetchingRef = useRef(false);\r\n\r\n\tconst handleViewMore = () => {\r\n\t\t\tverMasSeccionSemana();\r\n\t};\r\n\r\n\tasync function loadDataWeekEvent(signal: AbortSignal) {\r\n\t\tlet orderedGroupIds: string[] = [];\r\n\t\tlet orderedEventIds: string[] = []\r\n\t\ttry {\r\n\t\tconst orderResponse = await fetch(\r\n\t\t\t\"https://api.mktolimpo.com/api/kambi/eventos/orden\",\r\n \t\t{ signal }\r\n\t\t);\r\n\r\n\t\tif (orderResponse.ok) {\r\n\t\t\tconst orderJson = await orderResponse.json();\r\n\t\t\torderedGroupIds = orderJson?.data?.group_ids || [];\r\n\t\t\torderedEventIds = orderJson?.data?.event_ids || [];\r\n\t\t}\r\n\t\t} catch (e: any) {\r\n\t\t\tif (e.name !== \"AbortError\") {\r\n\t\t\tconsole.warn(\"Order API not available, using default group order\");\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(WEEK_EVENTS_URL, { signal });\r\n\t\t\tconst data = await response.json();\r\n\t\t\tconst football = data.group.groups.find(\r\n\t\t\t(g : any) => g.englishName === \"Football\"\r\n\t\t\t);\r\n\r\n\t\t\tif (!football || !Array.isArray(football.groups)) {\r\n\t\t\t\tconsole.error(\"Football groups not found\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet groups = [...football.groups];\r\n\r\n\t\t\t// 3️⃣ Apply group_ids order\r\n\t\t\tif (orderedGroupIds.length > 0) {\r\n\t\t\tconst orderMap = new Map(\r\n\t\t\t\torderedGroupIds.map((id, index) => [id, index])\r\n\t\t\t);\r\n\r\n\t\t\tgroups.sort((a: any, b: any) => {\r\n\t\t\t\tconst aIndex = orderMap.get(String(a.id));\r\n\t\t\t\tconst bIndex = orderMap.get(String(b.id));\r\n\r\n\t\t\t\tif (aIndex !== undefined && bIndex !== undefined) {\r\n\t\t\t\treturn aIndex - bIndex;\r\n\t\t\t\t}\r\n\t\t\t\tif (aIndex !== undefined) return -1;\r\n\t\t\t\tif (bIndex !== undefined) return 1;\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst N = 5; \r\n\r\n\t\t\tconst firstGroups = groups.slice(0, N);\r\n\r\n\t\t\tconst buildUrls = (group : any) => {\r\n\t\t\t\tconst base = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football\";\r\n\r\n\t\t\t\tif (group.groups && group.groups.length > 0) {\r\n\t\t\t\tconst sub = group.groups[0]; // ONLY FIRST child\r\n\t\t\t\treturn [\r\n\t\t\t\t\t`${base}/${group.termKey}/${sub.termKey}/all/matches.json?${COMMON_QUERY}`\r\n\t\t\t\t];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn [\r\n\t\t\t\t\t`${base}/${group.termKey}/all/all/matches.json?${COMMON_QUERY}`\r\n\t\t\t\t];\r\n\t\t\t};\r\n\r\n\t\t\tconst urls = firstGroups.flatMap(buildUrls);\r\n\r\n\t\t\tloadAllGroupEvents(urls, orderedEventIds, signal\r\n\r\n\t\t\t)\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tasync function loadAllGroupEvents(urls : any, orderEvents : any, signal: AbortSignal) {\r\n\t\ttry {\r\n\t\t\tconst responses = await fetchInBatches(urls, 2, signal);\r\n\r\n\t\t\tlet allEvents : any = [];\r\n\t\t\tlet allBetOffers : any = [];\r\n\r\n\t\t\tresponses.forEach(data => {\r\n\t\t\t\tif (!data.events) return;\r\n\r\n\t\t\t\tallEvents.push(...data.events.map((item: any) => item.event));\r\n\t\t\t\tallBetOffers.push(...data.events.flatMap((item:any) => item.betOffers || []));\r\n\t\t\t});\r\n\r\n\t\t\tconst merged = mergeEventOffersOutcome(allEvents, allBetOffers);\r\n\t\t\tconst finalEvents = sortEvents(filterEventsWithinOneWeek(merged));\r\n\r\n\t\t\tlet orderedEvents = finalEvents;\r\n\r\n\t\t\tif (orderEvents.length > 0) {\r\n\t\t\t\t\tconst orderMap = new Map<string, number>(\r\n\t\t\t\torderEvents.map((id: number | string, index: number) => [\r\n\t\t\t\t\tString(id),\r\n\t\t\t\t\tindex,\r\n\t\t\t\t])\r\n\t\t\t);\r\n\t\t\torderedEvents = [...finalEvents].sort((a, b) => {\r\n\t\t\t\tconst aIndex = orderMap.get(String(a.id));\r\n\t\t\t\tconst bIndex = orderMap.get(String(b.id));\r\n\r\n\t\t\t\tif (aIndex !== undefined && bIndex !== undefined) {\r\n\t\t\t\t\treturn aIndex - bIndex;\r\n\t\t\t\t}\r\n\t\t\t\tif (aIndex !== undefined) return -1;\r\n\t\t\t\tif (bIndex !== undefined) return 1;\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t\tif (signal.aborted) return;\r\n\t\t\tsetEvents(orderedEvents);\r\n\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"Error loading events:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n \tuseEffect(() => {\r\n\t\tif (!items) return;\r\n\r\n\t\tconst controller = new AbortController();\r\n\r\n\t\tloadDataWeekEvent(controller.signal);\r\n\r\n\t\treturn () => {\r\n\t\t\tcontroller.abort();\r\n\t\t};\r\n\t}, [items]);\r\n\r\n\r\nuseEffect(() => {\r\n\r\n\tif (\r\n\t debouncedVisibleRange.start === null ||\r\n\t debouncedVisibleRange.end === null ||\r\n\t !events?.length ||\r\n\t fetchingRef.current\r\n\t) {\r\n\t return;\r\n\t}\r\n\r\n const BUFFER = 2;\r\n\tconst from = Math.max(0, debouncedVisibleRange.start - BUFFER);\r\n\tconst to = Math.min(events.length - 1, debouncedVisibleRange.end + BUFFER);\r\n\r\n\tconst idsToFetch = events\r\n\t .slice(from, to + 1)\r\n\t .map(ev => ev?.id)\r\n\t .filter(Boolean)\r\n\t .filter(id => jerseys[id] === undefined);\r\n\tif (!idsToFetch.length) return;\r\n\r\n\tlet cancelled = false;\r\n\tfetchingRef.current = true;\r\n\r\n\t(async () => {\r\n\t try {\r\n\t const res = await fetchJerseys(idsToFetch);\r\n\r\n\t if (!cancelled) {\r\n\t\tsetJerseys(prev => ({\r\n\t\t...prev,\r\n\t\t...res.events,\r\n\t\t}));\r\n\t }\r\n\t } catch (e) {\r\n\t console.error(\"Jersey fetch error\", e);\r\n\t } finally {\r\n\t fetchingRef.current = false;\r\n\t }\r\n\t})();\r\n\r\n\treturn () => {\r\n\t cancelled = true;\r\n\t};\r\n }, [debouncedVisibleRange, events]);\r\n\tconst sectionClassName = className || undefined;\r\n\t\tconst sectionStyle : React.CSSProperties = { paddingLeft: 0, width: \"100%\", boxSizing: \"border-box\"};\r\n\r\n const isLoading = events === null;\r\n\r\nif (!isLoading && events.length === 0) {\r\n return null;\r\n}\r\n\r\n\r\n\treturn (\r\n\t\t<section className={sectionClassName} style={sectionStyle}>\r\n\r\n\t\t\t<div className={styles.wrapper}>\r\n\t\t\t\t<div className={styles.container}>\r\n\r\n\t\t\t\t\t<Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\t\t\t\t\t\t<OraculoSectionTitle title=\"Eventos de la semana\" />\r\n\t\t\t\t\t\t<div className={styles.buttonWrapper}>\r\n\t\t\t\t\t\t<OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div style={{ minWidth: '180px' }}>\r\n\r\n\t\t\t\r\n\t\t\t\t\t<OraculoCarousel\r\n\t\t\t\t\t\tref={carouselRef}\r\n\t\t\t\t\t\titems={\r\n\t\t\t\t\t\tisLoading\r\n\t\t\t\t\t\t\t? Array(6).fill({}) // show 4 skeleton slides\r\n\t\t\t\t\t\t\t: events.slice(0, 20)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tperPage={3.5}\r\n\t\t\t\t\t\tgap=\"16px\"\r\n\t\t\t\t\t\tenableHorizontalWheel\r\n\t\t\t\t\t\toptions={{ autoWidth: true, trimSpace: true }}\r\n\t\t\t\t\t\tbreakpoints={{\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\trenderItem={(p) => {\r\n\t\t\t const eventId = p.id ;\r\n const jersey =\r\n eventId in jerseys ? jerseys[eventId] : undefined;\r\n\t\t\t\t\t\t\treturn isLoading ? (\r\n\t\t\t\t\t\t\t\t<FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t\t<OraculoEventSemanaCardSkeleton />\r\n\t\t\t\t\t\t\t\t</FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t\t<OraculoEventSemanaCard event ={p} jersey={jersey} />\r\n\t\t\t\t\t\t\t\t</FadeItemWrapper>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonMove={({ isStart, isEnd, visibleStart, visibleEnd }) => {\r\n\t\t\t\t\t\t\tsetNavState({ isStart, isEnd });\r\n\t\t\t\t\t\t\tsetVisibleRange({\r\n\t\t\t\t\t\t\t\tstart: visibleStart,\r\n\t\t\t\t\t\t\t\tend: visibleEnd,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</section>\r\n\t);\r\n}\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel, { OraculoCarouselRef } from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds,\r\n items,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n\r\n const totalDots = backgrounds?.length || 1;\r\n const isLoading = !backgrounds || backgrounds.length === 0;\r\n\r\n useEffect(() => {\r\n if (isLoading) return;\r\n if (!backgrounds || backgrounds.length <= 1) return;\r\n\r\n const id = window.setInterval(() => {\r\n carouselRef.current?.next();\r\n }, 5000);\r\n\r\n return () => window.clearInterval(id);\r\n }, [isLoading, backgrounds?.length]);\r\n\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n overflow: \"visible\",\r\n }}\r\n >\r\n {/* Carrusel de backgrounds */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n borderRadius: 0,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={backgrounds}\r\n perPage={1}\r\n gap=\"0px\"\r\n enableHorizontalWheel\r\n options={{\r\n type: \"loop\",\r\n perMove: 1,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n }}\r\n onMove={({ index }) => {\r\n const safe = ((index % totalDots) + totalDots) % totalDots;\r\n setActiveDot(safe);\r\n }}\r\n renderItem={(bg) => (\r\n <Box\r\n component=\"a\"\r\n href={bg.href}\r\n target={bg.target ?? \"_self\"}\r\n rel={bg.target === \"_blank\" ? \"noopener noreferrer\" : undefined}\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n display: \"block\",\r\n textDecoration: \"none\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <Box\r\n component=\"picture\"\r\n sx={{ position: \"absolute\", inset: 0, lineHeight: 0 }}\r\n >\r\n <source srcSet={bg.desktopSrc} media=\"(min-width:800px)\" />\r\n <source srcSet={bg.mobileSrc} media=\"(max-width:799px)\" />\r\n <Box\r\n component=\"img\"\r\n src={bg.fallbackSrc ?? bg.desktopSrc}\r\n alt=\"\"\r\n aria-hidden\r\n loading=\"lazy\"\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n pointerEvents: \"none\",\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n top: \"40%\",\r\n background:\r\n \"linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(18,18,18,0.85) 80%, #121212 100%)\",\r\n },\r\n }}\r\n />\r\n </Box>\r\n )}\r\n />\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 72,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n zIndex: 2,\r\n }}\r\n >\r\n <OraculoCarouselDots total={totalDots} active={activeDot} />\r\n </Box>\r\n </Box>\r\n\r\n {/* Dock de items */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n bottom: { xs: -12, sm: 0 },\r\n left: 120,\r\n right: 120,\r\n \"@media (max-width:1024px)\": {\r\n left: 24,\r\n right: 24,\r\n },\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n p: 1.5,\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n boxShadow: \"0 10px 24px rgba(0,0,0,.35)\",\r\n zIndex: 3,\r\n }}\r\n >\r\n {items?.map((item: OraculoBannerItem) => (\r\n <Box\r\n key={item.id}\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: { xs: 0.5, md: 1 },\r\n color: \"#FFFFFF\",\r\n minWidth: 0,\r\n cursor: item.onClick || item.href ? \"pointer\" : \"default\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n onClick={() => {\r\n if (item.onClick) return item.onClick();\r\n if (item.href) return (window.location.href = item.href ?? \"/#\");\r\n }}\r\n >\r\n {item.icon && (\r\n <Box\r\n component=\"img\"\r\n src={item.icon}\r\n alt={item.label || `icon-${item.id}`}\r\n sx={{\r\n width: { xs: 20, sm: 22, md: 24 },\r\n height: { xs: 20, sm: 22, md: 24 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 10, sm: 11, md: 12 },\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoLogoMediosPago from \"../../atoms/OraculoLogo/OraculoLogoMediosPago\";\r\n\r\ntype LogoType = {\r\n src: string;\r\n alt: string;\r\n};\r\n\r\ntype Props = {\r\n title?: string;\r\n items?: LogoType[]; // <-- ahora solo 1 arreglo\r\n};\r\n\r\n// 7 items (ejemplo)\r\nconst DEFAULT_ITEMS: LogoType[] = [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/IBK.svg\", alt: \"Interbank\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/Yape.svg\", alt: \"Yape\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/BCP.png\", alt: \"BCP\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/pagoEfectivo.png\", alt: \"PagoEfectivo\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/tupay.svg\", alt: \"Tupay\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/monnet.svg\", alt: \"Monnet\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/niubiz.svg\", alt: \"Niubiz\" },\r\n];\r\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n items = DEFAULT_ITEMS,\r\n}: Props) {\r\n // 4/3 cuando son 7\r\n const split = Math.ceil(items.length / 2);\r\n const row1 = items.slice(0, split);\r\n const row2 = items.slice(split);\r\n\r\n return (\r\n <Box component=\"section\" aria-labelledby=\"mp-title\" sx={{ color: \"#fff\" }}>\r\n <Typography\r\n id=\"mp-title\"\r\n variant=\"h6\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 20, md: 32 },\r\n textAlign: \"center\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Box\r\n sx={{\r\n width: \"288px\",\r\n height: \"2px\",\r\n mx: \"auto\",\r\n mb: 3,\r\n opacity: 0.95,\r\n filter: \"blur(0.2px)\",\r\n background:\r\n \"linear-gradient(90deg, rgba(0,0,0,0) 0%, #1dd75b 18%, #23d46b 50%, #1dd75b 82%, rgba(0,0,0,0) 100%)\",\r\n }}\r\n />\r\n\r\n {/* 2 filas SIEMPRE (móvil y desktop) */}\r\n <Stack spacing={{ xs: 2, md: 3 }} alignItems=\"center\">\r\n <Stack\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={{ xs: 2, md: 3 }}\r\n flexWrap=\"wrap\"\r\n >\r\n {row1.map((l, idx) => (\r\n <OraculoLogoMediosPago key={`${l.alt}-${l.src}-${idx}`} {...l} />\r\n ))}\r\n </Stack>\r\n\r\n <Stack\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={{ xs: 2, md: 3 }}\r\n flexWrap=\"wrap\"\r\n >\r\n {row2.map((l, idx) => (\r\n <OraculoLogoMediosPago key={`${l.alt}-${l.src}-${idx}`} {...l} />\r\n ))}\r\n </Stack>\r\n </Stack>\r\n </Box>\r\n );\r\n}\r\n","import OraculoSeccionBonoBienvenida from \"../organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida\";\r\nimport OraculoSeccionTopJuegos from \"../organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos\";\r\nimport OraculoSeccionCasino from \"../organisms/OraculoSeccionCasino/OraculoSeccionCasino\";\r\nimport OraculoSeccionCasinoEnVivo from \"../organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo\";\r\nimport OraculoSeccionVirtuales from \"../organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales\";\r\nimport OraculoSeccionClubOlimpo from \"../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo\";\r\nimport OraculoSeccionDestacados from \"../organisms/OraculoSeccionDestacados/OraculoSeccionDestacados\";\r\nimport OraculoSeccionBanners from \"../organisms/OraculoSeccionBanners/OraculoSeccionBanners\";\r\nimport OraculoSeccionMediosPago from \"../organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago\";\r\nimport OraculoSeccionEventoCombinadas from \"../organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas\";\r\nimport OraculoSeccionEventoEnVivo from \"../organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo\";\r\nimport OraculoSeccionEventoSemana from \"../organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana\";\r\n\r\nimport React from \"react\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\nexport const Landing: LandingComponentMap = {\r\n OraculoSeccionDestacados,\r\n OraculoSeccionTopJuegos,\r\n OraculoSeccionCasinoEnVivo,\r\n OraculoSeccionCasino,\r\n OraculoSeccionVirtuales,\r\n OraculoSeccionClubOlimpo,\r\n OraculoSeccionBonoBienvenida,\r\n OraculoSeccionBanners,\r\n OraculoSeccionMediosPago,\r\n OraculoSeccionEventoEnVivo,\r\n OraculoSeccionEventoSemana,\r\n OraculoSeccionEventoCombinadas,\r\n};","\"use client\";\r\nimport React, { useEffect, useState, useMemo } from \"react\";\r\nimport { Container, Stack, useMediaQuery } from \"@mui/material\";\r\nimport { doc, onSnapshot, Firestore } from \"firebase/firestore\";\r\n// import \"@splidejs/react-splide/css\";\r\n\r\nimport { Landing } from \"./landingRegistry\";\r\nimport { clearOraculoExtras, setOraculoExtras } from \"../utils/openMachineRegistry\";\r\n// import \"../index.css\"\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\n// Es componente React si es función o componente objeto (MUI, etc.)\r\nconst isComponent = (val: any) =>\r\n typeof val === \"function\" ||\r\n (val && typeof val === \"object\" && \"$$typeof\" in val);\r\n\r\n// En oraculo-ui los organismos de landing se llaman OraculoSeccionXXX\r\nconst isSectionName = (key: string) => /^OraculoSeccion[A-Z]/.test(key);\r\n\r\nexport const LandingComponents: LandingComponentMap = Object.fromEntries(\r\n Object.entries(Landing).filter(\r\n ([key, val]) => isSectionName(key) && isComponent(val)\r\n )\r\n) as LandingComponentMap;\r\n\r\n// Section item model mirrors Firestore persisted structure\r\nexport type OraculoPageLandingPreviewSection = {\r\n id: number;\r\n title: string;\r\n componentKey: string;\r\n visible: boolean;\r\n order: number;\r\n props?: Record<string, unknown>;\r\n apiUrl?: string;\r\n dataMode?: \"url\" | \"manual\";\r\n variableName?: string;\r\n manualItems?: { fields: { name: string; type: string; value: string }[] }[];\r\n variableName2?: string;\r\n manualItems2?: { fields: { name: string; type: string; value: string }[] }[];\r\n manualScalarFields?: { name: string; type: string; value: string }[];\r\n apiMethod?: \"GET\" | \"POST\";\r\n apiParams?: { id: string; key: string; value: string }[];\r\n};\r\n\r\nexport type OpenMachineFn = (\r\n machine_name: string,\r\n provider: any,\r\n machine: any,\r\n external_id: any,\r\n type: any,\r\n demo: any,\r\n source: string\r\n) => void;\r\n\r\nexport type OraculoExtras = Array<[string, unknown]>;\r\n\r\nconst extrasToObject = (extras?: OraculoExtras): Record<string, unknown> => {\r\n try {\r\n return Object.fromEntries(extras ?? []);\r\n } catch (e) {\r\n console.warn(\"[oraculo] extras inválidos. Debe ser Array<[string, unknown]>\", extras);\r\n return {};\r\n }\r\n};\r\n\r\nconst asComponent = <T,>(val: unknown): T | undefined =>\r\n typeof val === \"function\" ? (val as T) : undefined;\r\n\r\nconst asFn = <T extends Function>(val: unknown): T | undefined =>\r\n typeof val === \"function\" ? (val as T) : undefined;\r\n\r\n/** Payload bruto obtenido por fetch o construido manualmente */\r\ntype SectionPayload =\r\n | Record<string, unknown>\r\n | Array<unknown>\r\n | null\r\n | undefined;\r\n\r\nexport interface OraculoPageLandingPreviewProps {\r\n /** Optional override: if provided, renders these sections instead of fetching Firestore */\r\n sectionsOverride?: OraculoPageLandingPreviewSection[];\r\n /** Firestore document id (default 'home') */\r\n docId?: string;\r\n /** Instancia de Firestore proporcionada por la app que consume el paquete */\r\n db: Firestore;\r\n /** Componente que se renderizará mientras carga */\r\n loader?: React.ComponentType<any>;\r\n // Optional extras\r\n extras?: OraculoExtras;\r\n}\r\n\r\nclass HttpError extends Error {\r\n constructor(\r\n public status: number,\r\n public url: string,\r\n public statusText: string\r\n ) {\r\n super(`HTTP ${status} ${statusText}`);\r\n this.name = \"HttpError\";\r\n }\r\n}\r\n\r\ntype ComponentMap = Record<\r\n string,\r\n React.ComponentType<Record<string, unknown>>\r\n>;\r\n\r\nconst noMostrarSinItems = [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n];\r\n\r\nconst OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n extras,\r\n loader\r\n}) => {\r\n const extrasObj = useMemo(() => extrasToObject(extras), [extras]);\r\n\r\n const Loader = loader || extrasObj[\"loader\"] as React.ComponentType<any> | undefined;\r\n \r\n\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [sectionDataMap, setSectionDataMap] = useState<\r\n Record<number, SectionPayload>\r\n >({});\r\n const [sectionLoadingMap, setSectionLoadingMap] = useState<\r\n Record<number, boolean>\r\n >({});\r\n const [sectionErrorMap, setSectionErrorMap] = useState<\r\n Record<number, string>\r\n >({});\r\n\r\n const isDesktop = useMediaQuery(\"(min-width:1024px)\");\r\n\r\n // Fetch sections from Firestore unless override provided\r\n useEffect(() => {\r\n if (sectionsOverride) return;\r\n if (!db) return; // seguridad extra por si alguien no pasa db\r\n\r\n setLoading(true);\r\n\r\n const unsubscribe = onSnapshot(\r\n doc(db, \"landings\", docId),\r\n (snap) => {\r\n try {\r\n let fetched: OraculoPageLandingPreviewSection[] = snap.exists()\r\n ? (snap.data()?.sections as OraculoPageLandingPreviewSection[]) ||\r\n []\r\n : [];\r\n fetched = fetched\r\n .slice()\r\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n .map((s, i) => ({ ...s, order: i + 1 }));\r\n // setSections([...new Set([...fetched, ...arraydemo])]);\r\n setSections(fetched);\r\n console.log(\"fetched: \", fetched);\r\n } catch (e) {\r\n console.error(\"Error procesando landings/\" + docId, e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n (error) => {\r\n console.error(\"Error escuchando landings/\" + docId, error);\r\n setLoading(false);\r\n }\r\n );\r\n\r\n return () => unsubscribe();\r\n }, [sectionsOverride, docId, db]);\r\n\r\n useEffect(() => {\r\n setOraculoExtras(extrasObj);\r\n return () => clearOraculoExtras();\r\n }, [extrasObj]);\r\n\r\n useEffect(() => {\r\n // preload all components used in sections\r\n const effectiveSections = sectionsOverride\r\n ? sectionsOverride.slice()\r\n : sections.slice();\r\n const toLoad = effectiveSections\r\n .map((s) => s.componentKey)\r\n .filter((key) => !!key);\r\n\r\n if (toLoad.length === 0) return;\r\n\r\n }, [sectionsOverride, sections]);\r\n\r\n const fetchSectionData = async (\r\n section: OraculoPageLandingPreviewSection\r\n ): Promise<SectionPayload> => {\r\n\r\n if (noMostrarSinItems.includes(section.componentKey)) {\r\n return {\r\n // whatever empty structure your UI expects\r\n items: [],\r\n events: [],\r\n data: {},\r\n } as SectionPayload;\r\n }\r\n\r\n const rawUrl = (section.apiUrl || \"\").trim();\r\n if (!rawUrl) return undefined;\r\n\r\n const method = section.apiMethod || \"GET\";\r\n const params = section.apiParams || [];\r\n\r\n let url = rawUrl;\r\n let body: BodyInit | undefined;\r\n let headers: HeadersInit | undefined;\r\n\r\n if (method === \"GET\") {\r\n const u = new URL(\r\n rawUrl,\r\n typeof window == \"undefined\"\r\n ? \"http://localhost\"\r\n : window.location.origin\r\n );\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n u.searchParams.append(p.key, p.value);\r\n }\r\n url = u.toString();\r\n } else {\r\n // application/x-www-form-urlencoded\r\n const encoded = new URLSearchParams();\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n // el value se manda tal cual; URLSearchParams se encarga del %7B%22...%7D\r\n encoded.append(p.key, p.value);\r\n }\r\n body = encoded.toString();\r\n headers = {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n };\r\n }\r\n\r\n const res = await fetch(url, {\r\n method,\r\n headers,\r\n body,\r\n });\r\n\r\n if (!res.ok) throw new HttpError(res.status, url, res.statusText);\r\n return res.json();\r\n };\r\n\r\n // Use override if provided\r\n const effectiveSections = useMemo(\r\n () => (sectionsOverride ? sectionsOverride.slice() : sections.slice()),\r\n [sectionsOverride, sections]\r\n );\r\n\r\n const fetchedKeysRef = React.useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n const fetchables = effectiveSections\r\n .map((s) => ({ s, url: (s.apiUrl || \"\").trim() }))\r\n .filter(({ url }) => !!url);\r\n\r\n if (!fetchables.length) return;\r\n\r\n for (const { s, url } of fetchables) {\r\n const key = `${s.id}|${url}`;\r\n if (fetchedKeysRef.current.has(key)) continue;\r\n fetchedKeysRef.current.add(key);\r\n\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: true }));\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: \"\" }));\r\n\r\n (async () => {\r\n try {\r\n const json = await fetchSectionData(s);\r\n setSectionDataMap((prev) => ({ ...prev, [s.id]: json }));\r\n } catch (err: unknown) {\r\n let message = \"Error desconocido\";\r\n if (err instanceof HttpError) {\r\n message = `Error HTTP ${err.status} (${err.statusText}) en ${err.url}`;\r\n } else if (err instanceof SyntaxError) {\r\n message = \"Respuesta no es JSON válido\";\r\n } else if (err instanceof TypeError) {\r\n message = \"Fallo de red / CORS / conexión\";\r\n } else if (typeof err === \"string\") {\r\n message = err.toString();\r\n }\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: message }));\r\n } finally {\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: false }));\r\n }\r\n })();\r\n }\r\n }, [effectiveSections]);\r\n\r\n const orderedVisible = useMemo(\r\n () =>\r\n effectiveSections\r\n .filter((s) => s.visible)\r\n .sort((a, b) => a.order - b.order),\r\n [effectiveSections]\r\n );\r\n\r\n const toManualArray = (\r\n items:\r\n | { fields: { name: string; type: string; value: string }[] }[]\r\n | undefined\r\n ): Array<Record<string, unknown>> => {\r\n if (!Array.isArray(items)) return [];\r\n return items.map((it) => {\r\n const obj: Record<string, unknown> = {};\r\n for (const f of it.fields || []) {\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n obj[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n obj[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n obj[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else obj[f.name] = f.value;\r\n }\r\n return obj;\r\n });\r\n };\r\n\r\n const toManualScalars = (\r\n fields: { name: string; type: string; value: string }[] | undefined\r\n ): Record<string, unknown> => {\r\n const out: Record<string, unknown> = {};\r\n if (!Array.isArray(fields)) return out;\r\n for (const f of fields) {\r\n if (!f.name) continue;\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n // Si el valor está vacío o es inválido, NO agregar el prop (usar default del componente)\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n out[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n out[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n out[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else out[f.name] = f.value;\r\n }\r\n return out;\r\n };\r\n\r\n const mapPayloadToProps = (\r\n payload: SectionPayload,\r\n manual: { arr?: unknown[]; variableName?: string } | null,\r\n base?: Record<string, unknown>\r\n ): Record<string, unknown> => {\r\n const merged: Record<string, unknown> = base ? { ...base } : {};\r\n if (manual) {\r\n const name = (manual.variableName || \"items\").trim() || \"items\";\r\n merged[name] = manual.arr || [];\r\n return merged;\r\n }\r\n const pl = payload;\r\n const isArr = Array.isArray(pl);\r\n const obj =\r\n !isArr && typeof pl === \"object\" && pl !== null ? pl : undefined;\r\n const arrData =\r\n obj && Array.isArray((obj as any).lobby || (obj as any).items)\r\n ? (((obj as any).lobby || (obj as any).items) as unknown[])\r\n : undefined;\r\n const choose = (fallback: unknown[]) => (isArr ? pl : arrData || fallback);\r\n merged.items = choose(arrData || []);\r\n return merged;\r\n };\r\n\r\n const buildCompProps = (\r\n s: OraculoPageLandingPreviewSection\r\n ): Record<string, unknown> => {\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload: SectionPayload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n let compProps: Record<string, unknown> = s.props ? { ...s.props } : {};\r\n const scalars = toManualScalars(s.manualScalarFields);\r\n if (\r\n noMostrarSinItems.includes(s.componentKey)\r\n ) {\r\n //console.log(payload);\r\n return { items: payload, ...compProps, ...scalars };\r\n }\r\n\r\n compProps = { ...compProps, ...scalars };\r\n if (hasUrl) compProps = mapPayloadToProps(payload, null, compProps);\r\n else if (s.dataMode === \"manual\") {\r\n const arr = toManualArray(s.manualItems);\r\n compProps = mapPayloadToProps(\r\n null,\r\n { arr, variableName: s.variableName },\r\n compProps\r\n );\r\n\r\n // Si existe variableName2 y manualItems2, agregar también ese prop\r\n if (s.variableName2 && s.manualItems2) {\r\n const arr2 = toManualArray(s.manualItems2);\r\n const varName2 = (s.variableName2 || \"items2\").trim() || \"items2\";\r\n compProps[varName2] = arr2;\r\n }\r\n }\r\n\r\n return compProps;\r\n };\r\n\r\n const renderStatusBox = (\r\n key: number,\r\n type: \"loading\" | \"error\" | \"component\",\r\n message: string\r\n ) => {\r\n const colorMap: Record<string, string> = {\r\n loading: \"bg-blue-100 text-blue-800\",\r\n error: \"bg-red-100 text-red-800\",\r\n component: \"bg-yellow-100 text-yellow-800\",\r\n };\r\n return (\r\n <div key={key} className={`mx-4 p-4 rounded ${colorMap[type]}`}>\r\n {message}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSingleSection = (s: OraculoPageLandingPreviewSection) => {\r\n const rawKey = s.componentKey;\r\n\r\n const Comp = LandingComponents[rawKey];\r\n\r\n if (!Comp) {\r\n console.warn(`No hay componente registrado para \"${rawKey}\"`);\r\n return renderStatusBox(\r\n s.id,\r\n \"component\",\r\n `Componente \"${rawKey}\" no encontrado`\r\n );\r\n }\r\n\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n const loadingSec = hasUrl ? !!sectionLoadingMap[s.id] : false;\r\n const errorSec = hasUrl ? sectionErrorMap[s.id] : \"\";\r\n\r\n if (hasUrl) {\r\n if (loadingSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"loading\",\r\n `Cargando datos desde ${s.apiUrl}...`\r\n );\r\n if (errorSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"error\",\r\n `Error cargando ${s.apiUrl}: ${errorSec}`\r\n );\r\n }\r\n\r\n const compProps = buildCompProps(s);\r\n const fullBleedComponents = new Set([\r\n \"OraculoSeccionBanners\",\r\n \"OraculoSeccionBonoBienvenida\",\r\n \"OraculoSeccionCasinoEnVivo\",\r\n !isDesktop ? \"OraculoSeccionClubOlimpo\" : \"\",\r\n ]);\r\n const isFullBleed = fullBleedComponents.has(s.componentKey);\r\n\r\n const paddingX = isDesktop ? 120 : 24;\r\n\r\n const wrapperStyle: React.CSSProperties = isFullBleed\r\n ? {\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }\r\n : {\r\n paddingLeft: paddingX,\r\n paddingRight: paddingX,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n };\r\n\r\n // if (\r\n // noMostrarSinItems.includes(s.componentKey)\r\n // ) {\r\n // //console.log(payload);\r\n // return (<Comp key={s.id}{...compProps} />);\r\n // }\r\n return (\r\n <div key={s.id} style={wrapperStyle} className=\"oraculo-section-wrapper\">\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return Loader ? <Loader /> : <div>Cargando...</div>;\r\n\r\n if (!loading && !sectionsOverride && sections.length === 0) {\r\n return (\r\n <div className=\"text-xs text-gray-500\">Sin secciones (Firestore)</div>\r\n );\r\n }\r\n\r\n return (\r\n <Container\r\n className=\"oli-font\"\r\n maxWidth={false}\r\n disableGutters\r\n sx={{\r\n backgroundColor: \"#121212\",\r\n position: \"relative\",\r\n pb: 5,\r\n // pt: 5,\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n <Stack\r\n direction=\"column\"\r\n spacing={isDesktop ? 8 : 5}\r\n useFlexGap\r\n >\r\n {orderedVisible.map(renderSingleSection)}\r\n </Stack>\r\n </Container>\r\n );\r\n};\r\n\r\nexport default OraculoPageLandingPreview;\r\n"],"names":["OraculoButton","children","onClick","href","target","rel","type","disabled","variant","size","fullWidth","fullHeight","className","ariaLabel","leftIcon","rightIcon","iconOnly","hasText","onlyOneIcon","isIconOnly","cls","content","jsxs","Fragment","jsx","ariaDisabled","MuiLink","e","OraculoSectionTitle","title","iconUrl","wrapperClass","OraculoCarouselDots","total","active","onSelect","rootClass","_","i","OraculoGridGroup","minWidth","spacing","justify","columns","gridTemplate","gap","OraculoLogoMediosPago","src","alt","Box","OraculoEventTitle","subtitle","styles","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","OraculoEventLeague","OraculoEventScore","name","OraculoTeamPolo","jersey","base","sleeve","stripes","sleevelong","OraculoEventTeamInfo","Skeleton","useHorizontalWheelSplide","hostRef","splideRef","enabled","rafRef","useRef","useEffect","host","onWheel","splide","deltaX","deltaY","direction","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","enableHorizontalWheel","ref","wheelHostRef","prevLengthRef","useImperativeHandle","_a","index","getVisibleRange","Slides","Controller","track","trackWidth","visibleStart","currentWidth","visibleEnd","slide","hasOverflow","list","handleMove","useCallback","isStart","isEnd","React","lengthChanged","handleResize","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","loading","sizes","getVal","k","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","logo","provider","providerName","machine","Typography","GAP","SkCard","r","OraculoGameSlide","layout","gridSkeletonCount","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","redirectHomeWithOutcomes","outcomes","arr","verMasSeccionEnVivo","verMasSeccionSemana","verMasSeccionCombinadas","fetchJerseys","eventIds","useDebouncedValue","delay","debounced","setDebounced","useState","id","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","a","best","line","_e","acc","o","eventOutcomes","Stack","b","OraculoButtonBet","DEFAULT_HOME_JERSEY","DEFAULT_AWAY_JERSEY","getTeamJersey","jerseyEvent","side","role","OraculoEventEnVivoCard","liveData","betOffers","selectedOffer","offer","OraculoEventHeader","_g","_f","_i","_h","_j","_k","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","isLoading","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","KEY","getStore","g","setOraculoExtras","extrasObj","getOraculoExtra","key","clearOraculoExtras","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","top6","handleOpen","juego","showIframe","loadMachine","getGameId","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","handleOpenLive","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","end","OraculoSeccionCasino","onItemClick","buildLoadingSlides","mkItems","n","itm","game","buildVirtualSlides","buildLoadingVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","isMobile","useMediaQuery","showDots","activeIndex","setActiveIndex","navRef","wheelLockRef","wheelUnlockTimerRef","activeSlide","sectionSx","el","THRESHOLD","LOCK_MS","dx","dy","dirNext","renderSlide","desktop","hl1","hl2","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","SPECIALS_GROUPS_URL","loadDataEventSpecial","listData","groupId","SPECIALS_URL","data","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","reqs","extractRequirements","apuestasByEvent","filteredOutcomes","requiredIds","outcomesWithPosition","evento","eventOutcomeSet","combinadoTotal","row","requiredOutcomeIds","allIds","sectionClassName","p","OraculoEventCombinadasCard","OraculoEventEnVivoCardSkeleton","FadeItemWrapper","OraculoSeccionEventoEnVivo","LIVE_EVENTS_URL","jerseys","setJerseys","visibleRange","setVisibleRange","fetchingRef","orderedEventIds","setOrderedEventIds","orderIdsFetchedRef","debouncedVisibleRange","blocked","filterFootballEvents","ev","group","word","loadData","orderIds","response","json","filteredEvents","orderMap","sortedEvents","aIndex","bIndex","interval","BUFFER","from","to","idsToFetch","res","prev","eventId","OraculoEventSemanaCardSkeleton","fetchInBatches","urls","batchSize","signal","batch","responses","u","sortEvents","evs","filterEventsWithinOneWeek","now","oneWeekLater","eventDate","mergeEventOffersOutcome","OraculoSeccionEventoSemana","WEEK_EVENTS_URL","COMMON_QUERY","loadDataWeekEvent","orderedGroupIds","orderResponse","orderJson","football","groups","firstGroups","buildUrls","sub","loadAllGroupEvents","orderEvents","allEvents","allBetOffers","merged","finalEvents","orderedEvents","error","controller","cancelled","sectionStyle","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","safe","bg","DEFAULT_ITEMS","OraculoSeccionMediosPago","split","row1","row2","l","Landing","isComponent","val","isSectionName","LandingComponents","extrasToObject","extras","HttpError","status","statusText","noMostrarSinItems","OraculoPageLandingPreview","sectionsOverride","docId","db","loader","Loader","sections","setSections","setLoading","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","isDesktop","unsubscribe","onSnapshot","doc","snap","fetched","s","fetchSectionData","section","rawUrl","method","params","body","headers","encoded","effectiveSections","fetchedKeysRef","fetchables","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","pl","isArr","arrData","choose","fallback","buildCompProps","hasUrl","compProps","scalars","arr2","varName2","renderStatusBox","renderSingleSection","rawKey","Comp","loadingSec","errorSec","isFullBleed","paddingX","Container"],"mappings":"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"}
|