feat: add theme system with light/dark mode support

- Add ThemeStore (Zustand) for reactive theme switching
- Add Themes.tsx with THEMES object (defaultLight, defaultDark)
- Add Settings screen with theme switcher and logout button
- Add BaseButton component for reusable themed buttons
- Migrate all components from static currentTheme to useThemeStore()
- Add shadowColor to theme (iOS only, Android uses elevation)
- All text elements now use theme colors (textPrimary, textSecondary, etc.)
- Update tab navigation to include Settings tab
- Move logout from Header to Settings screen
This commit is contained in:
2026-01-24 16:57:33 +01:00
parent 1dbca79edd
commit 43d40b46d7
23 changed files with 450 additions and 236 deletions

View File

@@ -1,5 +1,6 @@
import { View, Text, Modal, Pressable } from "react-native";
import { CreateEventDTO } from "@calchat/shared";
import { useThemeStore } from "../stores/ThemeStore";
type EventConfirmDialogProps = {
visible: boolean;
@@ -16,6 +17,8 @@ const EventConfirmDialog = ({
onReject: _onReject,
onClose: _onClose,
}: EventConfirmDialogProps) => {
const { theme } = useThemeStore();
// TODO: Display proposed event details (title, time, description)
// TODO: Confirm button calls onConfirm and closes dialog
// TODO: Reject button calls onReject and closes dialog
@@ -26,7 +29,7 @@ const EventConfirmDialog = ({
<Modal visible={false} transparent animationType="fade">
<View>
<Pressable>
<Text>EventConfirmDialog - Not Implemented</Text>
<Text style={{ color: theme.textPrimary }}>EventConfirmDialog - Not Implemented</Text>
</Pressable>
</View>
</Modal>