@echelon-foundry/design-system 0.13.0-main.265.1 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,12 +7,18 @@ published as GitHub release tarballs
7
7
  and to npm. Earlier releases are described in `docs/CONSUMING-FORMA.md` and
8
8
  `HANDOFF.md`.
9
9
 
10
- ## Unreleased
10
+ ## 0.13.1
11
11
 
12
- Patch candidate (proposed 0.13.1): marketing containment (MKT-CONTAIN, WI-0043). Found by the Echelon Diagnostic Framework site migration to 0.13.0. No class, token, element or attribute was removed or renamed.
12
+ Patch release with two fixes:
13
+
14
+ - marketing containment (MKT-CONTAIN, WI-0043), found by the Echelon Diagnostic Framework site migration to 0.13.0;
15
+ - the record header's type label below 24em (GH-179, WI-0044), found by Signal's upgrade to 0.13.0.
16
+
17
+ No class, token, element or attribute was removed or renamed.
13
18
 
14
19
  ### Fixed
15
20
  - **Text containment in marketing components.** LRP-001 (0.13.0) passed `overflow-wrap: break-word` only to the application containers. Marketing components hold the same kind of content, so list items, spans and divs inside them could still escape: on 0.13.0 a release URL in a `span` escaped `.ef-card` by 160px at 320px, and at 200% text ordinary list words ("explanations", "propagation") escaped a card by up to 18px. `.ef-site` now passes `break-word` from `.ef-hero`, `.ef-section-heading`, `.ef-card`, `.ef-facts`, `.ef-index`, `.ef-callout`, `.ef-cta`, `.ef-split`, `.ef-doc`, `.ef-prose`, `.ef-statement` and `.ef-site-footer`. Words that fit are never split; declared values (badges, steps, code) are unchanged.
21
+ - **Record header type label below 24em (GH-179).** In 0.13.0 the header's `@container (max-width: 24em)` rule dropped the title grid's rows, but the identity block stayed `grid-template-rows: subgrid`, so the type label collapsed onto the title. It overlapped by 120–145px at 320–375px and by up to 790px at 200% text in the LRP-001 fixture, and in Signal it overlapped the page title on phones. The identity block now uses its own implicit rows below 24em, so the label sits above the title as it did in 0.6.1. Nothing changes above 24em.
16
22
  - **Toned CTA at narrow widths.** `.ef-cta[data-ef-tone]` caps its inline padding at `12.5vw`, as a toned `.ef-section` already does (ULI-L05). At 320px and 200% text the uncapped padding left a 96px content box. Nothing changes at the default text size.
17
23
 
18
24
  ### Added
@@ -20,6 +26,7 @@ Patch candidate (proposed 0.13.1): marketing containment (MKT-CONTAIN, WI-0043).
20
26
 
21
27
  ### Tests
22
28
  - `tests/workflow/Forma.Workflow.Tests/RequirementIdentityTests.fs` (11 cases) and `tests/browser/requirement-identity.spec.mjs` with the generated `tests/browser/fixture/requirement-identity.html`: placement on the control, untouched attributes, label association and role, stability across re-render, refusal of unrelated or ambiguous elements, instance keys, duplicate detection, hidden and disabled states.
29
+ - `tests/browser/layout-reliability.spec.mjs`: the record header's type label ends at or above its title at 320, 375, 768 and 1280px with default and 200% text (GH-179). It fails on 0.13.0 at five of those eight points; containment could not see the defect because both boxes stay inside the header.
23
30
  - `tests/browser/marketing-containment.spec.mjs` with `tests/browser/fixture/marketing-containment.html`: containment of every marketing container at 320, 375, 768 and 1280px with default and 200% text, the toned-CTA line length, and that fitting words in cards are not split. Nine of its ten tests fail on 0.13.0.
24
31
 
25
32
  ## 0.13.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "format": "forma.color-contract/1.0.0",
3
- "formaVersion": "0.13.0",
3
+ "formaVersion": "0.13.1",
4
4
  "validationScope": "CSS var() references to --ef-color-* plus reserved internal color-related prefixes; other Forma APIs are governed by their own contracts.",
5
5
  "compatibility": {
6
6
  "policy": "Validate with the contract shipped by the pinned Forma package version.",
package/dist/all.css CHANGED
@@ -3241,7 +3241,10 @@
3241
3241
  .ef-record-header__title > :not(:first-child) { grid-row: 2; }
3242
3242
  @container (max-width: 24em) {
3243
3243
  .ef-record-header__title { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
3244
- .ef-record-header__title > :first-child { grid-row: auto; }
3244
+ /* The title grid has no rows here, so the identity block cannot stay a
3245
+ subgrid: it would collapse the type label onto the title (GH-179).
3246
+ Its own implicit rows keep the label above the title. */
3247
+ .ef-record-header__title > :first-child { grid-row: auto; grid-template-rows: none; }
3245
3248
  .ef-record-header__title > :not(:first-child) { grid-row: auto; justify-self: start; }
3246
3249
  }
3247
3250
  .ef-record-header__title h2 { margin: 0.15rem 0 0; }
@@ -342,12 +342,12 @@
342
342
  "tokens.css"
343
343
  ],
344
344
  "bytes": {
345
- "all.css": 346039,
345
+ "all.css": 346279,
346
346
  "assessment.css": 36343,
347
347
  "brands/echelon.css": 4213,
348
348
  "brands/example-harbor.css": 4229,
349
349
  "brands/index.json": 335,
350
- "components.css": 214119,
350
+ "components.css": 214359,
351
351
  "foundations.css": 22874,
352
352
  "icons/add.svg": 216,
353
353
  "icons/agent.svg": 354,
@@ -2182,7 +2182,10 @@
2182
2182
  .ef-record-header__title > :not(:first-child) { grid-row: 2; }
2183
2183
  @container (max-width: 24em) {
2184
2184
  .ef-record-header__title { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
2185
- .ef-record-header__title > :first-child { grid-row: auto; }
2185
+ /* The title grid has no rows here, so the identity block cannot stay a
2186
+ subgrid: it would collapse the type label onto the title (GH-179).
2187
+ Its own implicit rows keep the label above the title. */
2188
+ .ef-record-header__title > :first-child { grid-row: auto; grid-template-rows: none; }
2186
2189
  .ef-record-header__title > :not(:first-child) { grid-row: auto; justify-self: start; }
2187
2190
  }
2188
2191
  .ef-record-header__title h2 { margin: 0.15rem 0 0; }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "formaVersion": "0.13.0",
3
+ "formaVersion": "0.13.1",
4
4
  "grid": 24,
5
5
  "icons": [
6
6
  {
@@ -1,4 +1,4 @@
1
- /*! Forma 0.13.0 | forma-all.css | bundle echelon-marketing
1
+ /*! Forma 0.13.1 | forma-all.css | bundle echelon-marketing
2
2
  Complete Forma surface (application components, assessment, and marketing layers) for sites that also present Forma application patterns such as data grids or status lozenges.
3
3
  Generated by tools/PresentationBundler. Do not edit; pin by version and sha256. */
4
4
 
@@ -3246,7 +3246,10 @@
3246
3246
  .ef-record-header__title > :not(:first-child) { grid-row: 2; }
3247
3247
  @container (max-width: 24em) {
3248
3248
  .ef-record-header__title { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
3249
- .ef-record-header__title > :first-child { grid-row: auto; }
3249
+ /* The title grid has no rows here, so the identity block cannot stay a
3250
+ subgrid: it would collapse the type label onto the title (GH-179).
3251
+ Its own implicit rows keep the label above the title. */
3252
+ .ef-record-header__title > :first-child { grid-row: auto; grid-template-rows: none; }
3250
3253
  .ef-record-header__title > :not(:first-child) { grid-row: auto; justify-self: start; }
3251
3254
  }
3252
3255
  .ef-record-header__title h2 { margin: 0.15rem 0 0; }
@@ -1,4 +1,4 @@
1
- /*! Forma 0.13.0 | forma-echelon-marketing.css | bundle echelon-marketing
1
+ /*! Forma 0.13.1 | forma-echelon-marketing.css | bundle echelon-marketing
2
2
  Single-file Echelon marketing presentation: forma-marketing.css followed by the Echelon theme. Most sites load only this file.
3
3
  Generated by tools/PresentationBundler. Do not edit; pin by version and sha256. */
4
4
 
@@ -1,4 +1,4 @@
1
- /*! Forma 0.13.0 | forma-marketing-theme-echelon.css | bundle echelon-marketing
1
+ /*! Forma 0.13.1 | forma-marketing-theme-echelon.css | bundle echelon-marketing
2
2
  Echelon Marketing Theme: compiled theme tokens and theme hooks. Load after forma-marketing.css.
3
3
  Generated by tools/PresentationBundler. Do not edit; pin by version and sha256. */
4
4
 
@@ -1,4 +1,4 @@
1
- /*! Forma 0.13.0 | forma-marketing.css | bundle echelon-marketing
1
+ /*! Forma 0.13.1 | forma-marketing.css | bundle echelon-marketing
2
2
  Brand-neutral marketing layer: core tokens, role defaults, Forma foundations, marketing foundations, components, and layouts.
3
3
  Generated by tools/PresentationBundler. Do not edit; pin by version and sha256. */
4
4
 
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "forma": "0.13.0",
3
+ "forma": "0.13.1",
4
4
  "bundle": "echelon-marketing",
5
5
  "description": "Forma presentation artifacts for Echelon marketing sites. Every artifact is a single self-contained CSS file with no imports or relative URLs.",
6
- "releaseTag": "v0.13.0",
6
+ "releaseTag": "v0.13.1",
7
7
  "artifacts": [
8
8
  {
9
9
  "file": "forma-marketing.css",
10
10
  "description": "Brand-neutral marketing layer: core tokens, role defaults, Forma foundations, marketing foundations, components, and layouts.",
11
11
  "bytes": 96137,
12
- "sha256": "08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df",
12
+ "sha256": "77ed356b74ee190e0ae1181fd83c4308d159f60e16bc93e3fc89b893c1f06ebc",
13
13
  "sources": [
14
14
  "dist/tokens.css",
15
15
  "src/marketing/roles.css",
@@ -23,7 +23,7 @@
23
23
  "file": "forma-marketing-theme-echelon.css",
24
24
  "description": "Echelon Marketing Theme: compiled theme tokens and theme hooks. Load after forma-marketing.css.",
25
25
  "bytes": 6296,
26
- "sha256": "0b803cade4de294a2e15ac8a8482cb2448617a2558d70fc6542a4b3b9a357bf2",
26
+ "sha256": "6801950c7438a1274dc4a8cb24d642f67d0d8e67be3e8a9e1e037a0734078fc4",
27
27
  "sources": [
28
28
  "build/marketing/echelon-marketing.tokens.css",
29
29
  "themes/echelon/marketing.css"
@@ -33,7 +33,7 @@
33
33
  "file": "forma-echelon-marketing.css",
34
34
  "description": "Single-file Echelon marketing presentation: forma-marketing.css followed by the Echelon theme. Most sites load only this file.",
35
35
  "bytes": 102277,
36
- "sha256": "d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb",
36
+ "sha256": "92803ba115f644b36800a6a26b0162dad927aa051792e88f9713d0bafac01e73",
37
37
  "sources": [
38
38
  "artifact:forma-marketing.css",
39
39
  "artifact:forma-marketing-theme-echelon.css"
@@ -42,8 +42,8 @@
42
42
  {
43
43
  "file": "forma-all.css",
44
44
  "description": "Complete Forma surface (application components, assessment, and marketing layers) for sites that also present Forma application patterns such as data grids or status lozenges.",
45
- "bytes": 346402,
46
- "sha256": "0ba4ce2e6ef70b94000a725780d90e0061b312960265387bc3e2e06c34b92484",
45
+ "bytes": 346642,
46
+ "sha256": "0a0919db3accd32e2663266c69604cc7e3c47f3c1e96a3067ce3a58e67126734",
47
47
  "sources": [
48
48
  "dist/all.css"
49
49
  ]
@@ -1,4 +1,4 @@
1
- 08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df forma-marketing.css
2
- 0b803cade4de294a2e15ac8a8482cb2448617a2558d70fc6542a4b3b9a357bf2 forma-marketing-theme-echelon.css
3
- d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb forma-echelon-marketing.css
4
- 0ba4ce2e6ef70b94000a725780d90e0061b312960265387bc3e2e06c34b92484 forma-all.css
1
+ 77ed356b74ee190e0ae1181fd83c4308d159f60e16bc93e3fc89b893c1f06ebc forma-marketing.css
2
+ 6801950c7438a1274dc4a8cb24d642f67d0d8e67be3e8a9e1e037a0734078fc4 forma-marketing-theme-echelon.css
3
+ 92803ba115f644b36800a6a26b0162dad927aa051792e88f9713d0bafac01e73 forma-echelon-marketing.css
4
+ 0a0919db3accd32e2663266c69604cc7e3c47f3c1e96a3067ce3a58e67126734 forma-all.css
package/dist/runtime.js CHANGED
@@ -52,6 +52,6 @@ export function registerEchelonRuntime(name, metadata, target = globalThis) {
52
52
  return installEchelonRuntimeRegistrar(target)?.(name, metadata);
53
53
  }
54
54
 
55
- export const FORMA_VERSION = "0.13.0";
55
+ export const FORMA_VERSION = "0.13.1";
56
56
 
57
57
  if (typeof window !== "undefined") registerEchelonRuntime("forma", { version: FORMA_VERSION }, window);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@echelon-foundry/design-system",
3
- "version": "0.13.0-main.265.1",
3
+ "version": "0.13.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Zero-component-runtime HTML and CSS design system for Echelon Foundry applications.",