Compare commits

..

2 Commits

Author SHA1 Message Date
33ca9213f2 fix: root /downloads button fix, subdomain footer fix 2026-07-28 14:25:15 -04:00
34db684fe1 subdomain footer 2026-07-27 16:34:32 -04:00
8 changed files with 53 additions and 44 deletions

View File

@@ -173,6 +173,8 @@
--color-base: #fbf1c7; --color-base: #fbf1c7;
--color-mantle: #f3eac1; --color-mantle: #f3eac1;
--color-crust: #e7deb7; --color-crust: #e7deb7;
--color-button-text: #ffffff;
--color-button-text-alt: var(--color-text);
} }
:root.dark { :root.dark {
@@ -202,6 +204,8 @@
--color-base: #1e1e2e; --color-base: #1e1e2e;
--color-mantle: #141620; --color-mantle: #141620;
--color-crust: #0e0f16; --color-crust: #0e0f16;
--color-button-text: var(--color-crust);
--color-button-text-alt: #ffffff;
} }
:root { :root {

View File

@@ -11,6 +11,7 @@ import {
import "./app.css"; import "./app.css";
import { LeftBar, RightBar } from "./components/Bars"; import { LeftBar, RightBar } from "./components/Bars";
import { TerminalSplash } from "./components/TerminalSplash"; import { TerminalSplash } from "./components/TerminalSplash";
import SubdomainFooter from "./components/SubdomainFooter";
import { MetaProvider } from "@solidjs/meta"; import { MetaProvider } from "@solidjs/meta";
import ErrorBoundaryFallback from "./components/ErrorBoundaryFallback"; import ErrorBoundaryFallback from "./components/ErrorBoundaryFallback";
import { BarsProvider, useBars } from "./context/bars"; import { BarsProvider, useBars } from "./context/bars";
@@ -199,12 +200,13 @@ function AppLayout(props: { children: any }) {
</Show> </Show>
<Show when={!isMainSite()}> <Show when={!isMainSite()}>
<div class="bg-base min-h-screen w-full overflow-x-hidden"> <div class="bg-base flex min-h-screen w-full flex-col overflow-x-hidden">
<noscript> <noscript>
<div class="bg-yellow text-crust border-text fixed top-0 z-150 w-full border-b-2 p-4 text-center font-semibold"> <div class="bg-yellow text-crust border-text fixed top-0 z-150 w-full border-b-2 p-4 text-center font-semibold">
JavaScript is disabled. Features will be limited. JavaScript is disabled. Features will be limited.
</div> </div>
</noscript> </noscript>
<div class="flex-1">
<ErrorBoundary <ErrorBoundary
fallback={(error, reset) => ( fallback={(error, reset) => (
<ErrorBoundaryFallback error={error} reset={reset} /> <ErrorBoundaryFallback error={error} reset={reset} />
@@ -215,6 +217,8 @@ function AppLayout(props: { children: any }) {
</Suspense> </Suspense>
</ErrorBoundary> </ErrorBoundary>
</div> </div>
<SubdomainFooter />
</div>
</Show> </Show>
</> </>
); );

View File

@@ -0,0 +1,23 @@
import { A } from "@solidjs/router";
import { buildMainSiteUrl } from "~/lib/site-context";
export default function SubdomainFooter() {
return (
<footer class="border-surface0 bg-surface0 relative z-10 border-t py-8">
<div class="relative flex items-center text-sm">
<A
href={buildMainSiteUrl()}
class="text-text/60 hover:text-text/80 mx-auto text-center underline underline-offset-4 transition-colors"
>
made with <span class="text-red-400">&lt;3</span>
</A>
<A
href={buildMainSiteUrl("/downloads")}
class="text-text/80 hover:text-text absolute right-4 underline underline-offset-4 transition-colors"
>
see more products
</A>
</div>
</footer>
);
}

View File

@@ -177,7 +177,12 @@ export default function Button(props: ButtonProps) {
if (isDisabledOrLoading) { if (isDisabledOrLoading) {
return { bg: "var(--color-base)", text: "#ffffff" }; return { bg: "var(--color-base)", text: "#ffffff" };
} }
return adjustForContrast(local.color || "var(--color-blue)"); // When no explicit color is given, fall back to the theme blue
// (a dark color whose contrast with white is already fine). Only
// pass a hex string to adjustForContrast — CSS variable values can't
// be parsed numerically.
if (!local.color) return { bg: "var(--color-blue)", text: "#ffffff" };
return adjustForContrast(local.color);
}; };
const sizeClasses = () => { const sizeClasses = () => {

View File

@@ -108,7 +108,7 @@ export const SITE_CONFIG: Record<SiteId, Site> = {
baseRoutePrefix: "/gaze", baseRoutePrefix: "/gaze",
displayName: "Gaze", displayName: "Gaze",
titleSuffix: " | Gaze", titleSuffix: " | Gaze",
brandColor: "#f9e2af", brandColor: "#002cff",
ogDefaultImage: "/gaze/og-default.png", ogDefaultImage: "/gaze/og-default.png",
faviconPath: "/gaze/favicon/favicon.ico" faviconPath: "/gaze/favicon/favicon.ico"
}, },
@@ -119,7 +119,7 @@ export const SITE_CONFIG: Record<SiteId, Site> = {
baseRoutePrefix: "/inputhalo", baseRoutePrefix: "/inputhalo",
displayName: "InputHalo", displayName: "InputHalo",
titleSuffix: " | InputHalo", titleSuffix: " | InputHalo",
brandColor: "#f38ba8", brandColor: "#41a5ff",
ogDefaultImage: "/inputhalo/og-default.png", ogDefaultImage: "/inputhalo/og-default.png",
faviconPath: "/inputhalo/favicon/favicon.ico" faviconPath: "/inputhalo/favicon/favicon.ico"
} }

View File

@@ -107,7 +107,7 @@ function MainDownloadsPage() {
</A> </A>
</h2> </h2>
<div class="flex flex-col gap-8 lg:flex-row lg:justify-around"> <div class="flex flex-col gap-8 lg:flex-row lg:flex-wrap lg:justify-around">
<div class="flex flex-col items-center gap-3"> <div class="flex flex-col items-center gap-3">
<span class="text-subtext0 font-mono text-sm"> <span class="text-subtext0 font-mono text-sm">
platform: macOS (14.6+) platform: macOS (14.6+)
@@ -159,7 +159,7 @@ function MainDownloadsPage() {
</A> </A>
</h2> </h2>
<div class="flex flex-col gap-8 lg:flex-row lg:justify-around"> <div class="flex flex-col gap-8 lg:flex-row lg:flex-wrap lg:justify-around">
<div class="flex flex-col items-center gap-3"> <div class="flex flex-col items-center gap-3">
<span class="text-subtext0 font-mono text-sm"> <span class="text-subtext0 font-mono text-sm">
platform: macOS (14.6+) platform: macOS (14.6+)
@@ -209,7 +209,7 @@ function MainDownloadsPage() {
</A> </A>
</h2> </h2>
<div class="flex flex-col gap-8 lg:flex-row lg:justify-around"> <div class="flex flex-col gap-8 lg:flex-row lg:flex-wrap lg:justify-around">
<div class="flex flex-col items-center gap-3"> <div class="flex flex-col items-center gap-3">
<span class="text-subtext0 font-mono text-sm"> <span class="text-subtext0 font-mono text-sm">
platform: android platform: android
@@ -270,7 +270,7 @@ function MainDownloadsPage() {
<span class="text-yellow">{">"}</span> {SwAText()} <span class="text-yellow">{">"}</span> {SwAText()}
</h2> </h2>
<div class="flex flex-col gap-8 lg:flex-row lg:justify-around"> <div class="flex flex-col gap-8 lg:flex-row lg:flex-wrap lg:justify-around">
<div class="flex flex-col items-center gap-3"> <div class="flex flex-col items-center gap-3">
<span class="text-subtext0 font-mono text-sm"> <span class="text-subtext0 font-mono text-sm">
platform: android platform: android

View File

@@ -14,7 +14,6 @@ import { For, createSignal } from "solid-js";
import { A } from "@solidjs/router"; import { A } from "@solidjs/router";
import { PageHead } from "~/components/PageHead"; import { PageHead } from "~/components/PageHead";
import SubdomainHeader from "~/components/SubdomainHeader"; import SubdomainHeader from "~/components/SubdomainHeader";
import { buildMainSiteUrl } from "~/lib/site-context";
import Button from "~/components/ui/Button"; import Button from "~/components/ui/Button";
import DownloadOnAppStoreDark from "~/components/icons/DownloadOnAppStoreDark"; import DownloadOnAppStoreDark from "~/components/icons/DownloadOnAppStoreDark";
import { useDarkMode } from "~/context/darkMode"; import { useDarkMode } from "~/context/darkMode";
@@ -271,19 +270,6 @@ export default function InputHaloLanding() {
</p> </p>
</div> </div>
</section> </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> </main>
</> </>
); );

View File

@@ -343,19 +343,6 @@ export default function NessaLanding() {
</div> </div>
</div> </div>
</section> </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> </main>
</> </>
); );