summary history files

frontend/src/components/ClusterList.vue
<script lang="ts">
import { defineComponent, PropType } from 'vue';
import { KubernetesCluster } from '../types/kubernetes';

export default defineComponent({
  name: 'ClusterList',

  props: {
    clusters: {
      type: Array as PropType<KubernetesCluster[]>,
      required: true,
      default: () => []
    },
    selectedCluster: {
      type: Object as PropType<KubernetesCluster | null>,
      required: false,
      default: null
    }
  },

  methods: {
    isSelected(cluster: KubernetesCluster): boolean {
      return this.selectedCluster?.contextName === cluster.contextName;
    },

    selectCluster(cluster: KubernetesCluster) {
      this.$emit('select-cluster', cluster);
    }
  }
});
</script>

<template>
  <div class="cluster-list">
    <div 
      v-for="cluster in clusters" 
      :key="cluster.server"
      :class="['cluster-item', { active: isSelected(cluster) }]"
      @click="selectCluster(cluster)"
    >
      <i class="fas fa-server"></i>
      {{ cluster.contextName }}
    </div>
  </div>
</template>

<style scoped>
.cluster-list {
  padding: 8px 0;
}

.cluster-item {
  padding: 8px 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #cccccc;
}

.cluster-item:hover {
  background-color: #2a2d2e;
}

.cluster-item.active {
  background-color: #37373d;
  color: #ffffff;
}

.cluster-item i {
  width: 16px;
  text-align: center;
  font-size: 14px;
}
</style>