{ "$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 }, "themes": { "type": "array", "items": { "$ref": "#/definitions/ThemeConfig" }, "default": [] } }, "required": [ "name", "author", "url", "font.size", "themes" ], "definitions": { "ThemeConfig": { "type": "object", "properties": { "name": { "description": "The name of the theme.", "type": "string" }, "mode": { "description": "The mode of the theme, default is light.", "allOf": [ { "$ref": "#/definitions/ThemeMode" } ] }, "colors": { "description": "The colors of the theme.", "allOf": [ { "$ref": "#/definitions/ThemeConfigColors" } ] }, "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": "#/definitions/HighlightThemeStyle" }, { "type": "null" } ] } }, "required": [ "name", "mode", "colors", "highlight" ] }, "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.active.background": { "description": "Accordion active 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" ] }, "card.background": { "description": "Background color for Card.", "type": [ "string", "null" ] }, "card.foreground": { "description": "Text color for Card.", "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" ] }, "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, Dropdown, 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", "accordion.background", "accordion.active.background", "accordion.hover.background", "background", "border", "card.background", "card.foreground", "caret", "chart.1", "chart.2", "chart.3", "chart.4", "chart.5", "danger.background", "danger.active.background", "danger.foreground", "danger.hover.background", "description_list.label.background", "description_list.label.foreground", "drag.border", "drop_target.background", "foreground", "info.background", "info.active.background", "info.foreground", "info.hover.background", "input.border", "link", "link.active", "link.hover", "list.background", "list.active.background", "list.active.border", "list.even.background", "list.head.background", "list.hover.background", "muted.background", "muted.foreground", "popover.background", "popover.foreground", "primary.background", "primary.active.background", "primary.foreground", "primary.hover.background", "progress.bar.background", "ring", "scrollbar.background", "scrollbar.thumb.background", "scrollbar.thumb.hover.background", "secondary.background", "secondary.active.background", "secondary.foreground", "secondary.hover.background", "selection.background", "sidebar.background", "sidebar.accent.background", "sidebar.accent.foreground", "sidebar.border", "sidebar.foreground", "sidebar.primary.background", "sidebar.primary.foreground", "skeleton.background", "slider.background", "slider.thumb.background", "success.background", "success.foreground", "success.hover.background", "success.active.background", "switch.background", "tab.background", "tab.active.background", "tab.active.foreground", "tab_bar.background", "tab_bar.segmented.background", "tab.foreground", "table.background", "table.active.background", "table.active.border", "table.even.background", "table.head.background", "table.head.foreground", "table.hover.background", "table.row.border", "title_bar.background", "title_bar.border", "tiles.background", "warning.background", "warning.active.background", "warning.hover.background", "warning.foreground", "overlay", "window.border", "base.blue", "base.blue.light", "base.cyan", "base.cyan.light", "base.green", "base.green.light", "base.magenta", "base.magenta.light", "base.red", "base.red.light", "base.yellow", "base.yellow.light" ] }, "HighlightThemeStyle": { "type": "object", "properties": { "editor.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "editor.foreground": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "editor.active_line.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "editor.line_number": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "editor.active_line_number": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "error": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "error.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "error.border": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "warning": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "warning.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "warning.border": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "info": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "info.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "info.border": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "success": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "success.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "success.border": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "hint": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "hint.background": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "hint.border": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "syntax": { "$ref": "#/definitions/SyntaxColors" } }, "required": [ "editor.background", "editor.foreground", "editor.active_line.background", "editor.line_number", "editor.active_line_number", "error", "error.background", "error.border", "warning", "warning.background", "warning.border", "info", "info.background", "info.border", "success", "success.background", "success.border", "hint", "hint.background", "hint.border", "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": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "boolean": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "comment": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "comment_doc": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "constant": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "constructor": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "embedded": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "emphasis": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "emphasis.strong": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "enum": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "function": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "hint": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "keyword": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "label": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "link_text": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "link_uri": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "number": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "operator": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "predictive": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "preproc": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "primary": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "property": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "punctuation": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "punctuation.bracket": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "punctuation.delimiter": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "punctuation.list_marker": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "punctuation.special": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "string": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "string.escape": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "string.regex": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "string.special": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "string.special.symbol": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "tag": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "tag.doctype": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "text.literal": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "title": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "type": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "variable": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "variable.special": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] }, "variant": { "anyOf": [ { "$ref": "#/definitions/ThemeStyle" }, { "type": "null" } ] } }, "required": [ "attribute", "boolean", "comment", "comment_doc", "constant", "constructor", "embedded", "emphasis", "emphasis.strong", "enum", "function", "hint", "keyword", "label", "link_text", "link_uri", "number", "operator", "predictive", "preproc", "primary", "property", "punctuation", "punctuation.bracket", "punctuation.delimiter", "punctuation.list_marker", "punctuation.special", "string", "string.escape", "string.regex", "string.special", "string.special.symbol", "tag", "tag.doctype", "text.literal", "title", "type", "variable", "variable.special", "variant" ] }, "ThemeStyle": { "type": "object", "properties": { "color": { "anyOf": [ { "$ref": "#/definitions/Rgba" }, { "type": "null" } ] }, "font_style": { "anyOf": [ { "$ref": "#/definitions/FontStyle" }, { "type": "null" } ] }, "font_weight": { "anyOf": [ { "$ref": "#/definitions/FontWeightContent" }, { "type": "null" } ] } }, "required": [ "color", "font_style", "font_weight" ] }, "FontStyle": { "type": "string", "enum": [ "normal", "italic", "underline" ] }, "FontWeightContent": { "type": "string", "enum": [ "Thin", "ExtraLight", "Light", "Normal", "Medium", "Semibold", "Bold", "ExtraBold", "Black" ] } } }