From 202a5b81dd21db9db5eee72116e8e80beba92569 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 07:37:08 +0000
Subject: [PATCH 1/6] Initial plan
From 7fd800ddb3574c0cd56ffecac82d7f8b302f6085 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 07:43:37 +0000
Subject: [PATCH 2/6] Replace custom SVG icons and Ionicons with Material
Design Icons
Co-authored-by: xDazld <32212089+xDazld@users.noreply.github.com>
---
Thunderdomes/app/(tabs)/scavenger-hunt.tsx | 6 +++---
.../components/icons/BotanicalTalesIcon.tsx | 6 ++----
Thunderdomes/components/icons/DomeDetectiveIcon.tsx | 6 ++----
Thunderdomes/components/icons/SipAndSeekIcon.tsx | 6 ++----
Thunderdomes/components/icons/VoiceChatIcon.tsx | 13 ++-----------
5 files changed, 11 insertions(+), 26 deletions(-)
diff --git a/Thunderdomes/app/(tabs)/scavenger-hunt.tsx b/Thunderdomes/app/(tabs)/scavenger-hunt.tsx
index 1a8771d..58ae8f3 100644
--- a/Thunderdomes/app/(tabs)/scavenger-hunt.tsx
+++ b/Thunderdomes/app/(tabs)/scavenger-hunt.tsx
@@ -9,7 +9,7 @@ import {
Modal,
View,
} from 'react-native';
-import { Ionicons } from '@expo/vector-icons';
+import { MaterialIcons } from '@expo/vector-icons';
import { router } from 'expo-router';
import { ThemedView } from '@/components/themed-view';
import { ThemedText } from '@/components/themed-text';
@@ -369,8 +369,8 @@ export default function ScavengerHuntScreen() {
{isStoryExpanded ? t('domeDetective.hideStory') : t('domeDetective.learnMore')}
-
diff --git a/Thunderdomes/components/icons/BotanicalTalesIcon.tsx b/Thunderdomes/components/icons/BotanicalTalesIcon.tsx
index ca7eddc..86a91ef 100644
--- a/Thunderdomes/components/icons/BotanicalTalesIcon.tsx
+++ b/Thunderdomes/components/icons/BotanicalTalesIcon.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import Svg, { Path, G, Mask, Rect } from 'react-native-svg';
+import { MaterialCommunityIcons } from '@expo/vector-icons';
interface BotanicalTalesIconProps {
color?: string;
@@ -8,9 +8,7 @@ interface BotanicalTalesIconProps {
export function BotanicalTalesIcon({ color = '#FFFFFF', size = 60 }: BotanicalTalesIconProps) {
return (
-
+
);
}
diff --git a/Thunderdomes/components/icons/DomeDetectiveIcon.tsx b/Thunderdomes/components/icons/DomeDetectiveIcon.tsx
index 9cf5c0a..d99819f 100644
--- a/Thunderdomes/components/icons/DomeDetectiveIcon.tsx
+++ b/Thunderdomes/components/icons/DomeDetectiveIcon.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import Svg, { Path, G, Mask, Rect } from 'react-native-svg';
+import { MaterialCommunityIcons } from '@expo/vector-icons';
interface DomeDetectiveIconProps {
color?: string;
@@ -8,9 +8,7 @@ interface DomeDetectiveIconProps {
export function DomeDetectiveIcon({ color = '#FFFFFF', size = 60 }: DomeDetectiveIconProps) {
return (
-
+
);
}
diff --git a/Thunderdomes/components/icons/SipAndSeekIcon.tsx b/Thunderdomes/components/icons/SipAndSeekIcon.tsx
index 9d43293..180690e 100644
--- a/Thunderdomes/components/icons/SipAndSeekIcon.tsx
+++ b/Thunderdomes/components/icons/SipAndSeekIcon.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import Svg, { Path, G, Mask, Rect } from 'react-native-svg';
+import { MaterialCommunityIcons } from '@expo/vector-icons';
interface SipAndSeekIconProps {
color?: string;
@@ -8,9 +8,7 @@ interface SipAndSeekIconProps {
export function SipAndSeekIcon({ color = '#FFFFFF', size = 60 }: SipAndSeekIconProps) {
return (
-
+
);
}
diff --git a/Thunderdomes/components/icons/VoiceChatIcon.tsx b/Thunderdomes/components/icons/VoiceChatIcon.tsx
index 17105fa..30ff2de 100644
--- a/Thunderdomes/components/icons/VoiceChatIcon.tsx
+++ b/Thunderdomes/components/icons/VoiceChatIcon.tsx
@@ -1,5 +1,5 @@
import * as React from 'react';
-import Svg, { Path } from 'react-native-svg';
+import { MaterialCommunityIcons } from '@expo/vector-icons';
interface IconProps {
size?: number;
@@ -8,15 +8,6 @@ interface IconProps {
export function VoiceChatIcon({ size = 40, color = '#FFFFFF' }: IconProps) {
return (
-
+
);
}
From a9674488e56d4a152f3242eb8b09d50e88b63076 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 07:45:05 +0000
Subject: [PATCH 3/6] Fix React import style consistency in VoiceChatIcon
Co-authored-by: xDazld <32212089+xDazld@users.noreply.github.com>
---
Thunderdomes/components/icons/VoiceChatIcon.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Thunderdomes/components/icons/VoiceChatIcon.tsx b/Thunderdomes/components/icons/VoiceChatIcon.tsx
index 30ff2de..c8aaed8 100644
--- a/Thunderdomes/components/icons/VoiceChatIcon.tsx
+++ b/Thunderdomes/components/icons/VoiceChatIcon.tsx
@@ -1,4 +1,4 @@
-import * as React from 'react';
+import React from 'react';
import { MaterialCommunityIcons } from '@expo/vector-icons';
interface IconProps {
From feb8e4b05fd92a4e7286a15051c0777a0185a611 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 07:55:53 +0000
Subject: [PATCH 4/6] Replace emoji icons in HamburgerMenu with Material Design
Icons
Co-authored-by: xDazld <32212089+xDazld@users.noreply.github.com>
---
Thunderdomes/components/HamburgerMenu.tsx | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/Thunderdomes/components/HamburgerMenu.tsx b/Thunderdomes/components/HamburgerMenu.tsx
index 9499528..5348077 100644
--- a/Thunderdomes/components/HamburgerMenu.tsx
+++ b/Thunderdomes/components/HamburgerMenu.tsx
@@ -1,5 +1,6 @@
import React, { useState, useEffect, useRef } from 'react';
import { View, StyleSheet, TouchableOpacity, Text, ScrollView, Linking, Animated, Dimensions, Platform } from 'react-native';
+import { MaterialIcons, MaterialCommunityIcons } from '@expo/vector-icons';
import { router } from 'expo-router';
import { useLocalization } from '@/contexts/LocalizationContext';
@@ -120,7 +121,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => handleMenuItemPress('accessibility')}
>
{t('menu.accessibility')}
- ⓘ
+
{/* Language */}
@@ -129,7 +130,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => setLanguageExpanded(!languageExpanded)}
>
{t('menu.language')}
- 🌐
+
{/* Language Submenu */}
@@ -153,7 +154,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => handleMenuItemPress('member')}
>
{t('menu.becomeMember')}
- 📋
+
{/* Make a Donation */}
@@ -162,7 +163,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => handleMenuItemPress('donate')}
>
{t('menu.makeDonation')}
- 💝
+
{/* View Our Calendar */}
@@ -171,7 +172,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => handleMenuItemPress('calendar')}
>
{t('menu.viewCalendar')}
- 📅
+
{/* Visit Our Website */}
@@ -180,7 +181,7 @@ export function HamburgerMenu({ visible, onClose }: HamburgerMenuProps) {
onPress={() => handleMenuItemPress('website')}
>
{t('menu.visitWebsite')}
- 🏛️
+
@@ -237,10 +238,6 @@ const styles = StyleSheet.create({
fontWeight: '600',
flex: 1,
},
- menuIcon: {
- fontSize: 24,
- marginLeft: 10,
- },
submenu: {
backgroundColor: 'rgba(0, 0, 0, 0.3)',
borderRadius: 8,
From f66b027acc26be26cfe663e4f2ea60afe323c083 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 08:02:40 +0000
Subject: [PATCH 5/6] Replace all remaining emoji icons with Material Design
Icons in screens and modals
Co-authored-by: xDazld <32212089+xDazld@users.noreply.github.com>
---
Thunderdomes/app/(tabs)/sip-and-seek.tsx | 23 +++++++------------
Thunderdomes/app/botanical-tales/arid.tsx | 17 ++++++--------
.../arid/madagascar-collection.tsx | 17 ++++++--------
Thunderdomes/components/PlantCameraModal.tsx | 15 +++++++++---
4 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/Thunderdomes/app/(tabs)/sip-and-seek.tsx b/Thunderdomes/app/(tabs)/sip-and-seek.tsx
index d0fd2ab..2ebf1c9 100644
--- a/Thunderdomes/app/(tabs)/sip-and-seek.tsx
+++ b/Thunderdomes/app/(tabs)/sip-and-seek.tsx
@@ -12,6 +12,7 @@ import {
Text,
Linking,
} from 'react-native';
+import { MaterialIcons, MaterialCommunityIcons } from '@expo/vector-icons';
import { CameraView, useCameraPermissions } from 'expo-camera';
import { router } from 'expo-router';
import { ThemedView } from '@/components/themed-view';
@@ -230,7 +231,7 @@ export default function SipAndSeekScreen() {
activeOpacity={0.8}
>
{t('sipAndSeek.scanButton')}
- 📷
+
@@ -260,7 +261,7 @@ export default function SipAndSeekScreen() {
onPress={() => handleMenuItemPress('accessibility')}
>
{t('menu.accessibility')}
- ⓘ
+
setLanguageExpanded(!languageExpanded)}
>
{t('menu.language')}
- 🌐
+
{languageExpanded && (
@@ -290,7 +291,7 @@ export default function SipAndSeekScreen() {
onPress={() => handleMenuItemPress('member')}
>
{t('menu.becomeMember')}
- 📋
+
handleMenuItemPress('donate')}
>
{t('menu.makeDonation')}
- 💝
+
handleMenuItemPress('calendar')}
>
{t('menu.viewCalendar')}
- 📅
+
handleMenuItemPress('website')}
>
{t('menu.visitWebsite')}
- 🏛️
+
@@ -434,10 +435,6 @@ const styles = StyleSheet.create({
marginRight: 8,
lineHeight: 24,
},
- cameraIcon: {
- fontSize: 24,
- lineHeight: 24,
- },
cameraHeaderSafeArea: {
backgroundColor: '#68A4D2',
paddingTop: Platform.OS === 'android' ? 35 : 0,
@@ -524,10 +521,6 @@ const styles = StyleSheet.create({
fontWeight: '600',
flex: 1,
},
- menuIcon: {
- fontSize: 24,
- marginLeft: 10,
- },
submenu: {
backgroundColor: 'rgba(0, 0, 0, 0.3)',
borderRadius: 8,
diff --git a/Thunderdomes/app/botanical-tales/arid.tsx b/Thunderdomes/app/botanical-tales/arid.tsx
index 41b73fb..699cb39 100644
--- a/Thunderdomes/app/botanical-tales/arid.tsx
+++ b/Thunderdomes/app/botanical-tales/arid.tsx
@@ -12,6 +12,7 @@ import {
Text,
Linking,
} from 'react-native';
+import { MaterialIcons, MaterialCommunityIcons } from '@expo/vector-icons';
import { router } from 'expo-router';
import { ThemedView } from '@/components/themed-view';
import { ThemedText } from '@/components/themed-text';
@@ -176,7 +177,7 @@ export default function AridDomeScreen() {
onPress={() => handleMenuItemPress('accessibility')}
>
{t('menu.accessibility')}
- ⓘ
+
setLanguageExpanded(!languageExpanded)}
>
{t('menu.language')}
- 🌐
+
{languageExpanded && (
@@ -206,7 +207,7 @@ export default function AridDomeScreen() {
onPress={() => handleMenuItemPress('member')}
>
{t('menu.becomeMember')}
- 📋
+
handleMenuItemPress('donate')}
>
{t('menu.makeDonation')}
- 💝
+
handleMenuItemPress('calendar')}
>
{t('menu.viewCalendar')}
- 📅
+
handleMenuItemPress('website')}
>
{t('menu.visitWebsite')}
- 🏛️
+
@@ -361,10 +362,6 @@ const styles = StyleSheet.create({
fontWeight: '600',
flex: 1,
},
- menuIcon: {
- fontSize: 24,
- marginLeft: 10,
- },
submenu: {
backgroundColor: 'rgba(0, 0, 0, 0.3)',
borderRadius: 8,
diff --git a/Thunderdomes/app/botanical-tales/arid/madagascar-collection.tsx b/Thunderdomes/app/botanical-tales/arid/madagascar-collection.tsx
index 7e716d3..21c1ee0 100644
--- a/Thunderdomes/app/botanical-tales/arid/madagascar-collection.tsx
+++ b/Thunderdomes/app/botanical-tales/arid/madagascar-collection.tsx
@@ -13,6 +13,7 @@ import {
Text,
Linking,
} from 'react-native';
+import { MaterialIcons, MaterialCommunityIcons } from '@expo/vector-icons';
import { router } from 'expo-router';
import { ThemedView } from '@/components/themed-view';
@@ -259,7 +260,7 @@ export default function MadagascarCollectionScreen() {
onPress={() => handleMenuItemPress('accessibility')}
>
{t('menu.accessibility')}
- ⓘ
+
setLanguageExpanded(!languageExpanded)}
>
{t('menu.language')}
- 🌐
+
{languageExpanded && (
@@ -289,7 +290,7 @@ export default function MadagascarCollectionScreen() {
onPress={() => handleMenuItemPress('member')}
>
{t('menu.becomeMember')}
- 📋
+
handleMenuItemPress('donate')}
>
{t('menu.makeDonation')}
- 💝
+
handleMenuItemPress('calendar')}
>
{t('menu.viewCalendar')}
- 📅
+
handleMenuItemPress('website')}
>
{t('menu.visitWebsite')}
- 🏛️
+
@@ -470,10 +471,6 @@ const styles = StyleSheet.create({
fontWeight: '600',
flex: 1,
},
- menuIcon: {
- fontSize: 24,
- marginLeft: 10,
- },
submenu: {
backgroundColor: 'rgba(0, 0, 0, 0.3)',
borderRadius: 8,
diff --git a/Thunderdomes/components/PlantCameraModal.tsx b/Thunderdomes/components/PlantCameraModal.tsx
index 74595b9..d4310ae 100644
--- a/Thunderdomes/components/PlantCameraModal.tsx
+++ b/Thunderdomes/components/PlantCameraModal.tsx
@@ -1,5 +1,6 @@
import React, { useState, useEffect, useRef } from 'react';
import { StyleSheet, View, TouchableOpacity, Alert } from 'react-native';
+import { MaterialIcons } from '@expo/vector-icons';
import { CameraView, useCameraPermissions, Camera } from 'expo-camera';
import * as ImagePicker from 'expo-image-picker';
import { ThemedView } from './themed-view';
@@ -120,9 +121,12 @@ export function PlantCameraModal({ onPhotoTaken, onClose }: PlantCameraModalProp
onPress={handleTakePicture}
disabled={isCapturing}
>
-
- {isCapturing ? 'Taking Picture...' : 'Scan 📷'}
-
+
+
+ {isCapturing ? 'Taking Picture...' : 'Scan'}
+
+ {!isCapturing && }
+
);
@@ -173,6 +177,11 @@ const styles = StyleSheet.create({
shadowRadius: 3,
elevation: 3,
},
+ scanButtonContent: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
scanButtonText: {
color: '#F5F1E3',
fontSize: 20,
From 98ef81378a65b91af2170c64886180c227a3e709 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 08:04:13 +0000
Subject: [PATCH 6/6] Move inline style to StyleSheet for better performance
Co-authored-by: xDazld <32212089+xDazld@users.noreply.github.com>
---
Thunderdomes/components/PlantCameraModal.tsx | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Thunderdomes/components/PlantCameraModal.tsx b/Thunderdomes/components/PlantCameraModal.tsx
index d4310ae..838fdad 100644
--- a/Thunderdomes/components/PlantCameraModal.tsx
+++ b/Thunderdomes/components/PlantCameraModal.tsx
@@ -125,7 +125,7 @@ export function PlantCameraModal({ onPhotoTaken, onClose }: PlantCameraModalProp
{isCapturing ? 'Taking Picture...' : 'Scan'}
- {!isCapturing && }
+ {!isCapturing && }
@@ -187,5 +187,8 @@ const styles = StyleSheet.create({
fontSize: 20,
fontWeight: 'bold',
},
+ cameraIconStyle: {
+ marginLeft: 8,
+ },
});