{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThemeSet", "description": "Represents a theme configuration.", "type": "object", "properties": { "name": { "description": "The name of the theme set.", "type": "string", "default": "" }, "author": { "description": "The author of the theme.", "type": ["string", "null"], "default": null }, "url": { "description": "The URL of the theme.", "type": ["string", "null"], "default": null }, "font.size": { "description": "The base font size, default is 16.", "type": ["number", "null"], "format": "float", "default": null }, "font.family": { "description": "The base font family, default is system font: `.SystemUIFont`.", "type": ["string", "null"], "default": null }, "radius": { "description": "The border radius for general elements, default is 6.", "type": ["number", "null"], "default": null }, "radius.lg": { "description": "The border radius for large elements like Modals and Notifications, default is 8.", "type": ["number", "null"], "default": null }, "shadow": { "description": "Set shadows in the theme, for example the Input and Button, default is true.", "type": ["boolean", "null"], "default": null }, "themes": { "type": "array", "items": { "$ref": "#/$defs/ThemeConfig" }, "default": [] } }, "required": ["name", "themes"], "$defs": { "ThemeConfig": { "type": "object", "properties": { "name": { "description": "The name of the theme.", "type": "string", "default": "" }, "mode": { "description": "The mode of the theme, default is light.", "$ref": "#/$defs/ThemeMode", "default": "light" }, "colors": { "description": "The colors of the theme.", "$ref": "#/$defs/ThemeConfigColors", "default": { "accent.background": null, "accent.foreground": null, "background": null, "border": null, "danger.background": null, "foreground": null, "muted.background": null, "muted.foreground": null, "primary.background": null, "primary.foreground": null, "secondary.background": null, "secondary.foreground": null, "base.blue": null, "base.cyan": null, "base.green": null, "base.magenta": null, "base.red": null, "base.yellow": null } }, "highlight": { "description": "The highlight theme, this part is combilbility with `style` section in Zed theme.\n\nhttps://github.com/zed-industries/zed/blob/f50041779dcfd7a76c8aec293361c60c53f02d51/assets/themes/ayu/ayu.json#L9", "anyOf": [ { "$ref": "#/$defs/HighlightThemeStyle" }, { "type": "null" } ], "default": null } }, "required": ["name", "mode", "colors"] }, "ThemeMode": { "type": "string", "enum": ["light", "dark"] }, "ThemeConfigColors": { "type": "object", "properties": { "accent.background": { "description": "Used for accents such as hover background on MenuItem, ListItem, etc.", "type": ["string", "null"] }, "accent.foreground": { "description": "Used for accent text color.", "type": ["string", "null"] }, "accordion.background": { "description": "Accordion background color.", "type": ["string", "null"] }, "accordion.hover.background": { "description": "Accordion hover background color.", "type": ["string", "null"] }, "background": { "description": "Default background color.", "type": ["string", "null"] }, "border": { "description": "Default border color", "type": ["string", "null"] }, "caret": { "description": "Input caret color (Blinking cursor).", "type": ["string", "null"] }, "chart.1": { "description": "Chart 1 color.", "type": ["string", "null"] }, "chart.2": { "description": "Chart 2 color.", "type": ["string", "null"] }, "chart.3": { "description": "Chart 3 color.", "type": ["string", "null"] }, "chart.4": { "description": "Chart 4 color.", "type": ["string", "null"] }, "chart.5": { "description": "Chart 5 color.", "type": ["string", "null"] }, "danger.background": { "description": "Danger background color.", "type": ["string", "null"] }, "danger.active.background": { "description": "Danger active background color.", "type": ["string", "null"] }, "danger.foreground": { "description": "Danger text color.", "type": ["string", "null"] }, "danger.hover.background": { "description": "Danger hover background color.", "type": ["string", "null"] }, "description_list.label.background": { "description": "Description List label background color.", "type": ["string", "null"] }, "description_list.label.foreground": { "description": "Description List label foreground color.", "type": ["string", "null"] }, "drag.border": { "description": "Drag border color.", "type": ["string", "null"] }, "drop_target.background": { "description": "Drop target background color.", "type": ["string", "null"] }, "foreground": { "description": "Default text color.", "type": ["string", "null"] }, "group_box.background": { "description": "Background color for GroupBox.", "type": ["string", "null"] }, "group_box.foreground": { "description": "Foreground color for GroupBox.", "type": ["string", "null"] }, "group_box.title.foreground": { "description": "Title text color for GroupBox.", "type": ["string", "null"] }, "info.background": { "description": "Info background color.", "type": ["string", "null"] }, "info.active.background": { "description": "Info active background color.", "type": ["string", "null"] }, "info.foreground": { "description": "Info text color.", "type": ["string", "null"] }, "info.hover.background": { "description": "Info hover background color.", "type": ["string", "null"] }, "input.border": { "description": "Border color for inputs such as Input, Select, etc.", "type": ["string", "null"] }, "link": { "description": "Link text color.", "type": ["string", "null"] }, "link.active": { "description": "Active link text color.", "type": ["string", "null"] }, "link.hover": { "description": "Hover link text color.", "type": ["string", "null"] }, "list.background": { "description": "Background color for List and ListItem.", "type": ["string", "null"] }, "list.active.background": { "description": "Background color for active ListItem.", "type": ["string", "null"] }, "list.active.border": { "description": "Border color for active ListItem.", "type": ["string", "null"] }, "list.even.background": { "description": "Stripe background color for even ListItem.", "type": ["string", "null"] }, "list.head.background": { "description": "Background color for List header.", "type": ["string", "null"] }, "list.hover.background": { "description": "Hover background color for ListItem.", "type": ["string", "null"] }, "muted.background": { "description": "Muted backgrounds such as Skeleton and Switch.", "type": ["string", "null"] }, "muted.foreground": { "description": "Muted text color, as used in disabled text.", "type": ["string", "null"] }, "popover.background": { "description": "Background color for Popover.", "type": ["string", "null"] }, "popover.foreground": { "description": "Text color for Popover.", "type": ["string", "null"] }, "primary.background": { "description": "Primary background color.", "type": ["string", "null"] }, "primary.active.background": { "description": "Active primary background color.", "type": ["string", "null"] }, "primary.foreground": { "description": "Primary text color.", "type": ["string", "null"] }, "primary.hover.background": { "description": "Hover primary background color.", "type": ["string", "null"] }, "progress.bar.background": { "description": "Progress bar background color.", "type": ["string", "null"] }, "ring": { "description": "Used for focus ring.", "type": ["string", "null"] }, "scrollbar.background": { "description": "Scrollbar background color.", "type": ["string", "null"] }, "scrollbar.thumb.background": { "description": "Scrollbar thumb background color.", "type": ["string", "null"] }, "scrollbar.thumb.hover.background": { "description": "Scrollbar thumb hover background color.", "type": ["string", "null"] }, "secondary.background": { "description": "Secondary background color.", "type": ["string", "null"] }, "secondary.active.background": { "description": "Active secondary background color.", "type": ["string", "null"] }, "secondary.foreground": { "description": "Secondary text color, used for secondary Button text color or secondary text.", "type": ["string", "null"] }, "secondary.hover.background": { "description": "Hover secondary background color.", "type": ["string", "null"] }, "selection.background": { "description": "Input selection background color.", "type": ["string", "null"] }, "sidebar.background": { "description": "Sidebar background color.", "type": ["string", "null"] }, "sidebar.accent.background": { "description": "Sidebar accent background color.", "type": ["string", "null"] }, "sidebar.accent.foreground": { "description": "Sidebar accent text color.", "type": ["string", "null"] }, "sidebar.border": { "description": "Sidebar border color.", "type": ["string", "null"] }, "sidebar.foreground": { "description": "Sidebar text color.", "type": ["string", "null"] }, "sidebar.primary.background": { "description": "Sidebar primary background color.", "type": ["string", "null"] }, "sidebar.primary.foreground": { "description": "Sidebar primary text color.", "type": ["string", "null"] }, "skeleton.background": { "description": "Skeleton background color.", "type": ["string", "null"] }, "slider.background": { "description": "Slider bar background color.", "type": ["string", "null"] }, "slider.thumb.background": { "description": "Slider thumb background color.", "type": ["string", "null"] }, "success.background": { "description": "Success background color.", "type": ["string", "null"] }, "success.foreground": { "description": "Success text color.", "type": ["string", "null"] }, "success.hover.background": { "description": "Success hover background color.", "type": ["string", "null"] }, "success.active.background": { "description": "Success active background color.", "type": ["string", "null"] }, "switch.background": { "description": "Switch background color.", "type": ["string", "null"] }, "tab.background": { "description": "Tab background color.", "type": ["string", "null"] }, "tab.active.background": { "description": "Tab active background color.", "type": ["string", "null"] }, "tab.active.foreground": { "description": "Tab active text color.", "type": ["string", "null"] }, "tab_bar.background": { "description": "TabBar background color.", "type": ["string", "null"] }, "tab_bar.segmented.background": { "description": "TabBar segmented background color.", "type": ["string", "null"] }, "tab.foreground": { "description": "Tab text color.", "type": ["string", "null"] }, "table.background": { "description": "Table background color.", "type": ["string", "null"] }, "table.active.background": { "description": "Table active item background color.", "type": ["string", "null"] }, "table.active.border": { "description": "Table active item border color.", "type": ["string", "null"] }, "table.even.background": { "description": "Stripe background color for even TableRow.", "type": ["string", "null"] }, "table.head.background": { "description": "Table head background color.", "type": ["string", "null"] }, "table.head.foreground": { "description": "Table head text color.", "type": ["string", "null"] }, "table.hover.background": { "description": "Table item hover background color.", "type": ["string", "null"] }, "table.row.border": { "description": "Table row border color.", "type": ["string", "null"] }, "title_bar.background": { "description": "TitleBar background color, use for Window title bar.", "type": ["string", "null"] }, "title_bar.border": { "description": "TitleBar border color.", "type": ["string", "null"] }, "tiles.background": { "description": "Background color for Tiles.", "type": ["string", "null"] }, "warning.background": { "description": "Warning background color.", "type": ["string", "null"] }, "warning.active.background": { "description": "Warning active background color.", "type": ["string", "null"] }, "warning.hover.background": { "description": "Warning hover background color.", "type": ["string", "null"] }, "warning.foreground": { "description": "Warning foreground color.", "type": ["string", "null"] }, "overlay": { "description": "Overlay background color.", "type": ["string", "null"] }, "window.border": { "description": "Window border color.\n\n# Platform specific:\n\nThis is only works on Linux, other platforms we can't change the window border color.", "type": ["string", "null"] }, "base.blue": { "description": "Base blue color.", "type": ["string", "null"] }, "base.blue.light": { "description": "Base light blue color.", "type": ["string", "null"] }, "base.cyan": { "description": "Base cyan color.", "type": ["string", "null"] }, "base.cyan.light": { "description": "Base light cyan color.", "type": ["string", "null"] }, "base.green": { "description": "Base green color.", "type": ["string", "null"] }, "base.green.light": { "description": "Base light green color.", "type": ["string", "null"] }, "base.magenta": { "description": "Base magenta color.", "type": ["string", "null"] }, "base.magenta.light": { "type": ["string", "null"] }, "base.red": { "description": "Base red color.", "type": ["string", "null"] }, "base.red.light": { "description": "Base light red color.", "type": ["string", "null"] }, "base.yellow": { "description": "Base yellow color.", "type": ["string", "null"] }, "base.yellow.light": { "description": "Base light yellow color.", "type": ["string", "null"] } }, "required": [ "accent.background", "accent.foreground", "background", "border", "foreground", "muted.background", "muted.foreground", "primary.background", "primary.foreground", "base.blue", "base.cyan", "base.green", "base.magenta", "base.red", "base.yellow" ] }, "HighlightThemeStyle": { "type": "object", "properties": { "editor.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "editor.foreground": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "editor.active_line.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "editor.line_number": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "editor.active_line_number": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "error": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "error.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "error.border": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "warning": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "warning.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "warning.border": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "info": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "info.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "info.border": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "success": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "success.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "success.border": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "hint": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "hint.background": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "hint.border": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "syntax": { "$ref": "#/$defs/SyntaxColors" } }, "required": ["syntax"] }, "Rgba": { "type": "string", "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$" }, "SyntaxColors": { "description": "Theme for Tree-sitter Highlight\n\nhttps://docs.rs/tree-sitter-highlight/0.25.4/tree_sitter_highlight/", "type": "object", "properties": { "attribute": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "boolean": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "comment": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "comment_doc": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "constant": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "constructor": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "embedded": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "emphasis": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "emphasis.strong": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "enum": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "function": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "hint": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "keyword": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "label": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "link_text": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "link_uri": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "number": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "operator": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "predictive": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "preproc": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "primary": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "property": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "punctuation": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "punctuation.bracket": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "punctuation.delimiter": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "punctuation.list_marker": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "punctuation.special": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "string": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "string.escape": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "string.regex": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "string.special": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "string.special.symbol": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "tag": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "tag.doctype": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "text.literal": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "title": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "type": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "variable": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "variable.special": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] }, "variant": { "anyOf": [ { "$ref": "#/$defs/ThemeStyle" }, { "type": "null" } ] } }, "required": [] }, "ThemeStyle": { "type": "object", "properties": { "color": { "anyOf": [ { "$ref": "#/$defs/Rgba" }, { "type": "null" } ] }, "font_style": { "anyOf": [ { "$ref": "#/$defs/FontStyle" }, { "type": "null" } ] }, "font_weight": { "anyOf": [ { "$ref": "#/$defs/FontWeightContent" }, { "type": "null" } ] } }, "required": [] }, "FontStyle": { "type": "string", "enum": ["normal", "italic", "underline"] }, "FontWeightContent": { "type": "number", "enum": [100, 200, 300, 400, 500, 600, 700, 800, 900] } } }