@eka-care/abha 0.0.6 → 0.0.8

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 (85) hide show
  1. package/{index.html → dist/index.html} +2 -1
  2. package/dist/sdk/abha/css/abha.css +1 -0
  3. package/dist/sdk/abha/js/abha.js +136 -0
  4. package/package.json +1 -1
  5. package/.eslintignore +0 -3
  6. package/.eslintrc +0 -29
  7. package/.prettierrc +0 -7
  8. package/dev-abha-ios-android.zip +0 -0
  9. package/postcss.config.js +0 -6
  10. package/prod-abha-mixpanel.zip +0 -0
  11. package/scripts/build-purged-css.cjs +0 -70
  12. package/src/App.css +0 -0
  13. package/src/App.tsx +0 -32
  14. package/src/api-queries/use-get-profiles-patient.ts +0 -12
  15. package/src/api-queries/use-get-profiles-phr-user.ts +0 -27
  16. package/src/api-queries/use-post-abdm-login-verify-v1.ts +0 -25
  17. package/src/api-queries/use-post-auth-verify-v2.ts +0 -74
  18. package/src/api-queries/use-post-profile-switch.ts +0 -57
  19. package/src/api-queries/use-post-register-mobile-create-phr.ts +0 -39
  20. package/src/api-queries/user-post-abdm-profile-login-phr.ts +0 -25
  21. package/src/assets/react.svg +0 -1
  22. package/src/atoms/button/custom-button.tsx +0 -32
  23. package/src/atoms/button/index.tsx +0 -40
  24. package/src/atoms/button/types.d.ts +0 -31
  25. package/src/atoms/header.tsx +0 -25
  26. package/src/atoms/input-field/index.tsx +0 -62
  27. package/src/atoms/input-field/patient-input-field.tsx +0 -16
  28. package/src/atoms/input-field/types.ts +0 -24
  29. package/src/atoms/pds2-otp-input/index.tsx +0 -35
  30. package/src/atoms/pds2-otp-input/types.d.ts +0 -3
  31. package/src/atoms/single-input-chip/index.tsx +0 -32
  32. package/src/atoms/single-input-chip/types.ts +0 -6
  33. package/src/atoms/spinner.tsx +0 -33
  34. package/src/atoms/text-separator.tsx +0 -11
  35. package/src/index.css +0 -118
  36. package/src/main.tsx +0 -313
  37. package/src/molecules/abha/bottom-sheet/bottom-sheet-wrapper.tsx +0 -40
  38. package/src/molecules/abha/bottom-sheet/index.tsx +0 -66
  39. package/src/molecules/abha/spaced-input-component.tsx +0 -150
  40. package/src/molecules/copyright-year.tsx +0 -16
  41. package/src/molecules/exit-popup/index.tsx +0 -99
  42. package/src/molecules/pds2-otp-component/index.tsx +0 -148
  43. package/src/organisms/abha/abha-header.tsx +0 -25
  44. package/src/organisms/abha/error-bottom-sheet.tsx +0 -27
  45. package/src/organisms/abha/otp-card.tsx +0 -99
  46. package/src/organisms/abha/verification-status.tsx +0 -40
  47. package/src/organisms/choose-language/choose-language.tsx +0 -53
  48. package/src/organisms/choose-language/types.ts +0 -10
  49. package/src/organisms/screen-switcher/screen-switcher.tsx +0 -80
  50. package/src/routes/abha-aadhaar-verification-status-screen.tsx +0 -209
  51. package/src/routes/abha-created-screen.tsx +0 -45
  52. package/src/routes/abha-login-otp-verify-screen.tsx +0 -523
  53. package/src/routes/abha-mobile-linking-status-screen.tsx +0 -267
  54. package/src/routes/abha-otp-and-mobile-screen.tsx +0 -429
  55. package/src/routes/abha-phone-number-verification-screen.tsx +0 -373
  56. package/src/routes/create-abha-address-screen.tsx +0 -928
  57. package/src/routes/create-abha-with-aadhaar-screen.tsx +0 -984
  58. package/src/routes/create-eka-profile-screen.tsx +0 -777
  59. package/src/routes/get-all-profiles-screen.tsx +0 -161
  60. package/src/routes/login-or-create-abha-address-screen.tsx +0 -953
  61. package/src/routes/login-with-abha-screen.tsx +0 -448
  62. package/src/routes/select-abha-from-list-screen.tsx +0 -718
  63. package/src/routes/select-eka-profile-screen.tsx +0 -444
  64. package/src/routes/utils/trackAbhaEvent.ts +0 -41
  65. package/src/stores/auth-abha-store/index.ts +0 -138
  66. package/src/stores/auth-abha-store/types.ts +0 -204
  67. package/src/utils/mock-auth-response.ts +0 -31
  68. package/src/vite-env.d.ts +0 -1
  69. package/tailwind.config.ts +0 -9
  70. package/tsconfig.app.json +0 -26
  71. package/tsconfig.json +0 -25
  72. package/tsconfig.node.json +0 -10
  73. package/tsconfig.node.tsbuildinfo +0 -1
  74. package/tsconfig.tsbuildinfo +0 -1
  75. package/vite.config.d.ts +0 -2
  76. package/vite.config.js +0 -30
  77. package/vite.config.ts +0 -35
  78. /package/{public → dist}/images/adhaar.webp +0 -0
  79. /package/{public → dist}/images/at-the-rate.webp +0 -0
  80. /package/{public → dist}/images/avatar.webp +0 -0
  81. /package/{public → dist}/images/ayushman-bharat.webp +0 -0
  82. /package/{public → dist}/images/circle-checkmark.webp +0 -0
  83. /package/{public → dist}/images/link-abha.webp +0 -0
  84. /package/{public → dist}/images/national-authority.webp +0 -0
  85. /package/{public → dist}/images/three-dots.webp +0 -0
@@ -1,448 +0,0 @@
1
- import { ChevronDownRegularIcon, PhoneSolidIcon, ArrowLeftRegularIcon } from '@elixir/icons';
2
- import {
3
- ABHA_AUTH_FLOW_METHOD,
4
- AUTH_METHOD,
5
- LOADING_STATE,
6
- REGISTRATION_TYPE,
7
- } from '@elixir/types';
8
- import { postAbdmLoginInit, postAuthInitV2, postAuthLogoutV2 } from 'apis';
9
- import React, { useCallback, useEffect, useState } from 'react';
10
- import Pds2Button from '../atoms/button';
11
- import Pds2Header from '../atoms/header';
12
- import Pds2CustomButton from '../atoms/button/custom-button';
13
- import Pds2InputField from '../atoms/input-field';
14
- import TextSeparator from '../atoms/text-separator';
15
- import SpacedInputComponent from '../molecules/abha/spaced-input-component';
16
- import useAuthAbhaStore from '../stores/auth-abha-store';
17
- import { SCREEN_NAMES } from '../stores/auth-abha-store/types';
18
- import { handleSendEvent } from '@elixir/utils';
19
- import AbhaErrorBottomSheet from '../organisms/abha/error-bottom-sheet';
20
- import { unMount } from '../main';
21
-
22
- const isProd = import.meta.env.VITE_APP_ENV === 'PROD';
23
-
24
- const LoginWithAbhaScreen = () => {
25
- const setAbhaAuthFlowMethod = useAuthAbhaStore((state) => state.setAbhaAuthFlowMethod);
26
- const clientId = useAuthAbhaStore((state) => state.clientId);
27
- const clearAbhaAuthStore = useAuthAbhaStore((state) => state.clearAbhaAuthStore);
28
- useEffect(() => {
29
- handleSendEvent({
30
- eventName: 'page_view',
31
- eventData: {
32
- page_view: 'abha_login_screen',
33
- platform: clientId,
34
- },
35
- });
36
-
37
- // mobile number as default method
38
- setAbhaAuthFlowMethod(ABHA_AUTH_FLOW_METHOD.MOBILE);
39
-
40
- if (window.EkaAbha?.changeStatusBarColor) {
41
- window.EkaAbha.changeStatusBarColor('#F2F4F7');
42
- return () => {
43
- if (window.EkaAbha?.changeStatusBarColor) window?.EkaAbha?.changeStatusBarColor('#FFFFFF');
44
- };
45
- }
46
- }, []);
47
-
48
- const handleBackButtonClick = () => {
49
- window.EkaAbha?.onAbhaClose();
50
- const is_new_login_flow = useAuthAbhaStore.getState().isNewLoginOrCreateFlow;
51
- clearAbhaAuthStore();
52
- useAuthAbhaStore.setState({ isNewLoginOrCreateFlow: is_new_login_flow });
53
- unMount();
54
- };
55
-
56
- return (
57
- <div className="pds2-bg-bg-white">
58
- {/* * if clientId is eka-web, do not show back button */}
59
- {clientId !== 'eka-web' && (
60
- <Pds2Header
61
- prefixIcon={
62
- <button onClick={handleBackButtonClick}>
63
- <ArrowLeftRegularIcon />
64
- </button>
65
- }
66
- title=""
67
- className="pds2-bg-bg-01"
68
- />
69
- )}
70
- <LoginWithDifferentMethods />
71
- <OtherLoginMethods />
72
- </div>
73
- );
74
- };
75
-
76
- export default LoginWithAbhaScreen;
77
-
78
- export const OtherLoginMethods = () => {
79
- const setAbhaAuthFlowMethod = useAuthAbhaStore((state) => state.setAbhaAuthFlowMethod);
80
- const selectedMethod = useAuthAbhaStore((state) => state.abhaAuthFlowMethod);
81
-
82
- const loginMethods = [
83
- {
84
- method: ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER,
85
- title: 'ABHA Number',
86
- icon: (
87
- <img
88
- src="https://cdn.eka.care/vagus/cm4ml1lwu00000tfs1okl7hs9.webp"
89
- alt="ABHA Number Icon"
90
- className="pds2-h-24 pds2-w-24"
91
- loading="lazy"
92
- />
93
- ),
94
- },
95
- {
96
- method: ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS,
97
- title: 'ABHA Address',
98
- icon: (
99
- <img
100
- src="https://cdn.eka.care/vagus/cm4ml1lwu00000tfs1okl7hs9.webp"
101
- alt="ABHA Address Icon"
102
- className="pds2-h-24 pds2-w-24"
103
- loading="lazy"
104
- />
105
- ),
106
- },
107
- {
108
- method: ABHA_AUTH_FLOW_METHOD.AADHAR_NUMBER,
109
- title: 'Aadhaar Number',
110
- icon: (
111
- <img
112
- src="https://cdn.eka.care/vagus/cm5mcdm3h00070tfs9fjkepff.webp"
113
- alt="Aadhaar Number Icon"
114
- className="pds2-h-24 pds2-w-24"
115
- loading="lazy"
116
- />
117
- ),
118
- },
119
- {
120
- method: ABHA_AUTH_FLOW_METHOD.MOBILE,
121
- title: 'Mobile Number',
122
- icon: <PhoneSolidIcon className="pds2-w-20 pds2-h-20 pds2-text-icon-success-02" />,
123
- },
124
- ];
125
-
126
- return (
127
- <div className="pds2-p-16 pds2-space-y-16">
128
- <TextSeparator title="Other login options for ABHA" />
129
- <div className="pds2-space-y-16">
130
- {loginMethods
131
- .filter((item) => item.method !== selectedMethod)
132
- .map((item) => (
133
- <Pds2CustomButton
134
- key={item.method}
135
- prefixIcon={item.icon}
136
- title={item.title}
137
- suffixIcon={
138
- <ChevronDownRegularIcon
139
- className="pds2-ml-auto pds2-h-16 pds2-w-16 pds2-text-text-04 -pds2-rotate-90"
140
- aria-hidden="true"
141
- />
142
- }
143
- onClick={() => setAbhaAuthFlowMethod(item.method)}
144
- />
145
- ))}
146
- </div>
147
- </div>
148
- );
149
- };
150
-
151
- const LoginWithDifferentMethods = () => {
152
- const setScreen = useAuthAbhaStore((state) => state.setScreen);
153
- const selectedMethod = useAuthAbhaStore(
154
- (state) => state.abhaAuthFlowMethod || ABHA_AUTH_FLOW_METHOD.MOBILE
155
- );
156
-
157
- const setRegistrationType = useAuthAbhaStore((state) => state.setRegistrationType);
158
- const setAadhaarInitResponse = useAuthAbhaStore((state) => state.setAadhaarInitResponse);
159
- const [identifierValue, setIdentifierValue] = useState<string>('');
160
- const [error, setError] = useState<string | null>('');
161
- const [abdmLoginInitApiStatus, setAbdmLoginInitApiStatus] = useState<LOADING_STATE>(
162
- LOADING_STATE.IDLE
163
- );
164
- const setLoginIdentifierValue = useAuthAbhaStore((state) => state.setLoginIdentifierValue);
165
- const setSelectedAbhaAddress = useAuthAbhaStore((state) => state.setSelectedAbhaAddress);
166
- const [isValidMobileNumber, setIsValidMobileNumber] = useState<boolean>(false);
167
- const initAbhaAppMobileNumber = useAuthAbhaStore((state) => state.initAbhaAppMobileNumber);
168
- const setBottomsheetErrorInfo = useAuthAbhaStore((state) => state.setBottomsheetErrorInfo);
169
- const [errorActionValue, setErrorAction] = React.useState<any>(null);
170
- const [mobileNumber, setMobileNumber] = useState('');
171
- const clientId = useAuthAbhaStore((state) => state.clientId);
172
- const isEkaAppLogin = useAuthAbhaStore((state) => state.isEkaAppLogin);
173
-
174
- useEffect(() => {
175
- // if the mobile has a valid data and the selected method is mobile, then set the mobile number
176
- if (!!initAbhaAppMobileNumber && selectedMethod === ABHA_AUTH_FLOW_METHOD.MOBILE) {
177
- setIdentifierValue(initAbhaAppMobileNumber);
178
- setIsValidMobileNumber(initAbhaAppMobileNumber.length === 10);
179
- setError(null);
180
- return;
181
- }
182
-
183
- setIdentifierValue('');
184
- setError(null);
185
- setIsValidMobileNumber(false);
186
- }, [selectedMethod]);
187
-
188
- const handleIdentifierValueChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {
189
- error && setError(null);
190
- const val = e.target.value;
191
-
192
- switch (selectedMethod) {
193
- case ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS:
194
- if (val.length > 20) return;
195
- break;
196
-
197
- case ABHA_AUTH_FLOW_METHOD.MOBILE:
198
- if ((val && !/^[0-9]+$/.test(val)) || val.length > 10) return;
199
- break;
200
-
201
- case ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER:
202
- if (!/^[\d-]*$/.test(val) || val.length > 17) return;
203
- break;
204
-
205
- case ABHA_AUTH_FLOW_METHOD.AADHAR_NUMBER:
206
- if ((val && !/^[0-9]+$/.test(val)) || val.length > 12) return;
207
- break;
208
- }
209
-
210
- if (selectedMethod === ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER) {
211
- const value = e.target.value.replace(/-/g, '');
212
- let abhaNumber = '';
213
- if (value.length > 0) abhaNumber += value.slice(0, 2);
214
- if (value.length > 2) abhaNumber += `-${value.slice(2, 6)}`;
215
- if (value.length > 6) abhaNumber += `-${value.slice(6, 10)}`;
216
- if (value.length > 10) abhaNumber += `-${value.slice(10, 14)}`;
217
- setIdentifierValue(abhaNumber);
218
- } else setIdentifierValue(val.trim());
219
- };
220
-
221
- const handleOnAadhaarInputComplete = ({ inputVal: newAadhaarNo }: { inputVal: string }) => {
222
- if (error) setError(null);
223
-
224
- if (newAadhaarNo.length === 12) {
225
- setIdentifierValue(newAadhaarNo);
226
- }
227
- };
228
-
229
- const renderIdentifierInput = useCallback(() => {
230
- const isMobileNonEditable =
231
- selectedMethod === ABHA_AUTH_FLOW_METHOD.MOBILE && !!initAbhaAppMobileNumber;
232
-
233
- if (selectedMethod === ABHA_AUTH_FLOW_METHOD.AADHAR_NUMBER) {
234
- return (
235
- <SpacedInputComponent
236
- numberOfInputs={3}
237
- length={4}
238
- placeholder="XXXX"
239
- onSubmit={handleOnAadhaarInputComplete}
240
- />
241
- );
242
- }
243
-
244
- const inputProps = {
245
- value: identifierValue,
246
- onChange: handleIdentifierValueChange,
247
- ...(selectedMethod === ABHA_AUTH_FLOW_METHOD.MOBILE && {
248
- type: 'tel',
249
- placeholder: 'Mobile Number',
250
- disabled: isMobileNonEditable,
251
- PrefixComponent: (
252
- <div className="pds2-flex pds2-items-center pds2-gap-x-8 pds2-border-r pds2-border-border-brand-02 pds2-pr-24">
253
- <img
254
- src="https://cdn.eka.care/vagus/cm4mlct2900000tg98p8u967s.webp"
255
- alt="India Flag"
256
- className="pds2-w-24 pds2-h-24"
257
- />
258
- <span className="pds2-text-text-black">+91</span>
259
- </div>
260
- ),
261
- }),
262
- ...(selectedMethod === ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER && {
263
- placeholder: '00-0000-0000-0000',
264
- padding: 'pds2-p-18',
265
- textStyle: 'Body2Regular pds2-text-center pds2-text-lg',
266
- borderStyle: 'focus-within:pds2-border-border-brand-01',
267
- type: 'tel',
268
- }),
269
- ...(selectedMethod === ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS && {
270
- placeholder: 'Enter ABHA Address',
271
- }),
272
- };
273
-
274
- return <Pds2InputField {...inputProps} />;
275
- }, [selectedMethod, identifierValue, error]);
276
-
277
- const handleSubmitClick = (action = errorActionValue) => {
278
- if (action) {
279
- useAuthAbhaStore.setState({ isLoggedInFromRedirect: true });
280
- setMobileNumber(identifierValue);
281
- useAuthAbhaStore.setState({ initAbhaAppMobileNumber: identifierValue });
282
- useAuthAbhaStore.setState({ abhaAuthFlowMethod: ABHA_AUTH_FLOW_METHOD.MOBILE });
283
- setScreen(SCREEN_NAMES.CREATE_ABHA_WITH_AADHAAR);
284
- setBottomsheetErrorInfo(null);
285
- }
286
- };
287
-
288
- const handleNextClick = async () => {
289
- setAbdmLoginInitApiStatus(LOADING_STATE.LOADING);
290
- let authTxnId = '';
291
- // if the trigger is not from eka app, then call the auth init api to get the txnId
292
- if (!isEkaAppLogin) {
293
- const { txn_id: txnId, error } = await postAuthInitV2({
294
- method: AUTH_METHOD.ABHA,
295
- });
296
- if (!txnId || error) {
297
- setError(error?.message || 'Something went wrong. Please try again.');
298
- setAbdmLoginInitApiStatus(LOADING_STATE.REJECTED);
299
- return;
300
- }
301
-
302
- authTxnId = txnId;
303
- console.log('triggering logout api in login with abha screen');
304
- // call the auth logout api
305
- await postAuthLogoutV2();
306
- }
307
-
308
- setRegistrationType(REGISTRATION_TYPE.LOGIN); // set the registration type to login, since it is login flow
309
-
310
- const loginIdentifier =
311
- selectedMethod === ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS
312
- ? `${identifierValue}${isProd ? '@abdm' : '@sbx'}`
313
- : identifierValue;
314
-
315
- console.log('loginIdentifier', loginIdentifier);
316
-
317
- const {
318
- txn_id: abdmTxnId,
319
- error: abdmLoginError,
320
- action: errorAction,
321
- hint,
322
- } = await postAbdmLoginInit({
323
- method: selectedMethod,
324
- identifier: loginIdentifier,
325
- });
326
-
327
- console.log('after postAbdmLoginInit', errorAction);
328
- console.log('after postAbdmLoginInit', errorAction);
329
-
330
- if (errorAction) {
331
- setErrorAction(errorAction);
332
- setBottomsheetErrorInfo(errorAction);
333
- return;
334
- }
335
-
336
- if (abdmLoginError) {
337
- setError(abdmLoginError || 'Something went wrong. Please try again.');
338
- setAbdmLoginInitApiStatus(LOADING_STATE.REJECTED);
339
- return;
340
- }
341
-
342
- if (!abdmTxnId) {
343
- setError('Something went wrong. Please try again.');
344
- setAbdmLoginInitApiStatus(LOADING_STATE.REJECTED);
345
- return;
346
- }
347
-
348
- if (selectedMethod === ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS)
349
- setSelectedAbhaAddress(loginIdentifier);
350
-
351
- setAadhaarInitResponse({
352
- authTxnId,
353
- txnId: abdmTxnId,
354
- aadhaarOtpSentToHint: hint || null,
355
- });
356
- setLoginIdentifierValue(loginIdentifier);
357
- setAbdmLoginInitApiStatus(LOADING_STATE.RESOLVED);
358
- handleSendEvent({
359
- eventName: 'abha_login_submitted',
360
- eventData: {
361
- type: 'next',
362
- platform: clientId,
363
- },
364
- });
365
- setScreen(SCREEN_NAMES.VERIFY_OTP_LOGIN_WITH_ABHA);
366
- };
367
-
368
- const isValid = React.useMemo(() => {
369
- switch (selectedMethod) {
370
- case ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS:
371
- return identifierValue.length >= 4 && identifierValue.length <= 20; // changing the lower limit to 4, since the address can be as short as 4 characters
372
- case ABHA_AUTH_FLOW_METHOD.MOBILE:
373
- return identifierValue.length === 10;
374
- case ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER:
375
- return identifierValue.length === 17;
376
- case ABHA_AUTH_FLOW_METHOD.AADHAR_NUMBER:
377
- return identifierValue.length === 12;
378
- }
379
- }, [selectedMethod, identifierValue]);
380
-
381
- const methodText = React.useMemo(() => {
382
- switch (selectedMethod) {
383
- case ABHA_AUTH_FLOW_METHOD.ABHA_NUMBER:
384
- return 'Enter your ABHA Number';
385
- case ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS:
386
- return 'Enter your ABHA Address';
387
- case ABHA_AUTH_FLOW_METHOD.MOBILE:
388
- return 'Enter your Mobile Number';
389
- case ABHA_AUTH_FLOW_METHOD.AADHAR_NUMBER:
390
- return 'Enter your Aadhaar Number';
391
- default:
392
- return 'Enter your ABHA Number';
393
- }
394
- }, [selectedMethod]);
395
-
396
- return (
397
- <>
398
- <div className="pds2-p-16 pds2-bg-bg-01 pds2-space-y-16 pds2-text-center">
399
- <div className="pds2-flex pds2-justify-center pds2-items-center pds2-gap-16">
400
- {/* <EkaCarePatientIcon /> */}
401
- <div className="pds2-bg-bg-white pds2-rounded-16">
402
- <img
403
- src="https://cdn.eka.care/vagus/cm4ml1lwu00000tfs1okl7hs9.webp"
404
- alt="abha"
405
- className="pds2-w-64 pds2-h-64"
406
- />
407
- </div>
408
- </div>
409
- <div className="Heading3Semibold pds2-text-text-black">Log in With ABHA</div>
410
- <div className="pds2-text-text-black pds2-mt-2">{methodText}</div>
411
- <div className="pds2-space-y-12">
412
- <div className="pds2-relative">
413
- {renderIdentifierInput()}
414
- {selectedMethod === ABHA_AUTH_FLOW_METHOD.PHR_ADDRESS && (
415
- <div className="pds2-absolute pds2-right-16 pds2-top-16 Body1Regular pds2-text-text-03">
416
- {isProd ? '@abdm' : '@sbx'}
417
- </div>
418
- )}
419
- </div>
420
- </div>
421
- {error && <div className="pds2-text-text-error Body3Regular">{error}</div>}
422
- <Pds2Button
423
- title="Next"
424
- IconComponent={() => (
425
- <ChevronDownRegularIcon className="pds2-w-16 pds2-h-16 -pds2-rotate-90 pds2-ml-8" />
426
- )}
427
- state={!isValid || !isValidMobileNumber || abdmLoginInitApiStatus === LOADING_STATE.LOADING ? 'disabled' : 'enabled'}
428
- isLoading={abdmLoginInitApiStatus === LOADING_STATE.LOADING}
429
- onClick={handleNextClick}
430
- className="pds2-w-full"
431
- />
432
- <div className="pds2-flex pds2-flex-row pds2-justify-center pds2-items-center pds2-bg-bg-white pds2-w-fit pds2-px-12 pds2-bg-opacity-60 pds2-rounded-12 pds2-mx-auto">
433
- <div className="pds2-text-text-04 Body3Regular">Don’t have ABHA?</div>
434
- <Pds2CustomButton
435
- className="pds2-text-text-brand Body3Semibold pds2-pl-4 pds2-pr-0 pds2-py-4 ripple pds2-border-none pds2-bg-transparent"
436
- width="pds2-w-fit"
437
- title="Register Now"
438
- onClick={() => {
439
- setScreen(SCREEN_NAMES.CREATE_ABHA_WITH_AADHAAR);
440
- }}
441
- />
442
- </div>
443
- </div>
444
-
445
- <AbhaErrorBottomSheet onSubmitClick={handleSubmitClick} />
446
- </>
447
- );
448
- };