diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mail/components/extensions/schemas/theme.json | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/mail/components/extensions/schemas/theme.json')
-rw-r--r-- | comm/mail/components/extensions/schemas/theme.json | 542 |
1 files changed, 542 insertions, 0 deletions
diff --git a/comm/mail/components/extensions/schemas/theme.json b/comm/mail/components/extensions/schemas/theme.json new file mode 100644 index 0000000000..cba8abd780 --- /dev/null +++ b/comm/mail/components/extensions/schemas/theme.json @@ -0,0 +1,542 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +[ + { + "namespace": "manifest", + "types": [ + { + "$extend": "PermissionNoPrompt", + "choices": [ + { + "type": "string", + "enum": ["theme"] + } + ] + }, + { + "id": "ThemeColor", + "description": "Defines a color value.", + "choices": [ + { + "type": "string", + "description": "A string containing a valid `CSS color string <|link-css-color-string|>`__, including hexadecimal or functional representations. For example the color *crimson* can be specified as: <li><value>crimson</value> <li><value>#dc143c</value> <li><value>rgb(220, 20, 60)</value> (or <value>rgba(220, 20, 60, 0.5)</value> to set 50% opacity) <li><value>hsl(348, 83%, 47%)</value> (or <value>hsla(348, 83%, 47%, 0.5)</value> to set 50% opacity)" + }, + { + "type": "array", + "description": "An RGB array of 3 integers. For example <value>[220, 20, 60]</value> for the color *crimson*.", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + }, + { + "type": "array", + "description": "An RGBA array of 3 integers and a fractional (a float between 0 and 1). For example <value>[220, 20, 60, 0.5]<value> for the color *crimson* with 50% opacity.", + "minItems": 4, + "maxItems": 4, + "items": { + "type": "number" + } + } + ] + }, + { + "id": "ThemeExperiment", + "description": "Defines additional color, image and property keys to be used in :ref:`theme.ThemeType`, extending the theme-able areas of Thunderbird.", + "type": "object", + "properties": { + "stylesheet": { + "optional": true, + "description": "URL to a stylesheet introducing additional CSS variables, extending the theme-able areas of Thunderbird. The `theme_experiment add-on in our example repository <https://github.com/thunderbird/sample-extensions/tree/master/theme_experiment>`__ is using the stylesheet shown below, to add the <value>--chat-button-color</value> CSS color variable: <literalinclude>includes/theme/theme_experiment_style.css<lang>CSS</lang></literalinclude>The following <em>manifest.json</em> file maps the </value>--chat-button-color</value> CSS color variable to the theme color key <value>exp_chat_button</value> and uses it to set a color for the chat button: <literalinclude>includes/theme/theme_experiment_manifest.json<lang>JSON</lang></literalinclude>", + "$ref": "ExtensionURL" + }, + "images": { + "type": "object", + "optional": true, + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map new theme image keys to internal Thunderbird CSS image variables. The new image key is usable as an image reference in :ref:`theme.ThemeType`. Example: <literalinclude>includes/theme/theme_experiment_image.json<lang>JSON</lang></literalinclude>", + "additionalProperties": { + "type": "string" + } + }, + "colors": { + "type": "object", + "optional": true, + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map new theme color keys to internal Thunderbird CSS color variables. The example shown below maps the theme color key <value>popup_affordance</value> to the CSS color variable </value>--arrowpanel-dimmed</value>. The new color key is usable as a color reference in :ref:`theme.ThemeType`. <literalinclude>includes/theme/theme_experiment_color.json<lang>JSON</lang></literalinclude>", + "additionalProperties": { + "type": "string" + } + }, + "properties": { + "type": "object", + "optional": true, + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map new theme property keys to internal Thunderbird CSS property variables. The new property key is usable as a property reference in :ref:`theme.ThemeType`. Example: <literalinclude>includes/theme/theme_experiment_property.json<lang>JSON</lang></literalinclude>", + "additionalProperties": { + "type": "string" + } + } + } + }, + { + "id": "ThemeType", + "description": "Contains the color, image and property settings of a theme.", + "type": "object", + "properties": { + "images": { + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map images to theme image keys. The following built-in theme image keys are supported:", + "type": "object", + "optional": true, + "properties": { + "additional_backgrounds": { + "type": "array", + "items": { + "$ref": "ImageDataOrExtensionURL" + }, + "maxItems": 15, + "optional": true, + "description": "Additional images added to the header area and displayed behind the ``theme_frame`` image." + }, + "headerURL": { + "$ref": "ImageDataOrExtensionURL", + "optional": true, + "deprecated": "Unsupported images property, use ``theme.images.theme_frame``, this alias is ignored in Thunderbird >= 70." + }, + "theme_frame": { + "$ref": "ImageDataOrExtensionURL", + "optional": true, + "description": "Foreground image on the header area." + } + }, + "additionalProperties": { + "$ref": "ImageDataOrExtensionURL" + } + }, + "colors": { + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map color values to theme color keys. The following built-in theme color keys are supported:", + "type": "object", + "optional": true, + "properties": { + "tab_selected": { + "$ref": "ThemeColor", + "optional": true, + "description": "Background color of the selected tab. Defaults to the color specified by ``toolbar``." + }, + "accentcolor": { + "$ref": "ThemeColor", + "optional": true, + "deprecated": "Unsupported colors property, use ``theme.colors.frame``, this alias is ignored in Thunderbird >= 70." + }, + "frame": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of the header area." + }, + "frame_inactive": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of the header area when the window is inactive." + }, + "textcolor": { + "$ref": "ThemeColor", + "optional": true, + "deprecated": "Unsupported color property, use ``theme.colors.tab_background_text``, this alias is ignored in Thunderbird >= 70." + }, + "tab_background_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color of the unselected tabs." + }, + "tab_background_separator": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the vertical separator of the background tabs." + }, + "tab_loading": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the tab loading indicator." + }, + "tab_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color for the selected tab. Defaults to the color specified by ``toolbar_text``." + }, + "tab_line": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the selected tab line." + }, + "toolbar": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of the toolbars. Also used as default value for ``tab_selected``." + }, + "toolbar_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color in the main Thunderbird toolbar. Also used as default value for ``icons`` and ``tab_text``." + }, + "bookmark_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "Not used in Thunderbird." + }, + "toolbar_field": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color for fields in the toolbar, such as the search field." + }, + "toolbar_field_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color for fields in the toolbar." + }, + "toolbar_field_border": { + "$ref": "ThemeColor", + "optional": true, + "description": "The border color for fields in the toolbar." + }, + "toolbar_field_separator": { + "$ref": "ThemeColor", + "optional": true, + "description": "Not used in Thunderbird.", + "deprecated": "This color property is ignored in >= 89." + }, + "toolbar_top_separator": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the line separating the top of the toolbar from the region above." + }, + "toolbar_bottom_separator": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the line separating the bottom of the toolbar from the region below." + }, + "toolbar_vertical_separator": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the vertical separators on the toolbars." + }, + "icons": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the toolbar icons. Defaults to the color specified by ``toolbar_text``." + }, + "icons_attention": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the toolbar icons in attention state such as the chat icon with new messages." + }, + "button_background_hover": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the background of the toolbar buttons on hover." + }, + "button_background_active": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color of the background of the pressed toolbar buttons." + }, + "popup": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of popups such as the AppMenu." + }, + "popup_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color of popups." + }, + "popup_border": { + "$ref": "ThemeColor", + "optional": true, + "description": "The border color of popups." + }, + "toolbar_field_focus": { + "$ref": "ThemeColor", + "optional": true, + "description": "The focused background color for fields in the toolbar." + }, + "toolbar_field_text_focus": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color in the focused fields in the toolbar." + }, + "toolbar_field_border_focus": { + "$ref": "ThemeColor", + "optional": true, + "description": "The focused border color for fields in the toolbar." + }, + "popup_highlight": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of items highlighted using the keyboard inside popups." + }, + "popup_highlight_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color of items highlighted using the keyboard inside popups." + }, + "ntp_background": { + "$ref": "ThemeColor", + "optional": true, + "description": "Not used in Thunderbird." + }, + "ntp_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "Not used in Thunderbird." + }, + "sidebar": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of the trees." + }, + "sidebar_border": { + "$ref": "ThemeColor", + "optional": true, + "description": "The border color of the trees." + }, + "sidebar_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color of the trees. Needed to enable the tree theming." + }, + "sidebar_highlight": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color of highlighted rows in trees." + }, + "sidebar_highlight_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The text color of highlighted rows in trees." + }, + "sidebar_highlight_border": { + "$ref": "ThemeColor", + "optional": true, + "description": "The border color of highlighted rows in trees." + }, + "toolbar_field_highlight": { + "$ref": "ThemeColor", + "optional": true, + "description": "The background color used to indicate the current selection of text in the search field." + }, + "toolbar_field_highlight_text": { + "$ref": "ThemeColor", + "optional": true, + "description": "The color used to draw text that's currently selected in the search field." + } + }, + "additionalProperties": { + "$ref": "ThemeColor" + } + }, + "properties": { + "description": "A <em>dictionary object</em> with one or more <em>key-value</em> pairs to map property values to theme property keys. The following built-in theme property keys are supported:", + "type": "object", + "optional": true, + "properties": { + "additional_backgrounds_alignment": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "bottom", + "center", + "left", + "right", + "top", + "center bottom", + "center center", + "center top", + "left bottom", + "left center", + "left top", + "right bottom", + "right center", + "right top" + ] + }, + "maxItems": 15, + "optional": true + }, + "additional_backgrounds_tiling": { + "type": "array", + "items": { + "type": "string", + "enum": ["no-repeat", "repeat", "repeat-x", "repeat-y"] + }, + "maxItems": 15, + "optional": true + }, + "color_scheme": { + "description": "If set, overrides the general theme (context menus, toolbars, content area).", + "optional": true, + "type": "string", + "enum": ["light", "dark", "auto"] + }, + "content_color_scheme": { + "description": "If set, overrides the color scheme for the content area.", + "optional": true, + "type": "string", + "enum": ["light", "dark", "auto"] + } + }, + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": { + "$ref": "UnrecognizedProperty" + } + }, + { + "id": "ThemeManifest", + "type": "object", + "description": "Contents of manifest.json for a static theme", + "$import": "manifest.ManifestBase", + "properties": { + "theme": { + "$ref": "ThemeType" + }, + "dark_theme": { + "$ref": "ThemeType", + "optional": true, + "description": "Fallback properties for the dark system theme." + }, + "default_locale": { + "type": "string", + "optional": true + }, + "theme_experiment": { + "$ref": "ThemeExperiment", + "optional": true, + "description": "CSS file with additional styles." + }, + "icons": { + "type": "object", + "optional": true, + "patternProperties": { + "^[1-9]\\d*$": { + "type": "string" + } + }, + "description": "Icons shown in the Add-ons Manager." + } + } + }, + { + "$extend": "WebExtensionManifest", + "properties": { + "theme_experiment": { + "$ref": "ThemeExperiment", + "optional": true, + "description": "A theme experiment allows modifying the user interface of Thunderbird beyond what is currently possible using the built-in color, image and property keys of :ref:`theme.ThemeType`. These experiments are a precursor to proposing new theme features for inclusion in Thunderbird. Experimentation is done by mapping internal CSS color, image and property variables to new theme keys and using them in :ref:`theme.ThemeType` and by loading additional style sheets to add new CSS variables, extending the theme-able areas of Thunderbird. Can be used in static and dynamic themes." + } + } + } + ] + }, + { + "namespace": "theme", + "description": "The theme API allows for customization of Thunderbird's visual elements.", + "types": [ + { + "id": "ThemeUpdateInfo", + "type": "object", + "description": "Info provided in the onUpdated listener.", + "properties": { + "theme": { + "$ref": "ThemeType", + "description": "The new theme after update" + }, + "windowId": { + "type": "integer", + "description": "The id of the window the theme has been applied to", + "optional": true + } + } + } + ], + "events": [ + { + "name": "onUpdated", + "type": "function", + "description": "Fired when a new theme has been applied", + "parameters": [ + { + "$ref": "ThemeUpdateInfo", + "name": "updateInfo", + "description": "Details of the theme update" + } + ] + } + ], + "functions": [ + { + "name": "getCurrent", + "type": "function", + "async": "callback", + "description": "Returns the current theme for the specified window or the last focused window.", + "parameters": [ + { + "type": "integer", + "name": "windowId", + "optional": true, + "description": "The window for which we want the theme." + }, + { + "type": "function", + "name": "callback", + "optional": true, + "parameters": [ + { + "$ref": "ThemeType" + } + ] + } + ] + }, + { + "name": "update", + "type": "function", + "async": true, + "description": "Make complete updates to the theme. Resolves when the update has completed.", + "permissions": ["theme"], + "parameters": [ + { + "type": "integer", + "name": "windowId", + "optional": true, + "description": "The id of the window to update. No id updates all windows." + }, + { + "name": "details", + "$ref": "manifest.ThemeType", + "description": "The properties of the theme to update." + } + ] + }, + { + "name": "reset", + "type": "function", + "async": true, + "description": "Removes the updates made to the theme.", + "permissions": ["theme"], + "parameters": [ + { + "type": "integer", + "name": "windowId", + "optional": true, + "description": "The id of the window to reset. No id resets all windows." + } + ] + } + ] + } +] |