@echelon-foundry/design-system 0.13.0-main.263.1 → 0.13.0-main.264.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 +11 -0
- package/dist/all.css +21 -0
- package/dist/build-metrics.json +2 -2
- package/dist/marketing/forma-all.css +21 -0
- package/dist/marketing/forma-echelon-marketing.css +21 -0
- package/dist/marketing/forma-marketing.css +21 -0
- package/dist/marketing/forma-marketing.manifest.json +6 -6
- package/dist/marketing/forma-marketing.sha256 +3 -3
- package/dist/marketing.css +21 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ 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
|
+
|
|
10
21
|
## 0.13.0
|
|
11
22
|
|
|
12
23
|
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,6 +8056,23 @@
|
|
|
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
|
+
|
|
8059
8076
|
.ef-site :where(hr) {
|
|
8060
8077
|
margin-block: var(--ef-layout-section-space);
|
|
8061
8078
|
border: 0;
|
|
@@ -8637,6 +8654,10 @@
|
|
|
8637
8654
|
|
|
8638
8655
|
.ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
|
|
8639
8656
|
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);
|
|
8640
8661
|
border-block-start: 0;
|
|
8641
8662
|
}
|
|
8642
8663
|
|
package/dist/build-metrics.json
CHANGED
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
"tokens.css"
|
|
343
343
|
],
|
|
344
344
|
"bytes": {
|
|
345
|
-
"all.css":
|
|
345
|
+
"all.css": 346039,
|
|
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":
|
|
513
|
+
"marketing.css": 48964,
|
|
514
514
|
"patterns/active-filter-summary.html": 532,
|
|
515
515
|
"patterns/alert.html": 384,
|
|
516
516
|
"patterns/allocation.html": 1033,
|
|
@@ -8061,6 +8061,23 @@
|
|
|
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
|
+
|
|
8064
8081
|
.ef-site :where(hr) {
|
|
8065
8082
|
margin-block: var(--ef-layout-section-space);
|
|
8066
8083
|
border: 0;
|
|
@@ -8642,6 +8659,10 @@
|
|
|
8642
8659
|
|
|
8643
8660
|
.ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
|
|
8644
8661
|
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);
|
|
8645
8666
|
border-block-start: 0;
|
|
8646
8667
|
}
|
|
8647
8668
|
|
|
@@ -1353,6 +1353,23 @@
|
|
|
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
|
+
|
|
1356
1373
|
.ef-site :where(hr) {
|
|
1357
1374
|
margin-block: var(--ef-layout-section-space);
|
|
1358
1375
|
border: 0;
|
|
@@ -1935,6 +1952,10 @@
|
|
|
1935
1952
|
|
|
1936
1953
|
.ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
|
|
1937
1954
|
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);
|
|
1938
1959
|
border-block-start: 0;
|
|
1939
1960
|
}
|
|
1940
1961
|
|
|
@@ -1352,6 +1352,23 @@
|
|
|
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
|
+
|
|
1355
1372
|
.ef-site :where(hr) {
|
|
1356
1373
|
margin-block: var(--ef-layout-section-space);
|
|
1357
1374
|
border: 0;
|
|
@@ -1934,6 +1951,10 @@
|
|
|
1934
1951
|
|
|
1935
1952
|
.ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
|
|
1936
1953
|
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);
|
|
1937
1958
|
border-block-start: 0;
|
|
1938
1959
|
}
|
|
1939
1960
|
|
|
@@ -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":
|
|
12
|
-
"sha256": "
|
|
11
|
+
"bytes": 96137,
|
|
12
|
+
"sha256": "08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df",
|
|
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":
|
|
36
|
-
"sha256": "
|
|
35
|
+
"bytes": 102277,
|
|
36
|
+
"sha256": "d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb",
|
|
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":
|
|
46
|
-
"sha256": "
|
|
45
|
+
"bytes": 346402,
|
|
46
|
+
"sha256": "0ba4ce2e6ef70b94000a725780d90e0061b312960265387bc3e2e06c34b92484",
|
|
47
47
|
"sources": [
|
|
48
48
|
"dist/all.css"
|
|
49
49
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
08c70e579ad93f28d2dedf5d4c5e1b7d455773acff50b19a2a688f132123b9df forma-marketing.css
|
|
2
2
|
0b803cade4de294a2e15ac8a8482cb2448617a2558d70fc6542a4b3b9a357bf2 forma-marketing-theme-echelon.css
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
d440c969a3defb5e8eb51043da8b66d3faa29094a429ece6a046deeea98377cb forma-echelon-marketing.css
|
|
4
|
+
0ba4ce2e6ef70b94000a725780d90e0061b312960265387bc3e2e06c34b92484 forma-all.css
|
package/dist/marketing.css
CHANGED
|
@@ -285,6 +285,23 @@
|
|
|
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
|
+
|
|
288
305
|
.ef-site :where(hr) {
|
|
289
306
|
margin-block: var(--ef-layout-section-space);
|
|
290
307
|
border: 0;
|
|
@@ -866,6 +883,10 @@
|
|
|
866
883
|
|
|
867
884
|
.ef-cta[data-ef-tone]:not([data-ef-tone="page"]) {
|
|
868
885
|
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);
|
|
869
890
|
border-block-start: 0;
|
|
870
891
|
}
|
|
871
892
|
|
package/package.json
CHANGED