104 lines · 3.5 KB · JSON
RawDownload
{  "$schema": "http://json-schema.org/draft-07/schema#",  "$id": "https://syntheticsciences.ai/desktop-theme.json",  "title": "OpenScience Desktop Theme",  "description": "A theme definition for the OpenScience desktop application",  "type": "object",  "required": ["name", "id", "light", "dark"],  "properties": {    "$schema": {      "type": "string",      "description": "JSON Schema reference"    },    "name": {      "type": "string",      "description": "Human-readable theme name"    },    "id": {      "type": "string",      "description": "Unique theme identifier (slug)",      "pattern": "^[a-z0-9-]+$"    },    "light": {      "$ref": "#/definitions/ThemeVariant",      "description": "Light mode color variant"    },    "dark": {      "$ref": "#/definitions/ThemeVariant",      "description": "Dark mode color variant"    }  },  "definitions": {    "HexColor": {      "type": "string",      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",      "description": "A hex color value like #fff, #ffff, #ffffff, or #ffffffff"    },    "ColorValue": {      "type": "string",      "pattern": "^(#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|var\(--[a-z0-9-]+\))$",      "description": "Either a hex color value (#rgb/#rgba/#rrggbb/#rrggbbaa) or a CSS variable reference"    },    "ThemeSeedColors": {      "type": "object",      "description": "The minimum set of colors needed to generate a theme",      "required": ["neutral", "primary", "success", "warning", "error", "info", "interactive", "diffAdd", "diffDelete"],      "properties": {        "neutral": {          "$ref": "#/definitions/HexColor",          "description": "Base neutral color for generating the gray scale"        },        "primary": {          "$ref": "#/definitions/HexColor",          "description": "Primary brand/accent color"        },        "success": {          "$ref": "#/definitions/HexColor",          "description": "Success state color (typically green)"        },        "warning": {          "$ref": "#/definitions/HexColor",          "description": "Warning state color (typically yellow/orange)"        },        "error": {          "$ref": "#/definitions/HexColor",          "description": "Error/critical state color (typically red)"        },        "info": {          "$ref": "#/definitions/HexColor",          "description": "Informational state color (typically purple/blue)"        },        "interactive": {          "$ref": "#/definitions/HexColor",          "description": "Interactive element color (links, buttons)"        },        "diffAdd": {          "$ref": "#/definitions/HexColor",          "description": "Color for diff additions"        },        "diffDelete": {          "$ref": "#/definitions/HexColor",          "description": "Color for diff deletions"        }      }    },    "ThemeVariant": {      "type": "object",      "description": "A theme variant (light or dark) with seed colors and optional overrides",      "required": ["seeds"],      "properties": {        "seeds": {          "$ref": "#/definitions/ThemeSeedColors",          "description": "Seed colors used to generate the full palette"        },        "overrides": {          "type": "object",          "description": "Optional direct overrides for any CSS variable (without -- prefix)",          "additionalProperties": {            "$ref": "#/definitions/ColorValue"          }        }      }    }  }}