oraculo-ui 0.1.46 → 0.1.48
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 +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +590 -603
- 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/OraculoEventTeamInfo.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/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../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/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.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: 80, md: 160 }, // 80 en móvil, 160 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\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=\"oli-font\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n color: \"#fff\",\r\n }}\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 style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n }}\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\r\n style={{\r\n fontWeight: 400,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {subtitle}\r\n </span>\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 \"./OraculoEventTeamInfo.module.css\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n logo: string;\r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, logo, size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n <img src={logo} alt={name} className={styles.logo} />\r\n <span className={styles.name}>{name}</span>\r\n </div>\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\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?: boolean;\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 }) => void;\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 },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\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 handleMove = useCallback(\r\n (splide: any) => {\r\n const index = splide.index;\r\n const total = splide.length;\r\n const currentPerPage = splide.options.perPage || 1;\r\n const isStart = index === 0;\r\n const isEnd = index >= total - currentPerPage;\r\n\r\n onMove?.({ index, isStart, isEnd, total });\r\n },\r\n [onMove]\r\n );\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\r\n return (\r\n <div 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 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\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\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 >\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 <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\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 OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: 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\r\nconst GAP = 12; // px\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n}) => {\r\n // layout especial: 1 grande + hasta 4 pequeños\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\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 <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n </Box>\r\n )}\r\n\r\n {smalls.map((it, index) => (\r\n <Box\r\n key={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 <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // layout grid 2x2\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 {items.map((it, index) => (\r\n <Box\r\n key={it.id ?? index}\r\n sx={{\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n\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 lg: 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 lg: 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 lg: \"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, lg: 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, lg: 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, lg: 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 {imgSrcDesktopLogo && (\r\n <div className=\"orc-co-logo\">\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"orc-co-desktopContent\">\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\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 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\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\n\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 };\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 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 src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].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={() => console.log(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 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 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 OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\n\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,fondo = \"/assets/img/home/EnVivo/fondo.png\" } : EnVivoEventProps) {\r\n return (\r\n <div style={{\r\n backgroundImage: `url(${fondo})`,\r\n backgroundSize: \"cover\",\r\n height: '160px',\r\n width: '296px',\r\n padding: \"12px 16px\",\r\n borderRadius: \"16px\",\r\n }}>\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 ?? ''}\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\r\n name={event.homeName}\r\n logo=\"/assets/img/home/EnVivo/Juventus.png\"\r\n />\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EnVivo/Racing.png\" />\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 {(betOffers?.[0]?.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 {(betOffers?.[0]?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButton key={index} variant=\"primary\" disabled={item.odds == undefined} onClick={()=>{console.log(item.id);}} >\r\n {item.odds === undefined ? \"X\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButton>\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\n\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\n\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventSemanaCard({event} : SemanaEventProps ) {\r\nfunction formatDate(dateString : string): string {\r\n const date = new Date(dateString);\r\n\r\n const dayShort = date.toLocaleDateString(\"es-ES\", {\r\n weekday: \"short\"\r\n }).toUpperCase();\r\n\r\n const day = date.getDate().toString().padStart(2, \"0\");\r\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n let time = date.toLocaleTimeString(\"es-PE\", {\r\n hour: \"numeric\",\r\n minute: \"2-digit\",\r\n hour12: true\r\n }).toUpperCase();\r\n\r\n // Remove dots from A. M. / P. M.\r\n time = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n return `${dayShort} ${day}/${month} | ${time}`;\r\n}\r\n\r\n return (\r\n <div className={styles.cardContainer}>\r\n <OraculoEventLeague title={event.group ?? ''} />\r\n <div className={styles.cardBackground} >\r\n \r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap> \r\n \r\n <OraculoGridGroup spacing={1} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EventoSemana/Flamengo.png\" size=\"compact\"\r\n />\r\n <OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n <OraculoEventTeamInfo name={event.homeName} logo=\"/assets/img/home/EventoSemana/RealMadrid.png\" size=\"compact\" />\r\n </OraculoGridGroup>\r\n\r\n <OraculoEventDate text={formatDate(event.start)} />\r\n\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n \r\n <div className={styles.jugadas}>\r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{console.log(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n ))}\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n \r\n );\r\n}","import { useRef, useState } 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 React from \"react\";\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 handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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\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}\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 </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={3}\r\n gap=\"16px\"\r\n options={{ autoWidth: false }}\r\n breakpoints={{\r\n 768: { perPage: 1.15, 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={item.image}\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 // minHeight: \"150px\",\r\n // maxHeight: \"150px\",\r\n height: \"150px\",\r\n borderRadius: 8,\r\n display: \"block\",\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","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 { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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\r\n const normalizedItems = useMemo(\r\n () =>\r\n items\r\n .map((item, index) => ({\r\n ...item,\r\n // si no viene orden, usamos el índice (1-based)\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 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 {normalizedItems.slice(0, 6).map((juego) => (\r\n <OraculoGameRankCard\r\n key={juego.machine}\r\n imageUrl={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={juego.orden}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego);\r\n } else {\r\n redirectToGameFromItem(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\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Live\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino-en-vivo?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 onCardClick,\r\n onViewMore,\r\n className,\r\n}) => {\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\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?.()}\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.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego, idx); // usa handler del host\r\n } else {\r\n redirectToGameFromItem(juego); // fallback: redirigir\r\n }\r\n }}\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?.()}\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, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\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) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Casino\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 }));\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({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\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({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\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 slides = buildCasinoSlides(items, mosaicFirst, gridSize);\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 onViewMore?.();\r\n };\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header tipo GridGroup 1fr auto auto */}\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\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\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=\"0px\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\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 onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\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, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\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) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Virtuales\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/juegos-virtuales?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 }));\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({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\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({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\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 slides = buildVirtualSlides(items, mosaicFirst, gridSize);\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 onViewMore?.();\r\n };\r\n\r\n return (\r\n <section >\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header (equivalente a tu GridGroup 1fr auto auto) */}\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\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\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 options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\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 onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) =>\r\n setNavState({ isStart, isEnd })\r\n }\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner, {\r\n // OraculoWelcomeBannerProps,\r\n} from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n // width: \"100vw\",\r\n position: \"relative\" as const,\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // marginLeft: \"-50vw\",\r\n // marginRight: \"-50vw\",\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\r\n const hl1 = headline\r\n const hl2 = headline2\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n\r\n const bgUrl =\r\n backgroundImageUrl ?? \"\";\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n // --- MOBILE: Carrusel con dots ---\r\n if (isMobile) {\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n ...sectionSx,\r\n textAlign: \"center\",\r\n }}\r\n >\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>\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap=\"12px\"\r\n breakpoints={{\r\n 480: {\r\n perPage: 1,\r\n gap: \"8px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n 768: {\r\n perPage: 1,\r\n gap: \"12px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n }}\r\n options={{\r\n autoWidth: false,\r\n }}\r\n renderItem={(it) => <OraculoWelcomeBanner {...it} onButtonClick={items[0].onButtonClick} />}\r\n onMove={({ index, isStart, isEnd }) => {\r\n setNavState({ isStart, isEnd });\r\n setActiveIndex(index);\r\n }}\r\n />\r\n\r\n {showDots && (\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 )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // --- DESKTOP ---\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: 5,\r\n px: 2,\r\n display: \"grid\",\r\n gridTemplateColumns: \"200px auto\",\r\n alignItems: \"center\",\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\r\n sx={{\r\n ...headlineBaseSx,\r\n textAlign: \"left\",\r\n mb: 0,\r\n }}\r\n >\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\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n gap: 4,\r\n }}\r\n >\r\n {items.map((it, idx) => (\r\n <OraculoWelcomeBanner\r\n key={idx}\r\n onButtonClick={it.onButtonClick}\r\n {...it}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\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 { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\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\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\nconst [events, setEvents] = useState([]);\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 console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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\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 acc[a.eventId].push({\r\n ...a,\r\n outcomes: filteredOutcomes\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n const reqs = extractRequirements(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\nasync function loadDataEventSpecial() {\r\n try {\r\n\r\n const groupId = items?.group?.groups?.[0]?.id;\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 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 useEffect(() => {\r\n if (items ) {\r\n loadDataEventSpecial();\r\n }\r\n}, [items]);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 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}\r\n perPage={3.72}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n useIndexAsKey\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 { useRef, useState } 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 React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n console.log('wefwef', items)\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\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 console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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 <OraculoGridGroup spacing={1.5} columns=\"1fr auto auto\" justify=\"start\">\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}\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 </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items?.events?.filter((ev:any) => ev.event.sport === \"FOOTBALL\").sort((a:any, b:any) => new Date(b.event.start).getTime() - new Date(a.event.start).getTime()) ?? []}\r\n perPage={3.395}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 768: { perPage: 1, gap: \"8px\", focus: \"center\", padding: { left: \"16px\", right: \"16px\" }, }, \r\n 1024: { perPage: 2.5, gap: \"10px\", padding: { right: \"16px\" } },\r\n }}\r\n renderItem={(p) => <OraculoEventEnVivoCard {...p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState, useEffect } 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 OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\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 const now = new Date(); // current date/time\r\n const startTime = now.toISOString(); // now → ISO format\r\n\r\n const end = new Date(now);\r\n end.setDate(end.getDate() + 7); // add 7 days\r\n const endTime = end.toISOString();\r\n const WEEK_EVENTS_URL = `https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1763653337357&startTime=${startTime}&endTime=${endTime}&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions`\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\nconst [events, setEvents] = useState([]);\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadDataWeekEvent() {\r\n try {\r\n const eventIds = items.events.map((event: any) => event.event?.id);\r\n const idsQuery = eventIds.map((id:number) => `id=${id}`).join(\"&\");\r\n const baseUrl = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/betoffer/selected/combined_layout/event\";\r\n const finalUrl = `${baseUrl}/${eventIds[0]}?${idsQuery}&lang=es_PE&market=PE`;\r\n loadDataEvent(finalUrl)\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function loadDataEvent(url : string) {\r\n try {\r\n const response = await fetch(url);\r\n const data = await response.json();\r\n const eventsOnly = data.events.map((item:any) => item.event);\r\n const betOffersOnly = data.events.flatMap((item:any) => item.betOffers || []);\r\n setEvents(mergeEventOffersOutcome(eventsOnly, betOffersOnly)); \r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n \r\n function mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n const filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n const apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n if (!acc[b.eventId]) acc[b.eventId] = [];\r\n acc[b.eventId].push(b);\r\n return acc;\r\n }, {});\r\n\r\n return eventos\r\n .filter((evento : any) => apuestasByEvent[evento.id]) \r\n .map((evento: any) => ({\r\n ...evento,\r\n outcome: apuestasByEvent[evento.id],\r\n }));\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.events.length > 0) {\r\n loadDataWeekEvent();\r\n }\r\n}, [items]);\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 <div className={styles.wrapper}>\r\n\r\n <div className={styles.container}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoSectionTitle title=\"Eventos de la semana\" />\r\n <div className={styles.buttonWrapper}>\r\n <OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n </div>\r\n </Stack>\r\n </div>\r\n\r\n <div style={{ minWidth: 0 }}>\r\n\r\n \r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events}\r\n perPage={3.5}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventSemanaCard event ={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nconst DEFAULT_BACKGROUNDS = [\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n];\r\n\r\nconst DEFAULT_ITEMS: OraculoBannerItem[] = [\r\n {\r\n id: 1,\r\n label: \"APUESTAS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon1.svg\",\r\n onclick: () => console.log(\"APUESTAS\"),\r\n },\r\n {\r\n id: 2,\r\n label: \"EXPLORAR\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon2.svg\",\r\n onclick: () => console.log(\"EXPLORAR\"),\r\n },\r\n {\r\n id: 3,\r\n label: \"TOP JUEGOS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon3.svg\",\r\n onclick: () => console.log(\"TOP JUEGOS\"),\r\n },\r\n {\r\n id: 4,\r\n label: \"MISIONES\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon4.svg\",\r\n onclick: () => console.log(\"MISIONES\"),\r\n },\r\n];\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds = DEFAULT_BACKGROUNDS,\r\n items = DEFAULT_ITEMS,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n\r\n const totalDots = backgrounds.length || 1;\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n overflow: \"visible\",\r\n pb: { xs: 7, sm: 8 },\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 items={backgrounds}\r\n perPage={1}\r\n gap=\"0px\"\r\n options={{\r\n type: \"loop\",\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n }}\r\n onMove={({ index }) => setActiveDot(index)}\r\n renderItem={(bg) => (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\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\r\n srcSet={bg.desktopSrc}\r\n media=\"(min-width:800px)\"\r\n />\r\n <source\r\n srcSet={bg.mobileSrc}\r\n media=\"(max-width:799px)\"\r\n />\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 inset: 0,\r\n background:\r\n \"linear-gradient(180deg, rgba(0,0,0,0) 60%, rgba(0,0,0,.75) 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: 36, sm: 38 },\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: \"90%\",\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n py: 1.5,\r\n px: 1,\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 color: \"#FFFFFF\",\r\n minWidth: 68,\r\n cursor: item.onclick ? \"pointer\" : \"default\",\r\n }}\r\n onClick={() => item.onclick?.()}\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: 28, md: 32 },\r\n height: { xs: 28, md: 32 },\r\n mb: { xs: 0.5, md: 0 },\r\n mr: { xs: 0, md: 4 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: 12,\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: { xs: \"center\", md: \"left\" },\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 rows?: LogoType[][];\r\n};\r\n\r\nconst DEFAULT_ROWS: LogoType[][] = [\r\n [\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 ],\r\n [\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\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n rows = DEFAULT_ROWS,\r\n}: Props) {\r\n // aplanado para la grilla\r\n const flat = rows.flat();\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 {/* underbar con gradiente, sin CSS */}\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 {/* móvil: usa tus filas originales */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n {rows.map((r, i) => (\r\n <Stack\r\n key={i}\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={2.5} // ~20px\r\n flexWrap=\"wrap\"\r\n >\r\n {r.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Stack>\r\n ))}\r\n </Box>\r\n\r\n {/* desktop: grilla auto-fit */}\r\n <Box\r\n sx={{\r\n mt: 3,\r\n display: { xs: \"none\", md: \"grid\" },\r\n gap: { xs: 2.5, md: 2.75 },\r\n justifyItems: \"center\",\r\n alignItems: \"center\",\r\n gridTemplateColumns: { md: \"repeat(auto-fit, 160px)\"},\r\n justifyContent: { md: \"center\" },\r\n }}\r\n >\r\n {flat.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Box>\r\n\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 } 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\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 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\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}\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 OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n}) => {\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>(\r\n []\r\n );\r\n const [loading, setLoading] = useState(false);\r\n const [componentMap, setComponentMap] = useState<ComponentMap>({});\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 // 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 arraydemo = [\r\n {\r\n apiMethod: \"GET\",\r\n order: 11,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoEnVivo\",\r\n id: 11,\r\n title: \"Envivo\",\r\n apiUrl:\r\n \"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\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n {\r\n apiMethod: \"GET\",\r\n order: 12,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoSemana\",\r\n id: 12,\r\n title: \"Evento semana\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764401676636&startTime=2025-11-29T06:00:00.000Z&endTime=2026-06-25T15:00:00.000Z&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions\",\r\n visible: true,\r\n apiParams: [],\r\n },\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 // 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 && !componentMap[key]);\r\n\r\n if (toLoad.length === 0) return;\r\n\r\n for (const key of toLoad) {\r\n lazyLoadComponent(key);\r\n }\r\n }, [sectionsOverride, sections, componentMap]);\r\n\r\n const fetchSectionData = async (\r\n section: OraculoPageLandingPreviewSection\r\n ): Promise<SectionPayload> => {\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 lazyLoadComponent = (rawKey: string) => {\r\n import(`../organisms/${rawKey}/${rawKey}`)\r\n .then((mod: Record<string, unknown>) => {\r\n const ns = mod as {\r\n default?: React.ComponentType<Record<string, unknown>>;\r\n } & Record<string, React.ComponentType<Record<string, unknown>>>;\r\n const C = ns.default ?? ns[rawKey];\r\n if (C) setComponentMap((prev) => ({ ...prev, [rawKey]: C }));\r\n })\r\n .catch((e) => {\r\n console.error(`Error cargando componente en OP ${rawKey}:`, e);\r\n });\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 [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n ].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\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 // primero revisamos el mapa estático\r\n const Comp =\r\n // STATIC_COMPONENTS[rawKey] || componentMap[rawKey];\r\n componentMap[rawKey] || 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\r\n return (\r\n <div\r\n key={s.id}\r\n style={{\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }}\r\n >\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return <div className=\"text-xs text-gray-400\">Cargando preview...</div>;\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 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 direction=\"column\" spacing={8} useFlexGap>\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","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","styles","OraculoEventLeague","OraculoEventScore","name","OraculoEventTeamInfo","logo","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","ref","splideRef","useRef","useImperativeHandle","_a","index","handleMove","useCallback","splide","currentPerPage","isStart","isEnd","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","sizes","getVal","k","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","provider","providerName","machine","Typography","GAP","OraculoGameSlide","layout","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","outcomes","a","best","line","acc","o","eventOutcomes","Stack","OraculoEventEnVivoCard","liveData","betOffers","fondo","OraculoEventHeader","_e","_g","_f","_i","_h","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","useState","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","redirectToGameFromItem","game","machine_name","external_id","providerCode","machineCode","gameName","externalId","typeParam","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","b","juego","getGameId","g","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","end","OraculoSeccionCasino","onItemClick","slide","itm","buildVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","hl1","hl2","isMobile","useMediaQuery","showDots","sectionSx","activeIndex","setActiveIndex","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","apuestasByEvent","filteredOutcomes","reqs","extractRequirements","evento","eventOutcomeSet","combinadoTotal","r","id","row","requiredOutcomeIds","allIds","loadDataEventSpecial","groupId","SPECIALS_URL","data","useEffect","p","OraculoEventCombinadasCard","OraculoSeccionEventoEnVivo","ev","OraculoSeccionEventoSemana","now","loadDataWeekEvent","eventIds","idsQuery","finalUrl","loadDataEvent","eventsOnly","betOffersOnly","mergeEventOffersOutcome","DEFAULT_BACKGROUNDS","DEFAULT_ITEMS","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","bg","DEFAULT_ROWS","OraculoSeccionMediosPago","rows","flat","l","Landing","isComponent","val","isSectionName","key","LandingComponents","HttpError","status","statusText","OraculoPageLandingPreview","sectionsOverride","docId","db","sections","setSections","loading","setLoading","componentMap","setComponentMap","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","unsubscribe","onSnapshot","doc","snap","fetched","s","error","toLoad","lazyLoadComponent","fetchSectionData","section","rawUrl","method","params","body","headers","u","encoded","res","effectiveSections","fetchedKeysRef","React","fetchables","prev","json","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","base","merged","pl","isArr","arrData","choose","fallback","rawKey","mod","ns","C","buildCompProps","hasUrl","compProps","scalars","arr","renderStatusBox","renderSingleSection","Comp","loadingSec","errorSec","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/OraculoEventTeamInfo.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/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../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/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.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: 80, md: 160 }, // 80 en móvil, 160 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\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=\"oli-font\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n color: \"#fff\",\r\n }}\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 style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n }}\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\r\n style={{\r\n fontWeight: 400,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {subtitle}\r\n </span>\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 \"./OraculoEventTeamInfo.module.css\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n logo: string;\r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, logo, size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n <img src={logo} alt={name} className={styles.logo} />\r\n <span className={styles.name}>{name}</span>\r\n </div>\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\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?: boolean;\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 }) => void;\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 },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\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 handleMove = useCallback(\r\n (splide: any) => {\r\n const index = splide.index;\r\n const total = splide.length;\r\n const currentPerPage = splide.options.perPage || 1;\r\n const isStart = index === 0;\r\n const isEnd = index >= total - currentPerPage;\r\n\r\n onMove?.({ index, isStart, isEnd, total });\r\n },\r\n [onMove]\r\n );\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\r\n return (\r\n <div 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 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\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\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 >\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 <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\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 OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: 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\r\nconst GAP = 12; // px\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n}) => {\r\n // layout especial: 1 grande + hasta 4 pequeños\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\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 <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n </Box>\r\n )}\r\n\r\n {smalls.map((it, index) => (\r\n <Box\r\n key={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 <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // layout grid 2x2\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 {items.map((it, index) => (\r\n <Box\r\n key={it.id ?? index}\r\n sx={{\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n\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 lg: 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 lg: 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 lg: \"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, lg: 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, lg: 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, lg: 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 {imgSrcDesktopLogo && (\r\n <div className=\"orc-co-logo\">\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"orc-co-desktopContent\">\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\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 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\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\n\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 };\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 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 src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].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={() => console.log(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 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 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 OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\n\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,fondo = \"/assets/img/home/EnVivo/fondo.png\" } : EnVivoEventProps) {\r\n return (\r\n <div style={{\r\n backgroundImage: `url(${fondo})`,\r\n backgroundSize: \"cover\",\r\n height: '160px',\r\n width: '296px',\r\n padding: \"12px 16px\",\r\n borderRadius: \"16px\",\r\n }}>\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 ?? ''}\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\r\n name={event.homeName}\r\n logo=\"/assets/img/home/EnVivo/Juventus.png\"\r\n />\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EnVivo/Racing.png\" />\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 {(betOffers?.[0]?.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 {(betOffers?.[0]?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButton key={index} variant=\"primary\" disabled={item.odds == undefined} onClick={()=>{console.log(item.id);}} >\r\n {item.odds === undefined ? \"X\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButton>\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\n\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\n\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventSemanaCard({event} : SemanaEventProps ) {\r\nfunction formatDate(dateString : string): string {\r\n const date = new Date(dateString);\r\n\r\n const dayShort = date.toLocaleDateString(\"es-ES\", {\r\n weekday: \"short\"\r\n }).toUpperCase();\r\n\r\n const day = date.getDate().toString().padStart(2, \"0\");\r\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n let time = date.toLocaleTimeString(\"es-PE\", {\r\n hour: \"numeric\",\r\n minute: \"2-digit\",\r\n hour12: true\r\n }).toUpperCase();\r\n\r\n // Remove dots from A. M. / P. M.\r\n time = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n return `${dayShort} ${day}/${month} | ${time}`;\r\n}\r\n\r\n return (\r\n <div className={styles.cardContainer}>\r\n <OraculoEventLeague title={event.group ?? ''} />\r\n <div className={styles.cardBackground} >\r\n \r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap> \r\n \r\n <OraculoGridGroup spacing={1} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EventoSemana/Flamengo.png\" size=\"compact\"\r\n />\r\n <OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n <OraculoEventTeamInfo name={event.homeName} logo=\"/assets/img/home/EventoSemana/RealMadrid.png\" size=\"compact\" />\r\n </OraculoGridGroup>\r\n\r\n <OraculoEventDate text={formatDate(event.start)} />\r\n\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n \r\n <div className={styles.jugadas}>\r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{console.log(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n ))}\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n \r\n );\r\n}","import { useRef, useState } 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 React from \"react\";\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 handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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\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}\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 </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={3}\r\n gap=\"16px\"\r\n options={{ autoWidth: false }}\r\n breakpoints={{\r\n 768: { perPage: 1.15, 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={item.image}\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 // minHeight: \"150px\",\r\n // maxHeight: \"150px\",\r\n height: \"150px\",\r\n borderRadius: 8,\r\n display: \"block\",\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","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 { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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\r\n const normalizedItems = useMemo(\r\n () =>\r\n items\r\n .map((item, index) => ({\r\n ...item,\r\n // si no viene orden, usamos el índice (1-based)\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 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 {normalizedItems.slice(0, 6).map((juego) => (\r\n <OraculoGameRankCard\r\n key={juego.machine}\r\n imageUrl={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={juego.orden}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego);\r\n } else {\r\n redirectToGameFromItem(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\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Live\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino-en-vivo?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 onCardClick,\r\n onViewMore,\r\n className,\r\n}) => {\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\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?.()}\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.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego, idx); // usa handler del host\r\n } else {\r\n redirectToGameFromItem(juego); // fallback: redirigir\r\n }\r\n }}\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?.()}\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, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\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) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Casino\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 }));\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({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\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({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\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 slides = buildCasinoSlides(items, mosaicFirst, gridSize);\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 onViewMore?.();\r\n };\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header tipo GridGroup 1fr auto auto */}\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\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\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=\"0px\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\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 onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\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, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\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) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Virtuales\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/juegos-virtuales?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\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 }));\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({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\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({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\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 slides = buildVirtualSlides(items, mosaicFirst, gridSize);\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 onViewMore?.();\r\n };\r\n\r\n return (\r\n <section >\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header (equivalente a tu GridGroup 1fr auto auto) */}\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\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\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 options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\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 onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) =>\r\n setNavState({ isStart, isEnd })\r\n }\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { 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, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner, {\r\n // OraculoWelcomeBannerProps,\r\n} from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n // width: \"100vw\",\r\n position: \"relative\" as const,\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // marginLeft: \"-50vw\",\r\n // marginRight: \"-50vw\",\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\r\n const hl1 = headline\r\n const hl2 = headline2\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n\r\n const bgUrl =\r\n backgroundImageUrl ?? \"\";\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n // --- MOBILE: Carrusel con dots ---\r\n if (isMobile) {\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n ...sectionSx,\r\n textAlign: \"center\",\r\n }}\r\n >\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>\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap=\"12px\"\r\n breakpoints={{\r\n 480: {\r\n perPage: 1,\r\n gap: \"8px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n 768: {\r\n perPage: 1,\r\n gap: \"12px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n }}\r\n options={{\r\n autoWidth: false,\r\n }}\r\n renderItem={(it) => <OraculoWelcomeBanner {...it} onButtonClick={items[0].onButtonClick} />}\r\n onMove={({ index, isStart, isEnd }) => {\r\n setNavState({ isStart, isEnd });\r\n setActiveIndex(index);\r\n }}\r\n />\r\n\r\n {showDots && (\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 )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // --- DESKTOP ---\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: 5,\r\n px: 2,\r\n display: \"grid\",\r\n gridTemplateColumns: \"200px auto\",\r\n alignItems: \"center\",\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\r\n sx={{\r\n ...headlineBaseSx,\r\n textAlign: \"left\",\r\n mb: 0,\r\n }}\r\n >\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\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n gap: 4,\r\n }}\r\n >\r\n {items.map((it, idx) => (\r\n <OraculoWelcomeBanner\r\n key={idx}\r\n onButtonClick={it.onButtonClick}\r\n {...it}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\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 { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\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\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\nconst [events, setEvents] = useState([]);\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 console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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\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 acc[a.eventId].push({\r\n ...a,\r\n outcomes: filteredOutcomes\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n const reqs = extractRequirements(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\nasync function loadDataEventSpecial() {\r\n try {\r\n\r\n const groupId = items?.group?.groups?.[0]?.id;\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 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 useEffect(() => {\r\n if (items ) {\r\n loadDataEventSpecial();\r\n }\r\n}, [items]);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 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}\r\n perPage={3.72}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n useIndexAsKey\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 { useRef, useState } 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 React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n console.log('wefwef', items)\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\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 console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\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 <OraculoGridGroup spacing={1.5} columns=\"1fr auto auto\" justify=\"start\">\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}\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 </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items?.events?.filter((ev:any) => ev.event.sport === \"FOOTBALL\").sort((a:any, b:any) => new Date(b.event.start).getTime() - new Date(a.event.start).getTime()) ?? []}\r\n perPage={3.395}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 768: { perPage: 1, gap: \"8px\", focus: \"center\", padding: { left: \"16px\", right: \"16px\" }, }, \r\n 1024: { perPage: 2.5, gap: \"10px\", padding: { right: \"16px\" } },\r\n }}\r\n renderItem={(p) => <OraculoEventEnVivoCard {...p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState, useEffect } 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 OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\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 const now = new Date(); // current date/time\r\n const startTime = now.toISOString(); // now → ISO format\r\n\r\n const end = new Date(now);\r\n end.setDate(end.getDate() + 7); // add 7 days\r\n const endTime = end.toISOString();\r\n const WEEK_EVENTS_URL = `https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1763653337357&startTime=${startTime}&endTime=${endTime}&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions`\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\nconst [events, setEvents] = useState([]);\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadDataWeekEvent() {\r\n try {\r\n const eventIds = items.events.map((event: any) => event.event?.id);\r\n const idsQuery = eventIds.map((id:number) => `id=${id}`).join(\"&\");\r\n const baseUrl = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/betoffer/selected/combined_layout/event\";\r\n const finalUrl = `${baseUrl}/${eventIds[0]}?${idsQuery}&lang=es_PE&market=PE`;\r\n loadDataEvent(finalUrl)\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function loadDataEvent(url : string) {\r\n try {\r\n const response = await fetch(url);\r\n const data = await response.json();\r\n const eventsOnly = data.events.map((item:any) => item.event);\r\n const betOffersOnly = data.events.flatMap((item:any) => item.betOffers || []);\r\n setEvents(mergeEventOffersOutcome(eventsOnly, betOffersOnly)); \r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n \r\n function mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n const filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n const apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n if (!acc[b.eventId]) acc[b.eventId] = [];\r\n acc[b.eventId].push(b);\r\n return acc;\r\n }, {});\r\n\r\n return eventos\r\n .filter((evento : any) => apuestasByEvent[evento.id]) \r\n .map((evento: any) => ({\r\n ...evento,\r\n outcome: apuestasByEvent[evento.id],\r\n }));\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.events.length > 0) {\r\n loadDataWeekEvent();\r\n }\r\n}, [items]);\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 <div className={styles.wrapper}>\r\n\r\n <div className={styles.container}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoSectionTitle title=\"Eventos de la semana\" />\r\n <div className={styles.buttonWrapper}>\r\n <OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n </div>\r\n </Stack>\r\n </div>\r\n\r\n <div style={{ minWidth: 0 }}>\r\n\r\n \r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events}\r\n perPage={3.5}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventSemanaCard event ={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nconst DEFAULT_BACKGROUNDS = [\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n];\r\n\r\nconst DEFAULT_ITEMS: OraculoBannerItem[] = [\r\n {\r\n id: 1,\r\n label: \"APUESTAS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon1.svg\",\r\n onclick: () => console.log(\"APUESTAS\"),\r\n },\r\n {\r\n id: 2,\r\n label: \"EXPLORAR\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon2.svg\",\r\n onclick: () => console.log(\"EXPLORAR\"),\r\n },\r\n {\r\n id: 3,\r\n label: \"TOP JUEGOS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon3.svg\",\r\n onclick: () => console.log(\"TOP JUEGOS\"),\r\n },\r\n {\r\n id: 4,\r\n label: \"MISIONES\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon4.svg\",\r\n onclick: () => console.log(\"MISIONES\"),\r\n },\r\n];\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds = DEFAULT_BACKGROUNDS,\r\n items = DEFAULT_ITEMS,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n\r\n const totalDots = backgrounds.length || 1;\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n overflow: \"visible\",\r\n pb: { xs: 7, sm: 8 },\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 items={backgrounds}\r\n perPage={1}\r\n gap=\"0px\"\r\n options={{\r\n type: \"loop\",\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n }}\r\n onMove={({ index }) => setActiveDot(index)}\r\n renderItem={(bg) => (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\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\r\n srcSet={bg.desktopSrc}\r\n media=\"(min-width:800px)\"\r\n />\r\n <source\r\n srcSet={bg.mobileSrc}\r\n media=\"(max-width:799px)\"\r\n />\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 inset: 0,\r\n background:\r\n \"linear-gradient(180deg, rgba(0,0,0,0) 60%, rgba(0,0,0,.75) 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: 36, sm: 38 },\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: \"90%\",\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n py: 1.5,\r\n px: 1,\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 color: \"#FFFFFF\",\r\n minWidth: 68,\r\n cursor: item.onclick ? \"pointer\" : \"default\",\r\n }}\r\n onClick={() => item.onclick?.()}\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: 28, md: 32 },\r\n height: { xs: 28, md: 32 },\r\n mb: { xs: 0.5, md: 0 },\r\n mr: { xs: 0, md: 4 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: 12,\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: { xs: \"center\", md: \"left\" },\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 rows?: LogoType[][];\r\n};\r\n\r\nconst DEFAULT_ROWS: LogoType[][] = [\r\n [\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 ],\r\n [\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\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n rows = DEFAULT_ROWS,\r\n}: Props) {\r\n // aplanado para la grilla\r\n const flat = rows.flat();\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 {/* underbar con gradiente, sin CSS */}\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 {/* móvil: usa tus filas originales */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n {rows.map((r, i) => (\r\n <Stack\r\n key={i}\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={2.5} // ~20px\r\n flexWrap=\"wrap\"\r\n >\r\n {r.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Stack>\r\n ))}\r\n </Box>\r\n\r\n {/* desktop: grilla auto-fit */}\r\n <Box\r\n sx={{\r\n mt: 3,\r\n display: { xs: \"none\", md: \"grid\" },\r\n gap: { xs: 2.5, md: 2.75 },\r\n justifyItems: \"center\",\r\n alignItems: \"center\",\r\n gridTemplateColumns: { md: \"repeat(auto-fit, 160px)\"},\r\n justifyContent: { md: \"center\" },\r\n }}\r\n >\r\n {flat.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Box>\r\n\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 } 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\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 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\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}\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 OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n}) => {\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>(\r\n []\r\n );\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 // 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 arraydemo = [\r\n {\r\n apiMethod: \"GET\",\r\n order: 11,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoEnVivo\",\r\n id: 11,\r\n title: \"Envivo\",\r\n apiUrl:\r\n \"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\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n {\r\n apiMethod: \"GET\",\r\n order: 12,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoSemana\",\r\n id: 12,\r\n title: \"Evento semana\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764401676636&startTime=2025-11-29T06:00:00.000Z&endTime=2026-06-25T15:00:00.000Z&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions\",\r\n visible: true,\r\n apiParams: [],\r\n },\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 // 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 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 [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n ].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\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 // primero revisamos el mapa estático\r\n const Comp =\r\n 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\r\n return (\r\n <div\r\n key={s.id}\r\n style={{\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }}\r\n >\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return <div className=\"text-xs text-gray-400\">Cargando preview...</div>;\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 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 direction=\"column\" spacing={8} useFlexGap>\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","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","styles","OraculoEventLeague","OraculoEventScore","name","OraculoEventTeamInfo","logo","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","ref","splideRef","useRef","useImperativeHandle","_a","index","handleMove","useCallback","splide","currentPerPage","isStart","isEnd","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","sizes","getVal","k","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","provider","providerName","machine","Typography","GAP","OraculoGameSlide","layout","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","outcomes","a","best","line","acc","o","eventOutcomes","Stack","OraculoEventEnVivoCard","liveData","betOffers","fondo","OraculoEventHeader","_e","_g","_f","_i","_h","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","useState","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","redirectToGameFromItem","game","machine_name","external_id","providerCode","machineCode","gameName","externalId","typeParam","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","b","juego","getGameId","g","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","end","OraculoSeccionCasino","onItemClick","slide","itm","buildVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","hl1","hl2","isMobile","useMediaQuery","showDots","sectionSx","activeIndex","setActiveIndex","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","apuestasByEvent","filteredOutcomes","reqs","extractRequirements","evento","eventOutcomeSet","combinadoTotal","r","id","row","requiredOutcomeIds","allIds","loadDataEventSpecial","groupId","SPECIALS_URL","data","useEffect","p","OraculoEventCombinadasCard","OraculoSeccionEventoEnVivo","ev","OraculoSeccionEventoSemana","now","loadDataWeekEvent","eventIds","idsQuery","finalUrl","loadDataEvent","eventsOnly","betOffersOnly","mergeEventOffersOutcome","DEFAULT_BACKGROUNDS","DEFAULT_ITEMS","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","bg","DEFAULT_ROWS","OraculoSeccionMediosPago","rows","flat","l","Landing","isComponent","val","isSectionName","key","LandingComponents","HttpError","status","statusText","OraculoPageLandingPreview","sectionsOverride","docId","db","sections","setSections","loading","setLoading","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","unsubscribe","onSnapshot","doc","snap","fetched","s","error","fetchSectionData","section","rawUrl","method","params","body","headers","u","encoded","res","effectiveSections","fetchedKeysRef","React","fetchables","prev","json","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","base","merged","pl","isArr","arrData","choose","fallback","buildCompProps","hasUrl","compProps","scalars","arr","renderStatusBox","renderSingleSection","rawKey","Comp","loadingSec","errorSec","Container"],"mappings":"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"}
|