refresh design (app.js)
This commit is contained in:
parent
e6036236de
commit
2549b24974
21
app.js
21
app.js
@ -175,6 +175,7 @@ function renderLogin() {
|
|||||||
return `
|
return `
|
||||||
<div class="login-shell">
|
<div class="login-shell">
|
||||||
<div class="login-card">
|
<div class="login-card">
|
||||||
|
<div class="login-card-brand">C</div>
|
||||||
<h1>ClientOS</h1>
|
<h1>ClientOS</h1>
|
||||||
<p>Войдите как один из членов команды (демо).</p>
|
<p>Войдите как один из членов команды (демо).</p>
|
||||||
${STATE.users.map((u) => `
|
${STATE.users.map((u) => `
|
||||||
@ -186,7 +187,7 @@ function renderLogin() {
|
|||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
`).join('')}
|
`).join('')}
|
||||||
<p style="margin-top:20px;font-size:11px;">Все данные хранятся локально в браузере (localStorage).</p>
|
<p style="margin-top:24px;font-size:11.5px;">Данные хранятся локально в браузере (localStorage).</p>
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
@ -281,30 +282,34 @@ function renderDashboard() {
|
|||||||
const activeClients = STATE.clients.filter((c) => c.status === 'active');
|
const activeClients = STATE.clients.filter((c) => c.status === 'active');
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<div class="page-header">
|
<div class="hero">
|
||||||
<div>
|
<h1>Привет, ${esc(me().name.split(' ')[0])} 👋</h1>
|
||||||
<h1 class="page-title">Привет, ${esc(me().name.split(' ')[0])}!</h1>
|
<p>Сегодня ${fmtDate(new Date().toISOString())}. Ниже — открытые задачи, ближайшие встречи и активные клиенты вашей команды.</p>
|
||||||
<p class="page-subtitle">Сегодня ${fmtDate(new Date().toISOString())}. У вас ${myTasks.length} открытых задач и ${upcomingMeetings.length} ближайших встреч.</p>
|
<div class="hero-stats">
|
||||||
|
<div class="hero-stat"><div class="num">${myTasks.length}</div><div class="lbl">Открытые задачи</div></div>
|
||||||
|
<div class="hero-stat"><div class="num">${upcomingMeetings.length}</div><div class="lbl">Ближайшие встречи</div></div>
|
||||||
|
<div class="hero-stat"><div class="num">${activeClients.length}</div><div class="lbl">Активные клиенты</div></div>
|
||||||
|
<div class="hero-stat"><div class="num">${unreadNotifications().length}</div><div class="lbl">Непрочитанные</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="stack-md">
|
<div class="stack-md">
|
||||||
<section>
|
<section>
|
||||||
<h2 style="font-size:14px;margin:0 0 8px;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted)">Мои задачи</h2>
|
<h2 class="section-title">Мои задачи</h2>
|
||||||
${myTasks.length === 0
|
${myTasks.length === 0
|
||||||
? '<div class="empty">Все задачи закрыты 🎉</div>'
|
? '<div class="empty">Все задачи закрыты 🎉</div>'
|
||||||
: myTasks.slice(0, 8).map(renderTaskRow).join('')}
|
: myTasks.slice(0, 8).map(renderTaskRow).join('')}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2 style="font-size:14px;margin:0 0 8px;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted)">Ближайшие встречи</h2>
|
<h2 class="section-title">Ближайшие встречи</h2>
|
||||||
${upcomingMeetings.length === 0
|
${upcomingMeetings.length === 0
|
||||||
? '<div class="empty">Встреч нет.</div>'
|
? '<div class="empty">Встреч нет.</div>'
|
||||||
: upcomingMeetings.map(renderMeetingRow).join('')}
|
: upcomingMeetings.map(renderMeetingRow).join('')}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2 style="font-size:14px;margin:0 0 8px;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted)">Активные клиенты</h2>
|
<h2 class="section-title">Активные клиенты</h2>
|
||||||
<div class="grid-cards">
|
<div class="grid-cards">
|
||||||
${activeClients.map((c) => `
|
${activeClients.map((c) => `
|
||||||
<div class="card" style="padding:14px;cursor:pointer" data-nav="#/clients/${c.id}">
|
<div class="card" style="padding:14px;cursor:pointer" data-nav="#/clients/${c.id}">
|
||||||
|
|||||||
Reference in New Issue
Block a user