@adobe/design-data-spec 1.5.0 → 2.0.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-009/expected-errors.json +1 -1
- package/conformance/invalid/SPEC-018/dataset.json +8 -1
- package/conformance/invalid/SPEC-034/expected-errors.json +1 -1
- package/conformance/invalid/SPEC-035/expected-errors.json +1 -1
- package/package.json +5 -6
- package/rules/rules.yaml +8 -7
- package/schemas/component.schema.json +1 -1
- package/schemas/manifest.schema.json +1 -23
- package/schemas/platform-extension.json +79 -0
- package/schemas/registry-value.json +230 -0
- package/schemas/token.schema.json +1 -1
- package/spec/agent-surface.md +16 -14
- package/spec/anatomy-format.md +1 -1
- package/spec/cascade.md +1 -1
- package/spec/index.md +5 -5
- package/spec/mode-sets.md +1 -1
- package/spec/registry.md +6 -8
- package/spec/taxonomy.md +32 -32
- package/spec/token-format.md +11 -3
- package/components/accordion.json +0 -557
- package/components/action-bar.json +0 -214
- package/components/action-button.json +0 -522
- package/components/action-group.json +0 -134
- package/components/alert-banner.json +0 -134
- package/components/alert-dialog.json +0 -180
- package/components/avatar-group.json +0 -166
- package/components/avatar.json +0 -246
- package/components/badge.json +0 -594
- package/components/body.json +0 -54
- package/components/bottom-navigation-android.json +0 -72
- package/components/breadcrumbs.json +0 -307
- package/components/button-group.json +0 -86
- package/components/button.json +0 -586
- package/components/calendar.json +0 -133
- package/components/cards.json +0 -541
- package/components/checkbox-group.json +0 -91
- package/components/checkbox.json +0 -339
- package/components/close-button.json +0 -208
- package/components/coach-indicator.json +0 -105
- package/components/coach-mark.json +0 -169
- package/components/code.json +0 -44
- package/components/color-area.json +0 -138
- package/components/color-handle.json +0 -111
- package/components/color-loupe.json +0 -77
- package/components/color-slider.json +0 -165
- package/components/color-wheel.json +0 -117
- package/components/combo-box.json +0 -543
- package/components/contextual-help.json +0 -230
- package/components/date-picker.json +0 -471
- package/components/detail.json +0 -53
- package/components/divider.json +0 -93
- package/components/drop-zone.json +0 -238
- package/components/field-label.json +0 -219
- package/components/heading.json +0 -68
- package/components/help-text.json +0 -209
- package/components/illustrated-message.json +0 -175
- package/components/in-field-progress-button.json +0 -88
- package/components/in-field-progress-circle.json +0 -116
- package/components/in-line-alert.json +0 -233
- package/components/link.json +0 -167
- package/components/list-view.json +0 -382
- package/components/menu.json +0 -597
- package/components/meter.json +0 -199
- package/components/number-field.json +0 -518
- package/components/opacity-checkerboard.json +0 -69
- package/components/picker.json +0 -579
- package/components/popover.json +0 -174
- package/components/progress-bar.json +0 -229
- package/components/progress-circle.json +0 -132
- package/components/radio-button.json +0 -308
- package/components/radio-group.json +0 -113
- package/components/rating.json +0 -168
- package/components/scroll-zoom-bar.json +0 -82
- package/components/search-field.json +0 -346
- package/components/segmented-control.json +0 -248
- package/components/select-box.json +0 -272
- package/components/side-navigation.json +0 -320
- package/components/slider.json +0 -407
- package/components/standard-dialog.json +0 -179
- package/components/standard-panel.json +0 -83
- package/components/status-light.json +0 -334
- package/components/steplist.json +0 -294
- package/components/swatch-group.json +0 -114
- package/components/swatch.json +0 -240
- package/components/switch.json +0 -336
- package/components/tab-bar-ios.json +0 -72
- package/components/table.json +0 -435
- package/components/tabs.json +0 -253
- package/components/tag-field.json +0 -243
- package/components/tag-group.json +0 -87
- package/components/tag.json +0 -393
- package/components/takeover-dialog.json +0 -117
- package/components/text-area.json +0 -555
- package/components/text-field.json +0 -555
- package/components/thumbnail.json +0 -149
- package/components/title.json +0 -91
- package/components/toast.json +0 -156
- package/components/tooltip.json +0 -179
- package/components/tray.json +0 -32
- package/components/tree-view.json +0 -393
- package/fields/alignment.json +0 -15
- package/fields/anatomy.json +0 -15
- package/fields/color-scheme.json +0 -15
- package/fields/colorFamily.json +0 -15
- package/fields/component.json +0 -15
- package/fields/contrast.json +0 -15
- package/fields/density.json +0 -15
- package/fields/easing.json +0 -15
- package/fields/family.json +0 -15
- package/fields/motionRole.json +0 -15
- package/fields/object.json +0 -15
- package/fields/orientation.json +0 -15
- package/fields/position.json +0 -15
- package/fields/property.json +0 -15
- package/fields/scale.json +0 -15
- package/fields/scaleIndex.json +0 -15
- package/fields/shape.json +0 -15
- package/fields/size.json +0 -15
- package/fields/state.json +0 -15
- package/fields/structure.json +0 -15
- package/fields/style.json +0 -15
- package/fields/substructure.json +0 -15
- package/fields/variant.json +0 -15
- package/fields/weight.json +0 -15
package/spec/registry.md
CHANGED
|
@@ -6,15 +6,13 @@ This document defines the **design system registry**: the set of named value col
|
|
|
6
6
|
|
|
7
7
|
## What a registry is
|
|
8
8
|
|
|
9
|
-
A **registry** is a JSON file in `@adobe/design-
|
|
9
|
+
A **registry** is a JSON file in `@adobe/spectrum-design-data` (under `registry/`) that declares an ordered list of named values. Each value has at minimum an `id` (the canonical string used in token names and component files) and a `label` (a human-readable display name). Values **MAY** carry additional fields such as `description`, `aliases`, `deprecated`, and `usedIn`.
|
|
10
10
|
|
|
11
11
|
Registries are the authoritative source of truth for vocabulary validation. A validator SHOULD flag token field values that are not present in the corresponding registry (typically as a warning, not an error — see field declarations in the field catalog).
|
|
12
12
|
|
|
13
13
|
## Packaging strategy
|
|
14
14
|
|
|
15
|
-
All registries ship
|
|
16
|
-
|
|
17
|
-
**Rationale:** No external consumers currently require independent semver versioning of individual registries. A single package is cheaper to maintain, simpler to consume, and avoids the proliferation of tiny packages with coordinated versioning overhead. If independent versioning needs emerge in a future release, the split can be done with a standard deprecation window per [Evolution](evolution.md).
|
|
15
|
+
All registries ship within **`@adobe/spectrum-design-data`** under the `registry/` directory. The three semantically distinct registries described below are separate JSON files in that directory.
|
|
18
16
|
|
|
19
17
|
## Registries
|
|
20
18
|
|
|
@@ -32,7 +30,7 @@ Anatomy terms fall into three tiers:
|
|
|
32
30
|
| Composite | Another component used as a named part | `checkbox`, `close-button`, `popover`, `avatar` |
|
|
33
31
|
| Component-specific | Unique to one component | `loupe`, `gripper`, `hold-icon` |
|
|
34
32
|
|
|
35
|
-
**File:** `packages/design-
|
|
33
|
+
**File:** `packages/design-data/registry/anatomy-terms.json`\
|
|
36
34
|
**Validated by:** SPEC-020, SPEC-023, SPEC-024, SPEC-025, SPEC-035 (advisory — anatomy part `name` values SHOULD match the anatomy-terms registry)\
|
|
37
35
|
**See also:** [Taxonomy — Component anatomy vs. token objects](taxonomy.md#component-anatomy-vs-token-objects), [Anatomy format](anatomy-format.md)
|
|
38
36
|
|
|
@@ -50,7 +48,7 @@ Validates the `object` field on token name objects.
|
|
|
50
48
|
| `visual` | Visible graphic element area (may be inset from edge) |
|
|
51
49
|
| `content` | Main content area |
|
|
52
50
|
|
|
53
|
-
**File:** `packages/design-
|
|
51
|
+
**File:** `packages/design-data/registry/token-objects.json`\
|
|
54
52
|
**Validated by:** SPEC-009 (advisory — `name.object` field values SHOULD match the token-objects registry)\
|
|
55
53
|
**See also:** [Taxonomy — Token objects (styling surfaces)](taxonomy.md#token-objects-styling-surfaces)
|
|
56
54
|
|
|
@@ -60,7 +58,7 @@ Validates the `category` field on component declarations.
|
|
|
60
58
|
|
|
61
59
|
**What it contains:** Top-level categories for organizing components by purpose and interaction type. Used for documentation navigation and tooling filters.
|
|
62
60
|
|
|
63
|
-
**File:** `packages/design-
|
|
61
|
+
**File:** `packages/design-data/registry/categories.json`\
|
|
64
62
|
**Validated by:** SPEC-034 (advisory — `meta.category` field values SHOULD match the categories registry)\
|
|
65
63
|
**See also:** [Component format](component-format.md)
|
|
66
64
|
|
|
@@ -72,7 +70,7 @@ Registry IDs are scoped to their registry. The same ID **MAY** appear in multipl
|
|
|
72
70
|
|
|
73
71
|
## Other registries in the package
|
|
74
72
|
|
|
75
|
-
The following registries exist in `@adobe/design-
|
|
73
|
+
The following registries exist in `@adobe/spectrum-design-data` (under `registry/`) but are not part of the three-registry boundary defined above. They validate other token name fields and component metadata fields:
|
|
76
74
|
|
|
77
75
|
| Registry | File | Validates |
|
|
78
76
|
| ----------------- | ------------------------ | ------------------------------------ |
|
package/spec/taxonomy.md
CHANGED
|
@@ -60,19 +60,19 @@ The following concept categories are defined in Spectrum's foundation field cata
|
|
|
60
60
|
|
|
61
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).
|
|
62
62
|
|
|
63
|
-
| Category | Name object field | Answers | Description
|
|
64
|
-
| ------------- | ----------------- | --------- |
|
|
65
|
-
| Structure | `structure` | What? | Individual objects or object categories that have shared styling. Distinctly different from "components" in that they represent structures and visual patterns that can or do occur across many varieties of components.
|
|
66
|
-
| Sub-structure | `substructure` | What? | A structure within an element that should only exist within the context of its parent structure.
|
|
67
|
-
| Component | `component` | What? | Component scope when the token is component-scoped.
|
|
68
|
-
| Anatomy | `anatomy` | What? | A visible, named part of a component as defined by designers.
|
|
69
|
-
| Object | `object` | Where? | The styling surface to which a visual property is applied (e.g. background, border, edge).
|
|
70
|
-
| Property | `property` | Where? | The CSS/styling attribute or design-system abstraction being defined (e.g. color, width, padding, gap). REQUIRED — see exception in preamble. Values SHOULD come from [`property-terms.json`](../../packages/design-
|
|
71
|
-
| Orientation | `orientation` | When/Why? | The direction or order of structures and elements within a component or pattern.
|
|
72
|
-
| Position | `position` | When/Why? | The location of an object relative to another, with or without respect to directional order.
|
|
73
|
-
| Size | `size` | When/Why? | Relative terms used to create relationships and patterns of usage across multiple tokens and token types.
|
|
74
|
-
| Density | `density` | When/Why? | Options that create more or less space within or around the parts of a component.
|
|
75
|
-
| Shape | `shape` | When/Why? | Relative to the overall shape of a component (e.g. "uniform" creates a 1:1 padding ratio between horizontal and vertical padding).
|
|
63
|
+
| Category | Name object field | Answers | Description |
|
|
64
|
+
| ------------- | ----------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
65
|
+
| Structure | `structure` | What? | Individual objects or object categories that have shared styling. Distinctly different from "components" in that they represent structures and visual patterns that can or do occur across many varieties of components. |
|
|
66
|
+
| Sub-structure | `substructure` | What? | A structure within an element that should only exist within the context of its parent structure. |
|
|
67
|
+
| Component | `component` | What? | Component scope when the token is component-scoped. |
|
|
68
|
+
| Anatomy | `anatomy` | What? | A visible, named part of a component as defined by designers. |
|
|
69
|
+
| Object | `object` | Where? | The styling surface to which a visual property is applied (e.g. background, border, edge). |
|
|
70
|
+
| Property | `property` | Where? | The CSS/styling attribute or design-system abstraction being defined (e.g. color, width, padding, gap). REQUIRED — see exception in preamble. Values SHOULD come from [`property-terms.json`](../../packages/design-data/registry/property-terms.json). Anatomy parts and styling surfaces do NOT belong here — they belong in `anatomy` and `object` respectively. See [token-format.md — Name-object migration policy](token-format.md#name-object-migration-policy) for migration guidance. |
|
|
71
|
+
| Orientation | `orientation` | When/Why? | The direction or order of structures and elements within a component or pattern. |
|
|
72
|
+
| Position | `position` | When/Why? | The location of an object relative to another, with or without respect to directional order. |
|
|
73
|
+
| Size | `size` | When/Why? | Relative terms used to create relationships and patterns of usage across multiple tokens and token types. |
|
|
74
|
+
| Density | `density` | When/Why? | Options that create more or less space within or around the parts of a component. |
|
|
75
|
+
| Shape | `shape` | When/Why? | Relative to the overall shape of a component (e.g. "uniform" creates a 1:1 padding ratio between horizontal and vertical padding). |
|
|
76
76
|
|
|
77
77
|
Additional categories for variant and state are inherited from the existing name object:
|
|
78
78
|
|
|
@@ -87,10 +87,10 @@ Color tokens describe palette entries and semantic color assignments. Their name
|
|
|
87
87
|
|
|
88
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
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-
|
|
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.
|
|
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-data/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
94
|
|
|
95
95
|
**Default serialization order for color tokens:**
|
|
96
96
|
|
|
@@ -106,13 +106,13 @@ Typography tokens describe typeface attributes: family, weight, style, and numer
|
|
|
106
106
|
|
|
107
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
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-
|
|
112
|
-
| Weight | `weight` | How? | Typographic weight (e.g. `regular`, `bold`, `light`, `black`). Values come from [`typography-weights.json`](../../packages/design-
|
|
113
|
-
| Style | `style` | How? | Typographic style (e.g. `italic`, `oblique`, `normal`). Include `normal` when the token explicitly declares a normal style (e.g. a reset). Values come from [`typography-styles.json`](../../packages/design-
|
|
114
|
-
| Alignment | `alignment` | How? | Horizontal text-alignment direction (e.g. `start`, `center`, `end`). Corresponds to the CSS `text-align` axis. Values come from [`alignments.json`](../../packages/design-
|
|
115
|
-
| Scale | `scaleIndex` | Which? | Numeric size scale step (e.g. `75`, `100`, `200`). Shared with other token types; not scope-restricted.
|
|
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-data/registry/typography-families.json). |
|
|
112
|
+
| Weight | `weight` | How? | Typographic weight (e.g. `regular`, `bold`, `light`, `black`). Values come from [`typography-weights.json`](../../packages/design-data/registry/typography-weights.json). |
|
|
113
|
+
| Style | `style` | How? | Typographic style (e.g. `italic`, `oblique`, `normal`). Include `normal` when the token explicitly declares a normal style (e.g. a reset). Values come from [`typography-styles.json`](../../packages/design-data/registry/typography-styles.json). |
|
|
114
|
+
| Alignment | `alignment` | How? | Horizontal text-alignment direction (e.g. `start`, `center`, `end`). Corresponds to the CSS `text-align` axis. Values come from [`alignments.json`](../../packages/design-data/registry/alignments.json). |
|
|
115
|
+
| Scale | `scaleIndex` | Which? | Numeric size scale step (e.g. `75`, `100`, `200`). Shared with other token types; not scope-restricted. |
|
|
116
116
|
|
|
117
117
|
**Default serialization order for typography tokens:**
|
|
118
118
|
|
|
@@ -130,11 +130,11 @@ Motion tokens describe timing, easing, and animation role for UI animation. Thei
|
|
|
130
130
|
|
|
131
131
|
**NORMATIVE:** Motion tokens SHOULD include `motionRole` or `easing`. Tokens missing both are flagged by rule SPEC-043 (`domain-required-fields`, warning).
|
|
132
132
|
|
|
133
|
-
| Category | Name object field | Answers | Description
|
|
134
|
-
| ----------- | ----------------- | ------- |
|
|
135
|
-
| Motion Role | `motionRole` | What? | Semantic role of the animation (e.g. `enter`, `exit`, `transition`, `emphasis`). Values come from [`motion-roles.json`](../../packages/design-
|
|
136
|
-
| Easing | `easing` | How? | Easing curve identifier (e.g. `ease-in`, `ease-out`, `standard`). Values come from [`easing-curves.json`](../../packages/design-
|
|
137
|
-
| Duration | `scaleIndex` | Which? | Numeric duration bucket index (e.g. `100` for 100ms, `200` for 200ms). Shared with other token types; not scope-restricted.
|
|
133
|
+
| Category | Name object field | Answers | Description |
|
|
134
|
+
| ----------- | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
135
|
+
| Motion Role | `motionRole` | What? | Semantic role of the animation (e.g. `enter`, `exit`, `transition`, `emphasis`). Values come from [`motion-roles.json`](../../packages/design-data/registry/motion-roles.json). |
|
|
136
|
+
| Easing | `easing` | How? | Easing curve identifier (e.g. `ease-in`, `ease-out`, `standard`). Values come from [`easing-curves.json`](../../packages/design-data/registry/easing-curves.json). |
|
|
137
|
+
| Duration | `scaleIndex` | Which? | Numeric duration bucket index (e.g. `100` for 100ms, `200` for 200ms). Shared with other token types; not scope-restricted. |
|
|
138
138
|
|
|
139
139
|
**Default serialization order for motion tokens:**
|
|
140
140
|
|
|
@@ -229,7 +229,7 @@ Semantic fields describe identity, structure, and intent. They are used for quer
|
|
|
229
229
|
|
|
230
230
|
**NORMATIVE:** Semantic field values are validated against their declared vocabulary registry with the severity specified in the field declaration (typically **advisory** — warning, not error). Values not in the registry are permitted but flagged.
|
|
231
231
|
|
|
232
|
-
Semantic fields are those declared with `kind: "semantic"` in the field catalog.
|
|
232
|
+
Semantic fields are those declared with `kind: "semantic"` in the field catalog. The authoritative list for any given design system is determined by its field catalog declarations (see `packages/design-data/fields/` for Spectrum's catalog).
|
|
233
233
|
|
|
234
234
|
### Mode-set fields
|
|
235
235
|
|
|
@@ -237,7 +237,7 @@ Mode-set fields represent axes of variation that drive the [cascade](cascade.md)
|
|
|
237
237
|
|
|
238
238
|
**NORMATIVE:** Mode-set field values are validated against declared [mode set](mode-sets.md) modes with **strict** severity (error). An invalid mode value would silently fail to match any context during cascade resolution.
|
|
239
239
|
|
|
240
|
-
Mode-set fields are those declared with `kind: "mode-set"` in the field catalog, plus any additional mode set keys from the dataset's [mode set declarations](mode-sets.md).
|
|
240
|
+
Mode-set fields are those declared with `kind: "mode-set"` in the field catalog, plus any additional mode set keys from the dataset's [mode set declarations](mode-sets.md). The authoritative list for any given design system is determined by its field catalog and mode-set declarations (see `packages/design-data/fields/` for Spectrum's catalog).
|
|
241
241
|
|
|
242
242
|
See [Mode Sets](mode-sets.md) for mode set declarations, modes, and defaults.
|
|
243
243
|
|
|
@@ -281,7 +281,7 @@ package to avoid bumping the tokens version on every taxonomy change.
|
|
|
281
281
|
| ----------------- | ----------------------------------- | -------------------------------------------------------------------------------- |
|
|
282
282
|
| Token source data | `packages/tokens/src/*.json` | `$schema`, `value`, `uuid`, `sets`, … — no `name` field |
|
|
283
283
|
| Taxonomy sidecar | `packages/token-names/names/*.json` | `{ "<slug>": { property, colorFamily, … }, … }` — one file per token source file |
|
|
284
|
-
| Field definitions | `packages/design-data
|
|
284
|
+
| Field definitions | `packages/design-data/fields/` | Authoritative field catalog with scope and type |
|
|
285
285
|
|
|
286
286
|
The sidecar package (`@adobe/token-names`) is **private** (not published to npm).
|
|
287
287
|
Its delivery format for downstream consumers is TBD.
|
package/spec/token-format.md
CHANGED
|
@@ -98,7 +98,15 @@ The table below lists all semantic fields. Fields marked with a scope are domain
|
|
|
98
98
|
|
|
99
99
|
### Alias (`$ref`)
|
|
100
100
|
|
|
101
|
-
When **`$ref`** is present, the token is an **alias**. The value **MUST** be a non-empty string
|
|
101
|
+
When **`$ref`** is present, the token is an **alias**. The value **MUST** be a non-empty string. In cascade format the value is the **UUID** of the target token (rename-proof, resolved via the graph's `uuid_index`). In the legacy transition format the value is the target token's kebab-case name (serialized legacy slug). Both forms are accepted; resolution rules are Layer 2 (see rule `SPEC-001` in `rules/rules.yaml`).
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
// Cascade canonical form (recommended) — the UUID is stable across renames.
|
|
105
|
+
{ "name": { "property": "accent-background-color", "state": "default", "colorScheme": "dark" },
|
|
106
|
+
"$schema": "…/alias.json",
|
|
107
|
+
"$ref": "87a2c8f0-54fd-4939-8f42-3124fde1e49e",
|
|
108
|
+
"uuid": "f24eb871-6419-4cef-88a2-cca8548ae31e" }
|
|
109
|
+
```
|
|
102
110
|
|
|
103
111
|
### Literal `value`
|
|
104
112
|
|
|
@@ -179,7 +187,7 @@ No string-named token may remain in a conforming dataset after the `2.0.0` cut w
|
|
|
179
187
|
|
|
180
188
|
The `property` field on a name object is the **CSS/styling attribute or design-system abstraction** being defined — not an anatomy part, not a styling surface, and not a legacy compound name string. Not all valid values are CSS property identifiers; design-system abstractions (e.g. `padding-horizontal`, `overlay-color`, `size`) are permitted.
|
|
181
189
|
|
|
182
|
-
**NORMATIVE:** Values for `property` **SHOULD** come from the [`property-terms`](../../packages/design-
|
|
190
|
+
**NORMATIVE:** Values for `property` **SHOULD** come from the [`property-terms`](../../packages/design-data/registry/property-terms.json) registry. Non-registry values emit an advisory warning (SPEC-009 applied to the `property` field).
|
|
183
191
|
|
|
184
192
|
Examples of **valid** `property` values: `color`, `background-color`, `border-radius`, `font-size`, `gap`, `opacity`.
|
|
185
193
|
|
|
@@ -268,7 +276,7 @@ Within a composite value, a string sub-value **MAY** be an **inline alias**: a r
|
|
|
268
276
|
}
|
|
269
277
|
```
|
|
270
278
|
|
|
271
|
-
**NORMATIVE:** In legacy format, inline aliases use the syntax `{token-name}` (curly-brace-wrapped token property name). In cascade format,
|
|
279
|
+
**NORMATIVE:** In legacy format, inline aliases use the syntax `{token-name}` (curly-brace-wrapped token property name). In cascade format, top-level `$ref` aliases use a UUID (canonical, rename-proof); inline composite aliases within `value` objects remain `{token-name}` for backward compatibility. UUID-based inline composite aliases are reserved for a future spec version.
|
|
272
280
|
|
|
273
281
|
**NORMATIVE:** Inline aliases within composite values are subject to alias resolution rules. Validators **MUST** resolve inline aliases and report errors for missing targets (SPEC-014), type mismatches (SPEC-015), and circular references (SPEC-003, extended).
|
|
274
282
|
|