@bendyline/docblocks-react 2.2.0 → 2.2.2

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.
@@ -198,6 +198,136 @@
198
198
  gap: 2px;
199
199
  }
200
200
 
201
+ .db-pinned-documents {
202
+ display: flex;
203
+ flex-direction: column;
204
+ flex: 0 1 auto;
205
+ min-height: 0;
206
+ max-height: 38%;
207
+ overflow: hidden;
208
+ border-bottom: 1px solid var(--db-border-strong);
209
+ background: var(--db-bg-subtle);
210
+ }
211
+
212
+ .db-pinned-documents-title {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 6px;
216
+ margin: 0;
217
+ padding: 8px 10px 5px;
218
+ }
219
+
220
+ .db-pinned-documents-title i {
221
+ font-size: 10px;
222
+ }
223
+
224
+ .db-pinned-document-list {
225
+ min-height: 0;
226
+ overflow-y: auto;
227
+ padding: 0 0 4px;
228
+ scrollbar-color: var(--db-accent) var(--db-bg-subtle);
229
+ scrollbar-width: thin;
230
+ }
231
+
232
+ .db-pinned-document-row {
233
+ position: relative;
234
+ display: flex;
235
+ align-items: stretch;
236
+ }
237
+
238
+ .db-pinned-document {
239
+ display: flex;
240
+ align-items: center;
241
+ flex: 1;
242
+ gap: 7px;
243
+ min-width: 0;
244
+ padding: 6px 4px 6px 10px;
245
+ border: 0;
246
+ background: transparent;
247
+ color: var(--db-text);
248
+ font: inherit;
249
+ text-align: left;
250
+ cursor: pointer;
251
+ }
252
+
253
+ .db-pinned-document-row:hover,
254
+ .db-pinned-document-row:has(:focus-visible) {
255
+ background: var(--db-bg-hover);
256
+ }
257
+
258
+ .db-pinned-document:focus-visible {
259
+ outline: 2px solid var(--db-focus);
260
+ outline-offset: -2px;
261
+ }
262
+
263
+ .db-pinned-document-row--selected,
264
+ .db-pinned-document-row--selected:hover,
265
+ .db-pinned-document-row--selected:has(:focus-visible) {
266
+ --db-focus: #ffffff;
267
+ background: var(--db-bg-selected);
268
+ color: var(--db-text-on-selected);
269
+ }
270
+
271
+ .db-pinned-document-more {
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ flex: 0 0 30px;
276
+ min-width: 30px;
277
+ border: 0;
278
+ background: transparent;
279
+ color: inherit;
280
+ cursor: pointer;
281
+ opacity: 0.72;
282
+ }
283
+
284
+ .db-pinned-document-more:hover,
285
+ .db-pinned-document-more--active {
286
+ opacity: 1;
287
+ }
288
+
289
+ .db-pinned-document-more:focus-visible {
290
+ outline: 2px solid var(--db-focus);
291
+ outline-offset: -2px;
292
+ }
293
+
294
+ .db-pinned-document-heading {
295
+ min-width: 0;
296
+ display: flex;
297
+ flex: 1;
298
+ align-items: baseline;
299
+ gap: 6px;
300
+ }
301
+
302
+ .db-pinned-document-name {
303
+ flex: 1;
304
+ min-width: 0;
305
+ overflow: hidden;
306
+ text-overflow: ellipsis;
307
+ white-space: nowrap;
308
+ }
309
+
310
+ .db-pinned-document-missing {
311
+ flex: 0 0 auto;
312
+ color: var(--db-danger);
313
+ font-size: 11px;
314
+ }
315
+
316
+ .db-pinned-document-row--selected .db-pinned-document-missing {
317
+ color: inherit;
318
+ opacity: 0.82;
319
+ }
320
+
321
+ .db-pinned-document-error {
322
+ position: absolute;
323
+ z-index: 1;
324
+ top: 100%;
325
+ right: 4px;
326
+ left: 4px;
327
+ margin: 0;
328
+ background: var(--db-bg);
329
+ }
330
+
201
331
  .db-explorer-btn {
202
332
  width: 24px;
203
333
  height: 24px;
@@ -411,6 +541,34 @@
411
541
  flex: 1;
412
542
  overflow-y: auto;
413
543
  padding: 2px 0;
544
+ scrollbar-color: var(--db-accent) var(--db-bg);
545
+ scrollbar-width: thin;
546
+ }
547
+
548
+ .db-tree::-webkit-scrollbar {
549
+ width: 12px;
550
+ }
551
+
552
+ .db-tree::-webkit-scrollbar-track,
553
+ .db-tree::-webkit-scrollbar-corner {
554
+ background: var(--db-bg);
555
+ }
556
+
557
+ .db-tree::-webkit-scrollbar-thumb {
558
+ min-height: 32px;
559
+ background: var(--db-accent);
560
+ border: 3px solid var(--db-bg);
561
+ border-radius: 999px;
562
+ }
563
+
564
+ .db-tree::-webkit-scrollbar-thumb:hover {
565
+ background: var(--db-accent-hover);
566
+ }
567
+
568
+ .db-tree::-webkit-scrollbar-button {
569
+ display: none;
570
+ width: 0;
571
+ height: 0;
414
572
  }
415
573
 
416
574
  .db-tree-loading,
@@ -429,6 +587,10 @@
429
587
  font-size: 12px;
430
588
  }
431
589
 
590
+ .db-tree-error--child {
591
+ margin-left: 24px;
592
+ }
593
+
432
594
  .db-tree-error-retry {
433
595
  border: 0;
434
596
  padding: 0;
@@ -555,11 +717,18 @@
555
717
 
556
718
  .db-tree-row:hover .db-tree-more,
557
719
  .db-tree-row:focus-within .db-tree-more,
720
+ .db-tree-row--selected .db-tree-more,
558
721
  .db-tree-more:focus-visible,
559
722
  .db-tree-more--active {
560
723
  visibility: visible;
561
724
  }
562
725
 
726
+ @media (hover: none), (pointer: coarse) {
727
+ .db-tree-more {
728
+ visibility: visible;
729
+ }
730
+ }
731
+
563
732
  .db-tree-more:hover {
564
733
  background: var(--db-bg-hover);
565
734
  color: var(--db-text);
@@ -1173,15 +1342,13 @@ body.db-resizing-sidebar * {
1173
1342
  }
1174
1343
 
1175
1344
  .db-shell-sidebar-footer-action {
1176
- min-width: 0;
1345
+ flex-shrink: 0;
1177
1346
  padding: 0;
1178
- overflow: hidden;
1179
1347
  border: 0;
1180
1348
  background: transparent;
1181
1349
  font: inherit;
1182
1350
  line-height: inherit;
1183
1351
  text-decoration: underline;
1184
- text-overflow: ellipsis;
1185
1352
  white-space: nowrap;
1186
1353
  cursor: pointer;
1187
1354
  }
@@ -1600,6 +1767,21 @@ body.db-resizing-sidebar * {
1600
1767
  gap: 6px;
1601
1768
  }
1602
1769
 
1770
+ .db-about-beta {
1771
+ margin-bottom: 10px;
1772
+ padding: 10px 12px;
1773
+ border: 1px solid var(--db-accent);
1774
+ border-radius: 6px;
1775
+ background: var(--db-accent-soft-08);
1776
+ color: var(--db-text-secondary);
1777
+ font-size: 12px;
1778
+ line-height: 1.5;
1779
+ }
1780
+
1781
+ .db-about-beta strong {
1782
+ color: var(--db-accent-deep);
1783
+ }
1784
+
1603
1785
  .db-about-version {
1604
1786
  display: flex;
1605
1787
  align-items: center;
@@ -1637,7 +1819,7 @@ body.db-resizing-sidebar * {
1637
1819
  }
1638
1820
 
1639
1821
  .db-settings-fieldset + .db-settings-fieldset {
1640
- margin-top: 20px;
1822
+ margin-top: 16px;
1641
1823
  }
1642
1824
 
1643
1825
  .db-settings-legend {
@@ -1679,6 +1861,16 @@ body.db-resizing-sidebar * {
1679
1861
  accent-color: var(--db-accent);
1680
1862
  }
1681
1863
 
1864
+ .db-settings-radio-row {
1865
+ display: flex;
1866
+ flex-wrap: wrap;
1867
+ gap: 8px 20px;
1868
+ }
1869
+
1870
+ .db-settings-radio--inline {
1871
+ padding: 2px 0;
1872
+ }
1873
+
1682
1874
  .db-settings-checkbox {
1683
1875
  display: flex;
1684
1876
  align-items: center;
@@ -1726,6 +1918,188 @@ body.db-resizing-sidebar * {
1726
1918
  cursor: pointer;
1727
1919
  }
1728
1920
 
1921
+ .db-settings-select {
1922
+ display: flex;
1923
+ flex-direction: column;
1924
+ gap: 6px;
1925
+ margin-top: 14px;
1926
+ color: var(--db-text);
1927
+ font-size: 13px;
1928
+ }
1929
+
1930
+ .db-settings-select-header {
1931
+ display: flex;
1932
+ align-items: baseline;
1933
+ justify-content: space-between;
1934
+ gap: 16px;
1935
+ }
1936
+
1937
+ .db-settings-select-input {
1938
+ width: 100%;
1939
+ padding: 6px 8px;
1940
+ font: inherit;
1941
+ font-size: 13px;
1942
+ background: var(--db-bg-subtle);
1943
+ color: var(--db-text);
1944
+ border: 1px solid var(--db-input-border);
1945
+ border-radius: 4px;
1946
+ outline: none;
1947
+ cursor: pointer;
1948
+ appearance: auto;
1949
+ }
1950
+
1951
+ .db-settings-select-input:focus-visible {
1952
+ border-color: var(--db-accent);
1953
+ }
1954
+
1955
+ .db-font-picker {
1956
+ position: relative;
1957
+ }
1958
+
1959
+ .db-font-picker-trigger {
1960
+ display: flex;
1961
+ align-items: center;
1962
+ gap: 12px;
1963
+ box-sizing: border-box;
1964
+ width: 100%;
1965
+ min-height: 54px;
1966
+ padding: 7px 10px 7px 12px;
1967
+ overflow: hidden;
1968
+ border: 1px solid var(--db-input-border);
1969
+ border-radius: 5px;
1970
+ outline: none;
1971
+ background: var(--db-bg-subtle);
1972
+ color: var(--db-text);
1973
+ text-align: left;
1974
+ cursor: pointer;
1975
+ }
1976
+
1977
+ .db-font-picker-trigger:hover,
1978
+ .db-font-picker-trigger[aria-expanded='true'] {
1979
+ background: var(--db-bg-hover);
1980
+ }
1981
+
1982
+ .db-font-picker-trigger:focus-visible {
1983
+ border-color: var(--db-accent);
1984
+ box-shadow: 0 0 0 1px var(--db-accent);
1985
+ }
1986
+
1987
+ .db-font-picker-caret {
1988
+ flex: 0 0 auto;
1989
+ width: 7px;
1990
+ height: 7px;
1991
+ margin: 0 3px 3px 0;
1992
+ border-right: 2px solid currentColor;
1993
+ border-bottom: 2px solid currentColor;
1994
+ color: var(--db-text-muted);
1995
+ transform: rotate(45deg);
1996
+ transition: transform 120ms ease;
1997
+ }
1998
+
1999
+ .db-font-picker-caret--open {
2000
+ margin-top: 5px;
2001
+ transform: rotate(225deg);
2002
+ }
2003
+
2004
+ .db-font-picker-menu {
2005
+ position: fixed;
2006
+ z-index: 3100;
2007
+ box-sizing: border-box;
2008
+ padding: 5px;
2009
+ overflow-y: auto;
2010
+ overscroll-behavior: contain;
2011
+ border: 1px solid var(--db-border-strong);
2012
+ border-radius: 6px;
2013
+ outline: none;
2014
+ background: var(--db-bg);
2015
+ color: var(--db-text);
2016
+ box-shadow: 0 10px 28px var(--db-shadow);
2017
+ }
2018
+
2019
+ .db-font-picker-group {
2020
+ padding: 10px 10px 4px;
2021
+ color: var(--db-text-muted);
2022
+ font:
2023
+ 600 10px/1.2 system-ui,
2024
+ -apple-system,
2025
+ 'Segoe UI',
2026
+ sans-serif;
2027
+ letter-spacing: 0.065em;
2028
+ text-transform: uppercase;
2029
+ }
2030
+
2031
+ .db-font-picker-option {
2032
+ display: flex;
2033
+ align-items: center;
2034
+ gap: 12px;
2035
+ min-height: 50px;
2036
+ padding: 6px 9px 6px 11px;
2037
+ border-radius: 4px;
2038
+ color: var(--db-text);
2039
+ cursor: pointer;
2040
+ user-select: none;
2041
+ }
2042
+
2043
+ .db-font-picker-option--active {
2044
+ background: var(--db-bg-hover);
2045
+ }
2046
+
2047
+ .db-font-picker-option--selected {
2048
+ background: var(--db-accent-soft-12);
2049
+ }
2050
+
2051
+ .db-font-picker-option--selected.db-font-picker-option--active {
2052
+ background: var(--db-accent-soft-25);
2053
+ }
2054
+
2055
+ .db-font-picker-preview {
2056
+ display: flex;
2057
+ flex: 1 1 auto;
2058
+ flex-direction: column;
2059
+ min-width: 0;
2060
+ line-height: 1.2;
2061
+ }
2062
+
2063
+ .db-font-picker-heading,
2064
+ .db-font-picker-body {
2065
+ overflow: hidden;
2066
+ text-overflow: ellipsis;
2067
+ white-space: nowrap;
2068
+ }
2069
+
2070
+ .db-font-picker-heading {
2071
+ color: var(--db-text);
2072
+ font-size: 16px;
2073
+ font-weight: 650;
2074
+ }
2075
+
2076
+ .db-font-picker-body {
2077
+ margin-top: 3px;
2078
+ color: var(--db-text-secondary);
2079
+ font-size: 12px;
2080
+ font-weight: 400;
2081
+ }
2082
+
2083
+ .db-font-picker-preview--compact .db-font-picker-heading {
2084
+ font-size: 15px;
2085
+ }
2086
+
2087
+ .db-font-picker-preview--compact .db-font-picker-body {
2088
+ color: var(--db-text-muted);
2089
+ font-size: 11px;
2090
+ }
2091
+
2092
+ .db-font-picker-check {
2093
+ flex: 0 0 18px;
2094
+ color: var(--db-accent-deep);
2095
+ font:
2096
+ 700 14px/1 system-ui,
2097
+ -apple-system,
2098
+ 'Segoe UI',
2099
+ sans-serif;
2100
+ text-align: center;
2101
+ }
2102
+
1729
2103
  .db-settings-accent-grid {
1730
2104
  display: grid;
1731
2105
  grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
@@ -2043,6 +2417,15 @@ body.db-resizing-sidebar * {
2043
2417
  padding: 4px 0;
2044
2418
  }
2045
2419
 
2420
+ .db-export-toolbar-menu-dropdown {
2421
+ max-width: min(720px, calc(100vw - 16px));
2422
+ }
2423
+
2424
+ .db-export-toolbar-menu-dropdown .db-toolbar-menu-item {
2425
+ overflow: hidden;
2426
+ text-overflow: ellipsis;
2427
+ }
2428
+
2046
2429
  .db-toolbar-menu-item {
2047
2430
  display: block;
2048
2431
  width: 100%;
@@ -2377,11 +2760,55 @@ body.db-resizing-sidebar * {
2377
2760
  background: var(--db-editor-canvas);
2378
2761
  }
2379
2762
 
2380
- /* Bind Squisq's host-facing accent to the active DocBlocks appearance. */
2763
+ /* Bind Squisq's host-facing accent to the active DocBlocks appearance.
2764
+ RawEditor uses the editor background/foreground variables for its
2765
+ textarea while Monaco's first lazy load is in flight. Define them here so
2766
+ Source view never paints Squisq's light fallback before the requested
2767
+ Monaco theme is ready. */
2381
2768
  .db-shell .squisq-editor-shell {
2382
2769
  --squisq-accent: var(--db-accent);
2383
2770
  --squisq-accent-hover: var(--db-accent-hover);
2384
2771
  --squisq-text-on-accent: var(--db-text-on-accent);
2772
+ --squisq-editor-background: #ffffff;
2773
+ --squisq-editor-foreground: #1f2937;
2774
+ }
2775
+
2776
+ .db-shell .squisq-editor-shell[data-theme='dark'] {
2777
+ /* Match Monaco's built-in vs-dark canvas exactly so replacing the loading
2778
+ textarea with Monaco does not introduce a second, subtler color flash. */
2779
+ --squisq-editor-background: #1e1e1e;
2780
+ --squisq-editor-foreground: #d4d4d4;
2781
+ }
2782
+
2783
+ /* The Write-canvas font picker is an explicit host preference, so its
2784
+ variables must beat the active document theme in Write mode. Squisq's base
2785
+ stylesheet intentionally puts theme fonts first; reverse that order only
2786
+ inside the DocBlocks shell. When "Inherit from theme" is selected the Write
2787
+ variables are absent, and these declarations fall straight through to the
2788
+ same theme title/body fonts as before. */
2789
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor {
2790
+ font-family: var(--squisq-write-body-font, var(--squisq-theme-body-font, inherit));
2791
+ }
2792
+
2793
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h1,
2794
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h2,
2795
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h3,
2796
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h4,
2797
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h5,
2798
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor h6 {
2799
+ font-family: var(
2800
+ --squisq-write-header-font,
2801
+ var(
2802
+ --squisq-write-body-font,
2803
+ var(--squisq-theme-title-font, var(--squisq-theme-body-font, inherit))
2804
+ )
2805
+ );
2806
+ }
2807
+
2808
+ /* Squisq's default horizontal rule uses a fixed slate border in both
2809
+ appearances. Keep document rules aligned with the selected host accent. */
2810
+ .db-shell .squisq-editor-shell .squisq-wysiwyg-editor hr {
2811
+ border-top-color: var(--db-accent);
2385
2812
  }
2386
2813
 
2387
2814
  /* Simple diagrams, drawings, and layout canvases share Squisq's Scene
@@ -4049,6 +4476,46 @@ html:has(.db-shell[data-theme='dark'])
4049
4476
  border-color: var(--db-border);
4050
4477
  }
4051
4478
 
4479
+ /* View menu. Squisq's dark appearance otherwise replaces its generic
4480
+ variables with a fixed slate-blue palette. Keep the popover and its
4481
+ controls on the same host palette as the DocBlocks app and overflow
4482
+ menus, including the native radio/checkbox selection color. */
4483
+ .db-shell .squisq-editor-shell .squisq-view-menu-popover {
4484
+ background: var(--db-bg);
4485
+ border-color: var(--db-border);
4486
+ box-shadow: 0 4px 12px var(--db-shadow);
4487
+ color: var(--db-text-secondary);
4488
+ }
4489
+
4490
+ .db-shell .squisq-editor-shell .squisq-view-menu-row:hover,
4491
+ .db-shell .squisq-editor-shell .squisq-view-menu-radio-row:hover {
4492
+ background: var(--db-bg-hover);
4493
+ }
4494
+
4495
+ .db-shell .squisq-editor-shell .squisq-view-menu-row--select:hover,
4496
+ .db-shell .squisq-editor-shell .squisq-view-menu-row--radios:hover {
4497
+ background: transparent;
4498
+ }
4499
+
4500
+ .db-shell .squisq-editor-shell .squisq-view-menu-row--select .squisq-view-menu-label,
4501
+ .db-shell .squisq-editor-shell .squisq-view-menu-row--radios > .squisq-view-menu-label {
4502
+ color: var(--db-text-muted);
4503
+ }
4504
+
4505
+ .db-shell .squisq-editor-shell .squisq-view-menu-select {
4506
+ background: var(--db-bg-subtle);
4507
+ border-color: var(--db-border);
4508
+ color: var(--db-text-secondary);
4509
+ }
4510
+
4511
+ .db-shell .squisq-editor-shell .squisq-view-menu-separator {
4512
+ background: var(--db-border);
4513
+ }
4514
+
4515
+ .db-shell .squisq-editor-shell :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
4516
+ accent-color: var(--db-accent);
4517
+ }
4518
+
4052
4519
  /* Monaco's line-number gutter ("editorGutter.background") is set via
4053
4520
  squisq's JS-side theme registration — those colors can't be CSS
4054
4521
  variables. To make the gutter blend with the outline/preview chrome
@@ -4335,24 +4802,26 @@ html:has(.db-shell[data-theme='dark'])
4335
4802
  box-shadow: 0 2px 8px var(--db-shadow);
4336
4803
  }
4337
4804
 
4338
- /* The expanded Reload/Later prompt uses the same top-center card pattern as
4339
- the document-conflict card, accent-toned instead of warning. */
4805
+ /* The expanded Reload/Later prompt sits just above its status-bar trigger. */
4340
4806
  .db-update-banner {
4341
- position: fixed;
4342
- top: 16px;
4343
- left: 50%;
4807
+ position: absolute;
4808
+ right: 8px;
4809
+ bottom: 30px;
4344
4810
  z-index: 210;
4345
4811
  display: flex;
4346
4812
  gap: 16px;
4347
4813
  align-items: center;
4348
- max-width: min(720px, calc(100vw - 32px));
4814
+ max-width: min(720px, calc(100% - 16px));
4349
4815
  padding: 10px 12px;
4350
4816
  color: var(--db-text);
4351
4817
  background: var(--db-bg-elevated, var(--db-bg));
4352
4818
  border: 1px solid var(--db-accent);
4353
4819
  border-radius: 8px;
4354
4820
  box-shadow: 0 6px 20px var(--db-shadow);
4355
- transform: translateX(-50%);
4821
+ }
4822
+
4823
+ .db-update-banner--floating {
4824
+ bottom: 48px;
4356
4825
  }
4357
4826
 
4358
4827
  .db-update-banner-actions {
@@ -4440,6 +4909,7 @@ html:has(.db-shell[data-theme='dark'])
4440
4909
  .db-dialog--wide {
4441
4910
  width: 560px;
4442
4911
  max-width: 100%;
4912
+ max-height: min(calc(100dvh - 32px), 660px);
4443
4913
  }
4444
4914
 
4445
4915
  .db-dialog--full {
@@ -5033,15 +5503,15 @@ button.db-git-file-row:hover {
5033
5503
  padding-bottom: 2px;
5034
5504
  }
5035
5505
 
5036
- /* The native 32px caption band leaves the labels slightly above its visual
5037
- center. Move only the text down; the tab hit area and active underline
5038
- stay anchored to the titlebar edges. */
5506
+ /* Keep the compact labels on the same visual center as the action glyphs.
5507
+ Move only the text; the tab hit area and active underline stay anchored
5508
+ to the titlebar edges. */
5039
5509
  .db-shell .squisq-toolbar-view-tab-label {
5040
- transform: translateY(4px);
5510
+ transform: translateY(1px);
5041
5511
  }
5042
5512
 
5043
5513
  .db-shell .squisq-use-mode-trigger {
5044
- padding-bottom: 7px;
5514
+ padding-bottom: 10px;
5045
5515
  }
5046
5516
 
5047
5517
  /* The 32px caption row leaves little room around Squisq's 28px action