"use client"; import Link from "next/link"; import { useReveal } from "@/hooks/use-reveal"; import { useT } from "@/components/locale-provider"; type Loc = { en: string; sv: string }; type LocOrStr = string | Loc; const STATS: [LocOrStr, Loc][] = [ ["20", { en: "markets", sv: "marknader" }], [{ en: "Per field", sv: "Per fält" }, { en: "provenance & confidence", sv: "härkomst & konfidens" }], ["50/50", { en: "start & approved", sv: "start & godkänt" }], ["GDPR", { en: "native, with DPA", sv: "native, med DPA" }], ]; // Data-native hero artifact: a miniature company table that "is" the product. const ROWS: [string, LocOrStr, LocOrStr, 0 | 1 | 2 | 3][] = [ ["556016-0680", "Volvo Group", "GLEIF", 3], ["915933149", "Equinor ASA", "Brreg", 3], ["25052943", "Maersk A/S", "CVR", 2], ["0112038-9", "Nokia Oyj", "PRH", 2], ["—", { en: "Email (FI)", sv: "E-post (FI)" }, { en: "license", sv: "licens" }, 0], ]; const PROV = ["var(--prov-0)", "var(--prov-1)", "var(--prov-2)", "var(--prov-3)"]; export function HeroSection() { const ref = useReveal(); const t = useT(); // Resolve a value that may be a literal string (brand/number) or a localized {en,sv} pair. const tx = (v: LocOrStr) => (typeof v === "string" ? v : t(v)); return (
{/* graph-paper grid */}
{/* faint oversized wordmark */}
0pt
{/* single red marker — the only red at rest */}

{t({ en: "00 — Data services on demand", sv: "00 — Datatjänster på beställning" })}

{t({ en: "Order data.", sv: "Beställ data." })}
{t({ en: "Validate fields.", sv: "Validera fält." })}

{t({ en: "Build the job. Pay half. Track production. Approve. The source is always visible.", sv: "Bygg jobbet. Betala hälften. Följ produktionen. Godkänn. Källan syns — alltid.", })}

{t({ en: "Build an order", sv: "Bygg beställning" })} {t({ en: "See a dataset", sv: "Se ett dataset" })}
{STATS.map(([n, l], i) => (

{tx(n)}

{t(l)}

))}
{/* the artifact */}
dim_company {t({ en: "provenance", sv: "härkomst" })}
{ROWS.map((r, i) => (

{tx(r[1])}

{r[0]}

{tx(r[2])}
))}
); }