К содержанию

Навигация

Композиция интерфейса

Docara собирает интерфейс как LEGO на трёх уровнях: page Layout задаёт регионы, Section наполняет region разрешёнными slots/blocks, а Smart/View рисует конечный элемент. Это конфигурация из принятых registry descriptors, а не второй шаблонный движок.

Атлас проекта

  • docara.brandingbindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.navigationbindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.outlinebindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.outline.

  • content.documentblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • content.iconblockrejected

    Владелец: simai/docara; namespace: content; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: add_semantic_icon.

  • content.markdownblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • content.smartblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • docara.alertblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: report_status.

  • docara.backlinksblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_pages_linking_here.

  • docara.badgeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: label_status.

  • docara.bannerblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_bounded_page_announcement.

  • docara.buttonblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: link_as_action.

  • docara.cardblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: content.embeddable.

  • docara.codeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: include_external_code.

  • docara.detailsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: disclose_optional_content.

  • docara.diagramblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_declarative_diagram.

  • docara.downloadblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: download_file.

  • docara.embedblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: embed_external_content.

  • docara.exampleblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_live_example_and_source.

  • docara.figureblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_illustration_with_caption.

  • docara.gridblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: container.

    Capabilities: content.embeddable.

    Container: allowed_children=[docara.card]; slots=[]; min_children=1; max_children=12; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.heroblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: explain_product_value, primary_landing_action.

  • docara.htmlblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_isolated_trusted_html.

  • docara.iconblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: add_semantic_icon.

  • docara.kbdblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: name_keyboard_input.

  • docara.logosblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_ecosystem_members, show_trust_signals.

  • docara.mathblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_tex_formula.

  • docara.mediablocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: pair_content_with_media.

  • docara.stepsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: content.embeddable.

  • docara.surfaceblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: container.

    Capabilities: present_content_surface.

    Container: allowed_children=[]; slots=[content]; min_children=1; max_children=64; order=declared; max_depth=3, depth_semantics=relative_subtree_root_level_1.

  • docara.tabsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: switch_between_equivalent_views.

  • docara.treeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_file_structure.

  • native.codeblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: show_code.

  • native.code.enhancedblockrejected

    Владелец: simai/docara; namespace: native; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: enhance_code.

  • native.footnotes_and_sourcesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: cite_source_with_footnote.

  • native.headings_and_textblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: structure_prose.

  • native.links_and_imagesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: illustrate_content, link_content.

  • native.lists_and_quotesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: list_items, quote_content.

  • native.tableblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: compare_small_datasets.

  • project.footer-smartblockproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.

  • shell.elementblocksupported

    Владелец: simai/docara; namespace: shell; origin: docara; provider: docara.builtin; authoring: configuration.

  • shell.smartblocksupported

    Владелец: simai/docara; namespace: shell; origin: docara; provider: docara.builtin; authoring: configuration.

  • ui.badgeblockproposal

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: label_status.

  • ui.dataviewblockproposal

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: present_structured_data.

  • ui.tabsblockrejected

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: switch_content_panels.

  • docara.docslayoutsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Container: allowed_children=[section]; slots=[header, sidebar, main, outline, footer]; min_children=1; max_children=7; order=layout_regions; max_depth=3, depth_semantics=relative_subtree_root_level_1.

  • docara.branding:compactpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.branding:defaultpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.branding:logopresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.branding:textpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.navigation:compactpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.navigation:defaultpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.navigation:headerpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.navigation:treepresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.outline:defaultpresetsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.outline.

  • ui.checkbox:defaultpresetsupported

    Владелец: simai/bx-simai.main; namespace: ui; origin: framework; provider: framework.lock; authoring: configuration.

    Capabilities: smart.preset.

  • ui.dropdown:defaultpresetsupported

    Владелец: simai/bx-simai.main; namespace: ui; origin: framework; provider: framework.lock; authoring: configuration.

    Capabilities: smart.preset.

  • ui.input:defaultpresetsupported

    Владелец: simai/bx-simai.main; namespace: ui; origin: framework; provider: framework.lock; authoring: configuration.

    Capabilities: smart.preset.

  • ui.list-item:defaultpresetsupported

    Владелец: simai/bx-simai.main; namespace: ui; origin: framework; provider: framework.lock; authoring: configuration.

    Capabilities: smart.preset.

  • docara.articlesectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: content.document.

    Container: allowed_children=[content.document, content.markdown, content.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.headersectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.brand, shell.primary-navigation.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.navigationsectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.secondary-navigation.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.outlinesectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.outline.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.shellsectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.brand, shell.content-after, shell.content-before, shell.footer, shell.outline, shell.primary-navigation, shell.secondary-navigation.

    Container: allowed_children=[shell.element, shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • project.footersectionproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.

    Capabilities: shell.footer.

    Container: allowed_children=[project.footer-smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • layout.docara.docsviewsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: configuration.

  • section.docara.articleviewsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: configuration.

  • section.docara.headerviewsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: configuration.

  • section.docara.shellviewsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: configuration.

  • section.project.footerviewproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.

Atlas строится командой docara atlas --json только из admitted DesignRegistry, SmartRegistry и BindingRegistry. Его fingerprint входит в build-owned projection; ручного списка компонентов здесь нет.

Композиционная модель

Три уровня

  1. Layout владеет геометрией страницы и именами regions.
  2. Section допускается в совместимый region и раскладывает Blocks по slots.
  3. Block/Smart/View получает проверенные данные и создаёт конечный render artifact через общие registry/Gateway.

Content Markdown компилируется отдельно в typed in-memory Document IR. Длина ::: fence не выбирает уровень архитектуры.

Проверенные настройки и прочитанный Markdown превращаются в общий Recipe. Стандартный сборщик SIMAI Framework создаёт Composition Document — готовое дерево страницы. Docara восстанавливает из него вход своих рендереров и создаёт HTML. Авторские файлы при этом не переписываются.

Реальная insertion chain

Шаг Реальный зарегистрированный файл Ответственность
Layout resources/layouts/docara.docs.json regions, required flags, container limits
Layout View Tree resources/views/layout.docara.docs.json безопасные element/region nodes
Region descriptor-owned header, sidebar, main, outline, footer insertion point, не компонент ID branch
Section resources/sections/docara.article.json, docara.header.json, docara.navigation.json, docara.outline.json, docara.shell.json compatible regions и allowed blocks
Section View resources/views/section.docara.article.json, section.docara.header.json, section.docara.shell.json admitted slots
Block resources/blocks/content.document.json, content.markdown.json, content.smart.json, shell.element.json, shell.smart.json payload schema/capability
Smart package, Framework или project artifact props/views/presets/slots/assets/hydration
View registered view/preset/template конечный HTML/assets/provenance
Surface presentation src/PortableSite/SurfacePresentation.php единая admitted outer geometry для Surface, Hero, Showcase и Promo; semantic content остаётся у компонента
Code
Markdown owner
  -> typed Document IR
  -> Layout docara.docs
  -> region main
  -> Section docara.article
  -> slot content
  -> Block content.document
  -> generated Composition Recipe
  -> Framework resolveRecipe
  -> Composition Document
  -> Docara renderer projection
  -> SmartComponentGateway when a Smart leaf is present
  -> registered View
  -> LayoutComposer
  -> PageBuilder result

Кто проверяет совместимость

Atlas публикует для каждого container allowed_children, slots, min_children, max_children, order, max_depth и machine-readable depth_semantics. Значение relative_subtree_root_level_1 означает, что каждый container считает собственный root уровнем 1. Registry отклоняет unknown View Tree kind/tag/attribute/utility/region/slot до registration. Project config выбирает только admitted IDs и не содержит class/callback/PHP/template path.

  • content.documentblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • content.iconblockrejected

    Владелец: simai/docara; namespace: content; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: add_semantic_icon.

  • content.markdownblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • content.smartblocksupported

    Владелец: simai/docara; namespace: content; origin: docara; provider: docara.builtin; authoring: configuration.

  • docara.alertblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: report_status.

  • docara.backlinksblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_pages_linking_here.

  • docara.badgeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: label_status.

  • docara.bannerblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_bounded_page_announcement.

  • docara.buttonblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: link_as_action.

  • docara.cardblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: content.embeddable.

  • docara.codeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: include_external_code.

  • docara.detailsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: disclose_optional_content.

  • docara.diagramblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_declarative_diagram.

  • docara.downloadblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: download_file.

  • docara.embedblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: embed_external_content.

  • docara.exampleblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_live_example_and_source.

  • docara.figureblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_illustration_with_caption.

  • docara.gridblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: container.

    Capabilities: content.embeddable.

    Container: allowed_children=[docara.card]; slots=[]; min_children=1; max_children=12; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.heroblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: explain_product_value, primary_landing_action.

  • docara.htmlblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_isolated_trusted_html.

  • docara.iconblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: add_semantic_icon.

  • docara.kbdblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.inline_definition; authoring: inline.

    Capabilities: name_keyboard_input.

  • docara.logosblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_ecosystem_members, show_trust_signals.

  • docara.mathblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: render_tex_formula.

  • docara.mediablocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: pair_content_with_media.

  • docara.stepsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: content.embeddable.

  • docara.surfaceblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: container.

    Capabilities: present_content_surface.

    Container: allowed_children=[]; slots=[content]; min_children=1; max_children=64; order=declared; max_depth=3, depth_semantics=relative_subtree_root_level_1.

  • docara.tabsblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: switch_between_equivalent_views.

  • docara.treeblocksupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: component.catalog.typed_definition; authoring: block.

    Capabilities: show_file_structure.

  • native.codeblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: show_code.

  • native.code.enhancedblockrejected

    Владелец: simai/docara; namespace: native; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: enhance_code.

  • native.footnotes_and_sourcesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: cite_source_with_footnote.

  • native.headings_and_textblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: structure_prose.

  • native.links_and_imagesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: illustrate_content, link_content.

  • native.lists_and_quotesblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: list_items, quote_content.

  • native.tableblocksupported

    Владелец: simai/docara; namespace: native; origin: native; provider: component.catalog.portable_markdown_profile; authoring: markdown.

    Capabilities: compare_small_datasets.

  • project.footer-smartblockproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.

  • shell.elementblocksupported

    Владелец: simai/docara; namespace: shell; origin: docara; provider: docara.builtin; authoring: configuration.

  • shell.smartblocksupported

    Владелец: simai/docara; namespace: shell; origin: docara; provider: docara.builtin; authoring: configuration.

  • ui.badgeblockproposal

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: label_status.

  • ui.dataviewblockproposal

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: present_structured_data.

  • ui.tabsblockrejected

    Владелец: simai/docara; namespace: ui; origin: requirement; provider: component.catalog.product_requirement; authoring: block.

    Capabilities: switch_content_panels.

  • docara.docslayoutsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Container: allowed_children=[section]; slots=[header, sidebar, main, outline, footer]; min_children=1; max_children=7; order=layout_regions; max_depth=3, depth_semantics=relative_subtree_root_level_1.

  • docara.articlesectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: content.document.

    Container: allowed_children=[content.document, content.markdown, content.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.headersectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.brand, shell.primary-navigation.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.navigationsectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.secondary-navigation.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.outlinesectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.outline.

    Container: allowed_children=[shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • docara.shellsectionsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin; authoring: container.

    Capabilities: shell.brand, shell.content-after, shell.content-before, shell.footer, shell.outline, shell.primary-navigation, shell.secondary-navigation.

    Container: allowed_children=[shell.element, shell.smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • project.footersectionproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.

    Capabilities: shell.footer.

    Container: allowed_children=[project.footer-smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

Общая presentation не меняет semantic owner

Surface — authored content container. Hero, Showcase и Promo — отдельные typed semantic definitions. Их Atlas ownership, states, props и provenance берутся из реальных admitted definitions, но outer width/container/background frame собирает одна immutable Surface presentation. Оборачивать эти semantic blocks в Surface нельзя; page/head и границы region по-прежнему принадлежат LayoutComposer.

Матрица интерфейса

Один publisher shell обслуживает docs, site и landing presets. Варианты меняют зарегистрированное presentation, а не renderer path.

Поверхность Effective owner Capability / presentation Можно заменить проектом
Brand docara.brand / branding binding full, compact, logo, text через admitted branding capability
Header navigation docara.navigation header да
Sidebar tree docara.navigation tree да
Mobile/compact navigation docara.navigation compact да
Outline / TOC docara.toc outline binding да
Search registered search Smart leaf shell search capability да
Breadcrumbs registered breadcrumbs Smart leaf reading context да
Previous/next pager registered pager Smart leaf reading context да
Reader preferences docara.preferences side panel да
Footer registered/project shell Smart footer capability да
Outer document, <head>, canonical, metadata, asset ledger PageBuilder/application application-owned нет

header, tree и compact — три presentation одного docara.navigation. BindingRegistry выбирает их по capability и provider descriptor; Gateway, renderer, LayoutComposer и PageBuilder остаются теми же.

  • docara.brandingbindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.brand.

  • docara.navigationbindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.primary-navigation, shell.secondary-navigation.

  • docara.outlinebindingsupported

    Владелец: simai/docara; namespace: docara; origin: docara; provider: docara.builtin-bindings; authoring: configuration.

    Capabilities: shell.outline.

Граница page/head

Project contribution не может заменить canonical URL, locale metadata, build receipt, search/navigation provenance или произвольный <head> fragment. Эти поверхности остаются application-owned, чтобы static verification и full/single parity были проверяемыми.

Вклад проекта в оболочку

Project-owned shell contribution — это data-only artifact в разрешённом design//smart/ root и ссылка на admitted binding ID. Он не требует изменения engine src/.

Порядок подключения

  1. Выберите собственный namespace в docara.json.
  2. Создайте artifact через hash-bound scaffold dry-run/apply.
  3. Проверьте manifest/schema/namespace/capabilities.
  4. Убедитесь через docara atlas --json, что owner=project и support=project.
  5. Выполните isolated preview на реальной странице.
  6. Только затем соберите full output.
  • project.footer-smartblockproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.

  • project.footersectionproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.

    Capabilities: shell.footer.

    Container: allowed_children=[project.footer-smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.

  • project.footer-linkssmartproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: block.

    Capabilities: smart.render.

  • project.install-buildersmartproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.

    Capabilities: smart.children, smart.hydration, smart.render.

    Container: allowed_children=[ui.checkbox, ui.dropdown, ui.input]; slots=[controls]; min_children=1; max_children=64; order=declared; max_depth=8, depth_semantics=relative_subtree_root_level_1.

  • project.product-configuratorsmartproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.

    Capabilities: content.embeddable, smart.children, smart.hydration, smart.render.

    Container: allowed_children=[ui.checkbox, ui.dropdown]; slots=[controls]; min_children=1; max_children=64; order=declared; max_depth=8, depth_semantics=relative_subtree_root_level_1.

  • section.project.footerviewproject

    Владелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.

Fail-closed границы

  • project ID не затеняет package/Framework ID;
  • binding-owned props нельзя переопределить config-ом;
  • capability/region/slot collision отклоняется;
  • traversal, symlink, hardlink, case collision и arbitrary path отклоняются;
  • shell contribution не меняет outer page/head.

Пример footer из принятого Goal B показывает shell-role, а install builder и product configurator — content-role. Все три проходят существующие registries и Gateway.

Просмотр по пути сборки

Preview не имеет собственного renderer. PreviewKernel вызывает те же parser/compiler, DesignRegistry, SmartComponentGateway, renderer, asset collector, LayoutComposer и PageBuilder; output помечен preview-purpose и production verifier его не принимает.

Полная композиция

Docs preset

Landing preset

Команда docara preview smart|region|layout|page публикует isolated tree в .docara-preview/output/<target>/. verify-static обязан вернуть PREVIEW_BUILD_PURPOSE_FORBIDDEN; для production нужен обычный full build.

Свои макеты и блоки проекта

Проект может добавить свой Layout, Section, Block и безопасный View Tree в каталог design/. Менять движок для этого не нужно.

Цепочка проекта

Code
Layout → Region → Section → Slot → Block → Smart или безопасный element

Все определения читает один DesignRegistry. Встроенные ID принадлежат пакету, project ID — namespace из docara.json:

JSON
{"smart":{"namespace":"project"}}

Project artifact должен начинаться с project.. Он не может заменить docara.*, content.*, shell.* или ui.*. Дубликаты, symlink, выход из корня и неизвестные определения останавливают сборку.

Команда docara atlas --json показывает effective Layout, View, Section, Block, Smart, binding и preset из принятых registries. Atlas — только детерминированная проекция: редактировать его как источник регистрации нельзя. Для контейнеров он также показывает допустимые children, slots, порядок, количество и максимальную глубину.

Привязки данных оболочки

Блок shell.smart может выбрать только зарегистрированную привязку bind. Привязка соединяет данные страницы с уже зарегистрированным Smart-компонентом; она не является PHP callback или путём к шаблону. Встроенный реестр содержит:

ID Возможности Smart
docara.branding shell.brand docara.brand
docara.navigation shell.primary-navigation, shell.secondary-navigation docara.navigation
docara.outline shell.outline docara.toc

Проверьте effective descriptor и его происхождение командами:

Bash
docara list binding
docara inspect binding docara.navigation
docara schema binding

Layout region и Section объявляют совместимые capabilities. Сборка до render отклонит неизвестную привязку, несовместимую capability, попытку передать binding-owned props или подменить package ID. Project JSON не может задавать class, callback, PHP/template path или произвольный filesystem path.

Один docara.navigation поддерживает presentations header, tree и compact. Вызов остаётся тем же shell.smart, Gateway и PageBuilder; меняется только зарегистрированный view. Если view явно не указан, сохраняется совместимое поведение по умолчанию.

Starter содержит небольшой footer-пример: project Section и Block допускают только зарегистрированный project.footer-links в region footer. Ни config, ни Markdown не выбирают PHP/template path; component, View и assets разрешает обычный project Smart provider.

Файлы

Code
design/
├── layouts/project.docs.json
├── sections/project.article.json
├── blocks/project.document.json
└── views/
    ├── layout.project.docs.json
    └── section.project.article.json

Layout задаёт безопасный View Tree, regions, их defaults и место документа:

JSON
{
  "schema": "docara.layout.v1",
  "key": "project.docs",
  "default": false,
  "view": "layout.project.docs",
  "configuration": {
    "container": {"max": 7},
    "scrollbar": {"preset": "overlay"},
    "content": {"gap": 0}
  },
  "document": {
    "region": "stage",
    "section": "project.article",
    "slot": "content",
    "block": "project.document"
  },
  "regions": {
    "stage": {
      "required": true,
      "default_enabled": true,
      "default_sections": [],
      "section_types": ["content"]
    }
  },
  "assets": []
}

Section объявляет совместимые regions, slots и blocks. Block выбирает один из уже зарегистрированных безопасных renderer kinds. JSON не принимает PHP, template path, callback, произвольный HTML или CSS.

Чтобы выбрать project layout, сбросьте унаследованную ветку:

JSON
{
  "layout": {
    "$reset": true,
    "key": "project.docs"
  }
}

Предпросмотр

Preview использует обычный PortableSiteBuilder, PageBuilder, registries, Smart gateway, renderer и layout composer. Результат изолирован в .docara-preview/ и не считается production build receipt. Cache receipt имеет build.purpose=preview, поэтому verify-static завершится ошибкой PREVIEW_BUILD_PURPOSE_FORBIDDEN. Это защита самого receipt, а не соседний служебный marker.

Bash
docara preview page --page=/ru/components/alert/
docara preview layout --page=/ru/components/alert/
docara preview region --page=/ru/components/alert/ --selector=main
docara preview smart --page=/ru/components/alert/ --selector=ui.alert

Для автоматизации добавьте --json. Команда watch следит за effective input chain выбранного route, locale UI-copy и реально разрешёнными layout, section, block, Smart, template и asset dependencies из package/project providers:

Bash
docara preview region --page=/ru/components/alert/ --selector=main --watch

artifact.html содержит точный выбранный fragment, index.html — ту же production page для проверки в браузере, preview.json — assets, provenance, dependencies и hashes. В том же preview-root публикуются нужные local CSS, JS, Framework и content assets, поэтому открывайте index.html через HTTP именно из .docara-preview/output/<target>/. Production receipt и прочие HTML routes туда не копируются. Normal build_* preview не перезаписывает.

Изменение нерелевантного project Smart не пересобирает выбранный target. Изменение, появление или удаление файла внутри реально выбранного project или package artifact вызывает одну single-page пересборку. target_only=true выводится из scope и результата пересборки, а не задаётся константой.

Проверка

Bash
php vendor/bin/phpunit --filter 'DesignRegistryTest|ProjectDesignCompositionTest|PreviewKernelTest'
cd docs/site
php ../../docara build production
php ../../docara verify-static build_production

Не добавляйте ID проекта в engine PHP или schema enum. Если нужен новый исполняемый renderer/API, это отдельное расширение платформы, а не project JSON.

См. также

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы