site-footer.tsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { getTranslations } from "next-intl/server";
  2. import { Link } from "@/i18n/navigation";
  3. import { LocaleSwitcher } from "@/components/locale-switcher";
  4. export async function SiteFooter() {
  5. const t = await getTranslations("footer");
  6. const tc = await getTranslations("courses");
  7. const year = new Date().getFullYear();
  8. return (
  9. <footer className="relative mt-auto overflow-hidden rounded-t-[2rem] bg-[var(--navy)] text-slate-300 shadow-[0_-12px_48px_rgba(15,23,42,0.12)]">
  10. <div
  11. className="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-amber-400/40 to-transparent"
  12. aria-hidden
  13. />
  14. <div className="from-background absolute -top-px left-0 right-0 h-8 bg-gradient-to-b to-transparent opacity-90" />
  15. <div className="site-container section-block-compact relative pb-16 pt-10 sm:pb-10 sm:pt-12">
  16. <div className="grid gap-8 lg:grid-cols-4 lg:gap-10">
  17. <div className="lg:col-span-1">
  18. <p className="font-serif text-xl font-bold text-white">金策弘论社</p>
  19. <p className="mt-3 text-sm leading-relaxed text-slate-400">{t("tagline")}</p>
  20. <p className="mt-5 text-xs text-slate-500">{t("rights", { year })}</p>
  21. <LocaleSwitcher />
  22. </div>
  23. <div className="grid grid-cols-3 gap-5 border-t border-white/10 pt-6 lg:col-span-3 lg:border-0 lg:pt-0">
  24. <div>
  25. <p className="text-xs font-bold uppercase tracking-[0.15em] text-amber-400/90">
  26. {t("quick")}
  27. </p>
  28. <ul className="mt-3 space-y-2.5 text-sm">
  29. <li>
  30. <Link href="/courses" className="transition hover:text-white">
  31. {tc("title")}
  32. </Link>
  33. </li>
  34. <li>
  35. <Link href="/faq" className="transition hover:text-white">
  36. {t("faq")}
  37. </Link>
  38. </li>
  39. <li>
  40. <Link href="/purchase-guarantee" className="transition hover:text-white">
  41. {t("guarantee")}
  42. </Link>
  43. </li>
  44. <li>
  45. <Link href="/contact" className="transition hover:text-white">
  46. {t("contactUs")}
  47. </Link>
  48. </li>
  49. </ul>
  50. </div>
  51. <div>
  52. <p className="text-xs font-bold uppercase tracking-[0.15em] text-amber-400/90">
  53. {t("legal")}
  54. </p>
  55. <ul className="mt-3 space-y-2.5 text-sm">
  56. <li>
  57. <Link href="/legal/terms" className="transition hover:text-white">
  58. {t("terms")}
  59. </Link>
  60. </li>
  61. <li>
  62. <Link href="/legal/privacy" className="transition hover:text-white">
  63. {t("privacy")}
  64. </Link>
  65. </li>
  66. <li>
  67. <Link href="/legal/copyright" className="transition hover:text-white">
  68. {t("copyright")}
  69. </Link>
  70. </li>
  71. </ul>
  72. </div>
  73. <div>
  74. <p className="text-xs font-bold uppercase tracking-[0.15em] text-amber-400/90">
  75. {t("contact")}
  76. </p>
  77. <p className="mt-3 text-sm leading-relaxed text-slate-400">
  78. {t("phone")}
  79. <br />
  80. <span className="text-slate-200">{t("phoneValue")}</span>
  81. </p>
  82. <p className="mt-3 text-sm leading-relaxed text-slate-400">
  83. {t("email")}
  84. <br />
  85. <a
  86. href={`mailto:${t("emailValue")}`}
  87. className="break-all text-slate-200 underline-offset-2 transition hover:text-white hover:underline"
  88. >
  89. {t("emailValue")}
  90. </a>
  91. </p>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </footer>
  97. );
  98. }