88import { useEffect , useState } from 'react' ;
99import type { UserStatus } from '../types' ;
1010import { fetchUserDashboard } from '../api/mock' ;
11- import { StatusCard } from './StatusCard' ;
12- import { BadgeList } from './BadgeList' ;
13- import { SkillRoadmap } from './SkillRoadmap' ;
11+ import { AcquiredBadges } from './AcquiredBadges' ;
1412
1513interface DashboardContainerProps {
1614 userId ?: string ;
@@ -42,11 +40,11 @@ export function DashboardContainer({ userId = 'default-user' }: DashboardContain
4240
4341 if ( loading ) {
4442 return (
45- < div className = "flex min-h-screen items-center justify-center bg-gray-50 dark:bg-gray-900 " >
43+ < div className = "flex min-h-screen items-center justify-center bg-[#FDFEF0] " >
4644 < div className = "text-center" >
47- < div className = "mb-4 inline-flex h-12 w-12 animate-spin rounded-full border-4 border-gray-300 border-t-blue-600 dark:border-gray-700 dark:border-t-blue-400 " />
48- < p className = "text-gray-600 dark:text-gray-400 " >
49- ダッシュボードを読み込み中 ...
45+ < div className = "mb-4 inline-flex h-12 w-12 animate-spin rounded-full border-4 border-gray-300 border-t-[#559C71] " />
46+ < p className = "text-[#559C71] " >
47+ Loading ...
5048 </ p >
5149 </ div >
5250 </ div >
@@ -55,27 +53,46 @@ export function DashboardContainer({ userId = 'default-user' }: DashboardContain
5553
5654 if ( error || ! userStatus ) {
5755 return (
58- < div className = "flex min-h-screen items-center justify-center bg-gray-50 dark:bg-gray-900 " >
59- < div className = "rounded-lg bg-white p-8 text-center shadow-lg dark:bg-gray-800 " >
60- < p className = "text-red-600 dark:text-red-400 " >
61- { error || 'ダッシュボードの読み込みに失敗しました ' }
56+ < div className = "flex min-h-screen items-center justify-center bg-[#FDFEF0] " >
57+ < div className = "rounded-lg bg-white p-8 text-center shadow-lg" >
58+ < p className = "text-red-600" >
59+ { error || 'Error loading dashboard ' }
6260 </ p >
6361 </ div >
6462 </ div >
6563 ) ;
6664 }
6765
6866 return (
69- < main className = "min-h-screen bg-gray-50 px-4 py-8 dark:bg-gray-900" >
70- < div className = "mx-auto max-w-6xl space-y-8" >
71- { /* ステータスカード */ }
72- < StatusCard userStatus = { userStatus } />
67+ < main className = "min-h-screen bg-[#FDFEF0] px-4 py-8" >
68+ < div className = "mx-auto max-w-5xl space-y-12" >
69+ { /* Header Section */ }
70+ < div className = "flex flex-col gap-4" >
71+ < h1 className = "text-4xl font-bold tracking-tight text-[#2C5F2D]" > こんにちは</ h1 >
72+
73+ { /* Continue Button aligned right */ }
74+ < div className = "flex flex-col items-end self-end w-full max-w-xs" >
75+ < span className = "mb-2 text-sm font-bold text-[#2C5F2D]" > 前回の続きから</ span >
76+ < button className = "group flex w-full items-center justify-between rounded-full border-2 border-[#2C5F2D] bg-white px-6 py-3 text-lg font-bold text-[#2C5F2D] shadow-sm transition-colors hover:bg-gray-50" >
77+ < span > 演習タイトル</ span >
78+ < span className = "text-2xl" > →</ span >
79+ </ button >
80+ </ div >
81+ </ div >
7382
74- { /* バッジ一覧 */ }
75- < BadgeList badges = { userStatus . badges } />
83+ { /* Tree Image Section */ }
84+ < div className = "flex justify-center py-8" >
85+ { /* Using a placeholder for the tree image based on the mockup description */ }
86+ < div className = "relative h-64 w-64" >
87+ { /* Fallback to a large tree emoji if no image provided */ }
88+ < div className = "flex h-full w-full items-center justify-center text-[10rem]" >
89+ 🌳
90+ </ div >
91+ </ div >
92+ </ div >
7693
77- { /* スキルロードマップ */ }
78- < SkillRoadmap skills = { userStatus . skillRoadmap } />
94+ { /* Acquired Badges Section */ }
95+ < AcquiredBadges />
7996 </ div >
8097 </ main >
8198 ) ;
0 commit comments