@bendyline/docblocks-react 2.7.2 → 2.7.4

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 (39) hide show
  1. package/THIRD_PARTY_NOTICES.txt +215 -23
  2. package/dist/{AiDiagrams-LFV4YU6W.js → AiDiagrams-QZMJNGDT.js} +3 -3
  3. package/dist/{AiEditorAssistant-GN2KXKZD.js → AiEditorAssistant-4HFFGVU4.js} +205 -166
  4. package/dist/AiStudyDialog-P3E7PJV5.js +1150 -0
  5. package/dist/{AudioExportDialog-F23QXNPB.js → AudioExportDialog-IOYIEAER.js} +1 -1
  6. package/dist/{DocumentConflictDialog-5LRVIGXS.js → DocumentConflictDialog-DZ2BV2IH.js} +1 -1
  7. package/dist/ExportDialog-LGWBXIWN.js +9 -0
  8. package/dist/{ExportToolbarControls-2FEIHNMW.js → ExportToolbarControls-HOV424TO.js} +114 -14
  9. package/dist/{GitUI-RCWUZVS6.js → GitUI-F3CNBURE.js} +1 -1
  10. package/dist/{KeyboardShortcutsDialog-NOD4P25G.js → KeyboardShortcutsDialog-HVKDFP5Z.js} +2 -2
  11. package/dist/{PresentationMaker-ITNP5SDO.js → PresentationMaker-MUMFAXEI.js} +3 -3
  12. package/dist/{QuickOpenDialog-2KK4SEBU.js → QuickOpenDialog-ENVFGIHS.js} +1 -1
  13. package/dist/{Settings-RDYvDDI0.d.ts → Settings-CfhY489G.d.ts} +3 -5
  14. package/dist/{ShareDialog-XUA2OVGI.js → ShareDialog-PF7D7ORP.js} +1 -1
  15. package/dist/{SpeechToolbarControl-CLU7RB2G.js → SpeechToolbarControl-KNI2C4JJ.js} +1 -1
  16. package/dist/{TextFromNarration-NITJQ4IB.js → TextFromNarration-EYOMW2IW.js} +1 -1
  17. package/dist/{chunk-HRWEGPTY.js → chunk-7CSBRAMT.js} +109 -24
  18. package/dist/{chunk-NAH52736.js → chunk-7V34VUK6.js} +969 -98
  19. package/dist/{chunk-K7XJDJUJ.js → chunk-ACQF63SB.js} +14 -4
  20. package/dist/{chunk-X3DDTJKR.js → chunk-D4HIOS7E.js} +256 -18
  21. package/dist/{chunk-BLUEZG7T.js → chunk-FBPCURCS.js} +9 -2
  22. package/dist/{chunk-Y5OE3HJC.js → chunk-GFK4TCKN.js} +11 -5
  23. package/dist/chunk-H3BK5MK6.js +34 -0
  24. package/dist/{chunk-6B7G33D5.js → chunk-KBUHWZCF.js} +1 -1
  25. package/dist/{chunk-SSB43524.js → chunk-PNZFIIWW.js} +91 -12
  26. package/dist/{chunk-56KO2LYN.js → chunk-VJPGZCFS.js} +4 -0
  27. package/dist/chunk-XNT66JC2.js +168 -0
  28. package/dist/editor.js +4 -4
  29. package/dist/export/index.d.ts +19 -4
  30. package/dist/export/index.js +4 -4
  31. package/dist/index.d.ts +19 -5
  32. package/dist/index.js +858 -557
  33. package/dist/{run-export-CS3HRNAZ.js → run-export-SPNNH32M.js} +1 -1
  34. package/dist/settings/index.d.ts +1 -1
  35. package/dist/settings/index.js +2 -2
  36. package/package.json +8 -8
  37. package/src/styles/docblocks.css +526 -63
  38. package/dist/ExportDialog-JRVZCG3J.js +0 -9
  39. package/dist/chunk-YBEYTVU2.js +0 -12
@@ -34,7 +34,7 @@
34
34
  'Helvetica Neue', Arial, sans-serif;
35
35
  /* Metadata face: counts, timestamps, version strings, section labels. A
36
36
  small mono sets what you read apart from what you act on. */
37
- --db-meta-font: 'JetBrains Mono', ui-monospace, SFMono-Regular, Consolas, monospace;
37
+ --db-meta-font: 'Inconsolata', ui-monospace, SFMono-Regular, Consolas, monospace;
38
38
  /* Squisq's chrome reads `--squisq-ux-font` with a `system-ui` fallback, the
39
39
  same bridge shape as the `--squisq-*` color tokens further down. Binding
40
40
  it carries the chrome face into the editor toolbar, menus and dialogs.
@@ -329,7 +329,7 @@
329
329
  .db-explorer-title {
330
330
  font-family: var(--db-meta-font);
331
331
  font-weight: 500;
332
- font-size: 11px;
332
+ font-size: 12px;
333
333
  text-transform: uppercase;
334
334
  letter-spacing: 0.06em;
335
335
  color: var(--db-text-muted);
@@ -805,6 +805,16 @@
805
805
  cursor: pointer;
806
806
  }
807
807
 
808
+ /* A listed file the provider could not read (e.g. a sync client holding it). */
809
+ .db-tree-read-issue {
810
+ flex-shrink: 0;
811
+ margin-left: 4px;
812
+ padding: 0 4px;
813
+ color: var(--db-danger, #c33);
814
+ font-size: 11px;
815
+ font-weight: 700;
816
+ }
817
+
808
818
  .db-tree--drop-target {
809
819
  box-shadow: inset 0 0 0 2px var(--db-accent);
810
820
  background: var(--db-accent-soft-08);
@@ -883,7 +893,7 @@
883
893
  overflow: hidden;
884
894
  color: var(--db-text-secondary);
885
895
  font-family: var(--db-meta-font);
886
- font-size: 10.5px;
896
+ font-size: 12px;
887
897
  font-variant-numeric: tabular-nums;
888
898
  text-align: right;
889
899
  text-overflow: ellipsis;
@@ -1792,6 +1802,7 @@ body.db-resizing-sidebar * {
1792
1802
  .db-shell .squisq-status-bar {
1793
1803
  line-height: 16px;
1794
1804
  font-family: var(--db-meta-font);
1805
+ font-size: 13px;
1795
1806
  }
1796
1807
 
1797
1808
  .db-shell-sidebar-footer {
@@ -2341,21 +2352,6 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
2341
2352
  gap: 6px 16px;
2342
2353
  }
2343
2354
 
2344
- .db-about-beta {
2345
- margin-bottom: 10px;
2346
- padding: 10px 12px;
2347
- border: 1px solid var(--db-accent);
2348
- border-radius: 6px;
2349
- background: var(--db-accent-soft-08);
2350
- color: var(--db-text-secondary);
2351
- font-size: 12px;
2352
- line-height: 1.5;
2353
- }
2354
-
2355
- .db-about-beta strong {
2356
- color: var(--db-accent-deep);
2357
- }
2358
-
2359
2355
  .db-about-version {
2360
2356
  display: flex;
2361
2357
  align-items: center;
@@ -2377,6 +2373,7 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
2377
2373
  .db-about-version code {
2378
2374
  color: var(--db-text);
2379
2375
  font-family: var(--db-meta-font);
2376
+ font-size: 14px;
2380
2377
  user-select: all;
2381
2378
  }
2382
2379
 
@@ -2394,7 +2391,7 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
2394
2391
 
2395
2392
  .db-settings-legend {
2396
2393
  font-family: var(--db-meta-font);
2397
- font-size: 11px;
2394
+ font-size: 12px;
2398
2395
  font-weight: 500;
2399
2396
  text-transform: uppercase;
2400
2397
  letter-spacing: 0.06em;
@@ -3431,12 +3428,17 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
3431
3428
 
3432
3429
  .db-export-footer {
3433
3430
  display: flex;
3431
+ flex-wrap: wrap;
3434
3432
  justify-content: flex-end;
3435
3433
  gap: 8px;
3436
3434
  padding: 12px 20px 16px;
3437
3435
  border-top: 1px solid var(--db-border);
3438
3436
  }
3439
3437
 
3438
+ .db-export-open-after-save {
3439
+ flex-basis: 100%;
3440
+ }
3441
+
3440
3442
  .db-export-more-formats {
3441
3443
  margin: 4px 0 0;
3442
3444
  padding-top: 12px;
@@ -4003,13 +4005,19 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
4003
4005
  color: var(--db-text-secondary);
4004
4006
  }
4005
4007
 
4006
- .db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-upload {
4008
+ .db-shell
4009
+ .squisq-editor-shell
4010
+ .squisq-media-bin
4011
+ :is(.squisq-media-bin-record, .squisq-media-bin-upload) {
4007
4012
  background: var(--db-accent-tint-strong);
4008
4013
  border-color: var(--db-border);
4009
4014
  color: var(--db-text-secondary);
4010
4015
  }
4011
4016
 
4012
- .db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-upload:hover {
4017
+ .db-shell
4018
+ .squisq-editor-shell
4019
+ .squisq-media-bin
4020
+ :is(.squisq-media-bin-record, .squisq-media-bin-upload):hover {
4013
4021
  background: var(--db-bg-hover);
4014
4022
  border-color: var(--db-border-strong);
4015
4023
  }
@@ -5640,62 +5648,149 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5640
5648
  already autosaved on every keystroke; this just confirms it
5641
5649
  so muscle-memory savers feel at ease. */
5642
5650
 
5643
- /* ── Welcome gateway ─────────────────────────────────────────── */
5644
- /* One-time first-run callout floated over the welcome doc's Play
5645
- view. Names the mode the user landed in and offers a one-click
5646
- path into the editor. Dismissed forever via localStorage. */
5651
+ /* ── Welcome screen ─────────────────────────────────────────── */
5652
+ /* First visit on a two-pane layout: covers the editor area -- the welcome
5653
+ document mounts, inert, beneath it -- with what DocBlocks is and two
5654
+ choices. Dismissed for good via localStorage. Phones keep their card in
5655
+ the file pane (`.db-mobile-first-run`). The class names predate this
5656
+ screen; they were a toast over a slideshow. */
5657
+
5658
+ .db-shell-editor-content {
5659
+ display: contents;
5660
+ }
5647
5661
 
5648
5662
  .db-welcome-gateway {
5649
5663
  position: absolute;
5650
- bottom: 56px;
5651
- left: 50%;
5652
- transform: translateX(-50%);
5664
+ inset: 0;
5653
5665
  z-index: 60;
5654
5666
  display: flex;
5655
5667
  align-items: center;
5656
- gap: 12px;
5657
- max-width: min(640px, calc(100% - 32px));
5658
- padding: 10px 10px 10px 16px;
5659
- background: var(--db-bg-raised);
5660
- border: 1px solid var(--db-border-strong);
5661
- border-radius: 10px;
5662
- box-shadow: 0 10px 32px var(--db-shadow);
5668
+ justify-content: center;
5669
+ overflow-y: auto;
5670
+ padding: calc(var(--db-safe-top) + 40px) 40px 40px;
5671
+ background:
5672
+ radial-gradient(circle at 88% 8%, var(--db-accent-soft-12), transparent 42%), var(--db-bg);
5663
5673
  color: var(--db-text);
5664
- font-size: 13px;
5665
- line-height: 1.45;
5666
- animation: db-welcome-gateway-in 0.4s ease-out;
5674
+ container-type: inline-size;
5667
5675
  }
5668
5676
 
5669
- .db-welcome-gateway-cta {
5670
- flex-shrink: 0;
5671
- padding: 6px 14px;
5672
- font-size: 13px;
5677
+ .db-welcome-gateway-body {
5678
+ display: grid;
5679
+ width: min(1040px, 100%);
5680
+ margin: auto 0;
5681
+ gap: 36px;
5682
+ align-items: center;
5683
+ }
5684
+
5685
+ @container (min-width: 980px) {
5686
+ .db-welcome-gateway-body {
5687
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
5688
+ gap: 56px;
5689
+ }
5690
+ }
5691
+
5692
+ .db-welcome-gateway-eyebrow {
5693
+ margin: 0 0 12px;
5694
+ color: var(--db-accent);
5695
+ font-size: 12px;
5696
+ font-weight: 700;
5697
+ letter-spacing: 0.1em;
5698
+ text-transform: uppercase;
5699
+ }
5700
+
5701
+ .db-welcome-gateway h1 {
5702
+ margin: 0;
5703
+ color: var(--db-text);
5704
+ font-family: 'PT Serif', Georgia, 'Times New Roman', serif;
5705
+ font-size: clamp(30px, 4.4cqi, 46px);
5706
+ font-weight: 700;
5707
+ line-height: 1.1;
5708
+ letter-spacing: -0.01em;
5709
+ }
5710
+
5711
+ .db-welcome-gateway-copy > p:not(.db-welcome-gateway-eyebrow) {
5712
+ max-width: 34em;
5713
+ margin: 16px 0 0;
5714
+ color: var(--db-text-secondary);
5715
+ font-size: 16px;
5716
+ line-height: 1.6;
5717
+ }
5718
+
5719
+ .db-welcome-gateway-copy > .db-welcome-gateway-note {
5720
+ margin-top: 8px;
5721
+ color: var(--db-text-muted);
5722
+ font-size: 14px;
5723
+ }
5724
+
5725
+ .db-welcome-gateway-actions {
5726
+ display: flex;
5727
+ flex-wrap: wrap;
5728
+ gap: 10px;
5729
+ margin-top: 28px;
5730
+ }
5731
+
5732
+ .db-welcome-gateway-actions button,
5733
+ .db-welcome-gateway-actions a {
5734
+ min-height: 44px;
5735
+ padding: 10px 20px;
5736
+ border: 1px solid var(--db-border-strong);
5737
+ border-radius: 8px;
5738
+ background: var(--db-bg);
5739
+ color: var(--db-text);
5740
+ font: inherit;
5741
+ font-size: 15px;
5673
5742
  font-weight: 600;
5743
+ cursor: pointer;
5744
+ }
5745
+
5746
+ /* The apps link wears the button treatment; this centers its label the way a
5747
+ button's is and drops the underline. */
5748
+ .db-welcome-gateway-actions a {
5749
+ box-sizing: border-box;
5750
+ display: inline-flex;
5751
+ align-items: center;
5752
+ text-decoration: none;
5753
+ }
5754
+
5755
+ .db-welcome-gateway-actions button:hover,
5756
+ .db-welcome-gateway-actions a:hover {
5757
+ border-color: var(--db-accent);
5758
+ background: var(--db-bg-hover);
5759
+ }
5760
+
5761
+ .db-welcome-gateway-actions .db-welcome-gateway-primary {
5762
+ border-color: var(--db-accent);
5674
5763
  background: var(--db-accent);
5675
5764
  color: var(--db-text-on-accent);
5676
- border: none;
5677
- border-radius: 6px;
5678
- cursor: pointer;
5679
- white-space: nowrap;
5680
5765
  }
5681
5766
 
5682
- .db-welcome-gateway-cta:hover {
5767
+ .db-welcome-gateway-actions .db-welcome-gateway-primary:hover {
5768
+ border-color: var(--db-accent-hover);
5683
5769
  background: var(--db-accent-hover);
5684
5770
  }
5685
5771
 
5772
+ .db-welcome-gateway-actions button:focus-visible,
5773
+ .db-welcome-gateway-actions a:focus-visible,
5774
+ .db-welcome-gateway-dismiss:focus-visible {
5775
+ outline: 2px solid var(--db-focus);
5776
+ outline-offset: 2px;
5777
+ }
5778
+
5686
5779
  .db-welcome-gateway-dismiss {
5687
- flex-shrink: 0;
5780
+ position: absolute;
5781
+ top: calc(var(--db-safe-top) + 12px);
5782
+ right: 12px;
5688
5783
  display: inline-flex;
5689
5784
  align-items: center;
5690
5785
  justify-content: center;
5691
- width: 26px;
5692
- height: 26px;
5693
- font-size: 16px;
5694
- line-height: 1;
5786
+ width: 32px;
5787
+ height: 32px;
5788
+ border: none;
5789
+ border-radius: 8px;
5695
5790
  background: transparent;
5696
5791
  color: var(--db-text-muted);
5697
- border: none;
5698
- border-radius: 6px;
5792
+ font-size: 20px;
5793
+ line-height: 1;
5699
5794
  cursor: pointer;
5700
5795
  }
5701
5796
 
@@ -5704,12 +5799,239 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5704
5799
  color: var(--db-text);
5705
5800
  }
5706
5801
 
5707
- @keyframes db-welcome-gateway-in {
5708
- from {
5709
- transform: translate(-50%, 8px);
5802
+ /* One Markdown file becoming a PDF page, a slide and a video frame on a 9 s
5803
+ loop. The frames share one stage and take turns; each label lights with
5804
+ its frame. The page and slide colors are fixed: they depict output, which
5805
+ looks the same whatever theme the app is in. */
5806
+ .db-welcome-loop {
5807
+ display: grid;
5808
+ grid-template-columns: minmax(0, 0.95fr) auto minmax(0, 1.1fr);
5809
+ align-items: center;
5810
+ gap: 14px 16px;
5811
+ }
5812
+
5813
+ .db-welcome-loop-source {
5814
+ padding: 14px 16px;
5815
+ border: 1px solid var(--db-border-strong);
5816
+ border-radius: 10px;
5817
+ background: var(--db-bg-subtle);
5818
+ box-shadow: 0 10px 28px var(--db-shadow);
5819
+ }
5820
+
5821
+ .db-welcome-loop-file {
5822
+ display: block;
5823
+ margin-bottom: 10px;
5824
+ color: var(--db-text-muted);
5825
+ font: 600 12px/1 var(--db-meta-font);
5826
+ letter-spacing: 0.04em;
5827
+ }
5828
+
5829
+ .db-welcome-loop-source code {
5830
+ display: block;
5831
+ overflow: hidden;
5832
+ color: var(--db-text-secondary);
5833
+ font: 13px/1.65 var(--db-meta-font);
5834
+ white-space: pre-wrap;
5835
+ overflow-wrap: anywhere;
5836
+ }
5837
+
5838
+ .db-welcome-loop-mark {
5839
+ color: var(--db-accent);
5840
+ }
5841
+
5842
+ .db-welcome-loop-arrow {
5843
+ color: var(--db-accent);
5844
+ font-size: 24px;
5845
+ animation: db-welcome-loop-nudge 3s ease-in-out infinite;
5846
+ }
5847
+
5848
+ .db-welcome-loop-stage {
5849
+ position: relative;
5850
+ aspect-ratio: 4 / 3;
5851
+ }
5852
+
5853
+ .db-welcome-loop-frame {
5854
+ position: absolute;
5855
+ inset: 0;
5856
+ display: flex;
5857
+ flex-direction: column;
5858
+ gap: 6px;
5859
+ margin: auto;
5860
+ padding: 18px;
5861
+ overflow: hidden;
5862
+ border-radius: 8px;
5863
+ box-shadow: 0 14px 34px var(--db-shadow);
5864
+ font-family: 'PT Serif', Georgia, 'Times New Roman', serif;
5865
+ opacity: 0;
5866
+ animation: db-welcome-loop-frame 9s ease-in-out infinite both;
5867
+ }
5868
+
5869
+ .db-welcome-loop-frame strong {
5870
+ font-size: 17px;
5871
+ line-height: 1.2;
5872
+ }
5873
+
5874
+ .db-welcome-loop-frame span {
5875
+ font-size: 11.5px;
5876
+ line-height: 1.4;
5877
+ }
5878
+
5879
+ .db-welcome-loop-frame em {
5880
+ margin-top: 4px;
5881
+ font-size: 13px;
5882
+ font-style: normal;
5883
+ font-weight: 700;
5884
+ }
5885
+
5886
+ .db-welcome-loop-frame--page {
5887
+ width: 74%;
5888
+ border: 1px solid #e3dccb;
5889
+ background: #fffdf8;
5890
+ color: #2b241c;
5891
+ }
5892
+
5893
+ .db-welcome-loop-frame--slide,
5894
+ .db-welcome-loop-frame--video {
5895
+ height: 75%;
5896
+ justify-content: center;
5897
+ background: radial-gradient(circle at 30% 20%, #5a3322, #24170f 72%);
5898
+ color: #f6ecdc;
5899
+ }
5900
+
5901
+ .db-welcome-loop-frame--slide {
5902
+ align-items: center;
5903
+ text-align: center;
5904
+ animation-delay: 3s;
5905
+ }
5906
+
5907
+ .db-welcome-loop-frame--slide strong {
5908
+ font-size: 21px;
5909
+ }
5910
+
5911
+ .db-welcome-loop-frame--video {
5912
+ justify-content: flex-start;
5913
+ animation-delay: 6s;
5914
+ }
5915
+
5916
+ .db-welcome-loop-play {
5917
+ position: absolute;
5918
+ bottom: 11px;
5919
+ left: 14px;
5920
+ font-size: 10px;
5921
+ font-style: normal;
5922
+ }
5923
+
5924
+ .db-welcome-loop-progress {
5925
+ position: absolute;
5926
+ right: 14px;
5927
+ bottom: 15px;
5928
+ left: 32px;
5929
+ height: 3px;
5930
+ border-radius: 2px;
5931
+ background: rgba(246, 236, 220, 0.25);
5932
+ }
5933
+
5934
+ .db-welcome-loop-progress::after {
5935
+ position: absolute;
5936
+ inset: 0;
5937
+ width: 0;
5938
+ border-radius: inherit;
5939
+ background: #e7a36d;
5940
+ content: '';
5941
+ animation: db-welcome-loop-progress 9s linear infinite both;
5942
+ animation-delay: 6s;
5943
+ }
5944
+
5945
+ .db-welcome-loop-labels {
5946
+ display: flex;
5947
+ grid-column: 3;
5948
+ justify-content: center;
5949
+ gap: 20px;
5950
+ margin: 0;
5951
+ padding: 0;
5952
+ color: var(--db-text-muted);
5953
+ font: 600 12px/1 var(--db-meta-font);
5954
+ letter-spacing: 0.08em;
5955
+ list-style: none;
5956
+ text-transform: uppercase;
5957
+ }
5958
+
5959
+ .db-welcome-loop-labels li {
5960
+ animation: db-welcome-loop-label 9s ease-in-out infinite both;
5961
+ }
5962
+
5963
+ .db-welcome-loop-labels li:nth-child(2) {
5964
+ animation-delay: 3s;
5965
+ }
5966
+
5967
+ .db-welcome-loop-labels li:nth-child(3) {
5968
+ animation-delay: 6s;
5969
+ }
5970
+
5971
+ @keyframes db-welcome-loop-frame {
5972
+ 0% {
5973
+ opacity: 0;
5974
+ transform: translateY(8px) scale(0.98);
5710
5975
  }
5711
- to {
5712
- transform: translate(-50%, 0);
5976
+ 4%,
5977
+ 28% {
5978
+ opacity: 1;
5979
+ transform: none;
5980
+ }
5981
+ 32%,
5982
+ 100% {
5983
+ opacity: 0;
5984
+ transform: translateY(-6px) scale(0.99);
5985
+ }
5986
+ }
5987
+
5988
+ @keyframes db-welcome-loop-label {
5989
+ 0%,
5990
+ 32%,
5991
+ 100% {
5992
+ color: var(--db-text-muted);
5993
+ }
5994
+ 4%,
5995
+ 28% {
5996
+ color: var(--db-accent);
5997
+ }
5998
+ }
5999
+
6000
+ @keyframes db-welcome-loop-progress {
6001
+ 0% {
6002
+ width: 0;
6003
+ }
6004
+ 33%,
6005
+ 100% {
6006
+ width: 100%;
6007
+ }
6008
+ }
6009
+
6010
+ @keyframes db-welcome-loop-nudge {
6011
+ 0%,
6012
+ 100% {
6013
+ transform: translateX(0);
6014
+ }
6015
+ 50% {
6016
+ transform: translateX(4px);
6017
+ }
6018
+ }
6019
+
6020
+ @media (prefers-reduced-motion: reduce) {
6021
+ /* Without motion, hold on the page: the labels still name all three. */
6022
+ .db-welcome-loop-arrow,
6023
+ .db-welcome-loop-labels li {
6024
+ animation: none;
6025
+ }
6026
+
6027
+ .db-welcome-loop-frame--page {
6028
+ opacity: 1;
6029
+ animation: none;
6030
+ }
6031
+
6032
+ .db-welcome-loop-frame--slide,
6033
+ .db-welcome-loop-frame--video {
6034
+ display: none;
5713
6035
  }
5714
6036
  }
5715
6037
 
@@ -6250,6 +6572,8 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6250
6572
 
6251
6573
  .db-text-from-narration button:not(.db-dialog-close),
6252
6574
  .db-ai-draft-dialog .db-dialog-footer button,
6575
+ .db-ai-study-dialog .db-dialog-footer button,
6576
+ .db-ai-study-saved button,
6253
6577
  .db-ai-draft-start button,
6254
6578
  .db-ai-review-panel button {
6255
6579
  min-height: var(--db-target-min);
@@ -6264,6 +6588,7 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6264
6588
 
6265
6589
  .db-text-from-narration .db-dialog-footer button:last-child,
6266
6590
  .db-ai-draft-dialog .db-dialog-footer button:last-child,
6591
+ .db-ai-study-dialog .db-dialog-footer button:last-child,
6267
6592
  .db-ai-draft-start button,
6268
6593
  .db-ai-review-finding-actions button:last-child,
6269
6594
  .db-ai-review-actions button {
@@ -6274,6 +6599,8 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6274
6599
 
6275
6600
  .db-text-from-narration button:not(.db-dialog-close):hover:not(:disabled),
6276
6601
  .db-ai-draft-dialog .db-dialog-footer button:hover:not(:disabled),
6602
+ .db-ai-study-dialog .db-dialog-footer button:hover:not(:disabled),
6603
+ .db-ai-study-saved button:hover,
6277
6604
  .db-ai-draft-start button:hover,
6278
6605
  .db-ai-review-panel button:hover:not(:disabled) {
6279
6606
  border-color: var(--db-accent-hover);
@@ -6284,6 +6611,8 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6284
6611
  .db-text-from-narration button:focus-visible,
6285
6612
  .db-text-from-narration textarea:focus-visible,
6286
6613
  .db-ai-draft-dialog .db-dialog-footer button:focus-visible,
6614
+ .db-ai-study-dialog .db-dialog-footer button:focus-visible,
6615
+ .db-ai-study-saved button:focus-visible,
6287
6616
  .db-ai-draft-start button:focus-visible,
6288
6617
  .db-ai-review-panel button:focus-visible {
6289
6618
  outline: 2px solid var(--db-focus);
@@ -6292,6 +6621,7 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6292
6621
 
6293
6622
  .db-text-from-narration button:disabled,
6294
6623
  .db-ai-draft-dialog .db-dialog-footer button:disabled,
6624
+ .db-ai-study-dialog .db-dialog-footer button:disabled,
6295
6625
  .db-ai-review-panel button:disabled {
6296
6626
  opacity: 0.5;
6297
6627
  cursor: default;
@@ -6546,6 +6876,133 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6546
6876
  cursor: pointer;
6547
6877
  }
6548
6878
 
6879
+ /* Report AI output: the flag beside each AI disclaimer and its dialog. */
6880
+ .db-ai-report-button {
6881
+ white-space: nowrap;
6882
+ }
6883
+
6884
+ .db-ai-report-intro {
6885
+ margin: 0 0 14px;
6886
+ color: var(--db-text-secondary);
6887
+ font-size: 13px;
6888
+ line-height: 1.5;
6889
+ }
6890
+
6891
+ .db-ai-report-dialog .db-settings-fieldset {
6892
+ margin-bottom: 14px;
6893
+ }
6894
+
6895
+ /* Study aids: Summarize document, Create quiz, Create flashcards. */
6896
+ .db-ai-study-dialog .db-dialog-header,
6897
+ .db-ai-study-dialog .db-dialog-footer {
6898
+ flex-shrink: 0;
6899
+ }
6900
+
6901
+ .db-ai-study-dialog .db-ai-study-footer {
6902
+ flex-direction: column;
6903
+ align-items: stretch;
6904
+ }
6905
+
6906
+ .db-ai-study-start,
6907
+ .db-ai-study-result,
6908
+ .db-ai-study-running {
6909
+ display: flex;
6910
+ flex-direction: column;
6911
+ gap: 10px;
6912
+ }
6913
+
6914
+ .db-ai-study-start p,
6915
+ .db-ai-study-result p,
6916
+ .db-ai-study-running p {
6917
+ margin: 0;
6918
+ }
6919
+
6920
+ /* In the full-height deck dialog the result fills the body, and the deck
6921
+ takes whatever the notes and disclaimer leave. */
6922
+ .db-ai-study-result {
6923
+ flex: 1 1 auto;
6924
+ min-height: 0;
6925
+ }
6926
+
6927
+ .db-ai-study-intro,
6928
+ .db-ai-study-stage,
6929
+ .db-ai-study-saved-title {
6930
+ color: var(--db-text);
6931
+ font-size: 13px;
6932
+ line-height: 1.5;
6933
+ }
6934
+
6935
+ .db-ai-study-stage,
6936
+ .db-ai-study-saved-title {
6937
+ font-weight: 600;
6938
+ }
6939
+
6940
+ .db-ai-study-saved {
6941
+ display: flex;
6942
+ flex-wrap: wrap;
6943
+ align-items: center;
6944
+ justify-content: space-between;
6945
+ gap: 10px 12px;
6946
+ padding: 10px 12px;
6947
+ border: 1px solid var(--db-border);
6948
+ border-radius: 6px;
6949
+ background: var(--db-bg-subtle);
6950
+ }
6951
+
6952
+ .db-ai-study-saved-text {
6953
+ display: grid;
6954
+ gap: 2px;
6955
+ min-width: 0;
6956
+ }
6957
+
6958
+ .db-ai-study-stale {
6959
+ color: var(--db-accent-deep);
6960
+ font-size: 12px;
6961
+ }
6962
+
6963
+ .db-ai-study-summary,
6964
+ .db-ai-study-deck {
6965
+ border: 1px solid var(--db-border);
6966
+ border-radius: 6px;
6967
+ background: var(--db-bg-subtle);
6968
+ }
6969
+
6970
+ .db-ai-study-summary {
6971
+ max-height: min(52dvh, 460px);
6972
+ overflow: auto;
6973
+ }
6974
+
6975
+ /* Squisq's compact deck fills the pane it is given and scrolls its own card,
6976
+ so the frame takes the height the dialog has left and hands all of it
6977
+ over. The minimum is what the deck's toolbar and a few card lines need;
6978
+ the body scrolls instead only when a short window cannot fit even that. */
6979
+ .db-ai-study-deck {
6980
+ display: flex;
6981
+ flex-direction: column;
6982
+ flex: 1 1 0;
6983
+ min-height: min(280px, 50dvh);
6984
+ overflow: hidden;
6985
+ }
6986
+
6987
+ .db-ai-study-deck > .squisq-flashcards {
6988
+ flex: 1 1 auto;
6989
+ height: auto;
6990
+ min-height: 0;
6991
+ }
6992
+
6993
+ /* The deck dialog spends its height on the deck. */
6994
+ .db-ai-study-dialog.db-dialog--full .db-ai-study-body {
6995
+ padding-block: 12px;
6996
+ }
6997
+
6998
+ .db-ai-study-meta {
6999
+ display: flex;
7000
+ flex-wrap: wrap;
7001
+ align-items: baseline;
7002
+ gap: 4px 12px;
7003
+ font-size: 12px;
7004
+ }
7005
+
6549
7006
  @media (prefers-reduced-motion: reduce) {
6550
7007
  .db-ai-spinner {
6551
7008
  animation: none;
@@ -7209,7 +7666,6 @@ button.db-git-file-row:hover {
7209
7666
  transition: none;
7210
7667
  }
7211
7668
 
7212
- .db-welcome-gateway,
7213
7669
  .db-save-toast {
7214
7670
  animation: none;
7215
7671
  }
@@ -7412,10 +7868,12 @@ button.db-git-file-row:hover {
7412
7868
  -webkit-app-region: no-drag;
7413
7869
  }
7414
7870
 
7415
- /* Folder and empty states do not render Squisq's toolbar. Preserve a top
7416
- drag strip in those states and keep folder content below it. */
7871
+ /* Folder and empty states do not render Squisq's toolbar, and the first-run
7872
+ welcome screen covers it. Preserve a top drag strip in those states and
7873
+ keep folder content below it. */
7417
7874
  .db-shell .db-shell-empty::before,
7418
- .db-shell .db-folder-view::before {
7875
+ .db-shell .db-folder-view::before,
7876
+ .db-shell .db-welcome-gateway::before {
7419
7877
  content: '';
7420
7878
  position: absolute;
7421
7879
  top: 0;
@@ -7430,6 +7888,11 @@ button.db-git-file-row:hover {
7430
7888
  box-sizing: border-box;
7431
7889
  padding-top: calc(24px + var(--db-wco-titlebar-height));
7432
7890
  }
7891
+
7892
+ /* Clear the caption buttons at the top right. */
7893
+ .db-shell .db-welcome-gateway-dismiss {
7894
+ top: calc(var(--db-wco-titlebar-height) + 8px);
7895
+ }
7433
7896
  }
7434
7897
 
7435
7898
  /* Transcript review shares the shell's dialog and theme tokens. */