// AUTO-GENERATED by `wrnexus dev` - do not edit. // Typed routes support required, optional, and catch-all parameters. export interface Routes { "/": Record; "/accessibility": Record; "/advanced-forms": Record; "/base": Record; "/blocks": Record; "/colors": Record; "/components/accordion": Record; "/components/advanced-date-picker": Record; "/components/advanced-range-slider": Record; "/components/advanced-select": Record; "/components/alert": Record; "/components/avatar": Record; "/components/avatar-group": Record; "/components/badge": Record; "/components/blockquote": Record; "/components/breadcrumb": Record; "/components/button": Record; "/components/button-group": Record; "/components/card": Record; "/components/carousel": Record; "/components/chart": Record; "/components/chat-bubble": Record; "/components/checkbox": Record; "/components/clipboard": Record; "/components/collapse": Record; "/components/color-picker": Record; "/components/columns": Record; "/components/combo-box": Record; "/components/confetti": Record; "/components/container": Record; "/components/context-menu": Record; "/components/copy-markup": Record; "/components/custom-scrollbar": Record; "/components/data-map": Record; "/components/data-table": Record; "/components/date-picker": Record; "/components/device-frame": Record; "/components/divider": Record; "/components/drag-and-drop": Record; "/components/drawer": Record; "/components/dropdown": Record; "/components/file-input": Record; "/components/file-upload": Record; "/components/file-upload-progress": Record; "/components/grid": Record; "/components/image": Record; "/components/input": Record; "/components/input-group": Record; "/components/input-number": Record; "/components/kbd": Record; "/components/layout-splitter": Record; "/components/legend-indicator": Record; "/components/link": Record; "/components/list": Record; "/components/list-group": Record; "/components/map": Record; "/components/marquee": Record; "/components/mega-menu": Record; "/components/modal": Record; "/components/nav": Record; "/components/navbar": Record; "/components/pagination": Record; "/components/pin-input": Record; "/components/popover": Record; "/components/progress": Record; "/components/radio": Record; "/components/range-slider": Record; "/components/rating": Record; "/components/scrollspy": Record; "/components/search-box": Record; "/components/select": Record; "/components/sidebar": Record; "/components/skeleton": Record; "/components/spinner": Record; "/components/stepper": Record; "/components/strong-password": Record; "/components/styled-icon": Record; "/components/switch": Record; "/components/table": Record; "/components/tabs": Record; "/components/textarea": Record; "/components/time-picker": Record; "/components/timeline": Record; "/components/toast": Record; "/components/toast-notifications": Record; "/components/toggle-count": Record; "/components/toggle-password": Record; "/components/tooltip": Record; "/components/tree-view": Record; "/components/typography": Record; "/components/wysiwyg-editor": Record; "/dark-mode": Record; "/docs": Record; "/fonts": Record; "/forms": Record; "/framework-guides": Record; "/installation": Record; "/integrations": Record; "/layout": Record; "/navigation": Record; "/overlays": Record; "/resources": Record; "/sizing": Record; "/tables": Record; "/templates": Record; "/themes": Record; } export type RoutePath = keyof Routes; 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("/"); } 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; const output: string[] = []; for (const segment of String(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("/"); }