{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://prosefly.dev/schema/dahlia.json",
  "title": "Dahlia Theme Config",
  "description": "Configuration for @prosefly/astro-theme-dahlia.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "description": "Site name used by the brand, metadata, and schema.org output."
    },
    "description": {
      "type": "string",
      "description": "Site description used by metadata and schema.org output."
    },
    "logo": {
      "oneOf": [
        { "type": "string" },
        { "$ref": "#/$defs/logo" }
      ]
    },
    "favicon": {
      "oneOf": [
        { "type": "string" },
        { "$ref": "#/$defs/faviconLink" },
        {
          "type": "array",
          "items": { "$ref": "#/$defs/faviconLink" }
        }
      ]
    },
    "appearance": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "accent": {
          "oneOf": [
            { "$ref": "#/$defs/accent" },
            {
              "type": "string",
              "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
              "description": "Custom hex accent color."
            }
          ]
        },
        "gray": {
          "type": "string",
          "enum": ["slate", "zinc", "neutral", "stone"]
        },
        "defaultMode": {
          "type": "string",
          "enum": ["light", "dark", "system"]
        },
        "radius": {
          "type": "string",
          "enum": ["none", "small", "medium", "large", "full"]
        }
      }
    },
    "siteNav": {
      "type": "array",
      "items": { "$ref": "#/$defs/siteNavItem" }
    },
    "socials": {
      "type": "array",
      "items": { "$ref": "#/$defs/socialLink" }
    },
    "docsNav": {
      "type": "array",
      "items": { "$ref": "#/$defs/docsNavSection" }
    },
    "search": {
      "oneOf": [
        { "const": false },
        { "$ref": "#/$defs/localSearch" },
        { "$ref": "#/$defs/pagefindSearch" },
        { "$ref": "#/$defs/docsearch" },
        { "$ref": "#/$defs/algoliaSearch" }
      ]
    },
    "assistant": {
      "oneOf": [
        { "const": false },
        { "$ref": "#/$defs/inkeepAssistant" },
        { "$ref": "#/$defs/kapaAssistant" },
        { "$ref": "#/$defs/customAssistant" }
      ]
    },
    "llms": {
      "oneOf": [
        { "type": "boolean" },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "enabled": { "type": "boolean" },
            "full": { "type": "boolean" }
          }
        }
      ]
    },
    "pageActions": {
      "type": "array",
      "items": { "$ref": "#/$defs/pageAction" }
    },
    "contributors": {
      "oneOf": [
        { "type": "boolean" },
        { "$ref": "#/$defs/contributors" }
      ]
    },
    "credits": {
      "type": "boolean"
    },
    "docsBase": {
      "type": "string",
      "description": "Base URL where docs routes are generated."
    },
    "source": {
      "$ref": "#/$defs/source"
    },
    "editLink": {
      "oneOf": [
        { "type": "boolean" },
        { "$ref": "#/$defs/editLink" }
      ]
    },
    "defaultLocale": {
      "type": "string"
    },
    "locales": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/locale" }
    },
    "ui": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": { "type": "string" }
      }
    },
    "iconify": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "apiBase": { "type": "string" },
        "preload": {
          "type": "array",
          "items": { "type": "string" }
        },
        "scan": { "type": "boolean" }
      }
    },
    "markdown": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "expressiveCode": {
          "oneOf": [
            { "const": false },
            { "type": "object" }
          ]
        },
        "calloutDirectives": { "const": false },
        "cjkFriendly": {
          "oneOf": [
            { "type": "boolean" },
            { "const": "auto" }
          ]
        },
        "packageManagerTabs": { "const": false },
        "imageGallery": { "const": false }
      }
    },
    "footer": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "copyright": { "type": "string" },
        "sections": {
          "type": "array",
          "items": { "$ref": "#/$defs/footerSection" }
        }
      }
    }
  },
  "$defs": {
    "accent": {
      "type": "string",
      "enum": [
        "red",
        "orange",
        "amber",
        "yellow",
        "lime",
        "green",
        "emerald",
        "teal",
        "cyan",
        "sky",
        "blue",
        "indigo",
        "violet",
        "purple",
        "fuchsia",
        "pink",
        "rose"
      ]
    },
    "link": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "href"],
      "properties": {
        "label": { "type": "string" },
        "href": { "type": "string" },
        "external": { "type": "boolean" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        }
      }
    },
    "siteNavItem": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "href"],
      "properties": {
        "label": { "type": "string" },
        "href": { "type": "string" },
        "external": { "type": "boolean" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "icon": { "type": "string" },
        "trailingIcon": { "type": "string" },
        "variant": {
          "type": "string",
          "enum": ["text", "soft", "outline", "solid"]
        },
        "color": {
          "type": "string",
          "enum": ["neutral", "accent"]
        }
      }
    },
    "socialLink": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "href", "icon"],
      "properties": {
        "label": { "type": "string" },
        "href": { "type": "string" },
        "external": { "type": "boolean" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "icon": { "type": "string" }
      }
    },
    "logo": {
      "type": "object",
      "additionalProperties": false,
      "required": ["light", "dark"],
      "properties": {
        "light": { "type": "string" },
        "dark": { "type": "string" },
        "href": { "type": "string" },
        "width": { "type": "number" },
        "height": { "type": "number" },
        "variant": {
          "type": "string",
          "enum": ["mark", "lockup"]
        }
      }
    },
    "faviconLink": {
      "type": "object",
      "additionalProperties": false,
      "required": ["href"],
      "properties": {
        "href": { "type": "string" },
        "rel": { "type": "string" },
        "type": { "type": "string" },
        "sizes": { "type": "string" },
        "media": { "type": "string" },
        "color": { "type": "string" }
      }
    },
    "docsNavSection": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "items"],
      "properties": {
        "slug": { "type": "string" },
        "label": { "type": "string" },
        "icon": { "type": "string" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "items": {
          "type": "array",
          "items": { "$ref": "#/$defs/docsNavItem" }
        }
      }
    },
    "docsNavItem": {
      "oneOf": [
        { "type": "string" },
        { "$ref": "#/$defs/docsNavLinkItem" },
        { "$ref": "#/$defs/docsNavGroupItem" },
        { "$ref": "#/$defs/docsNavAutogenerateItem" }
      ]
    },
    "docsNavLinkItem": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "link"],
      "properties": {
        "label": { "type": "string" },
        "link": { "type": "string" },
        "slug": { "type": "string" },
        "external": { "type": "boolean" },
        "icon": { "type": "string" },
        "badge": { "$ref": "#/$defs/docsNavBadge" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        }
      }
    },
    "docsNavGroupItem": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "items"],
      "properties": {
        "label": { "type": "string" },
        "icon": { "type": "string" },
        "collapsed": { "type": "boolean" },
        "translations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "items": {
          "type": "array",
          "items": { "$ref": "#/$defs/docsNavItem" }
        }
      }
    },
    "docsNavAutogenerateItem": {
      "type": "object",
      "additionalProperties": false,
      "required": ["autogenerate"],
      "properties": {
        "autogenerate": {
          "type": "object",
          "additionalProperties": false,
          "required": ["directory"],
          "properties": {
            "directory": { "type": "string" },
            "depth": { "type": "number" },
            "exclude": {
              "oneOf": [
                { "type": "string" },
                {
                  "type": "array",
                  "items": { "type": "string" }
                }
              ]
            },
            "structure": {
              "type": "string",
              "enum": ["flat", "tree"]
            }
          }
        }
      }
    },
    "docsNavBadge": {
      "oneOf": [
        { "type": "string" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["label"],
          "properties": {
            "label": { "type": "string" },
            "position": {
              "type": "string",
              "enum": ["leading", "trailing"]
            },
            "variant": {
              "type": "string",
              "enum": ["solid", "soft", "subtle", "outline"]
            },
            "color": {
              "type": "string",
              "enum": ["neutral", "accent", "info", "success", "warning", "danger"]
            }
          }
        }
      ]
    },
    "localSearch": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "provider": { "const": "local" }
      }
    },
    "pagefindSearch": {
      "type": "object",
      "additionalProperties": false,
      "required": ["provider"],
      "properties": {
        "provider": { "const": "pagefind" },
        "excludeSelectors": {
          "type": "array",
          "items": { "type": "string" }
        },
        "outputSubdir": { "type": "string" },
        "rootSelector": { "type": "string" }
      }
    },
    "docsearch": {
      "type": "object",
      "additionalProperties": true,
      "required": ["provider", "appId", "apiKey", "indexName"],
      "properties": {
        "provider": { "const": "docsearch" },
        "appId": { "type": "string" },
        "apiKey": { "type": "string" },
        "indexName": {
          "oneOf": [
            { "type": "string" },
            {
              "type": "object",
              "additionalProperties": { "type": "string" }
            }
          ]
        },
        "askAi": { "type": "string" }
      }
    },
    "algoliaSearch": {
      "type": "object",
      "additionalProperties": false,
      "required": ["provider", "appId", "apiKey", "indexName"],
      "properties": {
        "provider": { "const": "algolia" },
        "appId": { "type": "string" },
        "apiKey": { "type": "string" },
        "indexName": {
          "oneOf": [
            { "type": "string" },
            {
              "type": "object",
              "additionalProperties": { "type": "string" }
            }
          ]
        }
      }
    },
    "inkeepAssistant": {
      "type": "object",
      "additionalProperties": true,
      "required": ["provider", "apiKey"],
      "properties": {
        "provider": { "const": "inkeep" },
        "apiKey": { "type": "string" },
        "organizationDisplayName": { "type": "string" },
        "primaryBrandColor": { "type": "string" }
      }
    },
    "kapaAssistant": {
      "type": "object",
      "additionalProperties": true,
      "required": ["provider", "websiteId"],
      "properties": {
        "provider": { "const": "kapa" },
        "websiteId": { "type": "string" },
        "projectName": { "type": "string" },
        "projectColor": { "type": "string" },
        "projectLogo": { "type": "string" }
      }
    },
    "customAssistant": {
      "type": "object",
      "additionalProperties": false,
      "required": ["provider"],
      "properties": {
        "provider": { "const": "custom" }
      }
    },
    "pageAction": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": { "type": "string" },
        "label": { "type": "string" },
        "icon": { "type": "string" },
        "href": { "type": "string" },
        "external": { "type": "boolean" }
      }
    },
    "contributors": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "avatar": {
          "oneOf": [
            {
              "type": "string",
              "enum": ["github", "gravatar"]
            },
            { "const": false }
          ]
        },
        "exclude": {
          "type": "array",
          "items": { "type": "string" }
        },
        "github": { "type": "string" },
        "branch": { "type": "string" },
        "max": { "type": "number" },
        "githubProfileLimit": { "type": "number" }
      }
    },
    "source": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "branch": { "type": "string" },
        "github": { "type": "string" },
        "gitlab": { "type": "string" },
        "codeberg": { "type": "string" }
      }
    },
    "editLink": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "branch": { "type": "string" },
        "pattern": { "type": "string" },
        "github": { "type": "string" },
        "gitlab": { "type": "string" },
        "codeberg": { "type": "string" }
      }
    },
    "locale": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label"],
      "properties": {
        "label": { "type": "string" },
        "lang": { "type": "string" },
        "dir": {
          "type": "string",
          "enum": ["ltr", "rtl"]
        },
        "directory": { "type": "string" }
      }
    },
    "footerSection": {
      "type": "object",
      "additionalProperties": false,
      "required": ["title", "links"],
      "properties": {
        "title": { "type": "string" },
        "links": {
          "type": "array",
          "items": { "$ref": "#/$defs/link" }
        }
      }
    }
  }
}
