medos-sdk 1.1.10 → 1.1.12

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 (265) hide show
  1. package/dist/client/MedosClient.d.ts +1 -0
  2. package/dist/client/MedosClient.js +8 -1
  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 +145 -67
  25. package/dist/components/appointment-booking/appointment-modal-styles.d.ts +272 -0
  26. package/dist/components/appointment-booking/appointment-modal-styles.js +419 -0
  27. package/dist/components/appointment-booking/components/AppointmentConfirmationStep.d.ts +28 -0
  28. package/dist/components/appointment-booking/components/AppointmentConfirmationStep.js +107 -0
  29. package/dist/components/appointment-booking/components/AppointmentDateTimeModal.d.ts +18 -0
  30. package/dist/components/appointment-booking/components/AppointmentDateTimeModal.js +306 -0
  31. package/dist/components/appointment-booking/components/AppointmentSummaryStep.d.ts +12 -0
  32. package/dist/components/appointment-booking/components/AppointmentSummaryStep.js +194 -0
  33. package/dist/components/appointment-booking/components/BookingOptionStep.d.ts +14 -0
  34. package/dist/components/appointment-booking/components/BookingOptionStep.js +350 -0
  35. package/dist/components/appointment-booking/components/DoctorSelectModal.d.ts +14 -0
  36. package/dist/components/appointment-booking/components/DoctorSelectModal.js +213 -0
  37. package/dist/components/appointment-booking/components/PatientDetailsStep.d.ts +3 -0
  38. package/dist/components/appointment-booking/components/PatientDetailsStep.js +96 -0
  39. package/dist/components/appointment-booking/components/PatientSelectionStep.d.ts +12 -0
  40. package/dist/components/appointment-booking/components/PatientSelectionStep.js +254 -0
  41. package/dist/components/appointment-booking/components/PhoneVerificationStep.d.ts +3 -0
  42. package/dist/components/appointment-booking/components/PhoneVerificationStep.js +49 -0
  43. package/dist/components/appointment-booking/components/SuccessStep.d.ts +5 -0
  44. package/dist/components/appointment-booking/components/SuccessStep.js +9 -0
  45. package/dist/components/appointment-booking/components/index.d.ts +9 -0
  46. package/dist/components/appointment-booking/components/index.js +9 -0
  47. package/dist/components/appointment-booking/hooks/useAppointmentFlow.d.ts +0 -1
  48. package/dist/components/appointment-booking/hooks/useAppointmentFlow.js +111 -25
  49. package/dist/components/appointment-booking/hooks/useAppointmentState.js +32 -0
  50. package/dist/components/appointment-booking/hooks/useInitializeAddresses.js +0 -1
  51. package/dist/components/appointment-booking/index.d.ts +2 -4
  52. package/dist/components/appointment-booking/index.js +2 -2
  53. package/dist/components/appointment-booking/types.d.ts +167 -0
  54. package/dist/components/appointment-booking/types.js +16 -0
  55. package/dist/components/appointment-modal-styles.d.ts +259 -0
  56. package/dist/components/appointment-modal-styles.js +395 -0
  57. package/dist/components/constant.d.ts +2 -0
  58. package/dist/components/constant.js +15 -0
  59. package/dist/components/constants/constant.d.ts +2 -0
  60. package/dist/components/constants/constant.js +15 -0
  61. package/dist/components/constants/index.d.ts +3 -0
  62. package/dist/components/constants/index.js +24 -0
  63. package/dist/components/constants/options.d.ts +13 -0
  64. package/dist/components/constants/options.js +35 -0
  65. package/dist/components/constants/validation.d.ts +6 -0
  66. package/dist/components/constants/validation.js +16 -0
  67. package/dist/components/custom-calendar.js +20 -11
  68. package/dist/components/enquiry-form/EnquiryForm.d.ts +7 -0
  69. package/dist/components/enquiry-form/EnquiryForm.js +238 -0
  70. package/dist/components/enquiry-form/components/ContactInformationStep.d.ts +13 -0
  71. package/dist/components/enquiry-form/components/ContactInformationStep.js +21 -0
  72. package/dist/components/enquiry-form/components/ContactPreferenceStep.d.ts +9 -0
  73. package/dist/components/enquiry-form/components/ContactPreferenceStep.js +20 -0
  74. package/dist/components/enquiry-form/components/InquiryDetailsStep.d.ts +10 -0
  75. package/dist/components/enquiry-form/components/InquiryDetailsStep.js +20 -0
  76. package/dist/components/enquiry-form/components/index.d.ts +3 -0
  77. package/dist/components/enquiry-form/components/index.js +3 -0
  78. package/dist/components/enquiry-form/index.d.ts +2 -0
  79. package/dist/components/enquiry-form/index.js +2 -0
  80. package/dist/components/index.d.ts +7 -0
  81. package/dist/components/index.js +7 -0
  82. package/dist/components/shared/icons/Check.d.ts +6 -0
  83. package/dist/components/shared/icons/Check.js +2 -0
  84. package/dist/components/shared/icons/ChevronDownIcon.d.ts +4 -0
  85. package/dist/components/shared/icons/ChevronDownIcon.js +2 -0
  86. package/dist/components/shared/icons/ChevronLeft.d.ts +3 -0
  87. package/dist/components/shared/icons/ChevronLeft.js +3 -0
  88. package/dist/components/shared/icons/ChevronRight.d.ts +3 -0
  89. package/dist/components/shared/icons/ChevronRight.js +3 -0
  90. package/dist/components/shared/icons/CloseIcon.d.ts +9 -0
  91. package/dist/components/shared/icons/CloseIcon.js +5 -0
  92. package/dist/components/shared/icons/ConfirmationCheck.d.ts +1 -0
  93. package/dist/components/shared/icons/ConfirmationCheck.js +9 -0
  94. package/dist/components/shared/icons/ConsultationType.d.ts +1 -0
  95. package/dist/components/shared/icons/ConsultationType.js +2 -0
  96. package/dist/components/shared/icons/Date&TimeIcon.d.ts +1 -0
  97. package/dist/components/shared/icons/Date&TimeIcon.js +2 -0
  98. package/dist/components/shared/icons/MapIcon.d.ts +1 -0
  99. package/dist/components/shared/icons/MapIcon.js +2 -0
  100. package/dist/components/shared/icons/MedosLogo.d.ts +3 -0
  101. package/dist/components/shared/icons/MedosLogo.js +3 -0
  102. package/dist/components/shared/icons/PaymentMethodIcon.d.ts +1 -0
  103. package/dist/components/shared/icons/PaymentMethodIcon.js +2 -0
  104. package/dist/components/shared/icons/SuccessIcon.d.ts +8 -0
  105. package/dist/components/shared/icons/SuccessIcon.js +14 -0
  106. package/dist/components/shared/icons/UserIcon.d.ts +1 -0
  107. package/dist/components/shared/icons/UserIcon.js +2 -0
  108. package/dist/components/shared/icons/index.d.ts +13 -0
  109. package/dist/components/shared/icons/index.js +13 -0
  110. package/dist/components/shared/index.d.ts +2 -0
  111. package/dist/components/shared/index.js +2 -0
  112. package/dist/components/shared/ui/Calendar.d.ts +5 -0
  113. package/dist/components/shared/ui/Calendar.js +167 -0
  114. package/dist/components/shared/ui/SelectDropdown.d.ts +41 -0
  115. package/dist/components/shared/ui/SelectDropdown.js +301 -0
  116. package/dist/components/shared/ui/index.d.ts +2 -0
  117. package/dist/components/shared/ui/index.js +2 -0
  118. package/dist/components/styles/appointment.d.ts +4 -0
  119. package/dist/components/styles/appointment.js +220 -0
  120. package/dist/components/styles/enquiry.d.ts +2 -0
  121. package/dist/components/styles/enquiry.js +3 -0
  122. package/dist/components/styles/index.d.ts +2 -0
  123. package/dist/components/styles/index.js +2 -0
  124. package/dist/components/styles/shared.d.ts +3 -0
  125. package/dist/components/styles/shared.js +78 -0
  126. package/dist/components/styles.d.ts +1 -6
  127. package/dist/components/styles.js +1 -257
  128. package/dist/components/theme-styles.d.ts +5 -4
  129. package/dist/components/theme-styles.js +239 -125
  130. package/dist/components/types/appointment.d.ts +42 -0
  131. package/dist/components/types/appointment.js +1 -0
  132. package/dist/components/types/common.d.ts +24 -0
  133. package/dist/components/types/common.js +1 -0
  134. package/dist/components/types/enquiry.d.ts +59 -0
  135. package/dist/components/types/enquiry.js +1 -0
  136. package/dist/components/types/index.d.ts +4 -0
  137. package/dist/components/types/index.js +4 -0
  138. package/dist/components/types.d.ts +1 -52
  139. package/dist/components/types.js +1 -23
  140. package/dist/components/utils/date.d.ts +4 -0
  141. package/dist/components/utils/date.js +65 -0
  142. package/dist/components/utils/formatting.d.ts +4 -0
  143. package/dist/components/utils/formatting.js +9 -0
  144. package/dist/components/utils/index.d.ts +3 -0
  145. package/dist/components/utils/index.js +3 -0
  146. package/dist/components/utils/validation.d.ts +4 -0
  147. package/dist/components/utils/validation.js +37 -0
  148. package/dist/components/utils.d.ts +1 -5
  149. package/dist/components/utils.js +1 -15
  150. package/dist/components/validation.d.ts +1 -2
  151. package/dist/components/validation.js +1 -7
  152. package/dist/constants/index.d.ts +1 -1
  153. package/dist/constants/index.js +1 -1
  154. package/dist/core/theme/index.d.ts +1 -0
  155. package/dist/core/theme/index.js +1 -0
  156. package/dist/core/theme/responsive.d.ts +15 -0
  157. package/dist/core/theme/responsive.js +113 -0
  158. package/dist/core/theme/themes.js +16 -4
  159. package/dist/core/theme/types.d.ts +8 -0
  160. package/dist/index.d.ts +4 -2
  161. package/dist/index.js +2 -1
  162. package/dist/react/ThemeProvider.d.ts +2 -1
  163. package/dist/react/ThemeProvider.js +49 -10
  164. package/dist/react/index.d.ts +3 -3
  165. package/dist/react/index.js +1 -1
  166. package/dist/services/AppointmentService.d.ts +80 -2
  167. package/dist/services/AppointmentService.js +131 -5
  168. package/dist/services/AuthService.js +1 -1
  169. package/dist/services/WorkspaceService.d.ts +58 -3
  170. package/dist/services/WorkspaceService.js +10 -1
  171. package/dist/vanilla/AppointmentCalendarWidget.d.ts +17 -7
  172. package/dist/vanilla/AppointmentCalendarWidget.js +1401 -380
  173. package/dist/vanilla/EnquiryFormWidget.d.ts +1 -0
  174. package/dist/vanilla/EnquiryFormWidget.js +25 -43
  175. package/dist/vanilla/client/MedosClient.d.ts +1 -0
  176. package/dist/vanilla/components/AppointmentConfirmationStep.d.ts +1 -0
  177. package/dist/vanilla/components/AppointmentDateTimeModal.d.ts +1 -0
  178. package/dist/vanilla/components/AppointmentSummaryStep.d.ts +12 -0
  179. package/dist/vanilla/components/BookingOptionStep.d.ts +14 -0
  180. package/dist/vanilla/components/Icons/CloseIcon.d.ts +9 -0
  181. package/dist/vanilla/components/PatientSelectionStep.d.ts +12 -0
  182. package/dist/vanilla/components/VanillaCalendar.js +33 -18
  183. package/dist/vanilla/components/VanillaIcons.d.ts +5 -0
  184. package/dist/vanilla/components/VanillaIcons.js +92 -0
  185. package/dist/vanilla/components/VanillaSelect.d.ts +3 -0
  186. package/dist/vanilla/components/VanillaSelect.js +93 -5
  187. package/dist/vanilla/components/appointment-booking/appointment-modal-styles.d.ts +272 -0
  188. package/dist/vanilla/components/appointment-booking/components/AppointmentConfirmationStep.d.ts +28 -0
  189. package/dist/vanilla/components/appointment-booking/components/AppointmentDateTimeModal.d.ts +18 -0
  190. package/dist/vanilla/components/appointment-booking/components/AppointmentSummaryStep.d.ts +12 -0
  191. package/dist/vanilla/components/appointment-booking/components/BookingOptionStep.d.ts +14 -0
  192. package/dist/vanilla/components/appointment-booking/components/DoctorSelectModal.d.ts +14 -0
  193. package/dist/vanilla/components/appointment-booking/components/PatientDetailsStep.d.ts +3 -0
  194. package/dist/vanilla/components/appointment-booking/components/PatientSelectionStep.d.ts +12 -0
  195. package/dist/vanilla/components/appointment-booking/components/PhoneVerificationStep.d.ts +3 -0
  196. package/dist/vanilla/components/appointment-booking/components/SuccessStep.d.ts +5 -0
  197. package/dist/vanilla/components/appointment-booking/components/index.d.ts +9 -0
  198. package/dist/vanilla/components/appointment-booking/hooks/useAppointmentFlow.d.ts +0 -1
  199. package/dist/vanilla/components/appointment-booking/index.d.ts +2 -4
  200. package/dist/vanilla/components/appointment-booking/types.d.ts +167 -0
  201. package/dist/vanilla/components/appointment-modal-styles.d.ts +259 -0
  202. package/dist/vanilla/components/constant.d.ts +2 -0
  203. package/dist/vanilla/components/constants/constant.d.ts +2 -0
  204. package/dist/vanilla/components/constants/index.d.ts +3 -0
  205. package/dist/vanilla/components/constants/options.d.ts +13 -0
  206. package/dist/vanilla/components/constants/validation.d.ts +6 -0
  207. package/dist/vanilla/components/enquiry-form/EnquiryForm.d.ts +7 -0
  208. package/dist/vanilla/components/enquiry-form/components/ContactInformationStep.d.ts +13 -0
  209. package/dist/vanilla/components/enquiry-form/components/ContactPreferenceStep.d.ts +9 -0
  210. package/dist/vanilla/components/enquiry-form/components/InquiryDetailsStep.d.ts +10 -0
  211. package/dist/vanilla/components/enquiry-form/components/index.d.ts +3 -0
  212. package/dist/vanilla/components/enquiry-form/index.d.ts +2 -0
  213. package/dist/vanilla/components/index.d.ts +7 -3
  214. package/dist/vanilla/components/shared/icons/Check.d.ts +6 -0
  215. package/dist/vanilla/components/shared/icons/ChevronDownIcon.d.ts +4 -0
  216. package/dist/vanilla/components/shared/icons/ChevronLeft.d.ts +3 -0
  217. package/dist/vanilla/components/shared/icons/ChevronRight.d.ts +3 -0
  218. package/dist/vanilla/components/shared/icons/CloseIcon.d.ts +9 -0
  219. package/dist/vanilla/components/shared/icons/ConfirmationCheck.d.ts +1 -0
  220. package/dist/vanilla/components/shared/icons/ConsultationType.d.ts +1 -0
  221. package/dist/vanilla/components/shared/icons/Date&TimeIcon.d.ts +1 -0
  222. package/dist/vanilla/components/shared/icons/MapIcon.d.ts +1 -0
  223. package/dist/vanilla/components/shared/icons/MedosLogo.d.ts +3 -0
  224. package/dist/vanilla/components/shared/icons/PaymentMethodIcon.d.ts +1 -0
  225. package/dist/vanilla/components/shared/icons/SuccessIcon.d.ts +8 -0
  226. package/dist/vanilla/components/shared/icons/UserIcon.d.ts +1 -0
  227. package/dist/vanilla/components/shared/icons/index.d.ts +13 -0
  228. package/dist/vanilla/components/shared/index.d.ts +2 -0
  229. package/dist/vanilla/components/shared/ui/Calendar.d.ts +5 -0
  230. package/dist/vanilla/components/shared/ui/SelectDropdown.d.ts +41 -0
  231. package/dist/vanilla/components/shared/ui/index.d.ts +2 -0
  232. package/dist/vanilla/components/styles/appointment.d.ts +4 -0
  233. package/dist/vanilla/components/styles/enquiry.d.ts +2 -0
  234. package/dist/vanilla/components/styles/index.d.ts +2 -0
  235. package/dist/vanilla/components/styles/shared.d.ts +3 -0
  236. package/dist/vanilla/components/styles.d.ts +1 -6
  237. package/dist/vanilla/components/theme-styles.d.ts +5 -4
  238. package/dist/vanilla/components/types/appointment.d.ts +42 -0
  239. package/dist/vanilla/components/types/common.d.ts +24 -0
  240. package/dist/vanilla/components/types/enquiry.d.ts +59 -0
  241. package/dist/vanilla/components/types/index.d.ts +4 -0
  242. package/dist/vanilla/components/types.d.ts +1 -52
  243. package/dist/vanilla/components/utils/date.d.ts +4 -0
  244. package/dist/vanilla/components/utils/formatting.d.ts +4 -0
  245. package/dist/vanilla/components/utils/index.d.ts +3 -0
  246. package/dist/vanilla/components/utils/validation.d.ts +4 -0
  247. package/dist/vanilla/components/utils.d.ts +1 -5
  248. package/dist/vanilla/components/validation.d.ts +1 -2
  249. package/dist/vanilla/constants/index.d.ts +1 -1
  250. package/dist/vanilla/core/theme/index.d.ts +1 -0
  251. package/dist/vanilla/core/theme/responsive.d.ts +15 -0
  252. package/dist/vanilla/core/theme/types.d.ts +8 -0
  253. package/dist/vanilla/enquiry-widget.js +3632 -90
  254. package/dist/vanilla/index.d.ts +4 -2
  255. package/dist/vanilla/react/ThemeProvider.d.ts +2 -1
  256. package/dist/vanilla/react/index.d.ts +3 -3
  257. package/dist/vanilla/services/AppointmentService.d.ts +80 -2
  258. package/dist/vanilla/services/WorkspaceService.d.ts +58 -3
  259. package/dist/vanilla/vanilla/AppointmentCalendarWidget.d.ts +17 -7
  260. package/dist/vanilla/vanilla/EnquiryFormWidget.d.ts +1 -0
  261. package/dist/vanilla/vanilla/components/VanillaIcons.d.ts +5 -0
  262. package/dist/vanilla/vanilla/components/VanillaSelect.d.ts +3 -0
  263. package/dist/vanilla/widget.css +1045 -205
  264. package/dist/vanilla/widget.js +10365 -5737
  265. package/package.json +2 -2
@@ -1,32 +1,164 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AppointmentDateTimeModal } from "../AppointmentDateTimeModal";
3
- import { DoctorSelectModal } from "../DoctorSelectModal";
4
- import { PhoneVerificationStep } from "../PhoneVerificationStep";
5
- import { PatientDetailsStep } from "../PatientDetailsStep";
6
- import AppointmentConfirmationStep from "../AppointmentConfirmationStep";
2
+ import { AppointmentDateTimeModal, DoctorSelectModal, PhoneVerificationStep, PatientSelectionStep, PatientDetailsStep, AppointmentConfirmationStep, BookingOptionStep, AppointmentSummaryStep, } from "./components";
7
3
  import { useTheme } from "../../react/hooks/useTheme";
8
- import MedosLogo from "../Icons/MedosLogo";
4
+ import { useBreakpoint } from "../../core/theme/responsive";
5
+ import { MedosLogo } from "../shared/icons";
9
6
  import { useAppointmentState, useAppointmentFlow, useInitializeAddresses, } from "./hooks";
10
- import { formatDateToISO } from "../utils";
7
+ import { formatDateToISO } from "../utils/date";
8
+ import { getContainerStyles } from "../theme-styles";
11
9
  export const AppointmentCalender = ({ onError, }) => {
12
10
  const { state, dispatch, setStep, resetForm } = useAppointmentState();
13
- const { goBack, goToNext, handleDateChange, sendOtp, verifyOtp, submitAppointment, } = useAppointmentFlow(state, dispatch, onError);
11
+ const { goBack, handleDateChange, sendOtp, verifyOtp, submitAppointment } = useAppointmentFlow(state, dispatch, onError);
14
12
  useInitializeAddresses(dispatch, onError);
13
+ const handlePhoneVerificationContinue = () => {
14
+ if (state.otpVerified) {
15
+ const activePack = state.userSessionPacks?.find((pack) => pack.remainingSessions > 0);
16
+ const hasAvailablePackages = (state.availablePackages || []).length > 0;
17
+ if (!activePack && !hasAvailablePackages) {
18
+ dispatch({
19
+ type: "SET_BOOKING_OPTION_TYPE",
20
+ payload: "new-appointment",
21
+ });
22
+ dispatch({ type: "SET_BOOKING_TYPE", payload: "ONE_TIME_APPOINTMENT" });
23
+ setStep(2);
24
+ }
25
+ else {
26
+ setStep(1);
27
+ }
28
+ }
29
+ };
30
+ const handleBookingOptionSelect = (optionType, sessionPack, newPackage) => {
31
+ dispatch({ type: "SET_BOOKING_OPTION_TYPE", payload: optionType });
32
+ if (optionType === "session-pack" && sessionPack) {
33
+ dispatch({ type: "SET_SELECTED_SESSION_PACK", payload: sessionPack });
34
+ dispatch({ type: "SET_BOOKING_TYPE", payload: "USE_ACTIVE_PACKAGE" });
35
+ setStep(2);
36
+ }
37
+ else if (optionType === "explore-packages") {
38
+ dispatch({ type: "SET_BOOKING_TYPE", payload: "PACKAGE_PURCHASE" });
39
+ dispatch({ type: "SET_SHOW_PACKAGE_EXPLORER", payload: true });
40
+ }
41
+ else if (optionType === "new-appointment") {
42
+ dispatch({ type: "SET_BOOKING_TYPE", payload: "ONE_TIME_APPOINTMENT" });
43
+ setStep(2);
44
+ }
45
+ };
46
+ const handlePackageSelect = (pkg) => {
47
+ dispatch({ type: "SET_SELECTED_NEW_PACKAGE", payload: pkg });
48
+ dispatch({ type: "SET_PACKAGE_CONFIG_ID", payload: pkg.id });
49
+ const packageAmount = pkg.discountedPrice || pkg.price;
50
+ dispatch({ type: "SET_PACKAGE_AMOUNT", payload: packageAmount });
51
+ dispatch({ type: "SET_BOOKING_TYPE", payload: "PACKAGE_PURCHASE" });
52
+ dispatch({ type: "SET_CONSULTATION_CHARGE", payload: "0" });
53
+ dispatch({ type: "SET_SHOW_PACKAGE_EXPLORER", payload: false });
54
+ setStep(2);
55
+ };
15
56
  const handleDoctorSelect = (addrId, docId) => {
16
57
  dispatch({ type: "SET_SELECTED_ADDRESS", payload: addrId });
17
58
  dispatch({ type: "SET_SELECTED_DOCTOR", payload: docId });
18
- setStep(1);
59
+ setStep(3);
19
60
  };
20
61
  const handleDateTimeModalContinue = (mode, date, slot, charge) => {
21
62
  dispatch({ type: "SET_CONSULTATION_MODE", payload: mode });
22
63
  dispatch({ type: "SET_SELECTED_DATE", payload: date });
23
64
  dispatch({ type: "SET_SELECTED_SLOT", payload: slot });
24
65
  dispatch({ type: "SET_CONSULTATION_CHARGE", payload: charge });
25
- setStep(3);
66
+ setStep(4);
67
+ };
68
+ const handleSelectExistingPatient = (patient) => {
69
+ dispatch({ type: "SET_SELECTED_PATIENT", payload: patient });
70
+ dispatch({ type: "SET_USE_EXISTING_PATIENT", payload: true });
71
+ dispatch({
72
+ type: "SET_PATIENT_NAME",
73
+ payload: `${patient.firstName} ${patient.lastName}`,
74
+ });
75
+ dispatch({ type: "SET_PATIENT_EMAIL", payload: patient.email });
76
+ dispatch({ type: "SET_PATIENT_AGE", payload: patient.age.toString() });
77
+ dispatch({ type: "SET_PATIENT_GENDER", payload: patient.gender });
78
+ dispatch({ type: "SET_BLOOD_GROUP", payload: patient.bloodGroup });
79
+ if (patient.address) {
80
+ dispatch({
81
+ type: "SET_PATIENT_ADDRESS",
82
+ payload: patient.address.addressLine1,
83
+ });
84
+ dispatch({ type: "SET_PATIENT_CITY", payload: patient.address.city });
85
+ dispatch({ type: "SET_PATIENT_STATE", payload: patient.address.state });
86
+ dispatch({
87
+ type: "SET_PATIENT_COUNTRY",
88
+ payload: patient.address.country,
89
+ });
90
+ dispatch({
91
+ type: "SET_PATIENT_ZIPCODE",
92
+ payload: patient.address.zipcode,
93
+ });
94
+ dispatch({
95
+ type: "SET_PATIENT_LANDMARK",
96
+ payload: patient.address.landmark || "",
97
+ });
98
+ }
99
+ setStep(6);
100
+ };
101
+ const handleProceedAsNewPatient = () => {
102
+ dispatch({ type: "SET_SELECTED_PATIENT", payload: null });
103
+ dispatch({ type: "SET_USE_EXISTING_PATIENT", payload: false });
104
+ dispatch({ type: "SET_PATIENT_NAME", payload: "" });
105
+ dispatch({ type: "SET_PATIENT_EMAIL", payload: "" });
106
+ dispatch({ type: "SET_PATIENT_AGE", payload: "" });
107
+ dispatch({ type: "SET_PATIENT_GENDER", payload: "" });
108
+ dispatch({ type: "SET_BLOOD_GROUP", payload: "" });
109
+ dispatch({ type: "SET_PATIENT_ADDRESS", payload: "" });
110
+ dispatch({ type: "SET_PATIENT_CITY", payload: "" });
111
+ dispatch({ type: "SET_PATIENT_STATE", payload: "" });
112
+ dispatch({ type: "SET_PATIENT_COUNTRY", payload: "" });
113
+ dispatch({ type: "SET_PATIENT_ZIPCODE", payload: "" });
114
+ dispatch({ type: "SET_PATIENT_LANDMARK", payload: "" });
115
+ setStep(5);
116
+ };
117
+ const handlePatientDetailsSubmit = async () => {
118
+ setStep(6);
119
+ };
120
+ const handleSummaryConfirm = async () => {
121
+ await submitAppointment();
122
+ };
123
+ const handleGoBack = () => {
124
+ if (state.showPackageExplorer) {
125
+ dispatch({ type: "SET_SHOW_PACKAGE_EXPLORER", payload: false });
126
+ return;
127
+ }
128
+ const currentStep = state.step;
129
+ if (currentStep > 0) {
130
+ if (currentStep === 6 && state.useExistingPatient) {
131
+ dispatch({ type: "SET_SELECTED_PATIENT", payload: null });
132
+ dispatch({ type: "SET_USE_EXISTING_PATIENT", payload: false });
133
+ setStep(4);
134
+ return;
135
+ }
136
+ if (currentStep === 2) {
137
+ dispatch({ type: "SET_BOOKING_OPTION_TYPE", payload: null });
138
+ dispatch({ type: "SET_SELECTED_SESSION_PACK", payload: null });
139
+ dispatch({ type: "SET_SELECTED_NEW_PACKAGE", payload: null });
140
+ const activePack = state.userSessionPacks?.find((pack) => pack.remainingSessions > 0);
141
+ const hasAvailablePackages = (state.availablePackages || []).length > 0;
142
+ if (!activePack && !hasAvailablePackages) {
143
+ setStep(0);
144
+ }
145
+ else {
146
+ setStep(1);
147
+ }
148
+ }
149
+ else {
150
+ setStep(currentStep - 1);
151
+ }
152
+ }
26
153
  };
27
154
  const theme = useTheme();
28
- const styles = getStyles(theme);
29
- return (_jsx("div", { style: styles.container, children: _jsxs("div", { style: styles.card, children: [_jsx("div", { style: styles.header, children: _jsx("h2", { style: styles.title, children: "Book Appointment" }) }), _jsx("hr", {}), _jsxs("div", { style: styles.content, children: [state.loading && _jsx("div", { style: { marginBottom: 12 }, children: "Loading..." }), state.error && _jsx("div", { style: styles.errorMessage, children: state.error }), state.step === 0 && (_jsx(DoctorSelectModal, { addresses: state.addresses, addressDoctorsMap: state.addressDoctorsMap, selectedAddressId: state.selectedAddress, selectedDoctorId: state.selectedDoctor, onCancel: () => setStep(0), onContinue: handleDoctorSelect })), state.step === 1 && (_jsx(AppointmentDateTimeModal, { onlineFee: 500, offlineFee: 300, slots: state.slots, selectedDate: state.selectedDate, selectedSlot: state.selectedSlot, consultationMode: state.consultationMode, onCancel: goBack, onDateChange: handleDateChange, onContinue: handleDateTimeModalContinue })), state.step === 3 && (_jsx(PhoneVerificationStep, { state: state, dispatch: dispatch, onSendOtp: sendOtp, onVerifyOtp: verifyOtp, onBack: goBack, onContinue: goToNext })), state.step === 4 && (_jsx(PatientDetailsStep, { state: state, dispatch: dispatch, onBack: goBack, onSubmit: submitAppointment })), state.step === 5 && (_jsx(AppointmentConfirmationStep, { appointment: {
155
+ const breakpoint = useBreakpoint(theme);
156
+ const styles = getContainerStyles(theme, "medos", breakpoint);
157
+ return (_jsx("div", { style: styles.container, children: _jsxs("div", { style: styles.card, children: [_jsx("div", { style: styles.header, children: _jsx("h2", { style: styles.title, children: "Book Appointment" }) }), _jsx("hr", {}), _jsxs("div", { style: styles.content, children: [state.loading && _jsx("div", { style: { marginBottom: 12 }, children: "Loading..." }), state.error && _jsx("div", { style: styles.errorMessage, children: state.error }), state.step === 0 && (_jsx(PhoneVerificationStep, { state: state, dispatch: dispatch, onSendOtp: sendOtp, onVerifyOtp: verifyOtp, onBack: () => { }, onContinue: handlePhoneVerificationContinue })), state.step === 1 && (_jsx(BookingOptionStep, { userSessionPacks: state.userSessionPacks || [], availablePackages: state.availablePackages || [], showPackageExplorer: state.showPackageExplorer || false, selectedSessionPack: state.selectedSessionPack, selectedNewPackage: state.selectedNewPackage, onSelectOption: handleBookingOptionSelect, onSelectPackage: handlePackageSelect, onBack: handleGoBack })), state.step === 2 && (_jsx(DoctorSelectModal, { addresses: state.addresses, addressDoctorsMap: state.addressDoctorsMap, selectedAddressId: state.selectedAddress, selectedDoctorId: state.selectedDoctor, selectedNewPackage: state.selectedNewPackage, onCancel: handleGoBack, onContinue: handleDoctorSelect })), state.step === 3 && (_jsx(AppointmentDateTimeModal, { onlineFee: 500, offlineFee: 300, slots: state.slots, selectedDate: state.selectedDate, selectedSlot: state.selectedSlot, consultationMode: state.consultationMode, onCancel: handleGoBack, onDateChange: handleDateChange, onContinue: handleDateTimeModalContinue, initialStep: "consultation" })), state.step === 4 && (_jsx(PatientSelectionStep, { verifiedPatients: state.verifiedPatients, selectedPatient: state.selectedPatient, onSelectPatient: handleSelectExistingPatient, onProceedAsNewPatient: handleProceedAsNewPatient, onBack: handleGoBack })), state.step === 5 && (_jsx(PatientDetailsStep, { state: state, dispatch: dispatch, onBack: handleGoBack, onSubmit: handlePatientDetailsSubmit })), state.step === 6 && (_jsx(AppointmentSummaryStep, { state: state, selectedDoctor: state.selectedAddress && state.selectedDoctor
158
+ ? state.addressDoctorsMap[state.selectedAddress]?.find((doc) => doc.id === state.selectedDoctor) || null
159
+ : null, selectedAddress: state.selectedAddress
160
+ ? state.addresses.find((addr) => addr.id === state.selectedAddress) || null
161
+ : null, onBack: handleGoBack, onConfirm: handleSummaryConfirm })), state.step === 7 && (_jsx(AppointmentConfirmationStep, { appointment: {
30
162
  patientName: state.patientName,
31
163
  visitationType: state.consultationMode === "ONLINE"
32
164
  ? "Online Consultation"
@@ -49,59 +181,5 @@ export const AppointmentCalender = ({ onError, }) => {
49
181
  ? state.addressDoctorsMap[state.selectedAddress]?.find((doc) => doc.id === state.selectedDoctor) || null
50
182
  : null, selectedAddress: state.selectedAddress
51
183
  ? state.addresses.find((addr) => addr.id === state.selectedAddress) || null
52
- : null, onClose: resetForm })), _jsxs("div", { style: styles.branding, children: [_jsx("span", { style: styles.poweredBy, children: "Powered by" }), _jsx("a", { href: "https://medos.one", target: "_blank", rel: "noopener noreferrer", children: _jsx(MedosLogo, { style: { height: 50, width: "auto" } }) })] })] })] }) }));
184
+ : null, onClose: resetForm, onGoBackToSlots: () => setStep(3) })), _jsxs("div", { style: styles.branding, children: [_jsx("span", { style: styles.poweredBy, children: "Powered by" }), _jsx("a", { href: "https://medos.one", target: "_blank", rel: "noopener noreferrer", children: _jsx(MedosLogo, { style: { height: 50, width: "auto" } }) })] })] })] }) }));
53
185
  };
54
- const getStyles = (theme) => ({
55
- container: {
56
- display: "flex",
57
- justifyContent: "center",
58
- padding: 20,
59
- fontFamily: theme.typography.fontFamily,
60
- background: theme.colors.background,
61
- },
62
- card: {
63
- width: "100%",
64
- maxWidth: 840,
65
- background: theme.colors.surface,
66
- borderRadius: theme.radii.lg,
67
- boxShadow: theme.shadows.lg,
68
- overflow: "hidden",
69
- boxSizing: "border-box",
70
- },
71
- header: {
72
- padding: "20px 24px",
73
- },
74
- title: {
75
- margin: 0,
76
- fontSize: theme.typography.fontSizeXl,
77
- fontWeight: theme.typography.fontWeightSemibold,
78
- },
79
- content: {
80
- padding: 24,
81
- },
82
- errorMessage: {
83
- marginBottom: 12,
84
- color: theme.colors.error,
85
- fontWeight: 600,
86
- padding: "12px",
87
- background: theme.colors.errorBackground,
88
- borderRadius: theme.radii.md,
89
- border: `1px solid ${theme.colors.errorBorder}`,
90
- fontSize: theme.typography.fontSizeSm,
91
- },
92
- branding: {
93
- display: "flex",
94
- alignItems: "center",
95
- justifyContent: "center",
96
- gap: 8,
97
- marginTop: 24,
98
- paddingTop: 16,
99
- borderTop: `1px solid ${theme.colors.border}`,
100
- opacity: 0.8,
101
- },
102
- poweredBy: {
103
- fontSize: 12,
104
- color: theme.colors.textSecondary,
105
- fontWeight: 500,
106
- },
107
- });
@@ -0,0 +1,272 @@
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
+ width: string;
161
+ boxSizing: "border-box";
162
+ };
163
+ slotGrid: {
164
+ display: string;
165
+ gridTemplateColumns: string;
166
+ gap: number;
167
+ marginTop: number;
168
+ maxHeight: string;
169
+ overflowY: "auto";
170
+ paddingRight: string;
171
+ paddingBottom: string;
172
+ scrollbarWidth: "thin";
173
+ scrollbarColor: string;
174
+ width: string;
175
+ boxSizing: "border-box";
176
+ };
177
+ slotButton: {
178
+ padding: string;
179
+ border: string;
180
+ borderRadius: string;
181
+ backgroundColor: any;
182
+ color: any;
183
+ fontSize: number;
184
+ fontWeight: number;
185
+ cursor: string;
186
+ transition: string;
187
+ minHeight: number;
188
+ boxShadow: string;
189
+ position: "relative";
190
+ letterSpacing: string;
191
+ width: string;
192
+ boxSizing: "border-box";
193
+ textAlign: "center";
194
+ display: string;
195
+ alignItems: string;
196
+ justifyContent: string;
197
+ whiteSpace: "nowrap";
198
+ overflow: string;
199
+ textOverflow: string;
200
+ };
201
+ slotButtonSelected: {
202
+ borderColor: any;
203
+ backgroundColor: any;
204
+ color: any;
205
+ boxShadow: string;
206
+ transform: string;
207
+ };
208
+ noSlots: {
209
+ textAlign: "center";
210
+ color: any;
211
+ fontSize: number;
212
+ marginTop: number;
213
+ padding: string;
214
+ };
215
+ footer: {
216
+ display: string;
217
+ gap: number;
218
+ marginTop: string;
219
+ paddingTop: number;
220
+ borderTop: string;
221
+ };
222
+ backButton: {
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
+ };
235
+ nextButton: {
236
+ flex: number;
237
+ padding: string;
238
+ border: string;
239
+ borderRadius: string;
240
+ backgroundColor: any;
241
+ color: any;
242
+ fontSize: number;
243
+ fontWeight: number;
244
+ cursor: string;
245
+ transition: string;
246
+ minHeight: number;
247
+ boxShadow: string;
248
+ };
249
+ };
250
+ export declare const getDesktopStyles: (theme: any, breakpoint: string) => {
251
+ modalWrapper: React.CSSProperties;
252
+ sectionCard: React.CSSProperties;
253
+ sectionHeader: React.CSSProperties;
254
+ sectionTitle: React.CSSProperties;
255
+ sectionBody: React.CSSProperties;
256
+ label: React.CSSProperties;
257
+ modeContainer: React.CSSProperties;
258
+ radioLabel: React.CSSProperties;
259
+ radioInput: React.CSSProperties;
260
+ rupee: React.CSSProperties;
261
+ dateTimeContainer: React.CSSProperties;
262
+ calendarBox: React.CSSProperties;
263
+ timesContainer: React.CSSProperties;
264
+ timesLabel: React.CSSProperties;
265
+ dateLabel: React.CSSProperties;
266
+ noSlots: React.CSSProperties;
267
+ slotGrid: React.CSSProperties;
268
+ slotButton: React.CSSProperties;
269
+ footer: React.CSSProperties;
270
+ backBtn: React.CSSProperties;
271
+ continueBtn: React.CSSProperties;
272
+ };