返回 DeepSeek-Reasonix
theme-pack.schema.json
根目录 / docs / theme-pack.schema.json
1 {
2 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "$id": "https://reasonix.dev/schemas/theme-pack-v2.json",
4 "title": "Reasonix Theme Pack V2",
5 "type": "object",
6 "additionalProperties": false,
7 "required": ["schemaVersion", "id", "name", "baseStyle"],
8 "properties": {
9 "schemaVersion": { "type": "integer", "enum": [1, 2] },
10 "id": {
11 "type": "string",
12 "pattern": "^[a-z]([a-z0-9-]{0,62}[a-z0-9])?$"
13 },
14 "name": { "type": "string", "minLength": 1, "maxLength": 80 },
15 "author": { "type": "string", "maxLength": 240 },
16 "description": { "type": "string", "maxLength": 240 },
17 "license": { "type": "string", "maxLength": 240 },
18 "baseStyle": {
19 "type": "string",
20 "enum": ["graphite", "aurora", "slate", "carbon", "nocturne", "amber"]
21 },
22 "tokens": {
23 "type": "object",
24 "additionalProperties": false,
25 "properties": {
26 "light": { "$ref": "#/$defs/tokenMap" },
27 "dark": { "$ref": "#/$defs/tokenMap" }
28 }
29 },
30 "recipes": {
31 "type": "object",
32 "additionalProperties": false,
33 "properties": {
34 "density": { "type": "string", "enum": ["compact", "comfortable"] },
35 "corners": { "type": "string", "enum": ["square", "soft", "round"] }
36 }
37 },
38 "background": {
39 "type": "object",
40 "additionalProperties": false,
41 "properties": {
42 "image": {
43 "type": "string",
44 "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]{0,120}\\.(png|jpe?g|webp)$"
45 },
46 "focusX": { "type": "number", "minimum": 0, "maximum": 1 },
47 "focusY": { "type": "number", "minimum": 0, "maximum": 1 },
48 "safeArea": { "type": "string", "enum": ["left", "right", "center"] },
49 "homeOpacity": { "type": "number", "minimum": 0, "maximum": 1 },
50 "taskOpacity": { "type": "number", "minimum": 0, "maximum": 1 },
51 "overlayStrength": { "type": "number", "minimum": 0, "maximum": 1 },
52 "paneOpacity": { "type": "number", "minimum": 0, "maximum": 1 }
53 }
54 },
55 "taskBackground": { "$ref": "#/$defs/sceneBackground" }
56 },
57 "allOf": [
58 {
59 "if": { "required": ["taskBackground"] },
60 "then": { "properties": { "schemaVersion": { "const": 2 } } }
61 }
62 ],
63 "$defs": {
64 "hexColor": {
65 "type": "string",
66 "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
67 },
68 "sceneBackground": {
69 "type": "object",
70 "additionalProperties": false,
71 "properties": {
72 "image": {
73 "type": "string",
74 "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]{0,120}\\.(png|jpe?g|webp)$"
75 },
76 "focusX": { "type": "number", "minimum": 0, "maximum": 1 },
77 "focusY": { "type": "number", "minimum": 0, "maximum": 1 },
78 "safeArea": { "type": "string", "enum": ["left", "right", "center"] },
79 "opacity": { "type": "number", "minimum": 0, "maximum": 1 },
80 "overlayStrength": { "type": "number", "minimum": 0, "maximum": 1 },
81 "paneOpacity": { "type": "number", "minimum": 0, "maximum": 1 }
82 }
83 },
84 "tokenMap": {
85 "type": "object",
86 "additionalProperties": false,
87 "properties": {
88 "bg": { "$ref": "#/$defs/hexColor" },
89 "bgSoft": { "$ref": "#/$defs/hexColor" },
90 "bgElev": { "$ref": "#/$defs/hexColor" },
91 "panel": { "$ref": "#/$defs/hexColor" },
92 "sidebar": { "$ref": "#/$defs/hexColor" },
93 "chat": { "$ref": "#/$defs/hexColor" },
94 "workspace": { "$ref": "#/$defs/hexColor" },
95 "workspaceFiles": { "$ref": "#/$defs/hexColor" },
96 "border": { "$ref": "#/$defs/hexColor" },
97 "borderSoft": { "$ref": "#/$defs/hexColor" },
98 "fg": { "$ref": "#/$defs/hexColor" },
99 "fgDim": { "$ref": "#/$defs/hexColor" },
100 "fgFaint": { "$ref": "#/$defs/hexColor" },
101 "accent": { "$ref": "#/$defs/hexColor" },
102 "accentFg": { "$ref": "#/$defs/hexColor" },
103 "ok": { "$ref": "#/$defs/hexColor" },
104 "warn": { "$ref": "#/$defs/hexColor" },
105 "err": { "$ref": "#/$defs/hexColor" }
106 }
107 }
108 }
109 }
110
110 lines JSON