stylegallery 0.1.6 → 0.1.7
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/DOMAINS.md +4 -4
- package/GOVERNANCE.md +1 -1
- package/LICENSE +28 -0
- package/LICENSE-DOCS +42 -0
- package/NOTICE +38 -0
- package/README.md +25 -6
- package/consumer-reference/agent-native/README.md +7 -7
- package/consumer-reference/agent-native/v2/admission-policy.json +171 -1
- package/consumer-reference/agent-native/v2/material-registry.json +1 -1
- package/consumer-reference/agent-native/v2/schema/admission-policy.schema.json +2 -2
- package/design-engineering/component-contract.md +19 -3
- package/design-engineering/decision-tree.md +1 -0
- package/design-engineering/index.md +48 -0
- package/design-engineering/loading-and-feedback.md +91 -0
- package/design-engineering/native-interaction-contracts.md +94 -0
- package/design-engineering/state-management/decision-tree.md +60 -0
- package/design-engineering/state-management/index.md +61 -0
- package/design-engineering/state-management/patterns/derived-state.md +85 -0
- package/design-engineering/state-management/patterns/draft-and-baseline.md +86 -0
- package/design-engineering/state-management/patterns/id-selection.md +85 -0
- package/design-engineering/state-management/patterns/identity-reset.md +89 -0
- package/design-engineering/state-management/patterns/latest-request-wins.md +94 -0
- package/design-engineering/state-management/patterns/optimistic-overlay.md +98 -0
- package/design-engineering/state-management/patterns/single-flight.md +92 -0
- package/design-engineering/state-management/patterns/single-owner.md +89 -0
- package/design-engineering/state-management/patterns/submitted-snapshot.md +107 -0
- package/design-engineering/state-management/patterns/unsaved-navigation.md +100 -0
- package/design-engineering/state-management/patterns/url-state.md +96 -0
- package/design-engineering/state-management/patterns/versioned-restore.md +95 -0
- package/design-engineering/state-management/recipes/delete-undo.md +65 -0
- package/design-engineering/state-management/recipes/index.md +64 -0
- package/design-engineering/state-management/recipes/multi-step-form.md +65 -0
- package/design-engineering/state-management/recipes/search-detail.md +65 -0
- package/design-engineering/state-management/recipes/settings-save.md +64 -0
- package/design-engineering/state-management/state-brief.md +83 -0
- package/design-engineering/state-management/verification.md +65 -0
- package/design-engineering/text-input-and-internationalization.md +91 -0
- package/design-engineering/worked-examples.md +2 -0
- package/design-terminology/conflict-cases.md +50 -7
- package/design-terminology/index.md +6 -0
- package/design-terminology/interaction-semantics.md +87 -0
- package/design-terminology/source-vocabularies.md +17 -1
- package/design-terminology/token-semantics.md +90 -0
- package/design-terminology/typography-semantics.md +86 -0
- package/log.md +29 -0
- package/motion/accessible-motion.md +90 -0
- package/motion/index.md +7 -0
- package/motion/interaction-recipes.md +8 -2
- package/motion/interruption-and-retargeting.md +90 -0
- package/motion/observed-choreography.md +73 -0
- package/motion/rendering-and-performance.md +89 -0
- package/package.json +60 -8
- package/platform-guides/adaptive-navigation.md +85 -0
- package/platform-guides/index.md +6 -0
- package/platform-guides/input-and-focus.md +91 -0
- package/platform-guides/preferences-and-accessibility.md +90 -0
- package/scripts/compiler/README.md +112 -0
- package/scripts/compiler/cli.mjs +51 -0
- package/scripts/compiler/mcp.mjs +53 -0
- package/scripts/compiler/operations.mjs +70 -0
- package/scripts/compiler/runtime.mjs +156 -0
- package/scripts/sg-entry.mjs +20 -0
- package/scripts/sg-server.mjs +20 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: State Management Brief
|
|
4
|
+
description: Record authority, transitions, effects, lifetime, and acceptance cases before implementation.
|
|
5
|
+
domain: design-engineering
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# State Management Brief
|
|
11
|
+
|
|
12
|
+
## Repository Boundary
|
|
13
|
+
|
|
14
|
+
This is a consumer planning template within Design Engineering. It supplements the [Component Contract](../component-contract.md); it is not a profile schema or evidence record.
|
|
15
|
+
|
|
16
|
+
## Reusable Method
|
|
17
|
+
|
|
18
|
+
For each independently owned value, complete one inventory row. Avoid a single status enum that conflates validation, request progress, persisted revision, and selection.
|
|
19
|
+
|
|
20
|
+
| Field | Required answer |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| User task | Action and observable result |
|
|
23
|
+
| Authoritative source | Server, route, form, component, or session owner |
|
|
24
|
+
| State shape | Valid values, initial value, identity and revision |
|
|
25
|
+
| Derived values | Inputs, equality, and cache invalidation if any |
|
|
26
|
+
| Writes | Accepted intents, payloads, rejection and normalization |
|
|
27
|
+
| Transitions | Event + guard → next state + effect |
|
|
28
|
+
| Lifetime | Creation, identity switch, navigation, disposal and cleanup |
|
|
29
|
+
| Async policy | Request identity, duplicates, stale results, uncertainty |
|
|
30
|
+
| Persistence | Stored fields, scope, version, expiry, restoration conflicts |
|
|
31
|
+
| Recovery | Retry, discard, reconciliation and focus destination |
|
|
32
|
+
| Composition | Selected patterns and any rejected alternatives |
|
|
33
|
+
| Evidence | Failure trace, expected result, runtime, actual result |
|
|
34
|
+
|
|
35
|
+
### Worked Brief: Editing A Display Name
|
|
36
|
+
|
|
37
|
+
| Value | Owner | Lifetime | Write rule |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| Acknowledged name and revision | Server; cache holds observation | Account session | Matching authoritative response |
|
|
40
|
+
| Draft name | Settings form | Until discard, accepted save, or guarded departure | User edit |
|
|
41
|
+
| Dirty | Derived | Same as form | Compare draft to acknowledged baseline |
|
|
42
|
+
| Submitted name and request ID | Save operation | One attempt | Capture before starting effect |
|
|
43
|
+
| Pending destination | Router guard | Confirmation decision | Latest attempted destination |
|
|
44
|
+
|
|
45
|
+
Invariant: acknowledging A never marks later draft B saved. Failure trace: edit A → submit → edit B → acknowledge A. Expected result: A is the baseline; B remains visible and dirty. Rejected alternative: binding fields directly to the cache loses a reliable Cancel target.
|
|
46
|
+
|
|
47
|
+
### Implementation Handoff
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
domain: design-engineering
|
|
51
|
+
state_patterns: [draft-and-baseline, submitted-snapshot, unsaved-navigation]
|
|
52
|
+
state_owner: settings form and save operation
|
|
53
|
+
persistence_owner: consumer backend
|
|
54
|
+
consumer_reference: not_applicable
|
|
55
|
+
consumer_reference_reason: This blank planning example selects no consumer profile or conformance record.
|
|
56
|
+
observed_results: not_run
|
|
57
|
+
remaining_evidence: consumer runtime, request traces, keyboard and focus recovery
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Opinionated Guidance
|
|
61
|
+
|
|
62
|
+
An unresolved owner is an implementation question, not a reason to introduce more booleans. Write product choices such as discard policy explicitly; do not hide them inside effects.
|
|
63
|
+
|
|
64
|
+
## Platform-Specific Guidance
|
|
65
|
+
|
|
66
|
+
Include router, cache, framework, and persistence adapter versions only in the consumer handoff where they affect behavior. Check IME input and native form submission for editable fields.
|
|
67
|
+
|
|
68
|
+
## Unsupported Absolutes
|
|
69
|
+
|
|
70
|
+
Completing this template does not establish executed evidence or backend persistence. A request token alone cannot resolve concurrent server edits.
|
|
71
|
+
|
|
72
|
+
## Verification Contract
|
|
73
|
+
|
|
74
|
+
A second reader should identify every write owner and execute the failure trace without inventing policy. Record normal, failed, interrupted, and identity-changing cases before implementation.
|
|
75
|
+
|
|
76
|
+
## Source, License, And Attribution
|
|
77
|
+
|
|
78
|
+
Locally authored synthesis and examples. No upstream implementation is copied. These experimental contracts describe consumer-owned behavior; review when a failure, ownership change, or platform change invalidates an assumption.
|
|
79
|
+
|
|
80
|
+
## IA Navigation
|
|
81
|
+
|
|
82
|
+
Parent: [State Management](index.md).
|
|
83
|
+
Next: [Continue the state management route](verification.md).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: State Management Verification Matrix
|
|
4
|
+
description: Test event ordering, failure recovery, navigation, and identity boundaries separately from UI presentation.
|
|
5
|
+
domain: design-engineering
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# State Management Verification Matrix
|
|
11
|
+
|
|
12
|
+
## Repository Boundary
|
|
13
|
+
|
|
14
|
+
This matrix verifies consumer behavior under Design Engineering. Shared [quality gates](../../quality/index.md) own evidence admissibility. Passing a local model does not promote a domain or certify a consumer.
|
|
15
|
+
|
|
16
|
+
## Reusable Method
|
|
17
|
+
|
|
18
|
+
Start with the selected pattern's invariant. Use controlled promises or an injected transport to choose completion order. Assert both displayed state and effect count or persistence payload; a screenshot alone cannot show which snapshot was saved.
|
|
19
|
+
|
|
20
|
+
| Dimension | Required stress when applicable | Observable |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| Ordering | Start A/B; resolve B/A; stale error after new success | Current result, status, and error remain correlated |
|
|
23
|
+
| Mutation | Edit during save; normalized result; version conflict | Draft, baseline, submitted payload, revision |
|
|
24
|
+
| Duplication | Keyboard + pointer + another caller | Declared count and outcome sharing |
|
|
25
|
+
| Failure | Definitive rejection versus unknown write outcome | Draft retained; reconciliation before unsafe retry |
|
|
26
|
+
| Lifetime | Dispose; A → B → A; logout | No old-generation updates or scope leakage |
|
|
27
|
+
| Navigation | Back, Forward, reload, deep link, canceled departure | URL, visible controls, draft, and selection agree |
|
|
28
|
+
| Persistence | Corrupt version, wrong scope, unavailable storage, delayed restore | Valid defaults and preserved newer edits |
|
|
29
|
+
| Accessibility | Pending, error, empty, removed invoker | Announcements and logical focus recovery |
|
|
30
|
+
| Composition | Filter while deleting; edit during save-and-leave | Combined invariants survive interleaving |
|
|
31
|
+
|
|
32
|
+
### Executable Local Coverage
|
|
33
|
+
|
|
34
|
+
From a repository checkout, `npm run test:state-management` extracts and executes the standalone `js` block from each of the 12 pattern pages in an isolated Node process. The examples assert model outcomes for ownership, projections, selection, drafts, save snapshots, navigation decisions, stale completions, duplicate effects, optimistic recovery, URL parsing, identity generations, and restore validation.
|
|
35
|
+
|
|
36
|
+
The four recipes declare integration acceptance sequences; they are not runnable browser fixtures. Existing [Interaction Lab](../../examples/domain-interactions/README.md) is a separate prototype with its own evidence scope. New recipe acceptance remains unexecuted until adapted to a consumer.
|
|
37
|
+
|
|
38
|
+
### Evidence Record
|
|
39
|
+
|
|
40
|
+
Record source revision, runtime, selected pattern/recipe, initial state, event sequence, submitted payload/effect count, expected state, actual state, and remaining limitations. Label unrun cases `not_run`; separate a model assertion from a browser observation and a server acknowledgement.
|
|
41
|
+
|
|
42
|
+
## Opinionated Guidance
|
|
43
|
+
|
|
44
|
+
Use deterministic event ordering instead of sleeps. Test the stale failure path as well as stale success, and inspect cleanup/finally paths that can accidentally clear a newer pending operation.
|
|
45
|
+
|
|
46
|
+
## Platform-Specific Guidance
|
|
47
|
+
|
|
48
|
+
Run browser navigation, focus, assistive-technology announcements, and storage failure checks in the actual target environment. Node URL and reducer examples cannot certify those integrations.
|
|
49
|
+
|
|
50
|
+
## Unsupported Absolutes
|
|
51
|
+
|
|
52
|
+
A green model suite does not prove race freedom under every interleaving, real persistence, or accessibility. Synthetic transports do not establish server idempotency.
|
|
53
|
+
|
|
54
|
+
## Verification Contract
|
|
55
|
+
|
|
56
|
+
For every consumer claim, identify a matching executed case or explicitly list missing evidence. Revisit the matrix when a real failure is not representable by its dimensions.
|
|
57
|
+
|
|
58
|
+
## Source, License, And Attribution
|
|
59
|
+
|
|
60
|
+
Locally authored synthesis and examples. No upstream implementation is copied. These experimental contracts describe consumer-owned behavior; review when a failure, ownership change, or platform change invalidates an assumption.
|
|
61
|
+
|
|
62
|
+
## IA Navigation
|
|
63
|
+
|
|
64
|
+
Parent: [State Management](index.md).
|
|
65
|
+
Next: [Continue the state management route](recipes/index.md).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Text Input And Internationalization
|
|
4
|
+
description: Design composition-aware editing, explicit text units, bidirectional content, and locale-bound presentation without corrupting user input.
|
|
5
|
+
domain: design-engineering
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
reviewed_on: 2026-09-21
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Text Input And Internationalization
|
|
12
|
+
|
|
13
|
+
Primary role: multilingual text interaction and verification guide.
|
|
14
|
+
|
|
15
|
+
## Repository Boundary
|
|
16
|
+
|
|
17
|
+
This guide owns text editing and product-data decisions. Layout owns spatial constraints; a translation or input method does not authorize copying product typography into reusable Layout CSS. Browser text measurement is not proof that an editor preserves user intent.
|
|
18
|
+
|
|
19
|
+
## Reusable Method
|
|
20
|
+
|
|
21
|
+
Declare three contracts before implementing formatting: what the user can edit, what the application stores, and what it displays. Name the unit of any limit or selection offset. Then inventory composition, paste, autofill, correction, undo, direction, and locale changes. An event sequence from one Latin keyboard is a narrow sample.
|
|
22
|
+
|
|
23
|
+
### Source Findings
|
|
24
|
+
|
|
25
|
+
| Source | Bounded finding | Design consequence |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [UI Events](https://www.w3.org/TR/uievents/#events-compositionevents) | Composition has its own event lifecycle; `isComposing` identifies events within a composition session. | Do not treat every intermediate edit as a committed command. |
|
|
28
|
+
| [Input Events Level 2](https://www.w3.org/TR/input-events-2/) | Input types describe edit intentions. The draft distinguishes cancelability during IME composition. | Inspect actual events; a universal keydown filter cannot govern every edit path. |
|
|
29
|
+
| [Unicode Text Segmentation, UAX #29](https://www.unicode.org/reports/tr29/) | Grapheme clusters approximate user-perceived characters; boundaries are distinct from code points and words. | State whether a limit counts bytes, code units, code points, or grapheme clusters. |
|
|
30
|
+
| [ECMA-402 Segmenter](https://tc39.es/ecma402/#segmenter-objects) | `Intl.Segmenter` exposes locale-sensitive segmentation at named granularities. | Name locale and granularity when using segmentation in a UI. |
|
|
31
|
+
| [W3C bidirectional markup guidance](https://www.w3.org/International/questions/qa-html-dir) | HTML direction metadata and isolation help mixed-direction content retain its intended ordering. | Treat document direction and inserted user text separately. |
|
|
32
|
+
| [Accessible Authentication explanation](https://www.w3.org/WAI/WCAG22/Understanding/accessible-authentication-minimum.html) | WCAG 2.2's AA criterion limits required cognitive-function tests, with specified alternatives and assistance. | Do not casually remove paste or password-manager assistance from an authentication flow. |
|
|
33
|
+
|
|
34
|
+
Sources were inspected 2026-09-21. UI/Input Events and ECMA-402 publication states must be read as labeled; a draft API description is not a claim that every target implements it identically. UAX #29 has versioned rules, so record the Unicode/runtime boundary for a reproducible segmentation claim.
|
|
35
|
+
|
|
36
|
+
### Worked Scenario: Korean Search With Suggestions
|
|
37
|
+
|
|
38
|
+
The user enters a Korean name, navigates candidates, commits composition, and then submits a search. Product state distinguishes the editable text, composition status, selected suggestion identity, and submitted query.
|
|
39
|
+
|
|
40
|
+
Local policy: preserve the browser's in-progress composition. Do not move focus, replace the input node, run destructive formatting, or submit the form merely because a command key arrived during composition. Commit-driven search is a product choice; live preview during composition needs a separate decision and stale-result policy.
|
|
41
|
+
|
|
42
|
+
| Event or condition | Proposed responsibility | Failure it prevents |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| Composition starts | Keep the editing node and draft stable. | Rerendering discards the input method's active composition. |
|
|
45
|
+
| Intermediate input | Retain the edit without treating a candidate as the submitted query. | A provisional syllable becomes an unintended request or selection. |
|
|
46
|
+
| Candidate confirmation | Let the input method complete its edit before interpreting a separate application command. | Enter both confirms composition and submits unexpectedly. |
|
|
47
|
+
| Suggestions return out of order | Match them to current query intent. | An old response replaces suggestions for the current text. |
|
|
48
|
+
| User presses Escape | Resolve input-method, popup, and outer-surface ownership deliberately. | One key cancels composition, closes the popup, and closes the editor. |
|
|
49
|
+
|
|
50
|
+
The exact native event order is a target observation, not prescribed here. Test the real IME in each supported browser/OS; synthetic composition events do not recreate the operating system's input method. Use [latest request wins](state-management/patterns/latest-request-wins.md) for replaceable reads.
|
|
51
|
+
|
|
52
|
+
### Text Units And Limits
|
|
53
|
+
|
|
54
|
+
For a visible “characters remaining” count, decide what users should perceive as one unit, then compare that policy with the backend limit. A grapheme count cannot guarantee that a byte-limited service accepts the value. Show the relevant limit rather than truncating silently after submission.
|
|
55
|
+
|
|
56
|
+
Use a corpus containing Hangul composition, a base letter plus combining mark, emoji sequences, an empty value, pasted line breaks, and a long unbroken identifier. Verify counters, truncation, deletion, selection restoration, and round trips. A correct count with corrupted cursor placement is still an editing failure.
|
|
57
|
+
|
|
58
|
+
Formatting belongs at a declared boundary. If a field needs grouping separators, preserve an editable representation and caret policy. A localized display string is not automatically a canonical stored number or date. Decide how incomplete input, ambiguous separators, and locale changes are resolved before adding automatic reformatting.
|
|
59
|
+
|
|
60
|
+
### Direction And Mixed Content
|
|
61
|
+
|
|
62
|
+
Set the document's language and base direction intentionally. Isolate inserted names, identifiers, and other independently directed text where needed; test punctuation and adjacent controls as well as the text itself. CSS alignment alone cannot establish the semantic direction of user data.
|
|
63
|
+
|
|
64
|
+
Product tests should include an RTL name beside an LTR identifier, paired punctuation, numerals, and a trailing action. Preserve logical reading order while the Layout owner chooses logical spacing and containment.
|
|
65
|
+
|
|
66
|
+
## Opinionated Guidance
|
|
67
|
+
|
|
68
|
+
Preserve raw editing intent until a clear commit boundary. Prefer a reversible validation message over eager rewriting that the user cannot undo. Store stable identity separately from the localized label of a suggestion.
|
|
69
|
+
|
|
70
|
+
## Platform-Specific Guidance
|
|
71
|
+
|
|
72
|
+
Keyboard layouts, IMEs, dictation, autofill, and virtual keyboards can take different event paths. Record OS, browser, input method, locale, and assistive technology instead of a generic “mobile tested.” For typography and scaling, use [Preferences And Accessibility](../platform-guides/preferences-and-accessibility.md).
|
|
73
|
+
|
|
74
|
+
## Unsupported Absolutes
|
|
75
|
+
|
|
76
|
+
One code point is not necessarily one perceived character. A keypress is not the only way to edit text. A segmentation API is not a locale-aware parser. Programmatically dispatched events are not evidence that a native IME works.
|
|
77
|
+
|
|
78
|
+
## Verification Contract
|
|
79
|
+
|
|
80
|
+
The proposed cases cover real composition, candidate selection, paste, undo/redo, replacement selection, autofill, server rejection, mixed direction, and locale change with an unfinished draft. Bind observed input and submitted data to the same scenario; independently inspect the accepted backend value where that claim matters.
|
|
81
|
+
|
|
82
|
+
Record both intended and observed event/selection outcomes, without storing private user input in diagnostic artifacts. The examples above are test data proposals; no IME, browser, or backend execution is claimed. Re-review after editor, formatter, runtime, or locale-policy changes.
|
|
83
|
+
|
|
84
|
+
## Source, License, And Attribution
|
|
85
|
+
|
|
86
|
+
Locally authored synthesis of the linked primary sources, inspected 2026-09-21. No upstream examples are reproduced. `consumer_reference: not_applicable` because no consumer editor record is selected.
|
|
87
|
+
|
|
88
|
+
## IA Navigation
|
|
89
|
+
|
|
90
|
+
Parent: [Design Engineering](index.md).
|
|
91
|
+
Next: [Loading And Feedback](loading-and-feedback.md).
|
|
@@ -21,6 +21,8 @@ The separate [Interaction Lab](../examples/domain-interactions/README.md) implem
|
|
|
21
21
|
|
|
22
22
|
Choose a matching user task, adapt its state ownership through the [Component Contract](component-contract.md), and execute the listed failure cases in the consuming application. The decision is incomplete until expected and actual results are recorded separately.
|
|
23
23
|
|
|
24
|
+
The [State Management recipes](state-management/recipes/index.md) expand these tasks into explicit pattern stacks and substitution rules, including a multi-step form. These existing scenarios remain at their original anchors.
|
|
25
|
+
|
|
24
26
|
## Settings With Explicit Save
|
|
25
27
|
|
|
26
28
|
Task: edit preferences, inspect changes, and save intentionally. Compose the [SaaS Settings recipe](../recipes/saas-settings.md); let its selected patterns own page structure and scrolling. The form owns the editable draft, the operation owns the submitted snapshot, and persistence determines success.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: Domain Guide
|
|
3
3
|
title: Cross-System Term Cases
|
|
4
|
-
description: Directly sourced terms and scoped relations for
|
|
4
|
+
description: Directly sourced terms and scoped relations for values, token resolution, interaction semantics, typography, components, and historical formats.
|
|
5
5
|
domain: design-terminology
|
|
6
6
|
lifecycle: experimental
|
|
7
7
|
---
|
|
@@ -12,11 +12,11 @@ Primary role: applied cross-system term relation record.
|
|
|
12
12
|
|
|
13
13
|
## Repository Boundary
|
|
14
14
|
|
|
15
|
-
This page applies the typed relation model to recorded term records and conflict scenarios. It does not rename StyleGallery's own terms, and its relations are working judgments with boundaries, not claims that one source's definition is correct. V0.1 records these as Markdown; the structured registry is a promotion prerequisite.
|
|
15
|
+
This page applies the [typed relation model](relation-types.md) to recorded term records and conflict scenarios. It does not rename StyleGallery's own terms, and its relations are working judgments with boundaries, not claims that one source's definition is correct. V0.1 records these as Markdown; the structured registry is a promotion prerequisite.
|
|
16
16
|
|
|
17
17
|
## Reusable Method
|
|
18
18
|
|
|
19
|
-
1. Name the sources in tension and the
|
|
19
|
+
1. Name the sources in tension and the terms or concepts being compared.
|
|
20
20
|
2. Record each side as a term record with source, kind, concept, status, and scope.
|
|
21
21
|
3. Assign one relation type per pair per explicit scope and declare its direction.
|
|
22
22
|
4. Write the non-equivalence boundary: where substitution breaks.
|
|
@@ -30,13 +30,27 @@ This page applies the typed relation model to recorded term records and conflict
|
|
|
30
30
|
| `figma.mode` | Mode | [Figma](https://help.figma.com/hc/en-us/articles/14506821864087-Overview-of-variables-collections-and-modes) (`design-tool`) | value-context | current | values selected within a collection | 2026-09-08 |
|
|
31
31
|
| `figma.collection` | Collection | [Figma](https://help.figma.com/hc/en-us/articles/14506821864087-Overview-of-variables-collections-and-modes) (`design-tool`) | variable-organization | current | collection containing variables and modes | 2026-09-08 |
|
|
32
32
|
| `figma.component` | Component | [Figma](https://help.figma.com/hc/en-us/articles/360038662654-Guide-to-components-in-Figma) (`design-tool`) | tool-instance-model | current | reusable design object and its instances | 2026-09-08 |
|
|
33
|
-
| `dtcg.token` | Token | [DTCG](https://www.w3.org/community/reports/design-tokens/CG-FINAL-format-20251028/#design-token) (`specification`) | interchange-record | current | Format Module 2025.10 | 2026-09-
|
|
34
|
-
| `dtcg.group` | Group | [DTCG](https://www.w3.org/community/reports/design-tokens/CG-FINAL-format-20251028/#groups) (`specification`) | token-organization | current | Format Module 2025.10 | 2026-09-
|
|
33
|
+
| `dtcg.token` | Token | [DTCG](https://www.w3.org/community/reports/design-tokens/CG-FINAL-format-20251028/#design-token) (`specification`) | interchange-record | current | Format Module 2025.10 | 2026-09-21 |
|
|
34
|
+
| `dtcg.group` | Group | [DTCG](https://www.w3.org/community/reports/design-tokens/CG-FINAL-format-20251028/#groups) (`specification`) | token-organization | current | Format Module 2025.10 | 2026-09-21 |
|
|
35
35
|
| `dtcg.token.draft2` | Token | [DTCG](https://www.designtokens.org/tr/second-editors-draft/format/#design-token) (`specification`) | interchange-record | historical | Second Editors' Draft, 2022-06-14 | 2026-09-08 |
|
|
36
|
-
| `css.custom-property` | Custom property | [CSSWG](https://www.w3.org/TR/css-variables-1/#defining-variables) (`web-platform`) | runtime-value-slot | current | CSS Custom Properties Level 1 | 2026-09-
|
|
36
|
+
| `css.custom-property` | Custom property | [CSSWG](https://www.w3.org/TR/css-variables-1/#defining-variables) (`web-platform`) | runtime-value-slot | current | CSS Custom Properties Level 1 | 2026-09-21 |
|
|
37
37
|
| `carbon.component` | Component | [Carbon](https://carbondesignsystem.com/all-about-carbon/what-is-carbon/) (`design-system`) | published-ui-building-block | current | Carbon design and implementation resources | 2026-09-08 |
|
|
38
38
|
| `carbon.pattern` | Pattern | [Carbon](https://carbondesignsystem.com/patterns/overview/) (`design-system`) | workflow-guidance | current | Carbon patterns catalog | 2026-09-08 |
|
|
39
39
|
| `stylegallery.pattern` | Pattern | [StyleGallery](../layout/index.md) (`pattern-library`) | spatial-primitive | current | repository Layout corpus | 2026-09-08 |
|
|
40
|
+
| `dtcg.alias` | Alias | [DTCG](https://www.designtokens.org/tr/2025.10/format/#alias-reference) (`specification`) | token-value-reference | current | Format Module 2025.10 | 2026-09-21 |
|
|
41
|
+
| `fluent.alias-token` | Alias token | [Fluent 2](https://fluent2.microsoft.design/design-tokens#alias-tokens) (`design-system`) | semantic-design-value | current | dated Fluent token-layer guidance | 2026-09-21 |
|
|
42
|
+
| `fluent.global-token` | Global token | [Fluent 2](https://fluent2.microsoft.design/design-tokens#global-tokens) (`design-system`) | context-independent-design-value | current | dated Fluent token-layer guidance | 2026-09-21 |
|
|
43
|
+
| `carbon.color-token` | Token | [Carbon](https://carbondesignsystem.com/elements/color/overview/) (`design-system`) | theme-stable-color-role | current | Carbon color role and theme guidance | 2026-09-21 |
|
|
44
|
+
| `dtcg.resolver-modifier` | Modifier | [DTCG Resolver](https://www.designtokens.org/tr/2025.10/resolver/#modifiers) (`specification`) | conditional-token-source-selection | current | Resolver Module 2025.10 | 2026-09-21 |
|
|
45
|
+
| `html.popover` | Popover | [WHATWG HTML](https://html.spec.whatwg.org/multipage/popover.html) (`web-platform`) | temporary-presentation-mechanism | current | HTML popover attribute and APIs | 2026-09-21 |
|
|
46
|
+
| `apple.popover` | Popover | [Apple HIG](https://developer.apple.com/design/human-interface-guidelines/popovers) (`platform-guideline`) | native-transient-presentation | current | dated HIG with per-platform considerations | 2026-09-21 |
|
|
47
|
+
| `html.dialog` | Dialog | [WHATWG HTML](https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element) (`web-platform`) | native-dialog-element | current | native HTML dialog without role override | 2026-09-21 |
|
|
48
|
+
| `aria.dialog` | Dialog | [WAI-ARIA](https://www.w3.org/TR/wai-aria-1.2/#dialog) (`specification`) | accessible-dialog-role | current | WAI-ARIA 1.2 dialog semantics | 2026-09-21 |
|
|
49
|
+
| `apple.text-style` | Text style | [Apple HIG](https://developer.apple.com/design/human-interface-guidelines/typography) (`platform-guideline`) | native-typography-role-and-scaling | current | system text-style guidance and text-size adaptation | 2026-09-21 |
|
|
50
|
+
| `fluent.type-ramp` | Type ramp | [Fluent 2](https://fluent2.microsoft.design/typography#type-ramp) (`design-system`) | platform-typography-role-collection | current | dated Fluent platform type guidance | 2026-09-21 |
|
|
51
|
+
| `material3.typography` | Typography | [Material 3 Compose](https://developer.android.com/develop/ui/compose/designsystems/material3#typography) (`design-system`) | implemented-typography-role-collection | current | Compose implementation surface of Material 3 | 2026-09-21 |
|
|
52
|
+
| `dtcg.typography` | Typography | [DTCG](https://www.designtokens.org/tr/2025.10/format/#typography) (`specification`) | composite-typography-record | current | Format Module 2025.10 | 2026-09-21 |
|
|
53
|
+
| `css.font` | font | [CSSWG](https://www.w3.org/TR/css-fonts-4/#font-prop) (`web-platform`) | runtime-font-shorthand | current | CSS Fonts Level 4 font shorthand | 2026-09-21 |
|
|
40
54
|
|
|
41
55
|
The external locators and local Layout contract were rechecked on the dates shown. Current status is bounded by the named source/version, not a promise about every later release. Concept labels are local classification summaries.
|
|
42
56
|
|
|
@@ -52,6 +66,15 @@ The external locators and local Layout contract were rechecked on the dates show
|
|
|
52
66
|
| `carbon.pattern` | `stylegallery.pattern` | `partial_overlap` | reusable-interface-guidance | symmetric | Both describe reusable interface arrangements; Carbon includes task sequences and flows, while StyleGallery Layout covers spatial constraints without those interaction contracts | 2026-09-08 |
|
|
53
67
|
| `carbon.component` | `carbon.pattern` | `not_comparable` | catalog-unit-subtyping | symmetric | Composition is not set containment: a workflow can use components without being a broader class whose instances include component instances | 2026-09-08 |
|
|
54
68
|
| `dtcg.token.draft2` | `dtcg.token` | `near_equivalent` | versioned-token-concept | symmetric | The named-value interchange concept overlaps; the 2022 draft and 2025.10 format have different conformance details, so historical files need version-specific validation | 2026-09-08 |
|
|
69
|
+
| `fluent.alias-token` | `dtcg.alias` | `partial_overlap` | semantic-layer-versus-reference | symmetric | Semantic values can use references; a DTCG reference need not carry a semantic role, while a flattened semantic export can lose its reference edge | 2026-09-21 |
|
|
70
|
+
| `fluent.alias-token` | `carbon.color-token` | `partial_overlap` | role-oriented-color-values | symmetric | Both cover role-oriented color decisions; Fluent aliases also cover non-color values, while Carbon defines its own theme and layer roles without a one-to-one Fluent mapping | 2026-09-21 |
|
|
71
|
+
| `fluent.global-token` | `dtcg.token` | `partial_overlap` | named-design-value-interchange | symmetric | Global values can be encoded as token records; Fluent's values are not intrinsically DTCG files, and DTCG records also express context-specific decisions beyond Fluent global values | 2026-09-21 |
|
|
72
|
+
| `dtcg.resolver-modifier` | `dtcg.group` | `not_comparable` | organization-versus-resolution | symmetric | A modifier selects conditional token sources, while a group organizes records; neither grouping nor a group name supplies the resolver's input selection | 2026-09-21 |
|
|
73
|
+
| `html.popover` | `apple.popover` | `partial_overlap` | temporary-content-presentation | symmetric | Temporary related content can fit both; HTML supplies a generic mechanism for varied semantics, while HIG adds native presentation and adaptation conventions that HTML does not supply | 2026-09-21 |
|
|
74
|
+
| `html.dialog` | `aria.dialog` | `implementation_representation` | web-dialog-semantics | directional | The native HTML element can represent dialog semantics and adds lifecycle behavior; other markup can carry the ARIA role without acquiring that native behavior | 2026-09-21 |
|
|
75
|
+
| `apple.text-style` | `dtcg.typography` | `partial_overlap` | typographic-attribute-exchange | symmetric | Static typography attributes overlap; native style scaling is outside the composite record, while DTCG records can describe styles outside Apple's system | 2026-09-21 |
|
|
76
|
+
| `css.font` | `dtcg.typography` | `implementation_representation` | partial-typography-output | directional | The CSS shorthand can consume translated font attributes but omits letter spacing and source metadata, so additional output and provenance are required | 2026-09-21 |
|
|
77
|
+
| `material3.typography` | `fluent.type-ramp` | `partial_overlap` | named-typography-roles | symmetric | Both organize typographic roles, but Compose exposes Material-specific slots while Fluent defines target-specific ramps; their role inventories and defaults are not interchangeable | 2026-09-21 |
|
|
55
78
|
|
|
56
79
|
## Scenario A: Component Versus Pattern
|
|
57
80
|
|
|
@@ -77,6 +100,24 @@ Query phrasing: `style guide versus design system`.
|
|
|
77
100
|
|
|
78
101
|
Result: insufficient context until an organization and dated source are named on both sides. “Industry history” cannot stand in for a specific historical style guide. Do not create a universal rename or deprecation event; request the two sources and then use the [Comparison Workflow](comparison-workflow.md).
|
|
79
102
|
|
|
103
|
+
## Scenario E: Alias, Role, And Resolution
|
|
104
|
+
|
|
105
|
+
Query phrasing: `Fluent alias DTCG reference`, `semantic token group theme resolver`.
|
|
106
|
+
|
|
107
|
+
[Token Semantics And Resolution](token-semantics.md) compares semantic layering, reference edges, role-oriented color, group organization, and resolver selection. Record the selected context and translation losses; equal rendered values do not establish equivalent roles.
|
|
108
|
+
|
|
109
|
+
## Scenario F: Dialog And Popover
|
|
110
|
+
|
|
111
|
+
Query phrasing: `HTML popover Apple popover`, `dialog element ARIA dialog difference`.
|
|
112
|
+
|
|
113
|
+
[Dialog And Popover Semantics](interaction-semantics.md) separates native vocabulary, web presentation mechanisms, accessibility roles, and the consumer's task. Carry the relation boundary into the implementation handoff instead of using a component name as a behavior specification.
|
|
114
|
+
|
|
115
|
+
## Scenario G: Type Style, Type Ramp, And Font Output
|
|
116
|
+
|
|
117
|
+
Query phrasing: `Dynamic Type typography token`, `Material Typography Fluent type ramp`, `CSS font DTCG typography`.
|
|
118
|
+
|
|
119
|
+
[Typography Semantics](typography-semantics.md) distinguishes one style from a role collection and a runtime representation. Native scaling and missing output properties remain explicit translation work.
|
|
120
|
+
|
|
80
121
|
## Opinionated Guidance
|
|
81
122
|
|
|
82
123
|
- Resolve a conflict only after naming every source involved; silent resolution creates the next conflict.
|
|
@@ -97,12 +138,14 @@ When a case involves a platform guideline source, cite that platform's surface a
|
|
|
97
138
|
|
|
98
139
|
## Verification Contract
|
|
99
140
|
|
|
100
|
-
Run `node scripts/validate-design-terminology.mjs --json` and
|
|
141
|
+
Run `node scripts/validate-design-terminology.mjs --json` and `node scripts/test-validate-design-terminology.mjs` after editing. The [fixture runner](../scripts/test-validate-design-terminology.mjs) checks rejection of invalid records and relations. Verify both direct source locators, the comparison scope, direction, and boundary against the [relation definitions](relation-types.md). The validator checks record shape and graph invariants; semantic accuracy still requires source review. Re-review when a named source changes the cited meaning.
|
|
101
142
|
|
|
102
143
|
## Source, License, And Attribution
|
|
103
144
|
|
|
104
145
|
Locally authored summaries and judgments, with direct source links per term. Rechecked 2026-09-08: Figma variables/components, DTCG 2025.10 and second draft, CSS Custom Properties Level 1, Carbon system/pattern pages, and the local Layout hub. No source prose or code samples are copied. This is an author source review, not independent semantic approval.
|
|
105
146
|
|
|
147
|
+
Rechecked 2026-09-21: DTCG Format and Resolver 2025.10, Fluent tokens and typography, Carbon color overview/usage, WHATWG dialog/popover, WAI-ARIA 1.2 dialog, Apple HIG popovers/typography, Material 3 Compose typography, and CSS Fonts/Custom Properties. Apple bodies were inspected through official documentation JSON. Older record dates remain their original review bounds; this session did not recheck Figma, the historical DTCG draft, Carbon component/pattern meaning, or local Layout term meaning.
|
|
148
|
+
|
|
106
149
|
## IA Navigation
|
|
107
150
|
|
|
108
151
|
Parent: [Design Terminology](index.md).
|
|
@@ -63,6 +63,12 @@ These workflows and worked cases are usable experimental guidance. Expected-resu
|
|
|
63
63
|
- [Design Term Relations](relation-types.md) defines the typed relation model and the term record shape.
|
|
64
64
|
- [Cross-System Term Cases](conflict-cases.md) applies typed relations to recorded term records and conflict scenarios.
|
|
65
65
|
|
|
66
|
+
## Source-Backed Deep Dives
|
|
67
|
+
|
|
68
|
+
- [Token Semantics And Resolution](token-semantics.md). Compare semantic roles, references, groups, context resolution, and runtime values.
|
|
69
|
+
- [Dialog And Popover Semantics](interaction-semantics.md). Separate platform names, HTML mechanisms, ARIA roles, and task behavior.
|
|
70
|
+
- [Typography Roles, Styles, And Representations](typography-semantics.md). Compare native styles, role collections, composite records, and CSS output.
|
|
71
|
+
|
|
66
72
|
## Domain Contract
|
|
67
73
|
|
|
68
74
|
[Vocabulary](../guides/vocabulary.md) owns StyleGallery's canonical internal word set; Design Terminology compares the meanings and relations of terms used by external named sources. Platform Guides compares platform interaction conventions, not terminology; Motion owns motion terminology. Naming rationale: topology suggests a relation graph this domain does not yet provide; terminology is the accurate name for comparing definitions, usage scope, and conflicts. Scope decision: [Design Terminology Domain Scope Decision](../quality/claim-records/design-terminology-domain-scope.md).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Dialog And Popover Semantics
|
|
4
|
+
description: Separate native component names, HTML presentation behavior, ARIA semantics, and product interaction contracts.
|
|
5
|
+
domain: design-terminology
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
reviewed_on: 2026-09-21
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Dialog And Popover Semantics
|
|
12
|
+
|
|
13
|
+
Primary role: interaction terminology comparison.
|
|
14
|
+
|
|
15
|
+
## Repository Boundary
|
|
16
|
+
|
|
17
|
+
This page owns the meaning comparison. [Native Interaction Contracts](../design-engineering/native-interaction-contracts.md) owns implementation decisions; [Platform Guides](../platform-guides/adaptation-workflow.md) owns native adaptation. Term identities and typed relations remain in [Term Cases](conflict-cases.md).
|
|
18
|
+
|
|
19
|
+
## Reusable Method
|
|
20
|
+
|
|
21
|
+
For a named surface, record four axes before assigning a component: source vocabulary, exposed semantics, presentation mechanism, and task behavior. Ask which one the speaker means. One product surface can involve all four without making them synonyms.
|
|
22
|
+
|
|
23
|
+
### Direct Source Comparison
|
|
24
|
+
|
|
25
|
+
| Source | What the cited term describes | Missing information for an implementation |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [Apple HIG popovers](https://developer.apple.com/design/human-interface-guidelines/popovers) | A platform-guided temporary presentation with platform-specific usage and adaptation conventions. | The target web role, keyboard behavior, and save policy. |
|
|
28
|
+
| [HTML popover](https://html.spec.whatwg.org/multipage/popover.html) | An attribute/API mechanism that can be applied to elements with different semantics. | The task's semantic widget model. |
|
|
29
|
+
| [HTML dialog](https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element) | A native HTML element with its own presentation and lifecycle operations. | The task's name, focus destination, and application data decisions. |
|
|
30
|
+
| [WAI-ARIA dialog](https://www.w3.org/TR/wai-aria-1.2/#dialog) | An accessibility role for a dialog, including an accessible-name requirement. | The code that makes interaction and presentation satisfy that role. |
|
|
31
|
+
| [APG modal dialog](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/) | An informative pattern for modal keyboard and focus behavior. | Evidence that the chosen implementation works in its actual runtime. |
|
|
32
|
+
|
|
33
|
+
Read on 2026-09-21. Apple page content was inspected through its official documentation JSON as well as the indexed page. HTML is a Living Standard; WAI-ARIA 1.2 is a Recommendation. Source authority applies to each named surface, not to a universal cross-platform component.
|
|
34
|
+
|
|
35
|
+
### Popover: Shared Region And Non-Shared Regions
|
|
36
|
+
|
|
37
|
+
`html.popover` and `apple.popover` have `partial_overlap` in the recorded temporary-content scope. A temporary anchored information surface can fit both descriptions. HTML's mechanism also applies to semantically different surfaces without requiring the HIG's platform conventions. Apple's presentation includes native adaptation and usage decisions that the attribute does not supply.
|
|
38
|
+
|
|
39
|
+
The overlap does not justify copying every native dismissal behavior into a web form. A reviewer still needs to know whether an outside interaction saves, requests close, discards, or is ignored. That decision belongs in the consumer's contract and must preserve the task's data policy.
|
|
40
|
+
|
|
41
|
+
### Dialog: Representation Direction
|
|
42
|
+
|
|
43
|
+
The recorded relation `html.dialog` → `aria.dialog` uses `implementation_representation`. The native element can represent the accessible dialog concept; the relation points from representation to semantic concept. Other markup can carry a dialog role, but adding the role does not manufacture native lifecycle behavior.
|
|
44
|
+
|
|
45
|
+
The comparison is about ordinary dialog semantics, not every possible role override or misuse of the element. Modality is another axis: the implementation must make its declared background interaction and focus behavior true.
|
|
46
|
+
|
|
47
|
+
### Worked Ambiguity: “Put It In A Modal Popover”
|
|
48
|
+
|
|
49
|
+
Turn the phrase into an explicit task rather than selecting a library component by substring. Suppose an annotation editor must remain visible while its document is inspected. Decide whether inspecting means reading the visible background or interacting with it. If interaction is needed, a modal focus contract may conflict with the task.
|
|
50
|
+
|
|
51
|
+
| Question | Recordable answer |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| What is the task? | Edit one annotation while retaining document context. |
|
|
54
|
+
| What background interaction is allowed? | The consumer explicitly permits or suspends it. |
|
|
55
|
+
| What semantics describe the editor? | A named form/surface/widget choice, independently justified. |
|
|
56
|
+
| What displays it? | A selected native or web mechanism. |
|
|
57
|
+
| What ends the task? | Save, cancel, navigation, and outside interaction each have defined effects. |
|
|
58
|
+
| What comparison is being relied on? | Source-qualified term pair, relation type, scope, and recheck date. |
|
|
59
|
+
|
|
60
|
+
This example is a proposal, not an observed platform product. A library's component name can be recorded as an implementation choice without becoming another universal term definition.
|
|
61
|
+
|
|
62
|
+
## Opinionated Guidance
|
|
63
|
+
|
|
64
|
+
Use task language in product copy and source-qualified language in engineering handoffs. If two engineers use the same word for different axes, preserve the distinction in the contract instead of forcing agreement on the label.
|
|
65
|
+
|
|
66
|
+
## Platform-Specific Guidance
|
|
67
|
+
|
|
68
|
+
Native compact-view adaptation, browser top-layer behavior, and accessibility role exposure require different evidence. Route an actual adaptation to [Adaptive Navigation](../platform-guides/adaptive-navigation.md). Do not infer host behavior from matching screenshots.
|
|
69
|
+
|
|
70
|
+
## Unsupported Absolutes
|
|
71
|
+
|
|
72
|
+
Popover does not universally mean nonmodal form, menu, tooltip, or dialog. Top-layer painting does not specify an accessibility role. A component named Modal does not prove that the background is inert or that focus returns correctly.
|
|
73
|
+
|
|
74
|
+
## Verification Contract
|
|
75
|
+
|
|
76
|
+
Recheck both meanings at their direct locators and explain the common and non-common regions. For implementation reliance, verify the exposed role, focus behavior, background interaction, and dismissal outcome separately. Source review cannot substitute for those observations.
|
|
77
|
+
|
|
78
|
+
The scenarios are unexecuted. A relation-validator pass establishes record consistency only. Re-review when a platform convention, HTML behavior, ARIA role, or library wrapper changes the comparison.
|
|
79
|
+
|
|
80
|
+
## Source, License, And Attribution
|
|
81
|
+
|
|
82
|
+
Locally authored synthesis without copied examples or assets. Terminology reliance: `html.popover`, `apple.popover`, `html.dialog`, and `aria.dialog`; relation types: `partial_overlap` and `implementation_representation`. All named sources were rechecked 2026-09-21. Relations are author judgments, not independent semantic approval. `consumer_reference: not_applicable` because no consumer interaction record is selected.
|
|
83
|
+
|
|
84
|
+
## IA Navigation
|
|
85
|
+
|
|
86
|
+
Parent: [Design Terminology](index.md).
|
|
87
|
+
Next: [Design Term Comparison Workflow](comparison-workflow.md).
|
|
@@ -38,7 +38,7 @@ All entries cite official first-party URLs (`authority: official`); `retrieved_o
|
|
|
38
38
|
|
|
39
39
|
## Direct Sources For Current Term Records
|
|
40
40
|
|
|
41
|
-
The [Term Cases](conflict-cases.md) use
|
|
41
|
+
The [Term Cases](conflict-cases.md) use the narrower source sets below. Locators in the term table point to the exact document or section, not a general vendor home page. The first set retains its 2026-09-08 review; later readings do not backdate or refresh unrelated terms.
|
|
42
42
|
|
|
43
43
|
| Named source | Source kind | Reviewed surface and version | Re-review trigger |
|
|
44
44
|
| --- | --- | --- | --- |
|
|
@@ -50,6 +50,22 @@ The [Term Cases](conflict-cases.md) use this narrower source set, rechecked 2026
|
|
|
50
50
|
|
|
51
51
|
The DTCG 2022 reading is historical evidence of a draft, not an implementation recommendation. A direct locator and a recorded reading establish provenance for the local summary; independent semantic approval remains separate.
|
|
52
52
|
|
|
53
|
+
### Sources Rechecked On 2026-09-21
|
|
54
|
+
|
|
55
|
+
| Named source | Source kind | Reviewed surface and version | Re-review trigger |
|
|
56
|
+
| --- | --- | --- | --- |
|
|
57
|
+
| DTCG | `specification` | [Format 2025.10](https://www.designtokens.org/tr/2025.10/format/); token, group, alias, and typography meanings | Format version or the selected comparison changes |
|
|
58
|
+
| DTCG Resolver | `specification` | [Resolver 2025.10](https://www.designtokens.org/tr/2025.10/resolver/); modifiers and context selection | Resolver version or context-resolution contract changes |
|
|
59
|
+
| Fluent 2 | `design-system` | [Design tokens](https://fluent2.microsoft.design/design-tokens) and [typography](https://fluent2.microsoft.design/typography); dated guidance | Token-layer or target-platform role meaning changes |
|
|
60
|
+
| Carbon | `design-system` | [Color overview](https://carbondesignsystem.com/elements/color/overview/) and [usage](https://carbondesignsystem.com/elements/color/usage/); dated role/theme/layer guidance | Color role, theme, or contextual layer semantics change |
|
|
61
|
+
| WHATWG HTML | `web-platform` | [Popover](https://html.spec.whatwg.org/multipage/popover.html) and [dialog](https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element); Living Standard | Presentation or element semantics change |
|
|
62
|
+
| WAI-ARIA | `specification` | [Dialog role in WAI-ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/#dialog) | Role version, meaning, or native representation changes |
|
|
63
|
+
| Apple HIG | `platform-guideline` | [Popovers](https://developer.apple.com/design/human-interface-guidelines/popovers) and [typography](https://developer.apple.com/design/human-interface-guidelines/typography); dated platform guidance | Platform convention or text-style behavior changes |
|
|
64
|
+
| Material 3 Compose | `design-system` | [Material 3 typography in Compose](https://developer.android.com/develop/ui/compose/designsystems/material3#typography); implementation surface of the system | Named style slots or system-to-implementation mapping changes |
|
|
65
|
+
| CSSWG | `web-platform` | [Custom Properties Level 1](https://www.w3.org/TR/css-variables-1/) and [Fonts Level 4](https://www.w3.org/TR/css-fonts-4/#font-prop); runtime representations | Property or shorthand semantics change |
|
|
66
|
+
|
|
67
|
+
For this set, `retrieved_on` and `reviewed_on` are 2026-09-21. Apple bodies were inspected through their official documentation JSON when the HTML reader returned a JavaScript shell. The previous Carbon `/guidelines/color/` locators were unavailable in the reader; the reviewed official pages use `/elements/color/`. No historical source record was silently relabeled current. DTCG modules remain Community Group reports, not W3C Recommendations. Source review here is by the author and does not satisfy independent semantic promotion.
|
|
68
|
+
|
|
53
69
|
## Freshness Policy
|
|
54
70
|
|
|
55
71
|
Every recorded source carries: `source_url`, `source_kind`, a version boundary (specification version, product version, OS cycle, or dated reviewed page set), `status` in `current` / `deprecated` / `historical` / `unknown`, `reviewed_on`, and `retrieved_on`. Living sites without publishable versions record the reviewed page set and a re-review trigger. Terms with era history additionally record `introduced_in`, `deprecated_in`, `renamed_to`, and `historical_scope` in [Cross-System Term Cases](conflict-cases.md).
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Token Semantics And Resolution
|
|
4
|
+
description: Compare semantic roles, references, groups, resolver contexts, and runtime values without treating their names as interchangeable.
|
|
5
|
+
domain: design-terminology
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
reviewed_on: 2026-09-21
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Token Semantics And Resolution
|
|
12
|
+
|
|
13
|
+
Primary role: source-specific token terminology comparison.
|
|
14
|
+
|
|
15
|
+
## Repository Boundary
|
|
16
|
+
|
|
17
|
+
This page compares vocabulary and the decisions obscured by ambiguous token names. It imports no token values, themes, or compiler behavior. [Consumer Reference](../consumer-reference/index.md) owns interchange/evidence infrastructure; consumer profiles own their values and implementation. Layout's token boundary remains unchanged.
|
|
18
|
+
|
|
19
|
+
Canonical term and relation records live in [Cross-System Term Cases](conflict-cases.md). This guide explains their use; it does not establish a second term registry.
|
|
20
|
+
|
|
21
|
+
## Reusable Method
|
|
22
|
+
|
|
23
|
+
When a handoff says “alias,” “semantic,” or “theme,” identify whether it refers to design intent, a reference edge, organization, context selection, or a runtime representation. Record the named source before choosing an equivalence relation. Inspect the exported structure separately from the visual result.
|
|
24
|
+
|
|
25
|
+
### Sources And Distinctions
|
|
26
|
+
|
|
27
|
+
| Source | Source-backed distinction | Question for a handoff |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| [Fluent 2 tokens](https://fluent2.microsoft.design/design-tokens) | Global tokens hold context-independent values; alias tokens add semantic meaning. | Does “alias” name a semantic layer in this system? |
|
|
30
|
+
| [DTCG Format 2025.10](https://www.designtokens.org/tr/2025.10/format/) | A token value may reference another token; groups organize records. | Does “alias” name a reference relationship in an interchange document? |
|
|
31
|
+
| [Carbon color overview](https://carbondesignsystem.com/elements/color/overview/) | Color tokens preserve roles across themes while assigned values can change. | Is the role stable across every theme being compared? |
|
|
32
|
+
| [Carbon color usage](https://carbondesignsystem.com/elements/color/usage/) | Contextual color tokens depend on the layer where they are used. | Is the surrounding layer part of value resolution? |
|
|
33
|
+
| [DTCG Resolver 2025.10](https://www.designtokens.org/tr/2025.10/resolver/) | Modifiers conditionally select sources through contexts; ordered resolution determines the resulting token set. | Where are the selected contexts and conflict order recorded? |
|
|
34
|
+
| [CSS Custom Properties Level 1](https://www.w3.org/TR/css-variables-1/) | Custom properties participate in CSS runtime value substitution and the cascade. | Which original semantics and metadata remain after translation? |
|
|
35
|
+
|
|
36
|
+
All six source surfaces were inspected on 2026-09-21. DTCG 2025.10 modules are Community Group reports, not W3C Recommendations. The Fluent and Carbon pages are dated system documentation, not guarantees about every package release.
|
|
37
|
+
|
|
38
|
+
### Alias Is Not One Decision
|
|
39
|
+
|
|
40
|
+
The recorded `fluent.alias-token` / `dtcg.alias` relation is `partial_overlap`. A semantic token may use a reference, but a reference edge does not itself prove a semantic role. A reference between two raw values illustrates the non-semantic region; a consumer's exported semantic value may be flattened and no longer retain its reference edge.
|
|
41
|
+
|
|
42
|
+
The `fluent.alias-token` / `carbon.color-token` relation is also scoped overlap. Both can express role-oriented color decisions, but their vocabularies and non-color coverage differ. This is not permission to rename one system's tokens after another's or assert that their role sets are identical.
|
|
43
|
+
|
|
44
|
+
### Grouping Is Not Context Selection
|
|
45
|
+
|
|
46
|
+
The recorded `dtcg.resolver-modifier` / `dtcg.group` relation is `not_comparable` for organization-versus-resolution. Ask where a context is selected, where sources are ordered, and where a group is merely a path. A directory or group named `dark` does not independently explain how a consumer chooses dark appearance.
|
|
47
|
+
|
|
48
|
+
This distinction also prevents confusing a token system's theme with a user's complete preference state. A selected theme does not determine text scaling, reduced motion, or every platform accessibility preference; those adaptation decisions belong to [Platform Guides](../platform-guides/preferences-and-accessibility.md).
|
|
49
|
+
|
|
50
|
+
### Worked Handoff: Same Color, Different Meaning
|
|
51
|
+
|
|
52
|
+
Two consumer roles happen to resolve to the same displayed color in one theme. Preserve the roles separately when their purposes differ. Equality of an output value is evidence of that output only; it does not justify merging source concepts.
|
|
53
|
+
|
|
54
|
+
| Handoff field | Proposed content | Why it matters |
|
|
55
|
+
| --- | --- | --- |
|
|
56
|
+
| Source term | Source-qualified identifier and locator | Keeps a role name attached to its own vocabulary. |
|
|
57
|
+
| Comparison scope | The particular translation being considered | Prevents a local mapping from becoming universal equivalence. |
|
|
58
|
+
| Context | Theme, layer, or resolver inputs actually selected | Makes value resolution reproducible. |
|
|
59
|
+
| Output representation | Target format and adapter version | Separates serialization from semantic intent. |
|
|
60
|
+
| Retained/lost information | Role, reference edges, metadata, and unsupported structures | Exposes lossy translation. |
|
|
61
|
+
| Verification | Structural check plus rendered state evidence if appearance is claimed | Avoids treating a valid file as a usable component. |
|
|
62
|
+
|
|
63
|
+
The fields are a local analysis aid. They do not expand this repository's closed token adapter or admit arbitrary DTCG features into existing schemas.
|
|
64
|
+
|
|
65
|
+
## Opinionated Guidance
|
|
66
|
+
|
|
67
|
+
Prefer source-qualified names in cross-system discussions. Before merging tokens, compare responsibilities across contexts, not just matching values in a screenshot. Keep compiler inputs explicit enough that another consumer can explain how an output was obtained.
|
|
68
|
+
|
|
69
|
+
## Platform-Specific Guidance
|
|
70
|
+
|
|
71
|
+
An exported custom property, native resource, or tool variable can consume translated design information without preserving the full source contract. The concrete adapter owns unit conversion, missing features, and runtime context. Comparative vocabulary cannot certify that adapter.
|
|
72
|
+
|
|
73
|
+
## Unsupported Absolutes
|
|
74
|
+
|
|
75
|
+
A reference is not proof of semantic intent. A group is not automatically a theme selector. The same value is not the same role. A valid DTCG document is not a declaration that StyleGallery supports every feature in that document.
|
|
76
|
+
|
|
77
|
+
## Verification Contract
|
|
78
|
+
|
|
79
|
+
Recheck both source locators for each relied-on relation and record the scope and direction. Probe a matching value with different roles, a changed theme, a contextual layer change, and a flattened export. Inspect the actual adapter if making a round-trip or runtime claim.
|
|
80
|
+
|
|
81
|
+
These are proposed checks. Only source readings and Markdown record consistency are claimed here; no token pipeline or product rendering was executed. Re-review when a vocabulary, module version, or adapter contract changes.
|
|
82
|
+
|
|
83
|
+
## Source, License, And Attribution
|
|
84
|
+
|
|
85
|
+
Locally authored synthesis; no source token values or upstream expression are copied. Terminology reliance: `fluent.alias-token`, `fluent.global-token`, `carbon.color-token`, `dtcg.alias`, `dtcg.token`, `dtcg.group`, `dtcg.resolver-modifier`, and `css.custom-property`. Relations used: `partial_overlap`, `implementation_representation`, and `not_comparable`. Named sources were rechecked 2026-09-21; local relations remain author judgments, not independent semantic approval. `consumer_reference: not_applicable` because no consumer profile or adapter record is selected.
|
|
86
|
+
|
|
87
|
+
## IA Navigation
|
|
88
|
+
|
|
89
|
+
Parent: [Design Terminology](index.md).
|
|
90
|
+
Next: [Typography Semantics](typography-semantics.md).
|