@bendyline/docblocks-react 2.0.0 → 2.1.1
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.
- package/README.md +18 -3
- package/dist/ExportDialog-VYATD5UC.js +9 -0
- package/dist/{ExportToolbarControls-D2YDWOXW.js → ExportToolbarControls-5HUE3LSX.js} +206 -42
- package/dist/{GitToolbarControl-LMIR4R7I.js → GitToolbarControl-FW3BZFXV.js} +62 -44
- package/dist/{GitUI-KGF5MSNV.js → GitUI-GMH3PAYL.js} +225 -141
- package/dist/{LazyEditorShell-EF2BWRXU.js → LazyEditorShell-RF54B5UD.js} +0 -1
- package/dist/ShareDialog-PAMOQQFB.js +212 -0
- package/dist/chunk-3CZ27FOA.js +359 -0
- package/dist/chunk-3QSZY74C.js +255 -0
- package/{src/Export/export-destination.ts → dist/chunk-BI7NVU6T.js} +16 -15
- package/dist/{chunk-VHDP4IPL.js → chunk-BPGEBGAN.js} +0 -1
- package/dist/{chunk-DD4VFJQI.js → chunk-EBWYGTN7.js} +2 -1
- package/dist/{chunk-ZI56BNB7.js → chunk-GHQ4X7KM.js} +27 -7
- package/dist/{chunk-5A4KEWKT.js → chunk-HFYPTTCH.js} +0 -1
- package/dist/chunk-LG6HAWCK.js +109 -0
- package/dist/chunk-TFMO7EVO.js +88 -0
- package/dist/{chunk-4XXSWN3T.js → chunk-YBEYTVU2.js} +0 -1
- package/dist/editor.d.ts +5 -4
- package/dist/editor.js +8 -70
- package/dist/export/index.d.ts +24 -8
- package/dist/export/index.js +10 -6
- package/dist/index.d.ts +355 -21
- package/dist/index.js +6419 -21
- package/dist/run-export-Z5BVFLIR.js +9 -0
- package/dist/settings/index.d.ts +9 -1
- package/dist/settings/index.js +6 -5
- package/package.json +18 -13
- package/src/styles/docblocks.css +985 -35
- package/dist/AppMenu/AppMenu.d.ts +0 -53
- package/dist/AppMenu/AppMenu.d.ts.map +0 -1
- package/dist/AppMenu/AppMenu.js +0 -67
- package/dist/AppMenu/AppMenu.js.map +0 -1
- package/dist/AppMenu/index.d.ts +0 -3
- package/dist/AppMenu/index.d.ts.map +0 -1
- package/dist/AppMenu/index.js +0 -2
- package/dist/AppMenu/index.js.map +0 -1
- package/dist/DocBlocksShell/DocBlocksShell.d.ts +0 -49
- package/dist/DocBlocksShell/DocBlocksShell.d.ts.map +0 -1
- package/dist/DocBlocksShell/DocBlocksShell.js +0 -2730
- package/dist/DocBlocksShell/DocBlocksShell.js.map +0 -1
- package/dist/DocBlocksShell/LazyEditorShell.d.ts +0 -3
- package/dist/DocBlocksShell/LazyEditorShell.d.ts.map +0 -1
- package/dist/DocBlocksShell/LazyEditorShell.js +0 -3
- package/dist/DocBlocksShell/LazyEditorShell.js.map +0 -1
- package/dist/DocBlocksShell/UpdateAvailableNotice.d.ts +0 -13
- package/dist/DocBlocksShell/UpdateAvailableNotice.d.ts.map +0 -1
- package/dist/DocBlocksShell/UpdateAvailableNotice.js +0 -16
- package/dist/DocBlocksShell/UpdateAvailableNotice.js.map +0 -1
- package/dist/DocBlocksShell/document-title.d.ts +0 -3
- package/dist/DocBlocksShell/document-title.d.ts.map +0 -1
- package/dist/DocBlocksShell/document-title.js +0 -17
- package/dist/DocBlocksShell/document-title.js.map +0 -1
- package/dist/DocBlocksShell/index.d.ts +0 -3
- package/dist/DocBlocksShell/index.d.ts.map +0 -1
- package/dist/DocBlocksShell/index.js +0 -2
- package/dist/DocBlocksShell/index.js.map +0 -1
- package/dist/DocBlocksShell/workspace-authority-barrier.d.ts +0 -14
- package/dist/DocBlocksShell/workspace-authority-barrier.d.ts.map +0 -1
- package/dist/DocBlocksShell/workspace-authority-barrier.js +0 -23
- package/dist/DocBlocksShell/workspace-authority-barrier.js.map +0 -1
- package/dist/Export/DeferredExportToolbarControls.d.ts +0 -5
- package/dist/Export/DeferredExportToolbarControls.d.ts.map +0 -1
- package/dist/Export/DeferredExportToolbarControls.js +0 -10
- package/dist/Export/DeferredExportToolbarControls.js.map +0 -1
- package/dist/Export/ExportDialog.d.ts +0 -25
- package/dist/Export/ExportDialog.d.ts.map +0 -1
- package/dist/Export/ExportDialog.js +0 -160
- package/dist/Export/ExportDialog.js.map +0 -1
- package/dist/Export/ExportToolbarControls.d.ts +0 -37
- package/dist/Export/ExportToolbarControls.d.ts.map +0 -1
- package/dist/Export/ExportToolbarControls.js +0 -285
- package/dist/Export/ExportToolbarControls.js.map +0 -1
- package/dist/Export/export-destination.d.ts +0 -3
- package/dist/Export/export-destination.d.ts.map +0 -1
- package/dist/Export/export-destination.js +0 -32
- package/dist/Export/export-destination.js.map +0 -1
- package/dist/Export/export-options.d.ts +0 -53
- package/dist/Export/export-options.d.ts.map +0 -1
- package/dist/Export/export-options.js +0 -49
- package/dist/Export/export-options.js.map +0 -1
- package/dist/Export/index.d.ts +0 -10
- package/dist/Export/index.d.ts.map +0 -1
- package/dist/Export/index.js +0 -6
- package/dist/Export/index.js.map +0 -1
- package/dist/Export/public-api.d.ts +0 -12
- package/dist/Export/public-api.d.ts.map +0 -1
- package/dist/Export/public-api.js +0 -9
- package/dist/Export/public-api.js.map +0 -1
- package/dist/Export/run-export.d.ts +0 -10
- package/dist/Export/run-export.d.ts.map +0 -1
- package/dist/Export/run-export.js +0 -313
- package/dist/Export/run-export.js.map +0 -1
- package/dist/Export/transform-summaries.d.ts +0 -7
- package/dist/Export/transform-summaries.d.ts.map +0 -1
- package/dist/Export/transform-summaries.js +0 -6
- package/dist/Export/transform-summaries.js.map +0 -1
- package/dist/ExportDialog-MEUISWZX.js +0 -9
- package/dist/ExportDialog-MEUISWZX.js.map +0 -1
- package/dist/ExportToolbarControls-D2YDWOXW.js.map +0 -1
- package/dist/FileExplorer/FileExplorer.d.ts +0 -43
- package/dist/FileExplorer/FileExplorer.d.ts.map +0 -1
- package/dist/FileExplorer/FileExplorer.js +0 -315
- package/dist/FileExplorer/FileExplorer.js.map +0 -1
- package/dist/FileExplorer/FileTreeNode.d.ts +0 -39
- package/dist/FileExplorer/FileTreeNode.d.ts.map +0 -1
- package/dist/FileExplorer/FileTreeNode.js +0 -131
- package/dist/FileExplorer/FileTreeNode.js.map +0 -1
- package/dist/FileExplorer/index.d.ts +0 -6
- package/dist/FileExplorer/index.d.ts.map +0 -1
- package/dist/FileExplorer/index.js +0 -4
- package/dist/FileExplorer/index.js.map +0 -1
- package/dist/FileExplorer/useFileTree.d.ts +0 -37
- package/dist/FileExplorer/useFileTree.d.ts.map +0 -1
- package/dist/FileExplorer/useFileTree.js +0 -284
- package/dist/FileExplorer/useFileTree.js.map +0 -1
- package/dist/Git/GitAuthGuidanceDialog.d.ts +0 -18
- package/dist/Git/GitAuthGuidanceDialog.d.ts.map +0 -1
- package/dist/Git/GitAuthGuidanceDialog.js +0 -27
- package/dist/Git/GitAuthGuidanceDialog.js.map +0 -1
- package/dist/Git/GitBranchesDialog.d.ts +0 -13
- package/dist/Git/GitBranchesDialog.d.ts.map +0 -1
- package/dist/Git/GitBranchesDialog.js +0 -59
- package/dist/Git/GitBranchesDialog.js.map +0 -1
- package/dist/Git/GitCloneDialog.d.ts +0 -14
- package/dist/Git/GitCloneDialog.d.ts.map +0 -1
- package/dist/Git/GitCloneDialog.js +0 -79
- package/dist/Git/GitCloneDialog.js.map +0 -1
- package/dist/Git/GitCommitDialog.d.ts +0 -12
- package/dist/Git/GitCommitDialog.d.ts.map +0 -1
- package/dist/Git/GitCommitDialog.js +0 -38
- package/dist/Git/GitCommitDialog.js.map +0 -1
- package/dist/Git/GitConflictsDialog.d.ts +0 -12
- package/dist/Git/GitConflictsDialog.d.ts.map +0 -1
- package/dist/Git/GitConflictsDialog.js +0 -17
- package/dist/Git/GitConflictsDialog.js.map +0 -1
- package/dist/Git/GitContext.d.ts +0 -89
- package/dist/Git/GitContext.d.ts.map +0 -1
- package/dist/Git/GitContext.js +0 -15
- package/dist/Git/GitContext.js.map +0 -1
- package/dist/Git/GitDiffDialog.d.ts +0 -20
- package/dist/Git/GitDiffDialog.d.ts.map +0 -1
- package/dist/Git/GitDiffDialog.js +0 -100
- package/dist/Git/GitDiffDialog.js.map +0 -1
- package/dist/Git/GitDiffView.d.ts +0 -23
- package/dist/Git/GitDiffView.d.ts.map +0 -1
- package/dist/Git/GitDiffView.js +0 -77
- package/dist/Git/GitDiffView.js.map +0 -1
- package/dist/Git/GitHistoryDialog.d.ts +0 -15
- package/dist/Git/GitHistoryDialog.d.ts.map +0 -1
- package/dist/Git/GitHistoryDialog.js +0 -107
- package/dist/Git/GitHistoryDialog.js.map +0 -1
- package/dist/Git/GitStatusBar.d.ts +0 -8
- package/dist/Git/GitStatusBar.d.ts.map +0 -1
- package/dist/Git/GitStatusBar.js +0 -49
- package/dist/Git/GitStatusBar.js.map +0 -1
- package/dist/Git/GitToolbarControl.d.ts +0 -15
- package/dist/Git/GitToolbarControl.d.ts.map +0 -1
- package/dist/Git/GitToolbarControl.js +0 -51
- package/dist/Git/GitToolbarControl.js.map +0 -1
- package/dist/Git/GitUI.d.ts +0 -14
- package/dist/Git/GitUI.d.ts.map +0 -1
- package/dist/Git/GitUI.js +0 -21
- package/dist/Git/GitUI.js.map +0 -1
- package/dist/Git/commit-selection.d.ts +0 -22
- package/dist/Git/commit-selection.d.ts.map +0 -1
- package/dist/Git/commit-selection.js +0 -47
- package/dist/Git/commit-selection.js.map +0 -1
- package/dist/Git/git-clone-utils.d.ts +0 -8
- package/dist/Git/git-clone-utils.d.ts.map +0 -1
- package/dist/Git/git-clone-utils.js +0 -26
- package/dist/Git/git-clone-utils.js.map +0 -1
- package/dist/Git/git-status.d.ts +0 -24
- package/dist/Git/git-status.d.ts.map +0 -1
- package/dist/Git/git-status.js +0 -105
- package/dist/Git/git-status.js.map +0 -1
- package/dist/Git/useGit.d.ts +0 -15
- package/dist/Git/useGit.d.ts.map +0 -1
- package/dist/Git/useGit.js +0 -206
- package/dist/Git/useGit.js.map +0 -1
- package/dist/Git/useGitStatus.d.ts +0 -17
- package/dist/Git/useGitStatus.d.ts.map +0 -1
- package/dist/Git/useGitStatus.js +0 -63
- package/dist/Git/useGitStatus.js.map +0 -1
- package/dist/GitToolbarControl-LMIR4R7I.js.map +0 -1
- package/dist/GitUI-KGF5MSNV.js.map +0 -1
- package/dist/LazyEditorShell-EF2BWRXU.js.map +0 -1
- package/dist/Settings/Settings.d.ts +0 -23
- package/dist/Settings/Settings.d.ts.map +0 -1
- package/dist/Settings/Settings.js +0 -22
- package/dist/Settings/Settings.js.map +0 -1
- package/dist/Settings/public-api.d.ts +0 -3
- package/dist/Settings/public-api.d.ts.map +0 -1
- package/dist/Settings/public-api.js +0 -2
- package/dist/Settings/public-api.js.map +0 -1
- package/dist/WorkspacePicker/WorkspacePicker.d.ts +0 -22
- package/dist/WorkspacePicker/WorkspacePicker.d.ts.map +0 -1
- package/dist/WorkspacePicker/WorkspacePicker.js +0 -74
- package/dist/WorkspacePicker/WorkspacePicker.js.map +0 -1
- package/dist/WorkspacePicker/WorkspaceSettingsButton.d.ts +0 -11
- package/dist/WorkspacePicker/WorkspaceSettingsButton.d.ts.map +0 -1
- package/dist/WorkspacePicker/WorkspaceSettingsButton.js +0 -27
- package/dist/WorkspacePicker/WorkspaceSettingsButton.js.map +0 -1
- package/dist/WorkspacePicker/WorkspaceSettingsDialog.d.ts +0 -20
- package/dist/WorkspacePicker/WorkspaceSettingsDialog.d.ts.map +0 -1
- package/dist/WorkspacePicker/WorkspaceSettingsDialog.js +0 -36
- package/dist/WorkspacePicker/WorkspaceSettingsDialog.js.map +0 -1
- package/dist/WorkspacePicker/index.d.ts +0 -3
- package/dist/WorkspacePicker/index.d.ts.map +0 -1
- package/dist/WorkspacePicker/index.js +0 -2
- package/dist/WorkspacePicker/index.js.map +0 -1
- package/dist/chunk-3SAXDU2U.js +0 -157
- package/dist/chunk-3SAXDU2U.js.map +0 -1
- package/dist/chunk-4XXSWN3T.js.map +0 -1
- package/dist/chunk-5A4KEWKT.js.map +0 -1
- package/dist/chunk-AOVTHZU7.js +0 -321
- package/dist/chunk-AOVTHZU7.js.map +0 -1
- package/dist/chunk-DD4VFJQI.js.map +0 -1
- package/dist/chunk-GSNZSCIK.js +0 -55
- package/dist/chunk-GSNZSCIK.js.map +0 -1
- package/dist/chunk-VHDP4IPL.js.map +0 -1
- package/dist/chunk-ZI56BNB7.js.map +0 -1
- package/dist/components/Dialog.d.ts +0 -22
- package/dist/components/Dialog.d.ts.map +0 -1
- package/dist/components/Dialog.js +0 -33
- package/dist/components/Dialog.js.map +0 -1
- package/dist/editor.d.ts.map +0 -1
- package/dist/editor.js.map +0 -1
- package/dist/export/index.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -2
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useDocumentSession.d.ts +0 -16
- package/dist/hooks/useDocumentSession.d.ts.map +0 -1
- package/dist/hooks/useDocumentSession.js +0 -18
- package/dist/hooks/useDocumentSession.js.map +0 -1
- package/dist/icons.d.ts +0 -12
- package/dist/icons.d.ts.map +0 -1
- package/dist/icons.js +0 -28
- package/dist/icons.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/preferences/theme.d.ts +0 -18
- package/dist/preferences/theme.d.ts.map +0 -1
- package/dist/preferences/theme.js +0 -63
- package/dist/preferences/theme.js.map +0 -1
- package/dist/preferences/versioning.d.ts +0 -27
- package/dist/preferences/versioning.d.ts.map +0 -1
- package/dist/preferences/versioning.js +0 -62
- package/dist/preferences/versioning.js.map +0 -1
- package/dist/provider-lease.d.ts +0 -10
- package/dist/provider-lease.d.ts.map +0 -1
- package/dist/provider-lease.js +0 -42
- package/dist/provider-lease.js.map +0 -1
- package/dist/run-export-ICTZITXC.js +0 -10
- package/dist/run-export-ICTZITXC.js.map +0 -1
- package/dist/settings/index.js.map +0 -1
- package/src/AppMenu/AppMenu.tsx +0 -334
- package/src/AppMenu/index.ts +0 -2
- package/src/DocBlocksShell/DocBlocksShell.tsx +0 -3398
- package/src/DocBlocksShell/LazyEditorShell.ts +0 -2
- package/src/DocBlocksShell/UpdateAvailableNotice.tsx +0 -60
- package/src/DocBlocksShell/document-title.ts +0 -19
- package/src/DocBlocksShell/index.ts +0 -2
- package/src/DocBlocksShell/workspace-authority-barrier.ts +0 -26
- package/src/Export/DeferredExportToolbarControls.tsx +0 -23
- package/src/Export/ExportDialog.tsx +0 -437
- package/src/Export/ExportToolbarControls.tsx +0 -511
- package/src/Export/export-options.ts +0 -99
- package/src/Export/index.ts +0 -19
- package/src/Export/public-api.ts +0 -17
- package/src/Export/run-export.ts +0 -374
- package/src/Export/transform-summaries.ts +0 -14
- package/src/FileExplorer/FileExplorer.tsx +0 -528
- package/src/FileExplorer/FileTreeNode.tsx +0 -306
- package/src/FileExplorer/index.ts +0 -5
- package/src/FileExplorer/useFileTree.ts +0 -352
- package/src/Git/GitAuthGuidanceDialog.tsx +0 -84
- package/src/Git/GitBranchesDialog.tsx +0 -144
- package/src/Git/GitCloneDialog.tsx +0 -200
- package/src/Git/GitCommitDialog.tsx +0 -119
- package/src/Git/GitConflictsDialog.tsx +0 -62
- package/src/Git/GitContext.tsx +0 -88
- package/src/Git/GitDiffDialog.tsx +0 -147
- package/src/Git/GitDiffView.tsx +0 -105
- package/src/Git/GitHistoryDialog.tsx +0 -195
- package/src/Git/GitStatusBar.tsx +0 -157
- package/src/Git/GitToolbarControl.tsx +0 -123
- package/src/Git/GitUI.tsx +0 -68
- package/src/Git/commit-selection.ts +0 -63
- package/src/Git/git-clone-utils.ts +0 -23
- package/src/Git/git-status.ts +0 -113
- package/src/Git/useGit.ts +0 -279
- package/src/Git/useGitStatus.ts +0 -78
- package/src/Settings/Settings.tsx +0 -118
- package/src/Settings/public-api.ts +0 -8
- package/src/WorkspacePicker/WorkspacePicker.tsx +0 -191
- package/src/WorkspacePicker/WorkspaceSettingsButton.tsx +0 -88
- package/src/WorkspacePicker/WorkspaceSettingsDialog.tsx +0 -121
- package/src/WorkspacePicker/index.ts +0 -2
- package/src/components/Dialog.tsx +0 -81
- package/src/editor.ts +0 -72
- package/src/hooks/index.ts +0 -2
- package/src/hooks/useDocumentSession.ts +0 -37
- package/src/icons.tsx +0 -48
- package/src/index.ts +0 -61
- package/src/preferences/theme.ts +0 -67
- package/src/preferences/versioning.ts +0 -69
- package/src/provider-lease.ts +0 -52
- package/src/types/pwa-dom.d.ts +0 -31
package/src/styles/docblocks.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import '@bendyline/squisq-editor-react/styles';
|
|
2
|
+
|
|
1
3
|
/* ── DocBlocks Styles ─────────────────────────────────────────── */
|
|
2
4
|
|
|
3
5
|
/* ── Theme Tokens ────────────────────────────────────────────── */
|
|
@@ -27,6 +29,11 @@
|
|
|
27
29
|
--db-accent-hover: #5e4f37;
|
|
28
30
|
--db-text-on-accent: #ffffff;
|
|
29
31
|
--db-text-on-selected: #ffffff;
|
|
32
|
+
/* Keyboard focus ring. Deliberately darker than --db-accent: the accent
|
|
33
|
+
is also the *selected row* fill, so an accent ring vanished against
|
|
34
|
+
it. Any surface that paints itself --db-bg-selected re-points this
|
|
35
|
+
token at a contrasting value (see .db-tree-row--selected). */
|
|
36
|
+
--db-focus: #3d3220;
|
|
30
37
|
--db-accent-soft-08: rgba(125, 105, 72, 0.08);
|
|
31
38
|
--db-accent-soft-10: rgba(125, 105, 72, 0.1);
|
|
32
39
|
--db-accent-soft-12: rgba(125, 105, 72, 0.12);
|
|
@@ -45,6 +52,7 @@
|
|
|
45
52
|
--db-input-border: #c4b693;
|
|
46
53
|
--db-danger: #b22b1b;
|
|
47
54
|
--db-danger-bg: #fdf0ee;
|
|
55
|
+
--db-text-on-danger: #ffffff;
|
|
48
56
|
--db-shadow: rgba(40, 30, 15, 0.12);
|
|
49
57
|
/* Git status colors — file badges, sync chips. Deleted/conflicted reuse
|
|
50
58
|
the danger hue on purpose; renamed gets the one cool accent. */
|
|
@@ -72,6 +80,7 @@
|
|
|
72
80
|
--db-accent-hover: #dec79d;
|
|
73
81
|
--db-text-on-accent: #1a1812;
|
|
74
82
|
--db-text-on-selected: #e8e2d0;
|
|
83
|
+
--db-focus: #e8e2d0;
|
|
75
84
|
--db-accent-soft-08: rgba(200, 180, 143, 0.08);
|
|
76
85
|
--db-accent-soft-10: rgba(200, 180, 143, 0.1);
|
|
77
86
|
--db-accent-soft-12: rgba(200, 180, 143, 0.12);
|
|
@@ -86,6 +95,7 @@
|
|
|
86
95
|
--db-input-border: #c8b48f;
|
|
87
96
|
--db-danger: #f87171;
|
|
88
97
|
--db-danger-bg: #1c1917;
|
|
98
|
+
--db-text-on-danger: #1c1917;
|
|
89
99
|
--db-shadow: rgba(0, 0, 0, 0.4);
|
|
90
100
|
/* In dark mode, "lighter than the toolbar" means brighter — so this
|
|
91
101
|
sits a step above `--db-accent-tint-strong` instead of between it
|
|
@@ -116,6 +126,7 @@
|
|
|
116
126
|
--db-accent-hover: #dec79d;
|
|
117
127
|
--db-text-on-accent: #1a1812;
|
|
118
128
|
--db-text-on-selected: #e8e2d0;
|
|
129
|
+
--db-focus: #e8e2d0;
|
|
119
130
|
--db-accent-soft-08: rgba(200, 180, 143, 0.08);
|
|
120
131
|
--db-accent-soft-12: rgba(200, 180, 143, 0.12);
|
|
121
132
|
--db-accent-soft-15: rgba(200, 180, 143, 0.18);
|
|
@@ -125,6 +136,7 @@
|
|
|
125
136
|
--db-input-border: #c8b48f;
|
|
126
137
|
--db-danger: #f87171;
|
|
127
138
|
--db-danger-bg: #1c1917;
|
|
139
|
+
--db-text-on-danger: #1c1917;
|
|
128
140
|
--db-shadow: rgba(0, 0, 0, 0.4);
|
|
129
141
|
--db-gutter-bg: #4a4538;
|
|
130
142
|
--db-git-modified: #e5b567;
|
|
@@ -202,12 +214,125 @@
|
|
|
202
214
|
justify-content: center;
|
|
203
215
|
}
|
|
204
216
|
|
|
205
|
-
.db-explorer-btn:hover {
|
|
217
|
+
.db-explorer-btn:hover:not(:disabled) {
|
|
206
218
|
background: var(--db-bg-hover);
|
|
207
219
|
border-color: var(--db-border);
|
|
208
220
|
color: var(--db-text-secondary);
|
|
209
221
|
}
|
|
210
222
|
|
|
223
|
+
.db-explorer-btn:disabled {
|
|
224
|
+
cursor: default;
|
|
225
|
+
opacity: 0.55;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* ── Transient workspace move ────────────────────────────────── */
|
|
229
|
+
|
|
230
|
+
.db-transient-move {
|
|
231
|
+
flex-shrink: 0;
|
|
232
|
+
padding: 8px;
|
|
233
|
+
border-bottom: 1px solid var(--db-border);
|
|
234
|
+
background: var(--db-accent-soft-08);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.db-transient-move-trigger {
|
|
238
|
+
width: 100%;
|
|
239
|
+
padding: 7px 9px;
|
|
240
|
+
border: 1px solid var(--db-accent);
|
|
241
|
+
border-radius: 5px;
|
|
242
|
+
background: var(--db-bg);
|
|
243
|
+
color: var(--db-accent-deep);
|
|
244
|
+
font: inherit;
|
|
245
|
+
font-weight: 600;
|
|
246
|
+
text-align: left;
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.db-transient-move-trigger:hover {
|
|
251
|
+
background: var(--db-bg-hover);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.db-transient-move-trigger:focus-visible,
|
|
255
|
+
.db-transient-move-select:focus-visible,
|
|
256
|
+
.db-transient-move-actions button:focus-visible {
|
|
257
|
+
outline: 2px solid var(--db-focus, var(--db-accent));
|
|
258
|
+
outline-offset: 2px;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.db-transient-move-form {
|
|
262
|
+
display: flex;
|
|
263
|
+
flex-direction: column;
|
|
264
|
+
gap: 7px;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.db-transient-move-label {
|
|
268
|
+
color: var(--db-text);
|
|
269
|
+
font-size: 12px;
|
|
270
|
+
font-weight: 600;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.db-transient-move-select {
|
|
274
|
+
box-sizing: border-box;
|
|
275
|
+
width: 100%;
|
|
276
|
+
min-width: 0;
|
|
277
|
+
padding: 6px 28px 6px 8px;
|
|
278
|
+
border: 1px solid var(--db-input-border);
|
|
279
|
+
border-radius: 4px;
|
|
280
|
+
background: var(--db-bg);
|
|
281
|
+
color: var(--db-text);
|
|
282
|
+
font: inherit;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.db-transient-move-hint,
|
|
286
|
+
.db-transient-move-error {
|
|
287
|
+
margin: 0;
|
|
288
|
+
font-size: 11px;
|
|
289
|
+
line-height: 1.4;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.db-transient-move-hint {
|
|
293
|
+
color: var(--db-text-muted);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.db-transient-move-error {
|
|
297
|
+
color: var(--db-danger);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.db-transient-move-actions {
|
|
301
|
+
display: flex;
|
|
302
|
+
justify-content: flex-end;
|
|
303
|
+
gap: 6px;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.db-transient-move-actions button {
|
|
307
|
+
padding: 5px 10px;
|
|
308
|
+
border-radius: 4px;
|
|
309
|
+
font: inherit;
|
|
310
|
+
font-weight: 600;
|
|
311
|
+
cursor: pointer;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.db-transient-move-actions button:disabled {
|
|
315
|
+
opacity: 0.55;
|
|
316
|
+
cursor: default;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.db-transient-move-cancel {
|
|
320
|
+
border: 1px solid var(--db-border-strong);
|
|
321
|
+
background: var(--db-bg);
|
|
322
|
+
color: var(--db-text-secondary);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.db-transient-move-submit {
|
|
326
|
+
border: 1px solid var(--db-accent);
|
|
327
|
+
background: var(--db-accent);
|
|
328
|
+
color: var(--db-text-on-accent);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.db-transient-move-submit:hover:not(:disabled) {
|
|
332
|
+
border-color: var(--db-accent-hover);
|
|
333
|
+
background: var(--db-accent-hover);
|
|
334
|
+
}
|
|
335
|
+
|
|
211
336
|
/* ── New Item Input ──────────────────────────────────────────── */
|
|
212
337
|
|
|
213
338
|
.db-new-item {
|
|
@@ -234,6 +359,25 @@
|
|
|
234
359
|
outline: none;
|
|
235
360
|
}
|
|
236
361
|
|
|
362
|
+
/* The UA outline is suppressed above, so this is the *only* focus
|
|
363
|
+
indicator on an input a keyboard user has to type into (WCAG 2.4.7).
|
|
364
|
+
:focus-visible rather than :focus so a pointer user placing a caret
|
|
365
|
+
doesn't get a ring. */
|
|
366
|
+
.db-new-item-input:focus-visible {
|
|
367
|
+
outline: 2px solid var(--db-focus);
|
|
368
|
+
outline-offset: 1px;
|
|
369
|
+
border-color: var(--db-accent);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.db-new-item-input[aria-invalid='true'] {
|
|
373
|
+
border-color: var(--db-danger);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.db-new-item-add:focus-visible {
|
|
377
|
+
outline: 2px solid var(--db-focus);
|
|
378
|
+
outline-offset: 1px;
|
|
379
|
+
}
|
|
380
|
+
|
|
237
381
|
.db-new-item-suffix {
|
|
238
382
|
font-size: 12px;
|
|
239
383
|
color: var(--db-text-muted);
|
|
@@ -251,10 +395,16 @@
|
|
|
251
395
|
cursor: pointer;
|
|
252
396
|
}
|
|
253
397
|
|
|
254
|
-
.db-new-item-add:hover {
|
|
398
|
+
.db-new-item-add:hover:not(:disabled) {
|
|
255
399
|
background: var(--db-accent-hover);
|
|
256
400
|
}
|
|
257
401
|
|
|
402
|
+
.db-new-item-input:disabled,
|
|
403
|
+
.db-new-item-add:disabled {
|
|
404
|
+
cursor: default;
|
|
405
|
+
opacity: 0.65;
|
|
406
|
+
}
|
|
407
|
+
|
|
258
408
|
/* ── Tree ────────────────────────────────────────────────────── */
|
|
259
409
|
|
|
260
410
|
.db-tree {
|
|
@@ -279,6 +429,17 @@
|
|
|
279
429
|
font-size: 12px;
|
|
280
430
|
}
|
|
281
431
|
|
|
432
|
+
.db-tree-error-retry {
|
|
433
|
+
border: 0;
|
|
434
|
+
padding: 0;
|
|
435
|
+
color: inherit;
|
|
436
|
+
background: transparent;
|
|
437
|
+
font: inherit;
|
|
438
|
+
font-weight: 600;
|
|
439
|
+
text-decoration: underline;
|
|
440
|
+
cursor: pointer;
|
|
441
|
+
}
|
|
442
|
+
|
|
282
443
|
.db-tree--drop-target {
|
|
283
444
|
box-shadow: inset 0 0 0 2px var(--db-accent);
|
|
284
445
|
background: var(--db-accent-soft-08);
|
|
@@ -298,6 +459,22 @@
|
|
|
298
459
|
background: var(--db-bg-hover);
|
|
299
460
|
}
|
|
300
461
|
|
|
462
|
+
/* The roving-tabindex row is the tree's single tab stop, so its focus ring
|
|
463
|
+
is the only thing telling a keyboard user where they are. Inset offset
|
|
464
|
+
keeps the ring inside the scroll container instead of being clipped. */
|
|
465
|
+
.db-tree-row:focus-visible {
|
|
466
|
+
outline: 2px solid var(--db-focus);
|
|
467
|
+
outline-offset: -2px;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* A selected/drop-target row is filled with --db-bg-selected, which in
|
|
471
|
+
light mode *is* the accent brown — the default ring would disappear
|
|
472
|
+
into it. Re-point the token rather than duplicating the rule. */
|
|
473
|
+
.db-tree-row--selected,
|
|
474
|
+
.db-tree-row--drop-target {
|
|
475
|
+
--db-focus: #ffffff;
|
|
476
|
+
}
|
|
477
|
+
|
|
301
478
|
.db-tree-row--dragging {
|
|
302
479
|
opacity: 0.45;
|
|
303
480
|
}
|
|
@@ -348,6 +525,15 @@
|
|
|
348
525
|
outline: none;
|
|
349
526
|
}
|
|
350
527
|
|
|
528
|
+
/* Same WCAG 2.4.7 gap as .db-new-item-input: the rename input is focused
|
|
529
|
+
programmatically the moment it appears, so with `outline: none` and no
|
|
530
|
+
replacement a keyboard user had no idea where they were typing. */
|
|
531
|
+
.db-tree-rename-input:focus-visible {
|
|
532
|
+
outline: 2px solid var(--db-focus);
|
|
533
|
+
outline-offset: 1px;
|
|
534
|
+
border-color: var(--db-accent);
|
|
535
|
+
}
|
|
536
|
+
|
|
351
537
|
.db-tree-more {
|
|
352
538
|
flex-shrink: 0;
|
|
353
539
|
display: inline-flex;
|
|
@@ -379,6 +565,11 @@
|
|
|
379
565
|
color: var(--db-text);
|
|
380
566
|
}
|
|
381
567
|
|
|
568
|
+
.db-tree-more:focus-visible {
|
|
569
|
+
outline: 2px solid var(--db-focus);
|
|
570
|
+
outline-offset: -2px;
|
|
571
|
+
}
|
|
572
|
+
|
|
382
573
|
.db-tree-more--active {
|
|
383
574
|
background: var(--db-bg-selected);
|
|
384
575
|
color: var(--db-text-on-selected);
|
|
@@ -413,10 +604,18 @@
|
|
|
413
604
|
color: var(--db-text-secondary);
|
|
414
605
|
}
|
|
415
606
|
|
|
416
|
-
.db-tree-context-item:hover
|
|
607
|
+
.db-tree-context-item:hover,
|
|
608
|
+
.db-tree-context-item:focus-visible {
|
|
417
609
|
background: var(--db-bg-hover);
|
|
418
610
|
}
|
|
419
611
|
|
|
612
|
+
/* Menu items are reached with Arrow keys (they are not tab stops), so the
|
|
613
|
+
ring is the only cue to which item Enter will fire. */
|
|
614
|
+
.db-tree-context-item:focus-visible {
|
|
615
|
+
outline: 2px solid var(--db-focus);
|
|
616
|
+
outline-offset: -2px;
|
|
617
|
+
}
|
|
618
|
+
|
|
420
619
|
.db-tree-context-item--danger {
|
|
421
620
|
color: var(--db-danger);
|
|
422
621
|
}
|
|
@@ -566,6 +765,83 @@
|
|
|
566
765
|
margin: 4px 0;
|
|
567
766
|
}
|
|
568
767
|
|
|
768
|
+
.db-workspace-create {
|
|
769
|
+
box-sizing: border-box;
|
|
770
|
+
width: min(300px, calc(100vw - 24px));
|
|
771
|
+
padding: 10px;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
.db-workspace-create-label {
|
|
775
|
+
display: block;
|
|
776
|
+
margin-bottom: 5px;
|
|
777
|
+
color: var(--db-text-secondary);
|
|
778
|
+
font-size: 12px;
|
|
779
|
+
font-weight: 600;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
.db-workspace-create-input {
|
|
783
|
+
box-sizing: border-box;
|
|
784
|
+
width: 100%;
|
|
785
|
+
padding: 6px 8px;
|
|
786
|
+
border: 1px solid var(--db-input-border);
|
|
787
|
+
border-radius: 4px;
|
|
788
|
+
outline: none;
|
|
789
|
+
background: var(--db-bg);
|
|
790
|
+
color: var(--db-text);
|
|
791
|
+
font: inherit;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
.db-workspace-create-input:focus-visible {
|
|
795
|
+
border-color: var(--db-accent);
|
|
796
|
+
outline: 2px solid var(--db-focus);
|
|
797
|
+
outline-offset: 1px;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
.db-workspace-create-input[aria-invalid='true'] {
|
|
801
|
+
border-color: var(--db-danger);
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
.db-workspace-create-error {
|
|
805
|
+
margin: 6px 0 0;
|
|
806
|
+
color: var(--db-danger);
|
|
807
|
+
font-size: 11px;
|
|
808
|
+
line-height: 1.35;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
.db-workspace-create-actions {
|
|
812
|
+
display: flex;
|
|
813
|
+
justify-content: flex-end;
|
|
814
|
+
gap: 6px;
|
|
815
|
+
margin-top: 9px;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.db-workspace-create-actions button {
|
|
819
|
+
padding: 5px 10px;
|
|
820
|
+
border: 1px solid var(--db-accent);
|
|
821
|
+
border-radius: 4px;
|
|
822
|
+
background: var(--db-accent);
|
|
823
|
+
color: var(--db-text-on-accent);
|
|
824
|
+
font: inherit;
|
|
825
|
+
font-weight: 600;
|
|
826
|
+
cursor: pointer;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
.db-workspace-create-actions button:focus-visible {
|
|
830
|
+
outline: 2px solid var(--db-focus);
|
|
831
|
+
outline-offset: 1px;
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
.db-workspace-create-actions button:disabled {
|
|
835
|
+
cursor: default;
|
|
836
|
+
opacity: 0.6;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.db-workspace-create-actions .db-workspace-create-cancel {
|
|
840
|
+
border-color: var(--db-border-strong);
|
|
841
|
+
background: var(--db-bg);
|
|
842
|
+
color: var(--db-text-secondary);
|
|
843
|
+
}
|
|
844
|
+
|
|
569
845
|
/* ── App Menu ────────────────────────────────────────────────── */
|
|
570
846
|
|
|
571
847
|
.db-app-menu {
|
|
@@ -929,6 +1205,142 @@ body.db-resizing-sidebar * {
|
|
|
929
1205
|
border-right: none;
|
|
930
1206
|
}
|
|
931
1207
|
|
|
1208
|
+
.db-shell--mobile:has(.db-mobile-first-run) .db-file-explorer {
|
|
1209
|
+
flex: 0 0 170px;
|
|
1210
|
+
height: 170px;
|
|
1211
|
+
min-height: 170px;
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
.db-mobile-first-run {
|
|
1215
|
+
flex: 0 0 auto;
|
|
1216
|
+
margin: 12px 12px auto;
|
|
1217
|
+
padding: 20px;
|
|
1218
|
+
border: 1px solid var(--db-border-strong);
|
|
1219
|
+
border-radius: 14px;
|
|
1220
|
+
background:
|
|
1221
|
+
radial-gradient(circle at 92% 4%, var(--db-accent-soft-15), transparent 42%),
|
|
1222
|
+
var(--db-bg-subtle);
|
|
1223
|
+
box-shadow: 0 12px 30px var(--db-shadow);
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.db-mobile-first-run-eyebrow {
|
|
1227
|
+
margin: 0 0 7px;
|
|
1228
|
+
color: var(--db-accent);
|
|
1229
|
+
font-size: 10px;
|
|
1230
|
+
font-weight: 700;
|
|
1231
|
+
letter-spacing: 0.1em;
|
|
1232
|
+
text-transform: uppercase;
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
.db-mobile-first-run h1 {
|
|
1236
|
+
margin: 0;
|
|
1237
|
+
color: var(--db-text);
|
|
1238
|
+
font-size: 23px;
|
|
1239
|
+
line-height: 1.2;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
.db-mobile-first-run > p:not(.db-mobile-first-run-eyebrow) {
|
|
1243
|
+
margin: 10px 0 0;
|
|
1244
|
+
color: var(--db-text-secondary);
|
|
1245
|
+
font-size: 13px;
|
|
1246
|
+
line-height: 1.5;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
.db-mobile-first-run-actions {
|
|
1250
|
+
display: flex;
|
|
1251
|
+
flex-direction: column;
|
|
1252
|
+
gap: 8px;
|
|
1253
|
+
margin-top: 17px;
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
.db-mobile-first-run-actions button {
|
|
1257
|
+
min-height: 42px;
|
|
1258
|
+
padding: 8px 12px;
|
|
1259
|
+
border: 1px solid var(--db-accent);
|
|
1260
|
+
border-radius: 7px;
|
|
1261
|
+
background: var(--db-accent);
|
|
1262
|
+
color: var(--db-text-on-accent);
|
|
1263
|
+
font: inherit;
|
|
1264
|
+
font-weight: 600;
|
|
1265
|
+
cursor: pointer;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
.db-mobile-first-run-actions button:hover {
|
|
1269
|
+
border-color: var(--db-accent-hover);
|
|
1270
|
+
background: var(--db-accent-hover);
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
.db-mobile-first-run-actions .db-mobile-first-run-secondary {
|
|
1274
|
+
border-color: var(--db-border-strong);
|
|
1275
|
+
background: var(--db-bg);
|
|
1276
|
+
color: var(--db-text-secondary);
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
.db-mobile-first-run-actions .db-mobile-first-run-secondary:hover {
|
|
1280
|
+
border-color: var(--db-accent);
|
|
1281
|
+
background: var(--db-bg-hover);
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
.db-mobile-first-run-actions button:focus-visible {
|
|
1285
|
+
outline: 2px solid var(--db-focus);
|
|
1286
|
+
outline-offset: 2px;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
/* The compact editor uses two deliberate toolbar rows: navigation/views on
|
|
1290
|
+
top and actions below. Squisq's formatting actions remain available through
|
|
1291
|
+
its measured More menu; hiding their inline copies removes clipped,
|
|
1292
|
+
keyboard-focusable controls while leaving room for versioning, document
|
|
1293
|
+
settings, Files, and DocBlocks' Export and share control. */
|
|
1294
|
+
.db-shell--mobile .squisq-toolbar {
|
|
1295
|
+
min-height: 88px;
|
|
1296
|
+
flex-wrap: wrap;
|
|
1297
|
+
align-content: stretch;
|
|
1298
|
+
padding-right: 0;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
.db-shell--mobile .squisq-toolbar > .db-mobile-back {
|
|
1302
|
+
box-sizing: border-box;
|
|
1303
|
+
flex: 0 0 44px;
|
|
1304
|
+
height: 44px;
|
|
1305
|
+
justify-content: center;
|
|
1306
|
+
padding: 6px 10px;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.db-shell--mobile .squisq-toolbar-view-tabs {
|
|
1310
|
+
box-sizing: border-box;
|
|
1311
|
+
flex: 1 0 calc(100% - 45px);
|
|
1312
|
+
width: calc(100% - 45px);
|
|
1313
|
+
min-width: 0;
|
|
1314
|
+
height: 44px;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
.db-shell--mobile .squisq-toolbar-actions {
|
|
1318
|
+
flex: 0 1 0;
|
|
1319
|
+
width: 0;
|
|
1320
|
+
height: 44px;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
.db-shell--mobile .squisq-toolbar-actions > * {
|
|
1324
|
+
visibility: hidden;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
.db-shell--mobile .squisq-toolbar-overflow,
|
|
1328
|
+
.db-shell--mobile .squisq-toolbar > .squisq-toolbar-button,
|
|
1329
|
+
.db-shell--mobile .squisq-toolbar > .db-toolbar-menu {
|
|
1330
|
+
flex: 0 0 auto;
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
/* The compact layout moves Squisq's overflow trigger to the left edge of
|
|
1334
|
+
the second row. Its desktop right-aligned placement can consequently put
|
|
1335
|
+
the menu off-canvas, so anchor the mobile popover to the viewport instead. */
|
|
1336
|
+
.db-shell--mobile .squisq-editor-shell .squisq-toolbar-overflow-menu {
|
|
1337
|
+
right: auto !important;
|
|
1338
|
+
left: max(4px, env(safe-area-inset-left)) !important;
|
|
1339
|
+
max-width: calc(100vw - 8px);
|
|
1340
|
+
max-height: calc(100dvh - 96px);
|
|
1341
|
+
overflow-y: auto;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
932
1344
|
.db-mobile-back {
|
|
933
1345
|
display: flex;
|
|
934
1346
|
align-items: center;
|
|
@@ -947,9 +1359,122 @@ body.db-resizing-sidebar * {
|
|
|
947
1359
|
background: var(--db-bg-hover);
|
|
948
1360
|
}
|
|
949
1361
|
|
|
950
|
-
.db-mobile-
|
|
951
|
-
|
|
952
|
-
|
|
1362
|
+
.db-mobile-files-icon {
|
|
1363
|
+
display: inline-flex;
|
|
1364
|
+
align-items: center;
|
|
1365
|
+
justify-content: center;
|
|
1366
|
+
flex-shrink: 0;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
.db-mobile-files-icon svg {
|
|
1370
|
+
width: 24px;
|
|
1371
|
+
height: 24px;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
.db-shell-empty--workspace {
|
|
1375
|
+
position: relative;
|
|
1376
|
+
box-sizing: border-box;
|
|
1377
|
+
flex-direction: column;
|
|
1378
|
+
padding: 32px;
|
|
1379
|
+
background:
|
|
1380
|
+
radial-gradient(circle at 50% 38%, var(--db-accent-soft-08), transparent 44%), var(--db-bg);
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.db-shell-empty--workspace > .db-mobile-back {
|
|
1384
|
+
position: absolute;
|
|
1385
|
+
top: 0;
|
|
1386
|
+
left: 0;
|
|
1387
|
+
right: 0;
|
|
1388
|
+
justify-content: flex-start;
|
|
1389
|
+
padding: 10px 12px;
|
|
1390
|
+
border-bottom: 1px solid var(--db-border);
|
|
1391
|
+
border-radius: 0;
|
|
1392
|
+
background: var(--db-bg-subtle);
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
.db-workspace-empty-content {
|
|
1396
|
+
display: flex;
|
|
1397
|
+
width: min(460px, 100%);
|
|
1398
|
+
flex-direction: column;
|
|
1399
|
+
align-items: center;
|
|
1400
|
+
text-align: center;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
.db-workspace-empty-icon {
|
|
1404
|
+
display: inline-flex;
|
|
1405
|
+
align-items: center;
|
|
1406
|
+
justify-content: center;
|
|
1407
|
+
width: 52px;
|
|
1408
|
+
height: 52px;
|
|
1409
|
+
margin-bottom: 14px;
|
|
1410
|
+
border: 1px solid var(--db-border-strong);
|
|
1411
|
+
border-radius: 14px;
|
|
1412
|
+
background: var(--db-bg-subtle);
|
|
1413
|
+
color: var(--db-accent-deep);
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
.db-workspace-empty-icon svg {
|
|
1417
|
+
width: 26px;
|
|
1418
|
+
height: 26px;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
.db-workspace-empty-content h1 {
|
|
1422
|
+
margin: 0;
|
|
1423
|
+
color: var(--db-text);
|
|
1424
|
+
font-size: 21px;
|
|
1425
|
+
line-height: 1.25;
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
.db-workspace-empty-content > p {
|
|
1429
|
+
max-width: 390px;
|
|
1430
|
+
margin: 9px 0 0;
|
|
1431
|
+
color: var(--db-text-muted);
|
|
1432
|
+
line-height: 1.5;
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
.db-workspace-empty-actions {
|
|
1436
|
+
display: flex;
|
|
1437
|
+
flex-wrap: wrap;
|
|
1438
|
+
justify-content: center;
|
|
1439
|
+
gap: 8px;
|
|
1440
|
+
margin-top: 20px;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.db-workspace-empty-actions button {
|
|
1444
|
+
padding: 8px 13px;
|
|
1445
|
+
border: 1px solid var(--db-accent);
|
|
1446
|
+
border-radius: 5px;
|
|
1447
|
+
background: var(--db-accent);
|
|
1448
|
+
color: var(--db-text-on-accent);
|
|
1449
|
+
font: inherit;
|
|
1450
|
+
font-weight: 600;
|
|
1451
|
+
cursor: pointer;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
.db-workspace-empty-actions button:hover {
|
|
1455
|
+
border-color: var(--db-accent-hover);
|
|
1456
|
+
background: var(--db-accent-hover);
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
.db-workspace-empty-actions button:focus-visible {
|
|
1460
|
+
outline: 2px solid var(--db-focus);
|
|
1461
|
+
outline-offset: 2px;
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
.db-workspace-empty-actions .db-workspace-empty-secondary {
|
|
1465
|
+
border-color: var(--db-border-strong);
|
|
1466
|
+
background: var(--db-bg);
|
|
1467
|
+
color: var(--db-text-secondary);
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
.db-workspace-empty-actions .db-workspace-empty-secondary:hover {
|
|
1471
|
+
border-color: var(--db-accent);
|
|
1472
|
+
background: var(--db-bg-hover);
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
.db-workspace-empty-content .db-workspace-empty-hint {
|
|
1476
|
+
margin-top: 18px;
|
|
1477
|
+
font-size: 12px;
|
|
953
1478
|
}
|
|
954
1479
|
|
|
955
1480
|
/* In folder/empty views, the back button sits as a standalone bar */
|
|
@@ -991,16 +1516,23 @@ body.db-resizing-sidebar * {
|
|
|
991
1516
|
display: flex;
|
|
992
1517
|
align-items: center;
|
|
993
1518
|
justify-content: center;
|
|
1519
|
+
box-sizing: border-box;
|
|
1520
|
+
padding: 16px;
|
|
994
1521
|
background: rgba(0, 0, 0, 0.4);
|
|
995
1522
|
}
|
|
996
1523
|
|
|
997
1524
|
.db-dialog {
|
|
1525
|
+
box-sizing: border-box;
|
|
998
1526
|
background: var(--db-bg);
|
|
999
1527
|
border: 1px solid var(--db-border);
|
|
1000
1528
|
border-radius: 8px;
|
|
1001
1529
|
box-shadow: 0 8px 32px var(--db-shadow);
|
|
1002
1530
|
width: 380px;
|
|
1003
|
-
max-width:
|
|
1531
|
+
max-width: 100%;
|
|
1532
|
+
max-height: calc(100vh - 32px);
|
|
1533
|
+
max-height: calc(100dvh - 32px);
|
|
1534
|
+
display: flex;
|
|
1535
|
+
flex-direction: column;
|
|
1004
1536
|
}
|
|
1005
1537
|
|
|
1006
1538
|
.db-dialog-header {
|
|
@@ -1035,6 +1567,8 @@ body.db-resizing-sidebar * {
|
|
|
1035
1567
|
}
|
|
1036
1568
|
|
|
1037
1569
|
.db-dialog-body {
|
|
1570
|
+
min-height: 0;
|
|
1571
|
+
overflow-y: auto;
|
|
1038
1572
|
padding: 16px 20px 20px;
|
|
1039
1573
|
font-size: 13px;
|
|
1040
1574
|
line-height: 1.6;
|
|
@@ -1058,10 +1592,35 @@ body.db-resizing-sidebar * {
|
|
|
1058
1592
|
text-decoration: underline;
|
|
1059
1593
|
}
|
|
1060
1594
|
|
|
1061
|
-
.db-dialog-links {
|
|
1595
|
+
.db-dialog-links {
|
|
1596
|
+
display: flex;
|
|
1597
|
+
flex-wrap: wrap;
|
|
1598
|
+
align-items: center;
|
|
1599
|
+
gap: 6px;
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
.db-about-version {
|
|
1062
1603
|
display: flex;
|
|
1063
1604
|
align-items: center;
|
|
1064
|
-
gap:
|
|
1605
|
+
gap: 8px;
|
|
1606
|
+
padding: 8px 10px;
|
|
1607
|
+
border: 1px solid var(--db-border);
|
|
1608
|
+
border-radius: 5px;
|
|
1609
|
+
background: var(--db-bg-subtle);
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
.db-about-version span {
|
|
1613
|
+
color: var(--db-text-muted);
|
|
1614
|
+
font-size: 11px;
|
|
1615
|
+
font-weight: 600;
|
|
1616
|
+
letter-spacing: 0.04em;
|
|
1617
|
+
text-transform: uppercase;
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1620
|
+
.db-about-version code {
|
|
1621
|
+
color: var(--db-text);
|
|
1622
|
+
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
|
|
1623
|
+
user-select: all;
|
|
1065
1624
|
}
|
|
1066
1625
|
|
|
1067
1626
|
.db-dialog-sep {
|
|
@@ -1135,12 +1694,70 @@ body.db-resizing-sidebar * {
|
|
|
1135
1694
|
accent-color: var(--db-accent);
|
|
1136
1695
|
}
|
|
1137
1696
|
|
|
1697
|
+
.db-settings-slider {
|
|
1698
|
+
display: flex;
|
|
1699
|
+
flex-direction: column;
|
|
1700
|
+
gap: 6px;
|
|
1701
|
+
color: var(--db-text);
|
|
1702
|
+
font-size: 13px;
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
.db-settings-slider + .db-settings-slider {
|
|
1706
|
+
margin-top: 14px;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
.db-settings-slider-header {
|
|
1710
|
+
display: flex;
|
|
1711
|
+
align-items: baseline;
|
|
1712
|
+
justify-content: space-between;
|
|
1713
|
+
gap: 16px;
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
.db-settings-slider-value {
|
|
1717
|
+
color: var(--db-text-muted);
|
|
1718
|
+
font-variant-numeric: tabular-nums;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
.db-settings-slider input[type='range'] {
|
|
1722
|
+
width: 100%;
|
|
1723
|
+
margin: 0;
|
|
1724
|
+
accent-color: var(--db-accent);
|
|
1725
|
+
cursor: pointer;
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1138
1728
|
.db-settings-accent-grid {
|
|
1139
1729
|
display: grid;
|
|
1140
|
-
grid-template-columns: repeat(
|
|
1730
|
+
grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
|
|
1141
1731
|
gap: 6px;
|
|
1142
1732
|
}
|
|
1143
1733
|
|
|
1734
|
+
.db-settings-action {
|
|
1735
|
+
margin-top: 4px;
|
|
1736
|
+
padding: 7px 12px;
|
|
1737
|
+
border: 1px solid var(--db-accent);
|
|
1738
|
+
border-radius: 5px;
|
|
1739
|
+
background: var(--db-accent);
|
|
1740
|
+
color: var(--db-text-on-accent);
|
|
1741
|
+
font: inherit;
|
|
1742
|
+
font-weight: 600;
|
|
1743
|
+
cursor: pointer;
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
.db-settings-action:hover:not(:disabled) {
|
|
1747
|
+
border-color: var(--db-accent-hover);
|
|
1748
|
+
background: var(--db-accent-hover);
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
.db-settings-action:focus-visible {
|
|
1752
|
+
outline: 2px solid var(--db-focus, var(--db-accent));
|
|
1753
|
+
outline-offset: 2px;
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
.db-settings-action:disabled {
|
|
1757
|
+
opacity: 0.6;
|
|
1758
|
+
cursor: default;
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1144
1761
|
.db-settings-accent {
|
|
1145
1762
|
position: relative;
|
|
1146
1763
|
display: flex;
|
|
@@ -1340,18 +1957,20 @@ body.db-resizing-sidebar * {
|
|
|
1340
1957
|
|
|
1341
1958
|
.db-toolbar-menu {
|
|
1342
1959
|
position: relative;
|
|
1960
|
+
margin-left: 6px;
|
|
1961
|
+
padding-left: 7px;
|
|
1962
|
+
border-left: 1px solid var(--db-border);
|
|
1343
1963
|
}
|
|
1344
1964
|
|
|
1345
1965
|
.db-toolbar-menu-trigger {
|
|
1346
1966
|
display: flex;
|
|
1347
1967
|
align-items: center;
|
|
1348
1968
|
justify-content: center;
|
|
1349
|
-
|
|
1969
|
+
gap: 5px;
|
|
1970
|
+
width: auto;
|
|
1971
|
+
min-width: 28px;
|
|
1350
1972
|
height: 28px;
|
|
1351
|
-
padding: 0;
|
|
1352
|
-
font-size: 16px;
|
|
1353
|
-
font-weight: 700;
|
|
1354
|
-
letter-spacing: 1px;
|
|
1973
|
+
padding: 0 8px;
|
|
1355
1974
|
line-height: 1;
|
|
1356
1975
|
border: 1px solid transparent;
|
|
1357
1976
|
border-radius: 4px;
|
|
@@ -1360,6 +1979,31 @@ body.db-resizing-sidebar * {
|
|
|
1360
1979
|
color: var(--db-text-muted);
|
|
1361
1980
|
}
|
|
1362
1981
|
|
|
1982
|
+
.db-toolbar-menu-trigger svg {
|
|
1983
|
+
flex: 0 0 auto;
|
|
1984
|
+
width: 18px;
|
|
1985
|
+
height: 18px;
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
.db-toolbar-menu-trigger-label {
|
|
1989
|
+
font-size: 12px;
|
|
1990
|
+
font-weight: 600;
|
|
1991
|
+
}
|
|
1992
|
+
|
|
1993
|
+
.db-shell--mobile .db-toolbar-menu {
|
|
1994
|
+
margin-left: 2px;
|
|
1995
|
+
padding-left: 3px;
|
|
1996
|
+
}
|
|
1997
|
+
|
|
1998
|
+
.db-shell--mobile .db-toolbar-menu-trigger {
|
|
1999
|
+
width: 28px;
|
|
2000
|
+
padding: 0;
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
.db-shell--mobile .db-toolbar-menu-trigger-label {
|
|
2004
|
+
display: none;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
1363
2007
|
.db-toolbar-menu-trigger:hover {
|
|
1364
2008
|
background: var(--db-bg-hover);
|
|
1365
2009
|
border-color: var(--db-border);
|
|
@@ -1411,10 +2055,17 @@ body.db-resizing-sidebar * {
|
|
|
1411
2055
|
white-space: nowrap;
|
|
1412
2056
|
}
|
|
1413
2057
|
|
|
1414
|
-
.db-toolbar-menu-item:hover
|
|
2058
|
+
.db-toolbar-menu-item:hover,
|
|
2059
|
+
.db-toolbar-menu-item:focus-visible {
|
|
1415
2060
|
background: var(--db-bg-hover);
|
|
1416
2061
|
}
|
|
1417
2062
|
|
|
2063
|
+
/* Arrow-reachable, not a tab stop — see .db-git-menu-item:focus-visible. */
|
|
2064
|
+
.db-toolbar-menu-item:focus-visible {
|
|
2065
|
+
outline: 2px solid var(--db-focus);
|
|
2066
|
+
outline-offset: -2px;
|
|
2067
|
+
}
|
|
2068
|
+
|
|
1418
2069
|
.db-toolbar-menu-item:disabled {
|
|
1419
2070
|
opacity: 0.5;
|
|
1420
2071
|
cursor: default;
|
|
@@ -1491,6 +2142,10 @@ body.db-resizing-sidebar * {
|
|
|
1491
2142
|
border-color: var(--db-accent);
|
|
1492
2143
|
}
|
|
1493
2144
|
|
|
2145
|
+
.db-export-path-input[aria-invalid='true'] {
|
|
2146
|
+
border-color: var(--db-danger);
|
|
2147
|
+
}
|
|
2148
|
+
|
|
1494
2149
|
.db-export-path-pick {
|
|
1495
2150
|
flex: 0 0 auto;
|
|
1496
2151
|
height: 30px;
|
|
@@ -1522,6 +2177,10 @@ body.db-resizing-sidebar * {
|
|
|
1522
2177
|
color: var(--db-text-placeholder);
|
|
1523
2178
|
}
|
|
1524
2179
|
|
|
2180
|
+
.db-export-hint--error {
|
|
2181
|
+
color: var(--db-danger);
|
|
2182
|
+
}
|
|
2183
|
+
|
|
1525
2184
|
.db-export-checkbox {
|
|
1526
2185
|
display: inline-flex;
|
|
1527
2186
|
align-items: center;
|
|
@@ -1591,6 +2250,20 @@ body.db-resizing-sidebar * {
|
|
|
1591
2250
|
border-top: 1px solid var(--db-border);
|
|
1592
2251
|
}
|
|
1593
2252
|
|
|
2253
|
+
.db-export-more-formats {
|
|
2254
|
+
margin: 4px 0 0;
|
|
2255
|
+
padding-top: 12px;
|
|
2256
|
+
border-top: 1px solid var(--db-border);
|
|
2257
|
+
color: var(--db-text-muted);
|
|
2258
|
+
font-size: 12px;
|
|
2259
|
+
line-height: 1.5;
|
|
2260
|
+
}
|
|
2261
|
+
|
|
2262
|
+
.db-export-more-formats a {
|
|
2263
|
+
color: var(--db-accent);
|
|
2264
|
+
font-weight: 600;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
1594
2267
|
.db-export-btn {
|
|
1595
2268
|
padding: 6px 16px;
|
|
1596
2269
|
font-size: 13px;
|
|
@@ -1627,6 +2300,53 @@ body.db-resizing-sidebar * {
|
|
|
1627
2300
|
color: var(--db-text-on-accent);
|
|
1628
2301
|
}
|
|
1629
2302
|
|
|
2303
|
+
/* Shared-document links intentionally resemble export because they package a
|
|
2304
|
+
bounded Markdown-only DBK; the warning is the critical distinction. */
|
|
2305
|
+
.db-share-dialog {
|
|
2306
|
+
width: 480px;
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
.db-share-warning {
|
|
2310
|
+
margin-bottom: 16px;
|
|
2311
|
+
padding: 10px 12px;
|
|
2312
|
+
color: var(--db-text);
|
|
2313
|
+
background: color-mix(in srgb, var(--db-accent) 12%, var(--db-bg-subtle));
|
|
2314
|
+
border: 1px solid var(--db-accent);
|
|
2315
|
+
border-radius: 5px;
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
.db-share-link {
|
|
2319
|
+
display: block;
|
|
2320
|
+
width: 100%;
|
|
2321
|
+
min-height: 72px;
|
|
2322
|
+
box-sizing: border-box;
|
|
2323
|
+
resize: vertical;
|
|
2324
|
+
padding: 8px;
|
|
2325
|
+
font:
|
|
2326
|
+
11px/1.45 ui-monospace,
|
|
2327
|
+
SFMono-Regular,
|
|
2328
|
+
Consolas,
|
|
2329
|
+
monospace;
|
|
2330
|
+
color: var(--db-text);
|
|
2331
|
+
background: var(--db-bg-subtle);
|
|
2332
|
+
border: 1px solid var(--db-border);
|
|
2333
|
+
border-radius: 4px;
|
|
2334
|
+
outline: none;
|
|
2335
|
+
overflow-wrap: anywhere;
|
|
2336
|
+
}
|
|
2337
|
+
|
|
2338
|
+
.db-share-link:focus {
|
|
2339
|
+
border-color: var(--db-accent);
|
|
2340
|
+
}
|
|
2341
|
+
|
|
2342
|
+
.db-share-length-warning {
|
|
2343
|
+
color: var(--db-danger, #a33a35);
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
.db-share-temporary-note {
|
|
2347
|
+
color: var(--db-text-muted);
|
|
2348
|
+
}
|
|
2349
|
+
|
|
1630
2350
|
/* ── Squisq editor chrome separators ─────────────────────────── */
|
|
1631
2351
|
/* Strengthen the dividers so the toolbar, tabs, and editor body
|
|
1632
2352
|
read as three distinct zones instead of near-identical whites. */
|
|
@@ -1656,6 +2376,25 @@ body.db-resizing-sidebar * {
|
|
|
1656
2376
|
background: var(--db-editor-canvas);
|
|
1657
2377
|
}
|
|
1658
2378
|
|
|
2379
|
+
/* Bind Squisq's host-facing accent to the active DocBlocks appearance. */
|
|
2380
|
+
.db-shell .squisq-editor-shell {
|
|
2381
|
+
--squisq-accent: var(--db-accent);
|
|
2382
|
+
--squisq-accent-hover: var(--db-accent-hover);
|
|
2383
|
+
--squisq-text-on-accent: var(--db-text-on-accent);
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
/* Simple diagrams, drawings, and layout canvases share Squisq's Scene
|
|
2387
|
+
engine. Keep canvas and raised-control surfaces on the same DocBlocks
|
|
2388
|
+
palette instead of falling back to slate. */
|
|
2389
|
+
.db-shell .squisq-editor-shell .squisq-scene-shell {
|
|
2390
|
+
--squisq-surface: var(--db-editor-canvas);
|
|
2391
|
+
--squisq-surface-raised: var(--db-bg-subtle);
|
|
2392
|
+
--squisq-surface-hover: var(--db-bg-hover);
|
|
2393
|
+
--squisq-border: var(--db-border-strong);
|
|
2394
|
+
--squisq-text: var(--db-text);
|
|
2395
|
+
--squisq-text-muted: var(--db-text-muted);
|
|
2396
|
+
}
|
|
2397
|
+
|
|
1659
2398
|
/* ── Inline preview gutter: thematic green ──────────────────── */
|
|
1660
2399
|
/* Rebind squisq's `--squisq-preview-*` custom properties so the
|
|
1661
2400
|
gutter chrome (vertical bracket, diagonal connector + dots,
|
|
@@ -1792,6 +2531,102 @@ body.db-resizing-sidebar * {
|
|
|
1792
2531
|
background: var(--db-bg);
|
|
1793
2532
|
}
|
|
1794
2533
|
|
|
2534
|
+
/* Squisq's media bin ships with a fixed blue-slate palette. Bind the full
|
|
2535
|
+
pane to DocBlocks' appearance tokens so its surface and controls follow
|
|
2536
|
+
the selected accent in both light and dark themes. */
|
|
2537
|
+
.db-shell .squisq-editor-shell .squisq-media-bin {
|
|
2538
|
+
background: var(--db-bg-subtle);
|
|
2539
|
+
border-left-color: var(--db-border);
|
|
2540
|
+
color: var(--db-text);
|
|
2541
|
+
scrollbar-color: var(--db-border-strong) var(--db-bg-subtle);
|
|
2542
|
+
}
|
|
2543
|
+
|
|
2544
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-header {
|
|
2545
|
+
border-bottom-color: var(--db-border);
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2548
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-title {
|
|
2549
|
+
color: var(--db-text-secondary);
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-upload {
|
|
2553
|
+
background: var(--db-accent-tint-strong);
|
|
2554
|
+
border-color: var(--db-border);
|
|
2555
|
+
color: var(--db-text-secondary);
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-upload:hover {
|
|
2559
|
+
background: var(--db-bg-hover);
|
|
2560
|
+
border-color: var(--db-border-strong);
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-empty,
|
|
2564
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-size {
|
|
2565
|
+
color: var(--db-text-muted);
|
|
2566
|
+
}
|
|
2567
|
+
|
|
2568
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-item {
|
|
2569
|
+
border-bottom-color: var(--db-border);
|
|
2570
|
+
color: var(--db-text-secondary);
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2573
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-item:hover,
|
|
2574
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-item:focus-visible {
|
|
2575
|
+
background: var(--db-bg-hover);
|
|
2576
|
+
}
|
|
2577
|
+
|
|
2578
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-item:focus-visible {
|
|
2579
|
+
outline-color: var(--db-accent);
|
|
2580
|
+
}
|
|
2581
|
+
|
|
2582
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-thumb,
|
|
2583
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-icon {
|
|
2584
|
+
background: var(--db-accent-tint-strong);
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-drop-target {
|
|
2588
|
+
background: color-mix(in srgb, var(--db-bg-subtle) 92%, var(--db-accent));
|
|
2589
|
+
border-color: var(--db-accent);
|
|
2590
|
+
color: var(--db-accent-deep);
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-drop-target-icon {
|
|
2594
|
+
background: var(--db-accent);
|
|
2595
|
+
color: var(--db-text-on-accent);
|
|
2596
|
+
}
|
|
2597
|
+
|
|
2598
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-drop-target span:last-child {
|
|
2599
|
+
color: var(--db-text-muted);
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu {
|
|
2603
|
+
background: var(--db-bg);
|
|
2604
|
+
border-color: var(--db-border);
|
|
2605
|
+
box-shadow: 0 12px 28px var(--db-shadow);
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2608
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu-item {
|
|
2609
|
+
color: var(--db-text-secondary);
|
|
2610
|
+
}
|
|
2611
|
+
|
|
2612
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu-item:hover,
|
|
2613
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu-item:focus-visible {
|
|
2614
|
+
background: var(--db-bg-hover);
|
|
2615
|
+
}
|
|
2616
|
+
|
|
2617
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu-item--danger {
|
|
2618
|
+
color: var(--db-danger);
|
|
2619
|
+
}
|
|
2620
|
+
|
|
2621
|
+
.db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu-item--danger:hover,
|
|
2622
|
+
.db-shell
|
|
2623
|
+
.squisq-editor-shell
|
|
2624
|
+
.squisq-media-bin
|
|
2625
|
+
.squisq-media-bin-context-menu-item--danger:focus-visible {
|
|
2626
|
+
background: var(--db-danger-bg);
|
|
2627
|
+
color: var(--db-danger);
|
|
2628
|
+
}
|
|
2629
|
+
|
|
1795
2630
|
/* ── Squisq accent override (blue → thematic green) ──────────── */
|
|
1796
2631
|
|
|
1797
2632
|
.db-shell[data-theme='dark'] .squisq-editor-shell[data-theme='dark'] .squisq-view-tab--active {
|
|
@@ -1943,8 +2778,9 @@ html:has(.db-shell[data-theme='dark']) .squisq-tooltip {
|
|
|
1943
2778
|
/* The gallery popover renders into document.body via createPortal, so
|
|
1944
2779
|
neither .db-shell nor .squisq-editor-shell are ancestors. We use
|
|
1945
2780
|
`html:has(.db-shell[data-theme='dark'])` to detect docblocks' dark
|
|
1946
|
-
theme from outside the shell, then
|
|
1947
|
-
|
|
2781
|
+
theme from outside the shell, then bind the portaled dialog through
|
|
2782
|
+
Squisq's stable `data-squisq-template-gallery-portal` marker. Dialog
|
|
2783
|
+
and gallery ids are intentionally instance-specific. */
|
|
1948
2784
|
|
|
1949
2785
|
.db-shell[data-theme='dark']
|
|
1950
2786
|
.squisq-editor-shell[data-theme='dark']
|
|
@@ -1968,6 +2804,7 @@ html:has(.db-shell[data-theme='dark']) {
|
|
|
1968
2804
|
--db-text-muted: #a89a7c;
|
|
1969
2805
|
--db-danger: #f87171;
|
|
1970
2806
|
--db-danger-bg: #1c1917;
|
|
2807
|
+
--db-text-on-danger: #1c1917;
|
|
1971
2808
|
--db-shadow: rgba(0, 0, 0, 0.4);
|
|
1972
2809
|
--db-accent: #c8b48f;
|
|
1973
2810
|
--db-accent-hover: #dec79d;
|
|
@@ -1988,6 +2825,7 @@ html:has(.db-shell[data-theme='light']) {
|
|
|
1988
2825
|
--db-text-muted: #6b614a;
|
|
1989
2826
|
--db-danger: #b22b1b;
|
|
1990
2827
|
--db-danger-bg: #fdf0ee;
|
|
2828
|
+
--db-text-on-danger: #ffffff;
|
|
1991
2829
|
--db-shadow: rgba(40, 30, 15, 0.12);
|
|
1992
2830
|
--db-accent: #7d6948;
|
|
1993
2831
|
--db-accent-hover: #5e4f37;
|
|
@@ -2325,6 +3163,35 @@ html:has(.db-shell[data-theme='dark'][data-accent='gray']) {
|
|
|
2325
3163
|
--db-badge-text-hover: #ffffff;
|
|
2326
3164
|
}
|
|
2327
3165
|
|
|
3166
|
+
/* Convert/Insert is portaled to document.body, so the editor shell's Squisq
|
|
3167
|
+
overrides cannot reach it. The active DocBlocks palette is already hoisted
|
|
3168
|
+
to html above; consume it here so every accent and appearance produces the
|
|
3169
|
+
same menu surfaces as the rest of the shell. The selector also covers the
|
|
3170
|
+
nested Mermaid and code-snippet menus, which share this portal class. */
|
|
3171
|
+
html:has(.db-shell) .squisq-insert-menu {
|
|
3172
|
+
background: var(--db-bg);
|
|
3173
|
+
border-color: var(--db-border);
|
|
3174
|
+
color: var(--db-text-secondary);
|
|
3175
|
+
box-shadow: 0 4px 12px var(--db-shadow);
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
html:has(.db-shell) .squisq-insert-menu .squisq-toolbar-overflow-item {
|
|
3179
|
+
color: var(--db-text-secondary);
|
|
3180
|
+
}
|
|
3181
|
+
|
|
3182
|
+
html:has(.db-shell) .squisq-insert-menu .squisq-toolbar-overflow-item:hover,
|
|
3183
|
+
html:has(.db-shell) .squisq-insert-menu .squisq-toolbar-overflow-item:focus-visible {
|
|
3184
|
+
background: var(--db-bg-hover);
|
|
3185
|
+
}
|
|
3186
|
+
|
|
3187
|
+
html:has(.db-shell) .squisq-insert-menu .squisq-insert-menu-header {
|
|
3188
|
+
color: var(--db-text-muted);
|
|
3189
|
+
}
|
|
3190
|
+
|
|
3191
|
+
html:has(.db-shell) .squisq-insert-menu .squisq-insert-menu-header--separated {
|
|
3192
|
+
border-top-color: var(--db-border);
|
|
3193
|
+
}
|
|
3194
|
+
|
|
2328
3195
|
html:has(.db-shell[data-theme='light']:not([data-accent='brown'])) .squisq-tooltip {
|
|
2329
3196
|
background: var(--db-accent-deep);
|
|
2330
3197
|
color: var(--db-bg-subtle);
|
|
@@ -2336,7 +3203,7 @@ html:has(.db-shell[data-theme='dark']:not([data-accent='brown'])) .squisq-toolti
|
|
|
2336
3203
|
}
|
|
2337
3204
|
|
|
2338
3205
|
html:has(.db-shell[data-theme='dark'])
|
|
2339
|
-
|
|
3206
|
+
.squisq-template-gallery-dialog[data-theme='dark']:has([data-squisq-template-gallery-portal]) {
|
|
2340
3207
|
--squisq-template-gallery-backdrop: var(--db-gallery-backdrop, rgba(18, 14, 9, 0.58));
|
|
2341
3208
|
--squisq-template-gallery-panel-bg: var(--db-gallery-panel-bg, var(--db-bg));
|
|
2342
3209
|
--squisq-template-gallery-panel-border: var(--db-border);
|
|
@@ -2390,7 +3257,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
2390
3257
|
}
|
|
2391
3258
|
|
|
2392
3259
|
html:has(.db-shell[data-theme='light'])
|
|
2393
|
-
|
|
3260
|
+
.squisq-template-gallery-dialog[data-theme='light']:has([data-squisq-template-gallery-portal]) {
|
|
2394
3261
|
--squisq-template-gallery-backdrop: var(--db-gallery-backdrop, rgba(42, 36, 25, 0.24));
|
|
2395
3262
|
--squisq-template-gallery-panel-bg: var(--db-gallery-panel-bg, #fffdf7);
|
|
2396
3263
|
--squisq-template-gallery-panel-border: var(--db-border);
|
|
@@ -2769,7 +3636,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
2769
3636
|
}
|
|
2770
3637
|
|
|
2771
3638
|
.db-shell .squisq-props-badge {
|
|
2772
|
-
transform:
|
|
3639
|
+
transform: none;
|
|
2773
3640
|
}
|
|
2774
3641
|
|
|
2775
3642
|
.db-shell .squisq-template-badge-core::after {
|
|
@@ -2965,7 +3832,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
2965
3832
|
|
|
2966
3833
|
/* Status bar "✓ OK" indicator — squisq paints this in saturated emerald
|
|
2967
3834
|
(#059669 light, #34d399 dark). Re-tone to the sage accent so the
|
|
2968
|
-
|
|
3835
|
+
status indicator harmonizes with the rest of the chrome. */
|
|
2969
3836
|
.db-shell .squisq-status-ok {
|
|
2970
3837
|
color: var(--db-accent);
|
|
2971
3838
|
}
|
|
@@ -2974,6 +3841,10 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
2974
3841
|
color: var(--db-accent-hover);
|
|
2975
3842
|
}
|
|
2976
3843
|
|
|
3844
|
+
.db-autosave-pending {
|
|
3845
|
+
opacity: 0.62;
|
|
3846
|
+
}
|
|
3847
|
+
|
|
2977
3848
|
/* Outline pane (left of the editor) — squisq paints a warm beige
|
|
2978
3849
|
(#dcd8d0 light / dark slate in dark mode). Re-tone to `--db-gutter-bg`
|
|
2979
3850
|
so it matches the inline-preview gutter on the right and reads as
|
|
@@ -3232,7 +4103,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3232
4103
|
font-size: 13px;
|
|
3233
4104
|
font-weight: 600;
|
|
3234
4105
|
background: var(--db-accent);
|
|
3235
|
-
color: var(--db-
|
|
4106
|
+
color: var(--db-text-on-accent);
|
|
3236
4107
|
border: none;
|
|
3237
4108
|
border-radius: 6px;
|
|
3238
4109
|
cursor: pointer;
|
|
@@ -3266,11 +4137,9 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3266
4137
|
|
|
3267
4138
|
@keyframes db-welcome-gateway-in {
|
|
3268
4139
|
from {
|
|
3269
|
-
opacity: 0;
|
|
3270
4140
|
transform: translate(-50%, 8px);
|
|
3271
4141
|
}
|
|
3272
4142
|
to {
|
|
3273
|
-
opacity: 1;
|
|
3274
4143
|
transform: translate(-50%, 0);
|
|
3275
4144
|
}
|
|
3276
4145
|
}
|
|
@@ -3336,7 +4205,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3336
4205
|
}
|
|
3337
4206
|
|
|
3338
4207
|
/* Browser PWA update notice. It is docked over the right side of Squisq's
|
|
3339
|
-
status bar, while extra status-bar padding keeps
|
|
4208
|
+
status bar, while extra status-bar padding keeps its contents visible.
|
|
3340
4209
|
If the status bar is hidden, it becomes a compact floating badge so the
|
|
3341
4210
|
waiting update remains reachable. */
|
|
3342
4211
|
.db-shell-editor-area--has-update .squisq-status-bar {
|
|
@@ -3489,7 +4358,7 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3489
4358
|
/* Dialog size modifiers (shared Dialog component) */
|
|
3490
4359
|
.db-dialog--wide {
|
|
3491
4360
|
width: 560px;
|
|
3492
|
-
max-width:
|
|
4361
|
+
max-width: 100%;
|
|
3493
4362
|
}
|
|
3494
4363
|
|
|
3495
4364
|
.db-dialog--full {
|
|
@@ -3536,6 +4405,19 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3536
4405
|
cursor: default;
|
|
3537
4406
|
}
|
|
3538
4407
|
|
|
4408
|
+
/* Destructive confirmation (delete, remove workspace). The foreground comes
|
|
4409
|
+
from a token rather than a literal because the two themes need opposite ink:
|
|
4410
|
+
light's danger is deep red and carries white at ~6.5:1, while dark's is a
|
|
4411
|
+
light red where white would fall to ~2.8:1 and fail WCAG AA. */
|
|
4412
|
+
.db-git-primary-btn--danger {
|
|
4413
|
+
background: var(--db-danger);
|
|
4414
|
+
color: var(--db-text-on-danger);
|
|
4415
|
+
}
|
|
4416
|
+
|
|
4417
|
+
.db-git-primary-btn--danger:hover:not(:disabled) {
|
|
4418
|
+
background: color-mix(in srgb, var(--db-danger) 85%, black);
|
|
4419
|
+
}
|
|
4420
|
+
|
|
3539
4421
|
.db-git-secondary-btn {
|
|
3540
4422
|
padding: 6px 14px;
|
|
3541
4423
|
border: 1px solid var(--db-border-strong);
|
|
@@ -3642,10 +4524,18 @@ html:has(.db-shell[data-theme='dark'])
|
|
|
3642
4524
|
cursor: pointer;
|
|
3643
4525
|
}
|
|
3644
4526
|
|
|
3645
|
-
.db-git-menu-item:hover:not(:disabled)
|
|
4527
|
+
.db-git-menu-item:hover:not(:disabled),
|
|
4528
|
+
.db-git-menu-item:focus-visible {
|
|
3646
4529
|
background: var(--db-bg-hover);
|
|
3647
4530
|
}
|
|
3648
4531
|
|
|
4532
|
+
/* Items are arrow-reachable rather than tab stops, so the ring is the only
|
|
4533
|
+
cue to which one Enter will fire. */
|
|
4534
|
+
.db-git-menu-item:focus-visible {
|
|
4535
|
+
outline: 2px solid var(--db-focus);
|
|
4536
|
+
outline-offset: -2px;
|
|
4537
|
+
}
|
|
4538
|
+
|
|
3649
4539
|
.db-git-menu-item:disabled {
|
|
3650
4540
|
color: var(--db-text-placeholder);
|
|
3651
4541
|
cursor: default;
|
|
@@ -3814,7 +4704,8 @@ button.db-git-file-row:hover {
|
|
|
3814
4704
|
box-sizing: border-box;
|
|
3815
4705
|
}
|
|
3816
4706
|
|
|
3817
|
-
.db-git-form-error
|
|
4707
|
+
.db-git-form-error,
|
|
4708
|
+
.db-export-error {
|
|
3818
4709
|
margin: 8px 0 0;
|
|
3819
4710
|
color: var(--db-danger);
|
|
3820
4711
|
font-size: 12.5px;
|
|
@@ -3964,6 +4855,22 @@ button.db-git-file-row:hover {
|
|
|
3964
4855
|
color: var(--db-text-muted);
|
|
3965
4856
|
}
|
|
3966
4857
|
|
|
4858
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4859
|
+
.db-workspace-picker-caret,
|
|
4860
|
+
.db-app-menu-caret,
|
|
4861
|
+
.db-ws-settings-btn,
|
|
4862
|
+
.db-shell-sidebar-resizer,
|
|
4863
|
+
.db-export-chip,
|
|
4864
|
+
.db-git-progress-bar > span {
|
|
4865
|
+
transition: none;
|
|
4866
|
+
}
|
|
4867
|
+
|
|
4868
|
+
.db-welcome-gateway,
|
|
4869
|
+
.db-save-toast {
|
|
4870
|
+
animation: none;
|
|
4871
|
+
}
|
|
4872
|
+
}
|
|
4873
|
+
|
|
3967
4874
|
/* History dialog internals added by the expanded-row layout */
|
|
3968
4875
|
.db-git-history-toggle {
|
|
3969
4876
|
display: block;
|
|
@@ -4002,14 +4909,16 @@ button.db-git-file-row:hover {
|
|
|
4002
4909
|
block turns that row into the titlebar: draggable empty space, insets for
|
|
4003
4910
|
the caption buttons, and every interactive descendant opted back out.
|
|
4004
4911
|
|
|
4005
|
-
|
|
4006
|
-
packages/desktop/renderer/titlebar.css
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4912
|
+
Shares its drag/inset structure with the Electron build in
|
|
4913
|
+
packages/desktop/renderer/titlebar.css. Its compact vertical metrics are
|
|
4914
|
+
intentionally PWA-specific because Electron uses a 42px overlay while this
|
|
4915
|
+
mode follows the OS-provided caption height (32px on Windows). Electron is
|
|
4916
|
+
scoped under `.db-desktop-root` and reports `display-mode: browser`, so this
|
|
4917
|
+
media query can never double-apply there. The media query is live: toggling
|
|
4918
|
+
the overlay chevron flips it with no JS. */
|
|
4010
4919
|
@media (display-mode: window-controls-overlay) {
|
|
4011
4920
|
.db-shell {
|
|
4012
|
-
--db-wco-titlebar-height:
|
|
4921
|
+
--db-wco-titlebar-height: env(titlebar-area-height, 32px);
|
|
4013
4922
|
}
|
|
4014
4923
|
|
|
4015
4924
|
/* The first shell row replaces the native titlebar. Empty space can drag
|
|
@@ -4025,10 +4934,51 @@ button.db-git-file-row:hover {
|
|
|
4025
4934
|
}
|
|
4026
4935
|
|
|
4027
4936
|
.db-shell .db-shell-sidebar-header {
|
|
4937
|
+
padding-block: 0;
|
|
4028
4938
|
padding-left: max(4px, calc(env(titlebar-area-x, 0px) + 4px));
|
|
4029
4939
|
cursor: grab;
|
|
4030
4940
|
}
|
|
4031
4941
|
|
|
4942
|
+
/* Keep the shell controls inside the compact native caption band. These
|
|
4943
|
+
overrides apply only to an installed app using Window Controls Overlay;
|
|
4944
|
+
the regular browser toolbar keeps its roomier metrics. */
|
|
4945
|
+
.db-shell .db-app-menu-btn,
|
|
4946
|
+
.db-shell .db-workspace-picker-btn {
|
|
4947
|
+
padding-block: 3px;
|
|
4948
|
+
}
|
|
4949
|
+
|
|
4950
|
+
.db-shell .squisq-toolbar-view-tab {
|
|
4951
|
+
padding-top: 4px;
|
|
4952
|
+
padding-bottom: 2px;
|
|
4953
|
+
}
|
|
4954
|
+
|
|
4955
|
+
.db-shell .squisq-use-mode-trigger {
|
|
4956
|
+
padding-bottom: 7px;
|
|
4957
|
+
}
|
|
4958
|
+
|
|
4959
|
+
/* The 32px caption row leaves little room around Squisq's 28px action
|
|
4960
|
+
buttons. Keep the selected background clear of the header's 1px bottom
|
|
4961
|
+
divider without moving the glyphs off their shared center line. */
|
|
4962
|
+
.db-shell .squisq-toolbar-actions .squisq-toolbar-button {
|
|
4963
|
+
box-sizing: border-box;
|
|
4964
|
+
height: 26px;
|
|
4965
|
+
}
|
|
4966
|
+
|
|
4967
|
+
/* Squisq's overflow measurement deliberately tolerates a 2px overhang.
|
|
4968
|
+
Reserve one pixel beyond that tolerance so the final Insert control
|
|
4969
|
+
moves into More actions instead of being clipped by the caption inset. */
|
|
4970
|
+
.db-shell .squisq-toolbar-actions {
|
|
4971
|
+
margin-right: 3px;
|
|
4972
|
+
}
|
|
4973
|
+
|
|
4974
|
+
.db-shell .squisq-toolbar-button[aria-label='Insert image'] {
|
|
4975
|
+
height: 28px;
|
|
4976
|
+
}
|
|
4977
|
+
|
|
4978
|
+
.db-shell .squisq-editor-header--image {
|
|
4979
|
+
padding-block: 0;
|
|
4980
|
+
}
|
|
4981
|
+
|
|
4032
4982
|
/* Make the draggable header space beside the workspace gear discoverable,
|
|
4033
4983
|
matching the Electron titlebar without introducing another control. */
|
|
4034
4984
|
.db-shell .db-shell-sidebar-header::after {
|