summaryrefslogtreecommitdiff
path: root/apps/mobile/hooks/useThemeColor.ts
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-18 17:44:50 +0000
committerGitHub <noreply@github.com>2026-01-18 17:44:50 +0000
commit869f21ee2efaefed6a5aa4fbd417c25df8dec02a (patch)
tree2a90820ac817173e5b7154e0ba5e4f5d095f9613 /apps/mobile/hooks/useThemeColor.ts
parent219bca168508e1ea5e91e8a9ce98338afeddfbd2 (diff)
downloadsoryu-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/hooks/useThemeColor.ts')
-rw-r--r--apps/mobile/hooks/useThemeColor.ts47
1 files changed, 47 insertions, 0 deletions
diff --git a/apps/mobile/hooks/useThemeColor.ts b/apps/mobile/hooks/useThemeColor.ts
new file mode 100644
index 0000000..170a6d6
--- /dev/null
+++ b/apps/mobile/hooks/useThemeColor.ts
@@ -0,0 +1,47 @@
+import { useColorScheme } from 'react-native';
+import { Colors, type ThemeColors } from '../constants/Colors';
+
+/**
+ * Hook to get the current theme colors
+ * @returns The colors for the current color scheme
+ */
+export function useThemeColors(): ThemeColors {
+ const colorScheme = useColorScheme() ?? 'dark';
+ return Colors[colorScheme];
+}
+
+/**
+ * Hook to get a specific color from the theme
+ * @param colorName - The name of the color to retrieve
+ * @returns The color value for the current theme
+ */
+export function useThemeColor<K extends keyof ThemeColors>(
+ colorName: K
+): ThemeColors[K] {
+ const colors = useThemeColors();
+ return colors[colorName];
+}
+
+/**
+ * Hook to get multiple colors from the theme
+ * @param colorNames - Array of color names to retrieve
+ * @returns Object with requested color values
+ */
+export function useThemeColorSet<K extends keyof ThemeColors>(
+ colorNames: K[]
+): Pick<ThemeColors, K> {
+ const colors = useThemeColors();
+ return colorNames.reduce((acc, name) => {
+ acc[name] = colors[name];
+ return acc;
+ }, {} as Pick<ThemeColors, K>);
+}
+
+/**
+ * Hook to check if the current theme is dark
+ * @returns boolean indicating if dark mode is active
+ */
+export function useIsDarkMode(): boolean {
+ const colorScheme = useColorScheme();
+ return colorScheme === 'dark';
+}