stylegallery 0.1.7 → 0.1.8
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/AGENTS.md +13 -1
- package/DOMAINS.md +7 -3
- package/GOVERNANCE.md +13 -11
- package/LICENSE-DOCS +2 -2
- package/README.md +23 -10
- package/consumer-reference/agent-native/v2/admission-policy.json +32 -37
- package/consumer-reference/agent-native/v2/material-registry.json +1 -1
- package/consumer-reference/agent-native/v2/schema/admission-policy.schema.json +3 -3
- package/consumer-reference/agent-native/v2/schema/material-record.schema.json +1 -1
- package/design-engineering/state-management/index.md +1 -1
- package/design-engineering/state-management/patterns/derived-state.md +1 -1
- package/design-engineering/state-management/patterns/draft-and-baseline.md +1 -1
- package/design-engineering/state-management/patterns/id-selection.md +1 -1
- package/design-engineering/state-management/patterns/identity-reset.md +1 -1
- package/design-engineering/state-management/patterns/latest-request-wins.md +1 -1
- package/design-engineering/state-management/patterns/optimistic-overlay.md +1 -1
- package/design-engineering/state-management/patterns/single-flight.md +1 -1
- package/design-engineering/state-management/patterns/single-owner.md +1 -1
- package/design-engineering/state-management/patterns/submitted-snapshot.md +1 -1
- package/design-engineering/state-management/patterns/unsaved-navigation.md +1 -1
- package/design-engineering/state-management/patterns/url-state.md +1 -1
- package/design-engineering/state-management/patterns/versioned-restore.md +1 -1
- package/design-engineering/state-management/verification.md +1 -1
- package/design-terminology/conflict-cases.md +1 -1
- package/design-terminology/source-kinds.md +1 -1
- package/expression/brand-studies.md +50 -0
- package/expression/direction-brief.md +71 -0
- package/expression/directions/nocturne-editorial.md +80 -0
- package/expression/directions/warm-print.md +73 -0
- package/expression/index.md +40 -0
- package/expression/techniques/gradient-atmosphere.md +107 -0
- package/expression/techniques/grain-and-texture.md +83 -0
- package/expression/techniques/webgl-hero.md +123 -0
- package/guides/vocabulary.md +1 -1
- package/index.md +3 -3
- package/log.md +35 -0
- package/motion/index.md +2 -0
- package/motion/techniques/kinetic-type.md +145 -0
- package/motion/techniques/scroll-choreography.md +154 -0
- package/package.json +17 -14
- package/platform-guides/compatibility-matrix.md +1 -1
- package/quality/claim-records/stylegallery-multidomain-scope.md +2 -2
- package/quality/evidence/executable-evidence.md +1 -1
- package/quality/index.md +1 -2
- package/scripts/agent-native/v2/material-admission.mjs +1 -1
- package/scripts/agent-native/v2/material-identity.mjs +2 -2
- package/scripts/compiler/README.md +5 -5
- package/showcase/README.md +113 -0
- package/game-ui/classification.md +0 -82
- package/game-ui/decision-tree.md +0 -81
- package/game-ui/index.md +0 -45
- package/game-ui/reference-record.md +0 -62
- package/game-ui/screen-hierarchy.md +0 -107
- package/game-ui/screen-recipes.md +0 -101
- package/game-ui/unity/architecture.md +0 -166
- package/game-ui/unity/cli-loop.md +0 -84
- package/game-ui/unity/org-wiki.md +0 -146
- package/game-ui/unity/repository-map.md +0 -102
- package/game-ui/unity/ui-systems.md +0 -85
- package/game-ui/verification-workflow.md +0 -100
package/AGENTS.md
CHANGED
|
@@ -6,7 +6,7 @@ description: Rules coding agents must follow when editing this governed multi-do
|
|
|
6
6
|
|
|
7
7
|
# Agent Instructions
|
|
8
8
|
|
|
9
|
-
This repository is StyleGallery: a governed gallery with Layout, Motion, Design Engineering,
|
|
9
|
+
This repository is StyleGallery: a governed gallery with Layout, Motion, Design Engineering, Platform Guides, Design Terminology, and Expression domains, plus a free-form `showcase/` work area. Read [StyleGallery Domains](DOMAINS.md) before adding a domain, changing a domain boundary, or adapting an external source.
|
|
10
10
|
|
|
11
11
|
Before editing generated artifacts, validators, lifecycle state, or ownership policy, read [Governance, Lifecycle, And Docs-As-Code](GOVERNANCE.md).
|
|
12
12
|
|
|
@@ -42,6 +42,18 @@ Before editing generated artifacts, validators, lifecycle state, or ownership po
|
|
|
42
42
|
|
|
43
43
|
The remaining pattern, CSS, naming, token, checklist, and verification rules apply to the Layout domain. Non-Layout domain documents may discuss product-layer behavior, but they do not authorize decorative or motion properties in reusable Layout pattern CSS.
|
|
44
44
|
|
|
45
|
+
## Creative Build Route
|
|
46
|
+
|
|
47
|
+
Use this route when the task is to make a finished, expressive page (a landing page, brand study, or art-directed experiment) rather than to edit governed knowledge.
|
|
48
|
+
|
|
49
|
+
- Read only [Showcase](showcase/README.md), one [Expression](expression/index.md) direction, and the Expression or [Motion techniques](motion/techniques/scroll-choreography.md) the page needs. Skip governance, lifecycle, provenance, and consumer-reference documents: a showcase work creates no governed record.
|
|
50
|
+
- Build in `showcase/<slug>/` with an `index.html` and a `brief.md`. The Layout CSS Authoring, CSS Scope, Class Naming, and Token rules do not apply there. Any property, selector, library, font, or WebGL is allowed.
|
|
51
|
+
- Preview with `bun run showcase:serve`; over SSH, it prints the `ssh -L` command to run on the local machine. Add the work to the hub, `showcase/index.html`, creating the hub with the first work.
|
|
52
|
+
- Layout remains the floor, checked by outcome: run `node scripts/check-showcase.mjs --work <slug>` and fix every failure (errors, overflow, focus, reduced motion, contrast, honest actions, hash navigation, short viewports, offscreen loops, offline and no-script reading; see [Showcase QA](showcase/QA.md)). Then review the settled screenshots in `.tmp/showcase/<slug>/` for taste, which the check does not judge.
|
|
53
|
+
- A brand study of a real brand must follow [Brand Studies](expression/brand-studies.md): name the subject, mark the page Unofficial, set `noindex`, and use no copied logos or verbatim copy.
|
|
54
|
+
- Handoff: `consumer_reference: not_applicable` because a showcase work selects no consumer reference record.
|
|
55
|
+
- Promote a value or technique out of a showcase work only by writing it into an Expression or Motion page. Never copy showcase CSS into `patterns/**`.
|
|
56
|
+
|
|
45
57
|
## Pattern Boundary Gate
|
|
46
58
|
|
|
47
59
|
Before adding a new pattern or changing reusable pattern CSS, check [Layout Decision Tree](guides/decision-tree.md) and [Layout Brief Template](guides/layout-brief.md).
|
package/DOMAINS.md
CHANGED
|
@@ -17,25 +17,29 @@ This manifest is the source of truth for top-level StyleGallery domains. A domai
|
|
|
17
17
|
| Layout | [Layout](layout/index.md) | `stable` and `generated` | Spatial patterns, recipes, planning, constraints, and scroll ownership. | Product motion, visual treatment, or platform imitation. | Pattern-data owner |
|
|
18
18
|
| Motion | [Motion](motion/index.md) | `experimental` | Motion naming, review procedure, and bounded practice guidance. | Universal prescriptions or reusable Layout CSS. | Motion domain owner |
|
|
19
19
|
| Design Engineering | [Design Engineering](design-engineering/index.md) | `experimental` | Product-layer craft questions and evidence-bearing decisions. | A second shared principle system or taste as proof. | Design Engineering domain owner |
|
|
20
|
-
| Game UI | [Game UI](game-ui/index.md) | `experimental` | Game-interface classification, hierarchy, reference records, and implementation guides nested by engine. | Reusable Layout CSS or claims that one engine structure is universal. | Game UI domain owner |
|
|
21
20
|
| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` | Comparative references for a named platform and version context. | Affiliation, brand imitation, or authority over web standards. | Platform Guides domain owner |
|
|
22
21
|
| Design Terminology | [Design Terminology](design-terminology/index.md) | `experimental` | Source-kind classification, concept-family classification, typed term relations, and cross-system conflict cases for named vocabulary sources. | StyleGallery's own controlled vocabulary, motion terminology, visual token values, universal naming prescriptions, or authority over external vocabularies. | Design Terminology domain owner |
|
|
22
|
+
| Expression | [Expression](expression/index.md) | `experimental` | Art-direction briefs, named directions with starting values, visual technique recipes, and the unofficial brand-study policy for product pages. | Layout mechanics, motion timing and review, governed tokens or reference profiles, and any decorative value in reusable Layout pattern CSS. | Expression domain owner |
|
|
23
23
|
|
|
24
24
|
## Page Manifest
|
|
25
25
|
|
|
26
26
|
| Domain | Manual hub | Governed leaves |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Layout | `layout/index.md` | Existing `GUIDE.md`, Layout-specific `guides/*.md`, and `recipes/*.md`; generated `patterns/**/*.md` and `CATALOG.md` remain at current paths. Shared `quality/**/*.md` infrastructure governs every domain without becoming a Layout leaf. |
|
|
29
|
-
| Motion | `motion/index.md` | `motion/vocabulary.md`, `motion/review-workflow.md`, `motion/practice-reference.md`, `motion/decision-tree.md`, `motion/motion-brief.md`, `motion/interaction-recipes.md`, `motion/observed-choreography.md`, `motion/accessible-motion.md`, `motion/interruption-and-retargeting.md`, `motion/rendering-and-performance.md` |
|
|
29
|
+
| Motion | `motion/index.md` | `motion/vocabulary.md`, `motion/review-workflow.md`, `motion/practice-reference.md`, `motion/decision-tree.md`, `motion/motion-brief.md`, `motion/interaction-recipes.md`, `motion/observed-choreography.md`, `motion/accessible-motion.md`, `motion/interruption-and-retargeting.md`, `motion/rendering-and-performance.md`, `motion/techniques/scroll-choreography.md`, `motion/techniques/kinetic-type.md` |
|
|
30
30
|
| Design Engineering | `design-engineering/index.md` | `design-engineering/interface-craft.md`, `design-engineering/consumer-migration-readiness.md`, `design-engineering/reference-profiles/index.md`, `design-engineering/reference-profiles/governed-local/index.md`, `design-engineering/reference-profiles/external-adaptation/index.md`, `design-engineering/decision-tree.md`, `design-engineering/component-contract.md`, `design-engineering/worked-examples.md`, `design-engineering/state-management/decision-tree.md`, `design-engineering/state-management/index.md`, `design-engineering/state-management/patterns/derived-state.md`, `design-engineering/state-management/patterns/draft-and-baseline.md`, `design-engineering/state-management/patterns/id-selection.md`, `design-engineering/state-management/patterns/identity-reset.md`, `design-engineering/state-management/patterns/latest-request-wins.md`, `design-engineering/state-management/patterns/optimistic-overlay.md`, `design-engineering/state-management/patterns/single-flight.md`, `design-engineering/state-management/patterns/single-owner.md`, `design-engineering/state-management/patterns/submitted-snapshot.md`, `design-engineering/state-management/patterns/unsaved-navigation.md`, `design-engineering/state-management/patterns/url-state.md`, `design-engineering/state-management/patterns/versioned-restore.md`, `design-engineering/state-management/recipes/delete-undo.md`, `design-engineering/state-management/recipes/index.md`, `design-engineering/state-management/recipes/multi-step-form.md`, `design-engineering/state-management/recipes/search-detail.md`, `design-engineering/state-management/recipes/settings-save.md`, `design-engineering/state-management/state-brief.md`, `design-engineering/state-management/verification.md`, `design-engineering/native-interaction-contracts.md`, `design-engineering/text-input-and-internationalization.md`, `design-engineering/loading-and-feedback.md` |
|
|
31
|
-
| Game UI | `game-ui/index.md` | `game-ui/classification.md`, `game-ui/screen-hierarchy.md`, `game-ui/reference-record.md`, `game-ui/unity/architecture.md`, `game-ui/unity/ui-systems.md`, `game-ui/unity/cli-loop.md`, `game-ui/unity/repository-map.md`, `game-ui/unity/org-wiki.md`, `game-ui/decision-tree.md`, `game-ui/screen-recipes.md`, `game-ui/verification-workflow.md` |
|
|
32
31
|
| Platform Guides | `platform-guides/index.md` | `platform-guides/apple-interaction.md`, `platform-guides/adaptation-workflow.md`, `platform-guides/android-interaction.md`, `platform-guides/windows-interaction.md`, `platform-guides/compatibility-matrix.md`, `platform-guides/adaptive-navigation.md`, `platform-guides/preferences-and-accessibility.md`, `platform-guides/input-and-focus.md` |
|
|
33
32
|
| Design Terminology | `design-terminology/index.md` | `design-terminology/source-kinds.md`, `design-terminology/source-vocabularies.md`, `design-terminology/concept-families.md`, `design-terminology/relation-types.md`, `design-terminology/conflict-cases.md`, `design-terminology/comparison-workflow.md`, `design-terminology/token-semantics.md`, `design-terminology/interaction-semantics.md`, `design-terminology/typography-semantics.md` |
|
|
33
|
+
| Expression | `expression/index.md` | `expression/direction-brief.md`, `expression/brand-studies.md`, `expression/directions/nocturne-editorial.md`, `expression/directions/warm-print.md`, `expression/techniques/gradient-atmosphere.md`, `expression/techniques/grain-and-texture.md`, `expression/techniques/webgl-hero.md` |
|
|
34
34
|
|
|
35
35
|
## Shared Non-Domain Infrastructure
|
|
36
36
|
|
|
37
37
|
[Consumer Reference](consumer-reference/index.md) is shared schema, provenance, routing, evidence, lifecycle, and machine-retrieval infrastructure outside the six-domain contract. Its source-bound material v2 index classifies admitted pages by these six domains but does not own their prose. It owns no profile implementation, visual values, or product CSS and cannot add a seventh domain row. Consumer or profile records may depend on Layout; Layout and its generated corpus cannot import consumer-reference, profile, material-registry, or transport records.
|
|
38
38
|
|
|
39
|
+
## Showcase Work Area
|
|
40
|
+
|
|
41
|
+
[Showcase](showcase/README.md) holds finished, expressive product pages. It is not a domain and owns no governed guidance. Its works depend on Layout, Expression, and Motion; no domain depends on them. Layout authoring rules do not apply to showcase CSS. Instead, each work must pass the outcome checks in `scripts/check-showcase.mjs`, defined by the [Showcase QA contract](showcase/QA.md). Values proven in a work re-enter the governed corpus only by being written into an Expression or Motion page.
|
|
42
|
+
|
|
39
43
|
## External Adaptation Contract
|
|
40
44
|
|
|
41
45
|
The initial five domain leaves are independent method rewrites inspired by [emilkowalski/skills](https://github.com/emilkowalski/skills) at snapshot `220e8607c90b17337d210125777b7b695f26c221`. Other adapted leaves record their own repositories and revisions in page metadata.
|
package/GOVERNANCE.md
CHANGED
|
@@ -23,10 +23,10 @@ Use this file before editing repository documentation. It names which file is au
|
|
|
23
23
|
| Layout recipes | `recipes/*.md` | Manual | None | `stable` | Pattern-stack changes, route changes, or broken recipe links. | `scripts/validate-okf.mjs`, `scripts/validate-links.mjs`, `scripts/validate-ia.mjs` | Recipe owner |
|
|
24
24
|
| Quality gates and evidence | `quality/**/*.md` | Manual | None | `stable` | Claim-boundary changes, evidence-family changes, or broken quality links. | `scripts/validate-okf.mjs`, `scripts/validate-links.mjs`, `scripts/validate-ia.mjs` | Quality owner |
|
|
25
25
|
| Consumer reference contract | `consumer-reference/contract.md`, `consumer-reference/schema/item.schema.json` | Manual | None | `stable` contract with related fixtures | Handoff shape, path boundary, lifecycle, ownership, or dependency-direction changes. | `scripts/validate-consumer-reference.mjs`, `scripts/test-validate-consumer-reference.mjs` | Repository governance owner with Validation owner |
|
|
26
|
-
| Agent-native knowledge interface v1 | `consumer-reference/agent-native/registry.json`, `consumer-reference/agent-native/schema/*.json`, `scripts/agent-native/{registry,identity,queries}.mjs`, `scripts/sg.mjs`, `scripts/sg-mcp.mjs` | Manual, with protocol projections derived from one operation registry | Frozen v1 CLI JSON, read-only MCP tools/resources, and compatibility projections | `experimental`, byte-compatible v1 interface | Identity grammar, canonical hashing, registry records, operation metadata, capability/effect semantics, receipt/conformance rules, or retrieval changes. | `
|
|
27
|
-
| Governed material interface v2 | `consumer-reference/agent-native/v2/admission-policy.json`, its closed schemas, and admitted tracked Markdown | `scripts/agent-native/v2/generate-material-registry.mjs` | `consumer-reference/agent-native/v2/material-registry.json`; separate `sg-material` CLI and material MCP | `experimental`, read-only and isolated from v1 | Admission roots/exclusions, source hash, identity, operation inventory, query/context bounds, package exposure, or source drift changes. | `
|
|
26
|
+
| Agent-native knowledge interface v1 | `consumer-reference/agent-native/registry.json`, `consumer-reference/agent-native/schema/*.json`, `scripts/agent-native/{registry,identity,queries}.mjs`, `scripts/sg.mjs`, `scripts/sg-mcp.mjs` | Manual, with protocol projections derived from one operation registry | Frozen v1 CLI JSON, read-only MCP tools/resources, and compatibility projections | `experimental`, byte-compatible v1 interface | Identity grammar, canonical hashing, registry records, operation metadata, capability/effect semantics, receipt/conformance rules, or retrieval changes. | `bun run test:agent-native` | Repository governance owner with Validation owner |
|
|
27
|
+
| Governed material interface v2 | `consumer-reference/agent-native/v2/admission-policy.json`, its closed schemas, and admitted tracked Markdown | `scripts/agent-native/v2/generate-material-registry.mjs` | `consumer-reference/agent-native/v2/material-registry.json`; separate `sg-material` CLI and material MCP | `experimental`, read-only and isolated from v1 | Admission roots/exclusions, source hash, identity, operation inventory, query/context bounds, package exposure, or source drift changes. | `bun run validate:material`, `bun run test:material`, generated drift | Repository governance owner with Validation owner |
|
|
28
28
|
| Experimental protocol extensions | `scripts/agent-native/v2/experimental-extension-registry.mjs`, `scripts/agent-native/v2/extensions/*.mjs`, lifecycle extension records | Manual | A2A `1.0` and AG-UI `0.0.57` projections | `experimental`, retained pending owner review | Protocol version, caller inventory, forwarding, migration evidence, or disposition changes. | `scripts/agent-native/v2/test-agent-extension-boundary.mjs`, lifecycle suites | Repository governance owner with protocol and Validation owners |
|
|
29
|
-
| Lifecycle dispositions and archives | `consumer-reference/policies/lifecycle-dispositions.json`, its five records, and `consumer-reference/schema/lifecycle-disposition.schema.json` | Manual, with immutable archive receipts | Retrieval metadata for historical sentinel/calibration and page evidence | `pending_owner` for three families; both extensions `retain` | Owner, deadline, caller status, archive object/ref, approval, transition, or post-deadline action changes. | `
|
|
29
|
+
| Lifecycle dispositions and archives | `consumer-reference/policies/lifecycle-dispositions.json`, its five records, and `consumer-reference/schema/lifecycle-disposition.schema.json` | Manual, with immutable archive receipts | Retrieval metadata for historical sentinel/calibration and page evidence | `pending_owner` for three families; both extensions `retain` | Owner, deadline, caller status, archive object/ref, approval, transition, or post-deadline action changes. | `bun run validate:lifecycle-dispositions`, `bun run test:lifecycle-dispositions` | Repository governance owner with named family owner and Validation owner |
|
|
30
30
|
| Portable token source | `consumer-reference/fixtures/token-portability/valid-reference.json`, `consumer-reference/schema/portable-tokens.schema.json` | `scripts/build-reference-artifacts.mjs` with Style Dictionary `5.5.0` | `consumer-reference/generated/tokens.css`, `consumer-reference/generated/manifest.json` | `stable` restricted adapter contract, `generated` output | Allowed token shape, adapter/version pin, source token count, warning, declaration, or content hash changes. | `scripts/validate-reference-artifacts.mjs`, `scripts/test-reference-adapters.mjs` | Repository governance owner with Validation owner |
|
|
31
31
|
| Governed local reference profiles | `design-engineering/reference-profiles/governed-local/editorial/profile.json`, `design-engineering/reference-profiles/governed-local/editorial/tokens.dtcg.json`, `design-engineering/reference-profiles/governed-local/editorial/local-foundations.json`, `design-engineering/reference-profiles/governed-local/terminal/profile.json`, `design-engineering/reference-profiles/governed-local/terminal/tokens.dtcg.json`, `design-engineering/reference-profiles/governed-local/terminal/local-foundations.json` | Manual | None | `experimental`, `example_only`, non-default related fixtures | Layout revision, identity values, UA/reset assumptions, explicit selection, or fixture relationship changes. | `scripts/validate-consumer-reference.mjs`, `scripts/test-validate-consumer-reference.mjs` | Design Engineering owner with Validation owner |
|
|
32
32
|
| Component-state evidence matrices | Each profile's declared `components/*.component.json`, `states/*.states.json`, `fixtures/*.fixture.json`, and `evidence/*.evidence.json` records | `scripts/generate-consumer-reference-evidence.mjs` | `design-engineering/reference-profiles/governed-local/editorial/generated/state-matrix.md`, `design-engineering/reference-profiles/governed-local/editorial/generated/keyboard-matrix.md`, `design-engineering/reference-profiles/governed-local/editorial/generated/evidence-coverage.md`, `design-engineering/reference-profiles/governed-local/terminal/generated/state-matrix.md`, `design-engineering/reference-profiles/governed-local/terminal/generated/keyboard-matrix.md`, `design-engineering/reference-profiles/governed-local/terminal/generated/evidence-coverage.md` | `generated` output from `experimental` canonical records | Declared record paths, capture-session identity, scenario/mode/channel counts, claim boundary, generated escaping, or generator output changes. | `scripts/validate-component-state.mjs`, `scripts/test-validate-component-state.mjs`, `scripts/test-validate-component-state-artifacts.mjs`, `scripts/test-generate-consumer-reference-evidence.mjs` | Design Engineering owner with Validation owner |
|
|
@@ -40,9 +40,10 @@ Use this file before editing repository documentation. It names which file is au
|
|
|
40
40
|
| Layout domain hub | `layout/index.md` | Manual | None | `stable` | Layout route or ownership changes. | `scripts/validate-domains.mjs`, `scripts/validate-ia.mjs` | Pattern-data owner |
|
|
41
41
|
| Motion domain guidance | `motion/*.md` | Manual | None | `experimental` | Upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Motion domain owner |
|
|
42
42
|
| Design Engineering domain guidance | `design-engineering/*.md`, `design-engineering/state-management/**/*.md` | Manual | None | `experimental` | Upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Design Engineering domain owner |
|
|
43
|
-
| Game UI domain guidance | `game-ui/**/*.md` | Manual | None | `experimental` | Classification, hierarchy, engine implementation, evidence boundary, or route changes. | `scripts/validate-domains.mjs` | Game UI domain owner |
|
|
44
43
|
| Platform Guides domain guidance | `platform-guides/*.md` | Manual | None | `experimental` | Platform version, upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Platform Guides domain owner |
|
|
45
44
|
| Design Terminology domain guidance | `design-terminology/*.md` | Manual; term and relation tables remain authoring sources | None | `experimental` | Source-kind, source-vocabulary, concept-family, relation-model, or conflict-case changes. | `scripts/validate-domains.mjs`, `scripts/validate-design-terminology.mjs` | Design Terminology domain owner |
|
|
45
|
+
| Expression domain guidance | `expression/**/*.md` | Manual | None | `experimental` | Direction value, technique code, brand-study policy, or guidance changes. | `scripts/validate-domains.mjs` | Expression domain owner |
|
|
46
|
+
| Showcase works | `showcase/**` | Manual | None | `experimental` | Work content, brief contract, or outcome-check changes. | `scripts/check-showcase.mjs`, `scripts/test-check-showcase.mjs` | Expression domain owner |
|
|
46
47
|
| Pattern data and examples | `scripts/pattern-data.mjs` | Manual data source | `patterns/**/*.md`, `patterns/**/index.md`, `patterns/index.md`, `CATALOG.md` | `generated` output from `stable` source | Source-lineage URL changes, generated drift, category changes, or pattern count changes. | `scripts/validate-patterns.mjs`, `scripts/validate-catalog.mjs`, `scripts/validate-governance.mjs` | Pattern-data owner |
|
|
47
48
|
| Pattern generator | `scripts/generate-patterns.mjs` | Manual code source | `patterns/**/*.md`, `patterns/**/index.md`, `patterns/index.md`, `CATALOG.md` | `stable` generator, `generated` output | Generated structure changes, generated-warning changes, or generated metadata changes. | `node -c scripts/generate-patterns.mjs`, generated drift check, `scripts/validate-governance.mjs` | Pattern-data owner |
|
|
48
49
|
| Validation scripts | `scripts/validate-*.mjs`, `scripts/test-validate-*.mjs` | Manual code source | CI validation output | `stable` | Validator scope changes, fixture changes, or CI parity changes. | `node -c`, matching fixture tests, `.github/workflows/validate.yml` | Validation owner |
|
|
@@ -80,7 +81,7 @@ Current generated artifacts:
|
|
|
80
81
|
- `design-engineering/reference-profiles/governed-local/terminal/generated/evidence-coverage.md`
|
|
81
82
|
- `tests/snapshots/consumer-reference-card-grid.png` (proposed; update only by an explicit local baseline proposal, never in CI)
|
|
82
83
|
|
|
83
|
-
Portable token artifacts are regenerated only from the restricted fixture through the pinned adapter. Run `
|
|
84
|
+
Portable token artifacts are regenerated only from the restricted fixture through the pinned adapter. Run `bun run build`; never broaden the allowed token subset to accommodate an adapter false-success, and revert the adapter with both generated files if the pin regresses.
|
|
84
85
|
|
|
85
86
|
Component-state evidence matrices are regenerated only from the records declared by each `profile.json`. Run `node scripts/generate-consumer-reference-evidence.mjs --json`; never hand-edit any of the six matrices or substitute undeclared record paths.
|
|
86
87
|
|
|
@@ -105,7 +106,8 @@ Use these states in reviews and governance notes. Do not invent new lifecycle la
|
|
|
105
106
|
Default lifecycle:
|
|
106
107
|
|
|
107
108
|
- Root docs, guides, recipes, quality docs, validators, and CI are `stable` unless a page explicitly says otherwise.
|
|
108
|
-
- `DOMAINS.md`, the scope decision, and `layout/index.md` are `stable`; domain leaves under `motion/`, `design-engineering/`, `
|
|
109
|
+
- `DOMAINS.md`, the scope decision, and `layout/index.md` are `stable`; domain leaves under `motion/`, `design-engineering/`, `platform-guides/`, `design-terminology/`, and `expression/` begin `experimental`.
|
|
110
|
+
- `showcase/` works are `experimental` product pages. Layout authoring rules do not apply to them; the `scripts/check-showcase.mjs` outcome checks in [Showcase QA](showcase/QA.md) do.
|
|
109
111
|
- Generated pattern docs, generated pattern indexes, and `CATALOG.md` are `generated`.
|
|
110
112
|
- Draft research artifacts under `.omo/` are `draft` or `experimental` and are not contributor-facing source of truth.
|
|
111
113
|
|
|
@@ -130,9 +132,9 @@ Consumer-reference ownership records the current truth as `owner.enforcement: "p
|
|
|
130
132
|
| `design-engineering/**` | Design Engineering domain owner | Separation of product heuristics from shared quality gates. |
|
|
131
133
|
| `design-engineering/reference-profiles/**` | Design Engineering owner with Validation owner | Profile-local identity and values, pinned Layout provenance, explicit non-default selection, and related-fixture truth. |
|
|
132
134
|
| `tests/**`, `playwright.config.mjs`, `consumer-reference/baselines/**`, `scripts/*baseline*.mjs`, `scripts/*sentinel*.mjs`, `scripts/*renderer-purity.mjs` | Repository governance owner with Validation owner | Pure rendering, computed semantics before screenshots, immutable browser pins, required consumer-conformance semantics, optional raster capture, calibration cardinality, and pending owner approval. |
|
|
133
|
-
| `game-ui/**` | Game UI domain owner | Player-task classification, hierarchy responsibility, reference records, engine-specific subtrees, and cross-engine boundaries. |
|
|
134
135
|
| `platform-guides/**` | Platform Guides domain owner | Platform/source/version limits, comparison boundaries, and stale review. |
|
|
135
136
|
| `design-terminology/**` | Design Terminology domain owner | Term-family classification, comparative system definitions, conflict-case boundaries, and external vocabulary citations. |
|
|
137
|
+
| `expression/**`, `showcase/**`, `scripts/*showcase*.mjs` | Expression domain owner | Direction values stay out of Layout, brand studies follow policy, and techniques keep reduced-motion and offscreen behavior explicit. |
|
|
136
138
|
| `scripts/validate-*.mjs`, `scripts/test-validate-*.mjs`, `.github/workflows/validate.yml`, `.github/workflows/evidence-freshness.yml` | Validation owner | Validator scope, negative fixtures, blocking/advisory boundaries, CI parity. |
|
|
137
139
|
|
|
138
140
|
## Shared Promotion Governance
|
|
@@ -183,7 +185,7 @@ node scripts/validate-catalog.mjs --json
|
|
|
183
185
|
For portable token source, adapter, or generated artifact changes, run:
|
|
184
186
|
|
|
185
187
|
```sh
|
|
186
|
-
|
|
188
|
+
bun install --frozen-lockfile --ignore-scripts
|
|
187
189
|
node scripts/build-reference-artifacts.mjs --adapter style-dictionary --fail-on-warning --json
|
|
188
190
|
node scripts/validate-reference-artifacts.mjs --manifest consumer-reference/generated/manifest.json --json
|
|
189
191
|
node scripts/test-reference-adapters.mjs --json
|
|
@@ -193,7 +195,7 @@ git diff --exit-code -- consumer-reference/generated
|
|
|
193
195
|
For the proposed Chromium sentinel, also run:
|
|
194
196
|
|
|
195
197
|
```sh
|
|
196
|
-
|
|
198
|
+
bun run test:sentinel
|
|
197
199
|
node scripts/test-consumer-reference-sentinel.mjs
|
|
198
200
|
node scripts/validate-baseline-manifest.mjs --json
|
|
199
201
|
node scripts/test-validate-baseline-manifest.mjs --json
|
|
@@ -210,13 +212,13 @@ mkdir -p "$STATE_EVIDENCE_ROOT"
|
|
|
210
212
|
node scripts/create-component-state-session.mjs --output "$STATE_EVIDENCE_ROOT/capture-session.json" --json
|
|
211
213
|
STATE_SESSION_RECEIPT="$STATE_EVIDENCE_ROOT/capture-session.json" \
|
|
212
214
|
STATE_ARTIFACT_DIR="$STATE_EVIDENCE_ROOT/runtime" \
|
|
213
|
-
|
|
215
|
+
bun run test:component-state:runtime -- --reporter=line
|
|
214
216
|
node scripts/finalize-component-state-evidence.mjs --artifact-root "$STATE_EVIDENCE_ROOT" --json
|
|
215
217
|
node scripts/validate-component-state.mjs \
|
|
216
218
|
--artifact-root "$STATE_EVIDENCE_ROOT" \
|
|
217
219
|
--runtime-manifest "$STATE_EVIDENCE_ROOT/runtime-manifest.json" \
|
|
218
220
|
--json
|
|
219
|
-
|
|
221
|
+
bun run test:component-state:runtime-negative
|
|
220
222
|
```
|
|
221
223
|
|
|
222
224
|
For shared promotion governance, also run:
|
package/LICENSE-DOCS
CHANGED
|
@@ -3,8 +3,8 @@ Creative Commons Attribution 4.0 International (CC BY 4.0)
|
|
|
3
3
|
Copyright (c) 2026 IYEN
|
|
4
4
|
|
|
5
5
|
This license applies to the documentation in this repository: the Markdown
|
|
6
|
-
documents of the Layout, Motion, Design Engineering,
|
|
7
|
-
and
|
|
6
|
+
documents of the Layout, Motion, Design Engineering, Platform Guides, Design
|
|
7
|
+
Terminology, and Expression domains, including `patterns/`, `recipes/`, `guides/`,
|
|
8
8
|
`GUIDE.md`, `CATALOG.md`, the domain index and contract documents, the
|
|
9
9
|
observation transcription formats, and the generated documentation under
|
|
10
10
|
`site/` that is derived from them.
|
package/README.md
CHANGED
|
@@ -64,11 +64,13 @@ Start with `sg workflow` to select the stages for reconstruction, adaptation, or
|
|
|
64
64
|
Material v2 searches the admitted Markdown corpus and returns JSON without an additional format flag:
|
|
65
65
|
|
|
66
66
|
```sh
|
|
67
|
-
sg-material discover
|
|
68
|
-
sg-material search --query "sticky layout" --paths-only --limit 5
|
|
69
|
-
sg-material context --query "responsive sidebar" --budget-tokens 4096
|
|
67
|
+
npx --package stylegallery sg-material discover
|
|
68
|
+
npx --package stylegallery sg-material search --query "sticky layout" --paths-only --limit 5
|
|
69
|
+
npx --package stylegallery sg-material context --query "responsive sidebar" --budget-tokens 4096
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
With a global install, the same commands are available as `sg-material discover`, `sg-material search`, and `sg-material context`.
|
|
73
|
+
|
|
72
74
|
For a coding agent with repository filesystem access, local guided traversal is the default: read `AGENTS.md` and this README, follow the narrowest relevant task route or domain index, and inspect the selected Markdown files directly. Use `search --paths-only` only when the path is unclear; it returns a deterministic `paths` array of repository-relative candidates without full result metadata. Reserve `context` for environments that cannot read repository files or for transferring a bounded, provenance-linked package.
|
|
73
75
|
|
|
74
76
|
### Worked homepage example
|
|
@@ -100,9 +102,20 @@ Example MCP client configuration:
|
|
|
100
102
|
}
|
|
101
103
|
```
|
|
102
104
|
|
|
103
|
-
The main MCP server exposes governed read operations and compiler execution tools. Configure `SG_COMPILER_ROOT` in its environment to use the compiler. Execution tools declare file and network effects; the knowledge registry remains a read-only API. The frozen read-only server remains available as `
|
|
105
|
+
The main MCP server exposes governed read operations and compiler execution tools. Configure `SG_COMPILER_ROOT` in its environment to use the compiler. Execution tools declare file and network effects; the knowledge registry remains a read-only API. The frozen read-only server remains available as `bun run sg:mcp:v1`.
|
|
106
|
+
|
|
107
|
+
The separate Material v2 MCP server is available as `stylegallery-material-mcp`. Attach it for Markdown retrieval and authoring work; the main server covers governed knowledge reads and compiler execution.
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mcpServers": {
|
|
112
|
+
"stylegallery-material": {
|
|
113
|
+
"command": "npx",
|
|
114
|
+
"args": ["--yes", "--package", "stylegallery", "stylegallery-material-mcp"]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
106
119
|
|
|
107
120
|
## 한국어 빠른 시작
|
|
108
121
|
|
|
@@ -132,9 +145,9 @@ For UI state ownership, asynchronous races, drafts, URL/history, and persistence
|
|
|
132
145
|
| [Layout](layout/index.md) | Semantic spatial structure, flow, sizing, alignment, containment, scrolling, and composition. | Brand, typography, color, shadow, animation, and product decoration. |
|
|
133
146
|
| [Motion](motion/index.md) | Motion terminology, review procedure, and evidence-bounded practice guidance. | Universal timing/easing rules or permission to add motion to reusable Layout CSS. |
|
|
134
147
|
| [Design Engineering](design-engineering/index.md) | Product-layer craft decisions and verification questions. | A second universal principle set or taste as evidence. |
|
|
135
|
-
| [Game UI](game-ui/index.md) | Game-interface classification, hierarchy, reference records, and engine-specific implementation guides. | Reusable Layout CSS or claims that one engine structure is universal. |
|
|
136
148
|
| [Platform Guides](platform-guides/index.md) | Bounded comparison with named platform conventions. | Affiliation, imitation, or authority over web and accessibility contracts. |
|
|
137
149
|
| [Design Terminology](design-terminology/index.md) | Comparative design-term definitions, term families, and cross-system conflict cases for named systems. | StyleGallery's own vocabulary, motion terminology, visual token values, or authority over external vocabularies. |
|
|
150
|
+
| [Expression](expression/index.md) | Art direction for finished pages: direction briefs, named directions with values, visual technique recipes, and brand-study policy. | Layout mechanics, motion timing, governed tokens, or decorative values in reusable Layout pattern CSS. |
|
|
138
151
|
|
|
139
152
|
The canonical domain manifest and provenance policy are in [StyleGallery Domains](DOMAINS.md).
|
|
140
153
|
|
|
@@ -144,7 +157,6 @@ The canonical domain manifest and provenance policy are in [StyleGallery Domains
|
|
|
144
157
|
| --- | --- | --- |
|
|
145
158
|
| Design a transition | [Motion Decision Tree](motion/decision-tree.md) | [Brief](motion/motion-brief.md), [interaction recipes](motion/interaction-recipes.md), and [review](motion/review-workflow.md) |
|
|
146
159
|
| Build a product interaction | [Design Engineering Decision Tree](design-engineering/decision-tree.md) | [Component contract](design-engineering/component-contract.md) and [worked examples](design-engineering/worked-examples.md) |
|
|
147
|
-
| Compose a game screen | [Game UI Decision Tree](game-ui/decision-tree.md) | [Screen recipes](game-ui/screen-recipes.md) and [verification workflow](game-ui/verification-workflow.md) |
|
|
148
160
|
| Adapt a platform convention | [Platform Adaptation Workflow](platform-guides/adaptation-workflow.md) | [Apple](platform-guides/apple-interaction.md), [Android](platform-guides/android-interaction.md), [Windows](platform-guides/windows-interaction.md), and [compatibility matrix](platform-guides/compatibility-matrix.md) |
|
|
149
161
|
| Resolve a terminology conflict | [Design Term Comparison Workflow](design-terminology/comparison-workflow.md) | [Directly sourced term cases](design-terminology/conflict-cases.md) and [relation rules](design-terminology/relation-types.md) |
|
|
150
162
|
|
|
@@ -169,9 +181,10 @@ Use each root hub for one primary job.
|
|
|
169
181
|
| [Layout](layout/index.md) | Layout domain hub | You need reusable spatial patterns, recipes, or planning routes. |
|
|
170
182
|
| [Motion](motion/index.md) | Motion domain hub | You need motion terminology, review procedure, or practice evidence. |
|
|
171
183
|
| [Design Engineering](design-engineering/index.md) | Design Engineering domain hub | You need product-level interface-craft decision guidance. |
|
|
172
|
-
| [Game UI](game-ui/index.md) | Game UI domain hub | You need to classify a game interface or understand its screen hierarchy. |
|
|
173
184
|
| [Platform Guides](platform-guides/index.md) | Platform Guides domain hub | You need a bounded platform comparison. |
|
|
174
185
|
| [Design Terminology](design-terminology/index.md) | Design Terminology domain hub | You need to compare how named design systems define or classify design terms. |
|
|
186
|
+
| [Expression](expression/index.md) | Expression domain hub | You need a page to look and feel finished: type, color, texture, atmosphere, or a brand study. |
|
|
187
|
+
| [Showcase](showcase/README.md) | Free-form work area | You are building a complete expressive page checked by outcome instead of Layout authoring rules. |
|
|
175
188
|
|
|
176
189
|
## Task Routes
|
|
177
190
|
|
|
@@ -184,9 +197,9 @@ Each common task has one primary route. Use secondary links only after the prima
|
|
|
184
197
|
| `name or review interface motion` | [Motion](motion/index.md) | It routes to bounded terminology and review guidance. |
|
|
185
198
|
| `review product-level interface craft` | [Design Engineering](design-engineering/index.md) | It separates practitioner heuristics from shared quality gates. |
|
|
186
199
|
| `compare adversarial consumer identities` | [Reference Profiles](design-engineering/reference-profiles/index.md) | It keeps non-default product values in related Design Engineering examples over one pinned Layout source. |
|
|
187
|
-
| `classify a game interface or map it to an engine` | [Game UI](game-ui/index.md) | It separates engine-neutral roles from implementation-specific guidance. |
|
|
188
200
|
| `compare a named platform convention` | [Platform Guides](platform-guides/index.md) | It requires platform and evidence boundaries before adaptation. |
|
|
189
201
|
| `compare how design systems define a term` | [Design Terminology](design-terminology/index.md) | It separates external terminology comparison from StyleGallery's own controlled vocabulary. |
|
|
202
|
+
| `build a striking landing page in one shot` | [Showcase](showcase/README.md) | It removes Layout authoring rules, supplies directions and techniques, and checks the result by outcome. |
|
|
190
203
|
| `turn raw content into a homepage or ordinary webpage` | [Webpage Generation Workflow](guides/webpage-generation-workflow.md) | It starts with use case, content-to-layout fit, harmony, and handoff. |
|
|
191
204
|
| `plan a screen before the layout problem is obvious` | [Layout Planning Guide](GUIDE.md) | It sequences task, content, scroll, recipe, and verification choices. |
|
|
192
205
|
| `choose a pattern when the name is unknown` | [Decision Tree](guides/decision-tree.md) | It routes from constraints to pattern categories. |
|
|
@@ -213,7 +226,7 @@ Each common task has one primary route. Use secondary links only after the prima
|
|
|
213
226
|
## How To Use This Repository
|
|
214
227
|
|
|
215
228
|
- Start with [StyleGallery Domains](DOMAINS.md) when the owning domain is not already clear.
|
|
216
|
-
- Use [Layout](layout/index.md), [Motion](motion/index.md), [Design Engineering](design-engineering/index.md), [
|
|
229
|
+
- Use [Layout](layout/index.md), [Motion](motion/index.md), [Design Engineering](design-engineering/index.md), [Platform Guides](platform-guides/index.md), [Design Terminology](design-terminology/index.md), or [Expression](expression/index.md) as the domain-local entry point.
|
|
217
230
|
- Start with [Layout Planning Guide](GUIDE.md) when you are designing a screen before a layout problem is obvious.
|
|
218
231
|
- Use the [Webpage Generation Workflow](guides/webpage-generation-workflow.md) when raw content needs to become a homepage or ordinary webpage before a layout recipe is obvious.
|
|
219
232
|
- Use the [Documentation Mode Taxonomy](guides/documentation-mode-taxonomy.md) when adding or reviewing docs so each page has a clear primary reading mode.
|
|
@@ -250,63 +250,43 @@
|
|
|
250
250
|
"lifecycle": "experimental"
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
|
-
"repository_path": "
|
|
254
|
-
"domain": "
|
|
253
|
+
"repository_path": "expression/brand-studies.md",
|
|
254
|
+
"domain": "expression",
|
|
255
255
|
"lifecycle": "experimental"
|
|
256
256
|
},
|
|
257
257
|
{
|
|
258
|
-
"repository_path": "
|
|
259
|
-
"domain": "
|
|
258
|
+
"repository_path": "expression/direction-brief.md",
|
|
259
|
+
"domain": "expression",
|
|
260
260
|
"lifecycle": "experimental"
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
|
-
"repository_path": "
|
|
264
|
-
"domain": "
|
|
263
|
+
"repository_path": "expression/directions/nocturne-editorial.md",
|
|
264
|
+
"domain": "expression",
|
|
265
265
|
"lifecycle": "experimental"
|
|
266
266
|
},
|
|
267
267
|
{
|
|
268
|
-
"repository_path": "
|
|
269
|
-
"domain": "
|
|
268
|
+
"repository_path": "expression/directions/warm-print.md",
|
|
269
|
+
"domain": "expression",
|
|
270
270
|
"lifecycle": "experimental"
|
|
271
271
|
},
|
|
272
272
|
{
|
|
273
|
-
"repository_path": "
|
|
274
|
-
"domain": "
|
|
273
|
+
"repository_path": "expression/index.md",
|
|
274
|
+
"domain": "expression",
|
|
275
275
|
"lifecycle": "experimental"
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
|
-
"repository_path": "
|
|
279
|
-
"domain": "
|
|
278
|
+
"repository_path": "expression/techniques/gradient-atmosphere.md",
|
|
279
|
+
"domain": "expression",
|
|
280
280
|
"lifecycle": "experimental"
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
|
-
"repository_path": "
|
|
284
|
-
"domain": "
|
|
283
|
+
"repository_path": "expression/techniques/grain-and-texture.md",
|
|
284
|
+
"domain": "expression",
|
|
285
285
|
"lifecycle": "experimental"
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
|
-
"repository_path": "
|
|
289
|
-
"domain": "
|
|
290
|
-
"lifecycle": "experimental"
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
"repository_path": "game-ui/unity/org-wiki.md",
|
|
294
|
-
"domain": "game-ui",
|
|
295
|
-
"lifecycle": "experimental"
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
"repository_path": "game-ui/unity/repository-map.md",
|
|
299
|
-
"domain": "game-ui",
|
|
300
|
-
"lifecycle": "experimental"
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
"repository_path": "game-ui/unity/ui-systems.md",
|
|
304
|
-
"domain": "game-ui",
|
|
305
|
-
"lifecycle": "experimental"
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
"repository_path": "game-ui/verification-workflow.md",
|
|
309
|
-
"domain": "game-ui",
|
|
288
|
+
"repository_path": "expression/techniques/webgl-hero.md",
|
|
289
|
+
"domain": "expression",
|
|
310
290
|
"lifecycle": "experimental"
|
|
311
291
|
},
|
|
312
292
|
{
|
|
@@ -399,6 +379,16 @@
|
|
|
399
379
|
"domain": "motion",
|
|
400
380
|
"lifecycle": "experimental"
|
|
401
381
|
},
|
|
382
|
+
{
|
|
383
|
+
"repository_path": "motion/techniques/kinetic-type.md",
|
|
384
|
+
"domain": "motion",
|
|
385
|
+
"lifecycle": "experimental"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"repository_path": "motion/techniques/scroll-choreography.md",
|
|
389
|
+
"domain": "motion",
|
|
390
|
+
"lifecycle": "experimental"
|
|
391
|
+
},
|
|
402
392
|
{
|
|
403
393
|
"repository_path": "motion/vocabulary.md",
|
|
404
394
|
"domain": "motion",
|
|
@@ -908,6 +898,11 @@
|
|
|
908
898
|
"repository_path": "recipes/saas-settings.md",
|
|
909
899
|
"domain": "layout",
|
|
910
900
|
"lifecycle": "stable"
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"repository_path": "showcase/README.md",
|
|
904
|
+
"domain": "shared",
|
|
905
|
+
"lifecycle": "experimental"
|
|
911
906
|
}
|
|
912
907
|
],
|
|
913
908
|
"exclusions": [
|
|
@@ -987,5 +982,5 @@
|
|
|
987
982
|
"code": "material_path_internal_excluded"
|
|
988
983
|
}
|
|
989
984
|
],
|
|
990
|
-
"version_id": "sg:policy/material-admission-v2@sha256:
|
|
985
|
+
"version_id": "sg:policy/material-admission-v2@sha256:02255d8e50f11d93e31481ce0014e0ec70062b56fc7be4dc3c34389875dad754"
|
|
991
986
|
}
|