mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 16:39:39 +02:00
Move inactive projects out of active workspace: - bauntown (community website) - maerchenzauber (AI story generation) - memoro (voice memo app) - news (news aggregation) - nutriphi (nutrition tracking) - reader (reading app) - uload (URL shortener) - wisekeep (AI wisdom extraction) Update CLAUDE.md documentation: - Add presi to active projects - Document archived projects section - Update workspace configuration Archived apps can be re-activated by moving back to apps/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { useColorScheme } from 'nativewind';
|
|
import { useAppStore } from '../store/AppStore';
|
|
import { useEffect } from 'react';
|
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
|
const THEME_STORAGE_KEY = 'user-theme-preference';
|
|
|
|
export const useTheme = () => {
|
|
const { colorScheme, setColorScheme } = useColorScheme();
|
|
const { theme, setTheme } = useAppStore();
|
|
|
|
// Initialize theme from storage on app start
|
|
useEffect(() => {
|
|
const initializeTheme = async () => {
|
|
try {
|
|
const storedTheme = await AsyncStorage.getItem(THEME_STORAGE_KEY);
|
|
if (storedTheme && ['light', 'dark', 'system'].includes(storedTheme)) {
|
|
const parsedTheme = storedTheme as 'light' | 'dark' | 'system';
|
|
setTheme(parsedTheme);
|
|
|
|
// Apply the theme to NativeWind
|
|
if (parsedTheme === 'system') {
|
|
setColorScheme('system');
|
|
} else {
|
|
setColorScheme(parsedTheme);
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('Error loading theme from storage:', error);
|
|
}
|
|
};
|
|
|
|
initializeTheme();
|
|
}, [setTheme, setColorScheme]);
|
|
|
|
const updateTheme = async (newTheme: 'light' | 'dark' | 'system') => {
|
|
try {
|
|
// Update AppStore
|
|
setTheme(newTheme);
|
|
|
|
// Update NativeWind
|
|
if (newTheme === 'system') {
|
|
setColorScheme('system');
|
|
} else {
|
|
setColorScheme(newTheme);
|
|
}
|
|
|
|
// Persist to storage
|
|
await AsyncStorage.setItem(THEME_STORAGE_KEY, newTheme);
|
|
} catch (error) {
|
|
console.error('Error saving theme to storage:', error);
|
|
}
|
|
};
|
|
|
|
return {
|
|
theme,
|
|
colorScheme,
|
|
updateTheme,
|
|
isDark: colorScheme === 'dark',
|
|
isLight: colorScheme === 'light',
|
|
};
|
|
};
|