barua-ui 0.13.0 → 0.14.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/css/base.css +6 -1
- package/css/components/actions.css +59 -27
- package/css/components/auth.css +9 -3
- package/css/components/charts.css +9 -3
- package/css/components/content.css +77 -20
- package/css/components/control-center.css +6 -2
- package/css/components/feedback.css +16 -2
- package/css/components/forms.css +73 -9
- package/css/components/marketing.css +27 -9
- package/css/components/media.css +26 -12
- package/css/components/mobile.css +3 -1
- package/css/components/nav.css +100 -22
- package/css/components/overlays.css +28 -6
- package/css/components/productivity.css +21 -7
- package/css/components/specialized.css +24 -8
- package/css/liquid.css +31 -20
- package/css/tokens.css +78 -0
- package/css/utilities.css +15 -3
- package/dist/index.cjs +21 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -13
- package/dist/index.d.ts +19 -13
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -58,7 +58,9 @@
|
|
|
58
58
|
selector inside a container is (0,1,1) and quietly beat .b-btn--primary's
|
|
59
59
|
(0,1,0), which left the landing page's call to action grey on blue. */
|
|
60
60
|
.b-marketing-nav a:not(.b-btn) { color: var(--b-text-secondary); text-decoration: none; }
|
|
61
|
-
|
|
61
|
+
@media (hover: hover) {
|
|
62
|
+
.b-marketing-nav a:not(.b-btn):hover { color: var(--b-text); }
|
|
63
|
+
}
|
|
62
64
|
|
|
63
65
|
/* ---- Chapter: one idea, centred, with room around it --------------------- */
|
|
64
66
|
.b-chapter {
|
|
@@ -187,10 +189,14 @@
|
|
|
187
189
|
border-radius: var(--b-radius-full);
|
|
188
190
|
text-decoration: none;
|
|
189
191
|
}
|
|
190
|
-
|
|
192
|
+
@media (hover: hover) {
|
|
193
|
+
.b-announce:hover { text-decoration: none; background: color-mix(in srgb, var(--b-color-accent) 18%, transparent); }
|
|
194
|
+
}
|
|
191
195
|
.b-announce .b-icon { width: 1rem; height: 1rem; }
|
|
192
196
|
.b-announce__go { transition: translate var(--b-duration-fast) var(--b-ease-out); }
|
|
193
|
-
|
|
197
|
+
@media (hover: hover) {
|
|
198
|
+
.b-announce:hover .b-announce__go { translate: 2px 0; }
|
|
199
|
+
}
|
|
194
200
|
|
|
195
201
|
/* ---- Rating: borrowed credibility, stated plainly ------------------------ */
|
|
196
202
|
/* Five marks and who is vouching. The stars are the library's own star at
|
|
@@ -262,7 +268,9 @@
|
|
|
262
268
|
other space in the belt. Half at each end restores it. */
|
|
263
269
|
padding-inline: calc(var(--b-marquee-gap) / 2);
|
|
264
270
|
}
|
|
265
|
-
|
|
271
|
+
@media (hover: hover) {
|
|
272
|
+
.b-marquee:hover .b-marquee__track { animation-play-state: paused; }
|
|
273
|
+
}
|
|
266
274
|
@keyframes b-marquee { to { translate: -50% 0; } }
|
|
267
275
|
@media (prefers-reduced-motion: reduce) {
|
|
268
276
|
.b-marquee { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
|
|
@@ -329,7 +337,9 @@
|
|
|
329
337
|
border-radius: var(--b-radius-xl);
|
|
330
338
|
transition: translate var(--b-duration-normal) var(--b-ease-out), box-shadow var(--b-duration-normal);
|
|
331
339
|
}
|
|
332
|
-
|
|
340
|
+
@media (hover: hover) {
|
|
341
|
+
.b-resource-card:hover { text-decoration: none; }
|
|
342
|
+
}
|
|
333
343
|
@media (hover: hover) {
|
|
334
344
|
.b-resource-card:hover { translate: 0 -2px; box-shadow: var(--b-elevation-3); }
|
|
335
345
|
}
|
|
@@ -405,7 +415,9 @@
|
|
|
405
415
|
opacity: 0.7;
|
|
406
416
|
transition: opacity var(--b-duration-fast);
|
|
407
417
|
}
|
|
408
|
-
|
|
418
|
+
@media (hover: hover) {
|
|
419
|
+
.b-logo-wall__logo:hover { opacity: 1; }
|
|
420
|
+
}
|
|
409
421
|
.b-logo-wall__logo :is(svg, img) { height: 100%; width: auto; }
|
|
410
422
|
.b-logo-wall__logo img { filter: grayscale(1); }
|
|
411
423
|
|
|
@@ -619,7 +631,9 @@
|
|
|
619
631
|
font-weight: var(--b-weight-semibold);
|
|
620
632
|
align-items: flex-start;
|
|
621
633
|
}
|
|
622
|
-
|
|
634
|
+
@media (hover: hover) {
|
|
635
|
+
.b-accordion--plain > .b-disclosure > summary:hover { background: none; color: var(--b-color-accent-text); }
|
|
636
|
+
}
|
|
623
637
|
.b-accordion--plain > .b-disclosure > summary::after {
|
|
624
638
|
content: "+";
|
|
625
639
|
display: grid;
|
|
@@ -701,7 +715,9 @@
|
|
|
701
715
|
border-radius: var(--b-radius-full);
|
|
702
716
|
transition: background var(--b-duration-fast) var(--b-ease-out), color var(--b-duration-fast) var(--b-ease-out);
|
|
703
717
|
}
|
|
704
|
-
|
|
718
|
+
@media (hover: hover) {
|
|
719
|
+
.b-pill-nav a:hover { background: var(--b-fill-tertiary); color: var(--b-text); }
|
|
720
|
+
}
|
|
705
721
|
.b-pill-nav a.is-active { background: var(--b-text); color: var(--b-bg); }
|
|
706
722
|
|
|
707
723
|
/* ---- Card rail: a row you push sideways ---------------------------------- */
|
|
@@ -783,7 +799,9 @@
|
|
|
783
799
|
color: var(--b-text);
|
|
784
800
|
}
|
|
785
801
|
.b-site-footer__group a:not(.b-btn) { display: block; padding-block: 0.2rem; color: var(--b-text-secondary); text-decoration: none; }
|
|
786
|
-
|
|
802
|
+
@media (hover: hover) {
|
|
803
|
+
.b-site-footer__group a:hover { color: var(--b-text); text-decoration: underline; }
|
|
804
|
+
}
|
|
787
805
|
.b-site-footer__legal {
|
|
788
806
|
max-width: var(--b-container-xl);
|
|
789
807
|
margin: var(--b-space-8) auto 0;
|
package/css/components/media.css
CHANGED
|
@@ -50,7 +50,9 @@
|
|
|
50
50
|
object-fit: cover;
|
|
51
51
|
transition: scale var(--b-duration-normal) var(--b-ease-out);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
@media (hover: hover) {
|
|
54
|
+
.b-gallery :is(a, button):hover img { scale: 1.05; }
|
|
55
|
+
}
|
|
54
56
|
|
|
55
57
|
/* ---- Carousel (scroll-snap) ------------------------------------------------ */
|
|
56
58
|
.b-carousel { position: relative; }
|
|
@@ -179,7 +181,9 @@
|
|
|
179
181
|
color: inherit;
|
|
180
182
|
text-decoration: none;
|
|
181
183
|
}
|
|
182
|
-
|
|
184
|
+
@media (hover: hover) {
|
|
185
|
+
.b-poster:hover { color: inherit; text-decoration: none; }
|
|
186
|
+
}
|
|
183
187
|
.b-poster__frame {
|
|
184
188
|
position: relative;
|
|
185
189
|
display: grid;
|
|
@@ -264,9 +268,10 @@
|
|
|
264
268
|
opacity: 0;
|
|
265
269
|
transition: opacity var(--b-duration-normal);
|
|
266
270
|
}
|
|
267
|
-
.b-video:
|
|
268
|
-
|
|
269
|
-
|
|
271
|
+
.b-video:focus-within .b-video__overlay, .b-video.is-paused .b-video__overlay { opacity: 1; }
|
|
272
|
+
@media (hover: hover) {
|
|
273
|
+
.b-video:hover .b-video__overlay { opacity: 1; }
|
|
274
|
+
}
|
|
270
275
|
.b-video__play {
|
|
271
276
|
display: grid;
|
|
272
277
|
place-items: center;
|
|
@@ -281,7 +286,9 @@
|
|
|
281
286
|
cursor: pointer;
|
|
282
287
|
transition: scale var(--b-duration-fast) var(--b-ease-bounce);
|
|
283
288
|
}
|
|
284
|
-
|
|
289
|
+
@media (hover: hover) {
|
|
290
|
+
.b-video__play:hover { scale: 1.08; }
|
|
291
|
+
}
|
|
285
292
|
|
|
286
293
|
/* ---- Film player controls -------------------------------------------------------
|
|
287
294
|
`.b-media-controls` is the generic bar. A film needs its controls over the
|
|
@@ -303,9 +310,10 @@
|
|
|
303
310
|
opacity: 0;
|
|
304
311
|
transition: opacity var(--b-duration-normal) var(--b-ease-out);
|
|
305
312
|
}
|
|
306
|
-
.b-video:
|
|
307
|
-
|
|
308
|
-
|
|
313
|
+
.b-video:focus-within .b-video__bar, .b-video.is-paused .b-video__bar { opacity: 1; }
|
|
314
|
+
@media (hover: hover) {
|
|
315
|
+
.b-video:hover .b-video__bar { opacity: 1; }
|
|
316
|
+
}
|
|
309
317
|
/* A touch screen has no hover, so the bar would otherwise appear only by
|
|
310
318
|
pausing — which is exactly when someone full screen cannot reach it. */
|
|
311
319
|
@media (hover: none) {
|
|
@@ -327,7 +335,9 @@
|
|
|
327
335
|
cursor: pointer;
|
|
328
336
|
transition: background var(--b-duration-fast) var(--b-ease-out);
|
|
329
337
|
}
|
|
330
|
-
|
|
338
|
+
@media (hover: hover) {
|
|
339
|
+
.b-video__btn:hover { background: rgb(255 255 255 / 0.18); }
|
|
340
|
+
}
|
|
331
341
|
.b-video__btn svg { width: 1.5rem; height: 1.5rem; fill: currentColor; }
|
|
332
342
|
|
|
333
343
|
.b-video__time {
|
|
@@ -362,7 +372,9 @@
|
|
|
362
372
|
color: #fff;
|
|
363
373
|
background: transparent;
|
|
364
374
|
}
|
|
365
|
-
|
|
375
|
+
@media (hover: hover) {
|
|
376
|
+
.b-media-controls .b-icon-btn:hover { background: rgba(255, 255, 255, 0.16); }
|
|
377
|
+
}
|
|
366
378
|
.b-media-controls .b-slider { flex: 1; }
|
|
367
379
|
.b-media-controls__time {
|
|
368
380
|
font-size: var(--b-text-caption);
|
|
@@ -554,7 +566,9 @@
|
|
|
554
566
|
border-radius: 50%;
|
|
555
567
|
cursor: pointer;
|
|
556
568
|
}
|
|
557
|
-
|
|
569
|
+
@media (hover: hover) {
|
|
570
|
+
.b-upload-preview__remove:hover { background: var(--b-color-danger); }
|
|
571
|
+
}
|
|
558
572
|
.b-upload-preview .b-progress {
|
|
559
573
|
position: absolute;
|
|
560
574
|
inset-inline: 0.4rem;
|
|
@@ -94,7 +94,9 @@
|
|
|
94
94
|
cursor: pointer;
|
|
95
95
|
text-align: start;
|
|
96
96
|
}
|
|
97
|
-
|
|
97
|
+
@media (hover: hover) {
|
|
98
|
+
.b-mobile-menu :is(a, button):hover { background: var(--b-fill-tertiary); text-decoration: none; }
|
|
99
|
+
}
|
|
98
100
|
.b-mobile-menu .is-active { color: var(--b-color-accent-text); background: var(--b-color-accent-soft); }
|
|
99
101
|
|
|
100
102
|
/* ---- Mobile Toolbar (bottom action bar) --------------------------------------- */
|
package/css/components/nav.css
CHANGED
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
font-size: var(--b-text-callout);
|
|
43
43
|
color: var(--b-text);
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
@media (hover: hover) {
|
|
46
|
+
.b-topnav__brand:hover { text-decoration: none; }
|
|
47
|
+
}
|
|
46
48
|
.b-topnav__links {
|
|
47
49
|
display: flex;
|
|
48
50
|
align-items: center;
|
|
@@ -62,7 +64,9 @@
|
|
|
62
64
|
border-radius: var(--b-radius-md);
|
|
63
65
|
transition: color var(--b-duration-fast), background var(--b-duration-fast);
|
|
64
66
|
}
|
|
65
|
-
|
|
67
|
+
@media (hover: hover) {
|
|
68
|
+
.b-topnav__link:hover { color: var(--b-text); background: var(--b-fill-tertiary); text-decoration: none; }
|
|
69
|
+
}
|
|
66
70
|
.b-topnav__link.is-active { color: var(--b-color-accent-text); background: var(--b-color-accent-soft); }
|
|
67
71
|
/* Trailing controls keep their size. A button that shrinks below its touch
|
|
68
72
|
target is not a button anyone can press. */
|
|
@@ -138,7 +142,7 @@
|
|
|
138
142
|
display: flex;
|
|
139
143
|
align-items: center;
|
|
140
144
|
gap: var(--b-space-2);
|
|
141
|
-
padding: var(--b-
|
|
145
|
+
padding: var(--b-item-py) var(--b-item-px);
|
|
142
146
|
font-size: var(--b-text-subheadline);
|
|
143
147
|
font-weight: var(--b-weight-medium);
|
|
144
148
|
color: var(--b-text-secondary);
|
|
@@ -146,7 +150,9 @@
|
|
|
146
150
|
cursor: pointer;
|
|
147
151
|
transition: background var(--b-duration-fast), color var(--b-duration-fast);
|
|
148
152
|
}
|
|
149
|
-
|
|
153
|
+
@media (hover: hover) {
|
|
154
|
+
.b-sidebar__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
|
|
155
|
+
}
|
|
150
156
|
.b-sidebar__item.is-active {
|
|
151
157
|
background: var(--b-color-accent-soft);
|
|
152
158
|
color: var(--b-color-accent-text);
|
|
@@ -196,7 +202,9 @@
|
|
|
196
202
|
cursor: pointer;
|
|
197
203
|
}
|
|
198
204
|
.b-rail__item svg { width: 1.35rem; height: 1.35rem; }
|
|
199
|
-
|
|
205
|
+
@media (hover: hover) {
|
|
206
|
+
.b-rail__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
|
|
207
|
+
}
|
|
200
208
|
.b-rail__item.is-active { color: var(--b-color-accent-text); background: var(--b-color-accent-soft); }
|
|
201
209
|
|
|
202
210
|
/* ---- Bottom Navigation / Bottom Tab Bar --------------------------------- */
|
|
@@ -215,6 +223,24 @@
|
|
|
215
223
|
border-top: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
|
|
216
224
|
box-shadow: var(--b-glass-ambient);
|
|
217
225
|
}
|
|
226
|
+
/* Press feedback for the rows a finger taps; the hover fill is for pointers. */
|
|
227
|
+
:is(.b-menu__item, .b-sidebar__item, .b-rail__item, .b-cmdk__item, .b-bottomnav__item, .b-tab):active {
|
|
228
|
+
background: var(--b-fill-secondary);
|
|
229
|
+
transition: none;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* The reserve. A fixed tab bar covers the last 58px of whatever scrolls
|
|
233
|
+
under it, and every page used to hand-write a spacer for it. When a
|
|
234
|
+
bottom nav is on the page, every scroll pane keeps that much clear, and
|
|
235
|
+
a toast or a FAB stands above it. */
|
|
236
|
+
:root:has(.b-bottomnav) { --b-bottomnav-h: 3.75rem; }
|
|
237
|
+
:root:has(.b-bottomnav) :is(.b-scroll-area, .b-workspace__main),
|
|
238
|
+
:root:has(.b-bottomnav) body:not(:has(.b-stage)) {
|
|
239
|
+
padding-block-end: calc(var(--b-bottomnav-h) + env(safe-area-inset-bottom));
|
|
240
|
+
scroll-padding-block-end: var(--b-bottomnav-h);
|
|
241
|
+
}
|
|
242
|
+
/* Tucked away while somebody reads, one row of it left to pull back. */
|
|
243
|
+
.b-bottomnav.is-minimized { translate: 0 calc(100% - var(--b-space-6)); }
|
|
218
244
|
.b-bottomnav::before {
|
|
219
245
|
content: "";
|
|
220
246
|
position: absolute;
|
|
@@ -237,8 +263,12 @@
|
|
|
237
263
|
}
|
|
238
264
|
.b-bottomnav__item svg { width: 1.4rem; height: 1.4rem; }
|
|
239
265
|
.b-bottomnav__item.is-active { color: var(--b-color-accent-text); }
|
|
240
|
-
|
|
241
|
-
|
|
266
|
+
@media (hover: hover) {
|
|
267
|
+
.b-bottomnav__item:hover { text-decoration: none; color: var(--b-text-secondary); }
|
|
268
|
+
}
|
|
269
|
+
@media (hover: hover) {
|
|
270
|
+
.b-bottomnav__item.is-active:hover { color: var(--b-color-accent-text); }
|
|
271
|
+
}
|
|
242
272
|
|
|
243
273
|
/* ---- Tab Bar (segmented, iOS-style) ------------------------------------- */
|
|
244
274
|
.b-segmented {
|
|
@@ -269,7 +299,9 @@
|
|
|
269
299
|
transition: background var(--b-duration-fast), color var(--b-duration-fast),
|
|
270
300
|
box-shadow var(--b-duration-fast);
|
|
271
301
|
}
|
|
272
|
-
|
|
302
|
+
@media (hover: hover) {
|
|
303
|
+
.b-segmented__item:hover { color: var(--b-text); }
|
|
304
|
+
}
|
|
273
305
|
.b-segmented__item.is-active, .b-segmented__item[aria-selected="true"] {
|
|
274
306
|
color: var(--b-text);
|
|
275
307
|
background: light-dark(#ffffff, var(--b-surface-3));
|
|
@@ -298,7 +330,7 @@
|
|
|
298
330
|
.b-tabs::-webkit-scrollbar { display: none; }
|
|
299
331
|
.b-tab {
|
|
300
332
|
position: relative;
|
|
301
|
-
padding: var(--b-
|
|
333
|
+
padding: var(--b-item-py) var(--b-item-px);
|
|
302
334
|
font-size: var(--b-text-subheadline);
|
|
303
335
|
font-weight: var(--b-weight-medium);
|
|
304
336
|
color: var(--b-text-secondary);
|
|
@@ -309,7 +341,9 @@
|
|
|
309
341
|
white-space: nowrap;
|
|
310
342
|
transition: color var(--b-duration-fast);
|
|
311
343
|
}
|
|
312
|
-
|
|
344
|
+
@media (hover: hover) {
|
|
345
|
+
.b-tab:hover { color: var(--b-text); background: var(--b-fill-quaternary); text-decoration: none; }
|
|
346
|
+
}
|
|
313
347
|
.b-tab.is-active, .b-tab[aria-selected="true"] { color: var(--b-color-accent-text); }
|
|
314
348
|
.b-tab.is-active::after, .b-tab[aria-selected="true"]::after {
|
|
315
349
|
content: "";
|
|
@@ -341,8 +375,28 @@
|
|
|
341
375
|
padding-inline: var(--b-space-1);
|
|
342
376
|
}
|
|
343
377
|
.b-breadcrumbs a:not(.b-btn) { color: var(--b-text-secondary); }
|
|
344
|
-
|
|
378
|
+
@media (hover: hover) {
|
|
379
|
+
.b-breadcrumbs a:hover { color: var(--b-text); text-decoration: none; }
|
|
380
|
+
}
|
|
345
381
|
.b-breadcrumbs [aria-current="page"] { color: var(--b-text); font-weight: var(--b-weight-medium); }
|
|
382
|
+
/* A deep path never wraps. --collapse keeps the first crumb and the last
|
|
383
|
+
two and folds the middle into an overflow crumb, which is a .b-dropdown
|
|
384
|
+
listing the hidden ones. Under 768px the CSS does the folding on its
|
|
385
|
+
own; data-b-breadcrumbs measures the row and folds only what does not
|
|
386
|
+
fit at any width. */
|
|
387
|
+
.b-breadcrumbs--collapse { flex-wrap: nowrap; min-width: 0; overflow: hidden; }
|
|
388
|
+
.b-breadcrumbs--collapse li { min-width: 0; flex: none; }
|
|
389
|
+
/* The current page is the last thing to give: it may ellipsise, but not
|
|
390
|
+
below six characters, so the middle folds first. */
|
|
391
|
+
.b-breadcrumbs--collapse li:last-child { flex: 0 1 auto; min-width: 6ch; }
|
|
392
|
+
.b-breadcrumbs--collapse li > a,
|
|
393
|
+
.b-breadcrumbs--collapse [aria-current="page"] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
394
|
+
.b-breadcrumbs--collapse li.is-collapsed { display: none; }
|
|
395
|
+
.b-breadcrumbs__overflow { position: relative; }
|
|
396
|
+
.b-breadcrumbs__overflow > .b-dropdown > summary { display: inline-flex; }
|
|
397
|
+
@media (max-width: 767px) {
|
|
398
|
+
.b-breadcrumbs--collapse:not([data-b-breadcrumbs-armed]) li:not(:first-child):not(.b-breadcrumbs__overflow):not(:nth-last-child(-n+2)) { display: none; }
|
|
399
|
+
}
|
|
346
400
|
|
|
347
401
|
/* ---- Pagination ----------------------------------------------------------- */
|
|
348
402
|
.b-pagination {
|
|
@@ -369,7 +423,9 @@
|
|
|
369
423
|
background: none;
|
|
370
424
|
cursor: pointer;
|
|
371
425
|
}
|
|
372
|
-
|
|
426
|
+
@media (hover: hover) {
|
|
427
|
+
.b-pagination__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
|
|
428
|
+
}
|
|
373
429
|
.b-pagination__item.is-active, .b-pagination__item[aria-current="page"] {
|
|
374
430
|
color: var(--b-color-on-accent);
|
|
375
431
|
background: var(--b-color-accent-fill);
|
|
@@ -451,11 +507,16 @@
|
|
|
451
507
|
cursor: pointer;
|
|
452
508
|
color: var(--b-text);
|
|
453
509
|
}
|
|
454
|
-
.b-menubar__item
|
|
455
|
-
.b-menubar__item[aria-expanded="true"] {
|
|
510
|
+
.b-menubar__item.is-active, .b-menubar__item[aria-expanded="true"] {
|
|
456
511
|
background: var(--b-color-accent-fill);
|
|
457
512
|
color: var(--b-color-on-accent);
|
|
458
513
|
}
|
|
514
|
+
@media (hover: hover) {
|
|
515
|
+
.b-menubar__item:hover {
|
|
516
|
+
background: var(--b-color-accent-fill);
|
|
517
|
+
color: var(--b-color-on-accent);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
459
520
|
|
|
460
521
|
/* ---- Menu (dropdown / context / action) ------------------------------------
|
|
461
522
|
Works with [popover] or .b-menu inside a positioned wrapper.
|
|
@@ -497,7 +558,7 @@
|
|
|
497
558
|
align-items: center;
|
|
498
559
|
gap: var(--b-space-2);
|
|
499
560
|
width: 100%;
|
|
500
|
-
padding: var(--b-
|
|
561
|
+
padding: var(--b-item-py) var(--b-item-px);
|
|
501
562
|
font-size: var(--b-text-subheadline);
|
|
502
563
|
text-align: start;
|
|
503
564
|
color: var(--b-text);
|
|
@@ -507,19 +568,30 @@
|
|
|
507
568
|
cursor: pointer;
|
|
508
569
|
white-space: nowrap;
|
|
509
570
|
}
|
|
510
|
-
.b-menu__item
|
|
571
|
+
.b-menu__item.is-active {
|
|
511
572
|
background: var(--b-color-accent-fill);
|
|
512
573
|
color: var(--b-color-on-accent);
|
|
513
574
|
text-decoration: none;
|
|
514
575
|
}
|
|
515
|
-
|
|
576
|
+
@media (hover: hover) {
|
|
577
|
+
.b-menu__item:hover {
|
|
578
|
+
background: var(--b-color-accent-fill);
|
|
579
|
+
color: var(--b-color-on-accent);
|
|
580
|
+
text-decoration: none;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
@media (hover: hover) {
|
|
584
|
+
.b-menu__item:hover .b-menu__shortcut { color: rgba(255, 255, 255, 0.75); }
|
|
585
|
+
}
|
|
516
586
|
.b-menu__item.is-disabled, .b-menu__item:disabled {
|
|
517
587
|
color: var(--b-text-tertiary);
|
|
518
588
|
background: none;
|
|
519
589
|
cursor: not-allowed;
|
|
520
590
|
}
|
|
521
591
|
.b-menu__item--danger { color: var(--b-color-danger-text); }
|
|
522
|
-
|
|
592
|
+
@media (hover: hover) {
|
|
593
|
+
.b-menu__item--danger:hover { background: var(--b-color-danger-fill); color: var(--b-color-on-danger); }
|
|
594
|
+
}
|
|
523
595
|
.b-menu__item svg { width: 1rem; height: 1rem; flex: none; opacity: 0.85; }
|
|
524
596
|
.b-menu__shortcut {
|
|
525
597
|
margin-inline-start: auto;
|
|
@@ -542,9 +614,13 @@
|
|
|
542
614
|
display: none;
|
|
543
615
|
z-index: 1;
|
|
544
616
|
}
|
|
545
|
-
.b-menu__sub:hover > .b-menu,
|
|
546
617
|
.b-menu__sub:focus-within > .b-menu { display: block; }
|
|
547
|
-
|
|
618
|
+
@media (hover: hover) {
|
|
619
|
+
.b-menu__sub:hover > .b-menu { display: block; }
|
|
620
|
+
}
|
|
621
|
+
@media (hover: hover) {
|
|
622
|
+
.b-menu__sub:hover > .b-menu__item { background: var(--b-color-accent-fill); color: var(--b-color-on-accent); }
|
|
623
|
+
}
|
|
548
624
|
|
|
549
625
|
.b-menu__separator {
|
|
550
626
|
height: 1px;
|
|
@@ -643,7 +719,7 @@
|
|
|
643
719
|
align-items: center;
|
|
644
720
|
gap: var(--b-space-3);
|
|
645
721
|
width: 100%;
|
|
646
|
-
padding: var(--b-
|
|
722
|
+
padding: var(--b-item-py) var(--b-item-px);
|
|
647
723
|
font-size: var(--b-text-subheadline);
|
|
648
724
|
text-align: start;
|
|
649
725
|
color: var(--b-text);
|
|
@@ -652,7 +728,9 @@
|
|
|
652
728
|
border-radius: var(--b-radius-md);
|
|
653
729
|
cursor: pointer;
|
|
654
730
|
}
|
|
655
|
-
|
|
731
|
+
@media (hover: hover) {
|
|
732
|
+
.b-cmdk__item:hover { background: var(--b-fill-quaternary); }
|
|
733
|
+
}
|
|
656
734
|
.b-cmdk__item.is-active { background: var(--b-color-accent-soft); color: var(--b-color-accent-text); }
|
|
657
735
|
.b-cmdk__item svg { width: 1.1rem; height: 1.1rem; opacity: 0.8; }
|
|
658
736
|
.b-cmdk__item kbd { margin-inline-start: auto; }
|
|
@@ -95,7 +95,9 @@
|
|
|
95
95
|
cursor: pointer;
|
|
96
96
|
transition: background var(--b-duration-fast);
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
@media (hover: hover) {
|
|
99
|
+
.b-modal__close:hover { background: var(--b-fill-secondary); color: var(--b-text); }
|
|
100
|
+
}
|
|
99
101
|
|
|
100
102
|
/* ---- Alert Dialog (centered, compact) --------------------------------------- */
|
|
101
103
|
/* Composed onto .b-modal like .b-cmdk; explicit so a reorder cannot break it. */
|
|
@@ -124,7 +126,9 @@
|
|
|
124
126
|
border: none;
|
|
125
127
|
cursor: pointer;
|
|
126
128
|
}
|
|
127
|
-
|
|
129
|
+
@media (hover: hover) {
|
|
130
|
+
.b-alert-dialog__actions button:hover { background: var(--b-fill-quaternary); }
|
|
131
|
+
}
|
|
128
132
|
.b-alert-dialog__actions button + button { border-top: 1px solid var(--b-separator); }
|
|
129
133
|
.b-alert-dialog__actions .is-destructive { color: var(--b-color-danger-text); }
|
|
130
134
|
.b-alert-dialog__actions .is-primary { font-weight: var(--b-weight-semibold); }
|
|
@@ -305,8 +309,11 @@
|
|
|
305
309
|
cursor: pointer;
|
|
306
310
|
}
|
|
307
311
|
.b-action-sheet__group button:first-child { border-top: none; }
|
|
308
|
-
|
|
312
|
+
@media (hover: hover) {
|
|
313
|
+
.b-action-sheet__group button:hover { background: var(--b-fill-quaternary); }
|
|
314
|
+
}
|
|
309
315
|
.b-action-sheet__group button.is-destructive { color: var(--b-color-danger-text); }
|
|
316
|
+
.b-action-sheet__group button:active { background: var(--b-fill-secondary); transition: none; }
|
|
310
317
|
.b-action-sheet__cancel {
|
|
311
318
|
margin-block-start: var(--b-space-2);
|
|
312
319
|
font-weight: var(--b-weight-semibold);
|
|
@@ -451,18 +458,26 @@
|
|
|
451
458
|
transition: opacity var(--b-duration-fast) var(--b-ease-out),
|
|
452
459
|
translate var(--b-duration-fast) var(--b-ease-out);
|
|
453
460
|
}
|
|
454
|
-
.b-tooltip-host:hover::after,
|
|
455
461
|
.b-tooltip-host:focus-visible::after {
|
|
456
462
|
opacity: 1;
|
|
457
463
|
translate: -50% 0;
|
|
458
464
|
transition-delay: 350ms;
|
|
459
465
|
}
|
|
466
|
+
@media (hover: hover) {
|
|
467
|
+
.b-tooltip-host:hover::after {
|
|
468
|
+
opacity: 1;
|
|
469
|
+
translate: -50% 0;
|
|
470
|
+
transition-delay: 350ms;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
460
473
|
.b-tooltip-host--bottom::after {
|
|
461
474
|
inset-block-end: auto;
|
|
462
475
|
inset-block-start: calc(100% + var(--b-space-2));
|
|
463
476
|
translate: -50% -4px;
|
|
464
477
|
}
|
|
465
|
-
|
|
478
|
+
@media (hover: hover) {
|
|
479
|
+
.b-tooltip-host--bottom:hover::after { translate: -50% 0; }
|
|
480
|
+
}
|
|
466
481
|
|
|
467
482
|
/* ---- Hover Card ----------------------------------------------------------------------- */
|
|
468
483
|
.b-hover-card-host { position: relative; display: inline-block; }
|
|
@@ -495,13 +510,20 @@
|
|
|
495
510
|
box-shadow: var(--b-glass-edge);
|
|
496
511
|
pointer-events: none;
|
|
497
512
|
}
|
|
498
|
-
.b-hover-card-host:hover .b-hover-card,
|
|
499
513
|
.b-hover-card-host:focus-within .b-hover-card {
|
|
500
514
|
opacity: 1;
|
|
501
515
|
translate: 0 0;
|
|
502
516
|
visibility: visible;
|
|
503
517
|
transition-delay: 250ms;
|
|
504
518
|
}
|
|
519
|
+
@media (hover: hover) {
|
|
520
|
+
.b-hover-card-host:hover .b-hover-card {
|
|
521
|
+
opacity: 1;
|
|
522
|
+
translate: 0 0;
|
|
523
|
+
visibility: visible;
|
|
524
|
+
transition-delay: 250ms;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
505
527
|
|
|
506
528
|
/* ---- Lightbox --------------------------------------------------------------------------- */
|
|
507
529
|
.b-lightbox {
|
|
@@ -156,7 +156,9 @@
|
|
|
156
156
|
cursor: grab;
|
|
157
157
|
transition: box-shadow var(--b-duration-fast), translate var(--b-duration-fast) var(--b-ease-out);
|
|
158
158
|
}
|
|
159
|
-
|
|
159
|
+
@media (hover: hover) {
|
|
160
|
+
.b-task:hover { box-shadow: var(--b-shadow-sm); translate: 0 -1px; }
|
|
161
|
+
}
|
|
160
162
|
.b-task.is-dragging { opacity: 0.55; rotate: 2deg; cursor: grabbing; }
|
|
161
163
|
.b-task__title { font-size: var(--b-text-footnote); font-weight: var(--b-weight-medium); }
|
|
162
164
|
.b-task__meta {
|
|
@@ -177,7 +179,9 @@
|
|
|
177
179
|
border-radius: var(--b-radius-md);
|
|
178
180
|
font-size: var(--b-text-subheadline);
|
|
179
181
|
}
|
|
180
|
-
|
|
182
|
+
@media (hover: hover) {
|
|
183
|
+
.b-task-row:hover { background: var(--b-fill-quaternary); }
|
|
184
|
+
}
|
|
181
185
|
.b-task-row.is-done .b-task-row__title {
|
|
182
186
|
color: var(--b-text-tertiary);
|
|
183
187
|
text-decoration: line-through;
|
|
@@ -294,7 +298,9 @@
|
|
|
294
298
|
cursor: pointer;
|
|
295
299
|
transition: filter var(--b-duration-fast);
|
|
296
300
|
}
|
|
297
|
-
|
|
301
|
+
@media (hover: hover) {
|
|
302
|
+
.b-gantt__bar:hover { filter: brightness(1.1); }
|
|
303
|
+
}
|
|
298
304
|
.b-gantt__bar > i {
|
|
299
305
|
position: absolute;
|
|
300
306
|
inset: 0;
|
|
@@ -384,7 +390,9 @@
|
|
|
384
390
|
color: var(--b-text);
|
|
385
391
|
cursor: pointer;
|
|
386
392
|
}
|
|
387
|
-
|
|
393
|
+
@media (hover: hover) {
|
|
394
|
+
.b-app-tile:hover { text-decoration: none; }
|
|
395
|
+
}
|
|
388
396
|
.b-app-tile__icon {
|
|
389
397
|
display: grid;
|
|
390
398
|
place-items: center;
|
|
@@ -396,7 +404,9 @@
|
|
|
396
404
|
box-shadow: var(--b-glass-edge), var(--b-shadow-sm);
|
|
397
405
|
transition: scale var(--b-duration-fast) var(--b-ease-bounce);
|
|
398
406
|
}
|
|
399
|
-
|
|
407
|
+
@media (hover: hover) {
|
|
408
|
+
.b-app-tile:hover .b-app-tile__icon { scale: 1.06; }
|
|
409
|
+
}
|
|
400
410
|
.b-app-tile:active .b-app-tile__icon { scale: 0.94; }
|
|
401
411
|
.b-app-tile__label {
|
|
402
412
|
font-size: var(--b-text-caption);
|
|
@@ -447,7 +457,9 @@
|
|
|
447
457
|
transition: scale var(--b-duration-fast) var(--b-ease-bounce),
|
|
448
458
|
translate var(--b-duration-fast) var(--b-ease-bounce);
|
|
449
459
|
}
|
|
450
|
-
|
|
460
|
+
@media (hover: hover) {
|
|
461
|
+
.b-dock__item:hover { scale: 1.28; translate: 0 -6px; }
|
|
462
|
+
}
|
|
451
463
|
.b-dock__item.is-active { position: relative; }
|
|
452
464
|
.b-dock__item.is-active::after {
|
|
453
465
|
content: "";
|
|
@@ -533,7 +545,9 @@
|
|
|
533
545
|
padding: var(--b-space-1);
|
|
534
546
|
border-radius: var(--b-radius-xs);
|
|
535
547
|
}
|
|
536
|
-
|
|
548
|
+
@media (hover: hover) {
|
|
549
|
+
.b-drag-handle:hover { color: var(--b-text-secondary); background: var(--b-fill-quaternary); }
|
|
550
|
+
}
|
|
537
551
|
.b-drag-handle:active { cursor: grabbing; }
|
|
538
552
|
.b-drag-ghost { opacity: 0.5; }
|
|
539
553
|
.b-drop-indicator {
|