@ponchia/ui 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +149 -3
- package/MIGRATIONS.json +117 -27
- package/README.md +19 -11
- package/behaviors/index.d.ts +0 -2
- package/behaviors/index.d.ts.map +1 -1
- package/behaviors/index.js +0 -2
- package/behaviors/popover.js +4 -4
- package/classes/classes.json +48 -10
- package/classes/index.d.ts +16 -3
- package/classes/index.js +28 -3
- package/classes/vscode.css-custom-data.json +10 -10
- package/css/app.css +52 -30
- package/css/base.css +10 -14
- package/css/content.css +23 -21
- package/css/core.css +1 -0
- package/css/disclosure.css +17 -17
- package/css/feedback.css +15 -15
- package/css/forms.css +8 -7
- package/css/navigation.css +3 -3
- package/css/overlay.css +37 -39
- package/css/primitives.css +48 -28
- package/css/report.css +66 -42
- package/css/row.css +154 -0
- package/css/state.css +95 -6
- package/css/table.css +3 -3
- package/css/tokens.css +10 -10
- package/css/workbench.css +22 -10
- package/dist/bronto.css +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/base.css +1 -1
- package/dist/css/content.css +1 -1
- package/dist/css/disclosure.css +1 -1
- package/dist/css/feedback.css +1 -1
- package/dist/css/forms.css +1 -1
- package/dist/css/navigation.css +1 -1
- package/dist/css/overlay.css +1 -1
- package/dist/css/primitives.css +1 -1
- package/dist/css/report-kit.css +1 -1
- package/dist/css/report.css +1 -1
- package/dist/css/row.css +1 -0
- package/dist/css/state.css +1 -1
- package/dist/css/table.css +1 -1
- package/dist/css/tokens.css +1 -1
- package/dist/css/workbench.css +1 -1
- package/docs/adr/0004-prune-unused-adapters.md +5 -1
- package/docs/adr/0005-productive-tools-and-editorial-reports.md +58 -0
- package/docs/adr/0006-trusted-publishing.md +92 -0
- package/docs/architecture.md +16 -23
- package/docs/command.md +1 -2
- package/docs/compositions.md +110 -0
- package/docs/frontier-primitives.md +1 -2
- package/docs/migrations/0.8-to-0.9.md +66 -0
- package/docs/migrations/0.9-to-0.10.md +47 -0
- package/docs/package-contract.md +13 -13
- package/docs/reference.md +43 -18
- package/docs/reporting.md +15 -9
- package/docs/stability.md +20 -55
- package/docs/state.md +47 -0
- package/docs/theming.md +16 -0
- package/docs/usage.md +60 -30
- package/llms.txt +7 -18
- package/package.json +15 -54
- package/tokens/figma.variables.json +20 -20
- package/tokens/index.js +10 -10
- package/tokens/index.json +20 -20
- package/tokens/resolved.json +10 -10
- package/tokens/tokens.dtcg.json +20 -20
- package/behaviors/modal.d.ts +0 -45
- package/behaviors/modal.d.ts.map +0 -1
- package/behaviors/modal.js +0 -373
- package/qwik/index.d.ts +0 -48
- package/qwik/index.d.ts.map +0 -1
- package/qwik/index.js +0 -227
- package/react/index.d.ts +0 -45
- package/react/index.d.ts.map +0 -1
- package/react/index.js +0 -165
- package/solid/index.d.ts +0 -75
- package/solid/index.d.ts.map +0 -1
- package/solid/index.js +0 -172
- package/svelte/index.d.ts +0 -114
- package/svelte/index.d.ts.map +0 -1
- package/svelte/index.js +0 -197
- package/vue/index.d.ts +0 -116
- package/vue/index.d.ts.map +0 -1
- package/vue/index.js +0 -266
package/css/content.css
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
========================================================================== */
|
|
10
10
|
|
|
11
11
|
.ui-prose {
|
|
12
|
+
/* A prose block must shrink as a grid/flex item; its pre blocks scroll locally. */
|
|
13
|
+
min-inline-size: 0;
|
|
12
14
|
color: var(--text-soft);
|
|
13
15
|
font-size: var(--text-base);
|
|
14
16
|
line-height: 1.7;
|
|
@@ -41,27 +43,27 @@
|
|
|
41
43
|
max-inline-size: none;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
/* --- Headings —
|
|
46
|
+
/* --- Headings — readable hierarchy inside narrative content --- */
|
|
45
47
|
|
|
46
48
|
.ui-prose :is(h1, h2, h3, h4, h5, h6) {
|
|
47
49
|
color: var(--text);
|
|
48
|
-
font-family: var(--
|
|
50
|
+
font-family: var(--sans);
|
|
49
51
|
line-height: 1.12;
|
|
50
52
|
text-wrap: balance;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
.ui-prose h1 {
|
|
54
56
|
font-size: var(--text-xl);
|
|
55
|
-
letter-spacing:
|
|
56
|
-
text-transform:
|
|
57
|
+
letter-spacing: 0;
|
|
58
|
+
text-transform: none;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
.ui-prose h2 {
|
|
60
62
|
font-size: var(--text-lg);
|
|
61
|
-
letter-spacing:
|
|
63
|
+
letter-spacing: 0;
|
|
62
64
|
padding-block-end: 0.3rem;
|
|
63
65
|
border-block-end: 1px solid var(--line);
|
|
64
|
-
text-transform:
|
|
66
|
+
text-transform: none;
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
.ui-prose h3 {
|
|
@@ -70,8 +72,8 @@
|
|
|
70
72
|
|
|
71
73
|
.ui-prose :is(h4, h5, h6) {
|
|
72
74
|
font-size: var(--text-base);
|
|
73
|
-
letter-spacing:
|
|
74
|
-
text-transform:
|
|
75
|
+
letter-spacing: 0;
|
|
76
|
+
text-transform: none;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
.ui-prose :is(h5, h6) {
|
|
@@ -185,11 +187,11 @@
|
|
|
185
187
|
|
|
186
188
|
.ui-prose dt {
|
|
187
189
|
color: var(--text-dim);
|
|
188
|
-
font-family: var(--
|
|
190
|
+
font-family: var(--sans);
|
|
189
191
|
font-size: var(--text-2xs);
|
|
190
192
|
font-weight: 700;
|
|
191
|
-
letter-spacing:
|
|
192
|
-
text-transform:
|
|
193
|
+
letter-spacing: 0;
|
|
194
|
+
text-transform: none;
|
|
193
195
|
}
|
|
194
196
|
|
|
195
197
|
.ui-prose dd {
|
|
@@ -241,10 +243,10 @@
|
|
|
241
243
|
|
|
242
244
|
.ui-prose figcaption {
|
|
243
245
|
color: var(--text-dim);
|
|
244
|
-
font-family: var(--
|
|
246
|
+
font-family: var(--sans);
|
|
245
247
|
font-size: var(--text-2xs);
|
|
246
|
-
letter-spacing:
|
|
247
|
-
text-transform:
|
|
248
|
+
letter-spacing: 0;
|
|
249
|
+
text-transform: none;
|
|
248
250
|
}
|
|
249
251
|
|
|
250
252
|
/* --- Table — raw Markdown tables look like ui-table ---
|
|
@@ -262,7 +264,7 @@
|
|
|
262
264
|
border-collapse: collapse;
|
|
263
265
|
border-radius: var(--radius-md);
|
|
264
266
|
display: block;
|
|
265
|
-
font-family: var(--
|
|
267
|
+
font-family: var(--sans);
|
|
266
268
|
font-size: var(--text-sm);
|
|
267
269
|
inline-size: 100%;
|
|
268
270
|
overflow-x: auto;
|
|
@@ -280,8 +282,8 @@
|
|
|
280
282
|
color: var(--text-dim);
|
|
281
283
|
font-size: var(--text-2xs);
|
|
282
284
|
font-weight: 700;
|
|
283
|
-
letter-spacing:
|
|
284
|
-
text-transform:
|
|
285
|
+
letter-spacing: 0;
|
|
286
|
+
text-transform: none;
|
|
285
287
|
}
|
|
286
288
|
|
|
287
289
|
.ui-prose td {
|
|
@@ -316,7 +318,7 @@
|
|
|
316
318
|
.ui-quote {
|
|
317
319
|
color: var(--text);
|
|
318
320
|
display: grid;
|
|
319
|
-
font-family: var(--
|
|
321
|
+
font-family: var(--sans);
|
|
320
322
|
font-size: var(--text-xl);
|
|
321
323
|
font-weight: var(--display-weight);
|
|
322
324
|
gap: var(--space-sm);
|
|
@@ -335,9 +337,9 @@
|
|
|
335
337
|
|
|
336
338
|
.ui-quote__cite {
|
|
337
339
|
color: var(--text-dim);
|
|
338
|
-
font-family: var(--
|
|
340
|
+
font-family: var(--sans);
|
|
339
341
|
font-size: var(--text-2xs);
|
|
340
342
|
font-style: normal;
|
|
341
|
-
letter-spacing:
|
|
342
|
-
text-transform:
|
|
343
|
+
letter-spacing: 0;
|
|
344
|
+
text-transform: none;
|
|
343
345
|
}
|
package/css/core.css
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
@import url('./site.css') layer(bronto);
|
|
19
19
|
@import url('./content.css') layer(bronto);
|
|
20
20
|
@import url('./primitives.css') layer(bronto);
|
|
21
|
+
@import url('./row.css') layer(bronto);
|
|
21
22
|
@import url('./forms.css') layer(bronto);
|
|
22
23
|
@import url('./feedback.css') layer(bronto);
|
|
23
24
|
@import url('./overlay.css') layer(bronto);
|
package/css/disclosure.css
CHANGED
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
cursor: pointer;
|
|
33
33
|
display: inline-flex;
|
|
34
34
|
flex: 0 0 auto;
|
|
35
|
-
font-family: var(--
|
|
35
|
+
font-family: var(--sans);
|
|
36
36
|
font-size: var(--text-xs);
|
|
37
37
|
gap: 0.4rem;
|
|
38
|
-
letter-spacing:
|
|
38
|
+
letter-spacing: 0;
|
|
39
39
|
margin-block-end: -1px;
|
|
40
40
|
padding: 0.6rem 0.85rem;
|
|
41
|
-
text-transform:
|
|
41
|
+
text-transform: none;
|
|
42
42
|
transition:
|
|
43
43
|
color var(--duration-fast) var(--ease-standard),
|
|
44
44
|
border-color var(--duration-fast) var(--ease-standard);
|
|
@@ -104,13 +104,13 @@
|
|
|
104
104
|
color: var(--text);
|
|
105
105
|
cursor: pointer;
|
|
106
106
|
display: flex;
|
|
107
|
-
font-family: var(--
|
|
107
|
+
font-family: var(--sans);
|
|
108
108
|
font-size: var(--text-sm);
|
|
109
109
|
gap: 0.6rem;
|
|
110
|
-
letter-spacing:
|
|
110
|
+
letter-spacing: 0;
|
|
111
111
|
list-style: none;
|
|
112
112
|
padding: 0.85rem 0.2rem;
|
|
113
|
-
text-transform:
|
|
113
|
+
text-transform: none;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
.ui-accordion__summary::-webkit-details-marker {
|
|
@@ -192,12 +192,12 @@
|
|
|
192
192
|
color: var(--text-soft);
|
|
193
193
|
cursor: pointer;
|
|
194
194
|
flex: 1 0 auto;
|
|
195
|
-
font-family: var(--
|
|
195
|
+
font-family: var(--sans);
|
|
196
196
|
font-size: var(--text-xs);
|
|
197
|
-
letter-spacing:
|
|
197
|
+
letter-spacing: 0;
|
|
198
198
|
padding: 0.42rem 0.8rem;
|
|
199
199
|
text-align: center;
|
|
200
|
-
text-transform:
|
|
200
|
+
text-transform: none;
|
|
201
201
|
transition:
|
|
202
202
|
background-color var(--duration-fast) var(--ease-standard),
|
|
203
203
|
color var(--duration-fast) var(--ease-standard);
|
|
@@ -233,14 +233,14 @@
|
|
|
233
233
|
color: var(--text-dim);
|
|
234
234
|
display: flex;
|
|
235
235
|
flex-wrap: wrap;
|
|
236
|
-
font-family: var(--
|
|
236
|
+
font-family: var(--sans);
|
|
237
237
|
font-size: var(--text-2xs);
|
|
238
238
|
gap: 0.5rem;
|
|
239
|
-
letter-spacing:
|
|
239
|
+
letter-spacing: 0;
|
|
240
240
|
list-style: none;
|
|
241
241
|
margin: 0;
|
|
242
242
|
padding: 0;
|
|
243
|
-
text-transform:
|
|
243
|
+
text-transform: none;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
.ui-breadcrumb__item {
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
color: var(--text-soft);
|
|
303
303
|
cursor: pointer;
|
|
304
304
|
display: inline-flex;
|
|
305
|
-
font-family: var(--
|
|
305
|
+
font-family: var(--sans);
|
|
306
306
|
font-size: var(--text-xs);
|
|
307
307
|
justify-content: center;
|
|
308
308
|
min-block-size: 2rem;
|
|
@@ -370,14 +370,14 @@
|
|
|
370
370
|
color: var(--text);
|
|
371
371
|
display: inline-flex;
|
|
372
372
|
flex: 0 0 auto;
|
|
373
|
-
font-family: var(--
|
|
373
|
+
font-family: var(--sans);
|
|
374
374
|
font-size: calc(var(--av-size) * 0.38);
|
|
375
375
|
font-weight: 700;
|
|
376
376
|
block-size: var(--av-size);
|
|
377
377
|
justify-content: center;
|
|
378
378
|
letter-spacing: 0.04em;
|
|
379
379
|
overflow: hidden;
|
|
380
|
-
text-transform:
|
|
380
|
+
text-transform: none;
|
|
381
381
|
inline-size: var(--av-size);
|
|
382
382
|
}
|
|
383
383
|
|
|
@@ -528,11 +528,11 @@
|
|
|
528
528
|
background: color-mix(in srgb, var(--panel-strong) 75%, transparent);
|
|
529
529
|
border-radius: var(--radius-pill);
|
|
530
530
|
color: var(--text);
|
|
531
|
-
font-family: var(--
|
|
531
|
+
font-family: var(--sans);
|
|
532
532
|
font-size: var(--text-2xs);
|
|
533
533
|
inset-block-end: var(--space-xs);
|
|
534
534
|
inset-inline-start: var(--space-xs);
|
|
535
|
-
letter-spacing:
|
|
535
|
+
letter-spacing: 0;
|
|
536
536
|
padding: 0.2rem 0.5rem;
|
|
537
537
|
position: absolute;
|
|
538
538
|
}
|
package/css/feedback.css
CHANGED
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
|
|
51
51
|
.ui-alert__title {
|
|
52
52
|
color: var(--text);
|
|
53
|
-
font-family: var(--
|
|
53
|
+
font-family: var(--sans);
|
|
54
54
|
font-size: var(--text-2xs);
|
|
55
55
|
font-weight: 700;
|
|
56
|
-
letter-spacing:
|
|
56
|
+
letter-spacing: 0;
|
|
57
57
|
margin: 0;
|
|
58
|
-
text-transform:
|
|
58
|
+
text-transform: none;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
.ui-alert__body {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
border: 0;
|
|
68
68
|
color: var(--text-dim);
|
|
69
69
|
cursor: pointer;
|
|
70
|
-
font-family: var(--
|
|
70
|
+
font-family: var(--sans);
|
|
71
71
|
grid-column: 3;
|
|
72
72
|
grid-row: 1;
|
|
73
73
|
line-height: 1;
|
|
@@ -199,12 +199,12 @@
|
|
|
199
199
|
|
|
200
200
|
.ui-toast__title {
|
|
201
201
|
color: var(--text);
|
|
202
|
-
font-family: var(--
|
|
202
|
+
font-family: var(--sans);
|
|
203
203
|
font-size: var(--text-2xs);
|
|
204
204
|
font-weight: 700;
|
|
205
|
-
letter-spacing:
|
|
205
|
+
letter-spacing: 0;
|
|
206
206
|
margin: 0;
|
|
207
|
-
text-transform:
|
|
207
|
+
text-transform: none;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
.ui-toast__close {
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
block-size: auto;
|
|
285
285
|
inline-size: auto;
|
|
286
286
|
margin-block-start: 0;
|
|
287
|
-
font-family: var(--
|
|
287
|
+
font-family: var(--sans);
|
|
288
288
|
font-weight: 700;
|
|
289
289
|
line-height: 1.1;
|
|
290
290
|
}
|
|
@@ -327,15 +327,15 @@
|
|
|
327
327
|
border-radius: var(--radius-sm);
|
|
328
328
|
inset-block-end: calc(100% + 0.5rem);
|
|
329
329
|
color: var(--bg);
|
|
330
|
-
font-family: var(--
|
|
330
|
+
font-family: var(--sans);
|
|
331
331
|
font-size: var(--text-2xs);
|
|
332
332
|
inset-inline-start: 50%;
|
|
333
|
-
letter-spacing:
|
|
333
|
+
letter-spacing: 0;
|
|
334
334
|
opacity: 0;
|
|
335
335
|
padding: 0.34rem 0.5rem;
|
|
336
336
|
pointer-events: none;
|
|
337
337
|
position: absolute;
|
|
338
|
-
text-transform:
|
|
338
|
+
text-transform: none;
|
|
339
339
|
transform: translate(-50%, 4px);
|
|
340
340
|
transition: opacity var(--duration-fast) var(--ease-standard);
|
|
341
341
|
white-space: nowrap;
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
|
|
541
541
|
.ui-meter__value {
|
|
542
542
|
color: var(--text);
|
|
543
|
-
font-family: var(--
|
|
543
|
+
font-family: var(--sans);
|
|
544
544
|
font-variant-numeric: tabular-nums;
|
|
545
545
|
text-align: end;
|
|
546
546
|
}
|
|
@@ -575,17 +575,17 @@
|
|
|
575
575
|
counter-increment: ui-step;
|
|
576
576
|
display: inline-flex;
|
|
577
577
|
flex: 1 1 auto;
|
|
578
|
-
font-family: var(--
|
|
578
|
+
font-family: var(--sans);
|
|
579
579
|
font-size: var(--text-xs);
|
|
580
580
|
gap: 0.5rem;
|
|
581
|
-
letter-spacing:
|
|
581
|
+
letter-spacing: 0;
|
|
582
582
|
|
|
583
583
|
/* Prefer the natural one-line width, but never wider than the container: a
|
|
584
584
|
long step label at `max-content` couldn't shrink and overflowed the page on
|
|
585
585
|
narrow viewports (tabs scroll; steps didn't). Capping at 100% lets an
|
|
586
586
|
over-long label wrap instead of overflowing. */
|
|
587
587
|
min-inline-size: min(100%, max-content);
|
|
588
|
-
text-transform:
|
|
588
|
+
text-transform: none;
|
|
589
589
|
}
|
|
590
590
|
|
|
591
591
|
.ui-steps__item::before {
|
package/css/forms.css
CHANGED
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
.ui-label {
|
|
11
11
|
color: var(--text-dim);
|
|
12
|
-
font-family: var(--
|
|
12
|
+
font-family: var(--sans);
|
|
13
13
|
font-size: var(--text-2xs);
|
|
14
14
|
font-weight: 700;
|
|
15
|
-
letter-spacing:
|
|
16
|
-
text-transform:
|
|
15
|
+
letter-spacing: 0;
|
|
16
|
+
text-transform: none;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.ui-input,
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
border: 1px solid var(--line-strong);
|
|
24
24
|
border-radius: var(--radius-md);
|
|
25
25
|
color: var(--text);
|
|
26
|
-
font-family: var(--
|
|
26
|
+
font-family: var(--sans);
|
|
27
27
|
font-size: var(--text-sm);
|
|
28
28
|
padding: 0.6rem 0.7rem;
|
|
29
29
|
transition:
|
|
@@ -286,6 +286,7 @@
|
|
|
286
286
|
|
|
287
287
|
/* --- Range --- */
|
|
288
288
|
.ui-range {
|
|
289
|
+
margin-inline: 0;
|
|
289
290
|
accent-color: var(--accent);
|
|
290
291
|
inline-size: 100%;
|
|
291
292
|
}
|
|
@@ -315,9 +316,9 @@
|
|
|
315
316
|
font-family: var(--sans);
|
|
316
317
|
font-size: var(--text-sm);
|
|
317
318
|
font-weight: 700;
|
|
318
|
-
letter-spacing:
|
|
319
|
+
letter-spacing: 0;
|
|
319
320
|
margin: 0 0 var(--space-xs);
|
|
320
|
-
text-transform:
|
|
321
|
+
text-transform: none;
|
|
321
322
|
}
|
|
322
323
|
|
|
323
324
|
.ui-error-summary__list {
|
|
@@ -369,7 +370,7 @@
|
|
|
369
370
|
background: transparent;
|
|
370
371
|
border: 0;
|
|
371
372
|
color: var(--text);
|
|
372
|
-
font-family: var(--
|
|
373
|
+
font-family: var(--sans);
|
|
373
374
|
font-size: var(--text-sm);
|
|
374
375
|
outline: none;
|
|
375
376
|
padding: 0.6rem 0;
|
package/css/navigation.css
CHANGED
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
color: var(--text);
|
|
13
13
|
cursor: pointer;
|
|
14
14
|
display: inline-flex;
|
|
15
|
-
font-family: var(--
|
|
15
|
+
font-family: var(--sans);
|
|
16
16
|
font-size: var(--text-xs);
|
|
17
17
|
font-weight: 600;
|
|
18
18
|
gap: 0.4rem;
|
|
19
19
|
justify-content: center;
|
|
20
|
-
letter-spacing:
|
|
20
|
+
letter-spacing: 0;
|
|
21
21
|
min-block-size: 2rem;
|
|
22
22
|
min-inline-size: 7rem;
|
|
23
23
|
padding: 0.42rem 0.66rem;
|
|
24
|
-
text-transform:
|
|
24
|
+
text-transform: none;
|
|
25
25
|
transition:
|
|
26
26
|
background-color var(--duration-fast) var(--ease-standard),
|
|
27
27
|
border-color var(--duration-fast) var(--ease-standard),
|
package/css/overlay.css
CHANGED
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
/* Enter AND exit, zero JS — `@starting-style` + `transition-behavior:
|
|
34
34
|
allow-discrete` keep the native <dialog> (and its backdrop) in the top
|
|
35
35
|
layer while it transitions out on close, so it fades/scales both ways
|
|
36
|
-
instead of only animating in.
|
|
37
|
-
|
|
36
|
+
instead of only animating in. The native dialog owns top-layer state;
|
|
37
|
+
an application toggles it through showModal() and close().
|
|
38
38
|
Needs a 2026-era floor (see CONTRIBUTING → Browser floor). */
|
|
39
39
|
dialog.ui-modal {
|
|
40
40
|
opacity: 0;
|
|
@@ -76,24 +76,8 @@ dialog.ui-modal[open]::backdrop {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
/*
|
|
80
|
-
|
|
81
|
-
Backdrop and top-layer stacking are then the consumer's responsibility
|
|
82
|
-
(the native <dialog> path gets them free); focus-trapping no longer is —
|
|
83
|
-
mark the overlay `data-bronto-modal` and run `initModal` for an
|
|
84
|
-
inert-based trap + focus-return + Escape signal. */
|
|
85
|
-
.ui-modal.is-open {
|
|
86
|
-
animation: uiToastIn var(--duration-base) var(--ease-spring) both;
|
|
87
|
-
display: grid;
|
|
88
|
-
grid-template-rows: auto 1fr auto;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/* Background scroll-lock. A native <dialog> top layer does NOT stop the page
|
|
92
|
-
behind it scrolling, and the no-JS native path can't lock it in script — so
|
|
93
|
-
lock it in CSS, for both the native [open] dialog and the controlled .is-open
|
|
94
|
-
overlay (incl. the drawer modifier, same base). */
|
|
95
|
-
html:has(dialog.ui-modal[open]),
|
|
96
|
-
html:has(.ui-modal.is-open) {
|
|
79
|
+
/* Native dialogs lock the document while open. */
|
|
80
|
+
html:has(dialog.ui-modal[open]) {
|
|
97
81
|
overflow: hidden;
|
|
98
82
|
}
|
|
99
83
|
|
|
@@ -108,11 +92,11 @@ html:has(.ui-modal.is-open) {
|
|
|
108
92
|
|
|
109
93
|
.ui-modal__title {
|
|
110
94
|
color: var(--text);
|
|
111
|
-
font-family: var(--
|
|
95
|
+
font-family: var(--sans);
|
|
112
96
|
font-size: var(--text-lg);
|
|
113
|
-
letter-spacing:
|
|
97
|
+
letter-spacing: 0;
|
|
114
98
|
margin: 0;
|
|
115
|
-
text-transform:
|
|
99
|
+
text-transform: none;
|
|
116
100
|
}
|
|
117
101
|
|
|
118
102
|
.ui-modal__body {
|
|
@@ -136,7 +120,7 @@ html:has(.ui-modal.is-open) {
|
|
|
136
120
|
color: var(--text);
|
|
137
121
|
cursor: pointer;
|
|
138
122
|
flex: 0 0 auto;
|
|
139
|
-
font-family: var(--
|
|
123
|
+
font-family: var(--sans);
|
|
140
124
|
line-height: 1;
|
|
141
125
|
padding: 0.34rem 0.5rem;
|
|
142
126
|
}
|
|
@@ -247,6 +231,12 @@ html:has(.ui-modal.is-open) {
|
|
|
247
231
|
position: relative;
|
|
248
232
|
}
|
|
249
233
|
|
|
234
|
+
/* The SURFACE only. Placement is a separate decision, because a menu is not
|
|
235
|
+
always a dropdown: a canvas context menu opens at the pointer, a mobile one
|
|
236
|
+
arrives as a sheet. This rule used to weld `position: absolute` plus a
|
|
237
|
+
trigger-relative offset into the surface itself, so a consumer with a
|
|
238
|
+
pointer-positioned menu could not use it at all and re-declared the panel,
|
|
239
|
+
the border, the radius and the shadow to get one. */
|
|
250
240
|
.ui-menu {
|
|
251
241
|
background: var(--panel-strong);
|
|
252
242
|
border: 1px solid var(--line-strong);
|
|
@@ -256,35 +246,43 @@ html:has(.ui-modal.is-open) {
|
|
|
256
246
|
gap: 1px;
|
|
257
247
|
min-inline-size: 11rem;
|
|
258
248
|
padding: 0.3rem;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* The dropdown placement this class always had: anchored under its trigger
|
|
252
|
+
inside a `.ui-menu-host`. Unchanged behaviour, now opted into. */
|
|
253
|
+
.ui-menu--dropdown {
|
|
259
254
|
position: absolute;
|
|
260
255
|
inset-inline-end: 0;
|
|
261
256
|
inset-block-start: calc(100% + 0.4rem);
|
|
262
257
|
z-index: var(--z-overlay);
|
|
263
258
|
}
|
|
264
259
|
|
|
260
|
+
/* Opened at a point the host computes — a right-click, a long-press. The host
|
|
261
|
+
sets `left`/`top` (or `inset-inline-start`/`inset-block-start`); Bronto only
|
|
262
|
+
takes it out of flow and gives it the layer. */
|
|
263
|
+
.ui-menu--at-pointer {
|
|
264
|
+
position: fixed;
|
|
265
|
+
z-index: var(--z-popover);
|
|
266
|
+
}
|
|
267
|
+
|
|
265
268
|
.ui-menu__label {
|
|
266
269
|
color: var(--text-dim);
|
|
267
|
-
font-family: var(--
|
|
270
|
+
font-family: var(--sans);
|
|
268
271
|
font-size: var(--text-2xs);
|
|
269
|
-
letter-spacing:
|
|
272
|
+
letter-spacing: 0;
|
|
270
273
|
padding: 0.45rem 0.55rem 0.2rem;
|
|
271
|
-
text-transform:
|
|
274
|
+
text-transform: none;
|
|
272
275
|
}
|
|
273
276
|
|
|
277
|
+
/* Composes `.ui-row` (css/row.css) — a menu item IS a dense selectable row,
|
|
278
|
+
and keeping two copies of that shape is how they drift. What is menu-specific
|
|
279
|
+
stays here: the mono face, the slightly roomier padding a pointer target
|
|
280
|
+
wants, and the leading bullet below. `row.css` is in the core bundle, which
|
|
281
|
+
is what lets a core component compose it. */
|
|
274
282
|
.ui-menu__item {
|
|
275
|
-
|
|
276
|
-
background: transparent;
|
|
277
|
-
border: 0;
|
|
278
|
-
border-radius: var(--radius-sm);
|
|
279
|
-
color: var(--text-soft);
|
|
280
|
-
cursor: pointer;
|
|
281
|
-
display: flex;
|
|
282
|
-
font-family: var(--mono);
|
|
283
|
+
font-family: var(--sans);
|
|
283
284
|
font-size: var(--text-sm);
|
|
284
|
-
gap: 0.5rem;
|
|
285
285
|
padding: 0.5rem 0.55rem;
|
|
286
|
-
text-align: start;
|
|
287
|
-
inline-size: 100%;
|
|
288
286
|
}
|
|
289
287
|
|
|
290
288
|
.ui-menu__item::before {
|
|
@@ -380,7 +378,7 @@ html:has(.ui-modal.is-open) {
|
|
|
380
378
|
border-radius: var(--radius-sm);
|
|
381
379
|
color: var(--text-soft);
|
|
382
380
|
cursor: pointer;
|
|
383
|
-
font-family: var(--
|
|
381
|
+
font-family: var(--sans);
|
|
384
382
|
font-size: var(--text-sm);
|
|
385
383
|
padding: 0.5rem 0.55rem;
|
|
386
384
|
}
|