@hhgtech/hhg-components 1.19.0-beta-7 → 1.19.0

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 (855) hide show
  1. package/README.md +8 -0
  2. package/build/care.js +1 -1
  3. package/build/components/molecules/index.d.ts +0 -2
  4. package/build/components/organisms/navigationLayout/utils.d.ts +0 -2
  5. package/build/components.js +1 -1
  6. package/build/cookieHelper-fc4e507c.js +2 -0
  7. package/build/{cookieHelper-40ab50eb.js.map → cookieHelper-fc4e507c.js.map} +1 -1
  8. package/build/core.js +1 -1
  9. package/build/esm/care.js +1 -1
  10. package/build/esm/components/molecules/index.d.ts +0 -2
  11. package/build/esm/components/organisms/navigationLayout/utils.d.ts +0 -2
  12. package/build/esm/components.js +1 -1
  13. package/build/esm/{cookieHelper-caf76f93.js → cookieHelper-42a68fdf.js} +2 -2
  14. package/build/esm/{cookieHelper-caf76f93.js.map → cookieHelper-42a68fdf.js.map} +1 -1
  15. package/build/esm/core.js +1 -1
  16. package/build/esm/{index-0348b56b.js → index-7084e1a2.js} +2 -2
  17. package/build/esm/{index-0348b56b.js.map → index-7084e1a2.js.map} +1 -1
  18. package/build/esm/index-7c43a515.js +2 -0
  19. package/build/esm/index-7c43a515.js.map +1 -0
  20. package/build/esm/index-f6c281af.js +2 -0
  21. package/build/esm/index-f6c281af.js.map +1 -0
  22. package/build/esm/{index-f799fba8.js → index-fb3aea4c.js} +2 -2
  23. package/build/esm/{index-f799fba8.js.map → index-fb3aea4c.js.map} +1 -1
  24. package/build/esm/index.js +1 -1
  25. package/build/esm/{index.styled-64f8f6e8.js → index.styled-4d602105.js} +2 -2
  26. package/build/esm/{index.styled-64f8f6e8.js.map → index.styled-4d602105.js.map} +1 -1
  27. package/build/esm/misc/utils.d.ts +5 -53
  28. package/build/esm/navigation.js +1 -1
  29. package/build/esm/together.js +1 -1
  30. package/build/esm/{types-5c8ce743.js → types-2d902fee.js} +2 -2
  31. package/build/esm/{types-5c8ce743.js.map → types-2d902fee.js.map} +1 -1
  32. package/build/esm/types-91439763.js +2 -0
  33. package/build/esm/types-91439763.js.map +1 -0
  34. package/build/esm/useTranslations-f3eec98c.js +2 -0
  35. package/build/esm/useTranslations-f3eec98c.js.map +1 -0
  36. package/build/index-205e279e.js +2 -0
  37. package/build/index-205e279e.js.map +1 -0
  38. package/build/index-21ad911e.js +2 -0
  39. package/build/index-21ad911e.js.map +1 -0
  40. package/build/{index-8b1e9d3e.js → index-b3a14f60.js} +2 -2
  41. package/build/{index-8b1e9d3e.js.map → index-b3a14f60.js.map} +1 -1
  42. package/build/{index-eed59e93.js → index-f951cab2.js} +2 -2
  43. package/build/{index-eed59e93.js.map → index-f951cab2.js.map} +1 -1
  44. package/build/index.js +1 -1
  45. package/build/{index.styled-89837cca.js → index.styled-e5088bb1.js} +2 -2
  46. package/build/{index.styled-89837cca.js.map → index.styled-e5088bb1.js.map} +1 -1
  47. package/build/misc/utils.d.ts +5 -53
  48. package/build/navigation.js +1 -1
  49. package/build/together.js +1 -1
  50. package/build/{types-5985800a.js → types-06d1c33e.js} +2 -2
  51. package/build/{types-5985800a.js.map → types-06d1c33e.js.map} +1 -1
  52. package/build/types-9b704e38.js +2 -0
  53. package/build/types-9b704e38.js.map +1 -0
  54. package/build/useTranslations-41d2f908.js +2 -0
  55. package/build/useTranslations-41d2f908.js.map +1 -0
  56. package/package.json +9 -9
  57. package/.eslintrc.json +0 -53
  58. package/build/components/molecules/dateRangePicker/calendar/index.d.ts +0 -9
  59. package/build/components/molecules/dateRangePicker/calendar/index.styled.d.ts +0 -13
  60. package/build/components/molecules/dateRangePicker/index.d.ts +0 -13
  61. package/build/components/molecules/dateRangePicker/index.styled.d.ts +0 -2
  62. package/build/components/molecules/dateRangePicker/types.d.ts +0 -4
  63. package/build/components/molecules/dateRangePicker/utils.d.ts +0 -2
  64. package/build/cookieHelper-40ab50eb.js +0 -2
  65. package/build/esm/components/molecules/dateRangePicker/calendar/index.d.ts +0 -9
  66. package/build/esm/components/molecules/dateRangePicker/calendar/index.styled.d.ts +0 -13
  67. package/build/esm/components/molecules/dateRangePicker/index.d.ts +0 -13
  68. package/build/esm/components/molecules/dateRangePicker/index.styled.d.ts +0 -2
  69. package/build/esm/components/molecules/dateRangePicker/types.d.ts +0 -4
  70. package/build/esm/components/molecules/dateRangePicker/utils.d.ts +0 -2
  71. package/build/esm/index-680f53de.js +0 -2
  72. package/build/esm/index-680f53de.js.map +0 -1
  73. package/build/esm/index-dda5ff2a.js +0 -2
  74. package/build/esm/index-dda5ff2a.js.map +0 -1
  75. package/build/esm/types-26f12b26.js +0 -2
  76. package/build/esm/types-26f12b26.js.map +0 -1
  77. package/build/esm/useOutsideClick-6004483a.js +0 -2
  78. package/build/esm/useOutsideClick-6004483a.js.map +0 -1
  79. package/build/esm/useTranslations-0c13f2cb.js +0 -2
  80. package/build/esm/useTranslations-0c13f2cb.js.map +0 -1
  81. package/build/index-4fa610b1.js +0 -2
  82. package/build/index-4fa610b1.js.map +0 -1
  83. package/build/index-5b032a36.js +0 -2
  84. package/build/index-5b032a36.js.map +0 -1
  85. package/build/types-df74aec0.js +0 -2
  86. package/build/types-df74aec0.js.map +0 -1
  87. package/build/useOutsideClick-528bfd6c.js +0 -2
  88. package/build/useOutsideClick-528bfd6c.js.map +0 -1
  89. package/build/useTranslations-29326df5.js +0 -2
  90. package/build/useTranslations-29326df5.js.map +0 -1
  91. package/src/assets/svg/Spotlight.svg +0 -12
  92. package/src/assets/svg/StarEmptyIcon.tsx +0 -19
  93. package/src/assets/svg/StarFullIcon.tsx +0 -21
  94. package/src/assets/svg/StarHalfIcon.tsx +0 -35
  95. package/src/assets/svg/arrowDoor.svg +0 -9
  96. package/src/assets/svg/calendar.svg +0 -3
  97. package/src/assets/svg/calendarArrowLeft.svg +0 -3
  98. package/src/assets/svg/calendarArrowRight.svg +0 -3
  99. package/src/assets/svg/check.svg +0 -3
  100. package/src/assets/svg/chevronDown.svg +0 -3
  101. package/src/assets/svg/chevronRight.svg +0 -3
  102. package/src/assets/svg/chevronRightActive.svg +0 -3
  103. package/src/assets/svg/chevronRightWhite.svg +0 -3
  104. package/src/assets/svg/chevronUpBlue.svg +0 -3
  105. package/src/assets/svg/closeLight.svg +0 -4
  106. package/src/assets/svg/closeWhite.svg +0 -4
  107. package/src/assets/svg/community.svg +0 -1
  108. package/src/assets/svg/discover.png +0 -0
  109. package/src/assets/svg/facebook.svg +0 -4
  110. package/src/assets/svg/hamburgerMenu.svg +0 -5
  111. package/src/assets/svg/hamburgerMenuNew.svg +0 -1
  112. package/src/assets/svg/hamburgerMenuNewWithSearch.svg +0 -1
  113. package/src/assets/svg/healthTools.png +0 -0
  114. package/src/assets/svg/helloCare-thumbnail.png +0 -0
  115. package/src/assets/svg/index.ts +0 -63
  116. package/src/assets/svg/info-light.svg +0 -5
  117. package/src/assets/svg/instagram.svg +0 -1
  118. package/src/assets/svg/linkedin.svg +0 -1
  119. package/src/assets/svg/lock.png +0 -0
  120. package/src/assets/svg/login.svg +0 -1
  121. package/src/assets/svg/sehat-badge.png +0 -0
  122. package/src/assets/svg/together.png +0 -0
  123. package/src/assets/svg/youtube.svg +0 -4
  124. package/src/assets/svg/zalo.png +0 -0
  125. package/src/cache/core.ts +0 -52
  126. package/src/cache/index.ts +0 -1
  127. package/src/care/api/paths.ts +0 -11
  128. package/src/care/api/utils.ts +0 -32
  129. package/src/care/components/atoms/icons/index.tsx +0 -170
  130. package/src/care/components/organisms/bookingSearchBar/constants.ts +0 -9
  131. package/src/care/components/organisms/bookingSearchBar/index.stories.tsx +0 -127
  132. package/src/care/components/organisms/bookingSearchBar/index.styled.ts +0 -51
  133. package/src/care/components/organisms/bookingSearchBar/index.test.tsx +0 -556
  134. package/src/care/components/organisms/bookingSearchBar/index.tsx +0 -448
  135. package/src/care/components/organisms/bookingSearchBar/locationResults/index.styled.ts +0 -94
  136. package/src/care/components/organisms/bookingSearchBar/locationResults/index.tsx +0 -132
  137. package/src/care/components/organisms/bookingSearchBar/locationResults/liSkeleton.tsx +0 -52
  138. package/src/care/components/organisms/bookingSearchBar/mobileFakeInput/index.tsx +0 -68
  139. package/src/care/components/organisms/bookingSearchBar/mobileTopbar/index.stories.tsx +0 -22
  140. package/src/care/components/organisms/bookingSearchBar/mobileTopbar/index.styled.ts +0 -41
  141. package/src/care/components/organisms/bookingSearchBar/mobileTopbar/index.tsx +0 -48
  142. package/src/care/components/organisms/bookingSearchBar/reducer.ts +0 -293
  143. package/src/care/components/organisms/bookingSearchBar/resultSection/icons.tsx +0 -37
  144. package/src/care/components/organisms/bookingSearchBar/resultSection/index.stories.tsx +0 -155
  145. package/src/care/components/organisms/bookingSearchBar/resultSection/index.styled.ts +0 -89
  146. package/src/care/components/organisms/bookingSearchBar/resultSection/index.tsx +0 -234
  147. package/src/care/components/organisms/bookingSearchBar/resultSectionItem/index.stories.tsx +0 -55
  148. package/src/care/components/organisms/bookingSearchBar/resultSectionItem/index.styled.ts +0 -75
  149. package/src/care/components/organisms/bookingSearchBar/resultSectionItem/index.tsx +0 -86
  150. package/src/care/components/organisms/bookingSearchBar/searchInputs/index.styled.ts +0 -42
  151. package/src/care/components/organisms/bookingSearchBar/searchInputs/index.tsx +0 -219
  152. package/src/care/components/organisms/bookingSearchBar/searchResults/index.stories.tsx +0 -55
  153. package/src/care/components/organisms/bookingSearchBar/searchResults/index.tsx +0 -62
  154. package/src/care/components/organisms/bookingSearchBar/searchResults/mockData.ts +0 -169
  155. package/src/care/components/organisms/bookingSearchBar/searchSubmitIcon/index.tsx +0 -73
  156. package/src/care/components/organisms/bookingSearchBar/types.ts +0 -12
  157. package/src/care/components/organisms/bookingSearchBar/useAnimatedPlaceholder.ts +0 -86
  158. package/src/care/components/organisms/bookingSearchBar/useSearchBarApi.ts +0 -150
  159. package/src/care/components/organisms/bookingSearchBar/utils/Typewriter.ts +0 -437
  160. package/src/care/index.ts +0 -6
  161. package/src/care/interfaces/constants.ts +0 -75
  162. package/src/care/interfaces/types.ts +0 -258
  163. package/src/components/atoms/alert/__snapshots__/index.test.tsx.snap +0 -130
  164. package/src/components/atoms/alert/index.stories.tsx +0 -21
  165. package/src/components/atoms/alert/index.styled.tsx +0 -44
  166. package/src/components/atoms/alert/index.test.tsx +0 -28
  167. package/src/components/atoms/alert/index.tsx +0 -47
  168. package/src/components/atoms/avatar/index.stories.tsx +0 -49
  169. package/src/components/atoms/avatar/index.styled.tsx +0 -96
  170. package/src/components/atoms/avatar/index.tsx +0 -91
  171. package/src/components/atoms/badge/__snapshots__/index.test.tsx.snap +0 -61
  172. package/src/components/atoms/badge/index.stories.tsx +0 -71
  173. package/src/components/atoms/badge/index.styled.tsx +0 -138
  174. package/src/components/atoms/badge/index.test.tsx +0 -27
  175. package/src/components/atoms/badge/index.tsx +0 -45
  176. package/src/components/atoms/borderHeading/index.stories.tsx +0 -38
  177. package/src/components/atoms/borderHeading/index.styled.tsx +0 -50
  178. package/src/components/atoms/borderHeading/index.tsx +0 -39
  179. package/src/components/atoms/button/__snapshots__/index.test.tsx.snap +0 -57
  180. package/src/components/atoms/button/index.stories.tsx +0 -107
  181. package/src/components/atoms/button/index.styled.tsx +0 -335
  182. package/src/components/atoms/button/index.test.tsx +0 -25
  183. package/src/components/atoms/button/index.tsx +0 -207
  184. package/src/components/atoms/checkbox/__snapshots__/index.test.tsx.snap +0 -120
  185. package/src/components/atoms/checkbox/index.stories.tsx +0 -30
  186. package/src/components/atoms/checkbox/index.styled.tsx +0 -90
  187. package/src/components/atoms/checkbox/index.test.tsx +0 -31
  188. package/src/components/atoms/checkbox/index.tsx +0 -48
  189. package/src/components/atoms/container/index.styled.tsx +0 -16
  190. package/src/components/atoms/container/index.tsx +0 -21
  191. package/src/components/atoms/displayWrapper/index.styled.tsx +0 -19
  192. package/src/components/atoms/displayWrapper/index.tsx +0 -66
  193. package/src/components/atoms/divider/__snapshots__/index.test.tsx.snap +0 -14
  194. package/src/components/atoms/divider/index.stories.tsx +0 -19
  195. package/src/components/atoms/divider/index.styled.tsx +0 -10
  196. package/src/components/atoms/divider/index.test.tsx +0 -22
  197. package/src/components/atoms/divider/index.tsx +0 -34
  198. package/src/components/atoms/fileDropdown/__snapshots__/index.test.tsx.snap +0 -143
  199. package/src/components/atoms/fileDropdown/index.stories.tsx +0 -41
  200. package/src/components/atoms/fileDropdown/index.styled.tsx +0 -112
  201. package/src/components/atoms/fileDropdown/index.test.tsx +0 -46
  202. package/src/components/atoms/fileDropdown/index.tsx +0 -200
  203. package/src/components/atoms/flag/__snapshots__/index.test.tsx.snap +0 -59
  204. package/src/components/atoms/flag/icons/cambodia.tsx +0 -24
  205. package/src/components/atoms/flag/icons/english.tsx +0 -195
  206. package/src/components/atoms/flag/icons/india.tsx +0 -24
  207. package/src/components/atoms/flag/icons/indonesia.tsx +0 -55
  208. package/src/components/atoms/flag/icons/malaysia.tsx +0 -89
  209. package/src/components/atoms/flag/icons/myanmar.tsx +0 -105
  210. package/src/components/atoms/flag/icons/philippines.tsx +0 -24
  211. package/src/components/atoms/flag/icons/taiwan.tsx +0 -154
  212. package/src/components/atoms/flag/icons/thailand.tsx +0 -55
  213. package/src/components/atoms/flag/icons/vietnam.tsx +0 -57
  214. package/src/components/atoms/flag/index.stories.tsx +0 -30
  215. package/src/components/atoms/flag/index.styled.tsx +0 -18
  216. package/src/components/atoms/flag/index.test.tsx +0 -21
  217. package/src/components/atoms/flag/index.tsx +0 -150
  218. package/src/components/atoms/grid/__snapshots__/index.test.tsx.snap +0 -38
  219. package/src/components/atoms/grid/index.stories.tsx +0 -50
  220. package/src/components/atoms/grid/index.styled.tsx +0 -34
  221. package/src/components/atoms/grid/index.test.tsx +0 -26
  222. package/src/components/atoms/grid/index.tsx +0 -61
  223. package/src/components/atoms/heading/__snapshots__/index.test.tsx.snap +0 -38
  224. package/src/components/atoms/heading/index.stories.tsx +0 -27
  225. package/src/components/atoms/heading/index.styled.tsx +0 -108
  226. package/src/components/atoms/heading/index.test.tsx +0 -23
  227. package/src/components/atoms/heading/index.tsx +0 -59
  228. package/src/components/atoms/icons/Ask.tsx +0 -54
  229. package/src/components/atoms/icons/BarChart.tsx +0 -39
  230. package/src/components/atoms/icons/Booking.tsx +0 -37
  231. package/src/components/atoms/icons/Bookmark.tsx +0 -44
  232. package/src/components/atoms/icons/Community.tsx +0 -46
  233. package/src/components/atoms/icons/EditSpecial.tsx +0 -30
  234. package/src/components/atoms/icons/Family.tsx +0 -37
  235. package/src/components/atoms/icons/Font.tsx +0 -37
  236. package/src/components/atoms/icons/Heart.tsx +0 -37
  237. package/src/components/atoms/icons/Home.tsx +0 -54
  238. package/src/components/atoms/icons/Like.tsx +0 -49
  239. package/src/components/atoms/icons/MyCommunity.tsx +0 -37
  240. package/src/components/atoms/icons/PlusSpecial.tsx +0 -30
  241. package/src/components/atoms/icons/Recalculate.tsx +0 -37
  242. package/src/components/atoms/icons/Scale.tsx +0 -44
  243. package/src/components/atoms/icons/Share.tsx +0 -37
  244. package/src/components/atoms/icons/Stethoscope.tsx +0 -37
  245. package/src/components/atoms/icons/index.stories.tsx +0 -50
  246. package/src/components/atoms/icons/index.ts +0 -46
  247. package/src/components/atoms/index.ts +0 -33
  248. package/src/components/atoms/input/__snapshots__/index.test.tsx.snap +0 -137
  249. package/src/components/atoms/input/delete.svg +0 -3
  250. package/src/components/atoms/input/index.stories.tsx +0 -50
  251. package/src/components/atoms/input/index.styled.tsx +0 -124
  252. package/src/components/atoms/input/index.test.tsx +0 -23
  253. package/src/components/atoms/input/index.tsx +0 -140
  254. package/src/components/atoms/label/__snapshots__/index.test.tsx.snap +0 -21
  255. package/src/components/atoms/label/index.stories.tsx +0 -16
  256. package/src/components/atoms/label/index.test.tsx +0 -25
  257. package/src/components/atoms/label/index.tsx +0 -37
  258. package/src/components/atoms/logo/__snapshots__/index.test.tsx.snap +0 -99
  259. package/src/components/atoms/logo/index.stories.tsx +0 -84
  260. package/src/components/atoms/logo/index.test.tsx +0 -18
  261. package/src/components/atoms/logo/index.tsx +0 -1915
  262. package/src/components/atoms/marryBabyText/index.styled.tsx +0 -86
  263. package/src/components/atoms/marryBabyText/index.tsx +0 -57
  264. package/src/components/atoms/pagination/__snapshots__/index.test.tsx.snap +0 -185
  265. package/src/components/atoms/pagination/index.stories.tsx +0 -92
  266. package/src/components/atoms/pagination/index.styled.tsx +0 -73
  267. package/src/components/atoms/pagination/index.test.tsx +0 -26
  268. package/src/components/atoms/pagination/index.tsx +0 -286
  269. package/src/components/atoms/progress/index.stories.tsx +0 -55
  270. package/src/components/atoms/progress/index.styled.tsx +0 -30
  271. package/src/components/atoms/progress/index.tsx +0 -29
  272. package/src/components/atoms/pureInput/__snapshots__/index.test.tsx.snap +0 -135
  273. package/src/components/atoms/pureInput/delete.svg +0 -3
  274. package/src/components/atoms/pureInput/index.stories.tsx +0 -54
  275. package/src/components/atoms/pureInput/index.styled.tsx +0 -123
  276. package/src/components/atoms/pureInput/index.test.tsx +0 -29
  277. package/src/components/atoms/pureInput/index.tsx +0 -162
  278. package/src/components/atoms/radio/__snapshots__/index.test.tsx.snap +0 -163
  279. package/src/components/atoms/radio/index.stories.tsx +0 -48
  280. package/src/components/atoms/radio/index.styled.tsx +0 -133
  281. package/src/components/atoms/radio/index.test.tsx +0 -31
  282. package/src/components/atoms/radio/index.tsx +0 -66
  283. package/src/components/atoms/rateStars/index.stories.tsx +0 -71
  284. package/src/components/atoms/rateStars/index.styled.tsx +0 -17
  285. package/src/components/atoms/rateStars/index.tsx +0 -101
  286. package/src/components/atoms/shadow/__snapshots__/index.test.tsx.snap +0 -37
  287. package/src/components/atoms/shadow/index.stories.tsx +0 -55
  288. package/src/components/atoms/shadow/index.styled.tsx +0 -31
  289. package/src/components/atoms/shadow/index.test.tsx +0 -25
  290. package/src/components/atoms/shadow/index.tsx +0 -20
  291. package/src/components/atoms/slider/__snapshots__/index.test.tsx.snap +0 -172
  292. package/src/components/atoms/slider/index.stories.tsx +0 -22
  293. package/src/components/atoms/slider/index.styled.tsx +0 -68
  294. package/src/components/atoms/slider/index.test.tsx +0 -27
  295. package/src/components/atoms/slider/index.tsx +0 -140
  296. package/src/components/atoms/tag/__snapshots__/index.test.tsx.snap +0 -72
  297. package/src/components/atoms/tag/index.stories.tsx +0 -54
  298. package/src/components/atoms/tag/index.styled.tsx +0 -184
  299. package/src/components/atoms/tag/index.test.tsx +0 -23
  300. package/src/components/atoms/tag/index.tsx +0 -72
  301. package/src/components/atoms/text/index.stories.tsx +0 -24
  302. package/src/components/atoms/text/index.styled.tsx +0 -231
  303. package/src/components/atoms/text/index.tsx +0 -99
  304. package/src/components/atoms/textArea/index.stories.tsx +0 -30
  305. package/src/components/atoms/textArea/index.tsx +0 -86
  306. package/src/components/atoms/textDivider/index.tsx +0 -48
  307. package/src/components/atoms/toggle/__snapshots__/index.test.tsx.snap +0 -73
  308. package/src/components/atoms/toggle/index.stories.tsx +0 -38
  309. package/src/components/atoms/toggle/index.styled.tsx +0 -55
  310. package/src/components/atoms/toggle/index.test.tsx +0 -27
  311. package/src/components/atoms/toggle/index.tsx +0 -28
  312. package/src/components/atoms/underlinedLink/index.stories.tsx +0 -35
  313. package/src/components/atoms/underlinedLink/index.styled.tsx +0 -66
  314. package/src/components/atoms/underlinedLink/index.text.tsx +0 -23
  315. package/src/components/atoms/underlinedLink/index.tsx +0 -30
  316. package/src/components/atoms/uploader/__snapshots__/index.test.tsx.snap +0 -170
  317. package/src/components/atoms/uploader/index.stories.tsx +0 -128
  318. package/src/components/atoms/uploader/index.styled.tsx +0 -53
  319. package/src/components/atoms/uploader/index.test.tsx +0 -96
  320. package/src/components/atoms/uploader/index.tsx +0 -107
  321. package/src/components/index.ts +0 -3
  322. package/src/components/molecules/ampNextPage/index.tsx +0 -48
  323. package/src/components/molecules/articleCard/bookmark.png +0 -0
  324. package/src/components/molecules/articleCard/bookmarked.png +0 -0
  325. package/src/components/molecules/articleCard/index.stories.tsx +0 -222
  326. package/src/components/molecules/articleCard/index.styled.tsx +0 -391
  327. package/src/components/molecules/articleCard/index.tsx +0 -430
  328. package/src/components/molecules/breadcrumbs/__snapshots__/index.test.tsx.snap +0 -173
  329. package/src/components/molecules/breadcrumbs/index.stories.tsx +0 -79
  330. package/src/components/molecules/breadcrumbs/index.styled.tsx +0 -99
  331. package/src/components/molecules/breadcrumbs/index.test.tsx +0 -45
  332. package/src/components/molecules/breadcrumbs/index.tsx +0 -141
  333. package/src/components/molecules/carousel/index.stories.tsx +0 -40
  334. package/src/components/molecules/carousel/index.styled.tsx +0 -115
  335. package/src/components/molecules/carousel/index.tsx +0 -178
  336. package/src/components/molecules/categoryCard/index.stories.tsx +0 -19
  337. package/src/components/molecules/categoryCard/index.styled.tsx +0 -38
  338. package/src/components/molecules/categoryCard/index.tsx +0 -51
  339. package/src/components/molecules/checkboxGroup/__snapshots__/index.test.tsx.snap +0 -214
  340. package/src/components/molecules/checkboxGroup/index.stories.tsx +0 -118
  341. package/src/components/molecules/checkboxGroup/index.styled.tsx +0 -27
  342. package/src/components/molecules/checkboxGroup/index.test.tsx +0 -36
  343. package/src/components/molecules/checkboxGroup/index.tsx +0 -66
  344. package/src/components/molecules/cookieAcceptConfirm/__snapshots__/index.test.tsx.snap +0 -152
  345. package/src/components/molecules/cookieAcceptConfirm/index.stories.tsx +0 -23
  346. package/src/components/molecules/cookieAcceptConfirm/index.styled.tsx +0 -101
  347. package/src/components/molecules/cookieAcceptConfirm/index.test.tsx +0 -23
  348. package/src/components/molecules/cookieAcceptConfirm/index.tsx +0 -78
  349. package/src/components/molecules/cookieAcceptConfirm/info.svg +0 -3
  350. package/src/components/molecules/datePicker/__snapshots__/index.test.tsx.snap +0 -377
  351. package/src/components/molecules/datePicker/index.stories.tsx +0 -55
  352. package/src/components/molecules/datePicker/index.styled.tsx +0 -374
  353. package/src/components/molecules/datePicker/index.test.tsx +0 -46
  354. package/src/components/molecules/datePicker/index.tsx +0 -361
  355. package/src/components/molecules/dateRangePicker/calendar/index.styled.ts +0 -122
  356. package/src/components/molecules/dateRangePicker/calendar/index.tsx +0 -247
  357. package/src/components/molecules/dateRangePicker/index.stories.tsx +0 -45
  358. package/src/components/molecules/dateRangePicker/index.styled.ts +0 -36
  359. package/src/components/molecules/dateRangePicker/index.tsx +0 -103
  360. package/src/components/molecules/dateRangePicker/types.ts +0 -4
  361. package/src/components/molecules/dateRangePicker/utils.ts +0 -26
  362. package/src/components/molecules/doctorInfo/index.stories.tsx +0 -20
  363. package/src/components/molecules/doctorInfo/index.tsx +0 -54
  364. package/src/components/molecules/dropdown/__snapshots__/index.test.tsx.snap +0 -133
  365. package/src/components/molecules/dropdown/index.stories.tsx +0 -158
  366. package/src/components/molecules/dropdown/index.styled.tsx +0 -149
  367. package/src/components/molecules/dropdown/index.test.tsx +0 -45
  368. package/src/components/molecules/dropdown/index.tsx +0 -143
  369. package/src/components/molecules/dropdownSearch/index.stories.tsx +0 -66
  370. package/src/components/molecules/dropdownSearch/index.styled.tsx +0 -157
  371. package/src/components/molecules/dropdownSearch/index.tsx +0 -169
  372. package/src/components/molecules/dropdownSearch/search.svg +0 -4
  373. package/src/components/molecules/floatButtonGroup/add-period.svg +0 -9
  374. package/src/components/molecules/floatButtonGroup/index.stories.tsx +0 -72
  375. package/src/components/molecules/floatButtonGroup/index.styled.tsx +0 -310
  376. package/src/components/molecules/floatButtonGroup/index.tsx +0 -155
  377. package/src/components/molecules/iconText/__snapshots__/index.test.tsx.snap +0 -64
  378. package/src/components/molecules/iconText/index.stories.tsx +0 -22
  379. package/src/components/molecules/iconText/index.styled.tsx +0 -47
  380. package/src/components/molecules/iconText/index.test.tsx +0 -31
  381. package/src/components/molecules/iconText/index.tsx +0 -33
  382. package/src/components/molecules/index.ts +0 -39
  383. package/src/components/molecules/languageSwitcher/index.stories.tsx +0 -32
  384. package/src/components/molecules/languageSwitcher/index.styled.tsx +0 -23
  385. package/src/components/molecules/languageSwitcher/index.tsx +0 -68
  386. package/src/components/molecules/languageSwitcher/tooltipSelection/index.styled.tsx +0 -69
  387. package/src/components/molecules/languageSwitcher/tooltipSelection/index.tsx +0 -84
  388. package/src/components/molecules/mobileBottomNavigation/MobileBottomNavigationIcon.tsx +0 -51
  389. package/src/components/molecules/mobileBottomNavigation/index.stories.tsx +0 -173
  390. package/src/components/molecules/mobileBottomNavigation/index.styled.tsx +0 -150
  391. package/src/components/molecules/mobileBottomNavigation/index.tsx +0 -41
  392. package/src/components/molecules/modal/__snapshots__/index.test.tsx.snap +0 -3
  393. package/src/components/molecules/modal/index.stories.tsx +0 -139
  394. package/src/components/molecules/modal/index.styled.tsx +0 -146
  395. package/src/components/molecules/modal/index.test.tsx +0 -26
  396. package/src/components/molecules/modal/index.tsx +0 -147
  397. package/src/components/molecules/popup/__snapshots__/index.test.tsx.snap +0 -102
  398. package/src/components/molecules/popup/index.stories.tsx +0 -21
  399. package/src/components/molecules/popup/index.styled.tsx +0 -90
  400. package/src/components/molecules/popup/index.test.tsx +0 -26
  401. package/src/components/molecules/popup/index.tsx +0 -45
  402. package/src/components/molecules/progressBar/__snapshots__/index.test.tsx.snap +0 -167
  403. package/src/components/molecules/progressBar/index.stories.tsx +0 -72
  404. package/src/components/molecules/progressBar/index.styled.tsx +0 -182
  405. package/src/components/molecules/progressBar/index.test.tsx +0 -75
  406. package/src/components/molecules/progressBar/index.tsx +0 -245
  407. package/src/components/molecules/radioGroup/__snapshots__/index.test.tsx.snap +0 -290
  408. package/src/components/molecules/radioGroup/index.stories.tsx +0 -131
  409. package/src/components/molecules/radioGroup/index.styled.tsx +0 -75
  410. package/src/components/molecules/radioGroup/index.test.tsx +0 -33
  411. package/src/components/molecules/radioGroup/index.tsx +0 -80
  412. package/src/components/molecules/scrollList/index.stories.tsx +0 -113
  413. package/src/components/molecules/scrollList/index.styled.tsx +0 -140
  414. package/src/components/molecules/scrollList/index.tsx +0 -786
  415. package/src/components/molecules/seoHead/index.tsx +0 -382
  416. package/src/components/molecules/sidemenu/__snapshots__/index.test.tsx.snap +0 -273
  417. package/src/components/molecules/sidemenu/index.stories.tsx +0 -156
  418. package/src/components/molecules/sidemenu/index.test.tsx +0 -56
  419. package/src/components/molecules/sidemenu/index.tsx +0 -4
  420. package/src/components/molecules/sidemenu/menuLink.tsx +0 -78
  421. package/src/components/molecules/sidemenu/sideHeader.tsx +0 -85
  422. package/src/components/molecules/sidemenu/sideMenu.tsx +0 -39
  423. package/src/components/molecules/sidemenu/test.tsx +0 -94
  424. package/src/components/molecules/sidemenu/userInfo.tsx +0 -44
  425. package/src/components/molecules/starsRatingBox/index.stories.tsx +0 -121
  426. package/src/components/molecules/starsRatingBox/index.styled.tsx +0 -23
  427. package/src/components/molecules/starsRatingBox/index.tsx +0 -83
  428. package/src/components/molecules/statisticCard/__snapshots__/index.test.tsx.snap +0 -86
  429. package/src/components/molecules/statisticCard/index.stories.tsx +0 -40
  430. package/src/components/molecules/statisticCard/index.styled.tsx +0 -47
  431. package/src/components/molecules/statisticCard/index.test.tsx +0 -44
  432. package/src/components/molecules/statisticCard/index.tsx +0 -48
  433. package/src/components/molecules/surveyQuestionCard/__snapshots__/index.test.tsx.snap +0 -743
  434. package/src/components/molecules/surveyQuestionCard/index.stories.tsx +0 -115
  435. package/src/components/molecules/surveyQuestionCard/index.styled.tsx +0 -220
  436. package/src/components/molecules/surveyQuestionCard/index.test.tsx +0 -53
  437. package/src/components/molecules/surveyQuestionCard/index.tsx +0 -2
  438. package/src/components/molecules/surveyQuestionCard/surveyQuestionCard.tsx +0 -213
  439. package/src/components/molecules/surveyQuestionCard/surveyQuestionContent.tsx +0 -200
  440. package/src/components/molecules/surveyQuestionCard/surveyRadio.tsx +0 -69
  441. package/src/components/molecules/surveyQuestionCard/surveyThankyouCard.tsx +0 -129
  442. package/src/components/molecules/table/__snapshots__/index.test.tsx.snap +0 -56
  443. package/src/components/molecules/table/index.stories.tsx +0 -264
  444. package/src/components/molecules/table/index.test.tsx +0 -29
  445. package/src/components/molecules/table/index.tsx +0 -5
  446. package/src/components/molecules/table/table.tsx +0 -38
  447. package/src/components/molecules/table/tableBody.tsx +0 -46
  448. package/src/components/molecules/table/tableCell.tsx +0 -47
  449. package/src/components/molecules/table/tableHead.tsx +0 -46
  450. package/src/components/molecules/table/tableRow.tsx +0 -45
  451. package/src/components/molecules/tabs/__snapshots__/index.test.tsx.snap +0 -104
  452. package/src/components/molecules/tabs/index.stories.tsx +0 -45
  453. package/src/components/molecules/tabs/index.styled.tsx +0 -58
  454. package/src/components/molecules/tabs/index.test.tsx +0 -49
  455. package/src/components/molecules/tabs/index.tsx +0 -89
  456. package/src/components/organisms/footer/discoverFooter/index.styled.tsx +0 -286
  457. package/src/components/organisms/footer/discoverFooter/index.tsx +0 -448
  458. package/src/components/organisms/footer/index.stories.tsx +0 -207
  459. package/src/components/organisms/footer/index.tsx +0 -70
  460. package/src/components/organisms/footer/maryBabyFooter/index.styled.tsx +0 -502
  461. package/src/components/organisms/footer/maryBabyFooter/index.tsx +0 -393
  462. package/src/components/organisms/index.ts +0 -31
  463. package/src/components/organisms/navigationBookingButton/index.styled.tsx +0 -11
  464. package/src/components/organisms/navigationBookingButton/index.tsx +0 -53
  465. package/src/components/organisms/navigationLayout/CustomFooter.tsx +0 -154
  466. package/src/components/organisms/navigationLayout/ampSideBar/index.styled.tsx +0 -151
  467. package/src/components/organisms/navigationLayout/ampSideBar/index.tsx +0 -276
  468. package/src/components/organisms/navigationLayout/assets/check.svg +0 -3
  469. package/src/components/organisms/navigationLayout/assets/chevronDown.svg +0 -3
  470. package/src/components/organisms/navigationLayout/assets/chevronRightWhite.svg +0 -3
  471. package/src/components/organisms/navigationLayout/assets/chevronUpBlue.svg +0 -3
  472. package/src/components/organisms/navigationLayout/assets/closeLight.svg +0 -4
  473. package/src/components/organisms/navigationLayout/assets/closeWhite.svg +0 -4
  474. package/src/components/organisms/navigationLayout/assets/hamburgerMenu.svg +0 -5
  475. package/src/components/organisms/navigationLayout/assets/index.js +0 -19
  476. package/src/components/organisms/navigationLayout/assets/info-light.svg +0 -5
  477. package/src/components/organisms/navigationLayout/constants.ts +0 -958
  478. package/src/components/organisms/navigationLayout/footer/index.styled.tsx +0 -286
  479. package/src/components/organisms/navigationLayout/footer/index.tsx +0 -449
  480. package/src/components/organisms/navigationLayout/index.stories.tsx +0 -273
  481. package/src/components/organisms/navigationLayout/index.styled.tsx +0 -153
  482. package/src/components/organisms/navigationLayout/index.tsx +0 -1272
  483. package/src/components/organisms/navigationLayout/languageWrapper.tsx +0 -19
  484. package/src/components/organisms/navigationLayout/languages/default.ts +0 -63
  485. package/src/components/organisms/navigationLayout/layout.tsx +0 -406
  486. package/src/components/organisms/navigationLayout/marryBabyText/index.styled.tsx +0 -86
  487. package/src/components/organisms/navigationLayout/marryBabyText/index.tsx +0 -57
  488. package/src/components/organisms/navigationLayout/maryBabyFooter/index.styled.tsx +0 -502
  489. package/src/components/organisms/navigationLayout/maryBabyFooter/index.tsx +0 -383
  490. package/src/components/organisms/navigationLayout/menuCareList/categorySkeleton.tsx +0 -25
  491. package/src/components/organisms/navigationLayout/menuCareList/index.styled.tsx +0 -156
  492. package/src/components/organisms/navigationLayout/menuCareList/index.tsx +0 -266
  493. package/src/components/organisms/navigationLayout/menuCategoriesList/categorySkeleton.tsx +0 -25
  494. package/src/components/organisms/navigationLayout/menuCategoriesList/helloSites.tsx +0 -419
  495. package/src/components/organisms/navigationLayout/menuCategoriesList/index.styled.tsx +0 -196
  496. package/src/components/organisms/navigationLayout/menuCategoriesList/index.tsx +0 -92
  497. package/src/components/organisms/navigationLayout/menuCategoriesList/marryBaby.styled.tsx +0 -151
  498. package/src/components/organisms/navigationLayout/menuCategoriesList/marryBaby.tsx +0 -409
  499. package/src/components/organisms/navigationLayout/menuCategoriesList/spotlightsList/index.styled.tsx +0 -147
  500. package/src/components/organisms/navigationLayout/menuCategoriesList/spotlightsList/index.tsx +0 -141
  501. package/src/components/organisms/navigationLayout/menuCategoriesList/spotlightsList/spotlightSkeleton.tsx +0 -25
  502. package/src/components/organisms/navigationLayout/menuCommunitiesList/categorySkeleton.tsx +0 -25
  503. package/src/components/organisms/navigationLayout/menuCommunitiesList/helloSites.tsx +0 -309
  504. package/src/components/organisms/navigationLayout/menuCommunitiesList/index.styled.tsx +0 -162
  505. package/src/components/organisms/navigationLayout/menuCommunitiesList/index.tsx +0 -80
  506. package/src/components/organisms/navigationLayout/menuCommunitiesList/marryBaby.styled.tsx +0 -119
  507. package/src/components/organisms/navigationLayout/menuCommunitiesList/marryBaby.tsx +0 -181
  508. package/src/components/organisms/navigationLayout/menuHealthToolsList/categorySkeleton.tsx +0 -25
  509. package/src/components/organisms/navigationLayout/menuHealthToolsList/helloSites.tsx +0 -364
  510. package/src/components/organisms/navigationLayout/menuHealthToolsList/index.styled.tsx +0 -176
  511. package/src/components/organisms/navigationLayout/menuHealthToolsList/index.tsx +0 -83
  512. package/src/components/organisms/navigationLayout/menuHealthToolsList/marryBaby.tsx +0 -166
  513. package/src/components/organisms/navigationLayout/menuHealthToolsList/marrybaby.styled.tsx +0 -118
  514. package/src/components/organisms/navigationLayout/menuSectionCard/cardSkeleton.tsx +0 -32
  515. package/src/components/organisms/navigationLayout/menuSectionCard/index.styled.tsx +0 -46
  516. package/src/components/organisms/navigationLayout/menuSectionCard/index.tsx +0 -52
  517. package/src/components/organisms/navigationLayout/menuServiceList/categoriesSubList.tsx +0 -121
  518. package/src/components/organisms/navigationLayout/menuServiceList/communitySubList.tsx +0 -143
  519. package/src/components/organisms/navigationLayout/menuServiceList/index.styled.tsx +0 -460
  520. package/src/components/organisms/navigationLayout/menuServiceList/index.tsx +0 -746
  521. package/src/components/organisms/navigationLayout/menuServiceList/marryBabyMobileMenuSection.tsx +0 -239
  522. package/src/components/organisms/navigationLayout/navigationBar/ArrowLeftPopupIcon.tsx +0 -21
  523. package/src/components/organisms/navigationLayout/navigationBar/ClosePopupIcon.tsx +0 -20
  524. package/src/components/organisms/navigationLayout/navigationBar/HamburgerIcon.tsx +0 -43
  525. package/src/components/organisms/navigationLayout/navigationBar/NavigationBar.types.ts +0 -99
  526. package/src/components/organisms/navigationLayout/navigationBar/NavigationBarMobile.tsx +0 -503
  527. package/src/components/organisms/navigationLayout/navigationBar/SearchIcon.tsx +0 -22
  528. package/src/components/organisms/navigationLayout/navigationBar/index.styled.tsx +0 -540
  529. package/src/components/organisms/navigationLayout/navigationBar/index.tsx +0 -798
  530. package/src/components/organisms/navigationLayout/navigationLogoutPopup/index.styled.tsx +0 -87
  531. package/src/components/organisms/navigationLayout/navigationLogoutPopup/index.tsx +0 -95
  532. package/src/components/organisms/navigationLayout/profilePopup/index.tsx +0 -102
  533. package/src/components/organisms/navigationLayout/profilePopupWrapper/index.styled.tsx +0 -164
  534. package/src/components/organisms/navigationLayout/profilePopupWrapper/index.tsx +0 -58
  535. package/src/components/organisms/navigationLayout/siteWide/index.styled.tsx +0 -116
  536. package/src/components/organisms/navigationLayout/siteWide/index.tsx +0 -162
  537. package/src/components/organisms/navigationLayout/sponsoredBy/index.styled.tsx +0 -119
  538. package/src/components/organisms/navigationLayout/sponsoredBy/index.tsx +0 -254
  539. package/src/components/organisms/navigationLayout/tooltipSelection/index.styled.tsx +0 -66
  540. package/src/components/organisms/navigationLayout/tooltipSelection/index.tsx +0 -81
  541. package/src/components/organisms/navigationLayout/types.ts +0 -322
  542. package/src/components/organisms/navigationLayout/utils.tsx +0 -424
  543. package/src/components/organisms/navigationLogoutPopup/index.stories.tsx +0 -34
  544. package/src/components/organisms/navigationLogoutPopup/index.styled.tsx +0 -87
  545. package/src/components/organisms/navigationLogoutPopup/index.tsx +0 -78
  546. package/src/components/organisms/navigationProfileButton/index.stories.tsx +0 -51
  547. package/src/components/organisms/navigationProfileButton/index.styled.tsx +0 -254
  548. package/src/components/organisms/navigationProfileButton/index.tsx +0 -217
  549. package/src/components/organisms/navigationProfileButton/popupWrapper.tsx +0 -58
  550. package/src/components/organisms/navigationProfileButton/profilePopup.tsx +0 -97
  551. package/src/components/organisms/navigationV2/components/atoms/ArrowLeftPopupIcon.tsx +0 -21
  552. package/src/components/organisms/navigationV2/components/atoms/ClosePopupIcon.tsx +0 -21
  553. package/src/components/organisms/navigationV2/components/atoms/HamburgerIcon.tsx +0 -58
  554. package/src/components/organisms/navigationV2/components/atoms/ItemNav/index.styled.tsx +0 -63
  555. package/src/components/organisms/navigationV2/components/atoms/ItemNav/index.tsx +0 -71
  556. package/src/components/organisms/navigationV2/components/atoms/PopupWrapper/btnClosePopup.tsx +0 -30
  557. package/src/components/organisms/navigationV2/components/atoms/PopupWrapper/index.styled.tsx +0 -62
  558. package/src/components/organisms/navigationV2/components/atoms/PopupWrapper/index.tsx +0 -45
  559. package/src/components/organisms/navigationV2/components/atoms/SearchIcon.tsx +0 -22
  560. package/src/components/organisms/navigationV2/components/atoms/searchInput/index.tsx +0 -45
  561. package/src/components/organisms/navigationV2/components/molecules/Categories/index.styled.tsx +0 -74
  562. package/src/components/organisms/navigationV2/components/molecules/Categories/index.tsx +0 -115
  563. package/src/components/organisms/navigationV2/components/molecules/Spotlights/index.styled.tsx +0 -40
  564. package/src/components/organisms/navigationV2/components/molecules/Spotlights/index.tsx +0 -60
  565. package/src/components/organisms/navigationV2/components/molecules/menuCareList/Item/index.styled.tsx +0 -155
  566. package/src/components/organisms/navigationV2/components/molecules/menuCareList/Item/index.tsx +0 -103
  567. package/src/components/organisms/navigationV2/components/molecules/menuCareList/careSpotlights.tsx +0 -40
  568. package/src/components/organisms/navigationV2/components/molecules/menuCareList/index.styled.tsx +0 -29
  569. package/src/components/organisms/navigationV2/components/molecules/menuCareList/index.tsx +0 -65
  570. package/src/components/organisms/navigationV2/components/molecules/menuCategoriesList/Item/index.styled.tsx +0 -46
  571. package/src/components/organisms/navigationV2/components/molecules/menuCategoriesList/Item/index.tsx +0 -50
  572. package/src/components/organisms/navigationV2/components/molecules/menuCategoriesList/categorySpotlights.tsx +0 -59
  573. package/src/components/organisms/navigationV2/components/molecules/menuCategoriesList/index.styled.tsx +0 -30
  574. package/src/components/organisms/navigationV2/components/molecules/menuCategoriesList/index.tsx +0 -64
  575. package/src/components/organisms/navigationV2/components/molecules/menuCommunitiesList/Item/index.styled.tsx +0 -89
  576. package/src/components/organisms/navigationV2/components/molecules/menuCommunitiesList/Item/index.tsx +0 -91
  577. package/src/components/organisms/navigationV2/components/molecules/menuCommunitiesList/communitySpotlights.tsx +0 -49
  578. package/src/components/organisms/navigationV2/components/molecules/menuCommunitiesList/index.styled.tsx +0 -42
  579. package/src/components/organisms/navigationV2/components/molecules/menuCommunitiesList/index.tsx +0 -56
  580. package/src/components/organisms/navigationV2/components/molecules/menuHealthToolsList/Item/index.styled.tsx +0 -104
  581. package/src/components/organisms/navigationV2/components/molecules/menuHealthToolsList/Item/index.tsx +0 -99
  582. package/src/components/organisms/navigationV2/components/molecules/menuHealthToolsList/index.styled.tsx +0 -18
  583. package/src/components/organisms/navigationV2/components/molecules/menuHealthToolsList/index.tsx +0 -65
  584. package/src/components/organisms/navigationV2/components/molecules/menuHealthToolsList/toolSpotlights.tsx +0 -41
  585. package/src/components/organisms/navigationV2/components/molecules/menuServiceList/index.styled.tsx +0 -358
  586. package/src/components/organisms/navigationV2/components/molecules/menuServiceList/index.tsx +0 -88
  587. package/src/components/organisms/navigationV2/components/molecules/navigationBar/hamburgerMenu.tsx +0 -74
  588. package/src/components/organisms/navigationV2/components/molecules/navigationBar/index.styled.tsx +0 -214
  589. package/src/components/organisms/navigationV2/components/molecules/navigationBar/index.tsx +0 -283
  590. package/src/components/organisms/navigationV2/components/molecules/navigationBar/navigationProfileButtonWithContext.tsx +0 -50
  591. package/src/components/organisms/navigationV2/components/molecules/spotlightNoData/index.styled.tsx +0 -70
  592. package/src/components/organisms/navigationV2/components/molecules/spotlightNoData/index.tsx +0 -74
  593. package/src/components/organisms/navigationV2/constants.ts +0 -277
  594. package/src/components/organisms/navigationV2/hooks/useHeaderHeight.tsx +0 -84
  595. package/src/components/organisms/navigationV2/hooks/useInsider.tsx +0 -67
  596. package/src/components/organisms/navigationV2/hooks/useNavConfig.tsx +0 -99
  597. package/src/components/organisms/navigationV2/hooks/useNavServices.tsx +0 -73
  598. package/src/components/organisms/navigationV2/index.stories.tsx +0 -287
  599. package/src/components/organisms/navigationV2/index.styled.tsx +0 -30
  600. package/src/components/organisms/navigationV2/index.tsx +0 -320
  601. package/src/components/organisms/navigationV2/navigationContext.tsx +0 -38
  602. package/src/components/organisms/navigationV2/types.ts +0 -307
  603. package/src/components/organisms/navigationV2/utils.tsx +0 -400
  604. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-chevronDown.svg +0 -3
  605. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-chevronRight.svg +0 -3
  606. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-eCom.svg +0 -22
  607. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-helpCircle.svg +0 -3
  608. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-logOut.svg +0 -3
  609. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-myBooking.svg +0 -36
  610. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-myCommunity.svg +0 -19
  611. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-myFamily.svg +0 -15
  612. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-myHealth.svg +0 -13
  613. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-mySaved.svg +0 -3
  614. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-rank-ambassador.svg +0 -4
  615. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-rank-doctor.svg +0 -4
  616. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-rank-expert.svg +0 -4
  617. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-rank-influencer.svg +0 -4
  618. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-rank-member.svg +0 -8
  619. package/src/components/organisms/userProfileNavigation/assets/helloSites/icon-settingsWheel.svg +0 -3
  620. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-arrowRight.svg +0 -3
  621. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-lock.svg +0 -4
  622. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-logOut.svg +0 -4
  623. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-myCommunity.svg +0 -4
  624. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-myHealth.svg +0 -6
  625. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-mySaved.svg +0 -3
  626. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-rank-ambassador.svg +0 -40
  627. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-rank-doctor.svg +0 -40
  628. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-rank-expert.svg +0 -27
  629. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-rank-influencer.svg +0 -33
  630. package/src/components/organisms/userProfileNavigation/assets/marryBaby/icon-rank-member.svg +0 -33
  631. package/src/components/organisms/userProfileNavigation/constants.ts +0 -23
  632. package/src/components/organisms/userProfileNavigation/index.stories.tsx +0 -79
  633. package/src/components/organisms/userProfileNavigation/index.styled.ts +0 -60
  634. package/src/components/organisms/userProfileNavigation/index.tsx +0 -219
  635. package/src/components/organisms/userProfileNavigation/navHeader/index.styled.ts +0 -76
  636. package/src/components/organisms/userProfileNavigation/navHeader/index.tsx +0 -68
  637. package/src/components/organisms/userProfileNavigation/navMenu/index.styled.ts +0 -115
  638. package/src/components/organisms/userProfileNavigation/navMenu/index.tsx +0 -79
  639. package/src/components/organisms/userProfileNavigation/navMenu/items.ts +0 -38
  640. package/src/components/organisms/userProfileNavigation/navigationCard/index.styled.ts +0 -51
  641. package/src/components/organisms/userProfileNavigation/navigationCard/index.tsx +0 -96
  642. package/src/components/organisms/userProfileNavigation/types.ts +0 -35
  643. package/src/components/organisms/userProfileNavigation/userStats/index.styled.ts +0 -110
  644. package/src/components/organisms/userProfileNavigation/userStats/index.tsx +0 -78
  645. package/src/core.ts +0 -7
  646. package/src/docs/releases/getReleases.js +0 -56
  647. package/src/docs/releases/index.stories.mdx +0 -9
  648. package/src/ecom/dataFormatter/index.ts +0 -933
  649. package/src/ecom/dataFormatter/lib/apiTypes.ts +0 -623
  650. package/src/ecom/dataFormatter/lib/dataTypes.ts +0 -571
  651. package/src/ecom/dataFormatter/lib/utils.ts +0 -40
  652. package/src/ecom/index.tsx +0 -5
  653. package/src/ecom/interfaces/constants.ts +0 -1000
  654. package/src/ecom/interfaces/types.ts +0 -194
  655. package/src/hooks/useCSSFocusPopupHelper.ts +0 -32
  656. package/src/hooks/useDragScroll.ts +0 -55
  657. package/src/hooks/useDropdownSearch.tsx +0 -52
  658. package/src/hooks/useFbDataLayer.tsx +0 -49
  659. package/src/hooks/useGeolocation.ts +0 -86
  660. package/src/hooks/useGetIsMobile.ts +0 -20
  661. package/src/hooks/useImagesPicker.ts +0 -56
  662. package/src/hooks/useIsInit.ts +0 -9
  663. package/src/hooks/useOutsideClick.ts +0 -20
  664. package/src/hooks/useScreenSize.ts +0 -35
  665. package/src/hooks/useScrollbarSize.ts +0 -74
  666. package/src/hooks/useTranslations.tsx +0 -41
  667. package/src/i18n/en-PH.json +0 -235
  668. package/src/i18n/hi-IN.json +0 -235
  669. package/src/i18n/id-ID.json +0 -235
  670. package/src/i18n/index.ts +0 -3
  671. package/src/i18n/km-KH.json +0 -235
  672. package/src/i18n/ms-MY.json +0 -235
  673. package/src/i18n/my-MM.json +0 -235
  674. package/src/i18n/th-TH.json +0 -235
  675. package/src/i18n/tl-PH.json +0 -235
  676. package/src/i18n/translations.ts +0 -47
  677. package/src/i18n/translationsContext.ts +0 -12
  678. package/src/i18n/translationsProvider.tsx +0 -66
  679. package/src/i18n/vi-VN.json +0 -242
  680. package/src/i18n/zh-TW.json +0 -235
  681. package/src/index.ts +0 -12
  682. package/src/interfaces/constants.ts +0 -402
  683. package/src/interfaces/types.ts +0 -85
  684. package/src/misc/cookieHelper.tsx +0 -31
  685. package/src/misc/lazyLoad.ts +0 -7
  686. package/src/misc/mockTheme.tsx +0 -11
  687. package/src/misc/number.ts +0 -24
  688. package/src/misc/routing.tsx +0 -45
  689. package/src/misc/theme.ts +0 -186
  690. package/src/misc/utils.ts +0 -214
  691. package/src/test/testTranslationProvider.tsx +0 -14
  692. package/src/together/api/dataTransform.ts +0 -650
  693. package/src/together/api/paths.ts +0 -163
  694. package/src/together/api/utils.ts +0 -399
  695. package/src/together/assets/images/avatar-default.png +0 -0
  696. package/src/together/assets/images/icon-whatsapp.png +0 -0
  697. package/src/together/assets/images/icon-zalo.png +0 -0
  698. package/src/together/assets/marrybaby/svg/comment.svg +0 -4
  699. package/src/together/assets/marrybaby/svg/commentSolid.svg +0 -5
  700. package/src/together/assets/marrybaby/svg/commentWhite.svg +0 -4
  701. package/src/together/assets/marrybaby/svg/copy.svg +0 -1
  702. package/src/together/assets/marrybaby/svg/facebook.svg +0 -9
  703. package/src/together/assets/marrybaby/svg/heart.svg +0 -4
  704. package/src/together/assets/marrybaby/svg/heartSolid.svg +0 -4
  705. package/src/together/assets/marrybaby/svg/linkedin.svg +0 -6
  706. package/src/together/assets/marrybaby/svg/loading.svg +0 -15
  707. package/src/together/assets/marrybaby/svg/messenger.svg +0 -17
  708. package/src/together/assets/marrybaby/svg/more.svg +0 -6
  709. package/src/together/assets/marrybaby/svg/moreSolid.svg +0 -6
  710. package/src/together/assets/marrybaby/svg/pin.svg +0 -6
  711. package/src/together/assets/marrybaby/svg/pinOrange.svg +0 -6
  712. package/src/together/assets/marrybaby/svg/share.svg +0 -5
  713. package/src/together/assets/marrybaby/svg/share2.svg +0 -5
  714. package/src/together/assets/marrybaby/svg/sortBy.svg +0 -5
  715. package/src/together/assets/marrybaby/svg/twitter.svg +0 -4
  716. package/src/together/assets/marrybaby/svg/zalo.png +0 -0
  717. package/src/together/assets/svg/bullet-point.svg +0 -3
  718. package/src/together/assets/svg/chevronRightActive.svg +0 -3
  719. package/src/together/assets/svg/close-circle-line.svg +0 -5
  720. package/src/together/assets/svg/closeLight copy.svg +0 -4
  721. package/src/together/assets/svg/closeLight.svg +0 -4
  722. package/src/together/assets/svg/delete.svg +0 -13
  723. package/src/together/assets/svg/icon-alert-circle-primary.svg +0 -5
  724. package/src/together/assets/svg/icon-alert-circle-warning.svg +0 -5
  725. package/src/together/assets/svg/icon-alert-circle.svg +0 -5
  726. package/src/together/assets/svg/icon-arrow-circle-upgrade.svg +0 -3
  727. package/src/together/assets/svg/icon-arrow-left.svg +0 -4
  728. package/src/together/assets/svg/icon-arrow-right-circle.svg +0 -5
  729. package/src/together/assets/svg/icon-bell-off.svg +0 -7
  730. package/src/together/assets/svg/icon-bell-on.svg +0 -4
  731. package/src/together/assets/svg/icon-bookmark-fill.svg +0 -3
  732. package/src/together/assets/svg/icon-bookmark.svg +0 -3
  733. package/src/together/assets/svg/icon-cancel.svg +0 -13
  734. package/src/together/assets/svg/icon-check-gray.svg +0 -3
  735. package/src/together/assets/svg/icon-check-pink.svg +0 -3
  736. package/src/together/assets/svg/icon-check-success.svg +0 -4
  737. package/src/together/assets/svg/icon-check.svg +0 -4
  738. package/src/together/assets/svg/icon-chevron-left-dark.svg +0 -3
  739. package/src/together/assets/svg/icon-chevron-right-dark.svg +0 -3
  740. package/src/together/assets/svg/icon-chevron-right-white.svg +0 -3
  741. package/src/together/assets/svg/icon-chevron-right.svg +0 -3
  742. package/src/together/assets/svg/icon-close-circle-line.svg +0 -5
  743. package/src/together/assets/svg/icon-close-circle.svg +0 -5
  744. package/src/together/assets/svg/icon-close.svg +0 -4
  745. package/src/together/assets/svg/icon-edit.svg +0 -3
  746. package/src/together/assets/svg/icon-enter.svg +0 -4
  747. package/src/together/assets/svg/icon-facebook.svg +0 -3
  748. package/src/together/assets/svg/icon-heart-empty.svg +0 -3
  749. package/src/together/assets/svg/icon-heart-fill-red.svg +0 -3
  750. package/src/together/assets/svg/icon-heart-fill.svg +0 -3
  751. package/src/together/assets/svg/icon-kebab.svg +0 -5
  752. package/src/together/assets/svg/icon-link.svg +0 -4
  753. package/src/together/assets/svg/icon-linkedin.svg +0 -4
  754. package/src/together/assets/svg/icon-pin-gray.svg +0 -4
  755. package/src/together/assets/svg/icon-pin-yellow.svg +0 -4
  756. package/src/together/assets/svg/icon-pin.svg +0 -4
  757. package/src/together/assets/svg/icon-reply-arrow.svg +0 -3
  758. package/src/together/assets/svg/icon-reply-circle-empty.svg +0 -3
  759. package/src/together/assets/svg/icon-reply-circle-fill.svg +0 -3
  760. package/src/together/assets/svg/icon-share-on-media.svg +0 -7
  761. package/src/together/assets/svg/icon-sort-arrow.svg +0 -4
  762. package/src/together/assets/svg/icon-tab-edit-2.svg +0 -4
  763. package/src/together/assets/svg/icon-tab-edit-primary.svg +0 -4
  764. package/src/together/assets/svg/icon-trash-bin.svg +0 -6
  765. package/src/together/assets/svg/icon-twitter.svg +0 -4
  766. package/src/together/assets/svg/loading.svg +0 -7
  767. package/src/together/assets/svg/reviewer-author.svg +0 -12
  768. package/src/together/assets/svg/reviewer-editor.svg +0 -12
  769. package/src/together/assets/svg/reviewer-expert.svg +0 -5
  770. package/src/together/assets/svg/reviewer-fact-check.svg +0 -4
  771. package/src/together/assets/svg/reviewer-medical.svg +0 -4
  772. package/src/together/components/atoms/cardLink/index.styled.tsx +0 -64
  773. package/src/together/components/atoms/cardLink/index.tsx +0 -149
  774. package/src/together/components/atoms/cardReactions/index.styled.tsx +0 -96
  775. package/src/together/components/atoms/cardReactions/index.tsx +0 -221
  776. package/src/together/components/atoms/index.tsx +0 -8
  777. package/src/together/components/atoms/labelSortPin/index.styled.tsx +0 -78
  778. package/src/together/components/atoms/labelSortPin/index.tsx +0 -50
  779. package/src/together/components/atoms/labelSortPin/labelPin.tsx +0 -47
  780. package/src/together/components/atoms/labelSortPin/labelSorting.tsx +0 -127
  781. package/src/together/components/atoms/loading/index.styled.tsx +0 -42
  782. package/src/together/components/atoms/loading/index.tsx +0 -25
  783. package/src/together/components/atoms/loading/loadingCard.tsx +0 -38
  784. package/src/together/components/atoms/tagTopic/index.styled.tsx +0 -33
  785. package/src/together/components/atoms/tagTopic/index.tsx +0 -57
  786. package/src/together/components/atoms/userAvatar/index.styled.tsx +0 -39
  787. package/src/together/components/atoms/userAvatar/index.tsx +0 -62
  788. package/src/together/components/molecules/cardAuthor/customMMLocale/formatDistance.ts +0 -112
  789. package/src/together/components/molecules/cardAuthor/customMMLocale/index.ts +0 -16
  790. package/src/together/components/molecules/cardAuthor/customMMLocale/types.ts +0 -37
  791. package/src/together/components/molecules/cardAuthor/index.styled.tsx +0 -164
  792. package/src/together/components/molecules/cardAuthor/index.tsx +0 -314
  793. package/src/together/components/molecules/createNewPostContent/index.stories.tsx +0 -114
  794. package/src/together/components/molecules/createNewPostContent/index.styled.tsx +0 -73
  795. package/src/together/components/molecules/createNewPostContent/index.tsx +0 -351
  796. package/src/together/components/molecules/createPostDescription/editor.tsx +0 -915
  797. package/src/together/components/molecules/createPostDescription/index.styled.tsx +0 -328
  798. package/src/together/components/molecules/createPostDescription/index.tsx +0 -163
  799. package/src/together/components/molecules/createPostTitle/index.styled.tsx +0 -62
  800. package/src/together/components/molecules/createPostTitle/index.tsx +0 -133
  801. package/src/together/components/molecules/index.tsx +0 -18
  802. package/src/together/components/molecules/inputCommentBar/index.styled.tsx +0 -227
  803. package/src/together/components/molecules/inputCommentBar/index.tsx +0 -341
  804. package/src/together/components/molecules/inputCommentBar/mainInputTriggerContext.tsx +0 -26
  805. package/src/together/components/molecules/popupDanger/index.styled.tsx +0 -174
  806. package/src/together/components/molecules/popupDanger/index.tsx +0 -113
  807. package/src/together/components/molecules/popupDoctor/index.styled.tsx +0 -185
  808. package/src/together/components/molecules/popupDoctor/index.tsx +0 -271
  809. package/src/together/components/molecules/popupExpert/index.styled.tsx +0 -175
  810. package/src/together/components/molecules/popupExpert/index.tsx +0 -216
  811. package/src/together/components/molecules/popupFrame/index.styled.tsx +0 -76
  812. package/src/together/components/molecules/popupFrame/index.tsx +0 -43
  813. package/src/together/components/molecules/popupFrame/popupShare.tsx +0 -178
  814. package/src/together/components/molecules/popupHospital/index.styled.tsx +0 -173
  815. package/src/together/components/molecules/popupHospital/index.tsx +0 -249
  816. package/src/together/components/molecules/postContent/index.styled.tsx +0 -66
  817. package/src/together/components/molecules/postContent/index.tsx +0 -125
  818. package/src/together/components/molecules/postImagePreview/imagePreviewPopup.tsx +0 -73
  819. package/src/together/components/molecules/postImagePreview/index.styled.tsx +0 -154
  820. package/src/together/components/molecules/postImagePreview/index.tsx +0 -115
  821. package/src/together/components/molecules/postImagePreview/postSingleImageViewPopup/index.styled.tsx +0 -84
  822. package/src/together/components/molecules/postImagePreview/postSingleImageViewPopup/index.tsx +0 -83
  823. package/src/together/components/molecules/shareBox/index.stories.tsx +0 -36
  824. package/src/together/components/molecules/shareBox/index.styled.tsx +0 -141
  825. package/src/together/components/molecules/shareBox/index.tsx +0 -188
  826. package/src/together/components/molecules/socialLinkPreview/index.styled.tsx +0 -39
  827. package/src/together/components/molecules/socialLinkPreview/index.tsx +0 -206
  828. package/src/together/components/molecules/submitReportForm/index.styled.tsx +0 -34
  829. package/src/together/components/molecules/submitReportForm/index.tsx +0 -84
  830. package/src/together/components/molecules/topicSelectList/index.stories.tsx +0 -93
  831. package/src/together/components/molecules/topicSelectList/index.styled.tsx +0 -53
  832. package/src/together/components/molecules/topicSelectList/index.tsx +0 -186
  833. package/src/together/components/organisms/cardPost/cardPostPopover.tsx +0 -293
  834. package/src/together/components/organisms/cardPost/index.stories.tsx +0 -212
  835. package/src/together/components/organisms/cardPost/index.styled.tsx +0 -181
  836. package/src/together/components/organisms/cardPost/index.tsx +0 -458
  837. package/src/together/components/organisms/cardReply/cardReplyPopover.tsx +0 -122
  838. package/src/together/components/organisms/cardReply/index.styled.tsx +0 -199
  839. package/src/together/components/organisms/cardReply/index.tsx +0 -362
  840. package/src/together/components/organisms/index.tsx +0 -5
  841. package/src/together/components/organisms/popoverMenu/index.styled.tsx +0 -313
  842. package/src/together/components/organisms/popoverMenu/index.tsx +0 -102
  843. package/src/together/components/organisms/popoverMenu/treePopoverMenu.tsx +0 -156
  844. package/src/together/hooks/useTogetherAuthRequiredAction.tsx +0 -124
  845. package/src/together/index.ts +0 -12
  846. package/src/together/interfaces/constants.ts +0 -306
  847. package/src/together/interfaces/types.ts +0 -1418
  848. package/src/together/togetherComponentGlobalContext.tsx +0 -150
  849. package/src/together/utils/apiActions/comment.tsx +0 -168
  850. package/src/together/utils/apiActions/community.ts +0 -59
  851. package/src/together/utils/apiActions/post.ts +0 -234
  852. package/src/together/utils/apiActions/topic.ts +0 -40
  853. package/src/together/utils/notification.ts +0 -20
  854. package/src/together/utils/post.ts +0 -351
  855. package/tsconfig.json +0 -28
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./tslib.es6-f7929e76.js"),t=require("react"),n=require("./constants-ea7b35a2.js"),a=require("./theme-79e84625.js"),o=require("./cookieHelper-fc4e507c.js"),i=require("./useTranslations-41d2f908.js"),r=require("lodash/debounce");require("react-range");var l=require("styled-components"),s=require("react-loading-skeleton"),c=require("react-id-generator"),u=require("lodash/shuffle");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=d(t),h=d(r),f=d(l),g=d(s),m=d(u);var C,v,x,y,b,_,w,E,k,L,S,T,O=f.default.div(C||(C=e.__makeTemplateObject([""],[""]))),I=f.default.div(v||(v=e.__makeTemplateObject(["\n --searchbar-z-index: 305;\n &[data-is-modal='true'] {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n height: var(--mobile-care-searchbar-height, 100%);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n background-color: white;\n z-index: var(--searchbar-z-index);\n }\n"],["\n --searchbar-z-index: 305;\n &[data-is-modal='true'] {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n height: var(--mobile-care-searchbar-height, 100%);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n background-color: white;\n z-index: var(--searchbar-z-index);\n }\n"]))),M=f.default.section(x||(x=e.__makeTemplateObject([""],[""]))),R=f.default.input(y||(y=e.__makeTemplateObject(["\n position: fixed;\n left: -100%;\n top: -100%;\n"],["\n position: fixed;\n left: -100%;\n top: -100%;\n"]))),A=f.default(o.Input)(b||(b=e.__makeTemplateObject(["\n #booking-search-bar & {\n input {\n font-size: 16px;\n }\n }\n"],["\n #booking-search-bar & {\n input {\n font-size: 16px;\n }\n }\n"]))),N=l.createGlobalStyle(_||(_=e.__makeTemplateObject(["\n .care-popup-open {\n overflow: hidden;\n position: fixed;\n &::before {\n content: '';\n inset: 0;\n position: absolute;\n background-color: white;\n min-height: 100vh;\n min-width: 100vw;\n z-index: 2;\n }\n }\n"],["\n .care-popup-open {\n overflow: hidden;\n position: fixed;\n &::before {\n content: '';\n inset: 0;\n position: absolute;\n background-color: white;\n min-height: 100vh;\n min-width: 100vw;\n z-index: 2;\n }\n }\n"]))),P=function(e){var t=e.className,n=e.color;return p.default.createElement("svg",{className:t,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("path",{d:"M18 6L6 18",stroke:n||"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),p.default.createElement("path",{d:"M6 6L18 18",stroke:n||"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}))},F=function(e){var t=e.className,n=e.color;return p.default.createElement("svg",{width:"14",height:"20",viewBox:"0 0 14 20",className:t},p.default.createElement("path",{d:"M7 0C3.134 0 0 3.134 0 7C0 10.966 4.404 16.82 6.226 19.071C6.626 19.565 7.374 19.565 7.774 19.071C9.596 16.82 14 10.966 14 7C14 3.134 10.866 0 7 0ZM7 9.5C5.619 9.5 4.5 8.381 4.5 7C4.5 5.619 5.619 4.5 7 4.5C8.381 4.5 9.5 5.619 9.5 7C9.5 8.381 8.381 9.5 7 9.5Z",fill:n||"currentColor"}))},z=function(e){var t=e.className,n=e.color;return p.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",className:t},p.default.createElement("path",{d:"M9.99967 6.66658C8.15801 6.66658 6.66634 8.15825 6.66634 9.99992C6.66634 11.8416 8.15801 13.3333 9.99967 13.3333C11.8413 13.3333 13.333 11.8416 13.333 9.99992C13.333 8.15825 11.8413 6.66658 9.99967 6.66658ZM17.4497 9.16658C17.0663 5.69158 14.308 2.93325 10.833 2.54992V1.66659C10.833 1.20825 10.458 0.833252 9.99967 0.833252C9.54134 0.833252 9.16634 1.20825 9.16634 1.66659V2.54992C5.69134 2.93325 2.93301 5.69158 2.54967 9.16658H1.66634C1.20801 9.16658 0.833008 9.54158 0.833008 9.99992C0.833008 10.4583 1.20801 10.8333 1.66634 10.8333H2.54967C2.93301 14.3083 5.69134 17.0666 9.16634 17.4499V18.3333C9.16634 18.7916 9.54134 19.1666 9.99967 19.1666C10.458 19.1666 10.833 18.7916 10.833 18.3333V17.4499C14.308 17.0666 17.0663 14.3083 17.4497 10.8333H18.333C18.7913 10.8333 19.1663 10.4583 19.1663 9.99992C19.1663 9.54158 18.7913 9.16658 18.333 9.16658H17.4497ZM9.99967 15.8333C6.77467 15.8333 4.16634 13.2249 4.16634 9.99992C4.16634 6.77492 6.77467 4.16658 9.99967 4.16658C13.2247 4.16658 15.833 6.77492 15.833 9.99992C15.833 13.2249 13.2247 15.8333 9.99967 15.8333Z",fill:n||"currentColor"}))},j=function(e){var t=e.className,n=e.color;return p.default.createElement("svg",{className:t,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("path",{d:"M11 18C14.866 18 18 14.866 18 11C18 7.13401 14.866 4 11 4C7.13401 4 4 7.13401 4 11C4 14.866 7.13401 18 11 18Z",stroke:n||"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),p.default.createElement("path",{d:"M20 20L16 16",stroke:n||"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}))},D=function(e){var t=e.width,n=e.height;return p.default.createElement("svg",{width:t||30,height:n||30,viewBox:"0 0 30 30",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("circle",{cx:"15",cy:"15",r:"15",fill:"#F7F9FC"}))},H=f.default.li(w||(w=e.__makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 16px;\n\n > :first-child {\n flex: 1;\n }\n\n > :nth-child(2) {\n flex: 6;\n }\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ",";\n }\n"],["\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 16px;\n\n > :first-child {\n flex: 1;\n }\n\n > :nth-child(2) {\n flex: 6;\n }\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ",";\n }\n"])),a.theme.colors.neutral100),V=f.default.div(E||(E=e.__makeTemplateObject(["\n display: flex;\n position: absolute;\n top: 48px;\n min-width: 100%;\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n border-radius: 6px;\n background-color: white;\n z-index: 30;\n\n "," {\n position: relative;\n top: 0;\n box-shadow: initial;\n }\n"],["\n display: flex;\n position: absolute;\n top: 48px;\n min-width: 100%;\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n border-radius: 6px;\n background-color: white;\n z-index: 30;\n\n "," {\n position: relative;\n top: 0;\n box-shadow: initial;\n }\n"])),i.MediaQueries.mbDown),B=f.default.ul(k||(k=e.__makeTemplateObject(["\n width: 100%;\n max-height: 600px;\n overflow-y: auto;\n"],["\n width: 100%;\n max-height: 600px;\n overflow-y: auto;\n"]))),K=f.default(F)(L||(L=e.__makeTemplateObject(["\n width: 12px;\n height: 18px;\n"],["\n width: 12px;\n height: 18px;\n"]))),Z=f.default.li(S||(S=e.__makeTemplateObject(["\n position: relative;\n cursor: pointer;\n padding: 12px 18px;\n display: flex;\n align-items: center;\n gap: 14px;\n overflow: hidden;\n\n ","\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ",";\n }\n\n &:not([data-is-denied='true']):hover {\n background-color: ",";\n }\n\n &:last-child:hover {\n border-bottom-right-radius: 6px;\n border-bottom-left-radius: 6px;\n }\n\n &:first-child:hover {\n border-top-right-radius: 6px;\n border-top-left-radius: 6px;\n }\n\n &[data-is-denied='true'] {\n cursor: not-allowed;\n }\n"],["\n position: relative;\n cursor: pointer;\n padding: 12px 18px;\n display: flex;\n align-items: center;\n gap: 14px;\n overflow: hidden;\n\n ","\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ",";\n }\n\n &:not([data-is-denied='true']):hover {\n background-color: ",";\n }\n\n &:last-child:hover {\n border-bottom-right-radius: 6px;\n border-bottom-left-radius: 6px;\n }\n\n &:first-child:hover {\n border-top-right-radius: 6px;\n border-top-left-radius: 6px;\n }\n\n &[data-is-denied='true'] {\n cursor: not-allowed;\n }\n"])),(function(e){return e.isSelected&&"\n &::after {\n content: ".concat("url(\"data:image/svg+xml,%3Csvg width='19' height='14' viewBox='0 0 19 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.9803 0.990669C16.7205 0.99841 16.4739 1.10699 16.2928 1.2934L5.99984 11.5864L2.70687 8.2934C2.61473 8.19743 2.50436 8.12081 2.38223 8.06802C2.2601 8.01524 2.12867 7.98735 1.99563 7.986C1.86259 7.98464 1.73061 8.00985 1.60743 8.06014C1.48426 8.11043 1.37235 8.18479 1.27827 8.27887C1.1842 8.37295 1.10983 8.48485 1.05954 8.60803C1.00926 8.73121 0.98405 8.86318 0.985403 8.99622C0.986757 9.12926 1.01464 9.26069 1.06743 9.38282C1.12021 9.50495 1.19684 9.61532 1.29281 9.70747L5.29281 13.7075C5.48035 13.8949 5.73467 14.0002 5.99984 14.0002C6.26501 14.0002 6.51933 13.8949 6.70687 13.7075L17.7069 2.70747C17.8514 2.567 17.9501 2.38616 17.99 2.18864C18.03 1.99112 18.0093 1.78614 17.9308 1.60055C17.8523 1.41497 17.7195 1.25744 17.5499 1.14861C17.3803 1.03978 17.1817 0.984729 16.9803 0.990669Z' fill='%232685F1'/%3E%3C/svg%3E%0A\")",";\n top: 50%;\n right: 18px;\n position: absolute;\n transform: translateY(-50%);\n }\n ")}),a.theme.colors.neutral100,a.theme.colors.neutral50),G=f.default((function(t){var n=t.count,a=t.className,o=c.useId(n);return p.default.createElement(p.default.Fragment,null,e.__spreadArray([],Array(n),!0).map((function(e,t){return p.default.createElement(H,{className:a,key:o[t]},p.default.createElement(g.default,{count:1,height:32}),p.default.createElement(g.default,{count:1,height:24}))})))}))(T||(T=e.__makeTemplateObject(["\n &:first-child {\n padding-top: 18px;\n }\n"],["\n &:first-child {\n padding-top: 18px;\n }\n"]))),U=function(e){var t=e.cities,n=e.isLoading,r=e.onLocationClick,l=e.onCurrentLocationClick,s=e.geoLocationPermission,c=void 0===s?"unset":s,u=e.isLocationLoading,d=e.selectedLocation,h=i.useTranslations().t,f="denied"===c,m=function(){return p.default.createElement(Z,{role:"button",tabIndex:0,onClick:function(e){f||(e.nativeEvent.stopImmediatePropagation(),u||l())},"data-is-denied":f},f?p.default.createElement(o.Text,{color:"var(--gray600)",size:"md"},"x"):u?p.default.createElement(g.default,{height:20,width:20}):p.default.createElement(z,{color:a.theme.colors.primaryBase}),p.default.createElement("div",null,f?p.default.createElement(o.Text,{color:"var(--gray600)",size:"sm",style:{lineHeight:1.5}},h("booking.searchBar.grantLocation")):u?p.default.createElement(g.default,{height:20,style:{width:"calc(100% - 16px)"}}):p.default.createElement(o.Text,{size:"md"},h("booking.searchBar.useCurrentLocation"))))};return p.default.createElement(V,{"data-testid":"location-search-results"},p.default.createElement(B,null,n?p.default.createElement(G,{count:5}):!t||t.length<1?p.default.createElement(p.default.Fragment,null,m(),p.default.createElement(Z,{"data-is-denied":"true"},p.default.createElement(o.Text,{size:"sm",color:"#ccc"},h("booking.searchBar.noResults")))):p.default.createElement(p.default.Fragment,null,m(),t.map((function(e){return p.default.createElement(Z,{key:e.id,onClick:function(t){t.nativeEvent.stopImmediatePropagation(),r&&r(e)},role:"button",tabIndex:0,"aria-label":"Select ".concat(e.name," as location"),isSelected:(null==d?void 0:d.id)===e.id},p.default.createElement(K,{color:a.theme.colors.neutral400}),p.default.createElement(o.Text,{size:"md"},e.name))})))))},Q="TYPE_CHARACTER",q="REMOVE_CHARACTER",W="REMOVE_ALL",Y="REMOVE_LAST_VISIBLE_NODE",J="PAUSE_FOR",X="CHANGE_DELETE_SPEED",$="CHANGE_DELAY",ee="PASTE_STRING",te=function(e,t){return Math.floor(Math.random()*(t-e+1))+e},ne="TEXT_NODE",ae=function(){function t(t){var n=this;this.state={lastFrameTime:null,pauseUntil:null,eventQueue:[],eventLoop:null,eventLoopPaused:!1,reverseCalledEvents:[],calledEvents:[],visibleNodes:[],initialOptions:null},this.options={strings:null,delay:"natural",pauseFor:1500,deleteSpeed:"natural",loop:!1,autoStart:!1,stringSplitter:null,onCreateTextNode:null,onRemoveNode:null},this.start=function(){return n.state.eventLoopPaused=!1,n.runEventLoop(),n},this.pause=function(){return n.state.eventLoopPaused=!0,n},this.stop=function(){return n.state.eventLoop&&(window.cancelAnimationFrame(n.state.eventLoop),n.state.eventLoop=null),n},this.pauseFor=function(e){return n.addEventToQueue(J,{ms:e}),n},this.typeOutAllStrings=function(){return"string"==typeof n.options.strings?(n.typeString(n.options.strings).pauseFor(n.options.pauseFor),n):(n.options.strings.forEach((function(e){n.typeString(e).pauseFor(n.options.pauseFor).deleteAll(n.options.deleteSpeed)})),n)},this.typeString=function(e,t){if(void 0===t&&(t=null),e){var a=(n.options||{}).stringSplitter,o="function"==typeof a?a(e):e.split("");n.typeCharacters(o,t)}return n},this.pasteString=function(e,t){return void 0===t&&(t=null),e&&n.addEventToQueue(ee,{character:e,node:t}),n},this.deleteAll=function(e){return void 0===e&&(e="natural"),n.addEventToQueue(W,{speed:e}),n},this.changeDeleteSpeed=function(e){if(!e)throw new Error("Must provide new delete speed");return n.addEventToQueue(X,{speed:e}),n},this.changeDelay=function(e){if(!e)throw new Error("Must provide new delay");return n.addEventToQueue($,{delay:e}),n},this.deleteChars=function(e){if(!e)throw new Error("Must provide amount of characters to delete");for(var t=0;t<e;t++)n.addEventToQueue(q);return n},this.typeCharacters=function(e,t){if(void 0===t&&(t=null),!e||!Array.isArray(e))throw new Error("Characters must be an array");return e.forEach((function(e){n.addEventToQueue(Q,{character:e,node:t})})),n},this.removeCharacters=function(e){if(!e||!Array.isArray(e))throw new Error("Characters must be an array");return e.forEach((function(){n.addEventToQueue(q)})),n},this.addEventToQueue=function(e,t,a){return void 0===a&&(a=!1),n.addEventToStateProperty(e,t,a,"eventQueue")},this.addReverseCalledEvent=function(e,t,a){return void 0===a&&(a=!1),n.options.loop?n.addEventToStateProperty(e,t,a,"reverseCalledEvents"):n},this.addEventToStateProperty=function(t,a,o,i){void 0===o&&(o=!1);var r={eventName:t,eventArgs:a||{}};return n.state[i]=o?e.__spreadArray([r],n.state[i],!0):e.__spreadArray(e.__spreadArray([],n.state[i],!0),[r],!1),n},this.runEventLoop=function(){n.state.lastFrameTime||(n.state.lastFrameTime=Date.now());var t=Date.now(),a=t-n.state.lastFrameTime;if(!n.state.eventQueue.length){if(!n.options.loop)return;n.state.eventQueue=e.__spreadArray([],n.state.calledEvents,!0),n.state.calledEvents=[],n.options=e.__assign({},n.state.initialOptions)}if(n.state.eventLoop=window.requestAnimationFrame(n.runEventLoop),!n.state.eventLoopPaused){if(n.state.pauseUntil){if(t<n.state.pauseUntil)return;n.state.pauseUntil=null}var o=e.__spreadArray([],n.state.eventQueue,!0),i=o.shift();if(!(a<=(i.eventName===Y||i.eventName===q?"natural"===n.options.deleteSpeed?te(40,80):n.options.deleteSpeed:"natural"===n.options.delay?te(120,160):n.options.delay))){var r=i.eventName,l=i.eventArgs;switch(r){case ee:case Q:var s=l.character,c=document.createTextNode(s),u=c;n.options.onCreateTextNode&&"function"==typeof n.options.onCreateTextNode&&(u=n.options.onCreateTextNode(s,c)),n.state.visibleNodes=e.__spreadArray(e.__spreadArray([],n.state.visibleNodes,!0),[{type:ne,character:s,node:u}],!1);break;case q:o.unshift({eventName:Y,eventArgs:{removingCharacterNode:!0}});break;case J:var d=i.eventArgs.ms;n.state.pauseUntil=Date.now()+parseInt(d);break;case W:var p=n.state.visibleNodes,h=l.speed,f=[];h&&f.push({eventName:X,eventArgs:{speed:h,temp:!0}});for(var g=0,m=p.length;g<m;g++)f.push({eventName:Y,eventArgs:{removingCharacterNode:!1}});h&&f.push({eventName:X,eventArgs:{speed:n.options.deleteSpeed,temp:!0}}),o.unshift.apply(o,f);break;case Y:if(n.state.visibleNodes.length){var C=n.state.visibleNodes.pop(),v=C.node;s=C.character;n.options.onRemoveNode&&"function"==typeof n.options.onRemoveNode&&n.options.onRemoveNode({node:v,character:s}),v&&v.parentNode.removeChild(v)}break;case X:n.options.deleteSpeed=i.eventArgs.speed;break;case $:n.options.delay=i.eventArgs.delay}n.options.loop&&(i.eventName===Y||i.eventArgs&&i.eventArgs.temp||(n.state.calledEvents=e.__spreadArray(e.__spreadArray([],n.state.calledEvents,!0),[i],!1))),n.state.eventQueue=o,n.state.lastFrameTime=t}}},t&&(this.options=e.__assign(e.__assign({},this.options),t)),this.state.initialOptions=e.__assign({},this.options),this.init()}return t.prototype.init=function(){this.addEventToQueue(W,null,!0),!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings().start()},t}();function oe(e){var n=e.inputRef,a=e.wrapperRef,o=e.disabled,r=i.useTranslations(),l=r.t,s=r.locale,c=t.useMemo((function(){if(o)return[];var e=["booking.searchBar.placeholder.hospital","booking.searchBar.placeholder.doctor"];return"zh-TW"!==s&&e.push("booking.searchBar.placeholder.specialty","booking.searchBar.placeholder.service"),m.default(e).map((function(e){return l(e)}))}),[l,s]);function u(e){var t=p();return t&&(t.placeholder=t.placeholder+e),null}function d(){var e=p();e&&(e.placeholder=e.placeholder.slice(0,-1))}function p(){return n&&n.current?n.current:a&&a.current&&a.current.querySelector("input")||null}t.useEffect((function(){if(!o){var e=p();e&&(e.placeholder="",new ae({strings:c,autoStart:!0,loop:!0,delay:32,deleteSpeed:32,pauseFor:1500,onCreateTextNode:u,onRemoveNode:d}))}}),[n,a])}var ie,re=f.default.div(ie||(ie=e.__makeTemplateObject(["\n user-select: none;\n input {\n pointer-events: none;\n background-color: white;\n }\n"],["\n user-select: none;\n input {\n pointer-events: none;\n background-color: white;\n }\n"])));function le(n){var o=n.focused,r=n.value,l=void 0===r?"":r,s=n.onClick,c=n.trackingAttributes,u=n.inputSearchPlaceholder,d=i.useTranslations().t,h=t.useRef(null);oe({wrapperRef:h,disabled:!!u});var f=t.useMemo((function(){return c?{"data-event-category":c.dataEventCategory,"data-event-action":c.dataEventAction,"data-event-label":c.dataEventLabel}:{}}),[c]);return p.default.createElement(re,e.__assign({onClick:function(){return s&&s()},ref:h},f),p.default.createElement(A,{inputClassName:"location"===o?"focused":void 0,name:"booking-search-placeholder",displayIcon:p.default.createElement(j,{color:a.theme.colors.gray400}),placeholder:d("booking.searchBar.searchInput.placeholder"),value:l,size:"md"}))}var se,ce,ue,de,pe,he,fe=f.default.header(se||(se=e.__makeTemplateObject(["\n display: flex;\n height: 64px;\n align-items: center;\n justify-content: space-between;\n margin: 0 auto;\n position: sticky;\n z-index: 99;\n background-color: white;\n top: 0;\n left: 0;\n"],["\n display: flex;\n height: 64px;\n align-items: center;\n justify-content: space-between;\n margin: 0 auto;\n position: sticky;\n z-index: 99;\n background-color: white;\n top: 0;\n left: 0;\n"]))),ge=f.default.div(ce||(ce=e.__makeTemplateObject(["\n display: inline-flex;\n flex: 1;\n justify-content: flex-end;\n cursor: pointer;\n text-decoration: underline;\n"],["\n display: inline-flex;\n flex: 1;\n justify-content: flex-end;\n cursor: pointer;\n text-decoration: underline;\n"]))),me=f.default.div(ue||(ue=e.__makeTemplateObject(["\n display: flex;\n align-items: center;\n margin-left: 16px;\n cursor: pointer;\n"],["\n display: flex;\n align-items: center;\n margin-left: 16px;\n cursor: pointer;\n"]))),Ce=f.default.div(de||(de=e.__makeTemplateObject(["\n width: 100%;\n margin-left: 24px;\n"],["\n width: 100%;\n margin-left: 24px;\n"]))),ve=f.default(o.Text)(pe||(pe=e.__makeTemplateObject(["\n color: ",";\n text-align: start;\n"],["\n color: ",";\n text-align: start;\n"])),a.theme.colors.secondaryDark),xe=function(e){var t=e.className,n=e.onLeftClick,o=e.headingText,i=e.onRightClick,r=e.iconLeft,l=e.textRight;return p.default.createElement(fe,{className:t},p.default.createElement(me,{onClick:n},r||p.default.createElement(P,{color:a.theme.colors.gray800})),p.default.createElement(Ce,null,p.default.createElement(ve,{size:"md",type:"bold"},o)),p.default.createElement(ge,{onClick:i},l&&p.default.createElement("p",null,l)))},ye={"en-PH":3,"tl-PH":2,"id-ID":3,"vi-VN":2,"zh-TW":0},be={isMobile:!1,isDebug:!1,navigateTo:null,geoLocationPermission:"unset",geoLocationCoordinates:null,focused:"none",searchLocationKeywords:"",searchKeywords:"",selectedLocation:null,defaultCity:null,initialCities:[],cities:[],searchResults:[],initialSearchResults:[],isLoadingCities:!1,isLoadingSearchResults:!1,isMobileModalOpened:!1,initialSelectedCity:null,autoCompleteDisabled:!1,inputSearchPlaceholder:"",locale:"vi-VN"};function _e(t){var n=t.selectedLocation,a=t.searchLocationKeywords;return n&&a!==n.name?e.__assign(e.__assign({},t),{searchLocationKeywords:n.name}):t}function we(t,a){var o;switch(t.isDebug&&console.log("bookingSearchBar",{action:a,state:t}),a.type){case he.NavigateTo:return e.__assign(e.__assign({},t),{navigateTo:a.payload,focused:"none",isMobileModalOpened:!1});case he.ClickOutsideInputLocation:return t.isMobile||"location"!==t.focused?t:_e(e.__assign(e.__assign({},t),{focused:"none"}));case he.ClickOutsideInputSearch:return t.isMobile||"search"!==t.focused?t:e.__assign(e.__assign({},t),{focused:"none"});case he.FocusInputLocation:var i=e.__assign(e.__assign({},t),{focused:"location"});return(null===(o=t.selectedLocation)||void 0===o?void 0:o.id)===n.ID_OPTION_CURRENT_LOCATION&&(i.searchLocationKeywords=""),i;case he.FocusInputSearch:var r=e.__assign(e.__assign({},t),{focused:"search"});return t.isMobile?_e(r):r;case he.ChangeInputLocation:return e.__assign(e.__assign({},t),{searchLocationKeywords:a.payload});case he.ChangeInputSearch:var l=a.payload;return e.__assign(e.__assign({},t),{searchKeywords:l,isLoadingSearchResults:l.trim().length>ye[t.locale]});case he.SelectCurrentLocation:return e.__assign(e.__assign({},t),{focused:"none",selectedLocation:a.payload,searchLocationKeywords:a.payload.name});case he.ClearInputLocation:return e.__assign(e.__assign({},t),{focused:"location",cities:t.initialCities,searchLocationKeywords:""});case he.ClearInputSearch:return e.__assign(e.__assign({},t),{focused:"search",searchKeywords:""});case he.SelectLocation:return e.__assign(e.__assign({},t),{focused:"none",selectedLocation:a.payload,searchLocationKeywords:a.payload.name});case he.SelectSearchResult:return e.__assign(e.__assign({},t),{searchKeywords:a.payload.name,isMobileModalOpened:!1,focused:"none",navigateTo:a.payload.url});case he.FetchCitiesStart:return e.__assign(e.__assign({},t),{isLoadingCities:!0});case he.FetchCitiesFinish:return e.__assign(e.__assign({},t),{isLoadingCities:!1});case he.FetchSearchResultsStart:return e.__assign(e.__assign({},t),{isLoadingSearchResults:!0});case he.FetchSearchResultsFinish:return e.__assign(e.__assign({},t),{isLoadingSearchResults:!1});case he.FetchSearchResultsComplete:var s=e.__assign(e.__assign({},t),{searchResults:a.payload});return 0===t.initialSearchResults.length&&(s.initialSearchResults=a.payload),s;case he.FetchCitiesByGeoIpComplete:var c=a.payload.cities,u=a.payload.default;(c=c.filter((function(e){return e.id!==u.id}))).unshift(u),t.initialSelectedCity&&!c.find((function(e){return e.id===t.initialSelectedCity.id}))&&c.unshift(t.initialSelectedCity);var d=e.__assign(e.__assign({},t),{defaultCity:u,initialCities:c,cities:c});return"denied"!==t.geoLocationPermission||t.initialSelectedCity||(d.selectedLocation=u,d.searchLocationKeywords=u.name),d;case he.FetchCitiesByKeywordComplete:return e.__assign(e.__assign({},t),{cities:a.payload});case he.DisplayInitialCities:return e.__assign(e.__assign({},t),{cities:t.initialCities});case he.DisplayInitialSearchResults:return e.__assign(e.__assign({},t),{searchResults:t.initialSearchResults,isLoadingSearchResults:!1});case he.GrantGeoLocationPermission:return e.__assign(e.__assign({},t),{geoLocationPermission:"granted",geoLocationCoordinates:a.payload});case he.DenyGeoLocationPermission:return e.__assign(e.__assign({},t),{geoLocationPermission:"denied",geoLocationCoordinates:null});case he.OpenMobileModal:return e.__assign(e.__assign({},t),{isMobileModalOpened:!0});case he.CloseMobileModal:return e.__assign(e.__assign({},t),{isMobileModalOpened:!1});case he.UpdateInitialSearchValue:return e.__assign(e.__assign({},t),{searchKeywords:a.payload});case he.SetInputSearchPlaceholder:return e.__assign(e.__assign({},t),{inputSearchPlaceholder:a.payload});default:return t}}!function(e){e.NavigateTo="navigate to url",e.ClickOutsideInputLocation="click outside input location",e.ClickOutsideInputSearch="click outside input search",e.SelectCurrentLocation="select current location",e.FocusInputLocation="focus input location",e.FocusInputSearch="focus input search",e.ChangeInputLocation="change input location",e.ChangeInputSearch="change input search",e.ClearInputLocation="clear input location",e.ClearInputSearch="clear input search",e.SelectLocation="select location",e.FetchCitiesStart="fetch cities start",e.FetchCitiesFinish="fetch cities finish",e.FetchSearchResultsStart="fetch search results start",e.FetchSearchResultsComplete="fetch search results complete",e.FetchSearchResultsFinish="fetch search results finish",e.FetchCitiesByGeoIpComplete="fetch cities by geo IP finish",e.FetchCitiesByKeywordComplete="fetch cities by keyword finish",e.DisplayInitialCities="display initial cities",e.DisplayInitialSearchResults="display initial search results",e.GrantGeoLocationPermission="grant geolocation permission",e.DenyGeoLocationPermission="deny geolocation permission",e.OpenMobileModal="open mobile modal",e.CloseMobileModal="close mobile modal",e.UpdateInitialSearchValue="update initial search value",e.SelectSearchResult="select search result",e.SetInputSearchPlaceholder="set input search placeholder"}(he||(he={}));var Ee,ke,Le,Se,Te,Oe,Ie,Me=function(e,n){var a=t.useCallback((function(t){e.current&&!e.current.contains(t.target)&&n(t.target)}),[]);t.useEffect((function(){return document.addEventListener("mousedown",a),function(){document.removeEventListener("mousedown",a)}}))},Re=function(){return p.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 18 18"},p.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.97887 8.15493C2.97887 5.29627 5.29627 2.97887 8.15493 2.97887C11.0136 2.97887 13.331 5.29627 13.331 8.15493C13.331 11.0136 11.0136 13.331 8.15493 13.331C5.29627 13.331 2.97887 11.0136 2.97887 8.15493ZM8.15493 1.5C4.47951 1.5 1.5 4.47951 1.5 8.15493C1.5 11.8303 4.47951 14.8099 8.15493 14.8099C9.72624 14.8099 11.1704 14.2653 12.3089 13.3546L15.2377 16.2834C15.5265 16.5722 15.9947 16.5722 16.2834 16.2834C16.5722 15.9947 16.5722 15.5265 16.2834 15.2377L13.3546 12.3089C14.2653 11.1704 14.8099 9.72624 14.8099 8.15493C14.8099 4.47951 11.8303 1.5 8.15493 1.5Z",fill:"white"}))},Ae=f.default.button(Ee||(Ee=e.__makeTemplateObject(["\n min-height: 100%;\n border-radius: 6px;\n background-color: ",";\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 11px;\n cursor: pointer;\n flex: 0.3;\n\n "," {\n --margin: 16px;\n min-height: 32px;\n margin: var(--margin);\n width: calc(100% - var(--margin) * 2);\n position: absolute;\n bottom: 0;\n }\n\n &:hover {\n background-color: ",";\n }\n\n &:active {\n background-color: ",";\n }\n\n &:focus-visible {\n outline: 1px solid black;\n }\n"],["\n min-height: 100%;\n border-radius: 6px;\n background-color: ",";\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 11px;\n cursor: pointer;\n flex: 0.3;\n\n "," {\n --margin: 16px;\n min-height: 32px;\n margin: var(--margin);\n width: calc(100% - var(--margin) * 2);\n position: absolute;\n bottom: 0;\n }\n\n &:hover {\n background-color: ",";\n }\n\n &:active {\n background-color: ",";\n }\n\n &:focus-visible {\n outline: 1px solid black;\n }\n"])),(function(e){return e.theme.colors.primaryBase}),i.MediaQueries.mbDown,(function(e){return e.theme.colors.primaryHover}),(function(e){return e.theme.colors.primaryActive})),Ne=f.default(o.Text)(ke||(ke=e.__makeTemplateObject(["\n font-weight: ",";\n"],["\n font-weight: ",";\n"])),(function(e){return e.theme.sizes.fwSemiBold})),Pe=function(e){var t=e.onClick,n=(0,i.useTranslations().t)("booking.searchBar.searchButton");return p.default.createElement(Ae,{onClick:t,title:n},p.default.createElement(Re,null),p.default.createElement(Ne,{size:"s3",color:"white"},n))},Fe=f.default.div(Le||(Le=e.__makeTemplateObject(["\n display: flex;\n gap: 16px;\n "," {\n flex-direction: column;\n padding: 14px;\n background-color: ",";\n\n input {\n filter: drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.06))\n drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.04));\n }\n }\n\n input {\n background-color: white;\n }\n"],["\n display: flex;\n gap: 16px;\n "," {\n flex-direction: column;\n padding: 14px;\n background-color: ",";\n\n input {\n filter: drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.06))\n drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.04));\n }\n }\n\n input {\n background-color: white;\n }\n"])),i.MediaQueries.mbDown,a.theme.colors.blue50),ze=f.default.div(Se||(Se=e.__makeTemplateObject(["\n position: relative;\n"],["\n position: relative;\n"]))),je=f.default(ze)(Te||(Te=e.__makeTemplateObject(["\n flex: 1;\n"],["\n flex: 1;\n"]))),De=f.default(ze)(Oe||(Oe=e.__makeTemplateObject(["\n flex: 2;\n"],["\n flex: 2;\n"]))),He=f.default((function(e){var t=e.className,n=e.color;return p.default.createElement("svg",{className:t,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("rect",{x:"4",y:"4",width:"16",height:"16",rx:"8",fill:"white"}),p.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM8.29289 8.29289C8.68342 7.90237 9.31658 7.90237 9.70711 8.29289L12 10.5858L14.2929 8.29289C14.6834 7.90237 15.3166 7.90237 15.7071 8.29289C16.0976 8.68342 16.0976 9.31658 15.7071 9.70711L13.4142 12L15.7071 14.2929C16.0976 14.6834 16.0976 15.3166 15.7071 15.7071C15.3166 16.0976 14.6834 16.0976 14.2929 15.7071L12 13.4142L9.70711 15.7071C9.31658 16.0976 8.68342 16.0976 8.29289 15.7071C7.90237 15.3166 7.90237 14.6834 8.29289 14.2929L10.5858 12L8.29289 9.70711C7.90237 9.31658 7.90237 8.68342 8.29289 8.29289Z",fill:n||"currentColor"}))}))(Ie||(Ie=e.__makeTemplateObject(["\n display: none;\n &.shown {\n display: block;\n }\n"],["\n display: none;\n &.shown {\n display: block;\n }\n"])));function Ve(e){var o=e.isMobile,r=e.state,l=e.dispatch,s=e.debouncedFetchCitiesByKeyword,c=e.debouncedFetchSearchResults,u=e.focusLocationInput,d=e.focusSearchInput,h=e.renderLocationResults,f=e.renderSearchResults,g=e.trackingAttributes,m=e.onSearch,C=e.initalSearchValue,v=t.useRef(null),x=t.useRef(null),y=r.focused,b=r.searchLocationKeywords,_=r.geoLocationPermission,w=r.selectedLocation,E=r.searchKeywords,k=r.inputSearchPlaceholder,L=i.useTranslations().t;oe({wrapperRef:x,disabled:!!k}),Me(v,(function(){l({type:he.ClickOutsideInputLocation})})),Me(x,(function(){l({type:he.ClickOutsideInputSearch})}));var S=t.useMemo((function(){return"granted"===_&&(null==w?void 0:w.id)===n.ID_OPTION_CURRENT_LOCATION?a.theme.colors.primaryBase:a.theme.colors.gray400}),[_,w]),T=t.useCallback((function(e){l({type:he.ChangeInputSearch,payload:e}),"function"!=typeof m&&(e.trim().length>ye[r.locale]||C?c(e.trim(),r):(c.cancel(),l({type:he.DisplayInitialSearchResults})))}),[l,r]),O=t.useCallback((function(e){l({type:he.ChangeInputLocation,payload:e}),e.trim().length>ye[r.locale]?s(e.trim()):(s.cancel(),l({type:he.DisplayInitialCities}))}),[s,l]);return p.default.createElement(Fe,null,p.default.createElement(je,{ref:v},p.default.createElement(A,{inputClassName:"location"===y?"focused":void 0,placeholder:L("booking.searchBar.locationPlaceholder"),autoComplete:"off",name:"search-location",displayIcon:p.default.createElement(F,{className:"location-pin-icon",color:S}),actionIcon:p.default.createElement(He,{color:a.theme.colors.gray300,className:""!==b?"shown":""}),onActionClick:function(){l({type:he.ClearInputLocation}),s.cancel(),u()},value:b,onChange:O,onFocus:function(){return l({type:he.FocusInputLocation})},size:"md"}),!o&&h()),p.default.createElement(De,{ref:x},p.default.createElement(A,{placeholder:k||L("booking.searchBar.searchInput.placeholder"),autoComplete:"off",name:"search-results",actionIcon:p.default.createElement(He,{color:a.theme.colors.gray300,className:""!==E?"shown":""}),onActionClick:function(){l({type:he.ClearInputSearch}),c.cancel(),c("",r),d()},value:E,onChange:T,onFocus:function(){return l({type:he.FocusInputSearch})},inputClassName:"search"===y?"focused":void 0,size:"md",trackingAttributes:g,onKeyPress:function(e){r.autoCompleteDisabled&&"Enter"===e.key&&m&&m({cityId:r.selectedLocation.id,keyword:E})},enterKeyHint:r.autoCompleteDisabled?"search":void 0}),!o&&f()),r.autoCompleteDisabled&&!r.isMobile&&p.default.createElement(Pe,{onClick:function(){m({cityId:r.selectedLocation.id,keyword:E})}}))}var Be,Ke,Ze,Ge,Ue,Qe,qe,We,Ye,Je,Xe,$e,et,tt,nt=f.default.li(Be||(Be=e.__makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: var(--rowGap);\n cursor: pointer;\n"],["\n display: flex;\n align-items: center;\n gap: var(--rowGap);\n cursor: pointer;\n"]))),at=f.default.div(Ke||(Ke=e.__makeTemplateObject(["\n --wrapper-size: var(--graphicSize);\n border-radius: calc(var(--wrapper-size) / 2);\n background-color: var(--neutral50);\n width: var(--wrapper-size);\n height: var(--wrapper-size);\n aspect-ratio: 1/1;\n overflow: hidden;\n\n ","\n\n img {\n width: var(--graphicSize);\n height: var(--graphicSize);\n ","\n }\n\n &:focus-visible {\n outline: 1px solid ",";\n }\n"],["\n --wrapper-size: var(--graphicSize);\n border-radius: calc(var(--wrapper-size) / 2);\n background-color: var(--neutral50);\n width: var(--wrapper-size);\n height: var(--wrapper-size);\n aspect-ratio: 1/1;\n overflow: hidden;\n\n ","\n\n img {\n width: var(--graphicSize);\n height: var(--graphicSize);\n ","\n }\n\n &:focus-visible {\n outline: 1px solid ",";\n }\n"])),(function(e){var t=e.type;return t&&"doctors"===t&&"\n border-radius: calc(var(--graphicSize) / 2);\n "}),(function(e){var t=e.type;return t&&"doctors"===t?"\n\n object-fit: cover; \n ":"\n object-fit: contain;\n "}),a.theme.colors.gray600),ot=f.default(o.Text)(Ze||(Ze=e.__makeTemplateObject(["\n line-height: 22px;\n letter-spacing: -0.2px;\n\n "," {\n &[data-size='p3'] {\n font-size: 14px;\n }\n }\n"],["\n line-height: 22px;\n letter-spacing: -0.2px;\n\n "," {\n &[data-size='p3'] {\n font-size: 14px;\n }\n }\n"])),i.MediaQueries.tdUp),it=f.default.figure(Ge||(Ge=e.__makeTemplateObject(["\n max-width: var(--graphicSize);\n min-width: var(--graphicSize);\n"],["\n max-width: var(--graphicSize);\n min-width: var(--graphicSize);\n"]))),rt=f.default.svg(Ue||(Ue=e.__makeTemplateObject(["\n margin: 0 auto;\n display: block;\n"],["\n margin: 0 auto;\n display: block;\n"]))),lt=f.default.div(Qe||(Qe=e.__makeTemplateObject(["\n display: grid;\n place-items: center;\n"],["\n display: grid;\n place-items: center;\n"]))),st={doctors:function(e){var t=e.width,n=e.height;return p.default.createElement("svg",{width:t||32,height:n||32,viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("g",{clipPath:"url(#clip0_14712_400114)"},p.default.createElement("rect",{width:"32",height:"32",rx:"16",fill:"#E4E8EC"}),p.default.createElement("path",{d:"M22.065 9.58305C22.1108 9.80952 22.1431 10.0396 22.1614 10.2722C22.3769 13.0522 22.5858 16.1276 22.5727 17.618C22.5306 20.5688 19.708 21.1325 19.4564 21.1769L19.4495 21.5357L19.5228 23.9014C20.8688 23.9341 22.203 24.1759 23.4772 24.6196C24.5264 24.9739 25.4827 25.5591 26.2757 26.332C27.0688 27.105 27.6783 28.0461 28.0594 29.0858L31.9886 39.2068C31.91 39.3048 30.6939 39.6356 29.4888 39.944C30.1695 42.3315 30.4582 44.8142 30.3432 47.2953C30.2991 48.2666 30.1816 49.264 29.7245 50.1211C29.4508 50.6342 29.0319 51.0912 28.5296 51.3753C28.5099 51.4347 28.4864 51.4928 28.4593 51.5495C28.4293 51.6146 28.3908 51.6756 28.3448 51.7307C28.3293 51.7772 28.3232 51.8406 28.3162 51.9135C28.3004 52.0779 28.2799 52.2909 28.1362 52.4685C28.001 52.6373 27.8519 52.7945 27.6905 52.9386C27.6905 52.9386 27.092 52.9667 26.4133 52.9845L26.458 58.4088H5.7492L6.30965 52.9523L5.66093 53.1637C5.07664 53.3528 4.45628 53.4028 3.84925 53.3099C3.24222 53.2169 2.66526 52.9835 2.1643 52.6283C1.61489 52.2388 1.17445 51.715 0.884966 51.1068C0.595484 50.4987 0.46662 49.8266 0.510669 49.1545L0.644528 47.1369L1.41503 38.3366L1.81323 38.4135L-0.914307 37.8437L-0.402886 36.5663C-0.407359 36.5645 -0.411803 36.5627 -0.416214 36.5608C-0.410804 36.56 -0.40538 36.5594 -0.399946 36.5589L2.05995 30.4146C3.00034 28.0825 4.7421 26.1624 6.97187 24.9999C8.56171 24.176 10.3028 23.6861 12.0882 23.5597L11.788 16.5865C11.1882 16.6507 10.0095 16.5266 9.96087 14.954C9.91229 13.3824 11.0457 13.3171 11.6507 13.3961L11.6445 13.2523C11.5785 12.8433 11.5088 12.439 11.4577 12.2132C11.3782 11.8628 11.2611 11.4953 11.1419 11.1207C10.8794 10.2967 10.6061 9.43855 10.697 8.65293C10.697 8.65293 10.6909 8.00438 11.4565 7.24044C11.3707 6.86644 11.3686 6.47786 11.4507 6.10258C11.5366 5.70965 11.7125 5.34199 11.9645 5.02848C12.2165 4.71497 12.5377 4.46414 12.9029 4.29569C13.2682 4.12725 13.6675 4.04577 14.0696 4.05766C14.2277 4.06393 14.3849 4.08493 14.5418 4.10589C14.7932 4.13945 15.0439 4.17294 15.2971 4.14581C15.7708 4.09409 16.177 3.83884 16.5862 3.58167C16.8357 3.42492 17.0863 3.26745 17.354 3.15494C17.9119 2.93744 18.5266 2.91281 19.1002 3.08497C19.6738 3.25713 20.1733 3.61619 20.5192 4.105C20.5943 4.21716 20.6621 4.33678 20.7298 4.45631C20.9035 4.76299 21.077 5.06915 21.373 5.24769C21.5927 5.38236 21.8482 5.42658 22.1057 5.47114C22.2633 5.49842 22.4216 5.52582 22.5728 5.57417C23.0267 5.71015 23.3999 6.0411 23.6319 6.45436C23.6327 6.40753 23.6317 6.36062 23.629 6.31374C23.6502 6.3657 23.6623 6.42092 23.6649 6.47698C23.6661 6.49165 23.667 6.50632 23.6677 6.521C23.8246 6.82609 23.9058 7.17114 23.8885 7.51347C23.8544 7.93447 23.7053 8.33801 23.4574 8.68001C23.2096 9.02201 22.8725 9.28933 22.483 9.45278C22.3469 9.50712 22.2071 9.55061 22.065 9.58305Z",fill:"white"})),p.default.createElement("defs",null,p.default.createElement("clipPath",{id:"clip0_14712_400114"},p.default.createElement("rect",{width:"32",height:"32",rx:"16",fill:"white"}))))},services:function(e){var t=e.width,n=e.height;return p.default.createElement("svg",{width:t||30,height:n||30,viewBox:"0 0 30 30",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p.default.createElement("circle",{cx:"15",cy:"15",r:"15",fill:"#F7F9FC"}),p.default.createElement("path",{d:"M14.9998 6.66663C12.2752 6.66663 9.85335 7.97848 8.33317 9.99996H10.5988C11.8 8.94527 13.3625 8.33329 14.9998 8.33329C16.6372 8.33329 18.1997 8.94527 19.4009 9.99996H21.6665C20.1463 7.97848 17.7244 6.66663 14.9998 6.66663ZM7.7863 10.8333C7.07666 13.0403 6.6665 15.5989 6.6665 18.3333C6.6665 20.0846 6.82601 21.7675 7.13525 23.3333H22.8644C23.1737 21.7675 23.3332 20.0846 23.3332 18.3333C23.3332 15.5989 22.923 13.0403 22.2134 10.8333H7.7863ZM14.9998 13.3333C17.3013 13.3333 19.1665 15.1985 19.1665 17.5C19.1665 19.8014 17.3013 21.6666 14.9998 21.6666C12.6984 21.6666 10.8332 19.8014 10.8332 17.5C10.8332 15.1985 12.6984 13.3333 14.9998 13.3333ZM14.1665 15V16.6666H12.4998V18.3333H14.1665V20H15.8332V18.3333H17.4998V16.6666H15.8332V15H14.1665Z",fill:"#BFC5CC"}))}},ct=function(e){var n=e.type,o=e.item,i=e.imageUrl,r=e.onClickItem,l=t.useMemo((function(){var e=st[n]||D;return p.default.createElement(e,{width:32,height:"services"===n?32:24})}),[n]);return p.default.createElement(nt,{onClick:function(){return r&&r(o)},onKeyDown:function(e){"Enter"!==e.key&&"Space"!==e.key||r&&r(o)},tabIndex:0,role:"button"},p.default.createElement(it,null,"hospitals"===n?p.default.createElement(rt,{width:"12",height:"16",viewBox:"0 0 12 16"},p.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0.75 5.94873C0.75 3.04623 3.0975 0.69873 6 0.69873C8.9025 0.69873 11.25 3.04623 11.25 5.94873C11.25 9.07623 7.935 13.3887 6.5775 15.0312C6.2775 15.3912 5.73 15.3912 5.43 15.0312C4.065 13.3887 0.75 9.07623 0.75 5.94873ZM4.125 5.94873C4.125 6.98373 4.965 7.82373 6 7.82373C7.035 7.82373 7.875 6.98373 7.875 5.94873C7.875 4.91373 7.035 4.07373 6 4.07373C4.965 4.07373 4.125 4.91373 4.125 5.94873Z",fill:"#9AA2AC"})):p.default.createElement(at,{type:n},i?p.default.createElement("img",{src:i,width:32,height:"services"===n?32:24}):l)),p.default.createElement(ot,{color:a.theme.colors.gray800,size:"p3"},o.name))},ut=function(){return p.default.createElement("svg",{width:"14",height:"18",viewBox:"0 0 14 18"},p.default.createElement("path",{d:"M7.00004 0.666992C5.29757 0.666992 3.64067 0.813476 2.52087 1.03158C1.73311 1.18457 1.16671 1.86816 1.16671 2.6722V4.83366C1.16671 5.29264 1.54106 5.66699 2.00004 5.66699H12C12.459 5.66699 12.8334 5.29264 12.8334 4.83366V2.69824C12.8334 1.89421 12.267 1.21061 11.4792 1.05762C10.3562 0.839518 8.69275 0.666992 7.00004 0.666992ZM6.16671 1.50033H7.83337V2.33366H8.66671V4.00033H7.83337V4.83366H6.16671V4.00033H5.33337V2.33366H6.16671V1.50033ZM1.42712 6.50033C1.3197 6.89421 1.24158 7.32389 1.19275 7.77637C1.14718 8.18001 1.05603 9.25423 1.06254 9.36491C0.603556 9.72624 0.333374 10.2861 0.333374 10.9014C0.333374 11.8356 0.977906 12.6364 1.84379 12.8285C2.74548 15.0192 4.55212 17.3337 7.00004 17.3337C9.44796 17.3337 11.2546 14.9964 12.1563 12.8024C13.0222 12.6136 13.6667 11.8356 13.6667 10.9014C13.6667 10.2861 13.3965 9.72624 12.9375 9.36491C12.9441 9.25423 12.8562 8.16048 12.8073 7.75033C12.7552 7.30436 12.6804 6.89095 12.573 6.50033H5.35942C6.52804 8.20606 9.27543 7.18717 11.0365 7.62012C11.5736 8.79199 11.1667 10.4326 11.1667 10.4326L11.8177 10.641C11.9121 10.6702 12 10.7549 12 10.9014C12 11.0576 11.8861 11.1943 11.6875 11.1878L11.0105 11.0837L10.7761 11.7347C9.96554 14.0492 8.4128 15.667 7.00004 15.667C5.58728 15.667 4.03455 14.0492 3.224 11.7347L2.96358 11.0837L2.26046 11.1878C2.11723 11.1878 2.00004 11.0576 2.00004 10.9014C2.00004 10.7549 2.08793 10.6702 2.18233 10.641L2.83337 10.4326C2.73246 10.5531 2.4102 8.7041 2.83337 8.03678C3.59184 7.5127 4.2266 7.87728 5.12504 6.50033H1.42712ZM5.17712 9.05241C4.57166 9.05241 4.08337 9.55371 4.08337 10.1722C4.08337 10.7907 4.57166 11.292 5.17712 11.292C5.78259 11.292 6.27087 10.7907 6.27087 10.1722C6.27087 9.55371 5.78259 9.05241 5.17712 9.05241ZM8.82296 9.05241C8.21749 9.05241 7.72921 9.55371 7.72921 10.1722C7.72921 10.7907 8.21749 11.292 8.82296 11.292C9.42843 11.292 9.91671 10.7907 9.91671 10.1722C9.91671 9.55371 9.42843 9.05241 8.82296 9.05241Z",fill:"#9AA2AC"}))},dt=function(){return p.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 18 18"},p.default.createElement("path",{d:"M8.99996 0.666992C6.27535 0.666992 3.85348 1.97884 2.33329 4.00033H4.59892C5.80009 2.94564 7.36259 2.33366 8.99996 2.33366C10.6373 2.33366 12.1998 2.94564 13.401 4.00033H15.6666C14.1464 1.97884 11.7246 0.666992 8.99996 0.666992ZM1.78642 4.83366C1.07678 7.04069 0.666626 9.59928 0.666626 12.3337C0.666626 14.085 0.826131 15.7679 1.13538 17.3337H16.8645C17.1738 15.7679 17.3333 14.085 17.3333 12.3337C17.3333 9.59928 16.9231 7.04069 16.2135 4.83366H1.78642ZM8.99996 7.33366C11.3014 7.33366 13.1666 9.19889 13.1666 11.5003C13.1666 13.8018 11.3014 15.667 8.99996 15.667C6.69853 15.667 4.83329 13.8018 4.83329 11.5003C4.83329 9.19889 6.69853 7.33366 8.99996 7.33366ZM8.16663 9.00033V10.667H6.49996V12.3337H8.16663V14.0003H9.83329V12.3337H11.5V10.667H9.83329V9.00033H8.16663Z",fill:"#9AA2AC"}))},pt=function(){return p.default.createElement("svg",{width:"16",height:"17",viewBox:"0 0 16 17"},p.default.createElement("path",{d:"M8 0.666992L0.5 5.63533V14.8337C0.5 15.7545 1.24583 16.5003 2.16667 16.5003H13.8333C14.7542 16.5003 15.5 15.7545 15.5 14.8337V5.63533L8 0.666992ZM11.3333 10.667H8.83333V13.167H7.16667V10.667H4.66667V9.00033H7.16667V6.50033H8.83333V9.00033H11.3333V10.667Z",fill:"#9AA2AC"}))},ht=function(){return p.default.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16"},p.default.createElement("path",{d:"M3.83333 0.5C2.94928 0.5 2.10143 0.851189 1.47631 1.47631C0.851189 2.10143 0.5 2.94928 0.5 3.83333C0.5 4.71739 0.851189 5.56523 1.47631 6.19036C2.10143 6.81548 2.94928 7.16667 3.83333 7.16667C4.71739 7.16667 5.56523 6.81548 6.19036 6.19036C6.81548 5.56523 7.16667 4.71739 7.16667 3.83333C7.16667 2.94928 6.81548 2.10143 6.19036 1.47631C5.56523 0.851189 4.71739 0.5 3.83333 0.5V0.5ZM10.5 0.5C9.57917 0.5 8.83333 1.24583 8.83333 2.16667V5.5C8.83333 6.42083 9.57917 7.16667 10.5 7.16667H13.8333C14.7542 7.16667 15.5 6.42083 15.5 5.5V2.16667C15.5 1.24583 14.7542 0.5 13.8333 0.5H10.5ZM3.83333 8.83333C2.94928 8.83333 2.10143 9.18452 1.47631 9.80964C0.851189 10.4348 0.5 11.2826 0.5 12.1667C0.5 13.0507 0.851189 13.8986 1.47631 14.5237C2.10143 15.1488 2.94928 15.5 3.83333 15.5C4.71739 15.5 5.56523 15.1488 6.19036 14.5237C6.81548 13.8986 7.16667 13.0507 7.16667 12.1667C7.16667 11.2826 6.81548 10.4348 6.19036 9.80964C5.56523 9.18452 4.71739 8.83333 3.83333 8.83333V8.83333ZM12.1667 8.83333C11.2826 8.83333 10.4348 9.18452 9.80964 9.80964C9.18452 10.4348 8.83333 11.2826 8.83333 12.1667C8.83333 13.0507 9.18452 13.8986 9.80964 14.5237C10.4348 15.1488 11.2826 15.5 12.1667 15.5C13.0507 15.5 13.8986 15.1488 14.5237 14.5237C15.1488 13.8986 15.5 13.0507 15.5 12.1667C15.5 11.2826 15.1488 10.4348 14.5237 9.80964C13.8986 9.18452 13.0507 8.83333 12.1667 8.83333V8.83333Z",fill:"#9AA2AC"}))},ft=f.default.header(qe||(qe=e.__makeTemplateObject(["\n display: flex;\n justify-content: space-between;\n padding: 12px 24px;\n background-color: ",";\n box-shadow: inset 0px 1px 0px #e4e8ec;\n"],["\n display: flex;\n justify-content: space-between;\n padding: 12px 24px;\n background-color: ",";\n box-shadow: inset 0px 1px 0px #e4e8ec;\n"])),a.theme.colors.neutral50),gt=f.default.div(We||(We=e.__makeTemplateObject(["\n display: grid;\n flex: 2;\n align-items: center;\n gap: 16px;\n grid-template-columns: 16px 1fr;\n"],["\n display: grid;\n flex: 2;\n align-items: center;\n gap: 16px;\n grid-template-columns: 16px 1fr;\n"]))),mt=f.default.p(Ye||(Ye=e.__makeTemplateObject(["\n color: ",";\n font-size: 14px;\n font-weight: ",";\n letter-spacing: -0.2px;\n line-height: 22px;\n"],["\n color: ",";\n font-size: 14px;\n font-weight: ",";\n letter-spacing: -0.2px;\n line-height: 22px;\n"])),a.theme.colors.neutral800,a.theme.sizes.fwSemiBold),Ct=f.default.button(Je||(Je=e.__makeTemplateObject(["\n flex: 1;\n cursor: pointer;\n text-align: end;\n"],["\n flex: 1;\n cursor: pointer;\n text-align: end;\n"]))),vt=f.default.section(Xe||(Xe=e.__makeTemplateObject(["\n padding: 12px 16px;\n --rowGap: 16px;\n --graphicSize: 32px;\n\n "," {\n --rowGap: 8px;\n }\n"],["\n padding: 12px 16px;\n --rowGap: 16px;\n --graphicSize: 32px;\n\n "," {\n --rowGap: 8px;\n }\n"])),i.MediaQueries.tdUp),xt=f.default.ul($e||($e=e.__makeTemplateObject(["\n --gap: 16px;\n "," {\n --gap: 8px;\n }\n\n display: grid;\n overflow: hidden;\n gap: var(--gap);\n transition: max-height 0.8s ease-out;\n\n ","\n\n ","\n\n@media (prefers-reduced-motion) {\n transition: none;\n }\n\n "," {\n grid-template-columns: 1fr 1fr;\n } ;\n"],["\n --gap: 16px;\n "," {\n --gap: 8px;\n }\n\n display: grid;\n overflow: hidden;\n gap: var(--gap);\n transition: max-height 0.8s ease-out;\n\n ","\n\n ","\n\n@media (prefers-reduced-motion) {\n transition: none;\n }\n\n "," {\n grid-template-columns: 1fr 1fr;\n } ;\n"])),i.MediaQueries.tdUp,(function(e){return e.isMore&&"\n height: auto;\n max-height: 0;\n margin-top: var(--gap);\n "}),(function(e){return e.isShown&&"\n max-height: 600px;\n "}),i.MediaQueries.tdUp),yt=f.default(o.Text)(et||(et=e.__makeTemplateObject(["\n margin-top: 12px;\n margin-bottom: 8px;\n cursor: pointer;\n text-align: start;\n text-transform: capitalize;\n"],["\n margin-top: 12px;\n margin-bottom: 8px;\n cursor: pointer;\n text-align: start;\n text-transform: capitalize;\n"]))),bt=function(e){var r=e.type,l=e.data,s=e.state,c=e.dispatch,u=e.itemsToShow,d=e.itemsToShowDesktop,h=e.isMobile,f=e.isLoading,m=e.keyword,C=t.useState(!1),v=C[0],x=C[1],y=i.useTranslations(),b=y.t,_=y.locale,w=s.selectedLocation,E=s.searchKeywords,k=t.useMemo((function(){return n.LOCALIZED_SLUGS[_]}),[_]),L=t.useMemo((function(){return{doctors:{name:b("booking.searchPopup.doctors"),icon:p.default.createElement(ut,null),slug:k.DOCTOR},services:{name:b("booking.searchPopup.services"),icon:p.default.createElement(dt,null),slug:k.SERVICE},hospitals:{name:b("booking.searchPopup.hospitals"),icon:p.default.createElement(pt,null),slug:k.HOSPITAL},specialties:{name:b("booking.searchPopup.specialties"),icon:p.default.createElement(ht,null),slug:k.SPECIALTIES}}}),[r,k]),S=t.useMemo((function(){return L[r].slug}),[L]),T=h?u:d;function O(e){var t="";switch(r){case"specialties":t="/".concat(w.slug,"/").concat(L.doctors.slug,"/").concat(e.slug);break;case"services":t="/".concat(w.slug,"/").concat(S,"/").concat(e.slug);break;case"doctors":case"hospitals":t="/".concat(S,"/").concat(e.slug,"-").concat(e.id)}t&&c({type:he.SelectSearchResult,payload:{name:e.name,url:t}})}function I(e){return p.default.createElement(ct,{key:e.id,item:e,type:r,imageUrl:e.logo||e.avatar||e.thumbnail,onClickItem:O})}return p.default.createElement("section",null,p.default.createElement(ft,null,p.default.createElement(gt,null,L[r].icon,p.default.createElement(mt,null,L[r].name)),p.default.createElement(Ct,{onClick:function(){var e="";switch(r){case"specialties":e="/".concat(S);break;case"services":case"doctors":case"hospitals":e="/".concat(w.slug,"/").concat(S)}e&&c({type:he.NavigateTo,payload:e})}},p.default.createElement(o.Text,{size:"p3",color:a.theme.colors.primaryBase},b("booking.searchPopup.seeAll")))),(f||l&&l.length>0)&&p.default.createElement(vt,null,p.default.createElement(xt,null,f&&Array(2).fill(void 0).map((function(e,t){return p.default.createElement(nt,{key:r+"loading"+t},p.default.createElement(it,null,p.default.createElement(lt,null,p.default.createElement(g.default,{height:14,width:"hospitals"===r?12:32,style:{maxWidth:"var(--graphicSize)",minHeight:"var(--graphicSize)"}}))),p.default.createElement(g.default,{width:120,height:24}))})),!f&&l&&l.length>0&&l.slice(0,T).map(I)),p.default.createElement(xt,{isShown:v,isMore:!0},l.slice(T,-1).map(I)),"specialties"===r&&T<l.length&&!f&&p.default.createElement("button",{onClick:function(){return x(!v)}},p.default.createElement(yt,{size:"p3",color:a.theme.colors.primaryBase},b(v?"booking.searchPopup.seeLessSpecialties":"booking.searchPopup.seeMoreSpecialties"))),"specialties"!==r&&T<l.length&&!f&&m.trim().length>ye[_]&&p.default.createElement("button",{onClick:function(){var e=L[r].slug,t="/".concat(w.slug,"/").concat(e,"?q=").concat(E);c({type:he.NavigateTo,payload:t})}},p.default.createElement(yt,{size:"p3",color:a.theme.colors.primaryBase},b("booking.searchPopup.searchIn.".concat(r),{name:m})))),!f&&0===(null==l?void 0:l.length)&&p.default.createElement(vt,null,p.default.createElement(o.Text,{size:"sm",color:a.theme.colors.gray400},b("booking.searchBar.noResults"))))},_t=f.default.section(tt||(tt=e.__makeTemplateObject(["\n background-color: white;\n border-radius: 4px;\n position: absolute;\n width: 100%;\n z-index: 30;\n\n "," {\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n }\n"],["\n background-color: white;\n border-radius: 4px;\n position: absolute;\n width: 100%;\n z-index: 30;\n\n "," {\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n }\n"])),i.MediaQueries.tdUp),wt=function(e){var t=e.data,n=e.state,a=e.dispatch,o=e.isMobile,i=e.isLoading,r=e.keyword;return p.default.createElement(_t,null,t&&t.map((function(e){return p.default.createElement(bt,{type:e.type,state:n,dispatch:a,itemsToShow:2,itemsToShowDesktop:4,key:e.type,data:e.results,isMobile:o,isLoading:i,keyword:r})})))},Et="api/lists/cities?keyword={keyword}&country_id={countryId}&site={domain}&_nopaging={nopaging}",kt="api/v2/search/?site={domain}&type={searchType}&keyword={keyword}&city_id={city}&latitude={lat}&longitude={lng}",Lt="api/geobyip?site={domain}&latitude={lat}&longitude={lng}",St=function(t,a,o){return i.stringFormat(t,e.__assign(e.__assign({},a),{domain:n.domainLocales[o||"en-PH"]}))};var Tt;!function(e){e[e.SPECIALTY=1]="SPECIALTY",e[e.DOCTOR=2]="DOCTOR",e[e.CLINIC=3]="CLINIC",e[e.SERVICE=4]="SERVICE"}(Tt||(Tt={}));var Ot=Object.freeze({__proto__:null,get RedirectType(){return Tt}});exports.BookingSearchBar=function(r){var l=r.isMobile,s=r.careApiDomain,c=r.geoLocationPermission,u=r.geoLocationCoordinates,d=r.initialSelectedCity,f=r.initialSearchValue,g=void 0===f?"":f,m=r.careFrontDomain,C=void 0===m?"/care":m,v=r.isDebug,x=void 0!==v&&v,y=r.askForGeolocationPermission,b=void 0!==y&&y,_=r.gaTrackingSearchBar,w=r.autoCompleteDisabled,E=void 0!==w&&w,k=r.inputSearchPlaceholder,L=void 0===k?"":k,S=r.routerPush,T=r.onGeoLocationPermissionChange,A=r.onSearch,P=r.onChangeLocation,F=i.useTranslations(),z=F.t,j=F.locale,D=t.useRef(null),H=t.useRef(null),V=t.useState(void 0),B=V[0],K=V[1],Z=function(){var e=t.useState((function(){if("undefined"==typeof window)return"unset";if(o.getCookie(a.USER_GEOLOCATION_COORDINATES_COOKIE))return"granted";var e=!location.protocol.includes("https")&&"localhost"!==location.hostname;return!navigator.geolocation||e?"denied":"unset"})),n=e[0],i=e[1],r=t.useState((function(){if("undefined"==typeof window)return null;var e=o.getCookie(a.USER_GEOLOCATION_COORDINATES_COOKIE);if(e)try{return JSON.parse(e)}catch(e){console.log(e)}return null})),l=r[0],s=r[1],c=t.useCallback((function(){navigator.geolocation&&navigator.geolocation.getCurrentPosition((function(e){var t={lat:"".concat(Math.round(1e7*e.coords.latitude)/1e7),lng:"".concat(Math.round(1e7*e.coords.longitude)/1e7)};o.setCookie(a.USER_GEOLOCATION_COORDINATES_COOKIE,JSON.stringify(t),0,15),s(t),i("granted")}),(function(){o.deleteCookie(a.USER_GEOLOCATION_COORDINATES_COOKIE),i("denied")}))}),[]);return t.useMemo((function(){return{geoLocationPermission:n,geoLocationCoordinates:l,requestGeoLocation:c}}),[n,l])}(),G=Z.geoLocationPermission,Q=Z.geoLocationCoordinates,q=Z.requestGeoLocation,W=t.useReducer(we,be,(function(t){return e.__assign(e.__assign({},t),{isDebug:x,isMobile:l,geoLocationPermission:c||G||"unset",geoLocationCoordinates:u||Q||null,searchKeywords:g,initialSelectedCity:d||null,selectedLocation:d||t.selectedLocation||null,searchLocationKeywords:(null==d?void 0:d.name)||t.searchLocationKeywords,autoCompleteDisabled:E,inputSearchPlaceholder:L,locale:j})})),Y=W[0],J=W[1],X=Y.navigateTo,$=Y.focused,ee=Y.isLoadingCities,te=Y.cities,ne=Y.searchKeywords,ae=Y.geoLocationPermission,oe=Y.selectedLocation,ie=Y.initialSelectedCity,re=Y.defaultCity,se=Y.searchResults,ce=Y.isLoadingSearchResults,ue=Y.isMobileModalOpened,de=Y.inputSearchPlaceholder,pe=function(e){var a=e.dispatch,o=e.careApiDomain,i=e.locale,r=void 0===i?"vi-VN":i,l=t.useCallback((function(e,t){void 0===t&&(t={});var n="".concat(o).concat(e);return a({type:he.FetchCitiesStart}),fetch(St(n,t,r),{method:"GET"}).then((function(e){return e.json()})).then((function(e){return 1===e._status&&e._data?null==e?void 0:e._data:(console.log("error loading cities",e),Promise.reject(e))})).finally((function(){return a({type:he.FetchCitiesFinish})}))}),[r]),s=t.useCallback((function(e){var t=e.coordinates,n={};return t&&(n={lat:t.lat,lng:t.lng}),l(Lt,n).then((function(e){a({type:he.FetchCitiesByGeoIpComplete,payload:e})})).catch((function(e){return console.error("error loading cities by location",e)}))}),[r,o,a]);return{fetchCitiesByLocation:s,fetchCitiesByKeyword:t.useCallback((function(e){return l(Et,{keyword:e}).then((function(e){a({type:he.FetchCitiesByKeywordComplete,payload:e.cities})})).catch((function(e){return console.error("error loading cities by keyword",e)}))}),[r,o,a]),fetchSearchResults:t.useCallback((function(e,t){var i="".concat(o).concat(kt);a({type:he.FetchSearchResultsStart});var l=t.defaultCity,s=t.selectedLocation,c=t.geoLocationCoordinates,u="";if(s&&l){s.id===n.ID_OPTION_CURRENT_LOCATION?c||(u=l.id):u=s.id;var d=(null==c?void 0:c.lat)||"",p=(null==c?void 0:c.lng)||"";return fetch(St(i,{domain:o,searchType:"global",keyword:e.trim().length>ye[r]?e.trim():"",city:u===n.ID_OPTION_CURRENT_LOCATION?"":u,lat:d,lng:p},r),{method:"GET",headers:{accept:"version=2.0.0.0"}}).then((function(e){return e.json()})).then((function(e){return 1===e._status&&e._data?null==e?void 0:e._data:Promise.reject(e)})).then((function(e){return a({type:he.FetchSearchResultsComplete,payload:e})})).catch((function(e){console.log("error loading search results",{url:i,error:e})})).finally((function(){return a({type:he.FetchSearchResultsFinish})}))}a({type:he.FetchSearchResultsFinish})}),[r,o,a])}}({dispatch:J,locale:j,careApiDomain:s}),fe=pe.fetchCitiesByLocation,ge=pe.fetchCitiesByKeyword,me=pe.fetchSearchResults,Ce=t.useMemo((function(){var e;return{id:n.ID_OPTION_CURRENT_LOCATION,name:z("booking.searchBar.currentLocation"),slug:null===(e=n.LOCALIZED_SLUGS[j])||void 0===e?void 0:e.CURRENT}}),[z,j]),ve=t.useMemo((function(){return h.default(ge,400)}),[ge]),_e=t.useMemo((function(){return h.default(me,400)}),[me]);t.useEffect((function(){""!==g&&g!==Y.searchKeywords&&J({type:he.UpdateInitialSearchValue,payload:g})}),[g]),t.useEffect((function(){b&&(null==oe?void 0:oe.id)===n.ID_OPTION_CURRENT_LOCATION&&"unset"===ae&&q()}),[b,oe,ae]),t.useEffect((function(){c||ae===G||("granted"===G&&Q?J({type:he.GrantGeoLocationPermission,payload:Q}):"denied"===G&&J({type:he.DenyGeoLocationPermission}))}),[ae,G,Q,c]),t.useEffect((function(){X&&(S?S(X):window.location.href="".concat(C).concat(X))}),[X]);var Ee=t.useCallback((function(){J({type:he.SelectCurrentLocation,payload:Ce})}),[z,J]);t.useEffect((function(){"denied"===ae||ie||Ee(),T&&T(ae,Y.geoLocationCoordinates),l&&"granted"===ae&&oe&&J({type:he.FocusInputSearch}),fe({coordinates:Y.geoLocationCoordinates})}),[ae]),t.useEffect((function(){oe&&re&&me(Y.searchKeywords,Y)}),[oe,re]),t.useEffect((function(){L!==de&&J({type:he.SetInputSearchPlaceholder,payload:L})}),[L,de]),t.useEffect((function(){ue?document.body.classList.add("care-popup-open"):document.body.classList.remove("care-popup-open")}),[ue]);var ke=t.useCallback((function(e){J({type:he.SelectLocation,payload:e}),Te(),P&&P(e)}),[z,J]);function Le(){l&&"granted"!==Y.geoLocationPermission?q():(Ee(),Te())}function Se(){var e;D.current&&(null===(e=D.current.querySelector('input[name="search-location"]'))||void 0===e||e.focus())}function Te(){var e;D.current&&(null===(e=D.current.querySelector('input[name="search-results"]'))||void 0===e||e.focus())}function Oe(){return"location"!==$?null:p.default.createElement(U,{isLoading:ee,cities:te,onLocationClick:ke,onCurrentLocationClick:Le,isLocationLoading:ee,geoLocationPermission:ae,selectedLocation:oe})}function Ie(){return"search"!==$?null:Y.autoCompleteDisabled?l?p.default.createElement(Pe,{onClick:function(){A({cityId:Y.selectedLocation.id,keyword:ne})}}):null:p.default.createElement(wt,{data:se,state:Y,dispatch:J,isMobile:!1,keyword:ne,isLoading:ce})}function Me(){return p.default.createElement(Ve,{isMobile:l,state:Y,dispatch:J,debouncedFetchCitiesByKeyword:ve,debouncedFetchSearchResults:_e,focusLocationInput:Se,focusSearchInput:Te,renderLocationResults:Oe,renderSearchResults:Ie,trackingAttributes:_,onSearch:A,initalSearchValue:g})}return t.useEffect((function(){if(window.visualViewport){var e=function(e){var t=e.target;K(null==t?void 0:t.height)};return window.visualViewport.addEventListener("resize",e),function(){window.visualViewport.removeEventListener("resize",e)}}}),[K]),l?p.default.createElement(p.default.Fragment,null,p.default.createElement(N,null),p.default.createElement(R,{ref:H}),p.default.createElement(I,{id:"booking-search-bar",ref:D,"data-is-modal":l&&ue,style:{"--mobile-care-searchbar-height":ue&&B?"".concat(B,"px"):"100%"}},ue?p.default.createElement(p.default.Fragment,null,p.default.createElement(M,null,p.default.createElement(xe,{headingText:"Search",onLeftClick:function(){J({type:he.CloseMobileModal})}}),Me()),Oe(),Ie()):p.default.createElement(le,{onClick:function(){var t;return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){switch(e.label){case 0:return H.current&&H.current.focus(),J({type:he.OpenMobileModal}),[4,Promise.resolve()];case 1:return e.sent(),D.current&&(null===(t=D.current.querySelector('input[name="search-location"]'))||void 0===t||t.focus()),[2]}}))}))},focused:$,value:ne,trackingAttributes:_,inputSearchPlaceholder:L}))):p.default.createElement(O,{id:"booking-search-bar",ref:D},Me())},exports.types=Ot;
2
+ //# sourceMappingURL=types-9b704e38.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-9b704e38.js","sources":["../src/care/components/organisms/bookingSearchBar/index.styled.ts","../src/care/components/atoms/icons/index.tsx","../src/care/components/organisms/bookingSearchBar/locationResults/liSkeleton.tsx","../src/care/components/organisms/bookingSearchBar/locationResults/index.styled.ts","../src/care/components/organisms/bookingSearchBar/locationResults/index.tsx","../src/care/components/organisms/bookingSearchBar/utils/Typewriter.ts","../src/care/components/organisms/bookingSearchBar/useAnimatedPlaceholder.ts","../src/care/components/organisms/bookingSearchBar/mobileFakeInput/index.tsx","../src/care/components/organisms/bookingSearchBar/mobileTopbar/index.styled.ts","../src/care/components/organisms/bookingSearchBar/reducer.ts","../src/care/components/organisms/bookingSearchBar/mobileTopbar/index.tsx","../src/care/components/organisms/bookingSearchBar/constants.ts","../src/hooks/useOutsideClick.ts","../src/care/components/organisms/bookingSearchBar/searchSubmitIcon/index.tsx","../src/care/components/organisms/bookingSearchBar/searchInputs/index.styled.ts","../src/care/components/organisms/bookingSearchBar/searchInputs/index.tsx","../src/care/components/organisms/bookingSearchBar/resultSectionItem/index.styled.ts","../src/care/components/organisms/bookingSearchBar/resultSectionItem/index.tsx","../src/care/components/organisms/bookingSearchBar/resultSection/icons.tsx","../src/care/components/organisms/bookingSearchBar/resultSection/index.styled.ts","../src/care/components/organisms/bookingSearchBar/resultSection/index.tsx","../src/care/components/organisms/bookingSearchBar/searchResults/index.tsx","../src/care/api/paths.ts","../src/care/api/utils.ts","../src/care/components/organisms/bookingSearchBar/index.tsx","../src/care/interfaces/types.ts","../src/hooks/useGeolocation.ts","../src/care/components/organisms/bookingSearchBar/useSearchBarApi.ts"],"sourcesContent":["import { Input } from 'components/atoms'\nimport styled, { createGlobalStyle } from 'styled-components'\n\nexport const StyledSearchBarWrapper = styled.div``\n\nexport const StyledSearchBarMobileWrapper = styled.div`\n --searchbar-z-index: 305;\n &[data-is-modal='true'] {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n height: var(--mobile-care-searchbar-height, 100%);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n background-color: white;\n z-index: var(--searchbar-z-index);\n }\n`\n\nexport const StyledSearchBarMobileModalHeader = styled.section``\n\nexport const StyledHiddenInputMobile = styled.input`\n position: fixed;\n left: -100%;\n top: -100%;\n`\n\nexport const StyledInput = styled(Input)`\n #booking-search-bar & {\n input {\n font-size: 16px;\n }\n }\n`\n\nexport const CareSearchGlobalStyles = createGlobalStyle`\n .care-popup-open {\n overflow: hidden;\n position: fixed;\n &::before {\n content: '';\n inset: 0;\n position: absolute;\n background-color: white;\n min-height: 100vh;\n min-width: 100vw;\n z-index: 2;\n }\n }\n`\n","import React from 'react'\n\ntype IconProps = {\n className?: string\n color?: string\n}\n\nexport const ClearIcon = ({ className, color }: IconProps) => (\n <svg\n className={className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM8.29289 8.29289C8.68342 7.90237 9.31658 7.90237 9.70711 8.29289L12 10.5858L14.2929 8.29289C14.6834 7.90237 15.3166 7.90237 15.7071 8.29289C16.0976 8.68342 16.0976 9.31658 15.7071 9.70711L13.4142 12L15.7071 14.2929C16.0976 14.6834 16.0976 15.3166 15.7071 15.7071C15.3166 16.0976 14.6834 16.0976 14.2929 15.7071L12 13.4142L9.70711 15.7071C9.31658 16.0976 8.68342 16.0976 8.29289 15.7071C7.90237 15.3166 7.90237 14.6834 8.29289 14.2929L10.5858 12L8.29289 9.70711C7.90237 9.31658 7.90237 8.68342 8.29289 8.29289Z\"\n fill={color || 'currentColor'}\n />\n </svg>\n)\n\nexport const CloseIcon = ({ className, color }: IconProps) => (\n <svg\n className={className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18 6L6 18\"\n stroke={color || 'currentColor'}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 6L18 18\"\n stroke={color || 'currentColor'}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nexport const PinIcon = ({ className, color }: IconProps) => (\n <svg width=\"14\" height=\"20\" viewBox=\"0 0 14 20\" className={className}>\n <path\n d=\"M7 0C3.134 0 0 3.134 0 7C0 10.966 4.404 16.82 6.226 19.071C6.626 19.565 7.374 19.565 7.774 19.071C9.596 16.82 14 10.966 14 7C14 3.134 10.866 0 7 0ZM7 9.5C5.619 9.5 4.5 8.381 4.5 7C4.5 5.619 5.619 4.5 7 4.5C8.381 4.5 9.5 5.619 9.5 7C9.5 8.381 8.381 9.5 7 9.5Z\"\n fill={color || 'currentColor'}\n />\n </svg>\n)\n\nexport const GetLocationIcon = ({ className, color }: IconProps) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n className={className}\n >\n <path\n d=\"M9.99967 6.66658C8.15801 6.66658 6.66634 8.15825 6.66634 9.99992C6.66634 11.8416 8.15801 13.3333 9.99967 13.3333C11.8413 13.3333 13.333 11.8416 13.333 9.99992C13.333 8.15825 11.8413 6.66658 9.99967 6.66658ZM17.4497 9.16658C17.0663 5.69158 14.308 2.93325 10.833 2.54992V1.66659C10.833 1.20825 10.458 0.833252 9.99967 0.833252C9.54134 0.833252 9.16634 1.20825 9.16634 1.66659V2.54992C5.69134 2.93325 2.93301 5.69158 2.54967 9.16658H1.66634C1.20801 9.16658 0.833008 9.54158 0.833008 9.99992C0.833008 10.4583 1.20801 10.8333 1.66634 10.8333H2.54967C2.93301 14.3083 5.69134 17.0666 9.16634 17.4499V18.3333C9.16634 18.7916 9.54134 19.1666 9.99967 19.1666C10.458 19.1666 10.833 18.7916 10.833 18.3333V17.4499C14.308 17.0666 17.0663 14.3083 17.4497 10.8333H18.333C18.7913 10.8333 19.1663 10.4583 19.1663 9.99992C19.1663 9.54158 18.7913 9.16658 18.333 9.16658H17.4497ZM9.99967 15.8333C6.77467 15.8333 4.16634 13.2249 4.16634 9.99992C4.16634 6.77492 6.77467 4.16658 9.99967 4.16658C13.2247 4.16658 15.833 6.77492 15.833 9.99992C15.833 13.2249 13.2247 15.8333 9.99967 15.8333Z\"\n fill={color || 'currentColor'}\n />\n </svg>\n)\n\nexport const MagnifierIcon = ({ className, color }: IconProps) => (\n <svg\n className={className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11 18C14.866 18 18 14.866 18 11C18 7.13401 14.866 4 11 4C7.13401 4 4 7.13401 4 11C4 14.866 7.13401 18 11 18Z\"\n stroke={color || 'currentColor'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M20 20L16 16\"\n stroke={color || 'currentColor'}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nexport const DefaultThumbnailAny = ({\n width,\n height,\n}: {\n width?: number\n height?: number\n}) => (\n <svg\n width={width || 30}\n height={height || 30}\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#F7F9FC\" />\n </svg>\n)\n\nexport const DefaultThumbnailDoctor = ({\n width,\n height,\n}: {\n width?: number\n height?: number\n}) => (\n <svg\n width={width || 32}\n height={height || 32}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_14712_400114)\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#E4E8EC\" />\n <path\n d=\"M22.065 9.58305C22.1108 9.80952 22.1431 10.0396 22.1614 10.2722C22.3769 13.0522 22.5858 16.1276 22.5727 17.618C22.5306 20.5688 19.708 21.1325 19.4564 21.1769L19.4495 21.5357L19.5228 23.9014C20.8688 23.9341 22.203 24.1759 23.4772 24.6196C24.5264 24.9739 25.4827 25.5591 26.2757 26.332C27.0688 27.105 27.6783 28.0461 28.0594 29.0858L31.9886 39.2068C31.91 39.3048 30.6939 39.6356 29.4888 39.944C30.1695 42.3315 30.4582 44.8142 30.3432 47.2953C30.2991 48.2666 30.1816 49.264 29.7245 50.1211C29.4508 50.6342 29.0319 51.0912 28.5296 51.3753C28.5099 51.4347 28.4864 51.4928 28.4593 51.5495C28.4293 51.6146 28.3908 51.6756 28.3448 51.7307C28.3293 51.7772 28.3232 51.8406 28.3162 51.9135C28.3004 52.0779 28.2799 52.2909 28.1362 52.4685C28.001 52.6373 27.8519 52.7945 27.6905 52.9386C27.6905 52.9386 27.092 52.9667 26.4133 52.9845L26.458 58.4088H5.7492L6.30965 52.9523L5.66093 53.1637C5.07664 53.3528 4.45628 53.4028 3.84925 53.3099C3.24222 53.2169 2.66526 52.9835 2.1643 52.6283C1.61489 52.2388 1.17445 51.715 0.884966 51.1068C0.595484 50.4987 0.46662 49.8266 0.510669 49.1545L0.644528 47.1369L1.41503 38.3366L1.81323 38.4135L-0.914307 37.8437L-0.402886 36.5663C-0.407359 36.5645 -0.411803 36.5627 -0.416214 36.5608C-0.410804 36.56 -0.40538 36.5594 -0.399946 36.5589L2.05995 30.4146C3.00034 28.0825 4.7421 26.1624 6.97187 24.9999C8.56171 24.176 10.3028 23.6861 12.0882 23.5597L11.788 16.5865C11.1882 16.6507 10.0095 16.5266 9.96087 14.954C9.91229 13.3824 11.0457 13.3171 11.6507 13.3961L11.6445 13.2523C11.5785 12.8433 11.5088 12.439 11.4577 12.2132C11.3782 11.8628 11.2611 11.4953 11.1419 11.1207C10.8794 10.2967 10.6061 9.43855 10.697 8.65293C10.697 8.65293 10.6909 8.00438 11.4565 7.24044C11.3707 6.86644 11.3686 6.47786 11.4507 6.10258C11.5366 5.70965 11.7125 5.34199 11.9645 5.02848C12.2165 4.71497 12.5377 4.46414 12.9029 4.29569C13.2682 4.12725 13.6675 4.04577 14.0696 4.05766C14.2277 4.06393 14.3849 4.08493 14.5418 4.10589C14.7932 4.13945 15.0439 4.17294 15.2971 4.14581C15.7708 4.09409 16.177 3.83884 16.5862 3.58167C16.8357 3.42492 17.0863 3.26745 17.354 3.15494C17.9119 2.93744 18.5266 2.91281 19.1002 3.08497C19.6738 3.25713 20.1733 3.61619 20.5192 4.105C20.5943 4.21716 20.6621 4.33678 20.7298 4.45631C20.9035 4.76299 21.077 5.06915 21.373 5.24769C21.5927 5.38236 21.8482 5.42658 22.1057 5.47114C22.2633 5.49842 22.4216 5.52582 22.5728 5.57417C23.0267 5.71015 23.3999 6.0411 23.6319 6.45436C23.6327 6.40753 23.6317 6.36062 23.629 6.31374C23.6502 6.3657 23.6623 6.42092 23.6649 6.47698C23.6661 6.49165 23.667 6.50632 23.6677 6.521C23.8246 6.82609 23.9058 7.17114 23.8885 7.51347C23.8544 7.93447 23.7053 8.33801 23.4574 8.68001C23.2096 9.02201 22.8725 9.28933 22.483 9.45278C22.3469 9.50712 22.2071 9.55061 22.065 9.58305Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_14712_400114\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const DefaultThumbnailService = ({\n width,\n height,\n}: {\n width?: number\n height?: number\n}) => (\n <svg\n width={width || 30}\n height={height || 30}\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"15\" cy=\"15\" r=\"15\" fill=\"#F7F9FC\" />\n <path\n d=\"M14.9998 6.66663C12.2752 6.66663 9.85335 7.97848 8.33317 9.99996H10.5988C11.8 8.94527 13.3625 8.33329 14.9998 8.33329C16.6372 8.33329 18.1997 8.94527 19.4009 9.99996H21.6665C20.1463 7.97848 17.7244 6.66663 14.9998 6.66663ZM7.7863 10.8333C7.07666 13.0403 6.6665 15.5989 6.6665 18.3333C6.6665 20.0846 6.82601 21.7675 7.13525 23.3333H22.8644C23.1737 21.7675 23.3332 20.0846 23.3332 18.3333C23.3332 15.5989 22.923 13.0403 22.2134 10.8333H7.7863ZM14.9998 13.3333C17.3013 13.3333 19.1665 15.1985 19.1665 17.5C19.1665 19.8014 17.3013 21.6666 14.9998 21.6666C12.6984 21.6666 10.8332 19.8014 10.8332 17.5C10.8332 15.1985 12.6984 13.3333 14.9998 13.3333ZM14.1665 15V16.6666H12.4998V18.3333H14.1665V20H15.8332V18.3333H17.4998V16.6666H15.8332V15H14.1665Z\"\n fill=\"#BFC5CC\"\n />\n </svg>\n)\n","import React from 'react'\n\nimport { theme } from 'misc/theme'\nimport { useId } from 'react-id-generator'\nimport Skeleton from 'react-loading-skeleton'\nimport styled from 'styled-components'\n\ntype Props = {\n count: number\n className?: string\n}\n\nconst StyledLiSkeleton = styled.li`\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 16px;\n\n > :first-child {\n flex: 1;\n }\n\n > :nth-child(2) {\n flex: 6;\n }\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ${theme.colors.neutral100};\n }\n`\n\nconst LiSkeleton = ({ count, className }: Props) => {\n const idList = useId(count)\n return (\n <>\n {[...Array(count)].map((__v, i) => (\n <StyledLiSkeleton className={className} key={idList[i]}>\n <Skeleton count={1} height={32} />\n <Skeleton count={1} height={24} />\n </StyledLiSkeleton>\n ))}\n </>\n )\n}\n\nexport default LiSkeleton\n","import { PinIcon } from 'care/components/atoms/icons'\nimport { theme } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nimport LiSkeleton from './liSkeleton'\n\nconst checkMarkIconUrl = `url(\"data:image/svg+xml,%3Csvg width='19' height='14' viewBox='0 0 19 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.9803 0.990669C16.7205 0.99841 16.4739 1.10699 16.2928 1.2934L5.99984 11.5864L2.70687 8.2934C2.61473 8.19743 2.50436 8.12081 2.38223 8.06802C2.2601 8.01524 2.12867 7.98735 1.99563 7.986C1.86259 7.98464 1.73061 8.00985 1.60743 8.06014C1.48426 8.11043 1.37235 8.18479 1.27827 8.27887C1.1842 8.37295 1.10983 8.48485 1.05954 8.60803C1.00926 8.73121 0.98405 8.86318 0.985403 8.99622C0.986757 9.12926 1.01464 9.26069 1.06743 9.38282C1.12021 9.50495 1.19684 9.61532 1.29281 9.70747L5.29281 13.7075C5.48035 13.8949 5.73467 14.0002 5.99984 14.0002C6.26501 14.0002 6.51933 13.8949 6.70687 13.7075L17.7069 2.70747C17.8514 2.567 17.9501 2.38616 17.99 2.18864C18.03 1.99112 18.0093 1.78614 17.9308 1.60055C17.8523 1.41497 17.7195 1.25744 17.5499 1.14861C17.3803 1.03978 17.1817 0.984729 16.9803 0.990669Z' fill='%232685F1'/%3E%3C/svg%3E%0A\")`\n\nexport const StyledLocationResultsWrapper = styled.div`\n display: flex;\n position: absolute;\n top: 48px;\n min-width: 100%;\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n border-radius: 6px;\n background-color: white;\n z-index: 30;\n\n ${MediaQueries.mbDown} {\n position: relative;\n top: 0;\n box-shadow: initial;\n }\n`\n\nexport const StyledLocationResultsList = styled.ul`\n width: 100%;\n max-height: 600px;\n overflow-y: auto;\n`\n\nexport const StyledPinIcon = styled(PinIcon)`\n width: 12px;\n height: 18px;\n`\n\nexport const StyledLocationItem = styled.li<{ isSelected?: boolean }>`\n position: relative;\n cursor: pointer;\n padding: 12px 18px;\n display: flex;\n align-items: center;\n gap: 14px;\n overflow: hidden;\n\n ${({ isSelected }) =>\n isSelected &&\n `\n &::after {\n content: ${checkMarkIconUrl};\n top: 50%;\n right: 18px;\n position: absolute;\n transform: translateY(-50%);\n }\n `}\n\n & + li::before {\n content: '';\n position: absolute;\n left: 18px;\n right: 18px;\n top: 0;\n height: 1px;\n background-color: ${theme.colors.neutral100};\n }\n\n &:not([data-is-denied='true']):hover {\n background-color: ${theme.colors.neutral50};\n }\n\n &:last-child:hover {\n border-bottom-right-radius: 6px;\n border-bottom-left-radius: 6px;\n }\n\n &:first-child:hover {\n border-top-right-radius: 6px;\n border-top-left-radius: 6px;\n }\n\n &[data-is-denied='true'] {\n cursor: not-allowed;\n }\n`\n\nexport const StyledLiSkeleton = styled(LiSkeleton)`\n &:first-child {\n padding-top: 18px;\n }\n`\n","import React from 'react'\n\nimport { GetLocationIcon } from 'care/components/atoms/icons'\nimport { City } from 'care/interfaces/types'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { GeoLocationPermission } from 'interfaces/types'\nimport { theme } from 'misc/theme'\nimport Skeleton from 'react-loading-skeleton'\n\nimport {\n StyledLocationItem,\n StyledLocationResultsList,\n StyledLocationResultsWrapper,\n StyledPinIcon,\n StyledLiSkeleton,\n} from './index.styled'\n\ntype Props = {\n cities?: Array<City>\n isLoading: boolean\n onLocationClick: (c: City) => void\n onCurrentLocationClick: () => void\n isMobile?: boolean\n geoLocationPermission: GeoLocationPermission\n isLocationLoading?: boolean\n selectedLocation?: City | null\n}\n\nconst LocationResults = ({\n cities,\n isLoading,\n onLocationClick,\n onCurrentLocationClick,\n geoLocationPermission = 'unset',\n isLocationLoading,\n selectedLocation,\n}: Props) => {\n const { t } = useTranslations()\n\n const isGeoPermissionDenied = geoLocationPermission === 'denied'\n\n const renderCurrentLocationItem = () => (\n <StyledLocationItem\n role=\"button\"\n tabIndex={0}\n onClick={(evt) => {\n if (isGeoPermissionDenied) {\n return\n }\n evt.nativeEvent.stopImmediatePropagation()\n if (!isLocationLoading) {\n onCurrentLocationClick()\n }\n }}\n data-is-denied={isGeoPermissionDenied}\n >\n {isGeoPermissionDenied ? (\n <Text color=\"var(--gray600)\" size=\"md\">\n x\n </Text>\n ) : isLocationLoading ? (\n <Skeleton height={20} width={20} />\n ) : (\n <GetLocationIcon color={theme.colors.primaryBase} />\n )}\n\n <div>\n {isGeoPermissionDenied ? (\n <Text color=\"var(--gray600)\" size=\"sm\" style={{ lineHeight: 1.5 }}>\n {t('booking.searchBar.grantLocation')}\n </Text>\n ) : isLocationLoading ? (\n <Skeleton height={20} style={{ width: 'calc(100% - 16px)' }} />\n ) : (\n <Text size=\"md\">{t('booking.searchBar.useCurrentLocation')}</Text>\n )}\n </div>\n </StyledLocationItem>\n )\n\n const renderContent = () => {\n if (isLoading) {\n return <StyledLiSkeleton count={5} />\n }\n\n if (!cities || cities.length < 1) {\n return (\n <>\n {renderCurrentLocationItem()}\n <StyledLocationItem data-is-denied=\"true\">\n <Text size=\"sm\" color=\"#ccc\">\n {t('booking.searchBar.noResults')}\n </Text>\n </StyledLocationItem>\n </>\n )\n }\n\n return (\n <>\n {renderCurrentLocationItem()}\n {cities.map((city: City) => (\n <StyledLocationItem\n key={city.id}\n onClick={(evt) => {\n evt.nativeEvent.stopImmediatePropagation()\n if (onLocationClick) {\n onLocationClick(city)\n }\n }}\n role=\"button\"\n tabIndex={0}\n aria-label={`Select ${city.name} as location`}\n isSelected={selectedLocation?.id === city.id}\n >\n <StyledPinIcon color={theme.colors.neutral400} />\n <Text size=\"md\">{city.name}</Text>\n </StyledLocationItem>\n ))}\n </>\n )\n }\n\n return (\n <StyledLocationResultsWrapper data-testid=\"location-search-results\">\n <StyledLocationResultsList>{renderContent()}</StyledLocationResultsList>\n </StyledLocationResultsWrapper>\n )\n}\n\nexport default LocationResults\n","export const EVENT_NAMES = {\n TYPE_CHARACTER: 'TYPE_CHARACTER',\n REMOVE_CHARACTER: 'REMOVE_CHARACTER',\n REMOVE_ALL: 'REMOVE_ALL',\n REMOVE_LAST_VISIBLE_NODE: 'REMOVE_LAST_VISIBLE_NODE',\n PAUSE_FOR: 'PAUSE_FOR',\n CHANGE_DELETE_SPEED: 'CHANGE_DELETE_SPEED',\n CHANGE_DELAY: 'CHANGE_DELAY',\n PASTE_STRING: 'PASTE_STRING',\n}\n\nconst getRandomInteger = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport const VISIBLE_NODE_TYPES = {\n TEXT_NODE: 'TEXT_NODE',\n}\n\nclass Typewriter {\n state = {\n lastFrameTime: null,\n pauseUntil: null,\n eventQueue: [],\n eventLoop: null,\n eventLoopPaused: false,\n reverseCalledEvents: [],\n calledEvents: [],\n visibleNodes: [],\n initialOptions: null,\n }\n\n options = {\n strings: null,\n delay: 'natural',\n pauseFor: 1500,\n deleteSpeed: 'natural',\n loop: false,\n autoStart: false,\n stringSplitter: null,\n onCreateTextNode: null,\n onRemoveNode: null,\n }\n\n constructor(options) {\n if (options) {\n this.options = {\n ...this.options,\n ...options,\n }\n }\n\n this.state.initialOptions = { ...this.options }\n\n this.init()\n }\n\n init() {\n this.addEventToQueue(EVENT_NAMES.REMOVE_ALL, null, true)\n\n if (this.options.autoStart === true && this.options.strings) {\n this.typeOutAllStrings().start()\n }\n }\n\n start = () => {\n this.state.eventLoopPaused = false\n this.runEventLoop()\n\n return this\n }\n\n pause = () => {\n this.state.eventLoopPaused = true\n\n return this\n }\n\n stop = () => {\n if (this.state.eventLoop) {\n window.cancelAnimationFrame(this.state.eventLoop)\n this.state.eventLoop = null\n }\n\n return this\n }\n\n pauseFor = (ms) => {\n this.addEventToQueue(EVENT_NAMES.PAUSE_FOR, { ms })\n\n return this\n }\n\n typeOutAllStrings = () => {\n if (typeof this.options.strings === 'string') {\n this.typeString(this.options.strings).pauseFor(this.options.pauseFor)\n return this\n }\n\n this.options.strings.forEach((string) => {\n this.typeString(string)\n .pauseFor(this.options.pauseFor)\n .deleteAll(this.options.deleteSpeed)\n })\n\n return this\n }\n\n typeString = (string, node = null) => {\n if (string) {\n const { stringSplitter } = this.options || {}\n const characters =\n typeof stringSplitter === 'function'\n ? stringSplitter(string)\n : string.split('')\n this.typeCharacters(characters, node)\n }\n\n return this\n }\n\n pasteString = (string, node = null) => {\n if (string) {\n this.addEventToQueue(EVENT_NAMES.PASTE_STRING, {\n character: string,\n node,\n })\n }\n\n return this\n }\n\n deleteAll = (speed = 'natural') => {\n this.addEventToQueue(EVENT_NAMES.REMOVE_ALL, { speed })\n return this\n }\n\n changeDeleteSpeed = (speed) => {\n if (!speed) {\n throw new Error('Must provide new delete speed')\n }\n\n this.addEventToQueue(EVENT_NAMES.CHANGE_DELETE_SPEED, { speed })\n\n return this\n }\n\n changeDelay = (delay) => {\n if (!delay) {\n throw new Error('Must provide new delay')\n }\n\n this.addEventToQueue(EVENT_NAMES.CHANGE_DELAY, { delay })\n\n return this\n }\n\n deleteChars = (amount) => {\n if (!amount) {\n throw new Error('Must provide amount of characters to delete')\n }\n\n for (let i = 0; i < amount; i++) {\n this.addEventToQueue(EVENT_NAMES.REMOVE_CHARACTER)\n }\n\n return this\n }\n\n typeCharacters = (characters, node = null) => {\n if (!characters || !Array.isArray(characters)) {\n throw new Error('Characters must be an array')\n }\n\n characters.forEach((character) => {\n this.addEventToQueue(EVENT_NAMES.TYPE_CHARACTER, { character, node })\n })\n\n return this\n }\n\n removeCharacters = (characters) => {\n if (!characters || !Array.isArray(characters)) {\n throw new Error('Characters must be an array')\n }\n\n characters.forEach(() => {\n this.addEventToQueue(EVENT_NAMES.REMOVE_CHARACTER)\n })\n\n return this\n }\n\n addEventToQueue = (eventName, eventArgs?, prepend = false) => {\n return this.addEventToStateProperty(\n eventName,\n eventArgs,\n prepend,\n 'eventQueue',\n )\n }\n\n addReverseCalledEvent = (eventName, eventArgs, prepend = false) => {\n const { loop } = this.options\n\n if (!loop) {\n return this\n }\n\n return this.addEventToStateProperty(\n eventName,\n eventArgs,\n prepend,\n 'reverseCalledEvents',\n )\n }\n\n addEventToStateProperty = (\n eventName,\n eventArgs,\n prepend = false,\n property,\n ) => {\n const eventItem = {\n eventName,\n eventArgs: eventArgs || {},\n }\n\n if (prepend) {\n this.state[property] = [eventItem, ...this.state[property]]\n } else {\n this.state[property] = [...this.state[property], eventItem]\n }\n\n return this\n }\n\n runEventLoop = () => {\n if (!this.state.lastFrameTime) {\n this.state.lastFrameTime = Date.now()\n }\n\n // Setup variables to calculate if this frame should run\n const nowTime = Date.now()\n const delta = nowTime - this.state.lastFrameTime\n\n if (!this.state.eventQueue.length) {\n if (!this.options.loop) {\n return\n }\n\n // Reset event queue if we are looping\n this.state.eventQueue = [...this.state.calledEvents]\n this.state.calledEvents = []\n this.options = { ...this.state.initialOptions }\n }\n\n // Request next frame\n this.state.eventLoop = window.requestAnimationFrame(this.runEventLoop)\n\n // Check if event loop is paused\n if (this.state.eventLoopPaused) {\n return\n }\n\n // Check if state has pause until time\n if (this.state.pauseUntil) {\n // Check if event loop should be paused\n if (nowTime < this.state.pauseUntil) {\n return\n }\n\n // Reset pause time\n this.state.pauseUntil = null\n }\n\n // Make a clone of event queue\n const eventQueue = [...this.state.eventQueue]\n\n // Get first event from queue\n const currentEvent = eventQueue.shift()\n\n // Setup delay variable\n let delay = 0\n\n // Check if frame should run or be\n // skipped based on fps interval\n if (\n currentEvent.eventName === EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE ||\n currentEvent.eventName === EVENT_NAMES.REMOVE_CHARACTER\n ) {\n delay =\n this.options.deleteSpeed === 'natural'\n ? getRandomInteger(40, 80)\n : this.options.deleteSpeed\n } else {\n delay =\n this.options.delay === 'natural'\n ? getRandomInteger(120, 160)\n : this.options.delay\n }\n\n if (delta <= delay) {\n return\n }\n\n // Get current event args\n const { eventName, eventArgs } = currentEvent\n\n // Run item from event loop\n switch (eventName) {\n case EVENT_NAMES.PASTE_STRING:\n case EVENT_NAMES.TYPE_CHARACTER: {\n const { character } = eventArgs\n const textNode = document.createTextNode(character)\n\n let textNodeToUse = textNode\n\n if (\n this.options.onCreateTextNode &&\n typeof this.options.onCreateTextNode === 'function'\n ) {\n textNodeToUse = this.options.onCreateTextNode(character, textNode)\n }\n\n this.state.visibleNodes = [\n ...this.state.visibleNodes,\n {\n type: VISIBLE_NODE_TYPES.TEXT_NODE,\n character,\n node: textNodeToUse,\n },\n ]\n\n break\n }\n\n case EVENT_NAMES.REMOVE_CHARACTER: {\n eventQueue.unshift({\n eventName: EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE,\n eventArgs: { removingCharacterNode: true },\n })\n break\n }\n\n case EVENT_NAMES.PAUSE_FOR: {\n const { ms } = currentEvent.eventArgs\n this.state.pauseUntil = Date.now() + parseInt(ms)\n break\n }\n\n case EVENT_NAMES.REMOVE_ALL: {\n const { visibleNodes } = this.state\n const { speed } = eventArgs\n const removeAllEventItems = []\n\n if (speed) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.CHANGE_DELETE_SPEED,\n eventArgs: { speed, temp: true },\n })\n }\n\n for (let i = 0, length = visibleNodes.length; i < length; i++) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE,\n eventArgs: { removingCharacterNode: false },\n })\n }\n\n if (speed) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.CHANGE_DELETE_SPEED,\n eventArgs: { speed: this.options.deleteSpeed, temp: true },\n })\n }\n\n eventQueue.unshift(...removeAllEventItems)\n\n break\n }\n\n case EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE: {\n if (this.state.visibleNodes.length) {\n const { node, character } = this.state.visibleNodes.pop()\n\n if (\n this.options.onRemoveNode &&\n typeof this.options.onRemoveNode === 'function'\n ) {\n this.options.onRemoveNode({\n node,\n character,\n })\n }\n\n if (node) {\n node.parentNode.removeChild(node)\n }\n }\n break\n }\n\n case EVENT_NAMES.CHANGE_DELETE_SPEED: {\n this.options.deleteSpeed = currentEvent.eventArgs.speed\n break\n }\n\n case EVENT_NAMES.CHANGE_DELAY: {\n this.options.delay = currentEvent.eventArgs.delay\n break\n }\n\n default: {\n break\n }\n }\n\n // Add que item to called queue if we are looping\n if (this.options.loop) {\n if (\n currentEvent.eventName !== EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE &&\n !(currentEvent.eventArgs && currentEvent.eventArgs.temp)\n ) {\n this.state.calledEvents = [...this.state.calledEvents, currentEvent]\n }\n }\n\n // Replace state event queue with cloned queue\n this.state.eventQueue = eventQueue\n\n // Set last frame time so it can be used to calculate next frame\n this.state.lastFrameTime = nowTime\n }\n}\n\nexport default Typewriter\n","import React, { useEffect, useMemo } from 'react'\n\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TranslationsKey } from 'i18n/translations'\nimport shuffle from 'lodash/shuffle'\n\nimport Typewriter from './utils/Typewriter'\n\ntype UseAnimatedPlaceholderParams = {\n inputRef?: React.MutableRefObject<HTMLInputElement>\n wrapperRef?: React.MutableRefObject<HTMLDivElement>\n disabled?: boolean\n}\n\nexport function useAnimatedPlaceholder({\n inputRef,\n wrapperRef,\n disabled,\n}: UseAnimatedPlaceholderParams): void {\n const { t, locale } = useTranslations()\n\n const values = useMemo(() => {\n if (disabled) {\n return []\n }\n\n const shuffleKeys: TranslationsKey[] = [\n 'booking.searchBar.placeholder.hospital',\n 'booking.searchBar.placeholder.doctor',\n ]\n if (locale !== 'zh-TW') {\n shuffleKeys.push(\n 'booking.searchBar.placeholder.specialty',\n 'booking.searchBar.placeholder.service',\n )\n }\n\n return shuffle(shuffleKeys).map((s) => t(s))\n }, [t, locale])\n\n useEffect(() => {\n if (disabled) {\n return\n }\n const input = getInput()\n if (input) {\n input.placeholder = ''\n new Typewriter({\n strings: values,\n autoStart: true,\n loop: true,\n delay: 32,\n deleteSpeed: 32,\n pauseFor: 1500,\n onCreateTextNode: customNodeCreator,\n onRemoveNode: onRemoveNode,\n })\n }\n }, [inputRef, wrapperRef])\n\n function customNodeCreator(character: string) {\n const input = getInput()\n if (input) {\n input.placeholder = input.placeholder + character\n }\n return null\n }\n\n function onRemoveNode() {\n const input = getInput()\n if (input) {\n input.placeholder = input.placeholder.slice(0, -1)\n }\n }\n\n function getInput(): HTMLInputElement | null {\n if (inputRef && inputRef.current) {\n return inputRef.current\n } else if (wrapperRef && wrapperRef.current) {\n return wrapperRef.current.querySelector('input') || null\n }\n return null\n }\n\n return\n}\n","import React, { useMemo, useRef } from 'react'\n\nimport { MagnifierIcon } from 'care/components/atoms/icons'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport styled from 'styled-components'\n\nimport { StyledInput } from '../index.styled'\nimport { FocusedType, GATrackingCode } from '../types'\nimport { useAnimatedPlaceholder } from '../useAnimatedPlaceholder'\n\nexport const StyledFakeInputSearchMobile = styled.div`\n user-select: none;\n input {\n pointer-events: none;\n background-color: white;\n }\n`\n\ntype Props = {\n focused: FocusedType\n onClick?: () => void\n value?: string\n trackingAttributes?: GATrackingCode\n inputSearchPlaceholder?: string\n}\n\nexport function MobileFakeInput({\n focused,\n value = '',\n onClick,\n trackingAttributes,\n inputSearchPlaceholder,\n}: Props) {\n const { t } = useTranslations()\n const wrapperRef = useRef<HTMLDivElement>(null)\n\n useAnimatedPlaceholder({ wrapperRef, disabled: !!inputSearchPlaceholder })\n\n const gaAttributes = useMemo(() => {\n if (trackingAttributes) {\n return {\n 'data-event-category': trackingAttributes.dataEventCategory,\n 'data-event-action': trackingAttributes.dataEventAction,\n 'data-event-label': trackingAttributes.dataEventLabel,\n }\n } else {\n return {}\n }\n }, [trackingAttributes])\n\n return (\n <StyledFakeInputSearchMobile\n onClick={() => onClick && onClick()}\n ref={wrapperRef}\n {...gaAttributes}\n >\n <StyledInput\n inputClassName={focused === 'location' ? 'focused' : undefined}\n name=\"booking-search-placeholder\"\n displayIcon={<MagnifierIcon color={theme.colors.gray400} />}\n placeholder={t('booking.searchBar.searchInput.placeholder')}\n value={value}\n size=\"md\"\n />\n </StyledFakeInputSearchMobile>\n )\n}\n","import { Text } from 'components/atoms/text'\nimport { theme } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledTopBar = styled.header`\n display: flex;\n height: 64px;\n align-items: center;\n justify-content: space-between;\n margin: 0 auto;\n position: sticky;\n z-index: 99;\n background-color: white;\n top: 0;\n left: 0;\n`\n\nexport const StyledTopBarHeaderRight = styled.div`\n display: inline-flex;\n flex: 1;\n justify-content: flex-end;\n cursor: pointer;\n text-decoration: underline;\n`\n\nexport const StyledTopBarIcon = styled.div`\n display: flex;\n align-items: center;\n margin-left: 16px;\n cursor: pointer;\n`\n\nexport const StyledTopbarHeading = styled.div`\n width: 100%;\n margin-left: 24px;\n`\n\nexport const StyledTopbarHeadingText = styled(Text)`\n color: ${theme.colors.secondaryDark};\n text-align: start;\n`\n","import { ID_OPTION_CURRENT_LOCATION } from 'care/interfaces/constants'\nimport {\n CareLocaleType,\n City,\n SearchBarSectionApi,\n SearchCityByGeoIpApi,\n} from 'care/interfaces/types'\nimport { GeoLocationPermission, GPSType } from 'interfaces/types'\n\nimport { SEARCH_KEYWORD_MIN_LENGTH } from './constants'\nimport { FocusedType } from './types'\n\nexport type ReducerState = {\n isMobile: boolean\n isDebug: boolean\n navigateTo: null | string\n geoLocationPermission: GeoLocationPermission\n geoLocationCoordinates: null | GPSType\n searchLocationKeywords: string\n searchKeywords: string\n focused: FocusedType\n selectedLocation: City | null\n defaultCity: City | null\n initialCities: City[]\n cities: City[]\n searchResults: SearchBarSectionApi[]\n initialSearchResults: SearchBarSectionApi[]\n isLoadingCities: boolean\n isLoadingSearchResults: boolean\n isMobileModalOpened: boolean\n initialSelectedCity: City | null\n autoCompleteDisabled: boolean\n inputSearchPlaceholder: string\n locale: CareLocaleType\n}\n\nexport const initialState: ReducerState = {\n isMobile: false,\n isDebug: false,\n navigateTo: null,\n geoLocationPermission: 'unset',\n geoLocationCoordinates: null,\n focused: 'none',\n searchLocationKeywords: '',\n searchKeywords: '',\n selectedLocation: null,\n defaultCity: null,\n initialCities: [],\n cities: [],\n searchResults: [],\n initialSearchResults: [],\n isLoadingCities: false,\n isLoadingSearchResults: false,\n isMobileModalOpened: false,\n initialSelectedCity: null,\n autoCompleteDisabled: false,\n inputSearchPlaceholder: '',\n locale: 'vi-VN',\n}\n\nexport enum ActionTypes {\n NavigateTo = 'navigate to url',\n ClickOutsideInputLocation = 'click outside input location',\n ClickOutsideInputSearch = 'click outside input search',\n SelectCurrentLocation = 'select current location',\n FocusInputLocation = 'focus input location',\n FocusInputSearch = 'focus input search',\n ChangeInputLocation = 'change input location',\n ChangeInputSearch = 'change input search',\n ClearInputLocation = 'clear input location',\n ClearInputSearch = 'clear input search',\n SelectLocation = 'select location',\n FetchCitiesStart = 'fetch cities start',\n FetchCitiesFinish = 'fetch cities finish',\n FetchSearchResultsStart = 'fetch search results start',\n FetchSearchResultsComplete = 'fetch search results complete',\n FetchSearchResultsFinish = 'fetch search results finish',\n FetchCitiesByGeoIpComplete = 'fetch cities by geo IP finish',\n FetchCitiesByKeywordComplete = 'fetch cities by keyword finish',\n DisplayInitialCities = 'display initial cities',\n DisplayInitialSearchResults = 'display initial search results',\n GrantGeoLocationPermission = 'grant geolocation permission',\n DenyGeoLocationPermission = 'deny geolocation permission',\n OpenMobileModal = 'open mobile modal',\n CloseMobileModal = 'close mobile modal',\n UpdateInitialSearchValue = 'update initial search value',\n SelectSearchResult = 'select search result',\n SetInputSearchPlaceholder = 'set input search placeholder',\n}\n\nexport type Action =\n | { type: ActionTypes.NavigateTo; payload: string }\n | { type: ActionTypes.ClickOutsideInputLocation }\n | { type: ActionTypes.ClickOutsideInputSearch }\n | { type: ActionTypes.FocusInputLocation }\n | { type: ActionTypes.FocusInputSearch }\n | { type: ActionTypes.ChangeInputLocation; payload: string }\n | { type: ActionTypes.ChangeInputSearch; payload: string }\n | { type: ActionTypes.ClearInputLocation }\n | { type: ActionTypes.ClearInputSearch }\n | { type: ActionTypes.SelectCurrentLocation; payload: City }\n | { type: ActionTypes.SelectLocation; payload: City }\n | { type: ActionTypes.FetchCitiesStart }\n | { type: ActionTypes.FetchCitiesFinish }\n | { type: ActionTypes.FetchSearchResultsStart }\n | {\n type: ActionTypes.FetchSearchResultsComplete\n payload: SearchBarSectionApi[]\n }\n | { type: ActionTypes.FetchSearchResultsFinish }\n | {\n type: ActionTypes.FetchCitiesByGeoIpComplete\n payload: SearchCityByGeoIpApi\n }\n | { type: ActionTypes.FetchCitiesByKeywordComplete; payload: City[] }\n | { type: ActionTypes.DisplayInitialCities }\n | { type: ActionTypes.DisplayInitialSearchResults }\n | { type: ActionTypes.GrantGeoLocationPermission; payload: GPSType }\n | { type: ActionTypes.DenyGeoLocationPermission }\n | { type: ActionTypes.OpenMobileModal }\n | { type: ActionTypes.CloseMobileModal }\n | { type: ActionTypes.UpdateInitialSearchValue; payload: string }\n | {\n type: ActionTypes.SelectSearchResult\n payload: { name: string; url: string }\n }\n | { type: ActionTypes.SetInputSearchPlaceholder; payload: string }\n\nfunction resetSearchLocationKeywords(state: ReducerState): ReducerState {\n const { selectedLocation, searchLocationKeywords } = state\n if (selectedLocation && searchLocationKeywords !== selectedLocation.name) {\n return { ...state, searchLocationKeywords: selectedLocation.name }\n }\n return state\n}\n\nexport function reducer(state: ReducerState, action: Action): ReducerState {\n if (state.isDebug) {\n console.log('bookingSearchBar', { action, state })\n }\n switch (action.type) {\n case ActionTypes.NavigateTo:\n return {\n ...state,\n navigateTo: action.payload,\n focused: 'none',\n isMobileModalOpened: false,\n }\n case ActionTypes.ClickOutsideInputLocation: {\n if (state.isMobile || state.focused !== 'location') {\n return state\n }\n return resetSearchLocationKeywords({ ...state, focused: 'none' })\n }\n case ActionTypes.ClickOutsideInputSearch: {\n if (state.isMobile || state.focused !== 'search') {\n return state\n }\n return { ...state, focused: 'none' }\n }\n case ActionTypes.FocusInputLocation: {\n const nextState: ReducerState = { ...state, focused: 'location' }\n if (state.selectedLocation?.id === ID_OPTION_CURRENT_LOCATION) {\n nextState.searchLocationKeywords = ''\n }\n return nextState\n }\n case ActionTypes.FocusInputSearch:\n const nextState: ReducerState = { ...state, focused: 'search' }\n if (state.isMobile) {\n return resetSearchLocationKeywords(nextState)\n }\n return nextState\n case ActionTypes.ChangeInputLocation:\n return { ...state, searchLocationKeywords: action.payload }\n case ActionTypes.ChangeInputSearch: {\n const keyword = action.payload\n return {\n ...state,\n searchKeywords: keyword,\n isLoadingSearchResults:\n keyword.trim().length > SEARCH_KEYWORD_MIN_LENGTH[state.locale],\n }\n }\n case ActionTypes.SelectCurrentLocation:\n return {\n ...state,\n focused: 'none',\n selectedLocation: action.payload,\n searchLocationKeywords: action.payload.name,\n }\n case ActionTypes.ClearInputLocation:\n return {\n ...state,\n focused: 'location',\n cities: state.initialCities,\n searchLocationKeywords: '',\n }\n case ActionTypes.ClearInputSearch:\n return { ...state, focused: 'search', searchKeywords: '' }\n case ActionTypes.SelectLocation:\n return {\n ...state,\n focused: 'none',\n selectedLocation: action.payload,\n searchLocationKeywords: action.payload.name,\n }\n case ActionTypes.SelectSearchResult:\n return {\n ...state,\n searchKeywords: action.payload.name,\n isMobileModalOpened: false,\n focused: 'none',\n navigateTo: action.payload.url,\n }\n case ActionTypes.FetchCitiesStart:\n return { ...state, isLoadingCities: true }\n case ActionTypes.FetchCitiesFinish:\n return { ...state, isLoadingCities: false }\n case ActionTypes.FetchSearchResultsStart:\n return { ...state, isLoadingSearchResults: true }\n case ActionTypes.FetchSearchResultsFinish:\n return { ...state, isLoadingSearchResults: false }\n case ActionTypes.FetchSearchResultsComplete: {\n const nextState: ReducerState = {\n ...state,\n searchResults: action.payload,\n }\n if (state.initialSearchResults.length === 0) {\n nextState.initialSearchResults = action.payload\n }\n return nextState\n }\n case ActionTypes.FetchCitiesByGeoIpComplete: {\n let { cities } = action.payload\n const { default: defaultCity } = action.payload\n cities = cities.filter((c) => c.id !== defaultCity.id)\n cities.unshift(defaultCity)\n if (\n state.initialSelectedCity &&\n !cities.find((c) => c.id === state.initialSelectedCity.id)\n ) {\n cities.unshift(state.initialSelectedCity)\n }\n const nextState: ReducerState = {\n ...state,\n defaultCity,\n initialCities: cities,\n cities,\n }\n if (\n state.geoLocationPermission === 'denied' &&\n !state.initialSelectedCity\n ) {\n nextState.selectedLocation = defaultCity\n nextState.searchLocationKeywords = defaultCity.name\n }\n return nextState\n }\n case ActionTypes.FetchCitiesByKeywordComplete:\n return { ...state, cities: action.payload }\n case ActionTypes.DisplayInitialCities:\n return { ...state, cities: state.initialCities }\n case ActionTypes.DisplayInitialSearchResults:\n return {\n ...state,\n searchResults: state.initialSearchResults,\n isLoadingSearchResults: false,\n }\n case ActionTypes.GrantGeoLocationPermission:\n return {\n ...state,\n geoLocationPermission: 'granted',\n geoLocationCoordinates: action.payload,\n }\n case ActionTypes.DenyGeoLocationPermission:\n return {\n ...state,\n geoLocationPermission: 'denied',\n geoLocationCoordinates: null,\n }\n case ActionTypes.OpenMobileModal:\n return { ...state, isMobileModalOpened: true }\n case ActionTypes.CloseMobileModal:\n return { ...state, isMobileModalOpened: false }\n case ActionTypes.UpdateInitialSearchValue:\n return { ...state, searchKeywords: action.payload }\n case ActionTypes.SetInputSearchPlaceholder:\n return { ...state, inputSearchPlaceholder: action.payload }\n default:\n return state\n }\n}\n","import React from 'react'\n\nimport { CloseIcon } from 'care/components/atoms/icons'\nimport { theme } from 'misc/theme'\n\nimport {\n StyledTopBar,\n StyledTopBarHeaderRight,\n StyledTopbarHeading,\n StyledTopbarHeadingText,\n StyledTopBarIcon,\n} from './index.styled'\n\nexport type Props = {\n className?: string\n headingText: string\n textRight?: string\n iconLeft?: JSX.Element\n onRightClick?: () => void\n onLeftClick?: () => void\n}\n\nconst MobileTopBar = ({\n className,\n onLeftClick,\n headingText,\n onRightClick,\n iconLeft,\n textRight,\n}: Props) => {\n return (\n <StyledTopBar className={className}>\n <StyledTopBarIcon onClick={onLeftClick}>\n {iconLeft || <CloseIcon color={theme.colors.gray800} />}\n </StyledTopBarIcon>\n <StyledTopbarHeading>\n <StyledTopbarHeadingText size=\"md\" type=\"bold\">\n {headingText}\n </StyledTopbarHeadingText>\n </StyledTopbarHeading>\n <StyledTopBarHeaderRight onClick={onRightClick}>\n {textRight && <p>{textRight}</p>}\n </StyledTopBarHeaderRight>\n </StyledTopBar>\n )\n}\n\nexport { MobileTopBar }\n","import { CareLocaleType } from 'src/care/interfaces/types'\n\nexport const SEARCH_KEYWORD_MIN_LENGTH: { [k in CareLocaleType]: number } = {\n 'en-PH': 3,\n 'tl-PH': 2,\n 'id-ID': 3,\n 'vi-VN': 2,\n 'zh-TW': 0,\n}\n","import { useCallback, useEffect } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useOutsideClick = (ref: any, callback: any) => {\n const handleClick = useCallback((e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target)) {\n callback(e.target)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClick)\n\n return () => {\n document.removeEventListener('mousedown', handleClick)\n }\n })\n}\n\nexport { useOutsideClick }\n","import React from 'react'\n\nimport { Text } from 'components/atoms'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\ntype Props = {\n onClick: () => void\n}\n\nconst SearchIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.97887 8.15493C2.97887 5.29627 5.29627 2.97887 8.15493 2.97887C11.0136 2.97887 13.331 5.29627 13.331 8.15493C13.331 11.0136 11.0136 13.331 8.15493 13.331C5.29627 13.331 2.97887 11.0136 2.97887 8.15493ZM8.15493 1.5C4.47951 1.5 1.5 4.47951 1.5 8.15493C1.5 11.8303 4.47951 14.8099 8.15493 14.8099C9.72624 14.8099 11.1704 14.2653 12.3089 13.3546L15.2377 16.2834C15.5265 16.5722 15.9947 16.5722 16.2834 16.2834C16.5722 15.9947 16.5722 15.5265 16.2834 15.2377L13.3546 12.3089C14.2653 11.1704 14.8099 9.72624 14.8099 8.15493C14.8099 4.47951 11.8303 1.5 8.15493 1.5Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nconst StyledSearchIcon = styled.button`\n min-height: 100%;\n border-radius: 6px;\n background-color: ${({ theme }) => theme.colors.primaryBase};\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 11px;\n cursor: pointer;\n flex: 0.3;\n\n ${MediaQueries.mbDown} {\n --margin: 16px;\n min-height: 32px;\n margin: var(--margin);\n width: calc(100% - var(--margin) * 2);\n position: absolute;\n bottom: 0;\n }\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.primaryHover};\n }\n\n &:active {\n background-color: ${({ theme }) => theme.colors.primaryActive};\n }\n\n &:focus-visible {\n outline: 1px solid black;\n }\n`\n\nconst StyledText = styled(Text)`\n font-weight: ${({ theme }) => theme.sizes.fwSemiBold};\n`\n\nconst SearchButton = ({ onClick }: Props) => {\n const { t } = useTranslations()\n const title = t('booking.searchBar.searchButton')\n return (\n <StyledSearchIcon onClick={onClick} title={title}>\n <SearchIcon />\n <StyledText size=\"s3\" color=\"white\">\n {title}\n </StyledText>\n </StyledSearchIcon>\n )\n}\n\nexport { SearchButton }\n","import { ClearIcon } from 'care/components/atoms/icons'\nimport { theme } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledSearchBarInputsWrapper = styled.div`\n display: flex;\n gap: 16px;\n ${MediaQueries.mbDown} {\n flex-direction: column;\n padding: 14px;\n background-color: ${theme.colors.blue50};\n\n input {\n filter: drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.06))\n drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.04));\n }\n }\n\n input {\n background-color: white;\n }\n`\n\nexport const StyledInputWrapper = styled.div`\n position: relative;\n`\n\nexport const StyledInputLocationWrapper = styled(StyledInputWrapper)`\n flex: 1;\n`\n\nexport const StyledInputSearchWrapper = styled(StyledInputWrapper)`\n flex: 2;\n`\nexport const StyledClearIcon = styled(ClearIcon)`\n display: none;\n &.shown {\n display: block;\n }\n`\n","import React, {\n Dispatch,\n useRef,\n useMemo,\n useCallback,\n KeyboardEvent,\n} from 'react'\n\nimport { PinIcon } from 'care/components/atoms/icons'\nimport { ID_OPTION_CURRENT_LOCATION } from 'care/interfaces/constants'\nimport { useOutsideClick } from 'hooks/useOutsideClick'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { DebouncedFunc } from 'lodash'\nimport { theme } from 'misc/theme'\n\nimport { SEARCH_KEYWORD_MIN_LENGTH } from '../constants'\nimport { StyledInput } from '../index.styled'\nimport { ReducerState, Action, ActionTypes } from '../reducer'\nimport { SearchButton } from '../searchSubmitIcon'\nimport { GATrackingCode, SearchClick } from '../types'\nimport { useAnimatedPlaceholder } from '../useAnimatedPlaceholder'\nimport {\n StyledSearchBarInputsWrapper,\n StyledInputLocationWrapper,\n StyledInputSearchWrapper,\n StyledClearIcon,\n} from './index.styled'\n\nexport type Props = {\n isMobile: boolean\n state: ReducerState\n dispatch: Dispatch<Action>\n debouncedFetchCitiesByKeyword: DebouncedFunc<\n (keyword: string) => Promise<void>\n >\n debouncedFetchSearchResults: DebouncedFunc<\n (keyword: string, state: ReducerState) => Promise<void>\n >\n focusLocationInput: () => void\n focusSearchInput: () => void\n renderLocationResults: () => React.ReactNode\n renderSearchResults: () => React.ReactNode\n trackingAttributes?: GATrackingCode\n onSearch?: (info: SearchClick) => void\n initalSearchValue?: string\n}\n\nexport function SearchInputs({\n isMobile,\n state,\n dispatch,\n debouncedFetchCitiesByKeyword,\n debouncedFetchSearchResults,\n focusLocationInput,\n focusSearchInput,\n renderLocationResults,\n renderSearchResults,\n trackingAttributes,\n onSearch,\n initalSearchValue,\n}: Props) {\n const inputLocationWrapperRef = useRef<HTMLDivElement>(null)\n const inputSearchWrapperRef = useRef<HTMLDivElement>(null)\n\n const {\n focused,\n searchLocationKeywords,\n geoLocationPermission,\n selectedLocation,\n searchKeywords,\n inputSearchPlaceholder,\n } = state\n const { t } = useTranslations()\n\n useAnimatedPlaceholder({\n wrapperRef: inputSearchWrapperRef,\n disabled: !!inputSearchPlaceholder,\n })\n\n useOutsideClick(inputLocationWrapperRef, () => {\n dispatch({ type: ActionTypes.ClickOutsideInputLocation })\n })\n\n useOutsideClick(inputSearchWrapperRef, () => {\n dispatch({ type: ActionTypes.ClickOutsideInputSearch })\n })\n\n function handleLocationInputClear() {\n dispatch({ type: ActionTypes.ClearInputLocation })\n debouncedFetchCitiesByKeyword.cancel()\n focusLocationInput()\n }\n\n function handleSearchInputClear() {\n dispatch({ type: ActionTypes.ClearInputSearch })\n debouncedFetchSearchResults.cancel()\n debouncedFetchSearchResults('', state)\n focusSearchInput()\n }\n\n const searchInputPinIconColor = useMemo(() => {\n if (\n geoLocationPermission === 'granted' &&\n selectedLocation?.id === ID_OPTION_CURRENT_LOCATION\n ) {\n return theme.colors.primaryBase\n } else {\n return theme.colors.gray400\n }\n }, [geoLocationPermission, selectedLocation])\n\n const handleSearchInputChange = useCallback(\n function handleSearchInputChange(value: string) {\n dispatch({ type: ActionTypes.ChangeInputSearch, payload: value })\n if (typeof onSearch === 'function') {\n return\n }\n if (\n value.trim().length > SEARCH_KEYWORD_MIN_LENGTH[state.locale] ||\n initalSearchValue\n ) {\n debouncedFetchSearchResults(value.trim(), state)\n } else {\n debouncedFetchSearchResults.cancel()\n dispatch({ type: ActionTypes.DisplayInitialSearchResults })\n }\n },\n [dispatch, state],\n )\n\n const handleSearchLocationInputChange = useCallback(\n function handleSearchLocationInputChange(value: string) {\n dispatch({ type: ActionTypes.ChangeInputLocation, payload: value })\n if (value.trim().length > SEARCH_KEYWORD_MIN_LENGTH[state.locale]) {\n debouncedFetchCitiesByKeyword(value.trim())\n } else {\n debouncedFetchCitiesByKeyword.cancel()\n dispatch({ type: ActionTypes.DisplayInitialCities })\n }\n },\n [debouncedFetchCitiesByKeyword, dispatch],\n )\n\n const handleKeyPress = (e: KeyboardEvent<Element>) => {\n if (state.autoCompleteDisabled && e.key === 'Enter' && onSearch) {\n onSearch({\n cityId: state.selectedLocation.id,\n keyword: searchKeywords,\n })\n }\n }\n\n return (\n <StyledSearchBarInputsWrapper>\n <StyledInputLocationWrapper ref={inputLocationWrapperRef}>\n <StyledInput\n inputClassName={focused === 'location' ? 'focused' : undefined}\n placeholder={t('booking.searchBar.locationPlaceholder')}\n autoComplete=\"off\"\n name=\"search-location\"\n displayIcon={\n <PinIcon\n className=\"location-pin-icon\"\n color={searchInputPinIconColor}\n />\n }\n actionIcon={\n <StyledClearIcon\n color={theme.colors.gray300}\n className={searchLocationKeywords !== '' ? 'shown' : ''}\n />\n }\n onActionClick={handleLocationInputClear}\n value={searchLocationKeywords}\n onChange={handleSearchLocationInputChange}\n onFocus={() => dispatch({ type: ActionTypes.FocusInputLocation })}\n size=\"md\"\n />\n {!isMobile && renderLocationResults()}\n </StyledInputLocationWrapper>\n <StyledInputSearchWrapper ref={inputSearchWrapperRef}>\n <StyledInput\n placeholder={\n inputSearchPlaceholder ||\n t('booking.searchBar.searchInput.placeholder')\n }\n autoComplete=\"off\"\n name=\"search-results\"\n actionIcon={\n <StyledClearIcon\n color={theme.colors.gray300}\n className={searchKeywords !== '' ? 'shown' : ''}\n />\n }\n onActionClick={handleSearchInputClear}\n value={searchKeywords}\n onChange={handleSearchInputChange}\n onFocus={() => dispatch({ type: ActionTypes.FocusInputSearch })}\n inputClassName={focused === 'search' ? 'focused' : undefined}\n size=\"md\"\n trackingAttributes={trackingAttributes}\n onKeyPress={handleKeyPress}\n enterKeyHint={state.autoCompleteDisabled ? 'search' : undefined}\n />\n {!isMobile && renderSearchResults()}\n </StyledInputSearchWrapper>\n {state.autoCompleteDisabled && !state.isMobile && (\n <SearchButton\n onClick={() => {\n onSearch({\n cityId: state.selectedLocation.id,\n keyword: searchKeywords,\n })\n }}\n />\n )}\n </StyledSearchBarInputsWrapper>\n )\n}\n","import { SearchBarSectionApi } from 'care/interfaces/types'\nimport { Text } from 'components/atoms/text'\nimport { theme } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledResult = styled.li`\n display: flex;\n align-items: center;\n gap: var(--rowGap);\n cursor: pointer;\n`\n\nexport const StyledRoundedIconWrapper = styled.div<{\n type: SearchBarSectionApi['type']\n}>`\n --wrapper-size: var(--graphicSize);\n border-radius: calc(var(--wrapper-size) / 2);\n background-color: var(--neutral50);\n width: var(--wrapper-size);\n height: var(--wrapper-size);\n aspect-ratio: 1/1;\n overflow: hidden;\n\n ${({ type }) =>\n type &&\n type === 'doctors' &&\n `\n border-radius: calc(var(--graphicSize) / 2);\n `}\n\n img {\n width: var(--graphicSize);\n height: var(--graphicSize);\n ${({ type }) =>\n type && type === 'doctors'\n ? `\n\n object-fit: cover; \n `\n : `\n object-fit: contain;\n `}\n }\n\n &:focus-visible {\n outline: 1px solid ${theme.colors.gray600};\n }\n`\n\nexport const StyledText = styled(Text)`\n line-height: 22px;\n letter-spacing: -0.2px;\n\n ${MediaQueries.tdUp} {\n &[data-size='p3'] {\n font-size: 14px;\n }\n }\n`\n\nexport const StyledPictureWrapper = styled.figure`\n max-width: var(--graphicSize);\n min-width: var(--graphicSize);\n`\n\nexport const StyledLocationPin = styled.svg`\n margin: 0 auto;\n display: block;\n`\n\nexport const StyledImageSkeletonWrapper = styled.div`\n display: grid;\n place-items: center;\n`\n","import React, { useMemo } from 'react'\n\nimport {\n DefaultThumbnailAny,\n DefaultThumbnailDoctor,\n DefaultThumbnailService,\n} from 'care/components/atoms/icons'\nimport {\n SearchBarSectionApi,\n SearchBarSectionItemApi,\n} from 'care/interfaces/types'\nimport { theme } from 'misc/theme'\n\nimport {\n StyledResult,\n StyledRoundedIconWrapper,\n StyledText,\n StyledPictureWrapper,\n StyledLocationPin,\n} from './index.styled'\n\nconst defaultThumbnailByType: { [k in SearchBarSectionApi['type']]?: any } = {\n doctors: DefaultThumbnailDoctor,\n services: DefaultThumbnailService,\n}\n\nexport type Props = {\n type: SearchBarSectionApi['type']\n item: SearchBarSectionItemApi\n imageUrl?: string\n onClickItem?: (item: SearchBarSectionItemApi) => void\n}\n\nconst ResultSectionItem = ({ type, item, imageUrl, onClickItem }: Props) => {\n const onKeyDown = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === 'Enter' || e.key === 'Space') {\n if (onClickItem) {\n onClickItem(item)\n }\n }\n }\n\n const defaultThumbnail = useMemo(() => {\n const Cmp: any = defaultThumbnailByType[type] || DefaultThumbnailAny\n return <Cmp width={32} height={type === 'services' ? 32 : 24} />\n }, [type])\n\n return (\n <StyledResult\n onClick={() => onClickItem && onClickItem(item)}\n onKeyDown={onKeyDown}\n tabIndex={0}\n role=\"button\"\n >\n <StyledPictureWrapper>\n {type === 'hospitals' ? (\n <StyledLocationPin width=\"12\" height=\"16\" viewBox=\"0 0 12 16\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.75 5.94873C0.75 3.04623 3.0975 0.69873 6 0.69873C8.9025 0.69873 11.25 3.04623 11.25 5.94873C11.25 9.07623 7.935 13.3887 6.5775 15.0312C6.2775 15.3912 5.73 15.3912 5.43 15.0312C4.065 13.3887 0.75 9.07623 0.75 5.94873ZM4.125 5.94873C4.125 6.98373 4.965 7.82373 6 7.82373C7.035 7.82373 7.875 6.98373 7.875 5.94873C7.875 4.91373 7.035 4.07373 6 4.07373C4.965 4.07373 4.125 4.91373 4.125 5.94873Z\"\n fill=\"#9AA2AC\"\n />\n </StyledLocationPin>\n ) : (\n <StyledRoundedIconWrapper type={type}>\n {imageUrl ? (\n <img\n src={imageUrl}\n width={32}\n height={type === 'services' ? 32 : 24}\n />\n ) : (\n defaultThumbnail\n )}\n </StyledRoundedIconWrapper>\n )}\n </StyledPictureWrapper>\n <StyledText color={theme.colors.gray800} size=\"p3\">\n {item.name}\n </StyledText>\n </StyledResult>\n )\n}\n\nexport { ResultSectionItem }\n","import React from 'react'\n\nexport const DoctorIcon = () => (\n <svg width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\n <path\n d=\"M7.00004 0.666992C5.29757 0.666992 3.64067 0.813476 2.52087 1.03158C1.73311 1.18457 1.16671 1.86816 1.16671 2.6722V4.83366C1.16671 5.29264 1.54106 5.66699 2.00004 5.66699H12C12.459 5.66699 12.8334 5.29264 12.8334 4.83366V2.69824C12.8334 1.89421 12.267 1.21061 11.4792 1.05762C10.3562 0.839518 8.69275 0.666992 7.00004 0.666992ZM6.16671 1.50033H7.83337V2.33366H8.66671V4.00033H7.83337V4.83366H6.16671V4.00033H5.33337V2.33366H6.16671V1.50033ZM1.42712 6.50033C1.3197 6.89421 1.24158 7.32389 1.19275 7.77637C1.14718 8.18001 1.05603 9.25423 1.06254 9.36491C0.603556 9.72624 0.333374 10.2861 0.333374 10.9014C0.333374 11.8356 0.977906 12.6364 1.84379 12.8285C2.74548 15.0192 4.55212 17.3337 7.00004 17.3337C9.44796 17.3337 11.2546 14.9964 12.1563 12.8024C13.0222 12.6136 13.6667 11.8356 13.6667 10.9014C13.6667 10.2861 13.3965 9.72624 12.9375 9.36491C12.9441 9.25423 12.8562 8.16048 12.8073 7.75033C12.7552 7.30436 12.6804 6.89095 12.573 6.50033H5.35942C6.52804 8.20606 9.27543 7.18717 11.0365 7.62012C11.5736 8.79199 11.1667 10.4326 11.1667 10.4326L11.8177 10.641C11.9121 10.6702 12 10.7549 12 10.9014C12 11.0576 11.8861 11.1943 11.6875 11.1878L11.0105 11.0837L10.7761 11.7347C9.96554 14.0492 8.4128 15.667 7.00004 15.667C5.58728 15.667 4.03455 14.0492 3.224 11.7347L2.96358 11.0837L2.26046 11.1878C2.11723 11.1878 2.00004 11.0576 2.00004 10.9014C2.00004 10.7549 2.08793 10.6702 2.18233 10.641L2.83337 10.4326C2.73246 10.5531 2.4102 8.7041 2.83337 8.03678C3.59184 7.5127 4.2266 7.87728 5.12504 6.50033H1.42712ZM5.17712 9.05241C4.57166 9.05241 4.08337 9.55371 4.08337 10.1722C4.08337 10.7907 4.57166 11.292 5.17712 11.292C5.78259 11.292 6.27087 10.7907 6.27087 10.1722C6.27087 9.55371 5.78259 9.05241 5.17712 9.05241ZM8.82296 9.05241C8.21749 9.05241 7.72921 9.55371 7.72921 10.1722C7.72921 10.7907 8.21749 11.292 8.82296 11.292C9.42843 11.292 9.91671 10.7907 9.91671 10.1722C9.91671 9.55371 9.42843 9.05241 8.82296 9.05241Z\"\n fill=\"#9AA2AC\"\n />\n </svg>\n)\n\nexport const ServiceIcon = () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\">\n <path\n d=\"M8.99996 0.666992C6.27535 0.666992 3.85348 1.97884 2.33329 4.00033H4.59892C5.80009 2.94564 7.36259 2.33366 8.99996 2.33366C10.6373 2.33366 12.1998 2.94564 13.401 4.00033H15.6666C14.1464 1.97884 11.7246 0.666992 8.99996 0.666992ZM1.78642 4.83366C1.07678 7.04069 0.666626 9.59928 0.666626 12.3337C0.666626 14.085 0.826131 15.7679 1.13538 17.3337H16.8645C17.1738 15.7679 17.3333 14.085 17.3333 12.3337C17.3333 9.59928 16.9231 7.04069 16.2135 4.83366H1.78642ZM8.99996 7.33366C11.3014 7.33366 13.1666 9.19889 13.1666 11.5003C13.1666 13.8018 11.3014 15.667 8.99996 15.667C6.69853 15.667 4.83329 13.8018 4.83329 11.5003C4.83329 9.19889 6.69853 7.33366 8.99996 7.33366ZM8.16663 9.00033V10.667H6.49996V12.3337H8.16663V14.0003H9.83329V12.3337H11.5V10.667H9.83329V9.00033H8.16663Z\"\n fill=\"#9AA2AC\"\n />\n </svg>\n)\n\nexport const HospitalIcon = () => (\n <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\">\n <path\n d=\"M8 0.666992L0.5 5.63533V14.8337C0.5 15.7545 1.24583 16.5003 2.16667 16.5003H13.8333C14.7542 16.5003 15.5 15.7545 15.5 14.8337V5.63533L8 0.666992ZM11.3333 10.667H8.83333V13.167H7.16667V10.667H4.66667V9.00033H7.16667V6.50033H8.83333V9.00033H11.3333V10.667Z\"\n fill=\"#9AA2AC\"\n />\n </svg>\n)\n\nexport const SpecialtyIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n <path\n d=\"M3.83333 0.5C2.94928 0.5 2.10143 0.851189 1.47631 1.47631C0.851189 2.10143 0.5 2.94928 0.5 3.83333C0.5 4.71739 0.851189 5.56523 1.47631 6.19036C2.10143 6.81548 2.94928 7.16667 3.83333 7.16667C4.71739 7.16667 5.56523 6.81548 6.19036 6.19036C6.81548 5.56523 7.16667 4.71739 7.16667 3.83333C7.16667 2.94928 6.81548 2.10143 6.19036 1.47631C5.56523 0.851189 4.71739 0.5 3.83333 0.5V0.5ZM10.5 0.5C9.57917 0.5 8.83333 1.24583 8.83333 2.16667V5.5C8.83333 6.42083 9.57917 7.16667 10.5 7.16667H13.8333C14.7542 7.16667 15.5 6.42083 15.5 5.5V2.16667C15.5 1.24583 14.7542 0.5 13.8333 0.5H10.5ZM3.83333 8.83333C2.94928 8.83333 2.10143 9.18452 1.47631 9.80964C0.851189 10.4348 0.5 11.2826 0.5 12.1667C0.5 13.0507 0.851189 13.8986 1.47631 14.5237C2.10143 15.1488 2.94928 15.5 3.83333 15.5C4.71739 15.5 5.56523 15.1488 6.19036 14.5237C6.81548 13.8986 7.16667 13.0507 7.16667 12.1667C7.16667 11.2826 6.81548 10.4348 6.19036 9.80964C5.56523 9.18452 4.71739 8.83333 3.83333 8.83333V8.83333ZM12.1667 8.83333C11.2826 8.83333 10.4348 9.18452 9.80964 9.80964C9.18452 10.4348 8.83333 11.2826 8.83333 12.1667C8.83333 13.0507 9.18452 13.8986 9.80964 14.5237C10.4348 15.1488 11.2826 15.5 12.1667 15.5C13.0507 15.5 13.8986 15.1488 14.5237 14.5237C15.1488 13.8986 15.5 13.0507 15.5 12.1667C15.5 11.2826 15.1488 10.4348 14.5237 9.80964C13.8986 9.18452 13.0507 8.83333 12.1667 8.83333V8.83333Z\"\n fill=\"#9AA2AC\"\n />\n </svg>\n)\n","import { Text } from 'components/atoms'\nimport { theme } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledTypeHeader = styled.header`\n display: flex;\n justify-content: space-between;\n padding: 12px 24px;\n background-color: ${theme.colors.neutral50};\n box-shadow: inset 0px 1px 0px #e4e8ec;\n`\n\nexport const StyledInfoWrapper = styled.div`\n display: grid;\n flex: 2;\n align-items: center;\n gap: 16px;\n grid-template-columns: 16px 1fr;\n`\n\nexport const StyledTypeName = styled.p`\n color: ${theme.colors.neutral800};\n font-size: 14px;\n font-weight: ${theme.sizes.fwSemiBold};\n letter-spacing: -0.2px;\n line-height: 22px;\n`\n\nexport const StyledSeeMoreButton = styled.button`\n flex: 1;\n cursor: pointer;\n text-align: end;\n`\n\nexport const StyledResultsContainer = styled.section`\n padding: 12px 16px;\n --rowGap: 16px;\n --graphicSize: 32px;\n\n ${MediaQueries.tdUp} {\n --rowGap: 8px;\n }\n`\n\nexport const StyledItemsWrapper = styled.ul<{\n isShown?: boolean\n isMore?: boolean\n}>`\n --gap: 16px;\n ${MediaQueries.tdUp} {\n --gap: 8px;\n }\n\n display: grid;\n overflow: hidden;\n gap: var(--gap);\n transition: max-height 0.8s ease-out;\n\n ${({ isMore }) =>\n isMore &&\n `\n height: auto;\n max-height: 0;\n margin-top: var(--gap);\n `}\n\n ${({ isShown }) =>\n isShown &&\n `\n max-height: 600px;\n `}\n\n@media (prefers-reduced-motion) {\n transition: none;\n }\n\n ${MediaQueries.tdUp} {\n grid-template-columns: 1fr 1fr;\n } ;\n`\n\nexport const StyledSeeMore = styled(Text)`\n margin-top: 12px;\n margin-bottom: 8px;\n cursor: pointer;\n text-align: start;\n text-transform: capitalize;\n`\n","import React, { useState, Dispatch, useMemo } from 'react'\n\nimport {\n Action,\n ActionTypes,\n ReducerState,\n} from 'care/components/organisms/bookingSearchBar/reducer'\nimport { LOCALIZED_SLUGS } from 'care/interfaces/constants'\nimport { Text } from 'components/atoms'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport Skeleton from 'react-loading-skeleton'\n\nimport { SearchBarSectionItemApi } from '../../../../interfaces/types'\nimport { SEARCH_KEYWORD_MIN_LENGTH } from '../constants'\nimport { ResultSectionItem } from '../resultSectionItem'\nimport {\n StyledImageSkeletonWrapper,\n StyledPictureWrapper,\n StyledResult,\n} from '../resultSectionItem/index.styled'\nimport { DoctorIcon, HospitalIcon, ServiceIcon, SpecialtyIcon } from './icons'\nimport {\n StyledInfoWrapper,\n StyledItemsWrapper,\n StyledResultsContainer,\n StyledSeeMore,\n StyledSeeMoreButton,\n StyledTypeHeader,\n StyledTypeName,\n} from './index.styled'\n\nexport type Props = {\n type: 'specialties' | 'services' | 'hospitals' | 'doctors'\n data: SearchBarSectionItemApi[]\n state: ReducerState\n dispatch: Dispatch<Action>\n itemsToShow: number\n itemsToShowDesktop: number\n keyword: string\n isMobile: boolean\n isLoading?: boolean\n}\n\nconst ResultSection = ({\n type,\n data,\n state,\n dispatch,\n itemsToShow,\n itemsToShowDesktop,\n isMobile,\n isLoading,\n keyword,\n}: Props) => {\n const [seeMoreOpen, setSeeMoreOpen] = useState(false)\n const { t, locale } = useTranslations()\n const { selectedLocation, searchKeywords } = state\n\n const slugs = useMemo(() => LOCALIZED_SLUGS[locale], [locale])\n\n const typeInformation: {\n [key in Props['type']]: {\n name: string\n icon: React.ReactNode\n slug: string\n }\n } = useMemo(() => {\n return {\n doctors: {\n name: t('booking.searchPopup.doctors'),\n icon: <DoctorIcon />,\n slug: slugs.DOCTOR,\n },\n services: {\n name: t('booking.searchPopup.services'),\n icon: <ServiceIcon />,\n slug: slugs.SERVICE,\n },\n hospitals: {\n name: t('booking.searchPopup.hospitals'),\n icon: <HospitalIcon />,\n slug: slugs.HOSPITAL,\n },\n specialties: {\n name: t('booking.searchPopup.specialties'),\n icon: <SpecialtyIcon />,\n slug: slugs.SPECIALTIES,\n },\n }\n }, [type, slugs])\n\n const typeSlug = useMemo(() => typeInformation[type].slug, [typeInformation])\n\n const showItemCount = isMobile ? itemsToShow : itemsToShowDesktop\n\n function onClickItem(item: SearchBarSectionItemApi) {\n let url = ''\n switch (type) {\n case 'specialties':\n url = `/${selectedLocation.slug}/${typeInformation.doctors.slug}/${item.slug}`\n break\n case 'services':\n url = `/${selectedLocation.slug}/${typeSlug}/${item.slug}`\n break\n case 'doctors':\n case 'hospitals':\n url = `/${typeSlug}/${item.slug}-${item.id}`\n break\n }\n if (url) {\n dispatch({\n type: ActionTypes.SelectSearchResult,\n payload: { name: item.name, url },\n })\n }\n }\n\n function renderItem(item: SearchBarSectionItemApi) {\n return (\n <ResultSectionItem\n key={item.id}\n item={item}\n type={type}\n imageUrl={item.logo || item.avatar || item.thumbnail}\n onClickItem={onClickItem}\n />\n )\n }\n\n function onSeeAllClick() {\n let url = ''\n switch (type) {\n case 'specialties':\n url = `/${typeSlug}`\n break\n case 'services':\n case 'doctors':\n case 'hospitals':\n url = `/${selectedLocation.slug}/${typeSlug}`\n break\n }\n if (url) {\n dispatch({ type: ActionTypes.NavigateTo, payload: url })\n }\n }\n\n function onClickSearchByKeyword() {\n const { slug: typeSlug } = typeInformation[type]\n const url = `/${selectedLocation.slug}/${typeSlug}?q=${searchKeywords}`\n dispatch({ type: ActionTypes.NavigateTo, payload: url })\n }\n\n return (\n <section>\n <StyledTypeHeader>\n <StyledInfoWrapper>\n {typeInformation[type].icon}\n <StyledTypeName>{typeInformation[type].name}</StyledTypeName>\n </StyledInfoWrapper>\n <StyledSeeMoreButton onClick={onSeeAllClick}>\n <Text size=\"p3\" color={theme.colors.primaryBase}>\n {t('booking.searchPopup.seeAll')}\n </Text>\n </StyledSeeMoreButton>\n </StyledTypeHeader>\n\n {(isLoading || (data && data.length > 0)) && (\n <StyledResultsContainer>\n <StyledItemsWrapper>\n {isLoading &&\n Array(2)\n .fill(undefined)\n .map((_, i) => (\n <StyledResult key={type + 'loading' + i}>\n <StyledPictureWrapper>\n <StyledImageSkeletonWrapper>\n <Skeleton\n height={14}\n width={type === 'hospitals' ? 12 : 32}\n style={{\n maxWidth: 'var(--graphicSize)',\n minHeight: 'var(--graphicSize)',\n }}\n />\n </StyledImageSkeletonWrapper>\n </StyledPictureWrapper>\n <Skeleton width={120} height={24} />\n </StyledResult>\n ))}\n {!isLoading &&\n data &&\n data.length > 0 &&\n data.slice(0, showItemCount).map(renderItem)}\n </StyledItemsWrapper>\n\n <StyledItemsWrapper isShown={seeMoreOpen} isMore>\n {data.slice(showItemCount, -1).map(renderItem)}\n </StyledItemsWrapper>\n {type === 'specialties' && showItemCount < data.length && !isLoading && (\n <button onClick={() => setSeeMoreOpen(!seeMoreOpen)}>\n <StyledSeeMore size=\"p3\" color={theme.colors.primaryBase}>\n {seeMoreOpen\n ? t('booking.searchPopup.seeLessSpecialties')\n : t('booking.searchPopup.seeMoreSpecialties')}\n </StyledSeeMore>\n </button>\n )}\n {type !== 'specialties' &&\n showItemCount < data.length &&\n !isLoading &&\n keyword.trim().length > SEARCH_KEYWORD_MIN_LENGTH[locale] && (\n <button onClick={onClickSearchByKeyword}>\n <StyledSeeMore size=\"p3\" color={theme.colors.primaryBase}>\n {t(`booking.searchPopup.searchIn.${type}`, {\n name: keyword,\n })}\n </StyledSeeMore>\n </button>\n )}\n </StyledResultsContainer>\n )}\n {!isLoading && data?.length === 0 && (\n <StyledResultsContainer>\n <Text size=\"sm\" color={theme.colors.gray400}>\n {t('booking.searchBar.noResults')}\n </Text>\n </StyledResultsContainer>\n )}\n </section>\n )\n}\n\nexport { ResultSection }\n","import React, { Dispatch } from 'react'\n\nimport { SearchBarSectionApi } from 'care/interfaces/types'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nimport { Action, ReducerState } from '../reducer'\nimport { ResultSection } from '../resultSection'\n\nexport type Props = {\n data: SearchBarSectionApi[]\n state: ReducerState\n dispatch: Dispatch<Action>\n isMobile: boolean\n isLoading?: boolean\n keyword?: string\n}\n\nconst StyledSection = styled.section`\n background-color: white;\n border-radius: 4px;\n position: absolute;\n width: 100%;\n z-index: 30;\n\n ${MediaQueries.tdUp} {\n box-shadow: 0px 24px 32px rgba(0, 0, 0, 0.04),\n 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04),\n 0px 0px 1px rgba(0, 0, 0, 0.04);\n }\n`\n\nconst SearchResults = ({\n data,\n state,\n dispatch,\n isMobile,\n isLoading,\n keyword,\n}: Props) => {\n return (\n <StyledSection>\n {data &&\n data.map((data) => (\n <ResultSection\n type={data.type}\n state={state}\n dispatch={dispatch}\n itemsToShow={2}\n itemsToShowDesktop={4}\n key={data.type}\n data={data.results}\n isMobile={isMobile}\n isLoading={isLoading}\n keyword={keyword}\n />\n ))}\n </StyledSection>\n )\n}\n\nexport { SearchResults }\n","export const PATHS = {\n GET_CITIES_LIST:\n 'api/lists/cities?keyword={keyword}&country_id={countryId}&site={domain}&_nopaging={nopaging}',\n GET_CITY:\n 'api/lists/cities?ids={ids}&site={domain}&longitude={longitude}&latitude={latitude}',\n GET_HOME_SEARCH:\n 'api/search/?_home=1&city_id={city}&keyword={keyword}&site={domain}&latitude={lat}&longitude={lng}',\n GET_SEARCH_V2:\n 'api/v2/search/?site={domain}&type={searchType}&keyword={keyword}&city_id={city}&latitude={lat}&longitude={lng}',\n GET_CITY_BY_IP: 'api/geobyip?site={domain}&latitude={lat}&longitude={lng}',\n}\n","import { domainLocales } from 'components/organisms/navigationLayout/constants'\nimport { LocaleType } from 'interfaces/types'\nimport formatString from 'string-format'\n\nexport const getApiPath = (\n path: string,\n params?: { [key: string]: string | number },\n locale?: LocaleType,\n) => {\n return formatString(path, {\n ...params,\n domain: domainLocales[locale || 'en-PH'],\n })\n}\n\nexport const callApi = async (\n url: string,\n method: RequestInit['method'],\n options?: RequestInit,\n) => {\n try {\n const res = await fetch(url, {\n method,\n ...options,\n })\n // console.log(res)\n if (res) return res.json()\n } catch (err) {\n return null\n }\n return null\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useReducer,\n useState,\n CSSProperties,\n} from 'react'\n\nimport {\n ID_OPTION_CURRENT_LOCATION,\n LOCALIZED_SLUGS,\n} from 'care/interfaces/constants'\nimport { CareLocaleType, City } from 'care/interfaces/types'\nimport { useGeolocation } from 'hooks/useGeolocation'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { GeoLocationPermission, GPSType } from 'interfaces/types'\nimport debounce from 'lodash/debounce'\n\nimport {\n StyledHiddenInputMobile,\n StyledSearchBarWrapper,\n StyledSearchBarMobileWrapper,\n StyledSearchBarMobileModalHeader,\n CareSearchGlobalStyles,\n} from './index.styled'\nimport LocationResults from './locationResults'\nimport { MobileFakeInput } from './mobileFakeInput'\nimport { MobileTopBar } from './mobileTopbar'\nimport { reducer, initialState, ActionTypes, ReducerState } from './reducer'\nimport { SearchInputs } from './searchInputs'\nimport { SearchResults } from './searchResults'\nimport { SearchButton } from './searchSubmitIcon'\nimport { GATrackingCode, SearchClick } from './types'\nimport useSearchBarApi from './useSearchBarApi'\n\nexport type Props = {\n isMobile: boolean\n careApiDomain: string\n careFrontDomain?: string\n initialSearchValue?: string\n initialSelectedCity?: City\n geoLocationPermission?: GeoLocationPermission\n geoLocationCoordinates?: GPSType\n isDebug?: boolean\n askForGeolocationPermission?: boolean\n gaTrackingSearchBar?: GATrackingCode\n autoCompleteDisabled?: boolean\n inputSearchPlaceholder?: string\n routerPush?: (s: string) => void\n onGeoLocationPermissionChange?: (\n perm: GeoLocationPermission,\n coordinates: GPSType,\n ) => void\n onSearch?: (data: SearchClick) => void\n onChangeLocation?: (city: City) => void\n}\n\nconst BookingSearchBar = ({\n isMobile,\n careApiDomain,\n geoLocationPermission: geoLocationPermissionFromProps,\n geoLocationCoordinates: geoLocationCoordinatesFromProps,\n initialSelectedCity: initialSelectedCityFromProps,\n initialSearchValue = '',\n careFrontDomain = '/care',\n isDebug = false,\n askForGeolocationPermission = false,\n gaTrackingSearchBar,\n autoCompleteDisabled = false,\n inputSearchPlaceholder = '',\n routerPush,\n onGeoLocationPermissionChange,\n onSearch,\n onChangeLocation,\n}: Props) => {\n const { t, locale } = useTranslations<CareLocaleType>()\n const wrapperRef = useRef<HTMLDivElement>(null)\n const hiddenInputRef = useRef<HTMLInputElement>(null)\n const [viewportHeight, setViewportHeight] = useState<number | void>(undefined)\n const {\n geoLocationPermission: geoLocationPermissionFromHook,\n geoLocationCoordinates: geoLocationCoordinatesFromHook,\n requestGeoLocation,\n } = useGeolocation()\n\n const [state, dispatch] = useReducer(\n reducer,\n initialState,\n (s: ReducerState) => ({\n ...s,\n isDebug,\n isMobile,\n geoLocationPermission:\n geoLocationPermissionFromProps ||\n geoLocationPermissionFromHook ||\n 'unset',\n geoLocationCoordinates:\n geoLocationCoordinatesFromProps ||\n geoLocationCoordinatesFromHook ||\n null,\n searchKeywords: initialSearchValue,\n initialSelectedCity: initialSelectedCityFromProps || null,\n selectedLocation:\n initialSelectedCityFromProps || s.selectedLocation || null,\n searchLocationKeywords:\n initialSelectedCityFromProps?.name || s.searchLocationKeywords,\n autoCompleteDisabled,\n inputSearchPlaceholder,\n locale,\n }),\n )\n\n const {\n navigateTo,\n focused,\n isLoadingCities,\n cities,\n searchKeywords,\n geoLocationPermission,\n selectedLocation,\n initialSelectedCity,\n defaultCity,\n searchResults,\n isLoadingSearchResults,\n isMobileModalOpened,\n inputSearchPlaceholder: inputSearchPlaceholderState,\n } = state\n\n const { fetchCitiesByLocation, fetchCitiesByKeyword, fetchSearchResults } =\n useSearchBarApi({\n dispatch,\n locale,\n careApiDomain,\n })\n\n const currentLocationCityItem = useMemo<City>(\n () => ({\n id: ID_OPTION_CURRENT_LOCATION,\n name: t('booking.searchBar.currentLocation'),\n slug: LOCALIZED_SLUGS[locale]?.CURRENT,\n }),\n [t, locale],\n )\n\n const debouncedFetchCitiesByKeyword = useMemo(\n () => debounce(fetchCitiesByKeyword, 400),\n [fetchCitiesByKeyword],\n )\n\n const debouncedFetchSearchResults = useMemo(\n () => debounce(fetchSearchResults, 400),\n [fetchSearchResults],\n )\n\n useEffect(() => {\n if (\n initialSearchValue !== '' &&\n initialSearchValue !== state.searchKeywords\n ) {\n dispatch({\n type: ActionTypes.UpdateInitialSearchValue,\n payload: initialSearchValue,\n })\n }\n }, [initialSearchValue])\n\n useEffect(() => {\n if (\n askForGeolocationPermission &&\n selectedLocation?.id === ID_OPTION_CURRENT_LOCATION &&\n geoLocationPermission === 'unset'\n ) {\n requestGeoLocation()\n }\n }, [askForGeolocationPermission, selectedLocation, geoLocationPermission])\n\n useEffect(() => {\n if (\n !geoLocationPermissionFromProps &&\n geoLocationPermission !== geoLocationPermissionFromHook\n ) {\n if (\n geoLocationPermissionFromHook === 'granted' &&\n geoLocationCoordinatesFromHook\n ) {\n dispatch({\n type: ActionTypes.GrantGeoLocationPermission,\n payload: geoLocationCoordinatesFromHook,\n })\n } else if (geoLocationPermissionFromHook === 'denied') {\n dispatch({ type: ActionTypes.DenyGeoLocationPermission })\n }\n }\n }, [\n geoLocationPermission,\n geoLocationPermissionFromHook,\n geoLocationCoordinatesFromHook,\n geoLocationPermissionFromProps,\n ])\n\n useEffect(() => {\n if (navigateTo) {\n if (routerPush) {\n routerPush(navigateTo)\n } else {\n window.location.href = `${careFrontDomain}${navigateTo}`\n }\n }\n }, [navigateTo])\n\n const selectCurrentLocation = useCallback(\n function selectCurrentLocation() {\n dispatch({\n type: ActionTypes.SelectCurrentLocation,\n payload: currentLocationCityItem,\n })\n },\n [t, dispatch],\n )\n\n useEffect(() => {\n if (geoLocationPermission !== 'denied' && !initialSelectedCity) {\n selectCurrentLocation()\n }\n if (onGeoLocationPermissionChange) {\n onGeoLocationPermissionChange(\n geoLocationPermission,\n state.geoLocationCoordinates,\n )\n }\n if (isMobile && geoLocationPermission === 'granted' && selectedLocation) {\n dispatch({ type: ActionTypes.FocusInputSearch })\n }\n fetchCitiesByLocation({ coordinates: state.geoLocationCoordinates })\n }, [geoLocationPermission])\n\n useEffect(() => {\n if (selectedLocation && defaultCity) {\n fetchSearchResults(state.searchKeywords, state)\n }\n }, [selectedLocation, defaultCity])\n\n useEffect(() => {\n if (inputSearchPlaceholder !== inputSearchPlaceholderState) {\n dispatch({\n type: ActionTypes.SetInputSearchPlaceholder,\n payload: inputSearchPlaceholder,\n })\n }\n }, [inputSearchPlaceholder, inputSearchPlaceholderState])\n\n useEffect(() => {\n if (isMobileModalOpened) {\n document.body.classList.add('care-popup-open')\n } else {\n document.body.classList.remove('care-popup-open')\n }\n }, [isMobileModalOpened])\n\n const handleLocationClick = useCallback(\n function handleLocationClick(city: City) {\n dispatch({ type: ActionTypes.SelectLocation, payload: city })\n focusSearchInput()\n if (onChangeLocation) {\n onChangeLocation(city)\n }\n },\n [t, dispatch],\n )\n\n function handleCurrentLocationClick() {\n if (isMobile && state.geoLocationPermission !== 'granted') {\n requestGeoLocation()\n } else {\n selectCurrentLocation()\n focusSearchInput()\n }\n }\n\n async function handleMobileFakeInputClick() {\n if (hiddenInputRef.current) {\n hiddenInputRef.current.focus()\n }\n dispatch({ type: ActionTypes.OpenMobileModal })\n await Promise.resolve()\n if (wrapperRef.current) {\n wrapperRef.current\n .querySelector<HTMLInputElement>('input[name=\"search-location\"]')\n ?.focus()\n }\n }\n\n function focusLocationInput() {\n if (wrapperRef.current) {\n wrapperRef.current\n .querySelector<HTMLInputElement>('input[name=\"search-location\"]')\n ?.focus()\n }\n }\n\n function focusSearchInput() {\n if (wrapperRef.current) {\n wrapperRef.current\n .querySelector<HTMLInputElement>('input[name=\"search-results\"]')\n ?.focus()\n }\n }\n\n function handleMobileTopBarClose() {\n dispatch({ type: ActionTypes.CloseMobileModal })\n }\n\n function renderLocationResults() {\n if (focused !== 'location') {\n return null\n }\n return (\n <LocationResults\n isLoading={isLoadingCities}\n cities={cities}\n onLocationClick={handleLocationClick}\n onCurrentLocationClick={handleCurrentLocationClick}\n isLocationLoading={isLoadingCities}\n geoLocationPermission={geoLocationPermission}\n selectedLocation={selectedLocation}\n />\n )\n }\n\n function renderSearchResults() {\n if (focused !== 'search') {\n return null\n }\n\n if (state.autoCompleteDisabled) {\n if (!isMobile) {\n return null\n }\n\n return (\n <SearchButton\n onClick={() => {\n onSearch({\n cityId: state.selectedLocation.id,\n keyword: searchKeywords,\n })\n }}\n />\n )\n }\n\n return (\n <SearchResults\n data={searchResults}\n state={state}\n dispatch={dispatch}\n isMobile={false}\n keyword={searchKeywords}\n isLoading={isLoadingSearchResults}\n />\n )\n }\n\n function renderSearchInputs() {\n return (\n <SearchInputs\n isMobile={isMobile}\n state={state}\n dispatch={dispatch}\n debouncedFetchCitiesByKeyword={debouncedFetchCitiesByKeyword}\n debouncedFetchSearchResults={debouncedFetchSearchResults}\n focusLocationInput={focusLocationInput}\n focusSearchInput={focusSearchInput}\n renderLocationResults={renderLocationResults}\n renderSearchResults={renderSearchResults}\n trackingAttributes={gaTrackingSearchBar}\n onSearch={onSearch}\n initalSearchValue={initialSearchValue}\n />\n )\n }\n\n useEffect(() => {\n if (window.visualViewport) {\n const resizeHandler = (evt) => {\n const viewport = evt.target\n setViewportHeight(viewport?.height)\n }\n window.visualViewport.addEventListener('resize', resizeHandler)\n return () => {\n window.visualViewport.removeEventListener('resize', resizeHandler)\n }\n }\n }, [setViewportHeight])\n\n if (isMobile) {\n return (\n <>\n <CareSearchGlobalStyles />\n {<StyledHiddenInputMobile ref={hiddenInputRef} />}\n <StyledSearchBarMobileWrapper\n id=\"booking-search-bar\"\n ref={wrapperRef}\n data-is-modal={isMobile && isMobileModalOpened}\n style={\n {\n '--mobile-care-searchbar-height':\n isMobileModalOpened && viewportHeight\n ? `${viewportHeight}px`\n : '100%',\n } as CSSProperties\n }\n >\n {!isMobileModalOpened ? (\n <MobileFakeInput\n onClick={handleMobileFakeInputClick}\n focused={focused}\n value={searchKeywords}\n trackingAttributes={gaTrackingSearchBar}\n inputSearchPlaceholder={inputSearchPlaceholder}\n />\n ) : (\n <>\n <StyledSearchBarMobileModalHeader>\n <MobileTopBar\n headingText=\"Search\"\n onLeftClick={handleMobileTopBarClose}\n />\n {renderSearchInputs()}\n </StyledSearchBarMobileModalHeader>\n {renderLocationResults()}\n {renderSearchResults()}\n </>\n )}\n </StyledSearchBarMobileWrapper>\n </>\n )\n }\n\n return (\n <StyledSearchBarWrapper id=\"booking-search-bar\" ref={wrapperRef}>\n {renderSearchInputs()}\n </StyledSearchBarWrapper>\n )\n}\nexport { BookingSearchBar }\n","import { LocaleType } from 'interfaces/types'\n\ntype Extends<T, U extends T> = U\n\nexport type CareLocaleType = Extends<\n LocaleType,\n 'en-PH' | 'vi-VN' | 'id-ID' | 'zh-TW' | 'tl-PH'\n>\n\nexport enum RedirectType {\n 'SPECIALTY' = 1,\n 'DOCTOR' = 2,\n 'CLINIC' = 3,\n 'SERVICE' = 4,\n}\n\nexport type City = {\n name: string\n country?: string\n id: number\n slug: string\n}\n\nexport type Services = {\n id: number | string\n name: string\n email: string\n phone: string\n logo: string\n price: string\n priceUnit: string\n description: string\n}\n\nexport type Doctor = {\n name: string\n description: string\n avatar: string\n price: number | string\n phone: string\n priceUnit: string\n provideCare: number | null\n distance?: string\n id: number\n priceDescription: string\n hospital?: Hospital | null\n experiences: Experiences\n isActive?: boolean\n organization: OrganizationInfoApi\n specialties:\n | string[]\n | {\n id: number\n name: string\n }[]\n slug: string\n cityName: string\n}\nexport type Service = {\n id: number\n logoService: string\n hospitalId: number\n hospitalBranchId: number\n serviceId: number\n name: string\n email: string\n phone: string\n price: string\n priceUnit: string\n description: string\n status: number\n createdAt: string\n hospitalBranch: Hospital\n distance: string\n slug?: string\n}\n\nexport type Hospital = {\n id: number\n name: string\n slug: string\n description: string\n logo: string\n cityId: number\n // distance: string\n phone: string\n longitude: string\n latitude: string\n address: string\n openAt: string | null\n closeAt: string | null\n insurances: Insurance[]\n specialties?: Specialty[]\n medicalFacilities: string[]\n about: string\n weekDayHours: string\n weekendHours: string\n images: {\n imageOne: string\n imageTwo: string\n imageThree: string\n imageFour: string\n imageFive: string\n }\n services: ServiceInfoApi[]\n workingTimes: {\n [key: string]: string[]\n } | null\n}\n\nexport type Insurance = {\n id: number | string\n name: string\n logo: string\n created_at: string\n}\n\nexport type Specialty = {\n name: string\n id: number\n thumbnail: string\n total_doctor: number\n slug: string\n}\n\nexport type ServiceInfoApi = {\n id: number\n logo: string\n hospital_id: number\n hospital_branch_id: number\n service_id: number\n name: string\n email: string\n phone: string\n price: string\n price_unit: string\n description: string\n status: number\n created_at: string\n hospital_branch: HospitalApi\n distance: string\n avatar: string\n}\n\nexport type DoctorInfoApi = {\n name: string\n description: string\n avatar: string\n price: number | string\n phone: string\n price_unit: string\n provide_care: number\n distance?: string\n id: number\n price_description: string\n hospital_branch?: HospitalApi\n experiences: Experiences\n organization: OrganizationInfoApi\n specialties:\n | string[]\n | {\n id: number\n name: string\n }[]\n slug: string\n}\n\nexport type OrganizationInfoApi = {\n id: number | string\n name: string\n logo?: string\n}\n\nexport type HospitalApi = {\n id: number\n hospital_id: number\n name: string\n phone: string\n logo: string\n // distance: string\n city_id: number\n longitude: string\n latitude: string\n address: string\n open_at?: string\n close_at?: string\n insurances?: Insurance[]\n specialties?: Specialty[]\n medical_facilities: string\n description: string\n about: string\n weekday_hours: string\n weekend_hours: string\n images: {\n image_0: string\n image_1: string\n image_2: string\n image_3: string\n image_4: string\n }\n services: ServiceInfoApi[]\n working_times: {\n [key: string]: {\n day: string\n start_at: string\n end_at: string\n }[]\n }\n city: City\n}\n\nexport type Experiences = Array<{\n description: string\n}>\n\nexport type Clinic = {\n name: string\n id: number\n slug: string\n}\n\nexport type LocalizedSlugsType =\n | 'HOSPITAL'\n | 'SERVICE'\n | 'DOCTOR'\n | 'ALL'\n | 'SEARCH'\n | 'SPECIALTIES'\n | 'CURRENT'\n\nexport type SearchDataBookingApi = {\n hospitals: HospitalApi[]\n doctors: DoctorInfoApi[]\n specialties: Specialty[] & { total_hospital_service: number }\n}\n\nexport type SearchBarSectionItemApi = {\n id: number\n name: string\n slug: string\n avatar?: string\n logo?: string\n thumbnail?: string\n}\n\nexport type SearchBarSectionApi = {\n type: 'doctors' | 'specialties' | 'services' | 'hospitals'\n results: SearchBarSectionItemApi[]\n}\n\nexport type SearchCityByGeoIpApi = {\n cities: City[]\n default: City\n}\n\nexport type SearchCityByKeywordApi = {\n cities: City[]\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { USER_GEOLOCATION_COORDINATES_COOKIE } from 'interfaces/constants'\nimport { GPSType, GeoLocationPermission } from 'interfaces/types'\nimport { getCookie, setCookie, deleteCookie } from 'misc/cookieHelper'\n\nexport type UseGeolocationReturn = {\n geoLocationPermission: GeoLocationPermission\n geoLocationCoordinates: GPSType | null\n requestGeoLocation: () => void\n}\n\nexport function useGeolocation(): UseGeolocationReturn {\n const [permission, setPermission] = useState<\n UseGeolocationReturn['geoLocationPermission']\n >(() => {\n if (typeof window === 'undefined') {\n return 'unset'\n }\n if (getCookie(USER_GEOLOCATION_COORDINATES_COOKIE)) {\n return 'granted'\n }\n const blocked =\n !location.protocol.includes('https') && location.hostname !== 'localhost'\n if (!navigator.geolocation || blocked) {\n return 'denied'\n }\n return 'unset'\n })\n\n const [coordinates, setCoordinates] = useState<\n UseGeolocationReturn['geoLocationCoordinates']\n >(() => {\n if (typeof window === 'undefined') {\n return null\n }\n const cookie = getCookie(USER_GEOLOCATION_COORDINATES_COOKIE)\n if (cookie) {\n try {\n return JSON.parse(cookie)\n } catch (err) {\n console.log(err)\n }\n }\n return null\n })\n\n const request = useCallback(function request() {\n // setPermission()\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const gps: GPSType = {\n lat: `${\n Math.round(position.coords.latitude * 10000000) / 10000000\n }`,\n lng: `${\n Math.round(position.coords.longitude * 10000000) / 10000000\n }`,\n }\n setCookie(\n USER_GEOLOCATION_COORDINATES_COOKIE,\n JSON.stringify(gps),\n 0,\n 15,\n )\n setCoordinates(gps)\n setPermission('granted')\n },\n () => {\n deleteCookie(USER_GEOLOCATION_COORDINATES_COOKIE)\n setPermission('denied')\n },\n )\n }\n }, [])\n\n return useMemo(\n () => ({\n geoLocationPermission: permission,\n geoLocationCoordinates: coordinates,\n requestGeoLocation: request,\n }),\n [permission, coordinates],\n )\n}\n","import { useCallback, Dispatch } from 'react'\n\nimport { PATHS } from 'care/api/paths'\nimport { getApiPath } from 'care/api/utils'\nimport { ID_OPTION_CURRENT_LOCATION } from 'care/interfaces/constants'\nimport {\n SearchBarSectionApi,\n SearchCityByGeoIpApi,\n SearchCityByKeywordApi,\n} from 'care/interfaces/types'\nimport { LocaleType, GPSType } from 'interfaces/types'\n\nimport { SEARCH_KEYWORD_MIN_LENGTH } from './constants'\nimport { Action, ActionTypes, ReducerState } from './reducer'\n\ntype UseSearchBarApiParams = {\n dispatch: Dispatch<Action>\n careApiDomain: string\n locale?: LocaleType\n}\n\nexport default function useSearchBarApi({\n dispatch,\n careApiDomain,\n locale = 'vi-VN',\n}: UseSearchBarApiParams) {\n const fetchCitiesApi = useCallback(\n function fetchCitiesApi(path, params = {}) {\n const url = `${careApiDomain}${path}`\n dispatch({ type: ActionTypes.FetchCitiesStart })\n return fetch(getApiPath(url, params, locale), { method: 'GET' })\n .then((res) => res.json())\n .then((data) => {\n if (data._status !== 1 || !data._data) {\n console.log('error loading cities', data)\n return Promise.reject(data)\n }\n return data?._data\n })\n .finally(() => dispatch({ type: ActionTypes.FetchCitiesFinish }))\n },\n [locale],\n )\n\n const fetchCitiesByLocation = useCallback(\n function fetchCitiesByLocation({ coordinates }: { coordinates?: GPSType }) {\n let params = {}\n if (coordinates) {\n params = {\n lat: coordinates.lat,\n lng: coordinates.lng,\n } as GPSType\n }\n return fetchCitiesApi(PATHS.GET_CITY_BY_IP, params)\n .then((data: SearchCityByGeoIpApi) => {\n dispatch({\n type: ActionTypes.FetchCitiesByGeoIpComplete,\n payload: data,\n })\n })\n .catch((err) => console.error('error loading cities by location', err))\n },\n [locale, careApiDomain, dispatch],\n )\n\n const fetchCitiesByKeyword = useCallback(\n function fetchCitiesByKeyword(keyword: string) {\n return fetchCitiesApi(PATHS.GET_CITIES_LIST, { keyword })\n .then((data: SearchCityByKeywordApi) => {\n dispatch({\n type: ActionTypes.FetchCitiesByKeywordComplete,\n payload: data.cities,\n })\n })\n .catch((err) => console.error('error loading cities by keyword', err))\n },\n [locale, careApiDomain, dispatch],\n )\n\n const fetchSearchResults = useCallback(\n function fetchSearchResults(searchKeywords: string, state: ReducerState) {\n const url = `${careApiDomain}${PATHS.GET_SEARCH_V2}`\n dispatch({ type: ActionTypes.FetchSearchResultsStart })\n const { defaultCity, selectedLocation, geoLocationCoordinates } = state\n let cityId: number | string = ''\n if (!selectedLocation || !defaultCity) {\n dispatch({ type: ActionTypes.FetchSearchResultsFinish })\n return\n }\n const isCurrentLocationSelected =\n selectedLocation.id === ID_OPTION_CURRENT_LOCATION\n if (isCurrentLocationSelected) {\n if (!geoLocationCoordinates) {\n cityId = defaultCity.id\n }\n } else {\n cityId = selectedLocation.id\n }\n const lat = geoLocationCoordinates?.lat || ''\n const lng = geoLocationCoordinates?.lng || ''\n return fetch(\n getApiPath(\n url,\n {\n domain: careApiDomain,\n searchType: 'global',\n keyword:\n searchKeywords.trim().length > SEARCH_KEYWORD_MIN_LENGTH[locale]\n ? searchKeywords.trim()\n : '',\n city: cityId === ID_OPTION_CURRENT_LOCATION ? '' : cityId,\n lat,\n lng,\n },\n locale,\n ),\n {\n method: 'GET',\n headers: {\n accept: 'version=2.0.0.0',\n },\n },\n )\n .then((res) => res.json())\n .then((data) => {\n if (data._status !== 1 || !data._data) {\n return Promise.reject(data)\n }\n return data?._data\n })\n .then((results: SearchBarSectionApi[]) =>\n dispatch({\n type: ActionTypes.FetchSearchResultsComplete,\n payload: results,\n }),\n )\n .catch((error) => {\n console.log('error loading search results', { url, error })\n })\n .finally(() => dispatch({ type: ActionTypes.FetchSearchResultsFinish }))\n },\n [locale, careApiDomain, dispatch],\n )\n\n return {\n fetchCitiesByLocation,\n fetchCitiesByKeyword,\n fetchSearchResults,\n }\n}\n"],"names":["StyledSearchBarWrapper","styled","div","templateObject_1","__makeTemplateObject","StyledSearchBarMobileWrapper","templateObject_2","StyledSearchBarMobileModalHeader","section","templateObject_3","StyledHiddenInputMobile","input","templateObject_4","StyledInput","Input","templateObject_5","CareSearchGlobalStyles","createGlobalStyle","templateObject_6","CloseIcon","_a","className","color","React","createElement","width","height","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","PinIcon","GetLocationIcon","MagnifierIcon","DefaultThumbnailAny","cx","cy","r","StyledLiSkeleton","li","theme","colors","neutral100","StyledLocationResultsWrapper","MediaQueries","mbDown","StyledLocationResultsList","ul","StyledPinIcon","StyledLocationItem","isSelected","concat","neutral50","count","idList","useId","Fragment","__spreadArray","Array","map","__v","i","key","Skeleton","LocationResults","cities","isLoading","onLocationClick","onCurrentLocationClick","_b","geoLocationPermission","isLocationLoading","selectedLocation","t","useTranslations","isGeoPermissionDenied","renderCurrentLocationItem","role","tabIndex","onClick","evt","nativeEvent","stopImmediatePropagation","Text","size","primaryBase","style","lineHeight","length","city","id","name","neutral400","EVENT_NAMES","getRandomInteger","min","max","Math","floor","random","VISIBLE_NODE_TYPES","Typewriter","options","_this","this","state","lastFrameTime","pauseUntil","eventQueue","eventLoop","eventLoopPaused","reverseCalledEvents","calledEvents","visibleNodes","initialOptions","strings","delay","pauseFor","deleteSpeed","loop","autoStart","stringSplitter","onCreateTextNode","onRemoveNode","start","runEventLoop","pause","stop","window","cancelAnimationFrame","ms","addEventToQueue","typeOutAllStrings","typeString","forEach","string","deleteAll","node","characters","split","typeCharacters","pasteString","character","speed","changeDeleteSpeed","Error","changeDelay","deleteChars","amount","isArray","removeCharacters","eventName","eventArgs","prepend","addEventToStateProperty","addReverseCalledEvent","property","eventItem","Date","now","nowTime","delta","__assign","requestAnimationFrame","currentEvent","shift","textNode","document","createTextNode","textNodeToUse","type","unshift","removingCharacterNode","parseInt","removeAllEventItems","push","temp","length_1","apply","pop","parentNode","removeChild","init","prototype","useAnimatedPlaceholder","inputRef","wrapperRef","disabled","locale","values","useMemo","shuffleKeys","shuffle","s","customNodeCreator","getInput","placeholder","slice","current","querySelector","useEffect","StyledFakeInputSearchMobile","MobileFakeInput","focused","value","trackingAttributes","inputSearchPlaceholder","useRef","gaAttributes","dataEventCategory","dataEventAction","dataEventLabel","ref","inputClassName","undefined","displayIcon","gray400","ActionTypes","StyledTopBar","header","StyledTopBarHeaderRight","StyledTopBarIcon","StyledTopbarHeading","StyledTopbarHeadingText","secondaryDark","MobileTopBar","onLeftClick","headingText","onRightClick","iconLeft","textRight","gray800","SEARCH_KEYWORD_MIN_LENGTH","initialState","isMobile","isDebug","navigateTo","geoLocationCoordinates","searchLocationKeywords","searchKeywords","defaultCity","initialCities","searchResults","initialSearchResults","isLoadingCities","isLoadingSearchResults","isMobileModalOpened","initialSelectedCity","autoCompleteDisabled","resetSearchLocationKeywords","reducer","action","console","log","NavigateTo","payload","ClickOutsideInputLocation","ClickOutsideInputSearch","FocusInputLocation","nextState_1","ID_OPTION_CURRENT_LOCATION","FocusInputSearch","nextState","ChangeInputLocation","ChangeInputSearch","keyword","trim","SelectCurrentLocation","ClearInputLocation","ClearInputSearch","SelectLocation","SelectSearchResult","url","FetchCitiesStart","FetchCitiesFinish","FetchSearchResultsStart","FetchSearchResultsFinish","FetchSearchResultsComplete","nextState_2","FetchCitiesByGeoIpComplete","defaultCity_1","filter","c","find","nextState_3","FetchCitiesByKeywordComplete","DisplayInitialCities","DisplayInitialSearchResults","GrantGeoLocationPermission","DenyGeoLocationPermission","OpenMobileModal","CloseMobileModal","UpdateInitialSearchValue","SetInputSearchPlaceholder","useOutsideClick","callback","handleClick","useCallback","e","contains","target","addEventListener","removeEventListener","SearchIcon","fillRule","clipRule","StyledSearchIcon","button","primaryHover","primaryActive","StyledText","sizes","fwSemiBold","SearchButton","title","StyledSearchBarInputsWrapper","blue50","StyledInputWrapper","StyledInputLocationWrapper","StyledInputSearchWrapper","StyledClearIcon","x","y","rx","SearchInputs","dispatch","debouncedFetchCitiesByKeyword","debouncedFetchSearchResults","focusLocationInput","focusSearchInput","renderLocationResults","renderSearchResults","onSearch","initalSearchValue","inputLocationWrapperRef","inputSearchWrapperRef","searchInputPinIconColor","handleSearchInputChange","cancel","handleSearchLocationInputChange","autoComplete","actionIcon","gray300","onActionClick","onChange","onFocus","onKeyPress","cityId","enterKeyHint","StyledResult","StyledRoundedIconWrapper","gray600","tdUp","StyledPictureWrapper","figure","StyledLocationPin","svg","StyledImageSkeletonWrapper","defaultThumbnailByType","doctors","clipPath","services","ResultSectionItem","item","imageUrl","onClickItem","defaultThumbnail","Cmp","onKeyDown","src","DoctorIcon","ServiceIcon","HospitalIcon","SpecialtyIcon","StyledTypeHeader","StyledInfoWrapper","StyledTypeName","p","neutral800","StyledSeeMoreButton","StyledResultsContainer","StyledItemsWrapper","isMore","isShown","StyledSeeMore","templateObject_7","ResultSection","data","itemsToShow","itemsToShowDesktop","useState","seeMoreOpen","setSeeMoreOpen","_c","slugs","LOCALIZED_SLUGS","typeInformation","icon","slug","DOCTOR","SERVICE","hospitals","HOSPITAL","specialties","SPECIALTIES","typeSlug","showItemCount","renderItem","logo","avatar","thumbnail","_","maxWidth","minHeight","StyledSection","SearchResults","results","PATHS","getApiPath","path","params","formatString","stringFormat","domain","domainLocales","RedirectType","careApiDomain","geoLocationPermissionFromProps","geoLocationCoordinatesFromProps","initialSelectedCityFromProps","initialSearchValue","careFrontDomain","_d","_e","askForGeolocationPermission","gaTrackingSearchBar","_f","_g","routerPush","onGeoLocationPermissionChange","onChangeLocation","_h","hiddenInputRef","_j","viewportHeight","setViewportHeight","_k","getCookie","USER_GEOLOCATION_COORDINATES_COOKIE","blocked","location","protocol","includes","hostname","navigator","geolocation","permission","setPermission","cookie","JSON","parse","err","coordinates","setCoordinates","request","getCurrentPosition","position","gps","lat","round","coords","latitude","lng","longitude","setCookie","stringify","deleteCookie","requestGeoLocation","useGeolocation","geoLocationPermissionFromHook","geoLocationCoordinatesFromHook","_l","useReducer","inputSearchPlaceholderState","_m","fetchCitiesApi","fetch","method","then","res","json","_status","_data","Promise","reject","finally","fetchCitiesByLocation","catch","error","fetchCitiesByKeyword","fetchSearchResults","searchType","headers","accept","useSearchBarApi","currentLocationCityItem","CURRENT","debounce","href","selectCurrentLocation","body","classList","add","remove","handleLocationClick","handleCurrentLocationClick","focus","renderSearchInputs","visualViewport","resizeHandler_1","viewport","resolve","sent"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var n=require("react"),t=require("./translationsContext-351bc1a7.js"),e=function(n){var t=Object.keys(n);return t.length?"?"+t.map((function(t){return"".concat(t,"=").concat(n[t])})).join("&"):""},r={BREAK_POINT_SMALL_MOBILE:481,BREAK_POINT_MOBILE:768,BREAK_POINT_TABLET:1024,BREAK_POINT_PC:1200},o={smbDown:"@media (max-width: ".concat(r.BREAK_POINT_SMALL_MOBILE-1,"px)"),smbUp:"@media (min-width: ".concat(r.BREAK_POINT_SMALL_MOBILE,"px)"),mbDown:"@media (max-width: ".concat(r.BREAK_POINT_MOBILE-1,"px)"),mbOnly:"@media (min-width: ".concat(r.BREAK_POINT_SMALL_MOBILE,"px) and (max-width: ").concat(r.BREAK_POINT_MOBILE-1,"px)"),mbUp:"@media (min-width: ".concat(r.BREAK_POINT_MOBILE,"px)"),tdDown:"@media (max-width: ".concat(r.BREAK_POINT_TABLET-1,"px)"),tdOnly:"@media (min-width: ".concat(r.BREAK_POINT_MOBILE,"px) and (max-width: ").concat(r.BREAK_POINT_TABLET-1,"px)"),tdUp:"@media (min-width: ".concat(r.BREAK_POINT_TABLET,"px)"),pcUp:"@media (min-width: ".concat(r.BREAK_POINT_PC,"px)"),pcOnly:"@media (min-width: ".concat(r.BREAK_POINT_TABLET,"px) and (max-width: ").concat(r.BREAK_POINT_PC-1,"px)"),pcDown:"@media (max-width: ".concat(r.BREAK_POINT_PC-1,"px)")},a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(n){var t={exports:{}};return n(t,t.exports),t.exports}var i=c((function(n){(function(t){function e(n){var t=new Error(n);return t.name="ValueError",t}function r(n){return function(t){var r=Array.prototype.slice.call(arguments,1),o=0,a="UNDEFINED";return t.replace(/([{}])\1|[{](.*?)(?:!(.+?))?[}]/g,(function(t,c,i,s){if(null!=c)return c;var l=i;if(l.length>0){if("IMPLICIT"===a)throw e("cannot switch from implicit to explicit numbering");a="EXPLICIT"}else{if("EXPLICIT"===a)throw e("cannot switch from explicit to implicit numbering");a="IMPLICIT",l=String(o),o+=1}var u=l.split("."),d=(/^\d+$/.test(u[0])?u:["0"].concat(u)).reduce((function(n,t){return n.reduce((function(n,e){return null!=e&&t in Object(e)?["function"==typeof e[t]?e[t]():e[t]]:[]}),[])}),[r]).reduce((function(n,t){return t}),"");if(null==s)return d;if(Object.prototype.hasOwnProperty.call(n,s))return n[s](d);throw e('no transformer named "'+s+'"')}))}}var o=r({});o.create=r,o.extend=function(n,e){var o=r(e);n.format=function(){var n=Array.prototype.slice.call(arguments);return n.unshift(this),o.apply(t,n)}},n.exports=o}).call(a,a)}));exports.Breakpoints=r,exports.MediaQueries=o,exports.commonjsGlobal=a,exports.createCommonjsModule=c,exports.formatUrlWithPageParam=function(n,t,r){void 0===t&&(t=1),void 0===r&&(r="page");var o=n.split("?"),a=o[0],c=o[1],i=new URLSearchParams(c||""),s={};return i.forEach((function(n,t){n&&(s[t]=n)})),Number(t)>1?s[r]=String(t):delete s[r],a+e(s)},exports.getBoundariesFromMediaQueryKey=function(n){switch(n){case"smbDown":return[0,r.BREAK_POINT_SMALL_MOBILE-1];case"smbUp":return[r.BREAK_POINT_SMALL_MOBILE,0];case"mbDown":return[0,r.BREAK_POINT_MOBILE-1];case"mbOnly":return[r.BREAK_POINT_SMALL_MOBILE,r.BREAK_POINT_MOBILE-1];case"mbUp":return[r.BREAK_POINT_MOBILE,0];case"tdDown":return[0,r.BREAK_POINT_TABLET-1];case"tdOnly":return[r.BREAK_POINT_MOBILE,r.BREAK_POINT_TABLET-1];case"tdUp":return[r.BREAK_POINT_TABLET,0];case"pcUp":return[r.BREAK_POINT_PC,0];case"pcOnly":return[r.BREAK_POINT_TABLET,r.BREAK_POINT_PC-1];case"pcDown":return[0,r.BREAK_POINT_PC-1]}},exports.makeParams=e,exports.stringFormat=i,exports.toggleNoScroll=function(n){"undefined"!=typeof window&&(document.documentElement.classList.toggle("noscroll",n),document.body.classList.toggle("noscroll",n))},exports.useTranslations=function(){var e=n.useContext(t.TranslationsContext)||{locale:"en-PH"},r=e.values,o=e.locale;return n.useMemo((function(){return{t:function(n,e){return r?r[n]?e?i(r[n]||n,e):r[n]||n:(console.warn("[useTranslations] Missing translation for key ".concat(n," and locale ").concat(o)),e?i(t.defaultTranslations[n]||n,e):t.defaultTranslations[n]||n):(console.error("[useTranslations] t method called before translation values are loaded"),n)},locale:o}}),[r,o])};
2
+ //# sourceMappingURL=useTranslations-41d2f908.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTranslations-41d2f908.js","sources":["../src/misc/utils.ts","../node_modules/string-format/index.js","../src/hooks/useTranslations.tsx"],"sourcesContent":["export const makeParams = (params: Record<string, string>): string => {\n const paramKeys = Object.keys(params)\n if (!paramKeys.length) {\n return ''\n }\n return '?' + paramKeys.map((k: string) => `${k}=${params[k]}`).join('&')\n}\n\nexport const formatUrlWithPageParam = (\n path: string,\n page = 1,\n queryPageName = 'page',\n) => {\n const [urlPart, queryPart] = path.split('?')\n const urlObj = new URLSearchParams(queryPart || '')\n const params: Record<string, string> = {}\n\n urlObj.forEach((val, key) => {\n if (val) {\n params[key] = val\n }\n })\n\n if (Number(page) > 1) {\n params[queryPageName] = String(page) // Default is params.page\n } else {\n // Do not display \"page=1\" on the URL\n delete params[queryPageName] // Default is params.page\n }\n\n return urlPart + makeParams(params)\n}\n\nexport const toggleNoScroll = (isNoScroll?: boolean) => {\n if (typeof window !== 'undefined') {\n document.documentElement.classList.toggle('noscroll', isNoScroll)\n document.body.classList.toggle('noscroll', isNoScroll)\n }\n}\n\nexport const Breakpoints = {\n BREAK_POINT_SMALL_MOBILE: 481,\n BREAK_POINT_MOBILE: 768,\n BREAK_POINT_TABLET: 1024,\n BREAK_POINT_PC: 1200,\n}\n\n/**\n * List of mediaQueries to use in StyledComponents\n * New naming convention base around breakpoints\n*\n * Note: smb = small mobile; mb = mobile; td = tablet device; pc = pc/laptop device\n *\n * smbDown: BREAK_POINT_SMALL_MOBILE go down.\n * smbUp: BREAK_POINT_SMALL_MOBILE go up\n *\n * mbDown: BREAK_POINT_MOBILE go down.\n * mbOnly: from BREAK_POINT_SMALL_MOBILE to BREAK_POINT_MOBILE\n * mbUp: BREAK_POINT_MOBILE go up\n *\n * tdDown: BREAK_POINT_TABLET go down\n * tdOnly: from BREAK_POINT_MOBILE to BREAK_POINT_TABLET\n * tdUp: BREAK_POINT_TABLET go up\n *\n * pcDown: BREAK_POINT_PC go down\n * pcOnly: from BREAK_POINT_TABLET to BREAK_POINT_PC\n * pcUp: BREAK_POINT_PC go up\n *\n * @example\n * ${MediaQueries.mbDown} {\n * color: ${(props) => props.theme.colors.neutral100 }};\n * }\n */\nexport const MediaQueries = {\n smbDown: `@media (max-width: ${Breakpoints.BREAK_POINT_SMALL_MOBILE - 1}px)`,\n smbUp: `@media (min-width: ${Breakpoints.BREAK_POINT_SMALL_MOBILE}px)`,\n\n mbDown: `@media (max-width: ${Breakpoints.BREAK_POINT_MOBILE - 1}px)`,\n mbOnly: `@media (min-width: ${Breakpoints.BREAK_POINT_SMALL_MOBILE}px) and (max-width: ${Breakpoints.BREAK_POINT_MOBILE - 1}px)`,\n mbUp: `@media (min-width: ${Breakpoints.BREAK_POINT_MOBILE}px)`,\n \n tdDown: `@media (max-width: ${Breakpoints.BREAK_POINT_TABLET - 1}px)`,\n tdOnly: `@media (min-width: ${Breakpoints.BREAK_POINT_MOBILE\n }px) and (max-width: ${Breakpoints.BREAK_POINT_TABLET - 1}px)`,\n tdUp: `@media (min-width: ${Breakpoints.BREAK_POINT_TABLET}px)`,\n \n pcUp: `@media (min-width: ${Breakpoints.BREAK_POINT_PC}px)`,\n pcOnly: `@media (min-width: ${Breakpoints.BREAK_POINT_TABLET}px) and (max-width: ${Breakpoints.BREAK_POINT_PC - 1}px)`,\n pcDown: `@media (max-width: ${Breakpoints.BREAK_POINT_PC - 1}px)`,\n}\n\nexport const getBoundariesFromMediaQueryKey = (key?: keyof typeof MediaQueries) => {\n // zero mean not set\n switch(key) {\n case 'smbDown': return [0, Breakpoints.BREAK_POINT_SMALL_MOBILE - 1]\n case 'smbUp': return [Breakpoints.BREAK_POINT_SMALL_MOBILE, 0]\n\n case 'mbDown': return [0, Breakpoints.BREAK_POINT_MOBILE - 1]\n case 'mbOnly': return [Breakpoints.BREAK_POINT_SMALL_MOBILE, Breakpoints.BREAK_POINT_MOBILE - 1]\n case 'mbUp': return [Breakpoints.BREAK_POINT_MOBILE, 0]\n\n case 'tdDown': return [0, Breakpoints.BREAK_POINT_TABLET - 1]\n case 'tdOnly': return [Breakpoints.BREAK_POINT_MOBILE, Breakpoints.BREAK_POINT_TABLET - 1]\n case 'tdUp': return [Breakpoints.BREAK_POINT_TABLET, 0]\n\n case 'pcUp': return [Breakpoints.BREAK_POINT_PC, 0]\n case 'pcOnly': return [Breakpoints.BREAK_POINT_TABLET, Breakpoints.BREAK_POINT_PC - 1]\n case 'pcDown': return [0, Breakpoints.BREAK_POINT_PC - 1]\n }\n}","void function(global) {\n\n 'use strict';\n\n // ValueError :: String -> Error\n function ValueError(message) {\n var err = new Error(message);\n err.name = 'ValueError';\n return err;\n }\n\n // create :: Object -> String,*... -> String\n function create(transformers) {\n return function(template) {\n var args = Array.prototype.slice.call(arguments, 1);\n var idx = 0;\n var state = 'UNDEFINED';\n\n return template.replace(\n /([{}])\\1|[{](.*?)(?:!(.+?))?[}]/g,\n function(match, literal, _key, xf) {\n if (literal != null) {\n return literal;\n }\n var key = _key;\n if (key.length > 0) {\n if (state === 'IMPLICIT') {\n throw ValueError('cannot switch from ' +\n 'implicit to explicit numbering');\n }\n state = 'EXPLICIT';\n } else {\n if (state === 'EXPLICIT') {\n throw ValueError('cannot switch from ' +\n 'explicit to implicit numbering');\n }\n state = 'IMPLICIT';\n key = String(idx);\n idx += 1;\n }\n\n // 1. Split the key into a lookup path.\n // 2. If the first path component is not an index, prepend '0'.\n // 3. Reduce the lookup path to a single result. If the lookup\n // succeeds the result is a singleton array containing the\n // value at the lookup path; otherwise the result is [].\n // 4. Unwrap the result by reducing with '' as the default value.\n var path = key.split('.');\n var value = (/^\\d+$/.test(path[0]) ? path : ['0'].concat(path))\n .reduce(function(maybe, key) {\n return maybe.reduce(function(_, x) {\n return x != null && key in Object(x) ?\n [typeof x[key] === 'function' ? x[key]() : x[key]] :\n [];\n }, []);\n }, [args])\n .reduce(function(_, x) { return x; }, '');\n\n if (xf == null) {\n return value;\n } else if (Object.prototype.hasOwnProperty.call(transformers, xf)) {\n return transformers[xf](value);\n } else {\n throw ValueError('no transformer named \"' + xf + '\"');\n }\n }\n );\n };\n }\n\n // format :: String,*... -> String\n var format = create({});\n\n // format.create :: Object -> String,*... -> String\n format.create = create;\n\n // format.extend :: Object,Object -> ()\n format.extend = function(prototype, transformers) {\n var $format = create(transformers);\n prototype.format = function() {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(this);\n return $format.apply(global, args);\n };\n };\n\n /* istanbul ignore else */\n if (typeof module !== 'undefined') {\n module.exports = format;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return format; });\n } else {\n global.format = format;\n }\n\n}.call(this, this);\n","import { useContext, useMemo } from 'react'\n\nimport { defaultTranslations, TranslationsKey } from 'i18n/translations'\nimport { TranslationsContext } from 'i18n/translationsContext'\nimport { LocaleType } from 'interfaces/types'\nimport formatString from 'string-format'\n\ntype UseTranslationsReturn<L> = {\n locale: L\n t: (k: TranslationsKey, option?: { [key: string]: any }) => string\n}\n\nexport function useTranslations<L = LocaleType>(): UseTranslationsReturn<L> {\n const { values, locale } = useContext(TranslationsContext) || {\n locale: 'en-PH',\n }\n return useMemo(\n () => ({\n t(k, option?) {\n if (!values) {\n console.error(\n '[useTranslations] t method called before translation values are loaded',\n )\n return k\n }\n if (values[k]) {\n return option ? formatString(values[k] || k, option) : values[k] || k\n }\n console.warn(\n `[useTranslations] Missing translation for key ${k} and locale ${locale}`,\n )\n return option\n ? formatString(defaultTranslations[k] || k, option)\n : defaultTranslations[k] || k\n },\n // @ts-ignore\n locale,\n }),\n [values, locale],\n )\n}\n"],"names":["makeParams","params","paramKeys","Object","keys","length","map","k","concat","join","Breakpoints","BREAK_POINT_SMALL_MOBILE","BREAK_POINT_MOBILE","BREAK_POINT_TABLET","BREAK_POINT_PC","MediaQueries","smbDown","smbUp","mbDown","mbOnly","mbUp","tdDown","tdOnly","tdUp","pcUp","pcOnly","pcDown","global","ValueError","message","err","Error","name","create","transformers","template","args","Array","prototype","slice","call","arguments","idx","state","replace","match","literal","_key","xf","key","String","path","split","value","test","reduce","maybe","_","x","hasOwnProperty","format","extend","$format","unshift","this","apply","module","exports","page","queryPageName","_a","urlPart","queryPart","urlObj","URLSearchParams","forEach","val","Number","isNoScroll","window","document","documentElement","classList","toggle","body","useContext","TranslationsContext","locale","values","useMemo","t","option","formatString","console","warn","defaultTranslations","error"],"mappings":"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"}