@opexa/portal-components 0.0.637 → 0.0.638
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.
|
@@ -31,6 +31,20 @@ export interface GameProvidersCarouselProps {
|
|
|
31
31
|
className?: string | ClassNameEntries;
|
|
32
32
|
futureGameProviders?: GameProvider[];
|
|
33
33
|
hasSeeAll?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @default '/providers/<slug>'
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* '/bingo/:slug' // '/bingo/jili'
|
|
39
|
+
* '/bingo/:id' // '/bingo/JILI'
|
|
40
|
+
*
|
|
41
|
+
* Note: use this when serving on server since viewGamesUrl will not work
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
providerUrlMappings?: {
|
|
45
|
+
providers: GameProvider[];
|
|
46
|
+
url: string;
|
|
47
|
+
}[];
|
|
34
48
|
carouselOptions?: {
|
|
35
49
|
breakpoints: {
|
|
36
50
|
1024: {
|
|
@@ -56,5 +56,14 @@ export function GameProvidersCarousel({ hasSeeAll = true, ...props }) {
|
|
|
56
56
|
const classNames = isString(props.className)
|
|
57
57
|
? { root: props.className }
|
|
58
58
|
: (props.className ?? {});
|
|
59
|
-
return (_jsxs("div", { className: classNames.root, children: [_jsxs("div", { className: "flex items-center", children: [_jsx("h2", { className: "font-semibold text-lg", children: props.heading ?? 'Providers' }), _jsx("div", { className: "grow" }), _jsxs("div", { className: "flex items-center justify-center gap-xl", children: [hasSeeAll && (_jsxs(Link, { href: viewAllUrl, className: "flex gap-sm font-semibold text-button-tertiary-fg text-sm", children: ["See All", _jsx(ChevronRightIcon, { className: "size-5 lg:hidden" })] })), _jsxs("div", { className: "hidden lg:flex", children: [_jsx(Button, { variant: "outline", colorScheme: "gray", className: "rounded-r-none border-r-0", onClick: onPrevButtonClick, disabled: prevBtnDisabled, "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-5" }) }), _jsx(Button, { variant: "outline", colorScheme: "gray", className: "rounded-l-none", onClick: onNextButtonClick, disabled: nextBtnDisabled, "aria-label": "Next", children: _jsx(ArrowRightIcon, { className: "size-5" }) })] })] })] }), _jsx("div", { ref: emblaRef, className: twMerge('relative mt-lg overflow-hidden', classNames.thumbnailRootContainer), children: _jsx("div", { className: twMerge('grid auto-cols-[calc((100%-(0.375rem*2))/3)] grid-flow-col grid-rows-1 gap-sm lg:auto-cols-[calc((100%-(0.5rem*5))/6)] lg:gap-md', classNames.thumbnailContainer), children: gameProviders.map((provider) =>
|
|
59
|
+
return (_jsxs("div", { className: classNames.root, children: [_jsxs("div", { className: "flex items-center", children: [_jsx("h2", { className: "font-semibold text-lg", children: props.heading ?? 'Providers' }), _jsx("div", { className: "grow" }), _jsxs("div", { className: "flex items-center justify-center gap-xl", children: [hasSeeAll && (_jsxs(Link, { href: viewAllUrl, className: "flex gap-sm font-semibold text-button-tertiary-fg text-sm", children: ["See All", _jsx(ChevronRightIcon, { className: "size-5 lg:hidden" })] })), _jsxs("div", { className: "hidden lg:flex", children: [_jsx(Button, { variant: "outline", colorScheme: "gray", className: "rounded-r-none border-r-0", onClick: onPrevButtonClick, disabled: prevBtnDisabled, "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-5" }) }), _jsx(Button, { variant: "outline", colorScheme: "gray", className: "rounded-l-none", onClick: onNextButtonClick, disabled: nextBtnDisabled, "aria-label": "Next", children: _jsx(ArrowRightIcon, { className: "size-5" }) })] })] })] }), _jsx("div", { ref: emblaRef, className: twMerge('relative mt-lg overflow-hidden', classNames.thumbnailRootContainer), children: _jsx("div", { className: twMerge('grid auto-cols-[calc((100%-(0.375rem*2))/3)] grid-flow-col grid-rows-1 gap-sm lg:auto-cols-[calc((100%-(0.5rem*5))/6)] lg:gap-md', classNames.thumbnailContainer), children: gameProviders.map((provider) => {
|
|
60
|
+
const url = props.providerUrlMappings
|
|
61
|
+
? (props.providerUrlMappings
|
|
62
|
+
?.find(({ providers }) => providers.includes(provider.id))
|
|
63
|
+
?.url.replace(':slug', provider.slug)
|
|
64
|
+
.replace(':id', provider?.id) ??
|
|
65
|
+
`/providers/${provider.slug}`)
|
|
66
|
+
: null;
|
|
67
|
+
return (_jsx(Link, { href: url ?? viewGamesUrl(provider), className: twMerge('flex h-full w-full items-center overflow-hidden rounded-md bg-brand-800 lg:h-[5.75rem]', classNames.thumbnailRoot), "aria-label": `View ${provider.name} games`, children: _jsx(Image, { src: props.gameProviderImages?.[provider.id] ?? provider.logo, alt: "", width: 300, height: 150, className: twMerge('mx-auto h-auto w-full', classNames.thumbnailImage) }) }, provider.id));
|
|
68
|
+
}) }) })] }));
|
|
60
69
|
}
|