@adobe/design-data-spec 4.11.1 → 4.12.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/design-data-spec",
3
- "version": "4.11.1",
3
+ "version": "4.12.1",
4
4
  "description": "Design Data Specification — prose, JSON Schemas, rule catalog, and conformance fixtures for the design data format",
5
5
  "type": "module",
6
6
  "repository": {
@@ -154,21 +154,25 @@
154
154
  }
155
155
  },
156
156
  "markers": {
157
- "description": "Numbered markers 1..n, one per group of token rows that share a recipe property template. `part` is the recipe part the marker sits on, or null when no recipe binding fits.",
157
+ "description": "Numbered markers 1..n, one per group of token rows that share a recipe property template. `part` is the recipe part the marker sits on, or null when no recipe binding fits. `drawn` is false when the visual has no node for the marker (no part, or the recipe does not draw it); its number stays on the rows and views note it as not drawn.",
158
158
  "type": "array",
159
159
  "items": {
160
160
  "type": "object",
161
- "required": ["n", "part", "label"],
161
+ "required": ["n", "part", "label", "drawn"],
162
162
  "properties": {
163
163
  "n": { "type": "integer", "minimum": 1 },
164
164
  "part": { "type": ["string", "null"] },
165
- "label": { "type": "string" }
165
+ "label": {
166
+ "description": "The group's relationship property with its size part dropped (the recipe's `{sizeIndex}`/`{size}` template without the placeholder). Distinct within a block.",
167
+ "type": "string"
168
+ },
169
+ "drawn": { "type": "boolean" }
166
170
  },
167
171
  "additionalProperties": false
168
172
  }
169
173
  },
170
174
  "measurements": {
171
- "description": "Scene measurements the block shows on the Layout page: those whose relationship context is the block title (kinds `height`, `width`, `padding`, `gap`, `radius`, `border`, `focus-thickness`, `focus-gap`, `press`). A block renders in the states and options its bindings need (a focus ring in `keyboard-focus`, a pressed scale in `down`). `index` points into scene.measurements and `label` is the relationship property.",
175
+ "description": "Scene measurements the block shows on the Layout page: those whose relationship context is the block title (kinds `height`, `width`, `padding`, `gap`, `radius`, `border`, `focus-thickness`, `focus-gap`, `press`). A block renders in the states and options its bindings need (a focus ring in `keyboard-focus`, a pressed scale in `down`). `index` points into scene.measurements and `label` is the bound token's name, the same name the token rows show (the relationship property only when no token resolves).",
172
176
  "type": "array",
173
177
  "items": {
174
178
  "type": "object",
@@ -185,7 +185,7 @@ These record the research behind this draft and are not normative.
185
185
 
186
186
  **R1 — Playground (Domino) fit: reference only for now.** Domino models component *instances* (`componentType`, props, `items`/`itemsOrder`, slots). It has no geometry, paint, layout or token-binding concepts, no JSON Schema for the node envelope, and no document-format versioning. Its `0react-spectrum/s2` schemas are generated from React Spectrum, and prop names (`isQuiet`, `isDisabled`, `staticColor`) mostly match ours. The repository is private (`"private": true`; MIT metadata but no LICENSE file), so a public spec must not depend on its schemas. Its Figma plugin maps Figma → Domino, the opposite of our Figma output. Decision: keep recipes independent. A render request can later be converted to or from a Domino instance by an adapter, because option names align. Revisit when Domino publishes a versioned envelope schema.
187
187
 
188
- **R2 — Text measurement: approximate metrics with Source Sans 3.** Adobe Clean is proprietary and cannot be redistributed in this repository. Source Sans 3 (SIL OFL) is the open fallback. Renderers ship a width table for the fallback font and emit SVG `<text>` with the stack `adobe-clean-spectrum-vf, Adobe Clean, Source Sans 3, sans-serif`, so viewers with Adobe Clean available see it. Overlay positions use the measured width and may differ slightly from the viewer's font. SVG output maps font-weight names from tokens (`medium`, `bold`, and so on) to numeric weights. Exact shaping (rustybuzz or similar) is deferred until a licensed-font story exists. Outlining text to paths is **not** used for SVG, since it would require the proprietary font. **RECOMMENDED:** a page that embeds the SVG inline loads Adobe Clean through its own web font (for example the Typekit kit the docs site uses, family `adobe-clean-spectrum-vf`). Standalone `.svg` files, SVG used as an `<img>` or CSS background, and rasterized PNG output cannot load web fonts. They use the installed font or fall back to Source Sans 3, so exports **MAY** look slightly different from the live view. Outlining text at export time with a locally licensed font is a possible later option.
188
+ **R2 — Text measurement: approximate metrics with Source Sans 3.** Adobe Clean is proprietary and cannot be redistributed in this repository. Source Sans 3 (SIL OFL) is the open fallback. Renderers ship a width table for the fallback font and emit SVG `<text>` with the stack `adobe-clean-spectrum-vf, Adobe Clean, 'Source Sans 3', sans-serif`, so viewers with Adobe Clean available see it. A family name that is not a valid CSS identifier sequence (`Source Sans 3`: a word starting with a digit) **MUST** be quoted, because one unquoted invalid name makes the browser drop the whole `font-family` list and render serif; a family bound by a recipe is emitted quoted and ahead of this stack. Overlay positions use the measured width and may differ slightly from the viewer's font. SVG output maps font-weight names from tokens (`medium`, `bold`, and so on) to numeric weights. Exact shaping (rustybuzz or similar) is deferred until a licensed-font story exists. Outlining text to paths is **not** used for SVG, since it would require the proprietary font. **RECOMMENDED:** a page that embeds the SVG inline loads Adobe Clean through its own web font (for example the Typekit kit the docs site uses, family `adobe-clean-spectrum-vf`). Standalone `.svg` files, SVG used as an `<img>` or CSS background, and rasterized PNG output cannot load web fonts. They use the installed font or fall back to Source Sans 3, so exports **MAY** look slightly different from the live view. Outlining text at export time with a locally licensed font is a possible later option.
189
189
 
190
190
  **R3 — Layout: minimal flex first.** The pilot box model needs row direction, centering, gap, padding and one absolutely placed child. A purpose-built layout of that size avoids a dependency and keeps WASM small. Revisit `taffy` when text-field (wrapping, stacked label and help text) is piloted.
191
191