fix nook subdomain routing

This commit is contained in:
2026-08-27 13:06:41 -04:00
parent 20944bf46e
commit 6d3315c71f
4 changed files with 50 additions and 2 deletions

21
src/routes/checkout.tsx Normal file
View File

@@ -0,0 +1,21 @@
import { Switch, Match } from "solid-js";
import { useSite } from "~/context/SiteContext";
import NotFound from "./[...404]";
import NookCheckout from "./nook/checkout";
/**
* Host-aware checkout route — `/checkout`.
*
* Only The Nook has a checkout flow; all other sites fall back to 404.
* Mirrors the dispatch pattern in `src/routes/index.tsx`.
*/
export default function CheckoutPage() {
const site = useSite();
return (
<Switch fallback={<NotFound />}>
<Match when={site().id === "nook"}>
<NookCheckout />
</Match>
</Switch>
);
}

View File

@@ -7,6 +7,7 @@ import NessaLanding from "./nessa";
import LineageLanding from "./lineage"; import LineageLanding from "./lineage";
import GazeLanding from "./gaze"; import GazeLanding from "./gaze";
import InputHaloLanding from "./inputhalo"; import InputHaloLanding from "./inputhalo";
import NookLanding from "./nook";
/** /**
* Root route handler. * Root route handler.
@@ -44,6 +45,9 @@ export default function Home(): JSX.Element {
<Match when={site().id === "inputhalo"}> <Match when={site().id === "inputhalo"}>
<InputHaloLanding /> <InputHaloLanding />
</Match> </Match>
<Match when={site().id === "nook"}>
<NookLanding />
</Match>
</Switch> </Switch>
); );
} }

View File

@@ -4,8 +4,7 @@ import NotFound from "./[...404]";
import NessaPrivacyPolicy from "./nessa/privacy"; import NessaPrivacyPolicy from "./nessa/privacy";
import LineagePrivacyPolicy from "./lineage/privacy"; import LineagePrivacyPolicy from "./lineage/privacy";
import GazePrivacyPolicy from "./gaze/privacy"; import GazePrivacyPolicy from "./gaze/privacy";
import InputHaloPrivacyPolicy from "./inputhalo/privacy"; import NookPrivacyPolicy from "./nook/privacy";
/** /**
* Host-aware privacy policy route — `/privacy`. * Host-aware privacy policy route — `/privacy`.
* *
@@ -41,6 +40,9 @@ export default function PrivacyPage() {
<Match when={site().id === "inputhalo"}> <Match when={site().id === "inputhalo"}>
<InputHaloPrivacyPolicy /> <InputHaloPrivacyPolicy />
</Match> </Match>
<Match when={site().id === "nook"}>
<NookPrivacyPolicy />
</Match>
</Switch> </Switch>
); );
} }

21
src/routes/success.tsx Normal file
View File

@@ -0,0 +1,21 @@
import { Switch, Match } from "solid-js";
import { useSite } from "~/context/SiteContext";
import NotFound from "./[...404]";
import NookSuccess from "./nook/success";
/**
* Host-aware success route — `/success`.
*
* Only The Nook has a post-checkout success page; all other sites fall
* back to 404. Mirrors the dispatch pattern in `src/routes/index.tsx`.
*/
export default function SuccessPage() {
const site = useSite();
return (
<Switch fallback={<NotFound />}>
<Match when={site().id === "nook"}>
<NookSuccess />
</Match>
</Switch>
);
}