barua-ui 0.2.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.
@@ -0,0 +1,682 @@
1
+ /* ==========================================================================
2
+ Barua UI — Navigation
3
+ Top Navigation, Sidebar, Navigation Rail, Bottom Navigation, Tab Bar,
4
+ Tabs, Breadcrumbs, Pagination, Stepper, Menu Bar, Menus (context /
5
+ dropdown / command), Navigation Drawer.
6
+ ========================================================================== */
7
+
8
+ @layer components {
9
+ /* ---- Top Navigation ----------------------------------------------------- */
10
+ .b-topnav {
11
+ position: sticky;
12
+ top: 0;
13
+ z-index: var(--b-z-topbar);
14
+ display: flex;
15
+ align-items: center;
16
+ gap: var(--b-space-4);
17
+ height: var(--b-topbar-h);
18
+ padding-inline: var(--b-space-4);
19
+ background: var(--b-material-chrome-bg);
20
+ -webkit-backdrop-filter: var(--b-glass);
21
+ backdrop-filter: var(--b-glass);
22
+ border-bottom: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
23
+ box-shadow: var(--b-glass-ambient);
24
+ }
25
+ .b-topnav::before {
26
+ content: "";
27
+ position: absolute;
28
+ inset: 0;
29
+ border-radius: inherit;
30
+ box-shadow: var(--b-glass-edge);
31
+ pointer-events: none;
32
+ }
33
+ .b-topnav__brand {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: var(--b-space-2);
37
+ font-weight: var(--b-weight-bold);
38
+ font-size: var(--b-text-callout);
39
+ color: var(--b-text);
40
+ }
41
+ .b-topnav__brand:hover { text-decoration: none; }
42
+ .b-topnav__links {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: var(--b-space-1);
46
+ }
47
+ .b-topnav__link {
48
+ padding: var(--b-space-1) var(--b-space-3);
49
+ font-size: var(--b-text-subheadline);
50
+ font-weight: var(--b-weight-medium);
51
+ color: var(--b-text-secondary);
52
+ border-radius: var(--b-radius-md);
53
+ transition: color var(--b-duration-fast), background var(--b-duration-fast);
54
+ }
55
+ .b-topnav__link:hover { color: var(--b-text); background: var(--b-fill-tertiary); text-decoration: none; }
56
+ .b-topnav__link.is-active { color: var(--b-color-accent-text); background: var(--b-color-accent-soft); }
57
+
58
+ /* ---- Sidebar ------------------------------------------------------------ */
59
+ .b-sidebar {
60
+ display: flex;
61
+ flex-direction: column;
62
+ gap: var(--b-space-1);
63
+ width: var(--b-sidebar-w);
64
+ padding: var(--b-space-3);
65
+ overflow-y: auto;
66
+ }
67
+ .b-sidebar--surface {
68
+ background: var(--b-surface);
69
+ border-inline-end: 1px solid var(--b-separator);
70
+ }
71
+ .b-sidebar--glass {
72
+ position: relative;
73
+ background: var(--b-material-regular-bg);
74
+ -webkit-backdrop-filter: var(--b-glass);
75
+ backdrop-filter: var(--b-glass);
76
+ border-inline-end: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
77
+ box-shadow: var(--b-glass-ambient);
78
+ overflow: hidden;
79
+ }
80
+ .b-sidebar--glass::before {
81
+ content: "";
82
+ position: absolute;
83
+ inset: 0;
84
+ border-radius: inherit;
85
+ box-shadow: var(--b-glass-edge);
86
+ pointer-events: none;
87
+ }
88
+ .b-sidebar__group { margin-block-start: var(--b-space-4); }
89
+ .b-sidebar__group:first-child { margin-block-start: 0; }
90
+ .b-sidebar__heading {
91
+ padding: var(--b-space-1) var(--b-space-3);
92
+ font-size: var(--b-text-caption);
93
+ font-weight: var(--b-weight-semibold);
94
+ text-transform: uppercase;
95
+ letter-spacing: var(--b-tracking-wide);
96
+ color: var(--b-text-tertiary);
97
+ }
98
+ .b-sidebar__item {
99
+ display: flex;
100
+ align-items: center;
101
+ gap: var(--b-space-2);
102
+ padding: var(--b-space-2) var(--b-space-3);
103
+ font-size: var(--b-text-subheadline);
104
+ font-weight: var(--b-weight-medium);
105
+ color: var(--b-text-secondary);
106
+ border-radius: var(--b-radius-md);
107
+ cursor: pointer;
108
+ transition: background var(--b-duration-fast), color var(--b-duration-fast);
109
+ }
110
+ .b-sidebar__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
111
+ .b-sidebar__item.is-active {
112
+ background: var(--b-color-accent-soft);
113
+ color: var(--b-color-accent-text);
114
+ }
115
+ .b-sidebar__item svg { width: 1.1rem; height: 1.1rem; flex: none; opacity: 0.85; }
116
+ .b-sidebar__item .b-badge { margin-inline-start: auto; }
117
+
118
+ /* ---- Navigation Rail ---------------------------------------------------- */
119
+ .b-rail {
120
+ display: flex;
121
+ flex-direction: column;
122
+ align-items: center;
123
+ gap: var(--b-space-2);
124
+ width: var(--b-rail-w);
125
+ padding-block: var(--b-space-3);
126
+ background: var(--b-surface);
127
+ border-inline-end: 1px solid var(--b-separator);
128
+ }
129
+ .b-rail--glass {
130
+ position: relative;
131
+ background: var(--b-material-regular-bg);
132
+ -webkit-backdrop-filter: var(--b-glass);
133
+ backdrop-filter: var(--b-glass);
134
+ border-inline-end: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
135
+ box-shadow: var(--b-glass-ambient);
136
+ overflow: hidden;
137
+ }
138
+ .b-rail--glass::before {
139
+ content: "";
140
+ position: absolute;
141
+ inset: 0;
142
+ border-radius: inherit;
143
+ box-shadow: var(--b-glass-edge);
144
+ pointer-events: none;
145
+ }
146
+ .b-rail__item {
147
+ display: flex;
148
+ flex-direction: column;
149
+ align-items: center;
150
+ gap: 2px;
151
+ width: calc(var(--b-rail-w) - var(--b-space-3));
152
+ padding-block: var(--b-space-2);
153
+ font-size: var(--b-text-caption2);
154
+ font-weight: var(--b-weight-medium);
155
+ color: var(--b-text-secondary);
156
+ border-radius: var(--b-radius-md);
157
+ cursor: pointer;
158
+ }
159
+ .b-rail__item svg { width: 1.35rem; height: 1.35rem; }
160
+ .b-rail__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
161
+ .b-rail__item.is-active { color: var(--b-color-accent-text); background: var(--b-color-accent-soft); }
162
+
163
+ /* ---- Bottom Navigation / Bottom Tab Bar --------------------------------- */
164
+ .b-bottomnav {
165
+ position: fixed;
166
+ inset-inline: 0;
167
+ inset-block-end: 0;
168
+ z-index: var(--b-z-topbar);
169
+ display: flex;
170
+ justify-content: space-around;
171
+ padding-block: var(--b-space-1);
172
+ padding-bottom: max(var(--b-space-1), env(safe-area-inset-bottom));
173
+ background: var(--b-material-chrome-bg);
174
+ -webkit-backdrop-filter: var(--b-glass);
175
+ backdrop-filter: var(--b-glass);
176
+ border-top: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
177
+ box-shadow: var(--b-glass-ambient);
178
+ }
179
+ .b-bottomnav::before {
180
+ content: "";
181
+ position: absolute;
182
+ inset: 0;
183
+ border-radius: inherit;
184
+ box-shadow: var(--b-glass-edge);
185
+ pointer-events: none;
186
+ }
187
+ .b-bottomnav__item {
188
+ display: flex;
189
+ flex-direction: column;
190
+ align-items: center;
191
+ gap: 2px;
192
+ min-width: 4rem;
193
+ padding: var(--b-space-1);
194
+ font-size: var(--b-text-caption2);
195
+ font-weight: var(--b-weight-medium);
196
+ color: var(--b-text-tertiary);
197
+ border-radius: var(--b-radius-md);
198
+ }
199
+ .b-bottomnav__item svg { width: 1.4rem; height: 1.4rem; }
200
+ .b-bottomnav__item.is-active { color: var(--b-color-accent-text); }
201
+ .b-bottomnav__item:hover { text-decoration: none; color: var(--b-text-secondary); }
202
+ .b-bottomnav__item.is-active:hover { color: var(--b-color-accent-text); }
203
+
204
+ /* ---- Tab Bar (segmented, iOS-style) ------------------------------------- */
205
+ .b-segmented {
206
+ display: inline-flex;
207
+ padding: 2px;
208
+ gap: 2px;
209
+ background: var(--b-fill-tertiary);
210
+ border-radius: var(--b-radius-md);
211
+ position: relative;
212
+ }
213
+ .b-segmented--glass {
214
+ background: var(--b-material-thin-bg);
215
+ -webkit-backdrop-filter: var(--b-glass);
216
+ backdrop-filter: var(--b-glass);
217
+ border: 1px solid light-dark(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.04));
218
+ box-shadow: var(--b-glass-ambient);
219
+ }
220
+ .b-segmented__item {
221
+ padding: calc(var(--b-space-1) + 1px) var(--b-space-4);
222
+ font-size: var(--b-text-footnote);
223
+ font-weight: var(--b-weight-medium);
224
+ color: var(--b-text-secondary);
225
+ background: none;
226
+ border: none;
227
+ border-radius: calc(var(--b-radius-md) - 2px);
228
+ cursor: pointer;
229
+ transition: background var(--b-duration-fast), color var(--b-duration-fast),
230
+ box-shadow var(--b-duration-fast);
231
+ }
232
+ .b-segmented__item:hover { color: var(--b-text); }
233
+ .b-segmented__item.is-active, .b-segmented__item[aria-selected="true"] {
234
+ color: var(--b-text);
235
+ background: light-dark(#ffffff, var(--b-surface-3));
236
+ box-shadow: var(--b-shadow-xs), 0 0 0 0.5px var(--b-hairline);
237
+ font-weight: var(--b-weight-semibold);
238
+ }
239
+ /* Glass segmented — active item uses Liquid Glass */
240
+ .b-segmented--glass .b-segmented__item.is-active,
241
+ .b-segmented--glass .b-segmented__item[aria-selected="true"] {
242
+ background: var(--b-material-regular-bg);
243
+ -webkit-backdrop-filter: var(--b-glass);
244
+ backdrop-filter: var(--b-glass);
245
+ box-shadow: var(--b-glass-edge), var(--b-shadow-xs);
246
+ }
247
+ .b-segmented--block { display: flex; }
248
+ .b-segmented--block .b-segmented__item { flex: 1; }
249
+
250
+ /* ---- Tabs (underline) ---------------------------------------------------- */
251
+ .b-tabs {
252
+ display: flex;
253
+ gap: var(--b-space-1);
254
+ border-bottom: 1px solid var(--b-separator);
255
+ overflow-x: auto;
256
+ scrollbar-width: none;
257
+ }
258
+ .b-tabs::-webkit-scrollbar { display: none; }
259
+ .b-tab {
260
+ position: relative;
261
+ padding: var(--b-space-2) var(--b-space-3);
262
+ font-size: var(--b-text-subheadline);
263
+ font-weight: var(--b-weight-medium);
264
+ color: var(--b-text-secondary);
265
+ background: none;
266
+ border: none;
267
+ border-radius: var(--b-radius-sm) var(--b-radius-sm) 0 0;
268
+ cursor: pointer;
269
+ white-space: nowrap;
270
+ transition: color var(--b-duration-fast);
271
+ }
272
+ .b-tab:hover { color: var(--b-text); background: var(--b-fill-quaternary); text-decoration: none; }
273
+ .b-tab.is-active, .b-tab[aria-selected="true"] { color: var(--b-color-accent-text); }
274
+ .b-tab.is-active::after, .b-tab[aria-selected="true"]::after {
275
+ content: "";
276
+ position: absolute;
277
+ inset-inline: var(--b-space-2);
278
+ inset-block-end: -1px;
279
+ height: 2px;
280
+ border-radius: var(--b-radius-full);
281
+ background: var(--b-color-accent);
282
+ }
283
+ .b-tabpanel { padding-block: var(--b-space-4); }
284
+ .b-tabpanel[hidden] { display: none; }
285
+
286
+ /* ---- Breadcrumbs --------------------------------------------------------- */
287
+ .b-breadcrumbs {
288
+ display: flex;
289
+ align-items: center;
290
+ flex-wrap: wrap;
291
+ gap: var(--b-space-1);
292
+ font-size: var(--b-text-footnote);
293
+ list-style: none;
294
+ padding: 0;
295
+ margin: 0;
296
+ }
297
+ .b-breadcrumbs li { display: flex; align-items: center; gap: var(--b-space-1); }
298
+ .b-breadcrumbs li + li::before {
299
+ content: "›";
300
+ color: var(--b-text-quaternary);
301
+ padding-inline: var(--b-space-1);
302
+ }
303
+ .b-breadcrumbs a { color: var(--b-text-secondary); }
304
+ .b-breadcrumbs a:hover { color: var(--b-text); text-decoration: none; }
305
+ .b-breadcrumbs [aria-current="page"] { color: var(--b-text); font-weight: var(--b-weight-medium); }
306
+
307
+ /* ---- Pagination ----------------------------------------------------------- */
308
+ .b-pagination {
309
+ display: flex;
310
+ align-items: center;
311
+ gap: var(--b-space-1);
312
+ list-style: none;
313
+ padding: 0;
314
+ margin: 0;
315
+ }
316
+ .b-pagination__item {
317
+ display: inline-flex;
318
+ align-items: center;
319
+ justify-content: center;
320
+ min-width: var(--b-control-h-sm);
321
+ height: var(--b-control-h-sm);
322
+ padding-inline: var(--b-space-2);
323
+ font-size: var(--b-text-footnote);
324
+ font-weight: var(--b-weight-medium);
325
+ font-variant-numeric: tabular-nums;
326
+ color: var(--b-text-secondary);
327
+ border-radius: var(--b-radius-sm);
328
+ border: none;
329
+ background: none;
330
+ cursor: pointer;
331
+ }
332
+ .b-pagination__item:hover { background: var(--b-fill-tertiary); color: var(--b-text); text-decoration: none; }
333
+ .b-pagination__item.is-active, .b-pagination__item[aria-current="page"] {
334
+ color: var(--b-color-on-accent);
335
+ background: var(--b-color-accent);
336
+ }
337
+ .b-pagination__ellipsis { color: var(--b-text-quaternary); padding-inline: var(--b-space-1); }
338
+
339
+ /* ---- Stepper (progress steps) --------------------------------------------- */
340
+ .b-steps {
341
+ display: flex;
342
+ list-style: none;
343
+ padding: 0;
344
+ margin: 0;
345
+ }
346
+ .b-steps li {
347
+ flex: 1;
348
+ display: flex;
349
+ flex-direction: column;
350
+ align-items: center;
351
+ gap: var(--b-space-2);
352
+ position: relative;
353
+ font-size: var(--b-text-footnote);
354
+ color: var(--b-text-tertiary);
355
+ text-align: center;
356
+ }
357
+ .b-steps li::before {
358
+ counter-increment: b-step;
359
+ content: attr(data-step);
360
+ display: grid;
361
+ place-items: center;
362
+ width: 1.75rem; height: 1.75rem;
363
+ font-weight: var(--b-weight-semibold);
364
+ font-size: var(--b-text-caption);
365
+ color: var(--b-text-secondary);
366
+ background: var(--b-fill-tertiary);
367
+ border-radius: 50%;
368
+ z-index: 1;
369
+ }
370
+ .b-steps li:not(:last-child)::after {
371
+ content: "";
372
+ position: absolute;
373
+ top: 0.875rem;
374
+ inset-inline-start: calc(50% + 1.2rem);
375
+ inset-inline-end: calc(-50% + 1.2rem);
376
+ height: 2px;
377
+ background: var(--b-separator);
378
+ border-radius: var(--b-radius-full);
379
+ }
380
+ .b-steps li.is-complete { color: var(--b-text-secondary); }
381
+ .b-steps li.is-complete::before {
382
+ content: "✓";
383
+ color: var(--b-color-on-accent);
384
+ background: var(--b-color-accent);
385
+ }
386
+ .b-steps li.is-complete:not(:last-child)::after { background: var(--b-color-accent); }
387
+ .b-steps li.is-active { color: var(--b-text); font-weight: var(--b-weight-semibold); }
388
+ .b-steps li.is-active::before {
389
+ color: var(--b-color-accent-text);
390
+ background: var(--b-color-accent-soft);
391
+ box-shadow: inset 0 0 0 1.5px var(--b-color-accent);
392
+ }
393
+
394
+ /* ---- Menu Bar (desktop app style) ----------------------------------------- */
395
+ .b-menubar {
396
+ display: flex;
397
+ align-items: center;
398
+ gap: 2px;
399
+ padding: var(--b-space-1);
400
+ background: var(--b-surface);
401
+ border: 1px solid var(--b-separator);
402
+ border-radius: var(--b-radius-md);
403
+ }
404
+ .b-menubar__item {
405
+ padding: var(--b-space-1) var(--b-space-3);
406
+ font-size: var(--b-text-footnote);
407
+ font-weight: var(--b-weight-medium);
408
+ border: none;
409
+ background: none;
410
+ border-radius: var(--b-radius-sm);
411
+ cursor: pointer;
412
+ color: var(--b-text);
413
+ }
414
+ .b-menubar__item:hover, .b-menubar__item.is-active,
415
+ .b-menubar__item[aria-expanded="true"] {
416
+ background: var(--b-color-accent);
417
+ color: var(--b-color-on-accent);
418
+ }
419
+
420
+ /* ---- Menu (dropdown / context / action) ------------------------------------
421
+ Works with [popover] or .b-menu inside a positioned wrapper.
422
+ ------------------------------------------------------------------------------ */
423
+ .b-menu {
424
+ min-width: 13rem;
425
+ max-width: calc(100vw - 1rem);
426
+ padding: var(--b-space-1);
427
+ margin: 0;
428
+ list-style: none;
429
+ user-select: none;
430
+ background: color-mix(in srgb, var(--b-elevated) 94%, transparent);
431
+ -webkit-backdrop-filter: blur(var(--b-blur-lg)) saturate(1.4);
432
+ backdrop-filter: blur(var(--b-blur-lg)) saturate(1.4);
433
+ border: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
434
+ border-radius: var(--b-radius-lg);
435
+ box-shadow: var(--b-glass-shadow);
436
+ position: relative;
437
+ overflow: hidden;
438
+ }
439
+ .b-menu::before {
440
+ content: "";
441
+ position: absolute;
442
+ inset: 0;
443
+ border-radius: inherit;
444
+ box-shadow: var(--b-glass-edge);
445
+ pointer-events: none;
446
+ }
447
+ /* Popover menus open dead-center (native popover centering). Add
448
+ .b-menu--anchored when JS/anchor positioning places it yourself. */
449
+ .b-menu[popover] {
450
+ position: fixed;
451
+ overflow: visible;
452
+ }
453
+ .b-menu--anchored[popover] { inset: auto; margin: 0; }
454
+ .b-menu[popover]:popover-open { animation: b-menu-in var(--b-duration-fast) var(--b-ease-out); }
455
+ .b-menu__item {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: var(--b-space-2);
459
+ width: 100%;
460
+ padding: var(--b-space-2) var(--b-space-3);
461
+ font-size: var(--b-text-subheadline);
462
+ text-align: start;
463
+ color: var(--b-text);
464
+ background: none;
465
+ border: none;
466
+ border-radius: var(--b-radius-sm);
467
+ cursor: pointer;
468
+ white-space: nowrap;
469
+ }
470
+ .b-menu__item:hover, .b-menu__item.is-active {
471
+ background: var(--b-color-accent);
472
+ color: var(--b-color-on-accent);
473
+ text-decoration: none;
474
+ }
475
+ .b-menu__item:hover .b-menu__shortcut { color: rgba(255, 255, 255, 0.75); }
476
+ .b-menu__item.is-disabled, .b-menu__item:disabled {
477
+ color: var(--b-text-tertiary);
478
+ background: none;
479
+ cursor: not-allowed;
480
+ }
481
+ .b-menu__item--danger { color: var(--b-color-danger); }
482
+ .b-menu__item--danger:hover { background: var(--b-color-danger); color: #fff; }
483
+ .b-menu__item svg { width: 1rem; height: 1rem; flex: none; opacity: 0.85; }
484
+ .b-menu__shortcut {
485
+ margin-inline-start: auto;
486
+ font-size: var(--b-text-caption);
487
+ color: var(--b-text-tertiary);
488
+ padding-inline-start: var(--b-space-4);
489
+ }
490
+ /* Submenu flyout — <li class="b-menu__sub"> wraps an item + nested menu */
491
+ .b-menu__sub { position: relative; }
492
+ .b-menu__sub > .b-menu__item::after {
493
+ content: "›";
494
+ margin-inline-start: auto;
495
+ padding-inline-start: var(--b-space-4);
496
+ color: var(--b-text-tertiary);
497
+ }
498
+ .b-menu__sub > .b-menu {
499
+ position: absolute;
500
+ inset-inline-start: calc(100% - var(--b-space-1));
501
+ top: calc(var(--b-space-1) * -1);
502
+ display: none;
503
+ z-index: 1;
504
+ }
505
+ .b-menu__sub:hover > .b-menu,
506
+ .b-menu__sub:focus-within > .b-menu { display: block; }
507
+ .b-menu__sub:hover > .b-menu__item { background: var(--b-color-accent); color: var(--b-color-on-accent); }
508
+
509
+ .b-menu__separator {
510
+ height: 1px;
511
+ margin: var(--b-space-1) var(--b-space-2);
512
+ background: var(--b-separator);
513
+ border: none;
514
+ }
515
+ .b-menu__label {
516
+ padding: var(--b-space-1) var(--b-space-3);
517
+ font-size: var(--b-text-caption);
518
+ font-weight: var(--b-weight-semibold);
519
+ text-transform: uppercase;
520
+ letter-spacing: var(--b-tracking-wide);
521
+ color: var(--b-text-tertiary);
522
+ }
523
+
524
+ /* Dropdown wrapper (CSS-only open via <details>) */
525
+ .b-dropdown { position: relative; display: inline-block; }
526
+ .b-dropdown > summary { list-style: none; cursor: pointer; }
527
+ .b-dropdown > summary::-webkit-details-marker { display: none; }
528
+ .b-dropdown[open] > .b-menu,
529
+ .b-dropdown > .b-menu {
530
+ position: absolute;
531
+ inset-inline-start: 0;
532
+ top: calc(100% + var(--b-space-1));
533
+ z-index: var(--b-z-popover);
534
+ }
535
+ .b-dropdown[open] > .b-menu { animation: b-menu-in var(--b-duration-fast) var(--b-ease-out); }
536
+ .b-dropdown--end > .b-menu,
537
+ .b-dropdown--end[open] > .b-menu { inset-inline-start: auto; inset-inline-end: 0; }
538
+
539
+ @keyframes b-menu-in {
540
+ from { opacity: 0; translate: 0 -4px; scale: 0.98; }
541
+ }
542
+
543
+ /* ---- Command Menu / Command Palette ---------------------------------------- */
544
+ .b-cmdk {
545
+ width: min(37.5rem, calc(100vw - 2rem));
546
+ padding: 0;
547
+ user-select: none;
548
+ background: color-mix(in srgb, var(--b-elevated) 88%, transparent);
549
+ -webkit-backdrop-filter: var(--b-glass-heavy);
550
+ backdrop-filter: var(--b-glass-heavy);
551
+ border: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
552
+ border-radius: var(--b-radius-xl);
553
+ box-shadow: var(--b-glass-shadow);
554
+ overflow: hidden;
555
+ position: relative;
556
+ }
557
+ .b-cmdk::before {
558
+ content: "";
559
+ position: absolute;
560
+ inset: 0;
561
+ border-radius: inherit;
562
+ box-shadow: var(--b-glass-edge);
563
+ pointer-events: none;
564
+ }
565
+ .b-cmdk__input {
566
+ width: 100%;
567
+ padding: var(--b-space-4);
568
+ font-size: var(--b-text-body);
569
+ background: none;
570
+ border: none;
571
+ border-bottom: 1px solid var(--b-separator);
572
+ outline: none;
573
+ user-select: text;
574
+ }
575
+ .b-cmdk__input:focus-visible { box-shadow: none; }
576
+ .b-cmdk__list {
577
+ max-height: min(20rem, 50vh);
578
+ overflow: auto;
579
+ padding: var(--b-space-2);
580
+ margin: 0;
581
+ list-style: none;
582
+ }
583
+ .b-cmdk__group-label {
584
+ padding: var(--b-space-2) var(--b-space-3) var(--b-space-1);
585
+ font-size: var(--b-text-caption);
586
+ font-weight: var(--b-weight-semibold);
587
+ text-transform: uppercase;
588
+ letter-spacing: var(--b-tracking-wide);
589
+ color: var(--b-text-tertiary);
590
+ }
591
+ .b-cmdk__item {
592
+ display: flex;
593
+ align-items: center;
594
+ gap: var(--b-space-3);
595
+ width: 100%;
596
+ padding: var(--b-space-2) var(--b-space-3);
597
+ font-size: var(--b-text-subheadline);
598
+ text-align: start;
599
+ color: var(--b-text);
600
+ background: none;
601
+ border: none;
602
+ border-radius: var(--b-radius-md);
603
+ cursor: pointer;
604
+ }
605
+ .b-cmdk__item:hover { background: var(--b-fill-quaternary); }
606
+ .b-cmdk__item.is-active { background: var(--b-color-accent-soft); color: var(--b-color-accent-text); }
607
+ .b-cmdk__item svg { width: 1.1rem; height: 1.1rem; opacity: 0.8; }
608
+ .b-cmdk__item kbd { margin-inline-start: auto; }
609
+ .b-cmdk__footer {
610
+ display: flex;
611
+ gap: var(--b-space-4);
612
+ padding: var(--b-space-2) var(--b-space-4);
613
+ border-top: 1px solid var(--b-separator);
614
+ font-size: var(--b-text-caption);
615
+ color: var(--b-text-tertiary);
616
+ }
617
+
618
+ /* ---- Navigation Drawer ------------------------------------------------------ */
619
+ .b-drawer {
620
+ position: fixed;
621
+ inset-block: 0;
622
+ inset-inline-start: 0;
623
+ inset-inline-end: auto;
624
+ z-index: var(--b-z-drawer);
625
+ width: min(20rem, 85vw);
626
+ padding: 0;
627
+ background: var(--b-material-thick-bg);
628
+ -webkit-backdrop-filter: var(--b-glass-heavy);
629
+ backdrop-filter: var(--b-glass-heavy);
630
+ border: none;
631
+ border-inline-end: 1px solid light-dark(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
632
+ box-shadow: var(--b-glass-shadow);
633
+ max-height: none;
634
+ height: 100dvh;
635
+ overflow: hidden;
636
+ transition: translate var(--b-duration-slow) var(--b-ease-spring),
637
+ display var(--b-duration-slow) allow-discrete,
638
+ overlay var(--b-duration-slow) allow-discrete;
639
+ }
640
+ .b-drawer::before {
641
+ content: "";
642
+ position: absolute;
643
+ inset: 0;
644
+ border-radius: inherit;
645
+ box-shadow: var(--b-glass-edge);
646
+ pointer-events: none;
647
+ z-index: 1;
648
+ }
649
+ /* Off-screen only in CLOSED dialog/popover states, so static demos render */
650
+ dialog.b-drawer:not([open]),
651
+ .b-drawer[popover]:not(:popover-open) { translate: -100% 0; }
652
+ .b-drawer:popover-open, .b-drawer[open] { translate: 0 0; }
653
+ @starting-style {
654
+ .b-drawer:popover-open { translate: -100% 0; }
655
+ }
656
+ .b-drawer--end {
657
+ inset-inline-start: auto;
658
+ inset-inline-end: 0;
659
+ border-inline-end: none;
660
+ border-inline-start: 1px solid var(--b-hairline);
661
+ }
662
+ dialog.b-drawer--end:not([open]),
663
+ .b-drawer--end[popover]:not(:popover-open) { translate: 100% 0; }
664
+ .b-drawer--end:popover-open, .b-drawer--end[open] { translate: 0 0; }
665
+ @starting-style {
666
+ .b-drawer--end:popover-open { translate: 100% 0; }
667
+ }
668
+ .b-drawer::backdrop {
669
+ background: var(--b-scrim);
670
+ -webkit-backdrop-filter: blur(var(--b-blur-xs));
671
+ backdrop-filter: blur(var(--b-blur-xs));
672
+ }
673
+ .b-drawer__header {
674
+ display: flex;
675
+ align-items: center;
676
+ justify-content: space-between;
677
+ padding: var(--b-space-4);
678
+ border-bottom: 1px solid var(--b-separator);
679
+ font-weight: var(--b-weight-semibold);
680
+ }
681
+ .b-drawer__body { padding: var(--b-space-3); overflow-y: auto; }
682
+ }