feat(ui): Allow configuring default dark-mode value (#1015)
* fix: theme flickering * chore(ui): added dark mode tests * feat(ui): Expose new ui.dark-mode parameter to set default theme * refactor(ui): Rename theme variable to themeFromCookie for clarity --------- Co-authored-by: TwiN <twin@linux.com> Co-authored-by: TwiN <chris@twin.sh>
This commit is contained in:
@ -18,6 +18,8 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
defaultDarkMode = true
|
||||
|
||||
ErrButtonValidationFailed = errors.New("invalid button configuration: missing required name or link")
|
||||
)
|
||||
|
||||
@ -30,6 +32,14 @@ type Config struct {
|
||||
Link string `yaml:"link,omitempty"` // Link to open when clicking on the logo
|
||||
Buttons []Button `yaml:"buttons,omitempty"` // Buttons to display below the header
|
||||
CustomCSS string `yaml:"custom-css,omitempty"` // Custom CSS to include in the page
|
||||
DarkMode *bool `yaml:"dark-mode,omitempty"` // DarkMode is a flag to enable dark mode by default
|
||||
}
|
||||
|
||||
func (cfg *Config) IsDarkMode() bool {
|
||||
if cfg.DarkMode != nil {
|
||||
return *cfg.DarkMode
|
||||
}
|
||||
return defaultDarkMode
|
||||
}
|
||||
|
||||
// Button is the configuration for a button on the UI
|
||||
@ -55,6 +65,7 @@ func GetDefaultConfig() *Config {
|
||||
Logo: defaultLogo,
|
||||
Link: defaultLink,
|
||||
CustomCSS: defaultCustomCSS,
|
||||
DarkMode: &defaultDarkMode,
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,6 +89,9 @@ func (cfg *Config) ValidateAndSetDefaults() error {
|
||||
if len(cfg.CustomCSS) == 0 {
|
||||
cfg.CustomCSS = defaultCustomCSS
|
||||
}
|
||||
if cfg.DarkMode == nil {
|
||||
cfg.DarkMode = &defaultDarkMode
|
||||
}
|
||||
for _, btn := range cfg.Buttons {
|
||||
if err := btn.Validate(); err != nil {
|
||||
return err
|
||||
@ -89,5 +103,10 @@ func (cfg *Config) ValidateAndSetDefaults() error {
|
||||
return err
|
||||
}
|
||||
var buffer bytes.Buffer
|
||||
return t.Execute(&buffer, cfg)
|
||||
return t.Execute(&buffer, ViewData{UI: cfg, Theme: "dark"})
|
||||
}
|
||||
|
||||
type ViewData struct {
|
||||
UI *Config
|
||||
Theme string
|
||||
}
|
||||
|
Reference in New Issue
Block a user