<?php
/**
 * modules/admin/_provider_models.php — panel de modelos de un proveedor (Moonshot/MiniMax).
 *
 * Catálogo automático vía la API del proveedor. La selección KamiChat/KamiCode se
 * guarda en settings propios del proveedor (aislada de OpenRouter), con su botón.
 *
 * Variables esperadas:
 *   $pv_models   array de ['id','name']
 *   $pv_hasKey   bool
 *   $pv_selChat  array de ids seleccionados para KamiChat
 *   $pv_selCode  array de ids seleccionados para KamiCode
 *   $pv_chatName string  name del checkbox de chat (p. ej. 'model_chat_moonshot')
 *   $pv_codeName string  name del checkbox de code
 *   $pv_saveField string name del botón de guardar (p. ej. 'save_moonshot')
 *   $pv_pricing   array ['url','updated'] (opcional) para el enlace a tarifas y la fecha
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }
?>
<div class="overflow-hidden rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
  <div class="flex flex-wrap items-center gap-x-4 gap-y-1 border-b border-gray-200 px-4 py-3 text-xs text-gray-dark dark:border-ink-700 dark:text-gray-light">
    <span><?= App::e(App::t('admin.provider_note')) ?></span>
    <?php if (!empty($pv_pricing)): ?>
      <span class="ml-auto flex items-center gap-3">
        <?php if (!empty($pv_pricing['updated'])): ?>
          <span><?= App::e(App::t('admin.prices_updated')) ?> <span class="font-medium text-ink-900 dark:text-paper"><?= App::e($pv_pricing['updated']) ?></span></span>
        <?php endif; ?>
        <?php if (!empty($pv_pricing['url'])): ?>
          <a href="<?= App::e($pv_pricing['url']) ?>" target="_blank" rel="noopener" class="font-medium text-primary-700 underline dark:text-primary-300"><?= App::e(App::t('admin.view_pricing')) ?></a>
        <?php endif; ?>
      </span>
    <?php endif; ?>
  </div>
  <?php if (!$pv_hasKey): ?>
    <div class="px-4 py-4 text-sm text-gray-dark dark:text-gray-light">
      <?= App::e(App::t('admin.provider_no_key')) ?>
      <a href="/admin/config/" class="font-medium underline"><?= App::e(App::t('admin.tab_keys')) ?></a>
    </div>
  <?php elseif (!$pv_models): ?>
    <div class="px-4 py-4 text-sm text-danger"><?= App::e(App::t('admin.provider_no_models')) ?></div>
  <?php else: ?>
    <form method="post" action="/admin/models/" data-autosave-provider="<?= App::e($pv_saveField) ?>">
      <div class="overflow-x-auto">
        <table class="w-full text-sm">
          <thead>
            <tr class="border-b border-gray-200 bg-gray-50 text-left text-xs uppercase tracking-wide text-gray-dark dark:border-ink-700 dark:bg-ink-800 dark:text-gray-light">
              <th class="px-4 py-2 font-semibold"><?= App::e(App::t('admin.th_model')) ?></th>
              <th class="px-4 py-2 font-semibold"><?= App::e(App::t('admin.th_capabilities')) ?></th>
              <th class="px-4 py-2 font-semibold"><?= App::e(App::t('admin.th_context')) ?></th>
              <th class="px-4 py-2 text-right font-semibold"><?= App::e(App::t('admin.th_cost')) ?> <span class="normal-case text-gray-light">($/1M)</span></th>
              <th class="px-4 py-2 text-center font-semibold">KamiChat</th>
              <th class="px-4 py-2 text-center font-semibold">KamiCode</th>
            </tr>
          </thead>
          <tbody class="divide-y divide-gray-200 dark:divide-ink-700">
            <?php foreach ($pv_models as $m):
              $ctx  = $m['context'] >= 1000 ? round($m['context'] / 1000) . 'K' : ($m['context'] ?: '—');
              $caps = $m['caps'];
              ?>
              <tr class="hover:bg-gray-50 dark:hover:bg-ink-800/50">
                <td class="px-4 py-2">
                  <div class="font-medium"><?= App::e($m['name']) ?></div>
                  <div class="font-mono text-xs text-gray-dark dark:text-gray-light"><?= App::e($m['id']) ?></div>
                </td>
                <td class="px-4 py-2">
                  <div class="flex max-w-[14rem] flex-wrap items-center gap-1">
                    <?php foreach ($caps as $c): ?>
                      <span class="rounded bg-primary-50 px-1.5 py-0.5 text-xs text-primary-700 dark:bg-primary-900/30 dark:text-primary-300"><?= App::e(isset($capLabels) && isset($capLabels[$c]) ? $capLabels[$c] : $c) ?></span>
                    <?php endforeach; ?>
                    <?php if (!$caps): ?><span class="text-xs text-gray-light">—</span><?php endif; ?>
                  </div>
                </td>
                <td class="whitespace-nowrap px-4 py-2"><?= App::e($ctx) ?></td>
                <td class="whitespace-nowrap px-4 py-2 text-right text-xs">
                  <div><span class="text-gray-light">in</span> <?= App::e(isset($cost) ? $cost($m['price_in']) : ($m['price_in'] ?? '—')) ?></div>
                  <div><span class="text-gray-light">out</span> <?= App::e(isset($cost) ? $cost($m['price_out']) : ($m['price_out'] ?? '—')) ?></div>
                </td>
                <td class="px-4 py-2 text-center">
                  <input type="checkbox" name="<?= App::e($pv_chatName) ?>[]" value="<?= App::e($m['id']) ?>"
                         <?= in_array($m['id'], $pv_selChat, true) ? 'checked' : '' ?> class="h-4 w-4 accent-primary-600">
                </td>
                <td class="px-4 py-2 text-center">
                  <input type="checkbox" name="<?= App::e($pv_codeName) ?>[]" value="<?= App::e($m['id']) ?>"
                         <?= in_array($m['id'], $pv_selCode, true) ? 'checked' : '' ?> class="h-4 w-4 accent-primary-600">
                </td>
              </tr>
            <?php endforeach; ?>
          </tbody>
        </table>
      </div>
      <div class="flex items-center gap-3 border-t border-gray-200 px-4 py-3 text-xs dark:border-ink-700">
        <span class="text-gray-light"><?= App::e(App::t('admin.autosave')) ?></span>
        <span data-save-status data-saved-text="<?= App::e(App::t('admin.saved')) ?>" class="font-medium text-success"></span>
        <span class="ml-auto text-gray-light"><?= count($pv_models) ?> <?= App::e(App::t('admin.models_word')) ?></span>
      </div>
    </form>
  <?php endif; ?>
</div>
