{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Nav Asset",
  "description": "Schema for nav YAML files in mag_assets/navs/",
  "type": "object",
  "required": ["navId", "kind", "presentation"],
  "additionalProperties": false,
  "properties": {
    "navId": {
      "type": "string",
      "description": "Full-path NavId (e.g., root, root_settings, root_settings_user). Always rooted and _-joined."
    },
    "title": {
      "type": "string",
      "description": "Display name for this nav entry. Optional - if missing, the navId segment is used as title and this nav is treated as the default child with no nav label shown."
    },
    "icon": {
      "type": "string",
      "description": "Icon name (optional). No icon is shown for label-less/default navs."
    },
    "logo": {
      "type": "string",
      "description": "Logo source path. Typically only on root nav (e.g., assets/logo/icon.svg)."
    },
    "kind": {
      "type": "string",
      "enum": ["url", "murl"],
      "description": "How this nav is reached: 'url' for a real Angular route, 'murl' for a nav panel."
    },
    "presentation": {
      "type": "string",
      "enum": ["static", "component", "dynamic"],
      "description": "How the panel is filled: 'static' for menu rows, 'component' for a registered widget, 'dynamic' for runtime resolution."
    },
    "path": {
      "type": "string",
      "description": "Route path override for Url navs. Absent means the ancestry path. Empty string means this is the default route (path: '')."
    },
    "param": {
      "type": "string",
      "description": "Route parameter name for dynamic Navs, defaulting to 'id'."
    },
    "children": {
      "type": "array",
      "items": { "type": "string" },
      "description": "Child nav IDs (full paths). Ordered. Each must have a matching .yml file in the same navs/ folder."
    }
  }
}
