@ponchia/ui 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -31
- package/behaviors/index.d.ts +29 -0
- package/behaviors/index.js +172 -0
- package/classes/index.d.ts +37 -0
- package/classes/index.js +85 -0
- package/css/app.css +22 -22
- package/css/base.css +130 -10
- package/css/cards.css +21 -21
- package/css/content.css +289 -0
- package/css/core.css +4 -0
- package/css/disclosure.css +311 -0
- package/css/dots.css +125 -8
- package/css/feedback.css +243 -0
- package/css/fonts.css +11 -0
- package/css/forms.css +39 -12
- package/css/layout.css +5 -5
- package/css/motion.css +29 -5
- package/css/navigation.css +13 -8
- package/css/overlay.css +198 -0
- package/css/primitives.css +33 -16
- package/css/responsive.css +14 -14
- package/css/table.css +9 -9
- package/css/tokens.css +77 -20
- package/css/typography.css +9 -9
- package/dist/bronto-core.css +1 -0
- package/dist/bronto.css +1 -0
- package/package.json +21 -4
- package/tokens/index.js +14 -14
- package/tokens/index.json +28 -28
- package/tokens/tokens.dtcg.json +575 -0
package/css/base.css
CHANGED
|
@@ -24,7 +24,7 @@ body {
|
|
|
24
24
|
background: var(--bg);
|
|
25
25
|
color: var(--text);
|
|
26
26
|
margin: 0;
|
|
27
|
-
min-
|
|
27
|
+
min-block-size: 100vh;
|
|
28
28
|
position: relative;
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -58,7 +58,7 @@ textarea {
|
|
|
58
58
|
img,
|
|
59
59
|
svg {
|
|
60
60
|
display: block;
|
|
61
|
-
max-
|
|
61
|
+
max-inline-size: 100%;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
p,
|
|
@@ -134,13 +134,13 @@ pre code {
|
|
|
134
134
|
|
|
135
135
|
hr {
|
|
136
136
|
border: 0;
|
|
137
|
-
border-
|
|
137
|
+
border-block-start: 1px solid var(--line);
|
|
138
138
|
margin: var(--space-lg) 0;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
::-webkit-scrollbar {
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
block-size: 10px;
|
|
143
|
+
inline-size: 10px;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
::-webkit-scrollbar-thumb {
|
|
@@ -170,15 +170,15 @@ textarea:focus-visible,
|
|
|
170
170
|
border: 1px solid var(--line-strong);
|
|
171
171
|
border-radius: var(--radius-md);
|
|
172
172
|
color: var(--text);
|
|
173
|
-
|
|
173
|
+
inset-inline-start: 1rem;
|
|
174
174
|
padding: 0.7rem 1rem;
|
|
175
175
|
position: fixed;
|
|
176
|
-
|
|
176
|
+
inset-block-start: -4rem;
|
|
177
177
|
z-index: 40;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
.skip-link:focus {
|
|
181
|
-
|
|
181
|
+
inset-block-start: 1rem;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
/* Small global helpers reused across apps. */
|
|
@@ -198,9 +198,129 @@ textarea:focus-visible,
|
|
|
198
198
|
.ui-visually-hidden {
|
|
199
199
|
clip: rect(0 0 0 0);
|
|
200
200
|
clip-path: inset(50%);
|
|
201
|
-
|
|
201
|
+
block-size: 1px;
|
|
202
202
|
overflow: hidden;
|
|
203
203
|
position: absolute;
|
|
204
204
|
white-space: nowrap;
|
|
205
|
-
|
|
205
|
+
inline-size: 1px;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* --------------------------------------------------------------------------
|
|
209
|
+
Forced colors (Windows High Contrast). The OS replaces the palette and
|
|
210
|
+
strips backgrounds/shadows, so any state signalled only by a fill goes
|
|
211
|
+
invisible. Re-assert those with system colors so meaning survives.
|
|
212
|
+
-------------------------------------------------------------------------- */
|
|
213
|
+
@media (forced-colors: active) {
|
|
214
|
+
.ui-progress__bar,
|
|
215
|
+
.ui-dotbar i.is-on,
|
|
216
|
+
.ui-dotspinner i {
|
|
217
|
+
background: Highlight;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.ui-dot,
|
|
221
|
+
.ui-dot--accent,
|
|
222
|
+
.ui-dot--success,
|
|
223
|
+
.ui-dot--warning,
|
|
224
|
+
.ui-dot--danger,
|
|
225
|
+
.ui-switch__thumb {
|
|
226
|
+
background: CanvasText;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.ui-dot--live::after {
|
|
230
|
+
border-color: CanvasText;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.ui-switch input:checked + .ui-switch__track,
|
|
234
|
+
.ui-segmented__option:has(input:checked) {
|
|
235
|
+
outline: 2px solid Highlight;
|
|
236
|
+
outline-offset: -2px;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Keyboard focus must never depend on a colour that gets overridden. */
|
|
240
|
+
a:focus-visible,
|
|
241
|
+
button:focus-visible,
|
|
242
|
+
summary:focus-visible,
|
|
243
|
+
input:focus-visible,
|
|
244
|
+
select:focus-visible,
|
|
245
|
+
textarea:focus-visible,
|
|
246
|
+
[tabindex]:focus-visible {
|
|
247
|
+
outline: 2px solid Highlight;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* --------------------------------------------------------------------------
|
|
252
|
+
Print — ink on white, no chrome, no page-break scars. The framework
|
|
253
|
+
dresses content sites too, so a clean printout / PDF matters.
|
|
254
|
+
-------------------------------------------------------------------------- */
|
|
255
|
+
@media print {
|
|
256
|
+
html,
|
|
257
|
+
body {
|
|
258
|
+
background: #fff;
|
|
259
|
+
color: #000;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* Decorative / interactive chrome never prints. */
|
|
263
|
+
.ui-dotfield,
|
|
264
|
+
.ui-toast-stack,
|
|
265
|
+
.app-rail,
|
|
266
|
+
.app-topbar,
|
|
267
|
+
.site-nav,
|
|
268
|
+
.theme-toggle__button,
|
|
269
|
+
.site-menu,
|
|
270
|
+
.ui-spinner,
|
|
271
|
+
.ui-dotloader,
|
|
272
|
+
.ui-dotspinner,
|
|
273
|
+
dialog.ui-modal::backdrop {
|
|
274
|
+
display: none !important;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* Flat ink: drop shadows/fills, keep hairlines as real rules. */
|
|
278
|
+
*,
|
|
279
|
+
*::before,
|
|
280
|
+
*::after {
|
|
281
|
+
box-shadow: none !important;
|
|
282
|
+
text-shadow: none !important;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.ui-card,
|
|
286
|
+
.ui-panel,
|
|
287
|
+
.ui-surface,
|
|
288
|
+
.ui-alert,
|
|
289
|
+
.ui-table-wrap {
|
|
290
|
+
border: 1px solid #999;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/* Scroll containers must spill on paper, not clip. */
|
|
294
|
+
.ui-table-wrap,
|
|
295
|
+
.ui-prose table,
|
|
296
|
+
.ui-tabs__list,
|
|
297
|
+
pre {
|
|
298
|
+
overflow: visible !important;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* Do not split atomic blocks across pages. */
|
|
302
|
+
.ui-card,
|
|
303
|
+
.ui-panel,
|
|
304
|
+
.ui-alert,
|
|
305
|
+
figure,
|
|
306
|
+
blockquote,
|
|
307
|
+
pre,
|
|
308
|
+
tr {
|
|
309
|
+
break-inside: avoid;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
:is(h1, h2, h3, h4, h5, h6) {
|
|
313
|
+
break-after: avoid;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* Long-form: surface link targets when printed. */
|
|
317
|
+
.ui-prose a[href^="http"]::after {
|
|
318
|
+
content: " (" attr(href) ")";
|
|
319
|
+
font-size: 0.85em;
|
|
320
|
+
word-break: break-all;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@page {
|
|
324
|
+
margin: 18mm;
|
|
325
|
+
}
|
|
206
326
|
}
|
package/css/cards.css
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
font-family: var(--display);
|
|
40
40
|
font-size: 1.85rem;
|
|
41
41
|
letter-spacing: 0;
|
|
42
|
-
margin-
|
|
42
|
+
margin-block-start: 0.35rem;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
.metric-tile p,
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
|
|
59
59
|
.notes-strip {
|
|
60
60
|
align-items: center;
|
|
61
|
-
border-
|
|
62
|
-
border-
|
|
61
|
+
border-block-end: 1px solid var(--line);
|
|
62
|
+
border-block-start: 1px solid var(--line);
|
|
63
63
|
display: grid;
|
|
64
64
|
gap: 1.2rem;
|
|
65
65
|
grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
.notes-strip__latest {
|
|
80
|
-
border-
|
|
80
|
+
border-inline-start: 1px solid var(--line);
|
|
81
81
|
display: grid;
|
|
82
82
|
gap: 0.45rem;
|
|
83
|
-
min-
|
|
84
|
-
padding-
|
|
83
|
+
min-inline-size: 0;
|
|
84
|
+
padding-inline-start: 1.2rem;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.notes-strip__topline {
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
|
|
107
107
|
.section-head p {
|
|
108
108
|
margin: 0;
|
|
109
|
-
max-
|
|
109
|
+
max-inline-size: 60ch;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
.section-head--stacked {
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
|
|
117
117
|
.project-card__category {
|
|
118
118
|
color: var(--text-dim);
|
|
119
|
-
margin-
|
|
119
|
+
margin-block-start: 0.15rem;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
.project-category-label {
|
|
@@ -129,12 +129,12 @@
|
|
|
129
129
|
display: inline-block;
|
|
130
130
|
fill: none;
|
|
131
131
|
flex: 0 0 auto;
|
|
132
|
-
|
|
132
|
+
block-size: 1em;
|
|
133
133
|
stroke: currentColor;
|
|
134
134
|
stroke-linecap: round;
|
|
135
135
|
stroke-linejoin: round;
|
|
136
136
|
stroke-width: 2;
|
|
137
|
-
|
|
137
|
+
inline-size: 1em;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
.project-card__summary,
|
|
@@ -167,10 +167,10 @@
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
.misc-card__boundary {
|
|
170
|
-
border-
|
|
170
|
+
border-block-start: 1px solid var(--line);
|
|
171
171
|
display: grid;
|
|
172
172
|
gap: 0.35rem;
|
|
173
|
-
padding-
|
|
173
|
+
padding-block-start: 0.85rem;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
.misc-card__boundary p {
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
|
|
187
187
|
.post-card h3 {
|
|
188
188
|
font-size: 1.45rem;
|
|
189
|
-
margin-
|
|
189
|
+
margin-block-start: 0.35rem;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
.post-card p {
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
.contact-stub-card {
|
|
197
|
-
max-
|
|
197
|
+
max-inline-size: 48rem;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
.project-pager {
|
|
@@ -215,9 +215,9 @@
|
|
|
215
215
|
border: 1px solid var(--line);
|
|
216
216
|
border-radius: var(--radius-lg);
|
|
217
217
|
box-shadow: var(--shadow);
|
|
218
|
-
min-
|
|
218
|
+
min-block-size: 6rem;
|
|
219
219
|
padding: 1rem 1.05rem;
|
|
220
|
-
|
|
220
|
+
inline-size: 100%;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
.project-pager__link strong {
|
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
.project-pager__link--next {
|
|
229
|
-
text-align:
|
|
229
|
+
text-align: end;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
@media (hover: hover) {
|
|
@@ -297,11 +297,11 @@
|
|
|
297
297
|
display: grid;
|
|
298
298
|
gap: 0.75rem;
|
|
299
299
|
margin: 0;
|
|
300
|
-
padding-
|
|
300
|
+
padding-inline-start: 1.1rem;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
303
|
.focus-list--dense {
|
|
304
|
-
margin-
|
|
304
|
+
margin-block-start: 0.2rem;
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
.focus-list li,
|
|
@@ -316,10 +316,10 @@
|
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
.profile-link-list div {
|
|
319
|
-
border-
|
|
319
|
+
border-block-start: 1px solid var(--line);
|
|
320
320
|
display: grid;
|
|
321
321
|
gap: 0.25rem;
|
|
322
|
-
padding-
|
|
322
|
+
padding-block-start: 0.75rem;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
.profile-link-list dd {
|
package/css/content.css
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
content — .ui-prose: long-form rich text, zero per-element classes.
|
|
3
|
+
|
|
4
|
+
Wrap the raw HTML a Markdown renderer emits in a single `.ui-prose`
|
|
5
|
+
and the document is styled in the Nothing aesthetic while the markup
|
|
6
|
+
stays semantic and machine-readable (no class-soup). Everything here
|
|
7
|
+
is an element selector scoped under `.ui-prose`, so it never leaks
|
|
8
|
+
into app UI.
|
|
9
|
+
========================================================================== */
|
|
10
|
+
|
|
11
|
+
.ui-prose {
|
|
12
|
+
color: var(--text-soft);
|
|
13
|
+
font-size: var(--text-base);
|
|
14
|
+
line-height: 1.7;
|
|
15
|
+
|
|
16
|
+
/* Readable measure; the container can still be wider for tables/media. */
|
|
17
|
+
--prose-measure: 72ch;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ui-prose > * {
|
|
21
|
+
margin-block: 0;
|
|
22
|
+
max-inline-size: var(--prose-measure);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Flow rhythm — space comes from the following element. */
|
|
26
|
+
.ui-prose > * + * {
|
|
27
|
+
margin-block-start: var(--space-md);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ui-prose > * + :is(h1, h2, h3, h4, h5, h6) {
|
|
31
|
+
margin-block-start: var(--space-2xl);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Full-bleed-ish elements opt out of the text measure. */
|
|
35
|
+
.ui-prose > :is(figure, pre, table, hr, .ui-dotrule) {
|
|
36
|
+
max-inline-size: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* --- Headings — brand display face; only the top two shout --- */
|
|
40
|
+
|
|
41
|
+
.ui-prose :is(h1, h2, h3, h4, h5, h6) {
|
|
42
|
+
color: var(--text);
|
|
43
|
+
font-family: var(--display);
|
|
44
|
+
line-height: 1.12;
|
|
45
|
+
text-wrap: balance;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ui-prose h1 {
|
|
49
|
+
font-size: var(--text-xl);
|
|
50
|
+
letter-spacing: var(--tracking-wide);
|
|
51
|
+
text-transform: uppercase;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ui-prose h2 {
|
|
55
|
+
font-size: var(--text-lg);
|
|
56
|
+
letter-spacing: var(--tracking-wide);
|
|
57
|
+
padding-block-end: 0.3rem;
|
|
58
|
+
border-block-end: 1px solid var(--line);
|
|
59
|
+
text-transform: uppercase;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.ui-prose h3 {
|
|
63
|
+
font-size: var(--text-lg);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.ui-prose :is(h4, h5, h6) {
|
|
67
|
+
font-size: var(--text-base);
|
|
68
|
+
letter-spacing: var(--tracking-wide);
|
|
69
|
+
text-transform: uppercase;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.ui-prose :is(h5, h6) {
|
|
73
|
+
color: var(--text-dim);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Anchored headings clear a sticky chrome and expose a dot on hover. */
|
|
77
|
+
.ui-prose :is(h1, h2, h3, h4, h5, h6)[id] {
|
|
78
|
+
scroll-margin-block-start: 6rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* --- Text-level --- */
|
|
82
|
+
|
|
83
|
+
.ui-prose :is(p, ul, ol, dl, blockquote, figure, pre, table) {
|
|
84
|
+
font-size: inherit;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ui-prose a {
|
|
88
|
+
color: var(--text);
|
|
89
|
+
text-decoration: underline;
|
|
90
|
+
text-decoration-color: color-mix(in srgb, var(--accent) 55%, transparent);
|
|
91
|
+
text-decoration-thickness: 1px;
|
|
92
|
+
text-underline-offset: 0.22rem;
|
|
93
|
+
transition:
|
|
94
|
+
color var(--duration-fast) var(--ease-standard),
|
|
95
|
+
text-decoration-color var(--duration-fast) var(--ease-standard);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.ui-prose strong {
|
|
99
|
+
color: var(--text);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.ui-prose mark {
|
|
103
|
+
background: var(--accent-soft);
|
|
104
|
+
color: var(--text);
|
|
105
|
+
padding: 0.02em 0.22em;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.ui-prose small {
|
|
109
|
+
font-size: var(--text-xs);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.ui-prose abbr[title] {
|
|
113
|
+
text-decoration: underline dotted;
|
|
114
|
+
text-underline-offset: 0.2rem;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.ui-prose :is(sub, sup) {
|
|
118
|
+
font-size: 0.72em;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@media (hover: hover) {
|
|
122
|
+
.ui-prose a:hover {
|
|
123
|
+
color: var(--accent);
|
|
124
|
+
text-decoration-color: var(--accent);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* --- Lists — the Nothing dot/square marker --- */
|
|
129
|
+
|
|
130
|
+
.ui-prose :is(ul, ol) {
|
|
131
|
+
padding-inline-start: 1.4rem;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.ui-prose li + li {
|
|
135
|
+
margin-block-start: 0.4rem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.ui-prose li::marker {
|
|
139
|
+
color: var(--accent);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.ui-prose ul {
|
|
143
|
+
list-style: square;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.ui-prose :is(ul, ol) :is(ul, ol) {
|
|
147
|
+
margin-block-start: 0.4rem;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* GitHub task lists stay semantic; just align them. */
|
|
151
|
+
.ui-prose li:has(> input[type='checkbox']) {
|
|
152
|
+
list-style: none;
|
|
153
|
+
margin-inline-start: -1.4rem;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.ui-prose li > input[type='checkbox'] {
|
|
157
|
+
accent-color: var(--accent);
|
|
158
|
+
margin-inline-end: 0.4rem;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* --- Quote --- */
|
|
162
|
+
|
|
163
|
+
.ui-prose blockquote {
|
|
164
|
+
border-inline-start: 2px solid var(--accent);
|
|
165
|
+
color: var(--text-dim);
|
|
166
|
+
font-style: normal;
|
|
167
|
+
padding-inline-start: var(--space-md);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.ui-prose blockquote > * + * {
|
|
171
|
+
margin-block-start: var(--space-xs);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* --- Definition list --- */
|
|
175
|
+
|
|
176
|
+
.ui-prose dt {
|
|
177
|
+
color: var(--text-dim);
|
|
178
|
+
font-family: var(--mono);
|
|
179
|
+
font-size: var(--text-2xs);
|
|
180
|
+
font-weight: 700;
|
|
181
|
+
letter-spacing: var(--tracking-wide);
|
|
182
|
+
text-transform: uppercase;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.ui-prose dd {
|
|
186
|
+
margin-inline-start: 0;
|
|
187
|
+
padding-block: 0.16rem 0.6rem;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.ui-prose dd + dt {
|
|
191
|
+
border-block-start: 1px solid var(--line);
|
|
192
|
+
padding-block-start: 0.6rem;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* --- Code --- */
|
|
196
|
+
|
|
197
|
+
.ui-prose :not(pre) > code {
|
|
198
|
+
font-size: 0.88em;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.ui-prose pre {
|
|
202
|
+
font-size: var(--text-sm);
|
|
203
|
+
line-height: 1.6;
|
|
204
|
+
overflow-x: auto;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* --- Rule — reuse the dot-matrix divider look --- */
|
|
208
|
+
|
|
209
|
+
.ui-prose hr {
|
|
210
|
+
background-image: radial-gradient(var(--line-strong) 1.4px, transparent 1.4px);
|
|
211
|
+
background-position: 0 50%;
|
|
212
|
+
background-size: 9px 9px;
|
|
213
|
+
block-size: 3px;
|
|
214
|
+
border: 0;
|
|
215
|
+
margin-block: var(--space-xl);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* --- Media --- */
|
|
219
|
+
|
|
220
|
+
.ui-prose :is(img, video, svg) {
|
|
221
|
+
block-size: auto;
|
|
222
|
+
border-radius: var(--radius-sm);
|
|
223
|
+
max-inline-size: 100%;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.ui-prose figure {
|
|
227
|
+
display: grid;
|
|
228
|
+
gap: 0.5rem;
|
|
229
|
+
justify-items: start;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.ui-prose figcaption {
|
|
233
|
+
color: var(--text-dim);
|
|
234
|
+
font-family: var(--mono);
|
|
235
|
+
font-size: var(--text-2xs);
|
|
236
|
+
letter-spacing: var(--tracking-wide);
|
|
237
|
+
text-transform: uppercase;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* --- Table — raw Markdown tables look like ui-table --- */
|
|
241
|
+
|
|
242
|
+
.ui-prose table {
|
|
243
|
+
border: 1px solid var(--line);
|
|
244
|
+
border-collapse: collapse;
|
|
245
|
+
border-radius: var(--radius-md);
|
|
246
|
+
display: block;
|
|
247
|
+
font-family: var(--mono);
|
|
248
|
+
font-size: var(--text-sm);
|
|
249
|
+
inline-size: 100%;
|
|
250
|
+
overflow-x: auto;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.ui-prose :is(th, td) {
|
|
254
|
+
border-block-end: 1px solid var(--line);
|
|
255
|
+
padding: 0.6rem 0.8rem;
|
|
256
|
+
text-align: start;
|
|
257
|
+
vertical-align: top;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.ui-prose th {
|
|
261
|
+
background: var(--panel);
|
|
262
|
+
color: var(--text-dim);
|
|
263
|
+
font-size: var(--text-2xs);
|
|
264
|
+
font-weight: 700;
|
|
265
|
+
letter-spacing: var(--tracking-wide);
|
|
266
|
+
text-transform: uppercase;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.ui-prose td {
|
|
270
|
+
color: var(--text-soft);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.ui-prose tbody tr:last-child :is(th, td) {
|
|
274
|
+
border-block-end: 0;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* --- Compact variant — tighter rhythm for dense docs --- */
|
|
278
|
+
|
|
279
|
+
.ui-prose--compact {
|
|
280
|
+
line-height: 1.55;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.ui-prose--compact > * + * {
|
|
284
|
+
margin-block-start: var(--space-sm);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.ui-prose--compact > * + :is(h1, h2, h3, h4, h5, h6) {
|
|
288
|
+
margin-block-start: var(--space-lg);
|
|
289
|
+
}
|
package/css/core.css
CHANGED
|
@@ -15,8 +15,12 @@
|
|
|
15
15
|
@import url('./layout.css') layer(bronto);
|
|
16
16
|
@import url('./navigation.css') layer(bronto);
|
|
17
17
|
@import url('./typography.css') layer(bronto);
|
|
18
|
+
@import url('./content.css') layer(bronto);
|
|
18
19
|
@import url('./primitives.css') layer(bronto);
|
|
19
20
|
@import url('./forms.css') layer(bronto);
|
|
21
|
+
@import url('./feedback.css') layer(bronto);
|
|
22
|
+
@import url('./overlay.css') layer(bronto);
|
|
23
|
+
@import url('./disclosure.css') layer(bronto);
|
|
20
24
|
@import url('./table.css') layer(bronto);
|
|
21
25
|
@import url('./cards.css') layer(bronto);
|
|
22
26
|
@import url('./app.css') layer(bronto);
|