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
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { GENDER_OPTIONS, BLOOD_GROUP_OPTIONS } from "../../constants/options";
3
+ import { useTheme } from "../../../react/hooks/useTheme";
4
+ import { useBreakpoint } from "../../../core/theme/responsive";
5
+ import { getButtonStyles, getPatientDetailsStyles, getContainerStyles, } from "../../theme-styles";
6
+ import { UserIcon, MapPinIcon } from "../../shared/icons";
7
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "../../shared/ui/SelectDropdown";
8
+ export const PatientDetailsStep = ({ state, dispatch, onBack, onSubmit, isFirstStep = false, }) => {
9
+ const theme = useTheme();
10
+ const breakpoint = useBreakpoint(theme);
11
+ const CONTAINER_STYLES = getContainerStyles(theme, "medos", breakpoint);
12
+ const BUTTON_STYLES = getButtonStyles(theme, "medos", breakpoint);
13
+ const isFormValid = state.patientName &&
14
+ state.patientAge &&
15
+ state.patientGender &&
16
+ state.patientAddress &&
17
+ state.patientCity &&
18
+ state.patientState &&
19
+ state.patientCountry &&
20
+ state.patientZipcode &&
21
+ state.otpVerified;
22
+ return (_jsxs("div", { style: CONTAINER_STYLES.section, children: [_jsx(PatientInfoSection, { state: state, dispatch: dispatch }), _jsx(AddressInfoSection, { state: state, dispatch: dispatch }), _jsxs("div", { style: {
23
+ ...CONTAINER_STYLES.actions,
24
+ justifyContent: isFirstStep ? "flex-end" : "space-between",
25
+ }, children: [!isFirstStep && (_jsx("button", { style: BUTTON_STYLES.secondary, onClick: onBack, children: "Back" })), _jsx("button", { style: {
26
+ ...BUTTON_STYLES.primary,
27
+ opacity: isFormValid ? 1 : 0.6,
28
+ }, disabled: !isFormValid || state.loading, onClick: onSubmit, children: state.loading ? "Booking..." : "Continue" })] })] }));
29
+ };
30
+ const PatientInfoSection = ({ state, dispatch }) => {
31
+ const theme = useTheme();
32
+ const breakpoint = useBreakpoint(theme);
33
+ const PATIENT_DETAILS_STYLES = getPatientDetailsStyles(theme, "medos", breakpoint);
34
+ const firstName = state.patientName.split(" ")[0] || "";
35
+ const lastName = state.patientName.split(" ").slice(1).join(" ") || "";
36
+ return (_jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionCard, children: [_jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionHeader, children: [_jsx(UserIcon, {}), _jsx("h3", { style: PATIENT_DETAILS_STYLES.sectionTitle, children: "Patient Information" })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionBody, children: [_jsxs("div", { style: PATIENT_DETAILS_STYLES.gridRow, children: [_jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["First Name ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "Jane", value: firstName, onChange: (e) => {
37
+ dispatch({
38
+ type: "SET_PATIENT_NAME",
39
+ payload: `${e.target.value} ${lastName}`,
40
+ });
41
+ } })] }), _jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Last Name ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "Doe", value: lastName, onChange: (e) => {
42
+ dispatch({
43
+ type: "SET_PATIENT_NAME",
44
+ payload: `${firstName} ${e.target.value}`,
45
+ });
46
+ } })] })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.gridRow, children: [_jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Age ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, type: "number", placeholder: "25", value: state.patientAge || "", min: "0", max: "120", onChange: (e) => {
47
+ const val = e.target.value;
48
+ if (val === "") {
49
+ dispatch({
50
+ type: "SET_PATIENT_AGE",
51
+ payload: "",
52
+ });
53
+ return;
54
+ }
55
+ const age = parseInt(val);
56
+ if (!isNaN(age) && age >= 0 && age <= 120) {
57
+ dispatch({
58
+ type: "SET_PATIENT_AGE",
59
+ payload: val,
60
+ });
61
+ }
62
+ } })] }), _jsxs("div", { children: [_jsx("label", { style: PATIENT_DETAILS_STYLES.label, children: "Email" }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, type: "email", placeholder: "jane@example.com (optional)", value: state.patientEmail, onChange: (e) => dispatch({
63
+ type: "SET_PATIENT_EMAIL",
64
+ payload: e.target.value,
65
+ }) })] })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.gridRow, children: [_jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Gender ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsxs(Select, { value: state.patientGender, onValueChange: (value) => dispatch({
66
+ type: "SET_PATIENT_GENDER",
67
+ payload: value,
68
+ }), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Select gender" }) }), _jsx(SelectContent, { children: GENDER_OPTIONS.map((option) => (_jsx(SelectItem, { value: option.value, children: option.label }, option.value))) })] })] }), _jsxs("div", { children: [_jsx("label", { style: PATIENT_DETAILS_STYLES.label, children: "Blood Group" }), _jsxs(Select, { value: state.bloodGroup, onValueChange: (value) => dispatch({
69
+ type: "SET_BLOOD_GROUP",
70
+ payload: value,
71
+ }), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Select blood group (optional)" }) }), _jsx(SelectContent, { children: BLOOD_GROUP_OPTIONS.map((option) => (_jsx(SelectItem, { value: option.value, children: option.label }, option.value))) })] })] })] })] })] }));
72
+ };
73
+ const AddressInfoSection = ({ state, dispatch }) => {
74
+ const theme = useTheme();
75
+ const breakpoint = useBreakpoint(theme);
76
+ const PATIENT_DETAILS_STYLES = getPatientDetailsStyles(theme, "medos", breakpoint);
77
+ return (_jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionCard, children: [_jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionHeader, children: [_jsx(MapPinIcon, {}), _jsx("h3", { style: PATIENT_DETAILS_STYLES.sectionTitle, children: "Address Information" })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.sectionBody, children: [_jsxs("div", { style: { marginBottom: 20 }, children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Address ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "123 Main Street", value: state.patientAddress, onChange: (e) => dispatch({
78
+ type: "SET_PATIENT_ADDRESS",
79
+ payload: e.target.value,
80
+ }) })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.gridRow, children: [_jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["City ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "New York", value: state.patientCity, onChange: (e) => dispatch({
81
+ type: "SET_PATIENT_CITY",
82
+ payload: e.target.value,
83
+ }) })] }), _jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["State ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "NY", value: state.patientState, onChange: (e) => dispatch({
84
+ type: "SET_PATIENT_STATE",
85
+ payload: e.target.value,
86
+ }) })] })] }), _jsxs("div", { style: PATIENT_DETAILS_STYLES.gridRow, children: [_jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Country ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "United States", value: state.patientCountry, onChange: (e) => dispatch({
87
+ type: "SET_PATIENT_COUNTRY",
88
+ payload: e.target.value,
89
+ }) })] }), _jsxs("div", { children: [_jsxs("label", { style: PATIENT_DETAILS_STYLES.label, children: ["Zipcode ", _jsx("span", { style: { color: "#EF4444" }, children: "*" })] }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "10001", value: state.patientZipcode, onChange: (e) => dispatch({
90
+ type: "SET_PATIENT_ZIPCODE",
91
+ payload: e.target.value,
92
+ }) })] })] }), _jsxs("div", { style: { marginTop: 20 }, children: [_jsx("label", { style: PATIENT_DETAILS_STYLES.label, children: "Landmark" }), _jsx("input", { style: PATIENT_DETAILS_STYLES.input, placeholder: "Near Central Park", value: state.patientLandmark, onChange: (e) => dispatch({
93
+ type: "SET_PATIENT_LANDMARK",
94
+ payload: e.target.value,
95
+ }) })] })] })] }));
96
+ };
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { Patient } from "../types";
3
+ interface PatientSelectionStepProps {
4
+ verifiedPatients: Patient[];
5
+ selectedPatient: Patient | null;
6
+ onSelectPatient: (patient: Patient) => void;
7
+ onProceedAsNewPatient: () => void;
8
+ onBack: () => void;
9
+ isFirstStep?: boolean;
10
+ }
11
+ export declare const PatientSelectionStep: React.FC<PatientSelectionStepProps>;
12
+ export {};
@@ -0,0 +1,254 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { useTheme } from "../../../react/hooks/useTheme";
4
+ import { getButtonStyles } from "../../theme-styles";
5
+ export const PatientSelectionStep = ({ verifiedPatients, selectedPatient, onSelectPatient, onProceedAsNewPatient, onBack, isFirstStep = false, }) => {
6
+ const theme = useTheme();
7
+ const BUTTON_STYLES = getButtonStyles(theme);
8
+ const styles = getPatientSelectionStyles(theme);
9
+ const [tempSelection, setTempSelection] = React.useState(null);
10
+ const handlePatientSelect = (patient) => {
11
+ setTempSelection({ type: "existing", patient });
12
+ };
13
+ const handleNewPatientSelect = () => {
14
+ setTempSelection({ type: "new" });
15
+ };
16
+ const handleNext = () => {
17
+ if (tempSelection) {
18
+ if (tempSelection.type === "existing" && tempSelection.patient) {
19
+ onSelectPatient(tempSelection.patient);
20
+ }
21
+ else if (tempSelection.type === "new") {
22
+ onProceedAsNewPatient();
23
+ }
24
+ }
25
+ };
26
+ return (_jsxs("div", { style: styles.container, children: [_jsxs("div", { style: styles.header, children: [_jsx("h3", { style: styles.title, children: "Select Patient" }), verifiedPatients.length > 0 ? (_jsxs("p", { style: styles.subtitle, children: ["We found ", verifiedPatients.length, " registered patient", verifiedPatients.length > 1 ? "s" : "", " with this number"] })) : (_jsx("p", { style: styles.subtitle, children: "No registered patients found with this number" }))] }), _jsxs("div", { style: styles.content, children: [verifiedPatients.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { style: styles.patientList, children: verifiedPatients.map((patient) => (_jsx(PatientCard, { patient: patient, isSelected: tempSelection?.type === "existing" &&
27
+ tempSelection?.patient?.id === patient.id, onSelect: () => handlePatientSelect(patient), theme: theme }, patient.id))) }), _jsx("div", { style: styles.divider, children: _jsx("span", { style: styles.dividerText, children: "OR" }) })] })), _jsxs("button", { style: {
28
+ ...styles.newPatientButton,
29
+ ...(tempSelection?.type === "new"
30
+ ? styles.newPatientButtonSelected
31
+ : {}),
32
+ }, onClick: handleNewPatientSelect, children: [_jsx("div", { style: styles.newPatientIcon, children: "+" }), _jsxs("div", { style: styles.newPatientContent, children: [_jsx("div", { style: styles.newPatientTitle, children: "Register as New Patient" }), _jsx("div", { style: styles.newPatientSubtitle, children: "Fill out the form to create a new patient profile" })] })] })] }), _jsxs("div", { style: {
33
+ ...styles.footer,
34
+ justifyContent: "flex-end",
35
+ }, children: [!isFirstStep && (_jsx("button", { style: BUTTON_STYLES.secondary, onClick: onBack, children: "Back" })), _jsx("button", { style: {
36
+ ...BUTTON_STYLES.primary,
37
+ opacity: tempSelection ? 1 : 0.6,
38
+ }, onClick: handleNext, disabled: !tempSelection, children: "Next" })] })] }));
39
+ };
40
+ const PatientCard = ({ patient, isSelected, onSelect, theme }) => {
41
+ const styles = getPatientCardStyles(theme, isSelected);
42
+ const formatDate = (dateStr) => {
43
+ const date = new Date(dateStr);
44
+ return date.toLocaleDateString("en-US", {
45
+ year: "numeric",
46
+ month: "short",
47
+ day: "numeric",
48
+ });
49
+ };
50
+ return (_jsxs("button", { style: styles.card, onClick: onSelect, type: "button", children: [_jsx("div", { style: styles.radioContainer, children: _jsx("div", { style: styles.radio, children: isSelected && _jsx("div", { style: styles.radioInner }) }) }), _jsxs("div", { style: styles.content, children: [_jsxs("div", { style: styles.header, children: [_jsxs("div", { style: styles.name, children: [patient.firstName, " ", patient.lastName] }), _jsxs("div", { style: styles.mrn, children: ["MRN: ", patient.mrn] })] }), _jsxs("div", { style: styles.details, children: [_jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "Email:" }), _jsx("span", { style: styles.detailValue, children: patient.email })] }), _jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "Phone:" }), _jsxs("span", { style: styles.detailValue, children: [patient.countryCode, " ", patient.phoneNumber] })] }), _jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "DOB:" }), _jsx("span", { style: styles.detailValue, children: formatDate(patient.dob) })] }), _jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "Gender:" }), _jsx("span", { style: styles.detailValue, children: patient.gender })] }), _jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "Blood Group:" }), _jsx("span", { style: styles.detailValue, children: patient.bloodGroup })] }), patient.address && (_jsxs("div", { style: styles.detailRow, children: [_jsx("span", { style: styles.detailLabel, children: "Address:" }), _jsxs("span", { style: styles.detailValue, children: [patient.address.city, ", ", patient.address.state] })] }))] })] })] }));
51
+ };
52
+ const getPatientSelectionStyles = (theme) => ({
53
+ container: {
54
+ display: "flex",
55
+ flexDirection: "column",
56
+ height: "100%",
57
+ gap: "20px",
58
+ },
59
+ header: {
60
+ textAlign: "center",
61
+ marginBottom: "4px",
62
+ },
63
+ title: {
64
+ fontSize: "24px",
65
+ fontWeight: "600",
66
+ color: theme.colors.text,
67
+ marginBottom: "8px",
68
+ },
69
+ subtitle: {
70
+ fontSize: "14px",
71
+ color: theme.colors.textSecondary,
72
+ margin: 0,
73
+ },
74
+ content: {
75
+ flex: 1,
76
+ overflowY: "auto",
77
+ display: "flex",
78
+ flexDirection: "column",
79
+ gap: "20px",
80
+ },
81
+ patientList: {
82
+ display: "flex",
83
+ flexDirection: "column",
84
+ gap: "12px",
85
+ },
86
+ divider: {
87
+ display: "flex",
88
+ alignItems: "center",
89
+ textAlign: "center",
90
+ margin: "16px 0",
91
+ position: "relative",
92
+ "&::before": {
93
+ content: '""',
94
+ flex: 1,
95
+ borderBottom: `1px solid ${theme.colors.border}`,
96
+ },
97
+ "&::after": {
98
+ content: '""',
99
+ flex: 1,
100
+ borderBottom: `1px solid ${theme.colors.border}`,
101
+ },
102
+ },
103
+ dividerText: {
104
+ padding: "0 16px",
105
+ color: theme.colors.textSecondary,
106
+ fontSize: "14px",
107
+ fontWeight: "500",
108
+ backgroundColor: theme.colors.background,
109
+ },
110
+ newPatientButton: {
111
+ display: "flex",
112
+ alignItems: "center",
113
+ justifyContent: "center",
114
+ gap: "16px",
115
+ padding: "14px",
116
+ border: `2px dashed ${theme.colors.border}`,
117
+ borderRadius: theme.radii.md,
118
+ background: theme.colors.background,
119
+ cursor: "pointer",
120
+ transition: "all 0.2s ease",
121
+ textAlign: "center",
122
+ "&:hover": {
123
+ borderColor: theme.colors.primary,
124
+ background: `${theme.colors.primary}10`,
125
+ },
126
+ },
127
+ newPatientIcon: {
128
+ width: "48px",
129
+ height: "48px",
130
+ borderRadius: "50%",
131
+ background: theme.colors.primary,
132
+ color: "white",
133
+ display: "flex",
134
+ alignItems: "center",
135
+ justifyContent: "center",
136
+ fontSize: "24px",
137
+ fontWeight: "400",
138
+ flexShrink: 0,
139
+ lineHeight: "1",
140
+ },
141
+ newPatientContent: {
142
+ display: "flex",
143
+ flexDirection: "column",
144
+ alignItems: "center",
145
+ justifyContent: "center",
146
+ textAlign: "center",
147
+ },
148
+ newPatientTitle: {
149
+ fontSize: "16px",
150
+ fontWeight: "600",
151
+ color: theme.colors.text,
152
+ marginBottom: "4px",
153
+ textAlign: "center",
154
+ },
155
+ newPatientSubtitle: {
156
+ fontSize: "14px",
157
+ color: theme.colors.textSecondary,
158
+ textAlign: "center",
159
+ },
160
+ newPatientButtonSelected: {
161
+ borderColor: theme.colors.primary,
162
+ background: `${theme.colors.primary}08`,
163
+ },
164
+ footer: {
165
+ display: "flex",
166
+ justifyContent: "space-between",
167
+ gap: "12px",
168
+ paddingTop: "16px",
169
+ borderTop: `1px solid ${theme.colors.border}`,
170
+ },
171
+ nextBtnDisabled: {
172
+ backgroundColor: theme.colors.textSecondary || "#9ca3af",
173
+ cursor: "not-allowed",
174
+ opacity: 0.6,
175
+ color: "white",
176
+ },
177
+ });
178
+ const getPatientCardStyles = (theme, isSelected) => ({
179
+ card: {
180
+ display: "flex",
181
+ gap: "16px",
182
+ padding: "16px",
183
+ border: `2px solid ${isSelected ? theme.colors.primary : theme.colors.border}`,
184
+ borderRadius: theme.radii.md,
185
+ background: isSelected
186
+ ? `${theme.colors.primary}08`
187
+ : theme.colors.background,
188
+ cursor: "pointer",
189
+ transition: "all 0.2s ease",
190
+ "&:hover": {
191
+ borderColor: theme.colors.primary,
192
+ background: `${theme.colors.primary}05`,
193
+ },
194
+ },
195
+ radioContainer: {
196
+ paddingTop: "2px",
197
+ },
198
+ radio: {
199
+ width: "20px",
200
+ height: "20px",
201
+ borderRadius: "50%",
202
+ border: `2px solid ${isSelected ? theme.colors.primary : theme.colors.border}`,
203
+ display: "flex",
204
+ alignItems: "center",
205
+ justifyContent: "center",
206
+ transition: "all 0.2s ease",
207
+ },
208
+ radioInner: {
209
+ width: "10px",
210
+ height: "10px",
211
+ borderRadius: "50%",
212
+ background: theme.colors.primary,
213
+ },
214
+ content: {
215
+ flex: 1,
216
+ },
217
+ header: {
218
+ display: "flex",
219
+ justifyContent: "space-between",
220
+ alignItems: "center",
221
+ marginBottom: "12px",
222
+ },
223
+ name: {
224
+ fontSize: "18px",
225
+ fontWeight: "600",
226
+ color: theme.colors.text,
227
+ },
228
+ mrn: {
229
+ fontSize: "13px",
230
+ color: theme.colors.textSecondary,
231
+ fontWeight: "500",
232
+ padding: "4px 8px",
233
+ background: theme.colors.border,
234
+ borderRadius: theme.radii.sm,
235
+ },
236
+ details: {
237
+ display: "flex",
238
+ flexDirection: "column",
239
+ gap: "6px",
240
+ },
241
+ detailRow: {
242
+ display: "flex",
243
+ fontSize: "14px",
244
+ gap: "8px",
245
+ },
246
+ detailLabel: {
247
+ color: theme.colors.textSecondary,
248
+ fontWeight: "500",
249
+ minWidth: "100px",
250
+ },
251
+ detailValue: {
252
+ color: theme.colors.text,
253
+ },
254
+ });
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { PhoneVerificationStepProps } from "../../types/appointment";
3
+ export declare const PhoneVerificationStep: React.FC<PhoneVerificationStepProps>;
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { COUNTRY_CODES } from "../../constants/options";
3
+ import { useTheme } from "../../../react/hooks/useTheme";
4
+ import { getButtonStyles, getPhoneVerifyStyles } from "../../theme-styles";
5
+ import { validatePhoneNumber, validateCountryCode, } from "../../utils/validation";
6
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "../../shared/ui/SelectDropdown";
7
+ export const PhoneVerificationStep = ({ state, dispatch, onSendOtp, onVerifyOtp, onBack, onContinue, }) => {
8
+ const theme = useTheme();
9
+ const PHONE_VERIFY_STYLES = getPhoneVerifyStyles(theme);
10
+ const BUTTON_STYLES = getButtonStyles(theme);
11
+ const isPhoneValid = validatePhoneNumber(state.patientPhone) &&
12
+ validateCountryCode(state.countryCode);
13
+ return (_jsxs("div", { style: PHONE_VERIFY_STYLES.container, children: [_jsx("div", { style: PHONE_VERIFY_STYLES.header, children: _jsx("h3", { style: PHONE_VERIFY_STYLES.title, children: "Verify Details" }) }), _jsx("div", { style: PHONE_VERIFY_STYLES.content, children: !state.otpSent ? (_jsx(PhoneInputSection, { countryCode: state.countryCode, patientPhone: state.patientPhone, onCountryCodeChange: (code) => {
14
+ dispatch({ type: "SET_COUNTRY_CODE", payload: code });
15
+ }, onPhoneChange: (phone) => dispatch({ type: "SET_PATIENT_PHONE", payload: phone }) })) : (_jsx(OtpInputSection, { countryCode: state.countryCode, patientPhone: state.patientPhone, otpCode: state.otpCode, otpVerified: state.otpVerified, onOtpChange: (code) => dispatch({ type: "SET_OTP_CODE", payload: code }) })) }), _jsx("div", { style: PHONE_VERIFY_STYLES.footer, children: !state.otpSent ? (_jsxs(_Fragment, { children: [_jsx("button", { style: BUTTON_STYLES.secondary, onClick: onBack, children: "Back" }), _jsx("button", { style: {
16
+ ...BUTTON_STYLES.primary,
17
+ opacity: isPhoneValid ? 1 : 0.6,
18
+ }, disabled: !isPhoneValid || state.otpSending, onClick: onSendOtp, children: state.otpSending ? "Sending..." : "Continue" })] })) : !state.otpVerified ? (_jsxs(_Fragment, { children: [_jsx("button", { style: BUTTON_STYLES.secondary, onClick: () => {
19
+ dispatch({ type: "SET_OTP_SENT", payload: false });
20
+ dispatch({ type: "SET_OTP_CODE", payload: "" });
21
+ }, children: "Change Number" }), _jsx("button", { style: {
22
+ ...BUTTON_STYLES.primary,
23
+ opacity: state.otpCode.length === 6 ? 1 : 0.6,
24
+ }, disabled: state.otpCode.length !== 6 || state.otpVerifying, onClick: onVerifyOtp, children: state.otpVerifying ? "Verifying..." : "Verify OTP" })] })) : (_jsxs(_Fragment, { children: [_jsx("button", { style: BUTTON_STYLES.secondary, onClick: onBack, children: "Back" }), _jsx("button", { style: BUTTON_STYLES.primary, onClick: onContinue, children: "Continue" })] })) })] }));
25
+ };
26
+ const PhoneInputSection = ({ countryCode, patientPhone, onCountryCodeChange, onPhoneChange }) => {
27
+ const theme = useTheme();
28
+ const PHONE_VERIFY_STYLES = getPhoneVerifyStyles(theme);
29
+ const selectedCountry = COUNTRY_CODES.find((c) => c.code === countryCode);
30
+ return (_jsx(_Fragment, { children: _jsxs("div", { style: { marginBottom: 20 }, children: [_jsx("label", { style: PHONE_VERIFY_STYLES.label, children: "Enter Phone Number" }), _jsxs("div", { style: PHONE_VERIFY_STYLES.phoneInputContainer, children: [_jsx("div", { style: { width: 120 }, children: _jsxs(Select, { value: countryCode, onValueChange: onCountryCodeChange, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: selectedCountry?.label || "Code" }) }), _jsx(SelectContent, { children: COUNTRY_CODES.map((item) => (_jsx(SelectItem, { value: item.code, children: item.label }, item.code))) })] }) }), _jsx("input", { type: "tel", style: PHONE_VERIFY_STYLES.phoneInput, placeholder: "0000 000 000", value: patientPhone, onChange: (e) => {
31
+ const value = e.target.value.replace(/\D/g, "");
32
+ onPhoneChange(value);
33
+ }, maxLength: 15 })] })] }) }));
34
+ };
35
+ const OtpInputSection = ({ countryCode, patientPhone, otpCode, otpVerified, onOtpChange }) => {
36
+ const theme = useTheme();
37
+ const PHONE_VERIFY_STYLES = getPhoneVerifyStyles(theme);
38
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { style: { marginBottom: 16 }, children: [_jsx("label", { style: PHONE_VERIFY_STYLES.label, children: "Phone Number" }), _jsxs("div", { style: PHONE_VERIFY_STYLES.phoneDisplay, children: [countryCode, " ", patientPhone] })] }), _jsxs("div", { style: { marginBottom: 20 }, children: [_jsx("label", { style: PHONE_VERIFY_STYLES.label, children: "Enter OTP" }), _jsx("input", { style: {
39
+ ...PHONE_VERIFY_STYLES.otpInput,
40
+ ...(otpVerified ? { opacity: 0.6, pointerEvents: "none" } : {}),
41
+ }, type: "text", placeholder: "Enter 6-digit OTP", value: otpCode, onChange: (e) => {
42
+ if (!otpVerified) {
43
+ const value = e.target.value.replace(/\D/g, "");
44
+ if (value.length <= 6) {
45
+ onOtpChange(value);
46
+ }
47
+ }
48
+ }, maxLength: 6, disabled: otpVerified }), _jsx("div", { style: PHONE_VERIFY_STYLES.otpHint, children: "We've sent a 6-digit code to your phone number" })] }), otpVerified && (_jsxs("div", { style: PHONE_VERIFY_STYLES.successMessage, children: [_jsx("div", { style: PHONE_VERIFY_STYLES.successIcon, children: "\u2713" }), _jsxs("div", { children: [_jsx("div", { style: PHONE_VERIFY_STYLES.successTitle, children: "Phone verified successfully" }), _jsx("div", { style: PHONE_VERIFY_STYLES.successSubtitle, children: "Your phone number has been verified" })] })] }))] }));
49
+ };
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ export interface SuccessStepProps {
3
+ onReset: () => void;
4
+ }
5
+ export declare const SuccessStep: React.FC<SuccessStepProps>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTheme } from "../../../react/hooks/useTheme";
3
+ import { getSuccessStyles, getButtonStyles } from "../../theme-styles";
4
+ export const SuccessStep = ({ onReset }) => {
5
+ const theme = useTheme();
6
+ const SUCCESS_STYLES = getSuccessStyles(theme);
7
+ const BUTTON_STYLES = getButtonStyles(theme);
8
+ return (_jsxs("div", { style: SUCCESS_STYLES.container, children: [_jsx("div", { style: SUCCESS_STYLES.iconContainer, children: _jsx("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: theme.colors.success, strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }) }), _jsxs("div", { style: SUCCESS_STYLES.detailsContainer, children: [_jsx("h3", { style: SUCCESS_STYLES.detailsTitle, children: "Inquiry Submitted Successfully" }), _jsx("p", { style: SUCCESS_STYLES.confirmationNote, children: "Thank you for your inquiry. We will get back to you soon." })] }), _jsx("div", { style: SUCCESS_STYLES.actionContainer, children: _jsx("button", { onClick: onReset, style: BUTTON_STYLES.primary, children: "Submit Another Inquiry" }) })] }));
9
+ };
@@ -0,0 +1,9 @@
1
+ export { PhoneVerificationStep } from "./PhoneVerificationStep";
2
+ export { PatientDetailsStep } from "./PatientDetailsStep";
3
+ export { SuccessStep } from "./SuccessStep";
4
+ export { AppointmentDateTimeModal } from "./AppointmentDateTimeModal";
5
+ export { DoctorSelectModal } from "./DoctorSelectModal";
6
+ export { default as AppointmentConfirmationStep } from "./AppointmentConfirmationStep";
7
+ export { AppointmentSummaryStep } from "./AppointmentSummaryStep";
8
+ export { BookingOptionStep } from "./BookingOptionStep";
9
+ export { PatientSelectionStep } from "./PatientSelectionStep";
@@ -0,0 +1,9 @@
1
+ export { PhoneVerificationStep } from "./PhoneVerificationStep";
2
+ export { PatientDetailsStep } from "./PatientDetailsStep";
3
+ export { SuccessStep } from "./SuccessStep";
4
+ export { AppointmentDateTimeModal } from "./AppointmentDateTimeModal";
5
+ export { DoctorSelectModal } from "./DoctorSelectModal";
6
+ export { default as AppointmentConfirmationStep } from "./AppointmentConfirmationStep";
7
+ export { AppointmentSummaryStep } from "./AppointmentSummaryStep";
8
+ export { BookingOptionStep } from "./BookingOptionStep";
9
+ export { PatientSelectionStep } from "./PatientSelectionStep";
@@ -1,7 +1,6 @@
1
1
  import { AppointmentState } from "../types";
2
2
  export declare const useAppointmentFlow: (state: AppointmentState, dispatch: React.Dispatch<any>, onError?: (error: Error) => void) => {
3
3
  goBack: () => void;
4
- goToNext: () => void;
5
4
  handleDateChange: (date: Date) => Promise<(() => void) | undefined>;
6
5
  sendOtp: () => Promise<void>;
7
6
  verifyOtp: () => Promise<void>;