refactor(ui): 12-point UI polish and bugfixes

Bug fixes:
- #1 Remove duplicate month label from calendar-heatmap (shown twice in records)
- #2 Extract shared .modal-overlay to app.wxss (was duplicated in index/records)

UX improvements:
- #3 Add long-press hint to history list in records page
- #4 Add drag handle + catchtouchmove to picker modal
- #5 Extend timer auto-navigate-back from 1.5s to 3s
- #6 Add clear data option in settings with confirmation dialog

Visual/code polish:
- #7 Remove 4 unused @keyframes (shimmer, spin) and 5 unused .icon classes
- #8 Tab bar inactive colors: hardcoded #888/#666 -> var(--text-secondary)
- #10 Split progress-ring observer to avoid redundant setData on size/color changes
- #12 Remove meaningless Math.min(planDay, 99) cap
This commit is contained in:
2026-06-04 16:34:22 +08:00
parent 8c7f633541
commit 89d93c8155
12 changed files with 95 additions and 71 deletions
+30 -22
View File
@@ -110,18 +110,6 @@ page {
70% { transform: translateY(-6rpx); }
}
/* ---- shimmer ---- */
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
/* ---- spin ---- */
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.section-title {
font-size: 32rpx;
font-weight: 600;
@@ -129,18 +117,38 @@ page {
margin-bottom: 20rpx;
}
/* ---- icon sizing ---- */
.icon {
line-height: 1;
flex-shrink: 0;
/* ---- shared modal overlay ---- */
.modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.45);
z-index: 1000;
}
.icon-lg { font-size: 40rpx; }
.icon-md { font-size: 28rpx; }
.icon-sm { font-size: 22rpx; }
.modal-overlay-bottom {
display: flex;
align-items: flex-end;
justify-content: center;
}
.icon-inline {
display: inline-flex;
.modal-overlay-center {
display: flex;
align-items: center;
margin-right: 8rpx;
justify-content: center;
}
/* ---- shared danger button ---- */
.btn-danger {
background: #fff;
color: #E53935;
border: 2rpx solid rgba(229, 57, 53, 0.3);
border-radius: 48rpx;
font-size: 28rpx;
padding: 20rpx 0;
text-align: center;
}
.btn-danger::after { border: none; }