(
json: &OpencodeThemeJson,
appearance: Appearance,
)
| 851 | } |
| 852 | |
| 853 | fn 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 | |
| 896 | fn resolve_key( |
| 897 | json: &OpencodeThemeJson, |
no test coverage detected