@myrjfa/ui 2.1.9 → 2.2.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 (459) hide show
  1. package/dist/chat/ChatMain.d.ts +1 -1
  2. package/dist/chat/ChatMain.d.ts.map +1 -1
  3. package/dist/chat/ChatMain.js +3 -3
  4. package/dist/chat/ChatSidebar.d.ts +1 -1
  5. package/dist/chat/ChatSidebar.d.ts.map +1 -1
  6. package/dist/chat/ConversationList.d.ts +1 -1
  7. package/dist/chat/ConversationList.d.ts.map +1 -1
  8. package/dist/chat/ConversationList.js +1 -1
  9. package/dist/chat/ExpensePanel.js +1 -1
  10. package/dist/chat/MessageBubble.d.ts +1 -1
  11. package/dist/chat/MessageBubble.d.ts.map +1 -1
  12. package/dist/chat/MessageInput.js +1 -1
  13. package/dist/chat/MilestonePanel.js +1 -1
  14. package/dist/chat/components/SplitInputs.d.ts +1 -1
  15. package/dist/chat/components/SplitInputs.d.ts.map +1 -1
  16. package/dist/chat/components/SplitTypeSelector.d.ts +1 -1
  17. package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -1
  18. package/dist/chat/dialogs/AddMemberDialog.d.ts +1 -1
  19. package/dist/chat/dialogs/AddMemberDialog.d.ts.map +1 -1
  20. package/dist/chat/dialogs/AddMemberDialog.js +1 -1
  21. package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +1 -1
  22. package/dist/chat/dialogs/GroupInfoDialog.d.ts +1 -1
  23. package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -1
  24. package/dist/chat/dialogs/GroupInfoDialog.js +1 -1
  25. package/dist/chat/dialogs/GroupInfoViewDialog.d.ts +1 -1
  26. package/dist/chat/dialogs/GroupInfoViewDialog.d.ts.map +1 -1
  27. package/dist/chat/dialogs/NewChatDialog.js +2 -2
  28. package/dist/chat/dialogs/NewGroupDialog.js +2 -2
  29. package/dist/chat/dialogs/ParticipantsDialog.d.ts +1 -1
  30. package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -1
  31. package/dist/chat/dialogs/ParticipantsDialog.js +1 -1
  32. package/dist/components/CityAutocomplete.d.ts +5 -0
  33. package/dist/components/CityAutocomplete.d.ts.map +1 -0
  34. package/dist/components/CityAutocomplete.js +112 -0
  35. package/dist/components/CreateListingDropdown.d.ts +5 -0
  36. package/dist/components/CreateListingDropdown.d.ts.map +1 -0
  37. package/dist/components/CreateListingDropdown.js +21 -0
  38. package/dist/components/DestinationAutocomplete.d.ts +11 -0
  39. package/dist/components/DestinationAutocomplete.d.ts.map +1 -0
  40. package/dist/components/DestinationAutocomplete.js +24 -0
  41. package/dist/components/StateAutocomplete.d.ts +10 -0
  42. package/dist/components/StateAutocomplete.d.ts.map +1 -0
  43. package/dist/components/StateAutocomplete.js +34 -0
  44. package/dist/components/admin/AdminBookingRegistrationsList.d.ts +5 -0
  45. package/dist/components/admin/AdminBookingRegistrationsList.d.ts.map +1 -0
  46. package/dist/components/admin/AdminBookingRegistrationsList.js +69 -0
  47. package/dist/components/admin/AdminListingActionsWrapper.d.ts +9 -0
  48. package/dist/components/admin/AdminListingActionsWrapper.d.ts.map +1 -0
  49. package/dist/components/admin/AdminListingActionsWrapper.js +200 -0
  50. package/dist/components/ads/ActivateAdPlacementButton.d.ts +6 -0
  51. package/dist/components/ads/ActivateAdPlacementButton.d.ts.map +1 -0
  52. package/dist/components/ads/ActivateAdPlacementButton.js +27 -0
  53. package/dist/components/ads/AdOfferCard.d.ts +6 -0
  54. package/dist/components/ads/AdOfferCard.d.ts.map +1 -0
  55. package/dist/components/ads/AdOfferCard.js +15 -0
  56. package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts +17 -0
  57. package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts.map +1 -0
  58. package/dist/components/adventure/AdventureAvailabilityPlanner.js +106 -0
  59. package/dist/components/adventure/AdventureQueryCard.d.ts +5 -0
  60. package/dist/components/adventure/AdventureQueryCard.d.ts.map +1 -0
  61. package/dist/components/adventure/AdventureQueryCard.js +65 -0
  62. package/dist/components/adventure/AdventureSlotBuilder.d.ts +41 -0
  63. package/dist/components/adventure/AdventureSlotBuilder.d.ts.map +1 -0
  64. package/dist/components/adventure/AdventureSlotBuilder.js +146 -0
  65. package/dist/components/booking/booking-form.d.ts +39 -0
  66. package/dist/components/booking/booking-form.d.ts.map +1 -0
  67. package/dist/components/booking/booking-form.js +824 -0
  68. package/dist/components/brand/BrandPageView.d.ts +8 -0
  69. package/dist/components/brand/BrandPageView.d.ts.map +1 -0
  70. package/dist/components/brand/BrandPageView.js +97 -0
  71. package/dist/components/companion/AnonymousChat.d.ts +22 -0
  72. package/dist/components/companion/AnonymousChat.d.ts.map +1 -0
  73. package/dist/components/companion/AnonymousChat.js +24 -0
  74. package/dist/components/companion/SwipeCard.d.ts +25 -0
  75. package/dist/components/companion/SwipeCard.d.ts.map +1 -0
  76. package/dist/components/companion/SwipeCard.js +58 -0
  77. package/dist/components/create-flow/ConfirmDiscardDialog.d.ts +11 -0
  78. package/dist/components/create-flow/ConfirmDiscardDialog.d.ts.map +1 -0
  79. package/dist/components/create-flow/ConfirmDiscardDialog.js +14 -0
  80. package/dist/components/create-flow/EntityEditLoadingState.d.ts +2 -0
  81. package/dist/components/create-flow/EntityEditLoadingState.d.ts.map +1 -0
  82. package/dist/components/create-flow/EntityEditLoadingState.js +6 -0
  83. package/dist/components/create-flow/EntityFormCompletionState.d.ts +12 -0
  84. package/dist/components/create-flow/EntityFormCompletionState.d.ts.map +1 -0
  85. package/dist/components/create-flow/EntityFormCompletionState.js +10 -0
  86. package/dist/components/create-flow/EntityFormHeader.d.ts +9 -0
  87. package/dist/components/create-flow/EntityFormHeader.d.ts.map +1 -0
  88. package/dist/components/create-flow/EntityFormHeader.js +7 -0
  89. package/dist/components/create-flow/EntityFormPageFrame.d.ts +10 -0
  90. package/dist/components/create-flow/EntityFormPageFrame.d.ts.map +1 -0
  91. package/dist/components/create-flow/EntityFormPageFrame.js +10 -0
  92. package/dist/components/create-flow/ImageUploadStep.d.ts +15 -0
  93. package/dist/components/create-flow/ImageUploadStep.d.ts.map +1 -0
  94. package/dist/components/create-flow/ImageUploadStep.js +11 -0
  95. package/dist/components/create-flow/ImageUploader.d.ts +30 -0
  96. package/dist/components/create-flow/ImageUploader.d.ts.map +1 -0
  97. package/dist/components/create-flow/ImageUploader.js +193 -0
  98. package/dist/components/create-flow/MultiStepWizard.d.ts +25 -0
  99. package/dist/components/create-flow/MultiStepWizard.d.ts.map +1 -0
  100. package/dist/components/create-flow/MultiStepWizard.js +31 -0
  101. package/dist/components/create-flow/ReviewConfirmationCard.d.ts +8 -0
  102. package/dist/components/create-flow/ReviewConfirmationCard.d.ts.map +1 -0
  103. package/dist/components/create-flow/ReviewConfirmationCard.js +5 -0
  104. package/dist/components/create-flow/ReviewMetricGrid.d.ts +15 -0
  105. package/dist/components/create-flow/ReviewMetricGrid.d.ts.map +1 -0
  106. package/dist/components/create-flow/ReviewMetricGrid.js +8 -0
  107. package/dist/components/create-flow/TemplateSelectionDialog.d.ts +17 -0
  108. package/dist/components/create-flow/TemplateSelectionDialog.d.ts.map +1 -0
  109. package/dist/components/create-flow/TemplateSelectionDialog.js +7 -0
  110. package/dist/components/enquiry/EnquiryFormParts.d.ts +40 -0
  111. package/dist/components/enquiry/EnquiryFormParts.d.ts.map +1 -0
  112. package/dist/components/enquiry/EnquiryFormParts.js +29 -0
  113. package/dist/components/form-sections/FaqSection.d.ts +24 -0
  114. package/dist/components/form-sections/FaqSection.d.ts.map +1 -0
  115. package/dist/components/form-sections/FaqSection.js +17 -0
  116. package/dist/components/form-sections/ImageUploadSection.d.ts +12 -0
  117. package/dist/components/form-sections/ImageUploadSection.d.ts.map +1 -0
  118. package/dist/components/form-sections/ImageUploadSection.js +8 -0
  119. package/dist/components/form-sections/OpportunityBasicsSection.d.ts +8 -0
  120. package/dist/components/form-sections/OpportunityBasicsSection.d.ts.map +1 -0
  121. package/dist/components/form-sections/OpportunityBasicsSection.js +26 -0
  122. package/dist/components/form-sections/OpportunityDetailsSection.d.ts +18 -0
  123. package/dist/components/form-sections/OpportunityDetailsSection.d.ts.map +1 -0
  124. package/dist/components/form-sections/OpportunityDetailsSection.js +10 -0
  125. package/dist/components/form-sections/OpportunityTypeSection.d.ts +7 -0
  126. package/dist/components/form-sections/OpportunityTypeSection.d.ts.map +1 -0
  127. package/dist/components/form-sections/OpportunityTypeSection.js +15 -0
  128. package/dist/components/form-sections/PackageDetailsSection.d.ts +22 -0
  129. package/dist/components/form-sections/PackageDetailsSection.d.ts.map +1 -0
  130. package/dist/components/form-sections/PackageDetailsSection.js +20 -0
  131. package/dist/components/form-sections/PackageItinerarySection.d.ts +21 -0
  132. package/dist/components/form-sections/PackageItinerarySection.d.ts.map +1 -0
  133. package/dist/components/form-sections/PackageItinerarySection.js +112 -0
  134. package/dist/components/form-sections/PackagePricingSection.d.ts +8 -0
  135. package/dist/components/form-sections/PackagePricingSection.d.ts.map +1 -0
  136. package/dist/components/form-sections/PackagePricingSection.js +11 -0
  137. package/dist/components/form-sections/PackageReviewSection.d.ts +12 -0
  138. package/dist/components/form-sections/PackageReviewSection.d.ts.map +1 -0
  139. package/dist/components/form-sections/PackageReviewSection.js +26 -0
  140. package/dist/components/form-sections/RentalBasicsSection.d.ts +12 -0
  141. package/dist/components/form-sections/RentalBasicsSection.d.ts.map +1 -0
  142. package/dist/components/form-sections/RentalBasicsSection.js +91 -0
  143. package/dist/components/form-sections/RentalCapacitySection.d.ts +9 -0
  144. package/dist/components/form-sections/RentalCapacitySection.d.ts.map +1 -0
  145. package/dist/components/form-sections/RentalCapacitySection.js +23 -0
  146. package/dist/components/form-sections/RentalLocationSection.d.ts +10 -0
  147. package/dist/components/form-sections/RentalLocationSection.d.ts.map +1 -0
  148. package/dist/components/form-sections/RentalLocationSection.js +41 -0
  149. package/dist/components/form-sections/RentalPhotosSection.d.ts +8 -0
  150. package/dist/components/form-sections/RentalPhotosSection.d.ts.map +1 -0
  151. package/dist/components/form-sections/RentalPhotosSection.js +7 -0
  152. package/dist/components/form-sections/RentalReviewSection.d.ts +10 -0
  153. package/dist/components/form-sections/RentalReviewSection.d.ts.map +1 -0
  154. package/dist/components/form-sections/RentalReviewSection.js +27 -0
  155. package/dist/components/form-sections/RentalRulesSection.d.ts +7 -0
  156. package/dist/components/form-sections/RentalRulesSection.d.ts.map +1 -0
  157. package/dist/components/form-sections/RentalRulesSection.js +10 -0
  158. package/dist/components/form-sections/RentalSpecsSection.d.ts +7 -0
  159. package/dist/components/form-sections/RentalSpecsSection.d.ts.map +1 -0
  160. package/dist/components/form-sections/RentalSpecsSection.js +10 -0
  161. package/dist/components/host-dashboard/HostCalendar.d.ts +8 -0
  162. package/dist/components/host-dashboard/HostCalendar.d.ts.map +1 -0
  163. package/dist/components/host-dashboard/HostCalendar.js +43 -0
  164. package/dist/components/host-dashboard/HostCalendarGrid.d.ts +34 -0
  165. package/dist/components/host-dashboard/HostCalendarGrid.d.ts.map +1 -0
  166. package/dist/components/host-dashboard/HostCalendarGrid.js +30 -0
  167. package/dist/components/host-dashboard/HostListingMultiSelect.d.ts +12 -0
  168. package/dist/components/host-dashboard/HostListingMultiSelect.d.ts.map +1 -0
  169. package/dist/components/host-dashboard/HostListingMultiSelect.js +24 -0
  170. package/dist/components/host-dashboard/HostManageCalendarShell.d.ts +17 -0
  171. package/dist/components/host-dashboard/HostManageCalendarShell.d.ts.map +1 -0
  172. package/dist/components/host-dashboard/HostManageCalendarShell.js +5 -0
  173. package/dist/components/host-dashboard/HostSidebarNavigation.d.ts +2 -0
  174. package/dist/components/host-dashboard/HostSidebarNavigation.d.ts.map +1 -0
  175. package/dist/components/host-dashboard/HostSidebarNavigation.js +262 -0
  176. package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts +15 -0
  177. package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts.map +1 -0
  178. package/dist/components/host-dashboard/ManageFeatureSwitcher.js +43 -0
  179. package/dist/components/host-dashboard/PageHeader.d.ts +14 -0
  180. package/dist/components/host-dashboard/PageHeader.d.ts.map +1 -0
  181. package/dist/components/host-dashboard/PageHeader.js +8 -0
  182. package/dist/components/host-dashboard/PlaceholderPage.d.ts +4 -0
  183. package/dist/components/host-dashboard/PlaceholderPage.d.ts.map +1 -0
  184. package/dist/components/host-dashboard/PlaceholderPage.js +9 -0
  185. package/dist/components/host-dashboard/StatCard.d.ts +15 -0
  186. package/dist/components/host-dashboard/StatCard.d.ts.map +1 -0
  187. package/dist/components/host-dashboard/StatCard.js +38 -0
  188. package/dist/components/layout/AppProviders.d.ts +5 -0
  189. package/dist/components/layout/AppProviders.d.ts.map +1 -0
  190. package/dist/components/layout/AppProviders.js +11 -0
  191. package/dist/components/layout/PublicRouteLayout.d.ts +5 -0
  192. package/dist/components/layout/PublicRouteLayout.d.ts.map +1 -0
  193. package/dist/components/layout/PublicRouteLayout.js +5 -0
  194. package/dist/components/layout/PublicShell.d.ts +5 -0
  195. package/dist/components/layout/PublicShell.d.ts.map +1 -0
  196. package/dist/components/layout/PublicShell.js +5 -0
  197. package/dist/components/location/LocationPicker.d.ts +27 -0
  198. package/dist/components/location/LocationPicker.d.ts.map +1 -0
  199. package/dist/components/location/LocationPicker.js +415 -0
  200. package/dist/components/location/LocationPreview.d.ts +11 -0
  201. package/dist/components/location/LocationPreview.d.ts.map +1 -0
  202. package/dist/components/location/LocationPreview.js +12 -0
  203. package/dist/components/location/MapPicker.d.ts +9 -0
  204. package/dist/components/location/MapPicker.d.ts.map +1 -0
  205. package/dist/components/location/MapPicker.js +40 -0
  206. package/dist/components/location/MapPreview.d.ts +8 -0
  207. package/dist/components/location/MapPreview.d.ts.map +1 -0
  208. package/dist/components/location/MapPreview.js +17 -0
  209. package/dist/components/location/PlaceLinkInline.d.ts +14 -0
  210. package/dist/components/location/PlaceLinkInline.d.ts.map +1 -0
  211. package/dist/components/location/PlaceLinkInline.js +30 -0
  212. package/dist/components/location/leafletMap.d.ts +8 -0
  213. package/dist/components/location/leafletMap.d.ts.map +1 -0
  214. package/dist/components/location/leafletMap.js +74 -0
  215. package/dist/components/ui/GuestOrLoginDialog.d.ts +11 -0
  216. package/dist/components/ui/GuestOrLoginDialog.d.ts.map +1 -0
  217. package/dist/components/ui/GuestOrLoginDialog.js +19 -0
  218. package/dist/components/ui/ImageGalleryViewer.d.ts +10 -0
  219. package/dist/components/ui/ImageGalleryViewer.d.ts.map +1 -0
  220. package/dist/components/ui/ImageGalleryViewer.js +59 -0
  221. package/dist/components/ui/LocationInput.d.ts +12 -0
  222. package/dist/components/ui/LocationInput.d.ts.map +1 -0
  223. package/dist/components/ui/LocationInput.js +39 -0
  224. package/dist/components/ui/PropertyGalleryClient.d.ts +8 -0
  225. package/dist/components/ui/PropertyGalleryClient.d.ts.map +1 -0
  226. package/dist/components/ui/PropertyGalleryClient.js +22 -0
  227. package/dist/components/ui/calendar.d.ts +9 -0
  228. package/dist/components/ui/calendar.d.ts.map +1 -0
  229. package/dist/components/ui/calendar.js +75 -0
  230. package/dist/components/ui/dashboard/admin-adventures-table.d.ts +12 -0
  231. package/dist/components/ui/dashboard/admin-adventures-table.d.ts.map +1 -0
  232. package/dist/components/ui/dashboard/admin-adventures-table.js +94 -0
  233. package/dist/components/ui/dashboard/admin-blogs-table.d.ts +11 -0
  234. package/dist/components/ui/dashboard/admin-blogs-table.d.ts.map +1 -0
  235. package/dist/components/ui/dashboard/admin-blogs-table.js +58 -0
  236. package/dist/components/ui/dashboard/admin-opportunities-table.d.ts +20 -0
  237. package/dist/components/ui/dashboard/admin-opportunities-table.d.ts.map +1 -0
  238. package/dist/components/ui/dashboard/admin-opportunities-table.js +133 -0
  239. package/dist/components/ui/dashboard/admin-rentals-table.d.ts +12 -0
  240. package/dist/components/ui/dashboard/admin-rentals-table.d.ts.map +1 -0
  241. package/dist/components/ui/dashboard/admin-rentals-table.js +85 -0
  242. package/dist/components/ui/dashboard/admin-travel-package-table.d.ts +16 -0
  243. package/dist/components/ui/dashboard/admin-travel-package-table.d.ts.map +1 -0
  244. package/dist/components/ui/dashboard/admin-travel-package-table.js +100 -0
  245. package/dist/components/ui/dashboard/adventures-table.d.ts +16 -0
  246. package/dist/components/ui/dashboard/adventures-table.d.ts.map +1 -0
  247. package/dist/components/ui/dashboard/adventures-table.js +151 -0
  248. package/dist/components/ui/dashboard/approver-applications-table.d.ts +13 -0
  249. package/dist/components/ui/dashboard/approver-applications-table.d.ts.map +1 -0
  250. package/dist/components/ui/dashboard/approver-applications-table.js +85 -0
  251. package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts +11 -0
  252. package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts.map +1 -0
  253. package/dist/components/ui/dashboard/approver-package-enquiries-table.js +102 -0
  254. package/dist/components/ui/dashboard/archive-confirm-modal.d.ts +9 -0
  255. package/dist/components/ui/dashboard/archive-confirm-modal.d.ts.map +1 -0
  256. package/dist/components/ui/dashboard/archive-confirm-modal.js +6 -0
  257. package/dist/components/ui/dashboard/blogs-table.d.ts +10 -0
  258. package/dist/components/ui/dashboard/blogs-table.d.ts.map +1 -0
  259. package/dist/components/ui/dashboard/blogs-table.js +62 -0
  260. package/dist/components/ui/dashboard/bookings-table.d.ts +12 -0
  261. package/dist/components/ui/dashboard/bookings-table.d.ts.map +1 -0
  262. package/dist/components/ui/dashboard/bookings-table.js +160 -0
  263. package/dist/components/ui/dashboard/dashboard-page-shell.d.ts +7 -0
  264. package/dist/components/ui/dashboard/dashboard-page-shell.d.ts.map +1 -0
  265. package/dist/components/ui/dashboard/dashboard-page-shell.js +5 -0
  266. package/dist/components/ui/dashboard/data-table-shell.d.ts +18 -0
  267. package/dist/components/ui/dashboard/data-table-shell.d.ts.map +1 -0
  268. package/dist/components/ui/dashboard/data-table-shell.js +6 -0
  269. package/dist/components/ui/dashboard/delete-confirm-modal.d.ts +9 -0
  270. package/dist/components/ui/dashboard/delete-confirm-modal.d.ts.map +1 -0
  271. package/dist/components/ui/dashboard/delete-confirm-modal.js +6 -0
  272. package/dist/components/ui/dashboard/entity-list-page-state.d.ts +25 -0
  273. package/dist/components/ui/dashboard/entity-list-page-state.d.ts.map +1 -0
  274. package/dist/components/ui/dashboard/entity-list-page-state.js +17 -0
  275. package/dist/components/ui/dashboard/generic-entity-table.d.ts +36 -0
  276. package/dist/components/ui/dashboard/generic-entity-table.d.ts.map +1 -0
  277. package/dist/components/ui/dashboard/generic-entity-table.js +203 -0
  278. package/dist/components/ui/dashboard/opportunities-table.d.ts +17 -0
  279. package/dist/components/ui/dashboard/opportunities-table.d.ts.map +1 -0
  280. package/dist/components/ui/dashboard/opportunities-table.js +143 -0
  281. package/dist/components/ui/dashboard/rentals-table.d.ts +17 -0
  282. package/dist/components/ui/dashboard/rentals-table.d.ts.map +1 -0
  283. package/dist/components/ui/dashboard/rentals-table.js +155 -0
  284. package/dist/components/ui/dashboard/restore-confirm-modal.d.ts +9 -0
  285. package/dist/components/ui/dashboard/restore-confirm-modal.d.ts.map +1 -0
  286. package/dist/components/ui/dashboard/restore-confirm-modal.js +6 -0
  287. package/dist/components/ui/dashboard/stats-card.d.ts +6 -0
  288. package/dist/components/ui/dashboard/stats-card.d.ts.map +1 -0
  289. package/dist/components/ui/dashboard/stats-card.js +5 -0
  290. package/dist/components/ui/dashboard/travel-packages-table.d.ts +16 -0
  291. package/dist/components/ui/dashboard/travel-packages-table.d.ts.map +1 -0
  292. package/dist/components/ui/dashboard/travel-packages-table.js +134 -0
  293. package/dist/components/ui/dashboard/user-applications-table.d.ts +12 -0
  294. package/dist/components/ui/dashboard/user-applications-table.d.ts.map +1 -0
  295. package/dist/components/ui/dashboard/user-applications-table.js +79 -0
  296. package/dist/components/ui/loading-skeleton.d.ts +10 -0
  297. package/dist/components/ui/loading-skeleton.d.ts.map +1 -0
  298. package/dist/components/ui/loading-skeleton.js +49 -0
  299. package/dist/components/ui/misc/IosPwaNavBar.d.ts +8 -0
  300. package/dist/components/ui/misc/IosPwaNavBar.d.ts.map +1 -0
  301. package/dist/components/ui/misc/IosPwaNavBar.js +25 -0
  302. package/dist/components/ui/misc/document-upload-button.d.ts +10 -0
  303. package/dist/components/ui/misc/document-upload-button.d.ts.map +1 -0
  304. package/dist/components/ui/misc/document-upload-button.js +12 -0
  305. package/dist/components/ui/misc/empty-state.d.ts +9 -0
  306. package/dist/components/ui/misc/empty-state.d.ts.map +1 -0
  307. package/dist/components/ui/misc/empty-state.js +4 -0
  308. package/dist/components/ui/misc/image-cropper.d.ts +9 -0
  309. package/dist/components/ui/misc/image-cropper.d.ts.map +1 -0
  310. package/dist/components/ui/misc/image-cropper.js +28 -0
  311. package/dist/components/ui/misc/rental-tile.d.ts +6 -0
  312. package/dist/components/ui/misc/rental-tile.d.ts.map +1 -0
  313. package/dist/components/ui/misc/rental-tile.js +56 -0
  314. package/dist/components/ui/misc/skeleton-extras.d.ts +32 -0
  315. package/dist/components/ui/misc/skeleton-extras.d.ts.map +1 -0
  316. package/dist/components/ui/misc/skeleton-extras.js +58 -0
  317. package/dist/components/ui/misc/tile.d.ts +4 -0
  318. package/dist/components/ui/misc/tile.d.ts.map +1 -0
  319. package/dist/components/ui/misc/tile.js +45 -0
  320. package/dist/components/ui/misc/whatsapp-help.d.ts +7 -0
  321. package/dist/components/ui/misc/whatsapp-help.d.ts.map +1 -0
  322. package/dist/components/ui/misc/whatsapp-help.js +6 -0
  323. package/dist/components/ui/motion.d.ts +14 -0
  324. package/dist/components/ui/motion.d.ts.map +1 -0
  325. package/dist/components/ui/motion.js +17 -0
  326. package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts +10 -0
  327. package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts.map +1 -0
  328. package/dist/components/ui/trippeaze/breadcrumb-trail.js +15 -0
  329. package/dist/components/ui/trippeaze/chip-tabs.d.ts +13 -0
  330. package/dist/components/ui/trippeaze/chip-tabs.d.ts.map +1 -0
  331. package/dist/components/ui/trippeaze/chip-tabs.js +6 -0
  332. package/dist/components/ui/trippeaze/page-shell.d.ts +22 -0
  333. package/dist/components/ui/trippeaze/page-shell.d.ts.map +1 -0
  334. package/dist/components/ui/trippeaze/page-shell.js +15 -0
  335. package/dist/components/ui/trippeaze/search-input.d.ts +5 -0
  336. package/dist/components/ui/trippeaze/search-input.d.ts.map +1 -0
  337. package/dist/components/ui/trippeaze/search-input.js +7 -0
  338. package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts +2 -0
  339. package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts.map +1 -0
  340. package/dist/components/user-dashboard/UserDashboardShellSidebar.js +17 -0
  341. package/dist/components/user-dashboard/UserSidebarNav.d.ts +2 -0
  342. package/dist/components/user-dashboard/UserSidebarNav.d.ts.map +1 -0
  343. package/dist/components/user-dashboard/UserSidebarNav.js +67 -0
  344. package/dist/dashboard/action-buttons.d.ts +2 -1
  345. package/dist/dashboard/action-buttons.d.ts.map +1 -1
  346. package/dist/dashboard/action-buttons.js +18 -11
  347. package/dist/dashboard/app-sidebar.d.ts.map +1 -1
  348. package/dist/dashboard/app-sidebar.js +3 -36
  349. package/dist/dashboard/dashboard-components.js +1 -1
  350. package/dist/dashboard/data-table.d.ts +5 -1
  351. package/dist/dashboard/data-table.d.ts.map +1 -1
  352. package/dist/dashboard/data-table.js +39 -7
  353. package/dist/dashboard/table.js +1 -1
  354. package/dist/header/mobile-nav-item.js +2 -2
  355. package/dist/header/mobile-navbar.d.ts.map +1 -1
  356. package/dist/header/mobile-navbar.js +10 -1
  357. package/dist/header/nav-item.js +2 -2
  358. package/dist/index.d.ts +17 -0
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +17 -0
  361. package/dist/main/footer.d.ts +0 -1
  362. package/dist/main/footer.d.ts.map +1 -1
  363. package/dist/main/footer.js +0 -1
  364. package/dist/main/navbar.d.ts +2 -2
  365. package/dist/main/navbar.d.ts.map +1 -1
  366. package/dist/main/navbar.js +73 -44
  367. package/dist/main/portfolio/portfolioItem.d.ts +1 -1
  368. package/dist/main/portfolio/portfolioItem.d.ts.map +1 -1
  369. package/dist/main/portfolio/portfolioPopup.d.ts +1 -1
  370. package/dist/main/portfolio/portfolioPopup.d.ts.map +1 -1
  371. package/dist/main/review-page.d.ts +2 -1
  372. package/dist/main/review-page.d.ts.map +1 -1
  373. package/dist/main/review-page.js +34 -4
  374. package/dist/misc/accordion.js +1 -1
  375. package/dist/misc/alert-dialog.js +1 -1
  376. package/dist/misc/alert.js +1 -1
  377. package/dist/misc/alertdialogclaude.js +1 -1
  378. package/dist/misc/avatar.js +1 -1
  379. package/dist/misc/badge.js +1 -1
  380. package/dist/misc/button.d.ts +6 -3
  381. package/dist/misc/button.d.ts.map +1 -1
  382. package/dist/misc/button.js +33 -5
  383. package/dist/misc/card.js +1 -1
  384. package/dist/misc/carousel.d.ts +2 -2
  385. package/dist/misc/carousel.d.ts.map +1 -1
  386. package/dist/misc/carousel.js +13 -5
  387. package/dist/misc/checkbox.js +1 -1
  388. package/dist/misc/command.js +1 -1
  389. package/dist/misc/datepicker.d.ts +2 -1
  390. package/dist/misc/datepicker.d.ts.map +1 -1
  391. package/dist/misc/datepicker.js +23 -21
  392. package/dist/misc/dialog.js +1 -1
  393. package/dist/misc/discount-strategy-editor.d.ts +11 -0
  394. package/dist/misc/discount-strategy-editor.d.ts.map +1 -0
  395. package/dist/misc/discount-strategy-editor.js +82 -0
  396. package/dist/misc/dropdown-menu.js +1 -1
  397. package/dist/misc/faq.d.ts +1 -1
  398. package/dist/misc/faq.d.ts.map +1 -1
  399. package/dist/misc/filter.js +2 -2
  400. package/dist/misc/filterBar.d.ts +11 -3
  401. package/dist/misc/filterBar.d.ts.map +1 -1
  402. package/dist/misc/filterBar.js +109 -55
  403. package/dist/misc/form.js +1 -1
  404. package/dist/misc/input.d.ts +4 -1
  405. package/dist/misc/input.d.ts.map +1 -1
  406. package/dist/misc/input.js +8 -3
  407. package/dist/misc/label.js +1 -1
  408. package/dist/misc/listing-wishlist-button.d.ts +13 -0
  409. package/dist/misc/listing-wishlist-button.d.ts.map +1 -0
  410. package/dist/misc/listing-wishlist-button.js +42 -0
  411. package/dist/misc/location/locationPicker.js +1 -1
  412. package/dist/misc/location-autocomplete.d.ts +28 -0
  413. package/dist/misc/location-autocomplete.d.ts.map +1 -0
  414. package/dist/misc/location-autocomplete.js +121 -0
  415. package/dist/misc/notification.js +2 -2
  416. package/dist/misc/pagination.js +1 -1
  417. package/dist/misc/popover.js +1 -1
  418. package/dist/misc/pricing-strategy-editor.d.ts +17 -0
  419. package/dist/misc/pricing-strategy-editor.d.ts.map +1 -0
  420. package/dist/misc/pricing-strategy-editor.js +80 -0
  421. package/dist/misc/progress.js +1 -1
  422. package/dist/misc/pwa-install-button.d.ts.map +1 -1
  423. package/dist/misc/pwa-install-button.js +2 -0
  424. package/dist/misc/rental-tile.d.ts +1 -1
  425. package/dist/misc/rental-tile.d.ts.map +1 -1
  426. package/dist/misc/rental-tile.js +24 -14
  427. package/dist/misc/scroll-area.js +1 -1
  428. package/dist/misc/select.js +1 -1
  429. package/dist/misc/separator.js +1 -1
  430. package/dist/misc/sheet.js +1 -1
  431. package/dist/misc/sidebar.js +2 -2
  432. package/dist/misc/slider.js +1 -1
  433. package/dist/misc/stateCard.d.ts +1 -1
  434. package/dist/misc/stateCard.d.ts.map +1 -1
  435. package/dist/misc/stateCard.js +1 -1
  436. package/dist/misc/step-progress.d.ts +16 -0
  437. package/dist/misc/step-progress.d.ts.map +1 -0
  438. package/dist/misc/step-progress.js +40 -0
  439. package/dist/misc/switch.js +1 -1
  440. package/dist/misc/tabs.js +1 -1
  441. package/dist/misc/tag-filter-input.d.ts +16 -0
  442. package/dist/misc/tag-filter-input.d.ts.map +1 -0
  443. package/dist/misc/tag-filter-input.js +26 -0
  444. package/dist/misc/textarea.js +1 -1
  445. package/dist/misc/tile.d.ts +1 -1
  446. package/dist/misc/tile.d.ts.map +1 -1
  447. package/dist/misc/tile.js +12 -47
  448. package/dist/misc/time-select.d.ts +14 -0
  449. package/dist/misc/time-select.d.ts.map +1 -0
  450. package/dist/misc/time-select.js +13 -0
  451. package/dist/misc/tooltip.js +1 -1
  452. package/dist/misc/wizard-footer.d.ts +18 -0
  453. package/dist/misc/wizard-footer.d.ts.map +1 -0
  454. package/dist/misc/wizard-footer.js +11 -0
  455. package/package.json +9 -6
  456. package/dist/misc/dashboard/action-buttons.js +0 -31
  457. package/dist/misc/misc/alertdialogclaude.js +0 -221
  458. package/dist/misc/misc/button.js +0 -46
  459. package/dist/misc/misc/dropdown-menu.js +0 -136
@@ -0,0 +1,193 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ImageIcon, Loader2, Plus, Trash2, UploadCloud } from "lucide-react";
4
+ import * as React from "react";
5
+ import { cn } from "@myrjfa/state/dist/lib/utils";
6
+ import { normalizeImageFiles } from "@myrjfa/state/dist/lib/imageUpload";
7
+ import { showAlert } from "../../misc/alertdialogclaude";
8
+ import { compressImage } from "../../misc/image-compressor";
9
+ function createUploadEvent(files) {
10
+ if (typeof DataTransfer === "undefined")
11
+ return null;
12
+ const dataTransfer = new DataTransfer();
13
+ files.forEach((file) => dataTransfer.items.add(file));
14
+ const input = document.createElement("input");
15
+ input.type = "file";
16
+ input.multiple = files.length > 1;
17
+ input.files = dataTransfer.files;
18
+ return {
19
+ target: input,
20
+ currentTarget: input,
21
+ };
22
+ }
23
+ export default function ImageUploader({ previews = [], files, onFilesChange, onFilesSelected, onUploadEvent, onRemove, prepareFiles, title = "Upload Photos", message = "Add clear images that help guests understand what they are booking.", helperText, minImages, maxImages = 10, formatLabel = "PNG, JPG, WEBP, HEIC", accept = "image/*", multiple = true, disabled = false, dedupe = true, enableCompression = true, normalizeFiles = true, previewAspectClassName = "aspect-video", previewGridClassName = "grid grid-cols-2 gap-4 md:grid-cols-3", containerClassName, dropzoneClassName, emptyIcon, }) {
24
+ const inputId = React.useId();
25
+ const inputRef = React.useRef(null);
26
+ const processingKeyRef = React.useRef(null);
27
+ const acceptedFingerprintRef = React.useRef(new Set());
28
+ const [dragging, setDragging] = React.useState(false);
29
+ const [busy, setBusy] = React.useState(false);
30
+ const [processingMessage, setProcessingMessage] = React.useState("");
31
+ const filePreviews = React.useMemo(() => (files !== null && files !== void 0 ? files : []).map((file) => URL.createObjectURL(file)), [files]);
32
+ React.useEffect(() => {
33
+ return () => {
34
+ filePreviews.forEach((preview) => URL.revokeObjectURL(preview));
35
+ };
36
+ }, [filePreviews]);
37
+ const displayPreviews = files ? [...previews, ...filePreviews] : previews;
38
+ const remainingSlots = Math.max(0, maxImages - displayPreviews.length);
39
+ const canAddMore = !disabled && remainingSlots > 0;
40
+ const fileKey = (file) => `${file.name}:${file.size}:${file.lastModified}`;
41
+ const fileFingerprint = async (file) => {
42
+ var _a;
43
+ if (!((_a = globalThis.crypto) === null || _a === void 0 ? void 0 : _a.subtle))
44
+ return fileKey(file);
45
+ try {
46
+ const hashBuffer = await crypto.subtle.digest("SHA-256", await file.arrayBuffer());
47
+ return Array.from(new Uint8Array(hashBuffer))
48
+ .map((byte) => byte.toString(16).padStart(2, "0"))
49
+ .join("");
50
+ }
51
+ catch (_b) {
52
+ return fileKey(file);
53
+ }
54
+ };
55
+ const currentFileKeys = React.useMemo(() => new Set((files !== null && files !== void 0 ? files : []).map(fileKey)), [files]);
56
+ React.useEffect(() => {
57
+ if (!(files === null || files === void 0 ? void 0 : files.length))
58
+ return;
59
+ let cancelled = false;
60
+ Promise.all(files.map(fileFingerprint)).then((fingerprints) => {
61
+ if (cancelled)
62
+ return;
63
+ fingerprints.forEach((fingerprint) => acceptedFingerprintRef.current.add(fingerprint));
64
+ });
65
+ return () => {
66
+ cancelled = true;
67
+ };
68
+ }, [files]);
69
+ const prepareSelectedFiles = async (selectedFiles) => {
70
+ const compressedFiles = [];
71
+ for (const [index, file] of selectedFiles.entries()) {
72
+ setProcessingMessage(enableCompression
73
+ ? `Compressing image ${index + 1} of ${selectedFiles.length}...`
74
+ : `Preparing image ${index + 1} of ${selectedFiles.length}...`);
75
+ compressedFiles.push(enableCompression ? await compressImage(file).catch(() => file) : file);
76
+ }
77
+ if (normalizeFiles)
78
+ setProcessingMessage("Finalizing images...");
79
+ const normalizedFiles = normalizeFiles
80
+ ? await normalizeImageFiles(compressedFiles)
81
+ : compressedFiles;
82
+ return prepareFiles ? prepareFiles(normalizedFiles) : normalizedFiles;
83
+ };
84
+ const handleFiles = async (selectedFiles) => {
85
+ const selected = Array.from(selectedFiles);
86
+ if (!selected.length || disabled || busy)
87
+ return;
88
+ const selectionKey = selected.map(fileKey).sort().join("|");
89
+ if (processingKeyRef.current === selectionKey)
90
+ return;
91
+ const invalidFiles = selected.filter((file) => !file.type.startsWith("image/"));
92
+ if (invalidFiles.length) {
93
+ await showAlert(`Invalid file type(s): ${invalidFiles.map((file) => file.name).join(", ")}. Only images are allowed.`);
94
+ return;
95
+ }
96
+ setProcessingMessage("Checking selected images...");
97
+ const selectedFingerprints = await Promise.all(selected.map(fileFingerprint));
98
+ const seenFingerprints = new Set();
99
+ const uniqueFiles = dedupe
100
+ ? selected.filter((file, index) => {
101
+ var _a;
102
+ const fingerprint = (_a = selectedFingerprints[index]) !== null && _a !== void 0 ? _a : fileKey(file);
103
+ const isDuplicate = seenFingerprints.has(fingerprint) ||
104
+ acceptedFingerprintRef.current.has(fingerprint) ||
105
+ currentFileKeys.has(fileKey(file));
106
+ seenFingerprints.add(fingerprint);
107
+ return !isDuplicate;
108
+ })
109
+ : selected;
110
+ if (!uniqueFiles.length) {
111
+ await showAlert("These images are already selected.");
112
+ return;
113
+ }
114
+ const acceptedFiles = uniqueFiles.slice(0, remainingSlots);
115
+ if (!acceptedFiles.length) {
116
+ await showAlert(`You can upload a maximum of ${maxImages} images.`);
117
+ return;
118
+ }
119
+ if (uniqueFiles.length > acceptedFiles.length) {
120
+ await showAlert(`Only ${remainingSlots} more image${remainingSlots === 1 ? "" : "s"} can be added.`);
121
+ }
122
+ processingKeyRef.current = selectionKey;
123
+ setBusy(true);
124
+ try {
125
+ const processedFiles = await prepareSelectedFiles(acceptedFiles);
126
+ const acceptedFingerprints = await Promise.all(acceptedFiles.map(fileFingerprint));
127
+ acceptedFingerprints.forEach((fingerprint) => acceptedFingerprintRef.current.add(fingerprint));
128
+ if (files && onFilesChange) {
129
+ onFilesChange([...files, ...processedFiles]);
130
+ return;
131
+ }
132
+ if (onFilesSelected) {
133
+ await onFilesSelected(processedFiles);
134
+ return;
135
+ }
136
+ if (onUploadEvent) {
137
+ const event = createUploadEvent(processedFiles);
138
+ if (event)
139
+ await onUploadEvent(event);
140
+ }
141
+ }
142
+ finally {
143
+ setBusy(false);
144
+ setProcessingMessage("");
145
+ processingKeyRef.current = null;
146
+ if (inputRef.current)
147
+ inputRef.current.value = "";
148
+ }
149
+ };
150
+ const removeImage = (index) => {
151
+ if (files && onFilesChange) {
152
+ if (index < previews.length) {
153
+ onRemove === null || onRemove === void 0 ? void 0 : onRemove(index);
154
+ return;
155
+ }
156
+ const fileIndex = index - previews.length;
157
+ onFilesChange(files.filter((_, currentFileIndex) => currentFileIndex !== fileIndex));
158
+ return;
159
+ }
160
+ onRemove === null || onRemove === void 0 ? void 0 : onRemove(index);
161
+ };
162
+ const handleInputChange = (event) => {
163
+ var _a;
164
+ void handleFiles((_a = event.target.files) !== null && _a !== void 0 ? _a : []);
165
+ };
166
+ const handleDrop = (event) => {
167
+ event.preventDefault();
168
+ setDragging(false);
169
+ void handleFiles(event.dataTransfer.files);
170
+ };
171
+ return (_jsxs("div", { className: cn("space-y-5", containerClassName), children: [_jsxs("div", { role: "button", tabIndex: canAddMore ? 0 : -1, onClick: () => {
172
+ var _a;
173
+ if (canAddMore && !busy)
174
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
175
+ }, onKeyDown: (event) => {
176
+ var _a;
177
+ if ((event.key === "Enter" || event.key === " ") && canAddMore && !busy) {
178
+ event.preventDefault();
179
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
180
+ }
181
+ }, onDragEnter: (event) => {
182
+ event.preventDefault();
183
+ if (canAddMore)
184
+ setDragging(true);
185
+ }, onDragOver: (event) => {
186
+ event.preventDefault();
187
+ if (canAddMore)
188
+ setDragging(true);
189
+ }, onDragLeave: (event) => {
190
+ event.preventDefault();
191
+ setDragging(false);
192
+ }, onDrop: handleDrop, className: cn("group relative flex min-h-64 cursor-pointer flex-col items-center justify-center gap-5 overflow-hidden rounded-[2rem] border-2 border-dashed border-gray-200 bg-white p-8 text-center transition", "hover:border-primary hover:bg-primary/5", dragging && "border-primary bg-primary/5 ring-4 ring-primary/10", !canAddMore && "cursor-not-allowed opacity-60 hover:border-gray-200 hover:bg-white", dropzoneClassName), children: [_jsx("div", { className: "flex h-16 w-16 items-center justify-center rounded-2xl bg-gray-50 text-gray-400 transition group-hover:bg-primary/10 group-hover:text-primary", children: emptyIcon !== null && emptyIcon !== void 0 ? emptyIcon : _jsx(UploadCloud, { className: "h-8 w-8" }) }), _jsxs("div", { className: "max-w-xl", children: [_jsx("p", { className: "text-lg font-black text-gray-900", children: title }), _jsx("p", { className: "mt-1 text-sm font-semibold text-gray-500", children: message }), _jsxs("div", { className: "mt-4 flex flex-wrap items-center justify-center gap-2", children: [typeof minImages === "number" && (_jsxs("span", { className: "rounded-lg border border-gray-100 bg-white px-3 py-1 text-[10px] font-bold uppercase tracking-widest text-gray-500 shadow-sm", children: ["Min ", minImages] })), _jsxs("span", { className: "rounded-lg border border-gray-100 bg-white px-3 py-1 text-[10px] font-bold uppercase tracking-widest text-gray-500 shadow-sm", children: ["Max ", maxImages] }), _jsx("span", { className: "rounded-lg border border-gray-100 bg-white px-3 py-1 text-[10px] font-bold uppercase tracking-widest text-gray-500 shadow-sm", children: formatLabel })] }), _jsx("p", { className: "mt-3 text-xs font-semibold text-gray-400", children: helperText !== null && helperText !== void 0 ? helperText : (canAddMore ? "Drag and drop images here, or click to browse." : "Maximum image limit reached.") }), busy && _jsx("p", { className: "mt-2 text-xs font-bold text-primary", children: processingMessage || "Processing images..." })] }), busy && (_jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center rounded-[2rem] bg-white/85 backdrop-blur-sm", children: [_jsx(Loader2, { className: "h-8 w-8 animate-spin text-primary" }), _jsx("p", { className: "mt-3 text-sm font-black text-gray-900", children: processingMessage || "Processing images..." })] })), _jsx("input", { ref: inputRef, id: inputId, type: "file", accept: accept, multiple: multiple, disabled: !canAddMore || busy, onChange: handleInputChange, className: "hidden" })] }), displayPreviews.length > 0 && (_jsxs("div", { className: previewGridClassName, children: [displayPreviews.map((image, index) => (_jsxs("div", { className: cn("group relative overflow-hidden rounded-2xl border border-gray-100 bg-gray-50 shadow-sm", previewAspectClassName), children: [_jsx("img", { src: image, alt: `Uploaded image ${index + 1}`, className: "h-full w-full object-cover transition duration-500 group-hover:scale-105" }), _jsxs("div", { className: "absolute inset-x-0 bottom-0 flex items-center justify-between bg-gradient-to-t from-black/60 to-transparent p-3 pt-10 text-white", children: [_jsxs("span", { className: "flex items-center gap-1.5 text-xs font-bold", children: [_jsx(ImageIcon, { className: "h-3.5 w-3.5" }), index + 1] }), _jsx("button", { type: "button", onClick: () => removeImage(index), className: "rounded-full bg-white/95 p-2 text-red-500 opacity-0 shadow-lg transition hover:bg-white group-hover:opacity-100", "aria-label": `Remove image ${index + 1}`, children: _jsx(Trash2, { className: "h-4 w-4" }) })] })] }, `${image}-${index}`))), canAddMore && (_jsxs("button", { type: "button", onClick: () => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, className: cn("flex flex-col items-center justify-center gap-2 rounded-2xl border-2 border-dashed border-gray-200 bg-gray-50 text-sm font-bold text-gray-500 transition hover:border-primary hover:bg-primary/5 hover:text-primary", previewAspectClassName), children: [_jsx(Plus, { className: "h-6 w-6" }), "Add more"] }))] }))] }));
193
+ }
@@ -0,0 +1,25 @@
1
+ import type { ReactNode } from "react";
2
+ export type MultiStepWizardProps = {
3
+ title: string;
4
+ description: string;
5
+ backHref: string;
6
+ backLabel: string;
7
+ steps: {
8
+ label: string;
9
+ icon: any;
10
+ }[];
11
+ currentStep: number;
12
+ onStepClick: (step: number) => void;
13
+ allowAllSteps: boolean;
14
+ submitError?: string;
15
+ draftSavedMessage?: string;
16
+ submitting?: boolean;
17
+ publishLabel: string;
18
+ onNext: any;
19
+ onBack: () => void;
20
+ onSaveDraft?: any;
21
+ onPublish: any;
22
+ children: ReactNode;
23
+ };
24
+ export default function MultiStepWizard({ title, description, backHref, backLabel, steps, currentStep, onStepClick, allowAllSteps, submitError, draftSavedMessage, submitting, publishLabel, onNext, onBack, onSaveDraft, onPublish, children, }: MultiStepWizardProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=MultiStepWizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiStepWizard.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/MultiStepWizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAQzD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,EAAE,OAAO,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC;IAEf,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAiBF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,UAAkB,EAClB,YAAY,EACZ,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,2CA0EtB"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import Link from "next/link";
5
+ import { ArrowLeft, AlertCircle, CheckCircle } from "lucide-react";
6
+ import { MotionDiv, AnimatePresence } from "../ui/motion";
7
+ import StepProgress from "../../misc/step-progress";
8
+ import WizardFooter from "../../misc/wizard-footer";
9
+ const slideVariants = {
10
+ enter: (direction) => ({
11
+ x: direction * 50,
12
+ opacity: 0,
13
+ }),
14
+ center: {
15
+ x: 0,
16
+ opacity: 1,
17
+ },
18
+ exit: (direction) => ({
19
+ x: -direction * 50,
20
+ opacity: 0,
21
+ }),
22
+ };
23
+ export default function MultiStepWizard({ title, description, backHref, backLabel, steps, currentStep, onStepClick, allowAllSteps, submitError, draftSavedMessage, submitting = false, publishLabel, onNext, onBack, onSaveDraft, onPublish, children, }) {
24
+ const [prevStep, setPrevStep] = useState(currentStep);
25
+ const [direction, setDirection] = useState(1);
26
+ if (currentStep !== prevStep) {
27
+ setDirection(currentStep > prevStep ? 1 : -1);
28
+ setPrevStep(currentStep);
29
+ }
30
+ return (_jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: [_jsxs("div", { className: "mb-8", children: [_jsxs(Link, { href: backHref, className: "inline-flex items-center gap-1.5 text-gray-500 text-sm font-bold hover:text-primary transition mb-4", children: [_jsx(ArrowLeft, { className: "w-4 h-4" }), " ", backLabel] }), _jsx("h1", { className: "text-3xl font-bold text-gray-900", children: title }), _jsx("p", { className: "text-gray-500 mt-1 text-sm", children: description })] }), _jsx(StepProgress, { steps: steps, currentStep: currentStep, onStepClick: onStepClick, allowAllSteps: allowAllSteps, size: "md", className: "mb-8 pb-2" }), _jsxs("div", { className: "bg-white rounded-3xl border border-gray-100 shadow-sm overflow-hidden", children: [_jsx("div", { className: "p-8 overflow-hidden", children: _jsx(AnimatePresence, { mode: "wait", custom: direction, children: _jsx(MotionDiv, { custom: direction, variants: slideVariants, initial: "enter", animate: "center", exit: "exit", transition: { duration: 0.2 }, children: children }, currentStep) }) }), submitError && (_jsxs("div", { className: "mx-8 mb-4 flex items-center gap-2 bg-red-50 border border-red-100 p-4 rounded-2xl text-red-600 text-sm font-bold", children: [_jsx(AlertCircle, { className: "w-4 h-4" }), " ", submitError] })), draftSavedMessage && (_jsxs("div", { className: "mx-8 mb-4 flex items-center gap-2 rounded-2xl border border-emerald-100 bg-emerald-50 p-4 text-sm font-bold text-emerald-700", children: [_jsx(CheckCircle, { className: "h-4 w-4" }), " ", draftSavedMessage] })), _jsx(WizardFooter, { isFirstStep: currentStep === 0, isLastStep: currentStep === steps.length - 1, isSubmitting: submitting, publishLabel: publishLabel, showPublishOnEveryStep: allowAllSteps, onBack: onBack, onNext: onNext, onSaveDraft: onSaveDraft, onPublish: onPublish })] })] }));
31
+ }
@@ -0,0 +1,8 @@
1
+ type ReviewConfirmationCardProps = {
2
+ title: string;
3
+ body: string;
4
+ className?: string;
5
+ };
6
+ export default function ReviewConfirmationCard({ title, body, className, }: ReviewConfirmationCardProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ReviewConfirmationCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewConfirmationCard.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/ReviewConfirmationCard.tsx"],"names":[],"mappings":"AAEA,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,KAAK,EACL,IAAI,EACJ,SAAoE,GACrE,EAAE,2BAA2B,2CAO7B"}
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export default function ReviewConfirmationCard({ title, body, className = "rounded-[2rem] border border-slate-100 bg-slate-50 p-6", }) {
4
+ return (_jsxs("div", { className: className, children: [_jsx("div", { className: "text-sm font-bold text-slate-700", children: title }), _jsx("div", { className: "mt-2 text-sm text-slate-600", children: body })] }));
5
+ }
@@ -0,0 +1,15 @@
1
+ type ReviewMetric = {
2
+ label: string;
3
+ value: string;
4
+ valueClassName?: string;
5
+ description?: string;
6
+ className?: string;
7
+ };
8
+ type ReviewMetricGridProps = {
9
+ items: ReviewMetric[];
10
+ className?: string;
11
+ itemClassName?: string;
12
+ };
13
+ export default function ReviewMetricGrid({ items, className, itemClassName, }: ReviewMetricGridProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=ReviewMetricGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewMetricGrid.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/ReviewMetricGrid.tsx"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,KAAK,EACL,SAAmD,EACnD,aAA2E,GAC5E,EAAE,qBAAqB,2CAkBvB"}
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export default function ReviewMetricGrid({ items, className = "grid grid-cols-1 gap-4 md:grid-cols-2", itemClassName = "rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3", }) {
4
+ return (_jsx("div", { className: className, children: items.map((item) => {
5
+ var _a, _b;
6
+ return (_jsxs("div", { className: `min-w-0 ${itemClassName} ${(_a = item.className) !== null && _a !== void 0 ? _a : ""}`.trim(), children: [_jsx("div", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: item.label }), _jsx("div", { className: `mt-2 break-words text-sm font-semibold text-slate-900 ${(_b = item.valueClassName) !== null && _b !== void 0 ? _b : ""}`.trim(), children: item.value }), item.description ? (_jsx("div", { className: "mt-1 text-xs font-medium text-slate-500", children: item.description })) : null] }, item.label));
7
+ }) }));
8
+ }
@@ -0,0 +1,17 @@
1
+ type TemplateOption = {
2
+ slug: string;
3
+ title: string;
4
+ };
5
+ type TemplateSelectionDialogProps = {
6
+ open: boolean;
7
+ onOpenChange: (open: boolean) => void;
8
+ title: string;
9
+ items: TemplateOption[];
10
+ draftItems?: TemplateOption[];
11
+ onSelect: (slug: string) => void;
12
+ onDraftSelect?: (slug: string) => void;
13
+ emptyActionLabel?: string;
14
+ };
15
+ export default function TemplateSelectionDialog({ open, onOpenChange, title, items, draftItems, onSelect, onDraftSelect, emptyActionLabel, }: TemplateSelectionDialogProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=TemplateSelectionDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateSelectionDialog.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/TemplateSelectionDialog.tsx"],"names":[],"mappings":"AAWA,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,KAAK,EACL,UAAe,EACf,QAAQ,EACR,aAAa,EACb,gBAAgC,GACjC,EAAE,4BAA4B,2CAoD9B"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button } from "@myrjfa/ui/dist/misc/button";
4
+ import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@myrjfa/ui/dist/misc/dialog";
5
+ export default function TemplateSelectionDialog({ open, onOpenChange, title, items, draftItems = [], onSelect, onDraftSelect, emptyActionLabel = "Start Fresh", }) {
6
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "max-w-lg", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: title }) }), _jsxs("div", { className: "mt-3 max-h-[60vh] overflow-y-auto pr-2", children: [items.length > 0 && (_jsx("div", { className: "space-y-3 mb-6", children: items.map((item) => (_jsx("button", { type: "button", className: "w-full rounded-lg border p-3 text-left hover:bg-gray-100", onClick: () => onSelect(item.slug), children: _jsx("div", { className: "font-medium", children: item.title }) }, item.slug))) })), draftItems.length > 0 && (_jsxs("div", { className: "mt-2", children: [_jsx("h3", { className: "text-sm font-bold text-gray-900 mb-3", children: "Complete Pending Creation" }), _jsx("div", { className: "space-y-3", children: draftItems.map((item) => (_jsxs("button", { type: "button", className: "w-full flex items-center justify-between rounded-lg border border-dashed border-gray-300 p-3 text-left hover:bg-gray-50", onClick: () => onDraftSelect ? onDraftSelect(item.slug) : onSelect(item.slug), children: [_jsx("div", { className: "font-medium text-gray-700", children: item.title }), _jsx("span", { className: "text-xs font-semibold text-primary bg-primary/10 px-2 py-1 rounded-full", children: "Draft" })] }, item.slug))) })] }))] }), _jsx(DialogFooter, { className: "mt-4 flex justify-end", children: _jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: emptyActionLabel }) })] }) }));
7
+ }
@@ -0,0 +1,40 @@
1
+ import type { ReactNode } from "react";
2
+ export declare function EnquiryStepLabel({ number, label, }: {
3
+ number: number;
4
+ label: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function EnquirySectionCard({ step, title, description, children, className, }: {
7
+ step: number;
8
+ title: string;
9
+ description?: string;
10
+ children: ReactNode;
11
+ className?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function EnquiryGuestFields({ values, onChange, }: {
14
+ values: {
15
+ name: string;
16
+ email: string;
17
+ phone: string;
18
+ };
19
+ onChange: (field: "name" | "email" | "phone", value: string) => void;
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ export declare function EnquiryTravellerSplitFields({ males, females, onMalesChange, onFemalesChange, }: {
22
+ males: number;
23
+ females: number;
24
+ onMalesChange: (value: number) => void;
25
+ onFemalesChange: (value: number) => void;
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ export declare function EnquiryTravellerCountField({ value, onChange, }: {
28
+ value: string;
29
+ onChange: (value: string) => void;
30
+ }): import("react/jsx-runtime").JSX.Element;
31
+ export declare function EnquiryMessageField({ value, onChange, placeholder, }: {
32
+ value: string;
33
+ onChange: (value: string) => void;
34
+ placeholder?: string;
35
+ }): import("react/jsx-runtime").JSX.Element;
36
+ export declare function EnquirySubmitButton({ loading, children, }: {
37
+ loading?: boolean;
38
+ children?: ReactNode;
39
+ }): import("react/jsx-runtime").JSX.Element;
40
+ //# sourceMappingURL=EnquiryFormParts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnquiryFormParts.d.ts","sourceRoot":"","sources":["../../../src/components/enquiry/EnquiryFormParts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,2CAWA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAiBA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtE,2CA8CA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,OAAO,EACP,aAAa,EACb,eAAe,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,2CA4CA;AAED,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,2CAiBA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,WAAuG,GACxG,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,2CASA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAyB,GAC1B,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAWA"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Loader2, Mail, Phone, Send, User, Users } from "lucide-react";
4
+ import { Input } from "@myrjfa/ui/dist/misc/input";
5
+ import { Label } from "@myrjfa/ui/dist/misc/label";
6
+ import { Textarea } from "@myrjfa/ui/dist/misc/textarea";
7
+ import { cn } from "@myrjfa/state/dist/lib/utils";
8
+ export function EnquiryStepLabel({ number, label, }) {
9
+ return (_jsxs("div", { className: "mb-5 flex items-center gap-3", children: [_jsx("span", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-trippeaze-primary text-xs font-bold text-white", children: number }), _jsx("p", { className: "text-[15px] font-semibold tracking-tight text-slate-950", children: label })] }));
10
+ }
11
+ export function EnquirySectionCard({ step, title, description, children, className, }) {
12
+ return (_jsxs("section", { className: cn("rounded-2xl border border-cyan-100 bg-white p-6 shadow-sm", className), children: [_jsx(EnquiryStepLabel, { number: step, label: title }), description && (_jsx("p", { className: "-mt-3 mb-5 text-sm leading-6 text-slate-500", children: description })), children] }));
13
+ }
14
+ export function EnquiryGuestFields({ values, onChange, }) {
15
+ return (_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "enquiry-name", children: "Full name" }), _jsxs("div", { className: "relative", children: [_jsx(User, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-cyan-500" }), _jsx(Input, { id: "enquiry-name", value: values.name, onChange: (event) => onChange("name", event.target.value), placeholder: "e.g. Arjun Sharma", className: "pl-9" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "enquiry-email", children: "Email" }), _jsxs("div", { className: "relative", children: [_jsx(Mail, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-cyan-500" }), _jsx(Input, { id: "enquiry-email", type: "email", value: values.email, onChange: (event) => onChange("email", event.target.value), placeholder: "you@email.com", className: "pl-9" })] })] }), _jsxs("div", { className: "space-y-2 sm:col-span-2", children: [_jsx(Label, { htmlFor: "enquiry-phone", children: "Phone" }), _jsxs("div", { className: "relative", children: [_jsx(Phone, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-cyan-500" }), _jsx(Input, { id: "enquiry-phone", type: "tel", value: values.phone, onChange: (event) => onChange("phone", event.target.value), placeholder: "+91 98765 43210", className: "pl-9" })] })] })] }));
16
+ }
17
+ export function EnquiryTravellerSplitFields({ males, females, onMalesChange, onFemalesChange, }) {
18
+ const totalPeople = Math.max(Number(males) || 0, 0) + Math.max(Number(females) || 0, 0);
19
+ return (_jsxs("div", { children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "enquiry-males", children: "Males" }), _jsx(Input, { id: "enquiry-males", type: "number", min: "0", value: males, onChange: (event) => onMalesChange(parseInt(event.target.value, 10) || 0), showZeroAsEmpty: true })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "enquiry-females", children: "Females" }), _jsx(Input, { id: "enquiry-females", type: "number", min: "0", value: females, onChange: (event) => onFemalesChange(parseInt(event.target.value, 10) || 0), showZeroAsEmpty: true })] })] }), totalPeople > 0 && (_jsxs("div", { className: "mt-4 inline-flex items-center gap-2 rounded-full bg-cyan-50 px-3.5 py-1.5 text-sm font-medium text-cyan-700", children: [_jsx(Users, { className: "h-3.5 w-3.5" }), _jsxs("span", { children: [totalPeople, " traveller", totalPeople !== 1 ? "s" : ""] }), males > 0 && females > 0 && (_jsxs("span", { className: "text-xs text-cyan-600/70", children: [males, "M ", females, "F"] }))] }))] }));
20
+ }
21
+ export function EnquiryTravellerCountField({ value, onChange, }) {
22
+ return (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "enquiry-travellers", children: "Travellers" }), _jsxs("div", { className: "relative", children: [_jsx(Users, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }), _jsx(Input, { id: "enquiry-travellers", type: "number", min: "1", value: value, onChange: (event) => onChange(event.target.value), className: "pl-9" })] })] }));
23
+ }
24
+ export function EnquiryMessageField({ value, onChange, placeholder = "Special requirements, dietary needs, pickup questions, or anything else we should know.", }) {
25
+ return (_jsx(Textarea, { value: value, onChange: (event) => onChange(event.target.value), placeholder: placeholder, className: "min-h-[120px] resize-none rounded-2xl" }));
26
+ }
27
+ export function EnquirySubmitButton({ loading, children = "Send Enquiry", }) {
28
+ return (_jsxs("button", { type: "submit", disabled: loading, className: "flex h-14 w-full cursor-pointer items-center justify-center gap-2.5 rounded-2xl bg-trippeaze-primary text-base font-semibold text-white shadow-lg shadow-cyan-500/25 transition-all hover:-translate-y-0.5 hover:bg-trippeaze-primary/90 disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0", children: [loading ? _jsx(Loader2, { className: "h-4 w-4 animate-spin" }) : _jsx(Send, { className: "h-4 w-4" }), loading ? "Submitting..." : children] }));
29
+ }
@@ -0,0 +1,24 @@
1
+ import { type FieldValues, type UseFormReturn } from "react-hook-form";
2
+ type FaqItem = {
3
+ question: string;
4
+ answer: string;
5
+ };
6
+ type FaqSectionProps<TFieldValues extends FieldValues> = {
7
+ form: UseFormReturn<TFieldValues>;
8
+ questions: FaqItem[];
9
+ onAddQuestion: () => void;
10
+ onRemoveQuestion: (index: number) => void;
11
+ title?: string;
12
+ description?: string;
13
+ questionPlaceholder: string;
14
+ answerPlaceholder: string;
15
+ cardClassName?: string;
16
+ removeButtonClassName?: string;
17
+ questionItemClassName?: string;
18
+ questionHeadingClassName?: string;
19
+ addButtonLabel?: string;
20
+ onFieldChange?: () => void;
21
+ };
22
+ export default function FaqSection<TFieldValues extends FieldValues>({ form, questions, onAddQuestion, onRemoveQuestion, title, description, questionPlaceholder, answerPlaceholder, cardClassName, removeButtonClassName, questionItemClassName, questionHeadingClassName, addButtonLabel, onFieldChange, }: FaqSectionProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=FaqSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaqSection.d.ts","sourceRoot":"","sources":["../../../src/components/form-sections/FaqSection.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAa,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOlF,KAAK,OAAO,GAAG;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,CAAC,YAAY,SAAS,WAAW,IAAI;IACvD,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAClC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,YAAY,SAAS,WAAW,EAAE,EACnE,IAAI,EACJ,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,KAAoC,EACpC,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,qBAAyE,EACzE,qBAA0D,EAC1D,wBAA0C,EAC1C,cAA+B,EAC/B,aAAa,GACd,EAAE,eAAe,CAAC,YAAY,CAAC,2CA6E/B"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Plus, Trash2 } from "lucide-react";
4
+ import { Button } from "@myrjfa/ui/dist/misc/button";
5
+ import { Card, CardContent, CardHeader, CardTitle } from "@myrjfa/ui/dist/misc/card";
6
+ import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@myrjfa/ui/dist/misc/form";
7
+ import { Input } from "@myrjfa/ui/dist/misc/input";
8
+ import { Textarea } from "@myrjfa/ui/dist/misc/textarea";
9
+ export default function FaqSection({ form, questions, onAddQuestion, onRemoveQuestion, title = "Frequently Asked Questions", description, questionPlaceholder, answerPlaceholder, cardClassName, removeButtonClassName = "text-red-500 hover:text-red-700 hover:bg-red-50", questionItemClassName = "p-4 border rounded-2xl space-y-4", questionHeadingClassName = "font-semibold", addButtonLabel = "Add Question", onFieldChange, }) {
10
+ return (_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: title }), description && _jsx(FormDescription, { children: description })] }), _jsxs(CardContent, { className: "space-y-6", children: [questions.map((_, index) => (_jsxs("div", { className: questionItemClassName, children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsxs("h3", { className: questionHeadingClassName, children: ["Question ", index + 1] }), _jsxs(Button, { type: "button", onClick: () => onRemoveQuestion(index), variant: "ghost", size: "sm", className: removeButtonClassName, children: [_jsx(Trash2, { className: "h-4 w-4 mr-1" }), "Remove"] })] }), _jsx(FormField, { control: form.control, name: `questions.${index}.question`, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Question" }), _jsx(FormControl, { children: _jsx(Input, { id: `question-${index}`, placeholder: questionPlaceholder, ...field, onChange: (e) => {
11
+ onFieldChange === null || onFieldChange === void 0 ? void 0 : onFieldChange();
12
+ field.onChange(e);
13
+ } }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: `questions.${index}.answer`, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Answer" }), _jsx(FormControl, { children: _jsx(Textarea, { id: `answer-${index}`, placeholder: answerPlaceholder, ...field, onChange: (e) => {
14
+ onFieldChange === null || onFieldChange === void 0 ? void 0 : onFieldChange();
15
+ field.onChange(e);
16
+ } }) }), _jsx(FormMessage, {})] })) })] }, index))), _jsxs(Button, { type: "button", onClick: onAddQuestion, className: "flex justify-start", children: [_jsx(Plus, { className: "w-4 h-4 mr-2" }), addButtonLabel] })] })] }));
17
+ }
@@ -0,0 +1,12 @@
1
+ type ImageUploadSectionProps = {
2
+ title?: string;
3
+ message: string;
4
+ previewImages: string[];
5
+ onUpload: (e: React.ChangeEvent<HTMLInputElement>) => Promise<void>;
6
+ onRemove: (index: number) => void;
7
+ cardClassName?: string;
8
+ titleClassName?: string;
9
+ };
10
+ export default function ImageUploadSection({ title, message, previewImages, onUpload, onRemove, cardClassName, titleClassName, }: ImageUploadSectionProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=ImageUploadSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadSection.d.ts","sourceRoot":"","sources":["../../../src/components/form-sections/ImageUploadSection.tsx"],"names":[],"mappings":"AAMA,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,KAAgB,EAChB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,cAA0C,GAC3C,EAAE,uBAAuB,2CAmBzB"}
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Upload } from "lucide-react";
4
+ import { Card, CardContent, CardHeader, CardTitle } from "@myrjfa/ui/dist/misc/card";
5
+ import MultiImageUploader from "@myrjfa/ui/dist/misc/multiImageUploader";
6
+ export default function ImageUploadSection({ title = "Photos", message, previewImages, onUpload, onRemove, cardClassName, titleClassName = "flex items-center gap-2", }) {
7
+ return (_jsxs(Card, { className: cardClassName, children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: titleClassName, children: [_jsx(Upload, { className: "h-5 w-5 text-primary" }), title] }) }), _jsx(CardContent, { children: _jsx(MultiImageUploader, { previewImages: previewImages, handleImageUpload: onUpload, handleRemoveImage: onRemove, message: message }) })] }));
8
+ }
@@ -0,0 +1,8 @@
1
+ import type { UseFormReturn } from "react-hook-form";
2
+ type OpportunityBasicsSectionProps = {
3
+ form: UseFormReturn<any>;
4
+ showHostUsernameField: boolean;
5
+ };
6
+ export default function OpportunityBasicsSection({ form, showHostUsernameField, }: OpportunityBasicsSectionProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=OpportunityBasicsSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpportunityBasicsSection.d.ts","sourceRoot":"","sources":["../../../src/components/form-sections/OpportunityBasicsSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgBrD,KAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,EAC/C,IAAI,EACJ,qBAAqB,GACtB,EAAE,6BAA6B,2CAuO/B"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card, CardContent, CardHeader, CardTitle } from "@myrjfa/ui/dist/misc/card";
3
+ import { DatePicker } from "@myrjfa/ui/dist/misc/datepicker";
4
+ import { Filter } from "@myrjfa/ui/dist/misc/filter";
5
+ import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@myrjfa/ui/dist/misc/form";
6
+ import { Input } from "@myrjfa/ui/dist/misc/input";
7
+ import { getCountryNames, getStates } from "@myrjfa/state/dist/lib/data/countryStates";
8
+ export default function OpportunityBasicsSection({ form, showHostUsernameField, }) {
9
+ const selectedCountry = form.watch("country");
10
+ const selectedType = form.watch("opportunityType");
11
+ const stateOptions = selectedCountry ? getStates(selectedCountry) : [];
12
+ return (_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Basic Information" }) }), _jsxs(CardContent, { className: "space-y-4", children: [showHostUsernameField && (_jsx(FormField, { control: form.control, name: "hostId", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Host username" }), _jsx(FormControl, { children: _jsx(Input, { placeholder: "e.g trippeaze", ...field, id: "hostId" }) }), _jsx(FormMessage, {})] })) })), _jsx(FormField, { control: form.control, name: "title", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Title" }), _jsx(FormControl, { children: _jsx(Input, { placeholder: "e.g., Community Garden Project Coordinator", ...field, id: "opportunityTitle" }) }), _jsx(FormDescription, { children: "A clear, attractive, and concise title for your listing" }), _jsx(FormMessage, {})] })) }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6", children: [_jsx(FormField, { control: form.control, name: "country", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Country" }), _jsx(FormControl, { children: _jsx("div", { className: "w-full border border-input rounded-md text-sm shadow-sm focus-within:ring-2 focus-within:ring-muted", children: _jsx(Filter, { label: "Country", formType: "autoComplete", selectedValue: field.value, values: getCountryNames(), onChange: (value) => {
13
+ field.onChange(value);
14
+ form.setValue("state", "");
15
+ form.setValue("city", "");
16
+ }, "aria-describedby": "country-error" }) }) }), _jsx(FormMessage, { id: "country-error" })] })) }), _jsx(FormField, { control: form.control, name: "state", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "State" }), _jsx(FormControl, { children: _jsx("div", { className: "w-full border border-input rounded-md text-sm shadow-sm focus-within:ring-2 focus-within:ring-muted", children: _jsx(Filter, { label: "State", formType: "autoComplete", selectedValue: field.value, values: stateOptions, onChange: (value) => {
17
+ field.onChange(value);
18
+ form.setValue("city", "");
19
+ }, "aria-describedby": "state-error" }) }) }), _jsx(FormMessage, { id: "state-error" })] })) }), _jsx(FormField, { control: form.control, name: "city", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "City" }), _jsx(FormControl, { children: _jsx(Input, { id: "city", placeholder: "e.g., Jaipur", ...field, autoComplete: "city" }) }), _jsx(FormMessage, {})] })) })] }), _jsx(FormField, { control: form.control, name: "address", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Address" }), _jsx(FormControl, { children: _jsx(Input, { id: "address", placeholder: "Exact address (optional)", ...field, autoComplete: "address" }) }), _jsx(FormMessage, {})] })) }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6", children: [_jsx(FormField, { control: form.control, name: "availableFrom", render: ({ field }) => {
20
+ var _a;
21
+ return (_jsx(DatePicker, { field: {
22
+ ...field,
23
+ value: (_a = field.value) !== null && _a !== void 0 ? _a : null,
24
+ }, minDate: new Date(), label: "Available From" }));
25
+ } }), selectedType !== "job" && (_jsx(FormField, { control: form.control, name: "minDuration", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Min Duration (weeks)" }), _jsx(FormControl, { children: _jsx(Input, { id: "minDuration", type: "number", min: 1, ...field, onChange: (e) => field.onChange(parseInt(e.target.value)) }) }), _jsx(FormMessage, {})] })) })), selectedType !== "job" && (_jsx(FormField, { control: form.control, name: "maxDuration", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Max Duration (weeks)" }), _jsx(FormControl, { children: _jsx(Input, { id: "maxDuration", type: "number", min: 1, ...field, onChange: (e) => field.onChange(parseInt(e.target.value)) }) }), _jsx(FormMessage, {})] })) }))] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [selectedType !== "job" && (_jsx(FormField, { control: form.control, name: "peopleRequired", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "People Required" }), _jsx(FormControl, { children: _jsx(Input, { id: "peopleRequired", type: "number", min: "1", ...field, onChange: (e) => field.onChange(parseInt(e.target.value)) }) }), _jsx(FormMessage, {})] })) })), _jsx(FormField, { control: form.control, name: "hostingType", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Hosting Type" }), _jsx(FormControl, { children: _jsx(Input, { id: "hostingType", placeholder: "e.g., Hotel, NGO, Restaurant...", ...field }) }), _jsx(FormMessage, {})] })) })] })] })] }));
26
+ }
@@ -0,0 +1,18 @@
1
+ import type { UseFormReturn } from "react-hook-form";
2
+ type OpportunityDetailsSectionProps = {
3
+ form: UseFormReturn<any>;
4
+ selectedType: string;
5
+ skills: string[];
6
+ facilities: string[];
7
+ responsibilities: string[];
8
+ onAddSkill: (value: string) => void;
9
+ onRemoveSkill: (value: string) => void;
10
+ onAddFacility: (value: string) => void;
11
+ onRemoveFacility: (value: string) => void;
12
+ onAddResponsibility: (value: string) => void;
13
+ onRemoveResponsibility: (value: string) => void;
14
+ arrayErrors: boolean;
15
+ };
16
+ export default function OpportunityDetailsSection({ form, selectedType, skills, facilities, responsibilities, onAddSkill, onRemoveSkill, onAddFacility, onRemoveFacility, onAddResponsibility, onRemoveResponsibility, arrayErrors, }: OpportunityDetailsSectionProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=OpportunityDetailsSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpportunityDetailsSection.d.ts","sourceRoot":"","sources":["../../../src/components/form-sections/OpportunityDetailsSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAerD,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,GACZ,EAAE,8BAA8B,2CAsEhC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@myrjfa/ui/dist/misc/form";
3
+ import { Card, CardContent, CardHeader, CardTitle } from "@myrjfa/ui/dist/misc/card";
4
+ import { Textarea } from "@myrjfa/ui/dist/misc/textarea";
5
+ import TagFilterInput from "@myrjfa/ui/dist/misc/tag-filter-input";
6
+ import { skillsOptions } from "@myrjfa/state/dist/lib/models/props";
7
+ import { facilitiesOptions, responsibilitiesOptions } from "@myrjfa/state/dist/lib/models/opportunities/opportunity";
8
+ export default function OpportunityDetailsSection({ form, selectedType, skills, facilities, responsibilities, onAddSkill, onRemoveSkill, onAddFacility, onRemoveFacility, onAddResponsibility, onRemoveResponsibility, arrayErrors, }) {
9
+ return (_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Description & Details" }) }), _jsxs(CardContent, { className: "space-y-6", children: [_jsx(TagFilterInput, { id: "skills", label: "Skills Required", items: skills, onAdd: onAddSkill, onRemove: onRemoveSkill, options: skillsOptions.map((item) => item.title), placeholder: "Select Skill", chipClassName: "flex items-center gap-1", errorMessage: arrayErrors && skills.length === 0 ? "At least one skill is required" : undefined }), _jsxs("div", { className: "flex flex-col md:flex-row gap-6", children: [_jsx("div", { className: "flex-1", children: _jsx(TagFilterInput, { id: "facilities", label: "Facilities Provided", items: facilities, onAdd: onAddFacility, onRemove: onRemoveFacility, options: facilitiesOptions.map((item) => item.title), placeholder: "Select Facility", chipClassName: "flex items-center gap-1", errorMessage: arrayErrors && facilities.length === 0 ? "Add at least 1 facility you are providing" : undefined }) }), _jsx("div", { className: "flex-1", children: _jsx(TagFilterInput, { id: "responsiblities", label: selectedType === "volunteer" ? "Volunteer Responsibilities Expected" : "Key Responsibilities Expected", items: responsibilities, onAdd: onAddResponsibility, onRemove: onRemoveResponsibility, options: responsibilitiesOptions.map((item) => item.title), placeholder: "Responsibility", chipClassName: "flex items-center gap-1", errorMessage: arrayErrors && responsibilities.length === 0 ? "Add at least 1 responsibility" : undefined }) })] }), _jsx(FormField, { control: form.control, name: "description", render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: "Description" }), _jsx(FormControl, { children: _jsx(Textarea, { id: "description", placeholder: "Provide a detailed description of the opportunity", className: "min-h-32", ...field }) }), _jsx(FormMessage, {})] })) })] })] }));
10
+ }