import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { GuestStackParamList } from './types';
import { HomeScreen } from '../screens/guest/HomeScreen';
import { LoginScreen } from '../screens/auth/LoginScreen';
import {
  RegisterScreen,
  ForgotPasswordScreen,
  ResetPasswordScreen,
  VerifyScreen,
  CustomerOnboardScreen,
} from '../screens/auth/OtherAuthScreens';
import {
  ContactScreen,
  LegalScreen,
  PartnersScreen,
  GuidePublicScreen,
  BlogPublicScreen,
  FaqPublicScreen,
  ContentViewScreen,
} from '../screens/guest/PublicContentScreens';

const Stack = createNativeStackNavigator<GuestStackParamList>();

function GuideViewScreen(props: { route: { params: { slug: string } } }) {
  return <ContentViewScreen route={props.route} title="Guide" apiPrefix="/public/documentation" />;
}
function BlogViewScreen(props: { route: { params: { slug: string } } }) {
  return <ContentViewScreen route={props.route} title="Blog" apiPrefix="/public/blog" />;
}
function FaqViewScreen(props: { route: { params: { slug: string } } }) {
  return <ContentViewScreen route={props.route} title="FAQ" apiPrefix="/public/faq" />;
}

export function GuestStack() {
  return (
    <Stack.Navigator screenOptions={{ headerShown: false }}>
      <Stack.Screen name="Home" component={HomeScreen} />
      <Stack.Screen name="Login" component={LoginScreen} />
      <Stack.Screen name="Register" component={RegisterScreen} />
      <Stack.Screen name="ForgotPassword" component={ForgotPasswordScreen} />
      <Stack.Screen name="ResetPassword" component={ResetPasswordScreen} />
      <Stack.Screen name="Verify" component={VerifyScreen} />
      <Stack.Screen name="CustomerOnboard" component={CustomerOnboardScreen} />
      <Stack.Screen name="Contact" component={ContactScreen} />
      <Stack.Screen name="Legal" component={LegalScreen} />
      <Stack.Screen name="Partners" component={PartnersScreen} />
      <Stack.Screen name="GuidePublic" component={GuidePublicScreen} />
      <Stack.Screen name="GuideView" component={GuideViewScreen} />
      <Stack.Screen name="BlogPublic" component={BlogPublicScreen} />
      <Stack.Screen name="BlogView" component={BlogViewScreen} />
      <Stack.Screen name="FaqPublic" component={FaqPublicScreen} />
      <Stack.Screen name="FaqView" component={FaqViewScreen} />
    </Stack.Navigator>
  );
}
