mirror of
https://github.com/vercel-labs/json-render.git
synced 2026-09-14 13:41:32 +08:00
6c7164342a
* feat(tanstack-start): add renderer - Add full-app routing, SSR data helpers, metadata, layouts, and navigation. - Validate with focused tests and the current TanStack Router type contract. - Document the package across the API reference, renderer guide, and agent skill. * fix(tanstack-start): address review findings * fix(tanstack-start): align runtime contracts - Merge layout state into page rendering with explicit precedence. - Match TanStack Router string splat parameters across runtime, types, and docs. - Preserve the client boundary and add regression coverage. * fix(tanstack-start): match empty splats - Align root and trailing-slash splat matching with TanStack Router. - Cover empty splat paths with regression tests. * fix(tanstack-start): harden route transitions - Scope page state to the rendered route during pending navigation. - Normalize route matching across empty splats and trailing slashes. - Preserve client boundaries in CommonJS and ESM builds. * fix(tanstack-start): handle route recovery edge cases - Retry failed loaders by invalidating the router. - Normalize trailing-slash and encoded route pathnames. - Add regression coverage and document corrected behavior. * fix(tanstack-start): preserve encoded percent params - Preserve encoded percent signs through pathname normalization. - Cover dynamic, splat, and static-path round trips.
84 lines
3.1 KiB
TypeScript
84 lines
3.1 KiB
TypeScript
/**
|
|
* Single source of truth for page titles.
|
|
* Used by both page metadata exports and the OG image route.
|
|
*
|
|
* Keys mirror the page's URL path (e.g., "docs/changelog" → /og/docs/changelog).
|
|
* Values are display titles (without the "| json-render" suffix — the layout template adds that).
|
|
*/
|
|
export const PAGE_TITLES: Record<string, string> = {
|
|
// Home (no slug)
|
|
"": "The Generative UI\nFramework",
|
|
|
|
// Top-level
|
|
playground: "Playground",
|
|
examples: "Examples",
|
|
|
|
// Docs
|
|
docs: "Introduction",
|
|
"docs/quick-start": "Quick Start",
|
|
"docs/installation": "Installation",
|
|
"docs/catalog": "Catalog",
|
|
"docs/schemas": "Schemas",
|
|
"docs/specs": "Specs",
|
|
"docs/registry": "Registry",
|
|
"docs/streaming": "Streaming",
|
|
"docs/validation": "Validation",
|
|
"docs/data-binding": "Data Binding",
|
|
"docs/computed-values": "Computed Values",
|
|
"docs/visibility": "Visibility",
|
|
"docs/watchers": "Watchers",
|
|
"docs/renderers": "Renderers",
|
|
"docs/generation-modes": "Generation Modes",
|
|
"docs/code-export": "Code Export",
|
|
"docs/custom-schema": "Custom Schema & Renderer",
|
|
"docs/devtools": "Devtools",
|
|
"docs/ai-sdk": "AI SDK Integration",
|
|
"docs/adaptive-cards": "Adaptive Cards Integration",
|
|
"docs/openapi": "OpenAPI Integration",
|
|
"docs/a2ui": "A2UI Integration",
|
|
"docs/ag-ui": "AG-UI Integration",
|
|
"docs/migration": "Migration Guide",
|
|
"docs/changelog": "Changelog",
|
|
"docs/skills": "Skills",
|
|
"docs/directives": "Directives",
|
|
|
|
// API references
|
|
"docs/api/core": "@json-render/core API",
|
|
"docs/api/react": "@json-render/react API",
|
|
"docs/api/next": "@json-render/next API",
|
|
"docs/api/tanstack-start": "@json-render/tanstack-start API",
|
|
"docs/api/vue": "@json-render/vue API",
|
|
"docs/api/solid": "@json-render/solid API",
|
|
"docs/api/react-pdf": "@json-render/react-pdf API",
|
|
"docs/api/react-email": "@json-render/react-email API",
|
|
"docs/api/react-native": "@json-render/react-native API",
|
|
"docs/api/svelte": "@json-render/svelte API",
|
|
"docs/api/directives": "@json-render/directives API",
|
|
"docs/api/codegen": "@json-render/codegen API",
|
|
"docs/api/devtools": "@json-render/devtools API",
|
|
"docs/api/devtools-react": "@json-render/devtools-react API",
|
|
"docs/api/devtools-vue": "@json-render/devtools-vue API",
|
|
"docs/api/devtools-svelte": "@json-render/devtools-svelte API",
|
|
"docs/api/devtools-solid": "@json-render/devtools-solid API",
|
|
"docs/api/image": "@json-render/image API",
|
|
"docs/api/remotion": "@json-render/remotion API",
|
|
"docs/api/shadcn": "@json-render/shadcn API",
|
|
"docs/api/shadcn-svelte": "@json-render/shadcn-svelte API",
|
|
"docs/api/mcp": "@json-render/mcp API",
|
|
"docs/api/redux": "@json-render/redux API",
|
|
"docs/api/zustand": "@json-render/zustand API",
|
|
"docs/api/jotai": "@json-render/jotai API",
|
|
"docs/api/react-three-fiber": "@json-render/react-three-fiber API",
|
|
"docs/api/xstate": "@json-render/xstate API",
|
|
"docs/api/ink": "@json-render/ink API",
|
|
"docs/api/yaml": "@json-render/yaml API",
|
|
};
|
|
|
|
/**
|
|
* Get the page title for a given slug.
|
|
* Returns null if the slug is not in the whitelist.
|
|
*/
|
|
export function getPageTitle(slug: string): string | null {
|
|
return slug in PAGE_TITLES ? PAGE_TITLES[slug]! : null;
|
|
}
|