ui: замена «Новый клиент» на «Заказы», стили карточек клиентов, Свободный день, splash −30%

- quickActions: «Новый клиент» → «Заказы» (clipboard → #/assembly),
  убрали дублирующую кнопку «Сборки» из быстрых действий
- «Свободный день»: текст теперь использует var(--ink)/var(--muted) вместо
  rgba белых значений, которые были невидимы на светлом фоне --card;
  заголовок — шрифт карточки ×1.3 (17.5px 600), описание — моно uppercase 9.5px
- styles.css: добавлены явные стили .client-card/.client-name/.client-phone/
  .client-avatar и др. — исправлен невидимый текст в карточках клиентов
  во всех темах (Foundry, Boardroom, Atelier)
- splash: minShow 1200 → 840 мс (−30%)
- index.html: версия ресурсов → 20260517c

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wasrusgen 2026-05-17 09:47:06 +03:00
parent 2f50f6e920
commit eae5e61fcf
3 changed files with 133 additions and 17 deletions

View File

@ -199,11 +199,10 @@ async function renderManagerHome(me) {
// Quick actions // Quick actions
const quickActions = [ const quickActions = [
{ icon: "user", title: "Клиенты", subtitle: "История + хронология", href: "#/clients" }, { icon: "user", title: "Клиенты", subtitle: "История + хронология", href: "#/clients" },
{ icon: "plus", title: "Новый клиент", subtitle: "Завести карточку", href: "#/clients/new" }, { icon: "clipboard", title: "Заказы", subtitle: "Сборки + заявки", href: "#/assembly" },
{ icon: "package", title: "Подбор техники", subtitle: "Встройка + AI", href: "#/podbor" }, { icon: "package", title: "Подбор техники", subtitle: "Встройка + AI", href: "#/podbor" },
{ icon: "ruler", title: "Заказать замер", subtitle: "Назначить замерщика", href: "#/request" }, { icon: "ruler", title: "Заказать замер", subtitle: "Назначить замерщика", href: "#/request" },
{ icon: "wrench", title: "Сборки", subtitle: "Заявки на сборку", href: "#/assembly" },
]; ];
app.appendChild(el(`<div class="section-head"><span class="label">Быстрые действия</span></div>`)); app.appendChild(el(`<div class="section-head"><span class="label">Быстрые действия</span></div>`));
const grid = el(`<div class="quick-grid"></div>`); const grid = el(`<div class="quick-grid"></div>`);
@ -445,9 +444,9 @@ function renderManagerToday(container, measurements, firstName, greetingEl) {
if (todayEvents.length === 0 && overdueEvents.length === 0 && noDateEvents.length === 0) { if (todayEvents.length === 0 && overdueEvents.length === 0 && noDateEvents.length === 0) {
container.appendChild(el(` container.appendChild(el(`
<section class="hero" style="background:var(--card,#fff);border:1px dashed rgba(107,74,43,0.25);"> <section class="hero" style="background:var(--card);border:1px dashed var(--line-strong);">
<div class="hero-meta"><span class="left">Свободный день</span></div> <div style="font-family:var(--font-ui);font-size:17.5px;font-weight:600;letter-spacing:-0.01em;color:var(--ink);line-height:1.2;margin-bottom:8px;">Свободный день</div>
<div class="hero-address" style="margin-top:8px;">Замеров на сегодня нет.<br>Можно поработать с клиентами или заказать новые замеры.</div> <div style="font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);line-height:1.5;">Замеров на сегодня нет · можно поработать с клиентами или заказать новые замеры</div>
</section> </section>
`)); `));
} }
@ -1618,7 +1617,7 @@ function hideSplash() {
const splash = document.getElementById("splash"); const splash = document.getElementById("splash");
if (!splash) return; if (!splash) return;
const elapsed = Date.now() - _splashStart; const elapsed = Date.now() - _splashStart;
const minShow = 1200; // минимум показа, мс — 1.2 сек хватает чтобы рассмотреть лого и не блокировать UI const minShow = 840; // минимум показа, мс — было 1200, сокращено на 30%
const wait = Math.max(0, minShow - elapsed); const wait = Math.max(0, minShow - elapsed);
setTimeout(() => { setTimeout(() => {
splash.classList.add("hide"); splash.classList.add("hide");

View File

@ -1361,3 +1361,120 @@ html[data-variant="d"] .section-head .label {
letter-spacing: 0.16em; letter-spacing: 0.16em;
color: var(--ink-2); color: var(--ink-2);
} }
/* ============================================================
Client list cards все темы
Явные стили чтобы текст не сливался с фоном ни в одной теме
============================================================ */
.client-list {
display: flex;
flex-direction: column;
gap: var(--s3);
}
.client-card {
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-card);
padding: var(--s4);
cursor: pointer;
transition: background 0.12s;
}
.client-card:active { background: var(--paper-2); }
.client-card-head {
display: flex;
align-items: center;
gap: var(--s3);
margin-bottom: 6px;
}
.client-avatar {
width: 36px;
height: 36px;
border-radius: var(--r-pill);
background: var(--warm);
display: flex;
align-items: center;
justify-content: center;
font-family: var(--font-ui);
font-size: 14px;
font-weight: 600;
color: var(--accent-1);
flex-shrink: 0;
text-transform: uppercase;
user-select: none;
}
.client-avatar.lg {
width: 48px;
height: 48px;
font-size: 18px;
}
.client-meta {
flex: 1;
min-width: 0;
}
.client-name {
font-family: var(--font-ui);
font-size: 13.5px;
font-weight: 600;
color: var(--ink);
line-height: 1.2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.client-phone {
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 500;
letter-spacing: 0.05em;
color: var(--muted);
margin-top: 2px;
}
.client-arrow {
color: var(--muted);
flex-shrink: 0;
}
.client-footer {
display: flex;
justify-content: space-between;
align-items: center;
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 500;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--muted);
}
.client-detail-head {
display: flex;
align-items: center;
gap: var(--s3);
}
.client-detail-name {
font-family: var(--font-ui);
font-size: 20px;
font-weight: 700;
color: var(--ink);
margin: 0 0 2px;
letter-spacing: -0.01em;
}
.client-detail-meta {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--muted);
}

View File

@ -12,8 +12,8 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Manrope:wght@400;500;600;700&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Manrope:wght@400;500;600;700&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap">
<script src="https://telegram.org/js/telegram-web-app.js"></script> <script src="https://telegram.org/js/telegram-web-app.js"></script>
<link rel="stylesheet" href="assets/styles.css?v=20260517b"> <link rel="stylesheet" href="assets/styles.css?v=20260517c">
<link rel="stylesheet" href="assets/podbor.css?v=20260517b"> <link rel="stylesheet" href="assets/podbor.css?v=20260517c">
</head> </head>
<body> <body>
<!-- Splash — лого @wasrusgen1 + опилки (16) + вращающийся диск --> <!-- Splash — лого @wasrusgen1 + опилки (16) + вращающийся диск -->
@ -38,13 +38,13 @@
<script src="assets/icons.js?v=20260516h"></script> <script src="assets/icons.js?v=20260516h"></script>
<script src="assets/podbor.config.js?v=20260516h"></script> <script src="assets/podbor.config.js?v=20260516h"></script>
<script src="assets/podbor.picts.js?v=20260516h"></script> <script src="assets/podbor.picts.js?v=20260516h"></script>
<script src="assets/podbor.js?v=20260517b"></script> <script src="assets/podbor.js?v=20260517c"></script>
<script src="assets/clients.js?v=20260517b"></script> <script src="assets/clients.js?v=20260517c"></script>
<script src="assets/zamer-picts.js?v=20260516h"></script> <script src="assets/zamer-picts.js?v=20260516h"></script>
<script src="assets/measurements.js?v=20260517b"></script> <script src="assets/measurements.js?v=20260517c"></script>
<script src="assets/request.js?v=20260517b"></script> <script src="assets/request.js?v=20260517c"></script>
<script src="assets/assembly.js?v=20260517b"></script> <script src="assets/assembly.js?v=20260517c"></script>
<script src="assets/proposals.js?v=20260516h"></script> <script src="assets/proposals.js?v=20260516h"></script>
<script src="assets/app.js?v=20260517b"></script> <script src="assets/app.js?v=20260517c"></script>
</body> </body>
</html> </html>