// SSG (Static Site Generator) Type Definitions

// =============================================================================
// Deploy Target
// =============================================================================

///|
/// Deploy target for build output
pub(all) enum DeployTarget {
  /// Pure static files (default, works with any host)
  Static
  /// Cloudflare Workers/Pages (generates _routes.json)
  Cloudflare
  /// GitHub Pages (generates .nojekyll, CNAME)
  GithubPages
  /// Vercel (generates vercel.json)
  Vercel
  /// Netlify (generates _headers, _redirects)
  Netlify
  /// Deno Deploy (optional main.ts for SSR)
  Deno
  /// Node.js server
  Node
} derive(Eq, Show)

///|
/// Default deploy target
pub fn DeployTarget::default() -> DeployTarget {
  Static
}

// =============================================================================
// Configuration Types
// =============================================================================

///|
/// SSG Configuration from sol.config.json
pub(all) struct SsgConfig {
  /// Input directory containing markdown files (default: "docs")
  docs_dir : String
  /// Output directory for generated HTML (default: "dist")
  output_dir : String
  /// Site title
  title : String
  /// Base URL for the site (default: "/")
  base_url : String
  /// Navigation items
  nav : Array[NavItem]
  /// Sidebar configuration
  sidebar : SidebarConfig
  /// Islands configuration for hydration
  islands : IslandsConfig?
  /// Theme configuration
  theme : ThemeConfig
  /// Navigation configuration
  navigation : NavigationConfig
  /// Internationalization configuration
  i18n : I18nConfig
  /// Directories to exclude from scanning (e.g., ["internal", "drafts"])
  exclude : Array[String]
  /// Use trailing slashes in URLs (default: true for SSG compatibility)
  trailing_slash : Bool
  /// OGP configuration
  ogp : OgpConfig
  /// Raw OGP meta tags text (optional, added after generated OGP tags)
  ogp_text : String?
  /// Custom HTML snippets to inject at end of 
  head_snippets : Array[String]
  /// Custom HTML snippets to inject before 
  body_snippets : Array[String]
  /// Custom HTML snippets to inject before  (production only)
  prod_body_snippets : Array[String]
  /// Sanitize HTML content from .html files (default: false)
  /// When true, removes potentially dangerous tags like