summary history files

frontend/src/components/NavigationPane.vue
<template>
  <div class="nav-pane">
    <!-- Clusters Section -->
    <div class="nav-section">
      <div class="section-header">
        <span class="section-title">CLUSTERS</span>
      </div>
      <ClusterList 
        :clusters="clusters"
        :selectedCluster="selectedCluster"
        @select-cluster="handleClusterSelect"
      />
    </div>

    <div class="nav-section" v-if="selectedCluster">
      <div class="section-header">
        <span class="section-title">WORKLOADS</span>
      </div>
      <div class="section-content">
        <div 
          :class="['nav-item', { active: selectedResource === 'deployments' }]"
          @click="selectResource('deployments')"
        >
          <i class="fas fa-cubes"></i>
          Deployments
        </div>
        <div 
          :class="['nav-item', { active: selectedResource === 'statefulsets' }]"
          @click="selectResource('statefulsets')"
        >
          <i class="fas fa-cubes"></i>
          StatefulSets
        </div>
        <div 
          :class="['nav-item', { active: selectedResource === 'pods' }]"
          @click="selectResource('pods')"
        >
          <i class="fas fa-cube"></i>
          Pods
        </div>
      </div>
    </div>

    <div class="nav-section" v-if="selectedCluster">
      <div class="section-header">
        <span class="section-title">CONFIGURATION</span>
      </div>
      <div class="section-content">
        <div 
          :class="['nav-item', { active: selectedResource === 'namespaces' }]"
          @click="selectResource('namespaces')"
        >
          <i class="fas fa-cubes"></i>
          Namespaces
        </div>
        <div 
          :class="['nav-item', { active: selectedResource === 'configmaps' }]"
          @click="selectResource('configmaps')"
        >
          <i class="fas fa-cubes"></i>
          ConfigMaps
        </div>
        <div 
          :class="['nav-item', { active: selectedResource === 'secrets' }]"
          @click="selectResource('secrets')"
        >
          <i class="fas fa-cubes"></i>
          Secrets
        </div>
      </div>
    </div>

    <div class="nav-section" v-if="selectedCluster">
      <div class="section-header">
        <span class="section-title">NETWORKING</span>
      </div>
      <div class="section-content">
        <div 
          :class="['nav-item', { active: selectedResource === 'ingresses' }]"
          @click="selectResource('ingresses')"
        >
          <i class="fas fa-cubes"></i>
          Ingress
        </div>
      </div>
    </div>

    <div class="nav-section" v-if="selectedCluster">
      <div class="section-header">
        <span class="section-title">STORAGE</span>
      </div>
      <div class="section-content">
        <div 
          :class="['nav-item', { active: selectedResource === 'persistentvolumeclaims' }]"
          @click="selectResource('persistentvolumeclaims')"
        >
          <i class="fas fa-cubes"></i>
          Volume Claims
        </div>
      </div>
      <div class="section-content">
        <div 
          :class="['nav-item', { active: selectedResource === 'persistentVolumes' }]"
          @click="selectResource('persistentVolumes')"
        >
          <i class="fas fa-cubes"></i>
          Volumes
        </div>
      </div>
    </div>

  </div>
</template>

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

export default defineComponent({
  name: 'NavigationPane',

  components: {
    ClusterList
  },

  props: {
    clusters: {
      type: Array as PropType<KubernetesCluster[]>,
      required: true,
      default: () => []
    },
    selectedCluster: {
      type: Object as PropType<KubernetesCluster | null>,
      required: false,
      default: null
    },
    selectedResource: {
      type: String as PropType<String | null>,
      required: false,
      default: null
    }
  },
  emits: ['select-cluster', 'select-resource'],
  methods: {
    handleClusterSelect(cluster: KubernetesCluster) {
      this.$emit('select-cluster', cluster);
    },

    selectResource(resource: string) {
      this.$emit('select-resource', resource);
    }
  }
});
</script>

<style src="@/assets/css/NavigationPane.css" scoped></style>