Files
2026-10-09 04:24:38 +00:00

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.