@use('Core\Localization\Locales') @use('Layout\Blocks\BlockCatalog') @use('Layout\Blocks\BlockType') @push('scripts') @vite('src/modules/Portal/Home/Assets/js/home-editor.js') @endpush {{-- Editor da home (P5.S2.1 — emenda ADR-016) — o módulo preenche **só** o `
` do shell. - A lista é o **documento**: a ordem dos itens é a ordem no portal e “ocultar” preserva a posição. - Mover/ocultar/remover/salvar são **botões de submit** do mesmo `PUT /cms/home` (funcionam sem JS; o caminho de teclado é o mesmo, WCAG 2.2 SC 2.5.7 — não há arrastar). - Cada seção tem um `` **nativo** com os campos (sem `
` aninhado: os campos pertencem ao formulário de fora). Sem JS o CSS (`@media (scripting: none)`) mantém os campos visíveis no fluxo e os botões continuam valendo. - `novalidate`: campos obrigatórios dentro de diálogos fechados não podem bloquear o submit do navegador (o controle inválido ficaria inalcançável). A validação é **server-side**, por schema, com resumo `role="alert"` e erro no campo. - A prévia estrutural abaixo é do **rascunho salvo**; a versão visual no shell real fica na rota autenticada `home.preview` (uma por locale) e publicar exige `home.aprovar` (S2.2). --}} @if (session('status')) {{ session('status') }} @endif

{{ __('home::cms.intro') }}

{{-- Adicionar é um GET: escolhe o tipo e recarrega a tela com a seção **nova** (nada é persistido). --}} {{ __('home::cms.add') }}
@csrf @method('put')

{{ __('home::cms.sections') }}

{{ __('home::cms.sections_hint') }}

@if ($sections === []) @else
    @foreach ($sections as $index => $section) @php $prefix = 'sections['.$index.']'; $errorPrefix = 'sections.'.$index.'.props'; $idPrefix = 'home-section-'.$section->id; $dialogId = $idPrefix.'-dialog'; @endphp
  1. {{ $index + 1 }}. {{ __($section->type->label()) }} @if ($section->hidden) {{ __('home::cms.hidden') }} @else {{ __('home::cms.visible') }} @endif

    {{ $summaries[$section->id] ?? __('home::cms.untitled') }}

    @if (! $loop->first) @endif @if (! $loop->last) @endif

    {{ __('home::cms.remove_help') }}

    {{ __('home::cms.edit') }} — {{ __($section->type->label()) }}

    @include('home::cms.partials.home-block-fields', [ 'definition' => BlockCatalog::get($section->type), 'props' => $section->props, 'prefix' => $prefix.'[props]', 'errorPrefix' => $errorPrefix, 'idPrefix' => $idPrefix, ])
  2. @endforeach
@endif
@if ($pending !== null) @php $pendingId = 'home-section-novo'; $pendingDialogId = $pendingId.'-dialog'; @endphp

{{ __('home::cms.pending_title') }}

{{ __('home::cms.pending_hint') }}

{{ __('home::cms.pending_cancel') }}

{{ __('home::cms.pending_title') }} — {{ __($pending['definition']->type->label()) }}

@include('home::cms.partials.home-block-fields', [ 'definition' => $pending['definition'], 'props' => $pending['props'], 'prefix' => 'novo[props]', 'errorPrefix' => 'novo.props', 'idPrefix' => $pendingId, ])
@endif
{{ __('home::cms.save') }}

{{ __('home::cms.preview_auth') }}

{{ __('home::cms.preview_auth_hint') }}

@if ($canPublish)

{{ __('home::cms.publish_title') }}

{{ __('home::cms.publish_hint') }}

{{-- Formulário próprio (sem aninhar `forms`): publica o rascunho **salvo**. --}}
@csrf {{ __('home::cms.publish') }}
@endif

{{ __('home::cms.preview') }}

{{ __('home::cms.preview_hint') }}

@if (! $hasDraft)

{{ __('home::cms.preview_none') }}

@elseif ($preview === null)

{{ __('home::cms.preview_invalid') }}

@elseif ($preview->sections === [])

{{ __('home::cms.preview_empty') }}

@else
    @foreach ($preview->sections as $index => $section)
  1. {{ __($section->type->label()) }} {{ $index + 1 }}. {{ $summaries[$section->id] ?? __('home::cms.untitled') }} @if ($section->hidden) {{ __('home::cms.hidden') }} @endif
  2. @endforeach
@endif