Compare commits
2 Commits
2f1b5f35c6
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 33ca9213f2 | |||
| 34db684fe1 |
@@ -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 {
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
23
src/components/SubdomainFooter.tsx
Normal file
23
src/components/SubdomainFooter.tsx
Normal 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"><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>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -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 = () => {
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user