# Route Configuration Type Contracts # # Defines the schema for route configuration with validation rules. # Used by both en.ncl and es.ncl to ensure type safety and consistency. { # Single route configuration Route = { # Required fields component | String | doc "Component name (e.g., 'Home', 'About', 'Services')", path | String | doc "URL path (e.g., '/', '/about', '/services')", language | String | doc "Language code (ISO 639-1, e.g., 'en', 'es')", title_key | String | doc "i18n key for page title", description_key | String | doc "i18n key for page description", # Optional fields with defaults enabled | Bool | doc "Whether this route is active" | default = true, canonical_path | String | doc "Canonical URL path for this route" | optional, keywords | Array String | doc "SEO keywords for this page" | default = [], lang_prefixes | Array String | doc "i18n key prefixes (e.g., ['home-', 'welcome-'])" | default = [], menu_group | String | doc "Menu grouping (e.g., 'main', 'footer', 'admin')" | default = "main", menu_icon | String | doc "Icon identifier for menu item" | optional, menu_order | Number | doc "Display order within menu group (lower = higher priority)" | default = 999, page_component | String | doc "Leptos component name (e.g., 'HomePage')" | optional, unified_component | String | doc "Unified component name for SSR/WASM delegation" | optional, module_path | String | doc "Module path for component (e.g., 'services')" | optional, priority | Number | doc "SEO/sitemap priority (0.0 to 1.0)" | default = 0.8, show_in_sitemap | Bool | doc "Whether to include in sitemap.xml" | default = true, generate_boilerplate_only | Bool | doc "Only generate boilerplate code (no full implementation)" | default = false, replace_existing_boilerplate | Bool | doc "Replace existing boilerplate if it exists" | default = false, is_external | Bool | doc "Whether this is an external URL" | default = false, component_dynamic | Bool | doc "Whether component is dynamically loaded" | default = false, content_type_param | Bool | doc "Whether route accepts content_type parameter" | default = false, # Dynamic properties (extensible) props | { _ : Dyn } | doc "Additional dynamic properties (e.g., content_type, style)" | optional, }, # Container for all routes RoutesFile = { routes | Array Route | doc "List of all route configurations", }, }