@myrjfa/ui 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 (669) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +19 -0
  3. package/dist/chat/ChatMain.d.ts +12 -0
  4. package/dist/chat/ChatMain.d.ts.map +1 -0
  5. package/dist/chat/ChatMain.js +390 -0
  6. package/dist/chat/ChatSidebar.d.ts +15 -0
  7. package/dist/chat/ChatSidebar.d.ts.map +1 -0
  8. package/dist/chat/ChatSidebar.js +32 -0
  9. package/dist/chat/ConversationList.d.ts +20 -0
  10. package/dist/chat/ConversationList.d.ts.map +1 -0
  11. package/dist/chat/ConversationList.js +95 -0
  12. package/dist/chat/EventPanel.d.ts +11 -0
  13. package/dist/chat/EventPanel.d.ts.map +1 -0
  14. package/dist/chat/EventPanel.js +76 -0
  15. package/dist/chat/ExpensePanel.d.ts +14 -0
  16. package/dist/chat/ExpensePanel.d.ts.map +1 -0
  17. package/dist/chat/ExpensePanel.js +282 -0
  18. package/dist/chat/MessageBubble.d.ts +29 -0
  19. package/dist/chat/MessageBubble.d.ts.map +1 -0
  20. package/dist/chat/MessageBubble.js +425 -0
  21. package/dist/chat/MessageInput.d.ts +34 -0
  22. package/dist/chat/MessageInput.d.ts.map +1 -0
  23. package/dist/chat/MessageInput.js +330 -0
  24. package/dist/chat/MilestonePanel.d.ts +14 -0
  25. package/dist/chat/MilestonePanel.d.ts.map +1 -0
  26. package/dist/chat/MilestonePanel.js +209 -0
  27. package/dist/chat/components/ParticipantSelector.d.ts +11 -0
  28. package/dist/chat/components/ParticipantSelector.d.ts.map +1 -0
  29. package/dist/chat/components/ParticipantSelector.js +26 -0
  30. package/dist/chat/components/SplitInputs.d.ts +12 -0
  31. package/dist/chat/components/SplitInputs.d.ts.map +1 -0
  32. package/dist/chat/components/SplitInputs.js +84 -0
  33. package/dist/chat/components/SplitTypeSelector.d.ts +8 -0
  34. package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -0
  35. package/dist/chat/components/SplitTypeSelector.js +13 -0
  36. package/dist/chat/dialogs/AddMemberDialog.d.ts +15 -0
  37. package/dist/chat/dialogs/AddMemberDialog.d.ts.map +1 -0
  38. package/dist/chat/dialogs/AddMemberDialog.js +43 -0
  39. package/dist/chat/dialogs/CameraDialog.d.ts +8 -0
  40. package/dist/chat/dialogs/CameraDialog.d.ts.map +1 -0
  41. package/dist/chat/dialogs/CameraDialog.js +81 -0
  42. package/dist/chat/dialogs/ChatInfoDialog.d.ts +10 -0
  43. package/dist/chat/dialogs/ChatInfoDialog.d.ts.map +1 -0
  44. package/dist/chat/dialogs/ChatInfoDialog.js +75 -0
  45. package/dist/chat/dialogs/ConversationSearchDialog.d.ts +8 -0
  46. package/dist/chat/dialogs/ConversationSearchDialog.d.ts.map +1 -0
  47. package/dist/chat/dialogs/ConversationSearchDialog.js +53 -0
  48. package/dist/chat/dialogs/CreateEventDialog.d.ts +22 -0
  49. package/dist/chat/dialogs/CreateEventDialog.d.ts.map +1 -0
  50. package/dist/chat/dialogs/CreateEventDialog.js +51 -0
  51. package/dist/chat/dialogs/CreatePollDialog.d.ts +8 -0
  52. package/dist/chat/dialogs/CreatePollDialog.d.ts.map +1 -0
  53. package/dist/chat/dialogs/CreatePollDialog.js +38 -0
  54. package/dist/chat/dialogs/EditPollDialog.d.ts +14 -0
  55. package/dist/chat/dialogs/EditPollDialog.d.ts.map +1 -0
  56. package/dist/chat/dialogs/EditPollDialog.js +33 -0
  57. package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts +20 -0
  58. package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts.map +1 -0
  59. package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +58 -0
  60. package/dist/chat/dialogs/GroupInfoDialog.d.ts +10 -0
  61. package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -0
  62. package/dist/chat/dialogs/GroupInfoDialog.js +81 -0
  63. package/dist/chat/dialogs/GroupInfoViewDialog.d.ts +9 -0
  64. package/dist/chat/dialogs/GroupInfoViewDialog.d.ts.map +1 -0
  65. package/dist/chat/dialogs/GroupInfoViewDialog.js +15 -0
  66. package/dist/chat/dialogs/HostWorkspaceDialog.d.ts +9 -0
  67. package/dist/chat/dialogs/HostWorkspaceDialog.d.ts.map +1 -0
  68. package/dist/chat/dialogs/HostWorkspaceDialog.js +90 -0
  69. package/dist/chat/dialogs/MediaComposerDialog.d.ts +9 -0
  70. package/dist/chat/dialogs/MediaComposerDialog.d.ts.map +1 -0
  71. package/dist/chat/dialogs/MediaComposerDialog.js +41 -0
  72. package/dist/chat/dialogs/NewChatDialog.d.ts +2 -0
  73. package/dist/chat/dialogs/NewChatDialog.d.ts.map +1 -0
  74. package/dist/chat/dialogs/NewChatDialog.js +48 -0
  75. package/dist/chat/dialogs/NewGroupDialog.d.ts +2 -0
  76. package/dist/chat/dialogs/NewGroupDialog.d.ts.map +1 -0
  77. package/dist/chat/dialogs/NewGroupDialog.js +44 -0
  78. package/dist/chat/dialogs/ParticipantsDialog.d.ts +12 -0
  79. package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -0
  80. package/dist/chat/dialogs/ParticipantsDialog.js +134 -0
  81. package/dist/chat/dialogs/PayAndSplitDialog.d.ts +12 -0
  82. package/dist/chat/dialogs/PayAndSplitDialog.d.ts.map +1 -0
  83. package/dist/chat/dialogs/PayAndSplitDialog.js +124 -0
  84. package/dist/chat/dialogs/PaymentProfileDialog.d.ts +5 -0
  85. package/dist/chat/dialogs/PaymentProfileDialog.d.ts.map +1 -0
  86. package/dist/chat/dialogs/PaymentProfileDialog.js +45 -0
  87. package/dist/chat/dialogs/PollVotersDialog.d.ts +10 -0
  88. package/dist/chat/dialogs/PollVotersDialog.d.ts.map +1 -0
  89. package/dist/chat/dialogs/PollVotersDialog.js +11 -0
  90. package/dist/chat/dialogs/ShareLocationDialog.d.ts +8 -0
  91. package/dist/chat/dialogs/ShareLocationDialog.d.ts.map +1 -0
  92. package/dist/chat/dialogs/ShareLocationDialog.js +47 -0
  93. package/dist/chat/index.d.ts +8 -0
  94. package/dist/chat/index.d.ts.map +1 -0
  95. package/dist/chat/index.js +7 -0
  96. package/dist/components/CityAutocomplete.d.ts +5 -0
  97. package/dist/components/CityAutocomplete.d.ts.map +1 -0
  98. package/dist/components/CityAutocomplete.js +112 -0
  99. package/dist/components/CreateListingDropdown.d.ts +5 -0
  100. package/dist/components/CreateListingDropdown.d.ts.map +1 -0
  101. package/dist/components/CreateListingDropdown.js +21 -0
  102. package/dist/components/DestinationAutocomplete.d.ts +11 -0
  103. package/dist/components/DestinationAutocomplete.d.ts.map +1 -0
  104. package/dist/components/DestinationAutocomplete.js +24 -0
  105. package/dist/components/StateAutocomplete.d.ts +10 -0
  106. package/dist/components/StateAutocomplete.d.ts.map +1 -0
  107. package/dist/components/StateAutocomplete.js +34 -0
  108. package/dist/components/admin/AdminBookingRegistrationsList.d.ts +5 -0
  109. package/dist/components/admin/AdminBookingRegistrationsList.d.ts.map +1 -0
  110. package/dist/components/admin/AdminBookingRegistrationsList.js +69 -0
  111. package/dist/components/admin/AdminListingActionsWrapper.d.ts +9 -0
  112. package/dist/components/admin/AdminListingActionsWrapper.d.ts.map +1 -0
  113. package/dist/components/admin/AdminListingActionsWrapper.js +200 -0
  114. package/dist/components/ads/ActivateAdPlacementButton.d.ts +6 -0
  115. package/dist/components/ads/ActivateAdPlacementButton.d.ts.map +1 -0
  116. package/dist/components/ads/ActivateAdPlacementButton.js +27 -0
  117. package/dist/components/ads/AdOfferCard.d.ts +6 -0
  118. package/dist/components/ads/AdOfferCard.d.ts.map +1 -0
  119. package/dist/components/ads/AdOfferCard.js +15 -0
  120. package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts +17 -0
  121. package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts.map +1 -0
  122. package/dist/components/adventure/AdventureAvailabilityPlanner.js +106 -0
  123. package/dist/components/adventure/AdventureQueryCard.d.ts +5 -0
  124. package/dist/components/adventure/AdventureQueryCard.d.ts.map +1 -0
  125. package/dist/components/adventure/AdventureQueryCard.js +65 -0
  126. package/dist/components/adventure/AdventureSlotBuilder.d.ts +41 -0
  127. package/dist/components/adventure/AdventureSlotBuilder.d.ts.map +1 -0
  128. package/dist/components/adventure/AdventureSlotBuilder.js +146 -0
  129. package/dist/components/booking/booking-form.d.ts +39 -0
  130. package/dist/components/booking/booking-form.d.ts.map +1 -0
  131. package/dist/components/booking/booking-form.js +847 -0
  132. package/dist/components/brand/BrandPageView.d.ts +8 -0
  133. package/dist/components/brand/BrandPageView.d.ts.map +1 -0
  134. package/dist/components/brand/BrandPageView.js +97 -0
  135. package/dist/components/companion/AnonymousChat.d.ts +22 -0
  136. package/dist/components/companion/AnonymousChat.d.ts.map +1 -0
  137. package/dist/components/companion/AnonymousChat.js +24 -0
  138. package/dist/components/companion/SwipeCard.d.ts +25 -0
  139. package/dist/components/companion/SwipeCard.d.ts.map +1 -0
  140. package/dist/components/companion/SwipeCard.js +58 -0
  141. package/dist/components/create-flow/ConfirmDiscardDialog.d.ts +11 -0
  142. package/dist/components/create-flow/ConfirmDiscardDialog.d.ts.map +1 -0
  143. package/dist/components/create-flow/ConfirmDiscardDialog.js +14 -0
  144. package/dist/components/create-flow/EntityEditLoadingState.d.ts +2 -0
  145. package/dist/components/create-flow/EntityEditLoadingState.d.ts.map +1 -0
  146. package/dist/components/create-flow/EntityEditLoadingState.js +6 -0
  147. package/dist/components/create-flow/EntityFormCompletionState.d.ts +12 -0
  148. package/dist/components/create-flow/EntityFormCompletionState.d.ts.map +1 -0
  149. package/dist/components/create-flow/EntityFormCompletionState.js +10 -0
  150. package/dist/components/create-flow/EntityFormHeader.d.ts +9 -0
  151. package/dist/components/create-flow/EntityFormHeader.d.ts.map +1 -0
  152. package/dist/components/create-flow/EntityFormHeader.js +7 -0
  153. package/dist/components/create-flow/EntityFormPageFrame.d.ts +10 -0
  154. package/dist/components/create-flow/EntityFormPageFrame.d.ts.map +1 -0
  155. package/dist/components/create-flow/EntityFormPageFrame.js +10 -0
  156. package/dist/components/create-flow/ImageUploader.d.ts +30 -0
  157. package/dist/components/create-flow/ImageUploader.d.ts.map +1 -0
  158. package/dist/components/create-flow/ImageUploader.js +193 -0
  159. package/dist/components/create-flow/MultiStepWizard.d.ts +25 -0
  160. package/dist/components/create-flow/MultiStepWizard.d.ts.map +1 -0
  161. package/dist/components/create-flow/MultiStepWizard.js +31 -0
  162. package/dist/components/create-flow/ReviewConfirmationCard.d.ts +8 -0
  163. package/dist/components/create-flow/ReviewConfirmationCard.d.ts.map +1 -0
  164. package/dist/components/create-flow/ReviewConfirmationCard.js +5 -0
  165. package/dist/components/create-flow/ReviewMetricGrid.d.ts +15 -0
  166. package/dist/components/create-flow/ReviewMetricGrid.d.ts.map +1 -0
  167. package/dist/components/create-flow/ReviewMetricGrid.js +8 -0
  168. package/dist/components/create-flow/TemplateSelectionDialog.d.ts +17 -0
  169. package/dist/components/create-flow/TemplateSelectionDialog.d.ts.map +1 -0
  170. package/dist/components/create-flow/TemplateSelectionDialog.js +7 -0
  171. package/dist/components/discounts/OffersAndCouponsSheet.d.ts +13 -0
  172. package/dist/components/discounts/OffersAndCouponsSheet.d.ts.map +1 -0
  173. package/dist/components/discounts/OffersAndCouponsSheet.js +81 -0
  174. package/dist/components/enquiry/EnquiryFormParts.d.ts +40 -0
  175. package/dist/components/enquiry/EnquiryFormParts.d.ts.map +1 -0
  176. package/dist/components/enquiry/EnquiryFormParts.js +29 -0
  177. package/dist/components/form-sections/FaqSection.d.ts +24 -0
  178. package/dist/components/form-sections/FaqSection.d.ts.map +1 -0
  179. package/dist/components/form-sections/FaqSection.js +17 -0
  180. package/dist/components/form-sections/OpportunityBasicsSection.d.ts +8 -0
  181. package/dist/components/form-sections/OpportunityBasicsSection.d.ts.map +1 -0
  182. package/dist/components/form-sections/OpportunityBasicsSection.js +26 -0
  183. package/dist/components/form-sections/OpportunityDetailsSection.d.ts +18 -0
  184. package/dist/components/form-sections/OpportunityDetailsSection.d.ts.map +1 -0
  185. package/dist/components/form-sections/OpportunityDetailsSection.js +10 -0
  186. package/dist/components/form-sections/OpportunityTypeSection.d.ts +7 -0
  187. package/dist/components/form-sections/OpportunityTypeSection.d.ts.map +1 -0
  188. package/dist/components/form-sections/OpportunityTypeSection.js +15 -0
  189. package/dist/components/form-sections/PackageDetailsSection.d.ts +22 -0
  190. package/dist/components/form-sections/PackageDetailsSection.d.ts.map +1 -0
  191. package/dist/components/form-sections/PackageDetailsSection.js +20 -0
  192. package/dist/components/form-sections/PackageItinerarySection.d.ts +21 -0
  193. package/dist/components/form-sections/PackageItinerarySection.d.ts.map +1 -0
  194. package/dist/components/form-sections/PackageItinerarySection.js +112 -0
  195. package/dist/components/form-sections/PackagePricingSection.d.ts +8 -0
  196. package/dist/components/form-sections/PackagePricingSection.d.ts.map +1 -0
  197. package/dist/components/form-sections/PackagePricingSection.js +11 -0
  198. package/dist/components/form-sections/PackageReviewSection.d.ts +12 -0
  199. package/dist/components/form-sections/PackageReviewSection.d.ts.map +1 -0
  200. package/dist/components/form-sections/PackageReviewSection.js +26 -0
  201. package/dist/components/form-sections/RentalBasicsSection.d.ts +12 -0
  202. package/dist/components/form-sections/RentalBasicsSection.d.ts.map +1 -0
  203. package/dist/components/form-sections/RentalBasicsSection.js +91 -0
  204. package/dist/components/form-sections/RentalCapacitySection.d.ts +9 -0
  205. package/dist/components/form-sections/RentalCapacitySection.d.ts.map +1 -0
  206. package/dist/components/form-sections/RentalCapacitySection.js +23 -0
  207. package/dist/components/form-sections/RentalLocationSection.d.ts +10 -0
  208. package/dist/components/form-sections/RentalLocationSection.d.ts.map +1 -0
  209. package/dist/components/form-sections/RentalLocationSection.js +41 -0
  210. package/dist/components/form-sections/RentalReviewSection.d.ts +10 -0
  211. package/dist/components/form-sections/RentalReviewSection.d.ts.map +1 -0
  212. package/dist/components/form-sections/RentalReviewSection.js +27 -0
  213. package/dist/components/form-sections/RentalRulesSection.d.ts +7 -0
  214. package/dist/components/form-sections/RentalRulesSection.d.ts.map +1 -0
  215. package/dist/components/form-sections/RentalRulesSection.js +10 -0
  216. package/dist/components/form-sections/RentalSpecsSection.d.ts +7 -0
  217. package/dist/components/form-sections/RentalSpecsSection.d.ts.map +1 -0
  218. package/dist/components/form-sections/RentalSpecsSection.js +10 -0
  219. package/dist/components/host-dashboard/HostCalendar.d.ts +8 -0
  220. package/dist/components/host-dashboard/HostCalendar.d.ts.map +1 -0
  221. package/dist/components/host-dashboard/HostCalendar.js +43 -0
  222. package/dist/components/host-dashboard/HostCalendarGrid.d.ts +34 -0
  223. package/dist/components/host-dashboard/HostCalendarGrid.d.ts.map +1 -0
  224. package/dist/components/host-dashboard/HostCalendarGrid.js +30 -0
  225. package/dist/components/host-dashboard/HostListingMultiSelect.d.ts +12 -0
  226. package/dist/components/host-dashboard/HostListingMultiSelect.d.ts.map +1 -0
  227. package/dist/components/host-dashboard/HostListingMultiSelect.js +24 -0
  228. package/dist/components/host-dashboard/HostManageCalendarShell.d.ts +17 -0
  229. package/dist/components/host-dashboard/HostManageCalendarShell.d.ts.map +1 -0
  230. package/dist/components/host-dashboard/HostManageCalendarShell.js +5 -0
  231. package/dist/components/host-dashboard/HostSidebarNavigation.d.ts +2 -0
  232. package/dist/components/host-dashboard/HostSidebarNavigation.d.ts.map +1 -0
  233. package/dist/components/host-dashboard/HostSidebarNavigation.js +299 -0
  234. package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts +15 -0
  235. package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts.map +1 -0
  236. package/dist/components/host-dashboard/ManageFeatureSwitcher.js +43 -0
  237. package/dist/components/host-dashboard/PageHeader.d.ts +14 -0
  238. package/dist/components/host-dashboard/PageHeader.d.ts.map +1 -0
  239. package/dist/components/host-dashboard/PageHeader.js +8 -0
  240. package/dist/components/host-dashboard/PlaceholderPage.d.ts +4 -0
  241. package/dist/components/host-dashboard/PlaceholderPage.d.ts.map +1 -0
  242. package/dist/components/host-dashboard/PlaceholderPage.js +9 -0
  243. package/dist/components/host-dashboard/StatCard.d.ts +15 -0
  244. package/dist/components/host-dashboard/StatCard.d.ts.map +1 -0
  245. package/dist/components/host-dashboard/StatCard.js +38 -0
  246. package/dist/components/layout/AppProviders.d.ts +5 -0
  247. package/dist/components/layout/AppProviders.d.ts.map +1 -0
  248. package/dist/components/layout/AppProviders.js +11 -0
  249. package/dist/components/layout/PublicRouteLayout.d.ts +5 -0
  250. package/dist/components/layout/PublicRouteLayout.d.ts.map +1 -0
  251. package/dist/components/layout/PublicRouteLayout.js +5 -0
  252. package/dist/components/layout/PublicShell.d.ts +5 -0
  253. package/dist/components/layout/PublicShell.d.ts.map +1 -0
  254. package/dist/components/layout/PublicShell.js +5 -0
  255. package/dist/components/location/LocationPicker.d.ts +27 -0
  256. package/dist/components/location/LocationPicker.d.ts.map +1 -0
  257. package/dist/components/location/LocationPicker.js +415 -0
  258. package/dist/components/location/LocationPreview.d.ts +11 -0
  259. package/dist/components/location/LocationPreview.d.ts.map +1 -0
  260. package/dist/components/location/LocationPreview.js +12 -0
  261. package/dist/components/location/MapPicker.d.ts +9 -0
  262. package/dist/components/location/MapPicker.d.ts.map +1 -0
  263. package/dist/components/location/MapPicker.js +40 -0
  264. package/dist/components/location/MapPreview.d.ts +8 -0
  265. package/dist/components/location/MapPreview.d.ts.map +1 -0
  266. package/dist/components/location/MapPreview.js +17 -0
  267. package/dist/components/location/PlaceLinkInline.d.ts +14 -0
  268. package/dist/components/location/PlaceLinkInline.d.ts.map +1 -0
  269. package/dist/components/location/PlaceLinkInline.js +30 -0
  270. package/dist/components/location/leafletMap.d.ts +8 -0
  271. package/dist/components/location/leafletMap.d.ts.map +1 -0
  272. package/dist/components/location/leafletMap.js +74 -0
  273. package/dist/components/ui/GuestOrLoginDialog.d.ts +11 -0
  274. package/dist/components/ui/GuestOrLoginDialog.d.ts.map +1 -0
  275. package/dist/components/ui/GuestOrLoginDialog.js +19 -0
  276. package/dist/components/ui/ImageGalleryViewer.d.ts +10 -0
  277. package/dist/components/ui/ImageGalleryViewer.d.ts.map +1 -0
  278. package/dist/components/ui/ImageGalleryViewer.js +59 -0
  279. package/dist/components/ui/LocationInput.d.ts +12 -0
  280. package/dist/components/ui/LocationInput.d.ts.map +1 -0
  281. package/dist/components/ui/LocationInput.js +39 -0
  282. package/dist/components/ui/PropertyGalleryClient.d.ts +8 -0
  283. package/dist/components/ui/PropertyGalleryClient.d.ts.map +1 -0
  284. package/dist/components/ui/PropertyGalleryClient.js +22 -0
  285. package/dist/components/ui/calendar.d.ts +9 -0
  286. package/dist/components/ui/calendar.d.ts.map +1 -0
  287. package/dist/components/ui/calendar.js +75 -0
  288. package/dist/components/ui/dashboard/admin-adventures-table.d.ts +12 -0
  289. package/dist/components/ui/dashboard/admin-adventures-table.d.ts.map +1 -0
  290. package/dist/components/ui/dashboard/admin-adventures-table.js +94 -0
  291. package/dist/components/ui/dashboard/admin-blogs-table.d.ts +11 -0
  292. package/dist/components/ui/dashboard/admin-blogs-table.d.ts.map +1 -0
  293. package/dist/components/ui/dashboard/admin-blogs-table.js +58 -0
  294. package/dist/components/ui/dashboard/admin-opportunities-table.d.ts +20 -0
  295. package/dist/components/ui/dashboard/admin-opportunities-table.d.ts.map +1 -0
  296. package/dist/components/ui/dashboard/admin-opportunities-table.js +139 -0
  297. package/dist/components/ui/dashboard/admin-rentals-table.d.ts +12 -0
  298. package/dist/components/ui/dashboard/admin-rentals-table.d.ts.map +1 -0
  299. package/dist/components/ui/dashboard/admin-rentals-table.js +85 -0
  300. package/dist/components/ui/dashboard/admin-travel-package-table.d.ts +16 -0
  301. package/dist/components/ui/dashboard/admin-travel-package-table.d.ts.map +1 -0
  302. package/dist/components/ui/dashboard/admin-travel-package-table.js +103 -0
  303. package/dist/components/ui/dashboard/adventures-table.d.ts +16 -0
  304. package/dist/components/ui/dashboard/adventures-table.d.ts.map +1 -0
  305. package/dist/components/ui/dashboard/adventures-table.js +151 -0
  306. package/dist/components/ui/dashboard/approver-applications-table.d.ts +13 -0
  307. package/dist/components/ui/dashboard/approver-applications-table.d.ts.map +1 -0
  308. package/dist/components/ui/dashboard/approver-applications-table.js +85 -0
  309. package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts +11 -0
  310. package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts.map +1 -0
  311. package/dist/components/ui/dashboard/approver-package-enquiries-table.js +102 -0
  312. package/dist/components/ui/dashboard/archive-confirm-modal.d.ts +9 -0
  313. package/dist/components/ui/dashboard/archive-confirm-modal.d.ts.map +1 -0
  314. package/dist/components/ui/dashboard/archive-confirm-modal.js +6 -0
  315. package/dist/components/ui/dashboard/blogs-table.d.ts +10 -0
  316. package/dist/components/ui/dashboard/blogs-table.d.ts.map +1 -0
  317. package/dist/components/ui/dashboard/blogs-table.js +62 -0
  318. package/dist/components/ui/dashboard/bookings-table.d.ts +13 -0
  319. package/dist/components/ui/dashboard/bookings-table.d.ts.map +1 -0
  320. package/dist/components/ui/dashboard/bookings-table.js +165 -0
  321. package/dist/components/ui/dashboard/dashboard-page-shell.d.ts +7 -0
  322. package/dist/components/ui/dashboard/dashboard-page-shell.d.ts.map +1 -0
  323. package/dist/components/ui/dashboard/dashboard-page-shell.js +5 -0
  324. package/dist/components/ui/dashboard/data-table-shell.d.ts +18 -0
  325. package/dist/components/ui/dashboard/data-table-shell.d.ts.map +1 -0
  326. package/dist/components/ui/dashboard/data-table-shell.js +6 -0
  327. package/dist/components/ui/dashboard/delete-confirm-modal.d.ts +9 -0
  328. package/dist/components/ui/dashboard/delete-confirm-modal.d.ts.map +1 -0
  329. package/dist/components/ui/dashboard/delete-confirm-modal.js +6 -0
  330. package/dist/components/ui/dashboard/entity-list-page-state.d.ts +25 -0
  331. package/dist/components/ui/dashboard/entity-list-page-state.d.ts.map +1 -0
  332. package/dist/components/ui/dashboard/entity-list-page-state.js +17 -0
  333. package/dist/components/ui/dashboard/generic-entity-table.d.ts +36 -0
  334. package/dist/components/ui/dashboard/generic-entity-table.d.ts.map +1 -0
  335. package/dist/components/ui/dashboard/generic-entity-table.js +203 -0
  336. package/dist/components/ui/dashboard/opportunities-table.d.ts +17 -0
  337. package/dist/components/ui/dashboard/opportunities-table.d.ts.map +1 -0
  338. package/dist/components/ui/dashboard/opportunities-table.js +143 -0
  339. package/dist/components/ui/dashboard/rentals-table.d.ts +17 -0
  340. package/dist/components/ui/dashboard/rentals-table.d.ts.map +1 -0
  341. package/dist/components/ui/dashboard/rentals-table.js +155 -0
  342. package/dist/components/ui/dashboard/restore-confirm-modal.d.ts +9 -0
  343. package/dist/components/ui/dashboard/restore-confirm-modal.d.ts.map +1 -0
  344. package/dist/components/ui/dashboard/restore-confirm-modal.js +6 -0
  345. package/dist/components/ui/dashboard/stats-card.d.ts +6 -0
  346. package/dist/components/ui/dashboard/stats-card.d.ts.map +1 -0
  347. package/dist/components/ui/dashboard/stats-card.js +5 -0
  348. package/dist/components/ui/dashboard/travel-packages-table.d.ts +16 -0
  349. package/dist/components/ui/dashboard/travel-packages-table.d.ts.map +1 -0
  350. package/dist/components/ui/dashboard/travel-packages-table.js +134 -0
  351. package/dist/components/ui/dashboard/user-applications-table.d.ts +12 -0
  352. package/dist/components/ui/dashboard/user-applications-table.d.ts.map +1 -0
  353. package/dist/components/ui/dashboard/user-applications-table.js +79 -0
  354. package/dist/components/ui/loading-skeleton.d.ts +10 -0
  355. package/dist/components/ui/loading-skeleton.d.ts.map +1 -0
  356. package/dist/components/ui/loading-skeleton.js +49 -0
  357. package/dist/components/ui/misc/IosPwaNavBar.d.ts +8 -0
  358. package/dist/components/ui/misc/IosPwaNavBar.d.ts.map +1 -0
  359. package/dist/components/ui/misc/IosPwaNavBar.js +25 -0
  360. package/dist/components/ui/misc/document-upload-button.d.ts +10 -0
  361. package/dist/components/ui/misc/document-upload-button.d.ts.map +1 -0
  362. package/dist/components/ui/misc/document-upload-button.js +12 -0
  363. package/dist/components/ui/misc/empty-state.d.ts +9 -0
  364. package/dist/components/ui/misc/empty-state.d.ts.map +1 -0
  365. package/dist/components/ui/misc/empty-state.js +4 -0
  366. package/dist/components/ui/misc/image-cropper.d.ts +9 -0
  367. package/dist/components/ui/misc/image-cropper.d.ts.map +1 -0
  368. package/dist/components/ui/misc/image-cropper.js +28 -0
  369. package/dist/components/ui/misc/pwa-install-button.d.ts +2 -0
  370. package/dist/components/ui/misc/pwa-install-button.d.ts.map +1 -0
  371. package/dist/components/ui/misc/pwa-install-button.js +17 -0
  372. package/dist/components/ui/misc/rental-tile.d.ts +6 -0
  373. package/dist/components/ui/misc/rental-tile.d.ts.map +1 -0
  374. package/dist/components/ui/misc/rental-tile.js +56 -0
  375. package/dist/components/ui/misc/skeleton-extras.d.ts +32 -0
  376. package/dist/components/ui/misc/skeleton-extras.d.ts.map +1 -0
  377. package/dist/components/ui/misc/skeleton-extras.js +58 -0
  378. package/dist/components/ui/misc/tile.d.ts +4 -0
  379. package/dist/components/ui/misc/tile.d.ts.map +1 -0
  380. package/dist/components/ui/misc/tile.js +45 -0
  381. package/dist/components/ui/misc/whatsapp-help.d.ts +7 -0
  382. package/dist/components/ui/misc/whatsapp-help.d.ts.map +1 -0
  383. package/dist/components/ui/misc/whatsapp-help.js +6 -0
  384. package/dist/components/ui/motion.d.ts +14 -0
  385. package/dist/components/ui/motion.d.ts.map +1 -0
  386. package/dist/components/ui/motion.js +17 -0
  387. package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts +10 -0
  388. package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts.map +1 -0
  389. package/dist/components/ui/trippeaze/breadcrumb-trail.js +15 -0
  390. package/dist/components/ui/trippeaze/chip-tabs.d.ts +13 -0
  391. package/dist/components/ui/trippeaze/chip-tabs.d.ts.map +1 -0
  392. package/dist/components/ui/trippeaze/chip-tabs.js +6 -0
  393. package/dist/components/ui/trippeaze/page-shell.d.ts +22 -0
  394. package/dist/components/ui/trippeaze/page-shell.d.ts.map +1 -0
  395. package/dist/components/ui/trippeaze/page-shell.js +15 -0
  396. package/dist/components/ui/trippeaze/search-input.d.ts +5 -0
  397. package/dist/components/ui/trippeaze/search-input.d.ts.map +1 -0
  398. package/dist/components/ui/trippeaze/search-input.js +7 -0
  399. package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts +2 -0
  400. package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts.map +1 -0
  401. package/dist/components/user-dashboard/UserDashboardShellSidebar.js +17 -0
  402. package/dist/components/user-dashboard/UserSidebarNav.d.ts +2 -0
  403. package/dist/components/user-dashboard/UserSidebarNav.d.ts.map +1 -0
  404. package/dist/components/user-dashboard/UserSidebarNav.js +68 -0
  405. package/dist/dashboard/action-buttons.d.ts +17 -0
  406. package/dist/dashboard/action-buttons.d.ts.map +1 -0
  407. package/dist/dashboard/action-buttons.js +22 -0
  408. package/dist/dashboard/app-sidebar.d.ts +3 -0
  409. package/dist/dashboard/app-sidebar.d.ts.map +1 -0
  410. package/dist/dashboard/app-sidebar.js +61 -0
  411. package/dist/dashboard/card-header.d.ts +11 -0
  412. package/dist/dashboard/card-header.d.ts.map +1 -0
  413. package/dist/dashboard/card-header.js +7 -0
  414. package/dist/dashboard/dashboard-components.d.ts +13 -0
  415. package/dist/dashboard/dashboard-components.d.ts.map +1 -0
  416. package/dist/dashboard/dashboard-components.js +10 -0
  417. package/dist/dashboard/data-table.d.ts +24 -0
  418. package/dist/dashboard/data-table.d.ts.map +1 -0
  419. package/dist/dashboard/data-table.js +88 -0
  420. package/dist/dashboard/nav-main.d.ts +9 -0
  421. package/dist/dashboard/nav-main.d.ts.map +1 -0
  422. package/dist/dashboard/nav-main.js +9 -0
  423. package/dist/dashboard/nav-secondary.d.ts +10 -0
  424. package/dist/dashboard/nav-secondary.d.ts.map +1 -0
  425. package/dist/dashboard/nav-secondary.js +6 -0
  426. package/dist/dashboard/stats-card.d.ts +6 -0
  427. package/dist/dashboard/stats-card.d.ts.map +1 -0
  428. package/dist/dashboard/stats-card.js +5 -0
  429. package/dist/dashboard/table.d.ts +11 -0
  430. package/dist/dashboard/table.d.ts.map +1 -0
  431. package/dist/dashboard/table.js +21 -0
  432. package/dist/header/mobile-nav-item.d.ts +9 -0
  433. package/dist/header/mobile-nav-item.d.ts.map +1 -0
  434. package/dist/header/mobile-nav-item.js +6 -0
  435. package/dist/header/mobile-navbar.d.ts +5 -0
  436. package/dist/header/mobile-navbar.d.ts.map +1 -0
  437. package/dist/header/mobile-navbar.js +30 -0
  438. package/dist/header/nav-item.d.ts +10 -0
  439. package/dist/header/nav-item.d.ts.map +1 -0
  440. package/dist/header/nav-item.js +6 -0
  441. package/dist/index.d.ts +85 -0
  442. package/dist/index.d.ts.map +1 -0
  443. package/dist/index.js +85 -0
  444. package/dist/layout/AppProviders.d.ts +5 -0
  445. package/dist/layout/AppProviders.d.ts.map +1 -0
  446. package/dist/layout/AppProviders.js +11 -0
  447. package/dist/layout/PublicShell.d.ts +5 -0
  448. package/dist/layout/PublicShell.d.ts.map +1 -0
  449. package/dist/layout/PublicShell.js +5 -0
  450. package/dist/main/footer.d.ts +6 -0
  451. package/dist/main/footer.d.ts.map +1 -0
  452. package/dist/main/footer.js +58 -0
  453. package/dist/main/navbar.d.ts +6 -0
  454. package/dist/main/navbar.d.ts.map +1 -0
  455. package/dist/main/navbar.js +130 -0
  456. package/dist/main/paginationBar.d.ts +5 -0
  457. package/dist/main/paginationBar.d.ts.map +1 -0
  458. package/dist/main/paginationBar.js +28 -0
  459. package/dist/main/portfolio/portfolioItem.d.ts +7 -0
  460. package/dist/main/portfolio/portfolioItem.d.ts.map +1 -0
  461. package/dist/main/portfolio/portfolioItem.js +7 -0
  462. package/dist/main/portfolio/portfolioPopup.d.ts +8 -0
  463. package/dist/main/portfolio/portfolioPopup.d.ts.map +1 -0
  464. package/dist/main/portfolio/portfolioPopup.js +71 -0
  465. package/dist/main/review-page.d.ts +14 -0
  466. package/dist/main/review-page.d.ts.map +1 -0
  467. package/dist/main/review-page.js +209 -0
  468. package/dist/misc/IosPwaNavBar.d.ts +8 -0
  469. package/dist/misc/IosPwaNavBar.d.ts.map +1 -0
  470. package/dist/misc/IosPwaNavBar.js +25 -0
  471. package/dist/misc/accordion.d.ts +7 -0
  472. package/dist/misc/accordion.d.ts.map +1 -0
  473. package/dist/misc/accordion.js +18 -0
  474. package/dist/misc/alert-dialog.d.ts +14 -0
  475. package/dist/misc/alert-dialog.d.ts.map +1 -0
  476. package/dist/misc/alert-dialog.js +39 -0
  477. package/dist/misc/alert.d.ts +9 -0
  478. package/dist/misc/alert.d.ts.map +1 -0
  479. package/dist/misc/alert.js +24 -0
  480. package/dist/misc/alertdialogclaude.d.ts +15 -0
  481. package/dist/misc/alertdialogclaude.d.ts.map +1 -0
  482. package/dist/misc/alertdialogclaude.js +151 -0
  483. package/dist/misc/avatar.d.ts +6 -0
  484. package/dist/misc/avatar.d.ts.map +1 -0
  485. package/dist/misc/avatar.js +14 -0
  486. package/dist/misc/badge.d.ts +9 -0
  487. package/dist/misc/badge.d.ts.map +1 -0
  488. package/dist/misc/badge.js +22 -0
  489. package/dist/misc/button.d.ts +13 -0
  490. package/dist/misc/button.d.ts.map +1 -0
  491. package/dist/misc/button.js +59 -0
  492. package/dist/misc/card.d.ts +9 -0
  493. package/dist/misc/card.d.ts.map +1 -0
  494. package/dist/misc/card.js +21 -0
  495. package/dist/misc/carousel.d.ts +20 -0
  496. package/dist/misc/carousel.d.ts.map +1 -0
  497. package/dist/misc/carousel.js +99 -0
  498. package/dist/misc/checkbox.d.ts +4 -0
  499. package/dist/misc/checkbox.d.ts.map +1 -0
  500. package/dist/misc/checkbox.js +9 -0
  501. package/dist/misc/command.d.ts +18 -0
  502. package/dist/misc/command.d.ts.map +1 -0
  503. package/dist/misc/command.js +34 -0
  504. package/dist/misc/datepicker.d.ts +15 -0
  505. package/dist/misc/datepicker.d.ts.map +1 -0
  506. package/dist/misc/datepicker.js +221 -0
  507. package/dist/misc/dialog.d.ts +13 -0
  508. package/dist/misc/dialog.d.ts.map +1 -0
  509. package/dist/misc/dialog.js +36 -0
  510. package/dist/misc/discount-strategy-editor.d.ts +22 -0
  511. package/dist/misc/discount-strategy-editor.d.ts.map +1 -0
  512. package/dist/misc/discount-strategy-editor.js +61 -0
  513. package/dist/misc/document-upload-button.d.ts +12 -0
  514. package/dist/misc/document-upload-button.d.ts.map +1 -0
  515. package/dist/misc/document-upload-button.js +27 -0
  516. package/dist/misc/dropdown-menu.d.ts +25 -0
  517. package/dist/misc/dropdown-menu.d.ts.map +1 -0
  518. package/dist/misc/dropdown-menu.js +51 -0
  519. package/dist/misc/empty-state.d.ts +10 -0
  520. package/dist/misc/empty-state.d.ts.map +1 -0
  521. package/dist/misc/empty-state.js +5 -0
  522. package/dist/misc/faq.d.ts +5 -0
  523. package/dist/misc/faq.d.ts.map +1 -0
  524. package/dist/misc/faq.js +5 -0
  525. package/dist/misc/file-preview.d.ts +9 -0
  526. package/dist/misc/file-preview.d.ts.map +1 -0
  527. package/dist/misc/file-preview.js +76 -0
  528. package/dist/misc/filter.d.ts +12 -0
  529. package/dist/misc/filter.d.ts.map +1 -0
  530. package/dist/misc/filter.js +44 -0
  531. package/dist/misc/filterBar.d.ts +39 -0
  532. package/dist/misc/filterBar.d.ts.map +1 -0
  533. package/dist/misc/filterBar.js +384 -0
  534. package/dist/misc/form.d.ts +25 -0
  535. package/dist/misc/form.d.ts.map +1 -0
  536. package/dist/misc/form.js +60 -0
  537. package/dist/misc/image-compressor.d.ts +29 -0
  538. package/dist/misc/image-compressor.d.ts.map +1 -0
  539. package/dist/misc/image-compressor.js +70 -0
  540. package/dist/misc/image-cropper.d.ts +10 -0
  541. package/dist/misc/image-cropper.d.ts.map +1 -0
  542. package/dist/misc/image-cropper.js +44 -0
  543. package/dist/misc/input.d.ts +7 -0
  544. package/dist/misc/input.d.ts.map +1 -0
  545. package/dist/misc/input.js +11 -0
  546. package/dist/misc/label.d.ts +4 -0
  547. package/dist/misc/label.d.ts.map +1 -0
  548. package/dist/misc/label.js +8 -0
  549. package/dist/misc/line-carousel.d.ts +9 -0
  550. package/dist/misc/line-carousel.d.ts.map +1 -0
  551. package/dist/misc/line-carousel.js +5 -0
  552. package/dist/misc/listing-wishlist-button.d.ts +13 -0
  553. package/dist/misc/listing-wishlist-button.d.ts.map +1 -0
  554. package/dist/misc/listing-wishlist-button.js +42 -0
  555. package/dist/misc/location/leafletMap.d.ts +8 -0
  556. package/dist/misc/location/leafletMap.d.ts.map +1 -0
  557. package/dist/misc/location/leafletMap.js +62 -0
  558. package/dist/misc/location/locationPicker.d.ts +5 -0
  559. package/dist/misc/location/locationPicker.d.ts.map +1 -0
  560. package/dist/misc/location/locationPicker.js +95 -0
  561. package/dist/misc/location-autocomplete.d.ts +28 -0
  562. package/dist/misc/location-autocomplete.d.ts.map +1 -0
  563. package/dist/misc/location-autocomplete.js +121 -0
  564. package/dist/misc/newsLetter.d.ts +3 -0
  565. package/dist/misc/newsLetter.d.ts.map +1 -0
  566. package/dist/misc/newsLetter.js +41 -0
  567. package/dist/misc/non-modal-multi-select.d.ts +21 -0
  568. package/dist/misc/non-modal-multi-select.d.ts.map +1 -0
  569. package/dist/misc/non-modal-multi-select.js +25 -0
  570. package/dist/misc/non-modal-select.d.ts +22 -0
  571. package/dist/misc/non-modal-select.d.ts.map +1 -0
  572. package/dist/misc/non-modal-select.js +23 -0
  573. package/dist/misc/notification.d.ts +7 -0
  574. package/dist/misc/notification.d.ts.map +1 -0
  575. package/dist/misc/notification.js +157 -0
  576. package/dist/misc/pagination.d.ts +15 -0
  577. package/dist/misc/pagination.d.ts.map +1 -0
  578. package/dist/misc/pagination.js +30 -0
  579. package/dist/misc/password-eye.d.ts +7 -0
  580. package/dist/misc/password-eye.d.ts.map +1 -0
  581. package/dist/misc/password-eye.js +7 -0
  582. package/dist/misc/popover.d.ts +7 -0
  583. package/dist/misc/popover.d.ts.map +1 -0
  584. package/dist/misc/popover.js +17 -0
  585. package/dist/misc/pricing-strategy-editor.d.ts +17 -0
  586. package/dist/misc/pricing-strategy-editor.d.ts.map +1 -0
  587. package/dist/misc/pricing-strategy-editor.js +80 -0
  588. package/dist/misc/progress.d.ts +4 -0
  589. package/dist/misc/progress.d.ts.map +1 -0
  590. package/dist/misc/progress.js +8 -0
  591. package/dist/misc/pwa-install-button.d.ts +9 -0
  592. package/dist/misc/pwa-install-button.d.ts.map +1 -0
  593. package/dist/misc/pwa-install-button.js +160 -0
  594. package/dist/misc/rental-tile.d.ts +6 -0
  595. package/dist/misc/rental-tile.d.ts.map +1 -0
  596. package/dist/misc/rental-tile.js +33 -0
  597. package/dist/misc/scroll-area.d.ts +5 -0
  598. package/dist/misc/scroll-area.d.ts.map +1 -0
  599. package/dist/misc/scroll-area.js +13 -0
  600. package/dist/misc/searchBar.d.ts +6 -0
  601. package/dist/misc/searchBar.d.ts.map +1 -0
  602. package/dist/misc/searchBar.js +89 -0
  603. package/dist/misc/searchBox.d.ts +13 -0
  604. package/dist/misc/searchBox.d.ts.map +1 -0
  605. package/dist/misc/searchBox.js +63 -0
  606. package/dist/misc/select.d.ts +13 -0
  607. package/dist/misc/select.d.ts.map +1 -0
  608. package/dist/misc/select.js +38 -0
  609. package/dist/misc/separator.d.ts +4 -0
  610. package/dist/misc/separator.d.ts.map +1 -0
  611. package/dist/misc/separator.js +8 -0
  612. package/dist/misc/share.d.ts +5 -0
  613. package/dist/misc/share.d.ts.map +1 -0
  614. package/dist/misc/share.js +157 -0
  615. package/dist/misc/sheet.d.ts +13 -0
  616. package/dist/misc/sheet.d.ts.map +1 -0
  617. package/dist/misc/sheet.js +40 -0
  618. package/dist/misc/sidebar.d.ts +70 -0
  619. package/dist/misc/sidebar.d.ts.map +1 -0
  620. package/dist/misc/sidebar.js +212 -0
  621. package/dist/misc/skeleton.d.ts +38 -0
  622. package/dist/misc/skeleton.d.ts.map +1 -0
  623. package/dist/misc/skeleton.js +43 -0
  624. package/dist/misc/slider.d.ts +5 -0
  625. package/dist/misc/slider.d.ts.map +1 -0
  626. package/dist/misc/slider.js +11 -0
  627. package/dist/misc/starRating.d.ts +4 -0
  628. package/dist/misc/starRating.d.ts.map +1 -0
  629. package/dist/misc/starRating.js +11 -0
  630. package/dist/misc/stateCard.d.ts +7 -0
  631. package/dist/misc/stateCard.d.ts.map +1 -0
  632. package/dist/misc/stateCard.js +21 -0
  633. package/dist/misc/step-progress.d.ts +16 -0
  634. package/dist/misc/step-progress.d.ts.map +1 -0
  635. package/dist/misc/step-progress.js +40 -0
  636. package/dist/misc/switch.d.ts +5 -0
  637. package/dist/misc/switch.d.ts.map +1 -0
  638. package/dist/misc/switch.js +8 -0
  639. package/dist/misc/tabs.d.ts +8 -0
  640. package/dist/misc/tabs.d.ts.map +1 -0
  641. package/dist/misc/tabs.js +17 -0
  642. package/dist/misc/tag-filter-input.d.ts +16 -0
  643. package/dist/misc/tag-filter-input.d.ts.map +1 -0
  644. package/dist/misc/tag-filter-input.js +26 -0
  645. package/dist/misc/textarea.d.ts +4 -0
  646. package/dist/misc/textarea.d.ts.map +1 -0
  647. package/dist/misc/textarea.js +6 -0
  648. package/dist/misc/tile.d.ts +4 -0
  649. package/dist/misc/tile.d.ts.map +1 -0
  650. package/dist/misc/tile.js +45 -0
  651. package/dist/misc/time-select.d.ts +14 -0
  652. package/dist/misc/time-select.d.ts.map +1 -0
  653. package/dist/misc/time-select.js +13 -0
  654. package/dist/misc/tooltip.d.ts +8 -0
  655. package/dist/misc/tooltip.d.ts.map +1 -0
  656. package/dist/misc/tooltip.js +17 -0
  657. package/dist/misc/whatsapp-help.d.ts +9 -0
  658. package/dist/misc/whatsapp-help.d.ts.map +1 -0
  659. package/dist/misc/whatsapp-help.js +13 -0
  660. package/dist/misc/wizard-footer.d.ts +18 -0
  661. package/dist/misc/wizard-footer.d.ts.map +1 -0
  662. package/dist/misc/wizard-footer.js +11 -0
  663. package/dist/profile/socialLink.d.ts +10 -0
  664. package/dist/profile/socialLink.d.ts.map +1 -0
  665. package/dist/profile/socialLink.js +66 -0
  666. package/dist/utils/permissions.d.ts +7 -0
  667. package/dist/utils/permissions.d.ts.map +1 -0
  668. package/dist/utils/permissions.js +38 -0
  669. package/package.json +93 -0
@@ -0,0 +1,425 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { chatActorKey, isSameChatActor, } from "@myrjfa/state/dist/lib/models/chat";
4
+ import { Check, CheckCheck, Reply, MoreHorizontal, Pencil as PencilIcon, Trash2, PlusCircleIcon, Smile, EyeIcon, Copy, ExternalLink, Phone, MessageCircle, Pin, Star, Flag, ShieldX, FileText } from "lucide-react";
5
+ import dynamic from "next/dynamic";
6
+ import { Avatar, AvatarFallback, AvatarImage } from "../misc/avatar";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../misc/dropdown-menu";
8
+ import { Button } from "../misc/button";
9
+ import { useEffect, useState, useRef, useCallback, useMemo } from "react";
10
+ import EmojiPicker from 'emoji-picker-react';
11
+ import { chatApi } from "@myrjfa/state/dist/lib/actions/chat";
12
+ import { EditPollDialog } from "./dialogs/EditPollDialog";
13
+ import { PollVotersDialog } from "./dialogs/PollVotersDialog";
14
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../misc/dialog";
15
+ const MapPreview = dynamic(() => import("../components/location/MapPreview"), { ssr: false });
16
+ function AudioMessagePlayer({ src, messageId }) {
17
+ const audioRef = useRef(null);
18
+ const [speed, setSpeed] = useState(1);
19
+ const storageKey = `trippeaze:voice-position:${messageId}`;
20
+ useEffect(() => {
21
+ if (audioRef.current)
22
+ audioRef.current.playbackRate = speed;
23
+ }, [speed]);
24
+ return (_jsxs("div", { className: "flex min-w-56 items-center gap-2 rounded-lg bg-black/5 p-2 dark:bg-white/5", children: [_jsx("audio", { ref: audioRef, src: src, controls: true, className: "h-9 min-w-0 flex-1", onLoadedMetadata: (event) => {
25
+ const saved = Number(localStorage.getItem(storageKey) || 0);
26
+ if (saved > 0 && saved < event.currentTarget.duration)
27
+ event.currentTarget.currentTime = saved;
28
+ }, onTimeUpdate: (event) => localStorage.setItem(storageKey, String(event.currentTarget.currentTime)), onEnded: () => localStorage.removeItem(storageKey) }), _jsxs("button", { type: "button", className: "rounded-full bg-white/70 px-2 py-1 text-[11px] font-semibold text-slate-700 shadow-sm", onClick: () => setSpeed((current) => current === 1 ? 1.5 : current === 1.5 ? 2 : 1), "aria-label": "Change voice-note playback speed", children: [speed, "\u00D7"] })] }));
29
+ }
30
+ function coordinatesFromMapUrl(value) {
31
+ try {
32
+ const url = new URL(value);
33
+ if (!/(^|\.)google\.[^/]+$/i.test(url.hostname) && !/googleusercontent\.com$/i.test(url.hostname))
34
+ return null;
35
+ const coordinates = url.searchParams.get("q") || url.searchParams.get("query") || url.searchParams.get("ll") || "";
36
+ const match = coordinates.match(/^\s*(-?\d+(?:\.\d+)?)\s*,\s*(-?\d+(?:\.\d+)?)\s*$/);
37
+ if (!match)
38
+ return null;
39
+ const latitude = Number(match[1]);
40
+ const longitude = Number(match[2]);
41
+ return Number.isFinite(latitude) && Number.isFinite(longitude) ? { latitude, longitude } : null;
42
+ }
43
+ catch (_a) {
44
+ return null;
45
+ }
46
+ }
47
+ function browserUrl(value) {
48
+ return /^https?:\/\//i.test(value) ? value : `https://${value}`;
49
+ }
50
+ const QUICK_REACTIONS = [
51
+ { emoji: "❤️", label: "love" },
52
+ { emoji: "👍", label: "like" },
53
+ { emoji: "👎", label: "dislike" },
54
+ { emoji: "✅", label: "check" },
55
+ { emoji: "😠", label: "angry" },
56
+ { emoji: "😢", label: "sad" },
57
+ ];
58
+ export function MessageBubble({ message, participants, currentUserId, currentActorModel, showSender, senderProfilePic, onEdit, onDelete, onReply, onReactionAdd, onReactionRemove, onScrollToReply, onVote, onEditPoll, onStar, onPin, isGroupAdmin, onModerate, onReport, }) {
59
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60
+ const [showQuickReactions, setShowQuickReactions] = useState(false);
61
+ const [showReactionPicker, setShowReactionPicker] = useState(false);
62
+ const [showActionMenu, setShowActionMenu] = useState(false);
63
+ const [showMobileMenu, setShowMobileMenu] = useState(false);
64
+ const [poll, setPoll] = useState(null);
65
+ const [showPollVoters, setShowPollVoters] = useState(false);
66
+ const [showPollEditor, setShowPollEditor] = useState(false);
67
+ const [selectedPhone, setSelectedPhone] = useState(null);
68
+ const [phoneMatches, setPhoneMatches] = useState([]);
69
+ const [isSearchingPhone, setIsSearchingPhone] = useState(false);
70
+ const reactionRef = useRef(null);
71
+ const actionRef = useRef(null);
72
+ const mobileMenuRef = useRef(null);
73
+ const mobilePopupRef = useRef(null);
74
+ const messageBubbleRef = useRef(null);
75
+ const currentActor = { actorId: currentUserId, actorModel: currentActorModel };
76
+ const senderActor = { actorId: message.senderId, actorModel: message.senderModel };
77
+ const isOwn = isSameChatActor(senderActor, currentActor);
78
+ const copyText = async (value) => {
79
+ try {
80
+ await navigator.clipboard.writeText(value);
81
+ }
82
+ catch ( /* Clipboard access can be unavailable in embedded browsers. */_a) { /* Clipboard access can be unavailable in embedded browsers. */ }
83
+ };
84
+ const participantLabel = (actorId, actorModel) => {
85
+ const participant = participants.find((item) => actorModel
86
+ ? isSameChatActor(item, { actorId, actorModel })
87
+ : item.actorId === actorId);
88
+ return (participant === null || participant === void 0 ? void 0 : participant.displayName) || (participant === null || participant === void 0 ? void 0 : participant.username) || "Trippeaze member";
89
+ };
90
+ const recipientKeys = participants
91
+ .filter((participant) => !isSameChatActor(participant, senderActor))
92
+ .map(chatActorKey);
93
+ const hasReceiptsFromEveryRecipient = (receipts = []) => {
94
+ const receiptKeys = new Set(receipts.map(chatActorKey));
95
+ return recipientKeys.length > 0 &&
96
+ recipientKeys.every((recipientKey) => receiptKeys.has(recipientKey));
97
+ };
98
+ // In a group, blue means every other participant has read the message.
99
+ const hasBeenRead = isOwn && hasReceiptsFromEveryRecipient(message.readBy);
100
+ const hasBeenDelivered = isOwn && hasReceiptsFromEveryRecipient(message.deliveredTo || []);
101
+ const canEdit = isOwn && !message.isDeleted && Date.now() - new Date(message.createdAt).getTime() <= 60 * 60 * 1000;
102
+ const openEditor = () => {
103
+ if (message.type === "poll" && poll)
104
+ setShowPollEditor(true);
105
+ else
106
+ onEdit === null || onEdit === void 0 ? void 0 : onEdit(message);
107
+ };
108
+ useEffect(() => {
109
+ if (!selectedPhone) {
110
+ setPhoneMatches([]);
111
+ return;
112
+ }
113
+ let active = true;
114
+ setIsSearchingPhone(true);
115
+ void chatApi.searchParticipants(selectedPhone).then((results) => {
116
+ if (active)
117
+ setPhoneMatches(results);
118
+ }).catch(() => {
119
+ if (active)
120
+ setPhoneMatches([]);
121
+ }).finally(() => {
122
+ if (active)
123
+ setIsSearchingPhone(false);
124
+ });
125
+ return () => { active = false; };
126
+ }, [selectedPhone]);
127
+ useEffect(() => {
128
+ const pollId = message.content.referenceId;
129
+ if (message.type === "poll" && pollId) {
130
+ const fetchPoll = async () => {
131
+ const nextPoll = await chatApi.getPollById(pollId);
132
+ setPoll((current) => (current === null || current === void 0 ? void 0 : current._id) === (nextPoll === null || nextPoll === void 0 ? void 0 : nextPoll._id) && (current === null || current === void 0 ? void 0 : current.updatedAt) === (nextPoll === null || nextPoll === void 0 ? void 0 : nextPoll.updatedAt) ? current : nextPoll);
133
+ };
134
+ void fetchPoll();
135
+ return;
136
+ }
137
+ setPoll(null);
138
+ }, [message.type, message.content.referenceId]);
139
+ // Close reaction picker when clicking outside
140
+ useEffect(() => {
141
+ const handleClickOutside = (event) => {
142
+ if (reactionRef.current && !reactionRef.current.contains(event.target)) {
143
+ setShowQuickReactions(false);
144
+ setShowReactionPicker(false);
145
+ }
146
+ };
147
+ if (showQuickReactions || showReactionPicker) {
148
+ document.addEventListener("mousedown", handleClickOutside);
149
+ return () => {
150
+ document.removeEventListener("mousedown", handleClickOutside);
151
+ };
152
+ }
153
+ }, [showQuickReactions, showReactionPicker]);
154
+ // Close mobile menu when clicking outside
155
+ useEffect(() => {
156
+ const handleClickOutside = (event) => {
157
+ if (mobileMenuRef.current && !mobileMenuRef.current.contains(event.target)) {
158
+ setShowMobileMenu(false);
159
+ }
160
+ };
161
+ if (showMobileMenu) {
162
+ document.addEventListener("mousedown", handleClickOutside);
163
+ return () => {
164
+ document.removeEventListener("mousedown", handleClickOutside);
165
+ };
166
+ }
167
+ }, [showMobileMenu]);
168
+ // Position popup to stay within viewport and over message
169
+ useEffect(() => {
170
+ if (showMobileMenu && mobilePopupRef.current && messageBubbleRef.current) {
171
+ const popup = mobilePopupRef.current;
172
+ const messageBubble = messageBubbleRef.current;
173
+ const bubbleRect = messageBubble.getBoundingClientRect();
174
+ const popupRect = popup.getBoundingClientRect();
175
+ const viewportHeight = window.innerHeight;
176
+ const viewportWidth = window.innerWidth;
177
+ const padding = 8;
178
+ // Reset styles
179
+ popup.style.top = "auto";
180
+ popup.style.bottom = "auto";
181
+ popup.style.left = "auto";
182
+ popup.style.right = "auto";
183
+ popup.style.transform = "none";
184
+ // Position horizontally - prefer the side with more space
185
+ if (isOwn) {
186
+ // Message is on right, try to position popup on left of message
187
+ const spaceOnLeft = bubbleRect.left;
188
+ const popupWidth = 256; // w-64 = 16rem = 256px
189
+ if (spaceOnLeft > popupWidth + padding) {
190
+ // Enough space on left
191
+ popup.style.right = "100%";
192
+ popup.style.marginRight = "8px";
193
+ }
194
+ else {
195
+ // Not enough space, position on right but keep within viewport
196
+ popup.style.left = "100%";
197
+ popup.style.marginLeft = "8px";
198
+ // If it goes out of right edge, adjust
199
+ const rect = popup.getBoundingClientRect();
200
+ if (rect.right > viewportWidth - padding) {
201
+ popup.style.left = "auto";
202
+ popup.style.right = "0";
203
+ }
204
+ }
205
+ }
206
+ else {
207
+ // Message is on left, try to position popup on right of message
208
+ const spaceOnRight = viewportWidth - bubbleRect.right;
209
+ const popupWidth = 256; // w-64 = 16rem = 256px
210
+ if (spaceOnRight > popupWidth + padding) {
211
+ // Enough space on right
212
+ popup.style.left = "100%";
213
+ popup.style.marginLeft = "8px";
214
+ }
215
+ else {
216
+ // Not enough space, position on left but keep within viewport
217
+ popup.style.right = "100%";
218
+ popup.style.marginRight = "8px";
219
+ // If it goes out of left edge, adjust
220
+ const rect = popup.getBoundingClientRect();
221
+ if (rect.left < padding) {
222
+ popup.style.right = "auto";
223
+ popup.style.left = "0";
224
+ }
225
+ }
226
+ }
227
+ // Position vertically - center on message
228
+ popup.style.top = "50%";
229
+ popup.style.transform = "translateY(-50%)";
230
+ // Make sure it doesn't go out of bottom
231
+ setTimeout(() => {
232
+ const rect = popup.getBoundingClientRect();
233
+ if (rect.bottom > viewportHeight - padding) {
234
+ popup.style.top = "auto";
235
+ popup.style.bottom = "0";
236
+ popup.style.transform = "translateY(0)";
237
+ }
238
+ else if (rect.top < padding) {
239
+ popup.style.top = "0";
240
+ popup.style.bottom = "auto";
241
+ popup.style.transform = "translateY(0)";
242
+ }
243
+ }, 0);
244
+ }
245
+ }, [showMobileMenu, isOwn]);
246
+ if (message.type === "system" || message.type === "milestone" || message.type === "expense") {
247
+ return (_jsx("div", { className: "flex justify-center my-3", children: _jsx("div", { className: "bg-gray-100 dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-xs px-4 py-1.5 rounded-full max-w-xs text-center shadow-sm", children: message.content.text }) }));
248
+ }
249
+ const time = new Date(message.createdAt).toLocaleTimeString([], {
250
+ hour: "2-digit",
251
+ minute: "2-digit",
252
+ });
253
+ const createMentionRegex = useCallback((participants) => {
254
+ const usernames = participants
255
+ .map((participant) => participant.username)
256
+ .filter((username) => Boolean(username));
257
+ // Escape special regex characters in usernames to ensure they are matched literally
258
+ const escapedUsernames = usernames.map(username => username.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
259
+ // Sort by length descending to match longer names first, to prevent partial matches
260
+ escapedUsernames.sort((a, b) => b.length - a.length);
261
+ if (escapedUsernames.length === 0) {
262
+ return null;
263
+ }
264
+ // Match '@' followed by an exact username, then a non-word character or end of string.
265
+ // The `(?=\\s|$|[,.!?;:])` part ensures the mention is followed by a space, end of string, or common punctuation.
266
+ // This regex is designed to be as specific as possible to avoid false positives while allowing spaces/symbols.
267
+ const pattern = `@(${escapedUsernames.join('|')})(?=\\s|$|[,.!?;:])`;
268
+ return new RegExp(pattern, 'gi');
269
+ }, []);
270
+ const mentionRegex = useMemo(() => createMentionRegex(participants), [participants, createMentionRegex]);
271
+ const renderTextWithLinks = useCallback((text) => {
272
+ const elements = [];
273
+ let lastIndex = 0;
274
+ // Store all matches with their type and original value
275
+ const allMatches = [];
276
+ // Define regexes inside useCallback to avoid re-creation on every render if they don't depend on props
277
+ // Match the browser-style domains users expect to open from an address bar.
278
+ const linkRegex = /https?:\/\/[^\s<>()]+|(?<![@\w.-])(?:www\.)?(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,}(?:[/?#][^\s<>()]*)?/gi;
279
+ const emailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi; // Added 'i' flag
280
+ // Treat 8–13 digit sequences as phone numbers even when users insert spaces or dashes.
281
+ const phoneRegex = /(?<!\d)(\+?\d(?:[\s-]?\d){7,12})(?!\d)/g;
282
+ // Find links
283
+ for (const match of text.matchAll(linkRegex)) {
284
+ if (match.index !== undefined) {
285
+ allMatches.push({ index: match.index, length: match[0].length, type: "link", value: match[0] });
286
+ }
287
+ }
288
+ // Find emails
289
+ for (const match of text.matchAll(emailRegex)) {
290
+ if (match.index !== undefined) {
291
+ allMatches.push({ index: match.index, length: match[0].length, type: "email", value: match[0] });
292
+ }
293
+ }
294
+ // Find phones
295
+ for (const match of text.matchAll(phoneRegex)) {
296
+ if (match.index !== undefined) {
297
+ allMatches.push({ index: match.index, length: match[0].length, type: "phone", value: match[0] });
298
+ }
299
+ }
300
+ // Find mentions
301
+ if (mentionRegex) {
302
+ for (const match of text.matchAll(mentionRegex)) {
303
+ if (match.index !== undefined) {
304
+ allMatches.push({ index: match.index, length: match[0].length, type: "mention", value: match[0] });
305
+ }
306
+ }
307
+ }
308
+ // Sort all matches by their starting index
309
+ allMatches.sort((a, b) => a.index - b.index);
310
+ for (const match of allMatches) {
311
+ // A number inside a URL/email must remain part of that higher-priority match.
312
+ if (match.index < lastIndex)
313
+ continue;
314
+ // Add preceding text
315
+ if (match.index > lastIndex) {
316
+ elements.push(text.substring(lastIndex, match.index));
317
+ }
318
+ // Add the matched element
319
+ if (match.type === "link") {
320
+ const url = browserUrl(match.value);
321
+ elements.push(_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "underline hover:opacity-80 break-all text-indigo-500", children: match.value }) }), _jsxs(DropdownMenuContent, { align: "start", className: "w-36", children: [_jsxs(DropdownMenuItem, { onClick: () => window.open(url, "_blank", "noopener,noreferrer"), children: [_jsx(ExternalLink, { className: "mr-2 h-4 w-4" }), "Visit URL"] }), _jsxs(DropdownMenuItem, { onClick: () => void copyText(url), children: [_jsx(Copy, { className: "mr-2 h-4 w-4" }), "Copy URL"] })] })] }, `link-${match.index}`));
322
+ }
323
+ else if (match.type === "email") {
324
+ elements.push(_jsx("a", { href: `mailto:${match.value}`, className: "underline hover:opacity-80 break-all text-indigo-500", children: match.value }, `email-${match.index}`));
325
+ }
326
+ else if (match.type === "phone") {
327
+ const phone = match.value.replace(/[\s-]/g, "");
328
+ elements.push(_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "underline hover:opacity-80 break-all text-indigo-200", children: match.value }) }), _jsxs(DropdownMenuContent, { align: "start", className: "w-36", children: [_jsxs(DropdownMenuItem, { onClick: () => { window.location.href = `tel:${phone}`; }, children: [_jsx(Phone, { className: "mr-2 h-4 w-4" }), "Call"] }), _jsxs(DropdownMenuItem, { onClick: () => setSelectedPhone(phone), children: [_jsx(MessageCircle, { className: "mr-2 h-4 w-4" }), "Message"] }), _jsxs(DropdownMenuItem, { onClick: () => void copyText(phone), children: [_jsx(Copy, { className: "mr-2 h-4 w-4" }), "Copy"] })] })] }, `phone-${match.index}`));
329
+ }
330
+ else if (match.type === "mention") {
331
+ // The regex already ensures it's a valid participant userId
332
+ elements.push(_jsx("a", { href: `/chat?u=${match.value.substring(1)}`, className: "underline hover:opacity-80 break-all text-indigo-200", children: match.value }, `mention-${match.index}`));
333
+ }
334
+ lastIndex = match.index + match.length;
335
+ }
336
+ // Add any remaining text
337
+ if (lastIndex < text.length) {
338
+ elements.push(text.substring(lastIndex));
339
+ }
340
+ return elements;
341
+ }, [mentionRegex]);
342
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { id: `message-${message._id}`, className: `flex mb-2 ${isOwn ? "justify-end" : "justify-start"}`, children: [!isOwn && (_jsxs(Avatar, { className: "w-8 h-8 mr-2 mt-1 flex-shrink-0", children: [_jsx(AvatarImage, { src: senderProfilePic }), _jsx(AvatarFallback, { children: participantLabel(message.senderId, message.senderModel).charAt(0).toUpperCase() })] })), _jsxs("div", { className: `flex group items-end gap-1 ${isOwn ? "flex-row-reverse" : "flex-row"}`, children: [_jsxs("div", { className: `max-w-xs sm:max-w-md md:max-w-lg flex flex-col ${isOwn ? "items-end" : "items-start"}`, ref: messageBubbleRef, children: [showSender && !isOwn && (_jsx("span", { className: "text-xs font-medium text-teal-600 dark:text-teal-400 ml-1 mb-0.5", children: participantLabel(message.senderId, message.senderModel) })), message.replyTo && (_jsxs(Button, { onClick: () => onScrollToReply === null || onScrollToReply === void 0 ? void 0 : onScrollToReply(message.replyTo._id), className: `text-xs mb-2 px-3 py-2 rounded-lg border-l-2 max-w-full text-left hover:opacity-80 transition-opacity ${isOwn
343
+ ? "bg-opacity-50 bg-teal-600/40 border-teal-300 text-teal-100"
344
+ : "bg-gray-200 dark:bg-gray-700 border-gray-400 dark:border-gray-600 text-gray-600 dark:text-gray-300"}`, children: [_jsxs("div", { className: "font-semibold text-xs truncate", children: ["\u21B3 ", participantLabel((_a = message.replyTo) === null || _a === void 0 ? void 0 : _a.senderId, (_b = message.replyTo) === null || _b === void 0 ? void 0 : _b.senderModel)] }), _jsx("div", { className: "truncate text-gray-500 dark:text-gray-400 text-xs", children: ((_e = (_d = (_c = message.replyTo) === null || _c === void 0 ? void 0 : _c.content) === null || _d === void 0 ? void 0 : _d.text) === null || _e === void 0 ? void 0 : _e.substring(0, 50)) || "Media/Attachment" })] })), _jsxs("div", { className: `px-4 py-2.5 rounded-2xl relative shadow-sm backdrop-blur-md
345
+ ${isOwn
346
+ ? "bg-gradient-to-r from-teal-500/70 to-teal-600/70 text-white rounded-br-md border border-teal-400/30"
347
+ : "bg-white dark:bg-gray-800 text-gray-900 dark:text-white rounded-bl-md border border-gray-100 dark:border-gray-700"}
348
+ ${message.isDeleted ? "opacity-60 italic" : ""}`, onContextMenu: (event) => {
349
+ event.preventDefault();
350
+ setShowActionMenu(true);
351
+ }, children: [message.content.media && message.content.media.length > 0 && (_jsx("div", { className: "mb-2 space-y-1", children: message.content.media.map((m, i) => (_jsx("div", { children: m.mimeType.startsWith("image/") ? (_jsx("img", { src: m.url, alt: m.name, className: "rounded-lg max-w-full max-h-64 object-cover" })) : m.mimeType.startsWith("audio/") ? (_jsx(AudioMessagePlayer, { src: m.url, messageId: `${message._id}:${i}` })) : m.mimeType.startsWith("video/") ? (_jsx("video", { src: m.url, poster: m.thumbnailUrl, controls: true, preload: "metadata", className: "max-h-72 w-full rounded-lg bg-black" })) : (_jsxs("a", { href: m.url, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-3 rounded-lg border border-black/10 bg-white/80 p-3 text-sm text-slate-800 shadow-sm dark:bg-slate-900/70 dark:text-white", children: [_jsx(FileText, { className: "h-8 w-8 shrink-0 text-purple-500" }), _jsxs("span", { className: "min-w-0 truncate", children: ["\uD83D\uDCCE ", m.name] })] })) }, i))) })), _jsx("p", { className: "text-[15px] leading-relaxed whitespace-pre-wrap break-words", children: renderTextWithLinks((_f = message.content.text) !== null && _f !== void 0 ? _f : "") }), ((_g = message.content.linkPreview) === null || _g === void 0 ? void 0 : _g.url) && (() => {
352
+ const preview = message.content.linkPreview;
353
+ const mapCoordinates = coordinatesFromMapUrl(preview.url);
354
+ return (_jsxs("a", { href: preview.url, target: "_blank", rel: "noopener noreferrer", className: "mt-3 block overflow-hidden rounded-xl border border-black/10 bg-white/90 text-slate-900 shadow-sm transition-opacity hover:opacity-90 dark:border-white/10 dark:bg-slate-900/80 dark:text-white", children: [mapCoordinates ? (_jsx("div", { className: "h-28 w-full overflow-hidden bg-slate-100", children: _jsx(MapPreview, { latitude: mapCoordinates.latitude, longitude: mapCoordinates.longitude }) })) : preview.image ? (_jsx("img", { src: preview.image, alt: "", className: "h-32 w-full object-cover", onError: (event) => { event.currentTarget.style.display = "none"; } })) : null, _jsxs("div", { className: "p-3", children: [_jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500", children: preview.siteName || new URL(preview.url).hostname }), _jsx("p", { className: "mt-1 line-clamp-2 text-sm font-semibold", children: preview.title || preview.url }), preview.description && _jsx("p", { className: "mt-1 line-clamp-2 text-xs text-slate-600 dark:text-slate-300", children: preview.description })] })] }));
355
+ })(), poll && (_jsxs("div", { className: "mt-3 space-y-2 min-w-[200px]", children: [poll.options.map((opt, i) => {
356
+ const votes = poll.votes || [];
357
+ const optionVotes = votes.filter((v) => v.optionIndex === i);
358
+ const hasVoted = optionVotes.some((vote) => isSameChatActor(vote, currentActor));
359
+ const percentage = votes.length > 0 ? (optionVotes.length / votes.length) * 100 : 0;
360
+ return (_jsxs("div", { className: `relative overflow-hidden rounded-lg border p-2 cursor-pointer transition-all active:scale-[0.98] ${hasVoted
361
+ ? "border-indigo-500 bg-indigo-50/50 dark:bg-indigo-900/30"
362
+ : "border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 bg-indigo-50/50 dark:bg-indigo-900/30"}
363
+ }`, onClick: async () => {
364
+ const updatedPoll = await (onVote === null || onVote === void 0 ? void 0 : onVote(poll._id, i));
365
+ if (updatedPoll)
366
+ setPoll(updatedPoll);
367
+ }, children: [_jsx("div", { className: "absolute inset-0 bg-indigo-400/10 pointer-events-none transition-all duration-500", style: { width: `${percentage}%` } }), _jsxs("div", { className: "relative flex justify-between items-center text-sm", children: [_jsx("span", { className: `${hasVoted ? "font-semibold text-indigo-700 dark:text-indigo-300" : "text-gray-700 dark:text-gray-200"}`, children: opt.text }), _jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: optionVotes.length > 0 && `${optionVotes.length} (${Math.round(percentage)}%)` })] })] }, i));
368
+ }), _jsxs("div", { className: "text-[10px] text-gray-400 dark:text-gray-500 mt-1", children: [((_h = poll.votes) === null || _h === void 0 ? void 0 : _h.length) || 0, " votes \u2022 ", poll.allowMultiple ? "Multiple choice" : "Single choice"] })] })), _jsxs("div", { className: `flex items-center justify-end gap-1 mt-1 ${isOwn ? "text-teal-200" : "text-gray-400"}`, children: [message.isEdited && (_jsx(PencilIcon, { className: "w-3 h-3" })), _jsx("span", { className: "text-[10px]", children: time }), isOwn && (hasBeenRead ? (_jsx(CheckCheck, { className: "w-4 h-4 text-sky-300" })) : hasBeenDelivered ? (_jsx(CheckCheck, { className: "w-4 h-4 text-slate-200" })) : (_jsx(Check, { className: "w-4 h-4" })))] })] }), message.reactions && message.reactions.length > 0 && (_jsx("div", { className: `flex gap-1 mt-2 ${isOwn ? "justify-end" : "justify-start"} px-2`, children: Object.entries(message.reactions.reduce((acc, r) => {
369
+ acc[r.emoji] = (acc[r.emoji] || 0) + 1;
370
+ return acc;
371
+ }, {})).map(([emoji, count]) => (_jsxs("span", { className: "bg-gray-100 dark:bg-gray-700 rounded-full px-2 py-0.5 text-xs shadow-sm hover:bg-gray-200 dark:hover:bg-gray-600 cursor-pointer transition-colors", onClick: () => {
372
+ if (message.reactions.find((reaction) => reaction.emoji === emoji &&
373
+ isSameChatActor(reaction, currentActor))) {
374
+ onReactionRemove === null || onReactionRemove === void 0 ? void 0 : onReactionRemove(message._id);
375
+ }
376
+ }, children: [emoji, " ", count > 1 && count] }, emoji))) }))] }), !message.isDeleted && (_jsxs(_Fragment, { children: [_jsxs("div", { className: `hidden md:flex gap-1 items-center flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity my-auto`, children: [_jsxs("div", { className: "relative", ref: reactionRef, children: [_jsx("button", { onClick: () => {
377
+ setShowQuickReactions(!showQuickReactions);
378
+ setShowReactionPicker(false);
379
+ }, className: "flex items-center justify-center w-8 h-8 rounded-full bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors shadow-md", title: "Add reaction", children: _jsx(Smile, { className: "w-4 h-4" }) }), (showQuickReactions || showReactionPicker) && (_jsx("div", { className: `absolute z-50 bottom-10 ${isOwn ? "right-0" : "left-0"} whitespace-nowrap`, children: _jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-xl shadow-xl border border-gray-200 dark:border-gray-700 p-2", children: [showQuickReactions && (_jsxs("div", { className: "flex gap-1 flex-wrap w-max", children: [QUICK_REACTIONS.map((reaction) => (_jsx("button", { onClick: () => {
380
+ onReactionAdd === null || onReactionAdd === void 0 ? void 0 : onReactionAdd(message._id, reaction.emoji);
381
+ setShowQuickReactions(false);
382
+ }, className: "text-xl hover:scale-125 transition-transform hover:bg-gray-100 dark:hover:bg-gray-700 p-2 rounded-lg", title: reaction.label, children: reaction.emoji }, reaction.label))), _jsx("button", { onClick: () => {
383
+ setShowQuickReactions(false);
384
+ setShowReactionPicker(true);
385
+ }, className: "text-xl hover:scale-125 transition-transform hover:bg-gray-100 dark:hover:bg-gray-700 p-2 rounded-lg", children: _jsx(PlusCircleIcon, { className: "w-5 h-5 text-gray-600 dark:text-gray-300" }) })] })), showReactionPicker && (_jsx("div", { className: "mt-2 border-t border-gray-200 dark:border-gray-700 pt-2", children: _jsx(EmojiPicker, { onEmojiClick: (emojiObject) => {
386
+ onReactionAdd === null || onReactionAdd === void 0 ? void 0 : onReactionAdd(message._id, emojiObject.emoji);
387
+ setShowReactionPicker(false);
388
+ setShowQuickReactions(false);
389
+ } }) }))] }) }))] }), _jsx("div", { className: "relative", ref: actionRef, children: _jsxs(DropdownMenu, { open: showActionMenu, onOpenChange: setShowActionMenu, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { className: "flex items-center justify-center w-8 h-8 rounded-full bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors shadow-md", children: _jsx(MoreHorizontal, { className: "w-4 h-4" }) }) }), _jsxs(DropdownMenuContent, { align: isOwn ? "end" : "start", className: "w-48", children: [_jsxs(DropdownMenuItem, { onClick: () => onReply === null || onReply === void 0 ? void 0 : onReply(message), children: [_jsx(Reply, { className: "w-4 h-4 mr-2" }), "Reply"] }), _jsxs(DropdownMenuItem, { onClick: () => void copyText(message.content.text || ""), children: [_jsx(Copy, { className: "w-4 h-4 mr-2" }), "Copy"] }), _jsxs(DropdownMenuItem, { onClick: () => onStar === null || onStar === void 0 ? void 0 : onStar(message._id), children: [_jsx(Star, { className: "w-4 h-4 mr-2" }), "Star"] }), _jsxs(DropdownMenuItem, { onClick: () => onPin === null || onPin === void 0 ? void 0 : onPin(message._id), children: [_jsx(Pin, { className: "w-4 h-4 mr-2" }), "Pin"] }), message.type === "poll" && poll && _jsxs(DropdownMenuItem, { onClick: () => setShowPollVoters(true), children: [_jsx(EyeIcon, { className: "w-4 h-4 mr-2" }), "View votes"] }), canEdit && _jsxs(DropdownMenuItem, { onClick: openEditor, children: [_jsx(PencilIcon, { className: "w-4 h-4 mr-2" }), message.type === "poll" ? "Edit poll" : "Edit"] }), !isOwn && _jsxs(DropdownMenuItem, { onClick: () => onReport === null || onReport === void 0 ? void 0 : onReport(message), children: [_jsx(Flag, { className: "w-4 h-4 mr-2" }), "Report"] }), !isOwn && isGroupAdmin && _jsxs(DropdownMenuItem, { className: "text-red-500", onClick: () => onModerate === null || onModerate === void 0 ? void 0 : onModerate(message._id), children: [_jsx(ShieldX, { className: "w-4 h-4 mr-2" }), "Remove as admin"] }), isOwn && _jsxs(DropdownMenuItem, { className: "text-red-500", onClick: () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(message._id), children: [_jsx(Trash2, { className: "w-4 h-4 mr-2" }), "Unsend"] })] })] }) })] }), _jsxs("div", { className: "md:hidden relative my-auto", ref: mobileMenuRef, children: [_jsx("button", { onClick: () => setShowMobileMenu(!showMobileMenu), className: "flex items-center justify-center w-8 h-8 rounded-full bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors shadow-md flex-shrink-0", children: _jsx(MoreHorizontal, { className: "w-4 h-4" }) }), showMobileMenu && (_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setShowMobileMenu(false) })), showMobileMenu && (_jsx("div", { ref: mobilePopupRef, className: "absolute z-50 bg-white dark:bg-gray-800 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 overflow-hidden w-64 max-h-96 overflow-y-auto", children: _jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: "p-2 border-b border-gray-200 dark:border-gray-700", children: _jsx("div", { className: "flex gap-1 flex-wrap justify-center", children: QUICK_REACTIONS.map((reaction) => (_jsx("button", { onClick: () => {
390
+ onReactionAdd === null || onReactionAdd === void 0 ? void 0 : onReactionAdd(message._id, reaction.emoji);
391
+ setShowMobileMenu(false);
392
+ }, className: "text-lg hover:scale-125 transition-transform p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded", title: reaction.label, children: reaction.emoji }, reaction.label))) }) }), _jsxs("button", { onClick: () => {
393
+ onReply === null || onReply === void 0 ? void 0 : onReply(message);
394
+ setShowMobileMenu(false);
395
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(Reply, { className: "w-4 h-4" }), "Reply"] }), _jsxs("button", { onClick: () => {
396
+ void copyText(message.content.text || "");
397
+ setShowMobileMenu(false);
398
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(Copy, { className: "w-4 h-4" }), "Copy"] }), _jsxs("button", { onClick: () => {
399
+ onStar === null || onStar === void 0 ? void 0 : onStar(message._id);
400
+ setShowMobileMenu(false);
401
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(Star, { className: "w-4 h-4" }), "Star"] }), _jsxs("button", { onClick: () => {
402
+ onPin === null || onPin === void 0 ? void 0 : onPin(message._id);
403
+ setShowMobileMenu(false);
404
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(Pin, { className: "w-4 h-4" }), "Pin"] }), message.type === "poll" && poll && _jsxs("button", { onClick: () => {
405
+ setShowPollVoters(true);
406
+ setShowMobileMenu(false);
407
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(EyeIcon, { className: "w-4 h-4 mr-2" }), "View votes"] }), !isOwn && _jsxs("button", { onClick: () => {
408
+ onReport === null || onReport === void 0 ? void 0 : onReport(message);
409
+ setShowMobileMenu(false);
410
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(Flag, { className: "w-4 h-4" }), "Report"] }), !isOwn && isGroupAdmin && _jsxs("button", { onClick: () => {
411
+ onModerate === null || onModerate === void 0 ? void 0 : onModerate(message._id);
412
+ setShowMobileMenu(false);
413
+ }, className: "px-4 py-2.5 text-sm text-left text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(ShieldX, { className: "w-4 h-4" }), "Remove as admin"] }), isOwn && (_jsxs(_Fragment, { children: [canEdit && _jsxs("button", { onClick: () => {
414
+ openEditor();
415
+ setShowMobileMenu(false);
416
+ }, className: "px-4 py-2.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 border-b border-gray-200 dark:border-gray-700", children: [_jsx(PencilIcon, { className: "w-4 h-4" }), message.type === "poll" ? "Edit poll" : "Edit"] }), _jsxs("button", { onClick: () => {
417
+ onDelete === null || onDelete === void 0 ? void 0 : onDelete(message._id);
418
+ setShowMobileMenu(false);
419
+ }, className: "px-4 py-2.5 text-sm text-left text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 flex items-center gap-2", children: [_jsx(Trash2, { className: "w-4 h-4" }), "Unsend"] })] }))] }) }))] })] }))] })] }), poll && _jsx(PollVotersDialog, { open: showPollVoters, onOpenChange: setShowPollVoters, poll: poll, participants: participants }), poll && _jsx(EditPollDialog, { open: showPollEditor, onOpenChange: setShowPollEditor, poll: poll, onSave: async (data) => {
420
+ const updated = await (onEditPoll === null || onEditPoll === void 0 ? void 0 : onEditPoll(poll._id, data));
421
+ if (updated)
422
+ setPoll(updated);
423
+ return updated || null;
424
+ } }), _jsx(Dialog, { open: Boolean(selectedPhone), onOpenChange: (open) => !open && setSelectedPhone(null), children: _jsxs(DialogContent, { className: "sm:max-w-[425px]", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Phone number" }), _jsx(DialogDescription, { children: selectedPhone })] }), _jsx("div", { className: "space-y-3 py-2", children: isSearchingPhone ? _jsx("p", { className: "text-sm text-muted-foreground", children: "Looking for Trippeaze accounts\u2026" }) : phoneMatches.length > 0 ? _jsxs(_Fragment, { children: [_jsx("p", { className: "text-sm font-medium", children: "Chat with a Trippeaze account" }), phoneMatches.map((participant) => _jsxs("button", { type: "button", className: "flex w-full items-center justify-between rounded-lg border p-3 text-left hover:bg-gray-50", onClick: () => { setSelectedPhone(null); window.location.assign(`/chat?participantId=${encodeURIComponent(participant.actorId)}&participantModel=${participant.actorModel}`); }, children: [_jsxs("span", { children: [_jsx("span", { className: "block font-medium", children: participant.displayName }), _jsxs("span", { className: "text-xs text-muted-foreground", children: ["@", participant.username] })] }), _jsx(MessageCircle, { className: "h-4 w-4 text-teal-600" })] }, `${participant.actorModel}:${participant.actorId}`))] }) : _jsx("p", { className: "text-sm text-muted-foreground", children: "No Trippeaze account is registered with this number. You can invite them by SMS." }) }), phoneMatches.length === 0 && !isSearchingPhone && _jsxs("a", { className: "inline-flex h-10 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground", href: `sms:${selectedPhone || ""}?body=${encodeURIComponent("Join me on Trippeaze: ")}`, children: [_jsx(MessageCircle, { className: "mr-2 h-4 w-4" }), "Invite by SMS"] })] }) })] }));
425
+ }
@@ -0,0 +1,34 @@
1
+ import { Message } from "@myrjfa/state/dist/lib/models/chat";
2
+ interface MessageInputProps {
3
+ onSend: (text: string, files?: File[], mentions?: Array<{
4
+ actorId: string;
5
+ actorModel: "User" | "HostProfile";
6
+ }>, type?: "text" | "media" | "announcement") => Promise<void> | void;
7
+ onTypingStart?: () => void;
8
+ onTypingStop?: () => void;
9
+ disabled?: boolean;
10
+ replyTo?: any;
11
+ editMessage?: Message | null;
12
+ onEdit?: (messageid: string, text: string) => void;
13
+ onCancelEdit?: () => void;
14
+ onCancelReply?: () => void;
15
+ onAddMilestone?: () => void;
16
+ onAddExpense?: () => void;
17
+ onAddEvent?: () => void;
18
+ onPayAndSplit?: () => void;
19
+ onPaymentDetails?: () => void;
20
+ onCreatePoll?: (question: string, options: string[], allowMultiple: boolean) => void;
21
+ participants?: any[];
22
+ activePanel?: "chat" | "milestones" | "expenses" | "events";
23
+ allowAdvancedActions?: boolean;
24
+ enableAttachments?: boolean;
25
+ allowCollaborationActions?: boolean;
26
+ allowAnnouncements?: boolean;
27
+ initialText?: string;
28
+ externalText?: string;
29
+ onDraftChange?: (text: string) => void;
30
+ }
31
+ export declare function MessageInput({ onSend, onTypingStart, onTypingStop, disabled, replyTo, editMessage, onEdit, onCancelEdit, onCancelReply, onAddMilestone, onAddExpense, onAddEvent, onPayAndSplit, onPaymentDetails, onCreatePoll, participants, // Added
32
+ activePanel, allowAdvancedActions, enableAttachments, allowCollaborationActions, allowAnnouncements, initialText, externalText, onDraftChange, }: MessageInputProps): import("react/jsx-runtime").JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=MessageInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../src/chat/MessageInput.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE7D,UAAU,iBAAiB;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpL,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IACrF,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,YAAY,CAAC,EACzB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,YAAiB,EAAE,QAAQ;AAC3B,WAAoB,EACpB,oBAA4B,EAC5B,iBAAyB,EACzB,yBAAiC,EACjC,kBAA0B,EAC1B,WAAgB,EAChB,YAAY,EACZ,aAAa,GAChB,EAAE,iBAAiB,2CA+kBnB"}