Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/apps/web/app/account/page.tsx
blob: 2d362368a00cc8c8812dfbb6d7038b547dc0a03c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1

import type { Metadata } from "next";
import Link from "next/link";
import { Footer } from "@/components/Footer";
import { SiteHeader } from "@/components/SiteHeader";
import { getLocale } from "@/lib/locale.server";
import { getMessages } from "@/lib/localization";

export async function generateMetadata(): Promise<Metadata> {
  const { metadata } = getMessages(await getLocale());
  return {
    title: metadata.accountTitle,
    description: metadata.accountDescription,
    robots: { index: false, follow: false },
  };
}

export default async function AccountHomepage() {
  const locale = await getLocale();
  const { account, navigation } = getMessages(locale);
  return (
    <>
      <SiteHeader account locale={locale} />
      <main className="account-landing">
        <section className="account-landing-hero">
          <div className="shell account-landing-grid">
            <div>
              <p className="eyebrow">{account.landingEyebrow}</p>
              <h1>{account.landingTitle}</h1>
              <p>{account.landingDescription}</p>
              <div className="hero-actions">
                <Link className="button" href="/login">
                  {navigation.signIn}
                </Link>
                <Link className="button button-secondary" href="/register">
                  {navigation.createAccount}
                </Link>
              </div>
            </div>
            <div className="identity-card">
              <div className="identity-icon" aria-hidden="true">
                P
              </div>
              {account.identity.map(([label, description]) => (
                <div key={label}>
                  <span>{label}</span>
                  <strong>{description}</strong>
                </div>
              ))}
            </div>
          </div>
        </section>
        <section className="section">
          <div className="shell feature-grid">
            {account.features.map(([title, description], index) => (
              <article key={title}>
                <span>{String(index + 1).padStart(2, "0")}</span>
                <h2>{title}</h2>
                <p>{description}</p>
              </article>
            ))}
          </div>
        </section>
      </main>
      <Footer locale={locale} />
    </>
  );
}