@book.dev/ui 1.60.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 (305) hide show
  1. package/LICENSE +21 -0
  2. package/dist/EmojiGrid-xK5mPJPo.js +205 -0
  3. package/dist/blockeditor/BlockEditor.d.ts +68 -0
  4. package/dist/blockeditor/CodeBlockView.d.ts +19 -0
  5. package/dist/blockeditor/InlineToolbar.d.ts +18 -0
  6. package/dist/blockeditor/LinkPicker.d.ts +16 -0
  7. package/dist/blockeditor/MentionMenu.d.ts +14 -0
  8. package/dist/blockeditor/PresentBlocks.d.ts +21 -0
  9. package/dist/blockeditor/RichTextEditor.d.ts +29 -0
  10. package/dist/blockeditor/SlashMenu.d.ts +49 -0
  11. package/dist/blockeditor/TextBlockView.d.ts +9 -0
  12. package/dist/blockeditor/__tests__/LinkPicker.test.d.ts +1 -0
  13. package/dist/blockeditor/__tests__/SlashMenu.test.d.ts +1 -0
  14. package/dist/blockeditor/__tests__/aiApply.test.d.ts +1 -0
  15. package/dist/blockeditor/__tests__/groupLock.test.d.ts +1 -0
  16. package/dist/blockeditor/__tests__/highlight.test.d.ts +1 -0
  17. package/dist/blockeditor/__tests__/mergeUp.test.d.ts +1 -0
  18. package/dist/blockeditor/__tests__/present.test.d.ts +1 -0
  19. package/dist/blockeditor/aiBlocks.d.ts +9 -0
  20. package/dist/blockeditor/colors.d.ts +23 -0
  21. package/dist/blockeditor/exportBlocks.d.ts +25 -0
  22. package/dist/blockeditor/highlight.d.ts +25 -0
  23. package/dist/blockeditor/index.d.ts +8 -0
  24. package/dist/blockeditor/kit/KitFrame.d.ts +95 -0
  25. package/dist/blockeditor/kit/KitSettings.d.ts +18 -0
  26. package/dist/blockeditor/kit/OptionsEditor.d.ts +8 -0
  27. package/dist/blockeditor/kit/__tests__/chartMath.test.d.ts +1 -0
  28. package/dist/blockeditor/kit/__tests__/dataflow.test.d.ts +1 -0
  29. package/dist/blockeditor/kit/__tests__/exportKit.test.d.ts +1 -0
  30. package/dist/blockeditor/kit/__tests__/exportKit2.test.d.ts +1 -0
  31. package/dist/blockeditor/kit/__tests__/groupSync.test.d.ts +1 -0
  32. package/dist/blockeditor/kit/__tests__/inputs2Render.test.d.ts +1 -0
  33. package/dist/blockeditor/kit/__tests__/inputs2Scope.test.d.ts +1 -0
  34. package/dist/blockeditor/kit/__tests__/inputsRender.test.d.ts +1 -0
  35. package/dist/blockeditor/kit/__tests__/kitConfig.test.d.ts +1 -0
  36. package/dist/blockeditor/kit/__tests__/kitPanel.test.d.ts +1 -0
  37. package/dist/blockeditor/kit/__tests__/options.test.d.ts +1 -0
  38. package/dist/blockeditor/kit/__tests__/scope.test.d.ts +1 -0
  39. package/dist/blockeditor/kit/cards.d.ts +51 -0
  40. package/dist/blockeditor/kit/chartMath.d.ts +62 -0
  41. package/dist/blockeditor/kit/charts.d.ts +27 -0
  42. package/dist/blockeditor/kit/completion.d.ts +45 -0
  43. package/dist/blockeditor/kit/dataflow.d.ts +68 -0
  44. package/dist/blockeditor/kit/groupSync.d.ts +23 -0
  45. package/dist/blockeditor/kit/index.d.ts +11 -0
  46. package/dist/blockeditor/kit/inputs.d.ts +135 -0
  47. package/dist/blockeditor/kit/inputs2.d.ts +86 -0
  48. package/dist/blockeditor/kit/kitConfig.d.ts +5 -0
  49. package/dist/blockeditor/kit/kitPanel.d.ts +31 -0
  50. package/dist/blockeditor/kit/lock.d.ts +12 -0
  51. package/dist/blockeditor/kit/options.d.ts +60 -0
  52. package/dist/blockeditor/kit/progress.d.ts +20 -0
  53. package/dist/blockeditor/kit/scope.d.ts +100 -0
  54. package/dist/blockeditor/model.d.ts +236 -0
  55. package/dist/blockeditor/present.d.ts +18 -0
  56. package/dist/blockeditor/provider.d.ts +16 -0
  57. package/dist/blockeditor/reactiveBlocks.d.ts +2 -0
  58. package/dist/blockeditor/registry.d.ts +38 -0
  59. package/dist/blockeditor/richtext.d.ts +48 -0
  60. package/dist/blockeditor/useBlockEditor.d.ts +45 -0
  61. package/dist/components/AboutDialog.d.ts +9 -0
  62. package/dist/components/AgentPanel.d.ts +2 -0
  63. package/dist/components/AiBridgeHost.d.ts +14 -0
  64. package/dist/components/AiSearchDialog.d.ts +8 -0
  65. package/dist/components/AiSettings.d.ts +7 -0
  66. package/dist/components/AppearanceSettings.d.ts +3 -0
  67. package/dist/components/BackForwardCluster.d.ts +1 -0
  68. package/dist/components/BackupSettings.d.ts +2 -0
  69. package/dist/components/BreadcrumbCluster.d.ts +1 -0
  70. package/dist/components/ColorSchemeMenu.d.ts +1 -0
  71. package/dist/components/CommandMenu.d.ts +1 -0
  72. package/dist/components/CommandToggle.d.ts +3 -0
  73. package/dist/components/DocumentArea.d.ts +8 -0
  74. package/dist/components/Drawer.d.ts +7 -0
  75. package/dist/components/EmojiGrid.d.ts +16 -0
  76. package/dist/components/EmojiPickerHost.d.ts +8 -0
  77. package/dist/components/ExtensionsSettings.d.ts +7 -0
  78. package/dist/components/FavoritesNav.d.ts +8 -0
  79. package/dist/components/GeneralSettings.d.ts +2 -0
  80. package/dist/components/GlobalShortcuts.d.ts +9 -0
  81. package/dist/components/HomeButton.d.ts +2 -0
  82. package/dist/components/IconPicker.d.ts +17 -0
  83. package/dist/components/NavBar.d.ts +1 -0
  84. package/dist/components/NavContextMenu.d.ts +7 -0
  85. package/dist/components/PageActionsCluster.d.ts +9 -0
  86. package/dist/components/PageAppearanceHost.d.ts +9 -0
  87. package/dist/components/PageContextMenu.d.ts +17 -0
  88. package/dist/components/PageCover.d.ts +18 -0
  89. package/dist/components/PageHeaderControls.d.ts +13 -0
  90. package/dist/components/PageIcon.d.ts +16 -0
  91. package/dist/components/PageProperties.d.ts +53 -0
  92. package/dist/components/PluginBoot.d.ts +2 -0
  93. package/dist/components/PresentMode.d.ts +7 -0
  94. package/dist/components/ProfileAvatar.d.ts +17 -0
  95. package/dist/components/ProfileMenu.d.ts +6 -0
  96. package/dist/components/Settings.d.ts +7 -0
  97. package/dist/components/SettingsButton.d.ts +2 -0
  98. package/dist/components/SettingsPanel.d.ts +14 -0
  99. package/dist/components/SideNav.d.ts +1 -0
  100. package/dist/components/SideNavToggle.d.ts +3 -0
  101. package/dist/components/SidebarSections.d.ts +17 -0
  102. package/dist/components/SplitPane.d.ts +9 -0
  103. package/dist/components/TemplateGallery.d.ts +8 -0
  104. package/dist/components/TitlebarTabs.d.ts +10 -0
  105. package/dist/components/TrashDialog.d.ts +7 -0
  106. package/dist/components/WindowActionsCluster.d.ts +6 -0
  107. package/dist/components/WindowControls.d.ts +6 -0
  108. package/dist/components/WindowTitle.d.ts +7 -0
  109. package/dist/components/WorkspaceInfo.d.ts +6 -0
  110. package/dist/components/WorkspaceNavigationTree.d.ts +14 -0
  111. package/dist/components/WorkspaceSelectMenu.d.ts +10 -0
  112. package/dist/components/__tests__/AppearanceSettings.test.d.ts +1 -0
  113. package/dist/components/__tests__/PageIcon.test.d.ts +1 -0
  114. package/dist/components/__tests__/SettingsPanel.test.d.ts +1 -0
  115. package/dist/components/__tests__/buildTree.test.d.ts +1 -0
  116. package/dist/components/__tests__/profileAvatar.test.d.ts +1 -0
  117. package/dist/components/appearance/AppearanceControls.d.ts +33 -0
  118. package/dist/components/appearance/PageCustomiseBody.d.ts +29 -0
  119. package/dist/components/brand/OpenBookLogo.d.ts +11 -0
  120. package/dist/components/brand/index.d.ts +1 -0
  121. package/dist/components/database/DatabaseCard.d.ts +36 -0
  122. package/dist/components/database/DatabasePicker.d.ts +12 -0
  123. package/dist/components/database/DatabaseRowProperties.d.ts +13 -0
  124. package/dist/components/database/DatabaseView.d.ts +9 -0
  125. package/dist/components/database/InlineDatabaseBlock.d.ts +3 -0
  126. package/dist/components/database/__tests__/InlineDatabaseBlock.test.d.ts +1 -0
  127. package/dist/components/database/databaseCells.d.ts +57 -0
  128. package/dist/components/database/databaseCharts.d.ts +28 -0
  129. package/dist/components/database/databaseColors.d.ts +12 -0
  130. package/dist/components/database/databaseGraph.d.ts +16 -0
  131. package/dist/components/database/databaseLayouts.d.ts +84 -0
  132. package/dist/components/database/databaseMap.d.ts +21 -0
  133. package/dist/components/database/databaseMapLeaflet.d.ts +26 -0
  134. package/dist/components/database/databaseMenus.d.ts +97 -0
  135. package/dist/components/database/databaseTimeline.d.ts +27 -0
  136. package/dist/components/database/geocode.d.ts +24 -0
  137. package/dist/components/database/useDatabase.d.ts +129 -0
  138. package/dist/components/index.d.ts +12 -0
  139. package/dist/components/review/BlockReviewMarkers.d.ts +19 -0
  140. package/dist/components/review/CommentThread.d.ts +20 -0
  141. package/dist/components/review/ReviewPaneBody.d.ts +12 -0
  142. package/dist/components/review/SuggestHost.d.ts +13 -0
  143. package/dist/components/review/SuggestionCard.d.ts +21 -0
  144. package/dist/components/review/__tests__/review.test.d.ts +1 -0
  145. package/dist/components/review/useReview.d.ts +27 -0
  146. package/dist/components/settings/AccountSettings.d.ts +6 -0
  147. package/dist/components/settings/AdminSettings.d.ts +2 -0
  148. package/dist/components/settings/ConnectionSettings.d.ts +7 -0
  149. package/dist/components/settings/CustomisationSettings.d.ts +2 -0
  150. package/dist/components/settings/ProfileSettings.d.ts +2 -0
  151. package/dist/components/settings/primitives.d.ts +47 -0
  152. package/dist/components/settings/stubs.d.ts +8 -0
  153. package/dist/components/ui/__tests__/kbd.test.d.ts +1 -0
  154. package/dist/components/ui/__tests__/markdown.test.d.ts +1 -0
  155. package/dist/components/ui/__tests__/select.test.d.ts +1 -0
  156. package/dist/components/ui/badge.d.ts +9 -0
  157. package/dist/components/ui/button.d.ts +11 -0
  158. package/dist/components/ui/command.d.ts +86 -0
  159. package/dist/components/ui/context-menu.d.ts +24 -0
  160. package/dist/components/ui/dialog.d.ts +18 -0
  161. package/dist/components/ui/dropdown-menu.d.ts +27 -0
  162. package/dist/components/ui/icon-button.d.ts +16 -0
  163. package/dist/components/ui/input.d.ts +9 -0
  164. package/dist/components/ui/kbd.d.ts +31 -0
  165. package/dist/components/ui/label.d.ts +5 -0
  166. package/dist/components/ui/markdown.d.ts +19 -0
  167. package/dist/components/ui/navigation-menu.d.ts +12 -0
  168. package/dist/components/ui/popover.d.ts +6 -0
  169. package/dist/components/ui/scroll-area.d.ts +5 -0
  170. package/dist/components/ui/select.d.ts +42 -0
  171. package/dist/components/ui/skeleton.d.ts +6 -0
  172. package/dist/components/ui/switch.d.ts +4 -0
  173. package/dist/components/ui/tooltip.d.ts +7 -0
  174. package/dist/components/ui/tree.d.ts +37 -0
  175. package/dist/components/useAppCommands.d.ts +25 -0
  176. package/dist/data/DataProvider.d.ts +30 -0
  177. package/dist/data/index.d.ts +1 -0
  178. package/dist/databaseMapLeaflet-8LYcHcR6.js +87 -0
  179. package/dist/export/__tests__/chartNormalize.test.d.ts +1 -0
  180. package/dist/export/__tests__/export.test.d.ts +1 -0
  181. package/dist/export/__tests__/exportReactive.test.d.ts +1 -0
  182. package/dist/export/chartNormalize.d.ts +22 -0
  183. package/dist/export/chartSvg.d.ts +2 -0
  184. package/dist/export/documentModel.d.ts +136 -0
  185. package/dist/export/exportSite.d.ts +40 -0
  186. package/dist/export/format.d.ts +2 -0
  187. package/dist/export/kitChart.d.ts +21 -0
  188. package/dist/export/toHtml.d.ts +25 -0
  189. package/dist/export/toMarkdown.d.ts +7 -0
  190. package/dist/export/toPdf.d.ts +14 -0
  191. package/dist/exportBlocks-33D7P_8Q.js +987 -0
  192. package/dist/exportSite-DlRm4u7W.js +50 -0
  193. package/dist/format-CLQoRoYP.js +1646 -0
  194. package/dist/i18n/__tests__/i18n.test.d.ts +1 -0
  195. package/dist/i18n/index.d.ts +24 -0
  196. package/dist/i18n/messages/de.d.ts +2 -0
  197. package/dist/i18n/messages/en.d.ts +977 -0
  198. package/dist/i18n/messages/ja.d.ts +2 -0
  199. package/dist/i18n/messages/zh.d.ts +2 -0
  200. package/dist/index.d.ts +11 -0
  201. package/dist/index.js +20915 -0
  202. package/dist/layouts/DefaultLayout.d.ts +4 -0
  203. package/dist/layouts/index.d.ts +1 -0
  204. package/dist/lib/__tests__/accountClient.test.d.ts +1 -0
  205. package/dist/lib/__tests__/backlinks.test.d.ts +1 -0
  206. package/dist/lib/__tests__/backupBundle.test.d.ts +1 -0
  207. package/dist/lib/__tests__/blockExport.test.d.ts +1 -0
  208. package/dist/lib/__tests__/blockModel.test.d.ts +1 -0
  209. package/dist/lib/__tests__/databaseFormula.test.d.ts +1 -0
  210. package/dist/lib/__tests__/databaseTypes.test.d.ts +1 -0
  211. package/dist/lib/__tests__/favorites.test.d.ts +1 -0
  212. package/dist/lib/__tests__/homePage.test.d.ts +1 -0
  213. package/dist/lib/__tests__/hud.test.d.ts +1 -0
  214. package/dist/lib/__tests__/icons.test.d.ts +1 -0
  215. package/dist/lib/__tests__/mixedContent.test.d.ts +1 -0
  216. package/dist/lib/__tests__/pageAppearance.test.d.ts +1 -0
  217. package/dist/lib/__tests__/pageIcon.test.d.ts +1 -0
  218. package/dist/lib/__tests__/pageLayout.test.d.ts +1 -0
  219. package/dist/lib/__tests__/pageSaveStatus.test.d.ts +1 -0
  220. package/dist/lib/__tests__/pageTheme.test.d.ts +1 -0
  221. package/dist/lib/__tests__/parentGrouping.test.d.ts +1 -0
  222. package/dist/lib/__tests__/pluginSdk.test.d.ts +1 -0
  223. package/dist/lib/__tests__/recents.test.d.ts +1 -0
  224. package/dist/lib/__tests__/relations.test.d.ts +1 -0
  225. package/dist/lib/__tests__/templates.test.d.ts +1 -0
  226. package/dist/lib/__tests__/textMerge.test.d.ts +1 -0
  227. package/dist/lib/__tests__/themes.test.d.ts +1 -0
  228. package/dist/lib/__tests__/treeMove.test.d.ts +1 -0
  229. package/dist/lib/aiBridge.d.ts +67 -0
  230. package/dist/lib/aiFeatures.d.ts +31 -0
  231. package/dist/lib/aiSettingsNav.d.ts +14 -0
  232. package/dist/lib/backupBundle.d.ts +23 -0
  233. package/dist/lib/bookFolderTransfer.d.ts +15 -0
  234. package/dist/lib/download.d.ts +10 -0
  235. package/dist/lib/editorChrome.d.ts +14 -0
  236. package/dist/lib/emoji.d.ts +10 -0
  237. package/dist/lib/emojiData.d.ts +21 -0
  238. package/dist/lib/emojiPicker.d.ts +31 -0
  239. package/dist/lib/favorites.d.ts +11 -0
  240. package/dist/lib/homePage.d.ts +53 -0
  241. package/dist/lib/hud.d.ts +70 -0
  242. package/dist/lib/iconRecents.d.ts +3 -0
  243. package/dist/lib/iconValue.d.ts +19 -0
  244. package/dist/lib/lucideIcons.d.ts +21 -0
  245. package/dist/lib/openDocs.d.ts +5 -0
  246. package/dist/lib/pageActions.d.ts +17 -0
  247. package/dist/lib/pageAppearance.d.ts +20 -0
  248. package/dist/lib/pageCover.d.ts +21 -0
  249. package/dist/lib/pageCustomise.d.ts +6 -0
  250. package/dist/lib/pageDocActions.d.ts +20 -0
  251. package/dist/lib/pageFont.d.ts +25 -0
  252. package/dist/lib/pageFullWidth.d.ts +10 -0
  253. package/dist/lib/pageIcon.d.ts +25 -0
  254. package/dist/lib/pageLinks.d.ts +41 -0
  255. package/dist/lib/pageSaveStatus.d.ts +14 -0
  256. package/dist/lib/pageTheme.d.ts +15 -0
  257. package/dist/lib/pageThemePresets.d.ts +23 -0
  258. package/dist/lib/recents.d.ts +9 -0
  259. package/dist/lib/reviewPane.d.ts +23 -0
  260. package/dist/lib/selection.d.ts +2 -0
  261. package/dist/lib/shortcuts.d.ts +79 -0
  262. package/dist/lib/sidebarStyles.d.ts +10 -0
  263. package/dist/lib/suggestBridge.d.ts +33 -0
  264. package/dist/lib/textMerge.d.ts +19 -0
  265. package/dist/lib/themes.d.ts +137 -0
  266. package/dist/lib/treeMove.d.ts +24 -0
  267. package/dist/lib/useModifierHeld.d.ts +1 -0
  268. package/dist/lib/utils.d.ts +2 -0
  269. package/dist/lucideIcons-B6pmC-WQ.js +5003 -0
  270. package/dist/model-CBxw8JNb.js +734 -0
  271. package/dist/pageIcon-BWTy7hAh.js +32 -0
  272. package/dist/plugins/__tests__/host.test.d.ts +1 -0
  273. package/dist/plugins/__tests__/loader.test.d.ts +1 -0
  274. package/dist/plugins/__tests__/pagePlugin.test.d.ts +1 -0
  275. package/dist/plugins/api.d.ts +67 -0
  276. package/dist/plugins/commandRegistry.d.ts +15 -0
  277. package/dist/plugins/host.d.ts +32 -0
  278. package/dist/plugins/index.d.ts +5 -0
  279. package/dist/plugins/loader.d.ts +19 -0
  280. package/dist/plugins/pagePlugin.d.ts +21 -0
  281. package/dist/providers/AccountProvider.d.ts +67 -0
  282. package/dist/providers/ConfirmProvider.d.ts +30 -0
  283. package/dist/providers/ForwardingProvider.d.ts +23 -0
  284. package/dist/providers/HudProvider.d.ts +9 -0
  285. package/dist/providers/I18nProvider.d.ts +23 -0
  286. package/dist/providers/NavigationProvider.d.ts +89 -0
  287. package/dist/providers/PlatformLibraryProvider.d.ts +107 -0
  288. package/dist/providers/PreferencesProvider.d.ts +47 -0
  289. package/dist/providers/ThemeProvider.d.ts +26 -0
  290. package/dist/providers/WorkspaceProvider.d.ts +40 -0
  291. package/dist/providers/__tests__/PreferencesProvider.test.d.ts +1 -0
  292. package/dist/providers/__tests__/extractToken.test.d.ts +1 -0
  293. package/dist/providers/__tests__/windowModel.test.d.ts +1 -0
  294. package/dist/providers/index.d.ts +10 -0
  295. package/dist/providers/windowModel.d.ts +69 -0
  296. package/dist/screens/BlockPageDocument.d.ts +4 -0
  297. package/dist/screens/ConnectedPageDocument.d.ts +14 -0
  298. package/dist/screens/DataflowView.d.ts +2 -0
  299. package/dist/screens/HomeScreen.d.ts +7 -0
  300. package/dist/screens/index.d.ts +3 -0
  301. package/dist/screens/pageChrome.d.ts +46 -0
  302. package/dist/style.css +3 -0
  303. package/dist/toHtml-BoPr8Ce4.js +394 -0
  304. package/dist/toPdf-DGtKQSRA.js +133 -0
  305. package/package.json +94 -0
@@ -0,0 +1,977 @@
1
+ /**
2
+ * The English message catalog — the **source of truth** for i18n. Other locales
3
+ * (`de`/`ja`/`zh`) mirror this shape and may omit keys (they fall back to English).
4
+ * Keys are referenced as dotted paths, e.g. `t('settings.title')`. `{var}`
5
+ * placeholders are interpolated by `t(key, {var})`.
6
+ */
7
+ export declare const en: {
8
+ readonly common: {
9
+ readonly cancel: "Cancel";
10
+ readonly close: "Close";
11
+ readonly delete: "Delete";
12
+ readonly save: "Save";
13
+ readonly add: "Add";
14
+ readonly remove: "Remove";
15
+ readonly untitled: "Untitled";
16
+ readonly settings: "Settings";
17
+ };
18
+ readonly settings: {
19
+ readonly title: "Settings";
20
+ readonly comingSoon: "These settings are coming soon.";
21
+ readonly fullscreen: "Full screen";
22
+ readonly exitFullscreen: "Exit full screen";
23
+ readonly enterFullscreen: "Enter full screen";
24
+ readonly closeSettings: "Close settings";
25
+ readonly section: {
26
+ readonly preferences: "Preferences";
27
+ readonly account: "Account";
28
+ readonly workspace: "Workspace";
29
+ };
30
+ readonly tab: {
31
+ readonly general: "General";
32
+ readonly profile: "Profile";
33
+ readonly appearance: "Appearance";
34
+ readonly customisation: "Customisation";
35
+ readonly signup: "Sign up";
36
+ readonly signin: "Sign-in & email";
37
+ readonly support: "Support OpenBook";
38
+ readonly connection: "Connection";
39
+ readonly integrations: "Integrations";
40
+ readonly extensions: "Extensions";
41
+ readonly ai: "AI";
42
+ readonly admin: "Admin";
43
+ };
44
+ };
45
+ readonly appearance: {
46
+ readonly title: "Appearance";
47
+ readonly colorMode: "Color mode";
48
+ readonly light: "Light";
49
+ readonly dark: "Dark";
50
+ readonly system: "System";
51
+ readonly colorScheme: "Color scheme";
52
+ readonly colorTheme: "Accent color";
53
+ readonly colorThemeHint: "The accent threads through buttons, links, the sidebar, and the logo.";
54
+ readonly accentGray: "Gray";
55
+ readonly accentBold: "Bold";
56
+ readonly accentPastel: "Pastel";
57
+ readonly accentNeutral: "Neutral";
58
+ readonly interfaceIntensity: "Interface";
59
+ readonly interfaceIntensityHint: "How saturated the neutral gray surfaces read.";
60
+ readonly neutralWarm: "Warm";
61
+ readonly neutralCool: "Cool";
62
+ readonly neutralNeutral: "Neutral";
63
+ readonly controlIntensity: "Control intensity";
64
+ readonly controlIntensityHint: "How strongly buttons and rows shade on hover and when selected.";
65
+ readonly blurOverlays: "Blur behind overlays";
66
+ readonly blurOverlaysHint: "Blur the page when a dialog or search opens.";
67
+ readonly levelOff: "Off";
68
+ readonly levelSubtle: "Subtle";
69
+ readonly levelMedium: "Medium";
70
+ readonly levelStrong: "Strong";
71
+ readonly levelSoft: "Soft";
72
+ readonly levelVivid: "Vivid";
73
+ readonly pageTheme: "Page theme";
74
+ readonly pageThemeHint: "Override the accent and style for this page only.";
75
+ readonly presets: "Page theme";
76
+ readonly presetsHint: "A coordinated look — control colour, font, background, and cover in one tap.";
77
+ readonly preset: {
78
+ readonly clean: "Clean";
79
+ readonly editorial: "Editorial";
80
+ readonly notebook: "Notebook";
81
+ readonly technical: "Technical";
82
+ readonly vibrant: "Vibrant";
83
+ readonly calm: "Calm";
84
+ };
85
+ readonly controlColor: "Control colour";
86
+ readonly controlColorHint: "The accent for buttons, links, and selection.";
87
+ readonly matchApp: "Match app";
88
+ readonly pageCustomiseSubtitle: "Appearance & typefaces for this page";
89
+ readonly pageCustomiseEmpty: "Open a page to customise it here.";
90
+ readonly cover: "Cover";
91
+ readonly coverHint: "A banner image or gradient above the title.";
92
+ readonly background: "Background";
93
+ readonly backgroundHint: "Tint the page canvas.";
94
+ readonly fontBody: "Body font";
95
+ readonly fontBodyHint: "The primary typeface, used for paragraphs.";
96
+ readonly fontHeading: "Heading font";
97
+ readonly fontHeadingHint: "The secondary typeface, used for the title and headings.";
98
+ readonly fontSans: "Sans";
99
+ readonly fontSerif: "Serif";
100
+ readonly fontMono: "Mono";
101
+ readonly fontCustom: "Custom";
102
+ readonly fontCustomPlaceholder: "e.g. \"Inter\", system-ui";
103
+ };
104
+ readonly theme: {
105
+ readonly default: "Default";
106
+ readonly sandstone: "Sandstone";
107
+ readonly slate: "Slate";
108
+ readonly ocean: "Ocean";
109
+ readonly forest: "Forest";
110
+ readonly violet: "Violet";
111
+ readonly sunset: "Sunset";
112
+ readonly rose: "Rose";
113
+ readonly teal: "Teal";
114
+ readonly amber: "Amber";
115
+ readonly graphite: "Graphite";
116
+ readonly 'pastel-sky': "Sky";
117
+ readonly 'pastel-mint': "Mint";
118
+ readonly 'pastel-lavender': "Lavender";
119
+ readonly 'pastel-rose': "Blush";
120
+ readonly 'pastel-peach': "Peach";
121
+ readonly 'pastel-butter': "Butter";
122
+ };
123
+ readonly nav: {
124
+ readonly pages: "Pages";
125
+ readonly newPage: "New page";
126
+ readonly newDatabase: "New database";
127
+ readonly back: "Back";
128
+ readonly forward: "Forward";
129
+ readonly goBack: "Go back";
130
+ readonly goForward: "Go forward";
131
+ readonly toggleSidebar: "Toggle sidebar";
132
+ readonly trash: "Trash";
133
+ readonly more: "More actions";
134
+ readonly favorites: "Favorites";
135
+ readonly recents: "Recents";
136
+ readonly suggested: "Suggested";
137
+ readonly home: "Home";
138
+ readonly templates: "Templates";
139
+ };
140
+ readonly tabs: {
141
+ readonly new: "New tab";
142
+ readonly close: "Close tab";
143
+ };
144
+ readonly menu: {
145
+ readonly openTab: "Open in new tab";
146
+ readonly openWindow: "Open in new window";
147
+ readonly openSplit: "Open in split view";
148
+ readonly favorite: "Add to favorites";
149
+ readonly unfavorite: "Remove from favorites";
150
+ readonly rename: "Rename";
151
+ readonly copyLink: "Copy link";
152
+ readonly duplicate: "Duplicate";
153
+ readonly addSubpage: "Add subpage";
154
+ readonly addDatabase: "Add database";
155
+ readonly moveToTrash: "Move to trash";
156
+ readonly viewOptions: "View options";
157
+ readonly options: "Menu";
158
+ readonly fullWidth: "Full width";
159
+ readonly favourite: "Favourite";
160
+ readonly sectionPage: "Page";
161
+ readonly block: {
162
+ readonly sectionBlock: "Block";
163
+ readonly moveUp: "Move up";
164
+ readonly moveDown: "Move down";
165
+ readonly duplicate: "Duplicate";
166
+ readonly deleteBlock: "Delete block";
167
+ readonly linkToPage: "Link to page";
168
+ };
169
+ };
170
+ readonly command: {
171
+ readonly title: "Command palette";
172
+ readonly placeholder: "Search pages or run a command…";
173
+ readonly noResults: "No results found.";
174
+ readonly search: "Search";
175
+ readonly pages: "Pages";
176
+ readonly noPages: "No pages yet";
177
+ readonly actions: "Actions";
178
+ readonly groupFavorites: "Favorites";
179
+ readonly groupRecent: "Recent";
180
+ readonly groupCreate: "Create";
181
+ readonly groupView: "View";
182
+ readonly groupNavigation: "Navigation";
183
+ readonly groupApp: "App";
184
+ readonly favorite: "Add to favorites";
185
+ readonly unfavorite: "Remove from favorites";
186
+ readonly createPage: "Create new page";
187
+ readonly newDatabase: "New database";
188
+ readonly insertSample: "Insert sample document";
189
+ readonly newFromTemplate: "New from template";
190
+ readonly aiSearch: "Search notes with AI";
191
+ readonly askAssistant: "Ask the assistant";
192
+ readonly openSettings: "Open settings";
193
+ readonly openTrash: "Open trash";
194
+ readonly toggleSidebar: "Toggle sidebar";
195
+ readonly toggleFullWidth: "Toggle full width";
196
+ readonly themeToLight: "Switch to light mode";
197
+ readonly themeToDark: "Switch to dark mode";
198
+ readonly splitView: "Split view";
199
+ readonly closeSplit: "Close split view";
200
+ readonly goBack: "Go back";
201
+ readonly goForward: "Go forward";
202
+ readonly current: "current";
203
+ };
204
+ readonly page: {
205
+ readonly saving: "Saving…";
206
+ readonly saved: "Saved";
207
+ readonly saveFailed: "Couldn’t save";
208
+ readonly actions: "Page actions";
209
+ readonly delete: "Delete page";
210
+ readonly titleLabel: "Page title";
211
+ readonly changeIcon: "Change page icon";
212
+ readonly addCover: "Add cover";
213
+ readonly coverChoose: "Choose a cover";
214
+ readonly coverChange: "Change cover";
215
+ readonly coverReposition: "Reposition";
216
+ readonly coverDone: "Save position";
217
+ readonly coverRemove: "Remove";
218
+ readonly coverDragHint: "Drag to reposition";
219
+ readonly coverImageUrl: "Image URL";
220
+ readonly coverApply: "Apply";
221
+ readonly editorPlaceholder: "Write something, or press Tab for blocks…";
222
+ readonly export: "Export";
223
+ readonly exportMarkdown: "Markdown (.md)";
224
+ readonly exportHtml: "Interactive HTML";
225
+ readonly exportPdfPaged: "PDF — paged";
226
+ readonly exportPdfContinuous: "PDF — continuous";
227
+ readonly exportPdfSlides: "Slides (PDF)";
228
+ readonly exportHtmlSlides: "Slides (HTML)";
229
+ readonly exportPlugin: "Plugin (.zip)";
230
+ readonly exportPluginFailed: "Can’t export this page as a plugin";
231
+ readonly exportPluginFailedOk: "OK";
232
+ readonly present: "Present";
233
+ readonly presentFull: "Full screen";
234
+ readonly presentPresenter: "Presenter view";
235
+ };
236
+ readonly home: {
237
+ readonly morning: "Good morning";
238
+ readonly afternoon: "Good afternoon";
239
+ readonly evening: "Good evening";
240
+ readonly customize: "Customize Home";
241
+ readonly widgetActions: "Quick actions";
242
+ readonly widgetRecents: "Jump back in";
243
+ readonly widgetFavorites: "Favorites";
244
+ readonly widgetEdited: "Recently edited";
245
+ readonly justNow: "just now";
246
+ };
247
+ readonly flow: {
248
+ readonly title: "Dataflow";
249
+ readonly open: "Dataflow view";
250
+ readonly empty: "Nothing reactive on this page yet";
251
+ readonly emptyHint: "Add named inputs, live code, charts or status lights — their wiring appears here as a live graph.";
252
+ };
253
+ readonly mention: {
254
+ readonly label: "Link to page";
255
+ readonly create: "Create page “{name}”";
256
+ readonly empty: "No pages — keep typing to create one.";
257
+ };
258
+ readonly properties: {
259
+ readonly owner: "Owner";
260
+ readonly setOwner: "Set owner";
261
+ readonly ownerPlaceholder: "Type a name…";
262
+ readonly you: "You";
263
+ readonly clear: "Clear";
264
+ readonly verification: "Verification";
265
+ readonly verified: "Verified";
266
+ readonly verify: "Verify";
267
+ readonly unverify: "Remove verification";
268
+ readonly verifiedBy: "by {name}";
269
+ readonly verifyExpired: "Verification expired";
270
+ readonly verifyExpiryPrompt: "Verify · choose an expiry";
271
+ readonly verifyReverify: "Re-verify · update expiry";
272
+ readonly verifyExpiry30: "Expires in 30 days";
273
+ readonly verifyExpiry90: "Expires in 90 days";
274
+ readonly verifyExpiry365: "Expires in 1 year";
275
+ readonly verifyNoExpiry: "No expiry";
276
+ readonly verifyExpiresOn: "Expires {date}";
277
+ readonly verifyExpiredOn: "Expired {date}";
278
+ readonly backlinks: "Backlinks";
279
+ readonly backlinkCount: "{count} backlinks";
280
+ readonly backlinkCountOne: "1 backlink";
281
+ readonly noBacklinks: "No backlinks";
282
+ readonly refresh: "Refresh";
283
+ };
284
+ readonly emoji: {
285
+ readonly label: "Emoji";
286
+ readonly search: "Search emoji";
287
+ readonly tabEmoji: "Emoji";
288
+ readonly tabIcons: "Icons";
289
+ readonly searchEmoji: "Search emoji…";
290
+ readonly searchIcons: "Search icons…";
291
+ readonly recent: "Recent";
292
+ readonly noResults: "No matches";
293
+ readonly cat: {
294
+ readonly smileys: "Smileys";
295
+ readonly people: "People";
296
+ readonly nature: "Animals & Nature";
297
+ readonly food: "Food & Drink";
298
+ readonly activity: "Activity";
299
+ readonly travel: "Travel & Places";
300
+ readonly objects: "Objects";
301
+ readonly symbols: "Symbols";
302
+ };
303
+ };
304
+ readonly confirm: {
305
+ readonly trashTitle: "Move this page to the trash?";
306
+ readonly trashBody: "You can restore it later from the trash.";
307
+ readonly trashConfirm: "Move to trash";
308
+ };
309
+ readonly backup: {
310
+ readonly heading: "Backup & restore";
311
+ readonly intro: "Export your whole workspace to a single file, or restore one — choosing which pages to bring back.";
312
+ readonly export: "Export backup";
313
+ readonly exporting: "Exporting…";
314
+ readonly restore: "Restore backup…";
315
+ readonly exported: "Exported {count} pages.";
316
+ readonly exportFailed: "Export failed: {error}";
317
+ readonly readFailed: "Couldn’t read backup: {error}";
318
+ readonly folderHeading: "Book folder";
319
+ readonly folderIntro: "Save your workspace as a folder of readable .html files (one per page), or load one back. The folder round-trips losslessly.";
320
+ readonly folderExport: "Export to folder…";
321
+ readonly folderExporting: "Exporting…";
322
+ readonly folderImport: "Import from folder…";
323
+ readonly folderExported: "Exported {count} pages to {location}.";
324
+ readonly folderEmpty: "No OpenBook pages found in that folder.";
325
+ readonly restored: "Restored {count} pages{detail}.";
326
+ readonly restoreFailed: "Restore failed: {error}";
327
+ readonly added: "{count} added";
328
+ readonly overwrittenCount: "{count} overwritten";
329
+ readonly renamedCount: "{count} renamed";
330
+ readonly dialog: {
331
+ readonly title: "Restore backup";
332
+ readonly summary: "{count} pages. Pick what to restore.";
333
+ readonly summaryDated: "{count} pages · exported {date}. Pick what to restore.";
334
+ readonly selected: "{count} selected";
335
+ readonly all: "All";
336
+ readonly none: "None";
337
+ readonly overwrite: "Overwrite existing pages";
338
+ readonly overwriteHint: "Restore in place by id. Off (default) imports as copies, suffixing names that clash.";
339
+ readonly restoreN: "Restore {count}";
340
+ readonly confirmTitle: "Overwrite {count} existing pages?";
341
+ readonly confirmBody: "Restoring in place will replace the current content of {count} pages. This can’t be undone.";
342
+ readonly confirmBodyNone: "No existing pages match — these will be added as new pages.";
343
+ readonly confirmOverwrite: "Overwrite";
344
+ };
345
+ };
346
+ readonly workspace: {
347
+ readonly workspaces: "Workspaces";
348
+ readonly addWorkspace: "Add a workspace…";
349
+ readonly addTitle: "Add a workspace";
350
+ readonly addDescription: "Connect to another OpenBook server. Switching to it re-points this device at that server.";
351
+ readonly icon: "Icon";
352
+ readonly name: "Name";
353
+ readonly serverUrl: "Server URL";
354
+ readonly namePlaceholder: "Home wiki";
355
+ readonly urlPlaceholder: "https://my-server.example:4319";
356
+ readonly addButton: "Add workspace";
357
+ readonly urlRequired: "Enter the server URL for this workspace.";
358
+ readonly urlInvalid: "That doesn’t look like a valid URL.";
359
+ readonly removeWorkspace: "Remove {name}";
360
+ readonly thisDevice: "This device";
361
+ };
362
+ readonly ai: {
363
+ readonly description: "An optional model powers note search, task breakdown, and document completion. Run a local model — nothing leaves your machine — or connect the Claude API.";
364
+ readonly providerLabel: "Engine";
365
+ readonly defaultEngine: "Default engine";
366
+ readonly defaultEngineHint: "Used everywhere by default. Each provider below is configured separately — the agent can switch between them per conversation.";
367
+ readonly provider: {
368
+ readonly off: "Off";
369
+ readonly offHint: "No model. Note search still works (keyword ranking).";
370
+ readonly llama: "Built-in (llama.cpp)";
371
+ readonly llamaHint: "Runs inside OpenBook on any platform. Download a model below.";
372
+ readonly mlx: "MLX (Apple Silicon)";
373
+ readonly mlxHint: "Uses mlx_lm.server for the fastest local inference on Apple Silicon.";
374
+ readonly openai: "Local server (OpenAI-compatible)";
375
+ readonly openaiHint: "Ollama, LM Studio, llama-server, or any compatible endpoint.";
376
+ readonly claude: "Claude (Anthropic API)";
377
+ readonly claudeHint: "Anthropic’s hosted Claude models. Needs an API key — prompts are sent to Anthropic.";
378
+ readonly mock: "Mock (test)";
379
+ };
380
+ readonly providerShort: {
381
+ readonly llama: "Built-in";
382
+ readonly mlx: "MLX";
383
+ readonly openai: "Local server";
384
+ readonly claude: "Claude";
385
+ };
386
+ readonly ready: "Engine ready · {embeddings}";
387
+ readonly semantic: "semantic search enabled";
388
+ readonly lexicalOnly: "keyword search only";
389
+ readonly notReady: "Engine not ready.";
390
+ readonly model: "Model";
391
+ readonly modelFile: "Model file (GGUF)";
392
+ readonly modelFileHint: "A file in the server’s models directory.";
393
+ readonly downloadDefault: "Download recommended model (~1 GB)";
394
+ readonly downloading: "Downloading… {progress}%";
395
+ readonly downloadingNoPct: "Downloading…";
396
+ readonly downloadDone: "Model downloaded.";
397
+ readonly endpoint: "Endpoint";
398
+ readonly baseUrl: "Server URL";
399
+ readonly mlxUrlHint: "Where mlx_lm.server listens. Started automatically when possible.";
400
+ readonly openaiUrlHint: "The OpenAI-compatible server’s address.";
401
+ readonly modelName: "Model";
402
+ readonly mlxModelHint: "An MLX model id, e.g. mlx-community/Qwen2.5-1.5B-Instruct-4bit.";
403
+ readonly openaiModelHint: "The model name your server expects.";
404
+ readonly apiKey: "API key";
405
+ readonly apiKeyHint: "An Anthropic API key from console.anthropic.com (starts with “sk-ant-api…”) — not a `claude setup-token`. Stored in this workspace.";
406
+ readonly claudeModelHint: "A Claude model id, e.g. claude-sonnet-4-6 or claude-haiku-4-5.";
407
+ readonly search: "Note search";
408
+ readonly searchHint: "Notes are indexed for search automatically; rebuild if results look stale.";
409
+ readonly reindex: "Rebuild index";
410
+ readonly indexing: "Indexing…";
411
+ readonly indexed: "{pages} pages indexed";
412
+ readonly notIndexed: "Index builds on first search.";
413
+ readonly assistant: "Assistant";
414
+ readonly assistantHint: "Defaults for the workspace agent. These can be overridden per conversation.";
415
+ readonly effort: "Effort";
416
+ readonly effortHint: "How hard the agent works: more effort means more reasoning, more steps, and slower replies.";
417
+ readonly effortLow: "Low";
418
+ readonly effortMed: "Medium";
419
+ readonly effortHigh: "High";
420
+ readonly thinking: "Show reasoning";
421
+ readonly thinkingHint: "Surface the model’s thinking as a collapsible block (when it emits any).";
422
+ readonly skills: "Skills";
423
+ readonly skillsHint: "Reusable prompt recipes the assistant can follow. Markdown instructions, no code.";
424
+ readonly skillName: "Name";
425
+ readonly skillNamePlaceholder: "weekly-review";
426
+ readonly skillDescription: "Description";
427
+ readonly skillDescriptionPlaceholder: "What this skill is for";
428
+ readonly skillInstructions: "Instructions";
429
+ readonly skillInstructionsPlaceholder: "Steps the assistant should follow…";
430
+ readonly skillAdd: "Add skill";
431
+ readonly skillSave: "Save";
432
+ readonly skillCancel: "Cancel";
433
+ readonly skillDelete: "Delete";
434
+ readonly skillEmpty: "No skills yet. Add one to teach the assistant a repeatable recipe.";
435
+ readonly features: "Features";
436
+ readonly featuresHint: "Choose how each AI feature shows up in menus. Recommended keeps it up front; Enabled hides it until you search for it; Disabled removes it.";
437
+ readonly featureVisibility: {
438
+ readonly recommended: "Recommended";
439
+ readonly enabled: "Enabled";
440
+ readonly disabled: "Disabled";
441
+ };
442
+ readonly feature: {
443
+ readonly assistant: "Assistant";
444
+ readonly search: "AI note search";
445
+ readonly continue: "Continue writing";
446
+ readonly tasks: "Break into tasks";
447
+ };
448
+ };
449
+ readonly aiSearch: {
450
+ readonly title: "Search notes";
451
+ readonly semantic: "semantic";
452
+ readonly lexical: "keyword";
453
+ readonly placeholder: "What are you looking for?";
454
+ readonly empty: "No matching notes.";
455
+ readonly hint: "Searches every page’s content — results improve with a local model.";
456
+ };
457
+ readonly agent: {
458
+ readonly title: "Assistant";
459
+ readonly hint: "Ask about your notes — the assistant can search, read, create pages, and build databases in this workspace.";
460
+ readonly placeholder: "Ask anything…";
461
+ readonly thinking: "Working…";
462
+ readonly reset: "New conversation";
463
+ readonly close: "Close assistant";
464
+ readonly error: "Something went wrong: {error}";
465
+ readonly notReady: "The assistant needs a model — enable one in Settings → AI.";
466
+ readonly openSettings: "Open AI settings";
467
+ readonly send: "Send";
468
+ readonly stop: "Stop";
469
+ readonly inputHint: "Enter to send · Shift+Enter for a new line";
470
+ readonly suggestion1: "What pages do I have?";
471
+ readonly suggestion2: "Find my notes about planning";
472
+ readonly suggestion3: "Create a page with a plan for today";
473
+ readonly reasoning: "Reasoning";
474
+ readonly suggestionsTitle: "Proposed {count} suggestion(s)";
475
+ readonly suggestionsHint: "The assistant proposed these changes. Open Review to accept or reject each.";
476
+ readonly review: "Review";
477
+ readonly proposalTitle: "Proposed changes";
478
+ readonly proposalHint: "The assistant wants to make these changes. Review and approve.";
479
+ readonly approve: "Approve";
480
+ readonly reject: "Discard";
481
+ readonly applied: "Applied {count} change(s).";
482
+ readonly appliedPartial: "Applied {applied} change(s); {failed} could not be applied.";
483
+ readonly applyFailed: "Some changes could not be applied.";
484
+ readonly rejected: "Changes discarded.";
485
+ readonly permissionTitle: "Apply changes directly?";
486
+ readonly permissionHint: "The assistant is asking to {summary} for you, skipping the review step.";
487
+ readonly permissionAllow: "Allow direct edits";
488
+ readonly permissionKeepReview: "Keep reviewing";
489
+ readonly permissionAllowed: "✓ Direct edits allowed for this conversation.";
490
+ readonly permissionDeclined: "Kept the review flow.";
491
+ readonly permissionGrantedMsg: "Yes — you may apply changes directly, without the review step.";
492
+ readonly permissionDeniedMsg: "No — please keep proposing changes for me to review.";
493
+ readonly interviewTitle: "A few questions";
494
+ readonly interviewStep: "Step {current} of {total}";
495
+ readonly interviewBack: "Back";
496
+ readonly interviewNext: "Next";
497
+ readonly interviewSubmit: "Send answers";
498
+ readonly interviewPlaceholder: "Type your answer…";
499
+ readonly interviewSent: "Answers sent.";
500
+ readonly interviewAnswersHeader: "Here are my answers:";
501
+ readonly effortLow: "Low";
502
+ readonly effortMed: "Medium";
503
+ readonly effortHigh: "High";
504
+ readonly thinkingToggle: "Reasoning";
505
+ readonly provider: "Provider for this conversation";
506
+ readonly model: "Model for this conversation";
507
+ readonly modelPlaceholder: "Default model";
508
+ readonly modelAuto: "Default";
509
+ readonly modelCustom: "Custom model";
510
+ readonly modelSettings: "Conversation model & effort";
511
+ readonly tool: {
512
+ readonly search_notes: "Searching notes";
513
+ readonly read_page: "Reading a page";
514
+ readonly list_pages: "Listing pages";
515
+ readonly create_page: "Creating a page";
516
+ readonly append_to_page: "Adding to a page";
517
+ readonly inspect_page_structure: "Inspecting page structure";
518
+ readonly get_kit_values: "Reading input values";
519
+ readonly list_db_views: "Listing database views";
520
+ readonly get_db_row: "Reading a database row";
521
+ readonly describe_database: "Inspecting a database";
522
+ readonly update_block: "Editing a block";
523
+ readonly update_block_props: "Formatting a block";
524
+ readonly delete_block: "Deleting a block";
525
+ readonly move_page: "Rearranging pages";
526
+ readonly request_edit_access: "Requesting edit access";
527
+ readonly ask_user: "Asking you";
528
+ readonly set_kit_value: "Setting an input value";
529
+ readonly set_db_cell: "Setting a database cell";
530
+ readonly create_database: "Creating a database";
531
+ readonly update_database: "Renaming a database";
532
+ readonly create_property: "Adding a column";
533
+ readonly update_property: "Editing a column";
534
+ readonly create_row: "Adding a row";
535
+ readonly update_row: "Updating a row";
536
+ readonly add_blocks: "Adding blocks";
537
+ readonly set_page_appearance: "Restyling the page";
538
+ };
539
+ };
540
+ readonly link: {
541
+ readonly pageTitle: "Link to page";
542
+ readonly databaseTitle: "Link to database";
543
+ readonly pagePlaceholder: "Search pages…";
544
+ readonly databasePlaceholder: "Search databases…";
545
+ readonly noPages: "No pages found";
546
+ readonly noDatabases: "No databases found";
547
+ };
548
+ readonly slash: {
549
+ readonly group: {
550
+ readonly pages: "Pages";
551
+ readonly basic: "Basic blocks";
552
+ readonly interactive: "Interactive blocks";
553
+ readonly extensions: "Extensions";
554
+ readonly ai: "AI";
555
+ };
556
+ readonly newpage: {
557
+ readonly label: "New page";
558
+ readonly hint: "Create a nested page and link it here";
559
+ };
560
+ readonly newdatabase: {
561
+ readonly label: "New database";
562
+ readonly hint: "Create a nested database and link it here";
563
+ };
564
+ readonly linkpage: {
565
+ readonly label: "Link to page";
566
+ readonly hint: "Insert a link to an existing page";
567
+ };
568
+ readonly linkdatabase: {
569
+ readonly label: "Link to database";
570
+ readonly hint: "Insert a link to an existing database";
571
+ };
572
+ readonly text: {
573
+ readonly label: "Text";
574
+ readonly hint: "Plain paragraph";
575
+ };
576
+ readonly h1: {
577
+ readonly label: "Heading 1";
578
+ readonly hint: "Large section heading";
579
+ };
580
+ readonly h2: {
581
+ readonly label: "Heading 2";
582
+ readonly hint: "Medium section heading";
583
+ };
584
+ readonly h3: {
585
+ readonly label: "Heading 3";
586
+ readonly hint: "Small section heading";
587
+ };
588
+ readonly bullet: {
589
+ readonly label: "Bulleted list";
590
+ readonly hint: "Simple list";
591
+ };
592
+ readonly number: {
593
+ readonly label: "Numbered list";
594
+ readonly hint: "Ordered list";
595
+ };
596
+ readonly todo: {
597
+ readonly label: "To-do";
598
+ readonly hint: "Checkbox item";
599
+ };
600
+ readonly quote: {
601
+ readonly label: "Quote";
602
+ readonly hint: "Pull quote";
603
+ };
604
+ readonly callout: {
605
+ readonly label: "Callout";
606
+ readonly hint: "Highlighted note";
607
+ };
608
+ readonly code: {
609
+ readonly label: "Code";
610
+ readonly hint: "Monospaced block";
611
+ };
612
+ readonly livecode: {
613
+ readonly label: "Live code";
614
+ readonly hint: "Computes over inputs; name the output to chain";
615
+ };
616
+ readonly divider: {
617
+ readonly label: "Divider";
618
+ readonly hint: "Horizontal rule";
619
+ };
620
+ readonly table: {
621
+ readonly label: "Table";
622
+ readonly hint: "3 × 3 to start";
623
+ };
624
+ readonly cols2: {
625
+ readonly label: "2 columns";
626
+ readonly hint: "Side-by-side layout";
627
+ };
628
+ readonly cols3: {
629
+ readonly label: "3 columns";
630
+ readonly hint: "Three-across layout";
631
+ };
632
+ readonly cols4: {
633
+ readonly label: "4 columns";
634
+ readonly hint: "Four-across layout";
635
+ };
636
+ readonly 'ai-continue': {
637
+ readonly label: "Continue writing";
638
+ readonly hint: "AI continues from here";
639
+ };
640
+ readonly 'ai-tasks': {
641
+ readonly label: "Break into tasks";
642
+ readonly hint: "AI drafts to-dos for this";
643
+ };
644
+ readonly custom: {
645
+ readonly slider: {
646
+ readonly label: "Slider";
647
+ readonly hint: "A named live input";
648
+ };
649
+ readonly formula: {
650
+ readonly label: "Formula";
651
+ readonly hint: "Live code over inputs";
652
+ };
653
+ readonly number: {
654
+ readonly label: "Number stepper";
655
+ readonly hint: "A named number with − / + buttons";
656
+ };
657
+ readonly textfield: {
658
+ readonly label: "Text field";
659
+ readonly hint: "A named text input";
660
+ };
661
+ readonly radio: {
662
+ readonly label: "Radio group";
663
+ readonly hint: "Pick one of several options";
664
+ };
665
+ readonly checklist: {
666
+ readonly label: "Choice checklist";
667
+ readonly hint: "Pick any of several options";
668
+ };
669
+ readonly dropdown: {
670
+ readonly label: "Dropdown";
671
+ readonly hint: "Pick one option from a select";
672
+ };
673
+ readonly toggle: {
674
+ readonly label: "Toggle switch";
675
+ readonly hint: "A named on/off switch";
676
+ };
677
+ readonly location: {
678
+ readonly label: "Location";
679
+ readonly hint: "A place with coordinates";
680
+ };
681
+ readonly actionbutton: {
682
+ readonly label: "Button";
683
+ readonly hint: "Set, step, or toggle an input — or open a link";
684
+ };
685
+ readonly kitchart: {
686
+ readonly label: "Chart";
687
+ readonly hint: "Line, bar, pie, scatter, funnel — live over inputs";
688
+ };
689
+ readonly statuslight: {
690
+ readonly label: "Status light";
691
+ readonly hint: "Green / amber / red from a live value";
692
+ };
693
+ readonly tooltipcard: {
694
+ readonly label: "Tooltip";
695
+ readonly hint: "A term that explains itself on hover";
696
+ };
697
+ readonly linkcard: {
698
+ readonly label: "Link card";
699
+ readonly hint: "A titled card that opens a URL";
700
+ };
701
+ };
702
+ };
703
+ readonly extensions: {
704
+ readonly description: "Extend OpenBook with plugins: custom blocks, commands, and integrations, installed from a zip of TypeScript source.";
705
+ readonly install: "Install from .zip…";
706
+ readonly installing: "Installing…";
707
+ readonly installHint: "A zip with openbook.json and TypeScript sources.";
708
+ readonly empty: "No extensions installed";
709
+ readonly emptyHint: "Install one from a zip — it can add blocks to the editor, commands to the palette, and integrations.";
710
+ readonly verified: "Verified";
711
+ readonly verifiedBy: "Signed and verified by {registry}";
712
+ readonly unverified: "Unverified";
713
+ readonly unverifiedHint: "Not signed by a registry you trust. It runs with the same access as your own live code.";
714
+ readonly loadError: "Failed to load: {error}";
715
+ readonly enable: "Enable {name}";
716
+ readonly remove: "Remove {name}";
717
+ readonly trustNote: "Extensions run with the same privileges as your documents’ live code. A “Verified” badge means a registry you trust signed this exact content — it is provenance, not a sandbox.";
718
+ readonly registries: "Trusted registries";
719
+ readonly registriesHint: "Extensions signed by any of these keys show as Verified.";
720
+ readonly builtIn: "Built-in";
721
+ readonly registryName: "Registry name";
722
+ readonly registryKey: "Ed25519 public key (base64)";
723
+ readonly addRegistry: "Trust registry";
724
+ readonly removeRegistry: "Remove registry {name}";
725
+ readonly registryKeyInvalid: "Enter a 32-byte Ed25519 public key in base64.";
726
+ };
727
+ readonly templates: {
728
+ readonly title: "Start with a template";
729
+ readonly description: "Ready-made pages with sensible structure — pick one and make it yours.";
730
+ readonly creating: "Creating…";
731
+ readonly groceryTracker: {
732
+ readonly name: "Grocery price tracker";
733
+ readonly description: "Price a weekly basket across shops — live charts, a budget light, and the maths tucked in a code block.";
734
+ };
735
+ readonly taskBoard: {
736
+ readonly name: "Project task board";
737
+ readonly description: "Tasks with status, priority, owner and effort — a kanban board grouped by status, plus a table.";
738
+ };
739
+ readonly readingList: {
740
+ readonly name: "Reading list";
741
+ readonly description: "A gallery of books grouped by shelf, with authors and star ratings — plus a table view.";
742
+ };
743
+ readonly projectIntake: {
744
+ readonly name: "Project intake";
745
+ readonly description: "A gated brief that unlocks stage by stage, with a live effort-vs-impact prioritisation.";
746
+ };
747
+ readonly savingsPlanner: {
748
+ readonly name: "Savings & investing";
749
+ readonly description: "A safety-net check, then sliders feed a live compound-growth projection toward a goal.";
750
+ };
751
+ readonly roadmap: {
752
+ readonly name: "Product roadmap";
753
+ readonly description: "Initiatives on a timeline and a board, both split into swimlanes by area.";
754
+ };
755
+ readonly fieldMap: {
756
+ readonly name: "Field map";
757
+ readonly description: "Offices and partners pinned on a map, coloured by region — with a table view.";
758
+ };
759
+ };
760
+ readonly blocks: {
761
+ readonly subpagePage: "Page";
762
+ readonly subpageDatabase: "Database";
763
+ readonly expression: "Expression";
764
+ readonly chart: "Chart";
765
+ readonly slider: "Slider";
766
+ readonly sliderEdit: "Edit slider";
767
+ readonly creating: "Creating {kind}…";
768
+ readonly referenceHint: "reference cells with";
769
+ readonly chartPick: "Pick at least one cell to plot";
770
+ readonly chartNoData: "No numeric array data in the selected cells";
771
+ readonly chartPlot: "plot";
772
+ readonly chartAnd: "and";
773
+ readonly chartAddSeries: "add series";
774
+ readonly chartRemoveSeries: "Remove series";
775
+ readonly chartPickCell: "— pick a cell —";
776
+ readonly table: "Table";
777
+ readonly todo: "To-do list";
778
+ readonly listUnordered: "Bulleted list";
779
+ readonly listOrdered: "Numbered list";
780
+ readonly callout: "Callout";
781
+ readonly calloutInfo: "Info";
782
+ readonly calloutWarning: "Warning";
783
+ readonly calloutSuccess: "Success";
784
+ readonly calloutDanger: "Danger";
785
+ readonly calloutEmoji: "Change emoji";
786
+ readonly calloutPlaceholder: "Write a callout…";
787
+ readonly accordion: "Toggle";
788
+ readonly accordionToggle: "Expand or collapse";
789
+ readonly accordionTitlePlaceholder: "Toggle title";
790
+ readonly accordionContentPlaceholder: "Hidden content…";
791
+ readonly divider: "Divider";
792
+ readonly dividerLine: "Line";
793
+ readonly dividerDashed: "Dashed";
794
+ readonly dividerDotted: "Dotted";
795
+ readonly dividerThick: "Thick";
796
+ readonly dividerLabeled: "Labeled";
797
+ readonly dividerLabelPlaceholder: "Label";
798
+ readonly button: "Button";
799
+ readonly buttonDefault: "Button";
800
+ readonly buttonLabelPlaceholder: "Button label";
801
+ readonly buttonEdit: "Edit button";
802
+ readonly buttonUrlPlaceholder: "https://… or /page";
803
+ readonly toc: "Table of contents";
804
+ readonly tocTitle: "On this page";
805
+ readonly tocEmpty: "No headings yet — add a heading to build the outline.";
806
+ };
807
+ readonly general: {
808
+ readonly title: "General";
809
+ readonly description: "Language and how the app behaves.";
810
+ readonly languageSection: "Language";
811
+ readonly language: "Language";
812
+ readonly languageHint: "Display language for the app.";
813
+ readonly behavior: "Behavior";
814
+ readonly confirmTrash: "Confirm before trashing pages";
815
+ readonly confirmTrashHint: "Ask before moving a page to the trash.";
816
+ readonly spellcheck: "Spellcheck while typing";
817
+ readonly spellcheckHint: "Underline misspelled words in the editor.";
818
+ };
819
+ readonly profile: {
820
+ readonly title: "Profile";
821
+ readonly description: "How you appear in OpenBook on this device.";
822
+ readonly identity: "Identity";
823
+ readonly name: "Name";
824
+ readonly nameHint: "Your full name.";
825
+ readonly namePlaceholder: "Ada Lovelace";
826
+ readonly displayName: "Display name";
827
+ readonly displayNameHint: "A shorter name shown around the app.";
828
+ readonly displayNamePlaceholder: "ada";
829
+ readonly avatar: "Avatar";
830
+ readonly avatarHint: "Your initials by default — or pick an emoji or upload a picture.";
831
+ readonly avatarEmoji: "Choose emoji";
832
+ readonly avatarUpload: "Upload image…";
833
+ readonly avatarReset: "Use initials";
834
+ readonly editProfile: "Edit profile";
835
+ readonly aboutApp: "About OpenBook";
836
+ readonly bio: "About";
837
+ readonly bioHint: "A sentence or two about yourself.";
838
+ readonly bioPlaceholder: "Mathematician and writer.";
839
+ readonly preview: "Preview";
840
+ readonly anonymous: "Anonymous";
841
+ };
842
+ readonly customisation: {
843
+ readonly title: "Customisation & shortcuts";
844
+ readonly description: "Tailor the layout and review keyboard shortcuts.";
845
+ readonly layout: "Layout";
846
+ readonly fullWidth: "Full-width editor";
847
+ readonly fullWidthHint: "Use the whole page width instead of a centered column.";
848
+ readonly autoHideSidebar: "Auto-hide sidebar";
849
+ readonly autoHideSidebarHint: "Collapse the sidebar until you move to the screen edge.";
850
+ readonly shortcuts: "Keyboard shortcuts";
851
+ readonly shortcutsHint: "Available anywhere in the app.";
852
+ readonly shortcut: {
853
+ readonly commandPalette: "Open the command palette";
854
+ readonly newPage: "Create a new page";
855
+ readonly toggleSidebar: "Show or hide the sidebar";
856
+ readonly fullWidth: "Toggle full-width view";
857
+ readonly theme: "Switch between light and dark";
858
+ readonly back: "Go back";
859
+ readonly forward: "Go forward";
860
+ readonly openSettings: "Open settings";
861
+ readonly trash: "Open the trash";
862
+ readonly closeOverlay: "Close a dialog or menu";
863
+ readonly slashMenu: "Insert a block";
864
+ readonly mention: "Link or mention a page";
865
+ };
866
+ };
867
+ readonly account: {
868
+ readonly signup: {
869
+ readonly title: "Create an account";
870
+ readonly description: "Accounts and cloud sync aren’t part of OpenBook yet. Today your pages live locally on the server you connect to.";
871
+ };
872
+ readonly signin: {
873
+ readonly title: "Account & sync";
874
+ readonly description: "Sign in to account.book.pub to sync your preferences and workspaces across devices. Local-first stays the default — this is opt-in.";
875
+ readonly signInButton: "Continue with account.book.pub";
876
+ readonly connecting: "Waiting for sign-in in your browser…";
877
+ readonly cancel: "Cancel";
878
+ readonly connectedTitle: "Synced";
879
+ readonly connectedAs: "This device";
880
+ readonly lastSynced: "Last synced";
881
+ readonly never: "not yet";
882
+ readonly syncing: "Syncing…";
883
+ readonly syncNow: "Sync now";
884
+ readonly signOut: "Sign out";
885
+ readonly openDashboard: "Manage devices";
886
+ readonly whatSyncs: "Your profile, general preferences, feature visibility, and workspace list sync. Pages and documents are not synced here — they stay on your data server.";
887
+ readonly signOutHint: "Signing out forgets the token on this device. To fully revoke it, remove the device in your account dashboard.";
888
+ readonly manualToggle: "App didn’t open? Enter a code manually";
889
+ readonly manualHint: "Dismiss the “open OpenBook?” prompt in your browser, copy the code (or the whole openbook:// link), and paste it here.";
890
+ readonly manualPlaceholder: "Paste your code or openbook://auth-callback#token=… link";
891
+ readonly manualSubmit: "Sign in with code";
892
+ };
893
+ readonly support: {
894
+ readonly title: "Support OpenBook";
895
+ readonly description: "OpenBook is independent and open source. Sharing it and sending feedback helps it grow. Sponsorship options are on the way.";
896
+ };
897
+ };
898
+ readonly forwarding: {
899
+ readonly title: "Forward to the web";
900
+ readonly description: "Claim a private ✦.book.pub address that opens this device’s books in any browser — nothing to host, nothing to expose on your network.";
901
+ readonly toggle: "Forward this device";
902
+ readonly signInHint: "Sign in to your account first to claim an address.";
903
+ readonly signIn: "Sign in";
904
+ readonly registering: "Connecting…";
905
+ readonly address: "Your address";
906
+ readonly addressHint: "Opens this device’s books in any browser while it’s online.";
907
+ readonly copy: "Copy";
908
+ readonly copied: "Copied";
909
+ readonly failed: "Couldn’t register: {error}";
910
+ readonly status: {
911
+ readonly live: "Live";
912
+ readonly connecting: "Connecting";
913
+ readonly offline: "Offline";
914
+ };
915
+ };
916
+ readonly connection: {
917
+ readonly title: "Connection";
918
+ readonly description: "Choose where this device reads and writes pages.";
919
+ readonly server: "Server";
920
+ readonly usingLocal: "Your books are stored in this app, on this device.";
921
+ readonly usingRemote: "Currently using the remote server";
922
+ readonly remoteUrl: "Remote server URL";
923
+ readonly remoteUrlPlaceholder: "https://my-server.example:4319";
924
+ readonly mixedContentWarning: "This is a secure (https) site, so it can’t reach a plain http:// address on your local network — the browser blocks it. Use the device’s https ✦.book.pub forwarding address instead (turn on Forwarding in the OpenBook app on that device), or open OpenBook directly on the same machine.";
925
+ readonly remoteTokenPlaceholder: "Only if the server requires one";
926
+ readonly remoteTokenHint: "A published or shared server requires its access token; leave blank for an open server.";
927
+ readonly connect: "Connect";
928
+ readonly useLocal: "Use this app";
929
+ readonly inApp: "Storage";
930
+ readonly inAppDescription: "Your books live in this app, on this device — no server, no open port. Share on the network below to also serve them to your other devices.";
931
+ readonly localServer: "Local server";
932
+ readonly running: "Shared from";
933
+ readonly stopped: "Stopped.";
934
+ readonly checking: "Checking…";
935
+ readonly unmanaged: "Managed by the dev environment — start/stop is unavailable here.";
936
+ readonly start: "Start";
937
+ readonly stop: "Stop";
938
+ readonly refresh: "Refresh";
939
+ readonly publish: "Share on the network";
940
+ readonly publishDescription: "Spin up a shareable server so other devices on your network can open this workspace.";
941
+ readonly publishToggle: "Share this workspace on the LAN";
942
+ readonly publishWarning: "No login: anyone who can reach the address below — with the access token — can read and edit this workspace. Only enable on networks you trust.";
943
+ readonly lanAddress: "Network address";
944
+ readonly accessToken: "Access token";
945
+ readonly copy: "Copy";
946
+ readonly copied: "Copied";
947
+ readonly notPublished: "Not shared — this device only.";
948
+ readonly bookFiles: "Book files";
949
+ readonly bookFilesDescription: "A readable folder of HTML pages, mirrored from your workspace for backup and external sync.";
950
+ readonly bookFolder: "Folder";
951
+ readonly changeFolder: "Change…";
952
+ readonly reveal: "Reveal in Finder";
953
+ };
954
+ readonly integrations: {
955
+ readonly title: "Integrations";
956
+ readonly description: "Connect OpenBook to other tools. Integrations aren’t available yet — this is where they’ll live.";
957
+ };
958
+ readonly admin: {
959
+ readonly title: "Admin";
960
+ readonly description: "Backup, restore, and workspace maintenance.";
961
+ readonly dangerZone: "Danger zone";
962
+ readonly dangerZoneHint: "These actions affect this device’s local data, not your pages.";
963
+ readonly resetPrefs: "Reset preferences & layout";
964
+ readonly resetPrefsHint: "Restore default appearance, language, and layout on this device. Your pages and workspaces are kept.";
965
+ readonly resetPrefsButton: "Reset";
966
+ readonly resetConfirmTitle: "Reset preferences & layout?";
967
+ readonly resetConfirmBody: "This clears appearance, language, and layout settings on this device and reloads. Your pages and workspaces are not affected.";
968
+ readonly resetConfirmButton: "Reset";
969
+ };
970
+ };
971
+ export type Messages = typeof en;
972
+ type DeepPartial<T> = {
973
+ [K in keyof T]?: T[K] extends string ? string : DeepPartial<T[K]>;
974
+ };
975
+ /** Shape of a non-source locale: same tree, every key optional (falls back to en). */
976
+ export type PartialMessages = DeepPartial<Messages>;
977
+ export {};