forked from BRETT/BRETT
46 lines
1.7 KiB
Vue
46 lines
1.7 KiB
Vue
<script setup lang="ts">
|
|
import type { CardEffectKey } from '~~/shared/utils/cardEffects'
|
|
import EffectAcidSquares from '@/components/effects/EffectAcidSquares.vue'
|
|
import EffectAurora from '@/components/effects/EffectAurora.vue'
|
|
import EffectCrtWarp from '@/components/effects/EffectCrtWarp.vue'
|
|
import EffectDither from '@/components/effects/EffectDither.vue'
|
|
import EffectGradientWaves from '@/components/effects/EffectGradientWaves.vue'
|
|
import EffectLetterGlitch from '@/components/effects/EffectLetterGlitch.vue'
|
|
import EffectLineWaves from '@/components/effects/EffectLineWaves.vue'
|
|
import EffectParticles from '@/components/effects/EffectParticles.vue'
|
|
import EffectPlasma from '@/components/effects/EffectPlasma.vue'
|
|
import EffectScanner from '@/components/effects/EffectScanner.vue'
|
|
import EffectShapeGrid from '@/components/effects/EffectShapeGrid.vue'
|
|
import EffectSilk from '@/components/effects/EffectSilk.vue'
|
|
import EffectSoftAurora from '@/components/effects/EffectSoftAurora.vue'
|
|
import EffectWaves from '@/components/effects/EffectWaves.vue'
|
|
|
|
const props = defineProps<{
|
|
effect: CardEffectKey
|
|
color: string
|
|
}>()
|
|
|
|
const COMPONENTS = {
|
|
'gradient-waves': EffectGradientWaves,
|
|
'aurora': EffectAurora,
|
|
'particles': EffectParticles,
|
|
'letter-glitch': EffectLetterGlitch,
|
|
'waves': EffectWaves,
|
|
'scanner': EffectScanner,
|
|
'acid-squares': EffectAcidSquares,
|
|
'crt-warp': EffectCrtWarp,
|
|
'dither': EffectDither,
|
|
'soft-aurora': EffectSoftAurora,
|
|
'silk': EffectSilk,
|
|
'shape-grid': EffectShapeGrid,
|
|
'plasma': EffectPlasma,
|
|
'line-waves': EffectLineWaves,
|
|
} as const
|
|
|
|
const component = computed(() => COMPONENTS[props.effect] ?? null)
|
|
</script>
|
|
|
|
<template>
|
|
<component :is="component" v-if="component" :color="color" />
|
|
</template>
|