<template>
  <div class="agent-card">
    <div class="agent-header">
      <div class="agent-avatar" :style="{ backgroundColor: agent.color || '#6B7280' }">
        {{ agent.name?.charAt(0) || 'A' }}
      </div>
      <div class="agent-info">
        <h3 class="agent-name">{{ agent.name || 'Unknown Agent' }}</h3>
        <p class="agent-type">{{ agent.type || 'Generic' }}</p>
      </div>
      <div class="agent-status">
        <div 
          class="status-dot"
          :class="{
            'bg-green-400': agent.status === 'active',
            'bg-red-400': agent.status === 'inactive',
            'bg-yellow-400': agent.status === 'starting'
          }"
        ></div>
        <span class="status-text">{{ agent.status || 'Unknown' }}</span>
      </div>
    </div>

    <div class="agent-metrics">
      <div class="metric">
        <span class="metric-value">{{ agent.metrics?.messages_processed || 0 }}</span>
        <span class="metric-label">Messages</span>
      </div>
      <div class="metric">
        <span class="metric-value">{{ agent.metrics?.average_response_time?.toFixed(1) || '0.0' }}s</span>
        <span class="metric-label">Response Time</span>
      </div>
    </div>

    <div class="agent-actions">
      <button 
        v-if="agent.status !== 'active'"
        class="action-button start-button"
        @click="$emit('start', agent)"
      >
        ▶ Start
      </button>
      <button 
        v-else
        class="action-button stop-button"
        @click="$emit('stop', agent)"
      >
        ⏸ Stop
      </button>
      <button 
        class="action-button chat-button"
        @click="$emit('chat', agent)"
      >
        💬 Chat
      </button>
      <button 
        class="action-button details-button"
        @click="$emit('details', agent)"
      >
        📋 Details
      </button>
    </div>
  </div>
</template>

<script>
export default {
  name: 'AgentCard',
  props: {
    agent: {
      type: Object,
      required: true
    }
  },
  emits: ['start', 'stop', 'chat', 'details']
}
</script>

<style scoped>
.agent-card {
  @apply bg-white rounded-lg shadow-sm border border-gray-200 p-6 hover:shadow-md transition-shadow;
  @apply flex flex-col;
  height: 320px;
}

.agent-header {
  @apply flex items-start justify-between mb-4;
  flex-shrink: 0;
}

.agent-avatar {
  @apply w-12 h-12 rounded-lg flex items-center justify-center text-white font-medium text-lg mr-4;
}

.agent-info {
  @apply flex-1;
}

.agent-name {
  @apply font-semibold text-gray-900 text-lg;
}

.agent-type {
  @apply text-sm text-gray-600 mt-1;
}

.agent-status {
  @apply flex items-center space-x-2;
}

.status-dot {
  @apply w-3 h-3 rounded-full;
}

.status-text {
  @apply text-sm font-medium text-gray-700 capitalize;
}

.agent-metrics {
  @apply flex space-x-6 mb-4 py-3 border-y border-gray-100;
  flex: 1 1 auto;
  min-height: 80px;
}

.metric {
  @apply text-center;
}

.metric-value {
  @apply block text-xl font-bold text-gray-900;
}

.metric-label {
  @apply text-xs text-gray-500 uppercase tracking-wide;
}

.agent-actions {
  @apply flex space-x-2;
  flex-shrink: 0;
}

.action-button {
  @apply flex-1 px-3 py-2 text-sm font-medium rounded-md border transition-colors;
}

.start-button {
  @apply bg-green-50 text-green-700 border-green-200 hover:bg-green-100;
}

.stop-button {
  @apply bg-red-50 text-red-700 border-red-200 hover:bg-red-100;
}

.chat-button {
  @apply bg-blue-50 text-blue-700 border-blue-200 hover:bg-blue-100;
}

.details-button {
  @apply bg-gray-50 text-gray-700 border-gray-200 hover:bg-gray-100;
}
</style>
