@adminide-stack/yantra-mobile 12.0.69-alpha.9 → 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.
- package/lib/components/GatewayConnector/GatewayConnector.js +2 -2
- package/lib/components/GatewayConnector/GatewayConnector.js.map +1 -1
- package/lib/components/KeyboardComposerDock.js +8 -1
- package/lib/components/KeyboardComposerDock.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js +2 -2
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/config/env-config.js +4 -0
- package/lib/config/env-config.js.map +1 -1
- package/lib/contexts/ChatLiveStreamContext.js +4 -1
- package/lib/contexts/ChatLiveStreamContext.js.map +1 -1
- package/lib/features/agent-chat/NativeAgentChat.js +2 -0
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +2 -2
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/audio-input/MicErrorBoundary.js +2 -2
- package/lib/features/audio-input/MicErrorBoundary.js.map +1 -1
- package/lib/features/canvas/AudioEditorExperience.js +308 -0
- package/lib/features/canvas/AudioEditorExperience.js.map +1 -0
- package/lib/features/canvas/CanvasAgentChatPane.js +310 -0
- package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -0
- package/lib/features/canvas/CanvasBoardsGrid.js +414 -0
- package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -0
- package/lib/features/canvas/CanvasChatResultCard.js +113 -0
- package/lib/features/canvas/CanvasChatResultCard.js.map +1 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js +179 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -0
- package/lib/features/canvas/CanvasExperience.js +859 -0
- package/lib/features/canvas/CanvasExperience.js.map +1 -0
- package/lib/features/canvas/CanvasGeneratePanel.js +514 -0
- package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -0
- package/lib/features/canvas/CanvasLibrarySheet.js +355 -0
- package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -0
- package/lib/features/canvas/CanvasLooksPanel.js +184 -0
- package/lib/features/canvas/CanvasLooksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTasksPanel.js +138 -0
- package/lib/features/canvas/CanvasTasksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js +226 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -0
- package/lib/features/canvas/CanvasToolDock.js +423 -0
- package/lib/features/canvas/CanvasToolDock.js.map +1 -0
- package/lib/features/canvas/FrameExtractorExperience.js +242 -0
- package/lib/features/canvas/FrameExtractorExperience.js.map +1 -0
- package/lib/features/canvas/ImageEditorExperience.js +491 -0
- package/lib/features/canvas/ImageEditorExperience.js.map +1 -0
- package/lib/features/canvas/InfluencerStudioExperience.js +288 -0
- package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -0
- package/lib/features/canvas/MoodboardExperience.js +205 -0
- package/lib/features/canvas/MoodboardExperience.js.map +1 -0
- package/lib/features/canvas/NativeCanvasViewer.js +929 -0
- package/lib/features/canvas/NativeCanvasViewer.js.map +1 -0
- package/lib/features/canvas/PromoContextFields.js +150 -0
- package/lib/features/canvas/PromoContextFields.js.map +1 -0
- package/lib/features/canvas/SetStudioExperience.js +323 -0
- package/lib/features/canvas/SetStudioExperience.js.map +1 -0
- package/lib/features/canvas/VideoClipsExperience.js +175 -0
- package/lib/features/canvas/VideoClipsExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditExperience.js +824 -0
- package/lib/features/canvas/VideoEditExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditorExperience.js +3050 -0
- package/lib/features/canvas/VideoEditorExperience.js.map +1 -0
- package/lib/features/canvas/VideoGeneratorExperience.js +415 -0
- package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -0
- package/lib/features/canvas/aiEdit.js +53 -0
- package/lib/features/canvas/aiEdit.js.map +1 -0
- package/lib/features/canvas/canvasAgentChat.js +76 -0
- package/lib/features/canvas/canvasAgentChat.js.map +1 -0
- package/lib/features/canvas/canvasBoardsCatalog.js +59 -0
- package/lib/features/canvas/canvasBoardsCatalog.js.map +1 -0
- package/lib/features/canvas/canvasBoardsSnapshot.js +14 -1
- package/lib/features/canvas/canvasBoardsSnapshot.js.map +1 -1
- package/lib/features/canvas/canvasChatDisplay.js +38 -0
- package/lib/features/canvas/canvasChatDisplay.js.map +1 -0
- package/lib/features/canvas/canvasChatTemplates.js +219 -0
- package/lib/features/canvas/canvasChatTemplates.js.map +1 -0
- package/lib/features/canvas/canvasCore.js +138 -1
- package/lib/features/canvas/canvasCore.js.map +1 -1
- package/lib/features/canvas/canvasEditOps.js +224 -0
- package/lib/features/canvas/canvasEditOps.js.map +1 -0
- package/lib/features/canvas/canvasTasks.js +187 -0
- package/lib/features/canvas/canvasTasks.js.map +1 -0
- package/lib/features/canvas/designPromptTemplates.js +3084 -0
- package/lib/features/canvas/designPromptTemplates.js.map +1 -0
- package/lib/features/canvas/editTools.js +54 -0
- package/lib/features/canvas/editTools.js.map +1 -0
- package/lib/features/canvas/extendVideo.js +5 -0
- package/lib/features/canvas/extendVideo.js.map +1 -0
- package/lib/features/canvas/frameExtract.js +33 -0
- package/lib/features/canvas/frameExtract.js.map +1 -0
- package/lib/features/canvas/generationModels.js +201 -0
- package/lib/features/canvas/generationModels.js.map +1 -0
- package/lib/features/canvas/influencer/influencerPipeline.js +170 -0
- package/lib/features/canvas/influencer/influencerPipeline.js.map +1 -0
- package/lib/features/canvas/influencer/productReel.js +72 -0
- package/lib/features/canvas/influencer/productReel.js.map +1 -0
- package/lib/features/canvas/influencer/reelPlan.js +159 -0
- package/lib/features/canvas/influencer/reelPlan.js.map +1 -0
- package/lib/features/canvas/moodboardCore.js +13 -0
- package/lib/features/canvas/moodboardCore.js.map +1 -0
- package/lib/features/canvas/promoProjectImport.js +99 -0
- package/lib/features/canvas/promoProjectImport.js.map +1 -0
- package/lib/features/canvas/promoVideo.js +312 -0
- package/lib/features/canvas/promoVideo.js.map +1 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -0
- package/lib/features/canvas/sessionIdentity.js +28 -1
- package/lib/features/canvas/sessionIdentity.js.map +1 -1
- package/lib/features/canvas/set/SetViewportWebView.js +133 -0
- package/lib/features/canvas/set/SetViewportWebView.js.map +1 -0
- package/lib/features/canvas/set/cameraPath.js +194 -0
- package/lib/features/canvas/set/cameraPath.js.map +1 -0
- package/lib/features/canvas/set/setProject.js +24 -0
- package/lib/features/canvas/set/setProject.js.map +1 -0
- package/lib/features/canvas/storageLibrary.js +184 -0
- package/lib/features/canvas/storageLibrary.js.map +1 -0
- package/lib/features/canvas/studioCatalog.js +129 -0
- package/lib/features/canvas/studioCatalog.js.map +1 -0
- package/lib/features/canvas/studioLooks.js +189 -0
- package/lib/features/canvas/studioLooks.js.map +1 -0
- package/lib/features/canvas/surfaceIndex.js +63 -1
- package/lib/features/canvas/surfaceIndex.js.map +1 -1
- package/lib/features/canvas/templateImport/invideoNative.js +221 -0
- package/lib/features/canvas/templateImport/invideoNative.js.map +1 -0
- package/lib/features/canvas/templateImport/loadTemplate.js +43 -0
- package/lib/features/canvas/templateImport/loadTemplate.js.map +1 -0
- package/lib/features/canvas/templateImport/renderConfig.js +93 -0
- package/lib/features/canvas/templateImport/renderConfig.js.map +1 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js +134 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -0
- package/lib/features/canvas/video3d.js +109 -0
- package/lib/features/canvas/video3d.js.map +1 -0
- package/lib/features/canvas/videoClips.js +42 -0
- package/lib/features/canvas/videoClips.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +120 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js +69 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js +45 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js +129 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -0
- package/lib/features/canvas/videoEditor/editorModel.js +346 -0
- package/lib/features/canvas/videoEditor/editorModel.js.map +1 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js +214 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js.map +1 -0
- package/lib/features/canvas/videoEditor/filters.js +41 -0
- package/lib/features/canvas/videoEditor/filters.js.map +1 -0
- package/lib/features/canvas/videoEditor/mediaActions.js +57 -0
- package/lib/features/canvas/videoEditor/mediaActions.js.map +1 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js +129 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js +115 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js +191 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js +82 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js.map +1 -0
- package/lib/features/canvas/videoRenderer.js +8 -0
- package/lib/features/canvas/videoRenderer.js.map +1 -0
- package/lib/features/canvas/withRemoteSafeArea.js +2 -2
- package/lib/features/canvas/withRemoteSafeArea.js.map +1 -1
- package/lib/features/characters/characterStudioProps.js +14 -0
- package/lib/features/characters/characterStudioProps.js.map +1 -0
- package/lib/features/chat/ChatCodeBlock.js +7 -3
- package/lib/features/chat/ChatCodeBlock.js.map +1 -1
- package/lib/features/chat/ChatTranscript.js +7 -3
- package/lib/features/chat/ChatTranscript.js.map +1 -1
- package/lib/features/chat/ChatWidgetCard.js +13 -0
- package/lib/features/chat/ChatWidgetCard.js.map +1 -0
- package/lib/features/chat/ConnectorConnectCard.js +164 -0
- package/lib/features/chat/ConnectorConnectCard.js.map +1 -0
- package/lib/features/chat/ConnectorConnectPrompt.js +254 -0
- package/lib/features/chat/ConnectorConnectPrompt.js.map +1 -0
- package/lib/features/chat/MessageActionBar.js.map +1 -1
- package/lib/features/chat/QueuedFollowUps.js +71 -0
- package/lib/features/chat/QueuedFollowUps.js.map +1 -0
- package/lib/features/chat/chatWidgets.js +37 -0
- package/lib/features/chat/chatWidgets.js.map +1 -0
- package/lib/features/chat/connectorConnect.js +179 -0
- package/lib/features/chat/connectorConnect.js.map +1 -0
- package/lib/features/chat/connectorConnectHandbacks.js +55 -0
- package/lib/features/chat/connectorConnectHandbacks.js.map +1 -0
- package/lib/features/design/DesignEditorExperience.js +643 -0
- package/lib/features/design/DesignEditorExperience.js.map +1 -0
- package/lib/features/design/DesignExperience.js +444 -0
- package/lib/features/design/DesignExperience.js.map +1 -0
- package/lib/features/design/designCore.js +298 -0
- package/lib/features/design/designCore.js.map +1 -0
- package/lib/features/design/designIndex.js +150 -0
- package/lib/features/design/designIndex.js.map +1 -0
- package/lib/features/design/exportDesign.js +133 -0
- package/lib/features/design/exportDesign.js.map +1 -0
- package/lib/features/job-search/ApplicationsPanel.js +907 -0
- package/lib/features/job-search/ApplicationsPanel.js.map +1 -0
- package/lib/features/job-search/ContactsPanel.js +627 -0
- package/lib/features/job-search/ContactsPanel.js.map +1 -0
- package/lib/features/job-search/InsightsPanel.js +299 -0
- package/lib/features/job-search/InsightsPanel.js.map +1 -0
- package/lib/features/job-search/InterviewPanel.js +637 -0
- package/lib/features/job-search/InterviewPanel.js.map +1 -0
- package/lib/features/job-search/JdPastePrompt.js +130 -0
- package/lib/features/job-search/JdPastePrompt.js.map +1 -0
- package/lib/features/job-search/JobCard.js +199 -0
- package/lib/features/job-search/JobCard.js.map +1 -0
- package/lib/features/job-search/JobDetailSheet.js +255 -0
- package/lib/features/job-search/JobDetailSheet.js.map +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js +377 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -0
- package/lib/features/job-search/JobSearchExperience.js +1324 -0
- package/lib/features/job-search/JobSearchExperience.js.map +1 -0
- package/lib/features/job-search/JobSearchLocationField.js +231 -0
- package/lib/features/job-search/JobSearchLocationField.js.map +1 -0
- package/lib/features/job-search/ProfilePanel.js +679 -0
- package/lib/features/job-search/ProfilePanel.js.map +1 -0
- package/lib/features/job-search/RepliesPanel.js +344 -0
- package/lib/features/job-search/RepliesPanel.js.map +1 -0
- package/lib/features/job-search/SavedPanel.js +297 -0
- package/lib/features/job-search/SavedPanel.js.map +1 -0
- package/lib/features/job-search/chat/widgetContent.js +29 -0
- package/lib/features/job-search/chat/widgetContent.js.map +1 -0
- package/lib/features/job-search/cvText.js +91 -0
- package/lib/features/job-search/cvText.js.map +1 -0
- package/lib/features/job-search/jobAgentSwipe.js +7 -0
- package/lib/features/job-search/jobAgentSwipe.js.map +1 -0
- package/lib/features/job-search/jobSearchClient.js +184 -0
- package/lib/features/job-search/jobSearchClient.js.map +1 -0
- package/lib/features/job-search/jobSearchExec.js +14 -0
- package/lib/features/job-search/jobSearchExec.js.map +1 -0
- package/lib/features/job-search/jobSearchRuntime.js +50 -0
- package/lib/features/job-search/jobSearchRuntime.js.map +1 -0
- package/lib/features/job-search/jobSearchTheme.js +44 -0
- package/lib/features/job-search/jobSearchTheme.js.map +1 -0
- package/lib/features/job-search/savedJobs.js +85 -0
- package/lib/features/job-search/savedJobs.js.map +1 -0
- package/lib/features/job-search/searchHistory.js +117 -0
- package/lib/features/job-search/searchHistory.js.map +1 -0
- package/lib/features/job-search/types.js +36 -0
- package/lib/features/job-search/types.js.map +1 -0
- package/lib/features/job-search/useJobSearchSession.js +558 -0
- package/lib/features/job-search/useJobSearchSession.js.map +1 -0
- package/lib/features/messaging/ChatComponents.js +529 -0
- package/lib/features/messaging/ChatComponents.js.map +1 -0
- package/lib/features/messaging/ChatInviteDeepLink.js +116 -0
- package/lib/features/messaging/ChatInviteDeepLink.js.map +1 -0
- package/lib/features/messaging/ContactsScreen.js +288 -0
- package/lib/features/messaging/ContactsScreen.js.map +1 -0
- package/lib/features/messaging/ConversationListScreen.js +147 -0
- package/lib/features/messaging/ConversationListScreen.js.map +1 -0
- package/lib/features/messaging/MessageActions.js +290 -0
- package/lib/features/messaging/MessageActions.js.map +1 -0
- package/lib/features/messaging/NativeChatExperience.js +189 -0
- package/lib/features/messaging/NativeChatExperience.js.map +1 -0
- package/lib/features/messaging/RegistrationScreen.js +11 -14
- package/lib/features/messaging/RegistrationScreen.js.map +1 -1
- package/lib/features/messaging/ThreadScreen.js +215 -0
- package/lib/features/messaging/ThreadScreen.js.map +1 -0
- package/lib/features/messaging/chatInviteLink.js +52 -0
- package/lib/features/messaging/chatInviteLink.js.map +1 -0
- package/lib/features/messaging/chatModel.js +278 -0
- package/lib/features/messaging/chatModel.js.map +1 -0
- package/lib/features/messaging/chatOperations.js +106 -1
- package/lib/features/messaging/chatOperations.js.map +1 -1
- package/lib/features/messaging/emojiCatalog.js +60 -0
- package/lib/features/messaging/emojiCatalog.js.map +1 -0
- package/lib/features/messaging/emojiKeywords.js +1592 -0
- package/lib/features/messaging/emojiKeywords.js.map +1 -0
- package/lib/features/messaging/nativeChatChannelQuery.js +27 -0
- package/lib/features/messaging/nativeChatChannelQuery.js.map +1 -0
- package/lib/features/messaging/phoneNumbers.js +52 -1
- package/lib/features/messaging/phoneNumbers.js.map +1 -1
- package/lib/features/messaging/sha256.js +68 -0
- package/lib/features/messaging/sha256.js.map +1 -0
- package/lib/features/messaging/useChatData.js +421 -0
- package/lib/features/messaging/useChatData.js.map +1 -0
- package/lib/features/messaging/useContactMatches.js +191 -0
- package/lib/features/messaging/useContactMatches.js.map +1 -0
- package/lib/features/messaging/usePhoneVerification.js +12 -12
- package/lib/features/messaging/usePhoneVerification.js.map +1 -1
- package/lib/features/messaging/yantraChatOrg.js +8 -3
- package/lib/features/messaging/yantraChatOrg.js.map +1 -1
- package/lib/features/resume/AnnotateModal.js +100 -0
- package/lib/features/resume/AnnotateModal.js.map +1 -0
- package/lib/features/resume/AnnotationBar.js +69 -0
- package/lib/features/resume/AnnotationBar.js.map +1 -0
- package/lib/features/resume/ExportSheet.js +105 -0
- package/lib/features/resume/ExportSheet.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +95 -0
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -0
- package/lib/features/resume/ResumeEditor.js +676 -0
- package/lib/features/resume/ResumeEditor.js.map +1 -0
- package/lib/features/resume/ResumeExperience.js +235 -0
- package/lib/features/resume/ResumeExperience.js.map +1 -0
- package/lib/features/resume/ResumeListPanel.js +262 -0
- package/lib/features/resume/ResumeListPanel.js.map +1 -0
- package/lib/features/resume/ResumeToolbar.js +236 -0
- package/lib/features/resume/ResumeToolbar.js.map +1 -0
- package/lib/features/resume/annotations.js +17 -0
- package/lib/features/resume/annotations.js.map +1 -0
- package/lib/features/resume/documentCss.js +52 -0
- package/lib/features/resume/documentCss.js.map +1 -0
- package/lib/features/resume/draft.js +89 -0
- package/lib/features/resume/draft.js.map +1 -0
- package/lib/features/resume/exportResume.js +43 -0
- package/lib/features/resume/exportResume.js.map +1 -0
- package/lib/features/resume/pickResumePhoto.js +22 -0
- package/lib/features/resume/pickResumePhoto.js.map +1 -0
- package/lib/features/resume/renderResume.js +121 -0
- package/lib/features/resume/renderResume.js.map +1 -0
- package/lib/features/resume/resumeClient.js +69 -0
- package/lib/features/resume/resumeClient.js.map +1 -0
- package/lib/features/resume/resumeExec.js +14 -0
- package/lib/features/resume/resumeExec.js.map +1 -0
- package/lib/features/resume/resumeIndex.js +244 -0
- package/lib/features/resume/resumeIndex.js.map +1 -0
- package/lib/features/resume/resumeRuntime.js +50 -0
- package/lib/features/resume/resumeRuntime.js.map +1 -0
- package/lib/features/resume/resumeTheme.js +34 -0
- package/lib/features/resume/resumeTheme.js.map +1 -0
- package/lib/features/resume/resumeToolbox.js +49 -0
- package/lib/features/resume/resumeToolbox.js.map +1 -0
- package/lib/features/resume/templates.js +90 -0
- package/lib/features/resume/templates.js.map +1 -0
- package/lib/features/resume/types.js +10 -0
- package/lib/features/resume/types.js.map +1 -0
- package/lib/features/resume/useResumeSession.js +183 -0
- package/lib/features/resume/useResumeSession.js.map +1 -0
- package/lib/features/shopping/DealsPanel.js +254 -0
- package/lib/features/shopping/DealsPanel.js.map +1 -0
- package/lib/features/shopping/HistoryPanel.js +147 -0
- package/lib/features/shopping/HistoryPanel.js.map +1 -0
- package/lib/features/shopping/OrdersPanel.js +157 -0
- package/lib/features/shopping/OrdersPanel.js.map +1 -0
- package/lib/features/shopping/ProductCard.js +326 -0
- package/lib/features/shopping/ProductCard.js.map +1 -0
- package/lib/features/shopping/ProductDetailSheet.js +313 -0
- package/lib/features/shopping/ProductDetailSheet.js.map +1 -0
- package/lib/features/shopping/ProductFilterBar.js +153 -0
- package/lib/features/shopping/ProductFilterBar.js.map +1 -0
- package/lib/features/shopping/ProductPhoto.js +27 -0
- package/lib/features/shopping/ProductPhoto.js.map +1 -0
- package/lib/features/shopping/SavedPanel.js +139 -0
- package/lib/features/shopping/SavedPanel.js.map +1 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js +436 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -0
- package/lib/features/shopping/ShoppingExperience.js +888 -0
- package/lib/features/shopping/ShoppingExperience.js.map +1 -0
- package/lib/features/shopping/TrendingSections.js +199 -0
- package/lib/features/shopping/TrendingSections.js.map +1 -0
- package/lib/features/shopping/WatchlistPanel.js +148 -0
- package/lib/features/shopping/WatchlistPanel.js.map +1 -0
- package/lib/features/shopping/catalog.js +238 -0
- package/lib/features/shopping/catalog.js.map +1 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js +175 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js.map +1 -0
- package/lib/features/shopping/chat/streamAssistantReply.js +34 -0
- package/lib/features/shopping/chat/streamAssistantReply.js.map +1 -0
- package/lib/features/shopping/chat/widgetContent.js +233 -0
- package/lib/features/shopping/chat/widgetContent.js.map +1 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js +162 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js.map +1 -0
- package/lib/features/shopping/productImage.js +42 -0
- package/lib/features/shopping/productImage.js.map +1 -0
- package/lib/features/shopping/savedProducts.js +84 -0
- package/lib/features/shopping/savedProducts.js.map +1 -0
- package/lib/features/shopping/services/catalogActions.js +166 -0
- package/lib/features/shopping/services/catalogActions.js.map +1 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js +58 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js.map +1 -0
- package/lib/features/shopping/services/parseShoppingIntent.js +67 -0
- package/lib/features/shopping/services/parseShoppingIntent.js.map +1 -0
- package/lib/features/shopping/services/productAvailability.js +25 -0
- package/lib/features/shopping/services/productAvailability.js.map +1 -0
- package/lib/features/shopping/services/productFilters.js +72 -0
- package/lib/features/shopping/services/productFilters.js.map +1 -0
- package/lib/features/shopping/services/retailerUrl.js +75 -0
- package/lib/features/shopping/services/retailerUrl.js.map +1 -0
- package/lib/features/shopping/services/shoppingChatReply.js +46 -0
- package/lib/features/shopping/services/shoppingChatReply.js.map +1 -0
- package/lib/features/shopping/services/shoppingProductSearch.js +336 -0
- package/lib/features/shopping/services/shoppingProductSearch.js.map +1 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js +41 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js.map +1 -0
- package/lib/features/shopping/shopAgentSwipe.js +7 -0
- package/lib/features/shopping/shopAgentSwipe.js.map +1 -0
- package/lib/features/shopping/shoppingCart.js +116 -0
- package/lib/features/shopping/shoppingCart.js.map +1 -0
- package/lib/features/shopping/shoppingExec.js +14 -0
- package/lib/features/shopping/shoppingExec.js.map +1 -0
- package/lib/features/shopping/shoppingHistoryStore.js +176 -0
- package/lib/features/shopping/shoppingHistoryStore.js.map +1 -0
- package/lib/features/shopping/shoppingRuntime.js +63 -0
- package/lib/features/shopping/shoppingRuntime.js.map +1 -0
- package/lib/features/shopping/timeAgo.js +14 -0
- package/lib/features/shopping/timeAgo.js.map +1 -0
- package/lib/features/shopping/useShoppingSearch.js +262 -0
- package/lib/features/shopping/useShoppingSearch.js.map +1 -0
- package/lib/features/travel/BookHeaderGlow.js +48 -0
- package/lib/features/travel/BookHeaderGlow.js.map +1 -0
- package/lib/features/travel/BookingsPanel.js +29 -0
- package/lib/features/travel/BookingsPanel.js.map +1 -0
- package/lib/features/travel/DiscoverPanel.js +155 -0
- package/lib/features/travel/DiscoverPanel.js.map +1 -0
- package/lib/features/travel/FlightCompareBar.js +86 -0
- package/lib/features/travel/FlightCompareBar.js.map +1 -0
- package/lib/features/travel/FlightDealsBoard.js +100 -0
- package/lib/features/travel/FlightDealsBoard.js.map +1 -0
- package/lib/features/travel/HistoryPanel.js +82 -0
- package/lib/features/travel/HistoryPanel.js.map +1 -0
- package/lib/features/travel/PopularDestinations.js +144 -0
- package/lib/features/travel/PopularDestinations.js.map +1 -0
- package/lib/features/travel/SavedPanel.js +27 -0
- package/lib/features/travel/SavedPanel.js.map +1 -0
- package/lib/features/travel/TravelAgentChatPane.js +303 -0
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -0
- package/lib/features/travel/TravelBookHero.js +425 -0
- package/lib/features/travel/TravelBookHero.js.map +1 -0
- package/lib/features/travel/TravelDatesField.js +234 -0
- package/lib/features/travel/TravelDatesField.js.map +1 -0
- package/lib/features/travel/TravelDetailSheet.js +106 -0
- package/lib/features/travel/TravelDetailSheet.js.map +1 -0
- package/lib/features/travel/TravelExperience.js +624 -0
- package/lib/features/travel/TravelExperience.js.map +1 -0
- package/lib/features/travel/TravelGuestsField.js +85 -0
- package/lib/features/travel/TravelGuestsField.js.map +1 -0
- package/lib/features/travel/TravelLanding.js +318 -0
- package/lib/features/travel/TravelLanding.js.map +1 -0
- package/lib/features/travel/TravelLocationField.js +179 -0
- package/lib/features/travel/TravelLocationField.js.map +1 -0
- package/lib/features/travel/TravelPropertyCard.js +266 -0
- package/lib/features/travel/TravelPropertyCard.js.map +1 -0
- package/lib/features/travel/TravelPropertyPhoto.js +22 -0
- package/lib/features/travel/TravelPropertyPhoto.js.map +1 -0
- package/lib/features/travel/TravelRailFlyout.js +79 -0
- package/lib/features/travel/TravelRailFlyout.js.map +1 -0
- package/lib/features/travel/TravelResultsMap.js +126 -0
- package/lib/features/travel/TravelResultsMap.js.map +1 -0
- package/lib/features/travel/WorkspacePanel.js +148 -0
- package/lib/features/travel/WorkspacePanel.js.map +1 -0
- package/lib/features/travel/appNav.js +244 -0
- package/lib/features/travel/appNav.js.map +1 -0
- package/lib/features/travel/calendarDays.js +50 -0
- package/lib/features/travel/calendarDays.js.map +1 -0
- package/lib/features/travel/catalog.js +72 -0
- package/lib/features/travel/catalog.js.map +1 -0
- package/lib/features/travel/chat/TravelChatResultCard.js +107 -0
- package/lib/features/travel/chat/TravelChatResultCard.js.map +1 -0
- package/lib/features/travel/chat/widgetContent.js +107 -0
- package/lib/features/travel/chat/widgetContent.js.map +1 -0
- package/lib/features/travel/flightDeals.js +65 -0
- package/lib/features/travel/flightDeals.js.map +1 -0
- package/lib/features/travel/mapCoordinates.js +36 -0
- package/lib/features/travel/mapCoordinates.js.map +1 -0
- package/lib/features/travel/parseTravelIntent.js +303 -0
- package/lib/features/travel/parseTravelIntent.js.map +1 -0
- package/lib/features/travel/savedStays.js +66 -0
- package/lib/features/travel/savedStays.js.map +1 -0
- package/lib/features/travel/services/flightDealsBoard.js +111 -0
- package/lib/features/travel/services/flightDealsBoard.js.map +1 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js +42 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js.map +1 -0
- package/lib/features/travel/services/geocodeLocation.js +79 -0
- package/lib/features/travel/services/geocodeLocation.js.map +1 -0
- package/lib/features/travel/services/placePredictions.js +113 -0
- package/lib/features/travel/services/placePredictions.js.map +1 -0
- package/lib/features/travel/services/resolveOriginCity.js +27 -0
- package/lib/features/travel/services/resolveOriginCity.js.map +1 -0
- package/lib/features/travel/services/resortifiConnectorClient.js +76 -0
- package/lib/features/travel/services/resortifiConnectorClient.js.map +1 -0
- package/lib/features/travel/services/travelFlightSearch.js +289 -0
- package/lib/features/travel/services/travelFlightSearch.js.map +1 -0
- package/lib/features/travel/services/travelPropertySearch.js +377 -0
- package/lib/features/travel/services/travelPropertySearch.js.map +1 -0
- package/lib/features/travel/travelAgentSwipe.js +7 -0
- package/lib/features/travel/travelAgentSwipe.js.map +1 -0
- package/lib/features/travel/travelExec.js +14 -0
- package/lib/features/travel/travelExec.js.map +1 -0
- package/lib/features/travel/travelHistoryStore.js +108 -0
- package/lib/features/travel/travelHistoryStore.js.map +1 -0
- package/lib/features/travel/travelRuntime.js +62 -0
- package/lib/features/travel/travelRuntime.js.map +1 -0
- package/lib/features/travel/types.js +9 -0
- package/lib/features/travel/types.js.map +1 -0
- package/lib/features/travel/useTravelSearch.js +330 -0
- package/lib/features/travel/useTravelSearch.js.map +1 -0
- package/lib/features/travel/workspaceContent.js +548 -0
- package/lib/features/travel/workspaceContent.js.map +1 -0
- package/lib/hooks/useCdecliChannel.js +128 -6
- package/lib/hooks/useCdecliChannel.js.map +1 -1
- package/lib/hooks/useChatApi.js +4 -2
- package/lib/hooks/useChatApi.js.map +1 -1
- package/lib/hooks/useChatStream.js +77 -63
- package/lib/hooks/useChatStream.js.map +1 -1
- package/lib/hooks/useHostConnectorCard.js +24 -0
- package/lib/hooks/useHostConnectorCard.js.map +1 -0
- package/lib/hooks/useObtainSystemToken.js +23 -5
- package/lib/hooks/useObtainSystemToken.js.map +1 -1
- package/lib/hooks/webViewRetentionPolicy.js +1 -0
- package/lib/hooks/webViewRetentionPolicy.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/screens/Chat/index.js +51 -22
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/ChatNative/index.js +13 -2
- package/lib/screens/ChatNative/index.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +3 -3
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Home/components/ChatHistoryLanding.js +32 -32
- package/lib/screens/Home/components/ChatHistoryLanding.js.map +1 -1
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js +12 -6
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
- package/lib/screens/ResumeNative/useResumeHostChat.js +12 -6
- package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
- package/lib/screens/ShoppingNative/useShoppingHostChat.js +12 -6
- package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
- package/lib/screens/TravelNative/useTravelHostChat.js +12 -6
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
- package/lib/screens/WebBuilder/WebViewWithNavigation.js +2 -2
- package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
- package/lib/services/brainQuickReply.js +38 -1
- package/lib/services/brainQuickReply.js.map +1 -1
- package/lib/state/chatThreadMerge.js +6 -1
- package/lib/state/chatThreadMerge.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TravelExperience.js","sources":["../../../src/features/travel/TravelExperience.tsx"],"sourcesContent":["/**\n * Native travel storefront — twin of `@yantra/travel-surface` TravelPage.\n * Plain react-native so the federated remote only uses host-shared singletons.\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n Keyboard,\n KeyboardAvoidingView,\n PanResponder,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n useColorScheme,\n} from 'react-native';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeInsets } from '../canvas/withRemoteSafeArea';\nimport { createTravelExec } from './travelExec';\nimport { setTravelRuntime } from './travelRuntime';\nimport { emptyTravelQuery, useTravelSearch } from './useTravelSearch';\nimport { TravelPropertyCard } from './TravelPropertyCard';\nimport { TravelDetailSheet } from './TravelDetailSheet';\nimport { SavedPanel } from './SavedPanel';\nimport { HistoryPanel } from './HistoryPanel';\nimport { BookingsPanel } from './BookingsPanel';\nimport { hydrateSavedStays } from './savedStays';\nimport { hydrateTravelHistory, recordPropertyView, type SearchHistoryEntry } from './travelHistoryStore';\nimport { TravelAgentChatPane } from './TravelAgentChatPane';\nimport { isOpenAgentSwipe, shouldClaimOpenAgentMove } from './travelAgentSwipe';\nimport type { TravelHostChat } from './hostChat';\nimport type { MessageAttachment } from '../../hooks/useChatStream';\nimport { TravelType, type PropertySource, type TravelProperty, type TravelSearchQuery } from './types';\nimport { formatLocalDate, parseLocalDateInput } from './parseTravelIntent';\nimport { TravelResultsMap } from './TravelResultsMap';\nimport { TravelLanding } from './TravelLanding';\nimport { TravelBookHero } from './TravelBookHero';\nimport { TravelRailFlyout } from './TravelRailFlyout';\nimport { DiscoverPanel } from './DiscoverPanel';\nimport { WorkspacePanel } from './WorkspacePanel';\nimport { FlightCompareBar } from './FlightCompareBar';\nimport { computeFlightDeals, sortFlightProperties, type FlightSort } from './flightDeals';\nimport { SOURCE_LABELS, SOURCE_ORDER, propertySource } from './catalog';\nimport { ensureFlightOrigin } from './services/resolveOriginCity';\nimport { BookHeaderGlow } from './BookHeaderGlow';\nimport { APP_NAV, RAIL_NAV, type AppNavItem, type AppPageKey } from './appNav';\n\nexport interface TravelExperienceProps {\n token?: string | null;\n indexUrl: string;\n sessionError?: string | null;\n sessionId?: string;\n hostChat?: TravelHostChat;\n onAgentVisibleChange?: (open: boolean) => void;\n initialAgentSeed?: { text: string; files?: MessageAttachment[] } | null;\n}\n\ntype TravelView = 'book' | 'discover' | 'saved' | 'history' | 'bookings' | 'workspace';\n\nfunction nightsAndRange(from: Date, to: Date): { nights: string; range: string } {\n const nights = Math.max(1, Math.round((to.getTime() - from.getTime()) / 86400000));\n const fmt = (d: Date) => d.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n return { nights: nights === 1 ? '1 night' : `${nights} nights`, range: `${fmt(from)} - ${fmt(to)}` };\n}\n\nexport function TravelExperience({\n token,\n indexUrl,\n sessionError,\n hostChat,\n onAgentVisibleChange,\n initialAgentSeed = null,\n}: TravelExperienceProps) {\n const isDark = useColorScheme() === 'dark';\n const ink = isDark ? '#f8fafc' : '#0f172a';\n const muted = isDark ? '#94a3b8' : '#64748b';\n const screen = isDark ? '#0f172a' : '#f4f6f9';\n const card = isDark ? '#111827' : '#ffffff';\n const border = isDark ? 'rgba(148,163,184,0.22)' : '#e8ecf1';\n\n useEffect(() => {\n void hydrateSavedStays();\n void hydrateTravelHistory();\n }, []);\n\n useEffect(() => {\n if (!token) return;\n setTravelRuntime({\n exec: createTravelExec(token, indexUrl),\n config: {\n GOOGLE_MAPS_API_KEY: 'AIzaSyCtMaqd4AQayEx4-QTbuM_uL91pQrUsbK8',\n PROPERTY_SEARCH_DEFAULT_PAGE_SIZE: 30,\n },\n });\n }, [token, indexUrl]);\n\n const insets = useSafeInsets();\n const searchState = useTravelSearch();\n const [form, setForm] = useState<TravelSearchQuery>(emptyTravelQuery);\n const [fromText, setFromText] = useState(() => formatLocalDate(emptyTravelQuery().dates[0]));\n const [toText, setToText] = useState(() => formatLocalDate(emptyTravelQuery().dates[1]));\n const [view, setView] = useState<TravelView>('book');\n const [railLabel, setRailLabel] = useState('Travel');\n const [railFlyout, setRailFlyout] = useState<string | null>(null);\n const [workspacePageKey, setWorkspacePageKey] = useState<Exclude<AppPageKey, ''>>('duty-of-care');\n const [detail, setDetail] = useState<TravelProperty | null>(null);\n const [chatOpen, setChatOpen] = useState(Boolean(initialAgentSeed));\n const [sourceFilter, setSourceFilter] = useState<'all' | PropertySource>('all');\n const [flightSort, setFlightSort] = useState<FlightSort>('cheapest');\n const [mapPropertyId, setMapPropertyId] = useState<string | null>(null);\n const [keyboardOpen, setKeyboardOpen] = useState(false);\n const chatOpenRef = useRef(chatOpen);\n chatOpenRef.current = chatOpen;\n const blockedRef = useRef(false);\n blockedRef.current = Boolean(detail);\n\n const swipe = useMemo(\n () =>\n PanResponder.create({\n onMoveShouldSetPanResponder: (_e, g) =>\n !chatOpenRef.current && !blockedRef.current && shouldClaimOpenAgentMove(g),\n onPanResponderRelease: (_e, g) => {\n if (!chatOpenRef.current && !blockedRef.current && isOpenAgentSwipe(g)) {\n setChatOpen(true);\n }\n },\n }),\n [],\n );\n\n useFocusEffect(\n useCallback(() => {\n return () => {\n setDetail(null);\n setChatOpen(false);\n };\n }, []),\n );\n\n useEffect(() => {\n onAgentVisibleChange?.(chatOpen);\n }, [chatOpen, onAgentVisibleChange]);\n\n useEffect(() => {\n const show = Keyboard.addListener(Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow', () =>\n setKeyboardOpen(true),\n );\n const hide = Keyboard.addListener(Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide', () =>\n setKeyboardOpen(false),\n );\n return () => {\n show.remove();\n hide.remove();\n };\n }, []);\n\n const openDetails = useCallback((property: TravelProperty) => {\n setDetail(property);\n recordPropertyView(property);\n }, []);\n\n const goToBookHome = () => {\n Keyboard.dismiss();\n setMapPropertyId(null);\n setSourceFilter('all');\n searchState.clear();\n setView('book');\n setRailLabel('Travel');\n };\n\n const runSearchNow = () => {\n const from = parseLocalDateInput(fromText);\n const to = parseLocalDateInput(toText);\n const next = from && to ? { ...form, dates: [from, to] as Date[] } : form;\n setForm(next);\n setSourceFilter('all');\n searchState.search(next);\n setView('book');\n };\n\n const searchCity = (query: string) => {\n const from = parseLocalDateInput(fromText);\n const to = parseLocalDateInput(toText);\n const dates = from && to ? ([from, to] as Date[]) : form.dates;\n if (form.travelType === TravelType.FLIGHTS) {\n void ensureFlightOrigin(form.pickupLocation).then((origin) => {\n const next: TravelSearchQuery = {\n ...form,\n dates,\n dropoffLocation: query,\n pickupLocation: origin,\n };\n setForm(next);\n searchState.search(next);\n setView('book');\n });\n return;\n }\n const next: TravelSearchQuery =\n form.travelType === TravelType.CARS\n ? { ...form, dates, pickupLocation: query }\n : { ...form, dates, location: { formattedAddress: query } };\n setForm(next);\n searchState.search(next);\n setView('book');\n };\n\n const searchRoute = (origin: string, destination: string) => {\n const from = parseLocalDateInput(fromText);\n const to = parseLocalDateInput(toText);\n const dates = from && to ? ([from, to] as Date[]) : form.dates;\n const next: TravelSearchQuery = {\n ...form,\n travelType: TravelType.FLIGHTS,\n pickupLocation: origin,\n dropoffLocation: destination,\n dates,\n };\n setForm(next);\n searchState.search(next);\n setView('book');\n };\n\n const rerunSearch = useCallback(\n (entry: SearchHistoryEntry) => {\n setView('book');\n const next = { ...form, travelType: entry.travelType };\n if (entry.travelType === TravelType.HOTELS) {\n next.location = { formattedAddress: entry.query };\n } else if (entry.travelType === TravelType.CARS) {\n next.pickupLocation = entry.query;\n }\n setForm(next);\n searchState.search(next);\n },\n [form, searchState],\n );\n\n const showLanding = view === 'book' && !searchState.hasSearched && !searchState.isLoading;\n const showResults = view === 'book' && (searchState.hasSearched || searchState.isLoading);\n const rankedProperties = useMemo(() => {\n if (form.travelType !== TravelType.FLIGHTS) return searchState.properties;\n return sortFlightProperties(searchState.properties, flightSort);\n }, [form.travelType, searchState.properties, flightSort]);\n const flightDeals = useMemo(\n () => (form.travelType === TravelType.FLIGHTS ? computeFlightDeals(searchState.properties) : null),\n [form.travelType, searchState.properties],\n );\n const propertiesBySource = useMemo(\n () =>\n SOURCE_ORDER.map((source) => ({\n source,\n properties: rankedProperties.filter((p) => propertySource(p) === source),\n })).filter((row) => row.properties.length > 0),\n [rankedProperties],\n );\n const visibleProperties =\n sourceFilter === 'all' ? rankedProperties : rankedProperties.filter((p) => propertySource(p) === sourceFilter);\n const selectedStay = visibleProperties.find((row) => row.id === mapPropertyId) ?? null;\n const panelTheme = { card, border, ink, muted };\n const fromDate = parseLocalDateInput(fromText) ?? form.dates[0];\n const toDate = parseLocalDateInput(toText) ?? form.dates[1];\n const dateMeta = nightsAndRange(fromDate, toDate);\n const pageTitle =\n view === 'discover'\n ? 'Discover'\n : view === 'saved'\n ? 'Saved'\n : view === 'history'\n ? 'Search history'\n : view === 'bookings'\n ? 'My bookings'\n : view === 'workspace'\n ? railLabel\n : 'Book';\n\n const pickNavItem = (item: AppNavItem, groupLabel: string) => {\n setRailFlyout(null);\n setRailLabel(groupLabel);\n if (groupLabel === 'Travel') {\n if (!item.key) {\n setView('book');\n return;\n }\n if (item.key === 'saved') {\n setView('saved');\n return;\n }\n if (item.key === 'search-history') {\n setView('history');\n return;\n }\n if (item.key === 'bookings' || item.key === 'orders') {\n setView('bookings');\n return;\n }\n setWorkspacePageKey(item.key);\n setView('workspace');\n return;\n }\n if (item.key === 'assistant') {\n setChatOpen(true);\n return;\n }\n setWorkspacePageKey(item.key as Exclude<AppPageKey, ''>);\n setView('workspace');\n };\n\n const selectRail = (label: string) => {\n if (label === 'Assistant') {\n setRailFlyout(null);\n setChatOpen(true);\n return;\n }\n const group = APP_NAV.find((row) => row.railLabel === label);\n if (!group) return;\n if (group.items.length <= 1) {\n pickNavItem(group.items[0], label);\n return;\n }\n setRailFlyout((cur) => (cur === label ? null : label));\n };\n\n if (sessionError) {\n return (\n <View style={[styles.fill, { backgroundColor: screen }]}>\n <View style={styles.center}>\n <Text style={[styles.title, { color: ink }]}>Travel unavailable</Text>\n <Text style={[styles.detail, { color: muted }]}>{sessionError}</Text>\n </View>\n </View>\n );\n }\n\n if (!token) {\n return (\n <View style={[styles.fill, { backgroundColor: screen, alignItems: 'center', justifyContent: 'center' }]}>\n <ActivityIndicator />\n </View>\n );\n }\n\n const bookHero = (\n <TravelBookHero\n travelType={form.travelType}\n location={form.location.formattedAddress}\n pickupLocation={form.pickupLocation}\n dropoffLocation={form.dropoffLocation}\n guests={form.guests}\n returnFlight={form.returnFlight}\n nights={dateMeta.nights}\n range={dateMeta.range}\n fromText={fromText}\n toText={toText}\n compact={showResults || keyboardOpen}\n showAgentCta={showLanding && !keyboardOpen}\n onTypeChange={(travelType) => setForm((prev) => ({ ...prev, travelType }))}\n onLocationChange={(value) => setForm((prev) => ({ ...prev, location: { formattedAddress: value } }))}\n onLocationResolved={(location) => setForm((prev) => ({ ...prev, location }))}\n onPickupChange={(pickupLocation) => setForm((prev) => ({ ...prev, pickupLocation }))}\n onPickupResolved={(place) =>\n setForm((prev) => ({\n ...prev,\n pickupLocation: place.formattedAddress,\n location: prev.travelType === TravelType.CARS ? place : prev.location,\n }))\n }\n onDropoffChange={(dropoffLocation) => setForm((prev) => ({ ...prev, dropoffLocation }))}\n onDropoffResolved={(place) => setForm((prev) => ({ ...prev, dropoffLocation: place.formattedAddress }))}\n onFromChange={setFromText}\n onToChange={setToText}\n onGuestsChange={(guests) => setForm((prev) => ({ ...prev, guests: Math.max(1, guests) }))}\n onReturnToggle={() => setForm((prev) => ({ ...prev, returnFlight: !prev.returnFlight }))}\n onSearch={runSearchNow}\n onOpenAgent={() => setChatOpen(true)}\n />\n );\n\n return (\n <View style={[styles.fill, { backgroundColor: screen }]} testID=\"travel-panel\">\n <KeyboardAvoidingView style={styles.fill} behavior={Platform.OS === 'ios' ? 'padding' : undefined}>\n {view === 'book' && showLanding ? null : view === 'book' && showResults ? (\n <View style={styles.resultsHeroBar}>\n <BookHeaderGlow />\n <Pressable\n onPress={goToBookHome}\n hitSlop={10}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Back to search\"\n style={styles.backBtn}\n >\n <MaterialCommunityIcons name=\"chevron-left\" size={28} color=\"#fff\" />\n </Pressable>\n <Text style={styles.resultsBookTitle}>Book</Text>\n </View>\n ) : (\n <View style={styles.topBar}>\n <Text style={[styles.pageTitle, { color: ink }]}>{pageTitle}</Text>\n </View>\n )}\n\n {view === 'discover' ? <DiscoverPanel {...panelTheme} /> : null}\n {view === 'saved' ? <SavedPanel onOpenDetails={openDetails} {...panelTheme} /> : null}\n {view === 'history' ? (\n <HistoryPanel onRerunSearch={rerunSearch} onOpenDetails={openDetails} {...panelTheme} />\n ) : null}\n {view === 'bookings' ? <BookingsPanel onOpenDetails={openDetails} {...panelTheme} /> : null}\n {view === 'workspace' ? (\n <WorkspacePanel\n groupLabel={APP_NAV.find((g) => g.railLabel === railLabel)?.label}\n initialPageKey={workspacePageKey}\n {...panelTheme}\n onJumpView={(next) => {\n setRailLabel('Travel');\n setView(next === 'book' ? 'book' : next);\n }}\n onOpenAgent={() => setChatOpen(true)}\n />\n ) : null}\n\n {view === 'book' && showLanding ? (\n <ScrollView\n style={styles.fill}\n contentContainerStyle={styles.list}\n keyboardShouldPersistTaps=\"handled\"\n keyboardDismissMode={Platform.OS === 'ios' ? 'interactive' : 'on-drag'}\n automaticallyAdjustKeyboardInsets\n >\n <Pressable onPress={Keyboard.dismiss} accessible={false} style={styles.dismissTap}>\n {bookHero}\n <TravelLanding\n travelType={form.travelType}\n {...panelTheme}\n onAskAgent={() => {\n Keyboard.dismiss();\n setChatOpen(true);\n }}\n onPickCity={(query) => {\n Keyboard.dismiss();\n searchCity(query);\n }}\n onPickRoute={(origin, destination) => {\n Keyboard.dismiss();\n searchRoute(origin, destination);\n }}\n onExplore={() => {\n Keyboard.dismiss();\n setView('discover');\n }}\n onOpenTrips={() => {\n Keyboard.dismiss();\n setView('bookings');\n }}\n pickupLocation={form.pickupLocation}\n />\n </Pressable>\n </ScrollView>\n ) : null}\n\n {view === 'book' && showResults ? (\n <View style={styles.fill}>\n {visibleProperties.length > 0 ? (\n <View style={styles.topMap}>\n <TravelResultsMap\n properties={visibleProperties}\n center={form.location.coordinates ?? searchState.lastCenter}\n selectedId={mapPropertyId}\n onSelect={setMapPropertyId}\n />\n {selectedStay ? (\n <View style={styles.mapCard}>\n <TravelPropertyCard\n property={selectedStay}\n card={card}\n border={border}\n ink={ink}\n muted={muted}\n compactPeek\n onDismissPeek={() => setMapPropertyId(null)}\n onOpen={() => openDetails(selectedStay)}\n />\n </View>\n ) : null}\n </View>\n ) : null}\n <View style={styles.fill}>\n <View style={styles.resultsHead}>\n {searchState.isLoading && searchState.properties.length === 0 ? (\n <View style={styles.searching}>\n <ActivityIndicator color=\"#2869E0\" />\n <Text style={[styles.searchingText, { color: muted }]}>\n Searching properties via yantra-resortifi\n {searchState.lastQuery ? ` for ${searchState.lastQuery}` : ''}…\n </Text>\n </View>\n ) : null}\n {searchState.properties.length > 0 ? (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.chips}\n >\n <Pressable\n onPress={() => setSourceFilter('all')}\n style={[styles.chip, sourceFilter === 'all' && styles.chipOn]}\n >\n <Text\n style={[styles.chipText, sourceFilter === 'all' && styles.chipTextOn]}\n >\n All {rankedProperties.length}\n </Text>\n </Pressable>\n {propertiesBySource.map((row) => {\n const on = sourceFilter === row.source;\n return (\n <Pressable\n key={row.source}\n onPress={() => setSourceFilter(row.source)}\n style={[styles.chip, on && styles.chipOn]}\n >\n <Text style={[styles.chipText, on && styles.chipTextOn]}>\n {SOURCE_LABELS[row.source]} {row.properties.length}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n ) : null}\n {searchState.properties.length > 0 ? (\n <View style={{ gap: 2 }}>\n <Text style={[styles.found, { color: ink }]}>\n {visibleProperties.length.toLocaleString()} properties found\n </Text>\n {searchState.lastQuery ? (\n <Text style={{ color: muted, fontSize: 12 }} numberOfLines={1}>\n Results for “{searchState.lastQuery}”\n </Text>\n ) : null}\n </View>\n ) : null}\n {searchState.isEnriching ? (\n <Text style={[styles.enrich, { color: muted }]}>Finding more fares…</Text>\n ) : null}\n {flightDeals ? (\n <FlightCompareBar\n deals={flightDeals}\n sort={flightSort}\n onPick={(sort) => setFlightSort(sort)}\n ink={ink}\n muted={muted}\n card={card}\n border={border}\n />\n ) : null}\n </View>\n <ScrollView\n style={styles.fill}\n contentContainerStyle={styles.results}\n keyboardShouldPersistTaps=\"handled\"\n >\n {searchState.isLoading && searchState.properties.length === 0 ? (\n <View style={styles.resultsGrid}>\n <View style={[styles.skeleton, styles.gridCell]} />\n <View style={[styles.skeleton, styles.gridCell]} />\n <View style={[styles.skeleton, styles.gridCell]} />\n <View style={[styles.skeleton, styles.gridCell]} />\n </View>\n ) : null}\n {searchState.error && searchState.properties.length === 0 ? (\n <Text style={{ color: muted }}>{searchState.error}</Text>\n ) : null}\n <View style={styles.resultsGrid}>\n {visibleProperties.map((property) => (\n <View key={property.id} style={styles.gridCell}>\n <TravelPropertyCard\n property={property}\n card={card}\n border={border}\n ink={ink}\n muted={muted}\n selected={property.id === mapPropertyId}\n onHighlight={() => setMapPropertyId(property.id)}\n onOpen={() => openDetails(property)}\n grid\n />\n </View>\n ))}\n </View>\n </ScrollView>\n </View>\n </View>\n ) : null}\n </KeyboardAvoidingView>\n\n {detail ? (\n <TravelDetailSheet\n property={detail}\n onClose={() => setDetail(null)}\n ink={ink}\n muted={muted}\n screen={screen}\n border={border}\n />\n ) : null}\n\n {chatOpen || detail || keyboardOpen ? null : (\n <View\n style={styles.agentSwipeEdge}\n {...swipe.panHandlers}\n pointerEvents=\"box-only\"\n accessibilityLabel=\"Swipe left from here to open the travel agent\"\n />\n )}\n\n {railFlyout ? (\n <TravelRailFlyout\n group={APP_NAV.find((g) => g.railLabel === railFlyout)!}\n onDismiss={() => setRailFlyout(null)}\n onPick={(item) => pickNavItem(item, railFlyout)}\n />\n ) : null}\n\n {chatOpen || detail || keyboardOpen ? null : (\n <Pressable\n onPress={() => setChatOpen(true)}\n style={[styles.agentFab, { bottom: Math.max(insets.bottom, 8) + 64 }]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open travel agent\"\n >\n <MaterialCommunityIcons name=\"creation\" size={22} color=\"#fff\" />\n </Pressable>\n )}\n\n {keyboardOpen ? null : (\n <View style={[styles.rail, { paddingBottom: Math.max(insets.bottom, 8) }]}>\n {RAIL_NAV.map((group) => {\n const on =\n railFlyout === group.railLabel ||\n (!chatOpen && !railFlyout && railLabel === group.railLabel);\n return (\n <Pressable\n key={group.railLabel}\n onPress={() => selectRail(group.railLabel)}\n style={styles.railItem}\n accessibilityRole=\"button\"\n accessibilityLabel={group.railLabel}\n >\n <MaterialCommunityIcons\n name={group.icon as React.ComponentProps<typeof MaterialCommunityIcons>['name']}\n size={20}\n color={on ? '#2563eb' : '#64748b'}\n />\n <Text style={[styles.railLabel, on && styles.railLabelOn]} numberOfLines={1}>\n {group.railLabel}\n </Text>\n </Pressable>\n );\n })}\n </View>\n )}\n\n <TravelAgentChatPane\n visible={chatOpen}\n onClose={() => setChatOpen(false)}\n hostChat={hostChat}\n applyFromChat={searchState.applyFromChat}\n properties={searchState.properties}\n onViewResults={() => {\n setChatOpen(false);\n setView('book');\n }}\n onOpenProperty={(property) => {\n setChatOpen(false);\n openDetails(property);\n }}\n seedTurn={initialAgentSeed}\n />\n </View>\n );\n}\n\nexport default TravelExperience;\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },\n title: { fontSize: 15, fontWeight: '600', marginBottom: 6 },\n detail: { fontSize: 13, textAlign: 'center' },\n topBar: {\n paddingHorizontal: 16,\n paddingTop: 8,\n paddingBottom: 8,\n backgroundColor: '#fff',\n overflow: 'visible',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n minHeight: 52,\n },\n resultsHeroBar: {\n backgroundColor: '#12121f',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingTop: 10,\n paddingBottom: 14,\n minHeight: 72,\n gap: 4,\n },\n resultsBookTitle: {\n fontSize: 28,\n fontWeight: '800',\n color: '#fff',\n letterSpacing: -0.4,\n zIndex: 1,\n },\n backBtn: { marginLeft: -4, marginRight: 2, zIndex: 1 },\n pageTitle: { fontSize: 18, fontWeight: '700', zIndex: 1 },\n list: { paddingBottom: 16, flexGrow: 1 },\n dismissTap: { flexGrow: 1 },\n results: { paddingHorizontal: 12, paddingTop: 8, paddingBottom: 8 },\n resultsGrid: { flexDirection: 'row', flexWrap: 'wrap', justifyContent: 'space-between' },\n gridCell: { width: '48.5%', marginBottom: 10 },\n resultsHead: { paddingHorizontal: 16, paddingTop: 12, paddingBottom: 8, gap: 10 },\n found: { fontSize: 22, fontWeight: '800' },\n topMap: {\n height: 210,\n marginHorizontal: 12,\n marginTop: 8,\n marginBottom: 4,\n position: 'relative',\n borderRadius: 16,\n overflow: 'hidden',\n },\n mapCard: {\n position: 'absolute',\n left: 8,\n right: 8,\n bottom: 8,\n maxHeight: 280,\n },\n searching: { flexDirection: 'row', alignItems: 'center', gap: 10 },\n searchingText: { flex: 1, fontSize: 13, fontWeight: '600', lineHeight: 18 },\n chips: { gap: 8, paddingRight: 8 },\n chip: { borderRadius: 999, paddingHorizontal: 12, paddingVertical: 7, backgroundColor: '#e8edf3' },\n chipOn: { backgroundColor: '#2869E0' },\n chipText: { fontSize: 12, fontWeight: '700', color: '#475569' },\n chipTextOn: { color: '#fff' },\n skeleton: { height: 220, borderRadius: 16, backgroundColor: '#e2e8f0' },\n enrich: { fontSize: 12 },\n sectionHead: { fontSize: 13, fontWeight: '800' },\n agentSwipeEdge: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 72,\n width: 44,\n zIndex: 9,\n },\n rail: {\n flexDirection: 'row',\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: '#e2e8f0',\n backgroundColor: '#fff',\n paddingTop: 6,\n paddingHorizontal: 2,\n },\n railItem: { flex: 1, alignItems: 'center', gap: 2 },\n railLabel: { fontSize: 8, fontWeight: '600', color: '#64748b' },\n railLabelOn: { color: '#2563eb' },\n agentFab: {\n position: 'absolute',\n right: 16,\n width: 52,\n height: 52,\n borderRadius: 26,\n backgroundColor: '#2869E0',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 20,\n shadowColor: '#0f172a',\n shadowOpacity: 0.25,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 4 },\n elevation: 6,\n },\n});\n"],"names":["_e","next"],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {StyleSheet,Pressable,Text,View}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';function TravelGuestsField({
|
|
2
|
+
guests,
|
|
3
|
+
onPress
|
|
4
|
+
}) {
|
|
5
|
+
return /* @__PURE__ */ jsxs(Pressable, { onPress, style: styles.trigger, children: [
|
|
6
|
+
/* @__PURE__ */ jsx(Text, { style: styles.label, children: "Guests" }),
|
|
7
|
+
/* @__PURE__ */ jsxs(Text, { style: styles.value, children: [
|
|
8
|
+
guests,
|
|
9
|
+
" ",
|
|
10
|
+
guests === 1 ? "Guest" : "Guests"
|
|
11
|
+
] })
|
|
12
|
+
] });
|
|
13
|
+
}
|
|
14
|
+
function TravelGuestsPopover({
|
|
15
|
+
guests,
|
|
16
|
+
onGuestsChange
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.popover, children: [
|
|
19
|
+
/* @__PURE__ */ jsx(Text, { style: styles.title, children: "Number of Guests" }),
|
|
20
|
+
/* @__PURE__ */ jsxs(View, { style: styles.stepper, children: [
|
|
21
|
+
/* @__PURE__ */ jsx(Pressable, { onPress: () => onGuestsChange(Math.max(1, guests - 1)), disabled: guests <= 1, style: [styles.circle, guests <= 1 && styles.circleOff], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "minus", size: 16, color: guests <= 1 ? "#cbd5e1" : "#111827" }) }),
|
|
22
|
+
/* @__PURE__ */ jsx(Text, { style: styles.count, children: guests }),
|
|
23
|
+
/* @__PURE__ */ jsx(Pressable, { onPress: () => onGuestsChange(guests + 1), style: styles.circle, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: "#111827" }) })
|
|
24
|
+
] })
|
|
25
|
+
] });
|
|
26
|
+
}
|
|
27
|
+
const styles = StyleSheet.create({
|
|
28
|
+
trigger: {
|
|
29
|
+
flex: 1,
|
|
30
|
+
paddingHorizontal: 10,
|
|
31
|
+
paddingVertical: 6
|
|
32
|
+
},
|
|
33
|
+
label: {
|
|
34
|
+
fontSize: 11,
|
|
35
|
+
color: "#6b7280",
|
|
36
|
+
fontWeight: "600",
|
|
37
|
+
marginBottom: 2
|
|
38
|
+
},
|
|
39
|
+
value: {
|
|
40
|
+
fontSize: 15,
|
|
41
|
+
fontWeight: "700",
|
|
42
|
+
color: "#111827"
|
|
43
|
+
},
|
|
44
|
+
popover: {
|
|
45
|
+
marginTop: 4,
|
|
46
|
+
borderTopWidth: StyleSheet.hairlineWidth,
|
|
47
|
+
borderTopColor: "#e5e7eb",
|
|
48
|
+
paddingTop: 12,
|
|
49
|
+
paddingHorizontal: 10,
|
|
50
|
+
flexDirection: "row",
|
|
51
|
+
alignItems: "center",
|
|
52
|
+
justifyContent: "space-between",
|
|
53
|
+
gap: 12
|
|
54
|
+
},
|
|
55
|
+
title: {
|
|
56
|
+
fontSize: 14,
|
|
57
|
+
fontWeight: "600",
|
|
58
|
+
color: "#111827",
|
|
59
|
+
flex: 1
|
|
60
|
+
},
|
|
61
|
+
stepper: {
|
|
62
|
+
flexDirection: "row",
|
|
63
|
+
alignItems: "center",
|
|
64
|
+
gap: 10
|
|
65
|
+
},
|
|
66
|
+
circle: {
|
|
67
|
+
width: 32,
|
|
68
|
+
height: 32,
|
|
69
|
+
borderRadius: 16,
|
|
70
|
+
borderWidth: 1,
|
|
71
|
+
borderColor: "#e5e7eb",
|
|
72
|
+
alignItems: "center",
|
|
73
|
+
justifyContent: "center"
|
|
74
|
+
},
|
|
75
|
+
circleOff: {
|
|
76
|
+
opacity: 0.45
|
|
77
|
+
},
|
|
78
|
+
count: {
|
|
79
|
+
width: 24,
|
|
80
|
+
textAlign: "center",
|
|
81
|
+
fontSize: 16,
|
|
82
|
+
fontWeight: "700",
|
|
83
|
+
color: "#111827"
|
|
84
|
+
}
|
|
85
|
+
});export{TravelGuestsField,TravelGuestsPopover};//# sourceMappingURL=TravelGuestsField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TravelGuestsField.js","sources":["../../../src/features/travel/TravelGuestsField.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\n\nexport function TravelGuestsField({ guests, onPress }: { guests: number; onPress: () => void }) {\n return (\n <Pressable onPress={onPress} style={styles.trigger}>\n <Text style={styles.label}>Guests</Text>\n <Text style={styles.value}>\n {guests} {guests === 1 ? 'Guest' : 'Guests'}\n </Text>\n </Pressable>\n );\n}\n\nexport function TravelGuestsPopover({\n guests,\n onGuestsChange,\n}: {\n guests: number;\n onGuestsChange: (guests: number) => void;\n}) {\n return (\n <View style={styles.popover}>\n <Text style={styles.title}>Number of Guests</Text>\n <View style={styles.stepper}>\n <Pressable\n onPress={() => onGuestsChange(Math.max(1, guests - 1))}\n disabled={guests <= 1}\n style={[styles.circle, guests <= 1 && styles.circleOff]}\n >\n <MaterialCommunityIcons name=\"minus\" size={16} color={guests <= 1 ? '#cbd5e1' : '#111827'} />\n </Pressable>\n <Text style={styles.count}>{guests}</Text>\n <Pressable onPress={() => onGuestsChange(guests + 1)} style={styles.circle}>\n <MaterialCommunityIcons name=\"plus\" size={16} color=\"#111827\" />\n </Pressable>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n trigger: { flex: 1, paddingHorizontal: 10, paddingVertical: 6 },\n label: { fontSize: 11, color: '#6b7280', fontWeight: '600', marginBottom: 2 },\n value: { fontSize: 15, fontWeight: '700', color: '#111827' },\n popover: {\n marginTop: 4,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: '#e5e7eb',\n paddingTop: 12,\n paddingHorizontal: 10,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 12,\n },\n title: { fontSize: 14, fontWeight: '600', color: '#111827', flex: 1 },\n stepper: { flexDirection: 'row', alignItems: 'center', gap: 10 },\n circle: {\n width: 32,\n height: 32,\n borderRadius: 16,\n borderWidth: 1,\n borderColor: '#e5e7eb',\n alignItems: 'center',\n justifyContent: 'center',\n },\n circleOff: { opacity: 0.45 },\n count: { width: 24, textAlign: 'center', fontSize: 16, fontWeight: '700', color: '#111827' },\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState}from'react';import {StyleSheet,View,Text,Pressable}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {TravelType}from'./types.js';import {PopularDestinations}from'./PopularDestinations.js';import {FlightDealsBoard}from'./FlightDealsBoard.js';const CITY_SEEDS = [{
|
|
2
|
+
label: "Paris",
|
|
3
|
+
query: "Paris, France"
|
|
4
|
+
}, {
|
|
5
|
+
label: "Tokyo",
|
|
6
|
+
query: "Tokyo, Japan"
|
|
7
|
+
}, {
|
|
8
|
+
label: "New York",
|
|
9
|
+
query: "New York, NY, USA"
|
|
10
|
+
}, {
|
|
11
|
+
label: "Dubai",
|
|
12
|
+
query: "Dubai, United Arab Emirates"
|
|
13
|
+
}, {
|
|
14
|
+
label: "Barcelona",
|
|
15
|
+
query: "Barcelona, Spain"
|
|
16
|
+
}, {
|
|
17
|
+
label: "Bali",
|
|
18
|
+
query: "Bali, Indonesia"
|
|
19
|
+
}, {
|
|
20
|
+
label: "London",
|
|
21
|
+
query: "London, United Kingdom"
|
|
22
|
+
}, {
|
|
23
|
+
label: "Rome",
|
|
24
|
+
query: "Rome, Italy"
|
|
25
|
+
}];
|
|
26
|
+
const COUNTRY_SEEDS = [{
|
|
27
|
+
label: "Spain",
|
|
28
|
+
query: "Madrid, Spain"
|
|
29
|
+
}, {
|
|
30
|
+
label: "Germany",
|
|
31
|
+
query: "Frankfurt, Germany"
|
|
32
|
+
}, {
|
|
33
|
+
label: "Thailand",
|
|
34
|
+
query: "Bangkok, Thailand"
|
|
35
|
+
}, {
|
|
36
|
+
label: "Netherlands",
|
|
37
|
+
query: "Amsterdam, Netherlands"
|
|
38
|
+
}, {
|
|
39
|
+
label: "Turkey",
|
|
40
|
+
query: "Istanbul, Turkey"
|
|
41
|
+
}, {
|
|
42
|
+
label: "Australia",
|
|
43
|
+
query: "Sydney, Australia"
|
|
44
|
+
}, {
|
|
45
|
+
label: "India",
|
|
46
|
+
query: "Delhi, India"
|
|
47
|
+
}, {
|
|
48
|
+
label: "Singapore",
|
|
49
|
+
query: "Singapore"
|
|
50
|
+
}];
|
|
51
|
+
const SOURCES = ["Resortifi", "Booking.com", "Airbnb", "Hotels.com", "Expedia", "Flights"];
|
|
52
|
+
const VALUE_PROPS = [{
|
|
53
|
+
title: "Search everywhere at once",
|
|
54
|
+
body: "We scan top provider sites and surface the best-value price, so you compare in one view instead of ten tabs."
|
|
55
|
+
}, {
|
|
56
|
+
title: "Ask the AI agent",
|
|
57
|
+
body: "Describe your trip in plain language and the agent returns stays, flights, and cars ready to book."
|
|
58
|
+
}, {
|
|
59
|
+
title: "Enterprise-grade & policy-aware",
|
|
60
|
+
body: "Book with Yantra directly, stay inside travel policy, and keep every trip and receipt in one place."
|
|
61
|
+
}];
|
|
62
|
+
const FAQS = [{
|
|
63
|
+
q: "How does Yantra rank results?",
|
|
64
|
+
a: "We scan top provider sites \u2014 Booking.com, Airbnb, Expedia, Hotels.com and more \u2014 then rank by a blend of price, rating, and location for your dates."
|
|
65
|
+
}, {
|
|
66
|
+
q: "Do I book directly through Yantra?",
|
|
67
|
+
a: "For Yantra's own bookable inventory you complete checkout in-app with secure card payment. For partner listings we hand you off to the provider to finish booking."
|
|
68
|
+
}, {
|
|
69
|
+
q: "How does the AI travel agent work?",
|
|
70
|
+
a: "Describe your trip in plain language and the agent parses it, searches stays, flights, and cars, and returns options you can refine or book \u2014 no forms required."
|
|
71
|
+
}, {
|
|
72
|
+
q: "Is Yantra good for business travel?",
|
|
73
|
+
a: "Yes. Yantra Travel is policy-aware and enterprise-grade \u2014 bookings respect your travel policy and stay organized with trips, receipts, and approvals in one workspace."
|
|
74
|
+
}];
|
|
75
|
+
function TravelLanding({
|
|
76
|
+
travelType,
|
|
77
|
+
card,
|
|
78
|
+
border,
|
|
79
|
+
ink,
|
|
80
|
+
muted,
|
|
81
|
+
pickupLocation,
|
|
82
|
+
onAskAgent,
|
|
83
|
+
onPickCity,
|
|
84
|
+
onPickRoute,
|
|
85
|
+
onExplore,
|
|
86
|
+
onOpenTrips
|
|
87
|
+
}) {
|
|
88
|
+
const [openFaq, setOpenFaq] = useState(null);
|
|
89
|
+
const kicker = travelType === TravelType.FLIGHTS ? "Flights to" : travelType === TravelType.CARS ? "Cars in" : "Stays in";
|
|
90
|
+
return /* @__PURE__ */ jsxs(View, { style: {
|
|
91
|
+
gap: 20,
|
|
92
|
+
paddingHorizontal: 16,
|
|
93
|
+
paddingTop: 20,
|
|
94
|
+
paddingBottom: 8
|
|
95
|
+
}, children: [
|
|
96
|
+
/* @__PURE__ */ jsx(Text, { style: styles.eyebrow, children: "Get more from every trip" }),
|
|
97
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.h2, {
|
|
98
|
+
color: ink
|
|
99
|
+
}], children: "Plan smarter, not harder" }),
|
|
100
|
+
/* @__PURE__ */ jsxs(Pressable, { onPress: onAskAgent, style: [styles.action, {
|
|
101
|
+
backgroundColor: card,
|
|
102
|
+
borderColor: border
|
|
103
|
+
}], children: [
|
|
104
|
+
/* @__PURE__ */ jsx(View, { style: [styles.actionIcon, {
|
|
105
|
+
backgroundColor: "#7c3aed"
|
|
106
|
+
}], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "creation", size: 18, color: "#fff" }) }),
|
|
107
|
+
/* @__PURE__ */ jsxs(View, { style: {
|
|
108
|
+
flex: 1
|
|
109
|
+
}, children: [
|
|
110
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.actionTitle, {
|
|
111
|
+
color: ink
|
|
112
|
+
}], children: "Plan with AI" }),
|
|
113
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
114
|
+
color: muted,
|
|
115
|
+
fontSize: 13,
|
|
116
|
+
lineHeight: 18
|
|
117
|
+
}, children: "Ask in plain language and let the agent build stays, flights, and itineraries." }),
|
|
118
|
+
/* @__PURE__ */ jsx(Text, { style: styles.link, children: "Start planning \u2192" })
|
|
119
|
+
] })
|
|
120
|
+
] }),
|
|
121
|
+
/* @__PURE__ */ jsxs(Pressable, { onPress: onExplore, style: [styles.action, {
|
|
122
|
+
backgroundColor: card,
|
|
123
|
+
borderColor: border
|
|
124
|
+
}], children: [
|
|
125
|
+
/* @__PURE__ */ jsx(View, { style: [styles.actionIcon, {
|
|
126
|
+
backgroundColor: "#2563eb"
|
|
127
|
+
}], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "magnify", size: 18, color: "#fff" }) }),
|
|
128
|
+
/* @__PURE__ */ jsxs(View, { style: {
|
|
129
|
+
flex: 1
|
|
130
|
+
}, children: [
|
|
131
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.actionTitle, {
|
|
132
|
+
color: ink
|
|
133
|
+
}], children: "Explore experiences" }),
|
|
134
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
135
|
+
color: muted,
|
|
136
|
+
fontSize: 13,
|
|
137
|
+
lineHeight: 18
|
|
138
|
+
}, children: "Discover attractions, dining, and things to do at your destination." }),
|
|
139
|
+
/* @__PURE__ */ jsx(Text, { style: styles.link, children: "Explore now \u2192" })
|
|
140
|
+
] })
|
|
141
|
+
] }),
|
|
142
|
+
/* @__PURE__ */ jsxs(Pressable, { onPress: onOpenTrips, style: [styles.action, {
|
|
143
|
+
backgroundColor: card,
|
|
144
|
+
borderColor: border
|
|
145
|
+
}], children: [
|
|
146
|
+
/* @__PURE__ */ jsx(View, { style: [styles.actionIcon, {
|
|
147
|
+
backgroundColor: "#0ea5e9"
|
|
148
|
+
}], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "map-marker-path", size: 18, color: "#fff" }) }),
|
|
149
|
+
/* @__PURE__ */ jsxs(View, { style: {
|
|
150
|
+
flex: 1
|
|
151
|
+
}, children: [
|
|
152
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.actionTitle, {
|
|
153
|
+
color: ink
|
|
154
|
+
}], children: "Your trips" }),
|
|
155
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
156
|
+
color: muted,
|
|
157
|
+
fontSize: 13,
|
|
158
|
+
lineHeight: 18
|
|
159
|
+
}, children: "Every booking, itinerary, and receipt organized in one place." }),
|
|
160
|
+
/* @__PURE__ */ jsx(Text, { style: styles.link, children: "View trips \u2192" })
|
|
161
|
+
] })
|
|
162
|
+
] }),
|
|
163
|
+
/* @__PURE__ */ jsx(Text, { style: styles.eyebrow, children: "Most searched on Yantra" }),
|
|
164
|
+
/* @__PURE__ */ jsx(PopularDestinations, { seeds: CITY_SEEDS, title: "Popular destinations", kicker, ink, muted, onSelect: onPickCity }),
|
|
165
|
+
travelType === TravelType.FLIGHTS ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
166
|
+
/* @__PURE__ */ jsx(FlightDealsBoard, { ink, muted, card, border, originHint: pickupLocation, onSelectRoute: onPickRoute }),
|
|
167
|
+
/* @__PURE__ */ jsx(PopularDestinations, { seeds: COUNTRY_SEEDS, title: "Trending countries", kicker: "Flights to", ink, muted, onSelect: onPickCity })
|
|
168
|
+
] }) : null,
|
|
169
|
+
/* @__PURE__ */ jsxs(View, { style: [styles.sources, {
|
|
170
|
+
backgroundColor: card,
|
|
171
|
+
borderColor: border
|
|
172
|
+
}], children: [
|
|
173
|
+
/* @__PURE__ */ jsx(Text, { style: styles.eyebrow, children: "One search, every source" }),
|
|
174
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.h2, {
|
|
175
|
+
color: ink,
|
|
176
|
+
fontSize: 18
|
|
177
|
+
}], children: "Compare across your favorite brands" }),
|
|
178
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
179
|
+
color: muted,
|
|
180
|
+
fontSize: 13,
|
|
181
|
+
lineHeight: 18
|
|
182
|
+
}, children: "We search across every provider at once and show you the best price \u2014 you never overpay for the same room or seat." }),
|
|
183
|
+
/* @__PURE__ */ jsx(View, { style: styles.sourceRow, children: SOURCES.map((label) => /* @__PURE__ */ jsx(View, { style: styles.sourceChip, children: /* @__PURE__ */ jsx(Text, { style: styles.sourceText, children: label }) }, label)) })
|
|
184
|
+
] }),
|
|
185
|
+
/* @__PURE__ */ jsx(Text, { style: styles.eyebrow, children: "Why Yantra Travel" }),
|
|
186
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.h2, {
|
|
187
|
+
color: ink
|
|
188
|
+
}], children: "Booking that works for you" }),
|
|
189
|
+
VALUE_PROPS.map((prop) => /* @__PURE__ */ jsx(View, { style: [styles.action, {
|
|
190
|
+
backgroundColor: card,
|
|
191
|
+
borderColor: border
|
|
192
|
+
}], children: /* @__PURE__ */ jsxs(View, { style: {
|
|
193
|
+
flex: 1,
|
|
194
|
+
gap: 4
|
|
195
|
+
}, children: [
|
|
196
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.actionTitle, {
|
|
197
|
+
color: ink
|
|
198
|
+
}], children: prop.title }),
|
|
199
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
200
|
+
color: muted,
|
|
201
|
+
fontSize: 13,
|
|
202
|
+
lineHeight: 18
|
|
203
|
+
}, children: prop.body })
|
|
204
|
+
] }) }, prop.title)),
|
|
205
|
+
/* @__PURE__ */ jsx(Text, { style: styles.eyebrow, children: "Good to know" }),
|
|
206
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.h2, {
|
|
207
|
+
color: ink
|
|
208
|
+
}], children: "How Yantra Travel works" }),
|
|
209
|
+
/* @__PURE__ */ jsx(View, { style: [styles.faq, {
|
|
210
|
+
backgroundColor: card,
|
|
211
|
+
borderColor: border
|
|
212
|
+
}], children: FAQS.map((faq) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => setOpenFaq((cur) => cur === faq.q ? null : faq.q), style: [styles.faqRow, {
|
|
213
|
+
borderColor: border
|
|
214
|
+
}], children: [
|
|
215
|
+
/* @__PURE__ */ jsxs(View, { style: styles.faqHead, children: [
|
|
216
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.actionTitle, {
|
|
217
|
+
color: ink,
|
|
218
|
+
flex: 1
|
|
219
|
+
}], children: faq.q }),
|
|
220
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: openFaq === faq.q ? "chevron-up" : "chevron-down", size: 18, color: muted })
|
|
221
|
+
] }),
|
|
222
|
+
openFaq === faq.q ? /* @__PURE__ */ jsx(Text, { style: {
|
|
223
|
+
color: muted,
|
|
224
|
+
fontSize: 13,
|
|
225
|
+
lineHeight: 18
|
|
226
|
+
}, children: faq.a }) : null
|
|
227
|
+
] }, faq.q)) })
|
|
228
|
+
] });
|
|
229
|
+
}
|
|
230
|
+
const styles = StyleSheet.create({
|
|
231
|
+
eyebrow: {
|
|
232
|
+
fontSize: 11,
|
|
233
|
+
fontWeight: "700",
|
|
234
|
+
letterSpacing: 0.14 * 11,
|
|
235
|
+
textTransform: "uppercase",
|
|
236
|
+
color: "#2563eb"
|
|
237
|
+
},
|
|
238
|
+
h2: {
|
|
239
|
+
fontSize: 22,
|
|
240
|
+
fontWeight: "800",
|
|
241
|
+
marginTop: -8
|
|
242
|
+
},
|
|
243
|
+
action: {
|
|
244
|
+
flexDirection: "row",
|
|
245
|
+
gap: 12,
|
|
246
|
+
borderWidth: 1,
|
|
247
|
+
borderRadius: 16,
|
|
248
|
+
padding: 16,
|
|
249
|
+
alignItems: "flex-start",
|
|
250
|
+
shadowColor: "#0f172a",
|
|
251
|
+
shadowOpacity: 0.06,
|
|
252
|
+
shadowRadius: 12,
|
|
253
|
+
shadowOffset: {
|
|
254
|
+
width: 0,
|
|
255
|
+
height: 4
|
|
256
|
+
},
|
|
257
|
+
elevation: 2
|
|
258
|
+
},
|
|
259
|
+
actionIcon: {
|
|
260
|
+
width: 40,
|
|
261
|
+
height: 40,
|
|
262
|
+
borderRadius: 12,
|
|
263
|
+
alignItems: "center",
|
|
264
|
+
justifyContent: "center"
|
|
265
|
+
},
|
|
266
|
+
actionTitle: {
|
|
267
|
+
fontSize: 15,
|
|
268
|
+
fontWeight: "800"
|
|
269
|
+
},
|
|
270
|
+
link: {
|
|
271
|
+
color: "#2563eb",
|
|
272
|
+
fontWeight: "700",
|
|
273
|
+
marginTop: 6,
|
|
274
|
+
fontSize: 13
|
|
275
|
+
},
|
|
276
|
+
sources: {
|
|
277
|
+
borderWidth: 1,
|
|
278
|
+
borderRadius: 20,
|
|
279
|
+
padding: 16,
|
|
280
|
+
gap: 8,
|
|
281
|
+
alignItems: "center"
|
|
282
|
+
},
|
|
283
|
+
sourceRow: {
|
|
284
|
+
flexDirection: "row",
|
|
285
|
+
flexWrap: "wrap",
|
|
286
|
+
gap: 8,
|
|
287
|
+
justifyContent: "center",
|
|
288
|
+
marginTop: 8
|
|
289
|
+
},
|
|
290
|
+
sourceChip: {
|
|
291
|
+
backgroundColor: "#fff",
|
|
292
|
+
borderWidth: 1,
|
|
293
|
+
borderColor: "#e4e8ee",
|
|
294
|
+
borderRadius: 10,
|
|
295
|
+
paddingHorizontal: 10,
|
|
296
|
+
paddingVertical: 6
|
|
297
|
+
},
|
|
298
|
+
sourceText: {
|
|
299
|
+
fontSize: 12,
|
|
300
|
+
fontWeight: "700",
|
|
301
|
+
color: "#0f172a"
|
|
302
|
+
},
|
|
303
|
+
faq: {
|
|
304
|
+
borderWidth: 1,
|
|
305
|
+
borderRadius: 16,
|
|
306
|
+
overflow: "hidden"
|
|
307
|
+
},
|
|
308
|
+
faqRow: {
|
|
309
|
+
padding: 14,
|
|
310
|
+
borderTopWidth: StyleSheet.hairlineWidth,
|
|
311
|
+
gap: 8
|
|
312
|
+
},
|
|
313
|
+
faqHead: {
|
|
314
|
+
flexDirection: "row",
|
|
315
|
+
alignItems: "center",
|
|
316
|
+
gap: 8
|
|
317
|
+
}
|
|
318
|
+
});export{CITY_SEEDS,TravelLanding};//# sourceMappingURL=TravelLanding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TravelLanding.js","sources":["../../../src/features/travel/TravelLanding.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { TravelType } from './types';\nimport { PopularDestinations } from './PopularDestinations';\nimport { FlightDealsBoard } from './FlightDealsBoard';\n\nexport const CITY_SEEDS = [\n { label: 'Paris', query: 'Paris, France' },\n { label: 'Tokyo', query: 'Tokyo, Japan' },\n { label: 'New York', query: 'New York, NY, USA' },\n { label: 'Dubai', query: 'Dubai, United Arab Emirates' },\n { label: 'Barcelona', query: 'Barcelona, Spain' },\n { label: 'Bali', query: 'Bali, Indonesia' },\n { label: 'London', query: 'London, United Kingdom' },\n { label: 'Rome', query: 'Rome, Italy' },\n];\n\nconst COUNTRY_SEEDS = [\n { label: 'Spain', query: 'Madrid, Spain' },\n { label: 'Germany', query: 'Frankfurt, Germany' },\n { label: 'Thailand', query: 'Bangkok, Thailand' },\n { label: 'Netherlands', query: 'Amsterdam, Netherlands' },\n { label: 'Turkey', query: 'Istanbul, Turkey' },\n { label: 'Australia', query: 'Sydney, Australia' },\n { label: 'India', query: 'Delhi, India' },\n { label: 'Singapore', query: 'Singapore' },\n];\n\nconst SOURCES = ['Resortifi', 'Booking.com', 'Airbnb', 'Hotels.com', 'Expedia', 'Flights'];\n\nconst VALUE_PROPS = [\n {\n title: 'Search everywhere at once',\n body: 'We scan top provider sites and surface the best-value price, so you compare in one view instead of ten tabs.',\n },\n {\n title: 'Ask the AI agent',\n body: 'Describe your trip in plain language and the agent returns stays, flights, and cars ready to book.',\n },\n {\n title: 'Enterprise-grade & policy-aware',\n body: 'Book with Yantra directly, stay inside travel policy, and keep every trip and receipt in one place.',\n },\n];\n\nconst FAQS = [\n {\n q: 'How does Yantra rank results?',\n a: 'We scan top provider sites — Booking.com, Airbnb, Expedia, Hotels.com and more — then rank by a blend of price, rating, and location for your dates.',\n },\n {\n q: 'Do I book directly through Yantra?',\n a: \"For Yantra's own bookable inventory you complete checkout in-app with secure card payment. For partner listings we hand you off to the provider to finish booking.\",\n },\n {\n q: 'How does the AI travel agent work?',\n a: 'Describe your trip in plain language and the agent parses it, searches stays, flights, and cars, and returns options you can refine or book — no forms required.',\n },\n {\n q: 'Is Yantra good for business travel?',\n a: 'Yes. Yantra Travel is policy-aware and enterprise-grade — bookings respect your travel policy and stay organized with trips, receipts, and approvals in one workspace.',\n },\n];\n\nexport function TravelLanding({\n travelType,\n card,\n border,\n ink,\n muted,\n pickupLocation,\n onAskAgent,\n onPickCity,\n onPickRoute,\n onExplore,\n onOpenTrips,\n}: {\n travelType: TravelType;\n card: string;\n border: string;\n ink: string;\n muted: string;\n pickupLocation?: string;\n onAskAgent: () => void;\n onPickCity: (query: string) => void;\n onPickRoute: (origin: string, destination: string) => void;\n onExplore: () => void;\n onOpenTrips: () => void;\n}) {\n const [openFaq, setOpenFaq] = useState<string | null>(null);\n const kicker =\n travelType === TravelType.FLIGHTS ? 'Flights to' : travelType === TravelType.CARS ? 'Cars in' : 'Stays in';\n\n return (\n <View style={{ gap: 20, paddingHorizontal: 16, paddingTop: 20, paddingBottom: 8 }}>\n <Text style={styles.eyebrow}>Get more from every trip</Text>\n <Text style={[styles.h2, { color: ink }]}>Plan smarter, not harder</Text>\n <Pressable onPress={onAskAgent} style={[styles.action, { backgroundColor: card, borderColor: border }]}>\n <View style={[styles.actionIcon, { backgroundColor: '#7c3aed' }]}>\n <MaterialCommunityIcons name=\"creation\" size={18} color=\"#fff\" />\n </View>\n <View style={{ flex: 1 }}>\n <Text style={[styles.actionTitle, { color: ink }]}>Plan with AI</Text>\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>\n Ask in plain language and let the agent build stays, flights, and itineraries.\n </Text>\n <Text style={styles.link}>Start planning →</Text>\n </View>\n </Pressable>\n <Pressable onPress={onExplore} style={[styles.action, { backgroundColor: card, borderColor: border }]}>\n <View style={[styles.actionIcon, { backgroundColor: '#2563eb' }]}>\n <MaterialCommunityIcons name=\"magnify\" size={18} color=\"#fff\" />\n </View>\n <View style={{ flex: 1 }}>\n <Text style={[styles.actionTitle, { color: ink }]}>Explore experiences</Text>\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>\n Discover attractions, dining, and things to do at your destination.\n </Text>\n <Text style={styles.link}>Explore now →</Text>\n </View>\n </Pressable>\n <Pressable onPress={onOpenTrips} style={[styles.action, { backgroundColor: card, borderColor: border }]}>\n <View style={[styles.actionIcon, { backgroundColor: '#0ea5e9' }]}>\n <MaterialCommunityIcons name=\"map-marker-path\" size={18} color=\"#fff\" />\n </View>\n <View style={{ flex: 1 }}>\n <Text style={[styles.actionTitle, { color: ink }]}>Your trips</Text>\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>\n Every booking, itinerary, and receipt organized in one place.\n </Text>\n <Text style={styles.link}>View trips →</Text>\n </View>\n </Pressable>\n\n <Text style={styles.eyebrow}>Most searched on Yantra</Text>\n <PopularDestinations\n seeds={CITY_SEEDS}\n title=\"Popular destinations\"\n kicker={kicker}\n ink={ink}\n muted={muted}\n onSelect={onPickCity}\n />\n\n {travelType === TravelType.FLIGHTS ? (\n <>\n <FlightDealsBoard\n ink={ink}\n muted={muted}\n card={card}\n border={border}\n originHint={pickupLocation}\n onSelectRoute={onPickRoute}\n />\n <PopularDestinations\n seeds={COUNTRY_SEEDS}\n title=\"Trending countries\"\n kicker=\"Flights to\"\n ink={ink}\n muted={muted}\n onSelect={onPickCity}\n />\n </>\n ) : null}\n\n <View style={[styles.sources, { backgroundColor: card, borderColor: border }]}>\n <Text style={styles.eyebrow}>One search, every source</Text>\n <Text style={[styles.h2, { color: ink, fontSize: 18 }]}>Compare across your favorite brands</Text>\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>\n We search across every provider at once and show you the best price — you never overpay for the same\n room or seat.\n </Text>\n <View style={styles.sourceRow}>\n {SOURCES.map((label) => (\n <View key={label} style={styles.sourceChip}>\n <Text style={styles.sourceText}>{label}</Text>\n </View>\n ))}\n </View>\n </View>\n\n <Text style={styles.eyebrow}>Why Yantra Travel</Text>\n <Text style={[styles.h2, { color: ink }]}>Booking that works for you</Text>\n {VALUE_PROPS.map((prop) => (\n <View key={prop.title} style={[styles.action, { backgroundColor: card, borderColor: border }]}>\n <View style={{ flex: 1, gap: 4 }}>\n <Text style={[styles.actionTitle, { color: ink }]}>{prop.title}</Text>\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>{prop.body}</Text>\n </View>\n </View>\n ))}\n\n <Text style={styles.eyebrow}>Good to know</Text>\n <Text style={[styles.h2, { color: ink }]}>How Yantra Travel works</Text>\n <View style={[styles.faq, { backgroundColor: card, borderColor: border }]}>\n {FAQS.map((faq) => (\n <Pressable\n key={faq.q}\n onPress={() => setOpenFaq((cur) => (cur === faq.q ? null : faq.q))}\n style={[styles.faqRow, { borderColor: border }]}\n >\n <View style={styles.faqHead}>\n <Text style={[styles.actionTitle, { color: ink, flex: 1 }]}>{faq.q}</Text>\n <MaterialCommunityIcons\n name={openFaq === faq.q ? 'chevron-up' : 'chevron-down'}\n size={18}\n color={muted}\n />\n </View>\n {openFaq === faq.q ? (\n <Text style={{ color: muted, fontSize: 13, lineHeight: 18 }}>{faq.a}</Text>\n ) : null}\n </Pressable>\n ))}\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n eyebrow: {\n fontSize: 11,\n fontWeight: '700',\n letterSpacing: 0.14 * 11,\n textTransform: 'uppercase',\n color: '#2563eb',\n },\n h2: { fontSize: 22, fontWeight: '800', marginTop: -8 },\n action: {\n flexDirection: 'row',\n gap: 12,\n borderWidth: 1,\n borderRadius: 16,\n padding: 16,\n alignItems: 'flex-start',\n shadowColor: '#0f172a',\n shadowOpacity: 0.06,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n elevation: 2,\n },\n actionIcon: { width: 40, height: 40, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n actionTitle: { fontSize: 15, fontWeight: '800' },\n link: { color: '#2563eb', fontWeight: '700', marginTop: 6, fontSize: 13 },\n sources: { borderWidth: 1, borderRadius: 20, padding: 16, gap: 8, alignItems: 'center' },\n sourceRow: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, justifyContent: 'center', marginTop: 8 },\n sourceChip: {\n backgroundColor: '#fff',\n borderWidth: 1,\n borderColor: '#e4e8ee',\n borderRadius: 10,\n paddingHorizontal: 10,\n paddingVertical: 6,\n },\n sourceText: { fontSize: 12, fontWeight: '700', color: '#0f172a' },\n faq: { borderWidth: 1, borderRadius: 16, overflow: 'hidden' },\n faqRow: { padding: 14, borderTopWidth: StyleSheet.hairlineWidth, gap: 8 },\n faqHead: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n});\n"],"names":[],"mappings":"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"}
|