@oicl/openbridge-webcomponents 2.0.0-next.83 → 2.0.0-next.84
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/bundle/openbridge-webcomponents.bundle.js +1147 -460
- package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
- package/custom-elements.json +591 -193
- package/dist/components/textbox/textbox.css.js +29 -5
- package/dist/components/textbox/textbox.css.js.map +1 -1
- package/dist/components/textbox/textbox.d.ts +5 -0
- package/dist/components/textbox/textbox.d.ts.map +1 -1
- package/dist/components/textbox/textbox.js +6 -1
- package/dist/components/textbox/textbox.js.map +1 -1
- package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js +611 -230
- package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js.map +1 -1
- package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +280 -61
- package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
- package/dist/navigation-instruments/readout-list-item/readout-list-item.js +529 -247
- package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,264 +12,645 @@ const componentStyle = css`* {
|
|
|
12
12
|
width: 100%;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/* ---------- Root / surface ----------
|
|
16
|
+
* \`.root\` is the touch target (a <button> when clickable, otherwise a <div>).
|
|
17
|
+
* \`.surface\` is the visible box that carries padding, corner radius, the
|
|
18
|
+
* data-quality background/border, and — when clickable — the flat interaction
|
|
19
|
+
* states. */
|
|
20
|
+
|
|
15
21
|
.root {
|
|
22
|
+
display: block;
|
|
23
|
+
inline-size: 100%;
|
|
24
|
+
margin: 0;
|
|
25
|
+
/* Neutralise the native <button> chrome (default padding + appearance) when
|
|
26
|
+
\`.root\` is the clickable touch target, so clickable rows don't inset their
|
|
27
|
+
\`.surface\` and misalign with non-clickable \`<div>\` rows. */
|
|
28
|
+
padding: 0;
|
|
29
|
+
border: none;
|
|
30
|
+
background: none;
|
|
31
|
+
appearance: none;
|
|
32
|
+
font: inherit;
|
|
33
|
+
color: inherit;
|
|
34
|
+
text-align: inherit;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.root.clickable {
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
/* prettier-ignore */
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.root.clickable {
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.root.clickable:focus {
|
|
47
|
+
outline: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.root.clickable .surface {
|
|
51
|
+
border-color: var(--flat-enabled-border-color);
|
|
52
|
+
background-color: var(--flat-enabled-background-color);
|
|
53
|
+
border-width: 1px;
|
|
54
|
+
border-style: solid;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
--base-border-color: var(--flat-enabled-border-color);
|
|
57
|
+
--base-background-color: var(--flat-enabled-background-color);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.root.clickable.activated .surface {
|
|
61
|
+
border-color: var(--flat-activated-border-color);
|
|
62
|
+
background-color: var(--flat-activated-background-color);
|
|
63
|
+
--base-border-color: var(--flat-activated-border-color);
|
|
64
|
+
--base-background-color: var(--flat-activated-background-color);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@media (hover:hover) {
|
|
68
|
+
|
|
69
|
+
.root.clickable:hover .surface {
|
|
70
|
+
border-color: color-mix(in srgb, var(--flat-hover-border-color) calc(var(--obc-can-hover) * 100%), var(--base-border-color));
|
|
71
|
+
background-color: color-mix(in srgb, var(--flat-hover-background-color) calc(var(--obc-can-hover) * 100%), var(--base-background-color));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.root.clickable:active .surface {
|
|
76
|
+
border-color: var(--flat-pressed-border-color);
|
|
77
|
+
background-color: var(--flat-pressed-background-color);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.root.clickable:focus-visible .surface {
|
|
81
|
+
outline-color: var(--border-focus-color);
|
|
82
|
+
outline-width: var(--global-size-spacing-border-weight-focusframe);
|
|
83
|
+
outline-style: solid;
|
|
84
|
+
border-color: var(--container-global-color);
|
|
85
|
+
z-index: 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.root.clickable:disabled .surface {
|
|
89
|
+
border-color: var(--flat-disabled-border-color);
|
|
90
|
+
background-color: var(--flat-disabled-background-color);
|
|
91
|
+
cursor: not-allowed;
|
|
92
|
+
color: var(--on-flat-disabled-color) !important;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.root.clickable.disabled .surface {
|
|
96
|
+
border-color: var(--flat-disabled-border-color);
|
|
97
|
+
background-color: var(--flat-disabled-background-color);
|
|
98
|
+
cursor: not-allowed;
|
|
99
|
+
color: var(--on-flat-disabled-color) !important;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.root.clickable:disabled {
|
|
103
|
+
cursor: not-allowed;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.root.clickable.disabled {
|
|
107
|
+
cursor: not-allowed;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.root.clickable:focus {
|
|
111
|
+
outline: none;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Flip-flop: animate the value↔setpoint cap-height swap by forwarding obc-textbox's
|
|
115
|
+
opt-in size-transition var. 300ms matches the instrument setpoint marker
|
|
116
|
+
(svghelpers/setpoint.ts). Override via \`--obc-readout-list-item-flip-flop-duration\`. */
|
|
117
|
+
|
|
118
|
+
.root.flip-flop {
|
|
119
|
+
--obc-textbox-size-transition: var(
|
|
120
|
+
--obc-readout-list-item-flip-flop-duration,
|
|
121
|
+
300ms
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.surface {
|
|
126
|
+
display: block;
|
|
127
|
+
inline-size: 100%;
|
|
128
|
+
border-radius: var(--global-border-radius-border-radius-base);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Clickable corner variants. The \`.clickable\` qualifier is redundant for
|
|
132
|
+
matching (a \`border-*\` class is only ever set alongside \`.clickable\`) but
|
|
133
|
+
raises specificity to (0,4,0) so the interactive corner shape wins over the
|
|
134
|
+
data-quality rules below — which also target \`.surface\` at (0,3,0) — when a
|
|
135
|
+
row is both clickable and low-integrity/invalid. Standalone data-quality rows
|
|
136
|
+
keep their own radius. */
|
|
137
|
+
|
|
138
|
+
.root.clickable.border-squared .surface {
|
|
139
|
+
border-radius: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.root.clickable.border-round-corners .surface {
|
|
143
|
+
border-radius: var(--global-border-radius-border-radius-floating);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.root.clickable.border-round .surface {
|
|
147
|
+
border-radius: var(--global-border-radius-border-radius-round);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* ---------- Content row ----------
|
|
151
|
+
* Label on the left, value/unit cluster on the right, optional source after a
|
|
152
|
+
* trailing divider. All segments bottom-align so cap heights sit on a shared
|
|
153
|
+
* baseline. */
|
|
154
|
+
|
|
155
|
+
.content {
|
|
156
|
+
display: flex;
|
|
157
|
+
align-items: flex-end;
|
|
158
|
+
justify-content: space-between;
|
|
159
|
+
inline-size: 100%;
|
|
160
|
+
min-inline-size: 0;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Reserve the value cap-height per tier so the row height and the bottom
|
|
164
|
+
baseline stay constant regardless of which parts (label / value / unit / src /
|
|
165
|
+
setpoint / advice / icons) are present. */
|
|
166
|
+
|
|
167
|
+
.size-small .content {
|
|
168
|
+
min-block-size: var(
|
|
169
|
+
--global-typography-instrument-value-regular-container-height
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.size-medium .content {
|
|
174
|
+
min-block-size: var(
|
|
175
|
+
--global-typography-instrument-value-medium-container-height
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.size-large .content {
|
|
180
|
+
min-block-size: var(
|
|
181
|
+
--global-typography-instrument-value-large-container-height
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* The value is the primary data, so under width pressure the label side yields
|
|
186
|
+
first: the label-container shrinks (and clips a too-long label) while
|
|
187
|
+
\`.value-area\` keeps its intrinsic width. */
|
|
188
|
+
|
|
189
|
+
.label-container {
|
|
16
190
|
display: inline-flex;
|
|
17
191
|
align-items: flex-end;
|
|
18
|
-
|
|
19
|
-
|
|
192
|
+
gap: var(--global-size-spacing-target-padding);
|
|
193
|
+
flex: 1 1 auto;
|
|
194
|
+
min-inline-size: 0;
|
|
195
|
+
overflow: hidden;
|
|
20
196
|
}
|
|
21
197
|
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
width: 100%;
|
|
30
|
-
}
|
|
198
|
+
.label-stack {
|
|
199
|
+
display: inline-flex;
|
|
200
|
+
flex-direction: column;
|
|
201
|
+
align-items: flex-start;
|
|
202
|
+
justify-content: flex-end;
|
|
203
|
+
min-inline-size: 0;
|
|
204
|
+
}
|
|
31
205
|
|
|
32
|
-
.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
206
|
+
.value-area {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: flex-end;
|
|
209
|
+
justify-content: flex-end;
|
|
210
|
+
flex: 0 0 auto;
|
|
211
|
+
min-inline-size: 0;
|
|
212
|
+
}
|
|
38
213
|
|
|
39
|
-
.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
214
|
+
.value-cluster {
|
|
215
|
+
display: inline-flex;
|
|
216
|
+
align-items: flex-end;
|
|
217
|
+
justify-content: flex-end;
|
|
218
|
+
}
|
|
45
219
|
|
|
46
|
-
.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
justify-content: flex-end;
|
|
51
|
-
}
|
|
220
|
+
.unit-area {
|
|
221
|
+
display: inline-flex;
|
|
222
|
+
align-items: flex-end;
|
|
223
|
+
}
|
|
52
224
|
|
|
53
|
-
|
|
54
|
-
display: inline-flex;
|
|
55
|
-
align-items: center;
|
|
56
|
-
gap: var(--global-size-spacing-target-padding);
|
|
57
|
-
}
|
|
225
|
+
/* ---------- Readout building block (advice / setpoint / value) ---------- */
|
|
58
226
|
|
|
59
|
-
.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
font-feature-settings:
|
|
64
|
-
"liga" off,
|
|
65
|
-
"clig" off,
|
|
66
|
-
"ss04" on;
|
|
67
|
-
display: flex;
|
|
68
|
-
align-items: flex-end;
|
|
69
|
-
block-size: var(--global-typography-instrument-label-container-height);
|
|
70
|
-
max-block-size: var(--global-typography-instrument-label-container-height);
|
|
71
|
-
padding-bottom: var(--global-typography-instrument-label-padding-bottom);
|
|
72
|
-
overflow: hidden;
|
|
73
|
-
font-size: var(--global-typography-instrument-label-font-size);
|
|
74
|
-
line-height: var(--global-typography-instrument-label-line-height);
|
|
75
|
-
color: var(--element-inactive-color);
|
|
76
|
-
}
|
|
227
|
+
.block {
|
|
228
|
+
display: inline-flex;
|
|
229
|
+
align-items: flex-end;
|
|
230
|
+
}
|
|
77
231
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
font-size: var(--global-typography-instrument-unit-font-size);
|
|
81
|
-
line-height: var(--global-typography-instrument-unit-line-height);
|
|
82
|
-
font-feature-settings:
|
|
83
|
-
"liga" off,
|
|
84
|
-
"clig" off,
|
|
85
|
-
"ss04" on;
|
|
86
|
-
display: flex;
|
|
87
|
-
align-items: flex-end;
|
|
88
|
-
block-size: var(--global-typography-instrument-unit-container-height);
|
|
89
|
-
max-block-size: var(--global-typography-instrument-unit-container-height);
|
|
90
|
-
padding-bottom: var(--global-typography-instrument-unit-padding-bottom);
|
|
91
|
-
overflow: hidden;
|
|
92
|
-
font-size: var(--global-typography-instrument-unit-font-size);
|
|
93
|
-
line-height: var(--global-typography-instrument-unit-line-height);
|
|
94
|
-
}
|
|
232
|
+
/* Number + its (setpoint/advice) degree glyph, hugging with no gap — the
|
|
233
|
+
\`.block\` gap only separates the icon from this group. */
|
|
95
234
|
|
|
96
|
-
.
|
|
97
|
-
|
|
98
|
-
|
|
235
|
+
.block-content {
|
|
236
|
+
display: inline-flex;
|
|
237
|
+
align-items: flex-end;
|
|
238
|
+
}
|
|
99
239
|
|
|
100
|
-
.
|
|
101
|
-
|
|
102
|
-
|
|
240
|
+
.block-icon {
|
|
241
|
+
display: inline-flex;
|
|
242
|
+
align-items: center;
|
|
243
|
+
justify-content: center;
|
|
244
|
+
flex: none;
|
|
245
|
+
color: inherit;
|
|
246
|
+
/* Centre the icon against the block's text rather than bottom-aligning it (the
|
|
247
|
+
block is flex-end). Matters for the value block, whose text is taller than
|
|
248
|
+
the icon, so the value icon lines up with the number like the smaller
|
|
249
|
+
setpoint/advice icons do. */
|
|
250
|
+
align-self: center;
|
|
251
|
+
}
|
|
103
252
|
|
|
104
|
-
.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
253
|
+
.block-icon obi-input-right,
|
|
254
|
+
.block-icon obi-notification-advice,
|
|
255
|
+
.block-icon ::slotted(*) {
|
|
256
|
+
display: block;
|
|
257
|
+
inline-size: 100%;
|
|
258
|
+
block-size: 100%;
|
|
259
|
+
}
|
|
111
260
|
|
|
112
|
-
.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
261
|
+
.hinted-zero {
|
|
262
|
+
color: var(
|
|
263
|
+
--obc-readout-list-item-hinted-color,
|
|
264
|
+
var(--element-inactive-color)
|
|
265
|
+
);
|
|
266
|
+
}
|
|
117
267
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
align-items: flex-end;
|
|
121
|
-
justify-content: flex-end;
|
|
122
|
-
gap: var(
|
|
123
|
-
--instrument-components-readout-new-list-item-medium-value-container-gap
|
|
124
|
-
);
|
|
125
|
-
}
|
|
268
|
+
/* ---------- Text colours (overridable via custom properties) ----------
|
|
269
|
+
* obc-textbox does not set its own colour, so it inherits these. */
|
|
126
270
|
|
|
127
|
-
.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
justify-content: center;
|
|
131
|
-
color: inherit;
|
|
132
|
-
}
|
|
271
|
+
.block-value {
|
|
272
|
+
color: var(--obc-readout-list-item-value-color, var(--element-neutral-color));
|
|
273
|
+
}
|
|
133
274
|
|
|
134
|
-
.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
275
|
+
.block-value.tone-enhanced {
|
|
276
|
+
color: var(
|
|
277
|
+
--obc-readout-list-item-value-enhanced-color,
|
|
278
|
+
var(--element-neutral-enhanced-color)
|
|
279
|
+
);
|
|
280
|
+
}
|
|
140
281
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
282
|
+
/* The setpoint shares the value's colour state: neutral by default, enhanced
|
|
283
|
+
(blue) only when the row is enhanced — never a blue setpoint next to a grey
|
|
284
|
+
value. \`--instrument-enhanced-secondary-color\` is the same #2d548b as the
|
|
285
|
+
value's \`--element-neutral-enhanced-color\`. */
|
|
286
|
+
|
|
287
|
+
.block-setpoint {
|
|
288
|
+
color: var(
|
|
289
|
+
--obc-readout-list-item-setpoint-color,
|
|
290
|
+
var(--element-neutral-color)
|
|
291
|
+
);
|
|
292
|
+
/* Flip-flop emphasis + pop-up fade animate at 100ms. */
|
|
293
|
+
transition:
|
|
294
|
+
opacity 100ms ease,
|
|
295
|
+
color 100ms ease;
|
|
296
|
+
}
|
|
145
297
|
|
|
146
|
-
.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
298
|
+
.block-setpoint.tone-enhanced {
|
|
299
|
+
color: var(
|
|
300
|
+
--obc-readout-list-item-setpoint-enhanced-color,
|
|
301
|
+
var(--instrument-enhanced-secondary-color)
|
|
302
|
+
);
|
|
303
|
+
}
|
|
152
304
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
--instrument-components-readout-new-list-item-regular-container-padding-horizontal
|
|
156
|
-
);
|
|
157
|
-
padding-block: 0;
|
|
158
|
-
}
|
|
305
|
+
/* Pop-up: fade the setpoint out once value === setpoint, keeping its space so
|
|
306
|
+
the value stays column-aligned. */
|
|
159
307
|
|
|
160
|
-
.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.root.size-base .value-cluster {
|
|
167
|
-
gap: var(
|
|
168
|
-
--instrument-components-readout-new-list-item-regular-value-container-gap
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.root.size-base.stacking-leading-src .content {
|
|
173
|
-
gap: var(--global-size-spacing-target-padding);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.root.size-base .divider {
|
|
177
|
-
block-size: var(
|
|
178
|
-
--global-typography-instrument-value-regular-container-height
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
.root.size-priority {
|
|
183
|
-
padding-inline: var(
|
|
184
|
-
--instrument-components-readout-new-list-item-medium-container-padding-horizontal
|
|
185
|
-
);
|
|
186
|
-
padding-block: var(
|
|
187
|
-
--instrument-components-readout-new-list-item-medium-container-padding-vertical
|
|
188
|
-
);
|
|
189
|
-
}
|
|
308
|
+
.block-setpoint.is-hiding {
|
|
309
|
+
opacity: 0;
|
|
310
|
+
}
|
|
190
311
|
|
|
191
|
-
.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
.root.size-priority .divider {
|
|
198
|
-
block-size: var(
|
|
199
|
-
--global-typography-instrument-value-medium-container-height
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.root.size-enhanced {
|
|
204
|
-
padding-inline: var(
|
|
205
|
-
--instrument-components-readout-new-list-item-large-container-padding-horizontal
|
|
206
|
-
);
|
|
207
|
-
padding-block: var(
|
|
208
|
-
--instrument-components-readout-new-list-item-large-container-padding-vertical
|
|
209
|
-
);
|
|
210
|
-
}
|
|
312
|
+
.block-setpoint.is-hidden {
|
|
313
|
+
opacity: 0;
|
|
314
|
+
visibility: hidden;
|
|
315
|
+
}
|
|
211
316
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
.
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
317
|
+
/* Touching / focus state: the setpoint triangle takes the marker's focus look — a
|
|
318
|
+
pale fill (--base-blue-100) with a dark 1px edge (--element-neutral-enhanced),
|
|
319
|
+
mirroring \`svghelpers/setpoint.ts\` focus (fill base-blue-100 + 2px stroke).
|
|
320
|
+
The glyph icon is \`fill: currentColor\` and can't take a CSS \`stroke\`, so the
|
|
321
|
+
edge is layered drop-shadows. The setpoint number keeps its normal, readable
|
|
322
|
+
colour. */
|
|
323
|
+
|
|
324
|
+
.block-setpoint.touching {
|
|
325
|
+
--_touching-outline: var(
|
|
326
|
+
--obc-readout-list-item-setpoint-touching-outline-color,
|
|
327
|
+
var(--element-neutral-enhanced-color)
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.block-setpoint.touching .block-icon {
|
|
332
|
+
color: var(
|
|
333
|
+
--obc-readout-list-item-setpoint-touching-color,
|
|
334
|
+
var(--base-blue-100)
|
|
335
|
+
);
|
|
336
|
+
filter: drop-shadow(1px 0 0 var(--_touching-outline))
|
|
337
|
+
drop-shadow(-1px 0 0 var(--_touching-outline))
|
|
338
|
+
drop-shadow(0 1px 0 var(--_touching-outline))
|
|
339
|
+
drop-shadow(0 -1px 0 var(--_touching-outline));
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.block-advice {
|
|
343
|
+
color: var(
|
|
344
|
+
--obc-readout-list-item-advice-color,
|
|
345
|
+
var(--element-neutral-color)
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.label {
|
|
350
|
+
color: var(
|
|
351
|
+
--obc-readout-list-item-label-color,
|
|
352
|
+
var(--element-inactive-color)
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.unit {
|
|
357
|
+
color: var(--obc-readout-list-item-unit-color, var(--element-inactive-color));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.source {
|
|
361
|
+
color: var(
|
|
362
|
+
--obc-readout-list-item-source-color,
|
|
363
|
+
var(--element-neutral-color)
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* ---------- Per-block data quality ----------
|
|
368
|
+
* Independent of (and nests inside) the row-level data-quality frame. Uses
|
|
369
|
+
* \`outline\` (not \`border\`) so the chip never shifts the block's width — the
|
|
370
|
+
* value stays column-aligned across rows. */
|
|
371
|
+
|
|
372
|
+
.block.data-low-integrity,
|
|
373
|
+
.block.data-invalid,
|
|
374
|
+
.source.data-low-integrity,
|
|
375
|
+
.source.data-invalid {
|
|
376
|
+
outline: 1px solid;
|
|
377
|
+
border-radius: var(--global-border-radius-border-radius-check);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.block.data-low-integrity,
|
|
381
|
+
.source.data-low-integrity {
|
|
382
|
+
background: var(--alert-low-integrity-background-color);
|
|
383
|
+
outline-color: var(--alert-low-integrity-border-color);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.block.data-invalid,
|
|
387
|
+
.source.data-invalid {
|
|
388
|
+
background: var(--alert-invalid-background-color);
|
|
389
|
+
outline-color: var(--alert-invalid-border-color);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.leading-icon {
|
|
393
|
+
display: inline-flex;
|
|
394
|
+
align-items: center;
|
|
395
|
+
justify-content: center;
|
|
396
|
+
flex: none;
|
|
397
|
+
color: var(--element-neutral-color);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.leading-icon ::slotted(*) {
|
|
401
|
+
display: block;
|
|
402
|
+
inline-size: 100%;
|
|
403
|
+
block-size: 100%;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.divider {
|
|
407
|
+
flex: none;
|
|
408
|
+
inline-size: 1px;
|
|
409
|
+
background-color: var(--border-outline-color);
|
|
410
|
+
align-self: stretch;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/* ---------- Value↔unit gap & degree column ----------
|
|
414
|
+
* Default 2px between the value digits and the unit. A degree (or a
|
|
415
|
+
* hasDegreeSpacer reserve) replaces the 2px with a cap-height degree column
|
|
416
|
+
* whose width scales with the value size, so value digits + units align across
|
|
417
|
+
* degree / no-degree rows of the same value size. */
|
|
418
|
+
|
|
419
|
+
.value-unit-gap {
|
|
420
|
+
flex: none;
|
|
421
|
+
inline-size: var(
|
|
422
|
+
--instrument-components-readout-new-general-horizontal-trim-padding
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.degree-column {
|
|
427
|
+
flex: none;
|
|
428
|
+
display: inline-flex;
|
|
429
|
+
align-items: flex-end;
|
|
430
|
+
justify-content: center;
|
|
431
|
+
inline-size: var(--_obc-readout-list-item-degree-width, 0);
|
|
432
|
+
overflow: clip;
|
|
433
|
+
color: var(--obc-readout-list-item-value-color, var(--element-neutral-color));
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.degree-column.tone-enhanced {
|
|
437
|
+
color: var(
|
|
438
|
+
--obc-readout-list-item-value-enhanced-color,
|
|
439
|
+
var(--element-neutral-enhanced-color)
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* Setpoint/advice degree glyphs inherit their block's colour. */
|
|
444
|
+
|
|
445
|
+
.degree-column.degree-inherit {
|
|
446
|
+
color: inherit;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.degree-column.degree-xs {
|
|
450
|
+
--_obc-readout-list-item-degree-width: var(
|
|
451
|
+
--global-typography-instrument-value-small-degree-unit-width
|
|
452
|
+
);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.degree-column.degree-s {
|
|
456
|
+
--_obc-readout-list-item-degree-width: var(
|
|
457
|
+
--global-typography-instrument-value-regular-degree-unit-width
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.degree-column.degree-m {
|
|
462
|
+
--_obc-readout-list-item-degree-width: var(
|
|
463
|
+
--global-typography-instrument-value-medium-degree-unit-width
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.degree-column.degree-l,
|
|
468
|
+
.degree-column.degree-xl {
|
|
469
|
+
--_obc-readout-list-item-degree-width: var(
|
|
470
|
+
--global-typography-instrument-value-large-degree-unit-width
|
|
471
|
+
);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/* Degree spacer: rendered AFTER the unit on a non-degree row that sets
|
|
475
|
+
hasDegreeSpacer. Its width (degree-compensation-padding = degree-column width
|
|
476
|
+
minus the 2px value↔unit gap) shifts the unit left so the row's value digits
|
|
477
|
+
stay aligned with degree rows in the same column. */
|
|
478
|
+
|
|
479
|
+
.degree-spacer {
|
|
480
|
+
flex: none;
|
|
481
|
+
align-self: stretch;
|
|
482
|
+
inline-size: var(--_obc-readout-list-item-degree-spacer-width, 0);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.size-small .degree-spacer {
|
|
486
|
+
--_obc-readout-list-item-degree-spacer-width: var(
|
|
487
|
+
--instrument-components-readout-new-list-item-regular-degree-compensation-padding
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.size-medium .degree-spacer {
|
|
492
|
+
--_obc-readout-list-item-degree-spacer-width: var(
|
|
493
|
+
--instrument-components-readout-new-list-item-medium-degree-compensation-padding
|
|
494
|
+
);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.size-large .degree-spacer {
|
|
498
|
+
--_obc-readout-list-item-degree-spacer-width: var(
|
|
499
|
+
--instrument-components-readout-new-list-item-large-degree-compensation-padding
|
|
500
|
+
);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/* ---------- Size tiers ----------
|
|
504
|
+
* Public small/medium/large map to the design token regular/medium/large
|
|
505
|
+
* tiers. */
|
|
506
|
+
|
|
507
|
+
.size-small .surface {
|
|
508
|
+
padding-inline: var(
|
|
509
|
+
--instrument-components-readout-new-list-item-regular-container-padding-horizontal
|
|
510
|
+
);
|
|
511
|
+
padding-block: var(
|
|
512
|
+
--instrument-components-readout-new-list-item-regular-container-padding-vertical
|
|
513
|
+
);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.size-small .content {
|
|
517
|
+
gap: var(
|
|
518
|
+
--instrument-components-readout-new-list-item-regular-content-container-gap
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
.size-small .value-cluster {
|
|
523
|
+
gap: var(
|
|
524
|
+
--instrument-components-readout-new-list-item-regular-value-container-gap
|
|
525
|
+
);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.size-small .block {
|
|
529
|
+
gap: var(--instrument-components-readout-new-general-regular-icon-gap);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.size-small .block-icon,
|
|
533
|
+
.size-small .leading-icon {
|
|
534
|
+
inline-size: var(
|
|
535
|
+
--instrument-components-readout-new-general-regular-icon-size
|
|
536
|
+
);
|
|
537
|
+
block-size: var(
|
|
538
|
+
--instrument-components-readout-new-general-regular-icon-size
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.size-small .divider {
|
|
543
|
+
block-size: var(
|
|
544
|
+
--global-typography-instrument-value-regular-container-height
|
|
545
|
+
);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.size-medium .surface {
|
|
549
|
+
padding-inline: var(
|
|
550
|
+
--instrument-components-readout-new-list-item-medium-container-padding-horizontal
|
|
551
|
+
);
|
|
552
|
+
padding-block: var(
|
|
553
|
+
--instrument-components-readout-new-list-item-medium-container-padding-vertical
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.size-medium .content {
|
|
558
|
+
gap: var(
|
|
559
|
+
--instrument-components-readout-new-list-item-medium-content-container-gap
|
|
560
|
+
);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
.size-medium .value-cluster {
|
|
564
|
+
gap: var(
|
|
565
|
+
--instrument-components-readout-new-list-item-medium-value-container-gap
|
|
566
|
+
);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.size-medium .block {
|
|
570
|
+
gap: var(--instrument-components-readout-new-general-medium-icon-gap);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.size-medium .block-icon,
|
|
574
|
+
.size-medium .leading-icon {
|
|
575
|
+
inline-size: var(
|
|
576
|
+
--instrument-components-readout-new-general-medium-icon-size
|
|
577
|
+
);
|
|
578
|
+
block-size: var(--instrument-components-readout-new-general-medium-icon-size);
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
.size-medium .divider {
|
|
582
|
+
block-size: var(--global-typography-instrument-value-medium-container-height);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
.size-large .surface {
|
|
586
|
+
padding-inline: var(
|
|
587
|
+
--instrument-components-readout-new-list-item-large-container-padding-horizontal
|
|
588
|
+
);
|
|
589
|
+
padding-block: var(
|
|
590
|
+
--instrument-components-readout-new-list-item-large-container-padding-vertical
|
|
591
|
+
);
|
|
592
|
+
min-block-size: var(
|
|
593
|
+
--instrument-components-readout-new-list-item-large-min-height
|
|
594
|
+
);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.size-large .content {
|
|
598
|
+
gap: var(--instrument-components-readout-new-list-item-large-content-gap);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.size-large .value-cluster {
|
|
602
|
+
gap: var(--instrument-components-readout-new-list-item-large-value-gap);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.size-large .block {
|
|
606
|
+
gap: var(--instrument-components-readout-new-general-large-icon-gap);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.size-large .block-icon,
|
|
610
|
+
.size-large .leading-icon {
|
|
611
|
+
inline-size: var(--instrument-components-readout-new-general-large-icon-size);
|
|
612
|
+
block-size: var(--instrument-components-readout-new-general-large-icon-size);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
.size-large .divider {
|
|
616
|
+
block-size: var(--global-typography-instrument-value-large-container-height);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/* ---------- Stacking ----------
|
|
620
|
+
* leading-unit / leading-src move the unit / source up beside the label and
|
|
621
|
+
* suppress the trailing variant. (Handled in markup; these rules tighten the
|
|
622
|
+
* label-stack gap.) */
|
|
623
|
+
|
|
624
|
+
.stacking-leading-src .content {
|
|
625
|
+
gap: var(--global-size-spacing-target-padding);
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/* ---------- Data quality ----------
|
|
629
|
+
* Orthogonal to the alert frame — both can apply at once. */
|
|
630
|
+
|
|
631
|
+
.root.data-low-integrity .surface,
|
|
632
|
+
.root.data-invalid .surface {
|
|
633
|
+
/* \`outline\` (not \`border\`) so the data-quality frame does not inset the
|
|
634
|
+
content by 1px — keeps the row's value column-aligned with unframed rows.
|
|
635
|
+
Matches the per-block data-quality rules. */
|
|
636
|
+
outline: 1px solid var(--_obc-readout-list-item-data-border);
|
|
637
|
+
background: var(--_obc-readout-list-item-data-background);
|
|
638
|
+
border-radius: var(--global-border-radius-border-radius-check);
|
|
639
|
+
}
|
|
257
640
|
|
|
258
641
|
.root.data-low-integrity {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
);
|
|
265
|
-
}
|
|
642
|
+
--_obc-readout-list-item-data-background: var(
|
|
643
|
+
--alert-low-integrity-background-color
|
|
644
|
+
);
|
|
645
|
+
--_obc-readout-list-item-data-border: var(--alert-low-integrity-border-color);
|
|
646
|
+
}
|
|
266
647
|
|
|
267
648
|
.root.data-invalid {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
649
|
+
--_obc-readout-list-item-data-background: var(
|
|
650
|
+
--alert-invalid-background-color
|
|
651
|
+
);
|
|
652
|
+
--_obc-readout-list-item-data-border: var(--alert-invalid-border-color);
|
|
653
|
+
}
|
|
273
654
|
`;
|
|
274
655
|
export {
|
|
275
656
|
componentStyle as default
|