@echelon-foundry/design-system 0.13.0-main.264.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,17 +7,6 @@ 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
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.
13
-
14
- ### Fixed
15
- - **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.
16
- - **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
-
18
- ### Tests
19
- - `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.
20
-
21
10
  ## 0.13.0
22
11
 
23
12
  Minor release: layout reliability (LRP-001). The source document is `.praxis/inbox/documents/2026-10-30-LRP-001-layout-reliability.md`; the baseline and the Indy Init report are in `docs/reliability/`. `@echelon-foundry/forma-conformance` 0.3.0 ships the new geometry checks.
package/dist/all.css CHANGED
@@ -8056,23 +8056,6 @@
8056
8056
  overflow-wrap: anywhere;
8057
8057
  }
8058
8058
 
8059
- /*
8060
- * Marketing containment (MKT-CONTAIN, WI-0043). LRP-001 passes
8061
- * overflow-wrap: break-word to arbitrary content inside the application
8062
- * containers; marketing components hold the same kind of content (list
8063
- * items, spans and divs that the element rule above does not reach), so
8064
- * they pass it on too. break-word never splits a word that fits and leaves
8065
- * min-content sizes alone; declared values (badges, steps, code) win over
8066
- * inheritance. Found by the EDF site at 320px: list words escaped a card at
8067
- * 200% text and a release URL in a span escaped it at every width.
8068
- */
8069
- .ef-site :where(
8070
- .ef-hero, .ef-section-heading, .ef-card, .ef-facts, .ef-index, .ef-callout,
8071
- .ef-cta, .ef-split, .ef-doc, .ef-prose, .ef-statement, .ef-site-footer
8072
- ) {
8073
- overflow-wrap: break-word;
8074
- }
8075
-
8076
8059
  .ef-site :where(hr) {
8077
8060
  margin-block: var(--ef-layout-section-space);
8078
8061
  border: 0;
@@ -8654,10 +8637,6 @@
8654
8637
 
8655
8638
  .ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
8656
8639
  padding: calc(var(--ef-layout-block-space) * 2);
8657
- /* Same cap as a toned .ef-section (ULI-L05): at 320px and 200% text the
8658
- uncapped inline padding left a 96px content box (MKT-CONTAIN). It
8659
- changes nothing at the default text size. */
8660
- padding-inline: min(calc(var(--ef-layout-block-space) * 2), 12.5vw);
8661
8640
  border-block-start: 0;
8662
8641
  }
8663
8642
 
@@ -342,7 +342,7 @@
342
342
  "tokens.css"
343
343
  ],
344
344
  "bytes": {
345
- "all.css": 346039,
345
+ "all.css": 344943,
346
346
  "assessment.css": 36343,
347
347
  "brands/echelon.css": 4213,
348
348
  "brands/example-harbor.css": 4229,
@@ -510,7 +510,7 @@
510
510
  "icons/warning.svg": 324,
511
511
  "icons/wifi-off.svg": 269,
512
512
  "icons/workflow.svg": 345,
513
- "marketing.css": 48964,
513
+ "marketing.css": 47868,
514
514
  "patterns/active-filter-summary.html": 532,
515
515
  "patterns/alert.html": 384,
516
516
  "patterns/allocation.html": 1033,
@@ -8061,23 +8061,6 @@
8061
8061
  overflow-wrap: anywhere;
8062
8062
  }
8063
8063
 
8064
- /*
8065
- * Marketing containment (MKT-CONTAIN, WI-0043). LRP-001 passes
8066
- * overflow-wrap: break-word to arbitrary content inside the application
8067
- * containers; marketing components hold the same kind of content (list
8068
- * items, spans and divs that the element rule above does not reach), so
8069
- * they pass it on too. break-word never splits a word that fits and leaves
8070
- * min-content sizes alone; declared values (badges, steps, code) win over
8071
- * inheritance. Found by the EDF site at 320px: list words escaped a card at
8072
- * 200% text and a release URL in a span escaped it at every width.
8073
- */
8074
- .ef-site :where(
8075
- .ef-hero, .ef-section-heading, .ef-card, .ef-facts, .ef-index, .ef-callout,
8076
- .ef-cta, .ef-split, .ef-doc, .ef-prose, .ef-statement, .ef-site-footer
8077
- ) {
8078
- overflow-wrap: break-word;
8079
- }
8080
-
8081
8064
  .ef-site :where(hr) {
8082
8065
  margin-block: var(--ef-layout-section-space);
8083
8066
  border: 0;
@@ -8659,10 +8642,6 @@
8659
8642
 
8660
8643
  .ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
8661
8644
  padding: calc(var(--ef-layout-block-space) * 2);
8662
- /* Same cap as a toned .ef-section (ULI-L05): at 320px and 200% text the
8663
- uncapped inline padding left a 96px content box (MKT-CONTAIN). It
8664
- changes nothing at the default text size. */
8665
- padding-inline: min(calc(var(--ef-layout-block-space) * 2), 12.5vw);
8666
8645
  border-block-start: 0;
8667
8646
  }
8668
8647
 
@@ -1353,23 +1353,6 @@
1353
1353
  overflow-wrap: anywhere;
1354
1354
  }
1355
1355
 
1356
- /*
1357
- * Marketing containment (MKT-CONTAIN, WI-0043). LRP-001 passes
1358
- * overflow-wrap: break-word to arbitrary content inside the application
1359
- * containers; marketing components hold the same kind of content (list
1360
- * items, spans and divs that the element rule above does not reach), so
1361
- * they pass it on too. break-word never splits a word that fits and leaves
1362
- * min-content sizes alone; declared values (badges, steps, code) win over
1363
- * inheritance. Found by the EDF site at 320px: list words escaped a card at
1364
- * 200% text and a release URL in a span escaped it at every width.
1365
- */
1366
- .ef-site :where(
1367
- .ef-hero, .ef-section-heading, .ef-card, .ef-facts, .ef-index, .ef-callout,
1368
- .ef-cta, .ef-split, .ef-doc, .ef-prose, .ef-statement, .ef-site-footer
1369
- ) {
1370
- overflow-wrap: break-word;
1371
- }
1372
-
1373
1356
  .ef-site :where(hr) {
1374
1357
  margin-block: var(--ef-layout-section-space);
1375
1358
  border: 0;
@@ -1952,10 +1935,6 @@
1952
1935
 
1953
1936
  .ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
1954
1937
  padding: calc(var(--ef-layout-block-space) * 2);
1955
- /* Same cap as a toned .ef-section (ULI-L05): at 320px and 200% text the
1956
- uncapped inline padding left a 96px content box (MKT-CONTAIN). It
1957
- changes nothing at the default text size. */
1958
- padding-inline: min(calc(var(--ef-layout-block-space) * 2), 12.5vw);
1959
1938
  border-block-start: 0;
1960
1939
  }
1961
1940
 
@@ -1352,23 +1352,6 @@
1352
1352
  overflow-wrap: anywhere;
1353
1353
  }
1354
1354
 
1355
- /*
1356
- * Marketing containment (MKT-CONTAIN, WI-0043). LRP-001 passes
1357
- * overflow-wrap: break-word to arbitrary content inside the application
1358
- * containers; marketing components hold the same kind of content (list
1359
- * items, spans and divs that the element rule above does not reach), so
1360
- * they pass it on too. break-word never splits a word that fits and leaves
1361
- * min-content sizes alone; declared values (badges, steps, code) win over
1362
- * inheritance. Found by the EDF site at 320px: list words escaped a card at
1363
- * 200% text and a release URL in a span escaped it at every width.
1364
- */
1365
- .ef-site :where(
1366
- .ef-hero, .ef-section-heading, .ef-card, .ef-facts, .ef-index, .ef-callout,
1367
- .ef-cta, .ef-split, .ef-doc, .ef-prose, .ef-statement, .ef-site-footer
1368
- ) {
1369
- overflow-wrap: break-word;
1370
- }
1371
-
1372
1355
  .ef-site :where(hr) {
1373
1356
  margin-block: var(--ef-layout-section-space);
1374
1357
  border: 0;
@@ -1951,10 +1934,6 @@
1951
1934
 
1952
1935
  .ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
1953
1936
  padding: calc(var(--ef-layout-block-space) * 2);
1954
- /* Same cap as a toned .ef-section (ULI-L05): at 320px and 200% text the
1955
- uncapped inline padding left a 96px content box (MKT-CONTAIN). It
1956
- changes nothing at the default text size. */
1957
- padding-inline: min(calc(var(--ef-layout-block-space) * 2), 12.5vw);
1958
1937
  border-block-start: 0;
1959
1938
  }
1960
1939
 
@@ -8,8 +8,8 @@
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
- "bytes": 96137,
12
- "sha256": "08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df",
11
+ "bytes": 95041,
12
+ "sha256": "a2248c09b9c7731178f3046a245541fb240715c12b21638300d56a4fdd61819d",
13
13
  "sources": [
14
14
  "dist/tokens.css",
15
15
  "src/marketing/roles.css",
@@ -32,8 +32,8 @@
32
32
  {
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
- "bytes": 102277,
36
- "sha256": "d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb",
35
+ "bytes": 101181,
36
+ "sha256": "cdf0ebfa0b60219e72d1c32dc0ac068d73255654748b55283bbb1c7a9db78a7f",
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": 345306,
46
+ "sha256": "403d708505fc3fe2ac7bd2c78220e98ad9236a5c82f76d1b88d7a9c4b01ee213",
47
47
  "sources": [
48
48
  "dist/all.css"
49
49
  ]
@@ -1,4 +1,4 @@
1
- 08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df forma-marketing.css
1
+ a2248c09b9c7731178f3046a245541fb240715c12b21638300d56a4fdd61819d forma-marketing.css
2
2
  0b803cade4de294a2e15ac8a8482cb2448617a2558d70fc6542a4b3b9a357bf2 forma-marketing-theme-echelon.css
3
- d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb forma-echelon-marketing.css
4
- 0ba4ce2e6ef70b94000a725780d90e0061b312960265387bc3e2e06c34b92484 forma-all.css
3
+ cdf0ebfa0b60219e72d1c32dc0ac068d73255654748b55283bbb1c7a9db78a7f forma-echelon-marketing.css
4
+ 403d708505fc3fe2ac7bd2c78220e98ad9236a5c82f76d1b88d7a9c4b01ee213 forma-all.css
@@ -285,23 +285,6 @@
285
285
  overflow-wrap: anywhere;
286
286
  }
287
287
 
288
- /*
289
- * Marketing containment (MKT-CONTAIN, WI-0043). LRP-001 passes
290
- * overflow-wrap: break-word to arbitrary content inside the application
291
- * containers; marketing components hold the same kind of content (list
292
- * items, spans and divs that the element rule above does not reach), so
293
- * they pass it on too. break-word never splits a word that fits and leaves
294
- * min-content sizes alone; declared values (badges, steps, code) win over
295
- * inheritance. Found by the EDF site at 320px: list words escaped a card at
296
- * 200% text and a release URL in a span escaped it at every width.
297
- */
298
- .ef-site :where(
299
- .ef-hero, .ef-section-heading, .ef-card, .ef-facts, .ef-index, .ef-callout,
300
- .ef-cta, .ef-split, .ef-doc, .ef-prose, .ef-statement, .ef-site-footer
301
- ) {
302
- overflow-wrap: break-word;
303
- }
304
-
305
288
  .ef-site :where(hr) {
306
289
  margin-block: var(--ef-layout-section-space);
307
290
  border: 0;
@@ -883,10 +866,6 @@
883
866
 
884
867
  .ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
885
868
  padding: calc(var(--ef-layout-block-space) * 2);
886
- /* Same cap as a toned .ef-section (ULI-L05): at 320px and 200% text the
887
- uncapped inline padding left a 96px content box (MKT-CONTAIN). It
888
- changes nothing at the default text size. */
889
- padding-inline: min(calc(var(--ef-layout-block-space) * 2), 12.5vw);
890
869
  border-block-start: 0;
891
870
  }
892
871
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@echelon-foundry/design-system",
3
- "version": "0.13.0-main.264.1",
3
+ "version": "0.13.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Zero-component-runtime HTML and CSS design system for Echelon Foundry applications.",