import { createStackNavigator } from "@react-navigation/stack"; import React from "react"; import { Platform } from "react-native"; import CreatePassword from "../screens/CreatePassword"; import CreatePseudo from "../screens/CreatePseudo"; import ForgotPassword from "../screens/ForgotPassword"; import LandingPage from "../screens/LandingPage"; import AllMyList from "../screens/Library/AllMyList"; import AllMyPlaylist from "../screens/Library/AllMyPlaylist"; import MusicDetails from "../screens/Library/MusicDetails"; import PlaylistDetails from "../screens/Library/PlaylistDetails"; import Research from "../screens/Library/Research"; import Login from "../screens/Login"; import NewMusicOptions from "../screens/NewMusicOptions"; import Onboarding from "../screens/Onboarding"; import ChooseDecor from "../screens/Playback/ChooseDecor"; import CreatingDecor from "../screens/Playback/CreatingDecor"; import Playback from "../screens/Playback/Playback"; import PlaybackOnboarding from "../screens/Playback/PlaybackOnboarding"; import RecordPlayback from "../screens/Playback/RecordPlayback"; import RecordedPlayback from "../screens/Playback/RecordedPlayback"; import VideoFinalize from "../screens/Playback/VideoFinalize"; import PublishYoutube from "../screens/Publishing/PublishYoutube"; import PrivacyPolicy from "../screens/PrivacyPolicy"; import DownloadPrices from "../screens/Production/DownloadPrices"; import DownloadSongs from "../screens/Production/DownloadSongs"; import PlaybackExample from "../screens/Production/PlaybackExample"; import Production from "../screens/Production/Production"; import ProductionOnboarding from "../screens/Production/ProductionOnboarding"; import SongDownloaded from "../screens/Production/SongDownloaded"; import SongRelease from "../screens/Production/SongRelease"; import StreamSong from "../screens/Production/StreamSong"; import ChangeEmailAddress from "../screens/Profile/ChangeEmailAddress"; import ChangePassword from "../screens/Profile/ChangePassword"; import EditProfile from "../screens/Profile/EditProfile"; import Follows from "../screens/Profile/Follows"; import Language from "../screens/Profile/Language"; import Notifications from "../screens/Profile/Notifications"; import Profile from "../screens/Profile/Profile"; import Reels from "../screens/Profile/Reels"; import Settings from "../screens/Profile/Settings"; import Register from "../screens/Register"; import Splash from "../screens/Splash"; import Compose from "../screens/Studio/Compose"; import ComposeSong from "../screens/Studio/ComposeSong"; import CustomizeVoice from "../screens/Studio/CustomizeVoice"; import GeneratingSong from "../screens/Studio/GeneratingSong"; import Regenerate from "../screens/Studio/Regenerate"; import SongReady from "../screens/Studio/SongReady"; import Studio from "../screens/Studio/Studio"; import TermsOfUse from "../screens/TermsOfUse"; import CreateLyricsWithAi from "../screens/Writing/CreateLyricsWithAi"; import FinishedWriting from "../screens/Writing/FinishedWriting"; import Lyrics from "../screens/Writing/Lyrics"; import Writing from "../screens/Writing/Writing"; import WritingLyrics from "../screens/Writing/WritingLyrics"; import { ChooseCoverType } from "../screens/cover/ChooseCoverType"; import PhotoCover from "../screens/cover/PhotoCover"; import PouchReady from "../screens/cover/PouchReady"; import ValidateCover from "../screens/cover/ValidateCover"; import { Palette } from "../styles"; import { BottomTabScreen } from "./BottomTab"; import { Routes } from "./Routes"; const isWeb = Platform.OS === "web"; const screenOptions = { headerShown: false, cardOverlayEnabled: true, headerStyle: { backgroundColor: Palette.background, }, headerTitleStyle: {}, headerTitleAlign: "center", headerBackTitleVisible: false, ...(isWeb ? { // Avoid web-specific pointerEvents issues by disabling animations/gestures animationEnabled: false, gestureEnabled: false, } : {}), }; const MainStack = createStackNavigator(); const baseScreens = [ { name: Routes.Splash, component: Splash }, { name: Routes.Onboarding, component: Onboarding }, { name: Routes.Login, component: Login, title: "Connexion" }, { name: Routes.LandingPage, component: LandingPage }, { name: Routes.ForgotPassword, component: ForgotPassword, title: "Mot de passe oublié", }, { name: Routes.BottomTab, component: BottomTabScreen, options: { animationEnabled: false }, }, { name: Routes.TermsOfUse, component: TermsOfUse, title: "Conditions d'utilisation", }, { name: Routes.PrivacyPolicy, component: PrivacyPolicy, title: "Politique de confidentialité", }, { name: Routes.Writing, component: Writing, }, { name: Routes.WritingLyrics, component: WritingLyrics, }, { name: Routes.CreateLyricsWithAi, component: CreateLyricsWithAi, }, { name: Routes.Lyrics, component: Lyrics, }, { name: Routes.FinishedWriting, component: FinishedWriting, }, { name: Routes.Studio, component: Studio, }, { name: Routes.ComposeSong, component: ComposeSong, }, { name: Routes.Compose, component: Compose, }, { name: Routes.CustomizeVoice, component: CustomizeVoice, }, { name: Routes.SongReady, component: SongReady, }, { name: Routes.Regenerate, component: Regenerate, }, { name: Routes.PouchReady, component: PouchReady, }, { name: Routes.PhotoCover, component: PhotoCover, }, { name: Routes.ValidateCover, component: ValidateCover, }, { name: Routes.ProductionOnboarding, component: ProductionOnboarding, }, { name: Routes.Production, component: Production, }, { name: Routes.DownloadSongs, component: DownloadSongs, }, { name: Routes.DownloadPrices, component: DownloadPrices, }, { name: Routes.SongDownloaded, component: SongDownloaded, }, { name: Routes.StreamSong, component: StreamSong, }, { name: Routes.GeneratingSong, component: GeneratingSong, }, { name: Routes.SongRelease, component: SongRelease, }, { name: Routes.PlaybackExample, component: PlaybackExample, }, { name: Routes.PlaybackOnboarding, component: PlaybackOnboarding, }, { name: Routes.Playback, component: Playback, }, { name: Routes.RecordPlayback, component: RecordPlayback, }, { name: Routes.RecordedPlayback, component: RecordedPlayback, }, { name: Routes.ChooseDecor, component: ChooseDecor, }, { name: Routes.CreatingDecor, component: CreatingDecor, }, { name: Routes.VideoFinalize, component: VideoFinalize, }, { name: Routes.PublishYoutube, component: PublishYoutube, }, { name: Routes.AllMyPlaylist, component: AllMyPlaylist, }, { name: Routes.PlaylistDetails, component: PlaylistDetails, }, { name: Routes.AllMyList, component: AllMyList, }, { name: Routes.Research, component: Research, }, { name: Routes.MusicDetails, component: MusicDetails, }, { name: Routes.SingerProfile, component: Profile, }, { name: Routes.EditProfile, component: EditProfile, }, { name: Routes.Settings, component: Settings, }, { name: Routes.Follows, component: Follows, }, { name: Routes.FlowSelection, component: NewMusicOptions, }, { name: Routes.ChangeEmailAddress, component: ChangeEmailAddress, }, { name: Routes.ChangePassword, component: ChangePassword, }, { name: Routes.Notifications, component: Notifications, }, { name: Routes.Language, component: Language, }, { name: Routes.Reels, component: Reels, }, { name: Routes.Register, component: Register, }, { name: Routes.CreatePassword, component: CreatePassword, }, { name: Routes.CreatePseudo, component: CreatePseudo, }, { name: Routes.ChooseCoverType, component: ChooseCoverType, }, ]; const transparentSettingsRoutes = new Set([ Routes.ChangeEmailAddress, Routes.ChangePassword, Routes.Notifications, Routes.Language, ]); const screens = baseScreens.map((screen) => { if (!transparentSettingsRoutes.has(screen.name)) { return screen; } const existingOptions = screen.options || {}; return { ...screen, options: { ...existingOptions, animationEnabled: false, presentation: "transparentModal", cardOverlayEnabled: true, contentStyle: { ...(existingOptions.contentStyle || {}), backgroundColor: "transparent", }, cardStyle: { ...(existingOptions.cardStyle || {}), backgroundColor: "transparent", }, }, }; }); export default function Main() { return ( {screens.map((screen) => ( ))} ); }