Files
Report-showcase/.template/development/modules/presentation-foundation.md
T
2026-10-09 01:45:17 +00:00

42 lines
2.8 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.
# Модуль: Основа вёрстки
**Ответственность**: предоставляет общие design tokens, режимы выпуска и безопасные presentation-примитивы без правил конкретного вида документа.
**Расположение**: `.template/lib/presentation/foundation.typ`
## Публичный интерфейс
| Символ | Тип | Описание |
|--------|-----|----------|
| `design-tokens()` | конструктор dictionary | Шрифты, размеры, цвета, интервалы и стандартные поля страницы |
| `apply-foundation()` | show-функция | Применяет локальные общие text/par/page defaults к body renderer |
| `render-media-slot()` | функция | Отображает ресурс по policy `hide`, `placeholder`, `reserve-space` |
| `render-mode()` | чистая функция | Нормализует `final`, `draft`, `clean-copy` |
| `watermark-layer()` | функция | Создаёт слой watermark без изменения domain данных |
## Зависимости
| Модуль | Что использует |
|--------|----------------|
| `.template/lib/domain/document.typ` | `RenderOptions` и режим выпуска |
| `.template/lib/domain/company.typ` | Brand color и нормализованные ресурсы |
## Инварианты
- Foundation не знает, является документ отчётом, письмом, ТКП или договором.
- Общие defaults локальны body, не протекают в следующий независимый renderer.
- `render-media-slot()` никогда не вызывает `image(none)`.
- Размер placeholder и reserve-space задаётся вызывающим компонентом, чтобы не ломать профильную геометрию.
- Watermark не влияет на layout flow и счётчики.
- Внутри module scope не создаётся state, общий для нескольких документов.
## Намеренно НЕ обрабатывает
- Титульный лист отчёта.
- Шапку письма и реквизиты договора.
- Нумерацию приложений конкретного профиля.
- Загрузку файлов и JSON.
## Заметки для агента
> Typst 0.15 изменил baseline у `box` и `block`; любые правки foundation требуют visual regression всех профилей. Не переносите сюда profile-specific отступ только потому, что он встречается в двух документах: сначала проверьте, является ли это действительно общим design token.