themes: add bundled theme registry and picker

This commit is contained in:
2026-11-11 15:16:12 +07:00
parent 9ec8b128db
commit baea9cd9ff
32 changed files with 6348 additions and 309 deletions
+27
View File
@@ -8,6 +8,7 @@ use rust_embed::RustEmbed;
#[include = "fonts/**/*"]
#[include = "brand/**/*"]
#[include = "icons/**/*"]
#[include = "themes/**/*"]
#[exclude = "*.DS_Store"]
pub struct Assets;
@@ -74,3 +75,29 @@ impl AssetSource for Assets {
.collect())
}
}
#[cfg(test)]
mod tests {
use gpui_kit::component::ThemeSet;
use super::*;
/// Every bundled theme file must parse against gpui-kit's schema.
#[test]
fn bundled_themes_parse() {
let mut count = 0;
for entry in Assets::iter().filter(|p| p.starts_with("themes/")) {
let file = Assets::get(&entry).expect("theme file exists");
let content = std::str::from_utf8(&file.data).expect("theme is UTF-8");
let set: ThemeSet = serde_json::from_str(content).expect("theme parses");
assert!(!set.themes.is_empty(), "{entry} has no themes");
count += set.themes.len();
}
assert!(
count >= 36,
"expected the bundled gpui-kit themes, got {count}"
);
}
}