saafe-redirection-flow 2.0.0

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 (225) hide show
  1. package/.github/workflows/build-and-deploy.yml +41 -0
  2. package/.gitlab-ci.yml +108 -0
  3. package/.releaserc.json +18 -0
  4. package/.storybook/main.ts +28 -0
  5. package/.storybook/preview.ts +16 -0
  6. package/.storybook/vitest.setup.ts +9 -0
  7. package/.vite/deps/@radix-ui_react-avatar.js +230 -0
  8. package/.vite/deps/@radix-ui_react-avatar.js.map +7 -0
  9. package/.vite/deps/@radix-ui_react-slot.js +12 -0
  10. package/.vite/deps/@radix-ui_react-slot.js.map +7 -0
  11. package/.vite/deps/_metadata.json +79 -0
  12. package/.vite/deps/chunk-5VGQBUCU.js +597 -0
  13. package/.vite/deps/chunk-5VGQBUCU.js.map +7 -0
  14. package/.vite/deps/chunk-DC5AMYBS.js +38 -0
  15. package/.vite/deps/chunk-DC5AMYBS.js.map +7 -0
  16. package/.vite/deps/chunk-HUIEPYH7.js +11265 -0
  17. package/.vite/deps/chunk-HUIEPYH7.js.map +7 -0
  18. package/.vite/deps/chunk-TKHB4QMX.js +281 -0
  19. package/.vite/deps/chunk-TKHB4QMX.js.map +7 -0
  20. package/.vite/deps/chunk-YLDSBLSF.js +1139 -0
  21. package/.vite/deps/chunk-YLDSBLSF.js.map +7 -0
  22. package/.vite/deps/class-variance-authority.js +63 -0
  23. package/.vite/deps/class-variance-authority.js.map +7 -0
  24. package/.vite/deps/lucide-react.js +36984 -0
  25. package/.vite/deps/lucide-react.js.map +7 -0
  26. package/.vite/deps/package.json +3 -0
  27. package/.vite/deps/react-dom_client.js +17917 -0
  28. package/.vite/deps/react-dom_client.js.map +7 -0
  29. package/.vite/deps/react-router-dom.js +452 -0
  30. package/.vite/deps/react-router-dom.js.map +7 -0
  31. package/.vite/deps/react-router.js +234 -0
  32. package/.vite/deps/react-router.js.map +7 -0
  33. package/.vite/deps/react.js +5 -0
  34. package/.vite/deps/react.js.map +7 -0
  35. package/.vite/deps/react_jsx-dev-runtime.js +470 -0
  36. package/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  37. package/CHANGELOG.md +420 -0
  38. package/LICENSE +21 -0
  39. package/README.md +129 -0
  40. package/RELEASE_CHEATSHEET.md +93 -0
  41. package/RELEASE_NOTES.md +120 -0
  42. package/components.json +21 -0
  43. package/docs/DEPLOYMENT_WORKFLOW.md +262 -0
  44. package/docs/RELEASE_GUIDE.md +591 -0
  45. package/docs/architecture.md +432 -0
  46. package/docs/components.md +199 -0
  47. package/docs/index.md +69 -0
  48. package/docs/local-release-workflow.md +234 -0
  49. package/docs/routes.md +118 -0
  50. package/docs/sdk-integration.md +325 -0
  51. package/docs/semantic-release.md +124 -0
  52. package/docs/user-flow.md +206 -0
  53. package/eslint.config.js +28 -0
  54. package/index.html +19 -0
  55. package/install.sh +198 -0
  56. package/package.json +115 -0
  57. package/public/images/bank-logo.png +0 -0
  58. package/public/saafe-icon.svg +9 -0
  59. package/src/App.tsx +171 -0
  60. package/src/__tests__/url-parameters.test.ts +82 -0
  61. package/src/assets/brand/applestore.svg +13 -0
  62. package/src/assets/brand/playstore.svg +23 -0
  63. package/src/assets/brand/saafe-color-white-logo.svg +14 -0
  64. package/src/assets/brand/saafe-icon.svg +9 -0
  65. package/src/assets/brand/saafe-logo.svg +18 -0
  66. package/src/assets/icons/check-icon-dark.svg +27 -0
  67. package/src/assets/icons/check-icon.svg +23 -0
  68. package/src/components/ErrorBoundary.tsx +132 -0
  69. package/src/components/alert/alert.tsx +27 -0
  70. package/src/components/auth/AuthGuard.tsx +76 -0
  71. package/src/components/cards/BankCard.stories.tsx +69 -0
  72. package/src/components/cards/BankCard.tsx +227 -0
  73. package/src/components/cards/OuterCard.tsx +109 -0
  74. package/src/components/cards/WrapperCard.tsx +64 -0
  75. package/src/components/documents/PrivacyContent.tsx +1 -0
  76. package/src/components/dummyFooter.tsx +29 -0
  77. package/src/components/icons/github.tsx +12 -0
  78. package/src/components/language/LanguageSwitcher.tsx +44 -0
  79. package/src/components/layouts/FrostedLayout.stories.tsx +42 -0
  80. package/src/components/layouts/FrostedLayout.tsx +333 -0
  81. package/src/components/layouts/MobileLayout.tsx +403 -0
  82. package/src/components/mobile-background.tsx +136 -0
  83. package/src/components/mobileAppDownload.tsx +30 -0
  84. package/src/components/modal/ModalComp.tsx +27 -0
  85. package/src/components/mode-toggle.tsx +36 -0
  86. package/src/components/page-header.tsx +50 -0
  87. package/src/components/session/SessionTimeoutScreen.tsx +134 -0
  88. package/src/components/session/SessionTimer.tsx +173 -0
  89. package/src/components/step-navigation.tsx +87 -0
  90. package/src/components/title/AppBar.stories.tsx +50 -0
  91. package/src/components/title/AppBar.tsx +150 -0
  92. package/src/components/title/SectionTitle.tsx +31 -0
  93. package/src/components/ui/AnimatedButton.module.css +13 -0
  94. package/src/components/ui/alert.tsx +66 -0
  95. package/src/components/ui/animatedButton.tsx +111 -0
  96. package/src/components/ui/avatar.tsx +51 -0
  97. package/src/components/ui/badge.tsx +36 -0
  98. package/src/components/ui/bottom-sheet.tsx +122 -0
  99. package/src/components/ui/button.tsx +59 -0
  100. package/src/components/ui/calendar.tsx +86 -0
  101. package/src/components/ui/card.tsx +92 -0
  102. package/src/components/ui/checkbox.stories.tsx +49 -0
  103. package/src/components/ui/checkbox.tsx +67 -0
  104. package/src/components/ui/collapsible.tsx +45 -0
  105. package/src/components/ui/dialog.tsx +134 -0
  106. package/src/components/ui/document-link.tsx +26 -0
  107. package/src/components/ui/dot-stepper.tsx +57 -0
  108. package/src/components/ui/dropdown-menu.tsx +255 -0
  109. package/src/components/ui/form.tsx +165 -0
  110. package/src/components/ui/frosted-panel.stories.tsx +86 -0
  111. package/src/components/ui/frosted-panel.tsx +276 -0
  112. package/src/components/ui/input.tsx +39 -0
  113. package/src/components/ui/label.stories.tsx +67 -0
  114. package/src/components/ui/label.tsx +23 -0
  115. package/src/components/ui/mobile-footer.tsx +54 -0
  116. package/src/components/ui/modal.tsx +90 -0
  117. package/src/components/ui/otp-input.stories.tsx +62 -0
  118. package/src/components/ui/otp-input.tsx +221 -0
  119. package/src/components/ui/platform-specific-behavior.tsx +28 -0
  120. package/src/components/ui/popover.tsx +46 -0
  121. package/src/components/ui/progress.tsx +103 -0
  122. package/src/components/ui/radio-group.tsx +45 -0
  123. package/src/components/ui/scroll-area.tsx +56 -0
  124. package/src/components/ui/sdk-params-docs.tsx +53 -0
  125. package/src/components/ui/select.tsx +159 -0
  126. package/src/components/ui/separator.tsx +28 -0
  127. package/src/components/ui/sheet.tsx +137 -0
  128. package/src/components/ui/sidebar.tsx +724 -0
  129. package/src/components/ui/skeleton.stories.tsx +50 -0
  130. package/src/components/ui/skeleton.tsx +15 -0
  131. package/src/components/ui/sonner.tsx +23 -0
  132. package/src/components/ui/step.stories.tsx +132 -0
  133. package/src/components/ui/step.tsx +234 -0
  134. package/src/components/ui/stepper-progress.tsx +136 -0
  135. package/src/components/ui/stepper.tsx +259 -0
  136. package/src/components/ui/tabs.tsx +55 -0
  137. package/src/components/ui/tooltip.tsx +61 -0
  138. package/src/components/ui/url-decode-loader.tsx +36 -0
  139. package/src/components/ui/version-display.tsx +104 -0
  140. package/src/components/ui/web-footer.tsx +36 -0
  141. package/src/config/environments.ts +99 -0
  142. package/src/config/urls.ts +53 -0
  143. package/src/const/fiTypeCategoryMap.ts +19 -0
  144. package/src/contexts/LanguageContext.tsx +41 -0
  145. package/src/contexts/RTLContext.tsx +42 -0
  146. package/src/contexts/ThemeContext.tsx +93 -0
  147. package/src/hooks/use-account-discovery.ts +205 -0
  148. package/src/hooks/use-auth-query.ts +141 -0
  149. package/src/hooks/use-fip-query.ts +72 -0
  150. package/src/hooks/use-media-query.ts +32 -0
  151. package/src/hooks/use-mobile.ts +24 -0
  152. package/src/hooks/use-page-title.tsx +48 -0
  153. package/src/hooks/use-platform.ts +52 -0
  154. package/src/hooks/use-trusted-count.ts +21 -0
  155. package/src/hooks/use-url-decode.ts +90 -0
  156. package/src/hooks/useStep.ts +170 -0
  157. package/src/index.css +154 -0
  158. package/src/interfaces/app.interfaces.ts +39 -0
  159. package/src/interfaces/services.interfaces.ts +65 -0
  160. package/src/lib/i18n.ts +68 -0
  161. package/src/lib/utils.ts +6 -0
  162. package/src/locales/en/common.json +167 -0
  163. package/src/locales/hi/common.json +137 -0
  164. package/src/locales/kn/common.json +137 -0
  165. package/src/locales/ml/common.json +137 -0
  166. package/src/locales/ta/common.json +137 -0
  167. package/src/locales/te/common.json +137 -0
  168. package/src/locales/ur/common.json +138 -0
  169. package/src/main.tsx +46 -0
  170. package/src/pages/Login.tsx +363 -0
  171. package/src/pages/accounts/AccountsToProceed.tsx +396 -0
  172. package/src/pages/accounts/Discover.tsx +76 -0
  173. package/src/pages/accounts/DiscoverAccount.tsx +751 -0
  174. package/src/pages/accounts/LinkSelectedAccounts.tsx +638 -0
  175. package/src/pages/accounts/OldUser.tsx +329 -0
  176. package/src/pages/accounts/link-accounts.tsx +913 -0
  177. package/src/pages/consent/ReviewConsent.tsx +836 -0
  178. package/src/pages/consent/rejected.tsx +253 -0
  179. package/src/pages/consent/success.tsx +220 -0
  180. package/src/providers/query-provider.tsx +24 -0
  181. package/src/providers/toast-provider.tsx +26 -0
  182. package/src/services/api/account.service.ts +296 -0
  183. package/src/services/api/auth.service.ts +206 -0
  184. package/src/services/api/axios.ts +138 -0
  185. package/src/services/api/consent.service.ts +142 -0
  186. package/src/services/api/decode.service.ts +53 -0
  187. package/src/services/api/feedback.service.ts +34 -0
  188. package/src/services/api/fip.service.ts +187 -0
  189. package/src/services/api/index.ts +9 -0
  190. package/src/services/api/public.service.ts +18 -0
  191. package/src/services/api.ts +2 -0
  192. package/src/services/postMessage.service.ts +179 -0
  193. package/src/store/NavigationBlockContext.tsx +34 -0
  194. package/src/store/auth.store.ts +79 -0
  195. package/src/store/fip.store.ts +396 -0
  196. package/src/store/mandatoryConsent.store.ts +24 -0
  197. package/src/store/redirect.store.ts +73 -0
  198. package/src/store/step.store.ts +124 -0
  199. package/src/stories/Button.stories.ts +53 -0
  200. package/src/stories/Button.tsx +37 -0
  201. package/src/stories/Configure.mdx +364 -0
  202. package/src/stories/Header.stories.ts +33 -0
  203. package/src/stories/Header.tsx +56 -0
  204. package/src/stories/Page.stories.ts +32 -0
  205. package/src/stories/Page.tsx +73 -0
  206. package/src/stories/button.css +30 -0
  207. package/src/stories/header.css +32 -0
  208. package/src/stories/page.css +68 -0
  209. package/src/styles/rtl-utils.css +90 -0
  210. package/src/styles/rtl.css +105 -0
  211. package/src/utils/api-error.ts +26 -0
  212. package/src/utils/cn.ts +10 -0
  213. package/src/utils/error-callback.ts +116 -0
  214. package/src/utils/formatAccountNumber.ts +9 -0
  215. package/src/utils/handleIdentifiers.ts +90 -0
  216. package/src/utils/posthog.ts +67 -0
  217. package/src/utils/toast-helpers.ts +61 -0
  218. package/src/vite-env.d.ts +1 -0
  219. package/stage-aa-2506251021.zip +0 -0
  220. package/tsconfig.app.json +33 -0
  221. package/tsconfig.json +13 -0
  222. package/tsconfig.node.json +24 -0
  223. package/vite.config.ts +45 -0
  224. package/vitest.shims.d.ts +1 -0
  225. package/vitest.workspace.ts +46 -0
@@ -0,0 +1,68 @@
1
+ import i18n from 'i18next'
2
+ import { initReactI18next } from 'react-i18next'
3
+ import LanguageDetector from 'i18next-browser-languagedetector'
4
+
5
+ // Import translations
6
+ import enCommon from '../locales/en/common.json'
7
+ import hiCommon from '../locales/hi/common.json'
8
+ import taCommon from '../locales/ta/common.json'
9
+ import mlCommon from '../locales/ml/common.json'
10
+ import teCommon from '../locales/te/common.json'
11
+ import knCommon from '../locales/kn/common.json'
12
+ import urCommon from '../locales/ur/common.json'
13
+
14
+ // Language codes that match the file structure
15
+ export const languageOptions = [
16
+ { code: 'en', name: 'English' },
17
+ { code: 'hi', name: 'हिंदी' },
18
+ { code: 'ta', name: 'தமிழ்' },
19
+ { code: 'ml', name: 'മലയാളം' },
20
+ { code: 'te', name: 'తెలుగు' },
21
+ { code: 'kn', name: 'ಕನ್ನಡ' },
22
+ { code: 'ur', name: 'اردو' }
23
+ ]
24
+
25
+ i18n
26
+ // Detect user language
27
+ .use(LanguageDetector)
28
+ // Pass the i18n instance to react-i18next
29
+ .use(initReactI18next)
30
+ // Initialize i18next
31
+ .init({
32
+ resources: {
33
+ en: {
34
+ common: enCommon
35
+ },
36
+ hi: {
37
+ common: hiCommon
38
+ },
39
+ ta: {
40
+ common: taCommon
41
+ },
42
+ ml: {
43
+ common: mlCommon
44
+ },
45
+ te: {
46
+ common: teCommon
47
+ },
48
+ kn: {
49
+ common: knCommon
50
+ },
51
+ ur: {
52
+ common: urCommon
53
+ }
54
+ },
55
+ fallbackLng: 'en',
56
+ ns: ['common'],
57
+ defaultNS: 'common',
58
+ interpolation: {
59
+ escapeValue: false // React already safes from XSS
60
+ },
61
+ detection: {
62
+ order: ['localStorage', 'navigator'],
63
+ lookupLocalStorage: 'i18nextLng',
64
+ caches: ['localStorage']
65
+ }
66
+ })
67
+
68
+ export default i18n
@@ -0,0 +1,6 @@
1
+ import { type ClassValue, clsx } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,167 @@
1
+ {
2
+ "common": {
3
+ "appName": "Saafe",
4
+ "language": "English",
5
+ "edit": "Edit"
6
+ },
7
+ "login": {
8
+ "title": "Sign up for Saafe",
9
+ "phoneNumber": "Phone Number",
10
+ "phoneNumberPlaceholder": "Enter your phone number",
11
+ "getOtp": "Get OTP",
12
+ "sendingOtp": "Sending OTP...",
13
+ "resending": "Re-sending the OTP...",
14
+ "enterOtp": "Enter the OTP",
15
+ "sentTo": "sent to",
16
+ "resendCodeIn": "Resend OTP in ",
17
+ "resendCodeInNew": "OTP resent, Resend OTP again in ",
18
+ "resend": "Resend",
19
+ "verifying": "Verifying...",
20
+ "verify": "Verify OTP",
21
+ "iAgree": "I agree to the",
22
+ "termsAndConditions": "Terms & Conditions",
23
+ "and": "and",
24
+ "privacyPolicy": "Privacy Policy",
25
+ "sessionExpired": "Session expired. Please try again."
26
+ },
27
+ "terms": {
28
+ "title": "Terms & Conditions",
29
+ "description": "To display the following bank accounts on your dashboard we need your consent to do so:",
30
+ "starlingBank": "Starling Bank",
31
+ "allFinancialDataPrivate": "All of your financial data will remain private to you",
32
+ "changeMind": "You can change your mind at anytime, simply revoke this consent from your consents page"
33
+ },
34
+ "errors": {
35
+ "invalidPhone": "Please enter a valid phone number",
36
+ "enterOtp": "Please enter the 4-digit OTP",
37
+ "termsRequired": "Please agree the terms and conditions",
38
+ "otpFailed": "OTP verification failed",
39
+ "sendOtpFailed": "Failed to send OTP",
40
+ "resendOtpFailed": "Failed to resend OTP"
41
+ },
42
+ "layout": {
43
+ "title": " Discover & link your accounts",
44
+ "with": "with",
45
+ "selectBanks": "Select banks & discover your accounts"
46
+ },
47
+ "stepper": {
48
+ "loginsignup": "Login/Signup",
49
+ "loginsignupDescription": "Enter the OTP sent to your mobile",
50
+ "link accounts": "Discover & link accounts",
51
+ "linkAccountsDescription": "Discover multiple financial accounts such as bank, equity , Mutual fund, insurance & NPS and link to your mobile number with Saafe",
52
+ "review consent": "Review consent",
53
+ "review consentDescription": "Approve/Reject the consent after reviewing the details"
54
+ },
55
+ "categories": {
56
+ "bank": "Bank",
57
+ "bankDescription": "Link your bank accounts",
58
+ "gst": "GST",
59
+ "gstDescription": "Link your GST accounts",
60
+ "insurance": "Insurance",
61
+ "insuranceDescription": "Link your insurance accounts",
62
+ "investments": "Investments",
63
+ "investmentsDescription": "Link your investments accounts"
64
+ },
65
+ "appBar": {
66
+ "Select banks & discover your accounts": "Select banks & discover your accounts"
67
+ },
68
+ "keywords": {
69
+ "select": "Select",
70
+ "discover": "discover",
71
+ "Discover": "Discover",
72
+ "your": "Your",
73
+ "accounts": "Accounts",
74
+ "account": "Account"
75
+ },
76
+ "languageSwitcher": {
77
+ "selectLanguage": "Select Language",
78
+ "en": "English",
79
+ "hi": "हिंदी",
80
+ "ta": "தமிழ்",
81
+ "ml": "മലയാളം",
82
+ "te": "తెలుగు",
83
+ "kn": "ಕನ್ನಡ"
84
+ },
85
+ "consent": {
86
+ "reviewTitle": "Review Consent Details",
87
+ "reviewDescription": "Please review and confirm your consent for data sharing",
88
+ "accountsLabel": "Selected Accounts",
89
+ "selectAll": "Select All",
90
+ "unselectAll": "Unselect All",
91
+ "purpose": "Purpose",
92
+ "dataRange": "Data Range",
93
+ "frequency": "Frequency",
94
+ "viewMore": "View More",
95
+ "viewLess": "View Less",
96
+ "approve": "Approve Consent",
97
+ "reject": "Reject",
98
+ "approving": "Approving...",
99
+ "rejecting": "Rejecting...",
100
+ "rejectConfirmation": "Are you sure you want to reject this consent request?",
101
+ "rejectConfirmationDesc": "This action cannot be undone.",
102
+ "cancel": "Cancel",
103
+ "confirmReject": "Yes, Reject",
104
+ "consentTypes": {
105
+ "BANK_ACCOUNT": "Bank Accounts",
106
+ "MUTUAL_FUNDS": "Mutual Funds",
107
+ "GST": "GST"
108
+ },
109
+ "selectAtLeastOne": "Please select at least one account",
110
+ "successTitle": "Consent Successfully Approved",
111
+ "successDescription": "Your financial data will be shared as per the approved consent.",
112
+ "rejectedTitle": "Consent Rejected",
113
+ "rejectedDescription": "You have rejected the consent request. No data will be shared."
114
+ },
115
+ "mobileNo": "Mobile No",
116
+ "addNumber": "Add Mobile Number",
117
+ "addNewMobileNumber": "Add new mobile number",
118
+ "verifyNewMobileNumber": "Verify new mobile number",
119
+ "youCanAddUpTo3Numbers": "You can add up to 3 numbers",
120
+ "mobileNoPlaceholder": "Enter mobile number",
121
+ "pleaseEnterTheNewNumberYouWishToLinkBelow": "Please enter the new number you wish to link below",
122
+ "pleaseEnterTheOTPWeHaveSentTo": "Please enter the OTP we have sent to",
123
+ "mobileSubTitle": "Select the number for which you want to discover accounts",
124
+ "Search": "Search",
125
+ "Accounts": "Accounts",
126
+ "discoverMore": "Discover more",
127
+ "next": "Skip",
128
+ "selectAndDiscoverYourAccounts": "Discover & link your accounts",
129
+ "linkAllSelectedAccounts": "Link all selected accounts",
130
+ "selectAll": "Select All",
131
+ "unselectAll": "Unselect All",
132
+ "link": "Link",
133
+ "skip": "Skip",
134
+ "proceed": "Proceed",
135
+ "discoverAccounts": "Discover Accounts",
136
+ "cancel": "Cancel",
137
+ "noAccountsFound": "No accounts found!",
138
+ "noAccountsFoundDescription": "We couldn't find any accounts for the provided mobile number and PAN combination.",
139
+ "exit": {
140
+ "title": "Are you sure you want to exit?",
141
+ "description": "By clicking on exit you decide not to share any financial accounts",
142
+ "cancel": "No, go back!",
143
+ "confirm": "Yes, exit"
144
+ },
145
+ "footer": {
146
+ "poweredBy": "Powered by",
147
+ "trustedBy": "Trusted by over 65,00,000+ Indians"
148
+ },
149
+ "session": {
150
+ "timeRemaining": "Session Timeout",
151
+ "extendBy30Mins": "Extend by 30 mins",
152
+ "continueFor5Mins": "Continue for 5 mins",
153
+ "help": "Help"
154
+ },
155
+ "skipModal": {
156
+ "title": "Skip the verification process?",
157
+ "description": "You won't be able to share all the accounts that you selected to share if you skip the verification. Are you sure you want to skip?",
158
+ "cancel": "No, go back!",
159
+ "confirm": "Yes, Skip"
160
+ },
161
+ "completeModal": {
162
+ "title": "Are you sure you want to move ahead?",
163
+ "description": "You haven’t finished linking all your {activeCategory} accounts for this consent. However, you can still come back and complete it later. Do you still want to skip this step?",
164
+ "cancel": "No, go back!",
165
+ "confirm": "Yes, Skip"
166
+ }
167
+ }
@@ -0,0 +1,137 @@
1
+ {
2
+ "common": {
3
+ "appName": "Saafe",
4
+ "language": "हिंदी",
5
+ "edit": "संपादित करें"
6
+ },
7
+ "login": {
8
+ "title": "Saafe के लिए साइन अप करें",
9
+ "phoneNumber": "फोन नंबर",
10
+ "phoneNumberPlaceholder": "अपना फोन नंबर दर्ज करें",
11
+ "getOtp": "OTP प्राप्त करें",
12
+ "sendingOtp": "OTP भेज रहा है...",
13
+ "enterOtp": "OTP दर्ज करें",
14
+ "sentTo": "हमने भेजा है",
15
+ "resendCodeIn": "पुनः भेजने का कोड ",
16
+ "resend": "पुनः भेजें",
17
+ "verifying": "सत्यापित कर रहा है...",
18
+ "verify": "OTP सत्यापित करें",
19
+ "sessionExpired": "सत्र समाप्त हो गया है। कृपया फिर से प्रयास करें।",
20
+ "iAgree": "मैं सहमत हूं",
21
+ "termsAndConditions": "नियम एवं शर्तों",
22
+ "and": "और",
23
+ "privacyPolicy": "गोपनीयता नीति"
24
+ },
25
+ "terms": {
26
+ "title": "नियम एवं शर्तों",
27
+ "description": "आपके डैशबोर्ड पर निम्नलिखित बैंक खाते प्रदर्शित करने के लिए आपकी सहमति आवश्यक है:",
28
+ "starlingBank": "स्टार्लिंग बैंक",
29
+ "allFinancialDataPrivate": "आपका सभी वित्तीय डेटा आपके लिए ही होगा",
30
+ "changeMind": "आप इसे अपने सहमति पृष्ठ से बस हटा सकते हैं"
31
+ },
32
+ "errors": {
33
+ "invalidPhone": "कृपया एक वैध फोन नंबर दर्ज करें",
34
+ "enterOtp": "कृपया 4-अंक का OTP दर्ज करें",
35
+ "termsRequired": "आपको नियम और शर्तों से सहमत होना होगा",
36
+ "otpFailed": "OTP सत्यापन विफल हुआ",
37
+ "sendOtpFailed": "OTP भेजने में विफल",
38
+ "resendOtpFailed": "OTP पुनः भेजने में विफल"
39
+ },
40
+ "layout": {
41
+ "title": "अपना वित्तीय डेटा साझा करें",
42
+ "with": "के साथ",
43
+ "selectBanks": "बैंक चुनें और अपने खातों को खोजें"
44
+ },
45
+ "stepper": {
46
+ "loginsignup": "लॉगिन/साइनअप",
47
+ "loginsignupDescription": "अपने मोबाइल पर भेजा गया OTP दर्ज करें",
48
+ "link accounts": "खाते लिंक करें",
49
+ "link accountsDescription": "उन खातों का चयन करें और लिंक करें जिन्हें आप साझा करना चाहते हैं",
50
+ "review consent": "सहमति समीक्षा",
51
+ "review consentDescription": "विवरण की समीक्षा के बाद सहमति को स्वीकार/अस्वीकार करें"
52
+ },
53
+ "categories": {
54
+ "bank": "बैंक",
55
+ "bankDescription": "अपने बैंक खाते लिंक करें",
56
+ "equities": "इक्विटी",
57
+ "equitiesDescription": "अपने इक्विटी खाते लिंक करें",
58
+ "gst": "जीएसटी",
59
+ "gstDescription": "अपने जीएसटी खाते लिंक करें",
60
+ "insurance": "बीमा",
61
+ "insuranceDescription": "अपने बीमा खाते लिंक करें",
62
+ "mutual_funds": "म्यूचुअल फंड",
63
+ "mutual_fundsDescription": "अपने म्यूचुअल फंड खाते लिंक करें",
64
+ "other_investments": "अन्य निवेश",
65
+ "other_investmentsDescription": "अपने अन्य निवेश खाते लिंक करें",
66
+ "pension": "पेंशन",
67
+ "pensionDescription": "अपने पेंशन खाते लिंक करें",
68
+ "real_estate": "रियल एस्टेट",
69
+ "real_estateDescription": "अपने रियल एस्टेट खाते लिंक करें"
70
+ },
71
+ "keywords": {
72
+ "select": "चुनें",
73
+ "discover": "खोजें",
74
+ "your": "आपके",
75
+ "accounts": "खाते"
76
+ },
77
+ "languageSwitcher": {
78
+ "selectLanguage": "भाषा चुनें",
79
+ "en": "English",
80
+ "hi": "हिंदी",
81
+ "ta": "தமிழ்",
82
+ "ml": "മലയാളം",
83
+ "te": "తెలుగు",
84
+ "kn": "ಕನ್ನಡ"
85
+ },
86
+ "mobileNo": "मोबाइल नंबर",
87
+ "addNumber": "नंबर जोड़ें",
88
+ "addNewMobileNumber": "नया मोबाइल नंबर जोड़ें",
89
+ "verifyNewMobileNumber": "नया मोबाइल नंबर सत्यापित करें",
90
+ "youCanAddUpTo3Numbers": "आप 3 नंबर तक जोड़ सकते हैं",
91
+ "mobileNoPlaceholder": "मोबाइल नंबर दर्ज करें",
92
+ "pleaseEnterTheNewNumberYouWishToLinkBelow": "कृपया नीचे लिंक करने के लिए नया नंबर दर्ज करें",
93
+ "pleaseEnterTheOTPWeHaveSentTo": "कृपया उस OTP को दर्ज करें जो हमने भेजा है",
94
+ "mobileSubTitle": "आप खोजना चाहते हैं कि नंबर कौन सा है",
95
+ "Search": "खोजें",
96
+ "Accounts": "खाते",
97
+ "discoverMore": "और खोजें",
98
+ "next": "छोड़ें",
99
+ "selectAndDiscoverYourAccounts": "चुनें और खोजें",
100
+ "linkAllSelectedAccounts": "सभी चुनें और लिंक करें",
101
+ "discoverAccounts": "खाते खोजें",
102
+ "cancel": "नहीं, वापस जाएं!",
103
+ "proceed": "आगे बढ़ना",
104
+ "selectAll": "सभी चुनें",
105
+ "unselectAll": "सभी हटाएं",
106
+ "link": "लिंक",
107
+ "skip": "पास",
108
+ "noAccountsFound": "कोई खाते नहीं मिले",
109
+ "noAccountsFoundDescription": "हमने आपके दिए गए मोबाइल नंबर और PAN संयोजन के लिए कोई खाते नहीं मिले",
110
+ "exit": {
111
+ "title": "क्या आप वापस जाना चाहते हैं?",
112
+ "description": "आउट पर क्लिक करने पर आप किसी भी वित्तीय खाते साझा नहीं करने वाले हैं",
113
+ "cancel": "नहीं, वापस जाएं!",
114
+ "confirm": "हाँ, निर्गमन"
115
+ },
116
+ "footer": {
117
+ "poweredBy": "द्वारा संचालित",
118
+ "trustedBy": "65,00,000+ से अधिक भारतीयों द्वारा भरोसेमंद"
119
+ },
120
+ "session": {
121
+ "timeRemaining": "शेष समय",
122
+ "extendBy30Mins": "30 मिनट बढ़ाएँ",
123
+ "continueFor5Mins": "5 मिनट जारी रखें"
124
+ },
125
+ "skipModal": {
126
+ "title": "क्या आप सत्यापन प्रकार को छोड़ना चाहते हैं?",
127
+ "description": "आप सत्यापन प्रकार को छोड़ने पर आपके साझा करने वाले सभी खाते साझा नहीं करेंगे। क्या आप इसे छोड़ना चाहते हैं?",
128
+ "cancel": "नहीं, वापस जाएं!",
129
+ "confirm": "हाँ, छोड़ें"
130
+ },
131
+ "completeModal": {
132
+ "title": "क्या आप आगे बढ़ना चाहते हैं?",
133
+ "description": "आपके पास अपने {activeCategory} खाते साझा करने का पूरा प्रकार नहीं है। लेकन आप फिर से वापस आ सकते हैं और इसे बाद में पूरा कर सकते हैं। क्या आप इसे छोड़ना चाहते हैं?",
134
+ "cancel": "नहीं, वापस जाएं!",
135
+ "confirm": "हाँ, छोड़ें"
136
+ }
137
+ }
@@ -0,0 +1,137 @@
1
+ {
2
+ "common": {
3
+ "appName": "Saafe",
4
+ "language": "ಕನ್ನಡ",
5
+ "edit": "ಸಂಪಾದಿಸಿ"
6
+ },
7
+ "login": {
8
+ "title": "Saafe ಗೆ ಸೈನ್ ಅಪ್ ಮಾಡಿ",
9
+ "phoneNumber": "ಫೋನ್ ನಂಬರ್",
10
+ "phoneNumberPlaceholder": "ನಿಮ್ಮ ಫೋನ್ ನಂಬರ್ ನಮೂದಿಸಿ",
11
+ "getOtp": "OTP ಪಡೆಯಿರಿ",
12
+ "sendingOtp": "OTP ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ...",
13
+ "enterOtp": "OTP ನಮೂದಿಸಿ",
14
+ "sentTo": "ನಾವು ಕಳುಹಿಸಿದ್ದೇವೆ",
15
+ "resendCodeIn": "ಕೋಡ್ ಮರುಕಳುಹಿಸಿ ",
16
+ "resend": "ಮರುಕಳುಹಿಸಿ",
17
+ "verifying": "ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...",
18
+ "verify": "OTP ಪರಿಶೀಲಿಸಿ",
19
+ "termsAndConditions": "ಕ್ರೀದಿಯ ವಿವರಕ್ಕೆ ಮತ್ತು ಗೌಪ್ಯತಾ ನೀತಿ",
20
+ "sessionExpired": "ಸೆಷನ್ ಅವಧಿ ಮುಗಿದಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
21
+ "iAgree": "ನಾನು ಒಪ್ಪುತ್ತೇನೆ",
22
+ "and": "ಮತ್ತು",
23
+ "privacyPolicy": "ಗೌಪ್ಯತಾ ನೀತಿ"
24
+ },
25
+ "terms": {
26
+ "title": "ನಿಯಮಗಳು ಮತ್ತು ಗೌಪ್ಯತಾ ನೀತಿ",
27
+ "description": "ನಿಮ್ಮ ಡೈಶ್ಬೋರ್ಡ್ ಮೇಲೆ ಕೆಳಗಿನ ಬ್ಯಾಂಕ್ ಖಾತೆಗಳನ್ನು ಪಡೆದಿರುವ ಮುಂದಿನಿಂದ, ನಾವು ನಿಮ್ಮ ಒಪ್ಪಿಗೆ ಅನುಮತಿಸಲು ಅಗತ್ಯವಾಗಿದೆ:",
28
+ "starlingBank": "ಸ್ಟಾರ್ಲಿಂಗ್ ಬ್ಯಾಂಕ್",
29
+ "allFinancialDataPrivate": "ನಿಮ್ಮ ಎಲ್ಲಾ ವಿತ್ತಿಕ ಡೇಟಾ ನಿಮ್ಮ ಮೇಲೆ ಹೋಗುತ್ತದೆ",
30
+ "changeMind": "ನೀವು ಸಾಧಾರಣವಾಗಿ ನಿಮ್ಮ ಒಪ್ಪಿಗೆ ಪ್ರತಿಸ್ಥಾಪಿಸಬಹುದು"
31
+ },
32
+ "errors": {
33
+ "invalidPhone": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ಫೋನ್ ನಂಬರ್ ನಮೂದಿಸಿ",
34
+ "enterOtp": "ದಯವಿಟ್ಟು 4-ಅಂಕಿಯ OTP ನಮೂದಿಸಿ",
35
+ "termsRequired": "ನೀವು ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳನ್ನು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕು",
36
+ "otpFailed": "OTP ಪರಿಶೀಲನೆ ವಿಫಲವಾಗಿದೆ",
37
+ "sendOtpFailed": "OTP ಕಳುಹಿಸಲು ವಿಫಲವಾಗಿದೆ",
38
+ "resendOtpFailed": "OTP ಮರುಕಳುಹಿಸಲು ವಿಫಲವಾಗಿದೆ"
39
+ },
40
+ "layout": {
41
+ "title": "ನಿಮ್ಮ ಹಣಕಾಸು ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಿ",
42
+ "with": "ನೊಂದಿಗೆ",
43
+ "selectBanks": "ಬ್ಯಾಂಕ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ನಿಮ್ಮ ಖಾತೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ"
44
+ },
45
+ "stepper": {
46
+ "loginsignup": "ಲಾಗಿನ್/ಸೈನ್ಅಪ್",
47
+ "loginsignupDescription": "ನಿಮ್ಮ ಮೊಬೈಲ್‌ಗೆ ಕಳುಹಿಸಿದ OTP ಅನ್ನು ನಮೂದಿಸಿ",
48
+ "link accounts": "ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
49
+ "link accountsDescription": "ನೀವು ಹಂಚಿಕೊಳ್ಳಲು ಬಯಸುವ ಖಾತೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಲಿಂಕ್ ಮಾಡಿ",
50
+ "review consent": "ಒಪ್ಪಿಗೆ ಪರಿಶೀಲಿಸಿ",
51
+ "review consentDescription": "ವಿವರಗಳನ್ನು ಪರಿಶೀಲಿಸಿದ ನಂತರ ಒಪ್ಪಿಗೆಯನ್ನು ಅನುಮೋದಿಸಿ/ತಿರಸ್ಕರಿಸಿ"
52
+ },
53
+ "categories": {
54
+ "bank": "ಬ್ಯಾಂಕ್",
55
+ "bankDescription": "ನಿಮ್ಮ ಬ್ಯಾಂಕ್ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
56
+ "equities": "ಈಕ್ವೀಟೀಗಳು",
57
+ "equitiesDescription": "ನಿಮ್ಮ ಈಕ್ವೀಟೀಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
58
+ "gst": "ಜಿಎಸ್ಟಿ",
59
+ "gstDescription": "ನಿಮ್ಮ ಜಿಎಸ್ಟಿ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
60
+ "insurance": "ಇನ್ಸೂರೆನ್ಸ್",
61
+ "insuranceDescription": "ನಿಮ್ಮ ಇನ್ಸೂರೆನ್ಸ್ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
62
+ "mutual_funds": "ಮುಟ್ಟುಗಳು",
63
+ "mutual_fundsDescription": "ನಿಮ್ಮ ಮುಟ್ಟುಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
64
+ "other_investments": "ಇತರ ಪಾಲುಗಳು",
65
+ "other_investmentsDescription": "ನಿಮ್ಮ ಇತರ ಪಾಲುಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
66
+ "pension": "ಪೆನ್ಷನ್",
67
+ "pensionDescription": "ನಿಮ್ಮ ಪೆನ್ಷನ್ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
68
+ "real_estate": "ರಿಯಲ್ ಎಸ್ಟೆಟ್",
69
+ "real_estateDescription": "ನಿಮ್ಮ ರಿಯಲ್ ಎಸ್ಟೆಟ್ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ"
70
+ },
71
+ "keywords": {
72
+ "select": "ಆಯ್ಕೆಮಾಡಿ",
73
+ "discover": "ಕಂಡುಹಿಡಿಯಿರಿ",
74
+ "your": "ನಿಮ್ಮ",
75
+ "accounts": "ಖಾತೆಗಳು"
76
+ },
77
+ "languageSwitcher": {
78
+ "selectLanguage": "ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ",
79
+ "en": "English",
80
+ "hi": "हिंदी",
81
+ "ta": "தமிழ்",
82
+ "ml": "മലയാളം",
83
+ "te": "తెలుగు",
84
+ "kn": "ಕನ್ನಡ"
85
+ },
86
+ "mobileNo": "ಮೊಬೈಲ್ ಸಂಖ್ಯೆ",
87
+ "addNumber": "ಸಂಖ್ಯೆ ಸೇರಿಸಿ",
88
+ "addNewMobileNumber": "ಹೊಸ ಮೊಬೈಲ್ ಸಂಖ್ಯೆ ಸೇರಿಸಿ",
89
+ "verifyNewMobileNumber": "ಹೊಸ ಮೊಬೈಲ್ ಸಂಖ್ಯೆಯನ್ನು ಪರಿಶೀಲಿಸಿ",
90
+ "youCanAddUpTo3Numbers": "ನೀವು 3 ಸಂಖ್ಯೆಗಳವರೆಗೆ ಸೇರಿಸಬಹುದು",
91
+ "mobileNoPlaceholder": "ಮೊಬೈಲ್ ಸಂಖ್ಯೆ ನಮೂದಿಸಿ",
92
+ "pleaseEnterTheNewNumberYouWishToLinkBelow": "ದಯವಿಟ್ಟು ಕೆಳಗೆ ಲಿಂಕ್ ಮಾಡಲು ಇಚ್ಛಿಸುವ ಹೊಸ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ",
93
+ "pleaseEnterTheOTPWeHaveSentTo": "ದಯವಿಟ್ಟು ನಾವು ಕಳಿಸಿರುವ OTP ನಮೂದಿಸಿ",
94
+ "mobileSubTitle": "ನೀವು ಅಕ್ಕೆಣ್ಟುಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಆಗುವ ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ",
95
+ "Search": "ಹುಡುಕಿ",
96
+ "Accounts": "ಖಾತೆಗಳು",
97
+ "discoverMore": "ಇನ್ನಷ್ಟು ಕಂಡುಹಿಡಿಯಿರಿ",
98
+ "next": "దాటవేయండి",
99
+ "selectAndDiscoverYourAccounts": "ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಕಂಡುಹಿಡಿಯಿರಿ",
100
+ "selectAll": "ಎಲ್ಲಾ ಆಯ್ಕೆಮಾಡಿ",
101
+ "unselectAll": "ಎಲ್ಲಾ ತೊಂದರೆಯಿರಿ",
102
+ "linkAllSelectedAccounts": "ಎಲ್ಲಾ ಆಯ್ಕೆಮಾಡಿದ ಖಾತೆಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿ",
103
+ "link": "ಲಿಂಕ್",
104
+ "discoverAccounts": "ಖಾತೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ",
105
+ "cancel": "ರದ್ದುತ್ತುನ್ನು",
106
+ "skip": "ಪ್ರಾಸ್ತುತಂ ವೆಳ్ಲಿ!",
107
+ "proceed": "ಮುಂದುವರೆಸಿ",
108
+ "noAccountsFound": "ಕಂಡುಹಿಡಿಯಲಾಗಿಲ್ಲ!",
109
+ "noAccountsFoundDescription": "ನಾವು ನಿಮ್ಮ ಕೊಟ್ಟ ಮೊಬೈಲ್ ಸಂಖ್ಯೆ ಮತ್ತು PAN ಸಂಯೋಜನೆಗೆ ಖಾತೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಿಲ್ಲ.",
110
+ "exit": {
111
+ "title": "ನೀವು ಬಯಸುವುದೇ ಮುಂದುವರೆಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
112
+ "description": "ನೀವು ಬಯಸುವುದೇ ಮುಂದುವರೆಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
113
+ "cancel": "ಇಲ್ಲ, ಹಿಂತಿರುಗಿ!",
114
+ "confirm": "ಹೌದು, ಮುಂದುವರೆಸಿ"
115
+ },
116
+ "footer": {
117
+ "poweredBy": "ಇವರಿಂದ ಚಾಲಿತವಾಗಿದೆ",
118
+ "trustedBy": "65,00,000+ ಭಾರತೀಯರು ನಂಬಿದ್ದಾರೆ"
119
+ },
120
+ "session": {
121
+ "timeRemaining": "ಉಳಿದ ಸಮಯ",
122
+ "extendBy30Mins": "30 ನಿಮಿಷಗಳವರೆಗೆ ವಿಸ್ತರಿಸಿ",
123
+ "continueFor5Mins": "5 ನಿಮಿಷಗಳ ಕಾಲ ಮುಂದುವರಿಸಿ"
124
+ },
125
+ "skipModal": {
126
+ "title": "ಸತ್ಯಾಪನ ಪ್ರಕಾರವನ್ನು ಛೊಡಿಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
127
+ "description": "ನೀವು ಸತ್ಯಾಪನ ಪ್ರಕಾರವನ್ನು ಛೊಡಿಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
128
+ "cancel": "ಇಲ್ಲ, ಹಿಂತಿರುಗಿ!",
129
+ "confirm": "ಹೌದು, ಛೊಡಿಸಿ"
130
+ },
131
+ "completeModal": {
132
+ "title": "ನೀವು ಮುಂದುವರೆಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
133
+ "description": "ನೀವು ಮುಂದುವರೆಸಲು ಸಮಸ್ಯೆ ಇದೆಯೇ?",
134
+ "cancel": "ಇಲ್ಲ, ಹಿಂತಿರುಗಿ!",
135
+ "confirm": "ಹೌದು, ಮುಂದುವರೆಸಿ"
136
+ }
137
+ }