@adobe/design-data-spec 1.3.0 → 1.4.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.
- package/conformance/invalid/SPEC-042/dataset.json +21 -0
- package/conformance/invalid/SPEC-042/expected-errors.json +15 -0
- package/conformance/invalid/SPEC-043/dataset.json +20 -0
- package/conformance/invalid/SPEC-043/expected-errors.json +15 -0
- package/fields/colorFamily.json +15 -0
- package/fields/easing.json +15 -0
- package/fields/family.json +15 -0
- package/fields/motionRole.json +15 -0
- package/fields/scaleIndex.json +1 -1
- package/fields/style.json +15 -0
- package/fields/weight.json +15 -0
- package/package.json +1 -1
- package/rules/rules.yaml +37 -0
- package/schemas/manifest.schema.json +7 -1
- package/spec/taxonomy.md +69 -5
- package/spec/token-format.md +16 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tokens": [
|
|
3
|
+
{
|
|
4
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/token-types/font-weight.json",
|
|
5
|
+
"name": {
|
|
6
|
+
"property": "font-weight",
|
|
7
|
+
"colorFamily": "blue"
|
|
8
|
+
},
|
|
9
|
+
"value": "bold"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/token-types/color.json",
|
|
13
|
+
"name": {
|
|
14
|
+
"property": "color",
|
|
15
|
+
"weight": "bold"
|
|
16
|
+
},
|
|
17
|
+
"value": "#0265dc"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"components": []
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"layer": 2,
|
|
3
|
+
"errors": [
|
|
4
|
+
{
|
|
5
|
+
"rule_id": "SPEC-042",
|
|
6
|
+
"severity": "warning",
|
|
7
|
+
"message_pattern": ".*colorFamily.*color-scoped.*font-weight.*"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"rule_id": "SPEC-042",
|
|
11
|
+
"severity": "warning",
|
|
12
|
+
"message_pattern": ".*weight.*typography-scoped.*color.*"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tokens": [
|
|
3
|
+
{
|
|
4
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/token-types/color.json",
|
|
5
|
+
"name": {
|
|
6
|
+
"property": "color",
|
|
7
|
+
"state": "hover"
|
|
8
|
+
},
|
|
9
|
+
"value": "#0265dc"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/token-types/font-weight.json",
|
|
13
|
+
"name": {
|
|
14
|
+
"property": "font-weight"
|
|
15
|
+
},
|
|
16
|
+
"value": "bold"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"components": []
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"layer": 2,
|
|
3
|
+
"errors": [
|
|
4
|
+
{
|
|
5
|
+
"rule_id": "SPEC-043",
|
|
6
|
+
"severity": "warning",
|
|
7
|
+
"message_pattern": ".*color.*no domain-identifying field.*colorFamily.*"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"rule_id": "SPEC-043",
|
|
11
|
+
"severity": "warning",
|
|
12
|
+
"message_pattern": ".*typography.*no domain-identifying field.*family.*"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "colorFamily",
|
|
5
|
+
"description": "Hue family of a color token (e.g. blue, gray, celery, accent). Used on color palette and semantic color tokens. Paired with scaleIndex for ramp tokens (e.g. colorFamily=blue + scaleIndex=100 → blue-100).",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/color-families.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 17
|
|
11
|
+
},
|
|
12
|
+
"scope": "color",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "easing",
|
|
5
|
+
"description": "Easing curve identifier for a motion token (e.g. ease-in, ease-out, standard). Registry is provisional until motion tokens are added to the foundation.",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/easing-curves.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 22
|
|
11
|
+
},
|
|
12
|
+
"scope": "motion",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "family",
|
|
5
|
+
"description": "Type family of a typography token (e.g. sans-serif, serif, cjk, code). Used to distinguish tokens that apply to different script or display contexts.",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/typography-families.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 18
|
|
11
|
+
},
|
|
12
|
+
"scope": "typography",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "motionRole",
|
|
5
|
+
"description": "Semantic role of a motion token — the interaction pattern it governs (e.g. enter, exit, transition, emphasis). Registry is provisional until motion tokens are added to the foundation.",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/motion-roles.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 21
|
|
11
|
+
},
|
|
12
|
+
"scope": "motion",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
package/fields/scaleIndex.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "style",
|
|
5
|
+
"description": "Typographic style of a typography token (e.g. italic, oblique). Corresponds to the CSS font-style axis. Normal style is omitted (default).",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/typography-styles.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 20
|
|
11
|
+
},
|
|
12
|
+
"scope": "typography",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/field.schema.json",
|
|
3
|
+
"specVersion": "1.0.0-draft",
|
|
4
|
+
"name": "weight",
|
|
5
|
+
"description": "Typographic weight of a typography token (e.g. regular, bold, light, black). Corresponds to the CSS font-weight axis.",
|
|
6
|
+
"kind": "semantic",
|
|
7
|
+
"registry": "packages/design-system-registry/registry/typography-weights.json",
|
|
8
|
+
"validation": "advisory",
|
|
9
|
+
"serialization": {
|
|
10
|
+
"position": 19
|
|
11
|
+
},
|
|
12
|
+
"scope": "typography",
|
|
13
|
+
"required": false,
|
|
14
|
+
"valueType": "string"
|
|
15
|
+
}
|
package/package.json
CHANGED
package/rules/rules.yaml
CHANGED
|
@@ -436,3 +436,40 @@ rules:
|
|
|
436
436
|
message: "Token group '{base_name}' has no resolvable candidate under manifest mode-set restrictions ({restrictions})"
|
|
437
437
|
spec_ref: spec/mode-sets.md#platform-restrictions
|
|
438
438
|
introduced_in: "1.0.0-draft"
|
|
439
|
+
|
|
440
|
+
- id: SPEC-042
|
|
441
|
+
name: field-scope-violation
|
|
442
|
+
severity: warning
|
|
443
|
+
layer: 2
|
|
444
|
+
category: taxonomy
|
|
445
|
+
rfc: "#806"
|
|
446
|
+
assert: >
|
|
447
|
+
When a token's name object contains a domain-scoped field (e.g. `colorFamily`,
|
|
448
|
+
`weight`, `motionRole`), the token's `$schema` MUST reference a compatible token
|
|
449
|
+
type for that domain. Using a color-scoped field on a typography token, or a
|
|
450
|
+
typography-scoped field on a color token, is a taxonomy violation. The set of
|
|
451
|
+
domain-scoped fields and their valid schema URL suffixes is declared in the field
|
|
452
|
+
catalog under `packages/design-data-spec/fields/` via the `scope` property.
|
|
453
|
+
Tokens without a `$schema` are skipped (domain cannot be determined).
|
|
454
|
+
message: "name.{field} is a {scope}-scoped field but token schema '{schema_url}' is not a {scope} token type"
|
|
455
|
+
spec_ref: spec/taxonomy.md#token-type-taxonomies
|
|
456
|
+
introduced_in: "1.0.0-draft"
|
|
457
|
+
|
|
458
|
+
- id: SPEC-043
|
|
459
|
+
name: domain-required-fields
|
|
460
|
+
severity: warning
|
|
461
|
+
layer: 2
|
|
462
|
+
category: taxonomy
|
|
463
|
+
rfc: "#806"
|
|
464
|
+
assert: >
|
|
465
|
+
Tokens in a known domain SHOULD include at least one domain-identifying field in
|
|
466
|
+
their name object so tooling can group, sort, and validate them correctly.
|
|
467
|
+
Color tokens (schema: color.json, color-set.json) SHOULD have `colorFamily` or
|
|
468
|
+
`scaleIndex`. Typography tokens (schema: font-*.json, typography.json) SHOULD have
|
|
469
|
+
`family`, `weight`, or `style`. Motion tokens (schema: duration.json, motion.json)
|
|
470
|
+
SHOULD have `motionRole` or `easing`. String-named tokens and tokens without `$schema`
|
|
471
|
+
are skipped. Advisory severity: the existing corpus has not yet migrated to structured
|
|
472
|
+
name objects; this rule tracks progress rather than blocking.
|
|
473
|
+
message: "{domain} token has a name object but no domain-identifying field — add at least one of: {required_fields}"
|
|
474
|
+
spec_ref: spec/taxonomy.md#token-type-taxonomies
|
|
475
|
+
introduced_in: "1.0.0-draft"
|
package/spec/taxonomy.md
CHANGED
|
@@ -46,13 +46,17 @@ The taxonomy is designed with three guiding principles:
|
|
|
46
46
|
2. **Agnostic (with compromises)** — Platform-agnostic terms are used except when platforms have specific terms for the same concept. In those cases, the most common or clear term is used.
|
|
47
47
|
3. **Verified** — Multiple existing components must be rebuildable using the taxonomy system, and consumers must find them reasonably understandable or learnable.
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Token-type taxonomies
|
|
50
50
|
|
|
51
|
-
Concept categories for name-object fields are declared in the design system's **field catalog** — a set of field declarations in the `fields/` directory, each conforming to [`field.schema.json`](../schemas/field.schema.json). Each declaration specifies the field name, vocabulary registry, validation severity,
|
|
51
|
+
Concept categories for name-object fields are declared in the design system's **field catalog** — a set of field declarations in the `fields/` directory, each conforming to [`field.schema.json`](../schemas/field.schema.json). Each declaration specifies the field name, vocabulary registry, validation severity, default serialization position, and an optional **scope** that restricts the field to a specific token type.
|
|
52
52
|
|
|
53
53
|
**NORMATIVE:** The field catalog is the authoritative source for what fields exist on the name object. Tools, validators, and serializers **SHOULD** read the catalog rather than hardcoding field knowledge.
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
**NORMATIVE:** A field with a non-null `scope` declaration **MUST** only appear on tokens of that type. Using a scoped field on a mismatched token type triggers rule SPEC-042 (`field-scope-violation`, warning).
|
|
56
|
+
|
|
57
|
+
### Semantic / layout token taxonomy
|
|
58
|
+
|
|
59
|
+
The following concept categories are defined in Spectrum's foundation field catalog for semantic and layout tokens (`scope: null` — universal), ordered by default serialization position. This ordering is the **default serialization order** for legacy format output; it is not a conformance requirement for stored name objects.
|
|
56
60
|
|
|
57
61
|
**NORMATIVE:** Each category listed below corresponds to a field on the token [name object](token-format.md). Tokens **MAY** use any subset of these fields. Exception: `property` is REQUIRED on every name object — see [token-format.md](token-format.md#name-object).
|
|
58
62
|
|
|
@@ -77,7 +81,67 @@ Additional categories for variant and state are inherited from the existing name
|
|
|
77
81
|
| Variant | `variant` | Variant within a component (e.g. accent, negative, primary). |
|
|
78
82
|
| State | `state` | Interactive or semantic state (e.g. hover, focus, disabled). |
|
|
79
83
|
|
|
80
|
-
|
|
84
|
+
### Color token taxonomy
|
|
85
|
+
|
|
86
|
+
Color tokens describe palette entries and semantic color assignments. Their name objects use `scope: "color"` fields alongside the universal `property` and `state` fields.
|
|
87
|
+
|
|
88
|
+
**NORMATIVE:** Color tokens SHOULD include `colorFamily`, `scaleIndex`, or both to allow tooling to group and sort palette entries. Tokens missing both are flagged by rule SPEC-043 (`domain-required-fields`, warning).
|
|
89
|
+
|
|
90
|
+
| Category | Name object field | Answers | Description |
|
|
91
|
+
| ------------ | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
92
|
+
| Color Family | `colorFamily` | What? | Hue family of the color (e.g. `blue`, `gray`, `celery`, `transparent-black`). Values come from [`color-families.json`](../../packages/design-system-registry/registry/color-families.json). |
|
|
93
|
+
| Ramp Index | `scaleIndex` | Which? | Numeric perceptual ramp step (e.g. `100`, `400`, `900`, `1600`). Shared with layout tokens; see [scaleIndex field declaration](../fields/scaleIndex.json). Not scope-restricted. |
|
|
94
|
+
|
|
95
|
+
**Default serialization order for color tokens:**
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
{variant}-{colorFamily}-{scaleIndex}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Example: `colorFamily=blue` + `scaleIndex=100` → `blue-100`.
|
|
102
|
+
|
|
103
|
+
### Typography token taxonomy
|
|
104
|
+
|
|
105
|
+
Typography tokens describe typeface attributes: family, weight, style, and numeric scale. Their name objects use `scope: "typography"` fields alongside the universal `property` field.
|
|
106
|
+
|
|
107
|
+
**NORMATIVE:** Typography tokens SHOULD include at least one of `family`, `weight`, or `style`. Tokens missing all three are flagged by rule SPEC-043 (`domain-required-fields`, warning).
|
|
108
|
+
|
|
109
|
+
| Category | Name object field | Answers | Description |
|
|
110
|
+
| -------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
111
|
+
| Family | `family` | What? | Type family of the token (e.g. `sans-serif`, `serif`, `cjk`, `code`). Values come from [`typography-families.json`](../../packages/design-system-registry/registry/typography-families.json). |
|
|
112
|
+
| Weight | `weight` | How? | Typographic weight (e.g. `regular`, `bold`, `light`, `black`). Values come from [`typography-weights.json`](../../packages/design-system-registry/registry/typography-weights.json). |
|
|
113
|
+
| Style | `style` | How? | Typographic style when non-default (e.g. `italic`, `oblique`). Omit the field when style is normal. Values come from [`typography-styles.json`](../../packages/design-system-registry/registry/typography-styles.json). |
|
|
114
|
+
| Scale | `scaleIndex` | Which? | Numeric size scale step (e.g. `75`, `100`, `200`). Shared with other token types; not scope-restricted. |
|
|
115
|
+
|
|
116
|
+
**Default serialization order for typography tokens:**
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
{family}-{weight}-{style}-{scaleIndex}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Example: `family=sans-serif` + `weight=bold` → `sans-serif-bold`. `family=sans-serif` + `style=italic` + `scaleIndex=100` → `sans-serif-italic-100`.
|
|
123
|
+
|
|
124
|
+
### Motion token taxonomy
|
|
125
|
+
|
|
126
|
+
Motion tokens describe timing, easing, and animation role for UI animation. Their name objects use `scope: "motion"` fields alongside the universal `property` field.
|
|
127
|
+
|
|
128
|
+
**NOTE:** No motion tokens exist in the foundation dataset at the time of this writing. This taxonomy is normative but the registry values for `motionRole` and `easing` are provisional — they will be refined when motion tokens are added to the foundation. Validators emit SPEC-043 at warning severity so provisional tokens are not blocked.
|
|
129
|
+
|
|
130
|
+
**NORMATIVE:** Motion tokens SHOULD include `motionRole` or `easing`. Tokens missing both are flagged by rule SPEC-043 (`domain-required-fields`, warning).
|
|
131
|
+
|
|
132
|
+
| Category | Name object field | Answers | Description |
|
|
133
|
+
| ----------- | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
134
|
+
| Motion Role | `motionRole` | What? | Semantic role of the animation (e.g. `enter`, `exit`, `transition`, `emphasis`). Values come from [`motion-roles.json`](../../packages/design-system-registry/registry/motion-roles.json). |
|
|
135
|
+
| Easing | `easing` | How? | Easing curve identifier (e.g. `ease-in`, `ease-out`, `standard`). Values come from [`easing-curves.json`](../../packages/design-system-registry/registry/easing-curves.json). |
|
|
136
|
+
| Duration | `scaleIndex` | Which? | Numeric duration bucket index (e.g. `100` for 100ms, `200` for 200ms). Shared with other token types; not scope-restricted. |
|
|
137
|
+
|
|
138
|
+
**Default serialization order for motion tokens:**
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
{motionRole}-{easing}-{scaleIndex}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Example: `motionRole=enter` + `easing=ease-out` → `enter-ease-out`. `motionRole=transition` + `scaleIndex=100` → `transition-100`.
|
|
81
145
|
|
|
82
146
|
### Structure vs. component — when does the line move?
|
|
83
147
|
|
|
@@ -177,7 +241,7 @@ The taxonomy and terms are built to scale as new concepts and terms are identifi
|
|
|
177
241
|
|
|
178
242
|
* New concept categories **MAY** be added by creating a new field declaration file in the field catalog — no spec version change is required for the mechanism itself.
|
|
179
243
|
* New terms **MAY** be added to the vocabulary registry without spec version changes.
|
|
180
|
-
* New token type taxonomies
|
|
244
|
+
* New token type taxonomies **MAY** be added by creating scoped field declarations (non-null `scope`) and a corresponding registry section in taxonomy.md. Color, typography, and motion taxonomies are defined above.
|
|
181
245
|
* Platform manifests **MAY** extend the vocabulary with platform-specific terms and formatting.
|
|
182
246
|
|
|
183
247
|
## References
|
package/spec/token-format.md
CHANGED
|
@@ -51,6 +51,10 @@ Fields are divided into **semantic fields** (identity, structure, intent) and **
|
|
|
51
51
|
|
|
52
52
|
#### Semantic fields
|
|
53
53
|
|
|
54
|
+
The table below lists all semantic fields. Fields marked with a scope are domain-restricted — see [Taxonomy — Token-type taxonomies](taxonomy.md#token-type-taxonomies) for the normative per-domain field rules and serialization orders. Validators enforce scope restrictions via rule SPEC-042.
|
|
55
|
+
|
|
56
|
+
**Universal semantic fields** (`scope: null` — apply to all token types):
|
|
57
|
+
|
|
54
58
|
| Field | Status | Taxonomy category | Description |
|
|
55
59
|
| -------------- | -------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
56
60
|
| `property` | REQUIRED | Property | The stylistic attribute being defined (e.g. `color`, `width`, `padding`, `gap`). |
|
|
@@ -66,6 +70,18 @@ Fields are divided into **semantic fields** (identity, structure, intent) and **
|
|
|
66
70
|
| `size` | OPTIONAL | Size | Relative t-shirt sizing for relationships across tokens (e.g. `small`, `medium`, `large`). |
|
|
67
71
|
| `density` | OPTIONAL | Density | Space within or around component parts (e.g. `spacious`, `compact`). |
|
|
68
72
|
| `shape` | OPTIONAL | Shape | Relative to overall component shape (e.g. `uniform`). |
|
|
73
|
+
| `scaleIndex` | OPTIONAL | — | Numeric scale index appended at the end of the serialized name (e.g. `100`, `200`, `900`). Used by color palette, spacing, font-size, and motion duration tokens. |
|
|
74
|
+
|
|
75
|
+
**Domain-scoped semantic fields** (only valid on the indicated token type):
|
|
76
|
+
|
|
77
|
+
| Field | Status | Scope | Description |
|
|
78
|
+
| ------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
79
|
+
| `colorFamily` | OPTIONAL | `color` | Hue family of the color (e.g. `blue`, `gray`, `cyan`). See [Taxonomy — Color token taxonomy](taxonomy.md#color-token-taxonomy). |
|
|
80
|
+
| `family` | OPTIONAL | `typography` | Type family (e.g. `sans-serif`, `serif`, `cjk`, `code`). See [Taxonomy — Typography token taxonomy](taxonomy.md#typography-token-taxonomy). |
|
|
81
|
+
| `weight` | OPTIONAL | `typography` | Typographic weight (e.g. `regular`, `bold`, `light`). See [Taxonomy — Typography token taxonomy](taxonomy.md#typography-token-taxonomy). |
|
|
82
|
+
| `style` | OPTIONAL | `typography` | Typographic style when non-default (e.g. `italic`). See [Taxonomy — Typography token taxonomy](taxonomy.md#typography-token-taxonomy). |
|
|
83
|
+
| `motionRole` | OPTIONAL | `motion` | Semantic animation role (e.g. `enter`, `exit`, `transition`). See [Taxonomy — Motion token taxonomy](taxonomy.md#motion-token-taxonomy). |
|
|
84
|
+
| `easing` | OPTIONAL | `motion` | Easing curve identifier (e.g. `ease-out`, `standard`). See [Taxonomy — Motion token taxonomy](taxonomy.md#motion-token-taxonomy). |
|
|
69
85
|
|
|
70
86
|
#### Mode-set fields
|
|
71
87
|
|