@valancex/style 0.0.0-stage → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -2
  3. package/contract/style-contract-v1.json +207 -0
  4. package/dist/check.d.ts +31 -0
  5. package/dist/check.js +250 -0
  6. package/dist/color.d.ts +17 -0
  7. package/dist/color.js +82 -0
  8. package/dist/contrast.d.ts +5 -0
  9. package/dist/contrast.js +13 -0
  10. package/dist/coverage.d.ts +21 -0
  11. package/dist/coverage.js +60 -0
  12. package/dist/css.d.ts +9 -0
  13. package/dist/css.js +201 -0
  14. package/dist/desktop.d.ts +33 -0
  15. package/dist/desktop.js +112 -0
  16. package/dist/index.d.ts +17 -0
  17. package/dist/index.js +11 -0
  18. package/dist/load.d.ts +5 -0
  19. package/dist/load.js +8 -0
  20. package/dist/primitives.d.ts +2 -0
  21. package/dist/primitives.js +364 -0
  22. package/dist/suggest.d.ts +2 -0
  23. package/dist/suggest.js +22 -0
  24. package/dist/theme.d.ts +5 -0
  25. package/dist/theme.js +129 -0
  26. package/dist/tokens.d.ts +21 -0
  27. package/dist/tokens.js +257 -0
  28. package/dist/types.d.ts +114 -0
  29. package/dist/types.js +3 -0
  30. package/package.json +64 -3
  31. package/schema/dtcg-2025.10/NOTICE.md +6 -0
  32. package/schema/dtcg-2025.10/format/group.json +54 -0
  33. package/schema/dtcg-2025.10/format/groupOrToken.json +14 -0
  34. package/schema/dtcg-2025.10/format/token.json +450 -0
  35. package/schema/dtcg-2025.10/format/tokenType.json +22 -0
  36. package/schema/dtcg-2025.10/format/values/border.json +44 -0
  37. package/schema/dtcg-2025.10/format/values/color.json +570 -0
  38. package/schema/dtcg-2025.10/format/values/cubicBezier.json +56 -0
  39. package/schema/dtcg-2025.10/format/values/dimension.json +34 -0
  40. package/schema/dtcg-2025.10/format/values/duration.json +34 -0
  41. package/schema/dtcg-2025.10/format/values/fontFamily.json +33 -0
  42. package/schema/dtcg-2025.10/format/values/fontWeight.json +38 -0
  43. package/schema/dtcg-2025.10/format/values/gradient.json +52 -0
  44. package/schema/dtcg-2025.10/format/values/number.json +7 -0
  45. package/schema/dtcg-2025.10/format/values/shadow.json +102 -0
  46. package/schema/dtcg-2025.10/format/values/strokeStyle.json +63 -0
  47. package/schema/dtcg-2025.10/format/values/transition.json +44 -0
  48. package/schema/dtcg-2025.10/format/values/typography.json +72 -0
  49. package/schema/dtcg-2025.10/format.json +105 -0
  50. package/schema/recipe-v1.schema.json +43 -0
  51. package/schema/style-contract-v1.schema.json +171 -0
  52. package/schema/theme-v1.schema.json +78 -0
  53. package/themes/default/recipes/button.json +87 -0
  54. package/themes/default/recipes/checkbox.json +26 -0
  55. package/themes/default/recipes/column.json +10 -0
  56. package/themes/default/recipes/heading.json +11 -0
  57. package/themes/default/recipes/row.json +10 -0
  58. package/themes/default/recipes/text.json +12 -0
  59. package/themes/default/recipes/textfield.json +37 -0
  60. package/themes/default/theme.json +61 -0
  61. package/themes/default/tokens/base.tokens.json +193 -0
  62. package/themes/default/tokens/contrast.tokens.json +127 -0
  63. package/themes/default/tokens/dark.tokens.json +127 -0
  64. package/themes/default/tokens/light.tokens.json +127 -0
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json",
4
+ "title": "Font Family Value",
5
+ "description": "Value schema for fontFamily type tokens. Represents a font name or an array of font names (ordered from most to least preferred).",
6
+ "oneOf": [
7
+ {
8
+ "type": "string",
9
+ "description": "A single font name",
10
+ "not": {
11
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/curlyBraceReference"
12
+ }
13
+ },
14
+ {
15
+ "type": "array",
16
+ "description": "An array of font names, ordered from most to least preferred",
17
+ "items": {
18
+ "oneOf": [
19
+ {
20
+ "type": "string",
21
+ "not": {
22
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/curlyBraceReference"
23
+ }
24
+ },
25
+ {
26
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject"
27
+ }
28
+ ]
29
+ },
30
+ "minItems": 1
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json",
4
+ "title": "Font Weight Value",
5
+ "description": "Value schema for fontWeight type tokens. Represents a font weight as per the OpenType wght tag specification. Lower numbers represent lighter weights, higher numbers represent thicker weights.",
6
+ "oneOf": [
7
+ {
8
+ "type": "number",
9
+ "description": "Numeric font weight value",
10
+ "minimum": 1,
11
+ "maximum": 1000
12
+ },
13
+ {
14
+ "type": "string",
15
+ "description": "Pre-defined font weight string value",
16
+ "enum": [
17
+ "thin",
18
+ "hairline",
19
+ "extra-light",
20
+ "ultra-light",
21
+ "light",
22
+ "normal",
23
+ "regular",
24
+ "book",
25
+ "medium",
26
+ "semi-bold",
27
+ "demi-bold",
28
+ "bold",
29
+ "extra-bold",
30
+ "ultra-bold",
31
+ "black",
32
+ "heavy",
33
+ "extra-black",
34
+ "ultra-black"
35
+ ]
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/gradient.json",
4
+ "title": "Gradient Value",
5
+ "description": "Value schema for gradient type tokens. Represents a color gradient.",
6
+ "type": "array",
7
+ "items": {
8
+ "oneOf": [
9
+ {
10
+ "$ref": "#/definitions/gradientStop"
11
+ },
12
+ {
13
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
14
+ }
15
+ ]
16
+ },
17
+ "minItems": 1,
18
+ "definitions": {
19
+ "gradientStop": {
20
+ "title": "Gradient Stop",
21
+ "type": "object",
22
+ "properties": {
23
+ "color": {
24
+ "description": "The color value at the stop's position on the gradient",
25
+ "oneOf": [
26
+ {
27
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/color.json"
28
+ },
29
+ {
30
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
31
+ }
32
+ ]
33
+ },
34
+ "position": {
35
+ "description": "The position of the stop along the gradient's axis (range [0, 1]). Values outside this range are clamped.",
36
+ "oneOf": [
37
+ {
38
+ "type": "number",
39
+ "minimum": 0,
40
+ "maximum": 1
41
+ },
42
+ {
43
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
44
+ }
45
+ ]
46
+ }
47
+ },
48
+ "required": ["color", "position"],
49
+ "additionalProperties": false
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/number.json",
4
+ "title": "Number Value",
5
+ "description": "Value schema for number type tokens. Numbers can be positive, negative and have fractions. Example uses are gradient stop positions or unitless line heights.",
6
+ "type": "number"
7
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/shadow.json",
4
+ "title": "Shadow Value",
5
+ "description": "Value schema for shadow type tokens. Represents a shadow style.",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "#/definitions/shadowObject"
9
+ },
10
+ {
11
+ "type": "array",
12
+ "description": "Array of shadow objects and/or references to shadow tokens",
13
+ "items": {
14
+ "oneOf": [
15
+ {
16
+ "$ref": "#/definitions/shadowObject"
17
+ },
18
+ {
19
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
20
+ }
21
+ ]
22
+ },
23
+ "minItems": 1
24
+ }
25
+ ],
26
+ "definitions": {
27
+ "shadowObject": {
28
+ "title": "Shadow Object",
29
+ "type": "object",
30
+ "properties": {
31
+ "color": {
32
+ "description": "The color of the shadow",
33
+ "oneOf": [
34
+ {
35
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/color.json"
36
+ },
37
+ {
38
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
39
+ }
40
+ ]
41
+ },
42
+ "offsetX": {
43
+ "description": "The horizontal offset that shadow has from the element it is applied to",
44
+ "oneOf": [
45
+ {
46
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
47
+ },
48
+ {
49
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
50
+ }
51
+ ]
52
+ },
53
+ "offsetY": {
54
+ "description": "The vertical offset that shadow has from the element it is applied to",
55
+ "oneOf": [
56
+ {
57
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
58
+ },
59
+ {
60
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
61
+ }
62
+ ]
63
+ },
64
+ "blur": {
65
+ "description": "The blur radius that is applied to the shadow",
66
+ "oneOf": [
67
+ {
68
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
69
+ },
70
+ {
71
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
72
+ }
73
+ ]
74
+ },
75
+ "spread": {
76
+ "description": "The amount by which to expand or contract the shadow",
77
+ "oneOf": [
78
+ {
79
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
80
+ },
81
+ {
82
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
83
+ }
84
+ ]
85
+ },
86
+ "inset": {
87
+ "description": "Whether this shadow is inside the containing shape (inner shadow) rather than a drop shadow (default: false)",
88
+ "oneOf": [
89
+ {
90
+ "type": "boolean"
91
+ },
92
+ {
93
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject"
94
+ }
95
+ ]
96
+ }
97
+ },
98
+ "required": ["color", "offsetX", "offsetY", "blur", "spread"],
99
+ "additionalProperties": false
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json",
4
+ "title": "Stroke Style Value",
5
+ "description": "Value schema for strokeStyle type tokens. Represents the style applied to lines or borders.",
6
+ "oneOf": [
7
+ {
8
+ "type": "string",
9
+ "enum": [
10
+ "solid",
11
+ "dashed",
12
+ "dotted",
13
+ "double",
14
+ "groove",
15
+ "ridge",
16
+ "outset",
17
+ "inset"
18
+ ],
19
+ "description": "Pre-defined stroke style values with the same meaning as CSS line style values"
20
+ },
21
+ {
22
+ "type": "object",
23
+ "properties": {
24
+ "dashArray": {
25
+ "description": "Array of dimension values specifying lengths of alternating dashes and gaps",
26
+ "oneOf": [
27
+ {
28
+ "type": "array",
29
+ "items": {
30
+ "oneOf": [
31
+ {
32
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
33
+ },
34
+ {
35
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
36
+ }
37
+ ]
38
+ },
39
+ "minItems": 1
40
+ },
41
+ {
42
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject"
43
+ }
44
+ ]
45
+ },
46
+ "lineCap": {
47
+ "description": "Line cap style, same meaning as SVG stroke-linecap attribute",
48
+ "oneOf": [
49
+ {
50
+ "type": "string",
51
+ "enum": ["round", "butt", "square"]
52
+ },
53
+ {
54
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject"
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ "required": ["dashArray", "lineCap"],
60
+ "additionalProperties": false
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/transition.json",
4
+ "title": "Transition Value",
5
+ "description": "Value schema for transition type tokens. Represents an animated transition between two states.",
6
+ "type": "object",
7
+ "properties": {
8
+ "duration": {
9
+ "description": "The duration of the transition",
10
+ "oneOf": [
11
+ {
12
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/duration.json"
13
+ },
14
+ {
15
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
16
+ }
17
+ ]
18
+ },
19
+ "delay": {
20
+ "description": "The time to wait before the transition begins",
21
+ "oneOf": [
22
+ {
23
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/duration.json"
24
+ },
25
+ {
26
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
27
+ }
28
+ ]
29
+ },
30
+ "timingFunction": {
31
+ "description": "The timing function of the transition",
32
+ "oneOf": [
33
+ {
34
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json"
35
+ },
36
+ {
37
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
38
+ }
39
+ ]
40
+ }
41
+ },
42
+ "required": ["duration", "delay", "timingFunction"],
43
+ "additionalProperties": false
44
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format/values/typography.json",
4
+ "title": "Typography Value",
5
+ "description": "Value schema for typography type tokens. Represents a typographic style.",
6
+ "type": "object",
7
+ "properties": {
8
+ "fontFamily": {
9
+ "description": "The typography's font",
10
+ "oneOf": [
11
+ {
12
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json"
13
+ },
14
+ {
15
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
16
+ }
17
+ ]
18
+ },
19
+ "fontSize": {
20
+ "description": "The size of the typography",
21
+ "oneOf": [
22
+ {
23
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
24
+ },
25
+ {
26
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
27
+ }
28
+ ]
29
+ },
30
+ "fontWeight": {
31
+ "description": "The weight of the typography",
32
+ "oneOf": [
33
+ {
34
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json"
35
+ },
36
+ {
37
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
38
+ }
39
+ ]
40
+ },
41
+ "letterSpacing": {
42
+ "description": "The horizontal spacing between characters",
43
+ "oneOf": [
44
+ {
45
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/dimension.json"
46
+ },
47
+ {
48
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
49
+ }
50
+ ]
51
+ },
52
+ "lineHeight": {
53
+ "description": "The vertical spacing between lines of typography (interpreted as a multiplier of fontSize)",
54
+ "oneOf": [
55
+ {
56
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/values/number.json"
57
+ },
58
+ {
59
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference"
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ "required": [
65
+ "fontFamily",
66
+ "fontSize",
67
+ "fontWeight",
68
+ "letterSpacing",
69
+ "lineHeight"
70
+ ],
71
+ "additionalProperties": false
72
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.designtokens.org/schemas/2025.10/format.json",
4
+ "title": "DTCG Format Schema",
5
+ "description": "JSON Schema for the Design Tokens Community Group (DTCG) Format specification.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "format": "uri-reference",
11
+ "description": "URI reference to this JSON schema.",
12
+ "$comment": "$schema is not part of the official DTCG specification."
13
+ },
14
+ "$type": {
15
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/tokenType.json",
16
+ "description": "The type for tokens in this group (inherited by nested tokens unless overridden)"
17
+ },
18
+ "$description": {
19
+ "type": "string",
20
+ "description": "A plain text description of the group"
21
+ },
22
+ "$extensions": {
23
+ "type": "object",
24
+ "description": "Vendor-specific extensions"
25
+ },
26
+ "$extends": {
27
+ "oneOf": [
28
+ {
29
+ "$ref": "#/definitions/curlyBraceReference"
30
+ },
31
+ {
32
+ "$ref": "#/definitions/jsonPointerReference"
33
+ }
34
+ ],
35
+ "description": "Reference to another group to inherit tokens and properties from"
36
+ },
37
+ "$deprecated": {
38
+ "oneOf": [
39
+ {
40
+ "type": "boolean"
41
+ },
42
+ {
43
+ "type": "string"
44
+ }
45
+ ],
46
+ "description": "Whether this group is deprecated"
47
+ },
48
+ "$root": {
49
+ "description": "Root token for this group. The $root token provides a base value for the group while allowing for variants or extensions.",
50
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/token.json"
51
+ }
52
+ },
53
+ "patternProperties": {
54
+ "^[^${}.][^{}.]*$": {
55
+ "description": "Nested groups and tokens (see #/definitions/tokenOrGroupName for pattern definition)",
56
+ "$ref": "https://www.designtokens.org/schemas/2025.10/format/groupOrToken.json"
57
+ }
58
+ },
59
+ "additionalProperties": false,
60
+ "definitions": {
61
+ "tokenOrGroupName": {
62
+ "title": "Token or Group Name",
63
+ "type": "string",
64
+ "pattern": "^[^${}.][^{}.]*$",
65
+ "description": "Valid token/group names: must not start with $ and must not contain {, }, or ."
66
+ },
67
+ "curlyBraceReference": {
68
+ "title": "Curly Brace Reference",
69
+ "type": "string",
70
+ "pattern": "^\\{[^${}.][^{}.]*(\\.[^${}.][^{}.]*)*\\}$",
71
+ "description": "Curly brace reference (e.g., '{tokenName}' or '{group.nested.token}')"
72
+ },
73
+ "jsonPointerReference": {
74
+ "title": "JSON Pointer Reference",
75
+ "type": "string",
76
+ "pattern": "^#/",
77
+ "format": "json-pointer-uri-fragment",
78
+ "description": "JSON Pointer reference (RFC 6901) to a location in the document (e.g., '#/path/to/target')"
79
+ },
80
+ "jsonPointerReferenceObject": {
81
+ "title": "JSON Pointer Reference Object",
82
+ "type": "object",
83
+ "properties": {
84
+ "$ref": {
85
+ "$ref": "#/definitions/jsonPointerReference"
86
+ }
87
+ },
88
+ "required": ["$ref"],
89
+ "additionalProperties": false,
90
+ "description": "Object containing a JSON Pointer reference for property-level references"
91
+ },
92
+ "tokenValueReference": {
93
+ "title": "Token Value Reference",
94
+ "oneOf": [
95
+ {
96
+ "$ref": "#/definitions/curlyBraceReference"
97
+ },
98
+ {
99
+ "$ref": "#/definitions/jsonPointerReferenceObject"
100
+ }
101
+ ],
102
+ "description": "A reference to a token value using either curly brace syntax or JSON Pointer syntax"
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://valancex.dev/schema/recipe-v1.json",
4
+ "title": "A recipe (recipe-v1): the style of one part of one primitive, as data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["version", "target"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "target": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["primitive", "part"],
14
+ "properties": { "primitive": { "type": "string", "pattern": "^[a-z][a-z0-9]*$" }, "part": { "type": "string" } }
15
+ },
16
+ "base": { "$ref": "#/definitions/declarations" },
17
+ "variants": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/declarations" } } },
18
+ "states": { "type": "object", "additionalProperties": { "$ref": "#/definitions/declarations" } },
19
+ "when": { "type": "object", "propertyNames": { "pattern": "^[a-z-]+:[a-z-]+$" }, "additionalProperties": { "$ref": "#/definitions/declarations" } },
20
+ "escape": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "properties": {
24
+ "web": { "type": "object", "additionalProperties": false, "required": ["css"], "properties": { "css": { "type": "string", "minLength": 1 } } }
25
+ }
26
+ }
27
+ },
28
+ "definitions": {
29
+ "declarations": { "type": "object", "additionalProperties": { "$ref": "#/definitions/value" } },
30
+ "value": {
31
+ "oneOf": [
32
+ { "type": "string" },
33
+ { "type": "number" },
34
+ { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 4 },
35
+ {
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "properties": { "width": { "type": "string" }, "color": { "type": "string" }, "style": { "enum": ["solid", "dashed", "dotted"] }, "offset": { "type": "string" } }
39
+ }
40
+ ]
41
+ }
42
+ }
43
+ }