declarative-forms 2.0.0 → 2.0.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 +34 -1
- package/README.md +7 -2
- package/package.json +4 -3
- package/styles/classic.css +743 -0
- package/styles/declarative-forms.css +1023 -468
- package/styles/theme.css +0 -1293
package/styles/theme.css
DELETED
|
@@ -1,1293 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* declarative-forms — modern theme
|
|
3
|
-
*
|
|
4
|
-
* import 'declarative-forms/theme.css'; // INSTEAD OF styles.css
|
|
5
|
-
*
|
|
6
|
-
* A complete, standalone replacement for the default stylesheet. It renders the
|
|
7
|
-
* same frozen DOM — every class name, id and structural hook is identical — so
|
|
8
|
-
* existing overlay CSS keeps applying and nothing about the markup changes.
|
|
9
|
-
*
|
|
10
|
-
* Three rules were followed so this stays a safe swap:
|
|
11
|
-
*
|
|
12
|
-
* 1. Selectors mirror the default stylesheet's, at the same specificity.
|
|
13
|
-
* Overrides you wrote against the default theme therefore still win, with
|
|
14
|
-
* the same amount of force they needed before.
|
|
15
|
-
* 2. Every visual value is a `--dl-*` custom property, declared at zero
|
|
16
|
-
* specificity via `:where()`, so setting a token anywhere beats it.
|
|
17
|
-
* 3. Nothing here changes the DOM contract. See docs/dom-contract.md.
|
|
18
|
-
*
|
|
19
|
-
* Light and dark are chosen automatically from `prefers-color-scheme`. Force
|
|
20
|
-
* one with `data-dl-theme="light"` or `data-dl-theme="dark"` on any ancestor
|
|
21
|
-
* (usually <html>), which also works per-dialog.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/* ══════════════════════════════════════════════════════════ design tokens ══ */
|
|
25
|
-
|
|
26
|
-
:where(:root),
|
|
27
|
-
:where([data-dl-theme='light']) {
|
|
28
|
-
/* — type ————————————————————————————————————————————————— */
|
|
29
|
-
--dl-font-family:
|
|
30
|
-
ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
|
|
31
|
-
sans-serif;
|
|
32
|
-
--dl-font-size: 0.9375rem;
|
|
33
|
-
--dl-font-size-sm: 0.8125rem;
|
|
34
|
-
--dl-line-height: 1.5;
|
|
35
|
-
|
|
36
|
-
/* — neutrals ——————————————————————————————————————————————— */
|
|
37
|
-
--dl-surface: #ffffff;
|
|
38
|
-
--dl-surface-muted: #f6f7f9;
|
|
39
|
-
--dl-surface-sunken: #eef0f4;
|
|
40
|
-
--dl-surface-raised: #ffffff;
|
|
41
|
-
|
|
42
|
-
--dl-text-color: #1b1f27;
|
|
43
|
-
--dl-label-color: #39414f;
|
|
44
|
-
--dl-text-muted: #6b7484;
|
|
45
|
-
|
|
46
|
-
--dl-line-color: #e0e4ea;
|
|
47
|
-
--dl-line-strong: #cbd2dc;
|
|
48
|
-
|
|
49
|
-
/* — accent ————————————————————————————————————————————————— */
|
|
50
|
-
--dl-accent: #12968f;
|
|
51
|
-
--dl-accent-hover: #0e807a;
|
|
52
|
-
--dl-accent-contrast: #ffffff;
|
|
53
|
-
--dl-accent-soft: rgba(18, 150, 143, 0.1);
|
|
54
|
-
--dl-accent-ring: rgba(18, 150, 143, 0.28);
|
|
55
|
-
|
|
56
|
-
--dl-danger: #d1394b;
|
|
57
|
-
--dl-danger-soft: rgba(209, 57, 75, 0.1);
|
|
58
|
-
|
|
59
|
-
/* — overlay ———————————————————————————————————————————————— */
|
|
60
|
-
--dl-overlay: rgba(17, 22, 29, 0.42);
|
|
61
|
-
--dl-overlay-blur: 4px;
|
|
62
|
-
|
|
63
|
-
/* — shape —————————————————————————————————————————————————— */
|
|
64
|
-
--dl-radius-sm: 6px;
|
|
65
|
-
--dl-radius: 9px;
|
|
66
|
-
--dl-radius-lg: 14px;
|
|
67
|
-
--dl-radius-pill: 999px;
|
|
68
|
-
|
|
69
|
-
--dl-shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06);
|
|
70
|
-
--dl-shadow-modal:
|
|
71
|
-
0 1px 3px rgba(16, 24, 40, 0.08), 0 12px 28px -6px rgba(16, 24, 40, 0.16),
|
|
72
|
-
0 32px 64px -12px rgba(16, 24, 40, 0.18);
|
|
73
|
-
--dl-shadow-popup:
|
|
74
|
-
0 4px 10px -2px rgba(16, 24, 40, 0.1), 0 16px 32px -8px rgba(16, 24, 40, 0.18);
|
|
75
|
-
|
|
76
|
-
/* — metrics ———————————————————————————————————————————————— */
|
|
77
|
-
--dl-gap: 1.125rem;
|
|
78
|
-
--dl-field-width: 100%;
|
|
79
|
-
--dl-modal-width: 30rem;
|
|
80
|
-
--dl-large-modal-width: 52rem;
|
|
81
|
-
--dl-modal-padding: 1.5rem;
|
|
82
|
-
--dl-stack-peek: 8px;
|
|
83
|
-
--dl-stack-inset: 12px;
|
|
84
|
-
--dl-control-padding-y: 0.55rem;
|
|
85
|
-
--dl-control-padding-x: 0.75rem;
|
|
86
|
-
|
|
87
|
-
--dl-transition: 140ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
88
|
-
|
|
89
|
-
/* — feedback ——————————————————————————————————————————————— */
|
|
90
|
-
--dl-tooltip-background: #eef0f4;
|
|
91
|
-
--dl-tooltip-color: #5b6473;
|
|
92
|
-
--dl-tooltip-bubble-background: #22272f;
|
|
93
|
-
--dl-tooltip-bubble-color: #eceef2;
|
|
94
|
-
|
|
95
|
-
--dl-tooltip-success-background: #dcf5e7;
|
|
96
|
-
--dl-tooltip-success-color: #11794b;
|
|
97
|
-
--dl-tooltip-warning-background: #fdf0cd;
|
|
98
|
-
--dl-tooltip-warning-color: #7a5407;
|
|
99
|
-
--dl-tooltip-error-background: #fbe0e3;
|
|
100
|
-
--dl-tooltip-error-color: #96222f;
|
|
101
|
-
|
|
102
|
-
/* — combobox (also read by the CSS <dl-select> injects itself) ——— */
|
|
103
|
-
--dl-options-background: var(--dl-surface-raised);
|
|
104
|
-
--dl-options-text-color: var(--dl-text-color);
|
|
105
|
-
--dl-options-inactive-text-color: var(--dl-text-muted);
|
|
106
|
-
--dl-options-option-hover-color: var(--dl-accent-soft);
|
|
107
|
-
--dl-options-padding-top: 0.5rem;
|
|
108
|
-
--dl-options-padding-right: 0.75rem;
|
|
109
|
-
--dl-options-padding-bottom: 0.5rem;
|
|
110
|
-
--dl-options-padding-left: 0.75rem;
|
|
111
|
-
--dl-focused-line-color: var(--dl-accent);
|
|
112
|
-
--dl-drop-down-icon-margin-top: 7px;
|
|
113
|
-
--dl-select-loading-col1: #eef0f4;
|
|
114
|
-
--dl-select-loading-col2: #e2e6ec;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/* Automatic dark, unless something above has pinned the theme to light. */
|
|
118
|
-
@media (prefers-color-scheme: dark) {
|
|
119
|
-
:where(:root:not([data-dl-theme='light'])) {
|
|
120
|
-
color-scheme: dark;
|
|
121
|
-
|
|
122
|
-
--dl-surface: #171a1f;
|
|
123
|
-
--dl-surface-muted: #1e222a;
|
|
124
|
-
--dl-surface-sunken: #262b34;
|
|
125
|
-
--dl-surface-raised: #1e222a;
|
|
126
|
-
|
|
127
|
-
--dl-text-color: #e7eaf0;
|
|
128
|
-
--dl-label-color: #c3cad5;
|
|
129
|
-
--dl-text-muted: #8d97a6;
|
|
130
|
-
|
|
131
|
-
--dl-line-color: #2c323c;
|
|
132
|
-
--dl-line-strong: #3b434f;
|
|
133
|
-
|
|
134
|
-
--dl-accent: #2fb7ae;
|
|
135
|
-
--dl-accent-hover: #46c9c0;
|
|
136
|
-
--dl-accent-contrast: #06231f;
|
|
137
|
-
--dl-accent-soft: rgba(47, 183, 174, 0.16);
|
|
138
|
-
--dl-accent-ring: rgba(47, 183, 174, 0.32);
|
|
139
|
-
|
|
140
|
-
--dl-danger: #f4707f;
|
|
141
|
-
--dl-danger-soft: rgba(244, 112, 127, 0.16);
|
|
142
|
-
|
|
143
|
-
--dl-overlay: rgba(6, 9, 13, 0.62);
|
|
144
|
-
|
|
145
|
-
--dl-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
146
|
-
--dl-shadow-modal:
|
|
147
|
-
0 1px 3px rgba(0, 0, 0, 0.5), 0 12px 28px -6px rgba(0, 0, 0, 0.55),
|
|
148
|
-
0 32px 64px -12px rgba(0, 0, 0, 0.6);
|
|
149
|
-
--dl-shadow-popup:
|
|
150
|
-
0 4px 10px -2px rgba(0, 0, 0, 0.45), 0 16px 32px -8px rgba(0, 0, 0, 0.55);
|
|
151
|
-
|
|
152
|
-
--dl-tooltip-background: #2b313b;
|
|
153
|
-
--dl-tooltip-color: #aab3c0;
|
|
154
|
-
--dl-tooltip-bubble-background: #333a45;
|
|
155
|
-
--dl-tooltip-bubble-color: #e7eaf0;
|
|
156
|
-
|
|
157
|
-
--dl-tooltip-success-background: rgba(45, 190, 126, 0.18);
|
|
158
|
-
--dl-tooltip-success-color: #5fd9a0;
|
|
159
|
-
--dl-tooltip-warning-background: rgba(233, 176, 44, 0.18);
|
|
160
|
-
--dl-tooltip-warning-color: #edc65f;
|
|
161
|
-
--dl-tooltip-error-background: rgba(244, 112, 127, 0.18);
|
|
162
|
-
--dl-tooltip-error-color: #f9909b;
|
|
163
|
-
|
|
164
|
-
--dl-select-loading-col1: #1e222a;
|
|
165
|
-
--dl-select-loading-col2: #2a3039;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/* Explicitly pinned dark, regardless of the OS preference. */
|
|
170
|
-
:where([data-dl-theme='dark']) {
|
|
171
|
-
color-scheme: dark;
|
|
172
|
-
|
|
173
|
-
--dl-surface: #171a1f;
|
|
174
|
-
--dl-surface-muted: #1e222a;
|
|
175
|
-
--dl-surface-sunken: #262b34;
|
|
176
|
-
--dl-surface-raised: #1e222a;
|
|
177
|
-
|
|
178
|
-
--dl-text-color: #e7eaf0;
|
|
179
|
-
--dl-label-color: #c3cad5;
|
|
180
|
-
--dl-text-muted: #8d97a6;
|
|
181
|
-
|
|
182
|
-
--dl-line-color: #2c323c;
|
|
183
|
-
--dl-line-strong: #3b434f;
|
|
184
|
-
|
|
185
|
-
--dl-accent: #2fb7ae;
|
|
186
|
-
--dl-accent-hover: #46c9c0;
|
|
187
|
-
--dl-accent-contrast: #06231f;
|
|
188
|
-
--dl-accent-soft: rgba(47, 183, 174, 0.16);
|
|
189
|
-
--dl-accent-ring: rgba(47, 183, 174, 0.32);
|
|
190
|
-
|
|
191
|
-
--dl-danger: #f4707f;
|
|
192
|
-
--dl-danger-soft: rgba(244, 112, 127, 0.16);
|
|
193
|
-
|
|
194
|
-
--dl-overlay: rgba(6, 9, 13, 0.62);
|
|
195
|
-
|
|
196
|
-
--dl-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
197
|
-
--dl-shadow-modal:
|
|
198
|
-
0 1px 3px rgba(0, 0, 0, 0.5), 0 12px 28px -6px rgba(0, 0, 0, 0.55),
|
|
199
|
-
0 32px 64px -12px rgba(0, 0, 0, 0.6);
|
|
200
|
-
--dl-shadow-popup:
|
|
201
|
-
0 4px 10px -2px rgba(0, 0, 0, 0.45), 0 16px 32px -8px rgba(0, 0, 0, 0.55);
|
|
202
|
-
|
|
203
|
-
--dl-tooltip-background: #2b313b;
|
|
204
|
-
--dl-tooltip-color: #aab3c0;
|
|
205
|
-
--dl-tooltip-bubble-background: #333a45;
|
|
206
|
-
--dl-tooltip-bubble-color: #e7eaf0;
|
|
207
|
-
|
|
208
|
-
--dl-tooltip-success-background: rgba(45, 190, 126, 0.18);
|
|
209
|
-
--dl-tooltip-success-color: #5fd9a0;
|
|
210
|
-
--dl-tooltip-warning-background: rgba(233, 176, 44, 0.18);
|
|
211
|
-
--dl-tooltip-warning-color: #edc65f;
|
|
212
|
-
--dl-tooltip-error-background: rgba(244, 112, 127, 0.18);
|
|
213
|
-
--dl-tooltip-error-color: #f9909b;
|
|
214
|
-
|
|
215
|
-
--dl-select-loading-col1: #1e222a;
|
|
216
|
-
--dl-select-loading-col2: #2a3039;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/* ═══════════════════════════════════════════════════════════════ modal ══ */
|
|
220
|
-
|
|
221
|
-
.dl-modal {
|
|
222
|
-
position: fixed;
|
|
223
|
-
inset: 0;
|
|
224
|
-
z-index: 1000;
|
|
225
|
-
display: block;
|
|
226
|
-
margin: 0;
|
|
227
|
-
padding: 0;
|
|
228
|
-
width: 100%;
|
|
229
|
-
height: 100%;
|
|
230
|
-
overflow-y: auto;
|
|
231
|
-
background: var(--dl-overlay);
|
|
232
|
-
-webkit-backdrop-filter: blur(var(--dl-overlay-blur));
|
|
233
|
-
backdrop-filter: blur(var(--dl-overlay-blur));
|
|
234
|
-
font-family: var(--dl-font-family);
|
|
235
|
-
animation: dl-fade var(--dl-transition) both;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.dl-modal.noModalDialog {
|
|
239
|
-
position: static;
|
|
240
|
-
inset: auto;
|
|
241
|
-
width: 100%;
|
|
242
|
-
height: auto;
|
|
243
|
-
overflow: visible;
|
|
244
|
-
background: transparent;
|
|
245
|
-
-webkit-backdrop-filter: none;
|
|
246
|
-
backdrop-filter: none;
|
|
247
|
-
animation: none;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.dl-modal-hidden {
|
|
251
|
-
display: none !important;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/* Stacked dialogs. The backdrop of a dialog opening over another one, and of
|
|
255
|
-
one revealed when the dialog above it closes, is continuous with the backdrop
|
|
256
|
-
that was already on screen — fading it in from nothing would flash the page
|
|
257
|
-
through the gap. A newly stacked dialog still rises; a restored one does not,
|
|
258
|
-
since it is not new. */
|
|
259
|
-
.dl-modal.dl-modal-stacked,
|
|
260
|
-
.dl-modal.dl-modal-restored,
|
|
261
|
-
.dl-modal.dl-modal-restored .modal {
|
|
262
|
-
animation: none;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/* The dialogs underneath are hidden, so the depth of the stack is drawn as two
|
|
266
|
-
card edges peeking out above the dialog on top. They sit entirely above the
|
|
267
|
-
box — never over its content — and the second one only appears once there are
|
|
268
|
-
two dialogs below, which `--dl-stack-depth` (set by the library) reports. */
|
|
269
|
-
.dl-modal.dl-modal-stacked .modal {
|
|
270
|
-
position: relative;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.dl-modal.dl-modal-stacked .modal::before,
|
|
274
|
-
.dl-modal.dl-modal-stacked .modal::after {
|
|
275
|
-
content: '';
|
|
276
|
-
position: absolute;
|
|
277
|
-
height: var(--dl-stack-peek);
|
|
278
|
-
border: 1px solid var(--dl-line-strong);
|
|
279
|
-
border-bottom: none;
|
|
280
|
-
border-radius: var(--dl-radius-lg) var(--dl-radius-lg) 0 0;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.dl-modal.dl-modal-stacked .modal::before {
|
|
284
|
-
right: var(--dl-stack-inset);
|
|
285
|
-
bottom: 100%;
|
|
286
|
-
left: var(--dl-stack-inset);
|
|
287
|
-
background: var(--dl-surface-muted);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.dl-modal.dl-modal-stacked .modal::after {
|
|
291
|
-
right: calc(var(--dl-stack-inset) * 2);
|
|
292
|
-
bottom: calc(100% + var(--dl-stack-peek));
|
|
293
|
-
left: calc(var(--dl-stack-inset) * 2);
|
|
294
|
-
background: var(--dl-surface-sunken);
|
|
295
|
-
opacity: clamp(0, calc(var(--dl-stack-depth, 1) - 1), 1);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
.dl-modal .modal {
|
|
299
|
-
display: block;
|
|
300
|
-
box-sizing: border-box;
|
|
301
|
-
width: var(--dl-modal-width);
|
|
302
|
-
max-width: calc(100vw - 2rem);
|
|
303
|
-
margin: 3rem auto;
|
|
304
|
-
padding: var(--dl-modal-padding);
|
|
305
|
-
border: 1px solid var(--dl-line-color);
|
|
306
|
-
border-radius: var(--dl-radius-lg);
|
|
307
|
-
background: var(--dl-surface);
|
|
308
|
-
box-shadow: var(--dl-shadow-modal);
|
|
309
|
-
animation: dl-rise 180ms cubic-bezier(0.2, 0.8, 0.3, 1) both;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
.dl-modal.noModalDialog .modal {
|
|
313
|
-
width: auto;
|
|
314
|
-
max-width: none;
|
|
315
|
-
margin: 0;
|
|
316
|
-
padding: 0;
|
|
317
|
-
border: none;
|
|
318
|
-
border-radius: 0;
|
|
319
|
-
background: transparent;
|
|
320
|
-
box-shadow: none;
|
|
321
|
-
animation: none;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
.dl-modal .largeModal {
|
|
325
|
-
width: var(--dl-large-modal-width);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/* The default theme pins label and control widths inside a large modal; here
|
|
329
|
-
everything is fluid, so these only need to stop inheriting a fixed width. */
|
|
330
|
-
.dl-modal .largeModal .dl-form label,
|
|
331
|
-
.largeModal .dl-form form .render {
|
|
332
|
-
width: auto;
|
|
333
|
-
max-width: none;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
@keyframes dl-fade {
|
|
337
|
-
from {
|
|
338
|
-
opacity: 0;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
@keyframes dl-rise {
|
|
343
|
-
from {
|
|
344
|
-
opacity: 0;
|
|
345
|
-
transform: translateY(8px) scale(0.985);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
@media (prefers-reduced-motion: reduce) {
|
|
350
|
-
.dl-modal,
|
|
351
|
-
.dl-modal .modal {
|
|
352
|
-
animation: none;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/* ── header ─────────────────────────────────────────────────────────────── */
|
|
357
|
-
|
|
358
|
-
.dl-modal .up-bar {
|
|
359
|
-
display: flex;
|
|
360
|
-
justify-content: flex-end;
|
|
361
|
-
margin: 0 0 0.25rem;
|
|
362
|
-
min-height: 1.5rem;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.cancelBtn {
|
|
366
|
-
position: relative;
|
|
367
|
-
width: 1.75rem;
|
|
368
|
-
height: 1.75rem;
|
|
369
|
-
padding: 0;
|
|
370
|
-
border: none;
|
|
371
|
-
border-radius: var(--dl-radius-sm);
|
|
372
|
-
background: transparent;
|
|
373
|
-
color: var(--dl-text-muted);
|
|
374
|
-
cursor: pointer;
|
|
375
|
-
transition:
|
|
376
|
-
background var(--dl-transition),
|
|
377
|
-
color var(--dl-transition);
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
.cancelBtn:hover {
|
|
381
|
-
background: var(--dl-surface-sunken);
|
|
382
|
-
color: var(--dl-text-color);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.cancelBtn:focus-visible {
|
|
386
|
-
outline: 2px solid var(--dl-accent);
|
|
387
|
-
outline-offset: 2px;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/* The glyph is two bars; the element itself is not rotated, so the hit area
|
|
391
|
-
and the focus ring stay square. */
|
|
392
|
-
.cancelBtn:before,
|
|
393
|
-
.cancelBtn:after {
|
|
394
|
-
content: '';
|
|
395
|
-
position: absolute;
|
|
396
|
-
top: 50%;
|
|
397
|
-
left: 50%;
|
|
398
|
-
width: 0.875rem;
|
|
399
|
-
height: 1.5px;
|
|
400
|
-
border-radius: 1px;
|
|
401
|
-
background: currentColor;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.cancelBtn:before {
|
|
405
|
-
transform: translate(-50%, -50%) rotate(45deg);
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
.cancelBtn:after {
|
|
409
|
-
transform: translate(-50%, -50%) rotate(-45deg);
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
/* ── tabs ───────────────────────────────────────────────────────────────── */
|
|
413
|
-
|
|
414
|
-
.dl-modal .tabWrapper {
|
|
415
|
-
display: flex;
|
|
416
|
-
flex-wrap: wrap;
|
|
417
|
-
gap: 0.125rem;
|
|
418
|
-
margin-bottom: 1.25rem;
|
|
419
|
-
padding: 0.25rem;
|
|
420
|
-
border-radius: var(--dl-radius);
|
|
421
|
-
background: var(--dl-surface-muted);
|
|
422
|
-
text-align: left;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
.dl-modal .tabWrapper:empty {
|
|
426
|
-
display: none;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
.dl-modal .dl-tab-btn {
|
|
430
|
-
flex: 1 1 auto;
|
|
431
|
-
padding: 0.4rem 0.75rem;
|
|
432
|
-
border: none;
|
|
433
|
-
border-radius: var(--dl-radius-sm);
|
|
434
|
-
background: transparent;
|
|
435
|
-
color: var(--dl-text-muted);
|
|
436
|
-
font-family: var(--dl-font-family);
|
|
437
|
-
font-size: var(--dl-font-size-sm);
|
|
438
|
-
font-weight: 500;
|
|
439
|
-
text-align: center;
|
|
440
|
-
white-space: nowrap;
|
|
441
|
-
cursor: pointer;
|
|
442
|
-
transition:
|
|
443
|
-
background var(--dl-transition),
|
|
444
|
-
color var(--dl-transition);
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
.dl-modal .dl-tab-btn:hover {
|
|
448
|
-
color: var(--dl-text-color);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
.dl-modal .dl-tab-btn.active {
|
|
452
|
-
background: var(--dl-surface);
|
|
453
|
-
color: var(--dl-accent);
|
|
454
|
-
box-shadow: var(--dl-shadow-sm);
|
|
455
|
-
cursor: default;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
/* Kept so the segmented look survives the default theme's first/last rules. */
|
|
459
|
-
.dl-modal .dl-tab-btn:first-child,
|
|
460
|
-
.dl-modal .dl-tab-btn:last-child {
|
|
461
|
-
border-radius: var(--dl-radius-sm);
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
/* ── footer ─────────────────────────────────────────────────────────────── */
|
|
465
|
-
|
|
466
|
-
/*
|
|
467
|
-
* `row-reverse` reproduces the default theme's `float: right`: the first button
|
|
468
|
-
* declared is the rightmost one. Consumers rely on that order.
|
|
469
|
-
*/
|
|
470
|
-
.dl-modal .low-bar {
|
|
471
|
-
display: flex;
|
|
472
|
-
flex-direction: row-reverse;
|
|
473
|
-
justify-content: flex-start;
|
|
474
|
-
gap: 0.5rem;
|
|
475
|
-
height: auto;
|
|
476
|
-
margin: 1.5rem calc(var(--dl-modal-padding) * -1) calc(var(--dl-modal-padding) * -1);
|
|
477
|
-
padding: 1rem var(--dl-modal-padding);
|
|
478
|
-
border-top: 1px solid var(--dl-line-color);
|
|
479
|
-
border-radius: 0 0 var(--dl-radius-lg) var(--dl-radius-lg);
|
|
480
|
-
background: var(--dl-surface-muted);
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
.dl-modal.noModalDialog .low-bar {
|
|
484
|
-
margin: 1.25rem 0 0;
|
|
485
|
-
padding: 0;
|
|
486
|
-
border-top: none;
|
|
487
|
-
background: transparent;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
.dl-modal.dl-full-height .low-bar {
|
|
491
|
-
position: absolute;
|
|
492
|
-
bottom: 0;
|
|
493
|
-
width: 100%;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
.dl-modal .btn {
|
|
497
|
-
flex: 0 0 auto;
|
|
498
|
-
padding: 0.5rem 1rem;
|
|
499
|
-
border: 1px solid var(--dl-accent);
|
|
500
|
-
border-radius: var(--dl-radius-sm);
|
|
501
|
-
background: var(--dl-accent);
|
|
502
|
-
color: var(--dl-accent-contrast);
|
|
503
|
-
font-family: var(--dl-font-family);
|
|
504
|
-
font-size: var(--dl-font-size-sm);
|
|
505
|
-
font-weight: 550;
|
|
506
|
-
line-height: 1.4;
|
|
507
|
-
text-align: center;
|
|
508
|
-
cursor: pointer;
|
|
509
|
-
transition:
|
|
510
|
-
background var(--dl-transition),
|
|
511
|
-
border-color var(--dl-transition),
|
|
512
|
-
box-shadow var(--dl-transition),
|
|
513
|
-
opacity var(--dl-transition);
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
.dl-modal .btn:hover {
|
|
517
|
-
border-color: var(--dl-accent-hover);
|
|
518
|
-
background: var(--dl-accent-hover);
|
|
519
|
-
box-shadow: none;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
.dl-modal .btn:focus-visible {
|
|
523
|
-
outline: none;
|
|
524
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/* A quieter companion for cancel and back. */
|
|
528
|
-
.dl-modal .btn.secondary {
|
|
529
|
-
border-color: var(--dl-line-strong);
|
|
530
|
-
background: transparent;
|
|
531
|
-
color: var(--dl-label-color);
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
.dl-modal .btn.secondary:hover {
|
|
535
|
-
border-color: var(--dl-line-strong);
|
|
536
|
-
background: var(--dl-surface-sunken);
|
|
537
|
-
color: var(--dl-text-color);
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
.dl-modal .btn.disabled {
|
|
541
|
-
opacity: 0.45;
|
|
542
|
-
cursor: not-allowed;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
.dl-modal .btn.disabled:hover {
|
|
546
|
-
border-color: var(--dl-accent);
|
|
547
|
-
background: var(--dl-accent);
|
|
548
|
-
box-shadow: none;
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
.dl-modal .btn.secondary.disabled:hover {
|
|
552
|
-
border-color: var(--dl-line-strong);
|
|
553
|
-
background: transparent;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
.dl-modal .btn.invisible {
|
|
557
|
-
display: none;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
.dl-modal .btn.loading-btn {
|
|
561
|
-
cursor: progress;
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
.dl-modal .btn.loading-btn::after {
|
|
565
|
-
content: '';
|
|
566
|
-
display: inline-block;
|
|
567
|
-
width: 0.75rem;
|
|
568
|
-
height: 0.75rem;
|
|
569
|
-
margin-left: 0.5rem;
|
|
570
|
-
margin-bottom: -1px;
|
|
571
|
-
border: 2px solid currentColor;
|
|
572
|
-
border-top-color: transparent;
|
|
573
|
-
border-radius: 50% !important;
|
|
574
|
-
padding: 0 !important;
|
|
575
|
-
animation: loading-icon-spin 700ms linear infinite;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
@keyframes loading-icon-spin {
|
|
579
|
-
to {
|
|
580
|
-
transform: rotate(360deg);
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
/* ════════════════════════════════════════════════════════════════ form ══ */
|
|
585
|
-
|
|
586
|
-
.dl-form {
|
|
587
|
-
font-family: var(--dl-font-family);
|
|
588
|
-
font-size: var(--dl-font-size);
|
|
589
|
-
line-height: var(--dl-line-height);
|
|
590
|
-
color: var(--dl-text-color);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.dl-form label {
|
|
594
|
-
display: block;
|
|
595
|
-
width: auto;
|
|
596
|
-
margin: 0 0 0.375rem;
|
|
597
|
-
color: var(--dl-label-color);
|
|
598
|
-
font-size: var(--dl-font-size-sm);
|
|
599
|
-
font-weight: 550;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
.dl-form form > .dl-form-field-wrapper {
|
|
603
|
-
position: relative;
|
|
604
|
-
margin-bottom: var(--dl-gap);
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
.dl-form form > .dl-form-field-wrapper:last-child {
|
|
608
|
-
margin-bottom: 0;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
.dl-form .withoutLabel {
|
|
612
|
-
position: relative;
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
.dl-form form > .dl-form-field-wrapper.notInTab,
|
|
616
|
-
.dl-form form > .dl-form-field-wrapper.inactive,
|
|
617
|
-
.dl-form-hidden-field {
|
|
618
|
-
display: none;
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
.dl-form form > .dl-form-field-wrapper.dl-select-wrapper {
|
|
622
|
-
margin-bottom: var(--dl-gap);
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
/* ── text inputs ────────────────────────────────────────────────────────── */
|
|
626
|
-
|
|
627
|
-
.dl-form form > .dl-form-field-wrapper > input,
|
|
628
|
-
.dl-form form > .dl-form-field-wrapper > textarea,
|
|
629
|
-
.dl-form form > .dl-form-field-wrapper > div > input[type='file'] {
|
|
630
|
-
box-sizing: border-box;
|
|
631
|
-
width: var(--dl-field-width);
|
|
632
|
-
min-width: 0;
|
|
633
|
-
max-width: 100%;
|
|
634
|
-
padding: var(--dl-control-padding-y) var(--dl-control-padding-x);
|
|
635
|
-
border: 1px solid var(--dl-line-color);
|
|
636
|
-
border-radius: var(--dl-radius-sm);
|
|
637
|
-
background: var(--dl-surface-raised);
|
|
638
|
-
color: var(--dl-text-color);
|
|
639
|
-
font-family: var(--dl-font-family);
|
|
640
|
-
font-size: var(--dl-font-size);
|
|
641
|
-
font-weight: 400;
|
|
642
|
-
line-height: var(--dl-line-height);
|
|
643
|
-
outline: none;
|
|
644
|
-
transition:
|
|
645
|
-
border-color var(--dl-transition),
|
|
646
|
-
box-shadow var(--dl-transition);
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
.dl-form form > .dl-form-field-wrapper > input::placeholder,
|
|
650
|
-
.dl-form form > .dl-form-field-wrapper > textarea::placeholder {
|
|
651
|
-
color: var(--dl-text-muted);
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
.dl-form form > .dl-form-field-wrapper > input:hover,
|
|
655
|
-
.dl-form form > .dl-form-field-wrapper > textarea:hover {
|
|
656
|
-
border-color: var(--dl-line-strong);
|
|
657
|
-
}
|
|
658
|
-
|
|
659
|
-
.dl-form form > .dl-form-field-wrapper > input:focus,
|
|
660
|
-
.dl-form form > .dl-form-field-wrapper > textarea:focus {
|
|
661
|
-
border-color: var(--dl-accent);
|
|
662
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
.dl-form form > .dl-form-field-wrapper > textarea {
|
|
666
|
-
min-height: 7rem;
|
|
667
|
-
resize: vertical;
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
.dl-form form > .dl-form-field-wrapper > input.dl-tooltip-inside {
|
|
671
|
-
width: var(--dl-field-width);
|
|
672
|
-
max-width: 100%;
|
|
673
|
-
min-width: 0;
|
|
674
|
-
padding-right: 2.5rem;
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
.dl-form form > p {
|
|
678
|
-
max-width: none;
|
|
679
|
-
min-width: 0;
|
|
680
|
-
margin: 0;
|
|
681
|
-
padding: 0;
|
|
682
|
-
color: var(--dl-text-muted);
|
|
683
|
-
font-family: var(--dl-font-family);
|
|
684
|
-
font-size: var(--dl-font-size-sm);
|
|
685
|
-
line-height: 1.6;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
/* ── checkbox ───────────────────────────────────────────────────────────── */
|
|
689
|
-
|
|
690
|
-
.dl-form form .check {
|
|
691
|
-
display: flex;
|
|
692
|
-
align-items: flex-start;
|
|
693
|
-
gap: 0.625rem;
|
|
694
|
-
margin-top: 0;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
/*
|
|
698
|
-
* The default theme hides the input and paints a pseudo-element, which takes
|
|
699
|
-
* the control out of the tab order and out of the accessibility tree. Styling
|
|
700
|
-
* the input directly with `appearance: none` keeps it focusable and
|
|
701
|
-
* announceable. See docs/accessibility.md.
|
|
702
|
-
*/
|
|
703
|
-
.dl-form form .check input,
|
|
704
|
-
.dl-form form input[type='checkbox'] {
|
|
705
|
-
flex: 0 0 auto;
|
|
706
|
-
appearance: none;
|
|
707
|
-
-webkit-appearance: none;
|
|
708
|
-
visibility: visible;
|
|
709
|
-
width: 1.125rem;
|
|
710
|
-
height: 1.125rem;
|
|
711
|
-
margin: 0.125rem 0 0;
|
|
712
|
-
border: 1px solid var(--dl-line-strong);
|
|
713
|
-
border-radius: var(--dl-radius-sm);
|
|
714
|
-
background: var(--dl-surface-raised);
|
|
715
|
-
cursor: pointer;
|
|
716
|
-
transition:
|
|
717
|
-
background var(--dl-transition),
|
|
718
|
-
border-color var(--dl-transition),
|
|
719
|
-
box-shadow var(--dl-transition);
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
.dl-form form input[type='checkbox']:hover {
|
|
723
|
-
border-color: var(--dl-accent);
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
.dl-form form input[type='checkbox']:focus-visible {
|
|
727
|
-
outline: none;
|
|
728
|
-
border-color: var(--dl-accent);
|
|
729
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
.dl-form form input[type='checkbox']:checked {
|
|
733
|
-
border-color: var(--dl-accent);
|
|
734
|
-
background-color: var(--dl-accent);
|
|
735
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.5 3.5L13 4.5'/%3E%3C/svg%3E");
|
|
736
|
-
background-size: 0.875rem;
|
|
737
|
-
background-position: center;
|
|
738
|
-
background-repeat: no-repeat;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
/* The pseudo-element box of the default theme must not reappear here. */
|
|
742
|
-
.dl-form form input[type='checkbox']:before,
|
|
743
|
-
.dl-form form input[type='checkbox']:checked:before {
|
|
744
|
-
content: none;
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
.dl-form form .check label {
|
|
748
|
-
display: inline;
|
|
749
|
-
margin: 0;
|
|
750
|
-
color: var(--dl-text-color);
|
|
751
|
-
font-size: var(--dl-font-size);
|
|
752
|
-
font-weight: 400;
|
|
753
|
-
cursor: pointer;
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
.dl-form form .check label a {
|
|
757
|
-
color: var(--dl-accent);
|
|
758
|
-
text-underline-offset: 2px;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
/* ── cards ──────────────────────────────────────────────────────────────── */
|
|
762
|
-
|
|
763
|
-
.dl-form form .detailed-options {
|
|
764
|
-
display: grid;
|
|
765
|
-
grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
|
|
766
|
-
gap: 0.625rem;
|
|
767
|
-
margin-top: 0;
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
.dl-form form .detailed-option {
|
|
771
|
-
width: auto;
|
|
772
|
-
margin: 0;
|
|
773
|
-
padding: 0.875rem;
|
|
774
|
-
border: 1px solid var(--dl-line-color);
|
|
775
|
-
border-radius: var(--dl-radius);
|
|
776
|
-
background: var(--dl-surface-raised);
|
|
777
|
-
color: var(--dl-text-color);
|
|
778
|
-
font-size: var(--dl-font-size-sm);
|
|
779
|
-
line-height: 1.5;
|
|
780
|
-
cursor: pointer;
|
|
781
|
-
transition:
|
|
782
|
-
border-color var(--dl-transition),
|
|
783
|
-
background var(--dl-transition),
|
|
784
|
-
box-shadow var(--dl-transition);
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
.dl-form form .detailed-option:hover {
|
|
788
|
-
border-color: var(--dl-line-strong);
|
|
789
|
-
box-shadow: var(--dl-shadow-sm);
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
.dl-form form .detailed-option.active {
|
|
793
|
-
border-color: var(--dl-accent);
|
|
794
|
-
background: var(--dl-accent-soft);
|
|
795
|
-
box-shadow: 0 0 0 1px var(--dl-accent) inset;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
/* ── custom render + arrays ─────────────────────────────────────────────── */
|
|
799
|
-
|
|
800
|
-
.dl-form form .render,
|
|
801
|
-
.dl-form form .array-of {
|
|
802
|
-
width: auto;
|
|
803
|
-
min-width: 0;
|
|
804
|
-
max-width: none;
|
|
805
|
-
padding: 0;
|
|
806
|
-
font-family: var(--dl-font-family);
|
|
807
|
-
font-size: var(--dl-font-size);
|
|
808
|
-
font-weight: 400;
|
|
809
|
-
text-align: left;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
.dl-form-array-suggested-container {
|
|
813
|
-
display: grid;
|
|
814
|
-
gap: 0.375rem;
|
|
815
|
-
margin-bottom: 0.625rem;
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
.dl-form-array-of-suggestion {
|
|
819
|
-
display: flex;
|
|
820
|
-
align-items: flex-start;
|
|
821
|
-
gap: 0.625rem;
|
|
822
|
-
min-height: 0;
|
|
823
|
-
margin-top: 0 !important;
|
|
824
|
-
padding: 0.625rem 0.75rem;
|
|
825
|
-
border: 1px dashed var(--dl-line-strong);
|
|
826
|
-
border-radius: var(--dl-radius-sm);
|
|
827
|
-
background: transparent;
|
|
828
|
-
text-align: left;
|
|
829
|
-
}
|
|
830
|
-
|
|
831
|
-
.dl-form-array-of-suggestion label {
|
|
832
|
-
margin: 0;
|
|
833
|
-
color: var(--dl-text-muted);
|
|
834
|
-
font-size: var(--dl-font-size-sm);
|
|
835
|
-
font-weight: 400;
|
|
836
|
-
text-align: left;
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
.dl-form-array-of-entry {
|
|
840
|
-
display: flex;
|
|
841
|
-
align-items: center;
|
|
842
|
-
gap: 0.5rem;
|
|
843
|
-
min-height: 0;
|
|
844
|
-
margin-top: 0;
|
|
845
|
-
margin-bottom: 0.375rem;
|
|
846
|
-
padding: 0.5rem 0.5rem 0.5rem 0.75rem;
|
|
847
|
-
border: 1px solid var(--dl-line-color);
|
|
848
|
-
border-radius: var(--dl-radius-sm);
|
|
849
|
-
background: var(--dl-surface-muted);
|
|
850
|
-
text-align: left;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
.dl-form-array-of-entry span {
|
|
854
|
-
flex: 1 1 auto;
|
|
855
|
-
width: auto;
|
|
856
|
-
display: block;
|
|
857
|
-
overflow: hidden;
|
|
858
|
-
color: var(--dl-text-color);
|
|
859
|
-
font-size: var(--dl-font-size-sm);
|
|
860
|
-
text-overflow: ellipsis;
|
|
861
|
-
white-space: nowrap;
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
.dl-form-array-of-entry button {
|
|
865
|
-
flex: 0 0 auto;
|
|
866
|
-
float: none;
|
|
867
|
-
margin: 0;
|
|
868
|
-
padding: 0.25rem 0.5rem;
|
|
869
|
-
border: 1px solid transparent;
|
|
870
|
-
border-radius: var(--dl-radius-sm);
|
|
871
|
-
background: transparent;
|
|
872
|
-
color: var(--dl-danger);
|
|
873
|
-
font-family: var(--dl-font-family);
|
|
874
|
-
font-size: var(--dl-font-size-sm);
|
|
875
|
-
cursor: pointer;
|
|
876
|
-
transition:
|
|
877
|
-
background var(--dl-transition),
|
|
878
|
-
border-color var(--dl-transition);
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
.dl-form-array-of-entry button:hover {
|
|
882
|
-
background: var(--dl-danger-soft);
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
.dl-form-array-of-entry button.edit-array-of-btn {
|
|
886
|
-
margin-left: 0;
|
|
887
|
-
border-color: transparent;
|
|
888
|
-
color: var(--dl-accent);
|
|
889
|
-
}
|
|
890
|
-
|
|
891
|
-
.dl-form-array-of-entry button.edit-array-of-btn:hover {
|
|
892
|
-
background: var(--dl-accent-soft);
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
.dl-form-array-of-entry button:focus-visible {
|
|
896
|
-
outline: none;
|
|
897
|
-
border-color: currentColor;
|
|
898
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
.dl-form-array-of-add-entry {
|
|
902
|
-
float: none;
|
|
903
|
-
width: 100%;
|
|
904
|
-
margin-top: 0.5rem;
|
|
905
|
-
padding: 0.625rem;
|
|
906
|
-
border: 1px dashed var(--dl-line-strong);
|
|
907
|
-
border-radius: var(--dl-radius-sm);
|
|
908
|
-
background: transparent;
|
|
909
|
-
color: var(--dl-accent);
|
|
910
|
-
font-family: var(--dl-font-family);
|
|
911
|
-
font-size: var(--dl-font-size-sm);
|
|
912
|
-
font-weight: 550;
|
|
913
|
-
outline: none;
|
|
914
|
-
cursor: pointer;
|
|
915
|
-
transition:
|
|
916
|
-
background var(--dl-transition),
|
|
917
|
-
border-color var(--dl-transition);
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
.dl-form-array-of-add-entry:hover {
|
|
921
|
-
border-color: var(--dl-accent);
|
|
922
|
-
background: var(--dl-accent-soft);
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
.dl-form-array-of-add-entry:focus-visible {
|
|
926
|
-
border-color: var(--dl-accent);
|
|
927
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
/* ── file ───────────────────────────────────────────────────────────────── */
|
|
931
|
-
|
|
932
|
-
.dl-form form > .dl-form-field-wrapper .file-field {
|
|
933
|
-
padding: 0.75rem;
|
|
934
|
-
border: 1px dashed var(--dl-line-strong);
|
|
935
|
-
border-radius: var(--dl-radius);
|
|
936
|
-
background: var(--dl-surface-muted);
|
|
937
|
-
}
|
|
938
|
-
|
|
939
|
-
.dl-form form > .dl-form-field-wrapper > div > input[type='file'] {
|
|
940
|
-
border: none;
|
|
941
|
-
background: transparent;
|
|
942
|
-
padding: 0;
|
|
943
|
-
font-size: var(--dl-font-size-sm);
|
|
944
|
-
color: var(--dl-text-muted);
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
.dl-form form > .dl-form-field-wrapper .file-field .file-preview {
|
|
948
|
-
height: auto;
|
|
949
|
-
margin: 0 0 0.625rem;
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
.dl-form form > .dl-form-field-wrapper .file-field .file-preview.empty {
|
|
953
|
-
height: 0;
|
|
954
|
-
margin: 0;
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
.dl-form form > .dl-form-field-wrapper .file-field .file-preview.loading {
|
|
958
|
-
display: inline-block;
|
|
959
|
-
width: 1rem;
|
|
960
|
-
height: 1rem;
|
|
961
|
-
margin: 0 0 0.625rem;
|
|
962
|
-
padding: 0 !important;
|
|
963
|
-
border: 2px solid var(--dl-line-strong);
|
|
964
|
-
border-top-color: var(--dl-accent);
|
|
965
|
-
border-radius: 50% !important;
|
|
966
|
-
animation: loading-icon-spin 700ms linear infinite;
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
.file-selection-container {
|
|
970
|
-
position: relative;
|
|
971
|
-
display: inline-flex;
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
.file-selection-container img {
|
|
975
|
-
max-height: 6rem;
|
|
976
|
-
border-radius: var(--dl-radius-sm);
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
.file-selection-delete-btn {
|
|
980
|
-
position: absolute;
|
|
981
|
-
top: -0.4rem;
|
|
982
|
-
right: -0.4rem;
|
|
983
|
-
display: grid;
|
|
984
|
-
place-items: center;
|
|
985
|
-
width: 1.375rem;
|
|
986
|
-
height: 1.375rem;
|
|
987
|
-
padding: 0;
|
|
988
|
-
border: none;
|
|
989
|
-
border-radius: var(--dl-radius-pill);
|
|
990
|
-
background: var(--dl-danger);
|
|
991
|
-
box-shadow: var(--dl-shadow-sm);
|
|
992
|
-
cursor: pointer;
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
.file-selection-delete-btn-icon {
|
|
996
|
-
width: 0.625rem;
|
|
997
|
-
height: 0.625rem;
|
|
998
|
-
background: #fff;
|
|
999
|
-
clip-path: polygon(
|
|
1000
|
-
20% 0%,
|
|
1001
|
-
0% 20%,
|
|
1002
|
-
30% 50%,
|
|
1003
|
-
0% 80%,
|
|
1004
|
-
20% 100%,
|
|
1005
|
-
50% 70%,
|
|
1006
|
-
80% 100%,
|
|
1007
|
-
100% 80%,
|
|
1008
|
-
70% 50%,
|
|
1009
|
-
100% 20%,
|
|
1010
|
-
80% 0%,
|
|
1011
|
-
50% 30%
|
|
1012
|
-
);
|
|
1013
|
-
}
|
|
1014
|
-
|
|
1015
|
-
/* ── multi-select tags ──────────────────────────────────────────────────── */
|
|
1016
|
-
|
|
1017
|
-
.multiselect-tag {
|
|
1018
|
-
display: inline-flex;
|
|
1019
|
-
align-items: center;
|
|
1020
|
-
gap: 0.25rem;
|
|
1021
|
-
margin: 0.125rem;
|
|
1022
|
-
padding: 0.125rem 0.25rem 0.125rem 0.5rem;
|
|
1023
|
-
border-radius: var(--dl-radius-pill);
|
|
1024
|
-
background: var(--dl-accent-soft);
|
|
1025
|
-
color: var(--dl-text-color);
|
|
1026
|
-
font-size: var(--dl-font-size-sm);
|
|
1027
|
-
}
|
|
1028
|
-
|
|
1029
|
-
.multiselect-tag:last-child {
|
|
1030
|
-
margin-bottom: 0.125rem;
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
/* The "muliselect" spelling is a frozen typo from v1. */
|
|
1034
|
-
.dl-muliselect-selected-remove-container {
|
|
1035
|
-
display: inline-flex;
|
|
1036
|
-
margin: 0;
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
.dl-muliselect-selected-remove {
|
|
1040
|
-
position: relative;
|
|
1041
|
-
display: grid;
|
|
1042
|
-
place-items: center;
|
|
1043
|
-
width: 1rem;
|
|
1044
|
-
height: 1rem;
|
|
1045
|
-
margin: 0;
|
|
1046
|
-
border-radius: var(--dl-radius-pill);
|
|
1047
|
-
opacity: 0.55;
|
|
1048
|
-
transform: none;
|
|
1049
|
-
cursor: pointer;
|
|
1050
|
-
transition:
|
|
1051
|
-
opacity var(--dl-transition),
|
|
1052
|
-
background var(--dl-transition);
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
.dl-muliselect-selected-remove:hover {
|
|
1056
|
-
background: var(--dl-accent-soft);
|
|
1057
|
-
opacity: 1;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
.dl-muliselect-selected-remove:before,
|
|
1061
|
-
.dl-muliselect-selected-remove:after {
|
|
1062
|
-
content: '';
|
|
1063
|
-
position: absolute;
|
|
1064
|
-
top: 50%;
|
|
1065
|
-
left: 50%;
|
|
1066
|
-
width: 0.5rem;
|
|
1067
|
-
height: 1.5px;
|
|
1068
|
-
margin: 0;
|
|
1069
|
-
border-radius: 1px;
|
|
1070
|
-
background: currentColor;
|
|
1071
|
-
}
|
|
1072
|
-
|
|
1073
|
-
.dl-muliselect-selected-remove:before {
|
|
1074
|
-
transform: translate(-50%, -50%) rotate(45deg);
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
.dl-muliselect-selected-remove:after {
|
|
1078
|
-
transform: translate(-50%, -50%) rotate(-45deg);
|
|
1079
|
-
}
|
|
1080
|
-
|
|
1081
|
-
/* ── tooltips ───────────────────────────────────────────────────────────── */
|
|
1082
|
-
|
|
1083
|
-
.dl-form .dl-tooltip {
|
|
1084
|
-
display: inline-grid;
|
|
1085
|
-
place-items: center;
|
|
1086
|
-
float: right;
|
|
1087
|
-
width: 1.125rem;
|
|
1088
|
-
height: 1.125rem;
|
|
1089
|
-
margin: 0;
|
|
1090
|
-
padding: 0;
|
|
1091
|
-
border-radius: var(--dl-radius-pill);
|
|
1092
|
-
background: var(--dl-tooltip-background);
|
|
1093
|
-
color: var(--dl-tooltip-color);
|
|
1094
|
-
font-size: 0.6875rem;
|
|
1095
|
-
font-weight: 600;
|
|
1096
|
-
line-height: 1;
|
|
1097
|
-
cursor: help;
|
|
1098
|
-
}
|
|
1099
|
-
|
|
1100
|
-
.dl-tooltip-in-input {
|
|
1101
|
-
position: absolute;
|
|
1102
|
-
right: 0.625rem;
|
|
1103
|
-
bottom: 0.625rem;
|
|
1104
|
-
float: none;
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
.tooltip-success {
|
|
1108
|
-
padding: 0 !important;
|
|
1109
|
-
background-color: var(--dl-tooltip-success-background) !important;
|
|
1110
|
-
color: var(--dl-tooltip-success-color) !important;
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
|
-
.tooltip-warning {
|
|
1114
|
-
padding: 0 !important;
|
|
1115
|
-
background-color: var(--dl-tooltip-warning-background) !important;
|
|
1116
|
-
color: var(--dl-tooltip-warning-color) !important;
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
.tooltip-error {
|
|
1120
|
-
padding: 0 !important;
|
|
1121
|
-
background-color: var(--dl-tooltip-error-background) !important;
|
|
1122
|
-
color: var(--dl-tooltip-error-color) !important;
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
.tooltip-loading {
|
|
1126
|
-
width: 1rem;
|
|
1127
|
-
height: 1rem;
|
|
1128
|
-
padding: 0 !important;
|
|
1129
|
-
border: 2px solid var(--dl-line-strong);
|
|
1130
|
-
border-top-color: var(--dl-accent);
|
|
1131
|
-
border-radius: 50% !important;
|
|
1132
|
-
background: transparent;
|
|
1133
|
-
animation: loading-icon-spin 700ms linear infinite;
|
|
1134
|
-
}
|
|
1135
|
-
|
|
1136
|
-
.dl-tooltip-bubble {
|
|
1137
|
-
position: absolute;
|
|
1138
|
-
z-index: 1100;
|
|
1139
|
-
max-width: min(20rem, calc(100vw - 2rem));
|
|
1140
|
-
padding: 0.4rem 0.625rem;
|
|
1141
|
-
border-radius: var(--dl-radius-sm);
|
|
1142
|
-
background: var(--dl-tooltip-bubble-background);
|
|
1143
|
-
color: var(--dl-tooltip-bubble-color);
|
|
1144
|
-
font-family: var(--dl-font-family);
|
|
1145
|
-
font-size: var(--dl-font-size-sm);
|
|
1146
|
-
font-weight: 400;
|
|
1147
|
-
line-height: 1.45;
|
|
1148
|
-
box-shadow: var(--dl-shadow-popup);
|
|
1149
|
-
pointer-events: none;
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
|
-
/* ══════════════════════════════════════════════════════════════ layout ══ */
|
|
1153
|
-
|
|
1154
|
-
.left-side {
|
|
1155
|
-
float: left;
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
.right-side {
|
|
1159
|
-
margin-left: 173px;
|
|
1160
|
-
}
|
|
1161
|
-
|
|
1162
|
-
.right-side input,
|
|
1163
|
-
.dl-field-two-third input {
|
|
1164
|
-
margin-left: 0;
|
|
1165
|
-
padding-top: var(--dl-control-padding-y) !important;
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
/* ════════════════════════════════════════════════════════════ combobox ══ */
|
|
1169
|
-
|
|
1170
|
-
/*
|
|
1171
|
-
* `<dl-select>` injects its own structural CSS at runtime, which reads the
|
|
1172
|
-
* `--dl-*` tokens above — colours therefore need no rules here.
|
|
1173
|
-
*
|
|
1174
|
-
* The few geometry values it hardcodes are re-stated below. The doubled class
|
|
1175
|
-
* (`.a.a`) raises specificity just enough to win regardless of which
|
|
1176
|
-
* stylesheet the browser happens to see last, since the injected block is
|
|
1177
|
-
* added to <head> the first time a combobox connects.
|
|
1178
|
-
*/
|
|
1179
|
-
|
|
1180
|
-
.dl-form dl-select,
|
|
1181
|
-
.dl-modal dl-select {
|
|
1182
|
-
--dl-select-input-width: 100%;
|
|
1183
|
-
}
|
|
1184
|
-
|
|
1185
|
-
.dl-form dl-select .input-wrapper,
|
|
1186
|
-
.dl-modal dl-select .input-wrapper {
|
|
1187
|
-
display: flex;
|
|
1188
|
-
align-items: center;
|
|
1189
|
-
box-sizing: border-box;
|
|
1190
|
-
width: 100%;
|
|
1191
|
-
border-width: 1px;
|
|
1192
|
-
border-radius: var(--dl-radius-sm);
|
|
1193
|
-
background: var(--dl-surface-raised);
|
|
1194
|
-
transition:
|
|
1195
|
-
border-color var(--dl-transition),
|
|
1196
|
-
box-shadow var(--dl-transition);
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1199
|
-
.dl-form dl-select .selected-container,
|
|
1200
|
-
.dl-modal dl-select .selected-container {
|
|
1201
|
-
display: contents;
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
|
-
.dl-form dl-select.dl-focused .input-wrapper,
|
|
1205
|
-
.dl-modal dl-select.dl-focused .input-wrapper {
|
|
1206
|
-
border-color: var(--dl-accent);
|
|
1207
|
-
box-shadow: 0 0 0 3px var(--dl-accent-ring);
|
|
1208
|
-
}
|
|
1209
|
-
|
|
1210
|
-
.dl-form dl-select .input-wrapper input,
|
|
1211
|
-
.dl-modal dl-select .input-wrapper input {
|
|
1212
|
-
flex: 1 1 auto;
|
|
1213
|
-
float: none;
|
|
1214
|
-
box-sizing: border-box;
|
|
1215
|
-
width: auto;
|
|
1216
|
-
min-width: 4rem;
|
|
1217
|
-
margin: 0;
|
|
1218
|
-
padding: var(--dl-control-padding-y) var(--dl-control-padding-x);
|
|
1219
|
-
font-size: var(--dl-font-size);
|
|
1220
|
-
font-weight: 400;
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
.dl-form dl-select .input-wrapper svg,
|
|
1224
|
-
.dl-modal dl-select .input-wrapper svg {
|
|
1225
|
-
flex: 0 0 auto;
|
|
1226
|
-
float: none;
|
|
1227
|
-
margin: 0 0.5rem 0 0;
|
|
1228
|
-
padding: 0;
|
|
1229
|
-
border-left: none !important;
|
|
1230
|
-
fill: var(--dl-text-muted);
|
|
1231
|
-
}
|
|
1232
|
-
|
|
1233
|
-
.dl-form dl-select.dl-focused .input-wrapper svg,
|
|
1234
|
-
.dl-modal dl-select.dl-focused .input-wrapper svg {
|
|
1235
|
-
border-left: none !important;
|
|
1236
|
-
fill: var(--dl-accent);
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
.dl-form dl-select.dl-select-loading .input-wrapper,
|
|
1240
|
-
.dl-modal dl-select.dl-select-loading .input-wrapper {
|
|
1241
|
-
width: 100%;
|
|
1242
|
-
border-radius: var(--dl-radius-sm);
|
|
1243
|
-
}
|
|
1244
|
-
|
|
1245
|
-
/* The popup is portalled to <body>, so it cannot be scoped to `.dl-form`. */
|
|
1246
|
-
.options-wrapper.options-wrapper {
|
|
1247
|
-
box-sizing: border-box;
|
|
1248
|
-
/*
|
|
1249
|
-
* It is a sibling of `.dl-modal`, which this theme raises to z-index 1000 —
|
|
1250
|
-
* the component's own `z-index: 100` would leave the option list behind the
|
|
1251
|
-
* backdrop. The default stylesheet gives the dialog no z-index at all, so it
|
|
1252
|
-
* never had this problem.
|
|
1253
|
-
*/
|
|
1254
|
-
z-index: 1100;
|
|
1255
|
-
padding: 0.25rem;
|
|
1256
|
-
border: 1px solid var(--dl-line-color);
|
|
1257
|
-
border-radius: var(--dl-radius);
|
|
1258
|
-
box-shadow: var(--dl-shadow-popup);
|
|
1259
|
-
max-height: 16rem;
|
|
1260
|
-
}
|
|
1261
|
-
|
|
1262
|
-
.options-wrapper.options-wrapper dl-option {
|
|
1263
|
-
border: none;
|
|
1264
|
-
border-radius: var(--dl-radius-sm);
|
|
1265
|
-
font-size: var(--dl-font-size-sm);
|
|
1266
|
-
}
|
|
1267
|
-
|
|
1268
|
-
.options-wrapper.options-wrapper dl-option:hover,
|
|
1269
|
-
.options-wrapper.options-wrapper dl-option.dl-focused {
|
|
1270
|
-
color: var(--dl-accent);
|
|
1271
|
-
}
|
|
1272
|
-
|
|
1273
|
-
.options-wrapper.options-wrapper dl-option[selected='true'] {
|
|
1274
|
-
opacity: 0.45;
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1277
|
-
.options-wrapper.options-wrapper .noMatchesHint {
|
|
1278
|
-
border: none;
|
|
1279
|
-
padding: 0.625rem 0.75rem;
|
|
1280
|
-
color: var(--dl-text-muted);
|
|
1281
|
-
font-size: var(--dl-font-size-sm);
|
|
1282
|
-
}
|
|
1283
|
-
|
|
1284
|
-
.dl-form dl-select .dl-option-tag,
|
|
1285
|
-
.options-wrapper.options-wrapper .dl-option-tag {
|
|
1286
|
-
padding: 0.05rem 0.35rem;
|
|
1287
|
-
border: 1px solid var(--dl-line-strong);
|
|
1288
|
-
border-radius: var(--dl-radius-pill);
|
|
1289
|
-
color: var(--dl-text-muted);
|
|
1290
|
-
font-family: var(--dl-font-family);
|
|
1291
|
-
font-size: 0.6875rem;
|
|
1292
|
-
margin-top: 0;
|
|
1293
|
-
}
|