96 lines
2.5 KiB
Text
96 lines
2.5 KiB
Text
# Unified Site Configuration Defaults and Helpers
|
|
#
|
|
# Provides make_route, make_content_route, make_external and shared
|
|
# priority/order constants for site.ncl.
|
|
#
|
|
# All helpers return open records so callers can merge additional fields
|
|
# with the & operator.
|
|
|
|
let contracts = import "contracts.ncl" in
|
|
|
|
{
|
|
# SEO priority constants
|
|
priorities = {
|
|
critical = 1.0,
|
|
high = 0.9,
|
|
normal = 0.8,
|
|
low = 0.5,
|
|
minimal = 0.3,
|
|
},
|
|
|
|
# Default menu order constants for consistent navigation
|
|
orders = {
|
|
home = 1,
|
|
about = 2,
|
|
services = 3,
|
|
portfolio = 4,
|
|
projects = 5,
|
|
blog = 6,
|
|
recipes = 7,
|
|
contact = 10,
|
|
external = 100,
|
|
},
|
|
|
|
# Sentinel for routes that do not appear in any navigation menu
|
|
no_menu = {
|
|
enabled = false,
|
|
visible_in = [],
|
|
},
|
|
|
|
# make_route
|
|
#
|
|
# Create a standard page route covering multiple languages.
|
|
#
|
|
# Parameters:
|
|
# component : String — Component name, e.g. "HomePage"
|
|
# path_map : Record — Language → URL, e.g. { en = "/", es = "/inicio" }
|
|
#
|
|
# Returns a Route record with priority and menu set to defaults.
|
|
# Callers add specifics with & { priority = ..., menu = { ... } }.
|
|
make_route
|
|
| String -> { _ : String } -> Dyn
|
|
= fun comp path_map =>
|
|
{
|
|
component = comp,
|
|
paths = path_map,
|
|
priority | default = 0.8,
|
|
menu | default = { enabled = false, visible_in = [] },
|
|
},
|
|
|
|
# make_content_route
|
|
#
|
|
# Like make_route but also sets content_type for dynamic content pages.
|
|
#
|
|
# Parameters:
|
|
# comp : String — Component name (typically "ContentIndex")
|
|
# ct : String — Content kind, e.g. "blog", "recipes"
|
|
# path_map : Record — Language → URL
|
|
make_content_route
|
|
| String -> String -> { _ : String } -> Dyn
|
|
= fun comp ct path_map =>
|
|
make_route comp path_map & {
|
|
content_type = ct,
|
|
},
|
|
|
|
# make_external
|
|
#
|
|
# Create an external link entry (same URL for all languages).
|
|
# Produces a Route record with component = "ExternalLink".
|
|
#
|
|
# Parameters:
|
|
# lbl : String — Display label (used as fallback for all languages)
|
|
# ext_url : String — Full external URL
|
|
make_external
|
|
| String -> String -> Dyn
|
|
= fun lbl ext_url =>
|
|
{
|
|
component = "ExternalLink",
|
|
paths = { external = ext_url },
|
|
priority = 0.3,
|
|
menu = {
|
|
enabled = true,
|
|
labels = { en = lbl, es = lbl },
|
|
visible_in | default = [],
|
|
},
|
|
},
|
|
}
|