@loidolt/theme-styles 0.6.0 → 0.8.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/README.md +3 -0
- package/package.json +3 -2
- package/src/accessibility.css +30 -9
- package/src/base.css +1 -1
- package/src/components/actions.css +13 -11
- package/src/components/charts.css +40 -0
- package/src/components/data.css +19 -13
- package/src/components/docs.css +304 -0
- package/src/components/feedback.css +19 -15
- package/src/components/forms.css +43 -30
- package/src/components/layout.css +33 -28
- package/src/components/maps.css +327 -0
- package/src/components/media.css +18 -12
- package/src/components/overlays.css +48 -40
- package/src/components/prose.css +21 -17
- package/src/components/selection.css +29 -22
- package/src/components/surfaces.css +18 -12
- package/src/components.css +3 -0
- package/src/index.css +7 -2
- package/src/presets/compact-dark-auto.css +2 -0
- package/src/presets/compact-dark.css +2 -0
- package/src/presets/compact.css +2 -0
- package/src/presets/loidolt-dark-auto.css +2 -0
- package/src/presets/loidolt-dark.css +2 -0
- package/src/presets/loidolt.css +2 -0
- package/src/presets/soft-dark-auto.css +2 -0
- package/src/presets/soft-dark.css +2 -0
- package/src/presets/soft.css +2 -0
- package/src/utilities.css +10 -4
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/* @loidolt/theme-maps. The map itself is painted by MapLibre from the same tokens (read at
|
|
2
|
+
runtime through `createTokenColors`); this file dresses MapLibre's controls, popups and
|
|
3
|
+
attribution, and the loidolt pieces placed on the map. It sits in `loidolt.components`, after
|
|
4
|
+
the `loidolt.vendor` layer MapLibre's own stylesheet goes in, so it wins without `!important`. */
|
|
5
|
+
.ldt-map {
|
|
6
|
+
position: relative;
|
|
7
|
+
min-width: 0;
|
|
8
|
+
height: var(--ldt-map-height, 25rem);
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
border: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
11
|
+
border-radius: var(--loidolt-radius-surface);
|
|
12
|
+
background: var(--loidolt-map-land);
|
|
13
|
+
}
|
|
14
|
+
.ldt-map__canvas {
|
|
15
|
+
position: absolute;
|
|
16
|
+
inset: 0;
|
|
17
|
+
}
|
|
18
|
+
.ldt-map__canvas[hidden],
|
|
19
|
+
.ldt-map__children[hidden] {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
.ldt-map__alert {
|
|
23
|
+
margin: 0.75rem;
|
|
24
|
+
}
|
|
25
|
+
.ldt-map :where(.maplibregl-map) {
|
|
26
|
+
color: var(--loidolt-text);
|
|
27
|
+
font: var(--loidolt-font-size-sm) / var(--loidolt-font-line-height-normal)
|
|
28
|
+
var(--loidolt-font-utility);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Controls stay above markers, which can be placed anywhere — including under a corner. */
|
|
32
|
+
.ldt-map
|
|
33
|
+
:where(
|
|
34
|
+
.maplibregl-ctrl-top-left,
|
|
35
|
+
.maplibregl-ctrl-top-right,
|
|
36
|
+
.maplibregl-ctrl-bottom-left,
|
|
37
|
+
.maplibregl-ctrl-bottom-right
|
|
38
|
+
) {
|
|
39
|
+
z-index: var(--loidolt-z-raised);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Control groups: square, hairline-bordered, on the surface — the toolbar look. */
|
|
43
|
+
.ldt-map .maplibregl-ctrl-group {
|
|
44
|
+
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
45
|
+
border-radius: 0;
|
|
46
|
+
background: var(--loidolt-surface);
|
|
47
|
+
box-shadow: none;
|
|
48
|
+
}
|
|
49
|
+
.ldt-map .maplibregl-ctrl-group button {
|
|
50
|
+
width: 2rem;
|
|
51
|
+
height: 2rem;
|
|
52
|
+
color: var(--loidolt-text);
|
|
53
|
+
}
|
|
54
|
+
.ldt-map .maplibregl-ctrl-group button + button {
|
|
55
|
+
border-top: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
56
|
+
}
|
|
57
|
+
.ldt-map .maplibregl-ctrl-group button:not(:disabled):hover {
|
|
58
|
+
background: var(--loidolt-surface-alt);
|
|
59
|
+
}
|
|
60
|
+
.ldt-map .maplibregl-ctrl-group button:focus-visible {
|
|
61
|
+
box-shadow: none;
|
|
62
|
+
}
|
|
63
|
+
/* MapLibre's icons are dark images, invisible on a dark surface. Masks of our own glyphs, filled
|
|
64
|
+
with the text colour, follow every theme. */
|
|
65
|
+
.ldt-map .maplibregl-ctrl button .maplibregl-ctrl-icon {
|
|
66
|
+
background-image: none;
|
|
67
|
+
background-color: currentColor;
|
|
68
|
+
mask: var(--ldt-map-icon) center / 1rem 1rem no-repeat;
|
|
69
|
+
}
|
|
70
|
+
.ldt-map .maplibregl-ctrl-zoom-in {
|
|
71
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 3v10M3 8h10' stroke='black' stroke-width='1.5'/%3E%3C/svg%3E");
|
|
72
|
+
}
|
|
73
|
+
.ldt-map .maplibregl-ctrl-zoom-out {
|
|
74
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h10' stroke='black' stroke-width='1.5'/%3E%3C/svg%3E");
|
|
75
|
+
}
|
|
76
|
+
.ldt-map .maplibregl-ctrl-compass {
|
|
77
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 2 11 8H5z'/%3E%3Cpath d='M5 8h6L8 14z' fill-opacity='.35'/%3E%3C/svg%3E");
|
|
78
|
+
}
|
|
79
|
+
.ldt-map .maplibregl-ctrl-fullscreen,
|
|
80
|
+
.ldt-map .maplibregl-ctrl-shrink {
|
|
81
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M2 6V2h4M10 2h4v4M14 10v4h-4M6 14H2v-4'/%3E%3C/svg%3E");
|
|
82
|
+
}
|
|
83
|
+
.ldt-map .maplibregl-ctrl-geolocate {
|
|
84
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M8 1v3M8 12v3M1 8h3M12 8h3'/%3E%3Crect x='4.5' y='4.5' width='7' height='7'/%3E%3C/svg%3E");
|
|
85
|
+
}
|
|
86
|
+
.ldt-map .maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active {
|
|
87
|
+
color: var(--loidolt-accent);
|
|
88
|
+
}
|
|
89
|
+
.ldt-map .maplibregl-ctrl-attrib-button {
|
|
90
|
+
--ldt-map-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M7 7h2v6H7zM7 3h2v2H7z'/%3E%3C/svg%3E");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Attribution: required by the tile licence, so readable — just quiet. */
|
|
94
|
+
.ldt-map .maplibregl-ctrl-attrib,
|
|
95
|
+
.ldt-map .maplibregl-ctrl-attrib.maplibregl-compact {
|
|
96
|
+
border-radius: 0;
|
|
97
|
+
color: var(--loidolt-text-muted);
|
|
98
|
+
background: var(--loidolt-surface);
|
|
99
|
+
font-size: var(--loidolt-font-size-xs);
|
|
100
|
+
}
|
|
101
|
+
.ldt-map .maplibregl-ctrl-attrib a {
|
|
102
|
+
display: inline-block;
|
|
103
|
+
padding-block: 0.35rem; /* @literal attribution link target */
|
|
104
|
+
color: var(--loidolt-text);
|
|
105
|
+
line-height: 1.5;
|
|
106
|
+
}
|
|
107
|
+
.ldt-map .maplibregl-ctrl-attrib-button {
|
|
108
|
+
border-radius: 0;
|
|
109
|
+
background-color: transparent;
|
|
110
|
+
}
|
|
111
|
+
.ldt-map .maplibregl-ctrl-scale {
|
|
112
|
+
border-color: var(--loidolt-text-muted);
|
|
113
|
+
color: var(--loidolt-text);
|
|
114
|
+
background: var(--loidolt-surface);
|
|
115
|
+
font-size: var(--loidolt-font-size-xs);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Controls of our own: legends, coordinates, the basemap switcher. */
|
|
119
|
+
.ldt-map-control {
|
|
120
|
+
padding: var(--loidolt-space-2) var(--loidolt-pad-control-x-sm);
|
|
121
|
+
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
122
|
+
border-radius: var(--loidolt-radius-surface);
|
|
123
|
+
color: var(--loidolt-text);
|
|
124
|
+
background: var(--loidolt-surface);
|
|
125
|
+
}
|
|
126
|
+
.ldt-map-control.ldt-basemap-switcher {
|
|
127
|
+
padding: 0;
|
|
128
|
+
border: 0;
|
|
129
|
+
background: transparent;
|
|
130
|
+
}
|
|
131
|
+
.ldt-map-legend {
|
|
132
|
+
display: grid;
|
|
133
|
+
gap: 0.4rem; /* @literal swatch-to-label spacing */
|
|
134
|
+
min-width: 9rem;
|
|
135
|
+
max-width: 16rem;
|
|
136
|
+
font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
|
|
137
|
+
}
|
|
138
|
+
.ldt-map-legend__title,
|
|
139
|
+
.ldt-map-legend__summary {
|
|
140
|
+
margin: 0;
|
|
141
|
+
color: var(--loidolt-text-muted);
|
|
142
|
+
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
143
|
+
font-weight: var(--loidolt-label-weight);
|
|
144
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
145
|
+
text-transform: var(--loidolt-label-transform);
|
|
146
|
+
}
|
|
147
|
+
.ldt-map-legend__summary {
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
}
|
|
150
|
+
.ldt-map-legend__section {
|
|
151
|
+
display: grid;
|
|
152
|
+
gap: 0.35rem; /* @literal legend rhythm */
|
|
153
|
+
}
|
|
154
|
+
.ldt-map-legend__items {
|
|
155
|
+
display: grid;
|
|
156
|
+
gap: var(--loidolt-space-1);
|
|
157
|
+
margin: 0;
|
|
158
|
+
padding: 0;
|
|
159
|
+
list-style: none;
|
|
160
|
+
}
|
|
161
|
+
.ldt-map-legend__item {
|
|
162
|
+
display: flex;
|
|
163
|
+
gap: var(--loidolt-space-2);
|
|
164
|
+
align-items: center;
|
|
165
|
+
}
|
|
166
|
+
.ldt-map-legend__key {
|
|
167
|
+
flex: none;
|
|
168
|
+
width: 0.75rem;
|
|
169
|
+
height: 0.75rem;
|
|
170
|
+
background: var(--ldt-legend-color);
|
|
171
|
+
}
|
|
172
|
+
.ldt-map-legend__key--line {
|
|
173
|
+
height: 0.2rem;
|
|
174
|
+
}
|
|
175
|
+
.ldt-map-legend__key--dot {
|
|
176
|
+
border-radius: var(--loidolt-border-radius-pill);
|
|
177
|
+
}
|
|
178
|
+
.ldt-map-legend__ramp {
|
|
179
|
+
height: 0.6rem;
|
|
180
|
+
}
|
|
181
|
+
.ldt-map-legend__ends {
|
|
182
|
+
display: flex;
|
|
183
|
+
justify-content: space-between;
|
|
184
|
+
margin: 0;
|
|
185
|
+
color: var(--loidolt-text-muted);
|
|
186
|
+
font-size: var(--loidolt-font-size-xs);
|
|
187
|
+
}
|
|
188
|
+
.ldt-map-coordinates {
|
|
189
|
+
display: flex;
|
|
190
|
+
gap: var(--loidolt-space-3);
|
|
191
|
+
margin: 0;
|
|
192
|
+
font: var(--loidolt-font-size-xs) var(--loidolt-font-mono);
|
|
193
|
+
font-variant-numeric: tabular-nums;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* The layer manager: a titled list of switches, sliders and move buttons. */
|
|
197
|
+
.ldt-layer-manager {
|
|
198
|
+
min-width: 13rem;
|
|
199
|
+
max-width: min(18rem, calc(100vw - 4rem));
|
|
200
|
+
/* Never taller than the map, so it cannot run into the controls in the corner below it. */
|
|
201
|
+
max-height: calc(var(--ldt-map-height, 25rem) - 4.5rem);
|
|
202
|
+
overflow-y: auto;
|
|
203
|
+
}
|
|
204
|
+
.ldt-layer-manager__title {
|
|
205
|
+
margin: 0;
|
|
206
|
+
}
|
|
207
|
+
.ldt-layer-manager__toggle {
|
|
208
|
+
width: 100%;
|
|
209
|
+
padding: 0.15rem 0; /* @literal toggle hit area */
|
|
210
|
+
border: 0;
|
|
211
|
+
color: var(--loidolt-text-muted);
|
|
212
|
+
background: none;
|
|
213
|
+
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
214
|
+
font-weight: var(--loidolt-label-weight);
|
|
215
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
216
|
+
text-align: start;
|
|
217
|
+
text-transform: var(--loidolt-label-transform);
|
|
218
|
+
cursor: pointer;
|
|
219
|
+
}
|
|
220
|
+
.ldt-layer-manager__list {
|
|
221
|
+
display: grid;
|
|
222
|
+
gap: var(--loidolt-space-2);
|
|
223
|
+
margin: 0.4rem 0 0;
|
|
224
|
+
padding: 0;
|
|
225
|
+
list-style: none;
|
|
226
|
+
}
|
|
227
|
+
.ldt-layer-manager__list[hidden] {
|
|
228
|
+
display: none;
|
|
229
|
+
}
|
|
230
|
+
.ldt-layer-manager__row {
|
|
231
|
+
display: grid;
|
|
232
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
233
|
+
gap: 0.35rem 0.5rem; /* @literal separator rhythm */
|
|
234
|
+
align-items: center;
|
|
235
|
+
padding-top: var(--loidolt-space-2);
|
|
236
|
+
border-top: var(--loidolt-border-width) solid var(--loidolt-border-soft);
|
|
237
|
+
}
|
|
238
|
+
.ldt-layer-manager__row:first-child {
|
|
239
|
+
padding-top: 0;
|
|
240
|
+
border-top: 0;
|
|
241
|
+
}
|
|
242
|
+
.ldt-layer-manager__move {
|
|
243
|
+
display: flex;
|
|
244
|
+
gap: 0.15rem; /* @literal icon pair */
|
|
245
|
+
}
|
|
246
|
+
.ldt-layer-manager__opacity {
|
|
247
|
+
grid-column: 1 / -1;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Markers: the loidolt pin or dot, in a button that takes focus. */
|
|
251
|
+
.ldt-map-marker {
|
|
252
|
+
display: block;
|
|
253
|
+
padding: 0;
|
|
254
|
+
border: 0;
|
|
255
|
+
color: inherit;
|
|
256
|
+
background: none;
|
|
257
|
+
cursor: pointer;
|
|
258
|
+
}
|
|
259
|
+
span.ldt-map-marker {
|
|
260
|
+
cursor: default;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Popups: square, on the surface, no tip — the same frame as a popover. */
|
|
264
|
+
.ldt-map-popup .maplibregl-popup-content {
|
|
265
|
+
padding: 0;
|
|
266
|
+
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
267
|
+
border-radius: 0;
|
|
268
|
+
color: var(--loidolt-text);
|
|
269
|
+
background: var(--loidolt-surface);
|
|
270
|
+
box-shadow: var(--loidolt-shadow-popover);
|
|
271
|
+
}
|
|
272
|
+
.ldt-map-popup .maplibregl-popup-tip {
|
|
273
|
+
display: none;
|
|
274
|
+
}
|
|
275
|
+
.ldt-map-popup__content {
|
|
276
|
+
display: grid;
|
|
277
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
278
|
+
align-items: start;
|
|
279
|
+
gap: var(--loidolt-space-1);
|
|
280
|
+
max-width: min(18rem, 80vw);
|
|
281
|
+
padding: 0.5rem 0.35rem 0.6rem 0.75rem; /* @literal popup inset clears the close button */
|
|
282
|
+
}
|
|
283
|
+
.ldt-map-popup__body > :first-child {
|
|
284
|
+
margin-top: 0.3rem;
|
|
285
|
+
}
|
|
286
|
+
.ldt-map-popup__body > :last-child {
|
|
287
|
+
margin-bottom: 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/* The feature list: every place on the map, as rows. */
|
|
291
|
+
.ldt-map-features__list {
|
|
292
|
+
margin: 0;
|
|
293
|
+
padding: 0;
|
|
294
|
+
border-top: var(--loidolt-border-width) solid var(--loidolt-border-soft);
|
|
295
|
+
list-style: none;
|
|
296
|
+
}
|
|
297
|
+
.ldt-map-features__item {
|
|
298
|
+
display: grid;
|
|
299
|
+
gap: 0.1rem; /* @literal hairline between lines */
|
|
300
|
+
width: 100%;
|
|
301
|
+
padding: 0.55rem 0.75rem; /* @literal feature list metrics */
|
|
302
|
+
border: 0;
|
|
303
|
+
border-bottom: var(--loidolt-border-width) solid var(--loidolt-border-soft);
|
|
304
|
+
border-left: var(--loidolt-stroke-accent) solid transparent;
|
|
305
|
+
color: var(--loidolt-text);
|
|
306
|
+
background: none;
|
|
307
|
+
font: inherit;
|
|
308
|
+
text-align: start;
|
|
309
|
+
cursor: pointer;
|
|
310
|
+
}
|
|
311
|
+
.ldt-map-features__item:hover {
|
|
312
|
+
background: var(--loidolt-surface-alt);
|
|
313
|
+
}
|
|
314
|
+
.ldt-map-features__item[aria-current='true'] {
|
|
315
|
+
border-left-color: var(--loidolt-accent);
|
|
316
|
+
background: var(--loidolt-surface-alt);
|
|
317
|
+
}
|
|
318
|
+
.ldt-map-features__description {
|
|
319
|
+
color: var(--loidolt-text-muted);
|
|
320
|
+
font-size: var(--loidolt-font-size-sm);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@media (forced-colors: active) {
|
|
324
|
+
.ldt-map .maplibregl-ctrl button .maplibregl-ctrl-icon {
|
|
325
|
+
background-color: ButtonText;
|
|
326
|
+
}
|
|
327
|
+
}
|
package/src/components/media.css
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
}
|
|
85
85
|
.ldt-media-player__meta {
|
|
86
86
|
display: grid;
|
|
87
|
-
gap: 0.1rem;
|
|
87
|
+
gap: 0.1rem; /* @literal hairline between lines */
|
|
88
88
|
min-width: 0;
|
|
89
89
|
}
|
|
90
90
|
.ldt-media-player--audio .ldt-media-player__meta:first-child {
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
color: var(--loidolt-accent);
|
|
126
126
|
}
|
|
127
127
|
.ldt-media-controls__text {
|
|
128
|
-
letter-spacing: var(--loidolt-
|
|
128
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
129
129
|
}
|
|
130
130
|
/* Focus rings on the dark bar follow the ink so they stay visible in both themes. */
|
|
131
131
|
.ldt-media-controls :focus-visible {
|
|
@@ -169,7 +169,8 @@
|
|
|
169
169
|
.ldt-media-controls__speed {
|
|
170
170
|
min-height: 1.5rem;
|
|
171
171
|
border: var(--loidolt-border-width) solid currentColor;
|
|
172
|
-
|
|
172
|
+
border-radius: var(--loidolt-radius-control);
|
|
173
|
+
padding: 0 0.3rem; /* @literal compact readout */
|
|
173
174
|
color: inherit;
|
|
174
175
|
background: transparent;
|
|
175
176
|
font: inherit;
|
|
@@ -191,6 +192,7 @@
|
|
|
191
192
|
aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
|
|
192
193
|
overflow: hidden;
|
|
193
194
|
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
195
|
+
border-radius: var(--loidolt-radius-surface);
|
|
194
196
|
background: var(--loidolt-surface-inverse);
|
|
195
197
|
}
|
|
196
198
|
.ldt-media-embed__frame {
|
|
@@ -225,12 +227,13 @@
|
|
|
225
227
|
}
|
|
226
228
|
.ldt-media-embed__title {
|
|
227
229
|
max-width: 32rem;
|
|
228
|
-
padding: 0.2rem 0.5rem;
|
|
230
|
+
padding: 0.2rem 0.5rem; /* @literal caption chip */
|
|
229
231
|
color: var(--loidolt-text-inverse);
|
|
230
232
|
background: var(--loidolt-surface-inverse);
|
|
231
233
|
font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
font-weight: var(--loidolt-label-weight);
|
|
235
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
236
|
+
text-transform: var(--loidolt-label-transform);
|
|
234
237
|
}
|
|
235
238
|
.ldt-media-embed__unsupported {
|
|
236
239
|
display: grid;
|
|
@@ -310,12 +313,13 @@
|
|
|
310
313
|
border-color: var(--loidolt-accent);
|
|
311
314
|
}
|
|
312
315
|
.ldt-media-tile__kind {
|
|
313
|
-
padding: 0.1rem 0.4rem;
|
|
316
|
+
padding: 0.1rem 0.4rem; /* @literal kind chip */
|
|
314
317
|
color: var(--loidolt-text-inverse);
|
|
315
318
|
background: var(--loidolt-surface-inverse);
|
|
316
319
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
317
|
-
|
|
318
|
-
|
|
320
|
+
font-weight: var(--loidolt-label-weight);
|
|
321
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
322
|
+
text-transform: var(--loidolt-label-transform);
|
|
319
323
|
}
|
|
320
324
|
.ldt-media-tile__caption {
|
|
321
325
|
color: var(--loidolt-text-muted);
|
|
@@ -347,7 +351,7 @@
|
|
|
347
351
|
.ldt-lightbox__counter {
|
|
348
352
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
349
353
|
font-variant-numeric: tabular-nums;
|
|
350
|
-
letter-spacing: var(--loidolt-
|
|
354
|
+
letter-spacing: var(--loidolt-label-tracking);
|
|
351
355
|
}
|
|
352
356
|
.ldt-lightbox__tools {
|
|
353
357
|
display: flex;
|
|
@@ -360,7 +364,8 @@
|
|
|
360
364
|
min-height: var(--loidolt-size-control-sm);
|
|
361
365
|
place-items: center;
|
|
362
366
|
border: var(--loidolt-border-width) solid currentColor;
|
|
363
|
-
|
|
367
|
+
border-radius: var(--loidolt-radius-control);
|
|
368
|
+
padding: 0 var(--loidolt-space-2);
|
|
364
369
|
color: inherit;
|
|
365
370
|
background: var(--loidolt-surface-inverse);
|
|
366
371
|
font: var(--loidolt-font-size-base) var(--loidolt-font-utility);
|
|
@@ -402,7 +407,7 @@
|
|
|
402
407
|
width: 0.55rem;
|
|
403
408
|
height: 0.55rem;
|
|
404
409
|
border: solid currentColor;
|
|
405
|
-
border-width: 0 0 2px 2px;
|
|
410
|
+
border-width: 0 0 2px 2px; /* @literal chevron glyph */
|
|
406
411
|
transform: translateX(0.1rem) rotate(45deg);
|
|
407
412
|
}
|
|
408
413
|
.ldt-lightbox__nav--next .ldt-lightbox__chevron,
|
|
@@ -437,6 +442,7 @@
|
|
|
437
442
|
min-height: var(--loidolt-size-control-sm);
|
|
438
443
|
place-items: center;
|
|
439
444
|
border: var(--loidolt-border-width) solid var(--loidolt-border-control);
|
|
445
|
+
border-radius: var(--loidolt-radius-control);
|
|
440
446
|
padding: 0;
|
|
441
447
|
color: var(--loidolt-text);
|
|
442
448
|
background: var(--loidolt-surface);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
max-height: min(48rem, calc(100dvh - 2rem));
|
|
15
15
|
overflow: hidden;
|
|
16
16
|
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
17
|
+
border-radius: var(--loidolt-radius-overlay);
|
|
17
18
|
color: var(--loidolt-text);
|
|
18
19
|
background: var(--loidolt-surface);
|
|
19
20
|
box-shadow: var(--loidolt-shadow-modal);
|
|
@@ -41,18 +42,18 @@
|
|
|
41
42
|
display: flex;
|
|
42
43
|
flex: none;
|
|
43
44
|
align-items: center;
|
|
44
|
-
gap:
|
|
45
|
+
gap: var(--loidolt-space-1);
|
|
45
46
|
}
|
|
46
47
|
.ldt-dialog__header,
|
|
47
48
|
.ldt-dialog__body,
|
|
48
49
|
.ldt-dialog__footer {
|
|
49
|
-
padding:
|
|
50
|
+
padding: var(--loidolt-pad-overlay);
|
|
50
51
|
}
|
|
51
52
|
.ldt-dialog__header {
|
|
52
53
|
display: flex;
|
|
53
54
|
align-items: start;
|
|
54
55
|
justify-content: space-between;
|
|
55
|
-
gap:
|
|
56
|
+
gap: var(--loidolt-space-4);
|
|
56
57
|
border-bottom: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
57
58
|
}
|
|
58
59
|
.ldt-dialog__header > :first-child,
|
|
@@ -66,7 +67,7 @@
|
|
|
66
67
|
display: flex;
|
|
67
68
|
flex-wrap: wrap;
|
|
68
69
|
justify-content: flex-end;
|
|
69
|
-
gap:
|
|
70
|
+
gap: var(--loidolt-gap-actions);
|
|
70
71
|
border-top: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
71
72
|
}
|
|
72
73
|
.ldt-dialog__footer .ldt-button,
|
|
@@ -154,13 +155,13 @@
|
|
|
154
155
|
.ldt-drawer__header,
|
|
155
156
|
.ldt-drawer__body,
|
|
156
157
|
.ldt-drawer__footer {
|
|
157
|
-
padding:
|
|
158
|
+
padding: var(--loidolt-pad-overlay);
|
|
158
159
|
}
|
|
159
160
|
.ldt-drawer__header {
|
|
160
161
|
display: flex;
|
|
161
162
|
align-items: start;
|
|
162
163
|
justify-content: space-between;
|
|
163
|
-
gap:
|
|
164
|
+
gap: var(--loidolt-space-4);
|
|
164
165
|
border-bottom: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
165
166
|
}
|
|
166
167
|
.ldt-drawer__body {
|
|
@@ -170,7 +171,7 @@
|
|
|
170
171
|
display: flex;
|
|
171
172
|
flex-wrap: wrap;
|
|
172
173
|
justify-content: flex-end;
|
|
173
|
-
gap:
|
|
174
|
+
gap: var(--loidolt-gap-actions);
|
|
174
175
|
border-top: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
175
176
|
}
|
|
176
177
|
.ldt-drawer__title {
|
|
@@ -188,31 +189,34 @@
|
|
|
188
189
|
z-index: var(--loidolt-z-menu);
|
|
189
190
|
min-width: 13rem;
|
|
190
191
|
max-width: min(22rem, calc(100vw - 2rem));
|
|
191
|
-
padding:
|
|
192
|
+
padding: var(--loidolt-pad-popover);
|
|
192
193
|
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
194
|
+
border-radius: var(--loidolt-radius-overlay);
|
|
193
195
|
color: var(--loidolt-text);
|
|
194
196
|
background: var(--loidolt-surface);
|
|
195
197
|
box-shadow: var(--loidolt-shadow-popover);
|
|
196
198
|
}
|
|
197
199
|
.ldt-menu {
|
|
198
200
|
display: grid;
|
|
199
|
-
gap: 0.1rem;
|
|
201
|
+
gap: 0.1rem; /* @literal hairline between items */
|
|
200
202
|
}
|
|
201
203
|
.ldt-menu__label {
|
|
202
|
-
padding: 0.45rem 0.55rem 0.3rem;
|
|
204
|
+
padding: 0.45rem 0.55rem 0.3rem; /* @literal optical alignment with item text */
|
|
203
205
|
color: var(--loidolt-text-accent);
|
|
204
206
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
font-weight: var(--loidolt-label-weight);
|
|
208
|
+
letter-spacing: calc(var(--loidolt-label-tracking) * 0.9);
|
|
209
|
+
text-transform: var(--loidolt-label-transform);
|
|
207
210
|
}
|
|
208
211
|
.ldt-menu__item {
|
|
209
212
|
width: 100%;
|
|
210
213
|
display: flex;
|
|
211
214
|
align-items: center;
|
|
212
215
|
justify-content: space-between;
|
|
213
|
-
gap:
|
|
216
|
+
gap: var(--loidolt-space-4);
|
|
214
217
|
border: 0;
|
|
215
|
-
|
|
218
|
+
border-radius: var(--loidolt-radius-inner);
|
|
219
|
+
padding: var(--loidolt-pad-item);
|
|
216
220
|
color: var(--loidolt-text);
|
|
217
221
|
background: transparent;
|
|
218
222
|
text-align: left;
|
|
@@ -228,7 +232,7 @@
|
|
|
228
232
|
.ldt-menu__hint {
|
|
229
233
|
color: var(--loidolt-text-muted);
|
|
230
234
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
231
|
-
letter-spacing:
|
|
235
|
+
letter-spacing: var(--loidolt-control-tracking);
|
|
232
236
|
}
|
|
233
237
|
.ldt-menu__item:hover:not(:disabled, [data-disabled]) .ldt-menu__hint,
|
|
234
238
|
.ldt-menu__item[data-highlighted] .ldt-menu__hint {
|
|
@@ -250,13 +254,13 @@
|
|
|
250
254
|
}
|
|
251
255
|
.ldt-menu__group {
|
|
252
256
|
display: grid;
|
|
253
|
-
gap: 0.1rem;
|
|
257
|
+
gap: 0.1rem; /* @literal hairline between items */
|
|
254
258
|
}
|
|
255
259
|
/* Checkbox and radio rows lead with a drawn indicator, so state never rests on colour alone. */
|
|
256
260
|
.ldt-menu__item--check,
|
|
257
261
|
.ldt-menu__item--radio {
|
|
258
262
|
justify-content: flex-start;
|
|
259
|
-
gap: 0.6rem;
|
|
263
|
+
gap: 0.6rem; /* @literal glyph-to-label spacing, not density */
|
|
260
264
|
}
|
|
261
265
|
.ldt-menu__item--check .ldt-menu__hint,
|
|
262
266
|
.ldt-menu__item--radio .ldt-menu__hint {
|
|
@@ -274,7 +278,7 @@
|
|
|
274
278
|
position: absolute;
|
|
275
279
|
inset: 0.05rem 0.22rem 0.18rem;
|
|
276
280
|
border: solid currentColor;
|
|
277
|
-
border-width: 0 2px 2px 0;
|
|
281
|
+
border-width: 0 2px 2px 0; /* @literal checkmark glyph */
|
|
278
282
|
transform: rotate(45deg);
|
|
279
283
|
}
|
|
280
284
|
.ldt-menu__item--radio[data-state='checked'] .ldt-menu__indicator::after {
|
|
@@ -288,7 +292,7 @@
|
|
|
288
292
|
height: 0.4rem;
|
|
289
293
|
flex: none;
|
|
290
294
|
border: solid currentColor;
|
|
291
|
-
border-width: 0 1.5px 1.5px 0;
|
|
295
|
+
border-width: 0 1.5px 1.5px 0; /* @literal chevron glyph */
|
|
292
296
|
transform: rotate(-45deg);
|
|
293
297
|
}
|
|
294
298
|
.ldt-menu__item--sub[data-state='open'] {
|
|
@@ -304,7 +308,8 @@
|
|
|
304
308
|
.ldt-tooltip {
|
|
305
309
|
z-index: var(--loidolt-z-tooltip);
|
|
306
310
|
max-width: 18rem;
|
|
307
|
-
padding: 0.4rem 0.55rem;
|
|
311
|
+
padding: 0.4rem 0.55rem; /* @literal compact by nature; not a density surface */
|
|
312
|
+
border-radius: var(--loidolt-radius-control);
|
|
308
313
|
color: var(--loidolt-text-inverse);
|
|
309
314
|
background: var(--loidolt-surface-inverse);
|
|
310
315
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
@@ -329,7 +334,7 @@
|
|
|
329
334
|
.ldt-tabs__list {
|
|
330
335
|
max-width: 100%;
|
|
331
336
|
display: flex;
|
|
332
|
-
gap: 2px;
|
|
337
|
+
gap: 2px; /* @literal hairline seam between tabs */
|
|
333
338
|
overflow-x: auto;
|
|
334
339
|
border-bottom: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
335
340
|
overscroll-behavior-inline: contain;
|
|
@@ -345,18 +350,19 @@
|
|
|
345
350
|
.ldt-tabs__trigger {
|
|
346
351
|
min-height: var(--loidolt-size-control);
|
|
347
352
|
border: 0;
|
|
348
|
-
border-bottom:
|
|
349
|
-
padding: 0
|
|
353
|
+
border-bottom: var(--loidolt-stroke-indicator) solid transparent;
|
|
354
|
+
padding: 0 var(--loidolt-pad-control-x);
|
|
350
355
|
color: var(--loidolt-text-muted);
|
|
351
356
|
background: transparent;
|
|
352
357
|
font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
|
|
353
|
-
|
|
354
|
-
|
|
358
|
+
font-weight: var(--loidolt-control-weight);
|
|
359
|
+
letter-spacing: var(--loidolt-control-tracking);
|
|
360
|
+
text-transform: var(--loidolt-control-transform);
|
|
355
361
|
}
|
|
356
362
|
.ldt-tabs__trigger[data-orientation='vertical'] {
|
|
357
363
|
border-bottom: 0;
|
|
358
|
-
border-right:
|
|
359
|
-
padding: 0
|
|
364
|
+
border-right: var(--loidolt-stroke-indicator) solid transparent;
|
|
365
|
+
padding: 0 var(--loidolt-pad-control-x);
|
|
360
366
|
text-align: left;
|
|
361
367
|
}
|
|
362
368
|
.ldt-tabs__trigger[data-state='active'],
|
|
@@ -368,7 +374,7 @@
|
|
|
368
374
|
padding-block: 0;
|
|
369
375
|
}
|
|
370
376
|
.ldt-tabs__content {
|
|
371
|
-
padding-block:
|
|
377
|
+
padding-block: var(--loidolt-space-4);
|
|
372
378
|
}
|
|
373
379
|
|
|
374
380
|
@media (max-width: 760px) {
|
|
@@ -380,7 +386,7 @@
|
|
|
380
386
|
border-bottom: var(--loidolt-border-width) solid var(--loidolt-border);
|
|
381
387
|
}
|
|
382
388
|
.ldt-tabs__content[data-orientation='vertical'] {
|
|
383
|
-
padding-block:
|
|
389
|
+
padding-block: var(--loidolt-space-4);
|
|
384
390
|
}
|
|
385
391
|
}
|
|
386
392
|
/* The option list of Combobox and MultiSelect: the menu surface, sized to its field. */
|
|
@@ -390,38 +396,40 @@
|
|
|
390
396
|
max-width: min(28rem, calc(100vw - 2rem));
|
|
391
397
|
max-height: min(20rem, var(--bits-floating-available-height, 20rem));
|
|
392
398
|
display: grid;
|
|
393
|
-
gap: 0.1rem;
|
|
399
|
+
gap: 0.1rem; /* @literal hairline between items */
|
|
394
400
|
overflow-y: auto;
|
|
395
|
-
padding: 0.35rem;
|
|
401
|
+
padding: 0.35rem; /* @literal listbox inset */
|
|
396
402
|
border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
|
|
403
|
+
border-radius: var(--loidolt-radius-overlay);
|
|
397
404
|
color: var(--loidolt-text);
|
|
398
405
|
background: var(--loidolt-surface);
|
|
399
406
|
box-shadow: var(--loidolt-shadow-popover);
|
|
400
407
|
}
|
|
401
408
|
.ldt-listbox__group {
|
|
402
409
|
display: grid;
|
|
403
|
-
gap: 0.1rem;
|
|
410
|
+
gap: 0.1rem; /* @literal hairline between items */
|
|
404
411
|
}
|
|
405
412
|
.ldt-listbox__group + .ldt-listbox__group,
|
|
406
413
|
.ldt-listbox__item + .ldt-listbox__group {
|
|
407
414
|
margin-top: 0.25rem;
|
|
408
415
|
border-top: var(--loidolt-border-width) solid var(--loidolt-border-soft);
|
|
409
|
-
padding-top:
|
|
416
|
+
padding-top: var(--loidolt-space-1);
|
|
410
417
|
}
|
|
411
418
|
.ldt-listbox__heading {
|
|
412
|
-
padding: 0.4rem 0.55rem 0.25rem;
|
|
419
|
+
padding: 0.4rem 0.55rem 0.25rem; /* @literal optical alignment with item text */
|
|
413
420
|
color: var(--loidolt-text-accent);
|
|
414
421
|
font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
|
|
415
|
-
|
|
416
|
-
|
|
422
|
+
font-weight: var(--loidolt-label-weight);
|
|
423
|
+
letter-spacing: calc(var(--loidolt-label-tracking) * 0.9);
|
|
424
|
+
text-transform: var(--loidolt-label-transform);
|
|
417
425
|
}
|
|
418
426
|
.ldt-listbox__item {
|
|
419
427
|
min-height: 1.5rem;
|
|
420
428
|
display: flex;
|
|
421
429
|
align-items: center;
|
|
422
430
|
justify-content: space-between;
|
|
423
|
-
gap:
|
|
424
|
-
padding: 0.55rem;
|
|
431
|
+
gap: var(--loidolt-space-4);
|
|
432
|
+
padding: 0.55rem; /* @literal listbox option metrics */
|
|
425
433
|
cursor: default;
|
|
426
434
|
}
|
|
427
435
|
.ldt-listbox__item[data-highlighted] {
|
|
@@ -438,14 +446,14 @@
|
|
|
438
446
|
height: 0.65rem;
|
|
439
447
|
flex: none;
|
|
440
448
|
border: solid transparent;
|
|
441
|
-
border-width: 0 2px 2px 0;
|
|
449
|
+
border-width: 0 2px 2px 0; /* @literal checkmark glyph */
|
|
442
450
|
transform: rotate(45deg) translate(-0.1rem, -0.1rem);
|
|
443
451
|
}
|
|
444
452
|
.ldt-listbox__item[data-selected] .ldt-listbox__check {
|
|
445
453
|
border-color: currentColor;
|
|
446
454
|
}
|
|
447
455
|
.ldt-listbox__empty {
|
|
448
|
-
padding: 0.55rem;
|
|
456
|
+
padding: 0.55rem; /* @literal matches the option metrics */
|
|
449
457
|
color: var(--loidolt-text-muted);
|
|
450
458
|
font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
|
|
451
459
|
}
|