<script lang="ts">
  import type { PicletInstance } from '$lib/db/schema';
  import { TYPE_DATA } from '$lib/types/picletTypes';
  import { picletInstanceToBattleDefinition } from '$lib/utils/battleConversion';
  
  interface Props {
    instance: PicletInstance;
    size?: number;
    onClick?: () => void;
  }
  
  let { instance, size = 100, onClick }: Props = $props();
  
  const hpPercentage = $derived(instance.currentHp / instance.maxHp);
  const hpColor = $derived(
    hpPercentage > 0.5 ? '#34c759' : 
    hpPercentage > 0.25 ? '#ffcc00' : 
    '#ff3b30'
  );
  
  const typeColor = $derived(TYPE_DATA[instance.primaryType].color);
  const softTypeColor = $derived(`${typeColor}20`); // Add 20% opacity for soft background
  
  // Get battle definition for enhanced ability info
  const battleDefinition = $derived(picletInstanceToBattleDefinition(instance));
  const ability = $derived(battleDefinition.specialAbility);
</script>

<button 
  class="piclet-card" 
  style="width: {size}px; height: {size + 40}px; --type-color: {typeColor}; --soft-type-color: {softTypeColor};"
  onclick={onClick}
  type="button"
>
  <div class="image-container">
    <img 
      src={instance.imageData || instance.imageUrl} 
      alt={instance.nickname || 'Piclet'}
      class="piclet-image"
      style="width: {size * 0.8}px; height: {size * 0.8}px;"
    />
    <div class="level-badge">
      Lv.{instance.level}
    </div>
  </div>
  
  <div class="details-section">
    <p class="nickname">{instance.nickname || 'Unknown'}</p>
    <div class="hp-section">
      <span class="hp-text">HP: {instance.currentHp}/{instance.maxHp}</span>
      <div class="hp-bar">
        <div 
          class="hp-fill" 
          style="width: {hpPercentage * 100}%; background-color: {hpColor};"
        ></div>
      </div>
    </div>
  </div>
</button>

<style>
  .piclet-card {
    display: flex;
    flex-direction: column;
    background: var(--type-color, #007bff);
    border-radius: 12px;
    border: 2px solid;
    border-color: var(--type-color, #007bff);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    padding: 0;
    cursor: pointer;
    transition: transform 0.2s;
  }
  
  .piclet-card:active {
    transform: scale(0.95);
  }
  
  .image-container {
    width: 100%;
    flex: 1;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px 10px 0 0;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.7);
  }
  
  .piclet-image {
    object-fit: contain;
  }
  
  .level-badge {
    position: absolute;
    top: 4px;
    right: 4px;
    background: rgba(255, 255, 255, 0.9);
    padding: 2px 6px;
    border-radius: 8px;
    font-size: 10px;
    font-weight: bold;
    color: black;
  }
  
  .details-section {
    height: 50px;
    padding: 6px 8px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 0 0 10px 10px;
    width: 100%;
  }
  
  .nickname {
    margin: 0 0 2px 0;
    font-size: 10px;
    font-weight: 600;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #333;
  }
  
  .hp-section {
    display: flex;
    flex-direction: column;
    gap: 1px;
  }
  
  .hp-text {
    font-size: 8px;
    font-weight: 500;
    text-align: center;
    color: #666;
  }
  
  .hp-bar {
    height: 3px;
    background: #f0f0f0;
    border-radius: 1.5px;
    overflow: hidden;
  }
  
  .hp-fill {
    height: 100%;
    border-radius: 1.5px;
    transition: width 0.3s ease;
  }
</style>