import type { Metadata } from 'next'
import { getTranslations, setRequestLocale } from 'next-intl/server'
import { PageHero } from '@/components/page-hero'
import { Link } from '@/i18n/navigation'
import { locales, type Locale } from '@/i18n/config'
import { getStaticSiteSettings } from '@/lib/site-settings'
import { buildShareMetadata } from '@/lib/metadata'

type PageProps = { params: Promise<{ locale: string }> }

export function generateStaticParams() {
  return locales.map((locale) => ({ locale }))
}

export async function generateMetadata({ params }: PageProps): Promise<Metadata> {
  const { locale } = await params
  const t = await getTranslations({ locale, namespace: 'legal.terms' })
  const site = getStaticSiteSettings()
  return buildShareMetadata({
    title: t('meta.title'),
    description: t('meta.description', { name: site.shortName }),
    path: `/${locale}/legal/terms`,
    site,
  })
}

export default async function TermsPage({ params }: PageProps) {
  const { locale } = await params
  setRequestLocale(locale as Locale)
  const t = await getTranslations('legal.terms')
  const site = getStaticSiteSettings()

  return (
    <main>
      <PageHero
        eyebrow={t('hero.eyebrow')}
        title={t('hero.title')}
        description={t('hero.description', { name: site.shortName })}
      />
      <section className="section-padding">
        <div className="container-wide prose prose-neutral max-w-3xl dark:prose-invert">
          <p>{t('p1')}</p>
          <p>{t('p2', { org: site.name })}</p>
          <p>{t('p3', { email: site.trainingEmail })}</p>
          <p>
            <Link href="/legal/privacy-policy">{t('privacyLink')}</Link> ·{' '}
            <Link href="/legal/cookies">{t('cookiesLink')}</Link>
          </p>
        </div>
      </section>
    </main>
  )
}
