@opexa/portal-components 0.0.271 → 0.0.273
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/client/hooks/useCamera.d.ts +1 -1
- package/dist/client/hooks/useCamera.js +51 -43
- package/dist/client/hooks/usePxToRemConverter.d.ts +2 -0
- package/dist/client/hooks/usePxToRemConverter.js +18 -0
- package/dist/client/hooks/useRect.d.ts +5 -0
- package/dist/client/hooks/useRect.js +45 -0
- package/dist/components/Bonus/Bonus.client.js +1 -1
- package/dist/components/Cashback/Cashback.client.js +1 -1
- package/dist/components/CustomPromo/CustomPromo.js +1 -1
- package/dist/components/GameLaunch/GameLaunch.lazy.js +1 -1
- package/dist/components/GamesSearch/GamesSearch.js +1 -1
- package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -184
- package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -184
- package/dist/components/KYC/utils.js +18 -18
- package/dist/components/News/News.js +1 -1
- package/dist/components/PortalProvider/FeatureFlag.js +1 -1
- package/dist/components/Promo/Promo.client.js +1 -1
- package/dist/components/Search/Search.lazy.js +1 -1
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.client.d.ts +15 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.client.js +100 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.d.ts +2 -0
- package/dist/components/{shared/IdDocumentField.js → SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.js} +3 -3
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageFieldContext.d.ts +6 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageFieldContext.js +2 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/index.d.ts +1 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/index.js +1 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/useIdFrontImageField.d.ts +18 -0
- package/dist/components/SignUp/SignUpKYC/IdFrontImageField/useIdFrontImageField.js +88 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageField.client.d.ts +15 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageField.client.js +113 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageField.d.ts +2 -0
- package/dist/components/{shared/SelfieField.js → SignUp/SignUpKYC/SelfieImageField/SelfieImageField.js} +3 -3
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageFieldContext.d.ts +6 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageFieldContext.js +2 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/index.d.ts +1 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/index.js +1 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/useSelfieImageField.d.ts +19 -0
- package/dist/components/SignUp/SignUpKYC/SelfieImageField/useSelfieImageField.js +186 -0
- package/dist/components/SignUp/SignUpKYC/SignUpKYC.lazy.js +3 -12
- package/dist/components/SignUp/SignUpKYC/SignUpKYCContext.d.ts +2 -3
- package/dist/components/SignUp/SignUpKYC/SignUpKYCForm.d.ts +1 -0
- package/dist/components/SignUp/SignUpKYC/SignUpKYCForm.js +464 -0
- package/dist/components/SignUp/SignUpKYC/utils.js +18 -18
- package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.module.css +184 -184
- package/dist/components/Tournaments/TournamentsList/TournamentItem.module.css +184 -184
- package/dist/components/shared/IdFrontImageField/IdFrontImageField.client.js +11 -46
- package/dist/components/shared/SelfieImageField/SelfieImageField.client.js +20 -72
- package/dist/handlers/postTransformIdFrontImage.d.ts +3 -0
- package/dist/handlers/postTransformIdFrontImage.js +82 -0
- package/dist/handlers/postTransformSelfieImage.d.ts +3 -0
- package/dist/handlers/postTransformSelfieImage.js +82 -0
- package/dist/next.config.js +0 -8
- package/dist/services/queries.js +2570 -2570
- package/dist/styles/theme.css +695 -695
- package/dist/ui/AlertDialog/AlertDialog.d.ts +88 -88
- package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +8 -8
- package/dist/ui/Avatar/Avatar.d.ts +9 -9
- package/dist/ui/Avatar/avatar.recipe.d.ts +3 -3
- package/dist/ui/Badge/Badge.d.ts +12 -12
- package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
- package/dist/ui/Badge/badge.recipe.d.ts +3 -3
- package/dist/ui/Carousel/Carousel.d.ts +72 -72
- package/dist/ui/Carousel/carousel.recipe.d.ts +8 -8
- package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
- package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
- package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
- package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
- package/dist/ui/Collapsible/Collapsible.d.ts +32 -32
- package/dist/ui/Collapsible/collapsible.recipe.d.ts +8 -8
- package/dist/ui/Combobox/Combobox.d.ts +42 -42
- package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
- package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
- package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
- package/dist/ui/Dialog/Dialog.d.ts +88 -88
- package/dist/ui/Dialog/dialog.recipe.d.ts +8 -8
- package/dist/ui/Drawer/Drawer.d.ts +33 -33
- package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
- package/dist/ui/Field/Field.d.ts +21 -21
- package/dist/ui/Field/field.recipe.d.ts +3 -3
- package/dist/ui/Menu/Menu.d.ts +307 -307
- package/dist/ui/Menu/menu.recipe.d.ts +17 -17
- package/dist/ui/PasswordInput/PasswordInput.d.ts +18 -18
- package/dist/ui/PasswordInput/passwordInput.recipe.d.ts +3 -3
- package/dist/ui/Popover/Popover.d.ts +88 -88
- package/dist/ui/Popover/popover.recipe.d.ts +8 -8
- package/dist/ui/Progress/Progress.d.ts +27 -27
- package/dist/ui/Progress/progress.recipe.d.ts +3 -3
- package/dist/ui/QrCode/QrCode.d.ts +25 -25
- package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
- package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
- package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
- package/dist/ui/Select/Select.d.ts +45 -45
- package/dist/ui/Select/select.recipe.d.ts +3 -3
- package/dist/ui/Table/Table.d.ts +21 -21
- package/dist/ui/Table/table.anatomy.d.ts +1 -1
- package/dist/ui/Table/table.recipe.d.ts +3 -3
- package/dist/ui/Tabs/Tabs.d.ts +15 -15
- package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
- package/package.json +163 -165
- package/dist/client/hooks/index.d.ts +0 -65
- package/dist/client/hooks/index.js +0 -65
- package/dist/client/services/index.d.ts +0 -4
- package/dist/client/services/index.js +0 -4
- package/dist/client/utils/index.d.ts +0 -3
- package/dist/client/utils/index.js +0 -3
- package/dist/components/CashbackBonus/CashbackBonus.client.d.ts +0 -2
- package/dist/components/CashbackBonus/CashbackBonus.client.js +0 -9
- package/dist/components/CashbackBonus/CashbackBonus.d.ts +0 -10
- package/dist/components/CashbackBonus/CashbackBonus.js +0 -5
- package/dist/components/CashbackBonus/index.d.ts +0 -1
- package/dist/components/CashbackBonus/index.js +0 -1
- package/dist/components/Empty.d.ts +0 -9
- package/dist/components/Empty.js +0 -7
- package/dist/components/FeatureFlag/FeatureFlag.d.ts +0 -1
- package/dist/components/FeatureFlag/FeatureFlag.js +0 -29
- package/dist/components/FeatureFlag/index.d.ts +0 -1
- package/dist/components/FeatureFlag/index.js +0 -1
- package/dist/components/Games/GameContext.d.ts +0 -2
- package/dist/components/Games/GameContext.js +0 -2
- package/dist/components/InfiniteScroll.d.ts +0 -10
- package/dist/components/InfiniteScroll.js +0 -25
- package/dist/components/JackpotCounter/JackpotCounter.client.d.ts +0 -2
- package/dist/components/JackpotCounter/JackpotCounter.client.js +0 -66
- package/dist/components/JackpotCounter/JackpotCounter.d.ts +0 -17
- package/dist/components/JackpotCounter/JackpotCounter.js +0 -21
- package/dist/components/JackpotCounter/JackpotCounterItem.d.ts +0 -18
- package/dist/components/JackpotCounter/JackpotCounterItem.js +0 -109
- package/dist/components/JackpotCounter/JackpotCounterItem.module.css +0 -184
- package/dist/components/JackpotCounter/index.d.ts +0 -1
- package/dist/components/JackpotCounter/index.js +0 -1
- package/dist/components/Jackpots/JackpotDesktop.d.ts +0 -1
- package/dist/components/Jackpots/JackpotDesktop.js +0 -45
- package/dist/components/Jackpots/JackpotGameProviders.d.ts +0 -5
- package/dist/components/Jackpots/JackpotGameProviders.js +0 -41
- package/dist/components/Jackpots/JackpotItemDesktop.d.ts +0 -9
- package/dist/components/Jackpots/JackpotItemDesktop.js +0 -43
- package/dist/components/Jackpots/JackpotItemMobile.d.ts +0 -9
- package/dist/components/Jackpots/JackpotItemMobile.js +0 -44
- package/dist/components/Jackpots/JackpotMobile.d.ts +0 -1
- package/dist/components/Jackpots/JackpotMobile.js +0 -46
- package/dist/components/Jackpots/JackpotRules.d.ts +0 -5
- package/dist/components/Jackpots/JackpotRules.js +0 -11
- package/dist/components/Jackpots/Jackpots.client.d.ts +0 -2
- package/dist/components/Jackpots/Jackpots.client.js +0 -29
- package/dist/components/Jackpots/JackpotsContext.d.ts +0 -4
- package/dist/components/Jackpots/JackpotsContext.js +0 -3
- package/dist/components/Jackpots/useJackpotData.d.ts +0 -14
- package/dist/components/Jackpots/useJackpotData.js +0 -93
- package/dist/components/Jackpots/useJackpotItemData.d.ts +0 -20
- package/dist/components/Jackpots/useJackpotItemData.js +0 -87
- package/dist/components/KYC/AutoOpen.d.ts +0 -1
- package/dist/components/KYC/AutoOpen.js +0 -45
- package/dist/components/KYC/Header.d.ts +0 -1
- package/dist/components/KYC/Header.js +0 -8
- package/dist/components/KYC/Step1.d.ts +0 -1
- package/dist/components/KYC/Step1.js +0 -13
- package/dist/components/KYC/Step2.d.ts +0 -1
- package/dist/components/KYC/Step2.js +0 -13
- package/dist/components/KYC/Step3.d.ts +0 -1
- package/dist/components/KYC/Step3.js +0 -13
- package/dist/components/KYC/Step4.d.ts +0 -1
- package/dist/components/KYC/Step4.js +0 -7
- package/dist/components/KYC/backup/Header.d.ts +0 -1
- package/dist/components/KYC/backup/Header.js +0 -8
- package/dist/components/KYC/backup/Indicator.d.ts +0 -1
- package/dist/components/KYC/backup/Indicator.js +0 -9
- package/dist/components/KYC/backup/KYC.d.ts +0 -1
- package/dist/components/KYC/backup/KYC.js +0 -14
- package/dist/components/KYC/backup/KYC.lazy.d.ts +0 -1
- package/dist/components/KYC/backup/KYC.lazy.js +0 -26
- package/dist/components/KYC/backup/KYCContext.d.ts +0 -6
- package/dist/components/KYC/backup/KYCContext.js +0 -2
- package/dist/components/KYC/backup/Step1.d.ts +0 -1
- package/dist/components/KYC/backup/Step1.js +0 -13
- package/dist/components/KYC/backup/Step2.d.ts +0 -1
- package/dist/components/KYC/backup/Step2.js +0 -13
- package/dist/components/KYC/backup/Step3.d.ts +0 -1
- package/dist/components/KYC/backup/Step3.js +0 -13
- package/dist/components/KYC/backup/Step4.d.ts +0 -1
- package/dist/components/KYC/backup/Step4.js +0 -7
- package/dist/components/KYC/backup/useKYC.d.ts +0 -10
- package/dist/components/KYC/backup/useKYC.js +0 -8
- package/dist/components/KYC/loadModels.d.ts +0 -1
- package/dist/components/KYC/loadModels.js +0 -9
- package/dist/components/Messages/Message.d.ts +0 -1
- package/dist/components/Messages/Message.js +0 -34
- package/dist/components/Messages/MessageContext.d.ts +0 -6
- package/dist/components/Messages/MessageContext.js +0 -2
- package/dist/components/Messages/MessageItem.d.ts +0 -4
- package/dist/components/Messages/MessageItem.js +0 -34
- package/dist/components/Messages/MessagePopup.d.ts +0 -1
- package/dist/components/Messages/MessagePopup.js +0 -19
- package/dist/components/Messages/MessageTrigger.d.ts +0 -8
- package/dist/components/Messages/MessageTrigger.js +0 -19
- package/dist/components/Promo/PromoContent.d.ts +0 -2
- package/dist/components/Promo/PromoContent.js +0 -9
- package/dist/components/Promos/PromoCarousel.d.ts +0 -2
- package/dist/components/Promos/PromoCarousel.js +0 -41
- package/dist/components/Promos/PromoGrid.d.ts +0 -2
- package/dist/components/Promos/PromoGrid.js +0 -12
- package/dist/components/Promos/PromoItem.d.ts +0 -7
- package/dist/components/Promos/PromoItem.js +0 -10
- package/dist/components/Quests/CountdownTimer.d.ts +0 -15
- package/dist/components/Quests/CountdownTimer.js +0 -33
- package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuest.d.ts +0 -4
- package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuest.js +0 -78
- package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestModal.d.ts +0 -8
- package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestModal.js +0 -9
- package/dist/components/Quests/OnboardingQuest/OnboardingQuest.d.ts +0 -4
- package/dist/components/Quests/OnboardingQuest/OnboardingQuest.js +0 -4
- package/dist/components/Quests/WageringQuest/WageringQuest.d.ts +0 -4
- package/dist/components/Quests/WageringQuest/WageringQuest.js +0 -20
- package/dist/components/Quests/WageringQuest/WageringQuestModal.d.ts +0 -9
- package/dist/components/Quests/WageringQuest/WageringQuestModal.js +0 -9
- package/dist/components/SignUp/SignUp.lazy.d.ts +0 -12
- package/dist/components/SignUp/SignUp.lazy.js +0 -18
- package/dist/components/SignUp/SignUpContext.d.ts +0 -6
- package/dist/components/SignUp/SignUpContext.js +0 -2
- package/dist/components/SignUp/SignUpForm.d.ts +0 -1
- package/dist/components/SignUp/SignUpForm.js +0 -288
- package/dist/components/TournamentCounter/TournamentCounter.client.d.ts +0 -2
- package/dist/components/TournamentCounter/TournamentCounter.client.js +0 -50
- package/dist/components/TournamentCounter/TournamentCounter.d.ts +0 -8
- package/dist/components/TournamentCounter/TournamentCounter.js +0 -21
- package/dist/components/TournamentCounter/TournamentCounterItem.d.ts +0 -8
- package/dist/components/TournamentCounter/TournamentCounterItem.js +0 -106
- package/dist/components/TournamentCounter/index.d.ts +0 -1
- package/dist/components/TournamentCounter/index.js +0 -1
- package/dist/components/Tournaments/TournamentDesktop.d.ts +0 -1
- package/dist/components/Tournaments/TournamentDesktop.js +0 -57
- package/dist/components/Tournaments/TournamentGameProviders.d.ts +0 -5
- package/dist/components/Tournaments/TournamentGameProviders.js +0 -38
- package/dist/components/Tournaments/TournamentItemDesktop.d.ts +0 -7
- package/dist/components/Tournaments/TournamentItemDesktop.js +0 -56
- package/dist/components/Tournaments/TournamentItemMobile.d.ts +0 -7
- package/dist/components/Tournaments/TournamentItemMobile.js +0 -54
- package/dist/components/Tournaments/TournamentMobile.d.ts +0 -1
- package/dist/components/Tournaments/TournamentMobile.js +0 -55
- package/dist/components/Tournaments/TournamentRules.d.ts +0 -5
- package/dist/components/Tournaments/TournamentRules.js +0 -11
- package/dist/components/Tournaments/Tournaments.client.d.ts +0 -2
- package/dist/components/Tournaments/Tournaments.client.js +0 -20
- package/dist/components/Tournaments/TournamentsContext.d.ts +0 -4
- package/dist/components/Tournaments/TournamentsContext.js +0 -3
- package/dist/components/Tournaments/useTournamentData.d.ts +0 -10
- package/dist/components/Tournaments/useTournamentData.js +0 -72
- package/dist/components/Tournaments/useTournamentItemData.d.ts +0 -16
- package/dist/components/Tournaments/useTournamentItemData.js +0 -64
- package/dist/components/index.d.ts +0 -33
- package/dist/components/index.js +0 -33
- package/dist/components/shared/IdDocumentField.client.d.ts +0 -25
- package/dist/components/shared/IdDocumentField.client.js +0 -204
- package/dist/components/shared/IdDocumentField.d.ts +0 -2
- package/dist/components/shared/SelfieField.client.d.ts +0 -20
- package/dist/components/shared/SelfieField.client.js +0 -327
- package/dist/components/shared/SelfieField.d.ts +0 -2
- package/dist/constants/BranchCode.d.ts +0 -4
- package/dist/constants/BranchCode.js +0 -42
- package/dist/constants/endpoints.d.ts +0 -10
- package/dist/constants/endpoints.js +0 -41
- package/dist/constants/envVars.d.ts +0 -5
- package/dist/constants/envVars.js +0 -28
- package/dist/constants/gameProviders.d.ts +0 -76
- package/dist/constants/gameProviders.js +0 -361
- package/dist/constants/gameTypes.d.ts +0 -3
- package/dist/constants/gameTypes.js +0 -64
- package/dist/constants/headerKeys.d.ts +0 -2
- package/dist/constants/headerKeys.js +0 -2
- package/dist/constants/secretQuestions.d.ts +0 -3
- package/dist/constants/secretQuestions.js +0 -24
- package/dist/constants/storageKeys.d.ts +0 -2
- package/dist/constants/storageKeys.js +0 -2
- package/dist/handlers.d.ts +0 -43
- package/dist/handlers.js +0 -297
- package/dist/icons/BellRingIcon.d.ts +0 -2
- package/dist/icons/BellRingIcon.js +0 -4
- package/dist/icons/index.d.ts +0 -65
- package/dist/icons/index.js +0 -65
- package/dist/images/hacksaw-gaming.png +0 -0
- package/dist/server/services/index.d.ts +0 -4
- package/dist/server/services/index.js +0 -4
- package/dist/server/utils/index.d.ts +0 -29
- package/dist/server/utils/index.js +0 -29
- package/dist/ui/Presence.d.ts +0 -2
- package/dist/ui/Presence.js +0 -7
- package/dist/ui/Prose.d.ts +0 -2
- package/dist/ui/Prose.js +0 -5
- package/dist/ui/index.d.ts +0 -26
- package/dist/ui/index.js +0 -26
- package/dist/utils/createErrorFromCode.d.ts +0 -2
- package/dist/utils/createErrorFromCode.js +0 -11
- package/dist/utils/dataUrlToBlob.d.ts +0 -1
- package/dist/utils/dataUrlToBlob.js +0 -11
- package/dist/utils/index.d.ts +0 -17
- package/dist/utils/index.js +0 -17
- package/dist/utils/isMobile.d.ts +0 -5
- package/dist/utils/isMobile.js +0 -9
- package/dist/utils/resizeImageSize.d.ts +0 -1
- package/dist/utils/resizeImageSize.js +0 -6
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
@keyframes arrow-green-flash {
|
|
2
|
-
0% {
|
|
3
|
-
color: #abefc6;
|
|
4
|
-
}
|
|
5
|
-
100% {
|
|
6
|
-
color: #079455;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.animate-arrow-green-flash-1 {
|
|
11
|
-
animation: arrow-green-flash 0.4s infinite;
|
|
12
|
-
animation-delay: -0.2s;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.animate-arrow-green-flash-2 {
|
|
16
|
-
animation: arrow-green-flash 0.4s infinite;
|
|
17
|
-
animation-delay: -0.1s;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.animate-arrow-green-flash-3 {
|
|
21
|
-
animation: arrow-green-flash 0.4s infinite;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@keyframes arrow-red-flash {
|
|
25
|
-
0%,
|
|
26
|
-
100% {
|
|
27
|
-
color: #f97066;
|
|
28
|
-
}
|
|
29
|
-
50% {
|
|
30
|
-
color: #fecdca;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.animate-arrow-red-flash-1 {
|
|
35
|
-
animation: arrow-red-flash 0.4s infinite;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.animate-arrow-red-flash-2 {
|
|
39
|
-
animation: arrow-red-flash 0.4s infinite;
|
|
40
|
-
animation-delay: -0.1s;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.animate-arrow-red-flash-3 {
|
|
44
|
-
animation: arrow-red-flash 0.4s infinite;
|
|
45
|
-
animation-delay: -0.2s;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* Animated BG */
|
|
49
|
-
@keyframes rotate {
|
|
50
|
-
to {
|
|
51
|
-
transform: rotate(1turn);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.light-rays {
|
|
56
|
-
position: absolute;
|
|
57
|
-
top: 0;
|
|
58
|
-
left: 0;
|
|
59
|
-
right: 0;
|
|
60
|
-
bottom: 0;
|
|
61
|
-
overflow: hidden;
|
|
62
|
-
|
|
63
|
-
--first: var(--color-bg-tertiary);
|
|
64
|
-
--second: var(--color-bg-quaternary);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.light-rays::before,
|
|
68
|
-
.light-rays::after {
|
|
69
|
-
content: '';
|
|
70
|
-
position: absolute;
|
|
71
|
-
top: var(--light-rays-top, 150px);
|
|
72
|
-
left: calc(50% - 90px);
|
|
73
|
-
margin: -100vmax;
|
|
74
|
-
width: 200vmax;
|
|
75
|
-
height: 200vmax;
|
|
76
|
-
opacity: 0.6;
|
|
77
|
-
transform-origin: center;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.light-rays::before {
|
|
81
|
-
background: conic-gradient(
|
|
82
|
-
var(--first) 0deg 7.2deg,
|
|
83
|
-
var(--second) 7.2deg 14.4deg,
|
|
84
|
-
var(--first) 14.4deg 21.6deg,
|
|
85
|
-
var(--second) 21.6deg 28.8deg,
|
|
86
|
-
var(--first) 28.8deg 36deg,
|
|
87
|
-
var(--second) 36deg 43.2deg,
|
|
88
|
-
var(--first) 43.2deg 50.4deg,
|
|
89
|
-
var(--second) 50.4deg 57.6deg,
|
|
90
|
-
var(--first) 57.6deg 64.8deg,
|
|
91
|
-
var(--second) 64.8deg 72deg,
|
|
92
|
-
var(--first) 72deg 79.2deg,
|
|
93
|
-
var(--second) 79.2deg 86.4deg,
|
|
94
|
-
var(--first) 86.4deg 93.6deg,
|
|
95
|
-
var(--second) 93.6deg 100.8deg,
|
|
96
|
-
var(--first) 100.8deg 108deg,
|
|
97
|
-
var(--second) 108deg 115.2deg,
|
|
98
|
-
var(--first) 115.2deg 122.4deg,
|
|
99
|
-
var(--second) 122.4deg 129.6deg,
|
|
100
|
-
var(--first) 129.6deg 136.8deg,
|
|
101
|
-
var(--second) 136.8deg 144deg,
|
|
102
|
-
var(--first) 144deg 151.2deg,
|
|
103
|
-
var(--second) 151.2deg 158.4deg,
|
|
104
|
-
var(--first) 158.4deg 165.6deg,
|
|
105
|
-
var(--second) 165.6deg 172.8deg,
|
|
106
|
-
var(--first) 172.8deg 180deg,
|
|
107
|
-
var(--second) 180deg 187.2deg,
|
|
108
|
-
var(--first) 187.2deg 194.4deg,
|
|
109
|
-
var(--second) 194.4deg 201.6deg,
|
|
110
|
-
var(--first) 201.6deg 208.8deg,
|
|
111
|
-
var(--second) 208.8deg 216deg,
|
|
112
|
-
var(--first) 216deg 223.2deg,
|
|
113
|
-
var(--second) 223.2deg 230.4deg,
|
|
114
|
-
var(--first) 230.4deg 237.6deg,
|
|
115
|
-
var(--second) 237.6deg 244.8deg,
|
|
116
|
-
var(--first) 244.8deg 252deg,
|
|
117
|
-
var(--second) 252deg 259.2deg,
|
|
118
|
-
var(--first) 259.2deg 266.4deg,
|
|
119
|
-
var(--second) 266.4deg 273.6deg,
|
|
120
|
-
var(--first) 273.6deg 280.8deg,
|
|
121
|
-
var(--second) 280.8deg 288deg,
|
|
122
|
-
var(--first) 288deg 295.2deg,
|
|
123
|
-
var(--second) 295.2deg 302.4deg,
|
|
124
|
-
var(--first) 302.4deg 309.6deg,
|
|
125
|
-
var(--second) 309.6deg 316.8deg,
|
|
126
|
-
var(--first) 316.8deg 324deg,
|
|
127
|
-
var(--second) 324deg 331.2deg,
|
|
128
|
-
var(--first) 331.2deg 338.4deg,
|
|
129
|
-
var(--second) 338.4deg 345.6deg,
|
|
130
|
-
var(--first) 345.6deg 352.8deg,
|
|
131
|
-
var(--second) 352.8deg 360deg
|
|
132
|
-
);
|
|
133
|
-
animation: rotate 20s linear infinite;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
@media (max-width: 1024px) {
|
|
137
|
-
.light-rays::before,
|
|
138
|
-
.light-rays::after {
|
|
139
|
-
left: auto;
|
|
140
|
-
right: 11%;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/* ScrollArea.module.css */
|
|
145
|
-
.scrollArea {
|
|
146
|
-
overflow-y: scroll;
|
|
147
|
-
padding-right: 4px;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* WebKit-based browsers */
|
|
151
|
-
.scrollArea::-webkit-scrollbar {
|
|
152
|
-
width: 8px;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
.scrollArea::-webkit-scrollbar-track {
|
|
156
|
-
background: var(--color-bg-primary-alt);
|
|
157
|
-
border-radius: 9999px;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.scrollArea::-webkit-scrollbar-thumb {
|
|
161
|
-
background-color: var(--color-bg-quaternary);
|
|
162
|
-
border-radius: 9999px;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
@keyframes waveColor {
|
|
166
|
-
0%,
|
|
167
|
-
2.5% {
|
|
168
|
-
color: var(--wave-highlight-color);
|
|
169
|
-
}
|
|
170
|
-
2.51%,
|
|
171
|
-
100% {
|
|
172
|
-
color: var(--color-brand-300);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.animate-wave-color-success {
|
|
177
|
-
--wave-highlight-color: var(--color-success-800);
|
|
178
|
-
animation: waveColor 4s ease-in-out infinite;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
.animate-wave-color-error {
|
|
182
|
-
--wave-highlight-color: var(--color-error-600);
|
|
183
|
-
animation: waveColor 4s ease-in-out infinite;
|
|
184
|
-
}
|
|
1
|
+
@keyframes arrow-green-flash {
|
|
2
|
+
0% {
|
|
3
|
+
color: #abefc6;
|
|
4
|
+
}
|
|
5
|
+
100% {
|
|
6
|
+
color: #079455;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.animate-arrow-green-flash-1 {
|
|
11
|
+
animation: arrow-green-flash 0.4s infinite;
|
|
12
|
+
animation-delay: -0.2s;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.animate-arrow-green-flash-2 {
|
|
16
|
+
animation: arrow-green-flash 0.4s infinite;
|
|
17
|
+
animation-delay: -0.1s;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.animate-arrow-green-flash-3 {
|
|
21
|
+
animation: arrow-green-flash 0.4s infinite;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@keyframes arrow-red-flash {
|
|
25
|
+
0%,
|
|
26
|
+
100% {
|
|
27
|
+
color: #f97066;
|
|
28
|
+
}
|
|
29
|
+
50% {
|
|
30
|
+
color: #fecdca;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.animate-arrow-red-flash-1 {
|
|
35
|
+
animation: arrow-red-flash 0.4s infinite;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.animate-arrow-red-flash-2 {
|
|
39
|
+
animation: arrow-red-flash 0.4s infinite;
|
|
40
|
+
animation-delay: -0.1s;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.animate-arrow-red-flash-3 {
|
|
44
|
+
animation: arrow-red-flash 0.4s infinite;
|
|
45
|
+
animation-delay: -0.2s;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Animated BG */
|
|
49
|
+
@keyframes rotate {
|
|
50
|
+
to {
|
|
51
|
+
transform: rotate(1turn);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.light-rays {
|
|
56
|
+
position: absolute;
|
|
57
|
+
top: 0;
|
|
58
|
+
left: 0;
|
|
59
|
+
right: 0;
|
|
60
|
+
bottom: 0;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
|
|
63
|
+
--first: var(--color-bg-tertiary);
|
|
64
|
+
--second: var(--color-bg-quaternary);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.light-rays::before,
|
|
68
|
+
.light-rays::after {
|
|
69
|
+
content: '';
|
|
70
|
+
position: absolute;
|
|
71
|
+
top: var(--light-rays-top, 150px);
|
|
72
|
+
left: calc(50% - 90px);
|
|
73
|
+
margin: -100vmax;
|
|
74
|
+
width: 200vmax;
|
|
75
|
+
height: 200vmax;
|
|
76
|
+
opacity: 0.6;
|
|
77
|
+
transform-origin: center;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.light-rays::before {
|
|
81
|
+
background: conic-gradient(
|
|
82
|
+
var(--first) 0deg 7.2deg,
|
|
83
|
+
var(--second) 7.2deg 14.4deg,
|
|
84
|
+
var(--first) 14.4deg 21.6deg,
|
|
85
|
+
var(--second) 21.6deg 28.8deg,
|
|
86
|
+
var(--first) 28.8deg 36deg,
|
|
87
|
+
var(--second) 36deg 43.2deg,
|
|
88
|
+
var(--first) 43.2deg 50.4deg,
|
|
89
|
+
var(--second) 50.4deg 57.6deg,
|
|
90
|
+
var(--first) 57.6deg 64.8deg,
|
|
91
|
+
var(--second) 64.8deg 72deg,
|
|
92
|
+
var(--first) 72deg 79.2deg,
|
|
93
|
+
var(--second) 79.2deg 86.4deg,
|
|
94
|
+
var(--first) 86.4deg 93.6deg,
|
|
95
|
+
var(--second) 93.6deg 100.8deg,
|
|
96
|
+
var(--first) 100.8deg 108deg,
|
|
97
|
+
var(--second) 108deg 115.2deg,
|
|
98
|
+
var(--first) 115.2deg 122.4deg,
|
|
99
|
+
var(--second) 122.4deg 129.6deg,
|
|
100
|
+
var(--first) 129.6deg 136.8deg,
|
|
101
|
+
var(--second) 136.8deg 144deg,
|
|
102
|
+
var(--first) 144deg 151.2deg,
|
|
103
|
+
var(--second) 151.2deg 158.4deg,
|
|
104
|
+
var(--first) 158.4deg 165.6deg,
|
|
105
|
+
var(--second) 165.6deg 172.8deg,
|
|
106
|
+
var(--first) 172.8deg 180deg,
|
|
107
|
+
var(--second) 180deg 187.2deg,
|
|
108
|
+
var(--first) 187.2deg 194.4deg,
|
|
109
|
+
var(--second) 194.4deg 201.6deg,
|
|
110
|
+
var(--first) 201.6deg 208.8deg,
|
|
111
|
+
var(--second) 208.8deg 216deg,
|
|
112
|
+
var(--first) 216deg 223.2deg,
|
|
113
|
+
var(--second) 223.2deg 230.4deg,
|
|
114
|
+
var(--first) 230.4deg 237.6deg,
|
|
115
|
+
var(--second) 237.6deg 244.8deg,
|
|
116
|
+
var(--first) 244.8deg 252deg,
|
|
117
|
+
var(--second) 252deg 259.2deg,
|
|
118
|
+
var(--first) 259.2deg 266.4deg,
|
|
119
|
+
var(--second) 266.4deg 273.6deg,
|
|
120
|
+
var(--first) 273.6deg 280.8deg,
|
|
121
|
+
var(--second) 280.8deg 288deg,
|
|
122
|
+
var(--first) 288deg 295.2deg,
|
|
123
|
+
var(--second) 295.2deg 302.4deg,
|
|
124
|
+
var(--first) 302.4deg 309.6deg,
|
|
125
|
+
var(--second) 309.6deg 316.8deg,
|
|
126
|
+
var(--first) 316.8deg 324deg,
|
|
127
|
+
var(--second) 324deg 331.2deg,
|
|
128
|
+
var(--first) 331.2deg 338.4deg,
|
|
129
|
+
var(--second) 338.4deg 345.6deg,
|
|
130
|
+
var(--first) 345.6deg 352.8deg,
|
|
131
|
+
var(--second) 352.8deg 360deg
|
|
132
|
+
);
|
|
133
|
+
animation: rotate 20s linear infinite;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@media (max-width: 1024px) {
|
|
137
|
+
.light-rays::before,
|
|
138
|
+
.light-rays::after {
|
|
139
|
+
left: auto;
|
|
140
|
+
right: 11%;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* ScrollArea.module.css */
|
|
145
|
+
.scrollArea {
|
|
146
|
+
overflow-y: scroll;
|
|
147
|
+
padding-right: 4px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* WebKit-based browsers */
|
|
151
|
+
.scrollArea::-webkit-scrollbar {
|
|
152
|
+
width: 8px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.scrollArea::-webkit-scrollbar-track {
|
|
156
|
+
background: var(--color-bg-primary-alt);
|
|
157
|
+
border-radius: 9999px;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.scrollArea::-webkit-scrollbar-thumb {
|
|
161
|
+
background-color: var(--color-bg-quaternary);
|
|
162
|
+
border-radius: 9999px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@keyframes waveColor {
|
|
166
|
+
0%,
|
|
167
|
+
2.5% {
|
|
168
|
+
color: var(--wave-highlight-color);
|
|
169
|
+
}
|
|
170
|
+
2.51%,
|
|
171
|
+
100% {
|
|
172
|
+
color: var(--color-brand-300);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.animate-wave-color-success {
|
|
177
|
+
--wave-highlight-color: var(--color-success-800);
|
|
178
|
+
animation: waveColor 4s ease-in-out infinite;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.animate-wave-color-error {
|
|
182
|
+
--wave-highlight-color: var(--color-error-600);
|
|
183
|
+
animation: waveColor 4s ease-in-out infinite;
|
|
184
|
+
}
|
|
@@ -50,24 +50,24 @@ export function validateFile(file) {
|
|
|
50
50
|
return 'Unsupported file';
|
|
51
51
|
}
|
|
52
52
|
export function showPermissionInstructions() {
|
|
53
|
-
const instructions = `
|
|
54
|
-
Camera access is blocked. To enable camera access:
|
|
55
|
-
|
|
56
|
-
Chrome/Edge:
|
|
57
|
-
1. Click the camera icon in the address bar
|
|
58
|
-
2. Select "Always allow" and click "Done"
|
|
59
|
-
3. Or go to Settings > Privacy and security > Site settings > Camera
|
|
60
|
-
|
|
61
|
-
Firefox:
|
|
62
|
-
1. Click the shield icon in the address bar
|
|
63
|
-
2. Click on "Camera blocked"
|
|
64
|
-
3. Select "Allow" and refresh the page
|
|
65
|
-
|
|
66
|
-
Safari:
|
|
67
|
-
1. Go to Safari > Settings > Websites > Camera
|
|
68
|
-
2. Find this website and change to "Allow"
|
|
69
|
-
|
|
70
|
-
After changing permissions, please refresh the page and try again.
|
|
53
|
+
const instructions = `
|
|
54
|
+
Camera access is blocked. To enable camera access:
|
|
55
|
+
|
|
56
|
+
Chrome/Edge:
|
|
57
|
+
1. Click the camera icon in the address bar
|
|
58
|
+
2. Select "Always allow" and click "Done"
|
|
59
|
+
3. Or go to Settings > Privacy and security > Site settings > Camera
|
|
60
|
+
|
|
61
|
+
Firefox:
|
|
62
|
+
1. Click the shield icon in the address bar
|
|
63
|
+
2. Click on "Camera blocked"
|
|
64
|
+
3. Select "Allow" and refresh the page
|
|
65
|
+
|
|
66
|
+
Safari:
|
|
67
|
+
1. Go to Safari > Settings > Websites > Camera
|
|
68
|
+
2. Find this website and change to "Allow"
|
|
69
|
+
|
|
70
|
+
After changing permissions, please refresh the page and try again.
|
|
71
71
|
`;
|
|
72
72
|
alert(instructions);
|
|
73
73
|
}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import Image from 'next/image';
|
|
3
3
|
import Link from 'next/link';
|
|
4
4
|
import { ChevronLeftIcon } from '../../icons/ChevronLeftIcon.js';
|
|
5
|
-
import { Prose } from '../../ui/Prose.js';
|
|
5
|
+
import { Prose } from '../../ui/Prose/index.js';
|
|
6
6
|
import { stripTags } from '../../utils/stripTags.js';
|
|
7
7
|
export function News(props) {
|
|
8
8
|
return (_jsxs(_Fragment, { children: [_jsx("meta", { name: "description", content: stripTags(props.news.content) }), _jsx("meta", { name: "og:title", content: props.news.title }), _jsx("meta", { name: "og:description", content: stripTags(props.news.content) }), _jsx("meta", { name: "og:image", content: props.news.image }), _jsx("meta", { name: "twitter:title", content: props.news.title }), _jsx("meta", { name: "twitter:description", content: stripTags(props.news.content) }), _jsx("meta", { name: "twitter:image", content: props.news.image }), _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), _jsxs("div", { style: props.style, className: props.className, children: [_jsxs(Link, { href: props.viewAllUrl ?? '/news', className: "text-button-secondary-fg flex items-center gap-lg text-lg font-semibold", children: [_jsx(ChevronLeftIcon, { className: "size-6" }), "Back to all News"] }), _jsx(Image, { src: props.news.image, alt: "", width: 1024, height: 600, priority: true, unoptimized: true, className: "mt-3xl block h-auto w-full rounded-xl lg:mt-6" }), _jsx("p", { className: "text-brand-400 mt-xl text-sm font-semibold lg:mt-6", children: props.news.category }), _jsx("h2", { className: "mt-xl text-2xl font-semibold lg:mt-6", children: props.news.title }), _jsx(Prose, { className: "mt-xl lg:mt-6", dangerouslySetInnerHTML: {
|
|
@@ -4,7 +4,7 @@ import { usePathname, useRouter, useSearchParams } from 'next/navigation';
|
|
|
4
4
|
import { useCallback, useEffect } from 'react';
|
|
5
5
|
import { useFeatureFlag } from '../../client/hooks/useFeatureFlag.js';
|
|
6
6
|
import { Portal } from '../../ui/Portal/index.js';
|
|
7
|
-
import { Presence } from '../../ui/Presence.js';
|
|
7
|
+
import { Presence } from '../../ui/Presence/index.js';
|
|
8
8
|
export function FeatureFlag() {
|
|
9
9
|
const router = useRouter();
|
|
10
10
|
const pathname = usePathname();
|
|
@@ -11,7 +11,7 @@ import { useLocaleInfo } from '../../client/hooks/useLocaleInfo.js';
|
|
|
11
11
|
import { usePromoQuery } from '../../client/hooks/usePromoQuery.js';
|
|
12
12
|
import { ChevronLeftIcon } from '../../icons/ChevronLeftIcon.js';
|
|
13
13
|
import { Button } from '../../ui/Button/index.js';
|
|
14
|
-
import { Prose } from '../../ui/Prose.js';
|
|
14
|
+
import { Prose } from '../../ui/Prose/index.js';
|
|
15
15
|
export function Promo__client(props) {
|
|
16
16
|
const localeInfo = useLocaleInfo();
|
|
17
17
|
const availablePromosQuery = useAvailablePromosQuery();
|
|
@@ -18,7 +18,7 @@ import { Dialog } from '../../ui/Dialog/index.js';
|
|
|
18
18
|
import { Field } from '../../ui/Field/index.js';
|
|
19
19
|
import { IconButton } from '../../ui/IconButton/index.js';
|
|
20
20
|
import { Portal } from '../../ui/Portal/index.js';
|
|
21
|
-
import { Presence } from '../../ui/Presence.js';
|
|
21
|
+
import { Presence } from '../../ui/Presence/index.js';
|
|
22
22
|
import { callIfFn } from '../../utils/callIfFn.js';
|
|
23
23
|
import { getGameImageUrl } from '../../utils/getGameImageUrl.js';
|
|
24
24
|
import { GameLaunchTrigger } from '../GameLaunch/index.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CSSProperties, type RefObject } from 'react';
|
|
2
|
+
import { type ValidateFileError } from '../../../../utils/validateFile';
|
|
3
|
+
import { type UseIdFrontImageFieldProps } from './useIdFrontImageField';
|
|
4
|
+
export interface IdFrontImageFieldProps extends UseIdFrontImageFieldProps {
|
|
5
|
+
ref?: RefObject<HTMLDivElement | null>;
|
|
6
|
+
id?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
className?: string;
|
|
9
|
+
invalid?: boolean;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
onError?: (error: ValidateFileError) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function IdFrontImageField__client(props: IdFrontImageFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Image from 'next/image';
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { usePxToRemConverter } from '../../../../client/hooks/usePxToRemConverter.js';
|
|
6
|
+
import { useRect } from '../../../../client/hooks/useRect.js';
|
|
7
|
+
import { Camera01Icon } from '../../../../icons/Camera01Icon.js';
|
|
8
|
+
import { CameraOffIcon } from '../../../../icons/CameraOffIcon.js';
|
|
9
|
+
import { CheckCircleIcon } from '../../../../icons/CheckCircleIcon.js';
|
|
10
|
+
import { RefreshCcw01Icon } from '../../../../icons/RefreshCcw01Icon.js';
|
|
11
|
+
import { Spinner02Icon } from '../../../../icons/Spinner02Icon.js';
|
|
12
|
+
import { UploadCloud02Icon } from '../../../../icons/UploadCloud02Icon.js';
|
|
13
|
+
import { XIcon } from '../../../../icons/XIcon.js';
|
|
14
|
+
import { Button } from '../../../../ui/Button/index.js';
|
|
15
|
+
import { Dialog } from '../../../../ui/Dialog/index.js';
|
|
16
|
+
import { Portal } from '../../../../ui/Portal/index.js';
|
|
17
|
+
import { createSplitProps } from '../../../../utils/createSplitProps.js';
|
|
18
|
+
import { validateFile, } from '../../../../utils/validateFile.js';
|
|
19
|
+
import { IdFrontImageFieldProvider, useIdFrontImageFieldContext, } from './IdFrontImageFieldContext.js';
|
|
20
|
+
import { useIdFrontImageField, } from './useIdFrontImageField.js';
|
|
21
|
+
export function IdFrontImageField__client(props) {
|
|
22
|
+
const [useIdFrontImageFieldProps, localProps] = createSplitProps([
|
|
23
|
+
'value',
|
|
24
|
+
'onChange',
|
|
25
|
+
'defaultValue',
|
|
26
|
+
])(props);
|
|
27
|
+
const context = useIdFrontImageField(useIdFrontImageFieldProps);
|
|
28
|
+
return (_jsxs(IdFrontImageFieldProvider, { value: context, children: [_jsxs("div", { ref: localProps.ref, id: localProps.id, style: localProps.style, className: twMerge('border-border-primary bg-bg-primary group relative aspect-[352/180] w-full shrink-0 rounded-xl border p-xl', localProps.className), onDragOver: (e) => e.preventDefault(), onDragEnter: (e) => e.preventDefault(), onDragLeave: (e) => e.preventDefault(), onDrop: (e) => {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
const file = e.dataTransfer.files?.[0];
|
|
31
|
+
if (!file)
|
|
32
|
+
return;
|
|
33
|
+
const error = validateFile(file);
|
|
34
|
+
if (error)
|
|
35
|
+
return localProps.onError?.(error);
|
|
36
|
+
context.setValue(file);
|
|
37
|
+
}, "aria-describedby": context.field?.ariaDescribedby, children: [_jsx("input", { id: context.field?.ids?.control, ref: context.inputRef, type: "file", accept: "image/png, image/jpeg", onChange: (e) => {
|
|
38
|
+
const file = e.target.files?.[0];
|
|
39
|
+
if (!file)
|
|
40
|
+
return;
|
|
41
|
+
const error = validateFile(file);
|
|
42
|
+
if (error)
|
|
43
|
+
return localProps.onError?.(error);
|
|
44
|
+
context.setValue(file);
|
|
45
|
+
}, disabled: context.field?.disabled || localProps.disabled, readOnly: context.field?.readOnly || localProps.readOnly, required: context.field?.required || localProps.required, className: "sr-only" }), !context.value && (_jsxs("div", { className: "flex size-full flex-col justify-center", children: [_jsx("div", { className: "border-border-primary shadow-xs mx-auto flex size-8 items-center justify-center rounded-sm border", children: _jsx(UploadCloud02Icon, { className: "text-text-placeholder-subtle size-4" }) }), _jsxs("h2", { className: "text-text-tertiary-600 mt-lg", children: [_jsxs("span", { className: "block text-center text-sm", children: [_jsx("button", { type: "button", onClick: () => {
|
|
46
|
+
context.inputRef.current?.click();
|
|
47
|
+
}, disabled: context.field?.disabled ||
|
|
48
|
+
context.field?.readOnly ||
|
|
49
|
+
localProps.disabled ||
|
|
50
|
+
localProps.readOnly, className: "text-button-secondary-fg font-semibold disabled:opacity-60", children: "Click to upload" }), ' ', "or drag and drop"] }), _jsx("span", { className: "mt-xs block text-center text-xs", children: "PNG, JPG or JPEG (max. 10mb)" }), _jsx("span", { className: "m-txs block text-center text-xs", children: "or" })] }), _jsx(Button, { size: "sm", variant: "outline", className: "mx-auto mt-md w-auto", onClick: () => {
|
|
51
|
+
context.disclosure.setOpen(true);
|
|
52
|
+
}, disabled: context.field?.disabled ||
|
|
53
|
+
context.field?.readOnly ||
|
|
54
|
+
localProps.disabled ||
|
|
55
|
+
localProps.readOnly, children: "Take a photo" })] })), context.valueAsUrl && (_jsxs("div", { className: "relative", children: [_jsx(Image, { src: context.valueAsUrl, alt: "", width: 600, height: 378.08, unoptimized: true, className: "h-auto w-full rounded-md" }), _jsx("button", { type: "button", className: "backdrop-blur-xs absolute right-2 top-2 rounded-full bg-white/10 p-1", onClick: () => {
|
|
56
|
+
context.setValue(null);
|
|
57
|
+
}, children: _jsx(XIcon, { className: "size-5" }) })] }))] }), _jsx(Camera, {})] }));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* -------------------------------------
|
|
61
|
+
* Camera
|
|
62
|
+
* -------------------------------------
|
|
63
|
+
*/
|
|
64
|
+
function Camera() {
|
|
65
|
+
const context = useIdFrontImageFieldContext();
|
|
66
|
+
return (_jsx(Dialog.Root, { open: context.disclosure.open, onOpenChange: (details) => {
|
|
67
|
+
context.disclosure.setOpen(details.open);
|
|
68
|
+
}, closeOnEscape: false, closeOnInteractOutside: false, onExitComplete: context.camera.close, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+1)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+2)] flex items-center justify-center overflow-y-auto py-4", children: _jsxs(Dialog.Content, { className: "bg-bg-primary-alt mx-auto w-[calc(100dvw-1rem)] max-w-[calc(100dvw-1rem)] overflow-y-auto rounded-lg px-4 py-5 lg:w-[747px] lg:max-w-[747px] lg:px-3xl lg:py-4xl", children: [_jsx(Dialog.CloseTrigger, { children: _jsx(XIcon, {}) }), _jsx(Dialog.Title, { className: "text-center font-semibold lg:text-xl", children: "Take a Picture of Your Front ID" }), _jsxs(Dialog.Description, { className: "text-text-tertiary-600 mt-md text-center text-xs lg:text-base", children: ["Make sure your ID is clearly visible, well-lit, and not blurry.", ' ', _jsx("br", { className: "hidden lg:block" }), "Avoid glare or reflections, and ensure all corners are within\u00A0the\u00A0frame."] }), _jsxs("div", { className: "relative mt-5 lg:mt-10 lg:px-3xl", children: [_jsx(Video, {}), context.camera.error && (_jsxs("div", { className: "border-border-disabled flex aspect-[4/3] flex-col items-center justify-center rounded-md border bg-black px-4 lg:aspect-video", children: [_jsx(CameraOffIcon, { className: "text-text-placeholder-subtle size-10 text-center lg:size-12" }), _jsx("h2", { className: "mt-3 text-sm font-semibold lg:mt-4 lg:text-base", children: context.camera.error.name }), _jsx("p", { className: "text-text-tertiary-600 mt-0.5 text-center text-xs lg:mt-1 lg:text-sm", children: context.camera.error.message }), _jsx(Button, { size: "xs", variant: "outline", colorScheme: "gray", fullWidth: false, className: "mt-4 lg:mt-5", onClick: () => {
|
|
69
|
+
context.camera.reopen();
|
|
70
|
+
}, children: "Try again" })] })), context.camera.loading && (_jsx("div", { className: "border-border-disabled flex aspect-[4/3] flex-col items-center justify-center rounded-md border bg-black px-4 lg:aspect-video", children: _jsx(Spinner02Icon, { className: "text-text-placeholder size-8" }) })), context.camera.data && (_jsx("div", { className: "border-border-disabled aspect-[4/3] w-full overflow-hidden rounded-md border bg-black lg:aspect-video", children: _jsx(Image, { src: context.camera.data.url, alt: "", width: 600, height: 378.08, unoptimized: true, className: "mx-auto mt-2 block h-[calc(100%-1rem)] w-auto" }) }))] }), !context.camera.data && (_jsx("div", { className: "mt-5 lg:mt-10", children: _jsxs(Button, { className: "disabled:bg-bg-disabled disabled:text-text-disabled mx-auto w-full px-xl py-lg lg:w-[10rem]", onClick: () => {
|
|
71
|
+
context.camera.snap();
|
|
72
|
+
}, disabled: context.camera.snapping ||
|
|
73
|
+
context.camera.loading ||
|
|
74
|
+
!!context.camera.error, children: [context.camera.snapping ? (_jsx(Spinner02Icon, { className: "size-5" })) : (_jsx(Camera01Icon, { className: "size-5" })), "Capture"] }) })), context.camera.data && (_jsxs("div", { className: "mt-5 flex gap-3 lg:mt-10 lg:justify-center", children: [_jsxs(Button, { onClick: () => {
|
|
75
|
+
const file = context.camera.data?.file;
|
|
76
|
+
if (!file)
|
|
77
|
+
return;
|
|
78
|
+
context.setValue(file);
|
|
79
|
+
context.disclosure.setOpen(false);
|
|
80
|
+
}, className: "w-full lg:w-[10rem]", children: [_jsx(CheckCircleIcon, { className: "size-5" }), "Use Photo"] }), _jsxs(Button, { variant: "outline", colorScheme: "gray", onClick: () => {
|
|
81
|
+
context.camera.reset();
|
|
82
|
+
}, className: "w-full lg:w-[10rem]", children: [_jsx(RefreshCcw01Icon, { className: "size-5" }), " Retake"] })] }))] }) })] }) }));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* -------------------------------------
|
|
86
|
+
* Video
|
|
87
|
+
* -------------------------------------
|
|
88
|
+
*/
|
|
89
|
+
function Video() {
|
|
90
|
+
const context = useIdFrontImageFieldContext();
|
|
91
|
+
const pxToRem = usePxToRemConverter();
|
|
92
|
+
const rootRef = useRef(null);
|
|
93
|
+
const rootRect = useRect(rootRef);
|
|
94
|
+
const guideRect = useRect(context.guideRef);
|
|
95
|
+
const x = (rootRect.width - guideRect.width) / 2;
|
|
96
|
+
const y = (rootRect.height - guideRect.height) / 2;
|
|
97
|
+
return (_jsxs("div", { ref: rootRef, className: twMerge('relative h-auto w-full overflow-hidden', !context.camera.data && !context.camera.error && !context.camera.loading
|
|
98
|
+
? 'block'
|
|
99
|
+
: 'hidden'), children: [_jsx("video", { ...context.camera.videoProps }), _jsx("div", { className: "pointer-events-none absolute left-0 right-0 top-0 z-20 bg-black/60 backdrop-blur-sm", style: { height: `${pxToRem(y)}rem` } }), _jsx("div", { className: "pointer-events-none absolute bottom-0 left-0 right-0 z-20 bg-black/60 backdrop-blur-sm", style: { height: `${pxToRem(y)}rem` } }), _jsx("div", { className: "pointer-events-none absolute left-0 z-20 bg-black/60 backdrop-blur-sm", style: { top: y, bottom: y, width: `${pxToRem(x)}rem` } }), _jsx("div", { className: "pointer-events-none absolute right-0 z-20 bg-black/60 backdrop-blur-sm", style: { top: y, bottom: y, width: `${pxToRem(x)}rem` } }), _jsx("div", { ref: context.guideRef, className: "border-utility-warning-700 pointer-events-none absolute left-1/2 top-1/2 z-10 aspect-[85.6/53.98] w-[calc(100%-1rem)] max-w-[24.688rem] -translate-x-1/2 -translate-y-1/2 border-4 border-dashed transition-all duration-200" })] }));
|
|
100
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import dynamic from 'next/dynamic';
|
|
4
|
-
import { Spinner02Icon } from '
|
|
5
|
-
const Component = dynamic(() => import('./
|
|
4
|
+
import { Spinner02Icon } from '../../../../icons/Spinner02Icon.js';
|
|
5
|
+
const Component = dynamic(() => import('./IdFrontImageField.client.js').then((mod) => mod.IdFrontImageField__client), {
|
|
6
6
|
ssr: false,
|
|
7
7
|
loading: () => (_jsx("div", { className: "border-border-primary bg-bg-primary flex aspect-[352/180] w-full shrink-0 items-center justify-center rounded-xl border", children: _jsx(Spinner02Icon, { className: "text-text-quinary size-8" }) })),
|
|
8
8
|
});
|
|
9
|
-
export function
|
|
9
|
+
export function IdFrontImageField(props) {
|
|
10
10
|
return _jsx(Component, { ...props });
|
|
11
11
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { UseIdFrontImageFieldReturn } from './useIdFrontImageField';
|
|
2
|
+
export declare const IdFrontImageFieldProvider: (props: {
|
|
3
|
+
value: UseIdFrontImageFieldReturn;
|
|
4
|
+
} & {
|
|
5
|
+
children?: import("react").ReactNode | undefined;
|
|
6
|
+
}) => React.ReactNode, useIdFrontImageFieldContext: () => UseIdFrontImageFieldReturn;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './IdFrontImageField';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './IdFrontImageField.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface UseIdFrontImageFieldProps {
|
|
2
|
+
value?: File | null;
|
|
3
|
+
onChange?: (value: File | null) => void;
|
|
4
|
+
defaultValue?: File | null;
|
|
5
|
+
}
|
|
6
|
+
export interface UseIdFrontImageFieldReturn extends ReturnType<typeof useIdFrontImageField> {
|
|
7
|
+
}
|
|
8
|
+
export declare function useIdFrontImageField(props: UseIdFrontImageFieldProps): {
|
|
9
|
+
field: import("@ark-ui/react").UseFieldContext;
|
|
10
|
+
value: File | null;
|
|
11
|
+
valueAsUrl: string | null;
|
|
12
|
+
setValue: import("react").Dispatch<import("react").SetStateAction<File | null>>;
|
|
13
|
+
camera: import("../../../../client/hooks/useCamera").UseCameraReturn<never>;
|
|
14
|
+
disclosure: import("../../../../client/hooks/useDisclosure").UseDisclosureReturn;
|
|
15
|
+
inputRef: import("react").RefObject<HTMLInputElement | null>;
|
|
16
|
+
guideRef: import("react").RefObject<HTMLDivElement | null>;
|
|
17
|
+
maskRef: import("react").RefObject<HTMLDivElement | null>;
|
|
18
|
+
};
|