diff --git a/assets/icons/check.svg b/assets/icons/check.svg new file mode 100644 index 0000000..9fd33d4 --- /dev/null +++ b/assets/icons/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/helpcontacts.svg b/assets/icons/helpcontacts.svg new file mode 100644 index 0000000..acfa9f6 --- /dev/null +++ b/assets/icons/helpcontacts.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/question.svg b/assets/icons/question.svg new file mode 100644 index 0000000..5fb4a5f --- /dev/null +++ b/assets/icons/question.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/icons/trophygold.svg b/assets/icons/trophygold.svg new file mode 100644 index 0000000..67d83ed --- /dev/null +++ b/assets/icons/trophygold.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/sintome.png b/assets/sintome.png new file mode 100644 index 0000000..8cb43d3 Binary files /dev/null and b/assets/sintome.png differ diff --git a/package-lock.json b/package-lock.json index 322183a..065fd07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@react-navigation/native-stack": "^7.2.0", "expo": "~52.0.23", "expo-font": "~13.0.2", + "expo-linear-gradient": "~14.0.1", "expo-splash-screen": "~0.29.18", "expo-status-bar": "~2.0.0", "nativewind": "^4.1.23", @@ -26,7 +27,7 @@ "react-native-reanimated": "^3.16.6", "react-native-safe-area-context": "4.12.0", "react-native-screens": "^4.4.0", - "react-native-svg": "^15.10.1", + "react-native-svg": "15.8.0", "react-native-svg-transformer": "^1.5.0", "react-native-vector-icons": "^10.2.0", "react-native-web": "~0.19.13" @@ -6328,6 +6329,17 @@ "react": "*" } }, + "node_modules/expo-linear-gradient": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-14.0.1.tgz", + "integrity": "sha512-apGtUO9AZ52ZWvX9f6K9TamWw8XcUby7jZ0Pcvd5LxUO7pl7tDPx2VlKqpzbhhS4yfCiUwX58wqocwVnE/0ZVg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-modules-autolinking": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.4.tgz", @@ -10187,9 +10199,9 @@ } }, "node_modules/react-native-svg": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.10.1.tgz", - "integrity": "sha512-Hqz/doQciVFK/Df2v+wsW96oY5jxlta7rZ31KQYo78dlgvAHEaGr6paEOAMvlIruw7EHNQ0Vc1ZmJPJF2kfIPQ==", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.8.0.tgz", + "integrity": "sha512-KHJzKpgOjwj1qeZzsBjxNdoIgv2zNCO9fVcoq2TEhTRsVV5DGTZ9JzUZwybd7q4giT/H3RdtqC3u44dWdO0Ffw==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", diff --git a/package.json b/package.json index 8582bf9..3e91be9 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,11 @@ "react-native-reanimated": "^3.16.6", "react-native-safe-area-context": "4.12.0", "react-native-screens": "^4.4.0", - "react-native-svg": "^15.10.1", + "react-native-svg": "15.8.0", "react-native-svg-transformer": "^1.5.0", "react-native-vector-icons": "^10.2.0", - "react-native-web": "~0.19.13" + "react-native-web": "~0.19.13", + "expo-linear-gradient": "~14.0.1" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/src/App.js b/src/App.js index e303162..902a8e7 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ import React from "react"; -import { Text, View } from "react-native"; +import { Text, View, StatusBar } from "react-native"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; @@ -30,7 +30,7 @@ export default function App() { if (!fontsLoaded) { return ( - + Carregando fontes... ); @@ -46,9 +46,14 @@ export default function App() { screenOptions={({ route }) => ({ headerShown: false, tabBarShowLabel: false, + tabBarStyle: { + paddingTop: 5, // Espaçamento superior dentro da barra + paddingBottom: 5, // Espaçamento inferior dentro da barra + backgroundColor: "#fff", // Cor de fundo da barra + }, tabBarIcon: ({ focused, size }) => { let IconComponent; - let color = focused ? "#fcc766" : "#d0d0d0"; // Define as cores: ativo e inativo + let color = focused ? "#fcc766" : "#d0d0d0"; switch (route.name) { case "Home": @@ -70,7 +75,7 @@ export default function App() { IconComponent = null; } - return ; + return ; }, tabBarActiveTintColor: "#fcc766", tabBarInactiveTintColor: "#d0d0d0", @@ -87,26 +92,29 @@ export default function App() { // Stack Navigator (para gerenciar Welcome e HomeTabs) return ( - - - {/* Tela de boas-vindas sem navbar */} - - - {/* Tela HomeTabs com navbar */} - - - + <> + + + + {/* Tela de boas-vindas sem navbar */} + + + {/* Tela HomeTabs com navbar */} + + + + ); } diff --git a/src/components/Task.js b/src/components/Task.js new file mode 100644 index 0000000..bcdb4d7 --- /dev/null +++ b/src/components/Task.js @@ -0,0 +1,17 @@ +import React from "react"; +import { Text, View } from "react-native"; +import CheckIcon from "../../assets/icons/check.svg"; + +const Task = ({ taskText, isCompleted }) => ( + + {taskText} + + + +); + +export default Task; \ No newline at end of file diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js index c6d649b..b1808d5 100644 --- a/src/pages/HomePage.js +++ b/src/pages/HomePage.js @@ -1,10 +1,96 @@ import React from "react"; -import { Text, View } from "react-native"; +import { Text, View, Image, TouchableOpacity, ScrollView } from "react-native"; +import { LinearGradient } from "expo-linear-gradient"; +import Task from "../components/Task"; + +// Importar os ícones SVG diretamente +import TrophyGoldIcon from "../../assets/icons/trophygold.svg"; +import QuestionIcon from "../../assets/icons/question.svg"; +import HelpContactsIcon from "../../assets/icons/helpcontacts.svg"; export default function HomePage() { return ( - - Home - + + + + + + {/* Secção de Ícones e Pontos */} + + {/* Ícone de "?" */} + + 14 + + + + {/* Ícone de troféu */} + + 2 + + + + + + + {/* Ícone PNG */} + + + {/* Texto de boas-vindas */} + + Olá, Rodrigo! + + + {/* Botão de Monitorização */} + + Começar Monitorização + + + {/* Secção de Tarefas Diárias */} + + {/* Cabeçalho da seção */} + + Tarefas Diárias + 7 HORAS + + + {/* Tarefas */} + + + + + {/* Literacia */} + + Sabias que + Ter uma adição pode prejudicar seriamente o nosso trabalho e as nossas relações. + + Aprender mais em + + + + + {/* Informação de contactos */} + + + Existem 96 profissionais de saúde à tua disposição. Não hesites em contacta-los. + + + + + + + + ); } diff --git a/src/pages/TrophiesPage.js b/src/pages/TrophiesPage.js index fd10d9b..05a558b 100644 --- a/src/pages/TrophiesPage.js +++ b/src/pages/TrophiesPage.js @@ -1,10 +1,66 @@ import React from "react"; -import { Text, View } from "react-native"; +import { Text, View, Image, TouchableOpacity, ScrollView } from "react-native"; +import { LinearGradient } from "expo-linear-gradient"; +import Task from "../components/Task"; +// Importar os ícones SVG diretamente +import TrophyGoldIcon from "../../assets/icons/trophygold.svg"; +import QuestionIcon from "../../assets/icons/question.svg"; +import HelpContactsIcon from "../../assets/icons/helpcontacts.svg"; export default function TrophiesPage() { return ( - - Troféus - + + + + + + + {/* Secção de Tarefas Diárias */} + + {/* Cabeçalho */} + + Tarefas Diárias + + + {/* Tarefas */} + + + + {/* Ver todas */} + + VER TODAS + + + + {/* Literacia */} + + Sabias que + Ter uma adição pode prejudicar seriamente o nosso trabalho e as nossas relações. + + Aprender mais em + + + + + {/* Informação de contactos */} + + + Existem 96 profissionais de saúde à tua disposição. Não hesites em contacta-los. + + + + + + + + ); }