@echelon-foundry/design-system 0.6.1 → 0.7.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 +29 -0
- package/dist/all.css +268 -74
- package/dist/assessment.css +13 -2
- package/dist/build-metrics.json +7 -5
- package/dist/components.css +175 -69
- package/dist/foundations.css +60 -2
- package/dist/icons/registry.json +1 -1
- package/dist/marketing/forma-all.css +269 -75
- package/dist/marketing/forma-echelon-marketing.css +81 -4
- package/dist/marketing/forma-marketing-theme-echelon.css +1 -1
- package/dist/marketing/forma-marketing.css +81 -4
- package/dist/marketing/forma-marketing.manifest.json +9 -9
- package/dist/marketing/forma-marketing.sha256 +4 -4
- package/dist/marketing.css +20 -1
- package/dist/patterns/form-row.html +15 -0
- package/figma/component-contracts.json +10 -0
- package/package.json +4 -3
- package/patterns/form-row.html +15 -0
package/dist/foundations.css
CHANGED
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
:where(input:not([type="checkbox"], [type="radio"], [type="range"]), textarea, select) {
|
|
100
|
+
box-sizing: border-box;
|
|
100
101
|
min-block-size: 2.75rem;
|
|
101
102
|
inline-size: 100%;
|
|
102
103
|
padding: 0.7rem 0.8rem;
|
|
@@ -104,6 +105,50 @@
|
|
|
104
105
|
border-radius: var(--ef-primitive-radius-none, 0);
|
|
105
106
|
background: var(--ef-color-surface-primary, #f2efe7);
|
|
106
107
|
color: var(--ef-color-text-primary, #171a18);
|
|
108
|
+
font: inherit;
|
|
109
|
+
line-height: var(--ef-field-line-height, 1.6);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/*
|
|
113
|
+
* Equivalent single-line controls share one intrinsic block size
|
|
114
|
+
* (UI-LAYOUT-INTERACTION ULI-L02, L13): one line of field text plus the
|
|
115
|
+
* field padding and border. Native date/time and select boxes otherwise
|
|
116
|
+
* differ by several pixels from text inputs (Chromium: 51.97 vs 49.97 vs
|
|
117
|
+
* 46.38 px), which staggers peers in a row. Em-based, so it grows with
|
|
118
|
+
* the user's text size.
|
|
119
|
+
*/
|
|
120
|
+
:where(
|
|
121
|
+
input:not([type]),
|
|
122
|
+
input:is([type="text"], [type="email"], [type="password"], [type="search"], [type="tel"], [type="url"], [type="number"],
|
|
123
|
+
[type="date"], [type="time"], [type="datetime-local"], [type="month"], [type="week"]),
|
|
124
|
+
select:not([multiple], [size])
|
|
125
|
+
) {
|
|
126
|
+
block-size: var(--ef-field-control-block-size, calc(var(--ef-field-line-height, 1.6) * 1em + 1.4rem + 2px));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:where(input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"], input[type="week"])::-webkit-datetime-edit {
|
|
130
|
+
padding-block: 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* A fieldset's default min-inline-size is min-content, which lets a long
|
|
134
|
+
legend or option widen a form past a narrow viewport (ULI-L05). */
|
|
135
|
+
:where(fieldset) {
|
|
136
|
+
min-inline-size: 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* iOS temporal controls otherwise retain a native intrinsic width despite
|
|
140
|
+
the author's width limit. Keep the native picker, not its native box. */
|
|
141
|
+
:where(input[type="date"], input[type="time"], input[type="datetime-local"]) {
|
|
142
|
+
-webkit-appearance: none;
|
|
143
|
+
appearance: none;
|
|
144
|
+
box-sizing: border-box;
|
|
145
|
+
min-inline-size: 0;
|
|
146
|
+
max-inline-size: 100%;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
:where(input[type="date"], input[type="time"], input[type="datetime-local"])::-webkit-date-and-time-value {
|
|
150
|
+
min-inline-size: 0;
|
|
151
|
+
text-align: start;
|
|
107
152
|
}
|
|
108
153
|
|
|
109
154
|
:where(:focus-visible) {
|
|
@@ -115,16 +160,29 @@
|
|
|
115
160
|
.ef-stack { display: flex; flex-direction: column; gap: var(--ef-stack-gap, var(--ef-primitive-spacing-4, 1rem)); }
|
|
116
161
|
.ef-cluster { display: flex; flex-wrap: wrap; gap: var(--ef-cluster-gap, var(--ef-primitive-spacing-3, 0.75rem)); align-items: center; }
|
|
117
162
|
/* .ef-actions (catalog: button) is an application-layer row of related actions; it was styled only in marketing.css (forma#93 gap). */
|
|
118
|
-
|
|
163
|
+
/* min-inline-size: 0 lets an action row shrink inside a flex or grid parent
|
|
164
|
+
instead of being held at its widest button's word (ULI-L05). */
|
|
165
|
+
.ef-actions { display: flex; flex-wrap: wrap; gap: var(--ef-primitive-spacing-3, 0.75rem); align-items: center; min-inline-size: 0; }
|
|
119
166
|
.ef-grid { display: grid; gap: var(--ef-grid-gap, var(--ef-primitive-spacing-4, 1rem)); grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ef-grid-min, 16rem)), 1fr)); }
|
|
120
167
|
.ef-section { padding-block: var(--ef-section-space, var(--ef-primitive-spacing-7, 3rem)); }
|
|
121
168
|
.ef-surface { --ef-color-text-secondary: var(--ef-color-text-on-secondary-surface, #3a403c); --ef-color-text-muted: var(--ef-color-text-on-secondary-surface, #3a403c); --ef-surface-accent-text-color: var(--ef-color-text-primary, #171a18); min-inline-size: 0; padding: var(--ef-surface-space, var(--ef-primitive-spacing-5, 1.5rem)); background: var(--ef-color-surface-secondary, #e3e0d7); color: var(--ef-color-text-on-secondary-surface, #3a403c); border: 1px solid var(--ef-color-border-subtle, #e3e0d7); }
|
|
122
169
|
.ef-surface :where(h1, h2, h3, h4, h5, h6, p) { color: inherit; }
|
|
123
170
|
|
|
124
|
-
:where(h1, h2, h3, h4, h5, h6, p, a, label, legend, td, th) {
|
|
171
|
+
:where(h1, h2, h3, h4, h5, h6, p, a, label, legend, td, th, dt, dd, caption, figcaption) {
|
|
125
172
|
overflow-wrap: anywhere;
|
|
126
173
|
}
|
|
127
174
|
|
|
175
|
+
/* Action labels never split mid-word because their container allows it
|
|
176
|
+
(a link button inherits the rule above; a button inherits it from a
|
|
177
|
+
table cell). A single word wider than its container may still break
|
|
178
|
+
rather than overflow. Must follow the rule above (ULI-L06, L07). The
|
|
179
|
+
inline-size cap also clamps a flex item's automatic minimum, so a
|
|
180
|
+
button never pushes its row past its container (ULI-L05). */
|
|
181
|
+
:where(button, .ef-button) {
|
|
182
|
+
overflow-wrap: break-word;
|
|
183
|
+
max-inline-size: 100%;
|
|
184
|
+
}
|
|
185
|
+
|
|
128
186
|
@media (prefers-reduced-motion: reduce) {
|
|
129
187
|
*, *::before, *::after {
|
|
130
188
|
scroll-behavior: auto !important;
|