feat: API и веб-интерфейс — поиск, сравнение цен, экран верификации, загрузка архива

This commit is contained in:
2026-06-26 22:40:00 +05:00
parent e03e70535e
commit 969d958ec3
5 changed files with 711 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
# Дизайн-заготовка (фирменная палитра)
Готовые токены для фронта (агент D). Полная дизайн-система: `Base/_Inbox/Хакатон Medtech/Дизайн-система`.
## Применение
1. `tailwind.tokens.ts` → импортировать в `tailwind.config.ts`, разложить в `theme.extend`.
2. `globals.css` → переменные в `:root` (shadcn/ui).
3. Шрифт **Geologica**`next/font` или `<link>` на fonts.bunny.net (веса 300700).
## Шпаргалка
| | |
|---|---|
| Primary (CTA) | `#ff4713`, текст белый, `rounded-lg`, hover `#e63e0f` |
| Вторичный | `#6b788e` (t-gray) |
| Фон страницы / карточек | `#f3f4f6` / белый `rounded-2xl shadow-card` |
| Успех / ошибка | `#0f973d` / `#dc2626` (фон `#fbe9e9`) |
| Шрифт | Geologica (заголовки 600700, текст 400) |
| Контейнер | `max-w-container` (1280px) |
## Ключевой компонент — таблица сравнения цен
- Шапка `bg-light-gray`, текст `t-gray` 600/14px.
- Строки белые, разделители `#ebedf0`, hover `bg-brand-soft`, цены вправо `tabular-nums`.
- Лучшая/нормализованная цена — бейдж `bg-brand text-white rounded-full`.
- Статусы нормализации: success `#0f973d` · конфликт `#dc2626` · «проверить» `#ff4713`.
- shadcn: `Table` + `Badge` (variants default=оранжевый / success / destructive) + TanStack `DataTable`.
+26
View File
@@ -0,0 +1,26 @@
/* shadcn/ui тема (фирменная палитра) — вставить в app/globals.css (:root)
Подключить шрифт Geologica: next/font или
<link href="https://fonts.bunny.net/css?family=geologica:300,400,500,600,700&display=swap"> */
:root {
--radius: 0.5rem; /* база кнопок/инпутов */
--background: 220 14% 96%; /* #f3f4f6 фон страницы */
--foreground: 222 47% 11%; /* #111827 текст */
--card: 0 0% 100%; /* белые карточки */
--card-foreground: 222 47% 11%;
--popover: 0 0% 100%;
--popover-foreground: 222 47% 11%;
--primary: 11 100% 54%; /* #ff4713 бренд-оранжевый */
--primary-foreground: 0 0% 100%;
--secondary: 218 15% 49%; /* #6b788e t-gray */
--secondary-foreground: 0 0% 100%;
--muted: 210 20% 97%; /* #f5f7f9 light-gray */
--muted-foreground: 220 9% 46%; /* #6b7280 */
--accent: 16 100% 95%; /* #ffede7 brand-soft */
--accent-foreground: 11 100% 45%;
--destructive: 0 72% 51%; /* #dc2626 */
--destructive-foreground: 0 0% 100%;
--success: 142 82% 32%; /* #0f973d */
--border: 220 13% 91%; /* #ebedf0 */
--input: 220 13% 85%; /* #d1d5db */
--ring: 11 100% 54%; /* оранжевое кольцо фокуса */
}
+18
View File
@@ -0,0 +1,18 @@
// Дизайн-токены (фирменная палитра) — вставить в tailwind.config.ts → theme.extend
export const brandTheme = {
colors: {
brand: { DEFAULT: "#ff4713", soft: "#ffede7", dark: "#e63e0f" }, // бренд-оранжевый
"t-gray": "#6b788e", // сине-серый (вторичный)
"light-gray": "#f5f7f9", // фон секций/карточек
link: "#2563eb",
success: { DEFAULT: "#0f973d", soft: "#e7f6ec" },
error: { DEFAULT: "#dc2626", soft: "#fbe9e9" },
ink: "#111827", // основной текст
},
fontFamily: {
sans: ["Geologica", "ui-sans-serif", "system-ui", "sans-serif"],
},
borderRadius: { lg: "0.5rem", xl: "0.75rem", "2xl": "1rem", "3xl": "1.5rem" },
maxWidth: { container: "80rem" }, // 1280px — контейнер
boxShadow: { card: "0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1)" },
};