@opexa/portal-components 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/handlers.ts","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addDays.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subMinutes.js"],"sourcesContent":["import {\r\n authenticate,\r\n createSession,\r\n destroySession,\r\n refreshSession,\r\n type Authenticator,\r\n} from '@opexa/portal-sdk-core';\r\nimport { addDays, addMinutes, subMinutes } from 'date-fns';\r\nimport { NextRequest, NextResponse } from 'next/server';\r\nimport { z } from 'zod';\r\nimport {\r\n ACCESS_TOKEN_COOKIE_NAME,\r\n ENVIRONMENT,\r\n PLATFORM_CODE,\r\n REFRESH_TOKEN_COOKIE_NAME,\r\n} from './constants';\r\nimport type { ApiResponse } from './types';\r\n\r\nconst CreateSessionDefinition = z.union([\r\n z.object({\r\n type: z.literal('NAME_AND_PASSWORD'),\r\n name: z.string(),\r\n password: z.string(),\r\n }),\r\n z.object({\r\n type: z.literal('MOBILE_NUMBER'),\r\n mobileNumber: z.string(),\r\n verificationCode: z.string(),\r\n }),\r\n z.object({\r\n type: z.literal('MAYA'),\r\n session: z.string(),\r\n }),\r\n z.object({\r\n type: z.union([z.literal('SOCIALS'), z.literal('CABINET'), z.literal('SINGLE_USE_TOKEN')]),\r\n token: z.string(),\r\n }),\r\n]);\r\n\r\nconst AuthenticateDefinition = z.object({\r\n type: z.literal('SECURITY_QUESTION'),\r\n token: z.string(),\r\n secretAnswer: z.string(),\r\n});\r\n\r\ntype GetSessionResponse =\r\n | {\r\n status: 'authenticated';\r\n token: string;\r\n }\r\n | {\r\n status: 'unauthenticated';\r\n };\r\n\r\nexport const GET = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n) => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * GET -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;\r\n const refreshToken = request.cookies.get(REFRESH_TOKEN_COOKIE_NAME)?.value;\r\n\r\n if (!refreshToken) {\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'unauthenticated',\r\n },\r\n });\r\n\r\n response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n\r\n if (!accessToken) {\r\n try {\r\n const data = await refreshSession({\r\n headers: {\r\n Authorization: `Bearer ${refreshToken}`,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'authenticated',\r\n token: data.accessToken,\r\n },\r\n });\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, data.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n return response;\r\n } catch {\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'unauthenticated',\r\n },\r\n });\r\n\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n }\r\n\r\n return NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'authenticated',\r\n token: accessToken,\r\n },\r\n });\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n\r\nexport const DELETE = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n) => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * DELETE -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;\r\n\r\n if (accessToken) {\r\n await destroySession({\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n }\r\n\r\n const response = NextResponse.json<ApiResponse>({\r\n ok: true,\r\n });\r\n\r\n response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n\r\nexport const POST = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n): Promise<NextResponse> => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * POST -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const body = await request.json();\r\n const parsed = CreateSessionDefinition.safeParse(body);\r\n\r\n if (!parsed.success) {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: parsed.error.issues[0].message,\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n\r\n try {\r\n const res = await createSession(parsed.data, {\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n if (res.authenticator) {\r\n return NextResponse.json<ApiResponse<Authenticator | null>>({\r\n ok: true,\r\n data: res.authenticator,\r\n });\r\n }\r\n\r\n const response = NextResponse.json<ApiResponse<Authenticator | null>>(\r\n { ok: true, data: null },\r\n { status: 201 },\r\n );\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {\r\n expires: subMinutes(addDays(new Date(), 30), 1),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n return response;\r\n } catch {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Unauthorized',\r\n },\r\n { status: 401 },\r\n );\r\n }\r\n }\r\n\r\n /*\r\n *\r\n * POST -> /api/authenticate\r\n *\r\n */\r\n\r\n if (path === 'authenticate') {\r\n const body = await request.json();\r\n const parsed = AuthenticateDefinition.safeParse(body);\r\n\r\n if (!parsed.success) {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: parsed.error.issues[0].message,\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n\r\n try {\r\n const res = await authenticate(parsed.data, {\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n const response = NextResponse.json<ApiResponse>({ ok: true }, { status: 201 });\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n });\r\n\r\n response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {\r\n expires: subMinutes(addDays(new Date(), 30), 1),\r\n httpOnly: true,\r\n });\r\n\r\n return response;\r\n } catch {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Unauthorized',\r\n },\r\n { status: 401 },\r\n );\r\n }\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { addMinutes } from \"./addMinutes.js\";\n\n/**\n * The {@link subMinutes} function options.\n */\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the minutes subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport function subMinutes(date, amount, options) {\n return addMinutes(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMinutes;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/lib/handlers.ts"],"sourcesContent":["import {\r\n authenticate,\r\n createSession,\r\n destroySession,\r\n refreshSession,\r\n type Authenticator,\r\n} from '@opexa/portal-sdk-core';\r\nimport { addDays, addMinutes, subMinutes } from 'date-fns';\r\nimport { NextRequest, NextResponse } from 'next/server';\r\nimport { z } from 'zod';\r\nimport {\r\n ACCESS_TOKEN_COOKIE_NAME,\r\n BYPASS_RECAPTCHA,\r\n ENVIRONMENT,\r\n PLATFORM_CODE,\r\n RECAPTCHA_HEADER_KEY,\r\n REFRESH_TOKEN_COOKIE_NAME,\r\n} from './constants';\r\nimport type { ApiResponse } from './types';\r\n\r\nconst CreateSessionDefinition = z.union([\r\n z.object({\r\n type: z.literal('NAME_AND_PASSWORD'),\r\n name: z.string(),\r\n password: z.string(),\r\n }),\r\n z.object({\r\n type: z.literal('MOBILE_NUMBER'),\r\n mobileNumber: z.string(),\r\n verificationCode: z.string(),\r\n }),\r\n z.object({\r\n type: z.literal('MAYA'),\r\n session: z.string(),\r\n }),\r\n z.object({\r\n type: z.union([\r\n z.literal('SOCIALS'),\r\n z.literal('CABINET'),\r\n z.literal('SINGLE_USE_TOKEN'),\r\n ]),\r\n token: z.string(),\r\n }),\r\n]);\r\n\r\nconst AuthenticateDefinition = z.object({\r\n type: z.literal('SECURITY_QUESTION'),\r\n token: z.string(),\r\n secretAnswer: z.string(),\r\n});\r\n\r\ntype GetSessionResponse =\r\n | {\r\n status: 'authenticated';\r\n token: string;\r\n }\r\n | {\r\n status: 'unauthenticated';\r\n };\r\n\r\nexport const GET = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n) => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * GET -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;\r\n const refreshToken = request.cookies.get(REFRESH_TOKEN_COOKIE_NAME)?.value;\r\n\r\n if (!refreshToken) {\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'unauthenticated',\r\n },\r\n });\r\n\r\n response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n\r\n if (!accessToken) {\r\n try {\r\n const data = await refreshSession({\r\n headers: {\r\n Authorization: `Bearer ${refreshToken}`,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'authenticated',\r\n token: data.accessToken,\r\n },\r\n });\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, data.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n return response;\r\n } catch {\r\n const response = NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'unauthenticated',\r\n },\r\n });\r\n\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n }\r\n\r\n return NextResponse.json<ApiResponse<GetSessionResponse>>({\r\n ok: true,\r\n data: {\r\n status: 'authenticated',\r\n token: accessToken,\r\n },\r\n });\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n\r\nexport const DELETE = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n) => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * DELETE -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;\r\n\r\n if (accessToken) {\r\n await destroySession({\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n }\r\n\r\n const response = NextResponse.json<ApiResponse>({\r\n ok: true,\r\n });\r\n\r\n response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);\r\n response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);\r\n\r\n return response;\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n\r\nexport const POST = async (\r\n request: NextRequest,\r\n { params }: { params: Promise<{ auth: string[] }> },\r\n): Promise<NextResponse> => {\r\n const { auth } = await params;\r\n const path = auth[0];\r\n\r\n /*\r\n *\r\n * POST -> /api/sessions\r\n *\r\n */\r\n\r\n if (path === 'sessions') {\r\n const body = await request.json();\r\n const parsed = CreateSessionDefinition.safeParse(body);\r\n const recaptcha = request.headers.get(RECAPTCHA_HEADER_KEY);\r\n\r\n if (!parsed.success) {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: parsed.error.issues[0].message,\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n\r\n try {\r\n const res = await createSession(parsed.data, {\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n ...(recaptcha && {\r\n [RECAPTCHA_HEADER_KEY]: recaptcha,\r\n }),\r\n ...(BYPASS_RECAPTCHA && {\r\n 'Test-Pass': '',\r\n }),\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n if (res.authenticator) {\r\n return NextResponse.json<ApiResponse<Authenticator | null>>({\r\n ok: true,\r\n data: res.authenticator,\r\n });\r\n }\r\n\r\n const response = NextResponse.json<ApiResponse<Authenticator | null>>(\r\n { ok: true, data: null },\r\n { status: 201 },\r\n );\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {\r\n expires: subMinutes(addDays(new Date(), 30), 1),\r\n httpOnly: true,\r\n sameSite: 'strict',\r\n });\r\n\r\n return response;\r\n } catch {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Unauthorized',\r\n },\r\n { status: 401 },\r\n );\r\n }\r\n }\r\n\r\n /*\r\n *\r\n * POST -> /api/authenticate\r\n *\r\n */\r\n\r\n if (path === 'authenticate') {\r\n const body = await request.json();\r\n const parsed = AuthenticateDefinition.safeParse(body);\r\n const recaptcha = request.headers.get(RECAPTCHA_HEADER_KEY);\r\n\r\n if (!parsed.success) {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: parsed.error.issues[0].message,\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n\r\n try {\r\n const res = await authenticate(parsed.data, {\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n ...(recaptcha && {\r\n [RECAPTCHA_HEADER_KEY]: recaptcha,\r\n }),\r\n ...(BYPASS_RECAPTCHA && {\r\n 'Test-Pass': '',\r\n }),\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n\r\n const response = NextResponse.json<ApiResponse>(\r\n { ok: true },\r\n { status: 201 },\r\n );\r\n\r\n response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {\r\n expires: addMinutes(new Date(), 9),\r\n httpOnly: true,\r\n });\r\n\r\n response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {\r\n expires: subMinutes(addDays(new Date(), 30), 1),\r\n httpOnly: true,\r\n });\r\n\r\n return response;\r\n } catch {\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Unauthorized',\r\n },\r\n { status: 401 },\r\n );\r\n }\r\n }\r\n\r\n return NextResponse.json<ApiResponse>(\r\n {\r\n ok: false,\r\n message: 'Not found',\r\n },\r\n { status: 404 },\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -1,15 +1,111 @@
1
1
  import * as react from 'react';
2
- import { PropsWithChildren, ReactNode } from 'react';
2
+ import { ComponentType, ComponentProps, ReactNode, PropsWithChildren } from 'react';
3
3
  import { ImageProps } from 'next/image';
4
+ import { GameType, GameProvider, Game, GamesInput } from '@opexa/portal-sdk-core';
5
+ import { HTMLArkProps } from '@ark-ui/react';
6
+
7
+ interface AccountLink {
8
+ icon: ComponentType<ComponentProps<'svg'>>;
9
+ href: string;
10
+ label: string;
11
+ }
12
+ interface AccountProps {
13
+ links?: AccountLink[];
14
+ children?: ReactNode;
15
+ }
16
+ declare function Account(props: AccountProps): react.JSX.Element;
17
+
18
+ interface BannerProps {
19
+ banners: Banner[];
20
+ className?: string;
21
+ }
22
+ interface Banner {
23
+ src: ImageProps['src'];
24
+ redirectUrl?: string;
25
+ }
26
+ declare function Banner(props: BannerProps): react.JSX.Element;
27
+
28
+ interface BetRecordsProps {
29
+ gameTypes: GameType[];
30
+ gameProviders: GameProvider[];
31
+ className?: string;
32
+ }
33
+ declare function BetRecords(props: BetRecordsProps): react.JSX.Element;
34
+
35
+ interface DepositWithdrawalProps {
36
+ children?: ReactNode;
37
+ }
38
+ declare function DepositWithdrawal(props: DepositWithdrawalProps): react.JSX.Element;
4
39
 
5
40
  interface DisclaimerProps {
6
41
  logo: ImageProps['src'];
7
42
  }
8
43
  declare function Disclaimer(props: DisclaimerProps): react.JSX.Element;
9
44
 
10
- declare function Games(): null;
45
+ interface UseFeatureFlagReturn {
46
+ enabled: boolean;
47
+ disable: () => void;
48
+ }
49
+
50
+ declare const FeatureFlagContext: react.Context<UseFeatureFlagReturn | null>;
51
+ declare const useFeatureFlagContext: () => UseFeatureFlagReturn;
11
52
 
12
- declare function PortalProvider({ children }: PropsWithChildren): react.JSX.Element;
53
+ interface FeatureFlagProviderProps {
54
+ children: ReactNode;
55
+ }
56
+ declare function FeatureFlagProvider(props: FeatureFlagProviderProps): react.JSX.Element;
57
+
58
+ interface GameLaunchProps {
59
+ logo: ImageProps['src'];
60
+ }
61
+ declare function GameLaunch(props: GameLaunchProps): react.JSX.Element;
62
+
63
+ interface GameLaunchTriggerProps extends HTMLArkProps<'button'> {
64
+ game: Game;
65
+ }
66
+ declare function GameLaunchTrigger(props: GameLaunchTriggerProps): react.JSX.Element;
67
+
68
+ interface GamesProps {
69
+ heading: string;
70
+ seeAllUrl: string;
71
+ /** @default 1 */
72
+ numOfRows?: 1 | 2 | 3;
73
+ className?: string;
74
+ filter?: GamesInput['filter'];
75
+ }
76
+ declare function Games(props: GamesProps): Promise<react.JSX.Element>;
77
+
78
+ interface JackpotCounterProps {
79
+ heading: string;
80
+ seeAllUrl: string;
81
+ className?: string;
82
+ }
83
+ declare function JackpotCounter(props: JackpotCounterProps): Promise<react.JSX.Element>;
84
+
85
+ interface MarqueeProps {
86
+ children?: React.ReactNode;
87
+ className?: string;
88
+ }
89
+ declare function Marquee(props: MarqueeProps): react.JSX.Element;
90
+
91
+ declare function PortalProvider({ children }: PropsWithChildren): Promise<react.JSX.Element>;
92
+
93
+ interface PromoProps {
94
+ heading: string;
95
+ seeAllUrl: string;
96
+ /** @default true */
97
+ shouldShowDescription?: boolean;
98
+ /** @default 1 */
99
+ numOfRows?: 1 | 2 | 3;
100
+ className?: string;
101
+ }
102
+ declare function Promos(props: PromoProps): Promise<react.JSX.Element>;
103
+
104
+ interface ProtectedProps {
105
+ children: React.ReactNode;
106
+ fallback?: React.ReactNode;
107
+ }
108
+ declare function Protected(props: ProtectedProps): react.ReactNode;
13
109
 
14
110
  interface SignInProps {
15
111
  logo: ImageProps['src'];
@@ -26,8 +122,23 @@ interface SignUpProps {
26
122
  declare function SignUp(props: SignUpProps): react.JSX.Element;
27
123
 
28
124
  interface TopWinsProps {
125
+ heading: string;
126
+ className?: string;
127
+ }
128
+ declare function TopWins(props: TopWinsProps): Promise<react.JSX.Element>;
129
+
130
+ interface TournamentCounterProps {
131
+ className?: string;
132
+ heading: string;
133
+ seeAllUrl: string;
134
+ }
135
+ declare function TournamentCounter(props: TournamentCounterProps): Promise<react.JSX.Element>;
136
+
137
+ interface TransactionRecordsProps {
138
+ gameTypes: GameType[];
139
+ gameProviders: GameProvider[];
29
140
  className?: string;
30
141
  }
31
- declare function TopWins(props: TopWinsProps): react.JSX.Element | null;
142
+ declare function TransactionRecords(props: TransactionRecordsProps): react.JSX.Element;
32
143
 
33
- export { Disclaimer, type DisclaimerProps, Games, PortalProvider, SignIn, type SignInProps, SignUp, type SignUpProps, TopWins, type TopWinsProps };
144
+ export { Account, type AccountProps, Banner, type BannerProps, BetRecords, type BetRecordsProps, DepositWithdrawal, Disclaimer, type DisclaimerProps, FeatureFlagContext, FeatureFlagProvider, GameLaunch, type GameLaunchProps, GameLaunchTrigger, type GameLaunchTriggerProps, Games, type GamesProps, JackpotCounter, type JackpotCounterProps, Marquee, type MarqueeProps, PortalProvider, type PromoProps, Promos, Protected, SignIn, type SignInProps, SignUp, type SignUpProps, TopWins, type TopWinsProps, TournamentCounter, type TournamentCounterProps, TransactionRecords, type TransactionRecordsProps, useFeatureFlagContext };
package/dist/index.d.ts CHANGED
@@ -1,15 +1,111 @@
1
1
  import * as react from 'react';
2
- import { PropsWithChildren, ReactNode } from 'react';
2
+ import { ComponentType, ComponentProps, ReactNode, PropsWithChildren } from 'react';
3
3
  import { ImageProps } from 'next/image';
4
+ import { GameType, GameProvider, Game, GamesInput } from '@opexa/portal-sdk-core';
5
+ import { HTMLArkProps } from '@ark-ui/react';
6
+
7
+ interface AccountLink {
8
+ icon: ComponentType<ComponentProps<'svg'>>;
9
+ href: string;
10
+ label: string;
11
+ }
12
+ interface AccountProps {
13
+ links?: AccountLink[];
14
+ children?: ReactNode;
15
+ }
16
+ declare function Account(props: AccountProps): react.JSX.Element;
17
+
18
+ interface BannerProps {
19
+ banners: Banner[];
20
+ className?: string;
21
+ }
22
+ interface Banner {
23
+ src: ImageProps['src'];
24
+ redirectUrl?: string;
25
+ }
26
+ declare function Banner(props: BannerProps): react.JSX.Element;
27
+
28
+ interface BetRecordsProps {
29
+ gameTypes: GameType[];
30
+ gameProviders: GameProvider[];
31
+ className?: string;
32
+ }
33
+ declare function BetRecords(props: BetRecordsProps): react.JSX.Element;
34
+
35
+ interface DepositWithdrawalProps {
36
+ children?: ReactNode;
37
+ }
38
+ declare function DepositWithdrawal(props: DepositWithdrawalProps): react.JSX.Element;
4
39
 
5
40
  interface DisclaimerProps {
6
41
  logo: ImageProps['src'];
7
42
  }
8
43
  declare function Disclaimer(props: DisclaimerProps): react.JSX.Element;
9
44
 
10
- declare function Games(): null;
45
+ interface UseFeatureFlagReturn {
46
+ enabled: boolean;
47
+ disable: () => void;
48
+ }
49
+
50
+ declare const FeatureFlagContext: react.Context<UseFeatureFlagReturn | null>;
51
+ declare const useFeatureFlagContext: () => UseFeatureFlagReturn;
11
52
 
12
- declare function PortalProvider({ children }: PropsWithChildren): react.JSX.Element;
53
+ interface FeatureFlagProviderProps {
54
+ children: ReactNode;
55
+ }
56
+ declare function FeatureFlagProvider(props: FeatureFlagProviderProps): react.JSX.Element;
57
+
58
+ interface GameLaunchProps {
59
+ logo: ImageProps['src'];
60
+ }
61
+ declare function GameLaunch(props: GameLaunchProps): react.JSX.Element;
62
+
63
+ interface GameLaunchTriggerProps extends HTMLArkProps<'button'> {
64
+ game: Game;
65
+ }
66
+ declare function GameLaunchTrigger(props: GameLaunchTriggerProps): react.JSX.Element;
67
+
68
+ interface GamesProps {
69
+ heading: string;
70
+ seeAllUrl: string;
71
+ /** @default 1 */
72
+ numOfRows?: 1 | 2 | 3;
73
+ className?: string;
74
+ filter?: GamesInput['filter'];
75
+ }
76
+ declare function Games(props: GamesProps): Promise<react.JSX.Element>;
77
+
78
+ interface JackpotCounterProps {
79
+ heading: string;
80
+ seeAllUrl: string;
81
+ className?: string;
82
+ }
83
+ declare function JackpotCounter(props: JackpotCounterProps): Promise<react.JSX.Element>;
84
+
85
+ interface MarqueeProps {
86
+ children?: React.ReactNode;
87
+ className?: string;
88
+ }
89
+ declare function Marquee(props: MarqueeProps): react.JSX.Element;
90
+
91
+ declare function PortalProvider({ children }: PropsWithChildren): Promise<react.JSX.Element>;
92
+
93
+ interface PromoProps {
94
+ heading: string;
95
+ seeAllUrl: string;
96
+ /** @default true */
97
+ shouldShowDescription?: boolean;
98
+ /** @default 1 */
99
+ numOfRows?: 1 | 2 | 3;
100
+ className?: string;
101
+ }
102
+ declare function Promos(props: PromoProps): Promise<react.JSX.Element>;
103
+
104
+ interface ProtectedProps {
105
+ children: React.ReactNode;
106
+ fallback?: React.ReactNode;
107
+ }
108
+ declare function Protected(props: ProtectedProps): react.ReactNode;
13
109
 
14
110
  interface SignInProps {
15
111
  logo: ImageProps['src'];
@@ -26,8 +122,23 @@ interface SignUpProps {
26
122
  declare function SignUp(props: SignUpProps): react.JSX.Element;
27
123
 
28
124
  interface TopWinsProps {
125
+ heading: string;
126
+ className?: string;
127
+ }
128
+ declare function TopWins(props: TopWinsProps): Promise<react.JSX.Element>;
129
+
130
+ interface TournamentCounterProps {
131
+ className?: string;
132
+ heading: string;
133
+ seeAllUrl: string;
134
+ }
135
+ declare function TournamentCounter(props: TournamentCounterProps): Promise<react.JSX.Element>;
136
+
137
+ interface TransactionRecordsProps {
138
+ gameTypes: GameType[];
139
+ gameProviders: GameProvider[];
29
140
  className?: string;
30
141
  }
31
- declare function TopWins(props: TopWinsProps): react.JSX.Element | null;
142
+ declare function TransactionRecords(props: TransactionRecordsProps): react.JSX.Element;
32
143
 
33
- export { Disclaimer, type DisclaimerProps, Games, PortalProvider, SignIn, type SignInProps, SignUp, type SignUpProps, TopWins, type TopWinsProps };
144
+ export { Account, type AccountProps, Banner, type BannerProps, BetRecords, type BetRecordsProps, DepositWithdrawal, Disclaimer, type DisclaimerProps, FeatureFlagContext, FeatureFlagProvider, GameLaunch, type GameLaunchProps, GameLaunchTrigger, type GameLaunchTriggerProps, Games, type GamesProps, JackpotCounter, type JackpotCounterProps, Marquee, type MarqueeProps, PortalProvider, type PromoProps, Promos, Protected, SignIn, type SignInProps, SignUp, type SignUpProps, TopWins, type TopWinsProps, TournamentCounter, type TournamentCounterProps, TransactionRecords, type TransactionRecordsProps, useFeatureFlagContext };