国外MOSE官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.7 KiB

3 months ago
  1. <script setup lang="ts">
  2. import { useI18n } from 'vue-i18n';
  3. const { t } = useI18n();
  4. // 市场数据
  5. const marketData = [
  6. {
  7. id: 1,
  8. title: t('incentives.market_data.transaction_volume'),
  9. value: '120亿美元',
  10. 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',
  11. description: t('incentives.market_data.transaction_subtitle'),
  12. isActive: true,
  13. },
  14. {
  15. id: 2,
  16. title: t('incentives.market_data.growth_rate'),
  17. value: '3000%',
  18. icon: 'M7 11l5-5m0 0l5 5m-5-5v12',
  19. description: t('incentives.market_data.growth_subtitle'),
  20. isActive: true,
  21. },
  22. {
  23. id: 3,
  24. title: t('incentives.market_data.security_incidents'),
  25. value: '20亿美元',
  26. 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',
  27. description: t('incentives.market_data.security_subtitle'),
  28. isActive: true,
  29. }
  30. ];
  31. // 过滤出激活的数据
  32. const activeMarketData = marketData.filter(item => item.isActive);
  33. </script>
  34. <template>
  35. <section class="py-16 px-6 md:px-12 lg:px-24 bg-background-light relative">
  36. <div class="container mx-auto relative z-10">
  37. <div class="text-center mb-16">
  38. <h2 class="text-2xl md:text-3xl font-bold text-text mb-4 wow animate__animated animate__fadeInUp animate__duration-fast">
  39. {{ t('incentives.market_data.title') }}
  40. </h2>
  41. <p class="text-text-secondary max-w-2xl mx-auto wow animate__animated animate__fadeIn animate__delay-xs">
  42. {{ t('incentives.subtitle') }}
  43. </p>
  44. </div>
  45. <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
  46. <!-- 市场数据统计卡片 -->
  47. <div
  48. v-for="(stat, index) in activeMarketData"
  49. :key="stat.id"
  50. class="bg-background rounded-xl p-8 shadow-card overflow-hidden relative wow animate__animated animate__fadeInUp"
  51. :class="{
  52. 'animate__delay-xs': index === 1,
  53. 'animate__delay-sm': index === 2
  54. }"
  55. >
  56. <!-- 卡片内容 -->
  57. <div class="flex items-start gap-6">
  58. <!-- 图标 -->
  59. <div class="p-4 rounded-full bg-primary bg-opacity-10 flex-shrink-0">
  60. <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">
  61. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" :d="stat.icon" />
  62. </svg>
  63. </div>
  64. <!-- 数值和描述 -->
  65. <div>
  66. <div class="flex items-baseline mb-2">
  67. <h3 class="text-4xl font-bold text-text mr-2">{{ stat.value }}</h3>
  68. </div>
  69. <div>
  70. <p class="text-lg font-medium text-primary-light">{{ stat.title }}</p>
  71. <p class="text-text-secondary">{{ stat.description }}</p>
  72. </div>
  73. </div>
  74. </div>
  75. <!-- 背景装饰 -->
  76. <div class="absolute -bottom-6 -right-6 w-32 h-32 rounded-full bg-primary bg-opacity-5"></div>
  77. <div class="absolute top-6 right-10 w-20 h-20 rounded-full bg-accent bg-opacity-5"></div>
  78. </div>
  79. </div>
  80. </div>
  81. <!-- 背景装饰 -->
  82. <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30">
  83. <div class="absolute -bottom-24 left-1/4 w-64 h-64 rounded-full bg-primary-light blur-3xl"></div>
  84. </div>
  85. </section>
  86. </template>
  87. <style scoped>
  88. /* 渐变效果 */
  89. .bg-gradient-primary {
  90. background: linear-gradient(135deg, var(--primary-light), var(--primary));
  91. }
  92. </style>