diff --git a/assets/chest.png b/assets/chest.png new file mode 100644 index 0000000..1631dec Binary files /dev/null and b/assets/chest.png differ diff --git a/assets/trofeu-azul.png b/assets/trofeu-azul.png new file mode 100644 index 0000000..20ba3b7 Binary files /dev/null and b/assets/trofeu-azul.png differ diff --git a/assets/trofeu-vermelho.png b/assets/trofeu-vermelho.png new file mode 100644 index 0000000..a6d0843 Binary files /dev/null and b/assets/trofeu-vermelho.png differ diff --git a/src/App.js b/src/App.js index 902a8e7..801bcd3 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ import React from "react"; -import { Text, View, StatusBar } from "react-native"; +import { Text, View } from "react-native"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; @@ -17,6 +17,7 @@ import HelpIcon from "../assets/icons/help.svg"; import WelcomePage from "./pages/WelcomePage"; import HomePage from "./pages/HomePage"; import TrophiesPage from "./pages/TrophiesPage"; +import AllTasksPage from "./pages/AllTasksPage"; import DataPage from "./pages/DataPage"; import ProfilePage from "./pages/ProfilePage"; import HelpPage from "./pages/HelpPage"; @@ -93,7 +94,6 @@ export default function App() { // Stack Navigator (para gerenciar Welcome e HomeTabs) return ( <> - {/* Tela de boas-vindas sem navbar */} @@ -113,6 +113,11 @@ export default function App() { component={HomeTabs} options={{ headerShown: false }} /> + diff --git a/src/components/Achievements.js b/src/components/Achievements.js new file mode 100644 index 0000000..6318f8a --- /dev/null +++ b/src/components/Achievements.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { View, Text, Image } from 'react-native'; +import { MaterialIcons } from '@expo/vector-icons'; // Pacote de ícones do Expo + +const Achievements = ({ text, description, icon }) => { + return ( + + {/* Ícone */} + + + + + {/* Conteúdo de progresso */} + + {/* Texto */} + {text} + {description} + + + + + + + ); +}; + +export default Achievements; diff --git a/src/components/Task.js b/src/components/Task.js index bcdb4d7..76a693f 100644 --- a/src/components/Task.js +++ b/src/components/Task.js @@ -4,7 +4,7 @@ import CheckIcon from "../../assets/icons/check.svg"; const Task = ({ taskText, isCompleted }) => ( - {taskText} + {taskText} ( + + {taskText} + +); + +export default Task; \ No newline at end of file diff --git a/src/components/TrophyProgress.js b/src/components/TrophyProgress.js new file mode 100644 index 0000000..9d9bc19 --- /dev/null +++ b/src/components/TrophyProgress.js @@ -0,0 +1,31 @@ +import React from 'react'; +import { View, Text, Image } from 'react-native'; + +const TrophyProgress = ({ text, progress, total, icon }) => { + const progressWidth = `${(progress / total) * 100}%`; + + return ( + + {/* Ícone */} + + + + + {/* Conteúdo de progresso */} + + {/* Texto */} + {text} + + {/* Barra de progresso */} + + + + + {/* Contador */} + {`${progress}/${total}`} + + + ); +}; + +export default TrophyProgress; diff --git a/src/pages/AllTasksPage.js b/src/pages/AllTasksPage.js new file mode 100644 index 0000000..218f7bf --- /dev/null +++ b/src/pages/AllTasksPage.js @@ -0,0 +1,81 @@ +import React from "react"; +import { View, Text, TouchableOpacity, ScrollView } from "react-native"; +import { LinearGradient } from "expo-linear-gradient"; +import Task from "../components/Task"; +import TaskFinished from "../components/TaskFinished"; +import { Ionicons } from "@expo/vector-icons"; + +export default function AllTasksPage({ navigation }) { + // Lista de tarefas + const tasksdiarias = [ + "Estar apenas 2 horas no Insta hoje", + "Falar com os amigos" + ]; + + const tasksconcluidas = [ + "Ler um livro", + "Fazer exercício físico", + "Aprender algo novo", + "Meditar por 10 minutos", + "Desconectar do celular por 1 hora", + "Passar tempo com a família", + "Planejar a próxima semana", + "Escrever um diário sobre o dia" + ]; + + return ( + + + + + + {/* Botão de voltar */} + + navigation.goBack()} + > + + + + + + {/* Secção de Tarefas Diárias */} + + {/* Cabeçalho */} + + Tarefas Diárias + 7 HORAS + + + {/* Lista de tarefas */} + {tasksdiarias.map((task, index) => ( + + ))} + + + + {/* Secção de Tarefas Concluidas */} + + {/* Cabeçalho */} + + Tarefas Concluidas + + + {/* Lista de tarefas */} + {tasksconcluidas.map((task, index) => ( + + ))} + + + + + + + + + ); +} diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js index b1808d5..4d92d61 100644 --- a/src/pages/HomePage.js +++ b/src/pages/HomePage.js @@ -68,10 +68,10 @@ export default function HomePage() { {/* Literacia */} - Sabias que + Sabias que Ter uma adição pode prejudicar seriamente o nosso trabalho e as nossas relações. - Aprender mais em + Aprender mais em {/* Ver todas */} + navigation.navigate("AllTasks")}> + + VER TODAS + + + + + {/* Secção de Trofeus */} + + {/* Cabeçalho */} - VER TODAS + Icon Exclusivo + + + {/* Icon exclusivo */} + + + + + + + + Outros Prémios + + + + + + + - {/* Literacia */} - - Sabias que - Ter uma adição pode prejudicar seriamente o nosso trabalho e as nossas relações. - - Aprender mais em - + {/* Cabeçalho */} + + As Minhas Conquistas + + + {/* Icon exclusivo */} + + + + + + + + + + - - {/* Informação de contactos */} - - - Existem 96 profissionais de saúde à tua disposição. Não hesites em contacta-los. - + {/* Ver todas */} + console.log("Ver todas as conquistas clicado")}> + + VER TODAS + + + diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js index 725d97e..79499c7 100644 --- a/src/pages/WelcomePage.js +++ b/src/pages/WelcomePage.js @@ -1,96 +1,93 @@ import React, { useState, useRef } from "react"; import { - View, - Text, - Image, - Animated, - FlatList, - Dimensions, + View, + Text, + Image, + Animated, + FlatList, + Dimensions, } from "react-native"; const { width: SCREEN_WIDTH } = Dimensions.get("window"); export default function WelcomePage({ navigation }) { - const [currentStep, setCurrentStep] = useState(0); + const [currentStep, setCurrentStep] = useState(0); - const steps = [ - { id: 0, text: "Olá! Bem-vindo ao LUMICHECK!" }, - { id: 1, text: "Eu sou a Lumi. É um prazer poder conhecer-te!" }, - { id: 2, text: "Vamos começar?" }, - { id: 3, text: " " }, - ]; + const steps = [ + { id: 0, text: "Olá! Bem-vindo ao LUMICHECK!" }, + { id: 1, text: "Eu sou a Lumi. É um prazer poder conhecer-te!" }, + { id: 2, text: "Vamos começar?" }, + { id: 3, text: " " }, + ]; - const flatListRef = useRef(null); + const flatListRef = useRef(null); - const handleScroll = (event) => { - const offsetX = event.nativeEvent.contentOffset.x; - const currentIndex = Math.round(offsetX / SCREEN_WIDTH); - setCurrentStep(currentIndex); - if (currentStep === steps.length - 1) { - navigation.replace("Login"); - } - }; + const handleScroll = (event) => { + const offsetX = event.nativeEvent.contentOffset.x; + const currentIndex = Math.round(offsetX / SCREEN_WIDTH); + setCurrentStep(currentIndex); + if (currentStep === steps.length - 1) { + navigation.replace("HomeTabs"); + } + }; - return ( - - {/* Texto principal */} - - ( - - - - {item.text} - - - {/* Imagem */} - - - + return ( + + {/* Texto principal */} + + ( + + + + {item.text} + + + {/* Imagem */} + + + + + )} + horizontal + showsHorizontalScrollIndicator={false} + pagingEnabled + onScroll={handleScroll} + keyExtractor={(item) => item.id.toString()} + scrollEventThrottle={16} // Optimize scroll updates + /> - )} - horizontal - showsHorizontalScrollIndicator={false} - pagingEnabled - onScroll={handleScroll} - keyExtractor={(item) => item.id.toString()} - scrollEventThrottle={16} // Optimize scroll updates - /> - - {/* Barra de progresso */} - - - {steps.map((_, index) => ( - - ))} - + {/* Barra de progresso */} + + + {steps.map((_, index) => ( + + ))} + - {/* Texto fixo indicando para deslizar */} - - - Desliza - - - - ); + {/* Texto fixo indicando para deslizar */} + + + Desliza + + + + ); } diff --git a/tailwind.config.js b/tailwind.config.js index 0c2203c..71ba61d 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -14,7 +14,7 @@ module.exports = { "light-gray": "#d0d0d0", }, fontFamily: { - sans: ["Quicksand_Regular"], + regular: ["Quicksand_Regular"], bold: ["Quicksand_Bold"], }, },