diff --git a/next-env.d.ts b/next-env.d.ts index 9edff1c..c4b7818 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/types/routes.d.ts"; +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/package-lock.json b/package-lock.json index 9d4f1ea..23f426b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -598,9 +598,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -617,9 +614,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -636,9 +630,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -655,9 +646,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -674,9 +662,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -693,9 +678,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -712,9 +694,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -731,9 +710,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -750,9 +726,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -775,9 +748,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -800,9 +770,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -825,9 +792,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -850,9 +814,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -875,9 +836,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -900,9 +858,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -925,9 +880,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1119,9 +1071,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1138,9 +1087,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1157,9 +1103,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1176,9 +1119,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1382,9 +1322,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1405,9 +1342,6 @@ "cpu": [ "arm" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1428,9 +1362,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1451,9 +1382,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1474,9 +1402,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1497,9 +1422,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1657,9 +1579,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -1676,9 +1595,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -1695,9 +1611,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -1714,9 +1627,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -1933,9 +1843,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1953,9 +1860,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1973,9 +1877,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1993,9 +1894,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2510,9 +2408,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2527,9 +2422,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2544,9 +2436,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2561,9 +2450,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2578,9 +2464,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2595,9 +2478,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2612,9 +2492,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2629,9 +2506,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -4964,9 +4838,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -4988,9 +4859,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5012,9 +4880,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5036,9 +4901,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5365,6 +5227,17 @@ } } }, + "node_modules/next-intl/node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/src/app/[locale]/cart/page.tsx b/src/app/[locale]/cart/page.tsx index 88c60a4..55d00f4 100644 --- a/src/app/[locale]/cart/page.tsx +++ b/src/app/[locale]/cart/page.tsx @@ -12,7 +12,7 @@ export default async function CartPage() { return (
-

+

{t("title")}

diff --git a/src/app/[locale]/checkout/page.tsx b/src/app/[locale]/checkout/page.tsx index 746126a..d54c420 100644 --- a/src/app/[locale]/checkout/page.tsx +++ b/src/app/[locale]/checkout/page.tsx @@ -11,10 +11,10 @@ export default async function CheckoutPage() { return (
-

+

{t("title")}

-

{t("subtitle")}

+

{t("subtitle")}

diff --git a/src/app/[locale]/not-found.tsx b/src/app/[locale]/not-found.tsx index 34b6aec..0872afc 100644 --- a/src/app/[locale]/not-found.tsx +++ b/src/app/[locale]/not-found.tsx @@ -6,10 +6,10 @@ export default async function NotFound() { return (
-

{t("notFound")}

+

{t("notFound")}

{t("back")} diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index 71f6a1b..584dfda 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -11,31 +11,31 @@ export default async function HomePage() {
-

+

{t("hero.eyebrow")}

-

+

{t("hero.title")}

-

+

{t("hero.subtitle")}

{t("hero.ctaCatalog")} {t("hero.ctaQuote")}
-
+
{th("stackAlt")}

{t("services.title")}

-

{t("services.subtitle")}

+

{t("services.subtitle")}

    {( [ @@ -75,17 +75,44 @@ export default async function HomePage() { ).map((key) => (
  • -
    - - ✓ - +
    + {key === "cut" && ( + + + + )} + {key === "coating" && ( + + + + )} + {key === "docs" && ( + + + + )} + {key === "delivery" && ( + + + + )} + {key === "sizing" && ( + + + + )} + {key === "bulk" && ( + + + + )}
    -

    +

    {t(`services.${key}.title`)}

    -

    +

    {t(`services.${key}.body`)}

  • @@ -96,23 +123,23 @@ export default async function HomePage() {
    -

    +

    {t("how.title")}

    -

    {t("how.subtitle")}

    +

    {t("how.subtitle")}

      {([1, 2, 3, 4] as const).map((n) => (
    1. - + {n} -

      +

      {t(`how.step${n}.title` as "how.step1.title")}

      -

      +

      {t(`how.step${n}.body` as "how.step1.body")}

    2. @@ -123,28 +150,28 @@ export default async function HomePage() {

      {t("faq.title")}

      -

      {t("faq.subtitle")}

      +

      {t("faq.subtitle")}

      {([1, 2, 3, 4, 5, 6] as const).map((n) => (
      - + {t(`faq.i${n}.q` as "faq.i1.q")} -

      +

      {t(`faq.i${n}.a` as "faq.i1.a")}

      @@ -167,21 +194,21 @@ export default async function HomePage() {
      -
      -

      {t("ctaBand.title")}

      -

      +

      +

      {t("ctaBand.title")}

      +

      {t("ctaBand.body")}

      {t("ctaBand.primary")} {t("ctaBand.secondary")} diff --git a/src/app/[locale]/product/[slug]/page.tsx b/src/app/[locale]/product/[slug]/page.tsx index ff0385d..4521824 100644 --- a/src/app/[locale]/product/[slug]/page.tsx +++ b/src/app/[locale]/product/[slug]/page.tsx @@ -39,7 +39,7 @@ export default async function ProductPage({ params }: Props) {
      ← {t("back")} @@ -47,8 +47,8 @@ export default async function ProductPage({ params }: Props) {
      -
      -

      +

      +

      {t("thicknessLabel")}

      {t("thicknessValue", { value: formatThicknessMm(mm), @@ -72,13 +72,13 @@ export default async function ProductPage({ params }: Props) {
      -

      +

      {tcl(product.catalogLineKey)}

      {tn("supplier")}

      -

      +

      {tp(`${slug}.name`)}

      @@ -95,8 +95,8 @@ export default async function ProductPage({ params }: Props) {

      -
      -

      +
      +

      {t("details")}

      diff --git a/src/app/layout.tsx b/src/app/layout.tsx index efce0b4..a8f23c3 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -11,7 +11,7 @@ const dmSans = DM_Sans({ export default function RootLayout({ children }: { children: ReactNode }) { return ( - + {children} diff --git a/src/components/CartBadge.tsx b/src/components/CartBadge.tsx index 065f1e2..be85c3e 100644 --- a/src/components/CartBadge.tsx +++ b/src/components/CartBadge.tsx @@ -9,7 +9,7 @@ export function CartBadge() { if (count === 0) return null; return ( - + {count > 99 ? "99+" : count} ); diff --git a/src/components/CartCheckoutLink.tsx b/src/components/CartCheckoutLink.tsx index 5dd2a27..b496854 100644 --- a/src/components/CartCheckoutLink.tsx +++ b/src/components/CartCheckoutLink.tsx @@ -12,7 +12,7 @@ export function CartCheckoutLink() {

      {t("checkout")} diff --git a/src/components/CartView.tsx b/src/components/CartView.tsx index 0f9b3eb..2cead73 100644 --- a/src/components/CartView.tsx +++ b/src/components/CartView.tsx @@ -17,11 +17,11 @@ export function CartView() { if (items.length === 0) { return ( -
      -

      {t("empty")}

      +
      +

      {t("empty")}

      {t("emptyCta")} @@ -79,13 +79,13 @@ function CartLineRow({ const lineTotal = price * line.quantity; return ( -
    3. +
    4. -

      {name}

      +

      {name}

      {sub ? ( -

      {sub}

      +

      {sub}

      ) : null} -

      +

      {price.toFixed(2)}{" "} {product ? tu(product.unitKey) : ""} {t("each")}

      @@ -103,9 +103,9 @@ function CartLineRow({ onChange={(e) => updateQuantity(line.lineId, Number(e.target.value) || 1) } - className="w-20 rounded-lg border border-stone-200 px-2 py-1.5 text-sm font-semibold" + className="w-20 rounded-lg border border-neutral-200 bg-neutral-50 px-2 py-1.5 text-sm font-semibold outline-none transition duration-150 focus:border-neutral-300 focus:bg-white focus:ring-2 focus:ring-neutral-900/8" /> -

      +

      {lineTotal.toFixed(2)}