MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / build_theme

Function build_theme

crates/opencode-tui/src/theme/mod.rs:293–468  ·  view source on GitHub ↗
(file: &ThemeFile, mode: ThemeMode)

Source from the content-addressed store, hash-verified

291}
292
293fn build_theme(file: &ThemeFile, mode: ThemeMode) -> Theme {
294 let mut stack = Vec::new();
295 let primary = resolve_theme_color(file, "primary", mode, &mut stack).unwrap_or(Color::Cyan);
296 let secondary = resolve_theme_color(file, "secondary", mode, &mut stack).unwrap_or(Color::Blue);
297 let info = resolve_theme_color(file, "info", mode, &mut stack).unwrap_or(primary);
298 let success = resolve_theme_color(file, "success", mode, &mut stack).unwrap_or(Color::Green);
299 let warning = resolve_theme_color(file, "warning", mode, &mut stack).unwrap_or(Color::Yellow);
300 let error = resolve_theme_color(file, "error", mode, &mut stack).unwrap_or(Color::Red);
301
302 Theme {
303 text: resolve_theme_color(file, "text", mode, &mut stack).unwrap_or(Color::White),
304 text_muted: resolve_theme_color(file, "textMuted", mode, &mut stack)
305 .unwrap_or(Color::DarkGray),
306 background: resolve_theme_color(file, "background", mode, &mut stack)
307 .unwrap_or(Color::Reset),
308 background_panel: resolve_theme_color(file, "backgroundPanel", mode, &mut stack)
309 .unwrap_or(Color::Black),
310 background_element: resolve_theme_color(file, "backgroundElement", mode, &mut stack)
311 .unwrap_or(Color::DarkGray),
312 border: resolve_theme_color(file, "border", mode, &mut stack).unwrap_or(Color::Gray),
313 primary,
314 secondary,
315 success,
316 warning,
317 error,
318 info,
319 diff_added: resolve_theme_color(file, "diffAdded", mode, &mut stack).unwrap_or(success),
320 diff_removed: resolve_theme_color(file, "diffRemoved", mode, &mut stack).unwrap_or(error),
321 agent_colors: vec![
322 primary,
323 secondary,
324 info,
325 success,
326 warning,
327 error,
328 resolve_theme_color(file, "accent", mode, &mut stack).unwrap_or(secondary),
329 resolve_theme_color(file, "markdownLink", mode, &mut stack).unwrap_or(primary),
330 ],
331 background_menu: resolve_theme_color(file, "backgroundMenu", mode, &mut stack).unwrap_or(
332 resolve_theme_color(file, "backgroundElement", mode, &mut stack).unwrap_or(
333 if mode == ThemeMode::Dark {
334 Color::Rgb(50, 50, 55)
335 } else {
336 Color::Rgb(220, 220, 225)
337 },
338 ),
339 ),
340 border_active: resolve_theme_color(file, "borderActive", mode, &mut stack)
341 .unwrap_or(primary),
342 border_subtle: resolve_theme_color(file, "borderSubtle", mode, &mut stack).unwrap_or(
343 resolve_theme_color(file, "border", mode, &mut stack).unwrap_or(Color::Gray),
344 ),
345 markdown_heading: resolve_theme_color(file, "markdownHeading", mode, &mut stack)
346 .unwrap_or(primary),
347 markdown_link: resolve_theme_color(file, "markdownLink", mode, &mut stack).unwrap_or(info),
348 markdown_link_text: resolve_theme_color(file, "markdownLinkText", mode, &mut stack)
349 .unwrap_or(info),
350 markdown_code: resolve_theme_color(file, "markdownCode", mode, &mut stack).unwrap_or(

Callers 1

from_presetMethod · 0.85

Calls 2

newFunction · 0.85
resolve_theme_colorFunction · 0.85

Tested by

no test coverage detected