From 34db684fe12be72196ca2828bcb1899f38a5ba17 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Mon, 27 Jul 2026 16:34:32 -0400 Subject: [PATCH] subdomain footer --- src/app.css | 4 ++++ src/app.tsx | 2 ++ src/components/SubdomainFooter.tsx | 35 ++++++++++++++++++++++++++++++ src/lib/site-context.ts | 4 ++-- src/routes/inputhalo/index.tsx | 14 ------------ src/routes/nessa/index.tsx | 13 ----------- 6 files changed, 43 insertions(+), 29 deletions(-) create mode 100644 src/components/SubdomainFooter.tsx diff --git a/src/app.css b/src/app.css index 5840673..4843bbe 100644 --- a/src/app.css +++ b/src/app.css @@ -173,6 +173,8 @@ --color-base: #fbf1c7; --color-mantle: #f3eac1; --color-crust: #e7deb7; + --color-button-text: #ffffff; + --color-button-text-alt: var(--color-text); } :root.dark { @@ -202,6 +204,8 @@ --color-base: #1e1e2e; --color-mantle: #141620; --color-crust: #0e0f16; + --color-button-text: var(--color-crust); + --color-button-text-alt: #ffffff; } :root { diff --git a/src/app.tsx b/src/app.tsx index eda125f..c1fbabe 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -11,6 +11,7 @@ import { import "./app.css"; import { LeftBar, RightBar } from "./components/Bars"; import { TerminalSplash } from "./components/TerminalSplash"; +import SubdomainFooter from "./components/SubdomainFooter"; import { MetaProvider } from "@solidjs/meta"; import ErrorBoundaryFallback from "./components/ErrorBoundaryFallback"; import { BarsProvider, useBars } from "./context/bars"; @@ -214,6 +215,7 @@ function AppLayout(props: { children: any }) { {props.children} + diff --git a/src/components/SubdomainFooter.tsx b/src/components/SubdomainFooter.tsx new file mode 100644 index 0000000..e305bd5 --- /dev/null +++ b/src/components/SubdomainFooter.tsx @@ -0,0 +1,35 @@ +/** + * Minimal footer for product subdomains — "made with <3 by Mike Freno" + * linking back to the root domain. + * + * Placed in the shared subdomain layout (app.tsx) so every subdomain page + * gets it automatically. Uses `buildMainSiteUrl()` so the cross-domain link + * resolves correctly in both dev (path-based localhost) and prod (host-based + * freno.me). + */ +import { A } from "@solidjs/router"; +import { buildMainSiteUrl } from "~/lib/site-context"; + +export default function SubdomainFooter() { + return ( + + ); +} diff --git a/src/lib/site-context.ts b/src/lib/site-context.ts index 83bc74d..1ee3823 100644 --- a/src/lib/site-context.ts +++ b/src/lib/site-context.ts @@ -108,7 +108,7 @@ export const SITE_CONFIG: Record = { baseRoutePrefix: "/gaze", displayName: "Gaze", titleSuffix: " | Gaze", - brandColor: "#f9e2af", + brandColor: "#002cff", ogDefaultImage: "/gaze/og-default.png", faviconPath: "/gaze/favicon/favicon.ico" }, @@ -119,7 +119,7 @@ export const SITE_CONFIG: Record = { baseRoutePrefix: "/inputhalo", displayName: "InputHalo", titleSuffix: " | InputHalo", - brandColor: "#f38ba8", + brandColor: "#41a5ff", ogDefaultImage: "/inputhalo/og-default.png", faviconPath: "/inputhalo/favicon/favicon.ico" } diff --git a/src/routes/inputhalo/index.tsx b/src/routes/inputhalo/index.tsx index 828ade4..1209a67 100644 --- a/src/routes/inputhalo/index.tsx +++ b/src/routes/inputhalo/index.tsx @@ -14,7 +14,6 @@ import { For, createSignal } from "solid-js"; import { A } from "@solidjs/router"; import { PageHead } from "~/components/PageHead"; import SubdomainHeader from "~/components/SubdomainHeader"; -import { buildMainSiteUrl } from "~/lib/site-context"; import Button from "~/components/ui/Button"; import DownloadOnAppStoreDark from "~/components/icons/DownloadOnAppStoreDark"; import { useDarkMode } from "~/context/darkMode"; @@ -271,19 +270,6 @@ export default function InputHaloLanding() {

- - {/* ─── Footer ─────────────────────────────────────────────── */} - ); diff --git a/src/routes/nessa/index.tsx b/src/routes/nessa/index.tsx index 6c01162..69a1950 100644 --- a/src/routes/nessa/index.tsx +++ b/src/routes/nessa/index.tsx @@ -343,19 +343,6 @@ export default function NessaLanding() { - - {/* ─── Footer ───────────────────────────────────────────────── */} - );