diff --git a/app/en/resources/contact-us/contact-cards.tsx b/app/en/resources/contact-us/contact-cards.tsx index 9e2e720a9..1c4cd5ad1 100644 --- a/app/en/resources/contact-us/contact-cards.tsx +++ b/app/en/resources/contact-us/contact-cards.tsx @@ -20,7 +20,7 @@ import { Users, } from "lucide-react"; import posthog from "posthog-js"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { QuickStartCard } from "../../../_components/quick-start-card"; @@ -264,6 +264,14 @@ function SuccessMessage({ onClose }: { onClose: () => void }) { export function ContactCards() { const [isSalesModalOpen, setIsSalesModalOpen] = useState(false); const [isSubmitted, setIsSubmitted] = useState(false); + // Assemble the support mailto only after mount so the SSR/crawled markup + // shows a plain contact-page link — Cloudflare's email obfuscation then has + // nothing to rewrite into a broken /cdn-cgi/l/email-protection link. Mirrors + // (see app/_components/contact-email.tsx). + const [supportHref, setSupportHref] = useState("/en/resources/contact-us"); + useEffect(() => { + setSupportHref("mailto:support@arcade.dev"); + }, []); const handleContactSalesClick = () => { posthog.capture("Contact sales modal opened", { @@ -282,7 +290,7 @@ export function ContactCards() {
diff --git a/next.config.ts b/next.config.ts index c0c5b2062..c3347c3d6 100644 --- a/next.config.ts +++ b/next.config.ts @@ -31,6 +31,13 @@ const nextConfig: NextConfig = withLlmsTxt({ destination: "/:locale/resources/integrations", permanent: true, }, + // The auth provider is "square"; an external/stale link points at the + // old "squareup" slug, which 404s. Send it to the real page. + { + source: "/:locale/references/auth-providers/squareup", + destination: "/:locale/references/auth-providers/square", + permanent: true, + }, // Dissolved guides/security section { source: "/:locale/guides/security/security-research-program",