{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Chrome Theme Manifest",
  "description": "JSON schema for Chrome theme manifest files",
  "type": "object",
  "properties": {
    "manifest_version": {
      "type": "integer",
      "pattern": "3",
      "description": "The version of the manifest file format."
    },
    "version": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(\\.[0-9]+)?$",
      "description": "The version of the theme."
    },
    "name": {
      "type": "string",
      "maxLength": 45,
      "description": "The name of the theme."
    },
    "description": {
      "type": "string",
      "maxLength": 132,
      "description": "The description of the theme."
    },
    "theme": {
      "type": "object",
      "properties": {
        "colors": {
          "type": "object",
          "description": "Colors in RGB format used by the theme, e.g. `[255, 0, 0]`.\n\nhttps://developer.chrome.com/docs/extensions/mv3/themes/#colors",
          "properties": {
            "background_tab": {
              "type": "array",
              "description": "The background color of the tab.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "background_tab_inactive": {
              "type": "array",
              "description": "The background color of the tab when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "background_tab_incognito": {
              "type": "array",
              "description": "The background color of the tab in incognito mode.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "background_tab_incognito_inactive": {
              "type": "array",
              "description": "The background color of the tab in incognito mode when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "bookmark_text": {
              "type": "array",
              "description": "The color of the text in the bookmarks bar.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "button_background": {
              "type": "array",
              "description": "The background color of buttons in the toolbar.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "frame": {
              "type": "array",
              "description": "The color of the window frame.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "frame_inactive": {
              "type": "array",
              "description": "The color of the window frame when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "max": 3
            },
            "frame_incognito": {
              "type": "array",
              "description": "The color of the window frame in incognito mode.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "frame_incognito_inactive": {
              "type": "array",
              "description": "The color of the window frame in incognito mode when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "ntp_background": {
              "type": "array",
              "description": "The background color of the new tab page.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "ntp_header": {
              "type": "array",
              "description": "The color of the text in the new tab page.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "ntp_link": {
              "type": "array",
              "description": "The color of links in the new tab page.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "ntp_text": {
              "type": "array",
              "description": "The color of text in the new tab page.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "omnibox_background": {
              "type": "array",
              "description": "The background color of the search box.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "omnibox_text": {
              "type": "array",
              "description": "The color of the text in the search box.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "tab_background_text": {
              "type": "array",
              "description": "The color of the text of a tab.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "tab_background_text_inactive": {
              "type": "array",
              "description": "The color of the text of a tab when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "tab_background_text_incognito": {
              "type": "array",
              "description": "The color of the text of a tab in incognito mode.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "tab_background_text_incognito_inactive": {
              "type": "array",
              "description": "The color of the text of a tab in incognito mode when the window is inactive.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "tab_text": {
              "type": "array",
              "description": "The color of the text of a tab.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "toolbar": {
              "type": "array",
              "description": "The background color of the toolbar.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "toolbar_button_icon": {
              "type": "array",
              "description": "The color of the icons in the toolbar.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            },
            "toolbar_text": {
              "type": "array",
              "description": "The color of the text in the toolbar.",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minItems": 3,
              "maxItems": 3
            }
          }
        },
        "images": {
          "type": "object",
          "description": "Image resources use paths relative to the root of the extension. All images must be stored in PNG format or they will not render properly.\n\nhttps://developer.chrome.com/docs/extensions/mv3/themes/#images",
          "properties": {
            "theme_button_background": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for buttons in the toolbar."
            },
            "theme_frame_inactive": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame when the window is inactive."
            },
            "theme_frame_incognito_inactive": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame in incognito mode when the window is inactive."
            },
            "theme_frame_incognito": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame in incognito mode."
            },
            "theme_frame_overlay_inactive": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame overlay when the window is inactive."
            },
            "theme_frame_overlay": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame overlay."
            },
            "theme_frame": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window frame."
            },
            "theme_ntp_attribution": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the attribution in the new tab page."
            },
            "theme_ntp_background": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the new tab page."
            },
            "theme_tab_background_inactive": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the tab when the window is inactive."
            },
            "theme_tab_background_incognito_inactive": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the tab in incognito mode when the window is inactive."
            },
            "theme_tab_background_incognito": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the tab in incognito mode."
            },
            "theme_tab_background_v": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the vertical tab."
            },
            "theme_tab_background": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the tab."
            },
            "theme_toolbar": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the toolbar."
            },
            "theme_window_control_background": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The background image for the window control."
            }
          }
        },
        "properties": {
          "type": "object",
          "description": "This field lets you specify properties such as background alignment, background repeat, and an alternate logo.\n\nhttps://developer.chrome.com/docs/extensions/mv3/themes/#properties",
          "properties": {
            "ntp_background_alignment": {
              "type": "string",
              "enum": ["left", "center", "right"],
              "description": "The alignment of the background image in the new tab page."
            },
            "ntp_background_repeat": {
              "type": "string",
              "enum": ["repeat", "no-repeat"],
              "description": "The repeat style of the background image in the new tab page."
            },
            "ntp_logo_alternate": {
              "type": "string",
              "pattern": ".*\\.png$",
              "format": "uri",
              "description": "The alternate logo for the new tab page."
            }
          }
        },
        "tints": {
          "type": "object",
          "description": "You can specify tints to be applied to parts of the UI such as buttons, the frame, and the background tab. Chrome supports tints because images don't work across platforms and are brittle with new buttons. Tints are in HSL format and use floating-point numbers in the range 0 - 1.0, with -1.0 specifying no change.\nnhttps://developer.chrome.com/docs/extensions/mv3/themes/#tints",
          "properties": {
            "background_tab": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for the background tab."
            },
            "buttons": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for buttons."
            },
            "frame": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for the frame."
            },
            "frame_inactive": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for the frame when the window is inactive."
            },
            "frame_incognito": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for the frame in incognito mode."
            },
            "frame_incognito_inactive": {
              "type": "string",
              "pattern": "^-?1\\.0$|^0\\.0$|^1\\.0$",
              "description": "The tint for the frame in incognito mode when the window is inactive."
            }
          }
        }
      }
    }
  }
}
