HomeCategoryList.vue 1.3 KB
<template>
  <v-container class="">
    <div class="text-blue-darken-2 text-h3 tw-text-center tw-mb-8">{{ title }}</div>
    <div class="text-body-1 tw-text-left tw-mb-8">{{ desc }}</div>
    <v-item-group multiple>
      <v-row>
        <v-col v-for="(item, index) in list" :key="index" cols="12" :lg="lgCol" md="4" sm="6">
          <v-hover v-slot="{ isHovering, props }" open-delay="200">
            <v-card
              :elevation="isHovering ? 16 : 2"
              :class="{ 'on-hover': isHovering }"
              class="mx-auto"
              height="350"
              width="260"
              v-bind="props"
            >
              <v-img :src="item.imageUrl" />
              <v-card-text class="text-center font-weight-medium text-subtitle-1">
                {{ item.name }}
              </v-card-text>
            </v-card>
          </v-hover>
        </v-col>
      </v-row>
    </v-item-group>
  </v-container>
  <!-- <li class="tw-flex-1 tw-flex-row item tw-mb-8"></li> -->
</template>

<script setup lang="ts">
import type { Category } from '@/type'
import { computed, ref } from 'vue'

const props = defineProps<{
  title: string
  desc?: string
  list: Category[] | { name: string; imageUrl?: string }[]
  cardNum?: number
}>()

const lgCol = computed(() => (props.cardNum === 3 ? 4 : 3))
</script>