Documentation
¶
Index ¶
- type CSVFenceConfig
- type Config
- type ConfigValidationError
- type FeedConfig
- type FeedDefaults
- type FeedFormats
- type FeedPage
- type FeedTemplates
- type FilterExpressionError
- type FrontmatterParseError
- type GlobConfig
- type HighlightConfig
- type Link
- type MDVideoConfig
- type MarkdownConfig
- type MermaidConfig
- type PluginNotFoundError
- type Post
- type PostProcessingError
- type PrevNextConfig
- type PrevNextContext
- type PrevNextStrategy
- type SyndicationConfig
- type TemplateNotFoundError
- type TemplateSyntaxError
- type ThemeConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CSVFenceConfig ¶
type CSVFenceConfig struct {
// Enabled controls whether CSV blocks are converted to tables (default: true)
Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`
// TableClass is the CSS class for generated tables (default: "csv-table")
TableClass string `json:"table_class" yaml:"table_class" toml:"table_class"`
// HasHeader indicates whether the first row is a header (default: true)
HasHeader bool `json:"has_header" yaml:"has_header" toml:"has_header"`
// Delimiter is the CSV field delimiter (default: ",")
Delimiter string `json:"delimiter" yaml:"delimiter" toml:"delimiter"`
}
CSVFenceConfig configures the csv_fence plugin.
func NewCSVFenceConfig ¶
func NewCSVFenceConfig() CSVFenceConfig
NewCSVFenceConfig creates a new CSVFenceConfig with default values.
type Config ¶
type Config struct {
// OutputDir is the directory where generated files are written (default: "output")
OutputDir string `json:"output_dir" yaml:"output_dir" toml:"output_dir"`
// URL is the base URL of the site
URL string `json:"url" yaml:"url" toml:"url"`
// Title is the site title
Title string `json:"title" yaml:"title" toml:"title"`
// Description is the site description
Description string `json:"description" yaml:"description" toml:"description"`
// Author is the site author
Author string `json:"author" yaml:"author" toml:"author"`
// AssetsDir is the directory containing static assets (default: "static")
AssetsDir string `json:"assets_dir" yaml:"assets_dir" toml:"assets_dir"`
// TemplatesDir is the directory containing templates (default: "templates")
TemplatesDir string `json:"templates_dir" yaml:"templates_dir" toml:"templates_dir"`
// Hooks is the list of hooks to run (default: ["default"])
Hooks []string `json:"hooks" yaml:"hooks" toml:"hooks"`
// DisabledHooks is the list of hooks to disable
DisabledHooks []string `json:"disabled_hooks" yaml:"disabled_hooks" toml:"disabled_hooks"`
// GlobConfig configures file globbing behavior
GlobConfig GlobConfig `json:"glob" yaml:"glob" toml:"glob"`
// MarkdownConfig configures markdown processing
MarkdownConfig MarkdownConfig `json:"markdown" yaml:"markdown" toml:"markdown"`
// Feeds is the list of feed configurations
Feeds []FeedConfig `json:"feeds" yaml:"feeds" toml:"feeds"`
// FeedDefaults provides default values for feed configurations
FeedDefaults FeedDefaults `json:"feed_defaults" yaml:"feed_defaults" toml:"feed_defaults"`
// Concurrency is the number of concurrent workers (default: 0 = auto)
Concurrency int `json:"concurrency" yaml:"concurrency" toml:"concurrency"`
// Theme configures the site theme
Theme ThemeConfig `json:"theme" yaml:"theme" toml:"theme"`
}
Config represents the site configuration for markata-go.
func (*Config) IsHookEnabled ¶
IsHookEnabled checks if a hook is enabled (in Hooks and not in DisabledHooks).
type ConfigValidationError ¶
ConfigValidationError indicates a configuration validation error.
func NewConfigValidationError ¶
func NewConfigValidationError(field string, value interface{}, message string) *ConfigValidationError
NewConfigValidationError creates a new ConfigValidationError.
func (*ConfigValidationError) Error ¶
func (e *ConfigValidationError) Error() string
type FeedConfig ¶
type FeedConfig struct {
// Slug is the URL-safe identifier for the feed
Slug string `json:"slug" yaml:"slug" toml:"slug"`
// Title is the feed title
Title string `json:"title" yaml:"title" toml:"title"`
// Description is the feed description
Description string `json:"description" yaml:"description" toml:"description"`
// Filter is the filter expression for selecting posts
Filter string `json:"filter" yaml:"filter" toml:"filter"`
// Sort is the field to sort posts by
Sort string `json:"sort" yaml:"sort" toml:"sort"`
// Reverse indicates if the sort order should be reversed
Reverse bool `json:"reverse" yaml:"reverse" toml:"reverse"`
// ItemsPerPage is the number of items per page (default: 10)
ItemsPerPage int `json:"items_per_page" yaml:"items_per_page" toml:"items_per_page"`
// OrphanThreshold is the minimum number of items for a separate page (default: 3)
OrphanThreshold int `json:"orphan_threshold" yaml:"orphan_threshold" toml:"orphan_threshold"`
// Formats specifies which output formats to generate
Formats FeedFormats `json:"formats" yaml:"formats" toml:"formats"`
// Templates specifies custom templates for each format
Templates FeedTemplates `json:"templates" yaml:"templates" toml:"templates"`
// Posts holds the filtered posts at runtime (not serialized)
Posts []*Post `json:"-" yaml:"-" toml:"-"`
// Pages holds the paginated results at runtime (not serialized)
Pages []FeedPage `json:"-" yaml:"-" toml:"-"`
}
FeedConfig represents a feed configuration.
func NewFeedConfig ¶
func NewFeedConfig(defaults FeedDefaults) *FeedConfig
NewFeedConfig creates a new FeedConfig with default values from FeedDefaults.
func (*FeedConfig) ApplyDefaults ¶
func (f *FeedConfig) ApplyDefaults(defaults FeedDefaults)
ApplyDefaults applies default values from FeedDefaults to a FeedConfig for any fields that are not explicitly set.
func (*FeedConfig) Paginate ¶
func (f *FeedConfig) Paginate(baseURL string)
Paginate divides the Posts slice into pages based on ItemsPerPage and OrphanThreshold.
type FeedDefaults ¶
type FeedDefaults struct {
// ItemsPerPage is the default number of items per page
ItemsPerPage int `json:"items_per_page" yaml:"items_per_page" toml:"items_per_page"`
// OrphanThreshold is the default minimum number of items for a separate page
OrphanThreshold int `json:"orphan_threshold" yaml:"orphan_threshold" toml:"orphan_threshold"`
// Formats specifies the default output formats
Formats FeedFormats `json:"formats" yaml:"formats" toml:"formats"`
// Templates specifies the default templates
Templates FeedTemplates `json:"templates" yaml:"templates" toml:"templates"`
// Syndication configures syndication feed behavior
Syndication SyndicationConfig `json:"syndication" yaml:"syndication" toml:"syndication"`
}
FeedDefaults provides default values that feeds inherit.
func NewFeedDefaults ¶
func NewFeedDefaults() FeedDefaults
NewFeedDefaults creates FeedDefaults with sensible default values.
type FeedFormats ¶
type FeedFormats struct {
// HTML generates an HTML page
HTML bool `json:"html" yaml:"html" toml:"html"`
// RSS generates an RSS feed
RSS bool `json:"rss" yaml:"rss" toml:"rss"`
// Atom generates an Atom feed
Atom bool `json:"atom" yaml:"atom" toml:"atom"`
// JSON generates a JSON feed
JSON bool `json:"json" yaml:"json" toml:"json"`
// Markdown generates a Markdown file
Markdown bool `json:"markdown" yaml:"markdown" toml:"markdown"`
// Text generates a plain text file
Text bool `json:"text" yaml:"text" toml:"text"`
}
FeedFormats specifies which output formats to generate for a feed.
func (FeedFormats) HasAnyEnabled ¶
func (f FeedFormats) HasAnyEnabled() bool
HasAnyEnabled returns true if any output format is enabled.
type FeedPage ¶
type FeedPage struct {
// Number is the page number (1-indexed)
Number int `json:"number" yaml:"number" toml:"number"`
// Posts is the list of posts on this page
Posts []*Post `json:"posts" yaml:"posts" toml:"posts"`
// HasPrev indicates if there is a previous page
HasPrev bool `json:"has_prev" yaml:"has_prev" toml:"has_prev"`
// HasNext indicates if there is a next page
HasNext bool `json:"has_next" yaml:"has_next" toml:"has_next"`
// PrevURL is the URL of the previous page
PrevURL string `json:"prev_url" yaml:"prev_url" toml:"prev_url"`
// NextURL is the URL of the next page
NextURL string `json:"next_url" yaml:"next_url" toml:"next_url"`
}
FeedPage represents a single page of paginated feed results.
type FeedTemplates ¶
type FeedTemplates struct {
// HTML is the template for HTML output
HTML string `json:"html" yaml:"html" toml:"html"`
// RSS is the template for RSS output
RSS string `json:"rss" yaml:"rss" toml:"rss"`
// Atom is the template for Atom output
Atom string `json:"atom" yaml:"atom" toml:"atom"`
// JSON is the template for JSON output
JSON string `json:"json" yaml:"json" toml:"json"`
// Card is the template for individual post cards
Card string `json:"card" yaml:"card" toml:"card"`
}
FeedTemplates specifies custom templates for feed formats.
type FilterExpressionError ¶
FilterExpressionError indicates an error in a filter expression.
func NewFilterExpressionError ¶
func NewFilterExpressionError(expression, message string, err error) *FilterExpressionError
NewFilterExpressionError creates a new FilterExpressionError.
func (*FilterExpressionError) Error ¶
func (e *FilterExpressionError) Error() string
func (*FilterExpressionError) Unwrap ¶
func (e *FilterExpressionError) Unwrap() error
type FrontmatterParseError ¶
FrontmatterParseError indicates an error parsing frontmatter from a post.
func NewFrontmatterParseError ¶
func NewFrontmatterParseError(path, message string, err error) *FrontmatterParseError
NewFrontmatterParseError creates a new FrontmatterParseError.
func (*FrontmatterParseError) Error ¶
func (e *FrontmatterParseError) Error() string
func (*FrontmatterParseError) Unwrap ¶
func (e *FrontmatterParseError) Unwrap() error
type GlobConfig ¶
type GlobConfig struct {
// Patterns is the list of glob patterns to match source files
Patterns []string `json:"patterns" yaml:"patterns" toml:"patterns"`
// UseGitignore determines whether to respect .gitignore files
UseGitignore bool `json:"use_gitignore" yaml:"use_gitignore" toml:"use_gitignore"`
}
GlobConfig configures file globbing behavior.
type HighlightConfig ¶
type HighlightConfig struct {
// Enabled controls whether syntax highlighting is active (default: true)
Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" toml:"enabled,omitempty"`
// Theme is the Chroma theme to use for syntax highlighting.
// If empty, the theme is automatically derived from the site's color palette.
// See https://xyproto.github.io/splash/docs/ for available themes.
Theme string `json:"theme,omitempty" yaml:"theme,omitempty" toml:"theme,omitempty"`
// LineNumbers enables line numbers in code blocks (default: false)
LineNumbers bool `json:"line_numbers" yaml:"line_numbers" toml:"line_numbers"`
}
HighlightConfig configures syntax highlighting for code blocks.
func NewHighlightConfig ¶
func NewHighlightConfig() HighlightConfig
NewHighlightConfig creates a new HighlightConfig with default values.
func (*HighlightConfig) IsEnabled ¶
func (h *HighlightConfig) IsEnabled() bool
IsEnabled returns whether syntax highlighting is enabled. Defaults to true if not explicitly set.
type Link ¶
type Link struct {
// SourceURL is the absolute URL of the source post
SourceURL string `json:"source_url" yaml:"source_url" toml:"source_url"`
// SourcePost is a reference to the source post object
SourcePost *Post `json:"-" yaml:"-" toml:"-"`
// TargetPost is a reference to the target post (nil if external)
TargetPost *Post `json:"-" yaml:"-" toml:"-"`
// RawTarget is the original href value as found in the HTML
RawTarget string `json:"raw_target" yaml:"raw_target" toml:"raw_target"`
// TargetURL is the resolved absolute URL
TargetURL string `json:"target_url" yaml:"target_url" toml:"target_url"`
// TargetDomain is the domain extracted from target_url
TargetDomain string `json:"target_domain" yaml:"target_domain" toml:"target_domain"`
// IsInternal is true if the link points to the same site
IsInternal bool `json:"is_internal" yaml:"is_internal" toml:"is_internal"`
// IsSelf is true if the link points to the same post
IsSelf bool `json:"is_self" yaml:"is_self" toml:"is_self"`
// SourceText is the cleaned link text from the source anchor
SourceText string `json:"source_text" yaml:"source_text" toml:"source_text"`
// TargetText is the cleaned link text from the target (if available)
TargetText string `json:"target_text" yaml:"target_text" toml:"target_text"`
}
Link represents a hyperlink found in a post's HTML content. It tracks both the source (where the link is from) and target (where it points to).
func (*Link) SourceSlug ¶
SourceSlug returns the slug of the source post, or empty string if nil.
func (*Link) SourceTitle ¶
SourceTitle returns the title of the source post, or empty string if nil.
func (*Link) TargetSlug ¶
TargetSlug returns the slug of the target post, or empty string if nil.
func (*Link) TargetTitle ¶
TargetTitle returns the title of the target post, or empty string if nil.
type MDVideoConfig ¶
type MDVideoConfig struct {
// Enabled controls whether video conversion is active (default: true)
Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`
// VideoExtensions is the list of file extensions to treat as videos
VideoExtensions []string `json:"video_extensions" yaml:"video_extensions" toml:"video_extensions"`
// VideoClass is the CSS class added to video elements (default: "md-video")
VideoClass string `json:"video_class" yaml:"video_class" toml:"video_class"`
// Controls shows video controls (default: true)
Controls bool `json:"controls" yaml:"controls" toml:"controls"`
// Autoplay starts video automatically (default: true for GIF-like behavior)
Autoplay bool `json:"autoplay" yaml:"autoplay" toml:"autoplay"`
// Loop repeats the video (default: true for GIF-like behavior)
Loop bool `json:"loop" yaml:"loop" toml:"loop"`
// Muted mutes the video (default: true, required for autoplay in most browsers)
Muted bool `json:"muted" yaml:"muted" toml:"muted"`
// Playsinline enables inline playback on mobile (default: true)
Playsinline bool `json:"playsinline" yaml:"playsinline" toml:"playsinline"`
// Preload hints how much to preload: "none", "metadata", "auto" (default: "metadata")
Preload string `json:"preload" yaml:"preload" toml:"preload"`
}
MDVideoConfig configures the md_video plugin.
func NewMDVideoConfig ¶
func NewMDVideoConfig() MDVideoConfig
NewMDVideoConfig creates a new MDVideoConfig with sensible defaults. Default behavior is GIF-like: autoplay, loop, muted, with controls available.
type MarkdownConfig ¶
type MarkdownConfig struct {
// Extensions is the list of markdown extensions to enable
Extensions []string `json:"extensions" yaml:"extensions" toml:"extensions"`
// Highlight configures syntax highlighting for code blocks
Highlight HighlightConfig `json:"highlight" yaml:"highlight" toml:"highlight"`
}
MarkdownConfig configures markdown processing.
type MermaidConfig ¶
type MermaidConfig struct {
// Enabled controls whether mermaid processing is active (default: true)
Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`
// CDNURL is the URL for the Mermaid.js library
CDNURL string `json:"cdn_url" yaml:"cdn_url" toml:"cdn_url"`
// Theme is the Mermaid theme to use (default, dark, forest, neutral)
Theme string `json:"theme" yaml:"theme" toml:"theme"`
}
MermaidConfig configures the mermaid plugin.
func NewMermaidConfig ¶
func NewMermaidConfig() MermaidConfig
NewMermaidConfig creates a new MermaidConfig with default values.
type PluginNotFoundError ¶
PluginNotFoundError indicates a plugin was not found.
func NewPluginNotFoundError ¶
func NewPluginNotFoundError(name string, available []string) *PluginNotFoundError
NewPluginNotFoundError creates a new PluginNotFoundError.
func (*PluginNotFoundError) Error ¶
func (e *PluginNotFoundError) Error() string
type Post ¶
type Post struct {
// Path is the source file path
Path string `json:"path" yaml:"path" toml:"path"`
// Content is the raw markdown content after frontmatter
Content string `json:"content" yaml:"content" toml:"content"`
// Slug is the URL-safe identifier
Slug string `json:"slug" yaml:"slug" toml:"slug"`
// Href is the relative URL path (e.g., /my-post/)
Href string `json:"href" yaml:"href" toml:"href"`
// Title is the optional post title
Title *string `json:"title,omitempty" yaml:"title,omitempty" toml:"title,omitempty"`
// Date is the optional publication date
Date *time.Time `json:"date,omitempty" yaml:"date,omitempty" toml:"date,omitempty"`
// Published indicates if the post is published
Published bool `json:"published" yaml:"published" toml:"published"`
// Draft indicates if the post is a draft
Draft bool `json:"draft" yaml:"draft" toml:"draft"`
// Skip indicates if the post should be skipped during processing
Skip bool `json:"skip" yaml:"skip" toml:"skip"`
// Tags is a list of tags associated with the post
Tags []string `json:"tags,omitempty" yaml:"tags,omitempty" toml:"tags,omitempty"`
// Description is the optional post description
Description *string `json:"description,omitempty" yaml:"description,omitempty" toml:"description,omitempty"`
// Template is the template file to use for rendering (default: "post.html")
Template string `json:"template" yaml:"template" toml:"template"`
// HTML is the final rendered HTML including template wrapper
HTML string `json:"html" yaml:"html" toml:"html"`
// ArticleHTML is the rendered content without template wrapper
ArticleHTML string `json:"article_html" yaml:"article_html" toml:"article_html"`
// Prev is the previous post in the navigation sequence
Prev *Post `json:"-" yaml:"-" toml:"-"`
// Next is the next post in the navigation sequence
Next *Post `json:"-" yaml:"-" toml:"-"`
// PrevNextFeed is the feed/series slug used for navigation
PrevNextFeed string `json:"prevnext_feed,omitempty" yaml:"prevnext_feed,omitempty" toml:"prevnext_feed,omitempty"`
// PrevNextContext contains full navigation context
PrevNextContext *PrevNextContext `json:"-" yaml:"-" toml:"-"`
// Hrefs is a list of raw href values from all links in the post
Hrefs []string `json:"hrefs,omitempty" yaml:"hrefs,omitempty" toml:"hrefs,omitempty"`
// Inlinks are links pointing TO this post from other posts
Inlinks []*Link `json:"inlinks,omitempty" yaml:"inlinks,omitempty" toml:"inlinks,omitempty"`
// Outlinks are links FROM this post to other pages
Outlinks []*Link `json:"outlinks,omitempty" yaml:"outlinks,omitempty" toml:"outlinks,omitempty"`
// Extra holds dynamic/unknown fields from frontmatter
Extra map[string]interface{} `json:"extra,omitempty" yaml:"extra,omitempty" toml:"extra,omitempty"`
}
Post represents a single markdown post with its metadata and content.
func (*Post) GenerateHref ¶
func (p *Post) GenerateHref()
GenerateHref generates the relative URL path from the slug. The href follows the pattern /{slug}/
func (*Post) GenerateSlug ¶
func (p *Post) GenerateSlug()
GenerateSlug generates a URL-safe slug from the title or path. If a title is set, it uses the title; otherwise, it derives the slug from the file path.
type PostProcessingError ¶
PostProcessingError indicates an error during post processing.
func NewPostProcessingError ¶
func NewPostProcessingError(path, stage, message string, err error) *PostProcessingError
NewPostProcessingError creates a new PostProcessingError.
func (*PostProcessingError) Error ¶
func (e *PostProcessingError) Error() string
func (*PostProcessingError) Unwrap ¶
func (e *PostProcessingError) Unwrap() error
type PrevNextConfig ¶
type PrevNextConfig struct {
// Enabled controls whether the plugin is active (default: true)
Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`
// Strategy determines how prev/next links are resolved
Strategy PrevNextStrategy `json:"strategy" yaml:"strategy" toml:"strategy"`
// DefaultFeed is the feed slug to use when strategy is "explicit_feed"
DefaultFeed string `json:"default_feed" yaml:"default_feed" toml:"default_feed"`
}
PrevNextConfig holds configuration for the prevnext plugin.
func NewPrevNextConfig ¶
func NewPrevNextConfig() PrevNextConfig
NewPrevNextConfig creates a new PrevNextConfig with default values.
func (*PrevNextConfig) ApplyDefaults ¶
func (c *PrevNextConfig) ApplyDefaults()
ApplyDefaults ensures all required fields have sensible defaults.
type PrevNextContext ¶
type PrevNextContext struct {
// FeedSlug is the feed or series slug used for navigation
FeedSlug string `json:"feed_slug" yaml:"feed_slug" toml:"feed_slug"`
// FeedTitle is the feed or series title
FeedTitle string `json:"feed_title" yaml:"feed_title" toml:"feed_title"`
// Position is the 1-indexed position of the post in the sequence
Position int `json:"position" yaml:"position" toml:"position"`
// Total is the total number of posts in the sequence
Total int `json:"total" yaml:"total" toml:"total"`
// Prev is the previous post in the sequence (nil if first)
Prev *Post `json:"prev,omitempty" yaml:"prev,omitempty" toml:"prev,omitempty"`
// Next is the next post in the sequence (nil if last)
Next *Post `json:"next,omitempty" yaml:"next,omitempty" toml:"next,omitempty"`
}
PrevNextContext contains navigation context for a post.
func (*PrevNextContext) HasNext ¶
func (c *PrevNextContext) HasNext() bool
HasNext returns true if there is a next post.
func (*PrevNextContext) HasPrev ¶
func (c *PrevNextContext) HasPrev() bool
HasPrev returns true if there is a previous post.
func (*PrevNextContext) IsFirst ¶
func (c *PrevNextContext) IsFirst() bool
IsFirst returns true if this is the first post in the sequence.
func (*PrevNextContext) IsLast ¶
func (c *PrevNextContext) IsLast() bool
IsLast returns true if this is the last post in the sequence.
type PrevNextStrategy ¶
type PrevNextStrategy string
PrevNextStrategy defines how prev/next links are calculated.
const ( // StrategyFirstFeed uses the first feed the post appears in. StrategyFirstFeed PrevNextStrategy = "first_feed" // StrategyExplicitFeed always uses the configured default_feed. StrategyExplicitFeed PrevNextStrategy = "explicit_feed" // StrategySeries uses the post's series frontmatter, falling back to first_feed. StrategySeries PrevNextStrategy = "series" // StrategyFrontmatter uses the post's prevnext_feed frontmatter, falling back to first_feed. StrategyFrontmatter PrevNextStrategy = "frontmatter" )
func (PrevNextStrategy) IsValid ¶
func (s PrevNextStrategy) IsValid() bool
IsValid returns true if the strategy is a recognized value.
type SyndicationConfig ¶
type SyndicationConfig struct {
// MaxItems is the maximum number of items in syndication feeds
MaxItems int `json:"max_items" yaml:"max_items" toml:"max_items"`
// IncludeContent determines if full content is included in feeds
IncludeContent bool `json:"include_content" yaml:"include_content" toml:"include_content"`
}
SyndicationConfig configures syndication feed behavior.
type TemplateNotFoundError ¶
TemplateNotFoundError indicates a template file was not found.
func NewTemplateNotFoundError ¶
func NewTemplateNotFoundError(name, searchPath string) *TemplateNotFoundError
NewTemplateNotFoundError creates a new TemplateNotFoundError.
func (*TemplateNotFoundError) Error ¶
func (e *TemplateNotFoundError) Error() string
type TemplateSyntaxError ¶
TemplateSyntaxError indicates a syntax error in a template.
func NewTemplateSyntaxError ¶
func NewTemplateSyntaxError(name, message string, err error) *TemplateSyntaxError
NewTemplateSyntaxError creates a new TemplateSyntaxError.
func (*TemplateSyntaxError) Error ¶
func (e *TemplateSyntaxError) Error() string
func (*TemplateSyntaxError) Unwrap ¶
func (e *TemplateSyntaxError) Unwrap() error
type ThemeConfig ¶
type ThemeConfig struct {
// Name is the theme name (default: "default")
Name string `json:"name" yaml:"name" toml:"name"`
// Palette is the color palette to use (default: "default-light")
Palette string `json:"palette" yaml:"palette" toml:"palette"`
// Variables allows overriding specific CSS variables
Variables map[string]string `json:"variables" yaml:"variables" toml:"variables"`
// CustomCSS is a path to a custom CSS file to include
CustomCSS string `json:"custom_css" yaml:"custom_css" toml:"custom_css"`
}
ThemeConfig configures the site theme.
func NewThemeConfig ¶
func NewThemeConfig() ThemeConfig
NewThemeConfig creates a new ThemeConfig with default values.