98 lines
2.7 KiB
V
98 lines
2.7 KiB
V
module site
|
|
|
|
import os
|
|
// Combined config structure
|
|
|
|
@[heap]
|
|
pub struct SiteConfig {
|
|
pub mut:
|
|
name string
|
|
title string = 'My Documentation Site' // General site title
|
|
description string // General site description, can be used for meta if meta_description not set
|
|
tagline string
|
|
favicon string = 'img/favicon.png'
|
|
image string = 'img/tf_graph.png' // General site image, can be used for meta if meta_image not set
|
|
copyright string = 'someone'
|
|
footer Footer
|
|
menu Menu
|
|
imports []ImportItem
|
|
|
|
// New fields for Docusaurus compatibility
|
|
url string // The main URL of the site (from !!site.config url:)
|
|
base_url string // The base URL for Docusaurus (from !!site.config base_url:)
|
|
url_home string // The home page path relative to base_url (from !!site.config url_home:)
|
|
|
|
meta_title string // Specific title for SEO metadata (from !!site.config_meta title:)
|
|
meta_image string // Specific image for SEO metadata (og:image) (from !!site.config_meta image:)
|
|
|
|
build_dest []BuildDest // Production build destinations (from !!site.build_dest)
|
|
build_dest_dev []BuildDest // Development build destinations (from !!site.build_dest_dev)
|
|
|
|
announcement AnnouncementBar // Announcement bar configuration (from !!site.announcement)
|
|
}
|
|
|
|
// Announcement bar config structure
|
|
pub struct AnnouncementBar {
|
|
pub mut:
|
|
// id string @[json: 'id']
|
|
content string @[json: 'content']
|
|
background_color string @[json: 'backgroundColor']
|
|
text_color string @[json: 'textColor']
|
|
is_closeable bool @[json: 'isCloseable']
|
|
}
|
|
|
|
// Footer config structures
|
|
pub struct FooterItem {
|
|
pub mut:
|
|
label string
|
|
to string
|
|
href string
|
|
}
|
|
|
|
pub struct FooterLink {
|
|
pub mut:
|
|
title string
|
|
items []FooterItem
|
|
}
|
|
|
|
pub struct Footer {
|
|
pub mut:
|
|
style string = 'dark'
|
|
links []FooterLink
|
|
}
|
|
|
|
// menu config structures
|
|
pub struct MenuItem {
|
|
pub mut:
|
|
href string
|
|
to string
|
|
label string
|
|
position string
|
|
}
|
|
|
|
pub struct Menu {
|
|
pub mut:
|
|
title string
|
|
items []MenuItem
|
|
logo_alt string @[json: 'logoAlt']
|
|
logo_src string @[json: 'logoSrc']
|
|
logo_src_dark string @[json: 'logoSrcDark']
|
|
}
|
|
|
|
pub struct BuildDest {
|
|
pub mut:
|
|
path string
|
|
ssh_name string
|
|
}
|
|
|
|
// is to import one docusaurus site into another, can be used to e.g. import static parts from one location into the build one we are building
|
|
pub struct ImportItem {
|
|
pub mut:
|
|
name string // will normally be empty
|
|
url string // http git url can be to specific path
|
|
path string
|
|
dest string // location in the docs folder of the place where we will build the documentation site e.g. docusaurus
|
|
replace map[string]string // will replace ${NAME} in the imported content
|
|
visible bool = true
|
|
}
|