<?php
/**
 * Hyvä Themes - https://hyva.io
 * Copyright © Hyvä Themes. All rights reserved.
 * See COPYING.txt for license details.
 */

declare(strict_types=1);

use Hyva\Theme\Model\ViewModelRegistry;
use Hyva\Theme\ViewModel\HyvaCsp;
use Hyva\Theme\ViewModel\Store;
use Hyva\Theme\ViewModel\StoreSwitcher;
use Magento\Framework\Escaper;
use Magento\Framework\View\Element\Template;
use Magento\Store\ViewModel\SwitcherUrlProvider;

// phpcs:disable Generic.Files.LineLength.TooLong

/** @var Template $block */
/** @var Escaper $escaper */
/** @var HyvaCsp $hyvaCsp */
/** @var ViewModelRegistry $viewModels */

/** @var SwitcherUrlProvider $switcherUrlProvider */
$switcherUrlProvider = $viewModels->require(SwitcherUrlProvider::class);

/** @var Store $storeViewModel */
$storeViewModel = $viewModels->require(Store::class);

/** @var StoreSwitcher $storeSwitcherViewModel */
$storeSwitcherViewModel = $viewModels->require(StoreSwitcher::class);

$currentStore = $storeSwitcherViewModel->getStore();
?>
<?php if (count($storeSwitcherViewModel->getStores()) > 1): ?>
    <div x-data="initLanguageSwitcher"
         class="w-full sm:w-1/2 md:w-full"
    >
        <div class="text-md leading-5 font-semibold tracking-wider uppercase mb-4">
            <?= $escaper->escapeHtml(__('Language')) ?>
        </div>
        <div class="relative inline-block text-left">
            <div>
                <button @click.prevent="toggleOpen"
                        @click.outside="setOpenFalse"
                        @keydown.window.escape="setOpenFalse"
                        type="button"
                        class="form-select w-full pl-4"
                        aria-haspopup="true"
                        aria-expanded="true"
                >
                    <?= $escaper->escapeHtml($currentStore->getName()) ?>
                </button>
            </div>
            <nav x-cloak
                 x-show="open"
                 class="absolute right-0 top-full z-20 w-56 py-2 mt-1 overflow-auto origin-top-left rounded-sm shadow-lg sm:w-48 lg:mt-3 bg-white">
                <div class="my-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu">
                    <?php foreach ($storeSwitcherViewModel->getStores() as $lang): ?>
                        <?php if ($lang->getId() != $storeViewModel->getStoreId()): ?>
                            <a href="<?= $escaper->escapeUrl($switcherUrlProvider->getTargetStoreRedirectUrl($lang)) ?>"
                               class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100"
                            >
                                <?= $escaper->escapeHtml($lang->getName()) ?>
                            </a>
                        <?php endif; ?>
                    <?php endforeach; ?>
                </div>
            </nav>
        </div>
    </div>
    <script>
        function initLanguageSwitcher() {
            return hyva.createBooleanObject('open')
        }
        window.addEventListener('alpine:init', () => Alpine.data('initLanguageSwitcher', initLanguageSwitcher), {once: true})
    </script>
    <?php $hyvaCsp->registerInlineScript() ?>
<?php endif; ?>
