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, + }, });