@adminide-stack/yantra-mobile 12.0.69-alpha.8 → 12.0.69

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 (522) hide show
  1. package/lib/components/GatewayConnector/GatewayConnector.js +2 -2
  2. package/lib/components/GatewayConnector/GatewayConnector.js.map +1 -1
  3. package/lib/components/KeyboardComposerDock.js +8 -1
  4. package/lib/components/KeyboardComposerDock.js.map +1 -1
  5. package/lib/components/NavigationHeader/NavigationHeader.js +2 -2
  6. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  7. package/lib/config/env-config.js +4 -0
  8. package/lib/config/env-config.js.map +1 -1
  9. package/lib/contexts/ChatLiveStreamContext.js +4 -1
  10. package/lib/contexts/ChatLiveStreamContext.js.map +1 -1
  11. package/lib/features/agent-chat/NativeAgentChat.js +2 -0
  12. package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
  13. package/lib/features/apps/AppsCatalog.js +2 -2
  14. package/lib/features/apps/AppsCatalog.js.map +1 -1
  15. package/lib/features/audio-input/MicErrorBoundary.js +2 -2
  16. package/lib/features/audio-input/MicErrorBoundary.js.map +1 -1
  17. package/lib/features/canvas/AudioEditorExperience.js +308 -0
  18. package/lib/features/canvas/AudioEditorExperience.js.map +1 -0
  19. package/lib/features/canvas/CanvasAgentChatPane.js +310 -0
  20. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -0
  21. package/lib/features/canvas/CanvasBoardsGrid.js +414 -0
  22. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -0
  23. package/lib/features/canvas/CanvasChatResultCard.js +113 -0
  24. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -0
  25. package/lib/features/canvas/CanvasEditToolsPanel.js +179 -0
  26. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -0
  27. package/lib/features/canvas/CanvasExperience.js +859 -0
  28. package/lib/features/canvas/CanvasExperience.js.map +1 -0
  29. package/lib/features/canvas/CanvasGeneratePanel.js +514 -0
  30. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -0
  31. package/lib/features/canvas/CanvasLibrarySheet.js +355 -0
  32. package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -0
  33. package/lib/features/canvas/CanvasLooksPanel.js +184 -0
  34. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -0
  35. package/lib/features/canvas/CanvasTasksPanel.js +138 -0
  36. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -0
  37. package/lib/features/canvas/CanvasTemplatesPanel.js +226 -0
  38. package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -0
  39. package/lib/features/canvas/CanvasToolDock.js +423 -0
  40. package/lib/features/canvas/CanvasToolDock.js.map +1 -0
  41. package/lib/features/canvas/FrameExtractorExperience.js +242 -0
  42. package/lib/features/canvas/FrameExtractorExperience.js.map +1 -0
  43. package/lib/features/canvas/ImageEditorExperience.js +491 -0
  44. package/lib/features/canvas/ImageEditorExperience.js.map +1 -0
  45. package/lib/features/canvas/InfluencerStudioExperience.js +288 -0
  46. package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -0
  47. package/lib/features/canvas/MoodboardExperience.js +205 -0
  48. package/lib/features/canvas/MoodboardExperience.js.map +1 -0
  49. package/lib/features/canvas/NativeCanvasViewer.js +929 -0
  50. package/lib/features/canvas/NativeCanvasViewer.js.map +1 -0
  51. package/lib/features/canvas/PromoContextFields.js +150 -0
  52. package/lib/features/canvas/PromoContextFields.js.map +1 -0
  53. package/lib/features/canvas/SetStudioExperience.js +323 -0
  54. package/lib/features/canvas/SetStudioExperience.js.map +1 -0
  55. package/lib/features/canvas/VideoClipsExperience.js +175 -0
  56. package/lib/features/canvas/VideoClipsExperience.js.map +1 -0
  57. package/lib/features/canvas/VideoEditExperience.js +824 -0
  58. package/lib/features/canvas/VideoEditExperience.js.map +1 -0
  59. package/lib/features/canvas/VideoEditorExperience.js +3050 -0
  60. package/lib/features/canvas/VideoEditorExperience.js.map +1 -0
  61. package/lib/features/canvas/VideoGeneratorExperience.js +415 -0
  62. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -0
  63. package/lib/features/canvas/aiEdit.js +53 -0
  64. package/lib/features/canvas/aiEdit.js.map +1 -0
  65. package/lib/features/canvas/canvasAgentChat.js +76 -0
  66. package/lib/features/canvas/canvasAgentChat.js.map +1 -0
  67. package/lib/features/canvas/canvasBoardsCatalog.js +59 -0
  68. package/lib/features/canvas/canvasBoardsCatalog.js.map +1 -0
  69. package/lib/features/canvas/canvasBoardsSnapshot.js +14 -1
  70. package/lib/features/canvas/canvasBoardsSnapshot.js.map +1 -1
  71. package/lib/features/canvas/canvasChatDisplay.js +38 -0
  72. package/lib/features/canvas/canvasChatDisplay.js.map +1 -0
  73. package/lib/features/canvas/canvasChatTemplates.js +219 -0
  74. package/lib/features/canvas/canvasChatTemplates.js.map +1 -0
  75. package/lib/features/canvas/canvasCore.js +138 -1
  76. package/lib/features/canvas/canvasCore.js.map +1 -1
  77. package/lib/features/canvas/canvasEditOps.js +224 -0
  78. package/lib/features/canvas/canvasEditOps.js.map +1 -0
  79. package/lib/features/canvas/canvasTasks.js +187 -0
  80. package/lib/features/canvas/canvasTasks.js.map +1 -0
  81. package/lib/features/canvas/designPromptTemplates.js +3084 -0
  82. package/lib/features/canvas/designPromptTemplates.js.map +1 -0
  83. package/lib/features/canvas/editTools.js +54 -0
  84. package/lib/features/canvas/editTools.js.map +1 -0
  85. package/lib/features/canvas/extendVideo.js +5 -0
  86. package/lib/features/canvas/extendVideo.js.map +1 -0
  87. package/lib/features/canvas/frameExtract.js +33 -0
  88. package/lib/features/canvas/frameExtract.js.map +1 -0
  89. package/lib/features/canvas/generationModels.js +201 -0
  90. package/lib/features/canvas/generationModels.js.map +1 -0
  91. package/lib/features/canvas/influencer/influencerPipeline.js +170 -0
  92. package/lib/features/canvas/influencer/influencerPipeline.js.map +1 -0
  93. package/lib/features/canvas/influencer/productReel.js +72 -0
  94. package/lib/features/canvas/influencer/productReel.js.map +1 -0
  95. package/lib/features/canvas/influencer/reelPlan.js +159 -0
  96. package/lib/features/canvas/influencer/reelPlan.js.map +1 -0
  97. package/lib/features/canvas/moodboardCore.js +13 -0
  98. package/lib/features/canvas/moodboardCore.js.map +1 -0
  99. package/lib/features/canvas/promoProjectImport.js +99 -0
  100. package/lib/features/canvas/promoProjectImport.js.map +1 -0
  101. package/lib/features/canvas/promoVideo.js +312 -0
  102. package/lib/features/canvas/promoVideo.js.map +1 -0
  103. package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -0
  104. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -0
  105. package/lib/features/canvas/sessionIdentity.js +28 -1
  106. package/lib/features/canvas/sessionIdentity.js.map +1 -1
  107. package/lib/features/canvas/set/SetViewportWebView.js +133 -0
  108. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -0
  109. package/lib/features/canvas/set/cameraPath.js +194 -0
  110. package/lib/features/canvas/set/cameraPath.js.map +1 -0
  111. package/lib/features/canvas/set/setProject.js +24 -0
  112. package/lib/features/canvas/set/setProject.js.map +1 -0
  113. package/lib/features/canvas/storageLibrary.js +184 -0
  114. package/lib/features/canvas/storageLibrary.js.map +1 -0
  115. package/lib/features/canvas/studioCatalog.js +129 -0
  116. package/lib/features/canvas/studioCatalog.js.map +1 -0
  117. package/lib/features/canvas/studioLooks.js +189 -0
  118. package/lib/features/canvas/studioLooks.js.map +1 -0
  119. package/lib/features/canvas/surfaceIndex.js +63 -1
  120. package/lib/features/canvas/surfaceIndex.js.map +1 -1
  121. package/lib/features/canvas/templateImport/invideoNative.js +221 -0
  122. package/lib/features/canvas/templateImport/invideoNative.js.map +1 -0
  123. package/lib/features/canvas/templateImport/loadTemplate.js +43 -0
  124. package/lib/features/canvas/templateImport/loadTemplate.js.map +1 -0
  125. package/lib/features/canvas/templateImport/renderConfig.js +93 -0
  126. package/lib/features/canvas/templateImport/renderConfig.js.map +1 -0
  127. package/lib/features/canvas/useStudioCatalogTemplates.js +134 -0
  128. package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -0
  129. package/lib/features/canvas/video3d.js +109 -0
  130. package/lib/features/canvas/video3d.js.map +1 -0
  131. package/lib/features/canvas/videoClips.js +42 -0
  132. package/lib/features/canvas/videoClips.js.map +1 -0
  133. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +120 -0
  134. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -0
  135. package/lib/features/canvas/videoEditor/agent/agentLoop.js +69 -0
  136. package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -0
  137. package/lib/features/canvas/videoEditor/agent/brainClient.js +45 -0
  138. package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -0
  139. package/lib/features/canvas/videoEditor/agent/cutTools.js +129 -0
  140. package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -0
  141. package/lib/features/canvas/videoEditor/editorModel.js +346 -0
  142. package/lib/features/canvas/videoEditor/editorModel.js.map +1 -0
  143. package/lib/features/canvas/videoEditor/exportRenderer.js +214 -0
  144. package/lib/features/canvas/videoEditor/exportRenderer.js.map +1 -0
  145. package/lib/features/canvas/videoEditor/filters.js +41 -0
  146. package/lib/features/canvas/videoEditor/filters.js.map +1 -0
  147. package/lib/features/canvas/videoEditor/mediaActions.js +57 -0
  148. package/lib/features/canvas/videoEditor/mediaActions.js.map +1 -0
  149. package/lib/features/canvas/videoEditor/remoteMediaClient.js +129 -0
  150. package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -0
  151. package/lib/features/canvas/videoEditor/solidColorPng.js +115 -0
  152. package/lib/features/canvas/videoEditor/solidColorPng.js.map +1 -0
  153. package/lib/features/canvas/videoEditor/videoEditOps.js +191 -0
  154. package/lib/features/canvas/videoEditor/videoEditOps.js.map +1 -0
  155. package/lib/features/canvas/videoEditor/videoProjectsStore.js +82 -0
  156. package/lib/features/canvas/videoEditor/videoProjectsStore.js.map +1 -0
  157. package/lib/features/canvas/videoRenderer.js +8 -0
  158. package/lib/features/canvas/videoRenderer.js.map +1 -0
  159. package/lib/features/canvas/withRemoteSafeArea.js +2 -2
  160. package/lib/features/canvas/withRemoteSafeArea.js.map +1 -1
  161. package/lib/features/characters/characterStudioProps.js +14 -0
  162. package/lib/features/characters/characterStudioProps.js.map +1 -0
  163. package/lib/features/chat/ChatCodeBlock.js +7 -3
  164. package/lib/features/chat/ChatCodeBlock.js.map +1 -1
  165. package/lib/features/chat/ChatTranscript.js +7 -3
  166. package/lib/features/chat/ChatTranscript.js.map +1 -1
  167. package/lib/features/chat/ChatWidgetCard.js +13 -0
  168. package/lib/features/chat/ChatWidgetCard.js.map +1 -0
  169. package/lib/features/chat/ConnectorConnectCard.js +164 -0
  170. package/lib/features/chat/ConnectorConnectCard.js.map +1 -0
  171. package/lib/features/chat/ConnectorConnectPrompt.js +254 -0
  172. package/lib/features/chat/ConnectorConnectPrompt.js.map +1 -0
  173. package/lib/features/chat/MessageActionBar.js.map +1 -1
  174. package/lib/features/chat/QueuedFollowUps.js +71 -0
  175. package/lib/features/chat/QueuedFollowUps.js.map +1 -0
  176. package/lib/features/chat/chatWidgets.js +37 -0
  177. package/lib/features/chat/chatWidgets.js.map +1 -0
  178. package/lib/features/chat/connectorConnect.js +179 -0
  179. package/lib/features/chat/connectorConnect.js.map +1 -0
  180. package/lib/features/chat/connectorConnectHandbacks.js +55 -0
  181. package/lib/features/chat/connectorConnectHandbacks.js.map +1 -0
  182. package/lib/features/design/DesignEditorExperience.js +643 -0
  183. package/lib/features/design/DesignEditorExperience.js.map +1 -0
  184. package/lib/features/design/DesignExperience.js +444 -0
  185. package/lib/features/design/DesignExperience.js.map +1 -0
  186. package/lib/features/design/designCore.js +298 -0
  187. package/lib/features/design/designCore.js.map +1 -0
  188. package/lib/features/design/designIndex.js +150 -0
  189. package/lib/features/design/designIndex.js.map +1 -0
  190. package/lib/features/design/exportDesign.js +133 -0
  191. package/lib/features/design/exportDesign.js.map +1 -0
  192. package/lib/features/job-search/ApplicationsPanel.js +907 -0
  193. package/lib/features/job-search/ApplicationsPanel.js.map +1 -0
  194. package/lib/features/job-search/ContactsPanel.js +627 -0
  195. package/lib/features/job-search/ContactsPanel.js.map +1 -0
  196. package/lib/features/job-search/InsightsPanel.js +299 -0
  197. package/lib/features/job-search/InsightsPanel.js.map +1 -0
  198. package/lib/features/job-search/InterviewPanel.js +637 -0
  199. package/lib/features/job-search/InterviewPanel.js.map +1 -0
  200. package/lib/features/job-search/JdPastePrompt.js +130 -0
  201. package/lib/features/job-search/JdPastePrompt.js.map +1 -0
  202. package/lib/features/job-search/JobCard.js +199 -0
  203. package/lib/features/job-search/JobCard.js.map +1 -0
  204. package/lib/features/job-search/JobDetailSheet.js +255 -0
  205. package/lib/features/job-search/JobDetailSheet.js.map +1 -0
  206. package/lib/features/job-search/JobSearchAgentChatPane.js +377 -0
  207. package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -0
  208. package/lib/features/job-search/JobSearchExperience.js +1324 -0
  209. package/lib/features/job-search/JobSearchExperience.js.map +1 -0
  210. package/lib/features/job-search/JobSearchLocationField.js +231 -0
  211. package/lib/features/job-search/JobSearchLocationField.js.map +1 -0
  212. package/lib/features/job-search/ProfilePanel.js +679 -0
  213. package/lib/features/job-search/ProfilePanel.js.map +1 -0
  214. package/lib/features/job-search/RepliesPanel.js +344 -0
  215. package/lib/features/job-search/RepliesPanel.js.map +1 -0
  216. package/lib/features/job-search/SavedPanel.js +297 -0
  217. package/lib/features/job-search/SavedPanel.js.map +1 -0
  218. package/lib/features/job-search/chat/widgetContent.js +29 -0
  219. package/lib/features/job-search/chat/widgetContent.js.map +1 -0
  220. package/lib/features/job-search/cvText.js +91 -0
  221. package/lib/features/job-search/cvText.js.map +1 -0
  222. package/lib/features/job-search/jobAgentSwipe.js +7 -0
  223. package/lib/features/job-search/jobAgentSwipe.js.map +1 -0
  224. package/lib/features/job-search/jobSearchClient.js +184 -0
  225. package/lib/features/job-search/jobSearchClient.js.map +1 -0
  226. package/lib/features/job-search/jobSearchExec.js +14 -0
  227. package/lib/features/job-search/jobSearchExec.js.map +1 -0
  228. package/lib/features/job-search/jobSearchRuntime.js +50 -0
  229. package/lib/features/job-search/jobSearchRuntime.js.map +1 -0
  230. package/lib/features/job-search/jobSearchTheme.js +44 -0
  231. package/lib/features/job-search/jobSearchTheme.js.map +1 -0
  232. package/lib/features/job-search/savedJobs.js +85 -0
  233. package/lib/features/job-search/savedJobs.js.map +1 -0
  234. package/lib/features/job-search/searchHistory.js +117 -0
  235. package/lib/features/job-search/searchHistory.js.map +1 -0
  236. package/lib/features/job-search/types.js +36 -0
  237. package/lib/features/job-search/types.js.map +1 -0
  238. package/lib/features/job-search/useJobSearchSession.js +558 -0
  239. package/lib/features/job-search/useJobSearchSession.js.map +1 -0
  240. package/lib/features/messaging/ChatComponents.js +529 -0
  241. package/lib/features/messaging/ChatComponents.js.map +1 -0
  242. package/lib/features/messaging/ChatInviteDeepLink.js +116 -0
  243. package/lib/features/messaging/ChatInviteDeepLink.js.map +1 -0
  244. package/lib/features/messaging/ContactsScreen.js +288 -0
  245. package/lib/features/messaging/ContactsScreen.js.map +1 -0
  246. package/lib/features/messaging/ConversationListScreen.js +147 -0
  247. package/lib/features/messaging/ConversationListScreen.js.map +1 -0
  248. package/lib/features/messaging/MessageActions.js +290 -0
  249. package/lib/features/messaging/MessageActions.js.map +1 -0
  250. package/lib/features/messaging/NativeChatExperience.js +189 -0
  251. package/lib/features/messaging/NativeChatExperience.js.map +1 -0
  252. package/lib/features/messaging/RegistrationScreen.js +11 -14
  253. package/lib/features/messaging/RegistrationScreen.js.map +1 -1
  254. package/lib/features/messaging/ThreadScreen.js +215 -0
  255. package/lib/features/messaging/ThreadScreen.js.map +1 -0
  256. package/lib/features/messaging/chatInviteLink.js +52 -0
  257. package/lib/features/messaging/chatInviteLink.js.map +1 -0
  258. package/lib/features/messaging/chatModel.js +278 -0
  259. package/lib/features/messaging/chatModel.js.map +1 -0
  260. package/lib/features/messaging/chatOperations.js +106 -1
  261. package/lib/features/messaging/chatOperations.js.map +1 -1
  262. package/lib/features/messaging/emojiCatalog.js +60 -0
  263. package/lib/features/messaging/emojiCatalog.js.map +1 -0
  264. package/lib/features/messaging/emojiKeywords.js +1592 -0
  265. package/lib/features/messaging/emojiKeywords.js.map +1 -0
  266. package/lib/features/messaging/nativeChatChannelQuery.js +27 -0
  267. package/lib/features/messaging/nativeChatChannelQuery.js.map +1 -0
  268. package/lib/features/messaging/phoneNumbers.js +52 -1
  269. package/lib/features/messaging/phoneNumbers.js.map +1 -1
  270. package/lib/features/messaging/sha256.js +68 -0
  271. package/lib/features/messaging/sha256.js.map +1 -0
  272. package/lib/features/messaging/useChatData.js +421 -0
  273. package/lib/features/messaging/useChatData.js.map +1 -0
  274. package/lib/features/messaging/useContactMatches.js +191 -0
  275. package/lib/features/messaging/useContactMatches.js.map +1 -0
  276. package/lib/features/messaging/usePhoneVerification.js +12 -12
  277. package/lib/features/messaging/usePhoneVerification.js.map +1 -1
  278. package/lib/features/messaging/yantraChatOrg.js +8 -3
  279. package/lib/features/messaging/yantraChatOrg.js.map +1 -1
  280. package/lib/features/resume/AnnotateModal.js +100 -0
  281. package/lib/features/resume/AnnotateModal.js.map +1 -0
  282. package/lib/features/resume/AnnotationBar.js +69 -0
  283. package/lib/features/resume/AnnotationBar.js.map +1 -0
  284. package/lib/features/resume/ExportSheet.js +105 -0
  285. package/lib/features/resume/ExportSheet.js.map +1 -0
  286. package/lib/features/resume/ResumeAgentChatPane.js +95 -0
  287. package/lib/features/resume/ResumeAgentChatPane.js.map +1 -0
  288. package/lib/features/resume/ResumeEditor.js +676 -0
  289. package/lib/features/resume/ResumeEditor.js.map +1 -0
  290. package/lib/features/resume/ResumeExperience.js +235 -0
  291. package/lib/features/resume/ResumeExperience.js.map +1 -0
  292. package/lib/features/resume/ResumeListPanel.js +262 -0
  293. package/lib/features/resume/ResumeListPanel.js.map +1 -0
  294. package/lib/features/resume/ResumeToolbar.js +236 -0
  295. package/lib/features/resume/ResumeToolbar.js.map +1 -0
  296. package/lib/features/resume/annotations.js +17 -0
  297. package/lib/features/resume/annotations.js.map +1 -0
  298. package/lib/features/resume/documentCss.js +52 -0
  299. package/lib/features/resume/documentCss.js.map +1 -0
  300. package/lib/features/resume/draft.js +89 -0
  301. package/lib/features/resume/draft.js.map +1 -0
  302. package/lib/features/resume/exportResume.js +43 -0
  303. package/lib/features/resume/exportResume.js.map +1 -0
  304. package/lib/features/resume/pickResumePhoto.js +22 -0
  305. package/lib/features/resume/pickResumePhoto.js.map +1 -0
  306. package/lib/features/resume/renderResume.js +121 -0
  307. package/lib/features/resume/renderResume.js.map +1 -0
  308. package/lib/features/resume/resumeClient.js +69 -0
  309. package/lib/features/resume/resumeClient.js.map +1 -0
  310. package/lib/features/resume/resumeExec.js +14 -0
  311. package/lib/features/resume/resumeExec.js.map +1 -0
  312. package/lib/features/resume/resumeIndex.js +244 -0
  313. package/lib/features/resume/resumeIndex.js.map +1 -0
  314. package/lib/features/resume/resumeRuntime.js +50 -0
  315. package/lib/features/resume/resumeRuntime.js.map +1 -0
  316. package/lib/features/resume/resumeTheme.js +34 -0
  317. package/lib/features/resume/resumeTheme.js.map +1 -0
  318. package/lib/features/resume/resumeToolbox.js +49 -0
  319. package/lib/features/resume/resumeToolbox.js.map +1 -0
  320. package/lib/features/resume/templates.js +90 -0
  321. package/lib/features/resume/templates.js.map +1 -0
  322. package/lib/features/resume/types.js +10 -0
  323. package/lib/features/resume/types.js.map +1 -0
  324. package/lib/features/resume/useResumeSession.js +183 -0
  325. package/lib/features/resume/useResumeSession.js.map +1 -0
  326. package/lib/features/shopping/DealsPanel.js +254 -0
  327. package/lib/features/shopping/DealsPanel.js.map +1 -0
  328. package/lib/features/shopping/HistoryPanel.js +147 -0
  329. package/lib/features/shopping/HistoryPanel.js.map +1 -0
  330. package/lib/features/shopping/OrdersPanel.js +157 -0
  331. package/lib/features/shopping/OrdersPanel.js.map +1 -0
  332. package/lib/features/shopping/ProductCard.js +326 -0
  333. package/lib/features/shopping/ProductCard.js.map +1 -0
  334. package/lib/features/shopping/ProductDetailSheet.js +313 -0
  335. package/lib/features/shopping/ProductDetailSheet.js.map +1 -0
  336. package/lib/features/shopping/ProductFilterBar.js +153 -0
  337. package/lib/features/shopping/ProductFilterBar.js.map +1 -0
  338. package/lib/features/shopping/ProductPhoto.js +27 -0
  339. package/lib/features/shopping/ProductPhoto.js.map +1 -0
  340. package/lib/features/shopping/SavedPanel.js +139 -0
  341. package/lib/features/shopping/SavedPanel.js.map +1 -0
  342. package/lib/features/shopping/ShoppingAgentChatPane.js +436 -0
  343. package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -0
  344. package/lib/features/shopping/ShoppingExperience.js +888 -0
  345. package/lib/features/shopping/ShoppingExperience.js.map +1 -0
  346. package/lib/features/shopping/TrendingSections.js +199 -0
  347. package/lib/features/shopping/TrendingSections.js.map +1 -0
  348. package/lib/features/shopping/WatchlistPanel.js +148 -0
  349. package/lib/features/shopping/WatchlistPanel.js.map +1 -0
  350. package/lib/features/shopping/catalog.js +238 -0
  351. package/lib/features/shopping/catalog.js.map +1 -0
  352. package/lib/features/shopping/chat/ShoppingChatResultCard.js +175 -0
  353. package/lib/features/shopping/chat/ShoppingChatResultCard.js.map +1 -0
  354. package/lib/features/shopping/chat/streamAssistantReply.js +34 -0
  355. package/lib/features/shopping/chat/streamAssistantReply.js.map +1 -0
  356. package/lib/features/shopping/chat/widgetContent.js +233 -0
  357. package/lib/features/shopping/chat/widgetContent.js.map +1 -0
  358. package/lib/features/shopping/hooks/useTrendingProducts.js +162 -0
  359. package/lib/features/shopping/hooks/useTrendingProducts.js.map +1 -0
  360. package/lib/features/shopping/productImage.js +42 -0
  361. package/lib/features/shopping/productImage.js.map +1 -0
  362. package/lib/features/shopping/savedProducts.js +84 -0
  363. package/lib/features/shopping/savedProducts.js.map +1 -0
  364. package/lib/features/shopping/services/catalogActions.js +166 -0
  365. package/lib/features/shopping/services/catalogActions.js.map +1 -0
  366. package/lib/features/shopping/services/parsePriceCheckIntent.js +58 -0
  367. package/lib/features/shopping/services/parsePriceCheckIntent.js.map +1 -0
  368. package/lib/features/shopping/services/parseShoppingIntent.js +67 -0
  369. package/lib/features/shopping/services/parseShoppingIntent.js.map +1 -0
  370. package/lib/features/shopping/services/productAvailability.js +25 -0
  371. package/lib/features/shopping/services/productAvailability.js.map +1 -0
  372. package/lib/features/shopping/services/productFilters.js +72 -0
  373. package/lib/features/shopping/services/productFilters.js.map +1 -0
  374. package/lib/features/shopping/services/retailerUrl.js +75 -0
  375. package/lib/features/shopping/services/retailerUrl.js.map +1 -0
  376. package/lib/features/shopping/services/shoppingChatReply.js +46 -0
  377. package/lib/features/shopping/services/shoppingChatReply.js.map +1 -0
  378. package/lib/features/shopping/services/shoppingProductSearch.js +336 -0
  379. package/lib/features/shopping/services/shoppingProductSearch.js.map +1 -0
  380. package/lib/features/shopping/services/shoppingSearchConnectorClient.js +41 -0
  381. package/lib/features/shopping/services/shoppingSearchConnectorClient.js.map +1 -0
  382. package/lib/features/shopping/shopAgentSwipe.js +7 -0
  383. package/lib/features/shopping/shopAgentSwipe.js.map +1 -0
  384. package/lib/features/shopping/shoppingCart.js +116 -0
  385. package/lib/features/shopping/shoppingCart.js.map +1 -0
  386. package/lib/features/shopping/shoppingExec.js +14 -0
  387. package/lib/features/shopping/shoppingExec.js.map +1 -0
  388. package/lib/features/shopping/shoppingHistoryStore.js +176 -0
  389. package/lib/features/shopping/shoppingHistoryStore.js.map +1 -0
  390. package/lib/features/shopping/shoppingRuntime.js +63 -0
  391. package/lib/features/shopping/shoppingRuntime.js.map +1 -0
  392. package/lib/features/shopping/timeAgo.js +14 -0
  393. package/lib/features/shopping/timeAgo.js.map +1 -0
  394. package/lib/features/shopping/useShoppingSearch.js +262 -0
  395. package/lib/features/shopping/useShoppingSearch.js.map +1 -0
  396. package/lib/features/travel/BookHeaderGlow.js +48 -0
  397. package/lib/features/travel/BookHeaderGlow.js.map +1 -0
  398. package/lib/features/travel/BookingsPanel.js +29 -0
  399. package/lib/features/travel/BookingsPanel.js.map +1 -0
  400. package/lib/features/travel/DiscoverPanel.js +155 -0
  401. package/lib/features/travel/DiscoverPanel.js.map +1 -0
  402. package/lib/features/travel/FlightCompareBar.js +86 -0
  403. package/lib/features/travel/FlightCompareBar.js.map +1 -0
  404. package/lib/features/travel/FlightDealsBoard.js +100 -0
  405. package/lib/features/travel/FlightDealsBoard.js.map +1 -0
  406. package/lib/features/travel/HistoryPanel.js +82 -0
  407. package/lib/features/travel/HistoryPanel.js.map +1 -0
  408. package/lib/features/travel/PopularDestinations.js +144 -0
  409. package/lib/features/travel/PopularDestinations.js.map +1 -0
  410. package/lib/features/travel/SavedPanel.js +27 -0
  411. package/lib/features/travel/SavedPanel.js.map +1 -0
  412. package/lib/features/travel/TravelAgentChatPane.js +303 -0
  413. package/lib/features/travel/TravelAgentChatPane.js.map +1 -0
  414. package/lib/features/travel/TravelBookHero.js +425 -0
  415. package/lib/features/travel/TravelBookHero.js.map +1 -0
  416. package/lib/features/travel/TravelDatesField.js +234 -0
  417. package/lib/features/travel/TravelDatesField.js.map +1 -0
  418. package/lib/features/travel/TravelDetailSheet.js +106 -0
  419. package/lib/features/travel/TravelDetailSheet.js.map +1 -0
  420. package/lib/features/travel/TravelExperience.js +624 -0
  421. package/lib/features/travel/TravelExperience.js.map +1 -0
  422. package/lib/features/travel/TravelGuestsField.js +85 -0
  423. package/lib/features/travel/TravelGuestsField.js.map +1 -0
  424. package/lib/features/travel/TravelLanding.js +318 -0
  425. package/lib/features/travel/TravelLanding.js.map +1 -0
  426. package/lib/features/travel/TravelLocationField.js +179 -0
  427. package/lib/features/travel/TravelLocationField.js.map +1 -0
  428. package/lib/features/travel/TravelPropertyCard.js +266 -0
  429. package/lib/features/travel/TravelPropertyCard.js.map +1 -0
  430. package/lib/features/travel/TravelPropertyPhoto.js +22 -0
  431. package/lib/features/travel/TravelPropertyPhoto.js.map +1 -0
  432. package/lib/features/travel/TravelRailFlyout.js +79 -0
  433. package/lib/features/travel/TravelRailFlyout.js.map +1 -0
  434. package/lib/features/travel/TravelResultsMap.js +126 -0
  435. package/lib/features/travel/TravelResultsMap.js.map +1 -0
  436. package/lib/features/travel/WorkspacePanel.js +148 -0
  437. package/lib/features/travel/WorkspacePanel.js.map +1 -0
  438. package/lib/features/travel/appNav.js +244 -0
  439. package/lib/features/travel/appNav.js.map +1 -0
  440. package/lib/features/travel/calendarDays.js +50 -0
  441. package/lib/features/travel/calendarDays.js.map +1 -0
  442. package/lib/features/travel/catalog.js +72 -0
  443. package/lib/features/travel/catalog.js.map +1 -0
  444. package/lib/features/travel/chat/TravelChatResultCard.js +107 -0
  445. package/lib/features/travel/chat/TravelChatResultCard.js.map +1 -0
  446. package/lib/features/travel/chat/widgetContent.js +107 -0
  447. package/lib/features/travel/chat/widgetContent.js.map +1 -0
  448. package/lib/features/travel/flightDeals.js +65 -0
  449. package/lib/features/travel/flightDeals.js.map +1 -0
  450. package/lib/features/travel/mapCoordinates.js +36 -0
  451. package/lib/features/travel/mapCoordinates.js.map +1 -0
  452. package/lib/features/travel/parseTravelIntent.js +303 -0
  453. package/lib/features/travel/parseTravelIntent.js.map +1 -0
  454. package/lib/features/travel/savedStays.js +66 -0
  455. package/lib/features/travel/savedStays.js.map +1 -0
  456. package/lib/features/travel/services/flightDealsBoard.js +111 -0
  457. package/lib/features/travel/services/flightDealsBoard.js.map +1 -0
  458. package/lib/features/travel/services/flightSearchConnectorClient.js +42 -0
  459. package/lib/features/travel/services/flightSearchConnectorClient.js.map +1 -0
  460. package/lib/features/travel/services/geocodeLocation.js +79 -0
  461. package/lib/features/travel/services/geocodeLocation.js.map +1 -0
  462. package/lib/features/travel/services/placePredictions.js +113 -0
  463. package/lib/features/travel/services/placePredictions.js.map +1 -0
  464. package/lib/features/travel/services/resolveOriginCity.js +27 -0
  465. package/lib/features/travel/services/resolveOriginCity.js.map +1 -0
  466. package/lib/features/travel/services/resortifiConnectorClient.js +76 -0
  467. package/lib/features/travel/services/resortifiConnectorClient.js.map +1 -0
  468. package/lib/features/travel/services/travelFlightSearch.js +289 -0
  469. package/lib/features/travel/services/travelFlightSearch.js.map +1 -0
  470. package/lib/features/travel/services/travelPropertySearch.js +377 -0
  471. package/lib/features/travel/services/travelPropertySearch.js.map +1 -0
  472. package/lib/features/travel/travelAgentSwipe.js +7 -0
  473. package/lib/features/travel/travelAgentSwipe.js.map +1 -0
  474. package/lib/features/travel/travelExec.js +14 -0
  475. package/lib/features/travel/travelExec.js.map +1 -0
  476. package/lib/features/travel/travelHistoryStore.js +108 -0
  477. package/lib/features/travel/travelHistoryStore.js.map +1 -0
  478. package/lib/features/travel/travelRuntime.js +62 -0
  479. package/lib/features/travel/travelRuntime.js.map +1 -0
  480. package/lib/features/travel/types.js +9 -0
  481. package/lib/features/travel/types.js.map +1 -0
  482. package/lib/features/travel/useTravelSearch.js +330 -0
  483. package/lib/features/travel/useTravelSearch.js.map +1 -0
  484. package/lib/features/travel/workspaceContent.js +548 -0
  485. package/lib/features/travel/workspaceContent.js.map +1 -0
  486. package/lib/hooks/useCdecliChannel.js +128 -6
  487. package/lib/hooks/useCdecliChannel.js.map +1 -1
  488. package/lib/hooks/useChatApi.js +4 -2
  489. package/lib/hooks/useChatApi.js.map +1 -1
  490. package/lib/hooks/useChatStream.js +77 -63
  491. package/lib/hooks/useChatStream.js.map +1 -1
  492. package/lib/hooks/useHostConnectorCard.js +24 -0
  493. package/lib/hooks/useHostConnectorCard.js.map +1 -0
  494. package/lib/hooks/useObtainSystemToken.js +23 -5
  495. package/lib/hooks/useObtainSystemToken.js.map +1 -1
  496. package/lib/hooks/webViewRetentionPolicy.js +1 -0
  497. package/lib/hooks/webViewRetentionPolicy.js.map +1 -1
  498. package/lib/index.js +1 -1
  499. package/lib/index.js.map +1 -1
  500. package/lib/screens/Chat/index.js +51 -22
  501. package/lib/screens/Chat/index.js.map +1 -1
  502. package/lib/screens/ChatNative/index.js +13 -2
  503. package/lib/screens/ChatNative/index.js.map +1 -1
  504. package/lib/screens/Home/HomeScreen.js +3 -3
  505. package/lib/screens/Home/HomeScreen.js.map +1 -1
  506. package/lib/screens/Home/components/ChatHistoryLanding.js +32 -32
  507. package/lib/screens/Home/components/ChatHistoryLanding.js.map +1 -1
  508. package/lib/screens/JobSearchNative/useJobSearchHostChat.js +12 -6
  509. package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
  510. package/lib/screens/ResumeNative/useResumeHostChat.js +12 -6
  511. package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
  512. package/lib/screens/ShoppingNative/useShoppingHostChat.js +12 -6
  513. package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
  514. package/lib/screens/TravelNative/useTravelHostChat.js +12 -6
  515. package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
  516. package/lib/screens/WebBuilder/WebViewWithNavigation.js +2 -2
  517. package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
  518. package/lib/services/brainQuickReply.js +38 -1
  519. package/lib/services/brainQuickReply.js.map +1 -1
  520. package/lib/state/chatThreadMerge.js +6 -1
  521. package/lib/state/chatThreadMerge.js.map +1 -1
  522. package/package.json +6 -4
@@ -0,0 +1,126 @@
1
+ import {jsx}from'react/jsx-runtime';import {useRef,useMemo,useEffect}from'react';import {StyleSheet,View}from'react-native';import {WebView}from'react-native-webview';import {compactMarkerPrice}from'./flightDeals.js';import {withMapCoordinates}from'./mapCoordinates.js';import {useWebViewRetention}from'../../hooks/useWebViewRetention.js';function mapPins(properties, center) {
2
+ return withMapCoordinates(properties.slice(0, 60), center).map((property) => ({
3
+ id: property.id,
4
+ lat: property.latitude,
5
+ lng: property.longitude,
6
+ price: compactMarkerPrice(property.priceLabel, property.price) || "Stay"
7
+ }));
8
+ }
9
+ function mapHtml(center, pins) {
10
+ const payload = JSON.stringify({
11
+ center,
12
+ pins
13
+ }).replace(/</g, "\\u003c");
14
+ return `<!DOCTYPE html>
15
+ <html>
16
+ <head>
17
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
18
+ <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
19
+ <style>
20
+ html, body, #map { height: 100%; margin: 0; }
21
+ .pin {
22
+ background: #fff; color: #0f172a; border-radius: 999px;
23
+ padding: 4px 8px; font: 700 12px/1.2 -apple-system, system-ui, sans-serif;
24
+ box-shadow: 0 2px 8px rgba(15,23,42,.25); border: 1px solid #e2e8f0;
25
+ white-space: nowrap;
26
+ transition: transform .15s ease, background .15s ease, color .15s ease;
27
+ }
28
+ .pin.on {
29
+ background: #2869E0; color: #fff; border-color: #1d4ed8;
30
+ transform: scale(1.14);
31
+ box-shadow: 0 4px 14px rgba(40,105,224,.45);
32
+ }
33
+ </style>
34
+ </head>
35
+ <body>
36
+ <div id="map"></div>
37
+ <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"><\/script>
38
+ <script>
39
+ const data = ${payload};
40
+ const map = L.map('map', { zoomControl: true }).setView([data.center.lat, data.center.lng], 12);
41
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
42
+ attribution: '&copy; OpenStreetMap'
43
+ }).addTo(map);
44
+ const markers = {};
45
+ function iconFor(pin, on) {
46
+ return L.divIcon({
47
+ className: '',
48
+ html: '<div class="pin' + (on ? ' on' : '') + '">' + pin.price + '</div>',
49
+ iconSize: [64, 28],
50
+ iconAnchor: [32, 14],
51
+ });
52
+ }
53
+ const bounds = [];
54
+ data.pins.forEach((pin) => {
55
+ const marker = L.marker([pin.lat, pin.lng], { icon: iconFor(pin, false) }).addTo(map);
56
+ marker.on('click', function () {
57
+ window.ReactNativeWebView && window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'select', id: pin.id }));
58
+ });
59
+ markers[pin.id] = marker;
60
+ bounds.push([pin.lat, pin.lng]);
61
+ });
62
+ if (bounds.length > 1) map.fitBounds(bounds, { padding: [28, 28], maxZoom: 14 });
63
+ window.__setTravelPin = function (id) {
64
+ data.pins.forEach((pin) => {
65
+ const marker = markers[pin.id];
66
+ if (!marker) return;
67
+ const on = pin.id === id;
68
+ marker.setIcon(iconFor(pin, on));
69
+ marker.setZIndexOffset(on ? 1000 : 0);
70
+ });
71
+ if (id && markers[id]) {
72
+ map.panTo(markers[id].getLatLng(), { animate: true });
73
+ if (map.getZoom() < 13) map.setZoom(13);
74
+ }
75
+ };
76
+ <\/script>
77
+ </body>
78
+ </html>`;
79
+ }
80
+ function TravelResultsMap({
81
+ properties,
82
+ center,
83
+ selectedId,
84
+ onSelect
85
+ }) {
86
+ const webRef = useRef(null);
87
+ const pins = useMemo(() => mapPins(properties, center), [properties, center]);
88
+ const html = useMemo(() => mapHtml(center, pins), [center, pins]);
89
+ const shouldRender = useWebViewRetention({
90
+ releaseOnBlur: true
91
+ });
92
+ useEffect(() => {
93
+ var _a;
94
+ const script = `window.__setTravelPin && window.__setTravelPin(${JSON.stringify(selectedId)}); true;`;
95
+ (_a = webRef.current) == null ? void 0 : _a.injectJavaScript(script);
96
+ }, [selectedId, html]);
97
+ const onMessage = (event) => {
98
+ try {
99
+ const payload = JSON.parse(event.nativeEvent.data);
100
+ if (payload.type === "select" && payload.id) onSelect(payload.id);
101
+ } catch (e) {
102
+ }
103
+ };
104
+ if (!shouldRender) {
105
+ return /* @__PURE__ */ jsx(View, { style: styles.wrap, testID: "travel-results-map" });
106
+ }
107
+ return /* @__PURE__ */ jsx(View, { style: styles.wrap, testID: "travel-results-map", children: /* @__PURE__ */ jsx(WebView, { ref: webRef, originWhitelist: ["*"], source: {
108
+ html
109
+ }, onMessage, onLoadEnd: () => {
110
+ var _a;
111
+ (_a = webRef.current) == null ? void 0 : _a.injectJavaScript(`window.__setTravelPin && window.__setTravelPin(${JSON.stringify(selectedId)}); true;`);
112
+ }, javaScriptEnabled: true, mixedContentMode: "always", androidLayerType: "hardware", nestedScrollEnabled: true, style: styles.web, setSupportMultipleWindows: false }) });
113
+ }
114
+ const styles = StyleSheet.create({
115
+ wrap: {
116
+ flex: 1,
117
+ minHeight: 180,
118
+ borderRadius: 16,
119
+ overflow: "hidden",
120
+ backgroundColor: "#e2e8f0"
121
+ },
122
+ web: {
123
+ flex: 1,
124
+ backgroundColor: "transparent"
125
+ }
126
+ });export{TravelResultsMap};//# sourceMappingURL=TravelResultsMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TravelResultsMap.js","sources":["../../../src/features/travel/TravelResultsMap.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { WebView, type WebViewMessageEvent } from 'react-native-webview';\nimport { compactMarkerPrice } from './flightDeals';\nimport { withMapCoordinates } from './mapCoordinates';\nimport type { TravelProperty } from './types';\nimport { useWebViewRetention } from '../../hooks/useWebViewRetention';\n\ninterface MapPin {\n id: string;\n lat: number;\n lng: number;\n price: string;\n}\n\nfunction mapPins(properties: TravelProperty[], center: { lat: number; lng: number }): MapPin[] {\n return withMapCoordinates(properties.slice(0, 60), center).map((property) => ({\n id: property.id,\n lat: property.latitude,\n lng: property.longitude,\n price: compactMarkerPrice(property.priceLabel, property.price) || 'Stay',\n }));\n}\n\nfunction mapHtml(center: { lat: number; lng: number }, pins: MapPin[]): string {\n const payload = JSON.stringify({ center, pins }).replace(/</g, '\\\\u003c');\n return `<!DOCTYPE html>\n<html>\n<head>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" />\n <style>\n html, body, #map { height: 100%; margin: 0; }\n .pin {\n background: #fff; color: #0f172a; border-radius: 999px;\n padding: 4px 8px; font: 700 12px/1.2 -apple-system, system-ui, sans-serif;\n box-shadow: 0 2px 8px rgba(15,23,42,.25); border: 1px solid #e2e8f0;\n white-space: nowrap;\n transition: transform .15s ease, background .15s ease, color .15s ease;\n }\n .pin.on {\n background: #2869E0; color: #fff; border-color: #1d4ed8;\n transform: scale(1.14);\n box-shadow: 0 4px 14px rgba(40,105,224,.45);\n }\n </style>\n</head>\n<body>\n <div id=\"map\"></div>\n <script src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"></script>\n <script>\n const data = ${payload};\n const map = L.map('map', { zoomControl: true }).setView([data.center.lat, data.center.lng], 12);\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution: '&copy; OpenStreetMap'\n }).addTo(map);\n const markers = {};\n function iconFor(pin, on) {\n return L.divIcon({\n className: '',\n html: '<div class=\"pin' + (on ? ' on' : '') + '\">' + pin.price + '</div>',\n iconSize: [64, 28],\n iconAnchor: [32, 14],\n });\n }\n const bounds = [];\n data.pins.forEach((pin) => {\n const marker = L.marker([pin.lat, pin.lng], { icon: iconFor(pin, false) }).addTo(map);\n marker.on('click', function () {\n window.ReactNativeWebView && window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'select', id: pin.id }));\n });\n markers[pin.id] = marker;\n bounds.push([pin.lat, pin.lng]);\n });\n if (bounds.length > 1) map.fitBounds(bounds, { padding: [28, 28], maxZoom: 14 });\n window.__setTravelPin = function (id) {\n data.pins.forEach((pin) => {\n const marker = markers[pin.id];\n if (!marker) return;\n const on = pin.id === id;\n marker.setIcon(iconFor(pin, on));\n marker.setZIndexOffset(on ? 1000 : 0);\n });\n if (id && markers[id]) {\n map.panTo(markers[id].getLatLng(), { animate: true });\n if (map.getZoom() < 13) map.setZoom(13);\n }\n };\n </script>\n</body>\n</html>`;\n}\n\nexport function TravelResultsMap({\n properties,\n center,\n selectedId,\n onSelect,\n}: {\n properties: TravelProperty[];\n center: { lat: number; lng: number };\n selectedId: string | null;\n onSelect: (id: string) => void;\n}) {\n const webRef = useRef<WebView>(null);\n const pins = useMemo(() => mapPins(properties, center), [properties, center]);\n const html = useMemo(() => mapHtml(center, pins), [center, pins]);\n /**\n * Leaflet plus up to 60 OSM raster tiles is routinely 40-80MB of live\n * bitmaps. The map rebuilds from `html` in a frame, so there is no reason to\n * keep that resident behind another screen or while the app is backgrounded.\n */\n const shouldRender = useWebViewRetention({ releaseOnBlur: true });\n\n useEffect(() => {\n const script = `window.__setTravelPin && window.__setTravelPin(${JSON.stringify(selectedId)}); true;`;\n webRef.current?.injectJavaScript(script);\n }, [selectedId, html]);\n\n const onMessage = (event: WebViewMessageEvent) => {\n try {\n const payload = JSON.parse(event.nativeEvent.data) as { type?: string; id?: string };\n if (payload.type === 'select' && payload.id) onSelect(payload.id);\n } catch {\n /* ignore */\n }\n };\n\n // Keep the same wrapper so the surrounding layout does not reflow.\n if (!shouldRender) {\n return <View style={styles.wrap} testID=\"travel-results-map\" />;\n }\n\n return (\n <View style={styles.wrap} testID=\"travel-results-map\">\n <WebView\n ref={webRef}\n originWhitelist={['*']}\n source={{ html }}\n onMessage={onMessage}\n onLoadEnd={() => {\n webRef.current?.injectJavaScript(\n `window.__setTravelPin && window.__setTravelPin(${JSON.stringify(selectedId)}); true;`,\n );\n }}\n javaScriptEnabled\n mixedContentMode=\"always\"\n androidLayerType=\"hardware\"\n nestedScrollEnabled\n style={styles.web}\n setSupportMultipleWindows={false}\n />\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrap: { flex: 1, minHeight: 180, borderRadius: 16, overflow: 'hidden', backgroundColor: '#e2e8f0' },\n web: { flex: 1, backgroundColor: 'transparent' },\n});\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState,useEffect}from'react';import {StyleSheet,ScrollView,Pressable,Text,View}from'react-native';import {APP_NAV}from'./appNav.js';import {workspacePage}from'./workspaceContent.js';const LIBRARY_JUMP = {
2
+ saved: "saved",
3
+ bookings: "bookings",
4
+ "search-history": "history",
5
+ orders: "bookings"
6
+ };
7
+ function WorkspacePanel({
8
+ groupLabel,
9
+ initialPageKey,
10
+ card,
11
+ border,
12
+ ink,
13
+ muted,
14
+ onJumpView,
15
+ onOpenAgent
16
+ }) {
17
+ var _a, _b;
18
+ const groups = useMemo(() => APP_NAV.filter((g) => g.railLabel !== "Assistant"), []);
19
+ const initial = (_a = groups.find((g) => g.label === groupLabel)) != null ? _a : groups[0];
20
+ const [activeLabel, setActiveLabel] = useState(initial.label);
21
+ const group = useMemo(() => {
22
+ var _a2;
23
+ return (_a2 = groups.find((row) => row.label === activeLabel)) != null ? _a2 : groups[0];
24
+ }, [activeLabel, groups]);
25
+ const [pageKey, setPageKey] = useState(initialPageKey || ((_b = group.items.find((item) => item.key)) == null ? void 0 : _b.key) || "orders");
26
+ useEffect(() => {
27
+ const next = groups.find((g) => g.label === groupLabel);
28
+ if (next) setActiveLabel(next.label);
29
+ }, [groupLabel, groups]);
30
+ useEffect(() => {
31
+ if (initialPageKey) setPageKey(initialPageKey);
32
+ }, [initialPageKey]);
33
+ const selectGroup = (next) => {
34
+ setActiveLabel(next.label);
35
+ const first = next.items.find((item) => item.key);
36
+ if (first == null ? void 0 : first.key) setPageKey(first.key);
37
+ };
38
+ const page = workspacePage(pageKey);
39
+ return /* @__PURE__ */ jsxs(ScrollView, { contentContainerStyle: styles.body, keyboardShouldPersistTaps: "handled", children: [
40
+ /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.chips, children: groups.map((row) => {
41
+ const on = row.label === activeLabel;
42
+ return /* @__PURE__ */ jsx(Pressable, { onPress: () => selectGroup(row), style: [styles.chip, {
43
+ backgroundColor: on ? "#2563eb" : "#e2e8f0"
44
+ }], children: /* @__PURE__ */ jsx(Text, { style: {
45
+ color: on ? "#fff" : "#64748b",
46
+ fontWeight: "700",
47
+ fontSize: 12
48
+ }, children: row.railLabel }) }, row.label);
49
+ }) }),
50
+ group.items.filter((item) => item.key).map((item) => {
51
+ const on = item.key === pageKey;
52
+ return /* @__PURE__ */ jsx(Pressable, { onPress: () => setPageKey(item.key), style: [styles.pageRow, {
53
+ backgroundColor: card,
54
+ borderColor: on ? "#2563eb" : border
55
+ }], children: /* @__PURE__ */ jsx(Text, { style: [styles.pageTitle, {
56
+ color: ink
57
+ }], children: item.title }) }, item.key);
58
+ }),
59
+ /* @__PURE__ */ jsxs(View, { style: [styles.sheet, {
60
+ backgroundColor: card,
61
+ borderColor: border
62
+ }], children: [
63
+ /* @__PURE__ */ jsx(Text, { style: [styles.kicker, {
64
+ color: muted
65
+ }], children: page.kicker }),
66
+ /* @__PURE__ */ jsx(Text, { style: [styles.summary, {
67
+ color: ink
68
+ }], children: page.summary }),
69
+ page.rows.map((row) => /* @__PURE__ */ jsxs(View, { style: [styles.item, {
70
+ borderColor: border
71
+ }], children: [
72
+ /* @__PURE__ */ jsx(Text, { style: [styles.itemTitle, {
73
+ color: ink
74
+ }], children: row.title }),
75
+ /* @__PURE__ */ jsx(Text, { style: {
76
+ color: muted,
77
+ fontSize: 12
78
+ }, children: row.meta })
79
+ ] }, row.title)),
80
+ LIBRARY_JUMP[pageKey] ? /* @__PURE__ */ jsx(Pressable, { onPress: () => onJumpView(LIBRARY_JUMP[pageKey]), style: styles.cta, children: /* @__PURE__ */ jsxs(Text, { style: styles.ctaText, children: [
81
+ "Open ",
82
+ LIBRARY_JUMP[pageKey]
83
+ ] }) }) : null,
84
+ pageKey === "assistant" ? /* @__PURE__ */ jsx(Pressable, { onPress: onOpenAgent, style: styles.cta, children: /* @__PURE__ */ jsx(Text, { style: styles.ctaText, children: "Open Travel Agent" }) }) : null
85
+ ] })
86
+ ] });
87
+ }
88
+ const styles = StyleSheet.create({
89
+ body: {
90
+ padding: 16,
91
+ gap: 8,
92
+ paddingBottom: 24
93
+ },
94
+ chips: {
95
+ gap: 8
96
+ },
97
+ chip: {
98
+ borderRadius: 999,
99
+ paddingHorizontal: 12,
100
+ paddingVertical: 6
101
+ },
102
+ pageRow: {
103
+ borderWidth: 1,
104
+ borderRadius: 12,
105
+ paddingHorizontal: 12,
106
+ paddingVertical: 10
107
+ },
108
+ pageTitle: {
109
+ fontSize: 14,
110
+ fontWeight: "600"
111
+ },
112
+ sheet: {
113
+ borderWidth: 1,
114
+ borderRadius: 16,
115
+ padding: 14,
116
+ gap: 8,
117
+ marginTop: 8
118
+ },
119
+ kicker: {
120
+ fontSize: 11,
121
+ fontWeight: "700",
122
+ letterSpacing: 0.6,
123
+ textTransform: "uppercase"
124
+ },
125
+ summary: {
126
+ fontSize: 14,
127
+ lineHeight: 20
128
+ },
129
+ item: {
130
+ borderTopWidth: StyleSheet.hairlineWidth,
131
+ paddingTop: 8,
132
+ gap: 2
133
+ },
134
+ itemTitle: {
135
+ fontSize: 14,
136
+ fontWeight: "700"
137
+ },
138
+ cta: {
139
+ backgroundColor: "#2563eb",
140
+ borderRadius: 12,
141
+ padding: 12,
142
+ alignItems: "center"
143
+ },
144
+ ctaText: {
145
+ color: "#fff",
146
+ fontWeight: "700"
147
+ }
148
+ });export{WorkspacePanel};//# sourceMappingURL=WorkspacePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacePanel.js","sources":["../../../src/features/travel/WorkspacePanel.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { APP_NAV, type AppNavGroup, type AppPageKey } from './appNav';\nimport { workspacePage } from './workspaceContent';\n\ntype NativeView = 'book' | 'discover' | 'saved' | 'history' | 'bookings';\n\nconst LIBRARY_JUMP: Partial<Record<Exclude<AppPageKey, ''>, NativeView>> = {\n saved: 'saved',\n bookings: 'bookings',\n 'search-history': 'history',\n orders: 'bookings',\n};\n\nexport function WorkspacePanel({\n groupLabel,\n initialPageKey,\n card,\n border,\n ink,\n muted,\n onJumpView,\n onOpenAgent,\n}: {\n groupLabel?: string;\n initialPageKey?: Exclude<AppPageKey, ''>;\n card: string;\n border: string;\n ink: string;\n muted: string;\n onJumpView: (view: NativeView) => void;\n onOpenAgent: () => void;\n}) {\n const groups = useMemo(() => APP_NAV.filter((g) => g.railLabel !== 'Assistant'), []);\n const initial = groups.find((g) => g.label === groupLabel) ?? groups[0];\n const [activeLabel, setActiveLabel] = useState(initial.label);\n const group = useMemo(() => groups.find((row) => row.label === activeLabel) ?? groups[0], [activeLabel, groups]);\n const [pageKey, setPageKey] = useState<Exclude<AppPageKey, ''>>(\n initialPageKey || (group.items.find((item) => item.key)?.key as Exclude<AppPageKey, ''>) || 'orders',\n );\n\n useEffect(() => {\n const next = groups.find((g) => g.label === groupLabel);\n if (next) setActiveLabel(next.label);\n }, [groupLabel, groups]);\n\n useEffect(() => {\n if (initialPageKey) setPageKey(initialPageKey);\n }, [initialPageKey]);\n\n const selectGroup = (next: AppNavGroup) => {\n setActiveLabel(next.label);\n const first = next.items.find((item) => item.key);\n if (first?.key) setPageKey(first.key as Exclude<AppPageKey, ''>);\n };\n\n const page = workspacePage(pageKey);\n\n return (\n <ScrollView contentContainerStyle={styles.body} keyboardShouldPersistTaps=\"handled\">\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.chips}>\n {groups.map((row) => {\n const on = row.label === activeLabel;\n return (\n <Pressable\n key={row.label}\n onPress={() => selectGroup(row)}\n style={[styles.chip, { backgroundColor: on ? '#2563eb' : '#e2e8f0' }]}\n >\n <Text style={{ color: on ? '#fff' : '#64748b', fontWeight: '700', fontSize: 12 }}>\n {row.railLabel}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n {group.items\n .filter((item) => item.key)\n .map((item) => {\n const on = item.key === pageKey;\n return (\n <Pressable\n key={item.key}\n onPress={() => setPageKey(item.key as Exclude<AppPageKey, ''>)}\n style={[styles.pageRow, { backgroundColor: card, borderColor: on ? '#2563eb' : border }]}\n >\n <Text style={[styles.pageTitle, { color: ink }]}>{item.title}</Text>\n </Pressable>\n );\n })}\n <View style={[styles.sheet, { backgroundColor: card, borderColor: border }]}>\n <Text style={[styles.kicker, { color: muted }]}>{page.kicker}</Text>\n <Text style={[styles.summary, { color: ink }]}>{page.summary}</Text>\n {page.rows.map((row) => (\n <View key={row.title} style={[styles.item, { borderColor: border }]}>\n <Text style={[styles.itemTitle, { color: ink }]}>{row.title}</Text>\n <Text style={{ color: muted, fontSize: 12 }}>{row.meta}</Text>\n </View>\n ))}\n {LIBRARY_JUMP[pageKey] ? (\n <Pressable onPress={() => onJumpView(LIBRARY_JUMP[pageKey]!)} style={styles.cta}>\n <Text style={styles.ctaText}>Open {LIBRARY_JUMP[pageKey]}</Text>\n </Pressable>\n ) : null}\n {pageKey === 'assistant' ? (\n <Pressable onPress={onOpenAgent} style={styles.cta}>\n <Text style={styles.ctaText}>Open Travel Agent</Text>\n </Pressable>\n ) : null}\n </View>\n </ScrollView>\n );\n}\n\nconst styles = StyleSheet.create({\n body: { padding: 16, gap: 8, paddingBottom: 24 },\n chips: { gap: 8 },\n chip: { borderRadius: 999, paddingHorizontal: 12, paddingVertical: 6 },\n pageRow: { borderWidth: 1, borderRadius: 12, paddingHorizontal: 12, paddingVertical: 10 },\n pageTitle: { fontSize: 14, fontWeight: '600' },\n sheet: { borderWidth: 1, borderRadius: 16, padding: 14, gap: 8, marginTop: 8 },\n kicker: { fontSize: 11, fontWeight: '700', letterSpacing: 0.6, textTransform: 'uppercase' },\n summary: { fontSize: 14, lineHeight: 20 },\n item: { borderTopWidth: StyleSheet.hairlineWidth, paddingTop: 8, gap: 2 },\n itemTitle: { fontSize: 14, fontWeight: '700' },\n cta: { backgroundColor: '#2563eb', borderRadius: 12, padding: 12, alignItems: 'center' },\n ctaText: { color: '#fff', fontWeight: '700' },\n});\n"],"names":["_a"],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ const APP_NAV = [{
2
+ label: "Travel",
3
+ railLabel: "Travel",
4
+ icon: "airplane",
5
+ items: [{
6
+ key: "",
7
+ title: "Book",
8
+ icon: "airplane"
9
+ }, {
10
+ key: "saved",
11
+ title: "Saved",
12
+ icon: "heart-outline"
13
+ }, {
14
+ key: "bookings",
15
+ title: "My bookings",
16
+ icon: "briefcase-outline"
17
+ }, {
18
+ key: "search-history",
19
+ title: "Search history",
20
+ icon: "history"
21
+ }, {
22
+ key: "orders",
23
+ title: "Trips",
24
+ icon: "map-marker-path"
25
+ }, {
26
+ key: "duty-of-care",
27
+ title: "Duty of Care",
28
+ icon: "lifebuoy"
29
+ }]
30
+ }, {
31
+ label: "Expense management",
32
+ railLabel: "Expenses",
33
+ icon: "receipt",
34
+ items: [{
35
+ key: "expenses-onboarding",
36
+ title: "Get started",
37
+ icon: "creation"
38
+ }, {
39
+ key: "expenses",
40
+ title: "Expenses",
41
+ icon: "receipt"
42
+ }, {
43
+ key: "budgets",
44
+ title: "Budgets",
45
+ icon: "cash"
46
+ }, {
47
+ key: "budget-dashboard",
48
+ title: "Budget dashboard",
49
+ icon: "gauge"
50
+ }, {
51
+ key: "admin-categories",
52
+ title: "Categories",
53
+ icon: "tag-outline"
54
+ }, {
55
+ key: "accounts",
56
+ title: "Card accounts",
57
+ icon: "bank"
58
+ }, {
59
+ key: "recurrings",
60
+ title: "Recurrings",
61
+ icon: "refresh"
62
+ }, {
63
+ key: "expense-policy",
64
+ title: "Expense policy",
65
+ icon: "file-check-outline"
66
+ }, {
67
+ key: "admin-workflows",
68
+ title: "Workflows",
69
+ icon: "sitemap"
70
+ }]
71
+ }, {
72
+ label: "Cards & wallet",
73
+ railLabel: "Cards",
74
+ icon: "credit-card-outline",
75
+ items: [{
76
+ key: "cards",
77
+ title: "Cards",
78
+ icon: "credit-card-outline"
79
+ }, {
80
+ key: "cardholders",
81
+ title: "Cardholders",
82
+ icon: "clipboard-list-outline"
83
+ }, {
84
+ key: "order-card",
85
+ title: "Order card",
86
+ icon: "hand-coin-outline"
87
+ }, {
88
+ key: "merchant-map",
89
+ title: "Merchant map",
90
+ icon: "map-outline"
91
+ }, {
92
+ key: "card-visibility",
93
+ title: "Card visibility",
94
+ icon: "tune"
95
+ }, {
96
+ key: "wallet",
97
+ title: "Wallet",
98
+ icon: "wallet-outline"
99
+ }, {
100
+ key: "split-payment-usage",
101
+ title: "Split payment usage",
102
+ icon: "chart-pie"
103
+ }, {
104
+ key: "payments-transactions",
105
+ title: "Transactions",
106
+ icon: "bank-transfer"
107
+ }]
108
+ }, {
109
+ label: "Users & groups",
110
+ railLabel: "People",
111
+ icon: "account-group-outline",
112
+ items: [{
113
+ key: "employees",
114
+ title: "People",
115
+ icon: "account-group-outline"
116
+ }, {
117
+ key: "departments",
118
+ title: "Departments",
119
+ icon: "folder-outline"
120
+ }]
121
+ }, {
122
+ label: "Travel management",
123
+ railLabel: "Manage",
124
+ icon: "shield-outline",
125
+ items: [{
126
+ key: "travel-policies",
127
+ title: "Travel policies",
128
+ icon: "shield-outline"
129
+ }, {
130
+ key: "companies",
131
+ title: "Companies",
132
+ icon: "office-building-outline"
133
+ }, {
134
+ key: "payment-profiles",
135
+ title: "Payment profiles",
136
+ icon: "badge-account-outline"
137
+ }, {
138
+ key: "notifications",
139
+ title: "Notifications",
140
+ icon: "bell-outline"
141
+ }, {
142
+ key: "duty-of-care-settings",
143
+ title: "Duty of Care settings",
144
+ icon: "shield-check-outline"
145
+ }]
146
+ }, {
147
+ label: "Analytics",
148
+ railLabel: "Analytics",
149
+ icon: "chart-bar",
150
+ items: [{
151
+ key: "reports",
152
+ title: "Reports",
153
+ icon: "file-chart-outline"
154
+ }, {
155
+ key: "most-booked-hotels",
156
+ title: "Most booked hotels",
157
+ icon: "home-city-outline"
158
+ }, {
159
+ key: "co2-emissions",
160
+ title: "CO2 emissions",
161
+ icon: "cloud-outline"
162
+ }, {
163
+ key: "cost-differential",
164
+ title: "Cost differential",
165
+ icon: "chart-bar"
166
+ }, {
167
+ key: "cost-savings-vs-direct",
168
+ title: "Cost savings vs direct",
169
+ icon: "chart-line"
170
+ }, {
171
+ key: "admin-loyalty-performance",
172
+ title: "Loyalty performance",
173
+ icon: "gauge"
174
+ }, {
175
+ key: "admin-airline-credits-performance",
176
+ title: "Airline credits",
177
+ icon: "airplane"
178
+ }, {
179
+ key: "rate-guard",
180
+ title: "Rate Guard",
181
+ icon: "shield-outline"
182
+ }, {
183
+ key: "rate-guard-earnings",
184
+ title: "RateGuard earnings",
185
+ icon: "hand-coin-outline"
186
+ }, {
187
+ key: "duty-of-care-analytics",
188
+ title: "Duty of Care analytics",
189
+ icon: "heart-pulse"
190
+ }, {
191
+ key: "admin-notifications-analytics",
192
+ title: "Notifications analytics",
193
+ icon: "bell-outline"
194
+ }]
195
+ }, {
196
+ label: "Tools",
197
+ railLabel: "Tools",
198
+ icon: "view-grid-outline",
199
+ items: [{
200
+ key: "api",
201
+ title: "API",
202
+ icon: "key-outline"
203
+ }, {
204
+ key: "integrations",
205
+ title: "Integrations",
206
+ icon: "puzzle-outline"
207
+ }]
208
+ }, {
209
+ label: "Profile",
210
+ railLabel: "Profile",
211
+ icon: "account-circle-outline",
212
+ items: [{
213
+ key: "profiles",
214
+ title: "Profile",
215
+ icon: "account-circle-outline"
216
+ }, {
217
+ key: "profile-preferences",
218
+ title: "Preferences",
219
+ icon: "cog-outline"
220
+ }, {
221
+ key: "profile-notifications",
222
+ title: "Notification settings",
223
+ icon: "bell-outline"
224
+ }, {
225
+ key: "profile-sessions",
226
+ title: "Sessions",
227
+ icon: "cellphone"
228
+ }, {
229
+ key: "profile-passkeys",
230
+ title: "Passkeys",
231
+ icon: "fingerprint"
232
+ }]
233
+ }, {
234
+ label: "Assistant",
235
+ railLabel: "Assistant",
236
+ icon: "robot-outline",
237
+ items: [{
238
+ key: "assistant",
239
+ title: "Assistant",
240
+ icon: "robot-outline"
241
+ }]
242
+ }];
243
+ const RAIL_NAV = APP_NAV.filter((group) => group.railLabel !== "Assistant");
244
+ APP_NAV.flatMap((group) => group.items.map((item) => item.key)).filter((key) => key !== "");export{APP_NAV,RAIL_NAV};//# sourceMappingURL=appNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appNav.js","sources":["../../../src/features/travel/appNav.ts"],"sourcesContent":["/**\n * Native copy of web travel `app/nav.ts` — every shell page is reachable here.\n */\n\nexport type AppPageKey =\n | ''\n | 'saved'\n | 'bookings'\n | 'search-history'\n | 'orders'\n | 'duty-of-care'\n | 'expenses'\n | 'expenses-onboarding'\n | 'budgets'\n | 'budget-dashboard'\n | 'expense-policy'\n | 'admin-categories'\n | 'accounts'\n | 'recurrings'\n | 'admin-workflows'\n | 'cards'\n | 'cardholders'\n | 'order-card'\n | 'merchant-map'\n | 'card-visibility'\n | 'wallet'\n | 'split-payment-usage'\n | 'payments-transactions'\n | 'employees'\n | 'departments'\n | 'companies'\n | 'travel-policies'\n | 'payment-profiles'\n | 'notifications'\n | 'duty-of-care-settings'\n | 'reports'\n | 'most-booked-hotels'\n | 'co2-emissions'\n | 'cost-differential'\n | 'cost-savings-vs-direct'\n | 'admin-loyalty-performance'\n | 'admin-airline-credits-performance'\n | 'rate-guard'\n | 'rate-guard-earnings'\n | 'duty-of-care-analytics'\n | 'admin-notifications-analytics'\n | 'api'\n | 'integrations'\n | 'profiles'\n | 'profile-preferences'\n | 'profile-notifications'\n | 'profile-sessions'\n | 'profile-passkeys'\n | 'assistant';\n\nexport interface AppNavItem {\n key: AppPageKey;\n title: string;\n icon: string;\n}\n\nexport interface AppNavGroup {\n label: string;\n railLabel: string;\n icon: string;\n items: AppNavItem[];\n}\n\nexport const APP_NAV: AppNavGroup[] = [\n {\n label: 'Travel',\n railLabel: 'Travel',\n icon: 'airplane',\n items: [\n { key: '', title: 'Book', icon: 'airplane' },\n { key: 'saved', title: 'Saved', icon: 'heart-outline' },\n { key: 'bookings', title: 'My bookings', icon: 'briefcase-outline' },\n { key: 'search-history', title: 'Search history', icon: 'history' },\n { key: 'orders', title: 'Trips', icon: 'map-marker-path' },\n { key: 'duty-of-care', title: 'Duty of Care', icon: 'lifebuoy' },\n ],\n },\n {\n label: 'Expense management',\n railLabel: 'Expenses',\n icon: 'receipt',\n items: [\n { key: 'expenses-onboarding', title: 'Get started', icon: 'creation' },\n { key: 'expenses', title: 'Expenses', icon: 'receipt' },\n { key: 'budgets', title: 'Budgets', icon: 'cash' },\n { key: 'budget-dashboard', title: 'Budget dashboard', icon: 'gauge' },\n { key: 'admin-categories', title: 'Categories', icon: 'tag-outline' },\n { key: 'accounts', title: 'Card accounts', icon: 'bank' },\n { key: 'recurrings', title: 'Recurrings', icon: 'refresh' },\n { key: 'expense-policy', title: 'Expense policy', icon: 'file-check-outline' },\n { key: 'admin-workflows', title: 'Workflows', icon: 'sitemap' },\n ],\n },\n {\n label: 'Cards & wallet',\n railLabel: 'Cards',\n icon: 'credit-card-outline',\n items: [\n { key: 'cards', title: 'Cards', icon: 'credit-card-outline' },\n { key: 'cardholders', title: 'Cardholders', icon: 'clipboard-list-outline' },\n { key: 'order-card', title: 'Order card', icon: 'hand-coin-outline' },\n { key: 'merchant-map', title: 'Merchant map', icon: 'map-outline' },\n { key: 'card-visibility', title: 'Card visibility', icon: 'tune' },\n { key: 'wallet', title: 'Wallet', icon: 'wallet-outline' },\n { key: 'split-payment-usage', title: 'Split payment usage', icon: 'chart-pie' },\n { key: 'payments-transactions', title: 'Transactions', icon: 'bank-transfer' },\n ],\n },\n {\n label: 'Users & groups',\n railLabel: 'People',\n icon: 'account-group-outline',\n items: [\n { key: 'employees', title: 'People', icon: 'account-group-outline' },\n { key: 'departments', title: 'Departments', icon: 'folder-outline' },\n ],\n },\n {\n label: 'Travel management',\n railLabel: 'Manage',\n icon: 'shield-outline',\n items: [\n { key: 'travel-policies', title: 'Travel policies', icon: 'shield-outline' },\n { key: 'companies', title: 'Companies', icon: 'office-building-outline' },\n { key: 'payment-profiles', title: 'Payment profiles', icon: 'badge-account-outline' },\n { key: 'notifications', title: 'Notifications', icon: 'bell-outline' },\n { key: 'duty-of-care-settings', title: 'Duty of Care settings', icon: 'shield-check-outline' },\n ],\n },\n {\n label: 'Analytics',\n railLabel: 'Analytics',\n icon: 'chart-bar',\n items: [\n { key: 'reports', title: 'Reports', icon: 'file-chart-outline' },\n { key: 'most-booked-hotels', title: 'Most booked hotels', icon: 'home-city-outline' },\n { key: 'co2-emissions', title: 'CO2 emissions', icon: 'cloud-outline' },\n { key: 'cost-differential', title: 'Cost differential', icon: 'chart-bar' },\n { key: 'cost-savings-vs-direct', title: 'Cost savings vs direct', icon: 'chart-line' },\n { key: 'admin-loyalty-performance', title: 'Loyalty performance', icon: 'gauge' },\n { key: 'admin-airline-credits-performance', title: 'Airline credits', icon: 'airplane' },\n { key: 'rate-guard', title: 'Rate Guard', icon: 'shield-outline' },\n { key: 'rate-guard-earnings', title: 'RateGuard earnings', icon: 'hand-coin-outline' },\n { key: 'duty-of-care-analytics', title: 'Duty of Care analytics', icon: 'heart-pulse' },\n { key: 'admin-notifications-analytics', title: 'Notifications analytics', icon: 'bell-outline' },\n ],\n },\n {\n label: 'Tools',\n railLabel: 'Tools',\n icon: 'view-grid-outline',\n items: [\n { key: 'api', title: 'API', icon: 'key-outline' },\n { key: 'integrations', title: 'Integrations', icon: 'puzzle-outline' },\n ],\n },\n {\n label: 'Profile',\n railLabel: 'Profile',\n icon: 'account-circle-outline',\n items: [\n { key: 'profiles', title: 'Profile', icon: 'account-circle-outline' },\n { key: 'profile-preferences', title: 'Preferences', icon: 'cog-outline' },\n { key: 'profile-notifications', title: 'Notification settings', icon: 'bell-outline' },\n { key: 'profile-sessions', title: 'Sessions', icon: 'cellphone' },\n { key: 'profile-passkeys', title: 'Passkeys', icon: 'fingerprint' },\n ],\n },\n {\n label: 'Assistant',\n railLabel: 'Assistant',\n icon: 'robot-outline',\n items: [{ key: 'assistant', title: 'Assistant', icon: 'robot-outline' }],\n },\n];\n\nexport const RAIL_NAV = APP_NAV.filter((group) => group.railLabel !== 'Assistant');\n\nexport const WORKSPACE_PAGE_KEYS = APP_NAV.flatMap((group) => group.items.map((item) => item.key)).filter(\n (key): key is Exclude<AppPageKey, ''> => key !== '',\n);\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ function startOfDay(date) {
2
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
3
+ }
4
+ function addMonths(date, months) {
5
+ return new Date(date.getFullYear(), date.getMonth() + months, 1);
6
+ }
7
+ function isSameDay(a, b) {
8
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
9
+ }
10
+ function isBeforeDay(a, b) {
11
+ return startOfDay(a).getTime() < startOfDay(b).getTime();
12
+ }
13
+ function daysInMonth(month) {
14
+ const year = month.getFullYear();
15
+ const mo = month.getMonth();
16
+ const last = new Date(year, mo + 1, 0).getDate();
17
+ return Array.from({
18
+ length: last
19
+ }, (_, i) => new Date(year, mo, i + 1));
20
+ }
21
+ function leadingEmptyDays(month) {
22
+ return new Date(month.getFullYear(), month.getMonth(), 1).getDay();
23
+ }
24
+ function formatMonthYear(date) {
25
+ return date.toLocaleDateString("en-US", {
26
+ month: "long",
27
+ year: "numeric"
28
+ });
29
+ }
30
+ function formatMdY(date) {
31
+ return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;
32
+ }
33
+ function nightsBetween(start, end) {
34
+ return Math.max(1, Math.round((startOfDay(end).getTime() - startOfDay(start).getTime()) / 864e5));
35
+ }
36
+ function applyDayToRange(start, end, day) {
37
+ const picked = startOfDay(day);
38
+ if (!start || end) return {
39
+ start: picked,
40
+ end: null
41
+ };
42
+ if (isBeforeDay(picked, start)) return {
43
+ start: picked,
44
+ end: start
45
+ };
46
+ return {
47
+ start,
48
+ end: picked
49
+ };
50
+ }export{addMonths,applyDayToRange,daysInMonth,formatMdY,formatMonthYear,isBeforeDay,isSameDay,leadingEmptyDays,nightsBetween,startOfDay};//# sourceMappingURL=calendarDays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendarDays.js","sources":["../../../src/features/travel/calendarDays.ts"],"sourcesContent":["export function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function addDays(date: Date, days: number): Date {\n const next = startOfDay(date);\n next.setDate(next.getDate() + days);\n return next;\n}\n\nexport function addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport function isBeforeDay(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function daysInMonth(month: Date): Date[] {\n const year = month.getFullYear();\n const mo = month.getMonth();\n const last = new Date(year, mo + 1, 0).getDate();\n return Array.from({ length: last }, (_, i) => new Date(year, mo, i + 1));\n}\n\nexport function leadingEmptyDays(month: Date): number {\n return new Date(month.getFullYear(), month.getMonth(), 1).getDay();\n}\n\nexport function formatMonthYear(date: Date): string {\n return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n}\n\nexport function formatMdY(date: Date): string {\n return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;\n}\n\nexport function nightsBetween(start: Date, end: Date): number {\n return Math.max(1, Math.round((startOfDay(end).getTime() - startOfDay(start).getTime()) / 86400000));\n}\n\nexport function applyDayToRange(start: Date | null, end: Date | null, day: Date): { start: Date; end: Date | null } {\n const picked = startOfDay(day);\n if (!start || end) return { start: picked, end: null };\n if (isBeforeDay(picked, start)) return { start: picked, end: start };\n return { start, end: picked };\n}\n"],"names":[],"mappings":"AAAO,SAAS,WAAW,IAAkB,EAAA;AAC3C,EAAO,OAAA,IAAI,IAAK,CAAA,IAAA,CAAK,WAAY,EAAA,EAAG,KAAK,QAAS,EAAA,EAAG,IAAK,CAAA,OAAA,EAAS,CAAA;AACrE;AAMgB,SAAA,SAAA,CAAU,MAAY,MAAsB,EAAA;AAC1D,EAAO,OAAA,IAAI,KAAK,IAAK,CAAA,WAAA,IAAe,IAAK,CAAA,QAAA,EAAa,GAAA,MAAA,EAAQ,CAAC,CAAA;AACjE;AACgB,SAAA,SAAA,CAAU,GAAS,CAAkB,EAAA;AACnD,EAAA,OAAO,EAAE,WAAY,EAAA,KAAM,CAAE,CAAA,WAAA,MAAiB,CAAE,CAAA,QAAA,EAAe,KAAA,CAAA,CAAE,UAAc,IAAA,CAAA,CAAE,OAAQ,EAAA,KAAM,EAAE,OAAQ,EAAA;AAC3G;AACgB,SAAA,WAAA,CAAY,GAAS,CAAkB,EAAA;AACrD,EAAO,OAAA,UAAA,CAAW,CAAC,CAAE,CAAA,OAAA,KAAY,UAAW,CAAA,CAAC,EAAE,OAAQ,EAAA;AACzD;AACO,SAAS,YAAY,KAAqB,EAAA;AAC/C,EAAM,MAAA,IAAA,GAAO,MAAM,WAAY,EAAA;AAC/B,EAAM,MAAA,EAAA,GAAK,MAAM,QAAS,EAAA;AAC1B,EAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,IAAA,EAAM,KAAK,CAAG,EAAA,CAAC,EAAE,OAAQ,EAAA;AAC/C,EAAA,OAAO,MAAM,IAAK,CAAA;AAAA,IAChB,MAAQ,EAAA;AAAA,GACV,EAAG,CAAC,CAAA,EAAG,CAAM,KAAA,IAAI,KAAK,IAAM,EAAA,EAAA,EAAI,CAAI,GAAA,CAAC,CAAC,CAAA;AACxC;AACO,SAAS,iBAAiB,KAAqB,EAAA;AACpD,EAAO,OAAA,IAAI,IAAK,CAAA,KAAA,CAAM,WAAY,EAAA,EAAG,MAAM,QAAS,EAAA,EAAG,CAAC,CAAA,CAAE,MAAO,EAAA;AACnE;AACO,SAAS,gBAAgB,IAAoB,EAAA;AAClD,EAAO,OAAA,IAAA,CAAK,mBAAmB,OAAS,EAAA;AAAA,IACtC,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACP,CAAA;AACH;AACO,SAAS,UAAU,IAAoB,EAAA;AAC5C,EAAA,OAAO,CAAG,EAAA,IAAA,CAAK,QAAS,EAAA,GAAI,CAAC,CAAA,CAAA,EAAI,IAAK,CAAA,OAAA,EAAS,CAAA,CAAA,EAAI,IAAK,CAAA,WAAA,EAAa,CAAA,CAAA;AACvE;AACgB,SAAA,aAAA,CAAc,OAAa,GAAmB,EAAA;AAC5D,EAAA,OAAO,KAAK,GAAI,CAAA,CAAA,EAAG,IAAK,CAAA,KAAA,CAAA,CAAO,WAAW,GAAG,CAAA,CAAE,OAAQ,EAAA,GAAI,WAAW,KAAK,CAAA,CAAE,OAAQ,EAAA,IAAK,KAAQ,CAAC,CAAA;AACrG;AACgB,SAAA,eAAA,CAAgB,KAAoB,EAAA,GAAA,EAAkB,GAGpE,EAAA;AACA,EAAM,MAAA,MAAA,GAAS,WAAW,GAAG,CAAA;AAC7B,EAAI,IAAA,CAAC,KAAS,IAAA,GAAA,EAAY,OAAA;AAAA,IACxB,KAAO,EAAA,MAAA;AAAA,IACP,GAAK,EAAA;AAAA,GACP;AACA,EAAA,IAAI,WAAY,CAAA,MAAA,EAAQ,KAAK,CAAA,EAAU,OAAA;AAAA,IACrC,KAAO,EAAA,MAAA;AAAA,IACP,GAAK,EAAA;AAAA,GACP;AACA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,GAAK,EAAA;AAAA,GACP;AACF"}