import { Tabs, Redirect } from 'expo-router';
import { useTranslation } from 'react-i18next';
import { NaviBottomTabs } from '../../src/components/layout/NaviBottomTabs';
import { useAuth } from '../../src/state/auth';

/**
 * Tabs accept either a signed-in user or an explicit guest session. Guest
 * mode lets tourists browse public surfaces before they create an account.
 */
export default function TabsLayout() {
  const { t } = useTranslation();
  const isHydrated = useAuth((s) => s.isHydrated);
  const user = useAuth((s) => s.user);
  const isGuest = useAuth((s) => s.isGuest);

  if (!isHydrated) return null;
  if (!user && !isGuest) return <Redirect href="/(auth)/login" />;

  return (
    <Tabs
      screenOptions={{
        headerShown: false,
      }}
      tabBar={(props) => <NaviBottomTabs {...(props as unknown as Parameters<typeof NaviBottomTabs>[0])} />}
    >
      <Tabs.Screen name="home" options={{ title: t('tabs.home') }} />
      <Tabs.Screen name="discover" options={{ title: t('tabs.discover') }} />
      <Tabs.Screen name="bookings" options={{ title: t('tabs.bookings') }} />
      <Tabs.Screen name="saved" options={{ title: t('tabs.saved') }} />
      <Tabs.Screen name="profile" options={{ title: t('tabs.profile') }} />
    </Tabs>
  );
}
