refactor: patient frontend UI overhaul

- Reworked design system (variables, global styles, component CSS)
- Updated TabBar with icon-based navigation
- Redesigned HomePage, HealthHub, ServicesHub layouts
- Improved Exercise/Diet, Medication, Profile pages styling
- Simplified constants (removed emoji icons, streamlined data)
- Fixed launch.json cwd paths for frontend projects
This commit is contained in:
MingNian
2026-05-22 17:48:18 +08:00
parent 94da24572e
commit 722ee76d93
44 changed files with 854 additions and 393 deletions

View File

@@ -49,26 +49,57 @@ export function ProfilePage() {
<div className={styles.menuList}>
<button className={styles.menuItem} onClick={() => navigate('/health/medications')}>
<span>💊 </span>
<span>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#D67E0B" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{ verticalAlign: 'middle', marginRight: 10 }}>
<rect x="4" y="5" width="16" height="14" rx="4" />
<path d="M10 9v6M14 9v6M8 12h8" />
</svg>
</span>
<span></span>
</button>
<button className={styles.menuItem} onClick={() => navigate('/notifications')}>
<span>🔔 </span>
<span>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#4F6EF7" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{ verticalAlign: 'middle', marginRight: 10 }}>
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" />
<path d="M13.73 21a2 2 0 0 1-3.46 0" />
</svg>
</span>
<div className={styles.menuRight}>
{unreadCount > 0 && <Badge count={unreadCount} />}
<span></span>
</div>
</button>
<button className={styles.menuItem} onClick={() => navigate('/home/device-binding')}>
<span>📡 </span>
<span>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#6366F1" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{ verticalAlign: 'middle', marginRight: 10 }}>
<rect x="5" y="2" width="14" height="20" rx="2" ry="2" />
<line x1="12" y1="18" x2="12.01" y2="18" />
</svg>
</span>
<span></span>
</button>
<button className={styles.menuItem} onClick={() => navigate('/profile/settings')}>
<span> </span>
<span>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#845EF7" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{ verticalAlign: 'middle', marginRight: 10 }}>
<circle cx="12" cy="12" r="3" />
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" />
</svg>
</span>
<span></span>
</button>
<button className={styles.menuItem} onClick={() => navigate('/profile/settings/about')}>
<span> </span>
<span>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#20C997" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{ verticalAlign: 'middle', marginRight: 10 }}>
<circle cx="12" cy="12" r="10" />
<line x1="12" y1="16" x2="12" y2="12" />
<line x1="12" y1="8" x2="12.01" y2="8" />
</svg>
</span>
<span></span>
</button>
</div>