style: features page CSS classes, onclick→data-action, site name hot-reload

This commit is contained in:
2026-07-16 06:03:33 +08:00
parent 4d2dade44e
commit a417a1c376
2 changed files with 25 additions and 8 deletions

View File

@@ -314,6 +314,23 @@ tbody tr:last-child td{border-bottom:none}
/* ===== Install Page ===== */
#install-steps .card{max-width:640px;margin:0 auto 20px}
.feat-item .card-h{font-size:14px;padding:14px 22px}
.feat-item .card-h .status-dot{font-size:18px;margin-right:8px}
.feat-item .card-b{padding:16px 22px}
.feat-bar{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap}
.feat-vote-btn{min-width:56px;justify-content:center;font-weight:600}
.feat-discuss-btn{width:100%;justify-content:center}
.feat-comments{margin-top:12px;border-top:1px solid var(--g2);padding-top:12px}
.feat-comment-input{flex:1;padding:8px 12px;border:1px solid var(--g2);border-radius:var(--r);font-family:inherit;font-size:13px}
.feat-comment-input:focus{outline:none;border-color:var(--p)}
.dash-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.dash-stat{background:white;border-radius:var(--rl);padding:22px;box-shadow:var(--sh);border:1px solid var(--g2);display:flex;align-items:center;gap:16px;transition:.2s}
.dash-stat:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
.dash-stat .ds-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.dash-stat .ds-val{font-size:28px;font-weight:800;line-height:1.1;color:var(--g9)}
.dash-stat .ds-label{font-size:12px;color:var(--g5);margin-top:2px;font-weight:500}
/* ===== Responsive ===== */
@media(max-width:768px){
#sidebar{width:60px;overflow:hidden}

View File

@@ -75,25 +75,25 @@ const FeaturesPage = {
renderItem(i) {
const sc = i.status==='done'?'var(--s)':i.status==='planned'?'var(--p)':'var(--g5)';
const statusLabel = i.status==='done'?'已完成':i.status==='planned'?'计划中':'待定';
return `<div class="card" id="feat-${i.id}">
return `<div class="card feat-item" id="feat-${i.id}">
<div class="card-h">
<span><span style="color:${sc};font-size:18px;margin-right:8px">${i.status==='done'?'\u2713':i.status==='planned'?'\u25C9':'\u25CB'}</span> ${U.esc(i.title)}</span>
<span><span class="status-dot" style="color:${sc}">${i.status==='done'?'\u2713':i.status==='planned'?'\u25C9':'\u25CB'}</span> ${U.esc(i.title)}</span>
<div style="display:flex;gap:8px;align-items:center">
${i.group_name ? `<span class="badge bg-player">${U.esc(i.group_name)}</span>` : ''}
${Auth.isOwner() ? `<button class="btn btn-o btn-sm" onclick="FeaturesPage.showEdit(${i.id},'${U.escJs(i.title)}','${U.escJs(i.description||'')}','${i.status}','${U.escJs(i.group_name||'')}','${U.escJs(i.server_name||'')}')"><i class="fas fa-edit"></i></button>` : ''}
${Auth.isOwner() ? `<button class="btn btn-o btn-sm" data-action="FeaturesPage:showEdit:${i.id}:${U.escJs(i.title)}:${U.escJs(i.description||'')}:${i.status}:${U.escJs(i.group_name||'')}:${U.escJs(i.server_name||'')}"><i class="fas fa-edit"></i></button>` : ''}
</div>
</div>
<div class="card-b">
${i.description ? `<p style="white-space:pre-wrap;margin-bottom:12px">${U.esc(i.description)}</p>` : ''}
<div style="display:flex;align-items:center;gap:16px;margin-bottom:12px">
<button class="btn btn-${i.my_vote?'s':'o'} btn-sm feat-vote" data-id="${i.id}"><i class="fas fa-thumbs-up"></i> ${i.votes_count||0}</button>
<div class="feat-bar">
<button class="btn btn-${i.my_vote?'s':'o'} btn-sm feat-vote-btn" data-id="${i.id}"><i class="fas fa-thumbs-up"></i> ${i.votes_count||0}</button>
<span class="ts tm"><i class="fas fa-comment"></i> ${i.comments_count||0} 讨论</span>
<span class="ts tm">${U.date(i.created_at)}</span>
</div>
<button class="btn btn-o btn-sm w-full" onclick="FeaturesPage.toggleDiscuss(${i.id})"><i class="fas fa-comments"></i> 展开讨论</button>
<div id="discuss-${i.id}" style="display:none;margin-top:12px;border-top:1px solid var(--g200);padding-top:12px">
<button class="btn btn-o btn-sm feat-discuss-btn" data-action="FeaturesPage:toggleDiscuss:${i.id}"><i class="fas fa-comments"></i> 展开讨论</button>
<div id="discuss-${i.id}" class="feat-comments" style="display:none">
<div id="comments-${i.id}" class="mb-4"></div>
<form id="comment-form-${i.id}" class="flex g2"><input id="comment-input-${i.id}" placeholder="添加评论..." style="flex:1;padding:8px 12px;border:1px solid var(--g200);border-radius:var(--r)"><button type="submit" class="btn btn-p btn-sm"><i class="fas fa-reply"></i></button></form>
<form id="comment-form-${i.id}" class="flex g2"><input id="comment-input-${i.id}" class="feat-comment-input" placeholder="添加评论..."><button type="submit" class="btn btn-p btn-sm"><i class="fas fa-reply"></i></button></form>
</div>
</div>
</div>`;