mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 23:39:40 +02:00
- Restructure chat as apps/mobile, apps/web, apps/landing, backend - Add NestJS backend for secure Azure OpenAI API calls - Remove exposed API key from mobile app (security fix) - Add shared chat-types package - Create SvelteKit web app scaffold - Create Astro landing page scaffold - Update pnpm workspace configuration - Add project-level CLAUDE.md documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import React, { createContext, useContext, useState, useEffect } from 'react';
|
|
import { useColorScheme } from 'react-native';
|
|
import { lightTheme, darkTheme } from './index';
|
|
import { Theme } from '@react-navigation/native';
|
|
|
|
type ThemeContextType = {
|
|
isDarkMode: boolean;
|
|
toggleTheme: () => void;
|
|
theme: Theme;
|
|
};
|
|
|
|
const ThemeContext = createContext<ThemeContextType>({
|
|
isDarkMode: false,
|
|
toggleTheme: () => {},
|
|
theme: lightTheme,
|
|
});
|
|
|
|
export const useAppTheme = () => useContext(ThemeContext);
|
|
|
|
export function ThemeProvider({ children }: { children: React.ReactNode }) {
|
|
const colorScheme = useColorScheme();
|
|
const [isDarkMode, setIsDarkMode] = useState(colorScheme === 'dark');
|
|
|
|
// Aktualisiere den Theme-Modus, wenn sich das System-Theme ändert
|
|
useEffect(() => {
|
|
setIsDarkMode(colorScheme === 'dark');
|
|
}, [colorScheme]);
|
|
|
|
const toggleTheme = () => {
|
|
setIsDarkMode((prev) => !prev);
|
|
};
|
|
|
|
const theme = isDarkMode ? darkTheme : lightTheme;
|
|
|
|
return (
|
|
<ThemeContext.Provider value={{ isDarkMode, toggleTheme, theme }}>
|
|
{/* Wir verwenden die NativeWind-Klassen direkt in den Komponenten */}
|
|
{children}
|
|
</ThemeContext.Provider>
|
|
);
|
|
}
|