Stage 6 (part 2): rest of the client app in the new style, promo code in the order form

Profile with club card, plum theme for buttons/selections and the sticky total,
move screens with the full-width hero, services/docs headers, empty docs fix.
Promo code field: applies to the quote, shows why a code is rejected,
says when the membership discount is bigger.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zabudko-ruandClaude Opus 5.5 committed 2026-10-21 04:08:47 +04:00
1 parent ff527ad6d2
commit bbb25d3d0d
12 files changed
+371 -85

No files matched your search

+4 -2
View File
@@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query';
import { CATEGORY_ICON, Center, Icon, Spinner, type CategoryCode } from '@barev/ui';
import { useI18n, useLocation, useTRPC } from '@barev/web';
import { useEffect } from 'react';
import { levelDiscount, PageHead, toneClass, type Level } from '../lib.tsx';
import { levelDiscount, toneClass, type Level } from '../lib.tsx';
/** Каталог: направления со скидкой по уровню клиента; услуги без онлайн-записи — заявка «перезвоните» */
export function Services() {
@@ -25,7 +25,9 @@ export function Services() {
const level = catalog.data.level as Level;
return (
<main className="app">
<PageHead title={t('client.services.title')} back={false} />
<header className="screen-head">
<h1 className="screen-head__title">{t('client.services.title')}</h1>
</header>
{catalog.data.categories
.filter((c) => c.code !== 'PERKS')
.map((c) => (