collabmd 0.1.32 → 0.1.34

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 (43) hide show
  1. package/dist/client/assets/{drawio-editor-Br4qyh3r.js → drawio-editor-BMTwP5mD.js} +1 -1
  2. package/dist/client/assets/{drawioEditor-ClmnTx5J.js → drawioEditor-D6clB5OH.js} +2 -2
  3. package/dist/client/assets/{editor-session-Cf-iV5-3.js → editor-session-Dzy_85Wp.js} +1 -1
  4. package/dist/client/assets/{excalidraw-editor-CXAxVhlw.js → excalidraw-editor-CAP9F8CB.js} +3 -3
  5. package/dist/client/assets/{excalidrawEditor-DoH_kMdu.js → excalidrawEditor-DD4AvzYP.js} +2 -2
  6. package/dist/client/assets/{exportDocument-9wTrBZNS.css → exportDocument-BbkN85c4.css} +1 -1
  7. package/dist/client/assets/index-BIt5EZXz.css +1 -0
  8. package/dist/client/assets/{index-C8QZYHvV.js → index-BLrtj9YM.js} +2 -2
  9. package/dist/client/assets/main-CfSHaGes.js +1368 -0
  10. package/dist/client/assets/{vault-api-client-Bf9tB_GW.js → vault-api-client-p7h7cXKM.js} +1 -1
  11. package/dist/client/drawio-editor.html +1 -1
  12. package/dist/client/excalidraw-editor.html +1 -1
  13. package/dist/client/export-document.html +2 -2
  14. package/dist/client/index.html +2 -2
  15. package/package.json +6 -5
  16. package/src/client/application/app-shell/git-feature.js +44 -36
  17. package/src/client/application/app-shell/ui-feature-shell.js +84 -63
  18. package/src/client/bootstrap/collabmd-app-shell.js +6 -0
  19. package/src/client/infrastructure/editor-session.js +4 -0
  20. package/src/client/infrastructure/editor-view-adapter.js +23 -0
  21. package/src/client/infrastructure/vault-api-client.js +48 -0
  22. package/src/client/presentation/bases-preview-controller.js +1388 -28
  23. package/src/client/presentation/comments-panel.js +50 -5
  24. package/src/client/presentation/excalidraw-embed-controller.js +4 -1
  25. package/src/client/presentation/file-history-view-controller.js +9 -1
  26. package/src/client/presentation/git-panel-controller.js +101 -91
  27. package/src/client/styles/components/scrollbars.css +5 -0
  28. package/src/client/styles/features/preview-markdown.css +468 -23
  29. package/src/server/domain/backlink-index.js +202 -11
  30. package/src/server/domain/bases/base-definition.js +138 -11
  31. package/src/server/domain/bases/base-expression-runtime.js +54 -17
  32. package/src/server/domain/bases/base-index-snapshot-store.js +167 -20
  33. package/src/server/domain/bases/base-query-metadata.js +242 -0
  34. package/src/server/domain/bases/base-query-results.js +18 -8
  35. package/src/server/domain/bases/base-query-service.js +360 -49
  36. package/src/server/domain/bases/base-transform.js +116 -0
  37. package/src/server/infrastructure/http/create-request-handler.js +63 -28
  38. package/src/server/infrastructure/http/create-vault-api-command-handler.js +275 -256
  39. package/src/server/infrastructure/http/create-vault-api-query-handler.js +258 -184
  40. package/src/server/infrastructure/persistence/vault-file-store.js +68 -12
  41. package/dist/client/assets/index-CxSbUTs2.css +0 -1
  42. package/dist/client/assets/main-BjHHMlv0.js +0 -1249
  43. /package/dist/client/assets/{exportDocument-Bia2hI25.js → exportDocument-Zfwq1XVx.js} +0 -0
@@ -190,9 +190,10 @@
190
190
  .preview-content .bases-shell {
191
191
  width: 100%;
192
192
  margin: 0 0 var(--space-5);
193
- border: 1px solid var(--color-border);
194
- border-radius: var(--radius-lg);
195
- background: color-mix(in oklab, var(--color-surface-offset) 65%, var(--color-surface));
193
+ border: 1px solid var(--color-divider);
194
+ border-radius: calc(var(--radius-lg) + 2px);
195
+ background: var(--color-surface);
196
+ box-shadow: var(--shadow-md);
196
197
  overflow: hidden;
197
198
  }
198
199
 
@@ -205,6 +206,8 @@
205
206
  gap: var(--space-3);
206
207
  padding: var(--space-4);
207
208
  border-bottom: 1px solid var(--color-divider);
209
+ border-radius: calc(var(--radius-lg) + 1px) calc(var(--radius-lg) + 1px) 0 0;
210
+ background: var(--color-surface);
208
211
  }
209
212
 
210
213
  .preview-content .bases-toolbar-main,
@@ -218,19 +221,22 @@
218
221
  }
219
222
 
220
223
  .preview-content .bases-toolbar-main {
221
- display: flex;
222
- flex-wrap: wrap;
223
- min-width: 0;
224
- justify-content: flex-start;
224
+ justify-content: space-between;
225
225
  gap: var(--space-3);
226
+ min-width: 0;
226
227
  }
227
228
 
228
229
  .preview-content .bases-tabs {
230
+ flex: 1 1 auto;
229
231
  min-width: 0;
230
232
  max-width: 100%;
231
233
  flex-wrap: nowrap;
232
234
  overflow-x: auto;
233
235
  overflow-y: hidden;
236
+ padding: 3px;
237
+ border: 1px solid color-mix(in oklab, var(--color-divider) 82%, transparent);
238
+ border-radius: var(--radius-full);
239
+ background: color-mix(in oklab, var(--color-surface-offset) 78%, var(--color-surface));
234
240
  scrollbar-width: none;
235
241
  }
236
242
 
@@ -245,23 +251,294 @@
245
251
 
246
252
  .preview-content .bases-toolbar-actions {
247
253
  width: 100%;
254
+ justify-content: space-between;
255
+ gap: var(--space-3);
256
+ }
257
+
258
+ .preview-content .bases-toolbar-edit-actions,
259
+ .preview-content .bases-panel-title-row,
260
+ .preview-content .bases-toggle-row,
261
+ .preview-content .bases-filter-group-header,
262
+ .preview-content .bases-filter-actions-row {
263
+ display: flex;
248
264
  flex-wrap: wrap;
249
- justify-content: flex-start;
265
+ gap: var(--space-2);
266
+ align-items: center;
267
+ }
268
+
269
+ .preview-content .bases-toolbar-edit-actions {
270
+ display: inline-flex;
271
+ padding: 3px;
272
+ border: 1px solid var(--color-divider);
273
+ border-radius: var(--radius-full);
274
+ background: color-mix(in oklab, var(--color-surface) 72%, var(--color-surface-offset));
275
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
276
+ }
277
+
278
+ .preview-content .bases-panel-title-row,
279
+ .preview-content .bases-filter-group-header {
280
+ justify-content: space-between;
281
+ }
282
+
283
+ .preview-content .bases-sort-row,
284
+ .preview-content .bases-filter-row {
285
+ display: grid;
286
+ gap: var(--space-2);
287
+ width: 100%;
288
+ align-items: stretch;
289
+ }
290
+
291
+ .preview-content .bases-panel-section > .bases-sort-row {
292
+ grid-template-columns: minmax(180px, 1.35fr) minmax(140px, 1fr) auto;
293
+ }
294
+
295
+ .preview-content .bases-sort-list > .bases-sort-row {
296
+ grid-template-columns: minmax(180px, 1.35fr) minmax(140px, 1fr) repeat(3, auto);
297
+ }
298
+
299
+ .preview-content .bases-filter-row {
300
+ grid-template-columns: minmax(180px, 1.2fr) minmax(160px, 1fr) minmax(200px, 1.35fr) auto;
301
+ }
302
+
303
+ .preview-content .bases-sort-row > .ui-button,
304
+ .preview-content .bases-filter-row > .ui-button,
305
+ .preview-content .bases-filter-group-header > .ui-button,
306
+ .preview-content .bases-filter-actions-row > .ui-button {
307
+ align-self: stretch;
308
+ }
309
+
310
+ .preview-content .bases-panels {
311
+ padding: var(--space-3) var(--space-4) var(--space-4);
312
+ background: var(--color-surface);
313
+ }
314
+
315
+ .preview-content .bases-panel-card {
316
+ display: grid;
317
+ gap: var(--space-4);
318
+ padding: var(--space-4);
319
+ border: 1px solid var(--color-divider);
320
+ border-radius: calc(var(--radius-lg) + 1px);
321
+ background: var(--color-surface);
322
+ box-shadow: var(--shadow-sm);
323
+ }
324
+
325
+ .preview-content .bases-panel-section {
326
+ display: grid;
327
+ gap: var(--space-2);
328
+ }
329
+
330
+ .preview-content .bases-panel-section + .bases-panel-section {
331
+ padding-top: var(--space-3);
332
+ border-top: 1px solid color-mix(in oklab, var(--color-divider) 86%, transparent);
333
+ }
334
+
335
+ .preview-content .bases-panel-title,
336
+ .preview-content .bases-readonly-note {
337
+ font-size: var(--text-ui-sm);
338
+ color: var(--color-text-muted);
339
+ }
340
+
341
+ .preview-content .bases-panel-title {
342
+ font-weight: 600;
343
+ }
344
+
345
+ .preview-content .bases-readonly-note {
346
+ line-height: 1.5;
347
+ }
348
+
349
+ .preview-content .bases-select,
350
+ .preview-content .bases-filter-value,
351
+ .preview-content .bases-properties-search-input,
352
+ .preview-content .bases-filter-advanced {
353
+ width: 100%;
354
+ min-width: 0;
355
+ }
356
+
357
+ .preview-content .bases-select,
358
+ .preview-content .bases-filter-value,
359
+ .preview-content .bases-filter-value-combobox {
360
+ min-height: var(--control-h-md);
361
+ }
362
+
363
+ .preview-content .bases-select {
364
+ appearance: none;
365
+ padding-right: calc(var(--space-6) + var(--space-3));
366
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%23838ea4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
367
+ background-position: right var(--space-3) center;
368
+ background-repeat: no-repeat;
369
+ background-size: 16px 16px;
370
+ }
371
+
372
+ .preview-content .bases-filter-value-combobox {
373
+ position: relative;
374
+ min-width: 0;
375
+ }
376
+
377
+ .preview-content .bases-filter-value {
378
+ padding-right: var(--space-3);
379
+ }
380
+
381
+ .preview-content .bases-filter-value--suggestions {
382
+ padding-right: calc(var(--space-6) + var(--space-3));
383
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%23838ea4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
384
+ background-position: right var(--space-3) center;
385
+ background-repeat: no-repeat;
386
+ background-size: 16px 16px;
387
+ }
388
+
389
+ .preview-content .bases-filter-suggestion-list {
390
+ position: absolute;
391
+ top: calc(100% + var(--space-1));
392
+ left: 0;
393
+ right: 0;
394
+ z-index: 3;
395
+ display: grid;
396
+ gap: 2px;
397
+ max-height: 224px;
398
+ overflow: auto;
399
+ padding: var(--space-1);
400
+ border: 1px solid var(--color-border);
401
+ border-radius: var(--radius-lg);
402
+ background: var(--color-surface);
403
+ box-shadow: var(--shadow-lg);
404
+ }
405
+
406
+ .preview-content .bases-filter-suggestion {
407
+ display: grid;
408
+ grid-template-columns: minmax(0, 1fr) auto;
409
+ gap: var(--space-2);
410
+ align-items: center;
411
+ width: 100%;
412
+ min-height: 36px;
413
+ padding: var(--space-2) var(--space-3);
414
+ border: 0;
415
+ border-radius: calc(var(--radius-md) - 2px);
416
+ background: transparent;
417
+ color: var(--color-text);
418
+ text-align: left;
419
+ cursor: pointer;
420
+ }
421
+
422
+ .preview-content .bases-filter-suggestion:hover,
423
+ .preview-content .bases-filter-suggestion:focus-visible {
424
+ background: var(--surface-fill-subtle);
425
+ outline: none;
426
+ }
427
+
428
+ .preview-content .bases-filter-suggestion[aria-selected='true'] {
429
+ background: color-mix(in oklab, var(--color-primary) 10%, var(--color-surface));
430
+ color: var(--color-primary);
431
+ }
432
+
433
+ .preview-content .bases-filter-suggestion-label,
434
+ .preview-content .bases-filter-suggestion-meta {
435
+ min-width: 0;
436
+ }
437
+
438
+ .preview-content .bases-filter-suggestion-label {
439
+ overflow: hidden;
440
+ text-overflow: ellipsis;
441
+ white-space: nowrap;
442
+ }
443
+
444
+ .preview-content .bases-filter-suggestion-meta {
445
+ color: var(--color-text-muted);
446
+ font-size: var(--text-ui-sm);
447
+ }
448
+
449
+ .preview-content .bases-filter-group {
450
+ display: grid;
451
+ gap: var(--space-3);
452
+ padding: var(--space-3);
453
+ border: 1px solid color-mix(in oklab, var(--color-divider) 88%, transparent);
454
+ border-radius: calc(var(--radius-lg) + 1px);
455
+ background: var(--color-surface);
456
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
457
+ }
458
+
459
+ .preview-content .bases-filter-children,
460
+ .preview-content .bases-sort-list {
461
+ display: grid;
250
462
  gap: var(--space-3);
251
463
  }
252
464
 
465
+ .preview-content .bases-properties-search,
466
+ .preview-content .bases-filter-advanced-label {
467
+ display: block;
468
+ width: 100%;
469
+ }
470
+
471
+ .preview-content .bases-properties-list {
472
+ display: grid;
473
+ gap: var(--space-2);
474
+ max-height: 320px;
475
+ overflow: auto;
476
+ padding: var(--space-1);
477
+ border: 1px solid color-mix(in oklab, var(--color-divider) 86%, transparent);
478
+ border-radius: var(--radius-lg);
479
+ background: color-mix(in oklab, var(--color-surface-offset) 54%, var(--color-surface));
480
+ }
481
+
482
+ .preview-content .bases-property-option {
483
+ display: grid;
484
+ grid-template-columns: auto minmax(0, 1fr) auto;
485
+ gap: var(--space-2);
486
+ align-items: center;
487
+ padding: var(--space-2) var(--space-3);
488
+ border: 1px solid var(--color-divider);
489
+ border-radius: var(--radius-md);
490
+ background: var(--color-surface);
491
+ transition:
492
+ transform var(--transition-interactive),
493
+ border-color var(--transition-interactive),
494
+ box-shadow var(--transition-interactive),
495
+ background var(--transition-interactive);
496
+ }
497
+
498
+ .preview-content .bases-property-option:hover {
499
+ transform: translateY(-1px);
500
+ border-color: color-mix(in oklab, var(--color-divider) 55%, var(--color-primary) 45%);
501
+ background: var(--surface-fill-subtle);
502
+ box-shadow: var(--shadow-sm);
503
+ }
504
+
505
+ .preview-content .bases-property-option input[type='checkbox'] {
506
+ width: 16px;
507
+ height: 16px;
508
+ margin: 0;
509
+ accent-color: var(--color-primary);
510
+ }
511
+
512
+ .preview-content .bases-property-option-label {
513
+ min-width: 0;
514
+ font-weight: 500;
515
+ }
516
+
517
+ .preview-content .bases-property-option-meta {
518
+ font-size: var(--text-ui-sm);
519
+ color: var(--color-text-faint);
520
+ text-transform: capitalize;
521
+ }
522
+
523
+ .preview-content .bases-filter-advanced {
524
+ min-height: 180px;
525
+ padding: var(--space-3);
526
+ resize: vertical;
527
+ line-height: 1.5;
528
+ }
529
+
253
530
  .preview-content .bases-search-shell {
254
531
  position: relative;
255
532
  display: flex;
256
533
  align-items: center;
257
534
  flex: 1 1 320px;
258
535
  width: 100%;
536
+ max-width: min(420px, 100%);
259
537
  min-width: min(320px, 100%);
538
+ margin-left: auto;
260
539
  border: 1px solid color-mix(in oklab, var(--color-border) 82%, var(--color-primary) 18%);
261
540
  border-radius: var(--radius-lg);
262
- background:
263
- linear-gradient(180deg, color-mix(in oklab, var(--color-surface) 92%, white 8%), var(--color-surface)),
264
- var(--color-surface);
541
+ background: var(--color-surface);
265
542
  box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
266
543
  transition: border-color var(--transition-interactive), box-shadow var(--transition-interactive), background var(--transition-interactive);
267
544
  }
@@ -315,24 +592,34 @@
315
592
  align-items: center;
316
593
  min-height: 28px;
317
594
  padding: 0 var(--space-3);
595
+ border: 1px solid color-mix(in oklab, var(--color-divider) 84%, transparent);
318
596
  border-radius: var(--radius-full);
319
597
  background: color-mix(in oklab, var(--color-surface-offset) 72%, var(--color-surface));
598
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
320
599
  white-space: nowrap;
321
600
  }
322
601
 
323
602
  .preview-content .bases-summaries {
324
603
  padding: var(--space-3) var(--space-4);
604
+ border-top: 1px solid color-mix(in oklab, var(--color-divider) 78%, transparent);
325
605
  border-bottom: 1px solid var(--color-divider);
606
+ background: var(--color-surface);
326
607
  }
327
608
 
328
609
  .preview-content .bases-summary {
329
610
  display: inline-flex;
330
611
  align-items: center;
331
612
  gap: var(--space-2);
332
- min-height: 28px;
613
+ min-height: 30px;
333
614
  padding: 0 var(--space-3);
615
+ border: 1px solid color-mix(in oklab, var(--color-divider) 84%, transparent);
334
616
  border-radius: 999px;
335
617
  background: var(--color-surface);
618
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
619
+ }
620
+
621
+ .preview-content .bases-summary-value {
622
+ font-weight: 600;
336
623
  }
337
624
 
338
625
  .preview-content .bases-content {
@@ -358,21 +645,54 @@
358
645
 
359
646
  .preview-content .bases-table-shell {
360
647
  overflow-x: auto;
648
+ border: 1px solid color-mix(in oklab, var(--color-divider) 88%, transparent);
649
+ border-radius: calc(var(--radius-lg) + 1px);
650
+ background: var(--color-surface);
651
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
361
652
  }
362
653
 
363
654
  .preview-content .bases-table {
364
655
  width: 100%;
365
- border-collapse: collapse;
656
+ min-width: 620px;
657
+ border-collapse: separate;
658
+ border-spacing: 0;
366
659
  }
367
660
 
368
661
  .preview-content .bases-table th,
369
662
  .preview-content .bases-table td {
370
- padding: var(--space-2) var(--space-3);
663
+ padding: var(--space-3);
371
664
  border-bottom: 1px solid var(--color-divider);
372
665
  text-align: left;
373
666
  vertical-align: top;
374
667
  }
375
668
 
669
+ .preview-content .bases-table th {
670
+ position: sticky;
671
+ top: 0;
672
+ z-index: 1;
673
+ background: color-mix(in oklab, var(--color-surface-offset) 72%, var(--color-surface));
674
+ color: var(--color-text-muted);
675
+ font-size: var(--text-ui-sm);
676
+ font-weight: 600;
677
+ white-space: nowrap;
678
+ }
679
+
680
+ .preview-content .bases-table tbody tr {
681
+ transition: background var(--transition-interactive);
682
+ }
683
+
684
+ .preview-content .bases-table tbody tr:nth-child(even) {
685
+ background: color-mix(in oklab, var(--color-surface-offset) 24%, transparent);
686
+ }
687
+
688
+ .preview-content .bases-table tbody tr:hover {
689
+ background: color-mix(in oklab, var(--color-primary) 6%, var(--color-surface-offset));
690
+ }
691
+
692
+ .preview-content .bases-table tbody tr:last-child td {
693
+ border-bottom: 0;
694
+ }
695
+
376
696
  .preview-content .bases-list,
377
697
  .preview-content .bases-cards {
378
698
  margin: 0;
@@ -382,27 +702,51 @@
382
702
 
383
703
  .preview-content .bases-list {
384
704
  list-style: none;
705
+ display: grid;
706
+ gap: var(--space-2);
385
707
  }
386
708
 
387
709
  .preview-content .bases-list-item {
388
710
  display: flex;
389
711
  flex-wrap: wrap;
390
712
  gap: var(--space-3);
391
- padding: var(--space-3) 0;
392
- border-bottom: 1px solid var(--color-divider);
713
+ padding: var(--space-3);
714
+ border: 1px solid color-mix(in oklab, var(--color-divider) 88%, transparent);
715
+ border-radius: var(--radius-lg);
716
+ background: var(--color-surface);
717
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
718
+ }
719
+
720
+ .preview-content .bases-list-field {
721
+ display: grid;
722
+ gap: 2px;
723
+ min-width: min(220px, 100%);
393
724
  }
394
725
 
395
726
  .preview-content .bases-cards {
396
727
  display: grid;
397
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
728
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
398
729
  gap: var(--space-3);
399
730
  }
400
731
 
401
732
  .preview-content .bases-card {
733
+ display: grid;
734
+ grid-template-rows: auto 1fr;
402
735
  overflow: hidden;
403
736
  border: 1px solid var(--color-border);
404
- border-radius: var(--radius-lg);
737
+ border-radius: calc(var(--radius-lg) + 2px);
405
738
  background: var(--color-surface);
739
+ box-shadow: var(--shadow-sm);
740
+ transition:
741
+ transform var(--transition-interactive),
742
+ box-shadow var(--transition-interactive),
743
+ border-color var(--transition-interactive);
744
+ }
745
+
746
+ .preview-content .bases-card:hover {
747
+ transform: translateY(-1px);
748
+ border-color: color-mix(in oklab, var(--color-border) 58%, var(--color-primary) 42%);
749
+ box-shadow: var(--shadow-md);
406
750
  }
407
751
 
408
752
  .preview-content .bases-card-media {
@@ -418,17 +762,35 @@
418
762
  }
419
763
 
420
764
  .preview-content .bases-card-body {
421
- padding: var(--space-3);
765
+ display: grid;
766
+ gap: var(--space-3);
767
+ padding: var(--space-4);
422
768
  }
423
769
 
424
770
  .preview-content .bases-card-field + .bases-card-field {
425
- margin-top: var(--space-3);
771
+ margin-top: 0;
772
+ padding-top: var(--space-3);
773
+ border-top: 1px solid color-mix(in oklab, var(--color-divider) 84%, transparent);
426
774
  }
427
775
 
428
776
  .preview-content .bases-link-button {
777
+ min-height: auto;
429
778
  padding: 0;
430
779
  border: 0;
780
+ border-radius: 0;
431
781
  background: transparent;
782
+ box-shadow: none;
783
+ color: var(--color-primary);
784
+ font-size: inherit;
785
+ font-weight: 600;
786
+ line-height: inherit;
787
+ }
788
+
789
+ .preview-content .bases-link-button:hover,
790
+ .preview-content .bases-link-button:focus-visible {
791
+ background: transparent;
792
+ border-color: transparent;
793
+ box-shadow: none;
432
794
  color: var(--color-primary);
433
795
  }
434
796
 
@@ -439,7 +801,8 @@
439
801
  padding: 0 var(--space-3);
440
802
  border: 1px solid var(--color-border);
441
803
  border-radius: 999px;
442
- background: var(--color-surface);
804
+ background: color-mix(in oklab, var(--color-surface-offset) 44%, var(--color-surface));
805
+ box-shadow: inset 0 1px 0 oklch(from var(--color-text) l c h / 0.04);
443
806
  font-size: var(--text-ui-sm);
444
807
  }
445
808
 
@@ -447,7 +810,9 @@
447
810
  display: block;
448
811
  max-width: 120px;
449
812
  max-height: 80px;
813
+ border: 1px solid color-mix(in oklab, var(--color-divider) 84%, transparent);
450
814
  border-radius: var(--radius-md);
815
+ box-shadow: var(--shadow-sm);
451
816
  }
452
817
 
453
818
  .preview-content .bases-unsupported {
@@ -455,6 +820,81 @@
455
820
  border: 1px dashed var(--color-border);
456
821
  border-radius: var(--radius-lg);
457
822
  color: var(--color-text-muted);
823
+ background: color-mix(in oklab, var(--color-surface-offset) 52%, var(--color-surface));
824
+ }
825
+
826
+ @media (max-width: 900px) {
827
+ .preview-content .bases-toolbar-actions {
828
+ justify-content: flex-start;
829
+ }
830
+
831
+ .preview-content .bases-search-shell {
832
+ margin-left: 0;
833
+ max-width: none;
834
+ }
835
+
836
+ .preview-content .bases-panel-section > .bases-sort-row,
837
+ .preview-content .bases-sort-list > .bases-sort-row,
838
+ .preview-content .bases-filter-row {
839
+ grid-template-columns: 1fr;
840
+ }
841
+
842
+ .preview-content .bases-sort-row > .ui-button,
843
+ .preview-content .bases-filter-row > .ui-button {
844
+ width: 100%;
845
+ }
846
+ }
847
+
848
+ @media (max-width: 640px) {
849
+ .preview-content .bases-toolbar,
850
+ .preview-content .bases-panels,
851
+ .preview-content .bases-summaries,
852
+ .preview-content .bases-content {
853
+ padding-inline: var(--space-3);
854
+ }
855
+
856
+ .preview-content .bases-toolbar-edit-actions,
857
+ .preview-content .bases-toggle-row,
858
+ .preview-content .bases-filter-actions-row {
859
+ width: 100%;
860
+ }
861
+
862
+ .preview-content .bases-toolbar-edit-actions {
863
+ display: grid;
864
+ grid-template-columns: repeat(2, minmax(0, 1fr));
865
+ padding: 0;
866
+ border: 0;
867
+ border-radius: 0;
868
+ background: transparent;
869
+ box-shadow: none;
870
+ }
871
+
872
+ .preview-content .bases-toolbar-edit-actions > .ui-button,
873
+ .preview-content .bases-toggle-row > .ui-button,
874
+ .preview-content .bases-filter-actions-row > .ui-button {
875
+ flex: 1 1 140px;
876
+ }
877
+
878
+ .preview-content .bases-toolbar-edit-actions > .ui-button {
879
+ width: 100%;
880
+ min-width: 0;
881
+ }
882
+
883
+ .preview-content .bases-toolbar-edit-actions > .ui-button:last-child:nth-child(odd) {
884
+ grid-column: 1 / -1;
885
+ }
886
+
887
+ .preview-content .bases-property-option {
888
+ grid-template-columns: auto minmax(0, 1fr);
889
+ }
890
+
891
+ .preview-content .bases-property-option-meta {
892
+ grid-column: 2;
893
+ }
894
+
895
+ .preview-content .bases-table {
896
+ min-width: 540px;
897
+ }
458
898
  }
459
899
 
460
900
  .preview-content a {
@@ -615,8 +1055,13 @@
615
1055
 
616
1056
  @media (max-width: 768px) {
617
1057
  .preview-content .frontmatter-header {
618
- align-items: flex-start;
619
- flex-direction: column;
1058
+ align-items: center;
1059
+ flex-direction: row;
1060
+ flex-wrap: nowrap;
1061
+ }
1062
+
1063
+ .preview-content .frontmatter-toggle {
1064
+ margin-left: auto;
620
1065
  }
621
1066
 
622
1067
  .preview-content .frontmatter-property {