// AUTO-GENERATED by `wrnexus dev` - do not edit. // Typed routes support required, optional, and catch-all parameters. export interface Routes { "/": Record; "/about": Record; "/async-data": Record; "/chat": Record; "/client-only": Record; "/dashboard": Record; "/hello": Record; "/language-tools": Record; "/layout": Record; "/login": Record; "/modal": Record; "/navigation": Record; "/partial-static": Record; "/platform-showcase": Record; "/reactive": Record; "/server-actions": Record; "/table": Record; "/test": Record; "/ui": Record; } export interface RouteNames { "index": "/"; "about": "/about"; "async.data": "/async-data"; "chat": "/chat"; "client.only": "/client-only"; "dashboard": "/dashboard"; "hello": "/hello"; "language.tools": "/language-tools"; "layout": "/layout"; "login": "/login"; "modal": "/modal"; "navigation": "/navigation"; "partial.static": "/partial-static"; "platform.showcase": "/platform-showcase"; "reactive": "/reactive"; "server.actions": "/server-actions"; "table": "/table"; "test": "/test"; "ui": "/ui"; } export interface RouteQueries { [path: string]: Record; } export type RoutePath = keyof Routes; export type RouteName = keyof RouteNames; export type RouteQuery

= P extends keyof RouteQueries ? RouteQueries[P] : Record; type RouteValue = string | readonly string[] | undefined; function encodeRouteValue(value: RouteValue, catchAll: boolean): string { if (value === undefined) return ""; const values = Array.isArray(value) ? value : catchAll ? String(value).split("/") : [String(value)]; return values.map((part) => encodeURIComponent(part)).join("/"); } function buildHref(path: string, params: Record = {}): string { const output: string[] = []; for (const segment of path.split("/").filter(Boolean)) { let name: string | undefined; let optional = false; let catchAll = false; if (segment.startsWith("[[") && segment.endsWith("]]")) { optional = true; name = segment.slice(2, -2); } else if (segment.startsWith("[") && segment.endsWith("]")) { name = segment.slice(1, -1); if (name.endsWith("?")) { optional = true; name = name.slice(0, -1); } } if (!name) { output.push(segment); continue; } if (name.startsWith("...")) { catchAll = true; name = name.slice(3); } const value = params[name]; if (value === undefined && optional) continue; if (value === undefined) throw new Error(`WRN-ROUTE-MISSING-PARAM: Missing route parameter '${name}'.`); output.push(encodeRouteValue(value, catchAll)); } return "/" + output.filter(Boolean).join("/"); } export function href

( path: P, ...args: keyof Routes[P] extends never ? [] : Record extends Routes[P] ? [params?: Routes[P]] : [params: Routes[P]] ): string { const params = (args[0] ?? {}) as Record; return buildHref(String(path), params); } export function route( name: N, ...args: keyof Routes[RouteNames[N]] extends never ? [params?: Routes[RouteNames[N]], query?: RouteQuery] : Record extends Routes[RouteNames[N]] ? [params?: Routes[RouteNames[N]], query?: RouteQuery] : [params: Routes[RouteNames[N]], query?: RouteQuery] ): string { const paths: Record = { "index": "/", "about": "/about", "async.data": "/async-data", "chat": "/chat", "client.only": "/client-only", "dashboard": "/dashboard", "hello": "/hello", "language.tools": "/language-tools", "layout": "/layout", "login": "/login", "modal": "/modal", "navigation": "/navigation", "partial.static": "/partial-static", "platform.showcase": "/platform-showcase", "reactive": "/reactive", "server.actions": "/server-actions", "table": "/table", "test": "/test", "ui": "/ui" } as Record; const output = buildHref(paths[name], (args[0] ?? {}) as Record); const query = args[1]; if (!query) return output; const search = new URLSearchParams(); for (const [key, value] of Object.entries(query)) if (value !== undefined && value !== null) search.set(key, String(value)); const text = search.toString(); return text ? `${output}?${text}` : output; }