Matthias Nott
2026-03-07 af1543135d42adc2e97dc5243aeef7418cd3b00d
components/chat/CommandBar.tsx
....@@ -1,14 +1,17 @@
11 import React, { useState } from "react";
2
-import { Pressable, Text, View, useWindowDimensions } from "react-native";
2
+import { Pressable, Text, View } from "react-native";
33 import * as Haptics from "expo-haptics";
4
+import { useTheme } from "../../contexts/ThemeContext";
45
56 interface CommandBarProps {
6
- onSessions: () => void;
77 onScreenshot: () => void;
8
- onHelp: () => void;
8
+ onNavigate: () => void;
9
+ onPhoto: () => void;
10
+ onClear: () => void;
911 }
1012
11
-export function CommandBar({ onSessions, onScreenshot, onHelp }: CommandBarProps) {
13
+export function CommandBar({ onScreenshot, onNavigate, onPhoto, onClear }: CommandBarProps) {
14
+ const { colors } = useTheme();
1215 return (
1316 <View
1417 style={{
....@@ -18,26 +21,30 @@
1821 gap: 8,
1922 }}
2023 >
21
- <CmdBtn icon="📋" label="Sessions" bg="#1A2744" border="#2E4A7A" onPress={onSessions} />
22
- <CmdBtn icon="📸" label="Screen" bg="#1A3A2A" border="#2E6A4A" onPress={onScreenshot} />
23
- <CmdBtn icon="❓" label="Help" bg="#3A1A2A" border="#6A2E4A" onPress={onHelp} />
24
+ <CmdBtn icon="📸" label="Screen" onPress={onScreenshot} colors={colors} />
25
+ <CmdBtn icon="🧭" label="Navigate" onPress={onNavigate} colors={colors} />
26
+ <CmdBtn icon="📎" label="Photo" onPress={onPhoto} colors={colors} />
27
+ <CmdBtn icon="🗑" label="Clear" onPress={onClear} colors={colors} />
2428 </View>
2529 );
2630 }
2731
2832 interface TextModeCommandBarProps {
29
- onSessions: () => void;
3033 onScreenshot: () => void;
3134 onNavigate: () => void;
35
+ onPhoto: () => void;
36
+ onHelp: () => void;
3237 onClear: () => void;
3338 }
3439
3540 export function TextModeCommandBar({
36
- onSessions,
3741 onScreenshot,
3842 onNavigate,
43
+ onPhoto,
44
+ onHelp,
3945 onClear,
4046 }: TextModeCommandBarProps) {
47
+ const { colors } = useTheme();
4148 return (
4249 <View
4350 style={{
....@@ -47,10 +54,11 @@
4754 gap: 8,
4855 }}
4956 >
50
- <CmdBtn icon="📋" label="Sessions" bg="#1A2744" border="#2E4A7A" onPress={onSessions} />
51
- <CmdBtn icon="📸" label="Screen" bg="#1A3A2A" border="#2E6A4A" onPress={onScreenshot} />
52
- <CmdBtn icon="🧭" label="Navigate" bg="#2A2A1A" border="#5A5A2E" onPress={onNavigate} />
53
- <CmdBtn icon="🗑" label="Clear" bg="#3A1A1A" border="#6A2E2E" onPress={onClear} />
57
+ <CmdBtn icon="📸" label="Screen" onPress={onScreenshot} colors={colors} />
58
+ <CmdBtn icon="🧭" label="Navigate" onPress={onNavigate} colors={colors} />
59
+ <CmdBtn icon="📎" label="Photo" onPress={onPhoto} colors={colors} />
60
+ <CmdBtn icon="❓" label="Help" onPress={onHelp} colors={colors} />
61
+ <CmdBtn icon="🗑" label="Clear" onPress={onClear} colors={colors} />
5462 </View>
5563 );
5664 }
....@@ -58,18 +66,15 @@
5866 function CmdBtn({
5967 icon,
6068 label,
61
- bg,
62
- border,
6369 onPress,
70
+ colors,
6471 }: {
6572 icon: string;
6673 label: string;
67
- bg: string;
68
- border: string;
6974 onPress: () => void;
75
+ colors: ReturnType<typeof useTheme>["colors"];
7076 }) {
7177 const [pressed, setPressed] = useState(false);
72
- const { width } = useWindowDimensions();
7378
7479 return (
7580 <View style={{ flex: 1 }}>
....@@ -87,13 +92,13 @@
8792 borderRadius: 16,
8893 alignItems: "center",
8994 justifyContent: "center",
90
- backgroundColor: pressed ? "#4A9EFF" : bg,
95
+ backgroundColor: pressed ? colors.accent : colors.bgTertiary,
9196 borderWidth: 1.5,
92
- borderColor: pressed ? "#4A9EFF" : border,
97
+ borderColor: pressed ? colors.accent : colors.border,
9398 }}
9499 >
95100 <Text style={{ fontSize: 26, marginBottom: 2 }}>{icon}</Text>
96
- <Text style={{ color: "#C8C8E0", fontSize: 13, fontWeight: "700" }}>
101
+ <Text style={{ color: colors.textSecondary, fontSize: 13, fontWeight: "700" }}>
97102 {label}
98103 </Text>
99104 </View>