@ponchia/ui 0.9.0 → 0.11.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +107 -4
  2. package/MIGRATIONS.json +127 -18
  3. package/README.md +17 -9
  4. package/behaviors/index.d.ts +0 -2
  5. package/behaviors/index.d.ts.map +1 -1
  6. package/behaviors/index.js +0 -2
  7. package/behaviors/popover.js +4 -4
  8. package/classes/classes.json +53 -9
  9. package/classes/index.d.ts +20 -3
  10. package/classes/index.js +33 -3
  11. package/classes/vscode.css-custom-data.json +10 -10
  12. package/css/annotations.css +2 -2
  13. package/css/app.css +55 -31
  14. package/css/base.css +10 -14
  15. package/css/command.css +4 -4
  16. package/css/content.css +23 -21
  17. package/css/disclosure.css +17 -17
  18. package/css/discussion.css +150 -0
  19. package/css/feedback.css +15 -15
  20. package/css/figure.css +6 -4
  21. package/css/forms.css +8 -7
  22. package/css/generated.css +19 -12
  23. package/css/legend.css +13 -5
  24. package/css/navigation.css +3 -3
  25. package/css/overlay.css +13 -29
  26. package/css/primitives.css +48 -28
  27. package/css/report.css +91 -53
  28. package/css/sources.css +1 -1
  29. package/css/state.css +95 -6
  30. package/css/table.css +3 -3
  31. package/css/tokens.css +10 -10
  32. package/css/workbench.css +21 -9
  33. package/dist/bronto.css +1 -1
  34. package/dist/css/analytical.css +1 -1
  35. package/dist/css/annotations.css +1 -1
  36. package/dist/css/app.css +1 -1
  37. package/dist/css/base.css +1 -1
  38. package/dist/css/command.css +1 -1
  39. package/dist/css/content.css +1 -1
  40. package/dist/css/disclosure.css +1 -1
  41. package/dist/css/discussion.css +1 -0
  42. package/dist/css/feedback.css +1 -1
  43. package/dist/css/figure.css +1 -1
  44. package/dist/css/forms.css +1 -1
  45. package/dist/css/generated.css +1 -1
  46. package/dist/css/legend.css +1 -1
  47. package/dist/css/navigation.css +1 -1
  48. package/dist/css/overlay.css +1 -1
  49. package/dist/css/primitives.css +1 -1
  50. package/dist/css/report-kit.css +1 -1
  51. package/dist/css/report.css +1 -1
  52. package/dist/css/sources.css +1 -1
  53. package/dist/css/state.css +1 -1
  54. package/dist/css/table.css +1 -1
  55. package/dist/css/tokens.css +1 -1
  56. package/dist/css/workbench.css +1 -1
  57. package/docs/adr/0004-prune-unused-adapters.md +5 -1
  58. package/docs/adr/0005-productive-tools-and-editorial-reports.md +58 -0
  59. package/docs/adr/0006-trusted-publishing.md +92 -0
  60. package/docs/architecture.md +16 -23
  61. package/docs/command.md +1 -2
  62. package/docs/compositions.md +131 -0
  63. package/docs/discussion.md +64 -0
  64. package/docs/figure.md +10 -1
  65. package/docs/frontier-primitives.md +1 -2
  66. package/docs/migrations/0.10-to-0.11.md +61 -0
  67. package/docs/migrations/0.9-to-0.10.md +47 -0
  68. package/docs/package-contract.md +16 -13
  69. package/docs/reference.md +47 -18
  70. package/docs/reporting.md +15 -9
  71. package/docs/stability.md +20 -55
  72. package/docs/state.md +47 -0
  73. package/docs/usage.md +18 -30
  74. package/llms.txt +7 -18
  75. package/package.json +18 -54
  76. package/tokens/figma.variables.json +20 -20
  77. package/tokens/index.js +10 -10
  78. package/tokens/index.json +20 -20
  79. package/tokens/resolved.json +10 -10
  80. package/tokens/tokens.dtcg.json +20 -20
  81. package/behaviors/modal.d.ts +0 -45
  82. package/behaviors/modal.d.ts.map +0 -1
  83. package/behaviors/modal.js +0 -373
  84. package/qwik/index.d.ts +0 -48
  85. package/qwik/index.d.ts.map +0 -1
  86. package/qwik/index.js +0 -227
  87. package/react/index.d.ts +0 -45
  88. package/react/index.d.ts.map +0 -1
  89. package/react/index.js +0 -165
  90. package/solid/index.d.ts +0 -75
  91. package/solid/index.d.ts.map +0 -1
  92. package/solid/index.js +0 -172
  93. package/svelte/index.d.ts +0 -114
  94. package/svelte/index.d.ts.map +0 -1
  95. package/svelte/index.js +0 -197
  96. package/vue/index.d.ts +0 -116
  97. package/vue/index.d.ts.map +0 -1
  98. package/vue/index.js +0 -266
@@ -0,0 +1,150 @@
1
+ /* Discussions: readable messages and composers. The host owns storage, identity,
2
+ focus management, anchoring, notifications, and posting state. */
3
+ .ui-discussion {
4
+ color: var(--text);
5
+ font-family: var(--sans);
6
+ font-size: var(--text-sm);
7
+ line-height: 1.5;
8
+ min-inline-size: 0;
9
+ overflow-wrap: anywhere;
10
+ }
11
+
12
+ .ui-discussion__header {
13
+ align-items: start;
14
+ display: flex;
15
+ gap: var(--space-md);
16
+ justify-content: space-between;
17
+ }
18
+
19
+ .ui-discussion__header > div {
20
+ min-inline-size: 0;
21
+ }
22
+
23
+ .ui-discussion__header h2 {
24
+ font-family: var(--sans);
25
+ font-size: var(--text-lg);
26
+ font-weight: 650;
27
+ letter-spacing: normal;
28
+ line-height: 1.25;
29
+ margin: 0;
30
+ text-transform: none;
31
+ }
32
+
33
+ .ui-discussion__header p,
34
+ .ui-discussion__meta,
35
+ .ui-discussion__hint,
36
+ .ui-discussion__state {
37
+ color: var(--text-dim);
38
+ font-family: var(--sans);
39
+ font-size: var(--text-xs);
40
+ letter-spacing: normal;
41
+ text-transform: none;
42
+ }
43
+
44
+ .ui-discussion__actions {
45
+ align-items: center;
46
+ display: flex;
47
+ flex-wrap: wrap;
48
+ gap: var(--space-sm);
49
+ }
50
+
51
+ .ui-discussion__quote {
52
+ background: var(--panel);
53
+ border-inline-start: 3px solid var(--accent);
54
+ color: var(--text);
55
+ font-family: var(--sans);
56
+ margin: var(--space-md) 0;
57
+ padding: var(--space-sm) var(--space-md);
58
+ white-space: pre-wrap;
59
+ }
60
+
61
+ .ui-discussion__messages,
62
+ .ui-discussion__list {
63
+ list-style: none;
64
+ margin: var(--space-md) 0;
65
+ padding: 0;
66
+ }
67
+
68
+ .ui-discussion__message {
69
+ border-block-end: 1px solid var(--line);
70
+ padding-block: var(--space-md);
71
+ }
72
+
73
+ .ui-discussion__message .ui-prose {
74
+ font-family: var(--sans);
75
+ font-size: var(--text-sm);
76
+ line-height: 1.5;
77
+ }
78
+
79
+ .ui-discussion__meta {
80
+ margin-block: 0 var(--space-sm);
81
+ }
82
+
83
+ .ui-discussion__item {
84
+ background: transparent;
85
+ border: 0;
86
+ border-block-end: 1px solid var(--line);
87
+ color: inherit;
88
+ cursor: pointer;
89
+ display: grid;
90
+ font: inherit;
91
+ gap: var(--space-xs);
92
+ inline-size: 100%;
93
+ min-block-size: 44px;
94
+ padding: var(--space-md) var(--space-sm);
95
+ text-align: start;
96
+ }
97
+
98
+ .ui-discussion__item > :first-child {
99
+ font-weight: 600;
100
+ }
101
+
102
+ .ui-discussion__item small {
103
+ color: var(--text-dim);
104
+ font-family: var(--sans);
105
+ font-size: var(--text-xs);
106
+ }
107
+
108
+ .ui-discussion__item:is(:hover, :focus-visible) {
109
+ background: var(--panel);
110
+ }
111
+
112
+ .ui-discussion__item:focus-visible {
113
+ outline: 2px solid var(--accent);
114
+ outline-offset: -2px;
115
+ }
116
+
117
+ .ui-discussion__composer {
118
+ border-block-start: 1px solid var(--line);
119
+ display: grid;
120
+ gap: var(--space-sm);
121
+ padding-block: var(--space-md);
122
+ }
123
+
124
+ .ui-discussion__composer textarea {
125
+ font-family: var(--sans);
126
+ inline-size: 100%;
127
+ min-block-size: 7rem;
128
+ resize: vertical;
129
+ }
130
+
131
+ @media (forced-colors: active) {
132
+ .ui-discussion__quote {
133
+ border-color: Highlight;
134
+ }
135
+
136
+ .ui-discussion__item:focus-visible {
137
+ outline-color: Highlight;
138
+ }
139
+ }
140
+
141
+ @media print {
142
+ .ui-discussion__actions,
143
+ .ui-discussion__composer {
144
+ display: none;
145
+ }
146
+
147
+ .ui-discussion__message {
148
+ break-inside: avoid;
149
+ }
150
+ }
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(--mono);
53
+ font-family: var(--sans);
54
54
  font-size: var(--text-2xs);
55
55
  font-weight: 700;
56
- letter-spacing: var(--tracking-wide);
56
+ letter-spacing: 0;
57
57
  margin: 0;
58
- text-transform: uppercase;
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(--mono);
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(--mono);
202
+ font-family: var(--sans);
203
203
  font-size: var(--text-2xs);
204
204
  font-weight: 700;
205
- letter-spacing: var(--tracking-wide);
205
+ letter-spacing: 0;
206
206
  margin: 0;
207
- text-transform: uppercase;
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(--mono);
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(--mono);
330
+ font-family: var(--sans);
331
331
  font-size: var(--text-2xs);
332
332
  inset-inline-start: 50%;
333
- letter-spacing: var(--tracking-wide);
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: uppercase;
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(--mono);
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(--mono);
578
+ font-family: var(--sans);
579
579
  font-size: var(--text-xs);
580
580
  gap: 0.5rem;
581
- letter-spacing: var(--tracking-wide);
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: uppercase;
588
+ text-transform: none;
589
589
  }
590
590
 
591
591
  .ui-steps__item::before {
package/css/figure.css CHANGED
@@ -8,6 +8,7 @@
8
8
  ========================================================================== */
9
9
 
10
10
  .ui-figure {
11
+ container: bronto-figure / inline-size;
11
12
  display: grid;
12
13
  gap: var(--space-sm);
13
14
  margin: 0;
@@ -22,11 +23,11 @@
22
23
 
23
24
  .ui-figure__caption {
24
25
  color: var(--text-dim);
25
- font-family: var(--mono);
26
- font-size: var(--text-2xs);
26
+ font-family: var(--sans);
27
+ font-size: var(--text-sm);
27
28
  letter-spacing: 0;
28
29
  line-height: 1.5;
29
- text-transform: uppercase;
30
+ text-transform: none;
30
31
  }
31
32
 
32
33
  .ui-figure__body {
@@ -81,7 +82,7 @@
81
82
  margin-block-start: var(--space-xs);
82
83
  }
83
84
 
84
- @media (max-width: 44rem) {
85
+ @container bronto-figure (max-width: 44rem) {
85
86
  .ui-figure__body--key-right {
86
87
  grid-template-columns: 1fr;
87
88
  }
@@ -89,6 +90,7 @@
89
90
 
90
91
  @media print {
91
92
  .ui-figure {
93
+ container-type: normal;
92
94
  break-inside: avoid;
93
95
  }
94
96
 
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(--mono);
12
+ font-family: var(--sans);
13
13
  font-size: var(--text-2xs);
14
14
  font-weight: 700;
15
- letter-spacing: var(--tracking-wide);
16
- text-transform: uppercase;
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(--mono);
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: var(--tracking-wide);
319
+ letter-spacing: 0;
319
320
  margin: 0 0 var(--space-xs);
320
- text-transform: uppercase;
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(--mono);
373
+ font-family: var(--sans);
373
374
  font-size: var(--text-sm);
374
375
  outline: none;
375
376
  padding: 0.6rem 0;
package/css/generated.css CHANGED
@@ -25,11 +25,11 @@
25
25
  align-items: center;
26
26
  color: var(--text-dim);
27
27
  display: inline-flex;
28
- font-family: var(--mono);
29
- font-size: var(--text-2xs);
28
+ font-family: var(--sans);
29
+ font-size: var(--text-xs);
30
30
  gap: 0.4rem;
31
- letter-spacing: var(--tracking-wide);
32
- text-transform: uppercase;
31
+ letter-spacing: 0;
32
+ text-transform: none;
33
33
  }
34
34
 
35
35
  /* --- Origin label — "AI assisted" / "model output" / "human reviewed". --- */
@@ -39,12 +39,12 @@
39
39
  border-radius: var(--radius-pill);
40
40
  color: var(--text-soft);
41
41
  display: inline-flex;
42
- font-family: var(--mono);
43
- font-size: var(--text-2xs);
42
+ font-family: var(--sans);
43
+ font-size: var(--text-xs);
44
44
  gap: 0.35rem;
45
- letter-spacing: var(--tracking-wide);
45
+ letter-spacing: 0;
46
46
  padding: 0.08rem 0.55rem;
47
- text-transform: uppercase;
47
+ text-transform: none;
48
48
  }
49
49
 
50
50
  .ui-origin-label--ai {
@@ -61,10 +61,10 @@
61
61
  .ui-reasoning > summary {
62
62
  color: var(--text-soft);
63
63
  cursor: pointer;
64
- font-family: var(--mono);
65
- font-size: var(--text-2xs);
66
- letter-spacing: var(--tracking-wide);
67
- text-transform: uppercase;
64
+ font-family: var(--sans);
65
+ font-size: var(--text-xs);
66
+ letter-spacing: 0;
67
+ text-transform: none;
68
68
  }
69
69
 
70
70
  .ui-reasoning__body {
@@ -110,6 +110,13 @@
110
110
  white-space: pre-wrap;
111
111
  }
112
112
 
113
+ @media (pointer: coarse) {
114
+ .ui-reasoning > summary,
115
+ .ui-tool-call > summary {
116
+ min-block-size: var(--tap-target);
117
+ }
118
+ }
119
+
113
120
  @media (forced-colors: active) {
114
121
  .ui-generated {
115
122
  border-inline-start-color: CanvasText;
package/css/legend.css CHANGED
@@ -18,7 +18,7 @@
18
18
  color: var(--text-soft);
19
19
  display: flex;
20
20
  flex-wrap: wrap;
21
- font-family: var(--mono);
21
+ font-family: var(--sans);
22
22
  font-size: var(--text-xs);
23
23
  gap: var(--space-2xs) var(--space-md);
24
24
  list-style: none;
@@ -37,13 +37,15 @@
37
37
 
38
38
  .ui-legend__title {
39
39
  color: var(--text-dim);
40
- font-size: var(--text-2xs);
40
+ font-size: var(--text-xs);
41
41
  letter-spacing: 0;
42
42
  margin: 0;
43
- text-transform: uppercase;
43
+ text-transform: none;
44
44
  }
45
45
 
46
46
  .ui-legend__item {
47
+ min-inline-size: 0;
48
+ max-inline-size: 100%;
47
49
  align-items: center;
48
50
  color: inherit;
49
51
  display: inline-flex;
@@ -51,6 +53,8 @@
51
53
  }
52
54
 
53
55
  .ui-legend__label {
56
+ min-inline-size: 0;
57
+ overflow-wrap: anywhere;
54
58
  color: inherit;
55
59
  }
56
60
 
@@ -62,9 +66,9 @@
62
66
 
63
67
  .ui-legend__caption {
64
68
  color: var(--text-dim);
65
- font-size: var(--text-2xs);
69
+ font-size: var(--text-xs);
66
70
  letter-spacing: 0;
67
- text-transform: uppercase;
71
+ text-transform: none;
68
72
  }
69
73
 
70
74
  /* Swatch — same token contract as the chart fill: set `--chart-color` (and,
@@ -202,6 +206,8 @@
202
206
  }
203
207
 
204
208
  .ui-legend--with-values .ui-legend__item {
209
+ min-inline-size: 0;
210
+ max-inline-size: 100%;
205
211
  display: grid;
206
212
  grid-column: 1 / -1;
207
213
  grid-template-columns: subgrid;
@@ -242,6 +248,8 @@
242
248
 
243
249
  .ui-legend__item.is-inactive .ui-legend__label,
244
250
  .ui-legend__item[aria-pressed='false'] .ui-legend__label {
251
+ min-inline-size: 0;
252
+ overflow-wrap: anywhere;
245
253
  text-decoration: line-through;
246
254
  }
247
255
 
@@ -12,16 +12,16 @@
12
12
  color: var(--text);
13
13
  cursor: pointer;
14
14
  display: inline-flex;
15
- font-family: var(--mono);
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: var(--tracking-wide);
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: uppercase;
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. Scoped to `dialog.ui-modal` so the
37
- controlled `.is-open` (non-<dialog>) path keeps its own entrance.
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
- /* Controlled (non-<dialog>) usage. A portal/React modal that can't be a
80
- native <dialog> wears the same skin + open layout via `.is-open`.
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(--display);
95
+ font-family: var(--sans);
112
96
  font-size: var(--text-lg);
113
- letter-spacing: var(--tracking-wide);
97
+ letter-spacing: 0;
114
98
  margin: 0;
115
- text-transform: uppercase;
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(--mono);
123
+ font-family: var(--sans);
140
124
  line-height: 1;
141
125
  padding: 0.34rem 0.5rem;
142
126
  }
@@ -283,11 +267,11 @@ html:has(.ui-modal.is-open) {
283
267
 
284
268
  .ui-menu__label {
285
269
  color: var(--text-dim);
286
- font-family: var(--mono);
270
+ font-family: var(--sans);
287
271
  font-size: var(--text-2xs);
288
- letter-spacing: var(--tracking-wide);
272
+ letter-spacing: 0;
289
273
  padding: 0.45rem 0.55rem 0.2rem;
290
- text-transform: uppercase;
274
+ text-transform: none;
291
275
  }
292
276
 
293
277
  /* Composes `.ui-row` (css/row.css) — a menu item IS a dense selectable row,
@@ -296,7 +280,7 @@ html:has(.ui-modal.is-open) {
296
280
  wants, and the leading bullet below. `row.css` is in the core bundle, which
297
281
  is what lets a core component compose it. */
298
282
  .ui-menu__item {
299
- font-family: var(--mono);
283
+ font-family: var(--sans);
300
284
  font-size: var(--text-sm);
301
285
  padding: 0.5rem 0.55rem;
302
286
  }
@@ -394,7 +378,7 @@ html:has(.ui-modal.is-open) {
394
378
  border-radius: var(--radius-sm);
395
379
  color: var(--text-soft);
396
380
  cursor: pointer;
397
- font-family: var(--mono);
381
+ font-family: var(--sans);
398
382
  font-size: var(--text-sm);
399
383
  padding: 0.5rem 0.55rem;
400
384
  }