Files
marketplaces/docs/platform/04-layout-engine.md
sdarbinyan 10251f2fc6
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs
2026-07-05 04:23:47 +04:00

68 lines
2.4 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.
# 04. Layout Engine
## Назначение
Layout Engine отвечает за композицию страницы из секций по данным конфигурации и управляет только структурой и позиционированием, без доменной бизнес-логики.
## Поведение системы
- Engine читает page.sections.
- Секции сортируются по order.
- Для каждой секции применяется layout-стратегия.
- Виджеты размещаются внутри секции согласно layout-параметрам.
## Обязательные свойства JSON
- section.id
- section.type
- section.order
- section.widgets
## Опциональные свойства JSON
- section.layout.strategy
- section.layout.columns
- section.layout.gap
- section.layout.align
- section.visibility.desktop/tablet/mobile
- section.featureFlag
## Строгие правила
- Layout определяется только конфигурацией.
- Виджет не может переопределять секционный grid/columns на уровне страницы.
- Если section.visible=false, секция не рендерится.
- Секция должна рендериться в стандартном каркасе: section + page container.
## Пример JSON секции
```json
{
"id": "section-featured-products",
"type": "product-collection",
"order": 2,
"layout": {
"strategy": "grid",
"columns": 4,
"gap": "16px",
"align": "stretch"
},
"visibility": {
"desktop": true,
"tablet": true,
"mobile": true
},
"widgets": [
{
"id": "widget-featured",
"type": "product-carousel",
"version": "1.0.0"
}
]
}
```
## Ответственность Frontend
- Корректно применять сортировку и layout-параметры.
- Гарантировать единые отступы и контейнеры секций.
- Безопасно деградировать при частично некорректном layout.
## Ответственность Backend
- Отдавать корректные layout-атрибуты в bootstrap.
- Не смешивать контентные данные с layout-инструкциями.
- Поддерживать непротиворечивость секций внутри страницы.