QuotingSection.vue 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <section id="philosophy" class="py-12 sm:py-20 bg-white relative overflow-hidden scroll-mt-24">
  3. <div class="absolute inset-0 bg-gradient-glow opacity-30" />
  4. <div class="container mx-auto px-4 relative z-10">
  5. <div class="text-center mb-10 sm:mb-16 animate-slide-up">
  6. <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-primary/5 border border-primary/10 text-primary mb-4">
  7. <Shield class="w-4 h-4" />
  8. <span class="text-[10px] font-display font-bold tracking-[0.2em] uppercase">{{ t("pricing.badge") }}</span>
  9. </div>
  10. <h2 class="font-display text-3xl sm:text-4xl lg:text-5xl font-extrabold mb-4 tracking-tight">
  11. {{ t("pricing.title") }} <span class="text-primary">{{ t("pricing.titleGradient") }}</span>
  12. </h2>
  13. <p class="text-foreground/60 max-w-xl mx-auto text-base font-medium">{{ t("pricing.description") }}</p>
  14. </div>
  15. <div class="grid md:grid-cols-2 lg:grid-cols-4 gap-8">
  16. <div
  17. v-for="(step, index) in steps"
  18. :key="index"
  19. class="group relative p-6 bg-white border border-black/[0.04] rounded-[2rem] hover:border-primary/20 transition-all duration-500 hover:shadow-hover animate-scale-in"
  20. :style="{ animationDelay: step.delay }"
  21. >
  22. <div class="w-12 h-12 bg-primary/5 rounded-[1.2rem] flex items-center justify-center mb-5 group-hover:bg-primary group-hover:text-primary-foreground transition-all duration-500">
  23. <component :is="step.icon" class="w-6 h-6 transition-transform group-hover:scale-110" />
  24. </div>
  25. <h3 class="font-display text-base font-bold mb-2 leading-tight group-hover:text-primary transition-colors">{{ step.title }}</h3>
  26. <div v-if="index < steps.length - 1" class="hidden lg:block absolute top-1/2 -right-4 w-8 h-[2px] bg-gradient-to-r from-primary/30 to-transparent z-0" />
  27. </div>
  28. </div>
  29. <!-- Philosophy block -->
  30. <div class="mt-10 sm:mt-16 p-8 sm:p-10 rounded-[2.5rem] bg-secondary/30 relative overflow-hidden group animate-fade-in">
  31. <div class="absolute top-0 right-0 w-64 h-64 bg-primary/5 rounded-full blur-3xl -mr-32 -mt-32 transition-transform group-hover:scale-110 duration-700" />
  32. <div class="grid lg:grid-cols-2 gap-10 items-center relative z-10">
  33. <div class="space-y-4">
  34. <h3 class="font-display text-2xl font-extrabold tracking-tight">
  35. {{ t("whyTrust.title") }} <span class="bg-primary/10 text-primary px-2 py-0.5 rounded-lg">{{ t("whyTrust.titleItalic") }}</span>?
  36. </h3>
  37. <div class="space-y-3 text-foreground/50 text-base font-medium leading-relaxed">
  38. <p>{{ t("whyTrust.description1") }}</p>
  39. <p>{{ t("whyTrust.description2") }}</p>
  40. </div>
  41. </div>
  42. <div class="grid grid-cols-2 gap-3">
  43. <div
  44. v-for="item in trustItems"
  45. :key="item.label"
  46. class="p-4 rounded-3xl bg-white border border-black/[0.03] flex flex-col items-center text-center group/item hover:shadow-sm transition-all shadow-[0_4px_10px_rgba(0,0,0,0.03)]"
  47. >
  48. <div class="text-xl font-bold text-primary mb-0.5 group-hover/item:scale-110 transition-transform">{{ item.value }}</div>
  49. <div class="text-[9px] uppercase tracking-[0.2em] font-extrabold text-foreground/30">{{ item.label }}</div>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. </section>
  56. </template>
  57. <script setup lang="ts">
  58. import { computed } from "vue";
  59. import { useI18n } from "vue-i18n";
  60. import { Shield, Send, Sparkles, Package, CreditCard, CheckCircle2 } from "lucide-vue-next";
  61. const { t } = useI18n();
  62. const steps = computed(() => [
  63. { icon: Send, title: t("pricing.trustSteps.step1"), delay: "0ms" },
  64. { icon: Sparkles, title: t("pricing.trustSteps.step2"), delay: "100ms" },
  65. { icon: Package, title: t("pricing.trustSteps.step3"), delay: "200ms" },
  66. { icon: CreditCard, title: t("pricing.trustSteps.step4"), delay: "300ms" },
  67. ]);
  68. const trustItems = computed(() => [
  69. { label: t("whyTrust.items.noPrepayment"), value: "100%" },
  70. { label: t("whyTrust.items.shipping"), value: "Fast" },
  71. { label: t("whyTrust.items.yourPrice"), value: "Fair" },
  72. { label: t("whyTrust.items.noCommissions"),value: "Open" },
  73. ]);
  74. </script>