MCPcopy Create free account
hub / github.com/GCWing/BitFun / resolve_opencode_theme

Function resolve_opencode_theme

src/apps/cli/src/ui/theme.rs:853–894  ·  view source on GitHub ↗
(
    json: &OpencodeThemeJson,
    appearance: Appearance,
)

Source from the content-addressed store, hash-verified

851}
852
853fn resolve_opencode_theme(
854 json: &OpencodeThemeJson,
855 appearance: Appearance,
856) -> anyhow::Result<ResolvedTokens> {
857 let mode = if appearance.is_light() {
858 "light"
859 } else {
860 "dark"
861 };
862 let defs = json.defs.clone().unwrap_or_default();
863
864 let mut tokens = ResolvedTokens::default();
865
866 tokens.primary = resolve_key(json, &defs, "primary", mode)?;
867 tokens.success = resolve_key(json, &defs, "success", mode)?;
868 tokens.warning = resolve_key(json, &defs, "warning", mode)?;
869 tokens.error = resolve_key(json, &defs, "error", mode)?;
870 tokens.info = resolve_key(json, &defs, "info", mode)?;
871 tokens.muted = resolve_key(json, &defs, "textMuted", mode)?;
872 tokens.background = resolve_key(json, &defs, "background", mode)?;
873 tokens.border = resolve_key(json, &defs, "border", mode)?;
874 tokens.background_panel = resolve_key(json, &defs, "backgroundPanel", mode)?;
875 tokens.background_element = resolve_key(json, &defs, "backgroundElement", mode)?;
876 tokens.input_background = resolve_key(json, &defs, "inputBackground", mode)?;
877
878 tokens.diff_added_fg = resolve_key(json, &defs, "diffAdded", mode)?;
879 tokens.diff_removed_fg = resolve_key(json, &defs, "diffRemoved", mode)?;
880 tokens.diff_added_bg = resolve_key(json, &defs, "diffAddedBg", mode)?;
881 tokens.diff_removed_bg = resolve_key(json, &defs, "diffRemovedBg", mode)?;
882
883 tokens.block_bg = tokens.background_panel.clone();
884 tokens.block_bg_hover = tokens.background_element.clone();
885
886 tokens.block_border_active =
887 resolve_key(json, &defs, "borderActive", mode)?.or(tokens.primary.clone());
888 tokens.inline_icon = resolve_key(json, &defs, "accent", mode)?.or(tokens.primary.clone());
889 tokens.command_text = resolve_key(json, &defs, "accent", mode)?.or(tokens.info.clone());
890 tokens.diff_hunk_header = resolve_key(json, &defs, "diffHunkHeader", mode)?;
891 tokens.diff_line_number = resolve_key(json, &defs, "diffLineNumber", mode)?;
892
893 Ok(tokens)
894}
895
896fn resolve_key(
897 json: &OpencodeThemeJson,

Callers 1

Calls 3

resolve_keyFunction · 0.85
is_lightMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected