5.0 KiB
5.0 KiB
Модуль: Компоненты
Ответственность: содержит проверенные переиспользуемые визуальные примитивы, которые не принадлежат одному профилю документа.
Расположение: .template/lib/presentation/components.typ
Публичный интерфейс
| Символ | Тип | Описание |
|---|---|---|
corp-table() |
функция | Корпоративная таблица со сложной шапкой, spans и продолжениями |
formula() |
функция | Блочная формула, совместимая с профильной нумерацией |
info-block() |
функция | Цветная информационная плашка для замечаний и пояснений |
signature-block() |
функция | Один подписант с media policy |
multi-party-signing() |
функция | Подписание несколькими сторонами |
approval-block() |
функция | Блок утверждения отчёта |
company-footer() |
функция | Контакты и реквизиты организации в footer |
letter-header() |
функция | Общая геометрия исходящего письма и ТКП |
attachment-list() |
функция | Перечень приложений к письму или ТКП |
requisites-table() |
функция | Реквизиты одной или нескольких сторон |
Зависимости
| Модуль | Что использует |
|---|---|
.template/lib/domain/company.typ |
Нормализованные реквизиты и brand |
.template/lib/domain/parties.typ |
Signer, Approval и Party |
.template/lib/domain/attachments.typ |
AttachmentSet для перечней |
.template/lib/presentation/foundation.typ |
Design tokens и render-media-slot() |
.template/lib/shared/numbering.typ |
Общие numbering functions |
Инварианты
- Компонент не читает JSON и не конструирует пользовательский path.
- Компонент не определяет global page settings.
corp-tableсохраняет поддержку auto/multirow headers, rowspan/colspan, repeat header и continuation label.corp-table.list-layoutлокально задаёт геометрию списков в ячейках;autoсохраняет оформление документа, а параметры конкретного списка имеют приоритет.row_breakable: trueдействительно передаётся вtable.cell(breakable:); режим проверяется fixture с одной строкой, которая продолжается на трёх страницах.- Центрирование блока
corp-tableне наследуется текстом ячеек: шапка по умолчанию центрирована, тело выровнено влево; явныйalignимеет приоритет. - Блок подписи сохраняет эталонную геометрию для обычных реквизитов и переключается на ограниченные равные боковые колонки при длинных наименованиях.
- Письмо и ТКП используют один эталонный footer; на страницах приложений footer скрывается.
- Обязательный positional
bodyидёт первым в функциях, используемых через.with, если это требуется Typst. - Компонент принимает domain-значение и layout options отдельно.
- Любая работа с изображением проходит через media slot или проверку
resource != none. - Компоненты не импортируют profile renderers.
Намеренно НЕ обрабатывает
- Полный жизненный цикл документа.
- Profile-specific обязательность полей.
- Выбор компании по id.
- Сброс глобальных counters между главами.
Заметки для агента
corp_tableсчитается особо хрупким: не переписывайте рекурсивное определение header rows без unit и visual fixtures на rowspan/colspan. Общность компонента доказывается использованием хотя бы в двух профилях; иначе оставьте его внутри конкретного renderer. Layout offsets изображений должны быть параметрами компонента или design tokens, но не данными Signer.