SPB Git

Repository Public

page.tsx 3.8 KB 86 lines tsx

1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// /admin/connexion — la porte du panel, version signature : mur encre avec3// filigrane KA géant et lignes « ce que le panel contient » à gauche,4// carte de connexion à ombre dure à droite. Mobile : la carte seule, sur5// un condensé du mur. Hors du groupe (panel) : pas de garde ici.6import type { Metadata } from "next";7import { redirect } from "next/navigation";8import { getAdminSession } from "@/lib/comms/admin-auth";9import LoginForm from "./LoginForm";1011export const metadata: Metadata = {12  title: "Connexion — administration",13  robots: { index: false, follow: false },14};1516const LINES: [string, string][] = [17  ["Inbox", "les demandes des 10 formulaires publics, priorisées et assignées"],18  ["Courriel", "erikabc@ et spboucher@groupe-ka.com — envoi et réception Resend"],19  ["Candidatures", "le pipeline d'embauche, du CV à l'offre"],20  ["Équipe & accès", "rôles, confidentialité et mots de passe"],21];2223export default async function AdminLoginPage() {24  if (await getAdminSession()) redirect("/admin");25  return (26    <main data-admin-root className="min-h-[100dvh] lg:grid lg:grid-cols-[1.05fr_1fr]">27      {/* mur encre — plein écran desktop, manchette compacte mobile */}28      <section className="login-wall flex flex-col justify-between px-6 py-8 lg:px-14 lg:py-12">29        <div className="login-watermark" aria-hidden="true">30          KA31        </div>32        <div className="relative">33          <p className="gk-display text-[26px] font-bold tracking-[-0.04em] lg:text-[32px]">34            Groupe{" "}35            <span className="inline-block -rotate-2 rounded-md bg-lime px-[8px] pb-[3px] text-ink">36              KA37            </span>38          </p>39          <p className="gk-mono mt-2 text-[10px] font-bold tracking-[0.24em] text-[rgba(245,243,238,0.55)] uppercase">40            Communication Hub · Administration41          </p>42          <h1 className="gk-display mt-8 hidden max-w-md text-[clamp(30px,3.2vw,44px)] leading-[1.02] font-bold tracking-[-0.035em] uppercase lg:block">43            Une seule porte.44            <br />45            Tout le <span className="text-lime">courrier</span> du groupe.46          </h1>47        </div>48        <div className="relative mt-8 hidden lg:block">49          {LINES.map(([k, v]) => (50            <p key={k} className="login-line">51              <span className="pulse-dot" aria-hidden="true" />52              <b>{k}</b>53              <span className="font-normal normal-case tracking-normal">{v}</span>54            </p>55          ))}56          <p className="gk-mono mt-6 text-[9.5px] font-bold tracking-[0.18em] text-[rgba(245,243,238,0.35)] uppercase">57            Accès réservé · toutes les actions sont journalisées · RBAC serveur58          </p>59        </div>60      </section>6162      {/* carte de connexion */}63      <section className="flex flex-1 items-start justify-center bg-ink px-4 pt-6 pb-14 lg:items-center lg:bg-paper lg:px-10 lg:pt-10">64        <div className="w-full max-w-[400px]">65          <div className="login-card p-7 sm:p-9">66            <p className="kicker">Connexion</p>67            <h2 className="gk-display mt-3 text-[24px] leading-tight font-bold tracking-[-0.03em]">68              Ouvrir le panel69            </h2>70            <p className="mt-2 text-[13px] leading-relaxed text-ink-2">71              Votre boîte courriel, l&apos;inbox des demandes et le pipeline —72              au même endroit.73            </p>74            <div className="mt-6">75              <LoginForm />76            </div>77          </div>78          <p className="gk-mono mt-5 text-center text-[9.5px] font-bold tracking-[0.16em] text-[rgba(245,243,238,0.45)] uppercase lg:text-ink-3">79            Session de 12 heures · chiffrée · révoquée au changement de mot de passe80          </p>81        </div>82      </section>83    </main>84  );85}86
Files main
Menu

Theme