1import * as Namespace from "../../Namespace.ts";
2import { makeFrameworkSite, type FrameworkSiteProps } from "./FrameworkSite.ts";
3
4/** Configuration for a Neon ReactRouter website. */
5export type ReactRouterProps = FrameworkSiteProps & {};
6
7/**
8 * React Router SSR and browser assets on Neon Functions using the existing Node framework target.
9 *
10 * Native framework development and HMR run without Neon cloud resources.
11 * Apply `Alchemy.remote()` to use the live Function deployment during dev.
12 * Packaging requires the optional `@vercel/nft` peer dependency.
13 *
14 * ### Creating a Website
15 * **Example:** ReactRouter application
16 * ```typescript
17 * const site = yield* Neon.Website.ReactRouter("Web", {
18 * rootDir: "./app",
19 * });
20 * ```
21 *
22 * ### Deployment Configuration
23 * **Example:** Existing project and custom hostname
24 * ```typescript
25 * const site = yield* Neon.Website.ReactRouter("Web", {
26 * project,
27 * domain: "www.example.com",
28 * env: { API_BASE: "https://api.example.com" },
29 * function: { name: "Website" },
30 * });
31 * ```
32 *
33 * @resource
34 * @product Website
35 */
36export const ReactRouter = (id: string, props: ReactRouterProps = {}) =>
37 makeFrameworkSite(id, props, {
38 framework: "@alchemy.run/frontend-frameworks/react-router",
39 target: "@alchemy.run/frontend-frameworks/react-router/neon",
40 }).pipe(Namespace.push(id));