PrivacyPolicy.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <div class="min-h-screen bg-white pt-24 pb-16">
  3. <div class="container mx-auto px-4 max-w-3xl">
  4. <div class="mb-12 animate-slide-up">
  5. <h1 class="font-display text-4xl sm:text-5xl font-extrabold mb-4 tracking-tight">
  6. {{ t("privacy.title") }}
  7. </h1>
  8. <p class="text-foreground/60 text-lg font-medium leading-relaxed">
  9. {{ t("privacy.subtitle") }}
  10. </p>
  11. </div>
  12. <div class="space-y-10">
  13. <section
  14. v-for="(section, idx) in (tm('privacy.sections') as any)"
  15. :key="idx"
  16. class="animate-slide-up"
  17. :style="{ animationDelay: `${idx * 100}ms` }"
  18. >
  19. <div class="flex items-start gap-4">
  20. <div class="w-10 h-10 bg-primary/5 rounded-xl flex items-center justify-center flex-shrink-0 mt-1">
  21. <span class="text-primary font-display font-bold">0{{ idx + 1 }}</span>
  22. </div>
  23. <div class="space-y-2">
  24. <h2 class="font-display text-xl font-bold tracking-tight text-foreground">
  25. {{ rt(section.title) }}
  26. </h2>
  27. <p class="text-foreground/50 text-base leading-relaxed font-medium">
  28. {{ rt(section.content) }}
  29. </p>
  30. </div>
  31. </div>
  32. </section>
  33. </div>
  34. <div class="mt-16 p-8 rounded-[2rem] bg-secondary/30 animate-fade-in">
  35. <div class="flex flex-col sm:flex-row items-center justify-between gap-6">
  36. <div class="space-y-1">
  37. <h3 class="font-display text-lg font-bold">{{ t("footer.contact") }}</h3>
  38. <p class="text-foreground/40 text-sm font-medium">{{ t("privacy.responseNotice") }}</p>
  39. </div>
  40. <a href="mailto:hello@radionica3d.me" class="inline-flex items-center gap-2 px-6 py-3 bg-white border border-black/[0.05] rounded-2xl font-bold text-sm hover:shadow-md transition-all active:scale-95">
  41. <Mail class="w-4 h-4 text-primary" />
  42. hello@radionica3d.me
  43. </a>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </template>
  49. <script setup lang="ts">
  50. import { useI18n } from "vue-i18n";
  51. import { Mail } from "lucide-vue-next";
  52. const { t, tm, rt } = useI18n();
  53. </script>