<?php
declare(strict_types=1);
require_once __DIR__ . '/bootstrap.php';
admin_require_login();

$settings = cms_settings();
$settings['ui'] = $settings['ui'] ?? [];
$settings['socials'] = $settings['socials'] ?? [];
$settings['brand'] = $settings['brand'] ?? [];
$settings['contacts'] = $settings['contacts'] ?? [];
$notice = '';

$ui = array_merge([
    'header_layout' => 'split',
    'header_sticky' => true,
    'header_theme' => 'glass',
    'desktop_booking_label' => 'Забронировать',
    'mobile_booking_label' => 'Забронировать',
    'show_phone_desktop' => true,
    'show_brand_tagline_header' => false,
    'social_desktop_position' => 'floating',
    'booking_mobile_position' => 'header',
    'social_mobile_position' => 'bottom',
], $settings['ui']);

if (request_method() === 'POST') {
    if (!verify_csrf($_POST['csrf_token'] ?? null)) {
        $notice = '<div class="notice notice--error">Ошибка безопасности.</div>';
    } else {
        $settings['brand']['name'] = post_text('brand_name', (string)($settings['brand']['name'] ?? 'feyaframe.com'));
        $settings['brand']['tagline'] = post_text('brand_tagline', (string)($settings['brand']['tagline'] ?? ''));
        $settings['contacts']['phone_display'] = post_text('phone_display', (string)($settings['contacts']['phone_display'] ?? ''));
        $settings['contacts']['phone_raw'] = post_text('phone_raw', (string)($settings['contacts']['phone_raw'] ?? ''));
        $settings['ui']['header_layout'] = post_text('header_layout', 'split');
        $settings['ui']['header_theme'] = post_text('header_theme', 'glass');
        $settings['ui']['desktop_booking_label'] = post_text('desktop_booking_label', 'Забронировать');
        $settings['ui']['mobile_booking_label'] = post_text('mobile_booking_label', 'Забронировать');
        $settings['ui']['show_phone_desktop'] = !empty($_POST['show_phone_desktop']);
        $settings['ui']['show_brand_tagline_header'] = !empty($_POST['show_brand_tagline_header']);
        $settings['ui']['header_sticky'] = !empty($_POST['header_sticky']);
        $settings['ui']['social_desktop_position'] = post_text('social_desktop_position', 'floating');
        $settings['ui']['booking_mobile_position'] = post_text('booking_mobile_position', 'header');
        $settings['ui']['social_mobile_position'] = post_text('social_mobile_position', 'bottom');
        if (!in_array($settings['ui']['header_layout'], ['split','compact'], true)) $settings['ui']['header_layout'] = 'split';
        if (!in_array($settings['ui']['header_theme'], ['glass','light','dark'], true)) $settings['ui']['header_theme'] = 'glass';
        if (!in_array($settings['ui']['social_desktop_position'], ['inline','floating','both','hidden'], true)) $settings['ui']['social_desktop_position'] = 'floating';
        if (!in_array($settings['ui']['booking_mobile_position'], ['header','floating','both'], true)) $settings['ui']['booking_mobile_position'] = 'header';
        if (!in_array($settings['ui']['social_mobile_position'], ['bottom','header','both'], true)) $settings['ui']['social_mobile_position'] = 'bottom';
        cms_save_settings($settings);
        $ui = $settings['ui'];
        $notice = '<div class="notice">Шапка сайта обновлена.</div>';
    }
}

ob_start();
echo $notice;
?>
<div class="grid grid-2">
  <form class="grid" method="post" data-header-preview-form>
    <input type="hidden" name="csrf_token" value="<?= e(csrf_token()) ?>">
    <section class="panel grid">
      <div class="admin-page-head admin-page-head--compact">
        <div>
          <div class="badge">Header studio</div>
          <h2 style="margin:10px 0 6px">Визуальный редактор шапки сайта</h2>
          <p class="muted">Меняйте логику, стиль и тексты шапки с живым предпросмотром. После сохранения изменения сразу применятся на сайте.</p>
        </div>
      </div>
      <div class="grid grid-2">
        <label><span>Название бренда в шапке</span><input name="brand_name" value="<?= e($settings['brand']['name'] ?? '') ?>" data-preview-brand></label>
        <label><span>Телефон в шапке</span><input name="phone_display" value="<?= e($settings['contacts']['phone_display'] ?? '') ?>" data-preview-phone></label>
      </div>
      <div class="grid grid-2">
        <label><span>Телефон raw (tel:)</span><input name="phone_raw" value="<?= e($settings['contacts']['phone_raw'] ?? '') ?>"></label>
        <label><span>Подпись бренда</span><input name="brand_tagline" value="<?= e($settings['brand']['tagline'] ?? '') ?>" data-preview-tagline></label>
      </div>
      <div class="grid grid-2">
        <label><span>Текст кнопки на компьютере</span><input name="desktop_booking_label" value="<?= e($ui['desktop_booking_label'] ?? 'Забронировать') ?>" data-preview-cta></label>
        <label><span>Текст кнопки на мобильных</span><input name="mobile_booking_label" value="<?= e($ui['mobile_booking_label'] ?? 'Забронировать') ?>"></label>
      </div>
    </section>

    <section class="panel grid">
      <div class="badge">Стиль и логика</div>
      <div class="grid grid-2">
        <label><span>Стиль шапки</span>
          <select name="header_layout" data-preview-layout>
            <option value="split" <?= ($ui['header_layout'] ?? 'split') === 'split' ? 'selected' : '' ?>>классическая с действиями справа</option>
            <option value="compact" <?= ($ui['header_layout'] ?? '') === 'compact' ? 'selected' : '' ?>>компактная</option>
          </select>
        </label>
        <label><span>Визуальная тема</span>
          <select name="header_theme" data-preview-theme>
            <option value="glass" <?= ($ui['header_theme'] ?? 'glass') === 'glass' ? 'selected' : '' ?>>glass / премиальная полупрозрачная</option>
            <option value="light" <?= ($ui['header_theme'] ?? '') === 'light' ? 'selected' : '' ?>>светлая</option>
            <option value="dark" <?= ($ui['header_theme'] ?? '') === 'dark' ? 'selected' : '' ?>>тёмная</option>
          </select>
        </label>
      </div>
      <div class="grid grid-2">
        <label><span>Соцкнопки на десктопе</span>
          <select name="social_desktop_position" data-preview-socials>
            <option value="inline" <?= ($ui['social_desktop_position'] ?? '') === 'inline' ? 'selected' : '' ?>>в шапке рядом с кнопкой</option>
            <option value="floating" <?= ($ui['social_desktop_position'] ?? 'floating') === 'floating' ? 'selected' : '' ?>>плавающий блок справа снизу</option>
            <option value="both" <?= ($ui['social_desktop_position'] ?? '') === 'both' ? 'selected' : '' ?>>и в шапке, и плавающий</option>
            <option value="hidden" <?= ($ui['social_desktop_position'] ?? '') === 'hidden' ? 'selected' : '' ?>>скрыть на десктопе</option>
          </select>
        </label>
        <label><span>Кнопка бронирования на мобильных</span>
          <select name="booking_mobile_position">
            <option value="header" <?= ($ui['booking_mobile_position'] ?? 'header') === 'header' ? 'selected' : '' ?>>в шапке</option>
            <option value="floating" <?= ($ui['booking_mobile_position'] ?? '') === 'floating' ? 'selected' : '' ?>>плавающая снизу</option>
            <option value="both" <?= ($ui['booking_mobile_position'] ?? '') === 'both' ? 'selected' : '' ?>>и там, и там</option>
          </select>
        </label>
      </div>
      <div class="grid grid-2">
        <label><span>Соцкнопки на мобильных</span>
          <select name="social_mobile_position">
            <option value="bottom" <?= ($ui['social_mobile_position'] ?? 'bottom') === 'bottom' ? 'selected' : '' ?>>снизу</option>
            <option value="header" <?= ($ui['social_mobile_position'] ?? '') === 'header' ? 'selected' : '' ?>>в шапке</option>
            <option value="both" <?= ($ui['social_mobile_position'] ?? '') === 'both' ? 'selected' : '' ?>>и там, и там</option>
          </select>
        </label>
        <div class="grid">
          <label class="pill"><input type="checkbox" name="show_phone_desktop" <?= !empty($ui['show_phone_desktop']) ? 'checked' : '' ?> data-preview-phone-toggle> показывать телефон в шапке на десктопе</label>
          <label class="pill"><input type="checkbox" name="show_brand_tagline_header" <?= !empty($ui['show_brand_tagline_header']) ? 'checked' : '' ?> data-preview-tagline-toggle> показывать подпись бренда в шапке</label>
          <label class="pill"><input type="checkbox" name="header_sticky" <?= !empty($ui['header_sticky']) ? 'checked' : '' ?>> фиксировать шапку при прокрутке</label>
        </div>
      </div>
    </section>

    <div class="panel sticky-actions">
      <div class="module-actions">
        <button class="button" type="submit">Сохранить шапку</button>
        <a class="button button--ghost" href="/admin/settings.php">Открыть все настройки</a>
      </div>
      <p class="admin-helper-text">Подсказка: если хочешь полностью переставить кнопки на мобильных — это тоже настраивается здесь. Изменения применяются без ручной правки шаблонов.</p>
    </div>
  </form>

  <div class="grid">
    <section class="panel header-preview-panel">
      <div class="badge">Live preview</div>
      <div class="header-preview header-preview--<?= e($ui['header_theme'] ?? 'glass') ?>" data-header-preview>
        <div class="header-preview__bar" data-preview-bar>
          <div>
            <div class="header-preview__brand" data-preview-brand-text><?= e($settings['brand']['name'] ?? 'feyaframe.com') ?></div>
            <div class="header-preview__tagline <?= empty($ui['show_brand_tagline_header']) ? 'is-hidden' : '' ?>" data-preview-tagline-text><?= e($settings['brand']['tagline'] ?? '') ?></div>
          </div>
          <div class="header-preview__nav">О месте · Домики · Галерея · FAQ · Контакты</div>
          <div class="header-preview__actions">
            <span class="header-preview__phone <?= empty($ui['show_phone_desktop']) ? 'is-hidden' : '' ?>" data-preview-phone-text><?= e($settings['contacts']['phone_display'] ?? '+7 (999) 999-99-99') ?></span>
            <span class="header-preview__socials <?= in_array(($ui['social_desktop_position'] ?? 'floating'), ['inline','both'], true) ? '' : 'is-hidden' ?>" data-preview-social-icons>
              <i class="sw sw--wa"></i><i class="sw sw--tg"></i><i class="sw sw--ig"></i><i class="sw sw--max"></i>
            </span>
            <button class="button" type="button" data-preview-cta-text><?= e($ui['desktop_booking_label'] ?? 'Забронировать') ?></button>
          </div>
        </div>
      </div>
      <div class="header-preview-note">Это визуальный макет шапки. Он показывает, как будут выглядеть логотип, телефон, соцкнопки и CTA до сохранения.</div>
    </section>

    <section class="panel">
      <div class="badge">Быстрые переходы</div>
      <div class="grid">
        <div class="card mini-card"><strong>Навигация</strong><span class="muted">Разделы меню, ссылки и якоря.</span><a class="admin-view-link" href="/admin/settings.php">Открыть настройки</a></div>
        <div class="card mini-card"><strong>Hero и первый экран</strong><span class="muted">Текст, кнопки, фон и модули главной.</span><a class="admin-view-link" href="/admin/module.php?id=hero-home">Редактировать hero</a></div>
        <div class="card mini-card"><strong>Домики и фото</strong><span class="muted">Галереи, описания, порядок и главные фото.</span><a class="admin-view-link" href="/admin/houses.php">Открыть менеджер домиков</a></div>
      </div>
    </section>
  </div>
</div>
<?php
admin_layout('Визуальный редактор шапки', ob_get_clean(), 'header');
