# Native PufferPanel theme adapter; retains upstream layout and accessibility modes. def variables [theme: record, mode: string] { let p = $theme.palette let values = { "color-scheme": $mode "--primary": $p.ui.accent "--text-primary": $p.ui.backdrop "--primary-hover": $"($p.ui.accent)26" "--backdrop": $p.content.backdrop "--background": $p.ui.backdrop "--code-background": $p.content.backdrop "--text": $p.content.normal "--text-disabled": $p.content.minor "--success": $p.content.focus "--success-bg": $"($p.content.focus)26" "--info": $p.info "--info-bg": $"($p.info)26" "--warning": $p.warning "--warning-bg": $"($p.warning)26" "--error": $p.error "--error-bg": $"($p.error)26" "--ace-theme": (if $mode == "dark" { "monokai" } else { "github" }) "--chartjs-color": $p.content.normal "--chartjs-tooltip-font-color": $p.content.normal "--chartjs-tooltip-background-color": $p.ui.backdrop "--chartjs-grid-color": $"($p.content.minor)40" "--chartjs-series-line-cpu": $p.info "--chartjs-series-fill-cpu": $"($p.info)26" "--chartjs-series-line-memory": $p.content.accent "--chartjs-series-fill-memory": $"($p.content.accent)26" "--scrollshadow-color": $p.content.backdrop } $values | transpose name value | each {|entry| $" ($entry.name): ($entry.value);" } | str join (char newline) } export def css [] { let light = (variables (open output/light.toml) light) let dark = (variables (open output/dark.toml) dark) $"/* Generated from dotfiles/nugu/pufferpanel.nu. Do not edit. */ #app #root.mode-light { ($light) } #app #root.mode-dark { ($dark) } /* Keep upstream high-contrast mode intact, including OS contrast preference. */ @media not \(prefers-contrast: more\) { #app #root.mode-auto { ($light) } @media \(prefers-color-scheme: dark\) { #app #root.mode-auto { ($dark) } } } " }