// 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