<link rel="stylesheet" href="/admin/assets/css/pages/product-moderation.css?v=2.0.0">
<link rel="stylesheet" href="/admin/assets/css/pages/product-catalog-console.css?v=1.3.4">

<%
  const safeProductId = String(product.id || '');
  const productCode = product.number
    ? `PRD-${product.number}`
    : safeProductId.slice(-8).toUpperCase();
  const isVariantProduct = product.presentation.variant;
  const attributes = Array.isArray(product.attributes) ? product.attributes : [];
  const variants = Array.isArray(product.variants) ? product.variants : [];
  const images = Array.isArray(product.images) ? product.images.filter(Boolean) : [];
  const primaryImage = product.primaryImage || images[0] || '';
  const presentAttributes = attributes.filter((attribute) => (
    String(attribute.name || '').trim()
    || (attribute.values || []).some((value) => (
      String(value.name || '').trim() || String(value.colorCode || '').trim()
    ))
  ));
  const finiteNumber = (value, fallback = 0) => {
    const number = Number(value);
    return Number.isFinite(number) ? number : fallback;
  };
  const formatNumber = (value) => finiteNumber(value).toLocaleString(
    lang === 'ar' ? 'ar-SA' : 'en-US',
  );
  const money = (value) => `${formatNumber(value)} ${product.currency}`;
  const discountLabel = (() => {
    if (product.presentation.discountNone) {
      return product.discount?.typeText || '—';
    }
    if (product.presentation.discountPercentage) {
      return `${formatNumber(product.discount.value)}%`;
    }
    return money(product.discount.value);
  })();
  const attributeIndex = new Map();
  attributes.forEach((attribute) => {
    const values = new Map();
    (attribute.values || []).forEach((value) => {
      values.set(String(value.id || ''), value);
    });
    attributeIndex.set(String(attribute.id || ''), {
      attribute,
      values,
    });
  });
  const selectedOptionsFor = (variant) => Object.entries(
    variant.selectedValues || {},
  ).map(([attributeId, valueId]) => {
    const catalogueEntry = attributeIndex.get(String(attributeId));
    const value = catalogueEntry?.values.get(String(valueId));
    if (!catalogueEntry || !value) return null;
    return {
      attribute: catalogueEntry.attribute,
      value,
    };
  }).filter(Boolean);
  const variantFinalPrices = variants
    .map((variant) => finiteNumber(variant.finalPrice))
    .filter((price) => price > 0);
  const variantPriceMin = variantFinalPrices.length
    ? Math.min(...variantFinalPrices)
    : 0;
  const variantPriceMax = variantFinalPrices.length
    ? Math.max(...variantFinalPrices)
    : 0;
  const variantPriceRange = variantFinalPrices.length
    ? (
      variantPriceMin === variantPriceMax
        ? money(variantPriceMin)
        : `${money(variantPriceMin)} — ${money(variantPriceMax)}`
    )
    : '—';
  const displayedPrice = isVariantProduct
    ? variantPriceRange
    : product.finalPriceText;
  const aiReference = product.aiPricing || product.pricing?.aiReference || null;
  const aiSuggestedPrice = finiteNumber(
    product.aiPricing?.suggestedPrice,
    finiteNumber(product.pricing?.aiSuggestedPrice),
  );
  const aiRangeMin = finiteNumber(
    product.aiPricing?.priceRangeMin,
    finiteNumber(product.pricing?.aiReference?.priceRangeMin),
  );
  const aiRangeMax = finiteNumber(
    product.aiPricing?.priceRangeMax,
    finiteNumber(product.pricing?.aiReference?.priceRangeMax),
  );
  const hasAiPricing = product.presentation.hasAiPricing;
  const aiStatusLabel = aiReference?.status
    ? (product.presentation.aiStatusLabelKey
      ? i18n.__({ phrase: product.presentation.aiStatusLabelKey, locale: lang })
      : aiReference.status)
    : '—';
  const moderation = product.presentation.moderation;
  const detailConfig = {
    csrfToken,
    locale: lang,
    bulkUrl: '/dashboard/products/moderation/bulk',
    deleteUrl: '/dashboard/products/delete',
    listUrl: '/dashboard/products',
    productId: product.id,
    messages: {
      approveTitle: i18n.__({
        phrase: 'products.approveProductConfirm',
        locale: lang,
      }),
      approveDescription: i18n.__({
        phrase: 'products.approveProductConfirmDescription',
        locale: lang,
      }),
      approve: i18n.__({ phrase: 'products.approveProduct', locale: lang }),
      rejectTitle: i18n.__({
        phrase: 'products.rejectProductConfirm',
        locale: lang,
      }),
      rejectDescription: i18n.__({
        phrase: 'products.catalogRejectDescription',
        locale: lang,
      }),
      reject: i18n.__({ phrase: 'products.rejectProduct', locale: lang }),
      reasonLabel: i18n.__({
        phrase: 'products.rejectionReason',
        locale: lang,
      }),
      reasonPlaceholder: i18n.__({
        phrase: 'products.rejectionReasonPlaceholder',
        locale: lang,
      }),
      reasonInvalid: i18n.__({
        phrase: 'products.moderationReasonLength',
        locale: lang,
      }),
      cancel: i18n.__({ phrase: 'common.cancel', locale: lang }),
      hideTitle: i18n.__({
        phrase: 'products.catalogHideTitle',
        locale: lang,
      }),
      hideDescription: i18n.__({
        phrase: 'products.catalogHideDescription',
        locale: lang,
      }),
      showTitle: i18n.__({
        phrase: 'products.catalogShowTitle',
        locale: lang,
      }),
      showDescription: i18n.__({
        phrase: 'products.catalogShowDescription',
        locale: lang,
      }),
      deleteTitle: i18n.__({
        phrase: 'products.catalogDeleteTitle',
        locale: lang,
      }),
      deleteDescription: i18n.__({
        phrase: 'products.catalogDeleteDescription',
        locale: lang,
      }),
      delete: i18n.__({
        phrase: 'products.catalogDeleteConfirm',
        locale: lang,
      }),
      refreshFailure: i18n.__({
        phrase: 'products.catalogRefreshFailure',
        locale: lang,
      }),
      refreshSuccess: i18n.__({
        phrase: 'products.catalogRefreshSuccess',
        locale: lang,
      }),
      actionFailure: i18n.__({
        phrase: 'products.catalogActionFailure',
        locale: lang,
      }),
      notificationDeferred: i18n.__({
        phrase: 'products.notificationDeliveryDeferred',
        locale: lang,
      }),
      approvedLabel: i18n.__({
        phrase: 'products.moderationStatusAccept',
        locale: lang,
      }),
      rejectedLabel: i18n.__({
        phrase: 'products.moderationStatusReject',
        locale: lang,
      }),
      visibleLabel: i18n.__({
        phrase: 'products.visibilityVisible',
        locale: lang,
      }),
      hiddenLabel: i18n.__({
        phrase: 'products.visibilityHidden',
        locale: lang,
      }),
      hideLabel: i18n.__({
        phrase: 'products.hideProduct',
        locale: lang,
      }),
      showLabel: i18n.__({
        phrase: 'products.showProduct',
        locale: lang,
      }),
      productFallback: i18n.__({
        phrase: 'products.catalogImageFallback',
        locale: lang,
      }),
    },
  };
%>

<section
  class="pod-profile kt-products-console"
  data-products-console
  data-products-mode="detail"
  data-product-card
  data-product-id="<%= product.id %>"
  data-product-name="<%= product.name %>"
  data-product-code="<%= productCode %>"
  data-product-image="<%= primaryImage %>"
  data-moderation-status="<%= product.moderation.status %>"
  data-is-hidden="<%= product.isVisible ? 'false' : 'true' %>"
  data-product-type="<%= product.type %>"
>
  <header class="pod-hero">
    <div class="pod-hero__media" data-product-media-frame>
      <% if (primaryImage) { %>
        <a
          data-fancybox="product-media"
          href="<%= primaryImage %>"
          aria-label="<%= i18n.__({ phrase: 'products.currentProductImage', locale: lang }) %>"
        >
          <img
            src="<%= primaryImage %>"
            alt="<%= product.name %>"
            loading="eager"
            data-product-image-element
          >
          <span class="pod-media-fallback" data-product-image-fallback hidden>
            <i class="ti ti-package"></i>
          </span>
        </a>
      <% } else { %>
        <span class="pod-media-fallback" data-product-image-fallback>
          <i class="ti ti-package"></i>
        </span>
      <% } %>
      <span class="pod-hero__media-count">
        <i class="ti ti-photo"></i>
        <%= images.length %>
      </span>
    </div>

    <div class="pod-hero__identity">
      <a class="pod-back-link" href="/dashboard/products">
        <i class="ti ti-arrow-back-up"></i>
        <%= i18n.__({ phrase: 'products.backToProducts', locale: lang }) %>
      </a>
      <span class="pod-eyebrow">
        <%= i18n.__({ phrase: 'products.detailsOperationsEyebrow', locale: lang }) %>
      </span>
      <div class="pod-hero__title">
        <h1><%= product.name || '—' %></h1>
        <span class="pod-product-code"><%= productCode %></span>
      </div>
      <p class="pod-hero__subtitle">
        <%= i18n.__({ phrase: 'products.detailsOperationsSubtitle', locale: lang }) %>
      </p>
      <div class="pod-status-line" aria-label="<%= i18n.__({ phrase: 'products.moderationAndVisibility', locale: lang }) %>">
        <span class="kt-products-badge <%= moderation.className %>" data-pm-detail-status data-badge-state="<%= product.moderation.status %>">
          <span class="kt-products-badge__icon">
            <i class="ti <%= moderation.icon %>"></i>
          </span>
          <span><%= i18n.__({ phrase: moderation.key, locale: lang }) %></span>
        </span>
        <span class="kt-products-badge <%= product.isVisible ? 'is-visible' : 'is-hidden' %>" data-pm-detail-visibility data-badge-state="<%= product.isVisible ? 'visible' : 'hidden' %>">
          <span class="kt-products-badge__icon">
            <i class="ti <%= product.isVisible ? 'ti-eye' : 'ti-eye-off' %>"></i>
          </span>
          <span><%= product.visibilityText %></span>
        </span>
        <span class="kt-products-badge <%= product.isPremium ? 'is-premium' : 'is-standard' %>" data-product-premium-badge data-badge-state="<%= product.isPremium ? 'premium' : 'standard' %>">
          <span class="<%= product.isPremium ? 'kt-products-badge__signal is-premium' : 'kt-products-badge__dot' %>" aria-hidden="true"></span>
          <span><%= product.isPremiumText %></span>
        </span>
      </div>
    </div>

    <div class="pod-hero__snapshot">
      <div class="pod-snapshot pod-snapshot--price">
        <span><%= i18n.__({ phrase: isVariantProduct ? 'products.detailsPriceRange' : 'products.finalPrice', locale: lang }) %></span>
        <strong><%= displayedPrice %></strong>
        <small><%= product.pricingMethodText %></small>
      </div>
      <div class="pod-snapshot">
        <span><%= i18n.__({ phrase: 'products.inventory', locale: lang }) %></span>
        <strong><%= product.quantityText || formatNumber(product.quantity) %></strong>
        <small><%= product.typeText %></small>
      </div>
    </div>
  </header>

  <% if (product.moderation.wasPreviouslyApproved) { %>
    <aside class="pod-notice pod-notice--warning" role="status">
      <span><i class="ti ti-history-toggle"></i></span>
      <div>
        <strong><%= i18n.__({ phrase: 'products.updatedWaitingReview', locale: lang }) %></strong>
        <p><%= i18n.__({ phrase: 'products.reReviewNotice', locale: lang }) %></p>
      </div>
    </aside>
  <% } %>

  <% if (product.isDeleted) { %>
    <aside class="pod-notice pod-notice--danger" role="status">
      <span><i class="ti ti-trash"></i></span>
      <div>
        <strong><%= product.statusText %></strong>
        <p><%= i18n.__({ phrase: 'products.deletedProductNotice', locale: lang }) %></p>
      </div>
    </aside>
  <% } %>

  <div class="pod-layout">
    <main class="pod-main">
      <article class="pod-section pod-media-library" data-product-details-section="media">
        <header class="pod-section__header">
          <div>
            <span class="pod-section__icon"><i class="ti ti-photo"></i></span>
            <span>
              <h2><%= i18n.__({ phrase: 'products.moderationMediaGallery', locale: lang }) %></h2>
              <p><%= i18n.__({ phrase: 'products.detailsGalleryDescription', locale: lang }) %></p>
            </span>
          </div>
          <span class="pod-count"><%= images.length + (product.video ? 1 : 0) %></span>
        </header>

        <% if (images.length || product.video) { %>
          <div class="pod-media-grid">
            <% images.forEach((image, index) => { %>
              <a
                class="pod-media-item <%= index === 0 ? 'is-primary' : '' %>"
                data-fancybox="product-media"
                href="<%= image %>"
              >
                <img
                  src="<%= image %>"
                  alt="<%= i18n.__({ phrase: 'products.currentProductImage', locale: lang }) %> <%= index + 1 %>"
                  loading="<%= index === 0 ? 'eager' : 'lazy' %>"
                  data-product-image-element
                >
                <span class="pod-media-fallback" data-product-image-fallback hidden>
                  <i class="ti ti-package"></i>
                </span>
                <span class="pod-media-item__label">
                  <i class="ti ti-photo"></i>
                  <%= index === 0
                    ? i18n.__({ phrase: 'products.thumbnail', locale: lang })
                    : `${index + 1}`
                  %>
                </span>
              </a>
            <% }); %>
            <% if (product.video) { %>
              <a
                class="pod-media-item is-video"
                data-fancybox="product-media"
                data-type="html5video"
                href="<%= product.video %>"
              >
                <video preload="none" muted data-product-video-element>
                  <source src="<%= product.video %>">
                </video>
                <span class="pod-media-fallback" data-product-video-fallback hidden>
                  <i class="ti ti-video-off"></i>
                </span>
                <span class="pod-media-item__play">
                  <i class="ti ti-player-play-filled"></i>
                </span>
                <span class="pod-media-item__label">
                  <%= i18n.__({ phrase: 'products.video', locale: lang }) %>
                </span>
              </a>
            <% } %>
          </div>
        <% } else { %>
          <div class="pod-empty">
            <span><i class="ti ti-photo-off"></i></span>
            <strong><%= i18n.__({ phrase: 'products.noMedia', locale: lang }) %></strong>
          </div>
        <% } %>
      </article>

      <article class="pod-section pod-pricing-console" data-product-details-section="pricing">
        <header class="pod-section__header">
          <div>
            <span class="pod-section__icon"><i class="ti ti-cash-banknote"></i></span>
            <span>
              <h2><%= i18n.__({ phrase: 'products.pricingAndDiscount', locale: lang }) %></h2>
              <p><%= i18n.__({ phrase: 'products.detailsPricingDescription', locale: lang }) %></p>
            </span>
          </div>
          <span class="pod-method-badge">
            <i class="ti <%= product.presentation.pricingAi ? 'ti-sparkles' : 'ti-currency-riyal' %>"></i>
            <%= product.pricingMethodText %>
          </span>
        </header>

        <div class="pod-pricing-grid">
          <div class="pod-price-primary">
            <span><%= i18n.__({ phrase: isVariantProduct ? 'products.detailsPriceRange' : 'products.finalPrice', locale: lang }) %></span>
            <strong><%= displayedPrice %></strong>
            <small><%= product.typeText %></small>
          </div>
          <dl class="pod-operational-metrics">
            <div>
              <dt><%= i18n.__({ phrase: 'products.manualPrice', locale: lang }) %></dt>
              <dd><%= money(product.pricing?.manualPrice) %></dd>
            </div>
            <div>
              <dt><%= i18n.__({ phrase: 'products.discount', locale: lang }) %></dt>
              <dd><%= isVariantProduct ? '—' : discountLabel %></dd>
            </div>
            <div>
              <dt><%= i18n.__({ phrase: 'products.inventory', locale: lang }) %></dt>
              <dd><%= product.quantityText || formatNumber(product.quantity) %></dd>
            </div>
            <div>
              <dt><%= i18n.__({ phrase: 'products.condition', locale: lang }) %></dt>
              <dd><%= product.conditionText || '—' %></dd>
            </div>
          </dl>
        </div>
      </article>

      <% if (hasAiPricing) { %>
        <article class="pod-section pod-ai-console" data-product-details-section="ai-pricing">
          <header class="pod-section__header">
            <div>
              <span class="pod-section__icon is-ai"><i class="ti ti-sparkles"></i></span>
              <span>
                <h2><%= i18n.__({ phrase: 'products.aiPricingInformation', locale: lang }) %></h2>
                <p><%= i18n.__({ phrase: 'products.detailsAiDescription', locale: lang }) %></p>
              </span>
            </div>
            <% if (aiReference?.status) { %>
              <span class="pod-method-badge"><%= aiStatusLabel %></span>
            <% } %>
          </header>
          <div class="pod-ai-grid">
            <div class="pod-ai-highlight">
              <span><%= i18n.__({ phrase: 'products.aiSuggestedPrice', locale: lang }) %></span>
              <strong><%= aiSuggestedPrice > 0 ? money(aiSuggestedPrice) : '—' %></strong>
              <% if (aiReference?.name) { %><small><%= aiReference.name %></small><% } %>
            </div>
            <dl class="pod-operational-metrics">
              <div>
                <dt><%= i18n.__({ phrase: 'products.aiRequestId', locale: lang }) %></dt>
                <dd><code><%= aiReference?.id || '—' %></code></dd>
              </div>
              <div>
                <dt><%= i18n.__({ phrase: 'products.aiRequestStatus', locale: lang }) %></dt>
                <dd><%= aiStatusLabel %></dd>
              </div>
              <div>
                <dt><%= i18n.__({ phrase: 'products.detailsMinimumPrice', locale: lang }) %></dt>
                <dd><%= aiRangeMin > 0 ? money(aiRangeMin) : '—' %></dd>
              </div>
              <div>
                <dt><%= i18n.__({ phrase: 'products.detailsMaximumPrice', locale: lang }) %></dt>
                <dd><%= aiRangeMax > 0 ? money(aiRangeMax) : '—' %></dd>
              </div>
            </dl>
          </div>
        </article>
      <% } %>

      <% if (isVariantProduct) { %>
        <article class="pod-section" data-product-details-section="attributes">
          <header class="pod-section__header">
            <div>
              <span class="pod-section__icon"><i class="ti ti-adjustments-horizontal"></i></span>
              <span>
                <h2><%= i18n.__({ phrase: 'products.attributesCatalogue', locale: lang }) %></h2>
                <p><%= i18n.__({ phrase: 'products.attributesCatalogueDescription', locale: lang }) %></p>
              </span>
            </div>
            <span class="pod-count"><%= presentAttributes.length %></span>
          </header>

          <% if (presentAttributes.length) { %>
            <div class="pod-attribute-catalogue">
              <% presentAttributes.forEach((attribute) => {
                const presentValues = (attribute.values || []).filter((value) => (
                  String(value.name || '').trim()
                  || String(value.colorCode || '').trim()
                ));
              %>
                <section class="pod-attribute-card" data-product-attribute="<%= attribute.id %>">
                  <header>
                    <span class="pod-attribute-card__mark">
                      <i class="ti <%= attribute.presentation.icon %>"></i>
                    </span>
                    <span>
                      <h3><%= attribute.name || '—' %></h3>
                      <small>
                        <%= i18n.__({
                          phrase: 'products.attributeOptionsCount',
                          locale: lang,
                        }).replace('{{count}}', String(presentValues.length)) %>
                      </small>
                    </span>
                  </header>
                  <% if (presentValues.length) { %>
                    <div class="pod-option-list">
                      <% presentValues.forEach((value) => { %>
                        <span class="pod-option" data-option-kind="<%= value.kind || attribute.kind || '' %>">
                          <% if (value.colorCode) { %>
                            <i
                              class="pod-color-swatch"
                              style="--pod-swatch:<%= value.colorCode %>"
                              aria-label="<%= i18n.__({ phrase: 'products.colorPreview', locale: lang }) %>"
                            ></i>
                          <% } %>
                          <strong><%= value.name || '—' %></strong>
                        </span>
                      <% }); %>
                    </div>
                  <% } else { %>
                    <p class="pod-attribute-card__empty">
                      <%= i18n.__({ phrase: 'products.detailsNoAttributeValues', locale: lang }) %>
                    </p>
                  <% } %>
                </section>
              <% }); %>
            </div>
          <% } else { %>
            <div class="pod-empty">
              <span><i class="ti ti-adjustments-off"></i></span>
              <strong><%= i18n.__({ phrase: 'products.detailsNoAttributes', locale: lang }) %></strong>
            </div>
          <% } %>
        </article>

        <article class="pod-section" data-product-details-section="variants">
          <header class="pod-section__header">
            <div>
              <span class="pod-section__icon"><i class="ti ti-box-multiple"></i></span>
              <span>
                <h2><%= i18n.__({ phrase: 'products.variantCombinations', locale: lang }) %></h2>
                <p><%= i18n.__({ phrase: 'products.variantCombinationsDescription', locale: lang }) %></p>
              </span>
            </div>
            <span class="pod-count"><%= variants.length %></span>
          </header>

          <% if (variants.length) { %>
            <div class="pod-variant-list">
              <% variants.forEach((variant, index) => {
                const selectedOptions = selectedOptionsFor(variant);
                const selectedValueCount = Object.keys(
                  variant.selectedValues || {},
                ).length;
                const variantLabel = variant.label
                  || selectedOptions.map((option) => option.value.name).filter(Boolean).join(' / ')
                  || i18n.__({
                    phrase: 'products.variantNumber',
                    locale: lang,
                  }).replace('{{number}}', String(index + 1));
              %>
                <article
                  class="pod-variant-card <%= variant.isAvailable ? 'is-available' : 'is-unavailable' %>"
                  data-product-variant
                  data-variant-id="<%= variant.id || '' %>"
                  data-selected-values-count="<%= selectedValueCount %>"
                >
                  <header>
                    <span class="pod-variant-card__number"><%= String(index + 1).padStart(2, '0') %></span>
                    <span>
                      <h3><%= variantLabel %></h3>
                      <small>
                        <%= i18n.__({
                          phrase: 'products.selectedOptionsCount',
                          locale: lang,
                        }).replace('{{count}}', String(selectedValueCount)) %>
                      </small>
                    </span>
                    <span class="pod-availability <%= variant.isAvailable ? 'is-available' : 'is-unavailable' %>">
                      <i class="ti <%= variant.isAvailable ? 'ti-circle-check' : 'ti-alert-circle' %>"></i>
                      <%= i18n.__({
                        phrase: variant.isAvailable ? 'products.available' : 'products.notAvailable',
                        locale: lang,
                      }) %>
                    </span>
                  </header>
                  <dl>
                    <div>
                      <dt><%= i18n.__({ phrase: 'products.productQuantity', locale: lang }) %></dt>
                      <dd><%= variant.quantityText %></dd>
                    </div>
                    <div>
                      <dt><%= i18n.__({ phrase: 'products.unitPrice', locale: lang }) %></dt>
                      <dd><%= variant.priceText %></dd>
                    </div>
                    <div>
                      <dt><%= i18n.__({ phrase: 'products.discount', locale: lang }) %></dt>
                      <dd>
                        <%= variant.presentation.discountNone
                          ? variant.discount.typeText
                          : `${variant.discount?.typeText || '—'} · ${formatNumber(variant.discount?.value)}`
                        %>
                      </dd>
                    </div>
                    <div class="is-final">
                      <dt><%= i18n.__({ phrase: 'products.finalPrice', locale: lang }) %></dt>
                      <dd><%= variant.finalPriceText %></dd>
                    </div>
                  </dl>
                </article>
              <% }); %>
            </div>
          <% } else { %>
            <div class="pod-empty">
              <span><i class="ti ti-box-off"></i></span>
              <strong><%= i18n.__({ phrase: 'products.noVariants', locale: lang }) %></strong>
            </div>
          <% } %>
        </article>
      <% } %>

      <article class="pod-section" data-product-details-section="content">
        <header class="pod-section__header">
          <div>
            <span class="pod-section__icon"><i class="ti ti-language"></i></span>
            <span>
              <h2><%= i18n.__({ phrase: 'products.localizedContent', locale: lang }) %></h2>
              <p><%= i18n.__({ phrase: 'products.detailsLocalizedDescription', locale: lang }) %></p>
            </span>
          </div>
        </header>
        <div class="pod-localized-grid">
          <section lang="ar" dir="rtl">
            <span class="pod-language-label">AR</span>
            <small><%= i18n.__({ phrase: 'products.arabicName', locale: lang }) %></small>
            <h3><%= product.localizedName.ar || '—' %></h3>
            <small><%= i18n.__({ phrase: 'products.arabicDescription', locale: lang }) %></small>
            <p><%= product.localizedDescription.ar || product.legacyDetails || '—' %></p>
          </section>
          <section lang="en" dir="ltr">
            <span class="pod-language-label">EN</span>
            <small><%= i18n.__({ phrase: 'products.englishName', locale: lang }) %></small>
            <h3><%= product.localizedName.en || '—' %></h3>
            <small><%= i18n.__({ phrase: 'products.englishDescription', locale: lang }) %></small>
            <p><%= product.localizedDescription.en || product.legacyDetails || '—' %></p>
          </section>
        </div>
        <% if (product.legacyInstructions) { %>
          <div class="pod-instructions">
            <i class="ti ti-info-circle"></i>
            <div>
              <strong><%= i18n.__({ phrase: 'products.instructions', locale: lang }) %></strong>
              <p><%= product.legacyInstructions %></p>
            </div>
          </div>
        <% } %>
      </article>

      <article class="pod-section" data-product-details-section="timeline">
        <header class="pod-section__header">
          <div>
            <span class="pod-section__icon"><i class="ti ti-history"></i></span>
            <span>
              <h2><%= i18n.__({ phrase: 'products.moderationTimeline', locale: lang }) %></h2>
              <p><%= i18n.__({ phrase: 'products.detailsTimelineDescription', locale: lang }) %></p>
            </span>
          </div>
          <span class="pod-count"><%= product.moderation.timeline.length %></span>
        </header>
        <% if (product.moderation.timeline.length) { %>
          <ol class="pod-timeline">
            <% product.moderation.timeline.forEach((event) => { %>
              <li class="pod-timeline__item is-<%= event.type %>">
                <span class="pod-timeline__dot"><i class="ti ti-point-filled"></i></span>
                <div>
                  <strong><%= event.label %></strong>
                  <% if (event.actor) { %>
                    <span><i class="ti ti-user"></i><%= event.actor %></span>
                  <% } %>
                  <time datetime="<%= event.occurredAt ? new Date(event.occurredAt).toISOString() : '' %>">
                    <%= event.occurredAt
                      ? moment(event.occurredAt).locale(lang).format('YYYY/MM/DD · hh:mm a')
                      : '—'
                    %>
                  </time>
                </div>
              </li>
            <% }); %>
          </ol>
        <% } else { %>
          <div class="pod-empty">
            <span><i class="ti ti-history-off"></i></span>
            <strong><%= i18n.__({ phrase: 'products.noTimeline', locale: lang }) %></strong>
          </div>
        <% } %>
      </article>
    </main>

    <aside class="pod-rail">
      <article class="pod-rail-card pod-command-card">
        <header>
          <span class="pod-section__icon"><i class="ti ti-shield-check"></i></span>
          <span>
            <h2><%= i18n.__({ phrase: 'products.detailsOperationsTitle', locale: lang }) %></h2>
            <p><%= i18n.__({ phrase: 'products.detailsOperationsDescription', locale: lang }) %></p>
          </span>
        </header>
        <div class="pod-command-state">
          <span class="pod-command-state__dot <%= moderation.className %>"></span>
          <span>
            <small><%= i18n.__({ phrase: 'products.moderationStatus', locale: lang }) %></small>
            <strong><%= product.moderationStatusText %></strong>
          </span>
        </div>
        <% if (!product.isDeleted) { %>
          <div class="pod-command-actions" aria-label="<%= i18n.__({ phrase: 'products.moderationActions', locale: lang }) %>">
            <% if (permissions.edit) { %>
              <a class="pod-action pod-action--edit" href="/dashboard/products/edit/<%= product.id %>">
                <i class="ti ti-edit"></i>
                <%= i18n.__({ phrase: 'common.edit', locale: lang }) %>
              </a>
            <% } %>
            <% if (product.presentation.moderationPending && permissions.approve) { %>
              <button class="pod-action pod-action--approve" type="button" data-product-action="approve">
                <i class="ti ti-check"></i>
                <%= i18n.__({ phrase: 'products.approveProduct', locale: lang }) %>
              </button>
            <% } %>
            <% if (product.presentation.moderationPending && permissions.reject) { %>
              <button class="pod-action pod-action--reject" type="button" data-product-action="reject">
                <i class="ti ti-x"></i>
                <%= i18n.__({ phrase: 'products.rejectProduct', locale: lang }) %>
              </button>
            <% } %>
            <% if (permissions.visibility) { %>
              <button class="pod-action" type="button" data-product-action="visibility">
                <i class="ti <%= product.isVisible ? 'ti-eye-off' : 'ti-eye' %>"></i>
                <span><%= i18n.__({
                  phrase: product.isVisible ? 'products.hideProduct' : 'products.showProduct',
                  locale: lang,
                }) %></span>
              </button>
            <% } %>
            <% if (permissions.delete) { %>
              <button class="pod-action pod-action--delete" type="button" data-product-action="delete">
                <i class="ti ti-trash"></i>
                <%= i18n.__({ phrase: 'products.catalogDeleteConfirm', locale: lang }) %>
              </button>
            <% } %>
          </div>
        <% } %>
      </article>

      <article class="pod-rail-card" data-product-details-section="identity">
        <header>
          <span class="pod-section__icon"><i class="ti ti-package"></i></span>
          <span>
            <h2><%= i18n.__({ phrase: 'products.productIdentity', locale: lang }) %></h2>
            <p><%= productCode %></p>
          </span>
        </header>
        <dl class="pod-definition-list">
          <div>
            <dt><%= i18n.__({ phrase: 'products.department', locale: lang }) %></dt>
            <dd><%= product.department?.name || '—' %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.subDepartment', locale: lang }) %></dt>
            <dd><%= product.subdepartment?.name || '—' %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.productType', locale: lang }) %></dt>
            <dd><%= product.typeText %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.condition', locale: lang }) %></dt>
            <dd><%= product.conditionText || '—' %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.workflowStatus', locale: lang }) %></dt>
            <dd><%= product.statusText %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.productQuantity', locale: lang }) %></dt>
            <dd><%= product.quantityText || formatNumber(product.quantity) %></dd>
          </div>
        </dl>
      </article>

      <article class="pod-rail-card" data-product-details-section="provider">
        <header>
          <span class="pod-section__icon"><i class="ti ti-building-store"></i></span>
          <span>
            <h2><%= i18n.__({ phrase: 'products.providerInformation', locale: lang }) %></h2>
            <p><%= i18n.__({ phrase: 'products.detailsProviderDescription', locale: lang }) %></p>
          </span>
        </header>
        <div class="pod-provider">
          <span class="pod-provider__avatar">
            <% if (product.provider.avatar) { %>
              <img
                src="<%= product.provider.avatar %>"
                alt="<%= product.provider.name %>"
                loading="lazy"
                data-product-image-element
              >
              <span class="pod-media-fallback" data-product-image-fallback hidden>
                <i class="ti ti-building-store"></i>
              </span>
            <% } else { %>
              <span class="pod-media-fallback" data-product-image-fallback>
                <i class="ti ti-building-store"></i>
              </span>
            <% } %>
          </span>
          <span>
            <strong><%= product.provider.name || '—' %></strong>
            <small><%= product.provider.fullPhone || '—' %></small>
          </span>
        </div>
        <dl class="pod-definition-list">
          <div>
            <dt><%= i18n.__({ phrase: 'products.providerProductsCount', locale: lang }) %></dt>
            <dd><%= product.provider.productsCount %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.providerAccountStatus', locale: lang }) %></dt>
            <dd><%= product.provider.status || '—' %></dd>
          </div>
        </dl>
        <% if (product.provider.id) { %>
          <a class="pod-provider-link" href="/dashboard/providers/show/<%= product.provider.id %>">
            <span><%= i18n.__({ phrase: 'products.providerProfile', locale: lang }) %></span>
            <i class="ti ti-arrow-up-left"></i>
          </a>
        <% } %>
      </article>

      <article class="pod-rail-card" data-product-details-section="moderation">
        <header>
          <span class="pod-section__icon"><i class="ti ti-eye-check"></i></span>
          <span>
            <h2><%= i18n.__({ phrase: 'products.moderationAndVisibility', locale: lang }) %></h2>
            <p><%= i18n.__({ phrase: 'products.detailsModerationDescription', locale: lang }) %></p>
          </span>
        </header>
        <dl class="pod-definition-list">
          <div>
            <dt><%= i18n.__({ phrase: 'products.moderationStatus', locale: lang }) %></dt>
            <dd><%= product.moderationStatusText %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.visibility', locale: lang }) %></dt>
            <dd><%= product.visibilityText %></dd>
          </div>
          <% if (product.moderation.previousApprovalAt) { %>
            <div>
              <dt><%= i18n.__({ phrase: 'products.previousApprovalDate', locale: lang }) %></dt>
              <dd><%= moment(product.moderation.previousApprovalAt).locale(lang).format('YYYY/MM/DD · hh:mm a') %></dd>
            </div>
          <% } %>
          <% if (product.moderation.lastReviewer) { %>
            <div>
              <dt><%= i18n.__({ phrase: 'products.lastReviewer', locale: lang }) %></dt>
              <dd><%= product.moderation.lastReviewer.name %></dd>
            </div>
          <% } %>
        </dl>
        <% if (product.moderation.rejectionReason) { %>
          <div class="pod-rejection-reason">
            <strong><%= i18n.__({ phrase: 'products.rejectionReason', locale: lang }) %></strong>
            <p><%= product.moderation.rejectionReason %></p>
          </div>
        <% } %>
      </article>

      <article class="pod-rail-card" data-product-details-section="audit">
        <header>
          <span class="pod-section__icon"><i class="ti ti-file-analytics"></i></span>
          <span>
            <h2><%= i18n.__({ phrase: 'products.auditInformation', locale: lang }) %></h2>
            <p><%= i18n.__({ phrase: 'products.detailsAuditDescription', locale: lang }) %></p>
          </span>
        </header>
        <dl class="pod-definition-list">
          <div>
            <dt><%= i18n.__({ phrase: 'products.createdAt', locale: lang }) %></dt>
            <dd><%= product.createdAt
              ? moment(product.createdAt).locale(lang).format('YYYY/MM/DD · hh:mm a')
              : '—'
            %></dd>
          </div>
          <div>
            <dt><%= i18n.__({ phrase: 'products.updatedAt', locale: lang }) %></dt>
            <dd><%= product.updatedAt
              ? moment(product.updatedAt).locale(lang).format('YYYY/MM/DD · hh:mm a')
              : '—'
            %></dd>
          </div>
          <% if (product.deletedAt) { %>
            <div>
              <dt><%= i18n.__({ phrase: 'products.deletedAt', locale: lang }) %></dt>
              <dd><%= moment(product.deletedAt).locale(lang).format('YYYY/MM/DD · hh:mm a') %></dd>
            </div>
          <% } %>
        </dl>
      </article>
    </aside>
  </div>

  <div class="kt-products-modal-backdrop" data-products-modal-backdrop hidden></div>
  <section
    class="kt-products-command-modal"
    data-products-command-modal
    role="alertdialog"
    aria-modal="true"
    aria-labelledby="products-detail-command-title"
    aria-describedby="products-detail-command-description"
    hidden
  >
    <button
      type="button"
      class="kt-products-command-modal__close"
      data-products-modal-close
      aria-label="<%= i18n.__({ phrase: 'common.close', locale: lang }) %>"
    >
      <i class="ti ti-x"></i>
    </button>
    <span class="kt-products-command-modal__icon" data-products-command-icon>
      <i class="ti ti-shield-check"></i>
    </span>
    <span class="kt-products-eyebrow">
      <%= i18n.__({ phrase: 'products.catalogDecisionEyebrow', locale: lang }) %>
    </span>
    <h2 id="products-detail-command-title" data-products-command-title></h2>
    <p id="products-detail-command-description" data-products-command-description></p>
    <div class="kt-products-command-modal__product" data-products-command-product>
      <span class="kt-products-command-modal__product-image" data-products-command-image>
        <i class="ti ti-package"></i>
      </span>
      <span>
        <small><%= i18n.__({ phrase: 'products.catalogSelectedProduct', locale: lang }) %></small>
        <strong data-products-command-name></strong>
        <b data-products-command-meta></b>
      </span>
    </div>
    <label class="kt-products-command-modal__reason" data-products-command-reason hidden>
      <span><%= i18n.__({ phrase: 'products.rejectionReason', locale: lang }) %></span>
      <textarea
        maxlength="500"
        data-products-reason-input
        placeholder="<%= i18n.__({ phrase: 'products.rejectionReasonPlaceholder', locale: lang }) %>"
      ></textarea>
      <small data-products-reason-error></small>
    </label>
    <footer>
      <button class="kt-products-btn kt-products-btn--control" type="button" data-products-modal-close>
        <%= i18n.__({ phrase: 'common.cancel', locale: lang }) %>
      </button>
      <button class="kt-products-btn kt-products-btn--primary" type="button" data-products-command-confirm>
        <i class="ti ti-check"></i>
        <span data-products-command-confirm-label></span>
      </button>
    </footer>
  </section>
</section>

<script id="products-console-config" type="application/json"><%- JSON.stringify(detailConfig).replace(/</g, '\\u003c') %></script>
<script src="/admin/assets/js/pages/product-catalog-console.js?v=1.3.3"></script>
