@opexa/portal-components 0.0.590 → 0.0.591

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.
Files changed (39) hide show
  1. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +1 -0
  2. package/dist/components/KYC/KYCDefault/BasicInformation.js +101 -0
  3. package/dist/components/Quests/Quests.client.js +1 -10
  4. package/dist/handlers/index.d.ts +2 -2
  5. package/dist/services/queries.d.ts +2 -2
  6. package/dist/services/queries.js +1 -7
  7. package/dist/types/index.d.ts +1 -2
  8. package/dist/ui/AlertDialog/AlertDialog.d.ts +55 -55
  9. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +5 -5
  10. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  11. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  12. package/dist/ui/Collapsible/Collapsible.d.ts +20 -20
  13. package/dist/ui/Collapsible/collapsible.recipe.d.ts +5 -5
  14. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  15. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  16. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  17. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  18. package/dist/ui/Dialog/Dialog.d.ts +33 -33
  19. package/dist/ui/Dialog/dialog.recipe.d.ts +3 -3
  20. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  21. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  22. package/dist/ui/Field/Field.d.ts +21 -21
  23. package/dist/ui/Field/field.recipe.d.ts +3 -3
  24. package/dist/ui/Menu/Menu.d.ts +198 -198
  25. package/dist/ui/Menu/menu.recipe.d.ts +11 -11
  26. package/dist/ui/Popover/Popover.d.ts +55 -55
  27. package/dist/ui/Popover/popover.recipe.d.ts +5 -5
  28. package/dist/ui/Progress/Progress.d.ts +27 -27
  29. package/dist/ui/Progress/progress.recipe.d.ts +3 -3
  30. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  31. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  32. package/dist/ui/Select/Select.d.ts +45 -45
  33. package/dist/ui/Select/select.recipe.d.ts +3 -3
  34. package/dist/ui/Table/Table.d.ts +21 -21
  35. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  36. package/dist/ui/Table/table.recipe.d.ts +3 -3
  37. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  38. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  39. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export declare function BasicInformation(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { zodResolver } from '@hookform/resolvers/zod';
3
+ import { differenceInYears, format, isSameDay, isValid, parse } from 'date-fns';
4
+ import { isNil, omitBy, size } from 'lodash-es';
5
+ import { useEffect } from 'react';
6
+ import { useForm } from 'react-hook-form';
7
+ import invariant from 'tiny-invariant';
8
+ import { z } from 'zod';
9
+ import { useAccountQuery } from '../../../client/hooks/useAccountQuery.js';
10
+ import { useUpdateAccountMutation } from '../../../client/hooks/useUpdateAccountMutation.js';
11
+ import { toaster } from '../../../client/utils/toaster.js';
12
+ import { Button } from '../../../ui/Button/index.js';
13
+ import { Dialog } from '../../../ui/Dialog/index.js';
14
+ import { Field } from '../../../ui/Field/index.js';
15
+ import { useKYCDefaultContext } from './KYCDefaultContext.js';
16
+ const definition = z.object({
17
+ realName: z
18
+ .string()
19
+ .min(3, 'Name must be 3 or more characters')
20
+ .max(50, 'Name must not be more than 50 characters')
21
+ .regex(/^[a-z0-9 ]+$/gi, 'Name must not contain special characters')
22
+ .trim(),
23
+ birthDay: z
24
+ .string()
25
+ .min(1, 'Date of birth is required')
26
+ .superRefine((value, ctx) => {
27
+ const dob = parse(value, 'yyyy-MM-dd', new Date());
28
+ if (!isValid(dob)) {
29
+ return ctx.addIssue({
30
+ code: z.ZodIssueCode.invalid_date,
31
+ });
32
+ }
33
+ const now = new Date();
34
+ const age = differenceInYears(now, dob);
35
+ if (age < 21) {
36
+ return ctx.addIssue({
37
+ code: z.ZodIssueCode.custom,
38
+ message: 'You must be at least 21 years old',
39
+ });
40
+ }
41
+ }),
42
+ branchCode: z.string().min(4).max(10).optional().or(z.literal('')),
43
+ });
44
+ export function BasicInformation() {
45
+ const kyc = useKYCDefaultContext();
46
+ const form = useForm({
47
+ resolver: zodResolver(definition),
48
+ mode: 'all',
49
+ defaultValues: {
50
+ birthDay: '',
51
+ branchCode: '',
52
+ realName: '',
53
+ },
54
+ });
55
+ const accountQuery = useAccountQuery();
56
+ const account = accountQuery.data;
57
+ const stepCompleted = account != null && account.realName != null && account.birthDay != null;
58
+ useEffect(() => {
59
+ if (stepCompleted)
60
+ kyc.setStep(2);
61
+ }, [stepCompleted, kyc]);
62
+ useEffect(() => {
63
+ if (account) {
64
+ form.reset({
65
+ realName: account.realName ?? '',
66
+ birthDay: account.birthDay
67
+ ? format(account.birthDay, 'yyyy-MM-dd')
68
+ : '',
69
+ });
70
+ }
71
+ }, [account, form]);
72
+ const updateAccountMutation = useUpdateAccountMutation({
73
+ onError(error) {
74
+ toaster.error({
75
+ title: 'Error',
76
+ description: error.message,
77
+ });
78
+ },
79
+ onSuccess() {
80
+ kyc.setStep(2);
81
+ toaster.success({
82
+ title: 'Success',
83
+ description: 'Basic information has been set successfully.',
84
+ });
85
+ },
86
+ });
87
+ return (_jsxs("div", { children: [_jsx(Dialog.Title, { className: "text-center font-semibold text-lg", children: "Basic Information" }), _jsx(Dialog.Description, { className: "mt-xs text-center text-sm text-text-secondary-700", children: "Enter your basic details for identification and communication." }), _jsxs("form", { className: "mt-3", onSubmit: form.handleSubmit((data) => {
88
+ invariant(account);
89
+ const input = omitBy({
90
+ realName: account.realName === data.realName ? undefined : data.realName,
91
+ birthDay: account.birthDay && isSameDay(data.birthDay, account.birthDay)
92
+ ? undefined
93
+ : format(data.birthDay, 'yyyy-MM-dd'),
94
+ }, isNil);
95
+ if (size(input) === 0)
96
+ return kyc.setStep(2);
97
+ updateAccountMutation.mutate(input);
98
+ }), children: [_jsxs(Field.Root, { invalid: !!form.formState.errors.realName, readOnly: !!accountQuery.data?.realName, children: [_jsx(Field.Label, { children: "Real Name" }), _jsx(Field.Input, { placeholder: "Enter your real name", ...form.register('realName') }), _jsx(Field.ErrorText, { children: form.formState.errors.realName?.message })] }), _jsxs(Field.Root, { className: "mt-3", invalid: !!form.formState.errors.branchCode, readOnly: !!accountQuery.data?.birthDay, children: [_jsx(Field.Label, { children: "Date of Birth" }), _jsx(Field.Input, { type: "date", ...form.register('birthDay') }), _jsx(Field.ErrorText, { children: form.formState.errors.birthDay?.message })] }), _jsx(Button, { type: "submit", className: "mt-8", disabled: accountQuery.isLoading ||
99
+ updateAccountMutation.isPending ||
100
+ stepCompleted, children: "Continue" })] })] }));
101
+ }
@@ -1,13 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { isString } from 'lodash-es';
4
- import dynamic from 'next/dynamic';
5
4
  import Image from 'next/image';
6
5
  import { Suspense, useState, } from 'react';
7
6
  import { twMerge } from 'tailwind-merge';
8
7
  import { z } from 'zod';
9
8
  import { useAvailableQuestsQuery } from '../../client/hooks/useAvailableQuestsQuery.js';
10
- import { useFeatureFlag } from '../../client/hooks/useFeatureFlag.js';
11
9
  import { SpinnerIcon } from '../../icons/SpinnerIcon.js';
12
10
  import closeChest from '../../images/close-chest.png';
13
11
  import { SegmentGroup } from '../../ui/SegmentGroup/index.js';
@@ -17,22 +15,17 @@ import { NoQuests } from './NoQuests.js';
17
15
  import { OnboardingQuest } from './OnboardingQuest.js';
18
16
  import { QuestContext } from './QuestsContext.js';
19
17
  import { WageringQuest, } from './WageringQuest.js';
20
- const MultiWageringQuest = dynamic(() => import('./MultiWageringQuest.js').then((mod) => mod.MultiWageringQuest), {
21
- ssr: false,
22
- });
23
18
  const QUEST_COMPONENT_MAP = {
24
19
  DAILY_CHECKIN: DailyCheckInQuest,
25
20
  ONBOARDING: OnboardingQuest,
26
21
  WAGERING: WageringQuest,
27
22
  JOURNEY: JourneyQuest,
28
- MULTI_WAGERING: MultiWageringQuest,
29
23
  };
30
24
  const TabDefinition = z.enum(['AVAILABLE', 'COMPLETED', 'FAILED']);
31
25
  export function Quests__client(props) {
32
26
  const { className, style, heading } = props;
33
27
  const classNames = isString(className) ? { root: className } : className;
34
28
  const [tab, setTab] = useState('AVAILABLE');
35
- const featureFlag = useFeatureFlag();
36
29
  const questsQuery = useAvailableQuestsQuery({
37
30
  refetchInterval: 7500,
38
31
  });
@@ -59,9 +52,7 @@ export function Quests__client(props) {
59
52
  return (_jsxs("div", { style: style, className: twMerge(classNames?.root), children: [_jsx("h2", { className: "font-semibold text-lg", children: heading ?? 'Quests' }), _jsxs(SegmentGroup.Root, { value: tab, onValueChange: (details) => {
60
53
  setTab(TabDefinition.catch('AVAILABLE').parse(details.value));
61
54
  }, className: "mt-3 w-full overflow-x-auto lg:mt-4.5 lg:w-fit", children: [_jsxs(SegmentGroup.Item, { value: "AVAILABLE", className: "w-full lg:w-fit", children: [_jsx(SegmentGroup.ItemText, { children: "Available" }), _jsx(SegmentGroup.ItemControl, {}), _jsx(SegmentGroup.ItemHiddenInput, {})] }), _jsxs(SegmentGroup.Item, { value: "COMPLETED", className: "w-full lg:w-fit", children: [_jsx(SegmentGroup.ItemText, { children: "Completed" }), _jsx(SegmentGroup.ItemControl, {}), _jsx(SegmentGroup.ItemHiddenInput, {})] }), _jsxs(SegmentGroup.Item, { value: "FAILED", className: "w-full lg:w-fit", children: [_jsx(SegmentGroup.ItemText, { children: "Failed" }), _jsx(SegmentGroup.ItemControl, {}), _jsx(SegmentGroup.ItemHiddenInput, {})] }), _jsx(SegmentGroup.Indicator, {})] }), _jsx("div", { className: "mt-3xl grid gap-3xl lg:mt-lg lg:grid-cols-3", children: quests.length > 0 ? (quests.map((quest) => {
62
- const Quest = quest.stages?.length && featureFlag.enabled
63
- ? QUEST_COMPONENT_MAP.MULTI_WAGERING
64
- : QUEST_COMPONENT_MAP[quest.type];
55
+ const Quest = QUEST_COMPONENT_MAP[quest.type];
65
56
  return (_jsx(QuestContext, { value: quest, children: _jsx(Suspense, { children: _jsx(Quest, { className: quest.type === 'WAGERING'
66
57
  ? classNames?.wageringQuest
67
58
  : quest.type === 'DAILY_CHECKIN'
@@ -18,14 +18,14 @@ export declare const GET: (req: NextRequest, { params }: Context) => Promise<Nex
18
18
  __error?: unknown;
19
19
  } | {
20
20
  ok: true;
21
- data: Record<string, unknown>;
21
+ data: import("../types").Session;
22
22
  }> | NextResponse<{
23
23
  ok: false;
24
24
  message: string;
25
25
  __error?: unknown;
26
26
  } | {
27
27
  ok: true;
28
- data: import("../types").Session;
28
+ data: Record<string, unknown>;
29
29
  }>>;
30
30
  export declare const DELETE: (req: NextRequest, { params }: Context) => Promise<NextResponse<{
31
31
  ok: true;
@@ -110,10 +110,10 @@ export declare const COMPLETE_ONBOARDING = "\n mutation CompleteOnboarding($inp
110
110
  export declare const SKIP_ONBOARDING = "\n mutation SkipOnboarding {\n skipOnboarding\n }\n";
111
111
  export declare const QUEST_PROGRAM_FRAGMENT = "\n fragment QuestProgramFragment on QuestProgram {\n status\n type\n name\n description\n }\n";
112
112
  export declare const DAILY_CHECKIN_FRAGMENT = "\n \n fragment QuestProgramFragment on QuestProgram {\n status\n type\n name\n description\n }\n\n fragment DailyCheckinQuestFragment on DailyCheckInQuest {\n id\n name\n description\n type\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n endDateTime\n dateTimeCreated\n lastCheckInDate\n startDateTime\n checkInStreak\n\n thirdDayBonusAmount\n seventhDayBonusAmount\n sixthDayBonusAmount\n }\n";
113
- export declare const WAGERING_FRAGMENT = "\n fragment WageringQuestFragment on WageringQuest {\n bonus\n id\n name\n type\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n targetTurnover\n endDateTime\n dateTimeCreated\n stage\n dateTimeCompleted\n stages{\n targetTurnover\n bonusTurnoverRequirementMultiplier\n bonusAmount\n cleared\n dateTimeCleared\n }\n }\n";
113
+ export declare const WAGERING_FRAGMENT = "\n fragment WageringQuestFragment on WageringQuest {\n bonus\n id\n name\n type\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n targetTurnover\n endDateTime\n dateTimeCreated\n stage\n dateTimeCompleted\n \n }\n";
114
114
  export declare const JOURNEY_FRAGMENT = "\n fragment JourneyQuestFragment on JourneyQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n status\n type\n progressPercentage\n bonus\n bonusAwarded\n dateTimeCreated\n endDateTime\n milestones {\n id\n type\n name\n bonusAmount\n cleared\n description\n }\n }\n";
115
115
  export declare const ONBOARDING_QUEST_FRAGMENT = "\n fragment OnboardingQuestFragment on OnboardingQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n type\n progressPercentage\n bonus\n endDateTime\n dateTimeCreated\n firstDepositCompleted\n accountVerificationCompleted\n }\n";
116
- export declare const AVAILABLE_QUESTS = "\n \n fragment WageringQuestFragment on WageringQuest {\n bonus\n id\n name\n type\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n targetTurnover\n endDateTime\n dateTimeCreated\n stage\n dateTimeCompleted\n stages{\n targetTurnover\n bonusTurnoverRequirementMultiplier\n bonusAmount\n cleared\n dateTimeCleared\n }\n }\n\n \n \n fragment QuestProgramFragment on QuestProgram {\n status\n type\n name\n description\n }\n\n fragment DailyCheckinQuestFragment on DailyCheckInQuest {\n id\n name\n description\n type\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n endDateTime\n dateTimeCreated\n lastCheckInDate\n startDateTime\n checkInStreak\n\n thirdDayBonusAmount\n seventhDayBonusAmount\n sixthDayBonusAmount\n }\n\n \n fragment OnboardingQuestFragment on OnboardingQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n type\n progressPercentage\n bonus\n endDateTime\n dateTimeCreated\n firstDepositCompleted\n accountVerificationCompleted\n }\n\n \n fragment JourneyQuestFragment on JourneyQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n status\n type\n progressPercentage\n bonus\n bonusAwarded\n dateTimeCreated\n endDateTime\n milestones {\n id\n type\n name\n bonusAmount\n cleared\n description\n }\n }\n\n\n query AvailableQuests {\n availableQuests {\n ... on Quest {\n ... on WageringQuest {\n ...WageringQuestFragment\n }\n ... on DailyCheckInQuest {\n ...DailyCheckinQuestFragment\n }\n ... on OnboardingQuest {\n ...OnboardingQuestFragment\n }\n ... on JourneyQuest {\n ...JourneyQuestFragment\n }\n }\n }\n }\n";
116
+ export declare const AVAILABLE_QUESTS = "\n \n fragment WageringQuestFragment on WageringQuest {\n bonus\n id\n name\n type\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n targetTurnover\n endDateTime\n dateTimeCreated\n stage\n dateTimeCompleted\n \n }\n\n \n \n fragment QuestProgramFragment on QuestProgram {\n status\n type\n name\n description\n }\n\n fragment DailyCheckinQuestFragment on DailyCheckInQuest {\n id\n name\n description\n type\n program {\n ...QuestProgramFragment\n }\n\n status\n progressPercentage\n turnover\n endDateTime\n dateTimeCreated\n lastCheckInDate\n startDateTime\n checkInStreak\n\n thirdDayBonusAmount\n seventhDayBonusAmount\n sixthDayBonusAmount\n }\n\n \n fragment OnboardingQuestFragment on OnboardingQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n\n status\n type\n progressPercentage\n bonus\n endDateTime\n dateTimeCreated\n firstDepositCompleted\n accountVerificationCompleted\n }\n\n \n fragment JourneyQuestFragment on JourneyQuest {\n id\n name\n description\n program {\n ...QuestProgramFragment\n }\n status\n type\n progressPercentage\n bonus\n bonusAwarded\n dateTimeCreated\n endDateTime\n milestones {\n id\n type\n name\n bonusAmount\n cleared\n description\n }\n }\n\n\n query AvailableQuests {\n availableQuests {\n ... on Quest {\n ... on WageringQuest {\n ...WageringQuestFragment\n }\n ... on DailyCheckInQuest {\n ...DailyCheckinQuestFragment\n }\n ... on OnboardingQuest {\n ...OnboardingQuestFragment\n }\n ... on JourneyQuest {\n ...JourneyQuestFragment\n }\n }\n }\n }\n";
117
117
  export declare const AVAILABLE_QUEST_IDS = "\n query AvailableQuestIds {\n availableQuests {\n ... on Node {\n id\n }\n }\n }\n";
118
118
  export declare const CHECK_IN_DAILY_QUEST = "\n mutation checkInDailyCheckInQuest($input: CheckInDailyCheckInQuestInput!) {\n checkInDailyCheckInQuest(input: $input)\n }\n";
119
119
  export declare const TOP_WINS = "\n query TopWins($first: Int) {\n topWins(first: $first) {\n id\n game {\n id\n name\n type\n provider\n }\n member {\n id\n name\n }\n multiplier\n payout\n }\n }\n";
@@ -2432,13 +2432,7 @@ export const WAGERING_FRAGMENT = /* GraphQL */ `
2432
2432
  dateTimeCreated
2433
2433
  stage
2434
2434
  dateTimeCompleted
2435
- stages{
2436
- targetTurnover
2437
- bonusTurnoverRequirementMultiplier
2438
- bonusAmount
2439
- cleared
2440
- dateTimeCleared
2441
- }
2435
+
2442
2436
  }
2443
2437
  `;
2444
2438
  export const JOURNEY_FRAGMENT = /* GraphQL */ `
@@ -696,7 +696,7 @@ export interface Message {
696
696
  }
697
697
  export type OnboardingStatus = 'PENDING' | 'SKIPPED' | 'COMPLETED';
698
698
  export type OnboardingPlayerExperience = 'ROOKIE' | 'VETERAN';
699
- export type QuestType = 'WAGERING' | 'DAILY_CHECKIN' | 'ONBOARDING' | 'JOURNEY' | 'MULTI_WAGERING';
699
+ export type QuestType = 'WAGERING' | 'DAILY_CHECKIN' | 'ONBOARDING' | 'JOURNEY';
700
700
  export type QuestStatus = 'IN_PROGRESS' | 'COMPLETED' | 'FAILED';
701
701
  export type QuestProgramStatus = 'ACTIVE' | 'INACTIVE' | 'DELETED';
702
702
  export interface QuestProgram {
@@ -746,7 +746,6 @@ export interface Quest {
746
746
  firstDepositCompleted?: boolean;
747
747
  accountVerificationCompleted?: boolean;
748
748
  milestones?: JourneyQuestMilestone[];
749
- stages?: WageringQuestStage[];
750
749
  dateTimeCompleted?: string;
751
750
  }
752
751
  interface TopWinGame {