@myrjfa/state 0.3.1

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 (408) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +21 -0
  3. package/dist/hooks/usePersistentDraftState.d.ts +20 -0
  4. package/dist/hooks/usePersistentDraftState.d.ts.map +1 -0
  5. package/dist/hooks/usePersistentDraftState.js +47 -0
  6. package/dist/index.d.ts +46 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +45 -0
  9. package/dist/lib/QueryProvider.d.ts +4 -0
  10. package/dist/lib/QueryProvider.d.ts.map +1 -0
  11. package/dist/lib/QueryProvider.js +10 -0
  12. package/dist/lib/actions/actions.d.ts +192 -0
  13. package/dist/lib/actions/actions.d.ts.map +1 -0
  14. package/dist/lib/actions/actions.js +392 -0
  15. package/dist/lib/actions/adminDashboard.d.ts +4 -0
  16. package/dist/lib/actions/adminDashboard.d.ts.map +1 -0
  17. package/dist/lib/actions/adminDashboard.js +29 -0
  18. package/dist/lib/actions/adventure.d.ts +104 -0
  19. package/dist/lib/actions/adventure.d.ts.map +1 -0
  20. package/dist/lib/actions/adventure.js +203 -0
  21. package/dist/lib/actions/application.d.ts +35 -0
  22. package/dist/lib/actions/application.d.ts.map +1 -0
  23. package/dist/lib/actions/application.js +573 -0
  24. package/dist/lib/actions/auth.d.ts +286 -0
  25. package/dist/lib/actions/auth.d.ts.map +1 -0
  26. package/dist/lib/actions/auth.js +155 -0
  27. package/dist/lib/actions/blog.d.ts +61 -0
  28. package/dist/lib/actions/blog.d.ts.map +1 -0
  29. package/dist/lib/actions/blog.js +762 -0
  30. package/dist/lib/actions/booking.d.ts +45 -0
  31. package/dist/lib/actions/booking.d.ts.map +1 -0
  32. package/dist/lib/actions/booking.js +91 -0
  33. package/dist/lib/actions/brand.d.ts +83 -0
  34. package/dist/lib/actions/brand.d.ts.map +1 -0
  35. package/dist/lib/actions/brand.js +28 -0
  36. package/dist/lib/actions/chat.d.ts +266 -0
  37. package/dist/lib/actions/chat.d.ts.map +1 -0
  38. package/dist/lib/actions/chat.js +741 -0
  39. package/dist/lib/actions/companion.d.ts +174 -0
  40. package/dist/lib/actions/companion.d.ts.map +1 -0
  41. package/dist/lib/actions/companion.js +276 -0
  42. package/dist/lib/actions/event.d.ts +178 -0
  43. package/dist/lib/actions/event.d.ts.map +1 -0
  44. package/dist/lib/actions/event.js +214 -0
  45. package/dist/lib/actions/fetcher.d.ts +6 -0
  46. package/dist/lib/actions/fetcher.d.ts.map +1 -0
  47. package/dist/lib/actions/fetcher.js +148 -0
  48. package/dist/lib/actions/guide.d.ts +55 -0
  49. package/dist/lib/actions/guide.d.ts.map +1 -0
  50. package/dist/lib/actions/guide.js +128 -0
  51. package/dist/lib/actions/hostDashboard.d.ts +122 -0
  52. package/dist/lib/actions/hostDashboard.d.ts.map +1 -0
  53. package/dist/lib/actions/hostDashboard.js +329 -0
  54. package/dist/lib/actions/location.d.ts +141 -0
  55. package/dist/lib/actions/location.d.ts.map +1 -0
  56. package/dist/lib/actions/location.js +113 -0
  57. package/dist/lib/actions/notifications.d.ts +91 -0
  58. package/dist/lib/actions/notifications.d.ts.map +1 -0
  59. package/dist/lib/actions/notifications.js +83 -0
  60. package/dist/lib/actions/opportunity.d.ts +44 -0
  61. package/dist/lib/actions/opportunity.d.ts.map +1 -0
  62. package/dist/lib/actions/opportunity.js +318 -0
  63. package/dist/lib/actions/package.d.ts +85 -0
  64. package/dist/lib/actions/package.d.ts.map +1 -0
  65. package/dist/lib/actions/package.js +167 -0
  66. package/dist/lib/actions/place.d.ts +191 -0
  67. package/dist/lib/actions/place.d.ts.map +1 -0
  68. package/dist/lib/actions/place.js +57 -0
  69. package/dist/lib/actions/portfolio.d.ts +65 -0
  70. package/dist/lib/actions/portfolio.d.ts.map +1 -0
  71. package/dist/lib/actions/portfolio.js +62 -0
  72. package/dist/lib/actions/property.d.ts +17 -0
  73. package/dist/lib/actions/property.d.ts.map +1 -0
  74. package/dist/lib/actions/property.js +16 -0
  75. package/dist/lib/actions/rental.d.ts +87 -0
  76. package/dist/lib/actions/rental.d.ts.map +1 -0
  77. package/dist/lib/actions/rental.js +205 -0
  78. package/dist/lib/actions/review.d.ts +8 -0
  79. package/dist/lib/actions/review.d.ts.map +1 -0
  80. package/dist/lib/actions/review.js +102 -0
  81. package/dist/lib/actions/room.d.ts +39 -0
  82. package/dist/lib/actions/room.d.ts.map +1 -0
  83. package/dist/lib/actions/room.js +74 -0
  84. package/dist/lib/actions/serverActions.d.ts +4 -0
  85. package/dist/lib/actions/serverActions.d.ts.map +1 -0
  86. package/dist/lib/actions/serverActions.js +37 -0
  87. package/dist/lib/actions/socket.d.ts +7 -0
  88. package/dist/lib/actions/socket.d.ts.map +1 -0
  89. package/dist/lib/actions/socket.js +26 -0
  90. package/dist/lib/actions/stay.d.ts +97 -0
  91. package/dist/lib/actions/stay.d.ts.map +1 -0
  92. package/dist/lib/actions/stay.js +138 -0
  93. package/dist/lib/actions/travelPackage.d.ts +104 -0
  94. package/dist/lib/actions/travelPackage.d.ts.map +1 -0
  95. package/dist/lib/actions/travelPackage.js +487 -0
  96. package/dist/lib/actions/user.d.ts +23 -0
  97. package/dist/lib/actions/user.d.ts.map +1 -0
  98. package/dist/lib/actions/user.js +55 -0
  99. package/dist/lib/actions.d.ts +556 -0
  100. package/dist/lib/actions.d.ts.map +1 -0
  101. package/dist/lib/actions.js +1330 -0
  102. package/dist/lib/adminDashboardActions.d.ts +73 -0
  103. package/dist/lib/adminDashboardActions.d.ts.map +1 -0
  104. package/dist/lib/adminDashboardActions.js +98 -0
  105. package/dist/lib/adventureActions.d.ts +102 -0
  106. package/dist/lib/adventureActions.d.ts.map +1 -0
  107. package/dist/lib/adventureActions.js +202 -0
  108. package/dist/lib/adventureDummyData.d.ts +3 -0
  109. package/dist/lib/adventureDummyData.d.ts.map +1 -0
  110. package/dist/lib/adventureDummyData.js +138 -0
  111. package/dist/lib/adventureFormPage.d.ts +39 -0
  112. package/dist/lib/adventureFormPage.d.ts.map +1 -0
  113. package/dist/lib/adventureFormPage.js +70 -0
  114. package/dist/lib/authSessionManager.d.ts +2 -0
  115. package/dist/lib/authSessionManager.d.ts.map +1 -0
  116. package/dist/lib/authSessionManager.js +35 -0
  117. package/dist/lib/authorizationActions.d.ts +77 -0
  118. package/dist/lib/authorizationActions.d.ts.map +1 -0
  119. package/dist/lib/authorizationActions.js +61 -0
  120. package/dist/lib/brandActions.d.ts +83 -0
  121. package/dist/lib/brandActions.d.ts.map +1 -0
  122. package/dist/lib/brandActions.js +28 -0
  123. package/dist/lib/companionActions.d.ts +174 -0
  124. package/dist/lib/companionActions.d.ts.map +1 -0
  125. package/dist/lib/companionActions.js +276 -0
  126. package/dist/lib/companionDummyData.d.ts +99 -0
  127. package/dist/lib/companionDummyData.d.ts.map +1 -0
  128. package/dist/lib/companionDummyData.js +203 -0
  129. package/dist/lib/context/ChatContext.d.ts +51 -0
  130. package/dist/lib/context/ChatContext.d.ts.map +1 -0
  131. package/dist/lib/context/ChatContext.js +445 -0
  132. package/dist/lib/data/adventureDummyData.d.ts +3 -0
  133. package/dist/lib/data/adventureDummyData.d.ts.map +1 -0
  134. package/dist/lib/data/adventureDummyData.js +138 -0
  135. package/dist/lib/data/adventureFormPage.d.ts +28 -0
  136. package/dist/lib/data/adventureFormPage.d.ts.map +1 -0
  137. package/dist/lib/data/adventureFormPage.js +58 -0
  138. package/dist/lib/data/companionDummyData.d.ts +99 -0
  139. package/dist/lib/data/companionDummyData.d.ts.map +1 -0
  140. package/dist/lib/data/companionDummyData.js +203 -0
  141. package/dist/lib/data/countryStates.d.ts +31 -0
  142. package/dist/lib/data/countryStates.d.ts.map +1 -0
  143. package/dist/lib/data/countryStates.js +7117 -0
  144. package/dist/lib/data/destinations.d.ts +14 -0
  145. package/dist/lib/data/destinations.d.ts.map +1 -0
  146. package/dist/lib/data/destinations.js +203 -0
  147. package/dist/lib/data/eventFormPage.d.ts +38 -0
  148. package/dist/lib/data/eventFormPage.d.ts.map +1 -0
  149. package/dist/lib/data/eventFormPage.js +56 -0
  150. package/dist/lib/data/eventsDummyData.d.ts +54 -0
  151. package/dist/lib/data/eventsDummyData.d.ts.map +1 -0
  152. package/dist/lib/data/eventsDummyData.js +586 -0
  153. package/dist/lib/data/guideDummyData.d.ts +3 -0
  154. package/dist/lib/data/guideDummyData.d.ts.map +1 -0
  155. package/dist/lib/data/guideDummyData.js +66 -0
  156. package/dist/lib/data/opportunityFormData.d.ts +13 -0
  157. package/dist/lib/data/opportunityFormData.d.ts.map +1 -0
  158. package/dist/lib/data/opportunityFormData.js +62 -0
  159. package/dist/lib/data/opportunityFormPage.d.ts +12 -0
  160. package/dist/lib/data/opportunityFormPage.d.ts.map +1 -0
  161. package/dist/lib/data/opportunityFormPage.js +33 -0
  162. package/dist/lib/data/packageDummyData.d.ts +3 -0
  163. package/dist/lib/data/packageDummyData.d.ts.map +1 -0
  164. package/dist/lib/data/packageDummyData.js +56 -0
  165. package/dist/lib/data/rentalDummyData.d.ts +3 -0
  166. package/dist/lib/data/rentalDummyData.d.ts.map +1 -0
  167. package/dist/lib/data/rentalDummyData.js +382 -0
  168. package/dist/lib/data/rentalFormPage.d.ts +11 -0
  169. package/dist/lib/data/rentalFormPage.d.ts.map +1 -0
  170. package/dist/lib/data/rentalFormPage.js +86 -0
  171. package/dist/lib/data/staysDummyData.d.ts +72 -0
  172. package/dist/lib/data/staysDummyData.d.ts.map +1 -0
  173. package/dist/lib/data/staysDummyData.js +694 -0
  174. package/dist/lib/data/storeDummyData.d.ts +33 -0
  175. package/dist/lib/data/storeDummyData.d.ts.map +1 -0
  176. package/dist/lib/data/storeDummyData.js +336 -0
  177. package/dist/lib/data/travelPackageFormData.d.ts +19 -0
  178. package/dist/lib/data/travelPackageFormData.d.ts.map +1 -0
  179. package/dist/lib/data/travelPackageFormData.js +51 -0
  180. package/dist/lib/data/travelPackageFormPage.d.ts +22 -0
  181. package/dist/lib/data/travelPackageFormPage.d.ts.map +1 -0
  182. package/dist/lib/data/travelPackageFormPage.js +40 -0
  183. package/dist/lib/data/vehicleData.d.ts +2 -0
  184. package/dist/lib/data/vehicleData.d.ts.map +1 -0
  185. package/dist/lib/data/vehicleData.js +187 -0
  186. package/dist/lib/data/vehicleModels.d.ts +2 -0
  187. package/dist/lib/data/vehicleModels.d.ts.map +1 -0
  188. package/dist/lib/data/vehicleModels.js +128 -0
  189. package/dist/lib/destinations.d.ts +14 -0
  190. package/dist/lib/destinations.d.ts.map +1 -0
  191. package/dist/lib/destinations.js +203 -0
  192. package/dist/lib/discountActions.d.ts +43 -0
  193. package/dist/lib/discountActions.d.ts.map +1 -0
  194. package/dist/lib/discountActions.js +69 -0
  195. package/dist/lib/entitySubmission.d.ts +21 -0
  196. package/dist/lib/entitySubmission.d.ts.map +1 -0
  197. package/dist/lib/entitySubmission.js +10 -0
  198. package/dist/lib/eventActions.d.ts +176 -0
  199. package/dist/lib/eventActions.d.ts.map +1 -0
  200. package/dist/lib/eventActions.js +222 -0
  201. package/dist/lib/eventFormPage.d.ts +49 -0
  202. package/dist/lib/eventFormPage.d.ts.map +1 -0
  203. package/dist/lib/eventFormPage.js +84 -0
  204. package/dist/lib/eventsDummyData.d.ts +54 -0
  205. package/dist/lib/eventsDummyData.d.ts.map +1 -0
  206. package/dist/lib/eventsDummyData.js +586 -0
  207. package/dist/lib/guideActions.d.ts +53 -0
  208. package/dist/lib/guideActions.d.ts.map +1 -0
  209. package/dist/lib/guideActions.js +127 -0
  210. package/dist/lib/guideDummyData.d.ts +3 -0
  211. package/dist/lib/guideDummyData.d.ts.map +1 -0
  212. package/dist/lib/guideDummyData.js +66 -0
  213. package/dist/lib/hooks/use-mobile.d.ts +2 -0
  214. package/dist/lib/hooks/use-mobile.d.ts.map +1 -0
  215. package/dist/lib/hooks/use-mobile.js +15 -0
  216. package/dist/lib/hooks/useChatSocket.d.ts +6 -0
  217. package/dist/lib/hooks/useChatSocket.d.ts.map +1 -0
  218. package/dist/lib/hooks/useChatSocket.js +35 -0
  219. package/dist/lib/hooks/useHostCalendarSelection.d.ts +51 -0
  220. package/dist/lib/hooks/useHostCalendarSelection.d.ts.map +1 -0
  221. package/dist/lib/hooks/useHostCalendarSelection.js +200 -0
  222. package/dist/lib/hooks/usePersistentDraftState.d.ts +20 -0
  223. package/dist/lib/hooks/usePersistentDraftState.d.ts.map +1 -0
  224. package/dist/lib/hooks/usePersistentDraftState.js +47 -0
  225. package/dist/lib/hostDashboardActions.d.ts +189 -0
  226. package/dist/lib/hostDashboardActions.d.ts.map +1 -0
  227. package/dist/lib/hostDashboardActions.js +400 -0
  228. package/dist/lib/imageUpload.d.ts +4 -0
  229. package/dist/lib/imageUpload.d.ts.map +1 -0
  230. package/dist/lib/imageUpload.js +36 -0
  231. package/dist/lib/locationActions.d.ts +141 -0
  232. package/dist/lib/locationActions.d.ts.map +1 -0
  233. package/dist/lib/locationActions.js +113 -0
  234. package/dist/lib/loyaltyActions.d.ts +32 -0
  235. package/dist/lib/loyaltyActions.d.ts.map +1 -0
  236. package/dist/lib/loyaltyActions.js +92 -0
  237. package/dist/lib/models/adventure.d.ts +90 -0
  238. package/dist/lib/models/adventure.d.ts.map +1 -0
  239. package/dist/lib/models/adventure.js +1 -0
  240. package/dist/lib/models/application.d.ts +26 -0
  241. package/dist/lib/models/application.d.ts.map +1 -0
  242. package/dist/lib/models/application.js +130 -0
  243. package/dist/lib/models/authorization.d.ts +107 -0
  244. package/dist/lib/models/authorization.d.ts.map +1 -0
  245. package/dist/lib/models/authorization.js +263 -0
  246. package/dist/lib/models/blog.d.ts +66 -0
  247. package/dist/lib/models/blog.d.ts.map +1 -0
  248. package/dist/lib/models/blog.js +181 -0
  249. package/dist/lib/models/booking.d.ts +90 -0
  250. package/dist/lib/models/booking.d.ts.map +1 -0
  251. package/dist/lib/models/booking.js +1 -0
  252. package/dist/lib/models/chat.d.ts +384 -0
  253. package/dist/lib/models/chat.d.ts.map +1 -0
  254. package/dist/lib/models/chat.js +5 -0
  255. package/dist/lib/models/discount.d.ts +611 -0
  256. package/dist/lib/models/discount.d.ts.map +1 -0
  257. package/dist/lib/models/discount.js +128 -0
  258. package/dist/lib/models/enquiry.d.ts +34 -0
  259. package/dist/lib/models/enquiry.d.ts.map +1 -0
  260. package/dist/lib/models/enquiry.js +140 -0
  261. package/dist/lib/models/forms.d.ts +384 -0
  262. package/dist/lib/models/forms.d.ts.map +1 -0
  263. package/dist/lib/models/forms.js +121 -0
  264. package/dist/lib/models/guide.d.ts +42 -0
  265. package/dist/lib/models/guide.d.ts.map +1 -0
  266. package/dist/lib/models/guide.js +1 -0
  267. package/dist/lib/models/loyalty.d.ts +88 -0
  268. package/dist/lib/models/loyalty.d.ts.map +1 -0
  269. package/dist/lib/models/loyalty.js +1 -0
  270. package/dist/lib/models/notifications.d.ts +99 -0
  271. package/dist/lib/models/notifications.d.ts.map +1 -0
  272. package/dist/lib/models/notifications.js +63 -0
  273. package/dist/lib/models/opportunities/freelance.d.ts +641 -0
  274. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -0
  275. package/dist/lib/models/opportunities/freelance.js +12 -0
  276. package/dist/lib/models/opportunities/internship.d.ts +618 -0
  277. package/dist/lib/models/opportunities/internship.d.ts.map +1 -0
  278. package/dist/lib/models/opportunities/internship.js +7 -0
  279. package/dist/lib/models/opportunities/job.d.ts +754 -0
  280. package/dist/lib/models/opportunities/job.d.ts.map +1 -0
  281. package/dist/lib/models/opportunities/job.js +26 -0
  282. package/dist/lib/models/opportunities/opportunity.d.ts +729 -0
  283. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -0
  284. package/dist/lib/models/opportunities/opportunity.js +232 -0
  285. package/dist/lib/models/opportunities/volunteerJob.d.ts +595 -0
  286. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -0
  287. package/dist/lib/models/opportunities/volunteerJob.js +5 -0
  288. package/dist/lib/models/package.d.ts +422 -0
  289. package/dist/lib/models/package.d.ts.map +1 -0
  290. package/dist/lib/models/package.js +58 -0
  291. package/dist/lib/models/portfolio.d.ts +43 -0
  292. package/dist/lib/models/portfolio.d.ts.map +1 -0
  293. package/dist/lib/models/portfolio.js +70 -0
  294. package/dist/lib/models/pricing.d.ts +255 -0
  295. package/dist/lib/models/pricing.d.ts.map +1 -0
  296. package/dist/lib/models/pricing.js +145 -0
  297. package/dist/lib/models/props.d.ts +67 -0
  298. package/dist/lib/models/props.d.ts.map +1 -0
  299. package/dist/lib/models/props.js +191 -0
  300. package/dist/lib/models/rental.d.ts +95 -0
  301. package/dist/lib/models/rental.d.ts.map +1 -0
  302. package/dist/lib/models/rental.js +1 -0
  303. package/dist/lib/models/review.d.ts +50 -0
  304. package/dist/lib/models/review.d.ts.map +1 -0
  305. package/dist/lib/models/review.js +74 -0
  306. package/dist/lib/models/stay.d.ts +462 -0
  307. package/dist/lib/models/stay.d.ts.map +1 -0
  308. package/dist/lib/models/stay.js +215 -0
  309. package/dist/lib/models/store.d.ts +71 -0
  310. package/dist/lib/models/store.d.ts.map +1 -0
  311. package/dist/lib/models/store.js +1 -0
  312. package/dist/lib/models/tile.d.ts +57 -0
  313. package/dist/lib/models/tile.d.ts.map +1 -0
  314. package/dist/lib/models/tile.js +1 -0
  315. package/dist/lib/models/travelPackage.d.ts +844 -0
  316. package/dist/lib/models/travelPackage.d.ts.map +1 -0
  317. package/dist/lib/models/travelPackage.js +324 -0
  318. package/dist/lib/models/user.d.ts +241 -0
  319. package/dist/lib/models/user.d.ts.map +1 -0
  320. package/dist/lib/models/user.js +115 -0
  321. package/dist/lib/multistepDraft.d.ts +4 -0
  322. package/dist/lib/multistepDraft.d.ts.map +1 -0
  323. package/dist/lib/multistepDraft.js +18 -0
  324. package/dist/lib/opportunityFormData.d.ts +13 -0
  325. package/dist/lib/opportunityFormData.d.ts.map +1 -0
  326. package/dist/lib/opportunityFormData.js +62 -0
  327. package/dist/lib/opportunityFormPage.d.ts +39 -0
  328. package/dist/lib/opportunityFormPage.d.ts.map +1 -0
  329. package/dist/lib/opportunityFormPage.js +34 -0
  330. package/dist/lib/packageActions.d.ts +86 -0
  331. package/dist/lib/packageActions.d.ts.map +1 -0
  332. package/dist/lib/packageActions.js +168 -0
  333. package/dist/lib/packageDummyData.d.ts +3 -0
  334. package/dist/lib/packageDummyData.d.ts.map +1 -0
  335. package/dist/lib/packageDummyData.js +57 -0
  336. package/dist/lib/placeActions.d.ts +192 -0
  337. package/dist/lib/placeActions.d.ts.map +1 -0
  338. package/dist/lib/placeActions.js +57 -0
  339. package/dist/lib/pricingActions.d.ts +13 -0
  340. package/dist/lib/pricingActions.d.ts.map +1 -0
  341. package/dist/lib/pricingActions.js +16 -0
  342. package/dist/lib/propertyActions.d.ts +17 -0
  343. package/dist/lib/propertyActions.d.ts.map +1 -0
  344. package/dist/lib/propertyActions.js +16 -0
  345. package/dist/lib/rentalActions.d.ts +86 -0
  346. package/dist/lib/rentalActions.d.ts.map +1 -0
  347. package/dist/lib/rentalActions.js +234 -0
  348. package/dist/lib/rentalDummyData.d.ts +3 -0
  349. package/dist/lib/rentalDummyData.d.ts.map +1 -0
  350. package/dist/lib/rentalDummyData.js +367 -0
  351. package/dist/lib/rentalFormPage.d.ts +46 -0
  352. package/dist/lib/rentalFormPage.d.ts.map +1 -0
  353. package/dist/lib/rentalFormPage.js +94 -0
  354. package/dist/lib/roomActions.d.ts +39 -0
  355. package/dist/lib/roomActions.d.ts.map +1 -0
  356. package/dist/lib/roomActions.js +74 -0
  357. package/dist/lib/stayActions.d.ts +97 -0
  358. package/dist/lib/stayActions.d.ts.map +1 -0
  359. package/dist/lib/stayActions.js +138 -0
  360. package/dist/lib/staysDummyData.d.ts +72 -0
  361. package/dist/lib/staysDummyData.d.ts.map +1 -0
  362. package/dist/lib/staysDummyData.js +694 -0
  363. package/dist/lib/storeActions.d.ts +25 -0
  364. package/dist/lib/storeActions.d.ts.map +1 -0
  365. package/dist/lib/storeActions.js +46 -0
  366. package/dist/lib/storeDummyData.d.ts +9 -0
  367. package/dist/lib/storeDummyData.d.ts.map +1 -0
  368. package/dist/lib/storeDummyData.js +336 -0
  369. package/dist/lib/travelPackageActions.d.ts +102 -0
  370. package/dist/lib/travelPackageActions.d.ts.map +1 -0
  371. package/dist/lib/travelPackageActions.js +487 -0
  372. package/dist/lib/travelPackageFormData.d.ts +20 -0
  373. package/dist/lib/travelPackageFormData.d.ts.map +1 -0
  374. package/dist/lib/travelPackageFormData.js +54 -0
  375. package/dist/lib/travelPackageFormPage.d.ts +32 -0
  376. package/dist/lib/travelPackageFormPage.d.ts.map +1 -0
  377. package/dist/lib/travelPackageFormPage.js +43 -0
  378. package/dist/lib/userAtom.d.ts +294 -0
  379. package/dist/lib/userAtom.d.ts.map +1 -0
  380. package/dist/lib/userAtom.js +139 -0
  381. package/dist/lib/util.d.ts +11 -0
  382. package/dist/lib/util.d.ts.map +1 -0
  383. package/dist/lib/util.js +82 -0
  384. package/dist/lib/utils/entitySubmission.d.ts +21 -0
  385. package/dist/lib/utils/entitySubmission.d.ts.map +1 -0
  386. package/dist/lib/utils/entitySubmission.js +10 -0
  387. package/dist/lib/utils/fileCompression.d.ts +16 -0
  388. package/dist/lib/utils/fileCompression.d.ts.map +1 -0
  389. package/dist/lib/utils/fileCompression.js +56 -0
  390. package/dist/lib/utils/imageUpload.d.ts +4 -0
  391. package/dist/lib/utils/imageUpload.d.ts.map +1 -0
  392. package/dist/lib/utils/imageUpload.js +36 -0
  393. package/dist/lib/utils/socialMediaUrl.d.ts +25 -0
  394. package/dist/lib/utils/socialMediaUrl.d.ts.map +1 -0
  395. package/dist/lib/utils/socialMediaUrl.js +97 -0
  396. package/dist/lib/utils/tileConverters.d.ts +8 -0
  397. package/dist/lib/utils/tileConverters.d.ts.map +1 -0
  398. package/dist/lib/utils/tileConverters.js +59 -0
  399. package/dist/lib/utils.d.ts +53 -0
  400. package/dist/lib/utils.d.ts.map +1 -0
  401. package/dist/lib/utils.js +183 -0
  402. package/dist/lib/vehicleData.d.ts +2 -0
  403. package/dist/lib/vehicleData.d.ts.map +1 -0
  404. package/dist/lib/vehicleData.js +181 -0
  405. package/dist/lib/vehicleModels.d.ts +2 -0
  406. package/dist/lib/vehicleModels.d.ts.map +1 -0
  407. package/dist/lib/vehicleModels.js +128 -0
  408. package/package.json +61 -0
@@ -0,0 +1,53 @@
1
+ import { Guide } from "@myrjfa/state/dist/lib/models/guide";
2
+ import { TileProps } from "@myrjfa/state/dist/lib/models/tile";
3
+ export declare function getGuideTiles(limit?: number, city?: string): Promise<{
4
+ success: boolean;
5
+ tiles: TileProps[];
6
+ message?: string;
7
+ error?: string;
8
+ }>;
9
+ export declare function guideDetails(slug: string): Promise<{
10
+ success: boolean;
11
+ guide: Guide | null;
12
+ message?: string;
13
+ error?: string;
14
+ }>;
15
+ export declare function guidesByHost(): Promise<{
16
+ success: boolean;
17
+ guides: Guide[];
18
+ message?: string;
19
+ error?: string;
20
+ }>;
21
+ export declare function createGuide(formData: FormData): Promise<{
22
+ success: boolean;
23
+ slug?: string;
24
+ message?: string;
25
+ error?: string;
26
+ }>;
27
+ export declare function editGuide(formData: FormData, slug: string): Promise<{
28
+ success: boolean;
29
+ message?: string;
30
+ error?: string;
31
+ }>;
32
+ export declare function deleteGuide(slug: string): Promise<{
33
+ success: boolean;
34
+ message?: string;
35
+ error?: string;
36
+ }>;
37
+ export declare function getPendingGuides(): Promise<{
38
+ success: boolean;
39
+ guides: Guide[];
40
+ message?: string;
41
+ error?: string;
42
+ }>;
43
+ export declare function approveGuide(slug: string): Promise<{
44
+ success: boolean;
45
+ message?: string;
46
+ error?: string;
47
+ }>;
48
+ export declare function rejectGuide(slug: string, rejectionReason: string): Promise<{
49
+ success: boolean;
50
+ message?: string;
51
+ error?: string;
52
+ }>;
53
+ //# sourceMappingURL=guideActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guideActions.d.ts","sourceRoot":"","sources":["../../src/lib/guideActions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAI/D,wBAAsB,aAAa,CACjC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAgBD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAUD;AAID,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAcD;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAWD;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWjE;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjE;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAQD;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUjE;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUjE"}
@@ -0,0 +1,127 @@
1
+ import { del, get, patch, post } from "@myrjfa/state/dist/lib/actions/fetcher";
2
+ import { calculatePricingStrategyDisplayUnitPrice, getPrimaryPricingStrategy, getPricingCurrency } from "@myrjfa/state/dist/lib/models/pricing";
3
+ // ─── Public ───────────────────────────────────────────────────────────────────
4
+ export async function getGuideTiles(limit, city) {
5
+ try {
6
+ let endpoint = `/guides/getAllGuideTiles?status=open`;
7
+ if (limit)
8
+ endpoint += `&limit=${limit}`;
9
+ if (city)
10
+ endpoint += `&city=${city}`;
11
+ const data = await get(endpoint);
12
+ return {
13
+ success: true,
14
+ message: data.message,
15
+ tiles: data.data.map(guideToTile),
16
+ };
17
+ }
18
+ catch (error) {
19
+ console.error("Failed to fetch guide tiles:", error);
20
+ return { success: false, error: error.message, tiles: [] };
21
+ }
22
+ }
23
+ export async function guideDetails(slug) {
24
+ try {
25
+ const data = await get(`/guides/getGuide/${slug}`);
26
+ return { success: true, message: data.message, guide: data.data };
27
+ }
28
+ catch (error) {
29
+ console.error("Failed to fetch guide details:", error);
30
+ return { success: false, error: error.message, guide: null };
31
+ }
32
+ }
33
+ // ─── Host Dashboard ───────────────────────────────────────────────────────────
34
+ export async function guidesByHost() {
35
+ try {
36
+ const data = await get(`/host/dashboard/listings?category=guide`);
37
+ return {
38
+ success: true,
39
+ message: data.message,
40
+ guides: data.data?.listings || [],
41
+ };
42
+ }
43
+ catch (error) {
44
+ console.error("Failed to fetch host guides:", error);
45
+ return { success: false, error: error.message, guides: [] };
46
+ }
47
+ }
48
+ export async function createGuide(formData) {
49
+ try {
50
+ const data = await post(`/guides/create`, formData);
51
+ return { success: true, slug: data.data, message: data.message };
52
+ }
53
+ catch (error) {
54
+ console.error("Failed to create guide:", error);
55
+ return { success: false, error: error.message };
56
+ }
57
+ }
58
+ export async function editGuide(formData, slug) {
59
+ try {
60
+ const data = await patch(`/guides/update/${slug}`, formData);
61
+ return { success: true, message: data.message };
62
+ }
63
+ catch (error) {
64
+ console.error("Failed to update guide:", error);
65
+ return { success: false, error: error.message };
66
+ }
67
+ }
68
+ export async function deleteGuide(slug) {
69
+ try {
70
+ const data = await del(`/guides/delete/${slug}`);
71
+ return { success: true, message: data.message };
72
+ }
73
+ catch (error) {
74
+ return { success: false, error: error.message };
75
+ }
76
+ }
77
+ // ─── Admin Dashboard ──────────────────────────────────────────────────────────
78
+ export async function getPendingGuides() {
79
+ try {
80
+ const data = await get(`/guides/pending`);
81
+ return { success: true, message: data.message, guides: data.data };
82
+ }
83
+ catch (error) {
84
+ return { success: false, error: error.message, guides: [] };
85
+ }
86
+ }
87
+ // Reuse admin moderation endpoints if available, or use the guide update endpoint if admin
88
+ export async function approveGuide(slug) {
89
+ try {
90
+ // Assuming admin can use the update endpoint with status 'open'
91
+ const data = await patch(`/guides/update/${slug}`, {
92
+ status: "open",
93
+ });
94
+ return { success: true, message: data.message };
95
+ }
96
+ catch (error) {
97
+ return { success: false, error: error.message };
98
+ }
99
+ }
100
+ export async function rejectGuide(slug, rejectionReason) {
101
+ try {
102
+ const data = await patch(`/guides/update/${slug}`, {
103
+ status: "denied",
104
+ rejectionReason,
105
+ });
106
+ return { success: true, message: data.message };
107
+ }
108
+ catch (error) {
109
+ return { success: false, error: error.message };
110
+ }
111
+ }
112
+ // ─── Helper ───────────────────────────────────────────────────────────────────
113
+ function guideToTile(guide) {
114
+ return {
115
+ slug: guide.slug || "",
116
+ image: guide.images?.[0] || "/images/placeholder.svg",
117
+ title: guide.title || "",
118
+ description: guide.description || "",
119
+ location: `${guide.city}, ${guide.state}`,
120
+ date: guide.createdAt,
121
+ rating: guide.rating,
122
+ price: calculatePricingStrategyDisplayUnitPrice(getPrimaryPricingStrategy(guide)),
123
+ currency: getPricingCurrency(guide),
124
+ tileType: "guides",
125
+ host: guide.host,
126
+ };
127
+ }
@@ -0,0 +1,3 @@
1
+ import { TileProps } from "@myrjfa/state/dist/lib/models/tile";
2
+ export declare const guideDummyData: TileProps[];
3
+ //# sourceMappingURL=guideDummyData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guideDummyData.d.ts","sourceRoot":"","sources":["../../src/lib/guideDummyData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,eAAO,MAAM,cAAc,EAAE,SAAS,EA6ErC,CAAC"}
@@ -0,0 +1,66 @@
1
+ export const guideDummyData = [
2
+ {
3
+ slug: "heritage-walk-old-delhi",
4
+ image: "https://images.unsplash.com/photo-1587474260584-1f20d4563ac4?auto=format&fit=crop&q=80&w=800",
5
+ title: "Old Delhi Heritage Expert",
6
+ description: "Explore the hidden gems of Chandni Chowk and Jama Masjid with a local historian. Discover the Mughal history and secret spice markets.",
7
+ location: "Delhi, Delhi",
8
+ date: new Date(),
9
+ rating: 4.9,
10
+ price: 1500,
11
+ currency: "INR",
12
+ tileType: "guides",
13
+ host: {
14
+ name: "Amit Sharma",
15
+ image: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=100",
16
+ },
17
+ },
18
+ {
19
+ slug: "pink-city-photowalk",
20
+ image: "https://images.unsplash.com/photo-1589308078059-be1415eab4c3?auto=format&fit=crop&q=80&w=800",
21
+ title: "Jaipur Photography Tour",
22
+ description: "A professional photographer's guide through the Step Wells, Hawa Mahal and the royal palaces of Jaipur. Best for Instagram lovers!",
23
+ location: "Jaipur, Rajasthan",
24
+ date: new Date(),
25
+ rating: 4.8,
26
+ price: 2500,
27
+ currency: "INR",
28
+ tileType: "guides",
29
+ host: {
30
+ name: "Priya Singh",
31
+ image: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=100",
32
+ },
33
+ },
34
+ {
35
+ slug: "varanasi-spiritual-experience",
36
+ image: "https://images.unsplash.com/photo-1561361513-3398c8c56cc7?auto=format&fit=crop&q=80&w=800",
37
+ title: "Kashi Spiritual Walk",
38
+ description: "Walk through the world's oldest living city. Experience the evening Aarti, visit ancient temples and understand the circle of life.",
39
+ location: "Varanasi, Uttar Pradesh",
40
+ date: new Date(),
41
+ rating: 5.0,
42
+ price: 1200,
43
+ currency: "INR",
44
+ tileType: "guides",
45
+ host: {
46
+ name: "Shiv Kumar",
47
+ image: "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?auto=format&fit=crop&q=80&w=100",
48
+ },
49
+ },
50
+ {
51
+ slug: "goa-culinary-trails",
52
+ image: "https://images.unsplash.com/photo-1512100356956-c1227c331f01?auto=format&fit=crop&q=80&w=800",
53
+ title: "Authentic Goan Food Tour",
54
+ description: "Escape the beaches and dive into real Goan kitchens. Taste local feni, vindaloo and learn the secrets of fish thali.",
55
+ location: "Panaji, Goa",
56
+ date: new Date(),
57
+ rating: 4.7,
58
+ price: 2000,
59
+ currency: "INR",
60
+ tileType: "guides",
61
+ host: {
62
+ name: "Maria D'Souza",
63
+ image: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&q=80&w=100",
64
+ },
65
+ },
66
+ ];
@@ -0,0 +1,2 @@
1
+ export declare function useIsMobile(): boolean;
2
+ //# sourceMappingURL=use-mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/use-mobile.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,YAc1B"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ const MOBILE_BREAKPOINT = 768;
3
+ export function useIsMobile() {
4
+ const [isMobile, setIsMobile] = React.useState(undefined);
5
+ React.useEffect(() => {
6
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
7
+ const onChange = () => {
8
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
9
+ };
10
+ mql.addEventListener("change", onChange);
11
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
12
+ return () => mql.removeEventListener("change", onChange);
13
+ }, []);
14
+ return !!isMobile;
15
+ }
@@ -0,0 +1,6 @@
1
+ import type { Socket } from "socket.io-client";
2
+ export declare const useChatSocket: () => {
3
+ socket: Socket | null;
4
+ isConnected: boolean;
5
+ };
6
+ //# sourceMappingURL=useChatSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatSocket.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/useChatSocket.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,aAAa,QAAO;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAuC7E,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { useEffect } from "react";
2
+ import { useAtom, useAtomValue } from "jotai";
3
+ import { getSocket, socketAtom, isConnectedAtom, disconnectSocket } from "../actions/socket";
4
+ import { userAtom } from "../userAtom";
5
+ export const useChatSocket = () => {
6
+ const user = useAtomValue(userAtom);
7
+ const [socket, setSocket] = useAtom(socketAtom);
8
+ const [isConnected, setIsConnected] = useAtom(isConnectedAtom);
9
+ useEffect(() => {
10
+ if (!user) {
11
+ disconnectSocket();
12
+ setSocket(null);
13
+ setIsConnected(false);
14
+ return;
15
+ }
16
+ const socketInstance = getSocket();
17
+ function onConnect() {
18
+ setIsConnected(true);
19
+ }
20
+ function onDisconnect() {
21
+ setIsConnected(false);
22
+ }
23
+ socketInstance.on("connect", onConnect);
24
+ socketInstance.on("disconnect", onDisconnect);
25
+ if (!socketInstance.connected) {
26
+ socketInstance.connect();
27
+ }
28
+ setSocket(socketInstance);
29
+ return () => {
30
+ socketInstance.off("connect", onConnect);
31
+ socketInstance.off("disconnect", onDisconnect);
32
+ };
33
+ }, [user, setSocket, setIsConnected]);
34
+ return { socket, isConnected };
35
+ };
@@ -0,0 +1,51 @@
1
+ import type React from "react";
2
+ export type HostCalendarSelection<T> = {
3
+ item: T;
4
+ date: Date;
5
+ };
6
+ type SelectionChange<T> = {
7
+ item: T;
8
+ from: Date;
9
+ to: Date;
10
+ itemIds: string[];
11
+ committed: boolean;
12
+ };
13
+ type UseHostCalendarSelectionOptions<T> = {
14
+ items: T[];
15
+ getItemId: (item: T) => string;
16
+ isDisabledDate?: (date: Date) => boolean;
17
+ onSelectionChange?: (selection: SelectionChange<T>) => void;
18
+ onCommitSelection?: (selection: SelectionChange<T>) => void;
19
+ };
20
+ export declare function dateKey(value: Date | string): string;
21
+ export declare function parseDateParam(value: string | null): Date | null;
22
+ export declare function startOfLocalDay(value: Date): Date;
23
+ export declare function datesInRange(start: Date, end: Date): Date[];
24
+ export declare function isDateInRange(day: Date, start: Date, end: Date): boolean;
25
+ export declare function isPastDate(day: Date): boolean;
26
+ export declare function idsBetween<T>(items: T[], startId: string, endId: string, getItemId: (item: T) => string): string[];
27
+ export declare function useHostCalendarSelection<T>({ items, getItemId, isDisabledDate, onSelectionChange, onCommitSelection, }: UseHostCalendarSelectionOptions<T>): {
28
+ selected: HostCalendarSelection<T> | null;
29
+ selectedRangeEnd: Date | null;
30
+ selectedItemIds: string[];
31
+ selectedRangeDates: Date[];
32
+ selectedRangeDateKeys: string[];
33
+ selectedRangeLabel: string;
34
+ effectiveRangeEnd: Date;
35
+ rangeSelecting: boolean;
36
+ setSelected: React.Dispatch<React.SetStateAction<HostCalendarSelection<T> | null>>;
37
+ setSelectedRangeEnd: React.Dispatch<React.SetStateAction<Date | null>>;
38
+ setSelectedItemIds: React.Dispatch<React.SetStateAction<string[]>>;
39
+ setSelection: (item: T, from: Date, to?: Date, itemIds?: string[], committed?: boolean) => void;
40
+ selectSingleCell: (item: T, day: Date) => void;
41
+ getCellHandlers: (item: T, day: Date) => {
42
+ onMouseDown: (event: React.MouseEvent) => void;
43
+ onDoubleClick: (event: React.MouseEvent) => void;
44
+ onMouseEnter: () => void;
45
+ onMouseUp: () => void;
46
+ onClick: () => void;
47
+ onKeyDown: (event: React.KeyboardEvent) => void;
48
+ };
49
+ };
50
+ export {};
51
+ //# sourceMappingURL=useHostCalendarSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHostCalendarSelection.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/useHostCalendarSelection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,+BAA+B,CAAC,CAAC,IAAI;IACxC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC7D,CAAC;AAIF,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,UAE3C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,eAIlD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,QAE1C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,UAUlD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAK9D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,WAEnC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,YAMvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,EAC1C,KAAK,EACL,SAAS,EACT,cAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,GAClB,EAAE,+BAA+B,CAAC,CAAC,CAAC;;;;;;;;;;;;yBA4DP,CAAC,QAAQ,IAAI,OAAM,IAAI;6BAQnB,CAAC,OAAO,IAAI;4BAoDb,CAAC,OAAO,IAAI;6BACpB,KAAK,CAAC,UAAU;+BAMd,KAAK,CAAC,UAAU;;;;2BAcpB,KAAK,CAAC,aAAa;;EAwBzC"}
@@ -0,0 +1,200 @@
1
+ "use client";
2
+ import { addDays, format } from "date-fns";
3
+ import { useEffect, useMemo, useRef, useState } from "react";
4
+ export function dateKey(value) {
5
+ return format(new Date(value), "yyyy-MM-dd");
6
+ }
7
+ export function parseDateParam(value) {
8
+ if (!value)
9
+ return null;
10
+ const parsed = new Date(`${value}T00:00:00`);
11
+ return isNaN(parsed.getTime()) ? null : parsed;
12
+ }
13
+ export function startOfLocalDay(value) {
14
+ return new Date(value.getFullYear(), value.getMonth(), value.getDate());
15
+ }
16
+ export function datesInRange(start, end) {
17
+ const first = startOfLocalDay(start);
18
+ const last = startOfLocalDay(end);
19
+ const from = first <= last ? first : last;
20
+ const to = first <= last ? last : first;
21
+ const dates = [];
22
+ for (let day = from; day <= to; day = addDays(day, 1)) {
23
+ dates.push(day);
24
+ }
25
+ return dates;
26
+ }
27
+ export function isDateInRange(day, start, end) {
28
+ const key = startOfLocalDay(day).getTime();
29
+ const a = startOfLocalDay(start).getTime();
30
+ const b = startOfLocalDay(end).getTime();
31
+ return key >= Math.min(a, b) && key <= Math.max(a, b);
32
+ }
33
+ export function isPastDate(day) {
34
+ return startOfLocalDay(day).getTime() < startOfLocalDay(new Date()).getTime();
35
+ }
36
+ export function idsBetween(items, startId, endId, getItemId) {
37
+ const startIndex = items.findIndex((item) => getItemId(item) === startId);
38
+ const endIndex = items.findIndex((item) => getItemId(item) === endId);
39
+ if (startIndex < 0 || endIndex < 0)
40
+ return [];
41
+ const [from, to] = startIndex <= endIndex ? [startIndex, endIndex] : [endIndex, startIndex];
42
+ return items.slice(from, to + 1).map(getItemId).filter(Boolean);
43
+ }
44
+ export function useHostCalendarSelection({ items, getItemId, isDisabledDate = isPastDate, onSelectionChange, onCommitSelection, }) {
45
+ const [selected, setSelected] = useState(null);
46
+ const [selectedRangeEnd, setSelectedRangeEnd] = useState(null);
47
+ const [selectedItemIds, setSelectedItemIds] = useState([]);
48
+ const [rangeSelecting, setRangeSelecting] = useState(false);
49
+ const anchorRef = useRef(null);
50
+ const rangeSelectingRef = useRef(false);
51
+ const pointerRangeSelectingRef = useRef(false);
52
+ const suppressNextClickRef = useRef(false);
53
+ useEffect(() => {
54
+ const stopRangeDrag = () => {
55
+ pointerRangeSelectingRef.current = false;
56
+ if (anchorRef.current) {
57
+ anchorRef.current = null;
58
+ rangeSelectingRef.current = false;
59
+ setRangeSelecting(false);
60
+ }
61
+ };
62
+ window.addEventListener("mouseup", stopRangeDrag);
63
+ return () => window.removeEventListener("mouseup", stopRangeDrag);
64
+ }, []);
65
+ const effectiveRangeEnd = selectedRangeEnd || selected?.date || new Date();
66
+ const selectedRangeDates = useMemo(() => selected ? datesInRange(selected.date, effectiveRangeEnd) : [], [selected?.date, effectiveRangeEnd]);
67
+ const selectedRangeDateKeys = useMemo(() => selectedRangeDates.map(dateKey), [selectedRangeDates]);
68
+ const selectedRangeLabel = selected
69
+ ? selectedRangeDateKeys.length > 1
70
+ ? `${format(selectedRangeDates[0], "d MMM yyyy")} - ${format(selectedRangeDates[selectedRangeDates.length - 1], "d MMM yyyy")}`
71
+ : format(selected.date, "d MMM yyyy")
72
+ : "";
73
+ const emitSelection = (nextSelected, to, itemIds, committed) => {
74
+ const payload = {
75
+ item: nextSelected.item,
76
+ from: nextSelected.date,
77
+ to,
78
+ itemIds,
79
+ committed,
80
+ };
81
+ onSelectionChange?.(payload);
82
+ if (committed)
83
+ onCommitSelection?.(payload);
84
+ };
85
+ const applySelection = (anchor, targetItem, targetDate, committed) => {
86
+ const nextIds = idsBetween(items, getItemId(anchor.item), getItemId(targetItem), getItemId);
87
+ const itemIds = nextIds.length > 0 ? nextIds : [getItemId(anchor.item)];
88
+ const nextSelected = { item: anchor.item, date: anchor.date };
89
+ setSelected(nextSelected);
90
+ setSelectedRangeEnd(targetDate);
91
+ setSelectedItemIds(itemIds);
92
+ emitSelection(nextSelected, targetDate, itemIds, committed);
93
+ };
94
+ const setSelection = (item, from, to = from, itemIds = [getItemId(item)], committed = false) => {
95
+ const nextSelected = { item, date: from };
96
+ setSelected(nextSelected);
97
+ setSelectedRangeEnd(to);
98
+ setSelectedItemIds(itemIds);
99
+ emitSelection(nextSelected, to, itemIds, committed);
100
+ };
101
+ const selectSingleCell = (item, day) => {
102
+ if (isDisabledDate(day))
103
+ return;
104
+ anchorRef.current = null;
105
+ rangeSelectingRef.current = false;
106
+ pointerRangeSelectingRef.current = false;
107
+ setRangeSelecting(false);
108
+ setSelection(item, day, day, [getItemId(item)], true);
109
+ };
110
+ const startRangeSelection = (item, day, pointerDrag = false) => {
111
+ if (isDisabledDate(day))
112
+ return;
113
+ const anchor = { item, date: day };
114
+ anchorRef.current = anchor;
115
+ rangeSelectingRef.current = true;
116
+ pointerRangeSelectingRef.current = pointerDrag;
117
+ setRangeSelecting(true);
118
+ applySelection(anchor, item, day, false);
119
+ };
120
+ const previewRangeSelection = (item, day) => {
121
+ if (isDisabledDate(day))
122
+ return;
123
+ const anchor = anchorRef.current;
124
+ if (!anchor || !rangeSelectingRef.current)
125
+ return;
126
+ applySelection(anchor, item, day, false);
127
+ };
128
+ const commitRangeSelection = (item, day) => {
129
+ if (isDisabledDate(day))
130
+ return;
131
+ const anchor = anchorRef.current;
132
+ if (!anchor) {
133
+ selectSingleCell(item, day);
134
+ return;
135
+ }
136
+ applySelection(anchor, item, day, true);
137
+ anchorRef.current = null;
138
+ rangeSelectingRef.current = false;
139
+ pointerRangeSelectingRef.current = false;
140
+ setRangeSelecting(false);
141
+ };
142
+ const handleCellClick = (item, day) => {
143
+ if (suppressNextClickRef.current) {
144
+ suppressNextClickRef.current = false;
145
+ return;
146
+ }
147
+ if (rangeSelecting && anchorRef.current) {
148
+ commitRangeSelection(item, day);
149
+ return;
150
+ }
151
+ selectSingleCell(item, day);
152
+ };
153
+ const getCellHandlers = (item, day) => ({
154
+ onMouseDown: (event) => {
155
+ if (isDisabledDate(day) || event.button !== 0)
156
+ return;
157
+ event.preventDefault();
158
+ suppressNextClickRef.current = true;
159
+ startRangeSelection(item, day, true);
160
+ },
161
+ onDoubleClick: (event) => {
162
+ if (isDisabledDate(day))
163
+ return;
164
+ event.preventDefault();
165
+ suppressNextClickRef.current = true;
166
+ },
167
+ onMouseEnter: () => previewRangeSelection(item, day),
168
+ onMouseUp: () => {
169
+ if (isDisabledDate(day))
170
+ return;
171
+ if (pointerRangeSelectingRef.current) {
172
+ suppressNextClickRef.current = true;
173
+ commitRangeSelection(item, day);
174
+ }
175
+ },
176
+ onClick: () => handleCellClick(item, day),
177
+ onKeyDown: (event) => {
178
+ if (!isDisabledDate(day) && (event.key === "Enter" || event.key === " ")) {
179
+ event.preventDefault();
180
+ selectSingleCell(item, day);
181
+ }
182
+ },
183
+ });
184
+ return {
185
+ selected,
186
+ selectedRangeEnd,
187
+ selectedItemIds,
188
+ selectedRangeDates,
189
+ selectedRangeDateKeys,
190
+ selectedRangeLabel,
191
+ effectiveRangeEnd,
192
+ rangeSelecting,
193
+ setSelected,
194
+ setSelectedRangeEnd,
195
+ setSelectedItemIds,
196
+ setSelection,
197
+ selectSingleCell,
198
+ getCellHandlers,
199
+ };
200
+ }
@@ -0,0 +1,20 @@
1
+ import { Dispatch, SetStateAction } from "react";
2
+ type PersistentDraftStateOptions<T> = {
3
+ key: string;
4
+ initialState: T;
5
+ shouldPersist?: (state: T) => boolean;
6
+ onLoadError?: (error: unknown) => void;
7
+ };
8
+ export declare function loadDraft<T>(key: string): Partial<T> | null;
9
+ export declare function saveDraft<T>(key: string, value: T): void;
10
+ export declare function clearDraft(key: string): void;
11
+ export declare function usePersistentDraftState<T>({ key, initialState, shouldPersist, onLoadError, }: PersistentDraftStateOptions<T>): [
12
+ T,
13
+ Dispatch<SetStateAction<T>>,
14
+ {
15
+ saveNow: () => void;
16
+ clear: () => void;
17
+ }
18
+ ];
19
+ export {};
20
+ //# sourceMappingURL=usePersistentDraftState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePersistentDraftState.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/usePersistentDraftState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,OAAO,CAAC;AAEtE,KAAK,2BAA2B,CAAC,CAAC,IAAI;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAK3D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAGjD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAGrC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EACzC,GAAG,EACH,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG;IAClC,CAAC;IACD,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3B;QAAE,OAAO,EAAE,MAAM,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE;CAC3C,CA2BA"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { useEffect, useState } from "react";
3
+ export function loadDraft(key) {
4
+ if (typeof window === "undefined")
5
+ return null;
6
+ const saved = window.localStorage.getItem(key);
7
+ if (!saved)
8
+ return null;
9
+ return JSON.parse(saved);
10
+ }
11
+ export function saveDraft(key, value) {
12
+ if (typeof window === "undefined")
13
+ return;
14
+ window.localStorage.setItem(key, JSON.stringify(value));
15
+ }
16
+ export function clearDraft(key) {
17
+ if (typeof window === "undefined")
18
+ return;
19
+ window.localStorage.removeItem(key);
20
+ }
21
+ export function usePersistentDraftState({ key, initialState, shouldPersist, onLoadError, }) {
22
+ const [state, setState] = useState(initialState);
23
+ useEffect(() => {
24
+ try {
25
+ const saved = loadDraft(key);
26
+ if (saved) {
27
+ setState((prev) => ({ ...prev, ...saved }));
28
+ }
29
+ }
30
+ catch (error) {
31
+ onLoadError?.(error);
32
+ }
33
+ }, [key, onLoadError]);
34
+ useEffect(() => {
35
+ if (shouldPersist && !shouldPersist(state))
36
+ return;
37
+ saveDraft(key, state);
38
+ }, [key, shouldPersist, state]);
39
+ return [
40
+ state,
41
+ setState,
42
+ {
43
+ saveNow: () => saveDraft(key, state),
44
+ clear: () => clearDraft(key),
45
+ },
46
+ ];
47
+ }