@eka-care/abha 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc +29 -0
  3. package/.prettierrc +7 -0
  4. package/dev-abha-ios-android.zip +0 -0
  5. package/{dist/index.html → index.html} +1 -2
  6. package/package.json +5 -32
  7. package/postcss.config.js +6 -0
  8. package/prod-abha-mixpanel.zip +0 -0
  9. package/scripts/build-purged-css.cjs +70 -0
  10. package/src/App.css +0 -0
  11. package/src/App.tsx +32 -0
  12. package/src/api-queries/use-get-profiles-patient.ts +12 -0
  13. package/src/api-queries/use-get-profiles-phr-user.ts +27 -0
  14. package/src/api-queries/use-post-abdm-login-verify-v1.ts +25 -0
  15. package/src/api-queries/use-post-auth-verify-v2.ts +74 -0
  16. package/src/api-queries/use-post-profile-switch.ts +57 -0
  17. package/src/api-queries/use-post-register-mobile-create-phr.ts +39 -0
  18. package/src/api-queries/user-post-abdm-profile-login-phr.ts +25 -0
  19. package/src/assets/react.svg +1 -0
  20. package/src/atoms/button/custom-button.tsx +32 -0
  21. package/src/atoms/button/index.tsx +40 -0
  22. package/src/atoms/button/types.d.ts +31 -0
  23. package/src/atoms/header.tsx +25 -0
  24. package/src/atoms/input-field/index.tsx +62 -0
  25. package/src/atoms/input-field/patient-input-field.tsx +16 -0
  26. package/src/atoms/input-field/types.ts +24 -0
  27. package/src/atoms/pds2-otp-input/index.tsx +35 -0
  28. package/src/atoms/pds2-otp-input/types.d.ts +3 -0
  29. package/src/atoms/single-input-chip/index.tsx +32 -0
  30. package/src/atoms/single-input-chip/types.ts +6 -0
  31. package/src/atoms/spinner.tsx +33 -0
  32. package/src/atoms/text-separator.tsx +11 -0
  33. package/src/index.css +118 -0
  34. package/src/main.tsx +313 -0
  35. package/src/molecules/abha/bottom-sheet/bottom-sheet-wrapper.tsx +40 -0
  36. package/src/molecules/abha/bottom-sheet/index.tsx +66 -0
  37. package/src/molecules/abha/spaced-input-component.tsx +150 -0
  38. package/src/molecules/copyright-year.tsx +16 -0
  39. package/src/molecules/exit-popup/index.tsx +99 -0
  40. package/src/molecules/pds2-otp-component/index.tsx +148 -0
  41. package/src/organisms/abha/abha-header.tsx +25 -0
  42. package/src/organisms/abha/error-bottom-sheet.tsx +27 -0
  43. package/src/organisms/abha/otp-card.tsx +99 -0
  44. package/src/organisms/abha/verification-status.tsx +40 -0
  45. package/src/organisms/choose-language/choose-language.tsx +53 -0
  46. package/src/organisms/choose-language/types.ts +10 -0
  47. package/src/organisms/screen-switcher/screen-switcher.tsx +80 -0
  48. package/src/routes/abha-aadhaar-verification-status-screen.tsx +209 -0
  49. package/src/routes/abha-created-screen.tsx +45 -0
  50. package/src/routes/abha-login-otp-verify-screen.tsx +523 -0
  51. package/src/routes/abha-mobile-linking-status-screen.tsx +267 -0
  52. package/src/routes/abha-otp-and-mobile-screen.tsx +429 -0
  53. package/src/routes/abha-phone-number-verification-screen.tsx +373 -0
  54. package/src/routes/create-abha-address-screen.tsx +928 -0
  55. package/src/routes/create-abha-with-aadhaar-screen.tsx +984 -0
  56. package/src/routes/create-eka-profile-screen.tsx +777 -0
  57. package/src/routes/get-all-profiles-screen.tsx +161 -0
  58. package/src/routes/login-or-create-abha-address-screen.tsx +953 -0
  59. package/src/routes/login-with-abha-screen.tsx +448 -0
  60. package/src/routes/select-abha-from-list-screen.tsx +718 -0
  61. package/src/routes/select-eka-profile-screen.tsx +444 -0
  62. package/src/routes/utils/trackAbhaEvent.ts +41 -0
  63. package/src/stores/auth-abha-store/index.ts +138 -0
  64. package/src/stores/auth-abha-store/types.ts +204 -0
  65. package/src/utils/mock-auth-response.ts +31 -0
  66. package/src/vite-env.d.ts +1 -0
  67. package/tailwind.config.ts +9 -0
  68. package/tsconfig.app.json +26 -0
  69. package/tsconfig.json +25 -0
  70. package/tsconfig.node.json +10 -0
  71. package/tsconfig.node.tsbuildinfo +1 -0
  72. package/tsconfig.tsbuildinfo +1 -0
  73. package/vite.config.d.ts +2 -0
  74. package/vite.config.js +30 -0
  75. package/vite.config.ts +35 -0
  76. package/dist/README.md +0 -114
  77. package/dist/package.json +0 -7
  78. package/dist/sdk/abha/css/abha.css +0 -1
  79. package/dist/sdk/abha/js/abha.js +0 -137
  80. /package/{dist → public}/images/adhaar.webp +0 -0
  81. /package/{dist → public}/images/at-the-rate.webp +0 -0
  82. /package/{dist → public}/images/avatar.webp +0 -0
  83. /package/{dist → public}/images/ayushman-bharat.webp +0 -0
  84. /package/{dist → public}/images/circle-checkmark.webp +0 -0
  85. /package/{dist → public}/images/link-abha.webp +0 -0
  86. /package/{dist → public}/images/national-authority.webp +0 -0
  87. /package/{dist → public}/images/three-dots.webp +0 -0
@@ -0,0 +1,40 @@
1
+ type TAbhaVerificationStatus = {
2
+ loading: boolean;
3
+ loadingText: string;
4
+ successText: string;
5
+ };
6
+
7
+ const AbhaVerificationStatus = ({
8
+ loading = false,
9
+ loadingText,
10
+ successText,
11
+ }: TAbhaVerificationStatus) => {
12
+ return (
13
+ <div
14
+ className="pds2-px-16 pds2-w-full pds2-min-h-screen pds2-flex pds2-flex-col pds2-items-center pds2-justify-center pds2-text-center"
15
+ style={{ backgroundColor: '#F2F2F2' }}
16
+ >
17
+ {loading ? (
18
+ <>
19
+ <img
20
+ src="https://cdn.eka.care/vagus/cm5m96sno000d0tg92v2g42tx.webp"
21
+ alt="loading"
22
+ className="pds2-w-60"
23
+ />
24
+ <div className="pds2-text-text-01 Heading4Semibold pds2-mt-48">{loadingText}</div>
25
+ </>
26
+ ) : (
27
+ <>
28
+ <img
29
+ src="https://cdn.eka.care/vagus/cm5m97vt600060tfs273o59zn.webp"
30
+ alt="success"
31
+ className="pds2-w-142"
32
+ />
33
+ <div className="pds2-text-text-01 Heading4Semibold pds2-mt-23">{successText}</div>
34
+ </>
35
+ )}
36
+ </div>
37
+ );
38
+ };
39
+
40
+ export default AbhaVerificationStatus;
@@ -0,0 +1,53 @@
1
+ import { CircleCheckSolidIcon } from '@elixir/icons';
2
+ import { Language, LanguageKey } from './types';
3
+
4
+ const ChooseLanguage = ({
5
+ selectedLanguage,
6
+ languages,
7
+ onChangeLanguage,
8
+ }: {
9
+ selectedLanguage: LanguageKey;
10
+ languages: Language[];
11
+ onChangeLanguage: (language: LanguageKey) => void;
12
+ }) => {
13
+ return (
14
+ <div className="pds2-flex pds2-px-16 pds2-py-8 pds2-items-center pds2-justify-between">
15
+ <div className="Body3Regular pds2-text-text-04">Choose language:</div>
16
+ <div className="pds2-flex pds2-flex-row pds2-gap-8">
17
+ {languages.map((language) => {
18
+ const isSelected = language.key === selectedLanguage;
19
+ return (
20
+ <label
21
+ key={language.key}
22
+ className={`pds2-flex pds2-items-center pds2-cursor-pointer pds2-py-8 pds2-px-12 pds2-border pds2-rounded-8
23
+ ${
24
+ isSelected
25
+ ? 'pds2-border-border-brand-01 pds2-gap-6 pds2-text-text-brand Body3Semibold'
26
+ : 'pds2-border-border-03 pds2-text-text-secondary Body3Regular'
27
+ }
28
+ focus-within:pds2-ring-2 focus-within:pds2-ring-border-brand-01 focus-within:pds2-ring-offset-2
29
+ active:pds2-bg-bg-brand-02 hover:pds2-bg-bg-hover-01
30
+ pds2-transition-colors pds2-duration-200
31
+ `}
32
+ >
33
+ <input
34
+ type="radio"
35
+ name="language"
36
+ value={language.key}
37
+ checked={isSelected}
38
+ onChange={() => onChangeLanguage(language.key)}
39
+ className="focus:pds2-outline-none pds2-appearance-none"
40
+ />
41
+ {isSelected && (
42
+ <CircleCheckSolidIcon className="pds2-w-12 pds2-h-12 pds2-text-icon-success-02" />
43
+ )}
44
+ <span>{language.title}</span>
45
+ </label>
46
+ );
47
+ })}
48
+ </div>
49
+ </div>
50
+ );
51
+ };
52
+
53
+ export default ChooseLanguage;
@@ -0,0 +1,10 @@
1
+ export enum LanguageKey {
2
+ ENGLISH = 'en',
3
+ HINDI = 'hi',
4
+ TAMIL = 'ta',
5
+ }
6
+
7
+ export type Language = {
8
+ title: string;
9
+ key: LanguageKey;
10
+ };
@@ -0,0 +1,80 @@
1
+ import { ReactElement } from 'react';
2
+ import AbhaAadhaarVerificationStatusScreen from '../../routes/abha-aadhaar-verification-status-screen';
3
+ import AbhaLoginOtpVerifyScreen from '../../routes/abha-login-otp-verify-screen';
4
+ import AbhaMobileLinkingStatusScreen from '../../routes/abha-mobile-linking-status-screen';
5
+ import AbhaOtpAndMobileScreen from '../../routes/abha-otp-and-mobile-screen';
6
+ import AbhaPhoneNumberVerificationScreen from '../../routes/abha-phone-number-verification-screen';
7
+ import CreateAbhaAddressScreen from '../../routes/create-abha-address-screen';
8
+ import CreateAbhaWithAadhaarScreen from '../../routes/create-abha-with-aadhaar-screen';
9
+ import CreateEkaProfileScreen from '../../routes/create-eka-profile-screen';
10
+ import GetAllProfilesScreen from '../../routes/get-all-profiles-screen';
11
+ import LoginWithAbhaScreen from '../../routes/login-with-abha-screen';
12
+ import SelectAbhaFromListScreen from '../../routes/select-abha-from-list-screen';
13
+ import useAuthAbhaStore from '../../stores/auth-abha-store';
14
+ import { SCREEN_NAMES } from '../../stores/auth-abha-store/types';
15
+ import SelectEkaProfileScreen from '../../routes/select-eka-profile-screen';
16
+ import LoginorCreateAbhaScreen from '../../routes/login-or-create-abha-address-screen';
17
+
18
+ const ScreenStack = (): ReactElement => {
19
+ const screen = useAuthAbhaStore((state) => state.screen);
20
+ const topScreen = screen[screen.length - 1];
21
+
22
+ switch (topScreen) {
23
+ // // Doctor Routes
24
+ // case SCREEN_NAMES.DOCTOR_SIGNIN:
25
+ // return <DoctorSigninScreen />;
26
+ // case SCREEN_NAMES.DOCTOR_OTP_SIGNIN:
27
+ // return <DoctorOtpScreen />;
28
+ // case SCREEN_NAMES.DOCTOR_WORKSPACE_SIGNIN:
29
+ // return <DoctorWorkspaceLoginScreen />;
30
+ // case SCREEN_NAMES.DOCTOR_SIGNIN_USERS:
31
+ // return <DoctorLoginUsersScreen />;
32
+ // case SCREEN_NAMES.WORKSPACE_NAME:
33
+ // return <WorkspaceNameScreen />;
34
+ // case SCREEN_NAMES.WORKSPACE_SIGNIN_METHOD:
35
+ // return <WorkspaceSigninMethodScreen />;
36
+ // case SCREEN_NAMES.EMAIL_MOBILE_SIGNIN:
37
+ // return <EmailMobileSigninScreen />;
38
+
39
+ // ABHA routes
40
+ case SCREEN_NAMES.LOGIN_WITH_ABHA:
41
+ return <LoginWithAbhaScreen />;
42
+ case SCREEN_NAMES.VERIFY_OTP_LOGIN_WITH_ABHA:
43
+ return <AbhaLoginOtpVerifyScreen />;
44
+ case SCREEN_NAMES.CREATE_ABHA_WITH_AADHAAR:
45
+ return <CreateAbhaWithAadhaarScreen />;
46
+ case SCREEN_NAMES.ABHA_OTP_AND_MOBILE:
47
+ return <AbhaOtpAndMobileScreen />;
48
+ case SCREEN_NAMES.ABHA_PHONE_NUMBER_VERIFICATION:
49
+ return <AbhaPhoneNumberVerificationScreen />;
50
+ case SCREEN_NAMES.AADHAAR_VERIFICATION_STATUS:
51
+ return <AbhaAadhaarVerificationStatusScreen />;
52
+ case SCREEN_NAMES.ABHA_MOBILE_LINKING_STATUS:
53
+ return <AbhaMobileLinkingStatusScreen />;
54
+ case SCREEN_NAMES.SELECT_ABHA_FROM_LIST:
55
+ return <SelectAbhaFromListScreen />;
56
+ case SCREEN_NAMES.SELECT_EKA_PROFILE:
57
+ return <SelectEkaProfileScreen />;
58
+ case SCREEN_NAMES.CREATE_ABHA_ADDRESS:
59
+ return <CreateAbhaAddressScreen />;
60
+ case SCREEN_NAMES.CREATE_EKA_PROFILE:
61
+ return <CreateEkaProfileScreen />;
62
+ case SCREEN_NAMES.CREATE_PHR_EKA_PROFILE:
63
+ return <CreateEkaProfileScreen />;
64
+ case SCREEN_NAMES.GET_ALL_PROFILES:
65
+ return <GetAllProfilesScreen />;
66
+ case SCREEN_NAMES.LOGIN_OR_CREATE_ABHA:
67
+ return <LoginorCreateAbhaScreen />;
68
+
69
+ // // Patient routes
70
+ // case SCREEN_NAMES.PATIENT_SIGNIN:
71
+ // return <PatientSigninScreen />;
72
+ // case SCREEN_NAMES.PATIENT_OTP:
73
+ // return <PatientOtpScreen />;
74
+
75
+ default:
76
+ return <></>;
77
+ }
78
+ };
79
+
80
+ export default ScreenStack;
@@ -0,0 +1,209 @@
1
+ import { ABHA_V3_SKIP_STATES, AUTH_METHOD, TProfileRecord } from '@elixir/types';
2
+ import { postAuthVerifyV2, setIndividualEnv } from 'apis';
3
+ import { useEffect, useState } from 'react';
4
+ import { onAbhaSuccess, unMount } from '../main';
5
+ import AbhaVerificationStatus from '../organisms/abha/verification-status';
6
+ import useAuthAbhaStore from '../stores/auth-abha-store';
7
+ import { SCREEN_NAMES } from '../stores/auth-abha-store/types';
8
+ import { handleSendEvent } from '@elixir/utils';
9
+ import { getMockAuthVerifyResponse } from '../utils/mock-auth-response';
10
+
11
+ const AbhaAadhaarVerificationStatusScreen = () => {
12
+ const aadhaarVerificationSkipStateStatus = useAuthAbhaStore(
13
+ (state) => state.aadhaarVerificationSkipStateStatus
14
+ );
15
+ const authTxnId = useAuthAbhaStore((state) => state.authTxnId);
16
+ const ekaSmallToken = useAuthAbhaStore((state) => state.ekaSmallToken);
17
+ const setScreen = useAuthAbhaStore((state) => state.setScreen);
18
+
19
+ const [loadingStatus, setLoadingStatus] = useState(true);
20
+ const clientId = useAuthAbhaStore((state) => state.clientId);
21
+ const isEkaAppLogin = useAuthAbhaStore((state) => state.isEkaAppLogin);
22
+ const oid = useAuthAbhaStore((state) => state.oid);
23
+ const ekaProfileInfo = useAuthAbhaStore((state) => state.ekaProfileInfo);
24
+ const validGenders = ['M', 'F', 'O', 'U'] as const;
25
+ const setSelectedAbhaFlow = useAuthAbhaStore((state) => state.setSelectedAbhaFlow);
26
+
27
+ useEffect(() => {
28
+ const p1 = new Promise((resolve) => {
29
+ setTimeout(() => {
30
+ resolve(setLoadingStatus(false));
31
+ }, 500);
32
+ });
33
+
34
+ handleSendEvent({
35
+ eventName: 'page_view',
36
+ eventData: {
37
+ page_view: 'aadhaar_verified_successful',
38
+ platform: clientId,
39
+ },
40
+ });
41
+
42
+ window.curio?.pushToMixpanel?.('page_view', {
43
+ platform: clientId,
44
+ page_view: 'aadhaar_verified_successful',
45
+ });
46
+
47
+ async function dummyLoadingEffect() {
48
+ await p1;
49
+
50
+ setTimeout(async () => {
51
+ if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.CONFIRM_MOBILE_OTP) {
52
+ console.log('setting the selected abha flow to aadhaar');
53
+ setSelectedAbhaFlow('aadhaar');
54
+ handleSendEvent({
55
+ eventName: 'abha_aadhaar_verification_status',
56
+ eventData: {
57
+ type: 'confirm_mobile_otp',
58
+ platform: clientId,
59
+ transactionId: authTxnId || '',
60
+ skipState: 'confirm_mobile_otp',
61
+ minToken: ekaSmallToken || '',
62
+ oid: ekaProfileInfo?.oid || '',
63
+ abhaAddress: ekaProfileInfo?.abha_address || '',
64
+ isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
65
+ },
66
+ });
67
+ window.curio?.pushToMixpanel?.('abha_aadhaar_verification_status', {
68
+ platform: clientId,
69
+ type: 'confirm_mobile_otp',
70
+ transactionId: authTxnId || '',
71
+ skipState: 'confirm_mobile_otp',
72
+ minToken: ekaSmallToken || '',
73
+ oid: ekaProfileInfo?.oid || '',
74
+ abhaAddress: ekaProfileInfo?.abha_address || '',
75
+ isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
76
+ });
77
+ setScreen(SCREEN_NAMES.ABHA_PHONE_NUMBER_VERIFICATION);
78
+ } else {
79
+ // step 1: here skip state will be abha create,
80
+ // check if auth token and oid is present in the headers
81
+ // then send the auth token to the get all profiles
82
+ if (isEkaAppLogin) {
83
+ const gender = validGenders.includes(ekaProfileInfo?.gender as any)
84
+ ? (ekaProfileInfo?.gender as 'M' | 'F' | 'O' | 'U')
85
+ : undefined;
86
+
87
+ const authProfile: TProfileRecord = {
88
+ oid: ekaProfileInfo?.oid || '',
89
+ fln: ekaProfileInfo?.name || '',
90
+ dob: ekaProfileInfo?.date_of_birth,
91
+ gen: gender,
92
+ mobile: ekaProfileInfo?.mobile,
93
+ at: '',
94
+ fn: ekaProfileInfo?.firstname || '',
95
+ mn: ekaProfileInfo?.middlename || '',
96
+ ln: ekaProfileInfo?.lastname || '',
97
+ abha_number: ekaProfileInfo?.abha_number || '',
98
+ 'health-ids': ekaProfileInfo?.abha_address
99
+ ? [ekaProfileInfo?.abha_address]
100
+ : undefined,
101
+ };
102
+ console.log(
103
+ 'inside abha aadhaar verification status auth profile response ',
104
+ authProfile
105
+ );
106
+ const authResponse = getMockAuthVerifyResponse(authProfile);
107
+ console.log('authResponse ', authResponse);
108
+ // if the auth is present in the headers and it is abha end, then return
109
+ if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_END) {
110
+ // if the skip state is abha end, and oid is present,then unmount the sdk and return
111
+ if (oid) {
112
+ // for ios specific handling
113
+ handleSendEvent({
114
+ eventName: 'abha_aadhaar_verification_status_eka_flow',
115
+ eventData: {
116
+ type: 'verify',
117
+ platform: clientId,
118
+ transactionId: authTxnId || '',
119
+ skipState: 'abha_end',
120
+ minToken: ekaSmallToken || '',
121
+ oid: oid || '',
122
+ abhaAddress: ekaProfileInfo?.abha_address || '',
123
+ isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
124
+ },
125
+ });
126
+ window.curio?.pushToMixpanel?.('abha_aadhaar_verification_status_eka_flow', {
127
+ platform: clientId,
128
+ type: 'verify',
129
+ transactionId: authTxnId || '',
130
+ skipState: 'abha_end',
131
+ minToken: ekaSmallToken || '',
132
+ oid: oid || '',
133
+ abhaAddress: ekaProfileInfo?.abha_address || '',
134
+ isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
135
+ });
136
+ if (window.EkaAbha && window.EkaAbha.onAbhaSuccess) {
137
+ window.EkaAbha?.onAbhaSuccess(JSON.stringify({ response: authResponse }));
138
+ return;
139
+ }
140
+ // @ts-ignore
141
+ onAbhaSuccess({ response: authResponse });
142
+ unMount();
143
+ return;
144
+ }
145
+ }
146
+
147
+ if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_CREATE) {
148
+ // since the flow is inside the app, and the skip_state is not abha end, then redirect to create eka profile
149
+ console.log('redirecting to create eka profile for abha address creation -> mobile');
150
+ setScreen(SCREEN_NAMES.CREATE_EKA_PROFILE);
151
+ return;
152
+ }
153
+ return;
154
+ }
155
+
156
+ if (!authTxnId || !ekaSmallToken) return;
157
+ const verifyResponse = await postAuthVerifyV2({
158
+ txn_id: authTxnId,
159
+ token: ekaSmallToken,
160
+ });
161
+ if (verifyResponse.data) {
162
+ // // step 1 : check if the skip state is abha end, if yes, then return -> done
163
+ if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_END) {
164
+ // if the skip state is abha end, and oid is present,then unmount the sdk and return
165
+ if (oid) {
166
+ // for ios specific handling
167
+ if (window.EkaAbha && window.EkaAbha.onAbhaSuccess) {
168
+ window.EkaAbha?.onAbhaSuccess(JSON.stringify({ response: verifyResponse }));
169
+ return;
170
+ }
171
+ // @ts-ignore
172
+ onAbhaSuccess({ response: verifyResponse });
173
+ unMount();
174
+ return;
175
+ }
176
+ setIndividualEnv({
177
+ extraHeaders: {
178
+ auth: verifyResponse.data?.tokens.sess,
179
+ },
180
+ });
181
+ // here the min token is present, then set the screen to get all profiles
182
+ setScreen(SCREEN_NAMES.GET_ALL_PROFILES);
183
+ return;
184
+ }
185
+ setIndividualEnv({
186
+ extraHeaders: {
187
+ auth: verifyResponse.data?.tokens.sess,
188
+ },
189
+ });
190
+ // here the min token is present, then set the screen to get all profiles
191
+ setScreen(SCREEN_NAMES.GET_ALL_PROFILES);
192
+ return;
193
+ }
194
+ }
195
+ }, 2000);
196
+ }
197
+ dummyLoadingEffect();
198
+ }, []);
199
+
200
+ return (
201
+ <AbhaVerificationStatus
202
+ loading={loadingStatus}
203
+ loadingText="Verifying..."
204
+ successText="Aadhaar Verification Successful!"
205
+ />
206
+ );
207
+ };
208
+
209
+ export default AbhaAadhaarVerificationStatusScreen;
@@ -0,0 +1,45 @@
1
+ import { ArrowLeftRegularIcon } from '@elixir/icons';
2
+ import Pds2Header from '../atoms/header';
3
+ import Pds2CustomButton from '../atoms/button/custom-button';
4
+
5
+ const AbhaCreatedScreen = () => {
6
+ return (
7
+ <div className="pds2-w-full pds2-h-full pds2-flex pds2-flex-col">
8
+ <Pds2Header
9
+ prefixIcon={
10
+ <button className="pds2-w-24 pds2-h-24 pds2-rounded-full pds2-flex pds2-items-center pds2-justify-center ripple">
11
+ <ArrowLeftRegularIcon />
12
+ </button>
13
+ }
14
+ title=""
15
+ className="pds2-border-b-1 pds2-border-bg-seperator-dark pds2-bg-bg-white"
16
+ />
17
+ <div className="pds2-p-16 pds2-flex pds2-flex-col pds2-items-center pds2-space-y-16 pds2-text-center pds2-flex-1 pds2-py-48">
18
+ <img
19
+ src="https://cdn.eka.care/vagus/cm5m97vt600060tfs273o59zn.webp"
20
+ alt="success"
21
+ className="pds2-h-120"
22
+ />
23
+ <div className="pds2-space-y-4">
24
+ <div className="pds2-text-text-01 Heading4Semibold">
25
+ Congratulations! Your <br /> ABHA Address is created and linked.
26
+ </div>
27
+ <div className="pds2-text-text-primary BodyBody">
28
+ Keep track of your personal health records easily with the Eka Care app
29
+ </div>
30
+ </div>
31
+ <div className="pds2-w-full pds2-rounded-16 pds2-border pds2-border-bg-seperator-dark pds2-p-16">
32
+ Card
33
+ </div>
34
+ </div>
35
+ <div className="pds2-p-16 pds2-shadow-elevation-only-top pds2-sticky pds2-bottom-0">
36
+ <Pds2CustomButton
37
+ title="Continue to use ABHA"
38
+ className="pds2-justify-center pds2-text-text-brand Body1Semibold pds2-bg-border-brand-02 pds2-border-none"
39
+ />{' '}
40
+ </div>
41
+ </div>
42
+ );
43
+ };
44
+
45
+ export default AbhaCreatedScreen;