mojmajstor/app/(tabs)/_layout.tsx
echo 3e5b85a08e feat: Phase 7 - polish, error handling, pagination, accessibility
- Error boundary with Macedonian fallback screen and retry button
  wrapping all navigation
- Pull-to-refresh on all list/detail screens (home, explore, posts,
  chat, profile, ad detail, post detail)
- Accessibility: labels on all interactive elements, roles on
  Pressable/Button, selectable text for user data
- Deep linking: mojmajstor:// scheme configured in app.json,
  ad/[id] and chat/[id] routes work via Expo Router auto-routing
- Pagination: cursor-based paginated queries for ads, posts,
  messages, chats, reviews with Load More buttons on frontend
- Profile: shows customer posts with PostCard, loading/error states,
  create-post navigation
- Auth error messages in Macedonian (Невалидни акредитиви, итн.)

All UI text in Macedonian. TypeScript clean, Convex functions deployed.
2026-05-29 18:53:26 +02:00

57 lines
1.4 KiB
TypeScript

import { Tabs } from "expo-router";
import { useTheme } from "../../components/theme";
export default function TabLayout() {
const theme = useTheme();
return (
<Tabs
screenOptions={{
headerShown: false,
tabBarActiveTintColor: theme.colors.primary,
tabBarInactiveTintColor: theme.colors.textTertiary,
tabBarStyle: {
backgroundColor: theme.colors.card,
borderTopColor: theme.colors.border,
},
tabBarLabelStyle: { fontSize: 11 },
}}
>
<Tabs.Screen
name="(home)"
options={{
title: "Почетна",
tabBarAccessibilityLabel: "Почетна",
}}
/>
<Tabs.Screen
name="(explore)"
options={{
title: "Пребарување",
tabBarAccessibilityLabel: "Пребарување",
}}
/>
<Tabs.Screen
name="(posts)"
options={{
title: "Побарувања",
tabBarAccessibilityLabel: "Побарувања",
}}
/>
<Tabs.Screen
name="(chat)"
options={{
title: "Чат",
tabBarAccessibilityLabel: "Чат",
}}
/>
<Tabs.Screen
name="(profile)"
options={{
title: "Профил",
tabBarAccessibilityLabel: "Профил",
}}
/>
</Tabs>
);
}