|
|
@@ -3,31 +3,117 @@ import reactLogo from './assets/react.svg'
|
|
|
import viteLogo from '/vite.svg'
|
|
|
import './App.css'
|
|
|
|
|
|
+import { user } from "./data/data.ts";
|
|
|
+
|
|
|
function App() {
|
|
|
const [count, setCount] = useState(0)
|
|
|
|
|
|
return (
|
|
|
<>
|
|
|
- <div>
|
|
|
- <a href="https://vite.dev" target="_blank">
|
|
|
- <img src={viteLogo} className="logo" alt="Vite logo" />
|
|
|
- </a>
|
|
|
- <a href="https://react.dev" target="_blank">
|
|
|
- <img src={reactLogo} className="logo react" alt="React logo" />
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <h1>Vite + React</h1>
|
|
|
- <div className="card">
|
|
|
- <button onClick={() => setCount((count) => count + 1)}>
|
|
|
- count is {count}
|
|
|
- </button>
|
|
|
- <p>
|
|
|
- Edit <code>src/App.tsx</code> and save to test HMR
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <p className="read-the-docs">
|
|
|
- Click on the Vite and React logos to learn more
|
|
|
- </p>
|
|
|
+ {/*
|
|
|
+ ┌─────────────────────────────────┐
|
|
|
+ │ 1. 状态栏 (用户信息 + 点数) │
|
|
|
+ ├─────────────────────────────────┤
|
|
|
+ │ 2. 今日概览卡片 (数据卡片) │
|
|
|
+ ├─────────────────────────────────┤
|
|
|
+ │ 3. 核心打卡区 (大按钮 + 进度) │
|
|
|
+ ├─────────────────────────────────┤
|
|
|
+ │ 4. 快捷打卡面板 (今日习惯列表) │
|
|
|
+ ├─────────────────────────────────┤
|
|
|
+ │ 5. 数据统计区 (图表卡片) │
|
|
|
+ ├─────────────────────────────────┤
|
|
|
+ │ 6. 底部导航栏 (可选的) │
|
|
|
+ └─────────────────────────────────┘
|
|
|
+ */}
|
|
|
+ <div className="header-container">
|
|
|
+
|
|
|
+ {/* 问候语 2月2日星期一*/}
|
|
|
+ <div className="tips">
|
|
|
+ <p className="text-gray-500 text-sm font-medium mb-1">{new Date().toLocaleDateString('zh-CN', {
|
|
|
+ month: 'long',
|
|
|
+ day: 'numeric',
|
|
|
+ weekday: 'long'
|
|
|
+ })}</p>
|
|
|
+ <h1 className="text-3xl font-bold text-gray-900">早安, {user.name}</h1>
|
|
|
+ </div>
|
|
|
+ <div className="user-icon">
|
|
|
+ <div className="img">
|
|
|
+ <img src="https://picsum.photos/200/300" alt="User"/>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="today">
|
|
|
+ <div className="card">
|
|
|
+ <div className="title">今日概览</div>
|
|
|
+ <div className="data">
|
|
|
+ <div className="item">
|
|
|
+ <div className="label">Habits</div>
|
|
|
+ <div className="value">0</div>
|
|
|
+ </div>
|
|
|
+ <div className="item">
|
|
|
+ <div className="label">Points</div>
|
|
|
+ <div className="value">0</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="core">
|
|
|
+ <div className="card">
|
|
|
+ <div className="title">Core</div>
|
|
|
+ <div className="progress">
|
|
|
+ <div className="bar"></div>
|
|
|
+ <div className="text">0%</div>
|
|
|
+ </div>
|
|
|
+ <button className="button">Start</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="quick">
|
|
|
+ <div className="card">
|
|
|
+ <div className="title">Quick</div>
|
|
|
+ <div className="habits">
|
|
|
+ <div className="habit">
|
|
|
+ <div className="icon">
|
|
|
+ <img src="https://picsum.photos/200/300" alt="Habit" />
|
|
|
+ </div>
|
|
|
+ <div className="name">Habit</div>
|
|
|
+ </div>
|
|
|
+ <div className="habit"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="stats">
|
|
|
+ <div className="card">
|
|
|
+ <div className="title">Stats</div>
|
|
|
+ <div className="charts">
|
|
|
+ <div className="chart"></div>
|
|
|
+ <div className="chart"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="div">
|
|
|
+ <div>
|
|
|
+
|
|
|
+ <a href="https://vite.dev" target="_blank">
|
|
|
+ <img src={viteLogo} className="logo" alt="Vite logo"/>
|
|
|
+ </a>
|
|
|
+ <a href="https://react.dev" target="_blank">
|
|
|
+ <img src={reactLogo} className="logo react" alt="React logo"/>
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <h1>Vite + React</h1>
|
|
|
+ <div className="card">
|
|
|
+ <button onClick={() => setCount((count) => count + 1)}>
|
|
|
+ count is {count}
|
|
|
+ </button>
|
|
|
+ <p>
|
|
|
+ Edit <code>src/App.tsx</code> and save to test HMR
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <p className="read-the-docs">
|
|
|
+ Click on the Vite and React logos to learn more
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+
|
|
|
</>
|
|
|
)
|
|
|
}
|