medos-sdk 1.1.10 → 1.1.11

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 (97) hide show
  1. package/dist/client/MedosClient.d.ts +1 -0
  2. package/dist/client/MedosClient.js +7 -0
  3. package/dist/components/AppointmentCalender.js +19 -22
  4. package/dist/components/AppointmentConfirmationStep.d.ts +1 -0
  5. package/dist/components/AppointmentConfirmationStep.js +34 -42
  6. package/dist/components/AppointmentDateTimeModal.d.ts +1 -0
  7. package/dist/components/AppointmentDateTimeModal.js +201 -168
  8. package/dist/components/AppointmentSummaryStep.d.ts +12 -0
  9. package/dist/components/AppointmentSummaryStep.js +168 -0
  10. package/dist/components/BookingOptionStep.d.ts +14 -0
  11. package/dist/components/BookingOptionStep.js +346 -0
  12. package/dist/components/ContactInformationStep.js +10 -4
  13. package/dist/components/ContactPreferenceStep.js +10 -1
  14. package/dist/components/DoctorSelectModal.js +105 -59
  15. package/dist/components/EnquiryForm.js +81 -69
  16. package/dist/components/Icons/CloseIcon.d.ts +9 -0
  17. package/dist/components/Icons/CloseIcon.js +5 -0
  18. package/dist/components/InquiryDetailsStep.js +5 -1
  19. package/dist/components/PatientDetailsStep.js +17 -12
  20. package/dist/components/PatientSelectionStep.d.ts +12 -0
  21. package/dist/components/PatientSelectionStep.js +254 -0
  22. package/dist/components/PhoneVerificationStep.js +1 -1
  23. package/dist/components/SuccessStep.js +1 -1
  24. package/dist/components/appointment-booking/AppointmentCalender.js +200 -60
  25. package/dist/components/appointment-booking/hooks/useAppointmentFlow.d.ts +0 -1
  26. package/dist/components/appointment-booking/hooks/useAppointmentFlow.js +110 -25
  27. package/dist/components/appointment-booking/hooks/useAppointmentState.js +32 -0
  28. package/dist/components/appointment-booking/hooks/useInitializeAddresses.js +0 -1
  29. package/dist/components/appointment-booking/types.d.ts +163 -0
  30. package/dist/components/appointment-booking/types.js +16 -0
  31. package/dist/components/appointment-modal-styles.d.ts +259 -0
  32. package/dist/components/appointment-modal-styles.js +395 -0
  33. package/dist/components/constant.d.ts +2 -0
  34. package/dist/components/constant.js +15 -0
  35. package/dist/components/custom-calendar.js +20 -11
  36. package/dist/components/styles.js +93 -52
  37. package/dist/components/theme-styles.d.ts +5 -4
  38. package/dist/components/theme-styles.js +221 -125
  39. package/dist/components/types.d.ts +3 -1
  40. package/dist/components/types.js +15 -0
  41. package/dist/components/utils.d.ts +3 -0
  42. package/dist/components/utils.js +59 -0
  43. package/dist/components/validation.d.ts +2 -0
  44. package/dist/components/validation.js +41 -0
  45. package/dist/core/theme/index.d.ts +1 -0
  46. package/dist/core/theme/index.js +1 -0
  47. package/dist/core/theme/responsive.d.ts +15 -0
  48. package/dist/core/theme/responsive.js +113 -0
  49. package/dist/core/theme/themes.js +16 -4
  50. package/dist/core/theme/types.d.ts +8 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +1 -0
  53. package/dist/react/ThemeProvider.d.ts +2 -1
  54. package/dist/react/ThemeProvider.js +49 -10
  55. package/dist/services/AppointmentService.d.ts +80 -2
  56. package/dist/services/AppointmentService.js +114 -5
  57. package/dist/services/WorkspaceService.d.ts +58 -3
  58. package/dist/services/WorkspaceService.js +10 -1
  59. package/dist/vanilla/AppointmentCalendarWidget.d.ts +9 -7
  60. package/dist/vanilla/AppointmentCalendarWidget.js +820 -377
  61. package/dist/vanilla/EnquiryFormWidget.d.ts +1 -0
  62. package/dist/vanilla/EnquiryFormWidget.js +25 -43
  63. package/dist/vanilla/client/MedosClient.d.ts +1 -0
  64. package/dist/vanilla/components/AppointmentConfirmationStep.d.ts +1 -0
  65. package/dist/vanilla/components/AppointmentDateTimeModal.d.ts +1 -0
  66. package/dist/vanilla/components/AppointmentSummaryStep.d.ts +12 -0
  67. package/dist/vanilla/components/BookingOptionStep.d.ts +14 -0
  68. package/dist/vanilla/components/Icons/CloseIcon.d.ts +9 -0
  69. package/dist/vanilla/components/PatientSelectionStep.d.ts +12 -0
  70. package/dist/vanilla/components/VanillaCalendar.js +33 -18
  71. package/dist/vanilla/components/VanillaIcons.d.ts +5 -0
  72. package/dist/vanilla/components/VanillaIcons.js +92 -0
  73. package/dist/vanilla/components/VanillaSelect.d.ts +3 -0
  74. package/dist/vanilla/components/VanillaSelect.js +93 -5
  75. package/dist/vanilla/components/appointment-booking/hooks/useAppointmentFlow.d.ts +0 -1
  76. package/dist/vanilla/components/appointment-booking/types.d.ts +163 -0
  77. package/dist/vanilla/components/appointment-modal-styles.d.ts +259 -0
  78. package/dist/vanilla/components/constant.d.ts +2 -0
  79. package/dist/vanilla/components/theme-styles.d.ts +5 -4
  80. package/dist/vanilla/components/types.d.ts +3 -1
  81. package/dist/vanilla/components/utils.d.ts +3 -0
  82. package/dist/vanilla/components/validation.d.ts +2 -0
  83. package/dist/vanilla/core/theme/index.d.ts +1 -0
  84. package/dist/vanilla/core/theme/responsive.d.ts +15 -0
  85. package/dist/vanilla/core/theme/types.d.ts +8 -0
  86. package/dist/vanilla/enquiry-widget.js +373 -52
  87. package/dist/vanilla/index.d.ts +2 -0
  88. package/dist/vanilla/react/ThemeProvider.d.ts +2 -1
  89. package/dist/vanilla/services/AppointmentService.d.ts +80 -2
  90. package/dist/vanilla/services/WorkspaceService.d.ts +58 -3
  91. package/dist/vanilla/vanilla/AppointmentCalendarWidget.d.ts +9 -7
  92. package/dist/vanilla/vanilla/EnquiryFormWidget.d.ts +1 -0
  93. package/dist/vanilla/vanilla/components/VanillaIcons.d.ts +5 -0
  94. package/dist/vanilla/vanilla/components/VanillaSelect.d.ts +3 -0
  95. package/dist/vanilla/widget.css +833 -207
  96. package/dist/vanilla/widget.js +6444 -5676
  97. package/package.json +1 -1
@@ -1,4 +1,103 @@
1
1
  import { Doctor, Slot, AddressItem } from "../../services/AppointmentService";
2
+ export interface Patient {
3
+ id: number;
4
+ firstName: string;
5
+ lastName: string;
6
+ email: string;
7
+ countryCode: string;
8
+ phoneNumber: string;
9
+ dob: string;
10
+ age: number;
11
+ gender: string;
12
+ bloodGroup: string;
13
+ mrn: string;
14
+ address: {
15
+ id: number;
16
+ completeAddress: string;
17
+ addressLine1: string;
18
+ addressLine2: string;
19
+ city: string;
20
+ state: string;
21
+ country: string;
22
+ zipcode: string;
23
+ landmark: string;
24
+ phoneNumber: string;
25
+ latitude: number;
26
+ longitude: number;
27
+ };
28
+ }
29
+ export interface SessionPackDoctor {
30
+ id: number;
31
+ fullName: string;
32
+ profilePicUrl: string | null;
33
+ }
34
+ export interface SessionPackResponse {
35
+ id: number;
36
+ workspaceId: number;
37
+ packageName: string;
38
+ description: string;
39
+ totalSessions: number;
40
+ packagePrice: number;
41
+ discount: number;
42
+ discountedPrice: number;
43
+ discountType: "PERCENTAGE" | "FLAT";
44
+ validityDays: number;
45
+ allowedConsultationModes: ("ONLINE" | "OFFLINE")[];
46
+ doctorIds: number[];
47
+ allowFamilyBooking: boolean;
48
+ maxFamilyMembers: number;
49
+ isActive: boolean;
50
+ allowedDoctors: SessionPackDoctor[];
51
+ }
52
+ export interface ActiveSessionPack {
53
+ id: number;
54
+ packageName: string;
55
+ totalSessions: number;
56
+ remainingSessions: number;
57
+ expiryDate: string;
58
+ purchaseDate?: string;
59
+ doctorId?: number;
60
+ doctorName?: string;
61
+ allowedConsultationModes?: ("ONLINE" | "OFFLINE")[];
62
+ }
63
+ export interface SessionPacksDetails {
64
+ associatedPatients: Patient[];
65
+ activeSessionPackResponses: ActiveSessionPack[];
66
+ allSessionPackResponses: SessionPackResponse[];
67
+ }
68
+ export interface SessionPack {
69
+ id: number;
70
+ name: string;
71
+ description?: string;
72
+ totalSessions: number;
73
+ remainingSessions: number;
74
+ price?: number;
75
+ validityDays?: number;
76
+ applicableOnline?: boolean;
77
+ applicableOffline?: boolean;
78
+ expiryDate: string;
79
+ purchaseDate?: string;
80
+ doctorId?: number;
81
+ doctorName?: string;
82
+ }
83
+ export interface AvailablePackage {
84
+ id: number;
85
+ name: string;
86
+ description?: string;
87
+ totalSessions: number;
88
+ sessions?: number;
89
+ price: number;
90
+ discountedPrice?: number;
91
+ discount?: number;
92
+ discountType?: "PERCENTAGE" | "FLAT";
93
+ currency?: string;
94
+ validityDays: number;
95
+ applicableOnline?: boolean;
96
+ applicableOffline?: boolean;
97
+ allowedConsultationModes?: ("ONLINE" | "OFFLINE")[];
98
+ allowedDoctors?: SessionPackDoctor[];
99
+ }
100
+ export type BookingOptionType = "session-pack" | "new-appointment" | "explore-packages" | null;
2
101
  export interface AppointmentState {
3
102
  step: number;
4
103
  loading: boolean;
@@ -18,6 +117,7 @@ export interface AppointmentState {
18
117
  patientEmail: string;
19
118
  patientGender: string;
20
119
  bloodGroup: string;
120
+ patientDob: string;
21
121
  patientAddress: string;
22
122
  patientCity: string;
23
123
  patientState: string;
@@ -31,6 +131,21 @@ export interface AppointmentState {
31
131
  otpVerified: boolean;
32
132
  otpSending: boolean;
33
133
  otpVerifying: boolean;
134
+ verifiedPatients: Patient[];
135
+ selectedPatient: Patient | null;
136
+ useExistingPatient: boolean;
137
+ userSessionPacks: SessionPack[];
138
+ availablePackages: AvailablePackage[];
139
+ selectedSessionPack: SessionPack | null;
140
+ selectedNewPackage: AvailablePackage | null;
141
+ bookingOptionType: BookingOptionType;
142
+ showPackageExplorer: boolean;
143
+ packagesLoading: boolean;
144
+ bookingType: "PACKAGE_PURCHASE" | "ONE_TIME_APPOINTMENT" | "USE_ACTIVE_PACKAGE";
145
+ paymentMode: "CASH" | "CARD" | string;
146
+ packageConfigId?: number;
147
+ patientPackageId?: number;
148
+ packageAmount?: number;
34
149
  }
35
150
  export type AppointmentAction = {
36
151
  type: "SET_STEP";
@@ -83,6 +198,9 @@ export type AppointmentAction = {
83
198
  } | {
84
199
  type: "SET_BLOOD_GROUP";
85
200
  payload: string;
201
+ } | {
202
+ type: "SET_PATIENT_DOB";
203
+ payload: string;
86
204
  } | {
87
205
  type: "SET_PATIENT_ADDRESS";
88
206
  payload: string;
@@ -122,6 +240,51 @@ export type AppointmentAction = {
122
240
  } | {
123
241
  type: "SET_OTP_VERIFYING";
124
242
  payload: boolean;
243
+ } | {
244
+ type: "SET_VERIFIED_PATIENTS";
245
+ payload: Patient[];
246
+ } | {
247
+ type: "SET_SELECTED_PATIENT";
248
+ payload: Patient | null;
249
+ } | {
250
+ type: "SET_USE_EXISTING_PATIENT";
251
+ payload: boolean;
252
+ } | {
253
+ type: "SET_USER_SESSION_PACKS";
254
+ payload: SessionPack[];
255
+ } | {
256
+ type: "SET_AVAILABLE_PACKAGES";
257
+ payload: AvailablePackage[];
258
+ } | {
259
+ type: "SET_SELECTED_SESSION_PACK";
260
+ payload: SessionPack | null;
261
+ } | {
262
+ type: "SET_SELECTED_NEW_PACKAGE";
263
+ payload: AvailablePackage | null;
264
+ } | {
265
+ type: "SET_BOOKING_OPTION_TYPE";
266
+ payload: BookingOptionType;
267
+ } | {
268
+ type: "SET_SHOW_PACKAGE_EXPLORER";
269
+ payload: boolean;
270
+ } | {
271
+ type: "SET_PACKAGES_LOADING";
272
+ payload: boolean;
273
+ } | {
274
+ type: "SET_BOOKING_TYPE";
275
+ payload: "PACKAGE_PURCHASE" | "ONE_TIME_APPOINTMENT" | "USE_ACTIVE_PACKAGE";
276
+ } | {
277
+ type: "SET_PAYMENT_MODE";
278
+ payload: "CASH" | "CARD" | string;
279
+ } | {
280
+ type: "SET_PACKAGE_CONFIG_ID";
281
+ payload: number | undefined;
282
+ } | {
283
+ type: "SET_PATIENT_PACKAGE_ID";
284
+ payload: number | undefined;
285
+ } | {
286
+ type: "SET_PACKAGE_AMOUNT";
287
+ payload: number | undefined;
125
288
  } | {
126
289
  type: "RESET_FORM";
127
290
  };
@@ -17,6 +17,7 @@ export const INITIAL_STATE = {
17
17
  patientEmail: "",
18
18
  patientGender: "",
19
19
  bloodGroup: "",
20
+ patientDob: "",
20
21
  patientAddress: "",
21
22
  patientCity: "",
22
23
  patientState: "",
@@ -30,4 +31,19 @@ export const INITIAL_STATE = {
30
31
  otpVerified: false,
31
32
  otpSending: false,
32
33
  otpVerifying: false,
34
+ verifiedPatients: [],
35
+ selectedPatient: null,
36
+ useExistingPatient: false,
37
+ userSessionPacks: [],
38
+ availablePackages: [],
39
+ selectedSessionPack: null,
40
+ selectedNewPackage: null,
41
+ bookingOptionType: null,
42
+ showPackageExplorer: false,
43
+ packagesLoading: false,
44
+ bookingType: "ONE_TIME_APPOINTMENT",
45
+ paymentMode: "CASH",
46
+ packageConfigId: undefined,
47
+ patientPackageId: undefined,
48
+ packageAmount: undefined,
33
49
  };
@@ -0,0 +1,259 @@
1
+ import React from "react";
2
+ export declare const getMobileStyles: (theme: any, breakpoint: string) => {
3
+ container: {
4
+ backgroundColor: any;
5
+ padding: string;
6
+ maxWidth: string;
7
+ fontFamily: any;
8
+ color: any;
9
+ minHeight: string;
10
+ boxSizing: "border-box";
11
+ };
12
+ header: {
13
+ marginBottom: number;
14
+ };
15
+ title: {
16
+ fontSize: number;
17
+ fontWeight: number;
18
+ margin: number;
19
+ color: any;
20
+ };
21
+ section: {
22
+ marginBottom: number;
23
+ };
24
+ sectionTitle: {
25
+ fontSize: number;
26
+ fontWeight: number;
27
+ marginBottom: number;
28
+ color: any;
29
+ };
30
+ required: {
31
+ color: any;
32
+ marginLeft: number;
33
+ };
34
+ modeContainer: {
35
+ display: string;
36
+ flexDirection: "column";
37
+ gap: number;
38
+ };
39
+ modeOption: {
40
+ display: string;
41
+ alignItems: string;
42
+ gap: number;
43
+ padding: string;
44
+ border: string;
45
+ borderRadius: string;
46
+ cursor: string;
47
+ fontSize: number;
48
+ transition: string;
49
+ backgroundColor: any;
50
+ };
51
+ radioInput: {
52
+ width: number;
53
+ height: number;
54
+ accentColor: any;
55
+ };
56
+ chargeAmount: {
57
+ fontSize: number;
58
+ fontWeight: number;
59
+ color: any;
60
+ };
61
+ paymentOption: {
62
+ padding: string;
63
+ border: string;
64
+ borderRadius: string;
65
+ fontSize: number;
66
+ color: any;
67
+ backgroundColor: any;
68
+ };
69
+ dateSection: {
70
+ marginBottom: number;
71
+ padding: string;
72
+ backgroundColor: any;
73
+ borderRadius: string;
74
+ border: string;
75
+ };
76
+ dateSectionHeader: {
77
+ marginBottom: number;
78
+ };
79
+ dateSectionTitle: {
80
+ fontSize: number;
81
+ fontWeight: number;
82
+ color: any;
83
+ margin: number;
84
+ letterSpacing: string;
85
+ textTransform: "uppercase";
86
+ };
87
+ monthNavigationContainer: {
88
+ display: string;
89
+ alignItems: string;
90
+ justifyContent: string;
91
+ marginBottom: number;
92
+ position: "relative";
93
+ };
94
+ monthYearDisplay: {
95
+ fontSize: number;
96
+ fontWeight: number;
97
+ color: any;
98
+ textAlign: "center";
99
+ flex: number;
100
+ };
101
+ navButton: {
102
+ background: string;
103
+ border: string;
104
+ color: any;
105
+ cursor: string;
106
+ padding: number;
107
+ borderRadius: string;
108
+ display: string;
109
+ alignItems: string;
110
+ justifyContent: string;
111
+ transition: string;
112
+ minWidth: number;
113
+ minHeight: number;
114
+ flexShrink: number;
115
+ };
116
+ dateCardsContainer: {
117
+ display: string;
118
+ justifyContent: string;
119
+ alignItems: string;
120
+ gap: number;
121
+ width: string;
122
+ maxWidth: string;
123
+ overflow: string;
124
+ };
125
+ dateCard: {
126
+ width: number;
127
+ height: number;
128
+ border: string;
129
+ borderRadius: string;
130
+ display: string;
131
+ flexDirection: "column";
132
+ alignItems: string;
133
+ justifyContent: string;
134
+ cursor: string;
135
+ transition: string;
136
+ backgroundColor: any;
137
+ position: "relative";
138
+ flex: string;
139
+ };
140
+ dateCardSelected: {
141
+ borderColor: any;
142
+ backgroundColor: any;
143
+ color: any;
144
+ };
145
+ dateCardWeekday: {
146
+ fontSize: number;
147
+ fontWeight: number;
148
+ textTransform: "uppercase";
149
+ marginBottom: number;
150
+ letterSpacing: string;
151
+ lineHeight: number;
152
+ };
153
+ dateCardDay: {
154
+ fontSize: number;
155
+ fontWeight: number;
156
+ lineHeight: number;
157
+ };
158
+ slotsContainer: {
159
+ marginBottom: number;
160
+ };
161
+ slotGrid: {
162
+ display: string;
163
+ gridTemplateColumns: string;
164
+ gap: number;
165
+ marginTop: number;
166
+ maxHeight: string;
167
+ overflowY: "auto";
168
+ paddingRight: string;
169
+ paddingBottom: string;
170
+ scrollbarWidth: "thin";
171
+ scrollbarColor: string;
172
+ };
173
+ slotButton: {
174
+ padding: string;
175
+ border: string;
176
+ borderRadius: string;
177
+ backgroundColor: any;
178
+ color: any;
179
+ fontSize: number;
180
+ fontWeight: number;
181
+ cursor: string;
182
+ transition: string;
183
+ minHeight: number;
184
+ boxShadow: string;
185
+ position: "relative";
186
+ letterSpacing: string;
187
+ };
188
+ slotButtonSelected: {
189
+ borderColor: any;
190
+ backgroundColor: any;
191
+ color: any;
192
+ boxShadow: string;
193
+ transform: string;
194
+ };
195
+ noSlots: {
196
+ textAlign: "center";
197
+ color: any;
198
+ fontSize: number;
199
+ marginTop: number;
200
+ padding: string;
201
+ };
202
+ footer: {
203
+ display: string;
204
+ gap: number;
205
+ marginTop: string;
206
+ paddingTop: number;
207
+ borderTop: string;
208
+ };
209
+ backButton: {
210
+ flex: number;
211
+ padding: string;
212
+ border: string;
213
+ borderRadius: string;
214
+ backgroundColor: any;
215
+ color: any;
216
+ fontSize: number;
217
+ fontWeight: number;
218
+ cursor: string;
219
+ transition: string;
220
+ minHeight: number;
221
+ };
222
+ nextButton: {
223
+ flex: number;
224
+ padding: string;
225
+ border: string;
226
+ borderRadius: string;
227
+ backgroundColor: any;
228
+ color: any;
229
+ fontSize: number;
230
+ fontWeight: number;
231
+ cursor: string;
232
+ transition: string;
233
+ minHeight: number;
234
+ boxShadow: string;
235
+ };
236
+ };
237
+ export declare const getDesktopStyles: (theme: any, breakpoint: string) => {
238
+ modalWrapper: React.CSSProperties;
239
+ sectionCard: React.CSSProperties;
240
+ sectionHeader: React.CSSProperties;
241
+ sectionTitle: React.CSSProperties;
242
+ sectionBody: React.CSSProperties;
243
+ label: React.CSSProperties;
244
+ modeContainer: React.CSSProperties;
245
+ radioLabel: React.CSSProperties;
246
+ radioInput: React.CSSProperties;
247
+ rupee: React.CSSProperties;
248
+ dateTimeContainer: React.CSSProperties;
249
+ calendarBox: React.CSSProperties;
250
+ timesContainer: React.CSSProperties;
251
+ timesLabel: React.CSSProperties;
252
+ dateLabel: React.CSSProperties;
253
+ noSlots: React.CSSProperties;
254
+ slotGrid: React.CSSProperties;
255
+ slotButton: React.CSSProperties;
256
+ footer: React.CSSProperties;
257
+ backBtn: React.CSSProperties;
258
+ continueBtn: React.CSSProperties;
259
+ };