hermes-hub/.agents/skills/frontend-design/README.md

541 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Frontend Design Skill
> Модульный скилл для ИИ-агентов, создающих веб-сайты и интерфейсы. Результат, который читается как работа старшего дизайнера — не как вывод LLM.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Files](https://img.shields.io/badge/files-18-blue.svg)](#-что-внутри)
[![Lines](https://img.shields.io/badge/lines-7_842-blue.svg)](#-что-внутри)
[![Sub-styles](https://img.shields.io/badge/sub--styles-22-green.svg)](#-что-внутри)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
[![No slop](https://img.shields.io/badge/no-purple--blue--gradient-purple.svg)](anti-patterns.md)
**7 842 строки. 18 файлов. Ноль фиолетово-синих градиентов.**
[English version →](README.en.md)
---
## 📖 Содержание
- [Проблема](#-проблема)
- [Решение](#-решение)
- [Скриншоты примеров](#-скриншоты-примеров)
- [Что внутри](#-что-внутри)
- [Быстрый старт](#-быстрый-старт)
- [Гайд по использованию](#-гайд-по-использованию)
- [Стратегии загрузки](#-стратегии-загрузки)
- [Качество кода](#-качество-кода)
- [Кто это использует](#-кто-это-использует)
- [Contributing](#-contributing)
- [Лицензия](#-лицензия)
---
## 🎯 Проблема
Попросите любого ИИ-агента сделать лендинг. Вы получите:
- 🔮 Hero-секцию с фиолетово-синим градиентом
- 🎯 Центрированный заголовок, две CTA-кнопки, лого-бар «Trusted by 10,000+»
- 📦 Три одинаковые карточки фич в ряд, повторённые три раза
- 🎠 Карусель отзывов со стоковыми фотографиями
- 💬 Lorem-ipsum-уровень копирайтинга, который ничего не говорит
Это **AI slop** — визуальный маркер «это сгенерировано LLM». Это то, что выдаёт каждый ИИ по умолчанию, потому что это то, что каждый ИИ видел десять тысяч раз в обучающих данных. Это гравитационный центр генеративного вывода, и всё должно активно с ним бороться.
**Скиллы в этом репозитории борются с ним.**
---
## ✨ Решение
```
7 842 строки · 18 файлов · 22 подстиля · 0 фиолетово-синих градиентов
```
| Файл | Строк | Что внутри |
|---|---:|---|
| **[SKILL.md](SKILL.md)** | 212 | Ядро: принципы, процесс, идентичность. Agent Skills frontmatter |
| **[aesthetics.md](aesthetics.md)** | 320 | 7 высокоуровневых эстетик |
| **[minimal-ui-patterns.md](minimal-ui-patterns.md)** | 924 | 11 подстилей SaaS (Linear, Stripe, Vercel, ...) |
| **[editorial-patterns.md](editorial-patterns.md)** | 476 | 6 editorial подстилей (Pentagram, NYT Mag, ...) |
| **[brutalist-patterns.md](brutalist-patterns.md)** | 437 | 5 brutalist подстилей (Bandcamp, Working Format, ...) |
| **[product-ui-patterns.md](product-ui-patterns.md)** | 1434 | 10 компонентов Linear-style с кодом |
| **[typography.md](typography.md)** | 351 | Шрифты, шкала, пары, анти-паттерны |
| **[color.md](color.md)** | 303 | Токены, палитры, контраст, dark mode |
| **[layout.md](layout.md)** | 295 | Контейнеры, spacing-шкала, сетки, адаптивность |
| **[anti-patterns.md](anti-patterns.md)** | 376 | 28 AI-slop паттернов с до/после |
| **[components.md](components.md)** | 420 | Кнопки, формы, карточки, состояния |
| **[motion.md](motion.md)** | 293 | Анимация, easing, accessibility |
| **[content.md](content.md)** | 272 | Заголовки, копирайтинг, микрокопи |
| **[accessibility.md](accessibility.md)** | 269 | Семантика, клавиатура, фокус, ARIA, тест-протокол |
| **[performance.md](performance.md)** | 210 | Бюджеты, шрифты, картинки, Core Web Vitals |
| **[imagery.md](imagery.md)** | 226 | CSS/SVG-композиции, фото-арт-дирекшн, иконки, favicon/og |
| **[code-style.md](code-style.md)** | 850 | Качество кода, без GPT-slop, комментарии |
| **[checklist.md](checklist.md)** | 174 | Pre-ship QA |
---
## 📸 Скриншоты примеров
Шесть сайтов, построенных с применением этих скиллов — от тёплой типографики до холодного dark SaaS, швейцарской сетки и сырого брутализма.
### Демонстрационные превью (стилевые композиции)
Два первых — дизайн-композиции, демонстрирующие стили:
#### Пример 1: Дизайн-студия *Halftone* (Editorial / Warm / Light)
Создано с применением `aesthetics.md` §2 (Editorial) + `editorial-patterns.md` (Pentagram archive).
**Что применено из скиллов:**
- Warm paper `#FAF6F0` + ink `#1A1714` + editorial red `#C8281C` (`color.md`)
- Fraunces display + Inter text + JetBrains Mono kickers (`typography.md`)
- Асимметричный hero, не centered-everything (`anti-patterns.md` §6)
- Hero headline `clamp(3.5rem, 9vw, 8.5rem)` — массивный, не дефолтный (`typography.md`)
- 6 работ как magazine index, не «3-card grid» (`anti-patterns.md` §12)
- Конкретные имена: «Mira Almeida», «Q3 2026», «14,000 shelves» (`content.md`)
- Никаких emoji, никаких стоковых фото (`anti-patterns.md` §10)
- Footer с colophon — реальный editorial паттерн (`aesthetics.md` §2)
![Halftone portfolio preview](assets/preview-halftone.svg)
---
#### Пример 2: SaaS-продукт *Tempo* (Refined Minimal / Dark / Linear-style)
Создано с применением `minimal-ui-patterns.md` §1 (Linear).
**Что применено из скиллов:**
- Dark surface `#0A0A0A` + ink `#F5F5F5` + Linear purple `#7B85E6` (`color.md` §Dark Mode)
- **Не** pure black, **не** pure white — скилл явно запрещает (`color.md`)
- Accent purple слегка светлее в dark mode (`color.md`)
- Асимметричный hero: текст слева, dashboard справа (`anti-patterns.md` §6)
- Hero headline делает claim, не «Welcome to Tempo» (`content.md`)
- Dashboard mockup в CSS/SVG — без стоковых скриншотов (`anti-patterns.md` §10)
- Реальные метрики: P95 latency, конкретные commits с hash + impact (`content.md`)
- 3 фичи asymmetric: metrics / replay / install — три разных формата (`anti-patterns.md` §11/12)
- Pricing: 2 честных tier'а, не 3 с middle highlighted (`anti-patterns.md` §13)
- Footer с build info: `v2.4.7 · build a3f9c2 · uptime 99.98%` (`aesthetics.md` §6)
![Tempo SaaS preview](assets/preview-tempo.svg)
---
### Рабочие примеры (готовые single-file сайты)
Четыре полноценных сайта в папке [`examples/`](examples/). Каждый — single HTML файл с встроенным CSS и минимальным JS. Открывается в любом браузере без сборки.
| # | Скриншот | Файл | Стиль | Применённые скиллы |
|---|---|---|---|---|
| 1 | ![Magazine](assets/screenshot-magazine.svg) | [`example-magazine.html`](examples/example-magazine.html) | **Editorial** (NYT Magazine) | `editorial-patterns.md` + `typography.md` + `color.md` |
| 2 | ![SaaS](assets/screenshot-saas.svg) | [`example-saas.html`](examples/example-saas.html) | **Refined Minimal dark** (Linear) | `minimal-ui-patterns.md` + `product-ui-patterns.md` |
| 3 | ![Brutalist](assets/screenshot-brutalist.svg) | [`example-brutalist.html`](examples/example-brutalist.html) | **Brutalist** (Working Format) | `brutalist-patterns.md` + `typography.md` |
| 4 | ![Swiss](assets/screenshot-swiss.svg) | [`example-swiss.html`](examples/example-swiss.html) | **Swiss** (Müller-Brockmann) | `aesthetics.md` §3 + `layout.md` + `accessibility.md` |
#### Пример 3: Литературный журнал *The Common Review* (Editorial)
Квартальный журнал эссе, критики и писем. Issue 14, Winter 2026, тема номера — «On Repair».
**Что применено из скиллов:**
- ✅ Source Serif 4 throughout (display + body — одна семья) (`typography.md`)
- ✅ JetBrains Mono для metadata (issue numbers, page numbers, dates) (`typography.md`)
-**B/W minimal** + editorial red `#C8281C` accent (`color.md`)
- ✅ Асимметричный hero с SVG cover-art «after Ruskin» (`anti-patterns.md` §10)
-**Drop cap** на lede параграфе — настоящий editorial паттерн (`editorial-patterns.md` §3)
- ✅ Pull quote с правилами сверху/снизу (`editorial-patterns.md` §3)
- ✅ Section markers (§01, §02, §03) с правилами (`editorial-patterns.md` §1)
- ✅ Real-feeling content: «Marta Bellucci spent three months with one of the youngest, who is sixty-three» (`content.md`)
- ✅ Colophon в footer (`editorial-patterns.md` §1)
---
#### Пример 4: Feature flag система *Latch* (SaaS / Linear-style)
Developer tool для product teams. Sub-стиль — Linear.
**Что применено из скиллов:**
- ✅ Dark surface `#0A0A0B` + ink `#F4F4F5` (НЕ pure black/white — `color.md` явно запрещает)
- ✅ Mint accent `#6EE7B7` — использован <10% пикселей (`color.md` §"How to Use the Accent")
- Hero asymmetric: текст слева, dashboard справа (`anti-patterns.md` §6)
- Hero headline: «Feature flags that don't get in the way конкретный claim (`content.md`)
- **Dashboard mockup в CSS-only**: panel chrome, segmented control, flag rows с toggle (`product-ui-patterns.md` §1, §6)
- 3 фичи asymmetric: install (с code block) / targeting (с viz) / speed (с viz) (`anti-patterns.md` §11/12)
- Pricing: 2 честных tier'а (Hobby + Production) (`anti-patterns.md` §13)
- Footer с build info: `v3.2.7 · build 8f4a12 · uptime 99.99%` (`aesthetics.md` §6)
- Tabular numerals everywhere (font-variant-numeric) (`typography.md`)
- JavaScript: segmented control + interactive toggle (`components.md`)
---
#### Пример 5: Инди-лейбл *Constellation Records* (Brutalist)
Independent record label из Монреаля. Sub-стиль Working Format + Bandcamp.
**Что применено из скиллов:**
- **Marquee** с announcements (60s loop, respects `prefers-reduced-motion`) (`motion.md`)
- Pure black `#0A0A0A` + warm cream `#F4F1EB` + electric red `#FF2400` (`brutalist-patterns.md` §2)
- **Sharp corners everywhere** (`border-radius: 0`) (`brutalist-patterns.md` §"Anti-patterns")
- Hero с massive display type, italic accent в красном (`brutalist-patterns.md` §"Hallmarks")
- Hero meta column в inverted color (ink background, surface text) (`brutalist-patterns.md` §2)
- Album covers как **CSS-only abstract compositions** (concentric circles, squares) (`anti-patterns.md` §10)
- Catalog: 8 релизов, hover shifts padding + title color (`components.md`)
- **Manifesto section** с большой typography, italic emphasis в accent (`editorial-patterns.md` §1 + brutalist merge)
- Tour dates с status indicators (`ON SALE` / `SOLD OUT`) (`components.md` §"Status indicators")
- Footer в inverted color, маркеры в accent color (`brutalist-patterns.md` §2)
---
#### Пример 6: Выставка *Ordnung* в Haus der Form (Swiss)
Музейная выставка швейцарского графдизайна 19501980. Sub-стиль Müller-Brockmann / International Typographic.
**Что применено из скиллов:**
- **Ноль JavaScript** чистые HTML + CSS (`performance.md` §"JavaScript Ship None If You Can")
- Один гротеск Archivo throughout + IBM Plex Mono для metadata (`aesthetics.md` §3, `typography.md`)
- Hero меньше ожидаемого `clamp(2.75rem, 6vw, 4.5rem)`, швейцарская сдержанность (`aesthetics.md` §3)
- **Type as image**: гигантские «19501980» с tabular-nums как визуальный якорь (`typography.md` §Numerals)
- White/pure black/один красный #D62828 «Surface: white or black, nothing in between» (`aesthetics.md` §3)
- Meta-column паттерн 200px + 1fr во всех секциях (`layout.md` §"The meta-column pattern")
- Кнопок нет, hover у таблицы инверсия: чёрный фон, белый текст, красный номер (`layout.md`, `components.md`)
- Реальный каталог: Müller-Brockmann «Beethoven» 1955, Neue Grafik 146, Ruder «Typographie» 1967 (`content.md`)
- Skip-link, semantic таблица с caption, `:focus-visible`, `prefers-reduced-motion` (`accessibility.md`)
- Карта на CSS grid-artifact вместо стоковой карты (`imagery.md` §"The vocabulary")
---
## 🚀 Быстрый старт
### 1. Клонировать
```bash
git clone https://github.com/AkyRayy/Frontend-Design-SKILLS-for-AI.git
cd Frontend-Design-SKILLS-for-AI
```
### 2. Положить в контекст агента
Зависит от платформы:
| Платформа | Куда положить |
|---|---|
| **Claude Code / Cursor** | `.claude/skills/frontend-design/` `SKILL.md` содержит Agent Skills frontmatter (`name` + `description`), так что скилл подхватывается автоматически |
| **Continue** | `.continue/skills/frontend-design/` |
| **Cline / Roo Code** | `.roo/skills/frontend-design/` |
| **Custom agent** | Скопировать нужные `.md` файлы в system prompt |
### 3. Использовать
```
[контекст: SKILL.md + aesthetics.md + minimal-ui-patterns.md]
Пользователь: Сделай мне лендинг для SaaS-стартапа в сфере observability.
Агент: [читает SKILL.md, выбирает эстетику "Refined Minimal" → под-стиль "Linear"]
[определяет job страницы]
[строит токен-систему из color.md]
[пишет типографику из typography.md]
[избегает 28 паттернов из anti-patterns.md]
[пишет код в стиле code-style.md]
→ выдаёт дизайн, который читается как работа старшего дизайнера
```
---
## 📘 Гайд по использованию
### Шаг 0 — Перед началом
Прочитайте **[SKILL.md](SKILL.md)** полностью. Это ядро. Всё остальное детали.
Запомните три вопроса, которые агент должен задать себе **на каждом этапе**:
1. **Какая работа этой страницы?** (одно предложение)
2. **В какой я эстетике?** (одна, не смесь)
3. **Что должно доминировать?** (один элемент, не пять)
### Шаг 1 — Определите работу страницы
Без этого шага всё остальное slop. Спросите себя: **зачем пользователь сюда пришёл и что должен сделать?**
```
❌ "Лендинг для нашего SaaS" → непонятно что делать
✅ "Убедить frontend engineer попробовать продукт → получить email"
✅ "Получить pre-orders для книги за $40"
✅ "Собрать заявки на работу в студию"
```
Запишите одно предложение. Все секции страницы должны служить этой работе.
### Шаг 2 — Выберите эстетику
Откройте **[aesthetics.md](aesthetics.md)**. Семь высокоуровневых эстетик:
| Эстетика | Когда выбирать |
|---|---|
| **Refined Minimal** | SaaS, fintech, dev tools, B2B |
| **Editorial / Magazine** | Publishing, premium content, манифесты |
| **Swiss / Typographic** | Galleries, museums, архивы |
| **Brutalist / Raw** | Music, fashion, art, counterculture |
| **Soft / Hand-crafted** | Lifestyle, hospitality, indie SaaS |
| **Technical / Mono** | Dev tools, API, документация |
| **Playful / Geometric** | Consumer, kids, gaming, creative |
**Зафиксируйте выбор. Не смешивайте два.**
### Шаг 3 — Углубитесь в подстиль
Откройте соответствующий файл подстилей:
- **Refined Minimal** [minimal-ui-patterns.md](minimal-ui-patterns.md) (11 подстилей)
- **Editorial** [editorial-patterns.md](editorial-patterns.md) (6 подстилей)
- **Brutalist** [brutalist-patterns.md](brutalist-patterns.md) (5 подстилей)
Выберите конкретный подстиль (Linear, Stripe, Vercel, NYT Magazine, Bandcamp, ...) и зафиксируйте его. Не смешивайте два.
### Шаг 4 — Соберите систему токенов
Откройте **[color.md](color.md)** и **[typography.md](typography.md)**. Установите:
```css
:root {
/* Палитра из color.md, конкретные hex */
--surface: ...
--ink: ...
--accent: ...
/* Типографика из typography.md */
--font-display: ...
--font-text: ...
--font-mono: ...
/* Шкала 1.25 или 1.333 */
--text-base: 1rem;
--text-2xl: 1.953rem;
/* ... */
}
```
**Никаких raw hex в компонентах.** Все цвета через токены.
### Шаг 4½ — Задайте скелет страницы
Откройте **[layout.md](layout.md)**. Контейнер (`12001280px`), spacing-шкала (`4/8/12/16/24/32/48/64/96/128`), асимметричные сплиты (`5/7`, `3/9` не равные трети), мета-колонка, брейкпоинты `480/768/1024`. Сетка и отступы решаются до первой компоненты.
### Шаг 5 — Избегайте slop
Откройте **[anti-patterns.md](anti-patterns.md)**. **28 конкретных паттернов**, которые нужно отвергнуть. Каждый с примером «до» и «после».
Перед тем как писать очередную секцию, проверьте: **не повторяю ли я один из этих 28 паттернов?**
### Шаг 6 — Стройте компоненты правильно
| Что строим | Где правила |
|---|---|
| Кнопки, формы, навигация | [components.md](components.md) |
| Product chrome (sidebar, command palette) | [product-ui-patterns.md](product-ui-patterns.md) |
| Иконки, изображения, favicon/og | [imagery.md](imagery.md) |
| Анимации | [motion.md](motion.md) |
**Каждый компонент должен иметь 8 состояний:** default, hover, focus-visible, active, disabled, loading, empty, error. Без них дизайн ломается на границах.
### Шаг 7 — Пишите конкретный контент
Откройте **[content.md](content.md)**. Главные правила:
| Slop | Конкретно |
|---|---|
| «Welcome to [Brand | «Design that doesn't need explaining |
| «Empowering businesses to thrive» | «Ship features 3x faster» |
| «Trusted by 10,000 | «Used by Linear, Vercel, Stripe» |
| «Lorem ipsum» | Реальные имена, даты, цифры |
### Шаг 8 — Пишите качественный код
Откройте **[code-style.md](code-style.md)**. Это скилл про код без GPT-slop в комментариях, без раздутых функций, без `any`, без магических чисел.
**Главное правило:** имена это дизайн. Потратьте на имя больше времени, чем на саму строку кода.
### Шаг 8½ — Доступность и скорость
Откройте **[accessibility.md](accessibility.md)** и **[performance.md](performance.md)**.
- **A11y:** семантика, клавиатурный проход, `:focus-visible`, ARIA-минимализм, контраст AA 15-минутный тест-протокол перед шипом.
- **Perf:** бюджеты (LCP < 2.5s, CLS < 0.1, 4 font-файла, ноль блокирующего JS). Страница на HTML+CSS без JS норма, не подвиг.
### Шаг 9 — Прогоните чеклист
Откройте **[checklist.md](checklist.md)**. **70+ пунктов** по типографике, цвету, layout, компонентам, motion, accessibility, edge cases.
**Финальные тесты:**
1. Would Massimo Vignelli approve?
2. Could you ship this at Linear / Pentagram / NYT?
3. Would you screenshot this for design inspiration?
4. Would you be proud to put your name on this?
Если 6+ ответов «нет» продолжайте итерировать.
---
## 🎯 Стратегии загрузки
### Минимальная загрузка (быстро, минимум токенов)
```
1. SKILL.md ← ядро
2. aesthetics.md ← выбор эстетики
3. checklist.md ← перед релизом
```
### Стандартная загрузка (рекомендуется)
```
1. SKILL.md
2. aesthetics.md
3. typography.md
4. color.md
5. layout.md
6. checklist.md
```
### B2B SaaS (Linear / Stripe / Vercel)
```
1. SKILL.md
2. minimal-ui-patterns.md ← вместо aesthetics.md §1
3. typography.md
4. color.md
5. layout.md
6. product-ui-patterns.md ← для sidebar, command palette и т.д.
7. accessibility.md ← интерактивный продукт поднимает планку a11y
8. checklist.md
```
### Editorial (Pentagram / NYT Mag)
```
1. SKILL.md
2. editorial-patterns.md ← вместо aesthetics.md §2
3. typography.md
4. color.md
5. layout.md
6. checklist.md
```
### Brutalist (Bandcamp / Working Format)
```
1. SKILL.md
2. brutalist-patterns.md ← вместо aesthetics.md §4
3. typography.md
4. checklist.md
```
### Продукт / интерактивное приложение
```
1. SKILL.md
2. minimal-ui-patterns.md
3. typography.md + color.md + layout.md
4. product-ui-patterns.md ← chrome: sidebar, ⌘K, list items, modals
5. accessibility.md ← фокус-трапы, ARIA, клавиатура
6. performance.md ← INP/CLS под нагрузкой
7. checklist.md
```
### Полная загрузка (глубокая работа)
Все 18 файлов. Используется когда проект требует максимальной проработки.
---
## 💎 Качество кода
Кроме дизайна, репозиторий включает **[code-style.md](code-style.md)** скилл для качества кода, который ИИ-агенты пишут.
**Главные принципы:**
| Принцип | Антипаттерн |
|---|---|
| **Имена — это дизайн** | `processData`, `doSomething`, `result` всё это сломано |
| **Комментарии объясняют ПОЧЕМУ, не ЧТО** | `// This function adds two numbers` над `add(a, b)` |
| **Ошибки — это значения** | `catch (e) {}` молчаливо проглатывает ошибки |
| **Маленькие функции** | Функция на 200 строк с 8 параметрами |
| **Никакого `any`** | TypeScript лжёт сам себе |
| **Удаляй первым** | Прежде чем добавить код, спроси можно ли удалить |
**GPT-slop в коде** (catalog из 30+ паттернов):
- Комментарии «This function does X» (код уже это делает)
- Пустые `catch {}`
- `any`, `as any`, `@ts-ignore` без обоснования
- Магические числа (`0.5`, `3600`, `100`) без имён
- Функции с булевыми флагами: `doThing(x, true, false)`
- Зависимости для одной функции
**Полный каталог и правила** [code-style.md](code-style.md)
---
## 👥 Кто это использует
- **Разработчики ИИ-агентов** чтобы поднять качество выхода
- **Дизайнеры, использующие ИИ** чтобы перестать чинить одни и те же 5 паттернов
- **Разработчики без дизайнера** чтобы AI-генерируемые сайты выглядели достойно
- **Стартаперы, которые шлют быстро** чтобы не отправлять уродливое
**Это не для:** дизайнеров, которые уже делают отличную работу вы не нуждаетесь. Это для всех, кто работает downstream от LLM и хочет улучшить результат.
---
## 🚫 Что это НЕ
- **❌ Не Figma-плагин.** Это markdown-скилл для ИИ-агентов, не дизайн-инструмент для людей.
- **❌ Не CSS-фреймворк.** Не производит код; формирует код, который пишет агент.
- **❌ Не замена вкусу.** Скилл поднимает пол. Потолок всё ещё ваш.
- **❌ Не магия.** Скилл это инструкции. Если агент их не следует, вывод всё равно slop.
---
## 🤝 Contributing
PRы приветствуются. Особенно:
- **Новые anti-patterns** с примерами до/после (формат в CONTRIBUTING.md)
- **Новые подстили** в `minimal-ui-patterns.md` / `editorial-patterns.md` / `brutalist-patterns.md`
- **Новые компоненты** в `product-ui-patterns.md` (HTML + CSS + все состояния)
- **Переводы** репозиторий сейчас English-first, но Russian (этот README), Chinese, Spanish, Japanese всё приветствуется
**Что мы НЕ принимаем:** общие советы используйте whitespace»), паттерны без примеров, маркетинговый язык.
Подробности: **[CONTRIBUTING.md](CONTRIBUTING.md)**
---
## 📜 Лицензия
**[MIT](LICENSE)** используйте, изменяйте, распространяйте. Если отправите с этим что-то хорошее это и есть благодарность.
---
## 🙏 Credits
Паттерны взяты из работ:
**Продуктовый дизайн:** Linear, Stripe, Vercel, Arc, Cron, Mercury, Pitch, Height, Figma, Notion, Sublime
**Студийная работа:** Pentagram, &Walsh, DIA Studio, Manual, Working Format, Locomotive, Bureau Mirko Borsche, Studio Dumbar
**Editorial:** NYT Magazine, Bloomberg Businessweek, It's Nice That, Wallpaper*, Apartamento, The Gentlewoman, Kinfolk
**Swiss / International Typographic:** Müller-Brockmann, Massimo Vignelli, Jan Tschichold, Wim Crouwel, Erik Spiekermann
**Type design:** Stefan Sagmeister, Paula Scher, Tibor Kalman, Michael Bierut
Если узнаёте паттерны это и есть цель. Если нет прочитайте референсы, потом прочитайте код.
---
> **Если дизайн хороший, вы его не замечаете. Если плохой — замечаете сразу.**
>
> Ваша работа — первое. Slop — второе.