@bendyline/docblocks-react 2.7.4 → 2.7.6

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 (27) hide show
  1. package/THIRD_PARTY_NOTICES.txt +59 -28
  2. package/dist/{AiDiagrams-QZMJNGDT.js → AiDiagrams-VOCEZS6U.js} +4 -2
  3. package/dist/{AiEditorAssistant-4HFFGVU4.js → AiEditorAssistant-2MW6UYNI.js} +51 -11
  4. package/dist/{AiStudyDialog-P3E7PJV5.js → AiStudyDialog-DQZVTBI7.js} +14 -4
  5. package/dist/{AudioExportDialog-IOYIEAER.js → AudioExportDialog-EICCBSSE.js} +1 -1
  6. package/dist/{ExportToolbarControls-HOV424TO.js → ExportToolbarControls-4LYTXGT3.js} +1 -1
  7. package/dist/{PresentationMaker-MUMFAXEI.js → PresentationMaker-T526TBRJ.js} +2 -2
  8. package/dist/{SpeechToolbarControl-KNI2C4JJ.js → SpeechToolbarControl-E6OSJGHL.js} +217 -71
  9. package/dist/{TextFromNarration-EYOMW2IW.js → TextFromNarration-ME6FAYWO.js} +1 -1
  10. package/dist/{WorkspaceSearchPanel-J6BKEZQJ.js → WorkspaceSearchPanel-MEBBTK7F.js} +3 -3
  11. package/dist/{chunk-I44HKDQX.js → chunk-3TSJQESW.js} +16 -3
  12. package/dist/chunk-45YTIVYS.js +1162 -0
  13. package/dist/{chunk-FBPCURCS.js → chunk-7HBKKXRV.js} +291 -82
  14. package/dist/{chunk-KBDZDFPU.js → chunk-BNKIPCXO.js} +4 -1
  15. package/dist/{chunk-2IYBBFQX.js → chunk-BZRYQENB.js} +59 -16
  16. package/dist/{chunk-DICE7VBJ.js → chunk-KHQ44ZFA.js} +16 -1
  17. package/dist/chunk-NOYDVL6M.js +180 -0
  18. package/dist/{chunk-PNZFIIWW.js → chunk-PRUEYW3G.js} +23 -5
  19. package/dist/{chunk-7V34VUK6.js → chunk-T42BH6YX.js} +128 -103
  20. package/dist/editor.js +2 -2
  21. package/dist/index.d.ts +7 -2
  22. package/dist/index.js +817 -710
  23. package/dist/settings/index.js +2 -1
  24. package/package.json +8 -8
  25. package/src/styles/docblocks.css +542 -16
  26. package/dist/chunk-D4HIOS7E.js +0 -812
  27. package/dist/{QuickOpenDialog-ENVFGIHS.js → QuickOpenDialog-3QEX7RZG.js} +3 -3
@@ -16,7 +16,8 @@ import {
16
16
  resolveWriteCanvasFonts,
17
17
  saveInterfaceFont,
18
18
  saveProofingPreferences
19
- } from "../chunk-FBPCURCS.js";
19
+ } from "../chunk-7HBKKXRV.js";
20
+ import "../chunk-TBLZBNQF.js";
20
21
  import "../chunk-VJPGZCFS.js";
21
22
  export {
22
23
  AccentColorSettings,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/docblocks-react",
3
- "version": "2.7.4",
3
+ "version": "2.7.6",
4
4
  "description": "React components for DocBlocks — file explorer, workspace picker, and editor shell",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -85,14 +85,14 @@
85
85
  }
86
86
  },
87
87
  "dependencies": {
88
- "@bendyline/docblocks": "2.7.4",
89
- "@bendyline/squisq": "2.12.5",
88
+ "@bendyline/docblocks": "2.7.6",
89
+ "@bendyline/squisq": "2.13.0",
90
90
  "@bendyline/squisq-calc": "2.11.2",
91
- "@bendyline/squisq-editor-react": "2.12.10",
92
- "@bendyline/squisq-formats": "2.7.6",
93
- "@bendyline/squisq-react": "2.12.6",
94
- "@bendyline/squisq-video": "2.4.5",
95
- "@bendyline/squisq-video-react": "2.5.7",
91
+ "@bendyline/squisq-editor-react": "2.13.2",
92
+ "@bendyline/squisq-formats": "2.8.1",
93
+ "@bendyline/squisq-react": "2.12.9",
94
+ "@bendyline/squisq-video": "2.4.6",
95
+ "@bendyline/squisq-video-react": "2.5.10",
96
96
  "lucide-react": "1.52.0",
97
97
  "qrcode": "1.5.4"
98
98
  },
@@ -993,6 +993,9 @@
993
993
  .db-tree-context {
994
994
  position: fixed;
995
995
  z-index: 1000;
996
+ /* Portaled onto <body>, outside .db-shell, where no font is set; the items
997
+ inherit theirs, so without this they render in the browser's serif. */
998
+ font-family: var(--db-ui-font);
996
999
  background: var(--db-bg-raised);
997
1000
  border: 1px solid var(--db-border);
998
1001
  border-radius: 4px;
@@ -2057,10 +2060,25 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
2057
2060
  .db-shell--desktop-toolbar-wrapped:not(.db-shell--mobile) .squisq-toolbar {
2058
2061
  min-height: calc(var(--db-toolbar-wrapped-row) * 2);
2059
2062
  flex-wrap: wrap;
2060
- align-content: stretch;
2063
+ align-content: flex-start;
2064
+ /* Squisq's 1px item gap would otherwise also open between the two rows. */
2065
+ row-gap: 0;
2061
2066
  padding-right: var(--db-toolbar-wrapped-inline-end);
2062
2067
  }
2063
2068
 
2069
+ /* A flex line is only as tall as its tallest item, which on the second row is
2070
+ a 28px button, and stretching the lines splits the leftover height between
2071
+ both of them, so the controls sat below the row's center by half of it.
2072
+ This zero-width strut holds the second line open to a full row instead. It
2073
+ is the last item, so it lands there whatever the current mode renders; its
2074
+ negative margin cancels the 1px column gap so the right edge stays put. */
2075
+ .db-shell--desktop-toolbar-wrapped:not(.db-shell--mobile) .squisq-toolbar::after {
2076
+ content: '';
2077
+ flex: 0 0 0;
2078
+ height: var(--db-toolbar-wrapped-second-row, var(--db-toolbar-wrapped-row));
2079
+ margin-inline-start: -1px;
2080
+ }
2081
+
2064
2082
  /* The tab row spans the whole toolbar, padding included, so its surface runs
2065
2083
  edge to edge and its right-hand divider (which separated it from the
2066
2084
  formatting controls when they shared a row) has nothing left to divide. */
@@ -2251,6 +2269,9 @@ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
2251
2269
  box-sizing: border-box;
2252
2270
  padding: 16px;
2253
2271
  background: rgba(0, 0, 0, 0.4);
2272
+ /* The AI, presentation and narration dialogs portal onto <body>, outside
2273
+ .db-shell; give them the chrome face the shell would have. */
2274
+ font-family: var(--db-ui-font);
2254
2275
  }
2255
2276
 
2256
2277
  /* Palette-style dialogs (quick-open) sit near the top, where the eye already is. */
@@ -5845,9 +5866,13 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5845
5866
  animation: db-welcome-loop-nudge 3s ease-in-out infinite;
5846
5867
  }
5847
5868
 
5869
+ /* The stage is a container so the slide and video frames can size their type
5870
+ against it (cqi) rather than in pixels: like a real slide, the words fill
5871
+ the canvas at whatever width the welcome screen gives it. */
5848
5872
  .db-welcome-loop-stage {
5849
5873
  position: relative;
5850
5874
  aspect-ratio: 4 / 3;
5875
+ container-type: inline-size;
5851
5876
  }
5852
5877
 
5853
5878
  .db-welcome-loop-frame {
@@ -5890,10 +5915,15 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5890
5915
  color: #2b241c;
5891
5916
  }
5892
5917
 
5918
+ /* 16:9 frames, so 100cqi wide by 56.25cqi tall. Their type is in cqi to keep
5919
+ presentation proportions at every stage size. */
5893
5920
  .db-welcome-loop-frame--slide,
5894
5921
  .db-welcome-loop-frame--video {
5922
+ box-sizing: border-box;
5895
5923
  height: 75%;
5896
5924
  justify-content: center;
5925
+ gap: 2cqi;
5926
+ padding: 6cqi 8cqi;
5897
5927
  background: radial-gradient(circle at 30% 20%, #5a3322, #24170f 72%);
5898
5928
  color: #f6ecdc;
5899
5929
  }
@@ -5905,14 +5935,32 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5905
5935
  }
5906
5936
 
5907
5937
  .db-welcome-loop-frame--slide strong {
5908
- font-size: 21px;
5938
+ font-size: 7cqi;
5939
+ text-wrap: balance;
5909
5940
  }
5910
5941
 
5942
+ .db-welcome-loop-frame--slide span {
5943
+ font-size: 4cqi;
5944
+ }
5945
+
5946
+ /* The bottom padding keeps the list centered in the picture above the
5947
+ player controls. */
5911
5948
  .db-welcome-loop-frame--video {
5912
- justify-content: flex-start;
5949
+ padding-bottom: 12cqi;
5913
5950
  animation-delay: 6s;
5914
5951
  }
5915
5952
 
5953
+ .db-welcome-loop-frame--video em {
5954
+ margin: 0 0 1cqi;
5955
+ font-size: 8.5cqi;
5956
+ line-height: 1.15;
5957
+ }
5958
+
5959
+ .db-welcome-loop-frame--video span {
5960
+ font-size: 5.75cqi;
5961
+ line-height: 1.3;
5962
+ }
5963
+
5916
5964
  .db-welcome-loop-play {
5917
5965
  position: absolute;
5918
5966
  bottom: 11px;
@@ -6436,8 +6484,12 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6436
6484
  gap: 8px;
6437
6485
  }
6438
6486
 
6439
- /* Status has its own row, so errors cannot steal space from the actions. */
6487
+ /* Status has its own row, so errors cannot steal space from the actions. The
6488
+ footer is a wrapping column, which sizes each row to its content: a definite
6489
+ width keeps a one-line knowledge pill from widening it, and keeps text from
6490
+ being measured at a narrower width than it is shown at. */
6440
6491
  .db-ai-footer-status {
6492
+ width: 100%;
6441
6493
  min-width: 0;
6442
6494
  overflow-wrap: anywhere;
6443
6495
  }
@@ -6570,6 +6622,115 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6570
6622
  }
6571
6623
  }
6572
6624
 
6625
+ /* Knowledge indicator: whether the person's knowledge catalogs informed the
6626
+ output. A pill that opens to list the cited articles, or to say why none. */
6627
+ .db-ai-knowledge {
6628
+ max-width: 100%;
6629
+ margin: 6px 0;
6630
+ color: var(--db-text-secondary);
6631
+ font-size: 12px;
6632
+ font-weight: 400;
6633
+ }
6634
+
6635
+ .db-ai-knowledge > summary {
6636
+ display: inline-flex;
6637
+ align-items: center;
6638
+ gap: 5px;
6639
+ max-width: 100%;
6640
+ box-sizing: border-box;
6641
+ padding: 2px 9px;
6642
+ border: 1px solid var(--db-border);
6643
+ border-radius: 999px;
6644
+ cursor: pointer;
6645
+ list-style: none;
6646
+ }
6647
+
6648
+ .db-ai-knowledge > summary::-webkit-details-marker {
6649
+ display: none;
6650
+ }
6651
+
6652
+ .db-ai-knowledge > summary:hover {
6653
+ background: var(--db-bg-hover);
6654
+ }
6655
+
6656
+ .db-ai-knowledge > summary:focus-visible {
6657
+ outline: 2px solid var(--db-focus);
6658
+ outline-offset: 2px;
6659
+ }
6660
+
6661
+ .db-ai-knowledge--used > summary {
6662
+ border-color: var(--db-accent);
6663
+ background: var(--db-badge-bg);
6664
+ color: var(--db-badge-text);
6665
+ }
6666
+
6667
+ .db-ai-knowledge--used > summary:hover {
6668
+ color: var(--db-badge-text-hover);
6669
+ }
6670
+
6671
+ .db-ai-knowledge-names {
6672
+ min-width: 0;
6673
+ overflow: hidden;
6674
+ text-overflow: ellipsis;
6675
+ white-space: nowrap;
6676
+ }
6677
+
6678
+ .db-ai-knowledge-count {
6679
+ flex: none;
6680
+ white-space: pre;
6681
+ }
6682
+
6683
+ .db-ai-knowledge p,
6684
+ .db-ai-knowledge ul {
6685
+ margin: 6px 0 0;
6686
+ color: var(--db-text-muted);
6687
+ }
6688
+
6689
+ .db-ai-knowledge ul {
6690
+ padding-left: 18px;
6691
+ color: var(--db-text-secondary);
6692
+ }
6693
+
6694
+ /* A run can cite many articles; a list scrolls rather than pushing the actions away. */
6695
+ .db-ai-knowledge-source {
6696
+ max-height: 8.5em;
6697
+ overflow: auto;
6698
+ }
6699
+
6700
+ .db-ai-knowledge .db-ai-knowledge-catalog {
6701
+ color: var(--db-text-secondary);
6702
+ font-weight: 600;
6703
+ }
6704
+
6705
+ /* Facts to check: details in AI output that no source shows. */
6706
+ .db-ai-facts > summary {
6707
+ border-color: var(--db-danger);
6708
+ }
6709
+
6710
+ .db-ai-facts > summary svg {
6711
+ color: var(--db-danger);
6712
+ }
6713
+
6714
+ .db-ai-facts ul {
6715
+ max-height: 10em;
6716
+ overflow: auto;
6717
+ }
6718
+
6719
+ .db-ai-facts li + li {
6720
+ margin-top: 4px;
6721
+ }
6722
+
6723
+ .db-ai-facts mark {
6724
+ padding: 0;
6725
+ background: none;
6726
+ color: var(--db-danger);
6727
+ font-weight: 600;
6728
+ }
6729
+
6730
+ .db-ai-review-knowledge {
6731
+ padding: 10px 14px 0;
6732
+ }
6733
+
6573
6734
  .db-text-from-narration button:not(.db-dialog-close),
6574
6735
  .db-ai-draft-dialog .db-dialog-footer button,
6575
6736
  .db-ai-study-dialog .db-dialog-footer button,
@@ -6773,27 +6934,240 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6773
6934
  margin-top: 10px;
6774
6935
  }
6775
6936
 
6776
- .db-settings-ai-knowledge-list {
6777
- list-style: none;
6937
+ .db-settings-ai-knowledge-actions {
6938
+ display: flex;
6939
+ flex-wrap: wrap;
6940
+ align-items: center;
6941
+ gap: 8px;
6942
+ }
6943
+
6944
+ .db-settings-ai-knowledge progress {
6945
+ max-width: 100%;
6946
+ }
6947
+
6948
+ /* Knowledge catalogs: the downloaded ones sit together in one bin, each row a
6949
+ disclosure that starts collapsed; adding one happens in its own dialog. */
6950
+ .db-knowledge-bin {
6951
+ margin-top: 10px;
6952
+ border: 1px solid var(--db-border);
6953
+ border-radius: 6px;
6954
+ background: var(--db-bg-subtle);
6955
+ overflow-wrap: anywhere;
6956
+ }
6957
+
6958
+ .db-knowledge-bin-header {
6959
+ display: flex;
6960
+ flex-wrap: wrap;
6961
+ align-items: center;
6962
+ gap: 8px;
6963
+ padding: 8px 8px 8px 12px;
6964
+ border-bottom: 1px solid var(--db-border);
6965
+ }
6966
+
6967
+ .db-knowledge-bin-title {
6968
+ margin: 0;
6969
+ color: var(--db-text);
6970
+ font-size: 13px;
6971
+ font-weight: 600;
6972
+ }
6973
+
6974
+ .db-knowledge-bin-count {
6975
+ min-width: 18px;
6976
+ box-sizing: border-box;
6977
+ padding: 0 6px;
6978
+ border: 1px solid var(--db-border);
6979
+ border-radius: 9px;
6980
+ background: var(--db-bg-raised);
6981
+ color: var(--db-text-secondary);
6982
+ font-size: 11px;
6983
+ line-height: 16px;
6984
+ text-align: center;
6985
+ }
6986
+
6987
+ .db-knowledge-bin-header .db-settings-action {
6988
+ margin: 0 0 0 auto;
6989
+ padding: 4px 10px;
6990
+ }
6991
+
6992
+ .db-knowledge-bin .db-knowledge-bin-empty {
6993
+ margin: 0;
6994
+ padding: 12px;
6995
+ }
6996
+
6997
+ .db-knowledge-bin-list {
6778
6998
  margin: 0;
6779
6999
  padding: 0;
7000
+ list-style: none;
6780
7001
  }
6781
7002
 
6782
- .db-settings-ai-knowledge-list > li {
7003
+ .db-knowledge-item + .db-knowledge-item {
6783
7004
  border-top: 1px solid var(--db-border);
6784
- padding-block: 12px;
6785
- overflow-wrap: anywhere;
6786
7005
  }
6787
7006
 
6788
- .db-settings-ai-knowledge-actions {
7007
+ .db-knowledge-item-toggle {
7008
+ display: flex;
7009
+ align-items: center;
7010
+ gap: 10px;
7011
+ box-sizing: border-box;
7012
+ width: 100%;
7013
+ padding: 9px 12px;
7014
+ border: none;
7015
+ background: transparent;
7016
+ color: var(--db-text);
7017
+ font: inherit;
7018
+ font-size: 13px;
7019
+ text-align: left;
7020
+ cursor: pointer;
7021
+ }
7022
+
7023
+ .db-knowledge-item:last-child .db-knowledge-item-toggle:not([aria-expanded='true']) {
7024
+ border-radius: 0 0 5px 5px;
7025
+ }
7026
+
7027
+ .db-knowledge-item-toggle:hover {
7028
+ background: var(--db-bg-hover);
7029
+ }
7030
+
7031
+ .db-knowledge-item-toggle:focus-visible {
7032
+ outline: 2px solid var(--db-focus, var(--db-accent));
7033
+ outline-offset: -2px;
7034
+ }
7035
+
7036
+ /* Points right while collapsed, down while open. */
7037
+ .db-knowledge-item-caret {
7038
+ flex: 0 0 auto;
7039
+ width: 6px;
7040
+ height: 6px;
7041
+ border-right: 2px solid currentColor;
7042
+ border-bottom: 2px solid currentColor;
7043
+ color: var(--db-text-muted);
7044
+ transform: rotate(-45deg);
7045
+ transition: transform 120ms ease;
7046
+ }
7047
+
7048
+ .db-knowledge-item-caret--open {
7049
+ transform: rotate(45deg);
7050
+ }
7051
+
7052
+ .db-knowledge-item-name {
7053
+ flex: 1 1 auto;
7054
+ min-width: 0;
7055
+ font-weight: 600;
7056
+ }
7057
+
7058
+ .db-knowledge-item-summary {
7059
+ flex: 0 1 auto;
7060
+ color: var(--db-text-muted);
7061
+ font-size: 12px;
7062
+ text-align: right;
7063
+ }
7064
+
7065
+ .db-knowledge-item-summary--error {
7066
+ color: var(--db-danger);
7067
+ }
7068
+
7069
+ /* Indented to line up with the catalog name, past the caret. */
7070
+ .db-knowledge-item-body {
7071
+ padding: 0 12px 12px 30px;
7072
+ }
7073
+
7074
+ .db-knowledge-item-body p {
7075
+ margin: 0 0 6px;
7076
+ }
7077
+
7078
+ .db-knowledge-item-body [role='group'] {
7079
+ margin-top: 10px;
7080
+ }
7081
+
7082
+ /* The add dialog keeps one height while a search narrows the list, and only
7083
+ the list scrolls, so the search field stays in reach. */
7084
+ .db-knowledge-add-dialog {
7085
+ height: min(calc(100dvh - 32px), 560px);
7086
+ }
7087
+
7088
+ .db-knowledge-add-body {
7089
+ display: flex;
7090
+ flex: 1;
7091
+ flex-direction: column;
7092
+ overflow: hidden;
7093
+ }
7094
+
7095
+ /* The footer sits outside the dialog body's 13px, so its settings actions
7096
+ would otherwise inherit the page's 16px. */
7097
+ .db-knowledge-add-dialog .db-dialog-footer {
7098
+ font-size: 13px;
7099
+ }
7100
+
7101
+ .db-knowledge-add-dialog .db-dialog-footer .db-settings-action {
7102
+ margin-top: 0;
7103
+ }
7104
+
7105
+ .db-knowledge-search {
7106
+ margin-bottom: 8px;
7107
+ }
7108
+
7109
+ .db-knowledge-catalog-list {
7110
+ display: grid;
7111
+ flex: 1 1 auto;
7112
+ align-content: start;
7113
+ gap: 8px;
7114
+ min-height: 0;
7115
+ margin: 0;
7116
+ /* Room for focus rings at the scroll edges. */
7117
+ padding: 2px;
7118
+ overflow-y: auto;
7119
+ list-style: none;
7120
+ }
7121
+
7122
+ .db-knowledge-catalog {
6789
7123
  display: flex;
6790
7124
  flex-wrap: wrap;
7125
+ align-items: flex-start;
7126
+ gap: 8px 16px;
7127
+ padding: 12px;
7128
+ border: 1px solid var(--db-border);
7129
+ border-radius: 6px;
7130
+ background: var(--db-bg-subtle);
7131
+ overflow-wrap: anywhere;
7132
+ }
7133
+
7134
+ .db-knowledge-catalog-text {
7135
+ flex: 1 1 240px;
7136
+ min-width: 0;
7137
+ }
7138
+
7139
+ .db-knowledge-catalog-name {
7140
+ display: block;
7141
+ margin-bottom: 2px;
7142
+ color: var(--db-text);
7143
+ font-size: 13px;
7144
+ }
7145
+
7146
+ .db-knowledge-catalog p {
7147
+ margin: 0 0 4px;
7148
+ }
7149
+
7150
+ .db-knowledge-catalog-action {
7151
+ display: flex;
7152
+ flex: 0 0 auto;
6791
7153
  align-items: center;
6792
7154
  gap: 8px;
6793
7155
  }
6794
7156
 
6795
- .db-settings-ai-knowledge progress {
7157
+ .db-knowledge-catalog-action .db-settings-action {
7158
+ margin-top: 0;
7159
+ }
7160
+
7161
+ .db-knowledge-catalog-action progress {
7162
+ width: 96px;
6796
7163
  max-width: 100%;
7164
+ accent-color: var(--db-accent);
7165
+ }
7166
+
7167
+ .db-knowledge-catalog-added {
7168
+ color: var(--db-accent-deep);
7169
+ font-size: 12px;
7170
+ font-weight: 600;
6797
7171
  }
6798
7172
 
6799
7173
  .db-ai-review-disclaimer {
@@ -6823,11 +7197,152 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6823
7197
  font: inherit;
6824
7198
  }
6825
7199
 
7200
+ /* The Illustrate panel's two steps: ideas to edit, then pictures to insert. */
7201
+ .db-ai-illustrate-steps ol {
7202
+ display: flex;
7203
+ gap: 6px;
7204
+ margin: 0;
7205
+ padding: 10px 14px 0;
7206
+ list-style: none;
7207
+ }
7208
+
7209
+ .db-ai-illustrate-steps li {
7210
+ flex: 1 1 0;
7211
+ min-width: 0;
7212
+ }
7213
+
7214
+ .db-ai-review-panel .db-ai-illustrate-steps button {
7215
+ display: flex;
7216
+ align-items: center;
7217
+ gap: 7px;
7218
+ width: 100%;
7219
+ border-color: var(--db-border);
7220
+ background: transparent;
7221
+ color: var(--db-text-muted);
7222
+ }
7223
+
7224
+ .db-ai-review-panel .db-ai-illustrate-steps button[aria-current='step'] {
7225
+ border-color: var(--db-accent);
7226
+ background: var(--db-accent-soft-08);
7227
+ color: var(--db-text);
7228
+ }
7229
+
7230
+ .db-ai-step-number {
7231
+ display: inline-grid;
7232
+ place-items: center;
7233
+ width: 18px;
7234
+ height: 18px;
7235
+ flex: 0 0 18px;
7236
+ box-sizing: border-box;
7237
+ border: 1px solid var(--db-border-strong);
7238
+ border-radius: 50%;
7239
+ font-size: 11px;
7240
+ }
7241
+
7242
+ [aria-current='step'] > .db-ai-step-number {
7243
+ border-color: var(--db-accent);
7244
+ background: var(--db-accent);
7245
+ color: var(--db-text-on-accent);
7246
+ }
7247
+
7248
+ .db-ai-illustrate-intro {
7249
+ margin: 10px 14px 0;
7250
+ color: var(--db-text-muted);
7251
+ font-size: 12px;
7252
+ }
7253
+
7254
+ .db-ai-illustrate-bar {
7255
+ display: flex;
7256
+ flex-wrap: wrap;
7257
+ align-items: center;
7258
+ gap: 8px;
7259
+ padding: 10px 14px 0;
7260
+ }
7261
+
7262
+ .db-ai-illustrate-progress {
7263
+ display: inline-flex;
7264
+ align-items: center;
7265
+ flex-wrap: wrap;
7266
+ gap: 8px;
7267
+ min-width: 0;
7268
+ min-height: var(--db-target-min);
7269
+ color: var(--db-text-secondary);
7270
+ font: 600 12px/1.2 var(--db-ui-font);
7271
+ }
7272
+
7273
+ .db-ai-illustrate-progress progress {
7274
+ width: 90px;
7275
+ height: 6px;
7276
+ accent-color: var(--db-accent);
7277
+ }
7278
+
7279
+ .db-ai-review-panel button.db-ai-illustrate-primary {
7280
+ border-color: var(--db-accent);
7281
+ background: var(--db-accent);
7282
+ color: var(--db-text-on-accent);
7283
+ }
7284
+
6826
7285
  .db-ai-illustrate-footer {
6827
7286
  position: sticky;
6828
7287
  bottom: 0;
6829
- padding-bottom: 10px;
6830
- background: var(--db-bg);
7288
+ display: flex;
7289
+ flex-wrap: wrap;
7290
+ align-items: center;
7291
+ justify-content: flex-end;
7292
+ gap: 8px;
7293
+ padding: 10px 14px;
7294
+ border-top: 1px solid var(--db-border);
7295
+ background: var(--db-bg-raised);
7296
+ }
7297
+
7298
+ .db-ai-idea-card .db-ai-field {
7299
+ gap: 4px;
7300
+ margin-bottom: 10px;
7301
+ font-size: 12px;
7302
+ }
7303
+
7304
+ .db-ai-idea-card .db-ai-field textarea {
7305
+ min-height: 64px;
7306
+ }
7307
+
7308
+ .db-ai-idea-card input,
7309
+ .db-ai-idea-card select {
7310
+ box-sizing: border-box;
7311
+ width: 100%;
7312
+ min-width: 0;
7313
+ min-height: var(--db-target-min);
7314
+ padding: 5px 8px;
7315
+ border: 1px solid var(--db-input-border);
7316
+ border-radius: 5px;
7317
+ background: var(--db-bg-subtle);
7318
+ color: var(--db-text);
7319
+ font: 400 var(--db-input-font-size) / 1.3 var(--db-ui-font);
7320
+ }
7321
+
7322
+ .db-ai-idea-card input:focus-visible,
7323
+ .db-ai-idea-card select:focus-visible {
7324
+ border-color: var(--db-accent);
7325
+ outline: none;
7326
+ box-shadow: 0 0 0 1px var(--db-accent);
7327
+ }
7328
+
7329
+ .db-ai-idea-card :is(input, select, textarea):disabled {
7330
+ opacity: 0.6;
7331
+ }
7332
+
7333
+ .db-ai-idea-row {
7334
+ display: grid;
7335
+ grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
7336
+ gap: 8px;
7337
+ }
7338
+
7339
+ .db-ai-idea-state {
7340
+ margin-left: auto;
7341
+ }
7342
+
7343
+ .db-ai-idea-actions {
7344
+ display: flex;
7345
+ justify-content: flex-end;
6831
7346
  }
6832
7347
 
6833
7348
  .db-ai-field--inline {
@@ -6892,6 +7407,13 @@ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
6892
7407
  margin-bottom: 14px;
6893
7408
  }
6894
7409
 
7410
+ /* Public issue, private email, Cancel: stacked full width, since the
7411
+ destinations need their whole labels to say where the report goes. */
7412
+ .db-ai-report-dialog .db-ai-report-footer {
7413
+ flex-direction: column;
7414
+ align-items: stretch;
7415
+ }
7416
+
6895
7417
  /* Study aids: Summarize document, Create quiz, Create flashcards. */
6896
7418
  .db-ai-study-dialog .db-dialog-header,
6897
7419
  .db-ai-study-dialog .db-dialog-footer {
@@ -7658,6 +8180,7 @@ button.db-git-file-row:hover {
7658
8180
  @media (prefers-reduced-motion: reduce) {
7659
8181
  .db-workspace-picker-caret,
7660
8182
  .db-app-menu-caret,
8183
+ .db-knowledge-item-caret,
7661
8184
  .db-ws-settings-btn,
7662
8185
  .db-shell-sidebar-resizer,
7663
8186
  .db-sidebar-collapse-preview,
@@ -7870,15 +8393,18 @@ button.db-git-file-row:hover {
7870
8393
 
7871
8394
  /* Folder and empty states do not render Squisq's toolbar, and the first-run
7872
8395
  welcome screen covers it. Preserve a top drag strip in those states and
7873
- keep folder content below it. */
8396
+ keep folder content below it. The titlebar-area values are measured from
8397
+ the window, but these panes start after the sidebar: span the pane and
8398
+ reserve only the caption-button inset on the right, or the strip
8399
+ overhangs the pane and the welcome screen scrolls sideways. */
7874
8400
  .db-shell .db-shell-empty::before,
7875
8401
  .db-shell .db-folder-view::before,
7876
8402
  .db-shell .db-welcome-gateway::before {
7877
8403
  content: '';
7878
8404
  position: absolute;
7879
8405
  top: 0;
7880
- left: env(titlebar-area-x, 0px);
7881
- width: env(titlebar-area-width, 100%);
8406
+ left: 0;
8407
+ right: max(0px, calc(100vw - env(titlebar-area-x, 0px) - env(titlebar-area-width, 100vw)));
7882
8408
  height: var(--db-wco-titlebar-height);
7883
8409
  app-region: drag;
7884
8410
  -webkit-app-region: drag;