import React from 'react';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

// ─── Screen imports ────────────────────────────────────────────────────────────

import ProfileScreen from '../screens/profile/ProfileScreen';
import EditProfileScreen from '../screens/profile/EditProfileScreen';
import FriendsScreen from '../screens/profile/FriendsScreen';
import FriendProfileScreen from '../screens/profile/FriendProfileScreen';
import SavedPlacesScreen from '../screens/profile/SavedPlacesScreen';
import AddPlaceScreen from '../screens/profile/AddPlaceScreen';
import MyRatingsScreen from '../screens/profile/MyRatingsScreen';
import SettingsScreen from '../screens/profile/SettingsScreen';
import AboutScreen from '../screens/profile/AboutScreen';
import HelpScreen from '../screens/profile/HelpScreen';

// ─── Types ─────────────────────────────────────────────────────────────────────

import type { ProfileStackParamList } from './types';

type ProfileStack = createNativeStackNavigator<ProfileStackParamList>;

// ─── ProfileStackNavigator ─────────────────────────────────────────────────────

export default function ProfileStackNavigator() {
  const Stack = createNativeStackNavigator<ProfileStackParamList>();

  return (
    <Stack.Navigator
      initialRouteName="Profile"
      screenOptions={{
        headerShown: false,
        animation: 'slide_from_right',
      }}
    >
      <Stack.Screen name="Profile" component={ProfileScreen} />
      <Stack.Screen name="EditProfile" component={EditProfileScreen} />
      <Stack.Screen name="Friends" component={FriendsScreen} />
      <Stack.Screen name="FriendProfile" component={FriendProfileScreen} />
      <Stack.Screen name="SavedPlaces" component={SavedPlacesScreen} />
      <Stack.Screen
        name="AddPlace"
        component={AddPlaceScreen}
        options={{ animation: 'slide_from_bottom', presentation: 'modal' }}
      />
      <Stack.Screen name="MyRatings" component={MyRatingsScreen} />
      <Stack.Screen name="Settings" component={SettingsScreen} />
      <Stack.Screen name="About" component={AboutScreen} />
      <Stack.Screen name="Help" component={HelpScreen} />
    </Stack.Navigator>
  );
}
