|
|
- <script setup lang="ts">
- import { useI18n } from 'vue-i18n';
-
- const { t } = useI18n();
-
- // 市场数据
- const marketData = [
- {
- id: 1,
- title: t('incentives.market_data.transaction_volume'),
- value: '120亿美元',
- icon: 'M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2-3 .895-3 2 1.343 2 3 2',
- description: t('incentives.market_data.transaction_subtitle'),
- isActive: true,
- },
- {
- id: 2,
- title: t('incentives.market_data.growth_rate'),
- value: '3000%',
- icon: 'M7 11l5-5m0 0l5 5m-5-5v12',
- description: t('incentives.market_data.growth_subtitle'),
- isActive: true,
- },
- {
- id: 3,
- title: t('incentives.market_data.security_incidents'),
- value: '20亿美元',
- icon: 'M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z',
- description: t('incentives.market_data.security_subtitle'),
- isActive: true,
- }
- ];
-
- // 过滤出激活的数据
- const activeMarketData = marketData.filter(item => item.isActive);
- </script>
-
- <template>
- <section class="py-16 px-6 md:px-12 lg:px-24 bg-background-light relative">
- <div class="container mx-auto relative z-10">
- <div class="text-center mb-16">
- <h2 class="text-2xl md:text-3xl font-bold text-text mb-4 wow animate__animated animate__fadeInUp animate__duration-fast">
- {{ t('incentives.market_data.title') }}
- </h2>
- <p class="text-text-secondary max-w-2xl mx-auto wow animate__animated animate__fadeIn animate__delay-xs">
- {{ t('incentives.subtitle') }}
- </p>
- </div>
-
- <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
- <!-- 市场数据统计卡片 -->
- <div
- v-for="(stat, index) in activeMarketData"
- :key="stat.id"
- class="bg-background rounded-xl p-8 shadow-card overflow-hidden relative wow animate__animated animate__fadeInUp"
- :class="{
- 'animate__delay-xs': index === 1,
- 'animate__delay-sm': index === 2
- }"
- >
- <!-- 卡片内容 -->
- <div class="flex items-start gap-6">
- <!-- 图标 -->
- <div class="p-4 rounded-full bg-primary bg-opacity-10 flex-shrink-0">
- <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-primary-light" fill="none" viewBox="0 0 24 24" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" :d="stat.icon" />
- </svg>
- </div>
-
- <!-- 数值和描述 -->
- <div>
- <div class="flex items-baseline mb-2">
- <h3 class="text-4xl font-bold text-text mr-2">{{ stat.value }}</h3>
- </div>
- <div>
- <p class="text-lg font-medium text-primary-light">{{ stat.title }}</p>
- <p class="text-text-secondary">{{ stat.description }}</p>
- </div>
- </div>
- </div>
-
- <!-- 背景装饰 -->
- <div class="absolute -bottom-6 -right-6 w-32 h-32 rounded-full bg-primary bg-opacity-5"></div>
- <div class="absolute top-6 right-10 w-20 h-20 rounded-full bg-accent bg-opacity-5"></div>
- </div>
- </div>
- </div>
-
- <!-- 背景装饰 -->
- <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30">
- <div class="absolute -bottom-24 left-1/4 w-64 h-64 rounded-full bg-primary-light blur-3xl"></div>
- </div>
- </section>
- </template>
-
- <style scoped>
- /* 渐变效果 */
- .bg-gradient-primary {
- background: linear-gradient(135deg, var(--primary-light), var(--primary));
- }
- </style>
|