diff --git a/pages/dashboard.jsx b/pages/dashboard.jsx index f3c50ef..469a23b 100644 --- a/pages/dashboard.jsx +++ b/pages/dashboard.jsx @@ -1,74 +1,81 @@ -import { useSession, signOut } from "next-auth/react" +import { useState } from "react" import { useRouter } from "next/router" -import { useState, useEffect } from "react" +import { useSession, signOut } from "next-auth/react" import AvatarSelector from "../components/AvatarSelector" import CategoryMenu from "../components/CategoryMenu" -// Apps organizados por categoria -const ALL_APPS = [ - // Produtividade - { id: 1, name: "Tendências Semanais", desc: "Notícias em alta • Top 100", path: "/apps/trendsnews", icon: "📈", category: "produtividade", favorite: false }, - { id: 2, name: "Conversor", desc: "Conversão de unidades", path: "/apps/converter", icon: "🔄", category: "produtividade", favorite: false }, - { id: 3, name: "Calculadora", desc: "Calculos rápidos", path: "/apps/calculator", icon: "🧮", category: "produtividade", favorite: false }, - - // Utilidades - { id: 4, name: "Relógio", desc: "Relógio mundial", path: "/apps/clock", icon: "⏰", category: "utilidades", favorite: false }, - { id: 5, name: "Gerador Senhas", desc: "Senhas seguras", path: "/apps/password-generator", icon: "🔐", category: "utilidades", favorite: false }, - { id: 6, name: "QR Code", desc: "Gerador QR", path: "/apps/qrcode", icon: "📱", category: "utilidades", favorite: false }, - { id: 7, name: "Cronômetro", desc: "Tempo e alarmes", path: "/apps/timer", icon: "⏱️", category: "utilidades", favorite: false }, - - // Games - { id: 8, name: "Jogo da Velha", desc: "Jogo da velha clássico 2 jogadores", path: "/apps/tictactoe", icon: "⭕", category: "games", favorite: false }, - { id: 14, name: "Expedição Gold", path: "/apps/expedicao", icon: "🗺️", category: "games", desc: "Expedições para conquistar ouro" }, - { id: 15, name: "Human City", path: "/apps/humancity", icon: "🏙️", category: "games", desc: "Simulação de cidade estilo Sims" }, - { id: 16, name: "Aurea", path: "/apps/aurea", icon: "👑", category: "games", desc: "Simulador de vida e riqueza" }, - { id: 17, name: "TerraVerse", path: "/apps/terraverse", icon: "🌍", category: "games", desc: "Game de realidade aumentada" }, - - // Ferramentas - { id: 9, name: "Editor Texto", desc: "Texto simples", path: "/apps/text-editor", icon: "📝", category: "ferramentas", favorite: false }, - { id: 10, name: "Conversor Moedas", desc: "Câmbio em tempo real", path: "/apps/currency", icon: "💱", category: "ferramentas", favorite: false }, - - // Educação - { id: 11, name: "Dicionário", desc: "Significados", path: "/apps/dictionary", icon: "📖", category: "educacao", favorite: false }, - { id: 12, name: "Tradutor", desc: "Multi-idiomas", path: "/apps/translator", icon: "🌐", category: "educacao", favorite: false }, - - // Esportes - { id: 13, name: "Copa do Mundo 2026", desc: "Tabela, grupos, notícias", path: "/apps/worldcup2026", icon: "⚽", category: "esportes", favorite: false } -] - export default function Dashboard() { const { data: session } = useSession() const router = useRouter() const [selectedAvatar, setSelectedAvatar] = useState("😀") const [selectedCategory, setSelectedCategory] = useState("all") const [favorites, setFavorites] = useState([]) - const [apps, setApps] = useState(ALL_APPS) + const [confirmPassword, setConfirmPassword] = useState("") + const [loading, setLoading] = useState(false) + + // Apps organized by category + const ALL_APPS = [ + // Produtividade + { id: 1, name: "Tendências Semanais", desc: "Notícias em alta • Top 100", path: "/apps/trendsnews", icon: "📈", category: "produtividade", favorite: false }, + { id: 2, name: "Conversor", desc: "Conversão de unidades", path: "/apps/converter", icon: "🔄", category: "produtividade", favorite: false }, + { id: 3, name: "Calculadora", desc: "Cálculos rápidos", path: "/apps/calculator", icon: "🧮", category: "produtividade", favorite: false }, + + // Utilidades + { id: 4, name: "Relógio", desc: "Relógio mundial", path: "/apps/clock", icon: "⏰", category: "utilidades", favorite: false }, + { id: 5, name: "Gerador Senhas", desc: "Senhas seguras", path: "/apps/password-generator", icon: "🔐", category: "utilidades", favorite: false }, + { id: 6, name: "QR Code", desc: "Gerador QR", path: "/apps/qrcode", icon: "📱", category: "utilidades", favorite: false }, + { id: 7, name: "Cronômetro", desc: "Tempo e alarmes", path: "/apps/timer", icon: "⏱️", category: "utilidades", favorite: false }, + + // Games + { id: 8, name: "Jogo da Velha", desc: "Jogo da velha clássico 2 jogadores", path: "/apps/tictactoe", icon: "⭕", category: "games", favorite: false }, + { id: 14, name: "Expedição Gold", desc: "Expedições para conquistar ouro", path: "/apps/expedicao", icon: "🗺️", category: "games", favorite: false }, + { id: 15, name: "Human City", desc: "Simulação de cidade estilo Sims", path: "/apps/humancity", icon: "🏙️", category: "games", favorite: false }, + { id: 16, name: "Aurea", desc: "Simulador de vida e riqueza", path: "/apps/aurea", icon: "👑", category: "games", favorite: false }, + { id: 17, name: "TerraVerse", desc: "Game de realidade aumentada", path: "/apps/terraverse", icon: "🌍", category: "games", favorite: false }, + + // Ferramentas + { id: 9, name: "Editor Texto", desc: "Texto simples", path: "/apps/text-editor", icon: "📝", category: "ferramentas", favorite: false }, + { id: 10, name: "Conversor Moedas", desc: "Câmbio em tempo real", path: "/apps/currency", icon: "💱", category: "ferramentas", favorite: false }, + + // Educação + { id: 11, name: "Dicionário", desc: "Significados", path: "/apps/dictionary", icon: "📖", category: "educacao", favorite: false }, + { id: 12, name: "Tradutor", desc: "Multi-idiomas", path: "/apps/translator", icon: "🌐", category: "educacao", favorite: false }, + + // Esportes + { id: 13, name: "Copa do Mundo 2026", desc: "Tabela, grupos, notícias", path: "/apps/worldcup2026", icon: "⚽", category: "esportes", favorite: false } + ] // Carregar favoritos do localStorage - useEffect(() => { - const savedFavorites = localStorage.getItem("favorites") - const savedAvatar = localStorage.getItem("selectedAvatar") - if (savedFavorites) { - setFavorites(JSON.parse(savedFavorites)) - } - if (savedAvatar) { - setSelectedAvatar(savedAvatar) + React.useEffect(() => { + const saved = localStorage.getItem("favorites") + if (saved) { + try { + setFavorites(JSON.parse(saved)) + } catch (e) { + console.warn("Failed to parse favorites from localStorage", e) + } } }, []) // Salvar favoritos no localStorage - useEffect(() => { + React.useEffect(() => { localStorage.setItem("favorites", JSON.stringify(favorites)) }, [favorites]) // Salvar avatar no localStorage - useEffect(() => { + React.useEffect(() => { localStorage.setItem("selectedAvatar", selectedAvatar) }, [selectedAvatar]) + // Carregar avatar do localStorage + React.useEffect(() => { + const saved = localStorage.getItem("selectedAvatar") + if (saved) setSelectedAvatar(saved) + }, []) + const toggleFavorite = (appId) => { - setFavorites(prev => - prev.includes(appId) + setFavorites(prev => + prev.includes(appId) ? prev.filter(id => id !== appId) : [...prev, appId] ) @@ -76,11 +83,11 @@ export default function Dashboard() { // Filtrar apps const filteredApps = selectedCategory === "all" - ? apps - : apps.filter(app => app.category === selectedCategory) + ? ALL_APPS + : ALL_APPS.filter(app => app.category === selectedCategory) // Apps favoritos - const favoriteApps = apps.filter(app => favorites.includes(app.id)) + const favoriteApps = ALL_APPS.filter(app => favorites.includes(app.id)) return (
- {selectedCategory === "all" - ? `${apps.length} apps disponíveis` + {selectedCategory === "all" + ? `${ALL_APPS.length} apps disponíveis` : `${filteredApps.length} apps nesta categoria`}