@echelon-foundry/design-system 0.6.0 → 0.6.1-main.236.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,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
+ ## 0.6.1
11
+
12
+ Patch release: responsive navigation and native date/time field containment.
13
+ - Site navigation labels no longer break mid-word or overlap the header at tablet sizes, mobile widths, or larger text scales. Navigation reflows into its own bounded, keyboard-accessible horizontal scroll region.
14
+ - Shared native date, time, and datetime-local fields constrain their intrinsic width within grid columns, including Safari, without replacing the browser picker.
15
+ - Documentation example previews and code snippets scroll within their own containers instead of widening the page.
16
+ - Documentation navigation now highlights only the current section, with `aria-current="page"` on section index pages and `aria-current="location"` on descendants; the Agent use link is not a permanently highlighted call-to-action.
17
+ - Adds generated-page and WebKit responsive tests at eight widths, including the reported date-time-field examples and enlarged text.
18
+
19
+ No public icon identifiers, assets, or component semantics were renamed.
20
+
10
21
  ## 0.6.0
11
22
 
12
23
  Additive icon-library expansion: **80 icons in total**, up from 40, with no changes to existing icon identifiers or their geometry.
package/dist/all.css CHANGED
@@ -767,10 +767,22 @@
767
767
  }
768
768
 
769
769
  .ef-field {
770
+ /* A native date/time picker can have a larger intrinsic minimum than its
771
+ form column in WebKit. Keep the field's track shrinkable instead of
772
+ letting it widen the containing card or example frame. */
770
773
  display: grid;
774
+ min-inline-size: 0;
775
+ max-inline-size: 100%;
776
+ grid-template-columns: minmax(0, 1fr);
771
777
  gap: var(--ef-primitive-spacing-2, 0.5rem);
772
778
  }
773
779
 
780
+ .ef-field > :is(input[type="date"], input[type="time"], input[type="datetime-local"]) {
781
+ min-inline-size: 0;
782
+ inline-size: 100%;
783
+ max-inline-size: 100%;
784
+ }
785
+
774
786
  .ef-field__label {
775
787
  color: var(--ef-color-text-primary, #171a18);
776
788
  font-size: 0.9375rem;
@@ -832,7 +844,7 @@
832
844
  --ef-motion-gravity-duration: 255ms;
833
845
  --ef-motion-state-duration: 154ms;
834
846
  --ef-motion-press-duration: 107ms;
835
- --ef-motion-exit-duration: 146ms;
847
+ --ef-motion-exit-duration: 214ms;
836
848
  --ef-motion-spring-easing: linear(0, 0.42 24%, 0.82 48%, 1.055 70%, 0.988 88%, 1);
837
849
  --ef-motion-damped-easing: cubic-bezier(0.2, 0.8, 0.2, 1);
838
850
  }
@@ -906,11 +918,8 @@
906
918
  calc(var(--ef-motion-inertia-duration) * 0.5),
907
919
  160ms
908
920
  );
909
- --ef-motion-exit-duration: clamp(
910
- 80ms,
911
- calc(var(--ef-motion-inertia-duration) * 0.68),
912
- 220ms
913
- );
921
+ /* Compatibility token: reciprocal motion has one response time. */
922
+ --ef-motion-exit-duration: var(--ef-motion-inertia-duration);
914
923
  }
915
924
  }
916
925
 
@@ -1503,8 +1512,7 @@
1503
1512
  .ef-tooltip__surface:popover-open {
1504
1513
  opacity: 1;
1505
1514
  translate: 0 0;
1506
- /* Entry settles over the light inertial duration; exit (above) uses the
1507
- shorter derived exit duration. Opacity stays perceptual both ways. */
1515
+ /* Spatial response and perceptual opacity are identical both ways. */
1508
1516
  transition-duration:
1509
1517
  var(--ef-motion-perceptual-duration),
1510
1518
  var(--ef-motion-inertia-duration),
@@ -1642,8 +1650,8 @@
1642
1650
 
1643
1651
  /* Dialog and flyout ---------------------------------------------------- */
1644
1652
  :where(.ef-dialog, .ef-flyout) {
1645
- --ef-overlay-motion-duration: var(--ef-motion-exit-duration);
1646
- --ef-overlay-spatial-easing: var(--ef-motion-damped-easing);
1653
+ --ef-overlay-motion-duration: var(--ef-motion-inertia-duration);
1654
+ --ef-overlay-spatial-easing: var(--ef-motion-spring-easing);
1647
1655
  padding: 0;
1648
1656
  border: 1px solid var(--ef-color-border-functional, #3a403c);
1649
1657
  background: var(--ef-color-surface-primary, #f2efe7);
@@ -339,12 +339,12 @@
339
339
  "tokens.css"
340
340
  ],
341
341
  "bytes": {
342
- "all.css": 317020,
342
+ "all.css": 317434,
343
343
  "assessment.css": 35692,
344
344
  "brands/echelon.css": 3621,
345
345
  "brands/example-harbor.css": 3637,
346
346
  "brands/index.json": 335,
347
- "components.css": 203770,
347
+ "components.css": 204184,
348
348
  "foundations.css": 11558,
349
349
  "icons/add.svg": 216,
350
350
  "icons/agent.svg": 354,
@@ -19,10 +19,22 @@
19
19
  }
20
20
 
21
21
  .ef-field {
22
+ /* A native date/time picker can have a larger intrinsic minimum than its
23
+ form column in WebKit. Keep the field's track shrinkable instead of
24
+ letting it widen the containing card or example frame. */
22
25
  display: grid;
26
+ min-inline-size: 0;
27
+ max-inline-size: 100%;
28
+ grid-template-columns: minmax(0, 1fr);
23
29
  gap: var(--ef-primitive-spacing-2, 0.5rem);
24
30
  }
25
31
 
32
+ .ef-field > :is(input[type="date"], input[type="time"], input[type="datetime-local"]) {
33
+ min-inline-size: 0;
34
+ inline-size: 100%;
35
+ max-inline-size: 100%;
36
+ }
37
+
26
38
  .ef-field__label {
27
39
  color: var(--ef-color-text-primary, #171a18);
28
40
  font-size: 0.9375rem;
@@ -84,7 +96,7 @@
84
96
  --ef-motion-gravity-duration: 255ms;
85
97
  --ef-motion-state-duration: 154ms;
86
98
  --ef-motion-press-duration: 107ms;
87
- --ef-motion-exit-duration: 146ms;
99
+ --ef-motion-exit-duration: 214ms;
88
100
  --ef-motion-spring-easing: linear(0, 0.42 24%, 0.82 48%, 1.055 70%, 0.988 88%, 1);
89
101
  --ef-motion-damped-easing: cubic-bezier(0.2, 0.8, 0.2, 1);
90
102
  }
@@ -158,11 +170,8 @@
158
170
  calc(var(--ef-motion-inertia-duration) * 0.5),
159
171
  160ms
160
172
  );
161
- --ef-motion-exit-duration: clamp(
162
- 80ms,
163
- calc(var(--ef-motion-inertia-duration) * 0.68),
164
- 220ms
165
- );
173
+ /* Compatibility token: reciprocal motion has one response time. */
174
+ --ef-motion-exit-duration: var(--ef-motion-inertia-duration);
166
175
  }
167
176
  }
168
177
 
@@ -755,8 +764,7 @@
755
764
  .ef-tooltip__surface:popover-open {
756
765
  opacity: 1;
757
766
  translate: 0 0;
758
- /* Entry settles over the light inertial duration; exit (above) uses the
759
- shorter derived exit duration. Opacity stays perceptual both ways. */
767
+ /* Spatial response and perceptual opacity are identical both ways. */
760
768
  transition-duration:
761
769
  var(--ef-motion-perceptual-duration),
762
770
  var(--ef-motion-inertia-duration),
@@ -894,8 +902,8 @@
894
902
 
895
903
  /* Dialog and flyout ---------------------------------------------------- */
896
904
  :where(.ef-dialog, .ef-flyout) {
897
- --ef-overlay-motion-duration: var(--ef-motion-exit-duration);
898
- --ef-overlay-spatial-easing: var(--ef-motion-damped-easing);
905
+ --ef-overlay-motion-duration: var(--ef-motion-inertia-duration);
906
+ --ef-overlay-spatial-easing: var(--ef-motion-spring-easing);
899
907
  padding: 0;
900
908
  border: 1px solid var(--ef-color-border-functional, #3a403c);
901
909
  background: var(--ef-color-surface-primary, #f2efe7);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "formaVersion": "0.6.0",
3
+ "formaVersion": "0.6.1",
4
4
  "grid": 24,
5
5
  "icons": [
6
6
  {
@@ -1,4 +1,4 @@
1
- /*! Forma 0.6.0 | forma-all.css | bundle echelon-marketing
1
+ /*! Forma 0.6.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
 
@@ -772,10 +772,22 @@
772
772
  }
773
773
 
774
774
  .ef-field {
775
+ /* A native date/time picker can have a larger intrinsic minimum than its
776
+ form column in WebKit. Keep the field's track shrinkable instead of
777
+ letting it widen the containing card or example frame. */
775
778
  display: grid;
779
+ min-inline-size: 0;
780
+ max-inline-size: 100%;
781
+ grid-template-columns: minmax(0, 1fr);
776
782
  gap: var(--ef-primitive-spacing-2, 0.5rem);
777
783
  }
778
784
 
785
+ .ef-field > :is(input[type="date"], input[type="time"], input[type="datetime-local"]) {
786
+ min-inline-size: 0;
787
+ inline-size: 100%;
788
+ max-inline-size: 100%;
789
+ }
790
+
779
791
  .ef-field__label {
780
792
  color: var(--ef-color-text-primary, #171a18);
781
793
  font-size: 0.9375rem;
@@ -837,7 +849,7 @@
837
849
  --ef-motion-gravity-duration: 255ms;
838
850
  --ef-motion-state-duration: 154ms;
839
851
  --ef-motion-press-duration: 107ms;
840
- --ef-motion-exit-duration: 146ms;
852
+ --ef-motion-exit-duration: 214ms;
841
853
  --ef-motion-spring-easing: linear(0, 0.42 24%, 0.82 48%, 1.055 70%, 0.988 88%, 1);
842
854
  --ef-motion-damped-easing: cubic-bezier(0.2, 0.8, 0.2, 1);
843
855
  }
@@ -911,11 +923,8 @@
911
923
  calc(var(--ef-motion-inertia-duration) * 0.5),
912
924
  160ms
913
925
  );
914
- --ef-motion-exit-duration: clamp(
915
- 80ms,
916
- calc(var(--ef-motion-inertia-duration) * 0.68),
917
- 220ms
918
- );
926
+ /* Compatibility token: reciprocal motion has one response time. */
927
+ --ef-motion-exit-duration: var(--ef-motion-inertia-duration);
919
928
  }
920
929
  }
921
930
 
@@ -1508,8 +1517,7 @@
1508
1517
  .ef-tooltip__surface:popover-open {
1509
1518
  opacity: 1;
1510
1519
  translate: 0 0;
1511
- /* Entry settles over the light inertial duration; exit (above) uses the
1512
- shorter derived exit duration. Opacity stays perceptual both ways. */
1520
+ /* Spatial response and perceptual opacity are identical both ways. */
1513
1521
  transition-duration:
1514
1522
  var(--ef-motion-perceptual-duration),
1515
1523
  var(--ef-motion-inertia-duration),
@@ -1647,8 +1655,8 @@
1647
1655
 
1648
1656
  /* Dialog and flyout ---------------------------------------------------- */
1649
1657
  :where(.ef-dialog, .ef-flyout) {
1650
- --ef-overlay-motion-duration: var(--ef-motion-exit-duration);
1651
- --ef-overlay-spatial-easing: var(--ef-motion-damped-easing);
1658
+ --ef-overlay-motion-duration: var(--ef-motion-inertia-duration);
1659
+ --ef-overlay-spatial-easing: var(--ef-motion-spring-easing);
1652
1660
  padding: 0;
1653
1661
  border: 1px solid var(--ef-color-border-functional, #3a403c);
1654
1662
  background: var(--ef-color-surface-primary, #f2efe7);
@@ -1,4 +1,4 @@
1
- /*! Forma 0.6.0 | forma-echelon-marketing.css | bundle echelon-marketing
1
+ /*! Forma 0.6.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.6.0 | forma-marketing-theme-echelon.css | bundle echelon-marketing
1
+ /*! Forma 0.6.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.6.0 | forma-marketing.css | bundle echelon-marketing
1
+ /*! Forma 0.6.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.6.0",
3
+ "forma": "0.6.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.6.0",
6
+ "releaseTag": "v0.6.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": 78117,
12
- "sha256": "70f644cd6fa38182ff0f77a88bafcbe2e8412132702c6cc82227aa7a400d1db7",
12
+ "sha256": "d2dd5cab7ebba2c2d667fa6cfab18bf3b19de729469e2fcca07a58d27c011525",
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": 6295,
26
- "sha256": "ba79be2b4d49b13d503bb2f0439960618b80f9d450f866ac29403c4c55c099a8",
26
+ "sha256": "33a128ec9b1fd5081a6d8ed37ca641a05ec9e91eb342026c34b5bed69f5d750b",
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": 84257,
36
- "sha256": "2649a4803c98d51b933f32ed5f4712889dd1f23038e0b94aab0e2e8e1e849347",
36
+ "sha256": "6f89190f3133a0cad35b05d3b00c9e17f2036e3c8021347b0dcd7bad50ac5af5",
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": 317382,
46
- "sha256": "26cd0c1b8e90f191418fb9cd4657b68eda7c503e2e853e7e07649846a4f3f29f",
45
+ "bytes": 317796,
46
+ "sha256": "745a95984fd4ba3db4bdda3f5b11d842c9c57631f588c232fa7f846f37728c6b",
47
47
  "sources": [
48
48
  "dist/all.css"
49
49
  ]
@@ -1,4 +1,4 @@
1
- 70f644cd6fa38182ff0f77a88bafcbe2e8412132702c6cc82227aa7a400d1db7 forma-marketing.css
2
- ba79be2b4d49b13d503bb2f0439960618b80f9d450f866ac29403c4c55c099a8 forma-marketing-theme-echelon.css
3
- 2649a4803c98d51b933f32ed5f4712889dd1f23038e0b94aab0e2e8e1e849347 forma-echelon-marketing.css
4
- 26cd0c1b8e90f191418fb9cd4657b68eda7c503e2e853e7e07649846a4f3f29f forma-all.css
1
+ d2dd5cab7ebba2c2d667fa6cfab18bf3b19de729469e2fcca07a58d27c011525 forma-marketing.css
2
+ 33a128ec9b1fd5081a6d8ed37ca641a05ec9e91eb342026c34b5bed69f5d750b forma-marketing-theme-echelon.css
3
+ 6f89190f3133a0cad35b05d3b00c9e17f2036e3c8021347b0dcd7bad50ac5af5 forma-echelon-marketing.css
4
+ 745a95984fd4ba3db4bdda3f5b11d842c9c57631f588c232fa7f846f37728c6b forma-all.css
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@echelon-foundry/design-system",
3
- "version": "0.6.0",
3
+ "version": "0.6.1-main.236.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Zero-runtime HTML and CSS design system for Echelon Foundry applications.",