@echelon-foundry/design-system 0.6.1 → 0.7.0-main.243.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.
@@ -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
- .ef-actions { display: flex; flex-wrap: wrap; gap: var(--ef-primitive-spacing-3, 0.75rem); align-items: center; }
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;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "formaVersion": "0.6.1",
3
+ "formaVersion": "0.7.0",
4
4
  "grid": 24,
5
5
  "icons": [
6
6
  {