@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,80 +0,0 @@
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;
@@ -1,209 +0,0 @@
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;
@@ -1,45 +0,0 @@
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;