一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
250 lines
22 KiB
Markdown
250 lines
22 KiB
Markdown
# Design System Inspired by Spotify
|
||
|
||
> Category: Медиа и потребительские сервисы
|
||
> Музыкальный стриминг. Насыщенный зелёный на тёмном фоне, жирная типографика, обложки альбомов как главный источник цвета.
|
||
|
||
## 1. Визуальная тема и атмосфера
|
||
|
||
Веб-интерфейс Spotify — это тёмный, погружающий музыкальный плеер, окутывающий слушателя почти чёрным коконом (`#121212`, `#181818`, `#1f1f1f`), где обложки альбомов и контент становятся основным источником цвета. Философия дизайна — «контент в темноте» — UI уходит в тень, чтобы музыка, подкасты и плейлисты могли светиться. Каждая поверхность — оттенок тёмно-серого, создающий театральную среду, где единственный настоящий цвет исходит от культового Spotify Green (`#1ed760`) и самих обложек альбомов.
|
||
|
||
Типографика использует SpotifyMixUI и SpotifyMixUITitle — проприетарные шрифты из семейства CircularSp (Circular от Lineto, адаптированный для Spotify) с широким стеком запасных шрифтов, включающим арабский, иврит, кириллический, греческий, деванагари и CJK-шрифты — отражение глобального охвата Spotify. Система типографики компактна и функциональна: 700 (bold) — для акцентов и навигации, 600 (semibold) — для второстепенного выделения, 400 (regular) — для основного текста. Кнопки используют верхний регистр с положительным межбуквенным расстоянием (1.4px–2px), придавая им систематичный, «лейбл»-подобный характер.
|
||
|
||
Особенность Spotify — геометрия «таблетки» и круга. Основные кнопки имеют радиус 500px–9999px (полная «таблетка»), круглые кнопки воспроизведения — 50%, строки поиска — «таблетки» на 500px. В сочетании с глубокими тенями (`rgba(0,0,0,0.5) 0px 8px 24px`) на приподнятых элементах и уникальной комбинацией вставной рамки с тенью (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`) получается интерфейс, ощущающийся как премиальное аудиоустройство — тактильный, округлый и созданный для касания.
|
||
|
||
**Ключевые характеристики:**
|
||
- Погружающая тёмная тема почти чёрного оттенка (`#121212`–`#1f1f1f`) — UI растворяется за контентом
|
||
- Spotify Green (`#1ed760`) как единственный фирменный акцент — никогда декоративный, всегда функциональный
|
||
- Семейство шрифтов SpotifyMixUI/CircularSp с поддержкой глобальных систем письма
|
||
- Кнопки-«таблетки» (500px–9999px) и круглые элементы управления (50%) — скруглённые, оптимизированные для касания
|
||
- Метки кнопок в верхнем регистре с широким межбуквенным расстоянием (1.4px–2px)
|
||
- Глубокие тени на приподнятых элементах (`rgba(0,0,0,0.5) 0px 8px 24px`)
|
||
- Семантические цвета: красный для ошибок (`#f3727f`), оранжевый для предупреждений (`#ffa42b`), синий для уведомлений (`#539df5`)
|
||
- Обложки альбомов как основной источник цвета — UI намеренно ахроматичен
|
||
|
||
## 2. Цветовая палитра и роли цветов
|
||
|
||
### Основной бренд
|
||
- **Spotify Green** (`#1ed760`): Основной фирменный акцент — кнопки воспроизведения, активные состояния, CTA
|
||
- **Near Black** (`#121212`): Самая глубокая фоновая поверхность
|
||
- **Dark Surface** (`#181818`): Карточки, контейнеры, приподнятые поверхности
|
||
- **Mid Dark** (`#1f1f1f`): Фоны кнопок, интерактивные поверхности
|
||
|
||
### Текст
|
||
- **White** (`#ffffff`): `--text-base`, основной текст
|
||
- **Silver** (`#b3b3b3`): Вторичный текст, приглушённые метки, неактивная навигация
|
||
- **Near White** (`#cbcbcb`): Немного более яркий вторичный текст
|
||
- **Light** (`#fdfdfd`): Почти чисто-белый для максимального акцента
|
||
|
||
### Семантические
|
||
- **Negative Red** (`#f3727f`): `--text-negative`, состояния ошибок
|
||
- **Warning Orange** (`#ffa42b`): `--text-warning`, состояния предупреждений
|
||
- **Announcement Blue** (`#539df5`): `--text-announcement`, информационные состояния
|
||
|
||
### Поверхности и рамки
|
||
- **Dark Card** (`#252525`): Приподнятая поверхность карточки
|
||
- **Mid Card** (`#272727`): Альтернативная поверхность карточки
|
||
- **Border Gray** (`#4d4d4d`): Рамки кнопок на тёмном фоне
|
||
- **Light Border** (`#7c7c7c`): Рамки кнопок с обводкой, приглушённые ссылки
|
||
- **Separator** (`#b3b3b3`): Разделительные линии
|
||
- **Light Surface** (`#eeeeee`): Кнопки в светлом режиме (редко)
|
||
- **Spotify Green Border** (`#1db954`): Вариант зелёного акцентного бордера
|
||
|
||
### Тени
|
||
- **Heavy** (`rgba(0,0,0,0.5) 0px 8px 24px`): Диалоги, меню, приподнятые панели
|
||
- **Medium** (`rgba(0,0,0,0.3) 0px 8px 8px`): Карточки, выпадающие списки
|
||
- **Inset Border** (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`): Комбинация вставной рамки с тенью для полей ввода
|
||
|
||
## 3. Правила типографики
|
||
|
||
### Семейства шрифтов
|
||
- **Заголовок**: `SpotifyMixUITitle`, запасные: `CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, Helvetica Neue, helvetica, arial, Hiragino Sans, Hiragino Kaku Gothic ProN, Meiryo, MS Gothic`
|
||
- **UI / Основной текст**: `SpotifyMixUI`, тот же стек запасных
|
||
|
||
### Иерархия
|
||
|
||
| Роль | Шрифт | Размер | Насыщенность | Высота строки | Межбуквенное расстояние | Примечания |
|
||
|------|------|------|--------|-------------|----------------|-------|
|
||
| Заголовок раздела | SpotifyMixUITitle | 24px (1.50rem) | 700 | normal | normal | Жирный заголовок |
|
||
| Заголовок функции | SpotifyMixUI | 18px (1.13rem) | 600 | 1.30 (tight) | normal | Полужирные заголовки разделов |
|
||
| Жирный основной текст | SpotifyMixUI | 16px (1.00rem) | 700 | normal | normal | Акцентированный текст |
|
||
| Основной текст | SpotifyMixUI | 16px (1.00rem) | 400 | normal | normal | Стандартный текст |
|
||
| Кнопка в верхнем регистре | SpotifyMixUI | 14px (0.88rem) | 600–700 | 1.00 (tight) | 1.4px–2px | `text-transform: uppercase` |
|
||
| Кнопка | SpotifyMixUI | 14px (0.88rem) | 700 | normal | 0.14px | Стандартная кнопка |
|
||
| Жирная ссылка навигации | SpotifyMixUI | 14px (0.88rem) | 700 | normal | normal | Навигация |
|
||
| Ссылка навигации | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Неактивная навигация |
|
||
| Жирная подпись | SpotifyMixUI | 14px (0.88rem) | 700 | 1.50–1.54 | normal | Жирные метаданные |
|
||
| Подпись | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Метаданные |
|
||
| Жирный мелкий текст | SpotifyMixUI | 12px (0.75rem) | 700 | 1.50 | normal | Теги, счётчики |
|
||
| Мелкий текст | SpotifyMixUI | 12px (0.75rem) | 400 | normal | normal | Мелкий шрифт |
|
||
| Бейдж | SpotifyMixUI | 10.5px (0.66rem) | 600 | 1.33 | normal | `text-transform: capitalize` |
|
||
| Микро | SpotifyMixUI | 10px (0.63rem) | 400 | normal | normal | Наименьший текст |
|
||
|
||
### Принципы
|
||
- **Бинарность: жирный/обычный**: Большинство текстов имеют насыщенность 700 (bold) или 400 (regular), 600 используется умеренно. Это создаёт чёткую визуальную иерархию через контраст насыщенности, а не вариацию размера.
|
||
- **Кнопки в верхнем регистре как система**: Метки кнопок используют верхний регистр + широкое межбуквенное расстояние (1.4px–2px), создавая систематичный «лейбл»-голос, отличный от контентного текста.
|
||
- **Компактность размеров**: Диапазон 10px–24px — уже, чем у большинства систем. Типографика Spotify компактна и функциональна, создана для просмотра плейлистов, а не чтения статей.
|
||
- **Поддержка глобальных систем письма**: Обширный стек запасных шрифтов (арабский, иврит, кириллица, греческий, деванагари, CJK) отражает присутствие Spotify на 180+ рынках.
|
||
|
||
## 4. Стилизация компонентов
|
||
|
||
### Кнопки
|
||
|
||
**Dark Pill**
|
||
- Background: `#1f1f1f`
|
||
- Text: `#ffffff` или `#b3b3b3`
|
||
- Padding: 8px 16px
|
||
- Radius: 9999px (полная «таблетка»)
|
||
- Применение: навигационные «таблетки», второстепенные действия
|
||
|
||
**Dark Large Pill**
|
||
- Background: `#181818`
|
||
- Text: `#ffffff`
|
||
- Padding: 0px 43px
|
||
- Radius: 500px
|
||
- Применение: основные кнопки навигации приложения
|
||
|
||
**Light Pill**
|
||
- Background: `#eeeeee`
|
||
- Text: `#181818`
|
||
- Radius: 500px
|
||
- Применение: CTA в светлом режиме (согласие на куки, маркетинг)
|
||
|
||
**Outlined Pill**
|
||
- Background: transparent
|
||
- Text: `#ffffff`
|
||
- Border: `1px solid #7c7c7c`
|
||
- Padding: 4px 16px 4px 36px (асимметрично для иконки)
|
||
- Radius: 9999px
|
||
- Применение: кнопки подписки, второстепенные действия
|
||
|
||
**Circular Play**
|
||
- Background: `#1f1f1f`
|
||
- Text: `#ffffff`
|
||
- Padding: 12px
|
||
- Radius: 50% (круг)
|
||
- Применение: элементы управления воспроизведением/паузой
|
||
|
||
### Карточки и контейнеры
|
||
- Background: `#181818` или `#1f1f1f`
|
||
- Radius: 6px–8px
|
||
- На большинстве карточек видимые рамки отсутствуют
|
||
- Hover: незначительное осветление фона
|
||
- Shadow: `rgba(0,0,0,0.3) 0px 8px 8px` на приподнятых элементах
|
||
|
||
### Поля ввода
|
||
- Поле поиска: фон `#1f1f1f`, текст `#ffffff`
|
||
- Radius: 500px (таблетка)
|
||
- Padding: 12px 96px 12px 48px (с учётом иконки)
|
||
- Focus: рамка становится `#000000`, outline `1px solid`
|
||
|
||
### Навигация
|
||
- Тёмная боковая панель со шрифтом SpotifyMixUI 14px насыщенностью 700 для активных, 400 для неактивных элементов
|
||
- Приглушённый `#b3b3b3` для неактивных элементов, `#ffffff` для активных
|
||
- Круглые кнопки с иконками (радиус 50%)
|
||
- Логотип Spotify в верхнем левом углу зелёного цвета
|
||
|
||
## 5. Принципы вёрстки
|
||
|
||
### Система отступов
|
||
- Базовая единица: 8px
|
||
- Шкала: 1px, 2px, 3px, 4px, 5px, 6px, 8px, 10px, 12px, 14px, 15px, 16px, 20px
|
||
|
||
### Сетка и контейнеры
|
||
- Боковая панель (фиксированная) + основная область контента
|
||
- Карточки альбомов и плейлистов на основе сетки
|
||
- Полноширинная панель «сейчас играет» внизу
|
||
- Адаптивная область контента заполняет оставшееся пространство
|
||
|
||
### Философия пустого пространства
|
||
- **Тёмное уплотнение**: Spotify упаковывает контент плотно — сетки плейлистов, списки треков и навигация расположены близко друг к другу. Тёмный фон обеспечивает визуальный отдых между элементами без необходимости в больших отступах.
|
||
- **Плотность контента важнее воздуха**: Это приложение, а не маркетинговый сайт. Каждый пиксель служит опыту прослушивания.
|
||
|
||
### Шкала скругления углов
|
||
- Минимальный (2px): Бейджи, явные теги
|
||
- Тонкий (4px): Поля ввода, мелкие элементы
|
||
- Стандартный (6px): Контейнеры обложек, карточки
|
||
- Комфортный (8px): Секции, диалоги
|
||
- Средний (10px–20px): Панели, оверлеи
|
||
- Большой (100px): Крупные кнопки-«таблетки»
|
||
- Таблетка (500px): Основные кнопки, строка поиска
|
||
- Полная таблетка (9999px): Навигационные «таблетки», поиск
|
||
- Круг (50%): Кнопки воспроизведения, аватары, иконки
|
||
|
||
## 6. Глубина и высота
|
||
|
||
| Уровень | Обработка | Применение |
|
||
|-------|-----------|-----|
|
||
| Базовый (Level 0) | Фон `#121212` | Самый глубокий слой, фон страницы |
|
||
| Поверхность (Level 1) | `#181818` или `#1f1f1f` | Карточки, боковая панель, контейнеры |
|
||
| Приподнятый (Level 2) | `rgba(0,0,0,0.3) 0px 8px 8px` | Выпадающие меню, hover-карточки |
|
||
| Диалог (Level 3) | `rgba(0,0,0,0.5) 0px 8px 24px` | Модальные окна, оверлеи, меню |
|
||
| Вставной (Border) | `rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset` | Рамки полей ввода |
|
||
|
||
**Философия теней**: Spotify использует заметно глубокие тени для тёмного приложения. Тень с непрозрачностью 0.5 и размытием 24px создаёт драматический эффект «парения в темноте» для диалогов и меню, а тень с непрозрачностью 0.3 и размытием 8px обеспечивает более тонкий подъём карточки. Уникальная комбинация вставной рамки с тенью на полях ввода создаёт утопленное, тактильное ощущение.
|
||
|
||
## 7. Что делать и чего избегать
|
||
|
||
### Делать
|
||
- Использовать почти чёрные фоны (`#121212`–`#1f1f1f`) — глубина через вариацию оттенков
|
||
- Применять Spotify Green (`#1ed760`) только для элементов управления воспроизведением, активных состояний и основных CTA
|
||
- Использовать форму «таблетки» (500px–9999px) для всех кнопок — круглую (50%) для кнопок воспроизведения
|
||
- Применять верхний регистр + широкое межбуквенное расстояние (1.4px–2px) для меток кнопок
|
||
- Сохранять компактность типографики (диапазон 10px–24px) — это приложение, а не журнал
|
||
- Использовать глубокие тени (`0.3–0.5 opacity`) для приподнятых элементов на тёмных фонах
|
||
- Позволять обложкам альбомов обеспечивать цвет — сам UI ахроматичен
|
||
|
||
### Не делать
|
||
- Не использовать Spotify Green декоративно или в качестве фона — он только функциональный
|
||
- Не использовать светлые фоны для основных поверхностей — тёмное погружение принципиально
|
||
- Не пропускать геометрию «таблетки» и круга на кнопках — прямоугольные кнопки ломают идентичность
|
||
- Не использовать тонкие/едва заметные тени — на тёмных фонах тени должны быть глубокими, чтобы быть видимыми
|
||
- Не добавлять дополнительные фирменные цвета — зелёный + ахроматические серые — полная палитра
|
||
- Не использовать свободные межстрочные интервалы — типографика Spotify компактна и плотна
|
||
- Не показывать голые серые рамки — использовать рамки на основе теней или вставные рамки
|
||
|
||
## 8. Адаптивное поведение
|
||
|
||
### Точки перехода
|
||
| Название | Ширина | Ключевые изменения |
|
||
|------|-------|-------------|
|
||
| Mobile Small | <425px | Компактный мобильный макет |
|
||
| Mobile | 425–576px | Стандартный мобильный |
|
||
| Tablet | 576–768px | Двухколоночная сетка |
|
||
| Tablet Large | 768–896px | Расширенный макет |
|
||
| Desktop Small | 896–1024px | Боковая панель видна |
|
||
| Desktop | 1024–1280px | Полный десктопный макет |
|
||
| Large Desktop | >1280px | Расширенная сетка |
|
||
|
||
### Стратегия сворачивания
|
||
- Боковая панель: полная → свёрнутая → скрытая
|
||
- Сетка альбомов: 5 колонок → 3 → 2 → 1
|
||
- Панель «сейчас играет»: сохраняется при любом размере
|
||
- Поиск: поле-«таблетка» сохраняется, ширина регулируется
|
||
- Навигация: боковая панель → нижняя панель на мобильных
|
||
|
||
## 9. Руководство для агентных промптов
|
||
|
||
### Быстрый справочник по цветам
|
||
- Background: Near Black (`#121212`)
|
||
- Surface: Dark Card (`#181818`)
|
||
- Text: White (`#ffffff`)
|
||
- Secondary text: Silver (`#b3b3b3`)
|
||
- Accent: Spotify Green (`#1ed760`)
|
||
- Border: `#4d4d4d`
|
||
- Error: Negative Red (`#f3727f`)
|
||
|
||
### Примеры промптов для компонентов
|
||
- "Create a dark card: #181818 background, 8px radius. Title at 16px SpotifyMixUI weight 700, white text. Subtitle at 14px weight 400, #b3b3b3. Shadow rgba(0,0,0,0.3) 0px 8px 8px on hover."
|
||
- "Design a pill button: #1f1f1f background, white text, 9999px radius, 8px 16px padding. 14px SpotifyMixUI weight 700, uppercase, letter-spacing 1.4px."
|
||
- "Build a circular play button: Spotify Green (#1ed760) background, #000000 icon, 50% radius, 12px padding."
|
||
- "Create search input: #1f1f1f background, white text, 500px radius, 12px 48px padding. Inset border: rgb(124,124,124) 0px 0px 0px 1px inset."
|
||
- "Design navigation sidebar: #121212 background. Active items: 14px weight 700, white. Inactive: 14px weight 400, #b3b3b3."
|
||
|
||
### Руководство по итерации
|
||
1. Начните с #121212 — всё живёт в почти чёрной темноте
|
||
2. Spotify Green только для функциональных акцентов (воспроизведение, активные состояния, CTA)
|
||
3. Везде «таблетки» — 500px для крупных, 9999px для мелких, 50% для круглых
|
||
4. Верхний регистр + широкий трекинг на кнопках — систематичный лейбл-голос
|
||
5. Глубокие тени (0.3–0.5 opacity) для высоты — светлые тени невидимы на тёмном
|
||
6. Обложки альбомов обеспечивают весь цвет — UI остаётся ахроматичным
|