import { Box, Typography, Container } from '@mui/material'; import { useRouter } from '@/providers/RouterProvider'; import ToolCard from '@/components/ToolCard'; import AccessTimeIcon from '@mui/icons-material/AccessTime'; import StorageIcon from '@mui/icons-material/Storage'; import LanguageIcon from '@mui/icons-material/Language'; import QrCodeIcon from '@mui/icons-material/QrCode'; import type { PageType } from '@/types/storage'; import { useEffect, useState } from 'react'; import dayjs from '@/utils/dayjs'; import { dashboardPageStyles } from '@/config/pageTheme'; export default function DashboardPage() { const { navigateTo, visiblePages, pageOrder } = useRouter(); const [now, setNow] = useState(dayjs()); useEffect(() => { const timer = setInterval(() => setNow(dayjs()), 1000); return () => clearInterval(timer); }, []); const isVisible = (key: string) => visiblePages.includes(key as PageType); const renderCard = (key: PageType) => { switch (key) { case 'timestamp': return ( } onClick={() => navigateTo('timestamp')} cardBackgroundColor={dashboardPageStyles.cardBackgroundColor} snapshot={ {now.valueOf()} {now.format('HH:mm:ss')} } /> ); case 'storageCleaner': return ( } onClick={() => navigateTo('storageCleaner')} cardBackgroundColor={dashboardPageStyles.cardBackgroundColor} /> ); case 'openUrl': return ( } onClick={() => navigateTo('openUrl')} cardBackgroundColor={dashboardPageStyles.cardBackgroundColor} /> ); case 'qrCode': return ( } onClick={() => navigateTo('qrCode')} cardBackgroundColor={dashboardPageStyles.cardBackgroundColor} /> ); default: return null; } }; return ( {pageOrder.map((key) => (isVisible(key) ? renderCard(key) : null))} ); }