@bendyline/docblocks-react 1.1.1 → 2.0.0

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 (335) hide show
  1. package/README.md +50 -15
  2. package/dist/AppMenu/AppMenu.d.ts +29 -2
  3. package/dist/AppMenu/AppMenu.d.ts.map +1 -1
  4. package/dist/AppMenu/AppMenu.js +41 -2
  5. package/dist/AppMenu/AppMenu.js.map +1 -1
  6. package/dist/AppMenu/index.d.ts +1 -1
  7. package/dist/AppMenu/index.d.ts.map +1 -1
  8. package/dist/DocBlocksShell/DocBlocksShell.d.ts +17 -4
  9. package/dist/DocBlocksShell/DocBlocksShell.d.ts.map +1 -1
  10. package/dist/DocBlocksShell/DocBlocksShell.js +1710 -299
  11. package/dist/DocBlocksShell/DocBlocksShell.js.map +1 -1
  12. package/dist/DocBlocksShell/LazyEditorShell.d.ts +3 -0
  13. package/dist/DocBlocksShell/LazyEditorShell.d.ts.map +1 -0
  14. package/dist/DocBlocksShell/LazyEditorShell.js +3 -0
  15. package/dist/DocBlocksShell/LazyEditorShell.js.map +1 -0
  16. package/dist/DocBlocksShell/UpdateAvailableNotice.d.ts +13 -0
  17. package/dist/DocBlocksShell/UpdateAvailableNotice.d.ts.map +1 -0
  18. package/dist/DocBlocksShell/UpdateAvailableNotice.js +16 -0
  19. package/dist/DocBlocksShell/UpdateAvailableNotice.js.map +1 -0
  20. package/dist/DocBlocksShell/document-title.d.ts +3 -0
  21. package/dist/DocBlocksShell/document-title.d.ts.map +1 -0
  22. package/dist/DocBlocksShell/document-title.js +17 -0
  23. package/dist/DocBlocksShell/document-title.js.map +1 -0
  24. package/dist/DocBlocksShell/workspace-authority-barrier.d.ts +14 -0
  25. package/dist/DocBlocksShell/workspace-authority-barrier.d.ts.map +1 -0
  26. package/dist/DocBlocksShell/workspace-authority-barrier.js +23 -0
  27. package/dist/DocBlocksShell/workspace-authority-barrier.js.map +1 -0
  28. package/dist/Export/DeferredExportToolbarControls.d.ts +5 -0
  29. package/dist/Export/DeferredExportToolbarControls.d.ts.map +1 -0
  30. package/dist/Export/DeferredExportToolbarControls.js +10 -0
  31. package/dist/Export/DeferredExportToolbarControls.js.map +1 -0
  32. package/dist/Export/ExportDialog.d.ts +10 -1
  33. package/dist/Export/ExportDialog.d.ts.map +1 -1
  34. package/dist/Export/ExportDialog.js +39 -20
  35. package/dist/Export/ExportDialog.js.map +1 -1
  36. package/dist/Export/ExportToolbarControls.d.ts +21 -1
  37. package/dist/Export/ExportToolbarControls.d.ts.map +1 -1
  38. package/dist/Export/ExportToolbarControls.js +161 -26
  39. package/dist/Export/ExportToolbarControls.js.map +1 -1
  40. package/dist/Export/export-destination.d.ts +3 -0
  41. package/dist/Export/export-destination.d.ts.map +1 -0
  42. package/dist/Export/export-destination.js +32 -0
  43. package/dist/Export/export-destination.js.map +1 -0
  44. package/dist/Export/index.d.ts +8 -4
  45. package/dist/Export/index.d.ts.map +1 -1
  46. package/dist/Export/index.js +4 -1
  47. package/dist/Export/index.js.map +1 -1
  48. package/dist/Export/public-api.d.ts +12 -0
  49. package/dist/Export/public-api.d.ts.map +1 -0
  50. package/dist/Export/public-api.js +9 -0
  51. package/dist/Export/public-api.js.map +1 -0
  52. package/dist/Export/run-export.d.ts +3 -1
  53. package/dist/Export/run-export.d.ts.map +1 -1
  54. package/dist/Export/run-export.js +58 -25
  55. package/dist/Export/run-export.js.map +1 -1
  56. package/dist/Export/transform-summaries.d.ts +7 -0
  57. package/dist/Export/transform-summaries.d.ts.map +1 -0
  58. package/dist/Export/transform-summaries.js +6 -0
  59. package/dist/Export/transform-summaries.js.map +1 -0
  60. package/dist/ExportDialog-MEUISWZX.js +9 -0
  61. package/dist/ExportDialog-MEUISWZX.js.map +1 -0
  62. package/dist/ExportToolbarControls-D2YDWOXW.js +373 -0
  63. package/dist/ExportToolbarControls-D2YDWOXW.js.map +1 -0
  64. package/dist/FileExplorer/FileExplorer.d.ts +26 -4
  65. package/dist/FileExplorer/FileExplorer.d.ts.map +1 -1
  66. package/dist/FileExplorer/FileExplorer.js +204 -29
  67. package/dist/FileExplorer/FileExplorer.js.map +1 -1
  68. package/dist/FileExplorer/FileTreeNode.d.ts +24 -3
  69. package/dist/FileExplorer/FileTreeNode.d.ts.map +1 -1
  70. package/dist/FileExplorer/FileTreeNode.js +27 -8
  71. package/dist/FileExplorer/FileTreeNode.js.map +1 -1
  72. package/dist/FileExplorer/index.d.ts +1 -1
  73. package/dist/FileExplorer/index.d.ts.map +1 -1
  74. package/dist/FileExplorer/useFileTree.d.ts +5 -3
  75. package/dist/FileExplorer/useFileTree.d.ts.map +1 -1
  76. package/dist/FileExplorer/useFileTree.js +173 -13
  77. package/dist/FileExplorer/useFileTree.js.map +1 -1
  78. package/dist/Git/GitAuthGuidanceDialog.d.ts +18 -0
  79. package/dist/Git/GitAuthGuidanceDialog.d.ts.map +1 -0
  80. package/dist/Git/GitAuthGuidanceDialog.js +27 -0
  81. package/dist/Git/GitAuthGuidanceDialog.js.map +1 -0
  82. package/dist/Git/GitBranchesDialog.d.ts +13 -0
  83. package/dist/Git/GitBranchesDialog.d.ts.map +1 -0
  84. package/dist/Git/GitBranchesDialog.js +59 -0
  85. package/dist/Git/GitBranchesDialog.js.map +1 -0
  86. package/dist/Git/GitCloneDialog.d.ts +14 -0
  87. package/dist/Git/GitCloneDialog.d.ts.map +1 -0
  88. package/dist/Git/GitCloneDialog.js +79 -0
  89. package/dist/Git/GitCloneDialog.js.map +1 -0
  90. package/dist/Git/GitCommitDialog.d.ts +12 -0
  91. package/dist/Git/GitCommitDialog.d.ts.map +1 -0
  92. package/dist/Git/GitCommitDialog.js +38 -0
  93. package/dist/Git/GitCommitDialog.js.map +1 -0
  94. package/dist/Git/GitConflictsDialog.d.ts +12 -0
  95. package/dist/Git/GitConflictsDialog.d.ts.map +1 -0
  96. package/dist/Git/GitConflictsDialog.js +17 -0
  97. package/dist/Git/GitConflictsDialog.js.map +1 -0
  98. package/dist/Git/GitContext.d.ts +89 -0
  99. package/dist/Git/GitContext.d.ts.map +1 -0
  100. package/dist/Git/GitContext.js +15 -0
  101. package/dist/Git/GitContext.js.map +1 -0
  102. package/dist/Git/GitDiffDialog.d.ts +20 -0
  103. package/dist/Git/GitDiffDialog.d.ts.map +1 -0
  104. package/dist/Git/GitDiffDialog.js +100 -0
  105. package/dist/Git/GitDiffDialog.js.map +1 -0
  106. package/dist/Git/GitDiffView.d.ts +23 -0
  107. package/dist/Git/GitDiffView.d.ts.map +1 -0
  108. package/dist/Git/GitDiffView.js +77 -0
  109. package/dist/Git/GitDiffView.js.map +1 -0
  110. package/dist/Git/GitHistoryDialog.d.ts +15 -0
  111. package/dist/Git/GitHistoryDialog.d.ts.map +1 -0
  112. package/dist/Git/GitHistoryDialog.js +107 -0
  113. package/dist/Git/GitHistoryDialog.js.map +1 -0
  114. package/dist/Git/GitStatusBar.d.ts +8 -0
  115. package/dist/Git/GitStatusBar.d.ts.map +1 -0
  116. package/dist/Git/GitStatusBar.js +49 -0
  117. package/dist/Git/GitStatusBar.js.map +1 -0
  118. package/dist/Git/GitToolbarControl.d.ts +15 -0
  119. package/dist/Git/GitToolbarControl.d.ts.map +1 -0
  120. package/dist/Git/GitToolbarControl.js +51 -0
  121. package/dist/Git/GitToolbarControl.js.map +1 -0
  122. package/dist/Git/GitUI.d.ts +14 -0
  123. package/dist/Git/GitUI.d.ts.map +1 -0
  124. package/dist/Git/GitUI.js +21 -0
  125. package/dist/Git/GitUI.js.map +1 -0
  126. package/dist/Git/commit-selection.d.ts +22 -0
  127. package/dist/Git/commit-selection.d.ts.map +1 -0
  128. package/dist/Git/commit-selection.js +47 -0
  129. package/dist/Git/commit-selection.js.map +1 -0
  130. package/dist/Git/git-clone-utils.d.ts +8 -0
  131. package/dist/Git/git-clone-utils.d.ts.map +1 -0
  132. package/dist/Git/git-clone-utils.js +26 -0
  133. package/dist/Git/git-clone-utils.js.map +1 -0
  134. package/dist/Git/git-status.d.ts +24 -0
  135. package/dist/Git/git-status.d.ts.map +1 -0
  136. package/dist/Git/git-status.js +105 -0
  137. package/dist/Git/git-status.js.map +1 -0
  138. package/dist/Git/useGit.d.ts +15 -0
  139. package/dist/Git/useGit.d.ts.map +1 -0
  140. package/dist/Git/useGit.js +206 -0
  141. package/dist/Git/useGit.js.map +1 -0
  142. package/dist/Git/useGitStatus.d.ts +17 -0
  143. package/dist/Git/useGitStatus.d.ts.map +1 -0
  144. package/dist/Git/useGitStatus.js +63 -0
  145. package/dist/Git/useGitStatus.js.map +1 -0
  146. package/dist/GitToolbarControl-LMIR4R7I.js +117 -0
  147. package/dist/GitToolbarControl-LMIR4R7I.js.map +1 -0
  148. package/dist/GitUI-KGF5MSNV.js +1048 -0
  149. package/dist/GitUI-KGF5MSNV.js.map +1 -0
  150. package/dist/LazyEditorShell-EF2BWRXU.js +6 -0
  151. package/dist/LazyEditorShell-EF2BWRXU.js.map +1 -0
  152. package/dist/Settings/Settings.d.ts +23 -0
  153. package/dist/Settings/Settings.d.ts.map +1 -0
  154. package/dist/Settings/Settings.js +22 -0
  155. package/dist/Settings/Settings.js.map +1 -0
  156. package/dist/Settings/public-api.d.ts +3 -0
  157. package/dist/Settings/public-api.d.ts.map +1 -0
  158. package/dist/Settings/public-api.js +2 -0
  159. package/dist/Settings/public-api.js.map +1 -0
  160. package/dist/WorkspacePicker/WorkspacePicker.d.ts +6 -1
  161. package/dist/WorkspacePicker/WorkspacePicker.d.ts.map +1 -1
  162. package/dist/WorkspacePicker/WorkspacePicker.js +16 -5
  163. package/dist/WorkspacePicker/WorkspacePicker.js.map +1 -1
  164. package/dist/chunk-3SAXDU2U.js +157 -0
  165. package/dist/chunk-3SAXDU2U.js.map +1 -0
  166. package/dist/chunk-4XXSWN3T.js +13 -0
  167. package/dist/chunk-4XXSWN3T.js.map +1 -0
  168. package/dist/chunk-5A4KEWKT.js +97 -0
  169. package/dist/chunk-5A4KEWKT.js.map +1 -0
  170. package/dist/chunk-AOVTHZU7.js +321 -0
  171. package/dist/chunk-AOVTHZU7.js.map +1 -0
  172. package/dist/chunk-DD4VFJQI.js +51 -0
  173. package/dist/chunk-DD4VFJQI.js.map +1 -0
  174. package/dist/chunk-GSNZSCIK.js +55 -0
  175. package/dist/chunk-GSNZSCIK.js.map +1 -0
  176. package/dist/chunk-VHDP4IPL.js +70 -0
  177. package/dist/chunk-VHDP4IPL.js.map +1 -0
  178. package/dist/chunk-ZI56BNB7.js +270 -0
  179. package/dist/chunk-ZI56BNB7.js.map +1 -0
  180. package/dist/components/Dialog.d.ts +22 -0
  181. package/dist/components/Dialog.d.ts.map +1 -0
  182. package/dist/components/Dialog.js +33 -0
  183. package/dist/components/Dialog.js.map +1 -0
  184. package/dist/editor.d.ts +10 -0
  185. package/dist/editor.d.ts.map +1 -0
  186. package/dist/editor.js +70 -0
  187. package/dist/editor.js.map +1 -0
  188. package/dist/export/index.d.ts +87 -0
  189. package/dist/export/index.js +26 -0
  190. package/dist/export/index.js.map +1 -0
  191. package/dist/hooks/index.d.ts +2 -1
  192. package/dist/hooks/index.d.ts.map +1 -1
  193. package/dist/hooks/index.js +1 -1
  194. package/dist/hooks/index.js.map +1 -1
  195. package/dist/hooks/useDocumentSession.d.ts +16 -0
  196. package/dist/hooks/useDocumentSession.d.ts.map +1 -0
  197. package/dist/hooks/useDocumentSession.js +18 -0
  198. package/dist/hooks/useDocumentSession.js.map +1 -0
  199. package/dist/icons.d.ts +11 -6
  200. package/dist/icons.d.ts.map +1 -1
  201. package/dist/icons.js +21 -20
  202. package/dist/icons.js.map +1 -1
  203. package/dist/index.d.ts +8 -5
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +4 -2
  206. package/dist/index.js.map +1 -1
  207. package/dist/preferences/theme.d.ts +18 -0
  208. package/dist/preferences/theme.d.ts.map +1 -0
  209. package/dist/preferences/theme.js +63 -0
  210. package/dist/preferences/theme.js.map +1 -0
  211. package/dist/provider-lease.d.ts +10 -0
  212. package/dist/provider-lease.d.ts.map +1 -0
  213. package/dist/provider-lease.js +42 -0
  214. package/dist/provider-lease.js.map +1 -0
  215. package/dist/run-export-ICTZITXC.js +10 -0
  216. package/dist/run-export-ICTZITXC.js.map +1 -0
  217. package/dist/settings/index.d.ts +28 -0
  218. package/dist/settings/index.js +12 -0
  219. package/dist/settings/index.js.map +1 -0
  220. package/package.json +27 -10
  221. package/src/AppMenu/AppMenu.tsx +169 -99
  222. package/src/AppMenu/index.ts +1 -1
  223. package/src/DocBlocksShell/DocBlocksShell.tsx +2183 -516
  224. package/src/DocBlocksShell/LazyEditorShell.ts +2 -0
  225. package/src/DocBlocksShell/UpdateAvailableNotice.tsx +60 -0
  226. package/src/DocBlocksShell/document-title.ts +19 -0
  227. package/src/DocBlocksShell/workspace-authority-barrier.ts +26 -0
  228. package/src/Export/DeferredExportToolbarControls.tsx +23 -0
  229. package/src/Export/ExportDialog.tsx +102 -27
  230. package/src/Export/ExportToolbarControls.tsx +343 -57
  231. package/src/Export/export-destination.ts +30 -0
  232. package/src/Export/index.ts +18 -4
  233. package/src/Export/public-api.ts +17 -0
  234. package/src/Export/run-export.ts +66 -29
  235. package/src/Export/transform-summaries.ts +14 -0
  236. package/src/FileExplorer/FileExplorer.tsx +284 -38
  237. package/src/FileExplorer/FileTreeNode.tsx +100 -8
  238. package/src/FileExplorer/index.ts +1 -1
  239. package/src/FileExplorer/useFileTree.ts +190 -16
  240. package/src/Git/GitAuthGuidanceDialog.tsx +84 -0
  241. package/src/Git/GitBranchesDialog.tsx +144 -0
  242. package/src/Git/GitCloneDialog.tsx +200 -0
  243. package/src/Git/GitCommitDialog.tsx +119 -0
  244. package/src/Git/GitConflictsDialog.tsx +62 -0
  245. package/src/Git/GitContext.tsx +88 -0
  246. package/src/Git/GitDiffDialog.tsx +147 -0
  247. package/src/Git/GitDiffView.tsx +105 -0
  248. package/src/Git/GitHistoryDialog.tsx +195 -0
  249. package/src/Git/GitStatusBar.tsx +157 -0
  250. package/src/Git/GitToolbarControl.tsx +123 -0
  251. package/src/Git/GitUI.tsx +68 -0
  252. package/src/Git/commit-selection.ts +63 -0
  253. package/src/Git/git-clone-utils.ts +23 -0
  254. package/src/Git/git-status.ts +113 -0
  255. package/src/Git/useGit.ts +279 -0
  256. package/src/Git/useGitStatus.ts +78 -0
  257. package/src/Settings/Settings.tsx +118 -0
  258. package/src/Settings/public-api.ts +8 -0
  259. package/src/WorkspacePicker/WorkspacePicker.tsx +62 -8
  260. package/src/components/Dialog.tsx +81 -0
  261. package/src/editor.ts +72 -0
  262. package/src/hooks/index.ts +2 -1
  263. package/src/hooks/useDocumentSession.ts +37 -0
  264. package/src/icons.tsx +33 -55
  265. package/src/index.ts +35 -5
  266. package/src/preferences/theme.ts +67 -0
  267. package/src/provider-lease.ts +52 -0
  268. package/src/styles/docblocks.css +2247 -77
  269. package/src/types/pwa-dom.d.ts +31 -0
  270. package/dist/hooks/useAutoSave.d.ts +0 -15
  271. package/dist/hooks/useAutoSave.d.ts.map +0 -1
  272. package/dist/hooks/useAutoSave.js +0 -83
  273. package/dist/hooks/useAutoSave.js.map +0 -1
  274. package/src/fonts/fonts.css +0 -362
  275. package/src/fonts/licenses/LICENSE-cormorant-garamond.txt +0 -93
  276. package/src/fonts/licenses/LICENSE-crimson-text.txt +0 -93
  277. package/src/fonts/licenses/LICENSE-dm-sans.txt +0 -93
  278. package/src/fonts/licenses/LICENSE-dm-serif-display.txt +0 -93
  279. package/src/fonts/licenses/LICENSE-hanken-grotesk.txt +0 -94
  280. package/src/fonts/licenses/LICENSE-ibm-plex-sans.txt +0 -93
  281. package/src/fonts/licenses/LICENSE-inter.txt +0 -93
  282. package/src/fonts/licenses/LICENSE-jetbrains-mono.txt +0 -93
  283. package/src/fonts/licenses/LICENSE-lora.txt +0 -93
  284. package/src/fonts/licenses/LICENSE-merriweather.txt +0 -93
  285. package/src/fonts/licenses/LICENSE-oswald.txt +0 -93
  286. package/src/fonts/licenses/LICENSE-playfair-display.txt +0 -93
  287. package/src/fonts/licenses/LICENSE-pt-serif.txt +0 -93
  288. package/src/fonts/licenses/LICENSE-roboto.txt +0 -93
  289. package/src/fonts/licenses/LICENSE-source-serif-4.txt +0 -93
  290. package/src/fonts/woff2/cormorant-garamond-400.woff2 +0 -0
  291. package/src/fonts/woff2/cormorant-garamond-700.woff2 +0 -0
  292. package/src/fonts/woff2/crimson-text-400.woff2 +0 -0
  293. package/src/fonts/woff2/crimson-text-400i.woff2 +0 -0
  294. package/src/fonts/woff2/crimson-text-700.woff2 +0 -0
  295. package/src/fonts/woff2/dm-sans-400.woff2 +0 -0
  296. package/src/fonts/woff2/dm-sans-400i.woff2 +0 -0
  297. package/src/fonts/woff2/dm-sans-500.woff2 +0 -0
  298. package/src/fonts/woff2/dm-sans-700.woff2 +0 -0
  299. package/src/fonts/woff2/dm-serif-display-400.woff2 +0 -0
  300. package/src/fonts/woff2/hanken-grotesk-400.woff2 +0 -0
  301. package/src/fonts/woff2/hanken-grotesk-400i.woff2 +0 -0
  302. package/src/fonts/woff2/hanken-grotesk-500.woff2 +0 -0
  303. package/src/fonts/woff2/hanken-grotesk-600.woff2 +0 -0
  304. package/src/fonts/woff2/hanken-grotesk-700.woff2 +0 -0
  305. package/src/fonts/woff2/ibm-plex-sans-400.woff2 +0 -0
  306. package/src/fonts/woff2/ibm-plex-sans-400i.woff2 +0 -0
  307. package/src/fonts/woff2/ibm-plex-sans-500.woff2 +0 -0
  308. package/src/fonts/woff2/ibm-plex-sans-600.woff2 +0 -0
  309. package/src/fonts/woff2/ibm-plex-sans-700.woff2 +0 -0
  310. package/src/fonts/woff2/inter-400.woff2 +0 -0
  311. package/src/fonts/woff2/inter-400i.woff2 +0 -0
  312. package/src/fonts/woff2/inter-500.woff2 +0 -0
  313. package/src/fonts/woff2/inter-600.woff2 +0 -0
  314. package/src/fonts/woff2/inter-700.woff2 +0 -0
  315. package/src/fonts/woff2/jetbrains-mono-400.woff2 +0 -0
  316. package/src/fonts/woff2/jetbrains-mono-400i.woff2 +0 -0
  317. package/src/fonts/woff2/jetbrains-mono-700.woff2 +0 -0
  318. package/src/fonts/woff2/lora-400.woff2 +0 -0
  319. package/src/fonts/woff2/lora-400i.woff2 +0 -0
  320. package/src/fonts/woff2/lora-700.woff2 +0 -0
  321. package/src/fonts/woff2/merriweather-400.woff2 +0 -0
  322. package/src/fonts/woff2/merriweather-700.woff2 +0 -0
  323. package/src/fonts/woff2/oswald-400.woff2 +0 -0
  324. package/src/fonts/woff2/oswald-700.woff2 +0 -0
  325. package/src/fonts/woff2/playfair-display-400.woff2 +0 -0
  326. package/src/fonts/woff2/playfair-display-700.woff2 +0 -0
  327. package/src/fonts/woff2/pt-serif-400.woff2 +0 -0
  328. package/src/fonts/woff2/pt-serif-700.woff2 +0 -0
  329. package/src/fonts/woff2/roboto-400.woff2 +0 -0
  330. package/src/fonts/woff2/roboto-400i.woff2 +0 -0
  331. package/src/fonts/woff2/roboto-700.woff2 +0 -0
  332. package/src/fonts/woff2/source-serif-4-400.woff2 +0 -0
  333. package/src/fonts/woff2/source-serif-4-400i.woff2 +0 -0
  334. package/src/fonts/woff2/source-serif-4-700.woff2 +0 -0
  335. package/src/hooks/useAutoSave.ts +0 -116
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @bendyline/docblocks-react
2
2
 
3
- React components for DocBlocks — file explorer, workspace picker, editor shell, and export controls.
3
+ React components for DocBlocks — the complete editor shell (file explorer, workspace picker, app menu, export pipeline) plus the individual components and hooks it's built from. This is the package the DocBlocks web app and desktop renderer both mount.
4
4
 
5
5
  ## Installation
6
6
 
@@ -8,7 +8,7 @@ React components for DocBlocks — file explorer, workspace picker, editor shell
8
8
  npm install @bendyline/docblocks-react
9
9
  ```
10
10
 
11
- **Peer dependencies:** React 18 or 19, plus `@bendyline/docblocks` (core) and `@bendyline/squisq-editor-react`.
11
+ **Peer dependencies:** React 18 or 19. The DocBlocks core (`@bendyline/docblocks`) and the Squisq editor packages are regular dependencies and install automatically.
12
12
 
13
13
  ## Usage
14
14
 
@@ -17,54 +17,89 @@ import { DocBlocksShell } from '@bendyline/docblocks-react';
17
17
  import '@bendyline/docblocks-react/styles';
18
18
 
19
19
  function App() {
20
- return <DocBlocksShell theme="light" />;
20
+ return <DocBlocksShell theme="auto" />;
21
21
  }
22
22
  ```
23
23
 
24
+ The video-export worker uses module chunks. Vite consumers must retain the
25
+ same worker setting used by the DocBlocks site and desktop renderer:
26
+
27
+ ```ts
28
+ // vite.config.ts
29
+ import { defineConfig } from 'vite';
30
+
31
+ export default defineConfig({ worker: { format: 'es' } });
32
+ ```
33
+
24
34
  ## Components
25
35
 
26
36
  ### DocBlocksShell
27
37
 
28
- The main application shell combines the file explorer, workspace picker, and squisq editor into a complete document editing experience.
38
+ The canonical DocBlocks experience in one component file explorer, workspace picker, app menu, the Squisq editor with its Editor / Markdown / Play views, and the export pipeline.
29
39
 
30
40
  ```tsx
31
- <DocBlocksShell theme="light" logoUrl="/logo.png" />
41
+ <DocBlocksShell theme="auto" logoUrl="/logo.png" />
32
42
  ```
33
43
 
34
- ### FileExplorer
44
+ - `theme` — `'light' | 'dark' | 'auto'` (auto follows `prefers-color-scheme`)
45
+ - `logoUrl` — brand mark for the app menu button
46
+
47
+ Storage is abstracted behind the byte-authoritative `FileSystemProviderV2` contract from `@bendyline/docblocks/filesystem`: browser-local (IndexedDB), native folders (File System Access API), transient memory workspaces, or the Electron host. Built-in compatibility facades expose it as `provider.v2`; first-party shell and file-tree operations are v2-first.
35
48
 
36
- File tree browser with create, rename, delete, and drag-and-drop support.
49
+ ### FileExplorer / FileTreeNode
50
+
51
+ File tree browser with inline create (file + folder), rename, and delete. It follows filesystem
52
+ watch events automatically and re-reads the visible tree when a browser surface resumes. Long
53
+ names truncate gracefully.
37
54
 
38
55
  ### WorkspacePicker
39
56
 
40
- Dropdown for switching between workspaces (IndexedDB or native filesystem handles).
57
+ Dropdown for switching between workspaces, creating new ones, and opening local folders, plus the per-workspace settings dialog (rename, download, remove, version-history overrides).
41
58
 
42
59
  ### AppMenu
43
60
 
44
- Top menu bar with branding and about dialog.
61
+ Top-left brand menu with the app-wide **Settings** dialog (theme preference, global version-history default), optional "Download all workspaces," and the **About** dialog.
45
62
 
46
63
  ### ExportToolbarControls / ExportDialog
47
64
 
48
- Export functionality supporting DOCX, PDF, PPTX, HTML, and Markdown output formats with theme and transform options.
65
+ Consumers that need the export pipeline without the complete shell can use the
66
+ public, independently built entry point:
67
+
68
+ ```ts
69
+ import {
70
+ DEFAULT_OPTIONS,
71
+ ExportDialog,
72
+ buildExportFilename,
73
+ runExport,
74
+ } from '@bendyline/docblocks-react/export';
75
+ ```
76
+
77
+ The export flow: quick re-export of the last configuration plus the full dialog — format (PDF, Word, PowerPoint, HTML, Markdown), visual theme, and page size.
49
78
 
50
79
  ## Hooks
51
80
 
52
- ### `useAutoSave(content, save, delay?)`
81
+ ### `useDocumentSession(delay?)`
53
82
 
54
- Debounced auto-save hook (default 500ms delay).
83
+ React binding for the revisioned `DocumentSession`. Active-document writes,
84
+ transitions, conflicts, and close preparation must flow through this session;
85
+ there is intentionally no independent autosave hook.
55
86
 
56
87
  ### `useFileTree(provider)`
57
88
 
58
- File tree state management — returns the tree structure, selected file, and mutation functions.
89
+ File tree state management over any v2-capable provider — returns the tree, selection, and explicit create/move/remove functions, with a temporary v1 fallback for external providers.
59
90
 
60
91
  ## Styles
61
92
 
62
- Import the stylesheet to get the default DocBlocks styling:
63
-
64
93
  ```ts
65
94
  import '@bendyline/docblocks-react/styles';
66
95
  ```
67
96
 
97
+ One stylesheet (`docblocks.css`) covers all components in both themes. The package also bundles the self-hosted woff2 fonts used by document themes (see `NOTICE.md` at the repo root for licenses).
98
+
99
+ ## Where new UI belongs
100
+
101
+ Cross-surface UI that lives inside the shell chrome (file tree, workspace picker, app menu, export dialog) belongs here. The VS Code extension is the deliberate exception — its webview mounts Squisq's `EditorShell` directly because VS Code provides the file explorer, workspace, and theme itself.
102
+
68
103
  ## License
69
104
 
70
105
  MIT
@@ -2,7 +2,8 @@
2
2
  * AppMenu — top-left dropdown with workspace actions and app links.
3
3
  */
4
4
  import type { VersioningPreference } from '../preferences/versioning.js';
5
- export type ThemePreference = 'auto' | 'light' | 'dark';
5
+ import type { AccentColor, ThemePreference } from '../preferences/theme.js';
6
+ export type { AccentColor, ThemePreference } from '../preferences/theme.js';
6
7
  export interface AppMenuProps {
7
8
  /** URL for the about page. */
8
9
  aboutUrl?: string;
@@ -12,6 +13,10 @@ export interface AppMenuProps {
12
13
  themePreference?: ThemePreference;
13
14
  /** Called when the user changes the theme preference. */
14
15
  onThemeChange?: (theme: ThemePreference) => void;
16
+ /** Current accent color. */
17
+ accentColor?: AccentColor;
18
+ /** Called when the user changes the accent color. */
19
+ onAccentColorChange?: (color: AccentColor) => void;
15
20
  /** Current global versioning preference. */
16
21
  versioningPreference?: VersioningPreference;
17
22
  /** Called when the user changes the global versioning preference. */
@@ -21,6 +26,28 @@ export interface AppMenuProps {
21
26
  * the menu item is hidden.
22
27
  */
23
28
  onDownloadAllWorkspaces?: () => void | Promise<void>;
29
+ /**
30
+ * Called when the user asks the browser to keep origin storage persistent.
31
+ * When omitted, the menu item is hidden.
32
+ */
33
+ onKeepBrowserData?: () => void | Promise<void>;
34
+ /**
35
+ * Called when the user clicks "Install DocBlocks…" (browser PWA install).
36
+ * When omitted — Electron, unsupported browsers, or already installed —
37
+ * the menu item is hidden.
38
+ */
39
+ onInstallApp?: () => void | Promise<void>;
40
+ /**
41
+ * Async origin storage usage/quota for the Settings "Storage" section
42
+ * (fetched when the dialog opens). When omitted — Electron, or browsers
43
+ * without `navigator.storage.estimate` — the section is hidden.
44
+ */
45
+ getStorageEstimate?: () => Promise<{
46
+ usage: number;
47
+ quota: number;
48
+ } | null>;
49
+ /** Whether the browser has marked origin storage persistent (Settings display). */
50
+ storagePersistent?: boolean;
24
51
  }
25
- export declare function AppMenu({ aboutUrl: _aboutUrl, logoUrl, themePreference, onThemeChange, versioningPreference, onVersioningPreferenceChange, onDownloadAllWorkspaces, }: AppMenuProps): import("react/jsx-runtime").JSX.Element;
52
+ export declare function AppMenu({ aboutUrl: _aboutUrl, logoUrl, themePreference, onThemeChange, accentColor, onAccentColorChange, versioningPreference, onVersioningPreferenceChange, onDownloadAllWorkspaces, onKeepBrowserData, onInstallApp, getStorageEstimate, storagePersistent, }: AppMenuProps): import("react/jsx-runtime").JSX.Element;
26
53
  //# sourceMappingURL=AppMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppMenu.d.ts","sourceRoot":"","sources":["../../src/AppMenu/AppMenu.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qEAAqE;IACrE,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACpE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EAAE,SAAoB,EAC9B,OAAO,EACP,eAAwB,EACxB,aAAa,EACb,oBAAqC,EACrC,4BAA4B,EAC5B,uBAAuB,GACxB,EAAE,YAAY,2CAkOd"}
1
+ {"version":3,"file":"AppMenu.d.ts","sourceRoot":"","sources":["../../src/AppMenu/AppMenu.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG5E,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,4BAA4B;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACnD,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qEAAqE;IACrE,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACpE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC5E,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EAAE,SAAoB,EAC9B,OAAO,EACP,eAAwB,EACxB,aAAa,EACb,WAAqB,EACrB,mBAAmB,EACnB,oBAAqC,EACrC,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,EAAE,YAAY,2CA6Pd"}
@@ -3,11 +3,44 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  * AppMenu — top-left dropdown with workspace actions and app links.
4
4
  */
5
5
  import { useState, useCallback, useRef, useEffect } from 'react';
6
- export function AppMenu({ aboutUrl: _aboutUrl = '#about', logoUrl, themePreference = 'auto', onThemeChange, versioningPreference = 'browser-only', onVersioningPreferenceChange, onDownloadAllWorkspaces, }) {
6
+ import { AccentColorSettings, SettingsDialog, ThemeSettings } from '../Settings/Settings.js';
7
+ function formatBytes(bytes) {
8
+ if (!Number.isFinite(bytes) || bytes < 0)
9
+ return '—';
10
+ let value = bytes;
11
+ let unit = 'B';
12
+ for (const next of ['KB', 'MB', 'GB', 'TB']) {
13
+ if (value < 1024)
14
+ break;
15
+ value /= 1024;
16
+ unit = next;
17
+ }
18
+ return `${value >= 100 || unit === 'B' ? Math.round(value) : value.toFixed(1)} ${unit}`;
19
+ }
20
+ export function AppMenu({ aboutUrl: _aboutUrl = '#about', logoUrl, themePreference = 'auto', onThemeChange, accentColor = 'brown', onAccentColorChange, versioningPreference = 'browser-only', onVersioningPreferenceChange, onDownloadAllWorkspaces, onKeepBrowserData, onInstallApp, getStorageEstimate, storagePersistent, }) {
7
21
  const [isOpen, setIsOpen] = useState(false);
8
22
  const [showAbout, setShowAbout] = useState(false);
9
23
  const [showSettings, setShowSettings] = useState(false);
10
24
  const menuRef = useRef(null);
25
+ const [storageEstimate, setStorageEstimate] = useState(null);
26
+ // Refresh the Settings "Storage" figures each time the dialog opens.
27
+ useEffect(() => {
28
+ if (!showSettings || !getStorageEstimate)
29
+ return;
30
+ let cancelled = false;
31
+ getStorageEstimate()
32
+ .then((estimate) => {
33
+ if (!cancelled)
34
+ setStorageEstimate(estimate);
35
+ })
36
+ .catch(() => {
37
+ if (!cancelled)
38
+ setStorageEstimate(null);
39
+ });
40
+ return () => {
41
+ cancelled = true;
42
+ };
43
+ }, [showSettings, getStorageEstimate]);
11
44
  useEffect(() => {
12
45
  if (!isOpen)
13
46
  return;
@@ -23,6 +56,12 @@ export function AppMenu({ aboutUrl: _aboutUrl = '#about', logoUrl, themePreferen
23
56
  setIsOpen(false);
24
57
  action();
25
58
  }, []);
26
- return (_jsxs(_Fragment, { children: [_jsxs("div", { ref: menuRef, className: "db-app-menu", children: [_jsxs("button", { className: "db-app-menu-btn", onClick: () => setIsOpen(!isOpen), "aria-expanded": isOpen, "aria-haspopup": "true", children: [logoUrl ? (_jsx("img", { src: logoUrl, alt: "docblocks", className: "db-app-menu-logo" })) : (_jsx("span", { className: "db-app-menu-label", children: "docblocks" })), _jsx("span", { className: `db-app-menu-caret${isOpen ? ' db-app-menu-caret--open' : ''}`, children: '\u25BE' })] }), isOpen && (_jsxs("div", { className: "db-app-menu-dropdown", role: "menu", children: [_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => setShowSettings(true)), children: "Settings" }), onDownloadAllWorkspaces && (_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => void onDownloadAllWorkspaces()), children: "Download all workspaces" })), _jsx("div", { className: "db-app-menu-divider" }), _jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => setShowAbout(true)), children: "About" })] }))] }), showSettings && (_jsx("div", { className: "db-dialog-overlay", onClick: () => setShowSettings(false), children: _jsxs("div", { className: "db-dialog", role: "dialog", "aria-label": "Settings", onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "db-dialog-header", children: [_jsx("h2", { className: "db-dialog-title", children: "Settings" }), _jsx("button", { className: "db-dialog-close", onClick: () => setShowSettings(false), "aria-label": "Close", children: "\u00D7" })] }), _jsxs("div", { className: "db-dialog-body", children: [_jsxs("fieldset", { className: "db-settings-fieldset", children: [_jsx("legend", { className: "db-settings-legend", children: "Theme" }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "theme", value: "auto", checked: themePreference === 'auto', onChange: () => onThemeChange?.('auto') }), "System default"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "theme", value: "light", checked: themePreference === 'light', onChange: () => onThemeChange?.('light') }), "Light"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "theme", value: "dark", checked: themePreference === 'dark', onChange: () => onThemeChange?.('dark') }), "Dark"] })] }), onVersioningPreferenceChange && (_jsxs("fieldset", { className: "db-settings-fieldset", children: [_jsx("legend", { className: "db-settings-legend", children: "Version history" }), _jsxs("p", { className: "db-settings-hint", children: ["When on, DocBlocks keeps prior revisions of each document inside a sibling", ' ', _jsx("code", { children: "<name>_files/.versions/" }), " folder. Individual workspaces can override this default in their own settings."] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "on", checked: versioningPreference === 'on', onChange: () => onVersioningPreferenceChange('on') }), "On for all workspaces"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "browser-only", checked: versioningPreference === 'browser-only', onChange: () => onVersioningPreferenceChange('browser-only') }), "On in browser workspaces, off for local folders"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "off", checked: versioningPreference === 'off', onChange: () => onVersioningPreferenceChange('off') }), "Off for all workspaces"] })] }))] })] }) })), showAbout && (_jsx("div", { className: "db-dialog-overlay", onClick: () => setShowAbout(false), children: _jsxs("div", { className: "db-dialog", role: "dialog", "aria-label": "About DocBlocks", onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "db-dialog-header", children: [_jsx("h2", { className: "db-dialog-title", children: "About DocBlocks" }), _jsx("button", { className: "db-dialog-close", onClick: () => setShowAbout(false), "aria-label": "Close", children: "\u00D7" })] }), _jsxs("div", { className: "db-dialog-body", children: [_jsxs("p", { children: [_jsx("strong", { children: "DocBlocks" }), " is a markdown document editor that runs entirely in your browser. Your files stay on your device."] }), _jsxs("p", { children: ["Built on", ' ', _jsx("a", { href: "https://github.com/bendyline/squisq", target: "_blank", rel: "noopener noreferrer", children: "squisq" }), ' ', "by Bendyline."] }), _jsxs("p", { className: "db-dialog-links", children: [_jsx("a", { href: "https://github.com/bendyline/docblocks", target: "_blank", rel: "noopener noreferrer", children: "GitHub" }), _jsx("span", { className: "db-dialog-sep", children: "\u00B7" }), _jsx("a", { href: "https://github.com/bendyline/docblocks/blob/main/LICENSE", target: "_blank", rel: "noopener noreferrer", children: "License (MIT)" })] })] })] }) }))] }));
59
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { ref: menuRef, className: "db-app-menu", children: [_jsxs("button", { className: "db-app-menu-btn", onClick: () => setIsOpen(!isOpen), "aria-expanded": isOpen, "aria-haspopup": "true", children: [logoUrl ? (_jsx("img", { src: logoUrl, alt: "docblocks", className: "db-app-menu-logo" })) : (_jsx("span", { className: "db-app-menu-label", children: "docblocks" })), _jsx("span", { className: `db-app-menu-caret${isOpen ? ' db-app-menu-caret--open' : ''}`, "aria-hidden": "true" })] }), isOpen && (_jsxs("div", { className: "db-app-menu-dropdown", role: "menu", children: [_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => setShowSettings(true)), children: "Settings" }), onInstallApp && (_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => void onInstallApp()), children: "Install DocBlocks\u2026" })), onKeepBrowserData && (_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => void onKeepBrowserData()), children: "Keep data in browser for longer" })), onDownloadAllWorkspaces && (_jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => void onDownloadAllWorkspaces()), children: "Download all workspaces" })), _jsx("div", { className: "db-app-menu-divider" }), _jsx("button", { className: "db-app-menu-item", role: "menuitem", onClick: () => handleAction(() => setShowAbout(true)), children: "About" })] }))] }), showSettings && (_jsxs(SettingsDialog, { onClose: () => setShowSettings(false), children: [_jsx(ThemeSettings, { value: themePreference, onChange: (preference) => onThemeChange?.(preference) }), _jsx(AccentColorSettings, { value: accentColor, onChange: (color) => onAccentColorChange?.(color) }), getStorageEstimate && (_jsxs("fieldset", { className: "db-settings-fieldset", children: [_jsx("legend", { className: "db-settings-legend", children: "Storage" }), _jsxs("p", { className: "db-settings-hint", children: [storageEstimate
60
+ ? `DocBlocks documents and app data are using ${formatBytes(storageEstimate.usage)} of the ${formatBytes(storageEstimate.quota)} this browser allows for the site.`
61
+ : 'Storage usage is not available in this browser.', ' ', storagePersistent === undefined
62
+ ? ''
63
+ : storagePersistent
64
+ ? 'Data is marked persistent, so the browser will avoid evicting it.'
65
+ : 'Data is not yet marked persistent — use “Keep data in browser for longer” in the app menu.'] })] })), onVersioningPreferenceChange && (_jsxs("fieldset", { className: "db-settings-fieldset", children: [_jsx("legend", { className: "db-settings-legend", children: "Version history" }), _jsxs("p", { className: "db-settings-hint", children: ["When on, DocBlocks keeps prior revisions of each document inside a sibling", ' ', _jsx("code", { children: "<name>_files/.versions/" }), " folder. Individual workspaces can override this default in their own settings."] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "on", checked: versioningPreference === 'on', onChange: () => onVersioningPreferenceChange('on') }), "On for all workspaces"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "browser-only", checked: versioningPreference === 'browser-only', onChange: () => onVersioningPreferenceChange('browser-only') }), "On in browser workspaces, off for local folders"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "versioning", value: "off", checked: versioningPreference === 'off', onChange: () => onVersioningPreferenceChange('off') }), "Off for all workspaces"] })] }))] })), showAbout && (_jsx("div", { className: "db-dialog-overlay", onClick: () => setShowAbout(false), children: _jsxs("div", { className: "db-dialog", role: "dialog", "aria-label": "About DocBlocks", onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "db-dialog-header", children: [_jsx("h2", { className: "db-dialog-title", children: "About DocBlocks" }), _jsx("button", { className: "db-dialog-close", onClick: () => setShowAbout(false), "aria-label": "Close", children: "\u00D7" })] }), _jsxs("div", { className: "db-dialog-body", children: [_jsxs("p", { children: [_jsx("strong", { children: "DocBlocks" }), " is a markdown document editor that runs entirely in your browser. Your files stay on your device."] }), _jsxs("p", { children: ["Built on", ' ', _jsx("a", { href: "https://github.com/bendyline/squisq", target: "_blank", rel: "noopener noreferrer", children: "squisq" }), ' ', "by", ' ', _jsx("a", { href: "https://bendyline.com", target: "_blank", rel: "noopener noreferrer", children: "Bendyline" }), "."] }), _jsxs("p", { className: "db-dialog-links", children: [_jsx("a", { href: "https://github.com/bendyline/docblocks", target: "_blank", rel: "noopener noreferrer", children: "GitHub" }), _jsx("span", { className: "db-dialog-sep", children: "\u00B7" }), _jsx("a", { href: "https://github.com/bendyline/docblocks/blob/main/LICENSE", target: "_blank", rel: "noopener noreferrer", children: "License (MIT)" }), _jsx("span", { className: "db-dialog-sep", children: "\u00B7" }), _jsx("a", { href: "https://github.com/bendyline/docblocks/blob/main/NOTICE.md", target: "_blank", rel: "noopener noreferrer", children: "\u2665 built on open source" })] })] })] }) }))] }));
27
66
  }
28
67
  //# sourceMappingURL=AppMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppMenu.js","sourceRoot":"","sources":["../../src/AppMenu/AppMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppMenu.js","sourceRoot":"","sources":["../../src/AppMenu/AppMenu.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { AppMenu } from './AppMenu.js';
2
- export type { AppMenuProps, ThemePreference } from './AppMenu.js';
2
+ export type { AccentColor, AppMenuProps, ThemePreference } from './AppMenu.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AppMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AppMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -1,15 +1,15 @@
1
1
  /**
2
- * DocBlocksShell top-level layout component.
2
+ * DocBlocksShell -- top-level layout component.
3
3
  *
4
4
  * Composes the left sidebar (WorkspacePicker + FileExplorer) with
5
5
  * the center editor area (squisq EditorShell).
6
6
  */
7
- import type { EditorTheme } from '@bendyline/squisq-editor-react';
7
+ import type { EditorColorScheme } from '@bendyline/squisq-editor-react';
8
8
  import '@bendyline/squisq-editor-react/styles';
9
9
  import { DocumentVersionManager, type PrunePolicy, type SaveVersionResult } from '@bendyline/squisq/versions';
10
10
  export interface DocBlocksShellProps {
11
11
  /** Optional theme override. Omit or pass 'auto' to follow OS preference. */
12
- theme?: EditorTheme | 'auto';
12
+ theme?: EditorColorScheme | 'auto';
13
13
  /** Optional logo image URL for the app menu. */
14
14
  logoUrl?: string;
15
15
  /**
@@ -31,6 +31,19 @@ export interface DocBlocksShellProps {
31
31
  onSaveVersion?: (result: SaveVersionResult) => void;
32
32
  /** Optional escape hatch for hosts that want imperative access to the version manager. */
33
33
  versioningRef?: React.Ref<DocumentVersionManager | null>;
34
+ /**
35
+ * True when a new deploy is waiting (browser PWA hosts: a fresh service
36
+ * worker finished installing). The shell shows an "Update available"
37
+ * status-bar notice that opens a Reload/Later prompt.
38
+ */
39
+ updateAvailable?: boolean;
40
+ /** Activates the waiting update and reloads onto the new version. */
41
+ onApplyUpdate?: () => void;
42
+ /**
43
+ * True once the app has been fully cached for offline use (browser PWA
44
+ * hosts). Shown to the user once as a passive notice.
45
+ */
46
+ offlineReady?: boolean;
34
47
  }
35
- export declare function DocBlocksShell({ theme: _themeProp, logoUrl, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, versioningRef, }: DocBlocksShellProps): import("react/jsx-runtime").JSX.Element;
48
+ export declare function DocBlocksShell({ theme: _themeProp, logoUrl, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, versioningRef, updateAvailable, onApplyUpdate, offlineReady, }: DocBlocksShellProps): import("react/jsx-runtime").JSX.Element;
36
49
  //# sourceMappingURL=DocBlocksShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocBlocksShell.d.ts","sourceRoot":"","sources":["../../src/DocBlocksShell/DocBlocksShell.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,uCAAuC,CAAC;AAG/C,OAAO,EACL,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAuCpC,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,WAAW,CAAC;IACpC,0FAA0F;IAC1F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,0FAA0F;IAC1F,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;CAC1D;AAuSD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EAAE,UAAmB,EAC1B,OAAO,EACP,eAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,aAAa,GACd,EAAE,mBAAmB,2CA4zCrB"}
1
+ {"version":3,"file":"DocBlocksShell.d.ts","sourceRoot":"","sources":["../../src/DocBlocksShell/DocBlocksShell.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,gCAAgC,CAAC;AACxC,OAAO,uCAAuC,CAAC;AAG/C,OAAO,EACL,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAyLpC,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACnC,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,WAAW,CAAC;IACpC,0FAA0F;IAC1F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,0FAA0F;IAC1F,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACzD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAkdD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EAAE,UAAmB,EAC1B,OAAO,EACP,eAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,eAAuB,EACvB,aAAa,EACb,YAAoB,GACrB,EAAE,mBAAmB,2CAmnFrB"}