diff options
| author | soryu <soryu@soryu.co> | 2026-01-18 17:44:50 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-18 17:44:50 +0000 |
| commit | 869f21ee2efaefed6a5aa4fbd417c25df8dec02a (patch) | |
| tree | 2a90820ac817173e5b7154e0ba5e4f5d095f9613 /apps/mobile/app/(tabs)/_layout.tsx | |
| parent | 219bca168508e1ea5e91e8a9ce98338afeddfbd2 (diff) | |
| download | soryu-869f21ee2efaefed6a5aa4fbd417c25df8dec02a.tar.gz soryu-869f21ee2efaefed6a5aa4fbd417c25df8dec02a.zip | |
Add React Native mobile app for Makima (#3)
* [WIP] Heartbeat checkpoint - 2026-01-18 02:58:27 UTC
* feat(mobile): complete mobile app integration and verification
- Add ThemeColors type export to Colors.ts for type safety
- Export SUPABASE_URL from supabase.ts and use environment variables
- Update .env.example with correct default URLs
- Add comprehensive README.md with setup instructions
Verified:
- TypeScript compiles without errors
- App exports successfully for iOS and Android
- All screens accessible (login, dashboard, tasks, settings, task detail)
- Auth flow working with Zustand store and Supabase
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Task completion checkpoint
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'apps/mobile/app/(tabs)/_layout.tsx')
| -rw-r--r-- | apps/mobile/app/(tabs)/_layout.tsx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/mobile/app/(tabs)/_layout.tsx b/apps/mobile/app/(tabs)/_layout.tsx new file mode 100644 index 0000000..96c1a2d --- /dev/null +++ b/apps/mobile/app/(tabs)/_layout.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Tabs } from 'expo-router'; +import { useColorScheme } from 'react-native'; +import { Ionicons } from '@expo/vector-icons'; +import { Colors } from '../../constants/Colors'; + +export default function TabsLayout() { + const colorScheme = useColorScheme() ?? 'light'; + const colors = Colors[colorScheme]; + + return ( + <Tabs + screenOptions={{ + tabBarActiveTintColor: colors.tint, + tabBarInactiveTintColor: colors.tabIconDefault, + tabBarStyle: { + backgroundColor: colors.background, + borderTopColor: colors.border, + }, + headerStyle: { + backgroundColor: colors.background, + }, + headerTintColor: colors.text, + headerTitleStyle: { + fontWeight: '600', + }, + }} + > + <Tabs.Screen + name="index" + options={{ + title: 'Dashboard', + tabBarIcon: ({ color, size }) => ( + <Ionicons name="home" size={size} color={color} /> + ), + }} + /> + <Tabs.Screen + name="tasks" + options={{ + title: 'Tasks', + tabBarIcon: ({ color, size }) => ( + <Ionicons name="list" size={size} color={color} /> + ), + }} + /> + <Tabs.Screen + name="settings" + options={{ + title: 'Settings', + tabBarIcon: ({ color, size }) => ( + <Ionicons name="settings-outline" size={size} color={color} /> + ), + }} + /> + </Tabs> + ); +} |
