@myrjfa/ui 2.1.8 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +3 -3
  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,8 @@
1
+ import type { BrandPageData } from "@myrjfa/state/dist/lib/brandActions";
2
+ import type { Location } from "@myrjfa/state/dist/lib/locationActions";
3
+ export default function BrandPageView({ pageData, brandSlug, contextPlace, }: {
4
+ pageData: BrandPageData;
5
+ brandSlug: string;
6
+ contextPlace?: Pick<Location, "name" | "slugPath" | "type"> | null;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=BrandPageView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrandPageView.d.ts","sourceRoot":"","sources":["../../../src/components/brand/BrandPageView.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAkHvE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,SAAS,EACT,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;CACpE,2CAgYA"}
@@ -0,0 +1,97 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import Image from "next/image";
3
+ import Link from "next/link";
4
+ import { ExternalLink, MapPin, ShieldCheck, Sparkles, TrendingUp, Users, BadgePercent, Route, Building2 } from "lucide-react";
5
+ import { BreadcrumbTrail } from "@myrjfa/ui/dist/components/ui/trippeaze/breadcrumb-trail";
6
+ import { PageContainer, PageShell, SectionHeading, SurfaceCard } from "@myrjfa/ui/dist/components/ui/trippeaze/page-shell";
7
+ import { AdOfferCard } from "@myrjfa/ui/dist/components/ads/AdOfferCard";
8
+ function getTrustScore(pageData) {
9
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
10
+ const followers = ((_a = pageData.brand.stats) === null || _a === void 0 ? void 0 : _a.followers) || 0;
11
+ const clicks = ((_b = pageData.brand.stats) === null || _b === void 0 ? void 0 : _b.clicks) || 0;
12
+ const conversions = ((_c = pageData.brand.stats) === null || _c === void 0 ? void 0 : _c.conversions) || 0;
13
+ const offeringsCount = (((_e = (_d = pageData.offerings) === null || _d === void 0 ? void 0 : _d.stays) === null || _e === void 0 ? void 0 : _e.length) || 0) +
14
+ (((_g = (_f = pageData.offerings) === null || _f === void 0 ? void 0 : _f.packages) === null || _g === void 0 ? void 0 : _g.length) || 0) +
15
+ (((_j = (_h = pageData.offerings) === null || _h === void 0 ? void 0 : _h.rentals) === null || _j === void 0 ? void 0 : _j.length) || 0) +
16
+ (((_l = (_k = pageData.offerings) === null || _k === void 0 ? void 0 : _k.events) === null || _l === void 0 ? void 0 : _l.length) || 0);
17
+ const verificationBoost = pageData.brand.verificationStatus === "verified" ? 20 : 0;
18
+ const score = Math.min(100, Math.round(verificationBoost +
19
+ Math.min(24, followers / 80) +
20
+ Math.min(22, clicks / 35) +
21
+ Math.min(24, conversions * 3) +
22
+ Math.min(10, offeringsCount * 2) +
23
+ Math.min(10, pageData.locations.length * 2)));
24
+ return score;
25
+ }
26
+ function getAdOfferInsights(pageData) {
27
+ var _a, _b;
28
+ const trustScore = getTrustScore(pageData);
29
+ const maxCommission = Math.max(((_a = pageData.brand.promotions) === null || _a === void 0 ? void 0 : _a.commissionRate) || 0, Math.min(18, 6 + Math.round(trustScore / 10)));
30
+ const payoutFactor = 0.45 + trustScore / 200;
31
+ const expectedCommission = Math.min(maxCommission, Number((maxCommission * payoutFactor).toFixed(1)));
32
+ return {
33
+ trustScore,
34
+ maxCommission: Number(maxCommission.toFixed(1)),
35
+ expectedCommission,
36
+ placementScore: Math.min(100, Math.round(trustScore + (((_b = pageData.brand.stats) === null || _b === void 0 ? void 0 : _b.clicks) || 0) / 10)),
37
+ };
38
+ }
39
+ function renderOfferingCard(listing, tileType) {
40
+ var _a, _b, _c, _d;
41
+ const hrefMap = {
42
+ stays: `/stays/${listing.slug}`,
43
+ packages: `/packages/${listing.slug}`,
44
+ rentals: `/rentals/${listing.slug}`,
45
+ events: `/events/${listing.slug}`,
46
+ adventures: `/adventures/${listing.slug}`,
47
+ guides: `/guides/${listing.slug}`,
48
+ opportunities: `/opportunities/${listing.slug}`,
49
+ };
50
+ return (_jsxs(Link, { href: hrefMap[tileType], className: "group overflow-hidden rounded-[1.4rem] border border-slate-200/70 bg-slate-50/70 transition hover:-translate-y-0.5 hover:border-primary/20 hover:bg-white hover:shadow-lg", children: [_jsx("div", { className: "relative aspect-[4/3] bg-[linear-gradient(135deg,rgba(24,183,167,0.14),rgba(17,147,134,0.04))]", children: _jsx(Image, { src: ((_a = listing.images) === null || _a === void 0 ? void 0 : _a[0]) ||
51
+ ((_b = listing.packageImages) === null || _b === void 0 ? void 0 : _b[0]) ||
52
+ "/images/profile_placeholder.webp", alt: listing.title, fill: true, className: "object-cover" }) }), _jsxs("div", { className: "space-y-2 p-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-[10px] font-bold uppercase tracking-[0.24em] text-primary", children: tileType }), listing.rating ? (_jsxs("span", { className: "text-xs font-semibold text-slate-500", children: [((_d = (_c = listing.rating).toFixed) === null || _d === void 0 ? void 0 : _d.call(_c, 1)) || listing.rating, " rating"] })) : null] }), _jsx("h3", { className: "line-clamp-2 text-base font-bold text-slate-900 transition group-hover:text-primary", children: listing.title }), _jsx("p", { className: "line-clamp-2 text-sm text-slate-600", children: [listing.city, listing.state, listing.country]
53
+ .filter(Boolean)
54
+ .join(", ") || "Explore this offering" })] })] }, `${tileType}-${listing.slug}`));
55
+ }
56
+ function buildBrandHref(brandSlug, contextPlacePath) {
57
+ return contextPlacePath
58
+ ? `/places/${contextPlacePath}/brands/${brandSlug}`
59
+ : `/brands/${brandSlug}`;
60
+ }
61
+ function buildLocationHref(location, contextPlacePath, brandSlug) {
62
+ if (brandSlug && contextPlacePath && contextPlacePath === location.slugPath) {
63
+ return `/places/${location.slugPath}/brands/${brandSlug}`;
64
+ }
65
+ return `/places/${location.slugPath}`;
66
+ }
67
+ export default function BrandPageView({ pageData, brandSlug, contextPlace, }) {
68
+ var _a, _b, _c, _d;
69
+ const { brand, locations, offerings, discussions, owner, trendingContent } = pageData;
70
+ const sections = [
71
+ { label: "Stays", type: "stays", items: offerings.stays },
72
+ { label: "Packages", type: "packages", items: offerings.packages },
73
+ { label: "Rentals", type: "rentals", items: offerings.rentals },
74
+ { label: "Events", type: "events", items: offerings.events },
75
+ { label: "Adventures", type: "adventures", items: offerings.adventures },
76
+ { label: "Guides", type: "guides", items: offerings.guides },
77
+ { label: "Opportunities", type: "opportunities", items: offerings.opportunities },
78
+ ].filter((section) => section.items.length > 0);
79
+ const insights = getAdOfferInsights(pageData);
80
+ const primaryLocation = locations[0];
81
+ const breadcrumbItems = contextPlace
82
+ ? [
83
+ { label: "Home", href: "/" },
84
+ { label: contextPlace.name, href: `/places/${contextPlace.slugPath}` },
85
+ { label: "Brands" },
86
+ { label: brand.name },
87
+ ]
88
+ : [
89
+ { label: "Home", href: "/" },
90
+ { label: "Brands", href: "/brands" },
91
+ { label: brand.name },
92
+ ];
93
+ return (_jsxs(PageShell, { children: [_jsxs("section", { className: "relative overflow-hidden border-b border-white/60 bg-[radial-gradient(circle_at_top,rgba(36,238,221,0.12),transparent_24rem),linear-gradient(180deg,rgba(255,255,255,0.92),rgba(247,251,250,0.98))]", children: [_jsx("div", { className: "absolute inset-0", children: brand.coverImage ? (_jsx(Image, { src: brand.coverImage, alt: brand.name, fill: true, className: "object-cover opacity-14" })) : null }), _jsx(PageContainer, { className: "relative z-10 py-8 sm:py-10", children: _jsxs("div", { className: "tp-stack-3", children: [_jsx(BreadcrumbTrail, { items: breadcrumbItems }), _jsxs("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-[1.8fr_1fr]", children: [_jsxs("div", { className: "tp-stack-2", children: [_jsx("span", { className: "tp-eyebrow", children: contextPlace ? "Destination brand page" : "Brand page" }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "relative h-20 w-20 shrink-0 overflow-hidden rounded-[1.6rem] border border-white/60 bg-white shadow-sm", children: brand.logo || brand.coverImage ? (_jsx(Image, { src: brand.logo || brand.coverImage || "/images/profile_placeholder.webp", alt: brand.name, fill: true, className: "object-cover" })) : null }), _jsxs("div", { className: "min-w-0", children: [_jsx("h1", { className: "tp-title-xl text-slate-950", children: brand.name }), _jsx("p", { className: "mt-2 max-w-3xl text-base leading-7 text-slate-600", children: brand.description ||
94
+ "Discover this brand's stays, curated travel products, live inventory, and destination presence." })] })] }), _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsxs("span", { className: "tp-chip", children: [_jsx(ShieldCheck, { className: "h-4 w-4 text-primary" }), brand.verificationStatus || "verified"] }), _jsxs("span", { className: "tp-chip", children: [_jsx(Users, { className: "h-4 w-4 text-primary" }), ((_a = brand.stats) === null || _a === void 0 ? void 0 : _a.followers) || 0, " followers"] }), _jsxs("span", { className: "tp-chip", children: [_jsx(Building2, { className: "h-4 w-4 text-primary" }), sections.reduce((sum, section) => sum + section.items.length, 0), " active offerings"] }), primaryLocation ? (_jsxs(Link, { href: buildLocationHref(primaryLocation, (contextPlace === null || contextPlace === void 0 ? void 0 : contextPlace.slugPath) || null, brandSlug), className: "tp-chip bg-primary/10 text-primary hover:bg-primary/15", children: [_jsx(MapPin, { className: "h-4 w-4" }), primaryLocation.name] })) : null] })] }), _jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Trust and reach", description: "A destination-level signal for how established and responsive this brand is on Trippeaze.", className: "mb-4" }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "rounded-[1.25rem] bg-slate-50 p-4", children: [_jsx("p", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: "Trust score" }), _jsx("p", { className: "mt-2 text-3xl font-bold text-slate-950", children: insights.trustScore })] }), _jsxs("div", { className: "rounded-[1.25rem] bg-slate-50 p-4", children: [_jsx("p", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: "Reach score" }), _jsx("p", { className: "mt-2 text-3xl font-bold text-slate-950", children: insights.placementScore })] })] })] })] })] }) })] }), _jsxs(PageContainer, { className: "grid grid-cols-1 gap-6 py-8 sm:gap-8 sm:py-10 lg:grid-cols-[2fr_1fr]", children: [_jsxs("div", { className: "space-y-8", children: [_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Ad offers", description: "Automated brand promotion slots for destination pages and creator surfaces without manual pitching.", className: "mb-5" }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [_jsxs("div", { className: "rounded-[1.25rem] border border-slate-200/70 bg-slate-50 p-4", children: [_jsx(BadgePercent, { className: "mb-3 h-5 w-5 text-primary" }), _jsx("p", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: "Max commission" }), _jsxs("p", { className: "mt-2 text-2xl font-bold text-slate-950", children: [insights.maxCommission, "%"] })] }), _jsxs("div", { className: "rounded-[1.25rem] border border-slate-200/70 bg-slate-50 p-4", children: [_jsx(TrendingUp, { className: "mb-3 h-5 w-5 text-primary" }), _jsx("p", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: "Expected payout" }), _jsxs("p", { className: "mt-2 text-2xl font-bold text-slate-950", children: [insights.expectedCommission, "%"] })] }), _jsxs("div", { className: "rounded-[1.25rem] border border-slate-200/70 bg-slate-50 p-4", children: [_jsx(Sparkles, { className: "mb-3 h-5 w-5 text-primary" }), _jsx("p", { className: "text-[11px] font-bold uppercase tracking-[0.18em] text-slate-400", children: "Placement mix" }), _jsx("p", { className: "mt-2 text-sm font-bold text-slate-950", children: "Destination page, creator profile, and content-driven placements" })] })] }), ((_b = pageData.brandOwnedAdOffers) === null || _b === void 0 ? void 0 : _b.length) ? (_jsx("div", { className: "mt-6 grid grid-cols-1 gap-4 md:grid-cols-2", children: pageData.brandOwnedAdOffers.slice(0, 4).map((offer) => (_jsx(AdOfferCard, { offer: offer, compact: true }, offer._id))) })) : (_jsx("div", { className: "mt-5 rounded-[1.25rem] border border-dashed border-slate-200 bg-slate-50 px-4 py-6 text-sm text-slate-500", children: "No live ad offers are configured for this brand yet." }))] }), sections.map((section) => (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: section.label, description: `Browse ${section.label.toLowerCase()} linked with ${brand.name}.`, className: "mb-5" }), _jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: section.items
95
+ .slice(0, 4)
96
+ .map((listing) => renderOfferingCard(listing, section.type)) })] }, section.label))), _jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Community and lead signal", description: "Discussions and trending content around this brand give placement algorithms more context.", className: "mb-4" }), discussions.length ? (_jsx("div", { className: "space-y-3", children: discussions.slice(0, 5).map((discussion) => (_jsx("div", { className: "rounded-[1.25rem] border border-slate-100 bg-slate-50/80 p-4", children: _jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "font-black text-slate-900 text-sm", children: discussion.title || "Brand discussion" }), _jsx("p", { className: "text-sm text-slate-600 mt-1 line-clamp-3", children: discussion.content })] }), _jsx("span", { className: "text-xs font-semibold text-slate-400", children: new Date(discussion.createdAt).toLocaleDateString("en-IN", { day: "numeric", month: "short" }) })] }) }, discussion._id))) })) : (_jsx("p", { className: "text-sm text-slate-500", children: "No discussions yet for this brand." }))] }), ((_c = pageData.adOffers) === null || _c === void 0 ? void 0 : _c.length) ? (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Complementary offers this page can promote", description: "Only relevant, non-competing Trippeaze offers are surfaced here.", className: "mb-5" }), _jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: pageData.adOffers.slice(0, 4).map((offer) => (_jsx(AdOfferCard, { offer: offer, compact: true }, offer._id))) })] })) : null] }), _jsxs("aside", { className: "space-y-6", children: [_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Service footprint", description: "Destinations where this brand currently operates or is actively linked.", className: "mb-4" }), _jsx("div", { className: "space-y-2", children: locations.length ? (locations.map((location) => (_jsxs(Link, { href: buildLocationHref(location, (contextPlace === null || contextPlace === void 0 ? void 0 : contextPlace.slugPath) || null, brandSlug), className: "flex items-center justify-between rounded-[1.25rem] border border-slate-100 bg-slate-50/70 px-4 py-3 transition hover:border-primary/20 hover:bg-white", children: [_jsxs("span", { className: "inline-flex items-center gap-2 text-sm font-semibold text-slate-700", children: [_jsx(MapPin, { className: "w-4 h-4 text-primary" }), location.name] }), _jsx("span", { className: "text-[10px] font-bold uppercase tracking-widest text-slate-400", children: location.type })] }, location._id)))) : (_jsx("p", { className: "text-sm text-slate-500", children: "No linked places yet." })) })] }), primaryLocation ? (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Way to reach", description: "Use the linked destination page as the entry point for travel details and local planning.", className: "mb-4" }), _jsxs("div", { className: "rounded-[1.25rem] border border-slate-100 bg-slate-50/70 p-4", children: [_jsxs("p", { className: "text-sm leading-6 text-slate-600", children: ["Start with ", _jsx("span", { className: "font-black text-slate-900", children: primaryLocation.name }), " for map context, nearby stays, itineraries, and destination-level navigation. This keeps brand discovery tied to the place where the traveler is actually planning to go."] }), _jsxs(Link, { href: buildLocationHref(primaryLocation, (contextPlace === null || contextPlace === void 0 ? void 0 : contextPlace.slugPath) || null, brandSlug), className: "mt-4 inline-flex items-center gap-2 text-sm font-bold text-primary hover:text-primary/80", children: [_jsx(Route, { className: "h-4 w-4" }), "Open destination directory"] })] })] })) : null, ((_d = brand.externalLinks) === null || _d === void 0 ? void 0 : _d.length) ? (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "External links", description: "Official channels and off-platform references.", className: "mb-4" }), _jsx("div", { className: "space-y-2", children: brand.externalLinks.map((item, index) => (_jsxs("a", { href: item.url, target: "_blank", rel: "noreferrer", className: "flex items-center justify-between rounded-[1.25rem] border border-slate-100 bg-slate-50/70 px-4 py-3 transition hover:border-primary/20 hover:bg-white", children: [_jsx("span", { className: "text-sm font-semibold text-slate-700", children: item.title || item.url }), _jsx(ExternalLink, { className: "w-4 h-4 text-slate-400" })] }, `${item.url}-${index}`))) })] })) : null, (trendingContent === null || trendingContent === void 0 ? void 0 : trendingContent.length) ? (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Trending around Trippeaze", description: "Useful signals influencing where discovery traffic is already moving.", className: "mb-4" }), _jsx("div", { className: "space-y-3", children: trendingContent.slice(0, 4).map((item) => (_jsxs("div", { className: "rounded-[1.25rem] border border-slate-100 bg-slate-50/80 p-4", children: [_jsx("p", { className: "text-sm font-bold text-slate-900", children: item.title || "Trending discussion" }), _jsxs("p", { className: "mt-1 text-xs font-semibold text-slate-500", children: [item.repliesCount || 0, " replies \u2022 ", (item.upvotes || 0) - (item.downvotes || 0), " score"] })] }, item._id))) })] })) : null, (owner === null || owner === void 0 ? void 0 : owner.username) ? (_jsxs(SurfaceCard, { className: "p-5 sm:p-6", children: [_jsx(SectionHeading, { title: "Brand operator", description: "The host or operator currently associated with this brand.", className: "mb-4" }), _jsxs(Link, { href: `/profile/host/${owner.username}`, className: "flex items-center gap-3 rounded-[1.25rem] border border-slate-100 bg-slate-50/70 p-4 transition hover:border-primary/20 hover:bg-white", children: [_jsx("div", { className: "relative h-12 w-12 overflow-hidden rounded-2xl bg-slate-100", children: owner.profilePic ? (_jsx(Image, { src: owner.profilePic, alt: owner.firstName || owner.username, fill: true, className: "object-cover" })) : null }), _jsxs("div", { children: [_jsxs("p", { className: "text-sm font-bold text-slate-900", children: [owner.firstName || owner.username, " ", owner.lastName || ""] }), _jsxs("p", { className: "text-xs font-semibold text-slate-500", children: ["@", owner.username] })] })] })] })) : null] })] })] }));
97
+ }
@@ -0,0 +1,22 @@
1
+ interface AnonymousChatProps {
2
+ matchId: string;
3
+ chatId: string;
4
+ partnerAlias: string;
5
+ partnerAvatar: string;
6
+ matchScore: number;
7
+ matchReasons: string[];
8
+ fullyRevealed: boolean;
9
+ myRevealed: boolean;
10
+ partnerRevealed: boolean;
11
+ onRequestReveal: () => void;
12
+ messages: {
13
+ senderId: string;
14
+ text: string;
15
+ createdAt: string;
16
+ }[];
17
+ myUserId: string;
18
+ onSend: (text: string) => void;
19
+ }
20
+ export declare function AnonymousChat({ matchId, partnerAlias, partnerAvatar, matchScore, matchReasons, fullyRevealed, myRevealed, partnerRevealed, onRequestReveal, messages, myUserId, onSend, }: AnonymousChatProps): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=AnonymousChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnonymousChat.d.ts","sourceRoot":"","sources":["../../../src/components/companion/AnonymousChat.tsx"],"names":[],"mappings":"AAMA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,kBAAkB,2CAwMpB"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { MotionDiv, AnimatePresence } from "../ui/motion";
5
+ import { Eye, EyeOff, Send } from "lucide-react";
6
+ export function AnonymousChat({ matchId, partnerAlias, partnerAvatar, matchScore, matchReasons, fullyRevealed, myRevealed, partnerRevealed, onRequestReveal, messages, myUserId, onSend, }) {
7
+ const [input, setInput] = useState("");
8
+ const handleSend = () => {
9
+ if (!input.trim())
10
+ return;
11
+ onSend(input.trim());
12
+ setInput("");
13
+ };
14
+ return (_jsxs("div", { className: "flex flex-col h-full bg-slate-50 rounded-[2.5rem] overflow-hidden shadow-2xl border border-slate-100", children: [_jsxs("div", { className: "bg-gradient-to-r from-indigo-600 via-purple-600 to-pink-500 p-5 flex items-center gap-4", children: [_jsxs("div", { className: "relative", children: [_jsx("div", { className: `w-14 h-14 rounded-full bg-white/20 backdrop-blur flex items-center justify-center text-3xl border-2 border-white/30 shadow ${fullyRevealed ? "" : "blur-sm"}`, children: partnerAvatar }), fullyRevealed && (_jsx("div", { className: "absolute -bottom-1 -right-1 bg-green-400 w-4 h-4 rounded-full border-2 border-white" }))] }), _jsxs("div", { className: "flex-1", children: [_jsx("h3", { className: "text-white font-bold text-lg", children: fullyRevealed ? partnerAlias : partnerAlias }), _jsxs("div", { className: "flex items-center gap-2 mt-0.5", children: [_jsxs("span", { className: "bg-white/20 text-white text-xs font-bold px-2 py-0.5 rounded-full", children: ["\u26A1 ", matchScore, "% match"] }), !fullyRevealed && (_jsx("span", { className: "bg-amber-400/30 text-amber-100 text-xs px-2 py-0.5 rounded-full font-medium", children: "\uD83C\uDFAD Anonymous" })), fullyRevealed && (_jsx("span", { className: "bg-green-400/30 text-green-100 text-xs px-2 py-0.5 rounded-full font-medium", children: "\u2705 Revealed" }))] })] }), !fullyRevealed && !myRevealed && (_jsxs("button", { onClick: onRequestReveal, className: "flex flex-col items-center gap-0.5 bg-white/20 backdrop-blur px-3 py-2 rounded-2xl hover:bg-white/30 transition border border-white/20", children: [_jsx(Eye, { className: "w-5 h-5 text-white" }), _jsx("span", { className: "text-[10px] text-white font-bold", children: "Reveal" })] })), myRevealed && !fullyRevealed && (_jsxs("div", { className: "flex flex-col items-center gap-0.5 bg-amber-400/30 px-3 py-2 rounded-2xl", children: [_jsx(EyeOff, { className: "w-5 h-5 text-amber-200" }), _jsx("span", { className: "text-[10px] text-amber-100 font-bold", children: "Waiting" })] }))] }), matchReasons.length > 0 && (_jsxs("div", { className: "bg-gradient-to-r from-green-50 to-emerald-50 px-5 py-3 border-b border-green-100", children: [_jsx("p", { className: "text-[10px] font-bold text-green-600 uppercase tracking-wider mb-1", children: "Why you matched" }), _jsx("div", { className: "flex flex-wrap gap-1.5", children: matchReasons.slice(0, 3).map((r, i) => (_jsx("span", { className: "bg-green-100 text-green-700 text-xs font-medium px-2.5 py-0.5 rounded-full", children: r }, i))) })] })), _jsx(AnimatePresence, { children: partnerRevealed && !myRevealed && (_jsxs(MotionDiv, { initial: { height: 0, opacity: 0 }, animate: { height: "auto", opacity: 1 }, className: "bg-indigo-600 px-5 py-3 flex items-center gap-3", children: [_jsx("span", { className: "text-2xl", children: "\uD83C\uDFAD" }), _jsxs("div", { className: "flex-1", children: [_jsx("p", { className: "text-white font-bold text-sm", children: "Your match wants to reveal!" }), _jsx("p", { className: "text-indigo-200 text-xs", children: "Tap Reveal to see who they really are." })] }), _jsx("button", { onClick: onRequestReveal, className: "bg-white text-indigo-600 font-bold text-sm px-4 py-2 rounded-xl hover:bg-indigo-50 transition", children: "Reveal \u2728" })] })) }), _jsx(AnimatePresence, { children: fullyRevealed && (_jsxs(MotionDiv, { initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, className: "bg-gradient-to-r from-yellow-400 to-orange-400 px-5 py-3 flex items-center gap-2", children: [_jsx("span", { className: "text-2xl", children: "\uD83C\uDF89" }), _jsx("p", { className: "text-white font-bold text-sm", children: "Identities revealed! Say hello!" })] })) }), _jsxs("div", { className: "flex-1 overflow-y-auto p-4 flex flex-col gap-3", children: [messages.length === 0 && (_jsxs("div", { className: "flex-1 flex flex-col items-center justify-center gap-3 text-center py-10", children: [_jsx("span", { className: "text-5xl", children: partnerAvatar }), _jsxs("p", { className: "text-slate-600 font-bold", children: ["You matched with ", partnerAlias] }), _jsx("p", { className: "text-slate-400 text-sm", children: "You're both anonymous. Break the ice! \uD83E\uDDCA" }), [
15
+ "So where are you headed next? 🌏",
16
+ "What's your travel style? 🎒",
17
+ "Have you been to Goa? 🏖️",
18
+ ].map((prompt, i) => (_jsx("button", { onClick: () => {
19
+ setInput(prompt);
20
+ }, className: "bg-slate-100 rounded-2xl px-4 py-2 text-sm text-slate-600 hover:bg-indigo-50 hover:text-indigo-600 transition font-medium", children: prompt }, i)))] })), messages.map((msg, i) => {
21
+ const isMe = msg.senderId === myUserId;
22
+ return (_jsxs("div", { className: `flex ${isMe ? "justify-end" : "justify-start"}`, children: [!isMe && (_jsx("div", { className: `w-8 h-8 rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 flex items-center justify-center text-sm mr-2 mt-auto flex-shrink-0 ${fullyRevealed ? "" : "blur-sm"}`, children: partnerAvatar })), _jsx("div", { className: `max-w-[75%] px-4 py-2.5 rounded-2xl text-sm font-medium ${isMe ? "bg-indigo-600 text-white rounded-br-sm" : "bg-white text-slate-800 shadow-sm border border-slate-100 rounded-bl-sm"}`, children: msg.text })] }, i));
23
+ })] }), _jsxs("div", { className: "p-4 bg-white border-t border-slate-100 flex gap-3 items-center", children: [_jsx("input", { type: "text", value: input, onChange: (e) => setInput(e.target.value), onKeyDown: (e) => e.key === "Enter" && handleSend(), placeholder: "Say something... \uD83C\uDF0D", className: "flex-1 bg-slate-50 rounded-2xl px-4 py-3 text-sm outline-none border border-slate-100 focus:border-indigo-300 transition" }), _jsx("button", { onClick: handleSend, className: "w-12 h-12 rounded-2xl bg-indigo-600 text-white flex items-center justify-center hover:bg-indigo-700 active:scale-95 transition shadow-lg shadow-indigo-200", children: _jsx(Send, { className: "w-5 h-5" }) })] })] }));
24
+ }
@@ -0,0 +1,25 @@
1
+ export type DiscoveryCard = {
2
+ userId: string;
3
+ alias: string;
4
+ avatar: string;
5
+ travelStyle: string;
6
+ bio?: string;
7
+ interests: string[];
8
+ destinations?: {
9
+ city: string;
10
+ country: string;
11
+ fromDate?: string;
12
+ toDate?: string;
13
+ }[];
14
+ languages: string[];
15
+ matchScore: number;
16
+ matchReasons: string[];
17
+ };
18
+ interface SwipeCardProps {
19
+ card: DiscoveryCard;
20
+ isTop: boolean;
21
+ onSwipe: (userId: string, action: "like" | "pass") => void;
22
+ }
23
+ export declare function SwipeCard({ card, isTop, onSwipe }: SwipeCardProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=SwipeCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwipeCard.d.ts","sourceRoot":"","sources":["../../../src/components/companion/SwipeCard.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,UAAU,cAAc;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;CAC5D;AAUD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,2CA2LjE"}
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { motion, useMotionValue, useTransform, useAnimation, } from "framer-motion";
4
+ import { MapPin, Heart, X, Zap } from "lucide-react";
5
+ const STYLE_EMOJI = {
6
+ budget: "🎒",
7
+ backpacker: "🏕️",
8
+ flashpacker: "⚡",
9
+ "mid-range": "🌿",
10
+ luxury: "💎",
11
+ };
12
+ export function SwipeCard({ card, isTop, onSwipe }) {
13
+ var _a;
14
+ const x = useMotionValue(0);
15
+ const rotate = useTransform(x, [-200, 200], [-25, 25]);
16
+ const likeOpacity = useTransform(x, [20, 100], [0, 1]);
17
+ const passOpacity = useTransform(x, [-100, -20], [1, 0]);
18
+ const controls = useAnimation();
19
+ const handleDragEnd = async (_, info) => {
20
+ if (info.offset.x > 100) {
21
+ await controls.start({
22
+ x: 600,
23
+ opacity: 0,
24
+ transition: { duration: 0.3 },
25
+ });
26
+ onSwipe(card.userId, "like");
27
+ }
28
+ else if (info.offset.x < -100) {
29
+ await controls.start({
30
+ x: -600,
31
+ opacity: 0,
32
+ transition: { duration: 0.3 },
33
+ });
34
+ onSwipe(card.userId, "pass");
35
+ }
36
+ else {
37
+ controls.start({ x: 0, transition: { type: "spring", stiffness: 300 } });
38
+ }
39
+ };
40
+ const triggerSwipe = async (dir) => {
41
+ const target = dir === "like" ? 600 : -600;
42
+ await controls.start({
43
+ x: target,
44
+ opacity: 0,
45
+ transition: { duration: 0.3 },
46
+ });
47
+ onSwipe(card.userId, dir);
48
+ };
49
+ const scoreColor = card.matchScore >= 75
50
+ ? "text-emerald-600"
51
+ : card.matchScore >= 50
52
+ ? "text-amber-600"
53
+ : "text-slate-400";
54
+ return (_jsxs("div", { className: "relative w-full max-w-sm mx-auto select-none", children: [_jsx(motion.div, { style: { opacity: likeOpacity }, className: "absolute top-8 left-6 z-20 rotate-[-15deg] border-4 border-emerald-400 text-emerald-400 font-bold text-3xl px-4 py-1 rounded-xl pointer-events-none", children: "VIBE \u2708\uFE0F" }), _jsx(motion.div, { style: { opacity: passOpacity }, className: "absolute top-8 right-6 z-20 rotate-[15deg] border-4 border-red-400 text-red-400 font-bold text-3xl px-4 py-1 rounded-xl pointer-events-none", children: "NOPE \u2716\uFE0F" }), _jsxs(motion.div, { style: { x, rotate }, drag: isTop ? "x" : false, dragConstraints: { left: 0, right: 0 }, onDragEnd: handleDragEnd, animate: controls, className: "relative bg-white rounded-[2.5rem] shadow-xl overflow-hidden cursor-grab active:cursor-grabbing border border-slate-100", children: [_jsxs("div", { className: "relative h-64 bg-gradient-to-br from-primary-500 to-blue-600 flex flex-col items-center justify-center gap-3", children: [_jsx("div", { className: "w-28 h-28 rounded-full bg-white/20 backdrop-blur flex items-center justify-center text-7xl shadow-xl border-4 border-white/30 overflow-hidden", children: ((_a = card.avatar) === null || _a === void 0 ? void 0 : _a.startsWith("http")) ? (_jsx("img", { src: card.avatar, alt: card.alias, className: "w-full h-full object-cover" })) : (card.avatar || "🌍") }), _jsx("h2", { className: "text-white font-bold text-xl tracking-tight", children: card.alias }), _jsx("div", { className: "flex items-center gap-2 bg-white/20 backdrop-blur-md px-4 py-1.5 rounded-full", children: _jsxs("span", { className: "text-white font-bold text-sm capitalize", children: [STYLE_EMOJI[card.travelStyle], " ", card.travelStyle, " traveler"] }) }), _jsxs("div", { className: `absolute top-4 right-4 bg-white rounded-2xl px-3 py-1 flex items-center gap-1 shadow-lg`, children: [_jsx(Zap, { className: `w-3.5 h-3.5 ${scoreColor}` }), _jsxs("span", { className: `font-black text-sm ${scoreColor}`, children: [card.matchScore, "% match"] })] })] }), _jsxs("div", { className: "p-6 flex flex-col gap-4", children: [card.destinations && card.destinations.length > 0 && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("p", { className: "text-xs font-bold uppercase tracking-widest text-slate-400", children: "Upcoming Trips" }), card.destinations.slice(0, 2).map((d, i) => (_jsxs("div", { className: "flex items-center gap-2 text-sm font-semibold text-slate-700", children: [_jsx(MapPin, { className: "w-3.5 h-3.5 text-primary-500" }), d.city, ", ", d.country, d.fromDate && (_jsxs("span", { className: "text-xs text-slate-400", children: ["\u00B7", " ", new Date(d.fromDate).toLocaleDateString("en-IN", {
55
+ month: "short",
56
+ day: "numeric",
57
+ })] }))] }, i)))] })), card.bio && (_jsxs("p", { className: "text-sm text-slate-600 leading-relaxed italic", children: ["\"", card.bio, "\""] })), _jsx("div", { className: "flex flex-wrap gap-2", children: card.interests.slice(0, 5).map((i) => (_jsx("span", { className: "bg-primary-50 text-primary-700 text-xs font-bold px-3 py-1 rounded-full capitalize", children: i }, i))) }), card.matchReasons.length > 0 && (_jsxs("div", { className: "bg-emerald-50 rounded-2xl p-3 border border-emerald-100", children: [_jsx("p", { className: "text-xs font-bold text-emerald-700 uppercase tracking-wide mb-1", children: "Why you match" }), card.matchReasons.slice(0, 2).map((r, i) => (_jsx("p", { className: "text-xs text-emerald-600 font-medium", children: r }, i)))] }))] })] }), isTop && (_jsxs("div", { className: "flex justify-center gap-8 mt-6", children: [_jsx("button", { onClick: () => triggerSwipe("pass"), className: "w-16 h-16 rounded-full bg-white shadow-xl border-2 border-slate-100 flex items-center justify-center text-red-400 hover:scale-110 hover:border-red-200 transition-all active:scale-95", children: _jsx(X, { className: "w-7 h-7" }) }), _jsx("button", { onClick: () => triggerSwipe("like"), className: "w-20 h-20 rounded-full bg-primary-600 shadow-xl shadow-primary-200 flex items-center justify-center text-white hover:scale-110 transition-all active:scale-95", children: _jsx(Heart, { className: "w-8 h-8 fill-white" }) })] }))] }));
58
+ }
@@ -0,0 +1,11 @@
1
+ type ConfirmDiscardDialogProps = {
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ saving: boolean;
5
+ onSaveDraft: () => void;
6
+ onDiscard: () => void;
7
+ triggerClassName?: string;
8
+ };
9
+ export default function ConfirmDiscardDialog({ open, onOpenChange, saving, onSaveDraft, onDiscard, }: ConfirmDiscardDialogProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ConfirmDiscardDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDiscardDialog.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/ConfirmDiscardDialog.tsx"],"names":[],"mappings":"AAWA,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,SAAS,GACV,EAAE,yBAAyB,2CAgD3B"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Pencil, Save } from "lucide-react";
4
+ import { Button } from "@myrjfa/ui/dist/misc/button";
5
+ import { Dialog, DialogContent, DialogTitle, DialogTrigger, } from "@myrjfa/ui/dist/misc/dialog";
6
+ export default function ConfirmDiscardDialog({ open, onOpenChange, saving, onSaveDraft, onDiscard, }) {
7
+ return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "destructive", disabled: saving, children: "Cancel" }) }), _jsxs(DialogContent, { children: [_jsx(DialogTitle, { children: "Confirm Cancellation" }), "Are you sure you want to cancel?", _jsxs(Button, { onClick: () => onOpenChange(false), className: "flex flex-row gap-2", children: [_jsx(Pencil, { className: "w-4 h-4" }), "Continue Editing"] }), _jsx(Button, { type: "button", disabled: saving, className: "min-w-32", onClick: () => {
8
+ onOpenChange(false);
9
+ onSaveDraft();
10
+ }, children: saving ? (_jsxs("span", { className: "flex items-center", children: [_jsx("span", { className: "mr-2 h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent" }), "Saving..."] })) : (_jsxs("span", { className: "flex items-center", children: [_jsx(Save, { className: "mr-2 h-4 w-4" }), "Save Draft"] })) }), _jsx(Button, { variant: "destructive", onClick: () => {
11
+ onOpenChange(false);
12
+ onDiscard();
13
+ }, children: "Discard" })] })] }));
14
+ }
@@ -0,0 +1,2 @@
1
+ export default function EntityEditLoadingState(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EntityEditLoadingState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityEditLoadingState.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/EntityEditLoadingState.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,sBAAsB,4CAM7C"}
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Loader2 } from "lucide-react";
4
+ export default function EntityEditLoadingState() {
5
+ return (_jsx("div", { className: "flex min-h-screen items-center justify-center bg-gray-50 px-4", children: _jsx(Loader2, { className: "h-8 w-8 animate-spin text-primary" }) }));
6
+ }
@@ -0,0 +1,12 @@
1
+ type EntityFormCompletionStateProps = {
2
+ title: string;
3
+ description: string;
4
+ viewHref?: string;
5
+ viewLabel?: string;
6
+ backHref: string;
7
+ backLabel: string;
8
+ primaryBack?: boolean;
9
+ };
10
+ export default function EntityFormCompletionState({ title, description, viewHref, viewLabel, backHref, backLabel, primaryBack, }: EntityFormCompletionStateProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=EntityFormCompletionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFormCompletionState.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/EntityFormCompletionState.tsx"],"names":[],"mappings":"AAMA,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAmB,GACpB,EAAE,8BAA8B,2CAmChC"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from "next/link";
4
+ import { MotionDiv } from "../ui/motion";
5
+ import { CheckCircle } from "lucide-react";
6
+ export default function EntityFormCompletionState({ title, description, viewHref, viewLabel, backHref, backLabel, primaryBack = false, }) {
7
+ return (_jsx("div", { className: "flex min-h-screen items-center justify-center bg-gray-50 px-4 pt-24", children: _jsxs(MotionDiv, { initial: { opacity: 0, scale: 0.9 }, animate: { opacity: 1, scale: 1 }, className: "w-full max-w-md rounded-[2.5rem] border border-gray-100 bg-white p-10 text-center shadow-xl", children: [_jsx("div", { className: "mx-auto mb-6 flex h-20 w-20 items-center justify-center rounded-[1.5rem] bg-green-100", children: _jsx(CheckCircle, { className: "h-10 w-10 text-green-600" }) }), _jsx("h2", { className: "mb-2 text-2xl font-bold text-gray-900", children: title }), _jsx("p", { className: "mb-8 text-sm font-medium text-gray-500", children: description }), _jsxs("div", { className: "flex flex-col gap-3", children: [viewHref && viewLabel ? (_jsx(Link, { href: viewHref, className: "w-full rounded-2xl bg-primary py-4 font-bold text-white shadow-lg shadow-primary/20 transition hover:opacity-90", children: viewLabel })) : null, _jsx(Link, { href: backHref, className: `w-full rounded-2xl py-4 font-bold transition ${primaryBack
8
+ ? "bg-primary text-white shadow-lg shadow-primary/20 hover:opacity-90"
9
+ : "bg-gray-100 text-gray-700 hover:bg-gray-200"}`, children: backLabel })] })] }) }));
10
+ }
@@ -0,0 +1,9 @@
1
+ type EntityFormHeaderProps = {
2
+ backHref: string;
3
+ backLabel: string;
4
+ title: string;
5
+ description: string;
6
+ };
7
+ export default function EntityFormHeader({ backHref, backLabel, title, description, }: EntityFormHeaderProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=EntityFormHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFormHeader.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/EntityFormHeader.tsx"],"names":[],"mappings":"AAKA,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,GACZ,EAAE,qBAAqB,2CAavB"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from "next/link";
4
+ import { ArrowLeft } from "lucide-react";
5
+ export default function EntityFormHeader({ backHref, backLabel, title, description, }) {
6
+ return (_jsxs("div", { className: "mb-8", children: [_jsxs(Link, { href: backHref, className: "mb-4 inline-flex items-center gap-1.5 text-sm font-bold text-gray-500 transition hover:text-primary", children: [_jsx(ArrowLeft, { className: "h-4 w-4" }), " ", backLabel] }), _jsx("h1", { className: "text-3xl font-bold text-gray-900", children: title }), _jsx("p", { className: "mt-1 text-sm text-gray-500", children: description })] }));
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ type EntityFormPageFrameProps = {
3
+ loading: boolean;
4
+ children: ReactNode;
5
+ templateDialog?: ReactNode;
6
+ helpMessage?: string;
7
+ };
8
+ export default function EntityFormPageFrame({ loading, children, templateDialog, helpMessage, }: EntityFormPageFrameProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=EntityFormPageFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFormPageFrame.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/EntityFormPageFrame.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,OAAO,EACP,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,EAAE,wBAAwB,2CAY1B"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Skeleton as LoadingSkeleton } from "@myrjfa/ui/dist/misc/skeleton";
4
+ import { WhatsAppHelpButton } from "@myrjfa/ui/dist/components/ui/misc/whatsapp-help";
5
+ export default function EntityFormPageFrame({ loading, children, templateDialog, helpMessage, }) {
6
+ if (loading) {
7
+ return _jsx(LoadingSkeleton, {});
8
+ }
9
+ return (_jsxs("div", { children: [templateDialog, children, helpMessage ? _jsx(WhatsAppHelpButton, { message: helpMessage }) : null] }));
10
+ }
@@ -0,0 +1,15 @@
1
+ type ImageUploadStepProps = {
2
+ title: string;
3
+ subtitle: string;
4
+ helperText: string;
5
+ images: File[];
6
+ setImages: (images: File[]) => void;
7
+ minImagesLabel?: string;
8
+ formatLabel?: string;
9
+ previewAspectClassName?: string;
10
+ previewGridClassName?: string;
11
+ containerClassName?: string;
12
+ };
13
+ export default function ImageUploadStep({ title, subtitle, helperText, images, setImages, minImagesLabel, formatLabel, previewAspectClassName, previewGridClassName, containerClassName, }: ImageUploadStepProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=ImageUploadStep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadStep.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/ImageUploadStep.tsx"],"names":[],"mappings":"AAKA,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,SAAS,EACT,cAAgC,EAChC,WAA8B,EAC9B,sBAAuC,EACvC,oBAA8D,EAC9D,kBAA0C,GAC3C,EAAE,oBAAoB,2CAyDtB"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ImageIcon, Trash2 } from "lucide-react";
4
+ import { normalizeImageFiles } from "@myrjfa/state/dist/lib/imageUpload";
5
+ export default function ImageUploadStep({ title, subtitle, helperText, images, setImages, minImagesLabel = "Max 10 images", formatLabel = "PNG, JPG, WEBP", previewAspectClassName = "aspect-video", previewGridClassName = "grid grid-cols-2 sm:grid-cols-4 gap-4", containerClassName = "flex flex-col gap-6", }) {
6
+ return (_jsxs("div", { className: containerClassName, children: [_jsxs("label", { className: "group flex cursor-pointer flex-col items-center gap-6 rounded-[2rem] border-2 border-dashed border-gray-200 p-12 transition hover:border-primary hover:bg-primary/5", 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: _jsx(ImageIcon, { className: "h-8 w-8" }) }), _jsxs("div", { className: "text-center", children: [_jsx("p", { className: "text-lg font-bold text-gray-900", children: title }), _jsx("p", { className: "text-sm text-gray-400", children: subtitle }), _jsxs("div", { className: "mt-4 flex items-center justify-center gap-4", children: [_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: minImagesLabel }), _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 italic text-gray-300", children: helperText })] }), _jsx("input", { type: "file", multiple: true, accept: "image/*", onChange: async (e) => {
7
+ var _a;
8
+ const files = await normalizeImageFiles(Array.from((_a = e.target.files) !== null && _a !== void 0 ? _a : []));
9
+ setImages([...images, ...files]);
10
+ }, className: "hidden" })] }), images.length > 0 && (_jsx("div", { className: previewGridClassName, children: images.map((img, i) => (_jsxs("div", { className: `group relative overflow-hidden rounded-2xl border border-gray-100 shadow-sm ${previewAspectClassName}`, children: [_jsx("img", { src: URL.createObjectURL(img), alt: "", className: "h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" }), _jsx("button", { type: "button", onClick: () => setImages(images.filter((_, idx) => idx !== i)), className: "absolute right-2 top-2 rounded-full bg-red-500 p-1.5 text-white opacity-0 shadow-lg transition group-hover:opacity-100", children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })] }, `${img.name}-${i}`))) }))] }));
11
+ }
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ type ImageUploaderProps = {
3
+ previews?: string[];
4
+ files?: File[];
5
+ onFilesChange?: (files: File[]) => void;
6
+ onFilesSelected?: (files: File[]) => void | Promise<void>;
7
+ onUploadEvent?: (event: React.ChangeEvent<HTMLInputElement>) => void | Promise<void>;
8
+ onRemove?: (index: number) => void;
9
+ prepareFiles?: (files: File[]) => File[] | Promise<File[]>;
10
+ title?: string;
11
+ message?: string;
12
+ helperText?: string;
13
+ minImages?: number;
14
+ maxImages?: number;
15
+ formatLabel?: string;
16
+ accept?: string;
17
+ multiple?: boolean;
18
+ disabled?: boolean;
19
+ dedupe?: boolean;
20
+ enableCompression?: boolean;
21
+ normalizeFiles?: boolean;
22
+ previewAspectClassName?: string;
23
+ previewGridClassName?: string;
24
+ containerClassName?: string;
25
+ dropzoneClassName?: string;
26
+ emptyIcon?: React.ReactNode;
27
+ };
28
+ export default function ImageUploader({ previews, files, onFilesChange, onFilesSelected, onUploadEvent, onRemove, prepareFiles, title, message, helperText, minImages, maxImages, formatLabel, accept, multiple, disabled, dedupe, enableCompression, normalizeFiles, previewAspectClassName, previewGridClassName, containerClassName, dropzoneClassName, emptyIcon, }: ImageUploaderProps): import("react/jsx-runtime").JSX.Element;
29
+ export {};
30
+ //# sourceMappingURL=ImageUploader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploader.d.ts","sourceRoot":"","sources":["../../../src/components/create-flow/ImageUploader.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAkBF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAa,EACb,KAAK,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,KAAuB,EACvB,OAA+E,EAC/E,UAAU,EACV,SAAS,EACT,SAAc,EACd,WAAoC,EACpC,MAAkB,EAClB,QAAe,EACf,QAAgB,EAChB,MAAa,EACb,iBAAwB,EACxB,cAAqB,EACrB,sBAAuC,EACvC,oBAA8D,EAC9D,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GACV,EAAE,kBAAkB,2CA4SpB"}