<?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\ViewModel\LucideIcons;
use Hyva\Theme\ViewModel\StoreConfig;
use Magento\Framework\Escaper;
use Magento\GiftMessage\Block\Cart\GiftOptions;
use Magento\Framework\View\Helper\SecureHtmlRenderer;
use Hyva\Theme\Model\ViewModelRegistry;
use Hyva\Theme\ViewModel\HeroiconsOutline;

/** @var Escaper $escaper */
/** @var GiftOptions $block */
/** @var SecureHtmlRenderer $secureRenderer */
/** @var ViewModelRegistry $viewModels */
/** @var HeroiconsOutline $heroicons */

/** @var LucideIcons $lucideIcons */
$lucideIcons = $viewModels->require(LucideIcons::class);

/** @var StoreConfig $storeConfigViewModel */
$storeConfigViewModel = $viewModels->require(StoreConfig::class);

$isItemLevelGiftOptionsEnabled = $storeConfigViewModel->getStoreConfig('sales/gift_options/allow_items');

// Gift Wrapping is a feature for Adobe Commerce Only. On Magento Open Source this config value will always return null.
$isItemLevelGiftWrappingEnabled = $storeConfigViewModel->getStoreConfig('sales/gift_options/wrapping_allow_items');

if (!$isItemLevelGiftOptionsEnabled && !$isItemLevelGiftWrappingEnabled) {
    return '';
}
?>
<div
    x-data="initGiftItemOptions"
    x-bind="eventListeners"
    data-item-id="<?= (int) $block->getItem()->getId() ?>"
>
    <button
        type="button"
        class="btn p-2"
        aria-label="<?= $escaper->escapeHtml(__('Add Gift Options for Individual Items')) ?>"
        @click="openDialog"
    >
        <span class="relative">
            <span
                class="absolute -top-2 -right-2 rounded-full p-1 bg-primary text-on-primary"
                x-show="savedFormMessage.message"
                x-cloak
            >
                <?= $lucideIcons->mailHtml('', 12, 12, ['aria-hidden' => 'true']) ?>
            </span>
            <?= $lucideIcons->giftHtml('', 20, 20, ['aria-hidden' => 'true']) ?>
        </span>
    </button>

    <dialog
        class="w-xl"
        x-show="formBlockVisibility"
        x-transition
        x-htmldialog="closeDialog"
    >
        <p class="text-xl mb-4">
            <strong><?= $escaper->escapeHtml(__('Add Gift Options')) ?></strong>:
            <span><?= $escaper->escapeHtml($block->getItem()->getName()) ?></span>
        </p>
        <?= $block->getChildHtml('gift-options-body') ?>
    </dialog>
</div>
