subdomain footer
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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}
|
||||
</Suspense>
|
||||
</ErrorBoundary>
|
||||
<SubdomainFooter />
|
||||
</div>
|
||||
</Show>
|
||||
</>
|
||||
|
||||
35
src/components/SubdomainFooter.tsx
Normal file
35
src/components/SubdomainFooter.tsx
Normal file
@@ -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 (
|
||||
<footer class="border-surface0 border-t py-8">
|
||||
<div class="flex items-center justify-between text-sm">
|
||||
<span class="text-text/60">
|
||||
made with <span class="text-red-400"><3</span> by{" "}
|
||||
<A
|
||||
href={buildMainSiteUrl()}
|
||||
class="text-text/80 hover:text-text underline underline-offset-4 transition-colors"
|
||||
>
|
||||
Mike Freno
|
||||
</A>
|
||||
</span>
|
||||
<A
|
||||
href={buildMainSiteUrl("/downloads")}
|
||||
class="text-text/80 hover:text-text underline underline-offset-4 transition-colors"
|
||||
>
|
||||
see more products
|
||||
</A>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
@@ -108,7 +108,7 @@ export const SITE_CONFIG: Record<SiteId, Site> = {
|
||||
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<SiteId, Site> = {
|
||||
baseRoutePrefix: "/inputhalo",
|
||||
displayName: "InputHalo",
|
||||
titleSuffix: " | InputHalo",
|
||||
brandColor: "#f38ba8",
|
||||
brandColor: "#41a5ff",
|
||||
ogDefaultImage: "/inputhalo/og-default.png",
|
||||
faviconPath: "/inputhalo/favicon/favicon.ico"
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* ─── Footer ─────────────────────────────────────────────── */}
|
||||
<footer class="border-surface0 relative z-10 border-t px-4 py-10">
|
||||
<div class="text-text/60 mx-auto flex max-w-6xl flex-col items-center justify-between gap-4 text-sm sm:flex-row">
|
||||
<span>{site().displayName}</span>
|
||||
<A
|
||||
href={buildMainSiteUrl()}
|
||||
class="hover:text-text underline-offset-4 hover:underline"
|
||||
>
|
||||
freno.me
|
||||
</A>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -343,19 +343,6 @@ export default function NessaLanding() {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* ─── Footer ───────────────────────────────────────────────── */}
|
||||
<footer class="border-surface0 relative z-10 border-t px-4 py-10">
|
||||
<div class="text-text/60 mx-auto flex max-w-6xl flex-col items-center justify-between gap-4 text-sm sm:flex-row">
|
||||
<span>{site().displayName}</span>
|
||||
<A
|
||||
href={buildMainSiteUrl()}
|
||||
class="hover:text-text underline-offset-4 hover:underline"
|
||||
>
|
||||
freno.me
|
||||
</A>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user