@jant/core 0.3.35 → 0.3.37

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 (307) hide show
  1. package/bin/commands/export.js +1 -1
  2. package/bin/commands/import-site.js +529 -0
  3. package/bin/commands/reset-password.js +3 -2
  4. package/dist/client/assets/heic-to-DIRPI3VF.js +1 -0
  5. package/dist/client/assets/module-RjUF93sV.js +716 -0
  6. package/dist/client/assets/native-48B9X9Wg.js +1 -0
  7. package/dist/client/assets/url-FWFqPJPb.js +1 -0
  8. package/dist/client/client.css +1 -1
  9. package/dist/client/client.js +4564 -3013
  10. package/dist/index.js +12885 -8161
  11. package/package.json +23 -6
  12. package/src/__tests__/helpers/app.ts +10 -10
  13. package/src/__tests__/helpers/db.ts +91 -87
  14. package/src/app.tsx +157 -31
  15. package/src/auth.ts +20 -2
  16. package/src/client/archive-nav.js +187 -0
  17. package/src/client/audio-player.ts +478 -0
  18. package/src/client/audio-processor.ts +84 -0
  19. package/src/{lib → client}/avatar-upload.ts +4 -3
  20. package/src/{lib → client}/collection-form-bridge.ts +2 -2
  21. package/src/{ui → client}/components/__tests__/jant-collection-form.test.ts +26 -9
  22. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1140 -0
  23. package/src/client/components/__tests__/jant-compose-editor.test.ts +504 -0
  24. package/src/{ui → client}/components/__tests__/jant-post-form.test.ts +37 -17
  25. package/src/{ui → client}/components/__tests__/jant-settings-avatar.test.ts +2 -2
  26. package/src/{ui → client}/components/__tests__/jant-settings-general.test.ts +3 -3
  27. package/src/client/components/collection-sidebar-types.ts +43 -0
  28. package/src/{ui → client}/components/collection-types.ts +3 -4
  29. package/src/client/components/compose-types.ts +174 -0
  30. package/src/client/components/jant-collection-form.ts +667 -0
  31. package/src/client/components/jant-collection-sidebar.ts +805 -0
  32. package/src/client/components/jant-compose-dialog.ts +2161 -0
  33. package/src/client/components/jant-compose-editor.ts +1813 -0
  34. package/src/client/components/jant-compose-fullscreen.ts +283 -0
  35. package/src/client/components/jant-media-lightbox.ts +259 -0
  36. package/src/{ui → client}/components/jant-nav-manager.ts +97 -298
  37. package/src/{ui → client}/components/jant-post-form.ts +141 -12
  38. package/src/client/components/jant-post-menu.ts +1019 -0
  39. package/src/{ui → client}/components/jant-settings-avatar.ts +3 -3
  40. package/src/{ui → client}/components/jant-settings-general.ts +38 -4
  41. package/src/client/components/jant-text-preview.ts +232 -0
  42. package/src/{ui → client}/components/nav-manager-types.ts +6 -18
  43. package/src/{ui → client}/components/post-form-template.ts +137 -38
  44. package/src/{ui → client}/components/post-form-types.ts +15 -4
  45. package/src/client/compose-bridge.ts +583 -0
  46. package/src/{lib → client}/image-processor.ts +26 -8
  47. package/src/client/lazy-slugify.ts +51 -0
  48. package/src/client/media-metadata.ts +247 -0
  49. package/src/client/multipart-upload.ts +160 -0
  50. package/src/{lib → client}/nav-manager-bridge.ts +1 -1
  51. package/src/{lib → client}/post-form-bridge.ts +53 -2
  52. package/src/{lib → client}/settings-bridge.ts +3 -15
  53. package/src/client/thread-context.ts +140 -0
  54. package/src/client/tiptap/bubble-menu.ts +205 -0
  55. package/src/client/tiptap/create-editor.ts +86 -0
  56. package/src/client/tiptap/exitable-marks.ts +73 -0
  57. package/src/client/tiptap/extensions.ts +65 -0
  58. package/src/client/tiptap/image-node.ts +482 -0
  59. package/src/client/tiptap/link-toolbar.ts +371 -0
  60. package/src/client/tiptap/more-break.ts +50 -0
  61. package/src/client/tiptap/paste-image.ts +129 -0
  62. package/src/client/tiptap/slash-commands.ts +438 -0
  63. package/src/{lib → client}/toast.ts +101 -3
  64. package/src/client/types/sortablejs.d.ts +44 -0
  65. package/src/client/upload-with-metadata.ts +54 -0
  66. package/src/client/video-processor.ts +207 -0
  67. package/src/client.ts +27 -17
  68. package/src/db/__tests__/migrations.test.ts +118 -0
  69. package/src/db/index.ts +52 -0
  70. package/src/db/migrations/0000_baseline.sql +269 -0
  71. package/src/db/migrations/0001_fts_setup.sql +31 -0
  72. package/src/db/migrations/meta/0000_snapshot.json +703 -119
  73. package/src/db/migrations/meta/0001_snapshot.json +1337 -0
  74. package/src/db/migrations/meta/_journal.json +4 -39
  75. package/src/db/schema.ts +409 -140
  76. package/src/i18n/__tests__/detect.test.ts +115 -0
  77. package/src/i18n/context.tsx +2 -2
  78. package/src/i18n/detect.ts +85 -1
  79. package/src/i18n/i18n.ts +1 -1
  80. package/src/i18n/index.ts +2 -1
  81. package/src/i18n/locales/en.po +783 -1087
  82. package/src/i18n/locales/en.ts +1 -1
  83. package/src/i18n/locales/zh-Hans.po +867 -812
  84. package/src/i18n/locales/zh-Hans.ts +1 -1
  85. package/src/i18n/locales/zh-Hant.po +878 -823
  86. package/src/i18n/locales/zh-Hant.ts +1 -1
  87. package/src/i18n/middleware.ts +6 -0
  88. package/src/index.ts +5 -7
  89. package/src/lib/__tests__/blurhash-placeholder.test.ts +75 -0
  90. package/src/lib/__tests__/constants.test.ts +0 -1
  91. package/src/lib/__tests__/markdown-to-tiptap.test.ts +358 -0
  92. package/src/lib/__tests__/nanoid.test.ts +26 -0
  93. package/src/lib/__tests__/resolve-config.test.ts +2 -2
  94. package/src/lib/__tests__/schemas.test.ts +186 -65
  95. package/src/lib/__tests__/slug.test.ts +126 -0
  96. package/src/lib/__tests__/sse.test.ts +6 -6
  97. package/src/lib/__tests__/summary.test.ts +264 -0
  98. package/src/lib/__tests__/theme.test.ts +1 -1
  99. package/src/lib/__tests__/timeline.test.ts +33 -30
  100. package/src/lib/__tests__/tiptap-to-markdown.test.ts +346 -0
  101. package/src/lib/__tests__/url.test.ts +2 -2
  102. package/src/lib/__tests__/view.test.ts +140 -65
  103. package/src/lib/blurhash-placeholder.ts +102 -0
  104. package/src/lib/constants.ts +3 -1
  105. package/src/lib/emoji-catalog.ts +963 -0
  106. package/src/lib/errors.ts +11 -8
  107. package/src/lib/feed.ts +77 -31
  108. package/src/lib/html.ts +2 -1
  109. package/src/lib/icon-catalog.ts +5033 -1
  110. package/src/lib/icons.ts +3 -2
  111. package/src/lib/index.ts +0 -1
  112. package/src/lib/markdown-to-tiptap.ts +286 -0
  113. package/src/lib/media-helpers.ts +22 -12
  114. package/src/lib/nanoid.ts +29 -0
  115. package/src/lib/navigation.ts +1 -1
  116. package/src/lib/render.tsx +24 -5
  117. package/src/lib/resolve-config.ts +13 -2
  118. package/src/lib/schemas.ts +226 -58
  119. package/src/lib/search-snippet.ts +34 -0
  120. package/src/lib/slug.ts +96 -0
  121. package/src/lib/sse.ts +6 -6
  122. package/src/lib/storage.ts +115 -7
  123. package/src/lib/summary.ts +158 -0
  124. package/src/lib/theme.ts +11 -8
  125. package/src/lib/timeline.ts +76 -34
  126. package/src/lib/tiptap-render.ts +191 -0
  127. package/src/lib/tiptap-to-markdown.ts +305 -0
  128. package/src/lib/upload.ts +263 -14
  129. package/src/lib/url.ts +37 -22
  130. package/src/lib/view.ts +236 -55
  131. package/src/middleware/__tests__/auth.test.ts +191 -11
  132. package/src/middleware/__tests__/onboarding.test.ts +12 -10
  133. package/src/middleware/auth.ts +63 -9
  134. package/src/middleware/error-handler.ts +3 -3
  135. package/src/middleware/onboarding.ts +1 -1
  136. package/src/middleware/secure-headers.ts +40 -0
  137. package/src/preset.css +83 -2
  138. package/src/routes/__tests__/compose.test.ts +17 -24
  139. package/src/routes/api/__tests__/collections.test.ts +109 -61
  140. package/src/routes/api/__tests__/nav-items.test.ts +46 -29
  141. package/src/routes/api/__tests__/posts.test.ts +132 -68
  142. package/src/routes/api/__tests__/search.test.ts +15 -2
  143. package/src/routes/api/__tests__/upload-multipart.test.ts +534 -0
  144. package/src/routes/api/collections.ts +57 -31
  145. package/src/routes/api/custom-urls.ts +80 -0
  146. package/src/routes/api/export.ts +31 -0
  147. package/src/routes/api/nav-items.ts +23 -19
  148. package/src/routes/api/posts.ts +81 -62
  149. package/src/routes/api/search.ts +3 -4
  150. package/src/routes/api/upload-multipart.ts +245 -0
  151. package/src/routes/api/upload.ts +92 -24
  152. package/src/routes/auth/__tests__/setup.test.ts +20 -60
  153. package/src/routes/auth/reset.tsx +5 -4
  154. package/src/routes/auth/setup.tsx +39 -31
  155. package/src/routes/auth/signin.tsx +13 -14
  156. package/src/routes/compose.tsx +27 -63
  157. package/src/routes/dash/__tests__/settings-avatar.test.ts +44 -9
  158. package/src/routes/dash/custom-urls.tsx +414 -0
  159. package/src/routes/dash/settings.tsx +475 -99
  160. package/src/routes/feed/__tests__/rss.test.ts +22 -23
  161. package/src/routes/feed/rss.ts +6 -2
  162. package/src/routes/feed/sitemap.ts +2 -12
  163. package/src/routes/pages/__tests__/collections.test.ts +5 -6
  164. package/src/routes/pages/__tests__/featured.test.ts +36 -18
  165. package/src/routes/pages/archive.tsx +177 -37
  166. package/src/routes/pages/collection.tsx +43 -14
  167. package/src/routes/pages/collections.tsx +11 -2
  168. package/src/routes/pages/featured.tsx +27 -3
  169. package/src/routes/pages/home.tsx +15 -14
  170. package/src/routes/pages/latest.tsx +1 -11
  171. package/src/routes/pages/new.tsx +39 -0
  172. package/src/routes/pages/page.tsx +95 -49
  173. package/src/routes/pages/search.tsx +1 -1
  174. package/src/services/__tests__/api-token.test.ts +135 -0
  175. package/src/services/__tests__/collection.test.ts +275 -227
  176. package/src/services/__tests__/custom-url.test.ts +213 -0
  177. package/src/services/__tests__/media.test.ts +162 -22
  178. package/src/services/__tests__/navigation.test.ts +109 -68
  179. package/src/services/__tests__/post-timeline.test.ts +205 -32
  180. package/src/services/__tests__/post.test.ts +800 -230
  181. package/src/services/__tests__/search.test.ts +67 -10
  182. package/src/services/__tests__/settings.test.ts +3 -3
  183. package/src/services/api-token.ts +166 -0
  184. package/src/services/auth.ts +17 -2
  185. package/src/services/collection.ts +397 -131
  186. package/src/services/custom-url.ts +188 -0
  187. package/src/services/export.ts +802 -0
  188. package/src/services/index.ts +26 -19
  189. package/src/services/media.ts +100 -22
  190. package/src/services/navigation.ts +158 -47
  191. package/src/services/path.ts +339 -0
  192. package/src/services/post.ts +764 -172
  193. package/src/services/search.ts +161 -74
  194. package/src/services/settings.ts +6 -2
  195. package/src/styles/components.css +293 -62
  196. package/src/styles/tokens.css +93 -5
  197. package/src/styles/ui.css +4349 -766
  198. package/src/types/bindings.ts +8 -0
  199. package/src/types/config.ts +34 -4
  200. package/src/types/constants.ts +17 -2
  201. package/src/types/entities.ts +83 -37
  202. package/src/types/operations.ts +20 -27
  203. package/src/types/props.ts +52 -17
  204. package/src/types/views.ts +48 -24
  205. package/src/ui/color-themes.ts +133 -23
  206. package/src/ui/compose/ComposeDialog.tsx +255 -16
  207. package/src/ui/compose/ComposePrompt.tsx +1 -1
  208. package/src/ui/dash/CrudPageHeader.tsx +1 -1
  209. package/src/ui/dash/ListItemRow.tsx +1 -1
  210. package/src/ui/dash/StatusBadge.tsx +12 -2
  211. package/src/ui/dash/appearance/AdvancedContent.tsx +71 -59
  212. package/src/ui/dash/appearance/ColorThemeContent.tsx +48 -33
  213. package/src/ui/dash/appearance/FontThemeContent.tsx +65 -73
  214. package/src/ui/dash/appearance/NavigationContent.tsx +106 -135
  215. package/src/ui/dash/index.ts +0 -3
  216. package/src/ui/dash/settings/AccountContent.tsx +87 -146
  217. package/src/ui/dash/settings/AccountMenuContent.tsx +147 -0
  218. package/src/ui/dash/settings/ApiTokensContent.tsx +232 -0
  219. package/src/ui/dash/settings/AvatarContent.tsx +78 -0
  220. package/src/ui/dash/settings/GeneralContent.tsx +3 -62
  221. package/src/ui/dash/settings/SessionsContent.tsx +159 -0
  222. package/src/ui/dash/settings/SettingsRootContent.tsx +266 -0
  223. package/src/ui/feed/LinkCard.tsx +89 -40
  224. package/src/ui/feed/NoteCard.tsx +39 -25
  225. package/src/ui/feed/PostStatusBadges.tsx +67 -0
  226. package/src/ui/feed/QuoteCard.tsx +38 -23
  227. package/src/ui/feed/ThreadPreview.tsx +90 -26
  228. package/src/ui/feed/TimelineFeed.tsx +3 -2
  229. package/src/ui/feed/TimelineItem.tsx +15 -6
  230. package/src/ui/feed/__tests__/thread-preview.test.ts +107 -0
  231. package/src/ui/feed/thread-preview-state.ts +61 -0
  232. package/src/ui/font-themes.ts +2 -2
  233. package/src/ui/layouts/BaseLayout.tsx +2 -2
  234. package/src/ui/layouts/SiteLayout.tsx +116 -103
  235. package/src/ui/pages/ArchivePage.tsx +923 -95
  236. package/src/ui/pages/CollectionPage.tsx +6 -35
  237. package/src/ui/pages/CollectionsPage.tsx +2 -1
  238. package/src/ui/pages/ComposePage.tsx +54 -0
  239. package/src/ui/pages/FeaturedPage.tsx +2 -1
  240. package/src/ui/pages/HomePage.tsx +1 -1
  241. package/src/ui/pages/PostPage.tsx +30 -45
  242. package/src/ui/pages/SearchPage.tsx +182 -38
  243. package/src/ui/shared/AdminBreadcrumb.tsx +29 -0
  244. package/src/ui/shared/CollectionsSidebar.tsx +239 -4
  245. package/src/ui/shared/MediaGallery.tsx +475 -41
  246. package/src/ui/shared/PostFooter.tsx +204 -0
  247. package/src/ui/shared/StarRating.tsx +27 -0
  248. package/src/ui/shared/__tests__/format-chars.test.ts +35 -0
  249. package/src/ui/shared/index.ts +0 -1
  250. package/src/db/migrations/0000_square_wallflower.sql +0 -118
  251. package/src/db/migrations/0001_add_search_fts.sql +0 -34
  252. package/src/db/migrations/0002_add_media_attachments.sql +0 -3
  253. package/src/db/migrations/0003_add_navigation_links.sql +0 -8
  254. package/src/db/migrations/0004_add_storage_provider.sql +0 -3
  255. package/src/db/migrations/0005_v2_schema_migration.sql +0 -268
  256. package/src/db/migrations/0006_rename_slug_to_path.sql +0 -5
  257. package/src/db/migrations/0007_post_collections_m2m.sql +0 -94
  258. package/src/db/migrations/0008_add_collection_dividers.sql +0 -8
  259. package/src/db/migrations/0009_drop_collection_show_divider.sql +0 -2
  260. package/src/db/migrations/0010_add_performance_indexes.sql +0 -16
  261. package/src/db/migrations/0011_add_path_registry.sql +0 -23
  262. package/src/db/migrations/meta/0003_snapshot.json +0 -821
  263. package/src/lib/__tests__/sqid.test.ts +0 -65
  264. package/src/lib/collections-reorder.ts +0 -28
  265. package/src/lib/compose-bridge.ts +0 -280
  266. package/src/lib/media-upload.ts +0 -148
  267. package/src/lib/sqid.ts +0 -79
  268. package/src/routes/api/__tests__/pages.test.ts +0 -218
  269. package/src/routes/api/pages.ts +0 -73
  270. package/src/routes/dash/__tests__/pages.test.ts +0 -226
  271. package/src/routes/dash/appearance.tsx +0 -240
  272. package/src/routes/dash/collections.tsx +0 -211
  273. package/src/routes/dash/index.tsx +0 -103
  274. package/src/routes/dash/media.tsx +0 -132
  275. package/src/routes/dash/pages.tsx +0 -239
  276. package/src/routes/dash/posts.tsx +0 -334
  277. package/src/routes/dash/redirects.tsx +0 -257
  278. package/src/routes/pages/post.tsx +0 -59
  279. package/src/services/__tests__/page.test.ts +0 -298
  280. package/src/services/__tests__/path-registry.test.ts +0 -165
  281. package/src/services/__tests__/redirect.test.ts +0 -159
  282. package/src/services/page.ts +0 -203
  283. package/src/services/path-registry.ts +0 -160
  284. package/src/services/redirect.ts +0 -97
  285. package/src/types/sortablejs.d.ts +0 -29
  286. package/src/ui/components/__tests__/jant-compose-dialog.test.ts +0 -512
  287. package/src/ui/components/__tests__/jant-compose-editor.test.ts +0 -272
  288. package/src/ui/components/compose-types.ts +0 -75
  289. package/src/ui/components/jant-collection-form.ts +0 -512
  290. package/src/ui/components/jant-compose-dialog.ts +0 -495
  291. package/src/ui/components/jant-compose-editor.ts +0 -814
  292. package/src/ui/dash/PageForm.tsx +0 -185
  293. package/src/ui/dash/PostList.tsx +0 -95
  294. package/src/ui/dash/appearance/AppearanceNav.tsx +0 -60
  295. package/src/ui/dash/collections/CollectionForm.tsx +0 -166
  296. package/src/ui/dash/collections/CollectionsListContent.tsx +0 -146
  297. package/src/ui/dash/collections/IconPickerGrid.tsx +0 -50
  298. package/src/ui/dash/collections/ViewCollectionContent.tsx +0 -103
  299. package/src/ui/dash/media/MediaListContent.tsx +0 -201
  300. package/src/ui/dash/media/ViewMediaContent.tsx +0 -208
  301. package/src/ui/dash/pages/PagesContent.tsx +0 -74
  302. package/src/ui/dash/posts/PostForm.tsx +0 -248
  303. package/src/ui/dash/settings/SettingsNav.tsx +0 -52
  304. package/src/ui/layouts/DashLayout.tsx +0 -165
  305. package/src/ui/pages/SinglePage.tsx +0 -23
  306. package/src/ui/shared/ThreadView.tsx +0 -136
  307. /package/src/{ui → client}/components/settings-types.ts +0 -0
@@ -13,45 +13,34 @@ msgstr ""
13
13
  "Language-Team: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
- #. @context: Archive post reply indicator - plural
17
- #: src/theme/pages/ArchivePage.tsx
18
- #~ msgid "{count} replies"
19
- #~ msgstr "{count} replies"
16
+ #. @context: Link showing count of hidden thread posts between root and latest
17
+ #. placeholder {0}: hiddenCount === 1 ? "post" : "posts"
18
+ #: src/ui/feed/ThreadPreview.tsx
19
+ msgid "{hiddenCount} more {0}"
20
+ msgstr "{hiddenCount} more {0}"
20
21
 
21
22
  #. @context: Custom CSS textarea placeholder
22
23
  #: src/ui/dash/appearance/AdvancedContent.tsx
23
24
  msgid "/* Your custom CSS here */"
24
25
  msgstr "/* Your custom CSS here */"
25
26
 
26
- #. @context: Navigation link
27
- #: src/ui/dash/collections/ViewCollectionContent.tsx
28
- msgid " Back to Collections"
29
- msgstr " Back to Collections"
30
-
31
- #. @context: Navigation link
32
- #. @context: Navigation link
33
- #: src/routes/pages/collection.tsx
34
- #: src/routes/pages/post.tsx
35
- #~ msgid "← Back to home"
36
- #~ msgstr "← Back to home"
27
+ #. @context: Compose collection trigger label when multiple collections selected. %name% is the first collection name, %count% is how many more
28
+ #: src/ui/compose/ComposeDialog.tsx
29
+ msgid "%name% + %count% more"
30
+ msgstr "%name% + %count% more"
37
31
 
38
32
  #. @context: Add alt text label under attachment thumbnail
39
33
  #: src/ui/compose/ComposeDialog.tsx
40
34
  msgid "+ ALT"
41
35
  msgstr "+ ALT"
42
36
 
43
- #. @context: Archive post reply indicator - single
44
- #: src/theme/pages/ArchivePage.tsx
45
- #~ msgid "1 reply"
46
- #~ msgstr "1 reply"
47
-
48
37
  #. @context: Redirect type option
49
- #: src/routes/dash/redirects.tsx
38
+ #: src/routes/dash/custom-urls.tsx
50
39
  msgid "301 (Permanent)"
51
40
  msgstr "301 (Permanent)"
52
41
 
53
42
  #. @context: Redirect type option
54
- #: src/routes/dash/redirects.tsx
43
+ #: src/routes/dash/custom-urls.tsx
55
44
  msgid "302 (Temporary)"
56
45
  msgstr "302 (Temporary)"
57
46
 
@@ -65,11 +54,23 @@ msgstr "A short intro for search engines and feed readers. Plain text only."
65
54
  msgid "About this blog"
66
55
  msgstr "About this blog"
67
56
 
68
- #. @context: Settings sub-navigation tab
69
- #: src/ui/dash/settings/SettingsNav.tsx
57
+ #. @context: Settings group label for account settings
58
+ #. @context: Settings item — account settings
59
+ #: src/ui/dash/settings/SettingsRootContent.tsx
60
+ #: src/ui/dash/settings/SettingsRootContent.tsx
70
61
  msgid "Account"
71
62
  msgstr "Account"
72
63
 
64
+ #. @context: Settings section heading for active sessions
65
+ #: src/ui/dash/settings/SessionsContent.tsx
66
+ msgid "Active Sessions"
67
+ msgstr "Active Sessions"
68
+
69
+ #. @context: Heading for list of active API tokens
70
+ #: src/ui/dash/settings/ApiTokensContent.tsx
71
+ msgid "Active Tokens"
72
+ msgstr "Active Tokens"
73
+
73
74
  #. @context: Add more attachments button
74
75
  #: src/ui/compose/ComposeDialog.tsx
75
76
  msgid "Add"
@@ -85,10 +86,10 @@ msgstr "Add a custom link to any URL"
85
86
  msgid "Add alt text"
86
87
  msgstr "Add alt text"
87
88
 
88
- #. @context: Card description for page picker
89
- #: src/ui/dash/appearance/NavigationContent.tsx
90
- #~ msgid "Add an existing page to your navigation"
91
- #~ msgstr "Add an existing page to your navigation"
89
+ #. @context: Action to create a new collection from compose
90
+ #: src/ui/compose/ComposeDialog.tsx
91
+ msgid "Add Collection"
92
+ msgstr "Add Collection"
92
93
 
93
94
  #. @context: Custom CSS settings description
94
95
  #: src/ui/dash/appearance/AdvancedContent.tsx
@@ -100,163 +101,134 @@ msgstr "Add custom CSS to override any styles. Use data attributes like [data-pa
100
101
  msgid "Add custom link to navigation"
101
102
  msgstr "Add custom link to navigation"
102
103
 
104
+ #. @context: Menu action to add a divider
105
+ #: src/ui/shared/CollectionsSidebar.tsx
106
+ msgid "Add Divider"
107
+ msgstr "Add Divider"
108
+
103
109
  #. @context: Button and heading for adding custom link
104
110
  #: src/ui/dash/appearance/NavigationContent.tsx
105
111
  msgid "Add Link"
106
112
  msgstr "Add Link"
107
113
 
108
- #. @context: Button to open media picker
109
- #: src/ui/dash/posts/PostForm.tsx
110
- msgid "Add Media"
111
- msgstr "Add Media"
112
-
113
- #. @context: Card title for adding page to nav
114
- #: src/ui/dash/appearance/NavigationContent.tsx
115
- #~ msgid "Add Page"
116
- #~ msgstr "Add Page"
117
-
118
- #. @context: Section heading for adding page to nav
119
- #: src/ui/dash/appearance/NavigationContent.tsx
120
- msgid "Add page to navigation"
121
- msgstr "Add page to navigation"
122
-
123
- #. @context: Button to add page to navigation
124
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
125
- #~ msgid "Add to nav"
126
- #~ msgstr "Add to nav"
127
-
128
- #. @context: Section heading for adding nav items
129
- #: src/ui/dash/appearance/NavigationContent.tsx
130
- #~ msgid "Add to navigation"
131
- #~ msgstr "Add to navigation"
132
-
133
- #. @context: Appearance sub-navigation tab
134
- #: src/ui/dash/appearance/AppearanceNav.tsx
114
+ #. @context: Settings group label for advanced settings
115
+ #: src/ui/dash/settings/SettingsRootContent.tsx
135
116
  msgid "Advanced"
136
117
  msgstr "Advanced"
137
118
 
138
- #. @context: Archive filter - all formats
119
+ #. @context: Description after API reference link
120
+ #: src/ui/dash/settings/ApiTokensContent.tsx
121
+ msgid "all available endpoints and request formats."
122
+ msgstr "all available endpoints and request formats."
123
+
124
+ #. @context: Archive filter - collection dropdown default
139
125
  #: src/ui/pages/ArchivePage.tsx
140
- msgid "All"
141
- msgstr "All"
126
+ msgid "All collections"
127
+ msgstr "All collections"
142
128
 
143
- #. @context: Message when no pages available to add
144
- #: src/ui/dash/appearance/NavigationContent.tsx
145
- msgid "All pages are already in navigation."
146
- msgstr "All pages are already in navigation."
129
+ #. @context: Archive filter - all formats select option
130
+ #: src/ui/pages/ArchivePage.tsx
131
+ msgid "All formats"
132
+ msgstr "All formats"
147
133
 
148
- #. @context: Message when no pages available to add
149
- #: src/ui/dash/appearance/NavigationContent.tsx
150
- #~ msgid "All pages are in navigation"
151
- #~ msgstr "All pages are in navigation"
134
+ #. @context: Archive filter - all visibility select option
135
+ #: src/ui/pages/ArchivePage.tsx
136
+ msgid "All visibility"
137
+ msgstr "All visibility"
152
138
 
153
- #. @context: Empty state when all pages are in nav
154
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
155
- #~ msgid "All pages are in your navigation."
156
- #~ msgstr "All pages are in your navigation."
139
+ #. @context: Archive filter - year dropdown default
140
+ #: src/ui/pages/ArchivePage.tsx
141
+ msgid "All years"
142
+ msgstr "All years"
157
143
 
158
- #. @context: Hint text in alt text panel
159
- #: src/ui/compose/ComposeDialog.tsx
160
- msgid "Alt text improves accessibility"
161
- msgstr "Alt text improves accessibility"
144
+ #. @context: Link to API documentation
145
+ #: src/ui/dash/settings/ApiTokensContent.tsx
146
+ msgid "API reference"
147
+ msgstr "API reference"
162
148
 
163
- #. @context: Dashboard navigation - appearance settings
164
- #: src/ui/layouts/DashLayout.tsx
165
- msgid "Appearance"
166
- msgstr "Appearance"
149
+ #. @context: Settings item API token settings
150
+ #. @context: Settings section heading
151
+ #: src/ui/dash/settings/ApiTokensContent.tsx
152
+ #: src/ui/dash/settings/SettingsRootContent.tsx
153
+ msgid "API Tokens"
154
+ msgstr "API Tokens"
155
+
156
+ #. @context: Appearance settings description
157
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
158
+ msgid "Applies to your entire site, including admin pages. All themes support dark mode."
159
+ msgstr "Applies to your entire site, including admin pages. All themes support dark mode."
167
160
 
168
161
  #. @context: Archive page title
169
162
  #: src/ui/pages/ArchivePage.tsx
170
163
  msgid "Archive"
171
164
  msgstr "Archive"
172
165
 
173
- #. @context: Confirmation dialog when deleting a post from the list
174
- #: src/ui/dash/PostList.tsx
175
- msgid "Are you sure you want to delete this post? This cannot be undone."
176
- msgstr "Are you sure you want to delete this post? This cannot be undone."
177
-
178
- #. @context: Post type badge - article
179
- #. @context: Post type label - article
180
- #. @context: Post type option
181
- #: src/theme/components/PostForm.tsx
182
- #: src/theme/components/TypeBadge.tsx
183
- #: src/themes/threads/pages/ArchivePage.tsx
184
- #~ msgid "Article"
185
- #~ msgstr "Article"
186
-
187
- #. @context: Post type label plural - articles
188
- #: src/themes/threads/pages/ArchivePage.tsx
189
- #~ msgid "Articles"
190
- #~ msgstr "Articles"
191
-
192
- #. @context: Hint for image post type media requirement
193
- #: src/theme/components/PostForm.tsx
194
- #~ msgid "At least 1 image required for image posts."
195
- #~ msgstr "At least 1 image required for image posts."
196
-
197
- #. @context: Attached text badge label
198
- #: src/ui/compose/ComposeDialog.tsx
199
- #~ msgid "Attached text"
200
- #~ msgstr "Attached text"
166
+ #. @context: Archive media filter - audio
167
+ #: src/ui/pages/ArchivePage.tsx
168
+ msgid "Audio"
169
+ msgstr "Audio"
201
170
 
202
- #. @context: Attached text panel title
203
- #: src/ui/compose/ComposeDialog.tsx
204
- msgid "Attached Text"
205
- msgstr "Attached Text"
171
+ #. @context: Error toast when authentication secret is missing from server config
172
+ #: src/routes/auth/setup.tsx
173
+ msgid "Auth secret is missing. Check your environment variables."
174
+ msgstr "Auth secret is missing. Check your environment variables."
206
175
 
207
176
  #. @context: Error toast when authentication system is unavailable
208
177
  #: src/routes/auth/signin.tsx
209
- msgid "Auth not configured"
210
- msgstr "Auth not configured"
211
-
212
- #. @context: Error toast when authentication secret is missing from server config
213
- #: src/routes/auth/setup.tsx
214
- msgid "AUTH_SECRET not configured"
215
- msgstr "AUTH_SECRET not configured"
178
+ msgid "Authentication isn't set up. Check your server config."
179
+ msgstr "Authentication isn't set up. Check your server config."
216
180
 
217
181
  #. @context: Compose quote author placeholder
218
182
  #: src/ui/compose/ComposeDialog.tsx
219
183
  msgid "Author (optional)"
220
184
  msgstr "Author (optional)"
221
185
 
186
+ #. @context: Description after theming guide link on Custom CSS page
187
+ #: src/ui/dash/appearance/AdvancedContent.tsx
188
+ msgid "available CSS variables, data attributes, and examples."
189
+ msgstr "available CSS variables, data attributes, and examples."
190
+
191
+ #. @context: Settings item — avatar settings
192
+ #: src/ui/dash/settings/SettingsRootContent.tsx
193
+ msgid "Avatar"
194
+ msgstr "Avatar"
195
+
222
196
  #. @context: Toast after saving avatar display preference
223
197
  #. @context: Toast after saving avatar display preference
224
198
  #: src/routes/dash/settings.tsx
225
199
  #: src/routes/dash/settings.tsx
226
- msgid "Avatar display setting saved successfully."
227
- msgstr "Avatar display setting saved successfully."
200
+ msgid "Avatar display updated."
201
+ msgstr "Avatar display updated."
228
202
 
229
- #. @context: Button to go back to media list
230
- #: src/ui/dash/media/ViewMediaContent.tsx
203
+ #. @context: Link back from the new post page
204
+ #: src/ui/pages/ComposePage.tsx
231
205
  msgid "Back"
232
206
  msgstr "Back"
233
207
 
234
- #. @context: Navigation link back to home page
235
- #. @context: Navigation link back to home page
236
- #. @context: Navigation link back to home page
237
- #: src/routes/pages/archive.tsx
238
- #: src/routes/pages/page.tsx
239
- #: src/routes/pages/search.tsx
240
- #~ msgid "Back to home"
241
- #~ msgstr "Back to home"
208
+ #. @context: Settings item description for API tokens
209
+ #: src/ui/dash/settings/SettingsRootContent.tsx
210
+ msgid "Bearer tokens for scripts and automation"
211
+ msgstr "Bearer tokens for scripts and automation"
242
212
 
243
213
  #. @context: Settings section heading for avatar
244
- #: src/ui/dash/settings/GeneralContent.tsx
214
+ #: src/ui/dash/settings/AvatarContent.tsx
245
215
  msgid "Blog Avatar"
246
216
  msgstr "Blog Avatar"
247
217
 
248
- #. @context: Button to cancel and go back
249
218
  #. @context: Button to cancel form
250
219
  #. @context: Button to cancel form
251
220
  #. @context: Button to cancel form
221
+ #. @context: Button to cancel settings changes
252
222
  #. @context: Button to cancel unsaved changes and revert to original values
253
223
  #. @context: Close compose dialog
254
- #: src/routes/dash/redirects.tsx
224
+ #. @context: Confirm close action sheet - cancel and return to editor
225
+ #: src/routes/dash/custom-urls.tsx
226
+ #: src/ui/compose/ComposeDialog.tsx
255
227
  #: src/ui/compose/ComposeDialog.tsx
256
- #: src/ui/dash/collections/CollectionForm.tsx
257
- #: src/ui/dash/PageForm.tsx
258
- #: src/ui/dash/posts/PostForm.tsx
228
+ #: src/ui/compose/ComposeDialog.tsx
229
+ #: src/ui/dash/settings/AvatarContent.tsx
259
230
  #: src/ui/dash/settings/GeneralContent.tsx
231
+ #: src/ui/shared/CollectionsSidebar.tsx
260
232
  msgid "Cancel"
261
233
  msgstr "Cancel"
262
234
 
@@ -267,69 +239,46 @@ msgstr "Cancel"
267
239
  msgid "Change Password"
268
240
  msgstr "Change Password"
269
241
 
270
- #. @context: Font theme settings description
271
- #: src/ui/dash/settings/AppearanceContent.tsx
272
- #~ msgid "Choose a font for your site. All options use system fonts for fast loading."
273
- #~ msgstr "Choose a font for your site. All options use system fonts for fast loading."
242
+ #. @context: Settings item description for password change
243
+ #: src/ui/dash/settings/AccountMenuContent.tsx
244
+ msgid "Change your sign-in password"
245
+ msgstr "Change your sign-in password"
274
246
 
275
247
  #. @context: Font theme settings description
276
248
  #: src/ui/dash/appearance/FontThemeContent.tsx
277
249
  msgid "Choose a font pairing for your site. All options use system fonts for fast loading."
278
250
  msgstr "Choose a font pairing for your site. All options use system fonts for fast loading."
279
251
 
280
- #. @context: Placeholder for page select combobox trigger
281
- #: src/ui/dash/appearance/NavigationContent.tsx
282
- msgid "Choose a page…"
283
- msgstr "Choose a page…"
284
-
285
- #. @context: Button to open icon picker
286
- #. @context: Icon picker dialog title
287
- #: src/ui/dash/collections/CollectionForm.tsx
288
- #: src/ui/dash/collections/CollectionForm.tsx
289
- msgid "Choose Icon"
290
- msgstr "Choose Icon"
291
-
292
- #. @context: Hint to click image for lightbox
293
- #: src/ui/dash/media/ViewMediaContent.tsx
294
- msgid "Click image to view full size"
295
- msgstr "Click image to view full size"
296
-
297
- #. @context: Button to close icon picker
298
- #: src/ui/dash/collections/CollectionForm.tsx
299
- msgid "Close"
300
- msgstr "Close"
252
+ #. @context: Password reset page description
253
+ #: src/routes/auth/reset.tsx
254
+ msgid "Choose a new password."
255
+ msgstr "Choose a new password."
301
256
 
302
257
  #. @context: Compose collection selector trigger label
258
+ #. @context: Custom URL type option
259
+ #: src/routes/dash/custom-urls.tsx
303
260
  #: src/ui/compose/ComposeDialog.tsx
304
261
  msgid "Collection"
305
262
  msgstr "Collection"
306
263
 
307
- #. @context: Post form field - assign to collection
308
- #: src/ui/dash/PostForm.tsx
309
- #~ msgid "Collection (optional)"
310
- #~ msgstr "Collection (optional)"
311
-
312
264
  #. @context: Collections page heading
313
- #. @context: Dashboard heading
314
265
  #. @context: Sidebar heading for collections nav
315
- #: src/ui/dash/collections/CollectionsListContent.tsx
266
+ #. @context: Sidebar heading for collections nav
316
267
  #: src/ui/pages/CollectionsPage.tsx
317
268
  #: src/ui/shared/CollectionsSidebar.tsx
269
+ #: src/ui/shared/CollectionsSidebar.tsx
318
270
  msgid "Collections"
319
271
  msgstr "Collections"
320
272
 
321
- #. @context: Post form field - assign to collections
322
- #: src/ui/dash/posts/PostForm.tsx
323
- msgid "Collections (optional)"
324
- msgstr "Collections (optional)"
325
-
326
273
  #. @context: Appearance settings heading
274
+ #. @context: Settings item description for color theme
327
275
  #: src/ui/dash/appearance/ColorThemeContent.tsx
276
+ #: src/ui/dash/settings/SettingsRootContent.tsx
328
277
  msgid "Color theme"
329
278
  msgstr "Color theme"
330
279
 
331
- #. @context: Appearance sub-navigation tab
332
- #: src/ui/dash/appearance/AppearanceNav.tsx
280
+ #. @context: Settings item — color theme settings
281
+ #: src/ui/dash/settings/SettingsRootContent.tsx
333
282
  msgid "Color Theme"
334
283
  msgstr "Color Theme"
335
284
 
@@ -348,54 +297,77 @@ msgstr "Confirm New Password"
348
297
  msgid "Confirm Password"
349
298
  msgstr "Confirm Password"
350
299
 
351
- #. @context: Page form field label - content
352
- #. @context: Post form field
353
- #: src/ui/dash/PageForm.tsx
354
- #: src/ui/dash/posts/PostForm.tsx
355
- msgid "Content"
356
- msgstr "Content"
357
-
358
- #. @context: Button to copy Markdown to clipboard
359
- #. @context: Button to copy URL to clipboard
360
- #: src/ui/dash/media/ViewMediaContent.tsx
361
- #: src/ui/dash/media/ViewMediaContent.tsx
362
- msgid "Copy"
363
- msgstr "Copy"
364
-
365
- #. @context: Button to save new collection
366
- #: src/ui/dash/collections/CollectionForm.tsx
367
- msgid "Create Collection"
368
- msgstr "Create Collection"
369
-
370
- #. @context: Button to save new navigation link
371
- #: src/ui/dash/pages/LinkFormContent.tsx
372
- #~ msgid "Create Link"
373
- #~ msgstr "Create Link"
374
-
375
- #. @context: Button to create new page
376
- #: src/ui/dash/PageForm.tsx
377
- msgid "Create Page"
378
- msgstr "Create Page"
379
-
380
- #. @context: Button to save new redirect
381
- #: src/routes/dash/redirects.tsx
382
- msgid "Create Redirect"
383
- msgstr "Create Redirect"
300
+ #. @context: Feedback after copying API token
301
+ #: src/ui/dash/settings/ApiTokensContent.tsx
302
+ msgid "Copied"
303
+ msgstr "Copied"
304
+
305
+ #. @context: Button to copy API token to clipboard
306
+ #. @context: Button to copy API token to clipboard
307
+ #: src/ui/dash/settings/ApiTokensContent.tsx
308
+ #: src/ui/dash/settings/ApiTokensContent.tsx
309
+ msgid "Copy Token"
310
+ msgstr "Copy Token"
311
+
312
+ #. @context: Warning to copy newly created API token
313
+ #: src/ui/dash/settings/ApiTokensContent.tsx
314
+ msgid "Copy your token now it won't be shown again."
315
+ msgstr "Copy your token now — it won't be shown again."
316
+
317
+ #. @context: Error toast when account creation fails
318
+ #. @context: Error toast when account creation fails
319
+ #: src/routes/auth/setup.tsx
320
+ #: src/routes/auth/setup.tsx
321
+ msgid "Couldn't create your account. Check the details and try again."
322
+ msgstr "Couldn't create your account. Check the details and try again."
323
+
324
+ #. @context: Error toast when nav delete fails
325
+ #: src/ui/dash/appearance/NavigationContent.tsx
326
+ msgid "Couldn't delete. Try again in a moment."
327
+ msgstr "Couldn't delete. Try again in a moment."
328
+
329
+ #. @context: Toast when publish fails and post is auto-saved as draft
330
+ #: src/ui/compose/ComposeDialog.tsx
331
+ msgid "Couldn't publish. Saved as draft."
332
+ msgstr "Couldn't publish. Saved as draft."
333
+
334
+ #. @context: Error toast when nav save fails
335
+ #. @context: Toast when save fails
336
+ #: src/ui/dash/appearance/NavigationContent.tsx
337
+ #: src/ui/shared/CollectionsSidebar.tsx
338
+ msgid "Couldn't save. Try again in a moment."
339
+ msgstr "Couldn't save. Try again in a moment."
340
+
341
+ #. @context: Compose collection combobox empty state when no collections exist
342
+ #: src/ui/compose/ComposeDialog.tsx
343
+ msgid "Create a collection to get started."
344
+ msgstr "Create a collection to get started."
345
+
346
+ #. @context: Label for curl example
347
+ #: src/ui/dash/settings/ApiTokensContent.tsx
348
+ msgid "Create a post with curl:"
349
+ msgstr "Create a post with curl:"
350
+
351
+ #. @context: Button to save new custom URL
352
+ #: src/routes/dash/custom-urls.tsx
353
+ msgid "Create Custom URL"
354
+ msgstr "Create Custom URL"
384
355
 
385
356
  #. @context: Setup page description
386
357
  #: src/routes/auth/setup.tsx
387
358
  msgid "Create your admin account."
388
359
  msgstr "Create your admin account."
389
360
 
390
- #. @context: Button in empty state to create first page
391
- #: src/routes/dash/pages.tsx
392
- #~ msgid "Create your first page"
393
- #~ msgstr "Create your first page"
361
+ #. @context: Token creation date
362
+ #. placeholder {0}: formatDate(token.createdAt)
363
+ #: src/ui/dash/settings/ApiTokensContent.tsx
364
+ msgid "Created {0}"
365
+ msgstr "Created {0}"
394
366
 
395
- #. @context: Button in empty state to create first post
396
- #: src/ui/dash/PostList.tsx
397
- msgid "Create your first post"
398
- msgstr "Create your first post"
367
+ #. @context: Badge indicating the current active session
368
+ #: src/ui/dash/settings/SessionsContent.tsx
369
+ msgid "Current"
370
+ msgstr "Current"
399
371
 
400
372
  #. @context: Password form field
401
373
  #: src/ui/dash/settings/AccountContent.tsx
@@ -404,82 +376,75 @@ msgstr "Current Password"
404
376
 
405
377
  #. @context: Error toast when current password verification fails
406
378
  #: src/routes/dash/settings.tsx
407
- msgid "Current password is incorrect."
408
- msgstr "Current password is incorrect."
379
+ msgid "Current password doesn't match. Try again."
380
+ msgstr "Current password doesn't match. Try again."
409
381
 
410
382
  #. @context: Appearance settings heading for custom CSS
383
+ #. @context: Link to Custom CSS settings from color theme page
384
+ #. @context: Settings item — custom CSS settings
411
385
  #: src/ui/dash/appearance/AdvancedContent.tsx
386
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
387
+ #: src/ui/dash/settings/SettingsRootContent.tsx
412
388
  msgid "Custom CSS"
413
389
  msgstr "Custom CSS"
414
390
 
415
391
  #. @context: Toast after saving custom CSS
416
- #: src/routes/dash/appearance.tsx
417
- msgid "Custom CSS saved successfully."
418
- msgstr "Custom CSS saved successfully."
419
-
420
- #. @context: Post form field
421
- #: src/theme/components/PostForm.tsx
422
- #~ msgid "Custom Path (optional)"
423
- #~ msgstr "Custom Path (optional)"
392
+ #: src/routes/dash/settings.tsx
393
+ msgid "Custom CSS updated."
394
+ msgstr "Custom CSS updated."
424
395
 
425
- #. @context: Post form field
426
- #: src/theme/components/PostForm.tsx
427
- #~ msgid "Custom Slug (optional)"
428
- #~ msgstr "Custom Slug (optional)"
396
+ #. @context: Settings item description for custom CSS
397
+ #: src/ui/dash/settings/SettingsRootContent.tsx
398
+ msgid "Custom styling"
399
+ msgstr "Custom styling"
429
400
 
430
- #. @context: Slug help text
431
- #: src/theme/components/PostForm.tsx
432
- #~ msgid "Custom URL path. Leave empty to use default /p/ID format."
433
- #~ msgstr "Custom URL path. Leave empty to use default /p/ID format."
401
+ #. @context: Settings item — custom URL settings
402
+ #. @context: Settings section heading
403
+ #: src/routes/dash/custom-urls.tsx
404
+ #: src/ui/dash/settings/SettingsRootContent.tsx
405
+ msgid "Custom URLs"
406
+ msgstr "Custom URLs"
434
407
 
435
408
  #. @context: Section heading for dangerous/destructive actions
436
409
  #: src/ui/dash/DangerZone.tsx
437
410
  msgid "Danger Zone"
438
411
  msgstr "Danger Zone"
439
412
 
440
- #. @context: Dashboard main heading
441
- #: src/routes/dash/index.tsx
442
- msgid "Dashboard"
443
- msgstr "Dashboard"
444
-
445
- #. @context: Settings form field
446
- #: src/ui/dash/settings/GeneralContent.tsx
447
- #~ msgid "Default Homepage View"
448
- #~ msgstr "Default Homepage View"
413
+ #. @context: Settings group label for data export/import
414
+ #: src/ui/dash/settings/AccountMenuContent.tsx
415
+ msgid "Data"
416
+ msgstr "Data"
449
417
 
418
+ #. @context: Button to delete custom URL
450
419
  #. @context: Button to delete item
451
- #. @context: Button to delete redirect
420
+ #. @context: Delete collection action
452
421
  #. @context: Delete nav item
453
- #: src/routes/dash/redirects.tsx
422
+ #: src/routes/dash/custom-urls.tsx
454
423
  #: src/ui/dash/ActionButtons.tsx
455
424
  #: src/ui/dash/appearance/NavigationContent.tsx
425
+ #: src/ui/shared/CollectionsSidebar.tsx
456
426
  msgid "Delete"
457
427
  msgstr "Delete"
458
428
 
459
- #. @context: Button to delete collection
460
- #: src/routes/dash/collections.tsx
461
- #~ msgid "Delete Collection"
462
- #~ msgstr "Delete Collection"
463
-
464
- #. @context: Button to delete media
465
- #: src/ui/dash/media/ViewMediaContent.tsx
466
- msgid "Delete Media"
467
- msgstr "Delete Media"
429
+ #. @context: Draft item action
430
+ #: src/ui/compose/ComposeDialog.tsx
431
+ msgid "Delete Draft"
432
+ msgstr "Delete Draft"
468
433
 
469
- #. @context: Button to delete page
470
- #: src/routes/dash/pages.tsx
471
- msgid "Delete Page"
472
- msgstr "Delete Page"
434
+ #. @context: Confirm dialog for deleting a collection
435
+ #: src/ui/shared/CollectionsSidebar.tsx
436
+ msgid "Delete this collection permanently? Posts inside won't be removed."
437
+ msgstr "Delete this collection permanently? Posts inside won't be removed."
473
438
 
474
- #. @context: Warning message before deleting media
475
- #: src/ui/dash/media/ViewMediaContent.tsx
476
- msgid "Deleting this media will remove it permanently from storage."
477
- msgstr "Deleting this media will remove it permanently from storage."
439
+ #. @context: Toast after deleting a collection
440
+ #: src/ui/shared/CollectionsSidebar.tsx
441
+ msgid "Deleted"
442
+ msgstr "Deleted"
478
443
 
479
444
  #. @context: Hint shown on signin page when demo credentials are pre-filled
480
445
  #: src/routes/auth/signin.tsx
481
- msgid "Demo account pre-filled. Just click Sign In."
482
- msgstr "Demo account pre-filled. Just click Sign In."
446
+ msgid "Demo credentials are pre-filled hit Sign In to continue."
447
+ msgstr "Demo credentials are pre-filled hit Sign In to continue."
483
448
 
484
449
  #. @context: Alt text textarea placeholder
485
450
  #: src/ui/compose/ComposeDialog.tsx
@@ -487,51 +452,78 @@ msgid "Describe this for people with visual impairments..."
487
452
  msgstr "Describe this for people with visual impairments..."
488
453
 
489
454
  #. @context: Collection form field
490
- #: src/ui/dash/collections/CollectionForm.tsx
455
+ #. @context: Collection form field
456
+ #: src/ui/compose/ComposeDialog.tsx
457
+ #: src/ui/shared/CollectionsSidebar.tsx
491
458
  msgid "Description (optional)"
492
459
  msgstr "Description (optional)"
493
460
 
461
+ #. @context: Settings group label for design settings
462
+ #: src/ui/dash/settings/SettingsRootContent.tsx
463
+ msgid "Design"
464
+ msgstr "Design"
465
+
466
+ #. @context: Redirect destination field
467
+ #: src/routes/dash/custom-urls.tsx
468
+ msgid "Destination"
469
+ msgstr "Destination"
470
+
471
+ #. @context: Confirm close action sheet - discard changes button for editing published post
494
472
  #. @context: More menu - discard post
495
473
  #: src/ui/compose/ComposeDialog.tsx
474
+ #: src/ui/compose/ComposeDialog.tsx
496
475
  msgid "Discard"
497
476
  msgstr "Discard"
498
477
 
499
478
  #. @context: Checkbox to show avatar in the site header
500
- #: src/ui/dash/settings/GeneralContent.tsx
479
+ #: src/ui/dash/settings/AvatarContent.tsx
501
480
  msgid "Display avatar in my site header"
502
481
  msgstr "Display avatar in my site header"
503
482
 
504
- #. @context: Navigation label help text
505
- #: src/ui/dash/pages/LinkFormContent.tsx
506
- #~ msgid "Display text for the link"
507
- #~ msgstr "Display text for the link"
508
-
509
- #. @context: Help text for site description field
510
- #: src/ui/dash/settings/GeneralContent.tsx
511
- #~ msgid "Displayed above your blog posts on the home page. Also used as the meta description. Markdown supported."
512
- #~ msgstr "Displayed above your blog posts on the home page. Also used as the meta description. Markdown supported."
513
-
514
483
  #. @context: Help text for site footer field
515
484
  #: src/ui/dash/settings/GeneralContent.tsx
516
485
  msgid "Displayed at the bottom of all posts and pages. Markdown supported."
517
486
  msgstr "Displayed at the bottom of all posts and pages. Markdown supported."
518
487
 
488
+ #. @context: Confirm close action sheet subtitle when editing a published post
489
+ #: src/ui/compose/ComposeDialog.tsx
490
+ msgid "Do you want to publish your changes or discard them?"
491
+ msgstr "Do you want to publish your changes or discard them?"
492
+
493
+ #. @context: Confirm close action sheet - discard button
494
+ #: src/ui/compose/ComposeDialog.tsx
495
+ msgid "Don't save"
496
+ msgstr "Don't save"
497
+
498
+ #. @context: Button to exit reorder mode
519
499
  #. @context: Close attached text panel
520
- #. @context: Close media picker button
500
+ #. @context: Compose button - update existing post
521
501
  #: src/ui/compose/ComposeDialog.tsx
522
- #: src/ui/dash/posts/PostForm.tsx
502
+ #: src/ui/compose/ComposeDialog.tsx
503
+ #: src/ui/shared/CollectionsSidebar.tsx
523
504
  msgid "Done"
524
505
  msgstr "Done"
525
506
 
526
- #. @context: Page status option - draft
507
+ #. @context: Settings item description for site export
508
+ #: src/ui/dash/settings/AccountMenuContent.tsx
509
+ msgid "Download as a Zola static site (.zip)"
510
+ msgstr "Download as a Zola static site (.zip)"
511
+
527
512
  #. @context: Post status badge - draft
528
- #. @context: Post status option
529
- #: src/ui/dash/PageForm.tsx
530
- #: src/ui/dash/posts/PostForm.tsx
531
513
  #: src/ui/dash/StatusBadge.tsx
532
514
  msgid "Draft"
533
515
  msgstr "Draft"
534
516
 
517
+ #. @context: Toast after draft deletion
518
+ #: src/ui/compose/ComposeDialog.tsx
519
+ msgid "Draft deleted."
520
+ msgstr "Draft deleted."
521
+
522
+ #. @context: Toast shown when a local draft is restored on compose open
523
+ #: src/ui/compose/ComposeDialog.tsx
524
+ msgid "Draft restored."
525
+ msgstr "Draft restored."
526
+
535
527
  #. @context: Toast after saving a draft post
536
528
  #. @context: Toast after saving a draft post
537
529
  #: src/routes/compose.tsx
@@ -539,63 +531,27 @@ msgstr "Draft"
539
531
  msgid "Draft saved."
540
532
  msgstr "Draft saved."
541
533
 
542
- #. @context: Post status label
543
- #: src/routes/dash/index.tsx
534
+ #. @context: Drafts panel title
535
+ #: src/ui/compose/ComposeDialog.tsx
544
536
  msgid "Drafts"
545
537
  msgstr "Drafts"
546
538
 
547
- #. @context: Source name placeholder
548
- #: src/theme/components/PostForm.tsx
549
- #~ msgid "e.g. The Verge, John Doe"
550
- #~ msgstr "e.g. The Verge, John Doe"
539
+ #. @context: Placeholder for API token name input
540
+ #: src/ui/dash/settings/ApiTokensContent.tsx
541
+ msgid "e.g. iOS Shortcuts"
542
+ msgstr "e.g. iOS Shortcuts"
551
543
 
552
- #. @context: Button to edit collection
553
- #. @context: Button to edit collection
554
544
  #. @context: Button to edit item
555
- #. @context: Button to edit page
556
- #. @context: Button to edit page
557
- #. @context: Button to edit post
558
- #. @context: Button to edit post
559
- #: src/routes/dash/pages.tsx
560
- #: src/routes/dash/posts.tsx
545
+ #. @context: Per-collection edit action
561
546
  #: src/ui/dash/ActionButtons.tsx
562
- #: src/ui/dash/collections/CollectionsListContent.tsx
563
- #: src/ui/dash/collections/ViewCollectionContent.tsx
564
- #: src/ui/dash/pages/PagesContent.tsx
565
- #: src/ui/dash/PostList.tsx
547
+ #: src/ui/shared/CollectionsSidebar.tsx
566
548
  msgid "Edit"
567
549
  msgstr "Edit"
568
550
 
569
- #. @context: Page heading
570
- #: src/ui/dash/collections/CollectionForm.tsx
571
- msgid "Edit Collection"
572
- msgstr "Edit Collection"
573
-
574
- #. @context: Page heading
575
- #: src/ui/dash/pages/LinkFormContent.tsx
576
- #~ msgid "Edit Link"
577
- #~ msgstr "Edit Link"
578
-
579
- #. @context: Edit page main heading
580
- #. @context: Link to edit the page
581
- #: src/routes/dash/pages.tsx
582
- #: src/ui/dash/appearance/NavigationContent.tsx
583
- msgid "Edit Page"
584
- msgstr "Edit Page"
585
-
586
- #. @context: Page heading
587
- #: src/routes/dash/posts.tsx
588
- msgid "Edit Post"
589
- msgstr "Edit Post"
590
-
591
- #. @context: Edit page page title
592
- #. @context: Page title for editing collection
593
- #. @context: Page title for editing post
594
- #: src/routes/dash/collections.tsx
595
- #: src/routes/dash/pages.tsx
596
- #: src/routes/dash/posts.tsx
597
- #~ msgid "Edit: {title}"
598
- #~ msgstr "Edit: {title}"
551
+ #. @context: Compose dialog header title in edit mode
552
+ #: src/ui/compose/ComposeDialog.tsx
553
+ msgid "Edit post"
554
+ msgstr "Edit post"
599
555
 
600
556
  #. @context: Setup/signin form field - email
601
557
  #. @context: Setup/signin form field - email
@@ -604,15 +560,17 @@ msgstr "Edit Post"
604
560
  msgid "Email"
605
561
  msgstr "Email"
606
562
 
607
- #. @context: Collection icon placeholder
608
- #: src/ui/dash/collections/CollectionForm.tsx
609
- #~ msgid "Emoji or icon name"
610
- #~ msgstr "Emoji or icon name"
563
+ #. @context: Compose toolbar - emoji picker tooltip
564
+ #: src/ui/compose/ComposeDialog.tsx
565
+ msgid "Emoji"
566
+ msgstr "Emoji"
611
567
 
612
- #. @context: Password reset page description
613
- #: src/routes/auth/reset.tsx
614
- msgid "Enter your new password."
615
- msgstr "Enter your new password."
568
+ #. @context: Emoji picker tab label
569
+ #. @context: Emoji picker tab label
570
+ #: src/ui/compose/ComposeDialog.tsx
571
+ #: src/ui/shared/CollectionsSidebar.tsx
572
+ msgid "Emojis"
573
+ msgstr "Emojis"
616
574
 
617
575
  #. @context: Plural entry count label
618
576
  #: src/ui/pages/CollectionsPage.tsx
@@ -624,112 +582,100 @@ msgstr "entries"
624
582
  msgid "entry"
625
583
  msgstr "entry"
626
584
 
627
- #. @context: Error toast when account creation fails
628
- #. @context: Error toast when account creation fails
629
- #: src/routes/auth/setup.tsx
630
- #: src/routes/auth/setup.tsx
631
- msgid "Failed to create account"
632
- msgstr "Failed to create account"
633
-
634
- #. @context: Error toast when nav delete fails
635
- #: src/ui/dash/appearance/NavigationContent.tsx
636
- msgid "Failed to delete. Please try again."
637
- msgstr "Failed to delete. Please try again."
638
-
639
- #. @context: Toast when post save fails
640
- #: src/ui/dash/posts/PostForm.tsx
641
- msgid "Failed to save post. Please try again."
642
- msgstr "Failed to save post. Please try again."
643
-
644
- #. @context: Error toast when nav save fails
645
- #: src/ui/dash/appearance/NavigationContent.tsx
646
- msgid "Failed to save. Please try again."
647
- msgstr "Failed to save. Please try again."
585
+ #. @context: Settings item export site as Zola ZIP
586
+ #: src/ui/dash/settings/AccountMenuContent.tsx
587
+ msgid "Export Site"
588
+ msgstr "Export Site"
648
589
 
649
- #. @context: Error toast when profile update fails
650
- #: src/routes/dash/settings.tsx
651
- msgid "Failed to update profile."
652
- msgstr "Failed to update profile."
590
+ #. @context: Settings item description for avatar
591
+ #: src/ui/dash/settings/SettingsRootContent.tsx
592
+ msgid "Favicon and header icon"
593
+ msgstr "Favicon and header icon"
653
594
 
654
- #. @context: Archive filter - featured posts
595
+ #. @context: Archive visibility filter - featured posts
655
596
  #. @context: Browse filter for featured posts
656
597
  #. @context: Browse filter label
657
598
  #. @context: Browse filter label
658
599
  #. @context: Browse filter label for featured posts
659
600
  #. @context: Post badge - featured
660
- #. @context: Post form checkbox - mark as featured
661
601
  #: src/ui/dash/appearance/NavigationContent.tsx
662
602
  #: src/ui/dash/appearance/NavigationContent.tsx
663
603
  #: src/ui/dash/appearance/NavigationContent.tsx
664
- #: src/ui/dash/posts/PostForm.tsx
665
604
  #: src/ui/dash/StatusBadge.tsx
666
605
  #: src/ui/layouts/SiteLayout.tsx
667
606
  #: src/ui/pages/ArchivePage.tsx
668
607
  msgid "Featured"
669
608
  msgstr "Featured"
670
609
 
610
+ #. @context: Error toast when file storage is not set up
611
+ #. @context: Error when file storage is not set up
612
+ #: src/routes/api/upload.ts
613
+ #: src/routes/dash/settings.tsx
614
+ msgid "File storage isn't set up. Check your server config."
615
+ msgstr "File storage isn't set up. Check your server config."
616
+
617
+ #. @context: Toast after successful file upload
618
+ #: src/routes/api/upload.ts
619
+ msgid "File uploaded."
620
+ msgstr "File uploaded."
621
+
622
+ #. @context: Archive media filter - files/documents
623
+ #: src/ui/pages/ArchivePage.tsx
624
+ msgid "Files"
625
+ msgstr "Files"
626
+
671
627
  #. @context: Appearance settings heading for font theme
672
628
  #: src/ui/dash/appearance/FontThemeContent.tsx
673
629
  msgid "Font theme"
674
630
  msgstr "Font theme"
675
631
 
676
- #. @context: Appearance sub-navigation tab
677
- #: src/ui/dash/appearance/AppearanceNav.tsx
632
+ #. @context: Settings item — font theme settings
633
+ #: src/ui/dash/settings/SettingsRootContent.tsx
678
634
  msgid "Font Theme"
679
635
  msgstr "Font Theme"
680
636
 
681
- #. @context: Toast after saving site footer
682
- #. @context: Toast after saving site footer
683
- #: src/routes/dash/settings.tsx
684
- #: src/routes/dash/settings.tsx
685
- #~ msgid "Footer saved successfully."
686
- #~ msgstr "Footer saved successfully."
687
-
688
- #. @context: Post form field - post format
689
- #: src/ui/dash/posts/PostForm.tsx
690
- msgid "Format"
691
- msgstr "Format"
692
-
693
637
  #. @context: Search results count - multiple
694
638
  #. placeholder {0}: String(results.length)
695
639
  #: src/ui/pages/SearchPage.tsx
696
640
  msgid "Found {0} results"
697
641
  msgstr "Found {0} results"
698
642
 
699
- #. @context: Search results count - multiple
700
- #: src/ui/pages/SearchPage.tsx
701
- #~ msgid "Found {count} results"
702
- #~ msgstr "Found {count} results"
703
-
704
643
  #. @context: Search results count - single
705
644
  #: src/ui/pages/SearchPage.tsx
706
645
  msgid "Found 1 result"
707
646
  msgstr "Found 1 result"
708
647
 
709
- #. @context: Redirect form field
710
- #: src/routes/dash/redirects.tsx
711
- msgid "From Path"
712
- msgstr "From Path"
713
-
648
+ #. @context: Settings item — general settings
714
649
  #. @context: Settings section heading
715
- #. @context: Settings sub-navigation tab
716
650
  #: src/ui/dash/settings/GeneralContent.tsx
717
- #: src/ui/dash/settings/SettingsNav.tsx
651
+ #: src/ui/dash/settings/SettingsRootContent.tsx
718
652
  msgid "General"
719
653
  msgstr "General"
720
654
 
655
+ #. @context: Button to create new API token
656
+ #: src/ui/dash/settings/ApiTokensContent.tsx
657
+ msgid "Generate Token"
658
+ msgstr "Generate Token"
659
+
721
660
  #. @context: Compose link title placeholder
722
661
  #: src/ui/compose/ComposeDialog.tsx
723
662
  msgid "Give it a title..."
724
663
  msgstr "Give it a title..."
725
664
 
726
- #. @context: Settings form field for max visible nav links in header
727
- #: src/ui/dash/settings/GeneralContent.tsx
728
- #~ msgid "Header Nav Links"
729
- #~ msgstr "Header Nav Links"
665
+ #. @context: Settings item description for navigation
666
+ #: src/ui/dash/settings/SettingsRootContent.tsx
667
+ msgid "Header links, featured"
668
+ msgstr "Header links, featured"
730
669
 
670
+ #. @context: Hint text in alt text panel
671
+ #: src/ui/compose/ComposeDialog.tsx
672
+ msgid "Helps screen readers describe the image"
673
+ msgstr "Helps screen readers describe the image"
674
+
675
+ #. @context: Collection sort order option
731
676
  #. @context: Collection sort order option
732
- #: src/ui/dash/collections/CollectionForm.tsx
677
+ #: src/ui/compose/ComposeDialog.tsx
678
+ #: src/ui/shared/CollectionsSidebar.tsx
733
679
  msgid "Highest rated"
734
680
  msgstr "Highest rated"
735
681
 
@@ -738,69 +684,17 @@ msgstr "Highest rated"
738
684
  msgid "Home view saved"
739
685
  msgstr "Home view saved"
740
686
 
741
- #. @context: Collection form field
742
- #: src/ui/dash/collections/CollectionForm.tsx
743
- msgid "Icon (optional)"
744
- msgstr "Icon (optional)"
745
-
746
- #. @context: Post type badge - image
747
- #. @context: Post type label - image
748
- #. @context: Post type option
749
- #: src/theme/components/PostForm.tsx
750
- #: src/theme/components/TypeBadge.tsx
751
- #: src/themes/threads/pages/ArchivePage.tsx
752
- #~ msgid "Image"
753
- #~ msgstr "Image"
754
-
755
- #. @context: Post type label plural - images
756
- #: src/themes/threads/pages/ArchivePage.tsx
757
- #~ msgid "Images"
758
- #~ msgstr "Images"
759
-
760
- #. @context: Media upload instructions - auto optimization
761
- #: src/ui/dash/media/MediaListContent.tsx
762
- msgid "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
763
- msgstr "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
764
-
765
- #. @context: Error toast when sign-in credentials are wrong
766
- #: src/routes/auth/signin.tsx
767
- msgid "Invalid email or password"
768
- msgstr "Invalid email or password"
769
-
770
- #. @context: Error toast when selected font theme is not valid
771
- #: src/routes/dash/appearance.tsx
772
- msgid "Invalid font theme selected."
773
- msgstr "Invalid font theme selected."
774
-
775
- #. @context: Fallback validation error for compose form
776
- #. @context: Fallback validation error for page form
777
- #. @context: Fallback validation error for page form
778
- #. @context: Fallback validation error for password reset form
779
- #. @context: Fallback validation error for setup form
780
- #. @context: Fallback validation error for sign-in form
781
- #: src/routes/auth/reset.tsx
782
- #: src/routes/auth/setup.tsx
783
- #: src/routes/auth/signin.tsx
784
- #: src/routes/compose.tsx
785
- #: src/routes/dash/pages.tsx
786
- #: src/routes/dash/pages.tsx
787
- msgid "Invalid input"
788
- msgstr "Invalid input"
789
-
790
- #. @context: Password reset error heading
791
- #: src/routes/auth/reset.tsx
792
- msgid "Invalid or Expired Link"
793
- msgstr "Invalid or Expired Link"
794
-
795
- #. @context: Error toast when reorder request is malformed
796
- #: src/routes/dash/appearance.tsx
797
- #~ msgid "Invalid request"
798
- #~ msgstr "Invalid request"
687
+ #. @context: Icon picker tab label
688
+ #. @context: Icon picker tab label
689
+ #: src/ui/compose/ComposeDialog.tsx
690
+ #: src/ui/shared/CollectionsSidebar.tsx
691
+ msgid "Icons"
692
+ msgstr "Icons"
799
693
 
800
- #. @context: Error toast when selected theme is not valid
801
- #: src/routes/dash/appearance.tsx
802
- msgid "Invalid theme selected."
803
- msgstr "Invalid theme selected."
694
+ #. @context: Archive media filter - images
695
+ #: src/ui/pages/ArchivePage.tsx
696
+ msgid "Images"
697
+ msgstr "Images"
804
698
 
805
699
  #. @context: Checkbox for allowing search engine indexing
806
700
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -827,6 +721,12 @@ msgstr "Label is required"
827
721
  msgid "Language"
828
722
  msgstr "Language"
829
723
 
724
+ #. @context: Token last used date
725
+ #. placeholder {0}: formatDate(token.lastUsedAt)
726
+ #: src/ui/dash/settings/ApiTokensContent.tsx
727
+ msgid "Last used {0}"
728
+ msgstr "Last used {0}"
729
+
830
730
  #. @context: Browse filter for latest posts
831
731
  #. @context: Browse filter label
832
732
  #. @context: Browse filter label
@@ -838,10 +738,10 @@ msgstr "Language"
838
738
  msgid "Latest"
839
739
  msgstr "Latest"
840
740
 
841
- #. @context: Setup page description
842
- #: src/app.tsx
843
- #~ msgid "Let's set up your site."
844
- #~ msgstr "Let's set up your site."
741
+ #. @context: Suffix after Custom CSS link on color theme page
742
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
743
+ msgid "lets you override any theme variable."
744
+ msgstr "lets you override any theme variable."
845
745
 
846
746
  #. @context: Nav item type badge
847
747
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -851,10 +751,8 @@ msgstr "link"
851
751
  #. @context: Compose format tab
852
752
  #. @context: Post format badge - link
853
753
  #. @context: Post format label - link
854
- #. @context: Post format option
855
754
  #: src/ui/compose/ComposeDialog.tsx
856
755
  #: src/ui/dash/FormatBadge.tsx
857
- #: src/ui/dash/posts/PostForm.tsx
858
756
  #: src/ui/pages/ArchivePage.tsx
859
757
  msgid "Link"
860
758
  msgstr "Link"
@@ -864,97 +762,72 @@ msgstr "Link"
864
762
  msgid "Links"
865
763
  msgstr "Links"
866
764
 
765
+ #. @context: Label for max visible nav links number input
766
+ #: src/ui/dash/appearance/NavigationContent.tsx
767
+ msgid "Links shown in header"
768
+ msgstr "Links shown in header"
769
+
770
+ #. @context: Label for list posts curl example
771
+ #: src/ui/dash/settings/ApiTokensContent.tsx
772
+ msgid "List posts:"
773
+ msgstr "List posts:"
774
+
867
775
  #. @context: Pagination button - load more items
868
776
  #: src/ui/shared/Pagination.tsx
869
777
  msgid "Load more"
870
778
  msgstr "Load more"
871
779
 
872
- #. @context: Loading state for media picker
873
- #: src/ui/dash/posts/PostForm.tsx
874
- msgid "Loading..."
875
- msgstr "Loading..."
876
-
877
- #. @context: Page slug validation message
878
- #: src/ui/dash/PageForm.tsx
879
- msgid "Lowercase letters, numbers, and hyphens only"
880
- msgstr "Lowercase letters, numbers, and hyphens only"
881
-
882
780
  #. @context: Collection sort order option
883
- #: src/ui/dash/collections/CollectionForm.tsx
781
+ #. @context: Collection sort order option
782
+ #: src/ui/compose/ComposeDialog.tsx
783
+ #: src/ui/shared/CollectionsSidebar.tsx
884
784
  msgid "Lowest rated"
885
785
  msgstr "Lowest rated"
886
786
 
887
- #. @context: Media detail section - Markdown snippet
888
- #: src/ui/dash/media/ViewMediaContent.tsx
889
- msgid "Markdown"
890
- msgstr "Markdown"
787
+ #. @context: Settings item description for sessions
788
+ #: src/ui/dash/settings/AccountMenuContent.tsx
789
+ msgid "Manage active sign-in sessions"
790
+ msgstr "Manage active sign-in sessions"
891
791
 
892
792
  #. @context: Placeholder hint for markdown-enabled textareas
893
793
  #: src/ui/dash/settings/GeneralContent.tsx
894
794
  msgid "Markdown supported"
895
795
  msgstr "Markdown supported"
896
796
 
897
- #. @context: Label for max visible nav links number input
898
- #: src/ui/dash/appearance/NavigationContent.tsx
899
- msgid "Max visible links"
900
- msgstr "Max visible links"
901
-
902
797
  #. @context: Toast after saving max visible nav links setting
903
798
  #: src/ui/dash/appearance/NavigationContent.tsx
904
799
  msgid "Max visible links saved"
905
800
  msgstr "Max visible links saved"
906
801
 
907
- #. @context: Settings form field for max visible nav links in header before overflow menu
908
- #: src/ui/dash/settings/GeneralContent.tsx
909
- #~ msgid "Max Visible Nav Links"
910
- #~ msgstr "Max Visible Nav Links"
911
-
912
802
  #. @context: Compose toolbar - media tooltip
913
- #. @context: Media main heading
914
- #. @context: Post form field - media attachments
915
803
  #: src/ui/compose/ComposeDialog.tsx
916
- #: src/ui/dash/media/MediaListContent.tsx
917
- #: src/ui/dash/posts/PostForm.tsx
918
804
  msgid "Media"
919
805
  msgstr "Media"
920
806
 
921
- #. @context: Dashboard header menu button
922
- #: src/ui/layouts/DashLayout.tsx
923
- msgid "Menu"
924
- msgstr "Menu"
807
+ #. @context: Aria-label for more button
808
+ #: src/ui/shared/CollectionsSidebar.tsx
809
+ msgid "More actions"
810
+ msgstr "More actions"
925
811
 
926
812
  #. @context: Button to show overflow nav links
927
813
  #: src/ui/layouts/SiteLayout.tsx
928
814
  msgid "More links"
929
815
  msgstr "More links"
930
816
 
931
- #. @context: Header more button tooltip
932
- #: src/ui/compose/ComposeDialog.tsx
933
- #~ msgid "More options"
934
- #~ msgstr "More options"
935
-
936
- #. @context: Setup site name placeholder
937
- #: src/app.tsx
938
- #~ msgid "My Blog"
939
- #~ msgstr "My Blog"
940
-
941
817
  #. @context: Collection title placeholder
942
- #: src/ui/dash/collections/CollectionForm.tsx
818
+ #. @context: Collection title placeholder
819
+ #: src/ui/compose/ComposeDialog.tsx
820
+ #: src/ui/shared/CollectionsSidebar.tsx
943
821
  msgid "My Collection"
944
822
  msgstr "My Collection"
945
823
 
946
- #. @context: Account settings form field
947
- #: src/ui/dash/settings/AccountContent.tsx
948
- msgid "Name"
949
- msgstr "Name"
824
+ #. @context: Settings item description for general
825
+ #: src/ui/dash/settings/SettingsRootContent.tsx
826
+ msgid "Name, description, language"
827
+ msgstr "Name, description, language"
950
828
 
951
- #. @context: Error toast when display name is empty
952
- #: src/routes/dash/settings.tsx
953
- msgid "Name is required."
954
- msgstr "Name is required."
955
-
956
- #. @context: Appearance sub-navigation tab
957
- #: src/ui/dash/appearance/AppearanceNav.tsx
829
+ #. @context: Settings item navigation settings
830
+ #: src/ui/dash/settings/SettingsRootContent.tsx
958
831
  msgid "Navigation"
959
832
  msgstr "Navigation"
960
833
 
@@ -963,36 +836,26 @@ msgstr "Navigation"
963
836
  msgid "Navigation items"
964
837
  msgstr "Navigation items"
965
838
 
966
- #. @context: Help text with link
967
- #: src/routes/dash/index.tsx
968
- msgid "Need help? Visit the <0>documentation</0>"
969
- msgstr "Need help? Visit the <0>documentation</0>"
839
+ #. @context: Label for nav preview section
840
+ #. @context: Label for nav preview section
841
+ #: src/ui/dash/appearance/NavigationContent.tsx
842
+ #: src/ui/dash/appearance/NavigationContent.tsx
843
+ msgid "Navigation Preview"
844
+ msgstr "Navigation Preview"
970
845
 
971
- #. @context: Button to create new collection
972
- #. @context: Button to create new collection
973
- #. @context: Page heading
974
- #: src/ui/dash/collections/CollectionForm.tsx
975
- #: src/ui/dash/collections/CollectionsListContent.tsx
976
- #: src/ui/dash/collections/CollectionsListContent.tsx
846
+ #. @context: Tooltip/aria for add collection button
847
+ #: src/ui/shared/CollectionsSidebar.tsx
977
848
  msgid "New Collection"
978
849
  msgstr "New Collection"
979
850
 
980
- #. @context: Button to add divider between collections
981
- #: src/ui/dash/collections/CollectionsListContent.tsx
982
- msgid "New Divider"
983
- msgstr "New Divider"
984
-
851
+ #. @context: Button to create new custom URL
852
+ #. @context: Button to create new custom URL
985
853
  #. @context: Page heading
986
- #: src/ui/dash/pages/LinkFormContent.tsx
987
- #~ msgid "New Link"
988
- #~ msgstr "New Link"
989
-
990
- #. @context: Button to create new page
991
- #. @context: New page main heading
992
- #: src/routes/dash/pages.tsx
993
- #: src/ui/dash/pages/PagesContent.tsx
994
- msgid "New Page"
995
- msgstr "New Page"
854
+ #: src/routes/dash/custom-urls.tsx
855
+ #: src/routes/dash/custom-urls.tsx
856
+ #: src/routes/dash/custom-urls.tsx
857
+ msgid "New Custom URL"
858
+ msgstr "New Custom URL"
996
859
 
997
860
  #. @context: Password form field
998
861
  #. @context: Password reset form field
@@ -1001,26 +864,17 @@ msgstr "New Page"
1001
864
  msgid "New Password"
1002
865
  msgstr "New Password"
1003
866
 
1004
- #. @context: Button to create new post
1005
- #. @context: Button to create new post
1006
- #. @context: Page heading
1007
- #: src/routes/dash/index.tsx
1008
- #: src/routes/dash/posts.tsx
1009
- #: src/routes/dash/posts.tsx
1010
- msgid "New Post"
1011
- msgstr "New Post"
1012
-
1013
- #. @context: Button to create new redirect
1014
- #. @context: Button to create new redirect
1015
- #. @context: Page heading
1016
- #: src/routes/dash/redirects.tsx
1017
- #: src/routes/dash/redirects.tsx
1018
- #: src/routes/dash/redirects.tsx
1019
- msgid "New Redirect"
1020
- msgstr "New Redirect"
867
+ #. @context: Browser page title for the new post page
868
+ #. @context: Page title for the new post page
869
+ #: src/routes/pages/new.tsx
870
+ #: src/ui/pages/ComposePage.tsx
871
+ msgid "New post"
872
+ msgstr "New post"
1021
873
 
1022
874
  #. @context: Collection sort order option
1023
- #: src/ui/dash/collections/CollectionForm.tsx
875
+ #. @context: Collection sort order option
876
+ #: src/ui/compose/ComposeDialog.tsx
877
+ #: src/ui/shared/CollectionsSidebar.tsx
1024
878
  msgid "Newest first"
1025
879
  msgstr "Newest first"
1026
880
 
@@ -1031,114 +885,63 @@ msgstr "Newest first"
1031
885
  msgid "Next"
1032
886
  msgstr "Next"
1033
887
 
1034
- #. @context: Compose collection combobox empty state
1035
- #: src/ui/compose/ComposeDialog.tsx
1036
- msgid "No collections found."
1037
- msgstr "No collections found."
888
+ #. @context: Empty state when no sessions exist (shouldn't normally appear)
889
+ #: src/ui/dash/settings/SessionsContent.tsx
890
+ msgid "No active sessions found."
891
+ msgstr "No active sessions found."
1038
892
 
1039
- #. @context: Empty state message
1040
893
  #. @context: Empty state message on collections page
1041
- #: src/ui/dash/collections/CollectionsListContent.tsx
1042
894
  #: src/ui/pages/CollectionsPage.tsx
1043
- msgid "No collections yet."
1044
- msgstr "No collections yet."
895
+ msgid "No collections yet. Start one to organize posts by topic."
896
+ msgstr "No collections yet. Start one to organize posts by topic."
897
+
898
+ #. @context: Empty state message
899
+ #: src/routes/dash/custom-urls.tsx
900
+ msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
901
+ msgstr "No custom URLs yet. Create one to add redirects or custom paths for posts."
902
+
903
+ #. @context: Drafts panel empty state
904
+ #: src/ui/compose/ComposeDialog.tsx
905
+ msgid "No drafts yet. Save a draft to find it here."
906
+ msgstr "No drafts yet. Save a draft to find it here."
1045
907
 
1046
908
  #. @context: Empty state message on featured page
1047
909
  #: src/ui/pages/FeaturedPage.tsx
1048
- msgid "No featured posts yet."
1049
- msgstr "No featured posts yet."
910
+ msgid "No featured posts. Mark a post as featured to highlight it here."
911
+ msgstr "No featured posts. Mark a post as featured to highlight it here."
1050
912
 
913
+ #. @context: Error toast when no file was selected for upload
1051
914
  #. @context: Error when no file was selected for upload
1052
915
  #: src/routes/api/upload.ts
1053
- msgid "No file provided"
1054
- msgstr "No file provided"
1055
-
1056
- #. @context: Error toast when no file was selected for upload
1057
916
  #: src/routes/dash/settings.tsx
1058
- msgid "No file provided."
1059
- msgstr "No file provided."
1060
-
1061
- #. @context: Post form media empty state
1062
- #: src/ui/dash/posts/PostForm.tsx
1063
- msgid "No media selected yet."
1064
- msgstr "No media selected yet."
917
+ msgid "No file selected. Choose a file to upload."
918
+ msgstr "No file selected. Choose a file to upload."
1065
919
 
1066
- #. @context: Empty state message when no media exists
1067
- #: src/ui/dash/media/MediaListContent.tsx
1068
- msgid "No media uploaded yet."
1069
- msgstr "No media uploaded yet."
920
+ #. @context: Compose collection combobox empty state when search has no results
921
+ #: src/ui/compose/ComposeDialog.tsx
922
+ msgid "No matching collections."
923
+ msgstr "No matching collections."
1070
924
 
1071
925
  #. @context: Empty state for navigation items
1072
926
  #: src/ui/dash/appearance/NavigationContent.tsx
1073
- msgid "No navigation items yet. Add pages, links, or enable system items below."
1074
- msgstr "No navigation items yet. Add pages, links, or enable system items below."
1075
-
1076
- #. @context: Empty state message
1077
- #: src/routes/dash/navigation.tsx
1078
- #~ msgid "No navigation links configured."
1079
- #~ msgstr "No navigation links configured."
1080
-
1081
- #. @context: Empty state for navigation section
1082
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
1083
- #~ msgid "No navigation links yet. Add pages to navigation or create links."
1084
- #~ msgstr "No navigation links yet. Add pages to navigation or create links."
1085
-
1086
- #. @context: Empty state when page search has no results
1087
- #: src/ui/dash/appearance/NavigationContent.tsx
1088
- msgid "No pages found."
1089
- msgstr "No pages found."
1090
-
1091
- #. @context: Empty state message when no pages exist
1092
- #: src/routes/dash/pages.tsx
1093
- #~ msgid "No pages yet."
1094
- #~ msgstr "No pages yet."
927
+ msgid "No navigation items yet. Add links or enable system items below."
928
+ msgstr "No navigation items yet. Add links or enable system items below."
1095
929
 
1096
- #. @context: Empty state for pages list
1097
- #: src/ui/dash/pages/PagesContent.tsx
1098
- msgid "No pages yet. Create your first page to get started."
1099
- msgstr "No pages yet. Create your first page to get started."
1100
-
1101
- #. @context: Archive empty state
930
+ #. @context: Archive empty state with filters
1102
931
  #: src/ui/pages/ArchivePage.tsx
1103
- msgid "No posts found."
1104
- msgstr "No posts found."
1105
-
1106
- #. @context: Empty state message
1107
- #. @context: Empty state message
1108
- #: src/ui/dash/collections/ViewCollectionContent.tsx
1109
- #: src/ui/pages/CollectionPage.tsx
1110
- msgid "No posts in this collection."
1111
- msgstr "No posts in this collection."
1112
-
1113
- #. @context: Empty state message on home page
1114
- #. @context: Empty state message when no posts exist
1115
- #: src/ui/dash/PostList.tsx
1116
- #: src/ui/pages/HomePage.tsx
1117
- msgid "No posts yet."
1118
- msgstr "No posts yet."
1119
-
1120
- #. @context: Empty state message
1121
- #: src/routes/dash/redirects.tsx
1122
- msgid "No redirects configured."
1123
- msgstr "No redirects configured."
932
+ msgid "No posts match these filters. Try adjusting your selection or clear all filters."
933
+ msgstr "No posts match these filters. Try adjusting your selection or clear all filters."
1124
934
 
1125
935
  #. @context: Search empty results
1126
936
  #: src/ui/pages/SearchPage.tsx
1127
- msgid "No results found."
1128
- msgstr "No results found."
1129
-
1130
- #. @context: No rating selected
1131
- #: src/ui/compose/ComposeDialog.tsx
1132
- #~ msgid "None"
1133
- #~ msgstr "None"
937
+ msgid "No results. Try different keywords."
938
+ msgstr "No results. Try different keywords."
1134
939
 
1135
940
  #. @context: Compose format tab
1136
941
  #. @context: Post format badge - note
1137
942
  #. @context: Post format label - note
1138
- #. @context: Post format option
1139
943
  #: src/ui/compose/ComposeDialog.tsx
1140
944
  #: src/ui/dash/FormatBadge.tsx
1141
- #: src/ui/dash/posts/PostForm.tsx
1142
945
  #: src/ui/pages/ArchivePage.tsx
1143
946
  msgid "Note"
1144
947
  msgstr "Note"
@@ -1148,69 +951,53 @@ msgstr "Note"
1148
951
  msgid "Notes"
1149
952
  msgstr "Notes"
1150
953
 
954
+ #. @context: Empty state message on home page
955
+ #: src/ui/pages/HomePage.tsx
956
+ msgid "Nothing here yet."
957
+ msgstr "Nothing here yet."
958
+
959
+ #. @context: Collection sort order option
1151
960
  #. @context: Collection sort order option
1152
- #: src/ui/dash/collections/CollectionForm.tsx
961
+ #: src/ui/compose/ComposeDialog.tsx
962
+ #: src/ui/shared/CollectionsSidebar.tsx
1153
963
  msgid "Oldest first"
1154
964
  msgstr "Oldest first"
1155
965
 
966
+ #. @context: Switch label for setting featured posts as default homepage
967
+ #: src/ui/dash/appearance/NavigationContent.tsx
968
+ msgid "Open with Featured posts"
969
+ msgstr "Open with Featured posts"
970
+
971
+ #. @context: Toast after reordering collections
1156
972
  #. @context: Toast after saving navigation item order
1157
973
  #: src/ui/dash/appearance/NavigationContent.tsx
974
+ #: src/ui/shared/CollectionsSidebar.tsx
1158
975
  msgid "Order saved"
1159
976
  msgstr "Order saved"
1160
977
 
1161
- #. @context: Section heading for pages not in navigation
1162
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
1163
- #~ msgid "Other pages"
1164
- #~ msgstr "Other pages"
1165
-
1166
- #. @context: Nav item type badge
1167
- #: src/ui/dash/appearance/NavigationContent.tsx
1168
- msgid "page"
1169
- msgstr "page"
1170
-
1171
- #. @context: Default page heading when untitled
1172
- #: src/routes/dash/pages.tsx
1173
- msgid "Page"
1174
- msgstr "Page"
1175
-
1176
978
  #. @context: Pagination - current page indicator
1177
979
  #: src/ui/shared/Pagination.tsx
1178
980
  msgid "Page {page}"
1179
981
  msgstr "Page {page}"
1180
982
 
1181
- #. @context: Page content placeholder
1182
- #: src/ui/dash/PageForm.tsx
1183
- msgid "Page content (Markdown supported)..."
1184
- msgstr "Page content (Markdown supported)..."
1185
-
1186
- #. @context: Page title placeholder
1187
- #: src/ui/dash/PageForm.tsx
1188
- msgid "Page title..."
1189
- msgstr "Page title..."
1190
-
1191
- #. @context: Dashboard navigation - pages management
1192
- #. @context: Pages main heading
1193
- #: src/ui/dash/pages/PagesContent.tsx
1194
- #: src/ui/layouts/DashLayout.tsx
1195
- msgid "Pages"
1196
- msgstr "Pages"
1197
-
983
+ #. @context: Settings item — password settings
1198
984
  #. @context: Setup/signin form field - password
1199
985
  #. @context: Setup/signin form field - password
1200
986
  #: src/routes/auth/setup.tsx
1201
987
  #: src/routes/auth/signin.tsx
988
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1202
989
  msgid "Password"
1203
990
  msgstr "Password"
1204
991
 
1205
992
  #. @context: Toast after changing account password
1206
993
  #: src/routes/dash/settings.tsx
1207
- msgid "Password changed successfully."
1208
- msgstr "Password changed successfully."
994
+ msgid "Password changed."
995
+ msgstr "Password changed."
1209
996
 
1210
997
  #. @context: Error toast when new password and confirmation differ
1211
998
  #: src/routes/dash/settings.tsx
1212
- msgid "Passwords do not match."
1213
- msgstr "Passwords do not match."
999
+ msgid "Passwords don't match. Make sure both fields are identical."
1000
+ msgstr "Passwords don't match. Make sure both fields are identical."
1214
1001
 
1215
1002
  #. @context: Attached text placeholder
1216
1003
  #: src/ui/compose/ComposeDialog.tsx
@@ -1228,85 +1015,42 @@ msgstr ""
1228
1015
  msgid "Paste a URL..."
1229
1016
  msgstr "Paste a URL..."
1230
1017
 
1231
- #. @context: Page form field label - URL path
1232
- #: src/theme/components/PageForm.tsx
1233
- #~ msgid "Path"
1234
- #~ msgstr "Path"
1235
-
1236
- #. @context: Navigation URL help text
1237
- #: src/ui/dash/pages/LinkFormContent.tsx
1238
- #~ msgid "Path (e.g. /archive) or full URL (e.g. https://example.com)"
1239
- #~ msgstr "Path (e.g. /archive) or full URL (e.g. https://example.com)"
1018
+ #. @context: Custom URL form field
1019
+ #: src/routes/dash/custom-urls.tsx
1020
+ msgid "Path"
1021
+ msgstr "Path"
1240
1022
 
1241
- #. @context: Link to individual post in thread
1242
1023
  #. @context: Link to permanent URL of post
1243
- #: src/ui/pages/PostPage.tsx
1244
- #: src/ui/shared/ThreadView.tsx
1024
+ #: src/ui/shared/PostFooter.tsx
1245
1025
  msgid "Permalink"
1246
1026
  msgstr "Permalink"
1247
1027
 
1248
1028
  #. @context: Post badge - pinned
1249
- #. @context: Post form checkbox - pin to top
1250
- #: src/ui/dash/posts/PostForm.tsx
1251
1029
  #: src/ui/dash/StatusBadge.tsx
1252
1030
  msgid "Pinned"
1253
1031
  msgstr "Pinned"
1254
1032
 
1255
- #. @context: Singular post count label
1256
- #: src/ui/pages/CollectionsPage.tsx
1257
- #~ msgid "post"
1258
- #~ msgstr "post"
1259
-
1260
1033
  #. @context: Compose button - publish post
1261
- #. @context: Default post title
1262
- #: src/routes/dash/posts.tsx
1034
+ #. @context: Custom URL type option
1035
+ #: src/routes/dash/custom-urls.tsx
1263
1036
  #: src/ui/compose/ComposeDialog.tsx
1264
1037
  msgid "Post"
1265
1038
  msgstr "Post"
1266
1039
 
1267
- #. @context: Toast after creating post
1268
- #: src/ui/dash/posts/PostForm.tsx
1269
- msgid "Post published successfully."
1270
- msgstr "Post published successfully."
1271
-
1272
- #. @context: Post title placeholder
1273
- #: src/ui/dash/posts/PostForm.tsx
1274
- msgid "Post title..."
1275
- msgstr "Post title..."
1276
-
1277
- #. @context: Toast after editing post
1278
- #: src/ui/dash/posts/PostForm.tsx
1279
- msgid "Post updated successfully."
1280
- msgstr "Post updated successfully."
1281
-
1282
- #. @context: Compose loading text while posting
1040
+ #. @context: Compose dropdown option - publish post and mark it as featured
1283
1041
  #: src/ui/compose/ComposeDialog.tsx
1284
- #~ msgid "Posting..."
1285
- #~ msgstr "Posting..."
1042
+ msgid "Post as Featured"
1043
+ msgstr "Post as Featured"
1286
1044
 
1287
- #. @context: Plural post count label
1288
- #: src/ui/pages/CollectionsPage.tsx
1289
- #~ msgid "posts"
1290
- #~ msgstr "posts"
1291
-
1292
- #. @context: Dashboard heading
1293
- #: src/routes/dash/posts.tsx
1294
- msgid "Posts"
1295
- msgstr "Posts"
1296
-
1297
- #. @context: Collection posts section heading
1298
- #: src/ui/dash/collections/ViewCollectionContent.tsx
1299
- msgid "Posts in Collection ({count})"
1300
- msgstr "Posts in Collection ({count})"
1045
+ #. @context: Compose dropdown option - publish post visible only when logged in
1046
+ #: src/ui/compose/ComposeDialog.tsx
1047
+ msgid "Post as Private"
1048
+ msgstr "Post as Private"
1301
1049
 
1302
- #. @context: Label for nav preview section
1303
- #. @context: Label for nav preview section
1304
- #. @context: Media detail section - preview
1305
- #: src/ui/dash/appearance/NavigationContent.tsx
1306
- #: src/ui/dash/appearance/NavigationContent.tsx
1307
- #: src/ui/dash/media/ViewMediaContent.tsx
1308
- msgid "Preview"
1309
- msgstr "Preview"
1050
+ #. @context: Compose dropdown option - publish post with unlisted visibility, hidden from main feed
1051
+ #: src/ui/compose/ComposeDialog.tsx
1052
+ msgid "Post Unlisted"
1053
+ msgstr "Post Unlisted"
1310
1054
 
1311
1055
  #. @context: Pagination button - previous page
1312
1056
  #. @context: Pagination button - previous page
@@ -1315,119 +1059,95 @@ msgstr "Preview"
1315
1059
  msgid "Previous"
1316
1060
  msgstr "Previous"
1317
1061
 
1062
+ #. @context: Archive visibility filter - private posts
1063
+ #: src/ui/pages/ArchivePage.tsx
1064
+ msgid "Private"
1065
+ msgstr "Private"
1066
+
1318
1067
  #. @context: Avatar upload button text while generating favicon variants
1319
- #. @context: Upload status - processing
1320
- #: src/ui/dash/media/MediaListContent.tsx
1321
- #: src/ui/dash/settings/GeneralContent.tsx
1068
+ #: src/ui/dash/settings/AvatarContent.tsx
1322
1069
  msgid "Processing..."
1323
1070
  msgstr "Processing..."
1324
1071
 
1325
- #. @context: Account settings section heading
1326
- #: src/ui/dash/settings/AccountContent.tsx
1327
- msgid "Profile"
1328
- msgstr "Profile"
1329
-
1330
- #. @context: Toast after saving user profile
1331
- #: src/routes/dash/settings.tsx
1332
- msgid "Profile saved successfully."
1333
- msgstr "Profile saved successfully."
1072
+ #. @context: Archive visibility filter - public posts
1073
+ #: src/ui/pages/ArchivePage.tsx
1074
+ msgid "Public"
1075
+ msgstr "Public"
1334
1076
 
1335
- #. @context: Button to publish new post
1336
- #: src/ui/dash/posts/PostForm.tsx
1077
+ #. @context: Confirm close action sheet - publish update button for editing published post
1078
+ #: src/ui/compose/ComposeDialog.tsx
1337
1079
  msgid "Publish"
1338
1080
  msgstr "Publish"
1339
1081
 
1340
- #. @context: Page status option - published
1341
1082
  #. @context: Post status badge - published
1342
- #. @context: Post status label
1343
- #. @context: Post status option
1344
- #: src/routes/dash/index.tsx
1345
- #: src/ui/dash/PageForm.tsx
1346
- #: src/ui/dash/posts/PostForm.tsx
1347
1083
  #: src/ui/dash/StatusBadge.tsx
1348
1084
  msgid "Published"
1349
1085
  msgstr "Published"
1350
1086
 
1351
- #. @context: Page status helper text
1352
- #: src/theme/components/PageForm.tsx
1353
- #~ msgid "Published pages are accessible via their path. Drafts are not visible."
1354
- #~ msgstr "Published pages are accessible via their path. Drafts are not visible."
1355
-
1356
- #. @context: Page status helper text
1357
- #: src/ui/dash/PageForm.tsx
1358
- msgid "Published pages are accessible via their slug. Drafts are not visible."
1359
- msgstr "Published pages are accessible via their slug. Drafts are not visible."
1360
-
1361
1087
  #. @context: Toast shown after successful deferred publish
1362
1088
  #: src/ui/compose/ComposeDialog.tsx
1363
1089
  msgid "Published!"
1364
1090
  msgstr "Published!"
1365
1091
 
1366
- #. @context: Dashboard section title
1367
- #: src/routes/dash/index.tsx
1368
- msgid "Quick Actions"
1369
- msgstr "Quick Actions"
1370
-
1371
- #. @context: Post visibility badge - normal
1372
- #: src/theme/components/VisibilityBadge.tsx
1373
- #~ msgid "Quiet"
1374
- #~ msgstr "Quiet"
1375
-
1376
- #. @context: Post visibility option
1377
- #: src/theme/components/PostForm.tsx
1378
- #~ msgid "Quiet (normal)"
1379
- #~ msgstr "Quiet (normal)"
1380
-
1381
1092
  #. @context: Compose format tab
1382
1093
  #. @context: Post format badge - quote
1383
1094
  #. @context: Post format label - quote
1384
- #. @context: Post format option
1385
1095
  #: src/ui/compose/ComposeDialog.tsx
1386
1096
  #: src/ui/dash/FormatBadge.tsx
1387
- #: src/ui/dash/posts/PostForm.tsx
1388
1097
  #: src/ui/pages/ArchivePage.tsx
1389
1098
  msgid "Quote"
1390
1099
  msgstr "Quote"
1391
1100
 
1392
- #. @context: Post form field - quoted text
1393
- #: src/ui/dash/posts/PostForm.tsx
1394
- msgid "Quote Text"
1395
- msgstr "Quote Text"
1396
-
1397
1101
  #. @context: Post format label plural - quotes
1398
1102
  #: src/ui/pages/ArchivePage.tsx
1399
1103
  msgid "Quotes"
1400
1104
  msgstr "Quotes"
1401
1105
 
1402
- #. @context: Compose rating field
1403
- #. @context: Compose toolbar - toggle rating
1404
- #: src/ui/compose/ComposeDialog.tsx
1106
+ #. @context: Compose toolbar - rate tooltip
1405
1107
  #: src/ui/compose/ComposeDialog.tsx
1406
- #~ msgid "Rating"
1407
- #~ msgstr "Rating"
1108
+ msgid "Rate"
1109
+ msgstr "Rate"
1408
1110
 
1409
- #. @context: Settings section heading
1410
- #. @context: Settings sub-navigation tab
1411
- #: src/routes/dash/redirects.tsx
1412
- #: src/ui/dash/settings/SettingsNav.tsx
1413
- msgid "Redirects"
1414
- msgstr "Redirects"
1111
+ #. @context: Custom URL type option
1112
+ #: src/routes/dash/custom-urls.tsx
1113
+ msgid "Redirect"
1114
+ msgstr "Redirect"
1115
+
1116
+ #. @context: Redirect type field
1117
+ #: src/routes/dash/custom-urls.tsx
1118
+ msgid "Redirect Type"
1119
+ msgstr "Redirect Type"
1415
1120
 
1121
+ #. @context: Settings item description for custom URLs
1122
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1123
+ msgid "Redirects and custom paths"
1124
+ msgstr "Redirects and custom paths"
1125
+
1126
+ #. @context: Button to remove icon
1416
1127
  #. @context: Button to remove icon
1417
1128
  #. @context: Button to remove the blog avatar
1418
- #. @context: Remove media attachment button
1419
- #. @context: Remove page from navigation
1129
+ #. @context: Remove system item from navigation
1130
+ #: src/ui/compose/ComposeDialog.tsx
1420
1131
  #: src/ui/dash/appearance/NavigationContent.tsx
1421
- #: src/ui/dash/collections/CollectionForm.tsx
1422
- #: src/ui/dash/posts/PostForm.tsx
1423
- #: src/ui/dash/settings/GeneralContent.tsx
1132
+ #: src/ui/dash/settings/AvatarContent.tsx
1133
+ #: src/ui/shared/CollectionsSidebar.tsx
1424
1134
  msgid "Remove"
1425
1135
  msgstr "Remove"
1426
1136
 
1427
- #. @context: Button to delete a divider
1428
- #: src/ui/dash/collections/CollectionsListContent.tsx
1429
- msgid "Remove divider"
1430
- msgstr "Remove divider"
1137
+ #. @context: Tooltip for divider delete button
1138
+ #: src/ui/shared/CollectionsSidebar.tsx
1139
+ msgid "Remove Divider"
1140
+ msgstr "Remove Divider"
1141
+
1142
+ #. @context: Menu action to reorder collections
1143
+ #: src/ui/shared/CollectionsSidebar.tsx
1144
+ msgid "Reorder"
1145
+ msgstr "Reorder"
1146
+
1147
+ #. @context: Compose button - reply to post
1148
+ #: src/ui/compose/ComposeDialog.tsx
1149
+ msgid "Reply"
1150
+ msgstr "Reply"
1431
1151
 
1432
1152
  #. @context: Password reset form submit button
1433
1153
  #. @context: Password reset page heading
@@ -1436,10 +1156,30 @@ msgstr "Remove divider"
1436
1156
  msgid "Reset Password"
1437
1157
  msgstr "Reset Password"
1438
1158
 
1159
+ #. @context: Button to revoke API token
1160
+ #. @context: Button to revoke a session
1161
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1162
+ #: src/ui/dash/settings/SessionsContent.tsx
1163
+ msgid "Revoke"
1164
+ msgstr "Revoke"
1165
+
1166
+ #. @context: Confirm dialog for revoking API token
1167
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1168
+ msgid "Revoke this token? Any scripts using it will stop working."
1169
+ msgstr "Revoke this token? Any scripts using it will stop working."
1170
+
1171
+ #. @context: Button to save collection
1172
+ #. @context: Button to save collection
1439
1173
  #. @context: Button to save settings
1174
+ #. @context: Button to save settings changes
1175
+ #. @context: Confirm close action sheet - save draft button
1440
1176
  #. @context: Save nav item changes
1177
+ #: src/ui/compose/ComposeDialog.tsx
1178
+ #: src/ui/compose/ComposeDialog.tsx
1441
1179
  #: src/ui/dash/appearance/NavigationContent.tsx
1180
+ #: src/ui/dash/settings/AvatarContent.tsx
1442
1181
  #: src/ui/dash/settings/GeneralContent.tsx
1182
+ #: src/ui/shared/CollectionsSidebar.tsx
1443
1183
  msgid "Save"
1444
1184
  msgstr "Save"
1445
1185
 
@@ -1453,30 +1193,25 @@ msgstr "Save as draft"
1453
1193
  msgid "Save as Draft"
1454
1194
  msgstr "Save as Draft"
1455
1195
 
1456
- #. @context: Button to save edited navigation link
1457
- #: src/ui/dash/pages/LinkFormContent.tsx
1458
- #~ msgid "Save Changes"
1459
- #~ msgstr "Save Changes"
1460
-
1461
1196
  #. @context: Button to save custom CSS
1462
1197
  #: src/ui/dash/appearance/AdvancedContent.tsx
1463
1198
  msgid "Save CSS"
1464
1199
  msgstr "Save CSS"
1465
1200
 
1466
- #. @context: Button to save profile
1467
- #: src/ui/dash/settings/AccountContent.tsx
1468
- msgid "Save Profile"
1469
- msgstr "Save Profile"
1470
-
1471
- #. @context: Button to save settings
1472
- #: src/ui/dash/settings/GeneralContent.tsx
1473
- #~ msgid "Save Settings"
1474
- #~ msgstr "Save Settings"
1201
+ #. @context: Confirm close action sheet subtitle
1202
+ #: src/ui/compose/ComposeDialog.tsx
1203
+ msgid "Save to drafts to edit and post at a later time."
1204
+ msgstr "Save to drafts to edit and post at a later time."
1475
1205
 
1476
- #. @context: Compose toolbar - score tooltip
1206
+ #. @context: Confirm close action sheet title
1477
1207
  #: src/ui/compose/ComposeDialog.tsx
1478
- msgid "Score"
1479
- msgstr "Score"
1208
+ msgid "Save to drafts?"
1209
+ msgstr "Save to drafts?"
1210
+
1211
+ #. @context: Toast after saving a collection
1212
+ #: src/ui/shared/CollectionsSidebar.tsx
1213
+ msgid "Saved"
1214
+ msgstr "Saved"
1480
1215
 
1481
1216
  #. @context: Search icon link in browse nav
1482
1217
  #. @context: Search page title
@@ -1487,21 +1222,20 @@ msgstr "Score"
1487
1222
  msgid "Search"
1488
1223
  msgstr "Search"
1489
1224
 
1490
- #. @context: Search error message
1491
- #: src/routes/pages/search.tsx
1492
- #~ msgid "Search failed. Please try again."
1493
- #~ msgstr "Search failed. Please try again."
1225
+ #. @context: Emoji picker search placeholder
1226
+ #. @context: Emoji picker search placeholder
1227
+ #: src/ui/compose/ComposeDialog.tsx
1228
+ #: src/ui/shared/CollectionsSidebar.tsx
1229
+ msgid "Search emojis..."
1230
+ msgstr "Search emojis..."
1494
1231
 
1495
1232
  #. @context: Icon picker search placeholder
1496
- #: src/ui/dash/collections/CollectionForm.tsx
1233
+ #. @context: Icon picker search placeholder
1234
+ #: src/ui/compose/ComposeDialog.tsx
1235
+ #: src/ui/shared/CollectionsSidebar.tsx
1497
1236
  msgid "Search icons..."
1498
1237
  msgstr "Search icons..."
1499
1238
 
1500
- #. @context: Placeholder for page search input in combobox
1501
- #: src/ui/dash/appearance/NavigationContent.tsx
1502
- msgid "Search pages…"
1503
- msgstr "Search pages…"
1504
-
1505
1239
  #. @context: Search input placeholder
1506
1240
  #: src/ui/pages/SearchPage.tsx
1507
1241
  msgid "Search posts..."
@@ -1512,11 +1246,6 @@ msgstr "Search posts..."
1512
1246
  msgid "Search..."
1513
1247
  msgstr "Search..."
1514
1248
 
1515
- #. @context: Media picker dialog title
1516
- #: src/ui/dash/posts/PostForm.tsx
1517
- msgid "Select Media"
1518
- msgstr "Select Media"
1519
-
1520
1249
  #. @context: Settings section heading for SEO
1521
1250
  #: src/ui/dash/settings/GeneralContent.tsx
1522
1251
  msgid "SEO"
@@ -1526,31 +1255,37 @@ msgstr "SEO"
1526
1255
  #. @context: Toast after saving SEO settings
1527
1256
  #: src/routes/dash/settings.tsx
1528
1257
  #: src/routes/dash/settings.tsx
1529
- msgid "SEO settings saved successfully."
1530
- msgstr "SEO settings saved successfully."
1258
+ msgid "SEO settings updated."
1259
+ msgstr "SEO settings updated."
1531
1260
 
1532
- #. @context: Dashboard navigation - site settings
1533
- #: src/ui/layouts/DashLayout.tsx
1534
- msgid "Settings"
1535
- msgstr "Settings"
1261
+ #. @context: Settings item session management
1262
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1263
+ msgid "Sessions"
1264
+ msgstr "Sessions"
1265
+
1266
+ #. @context: Settings item description for account
1267
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1268
+ msgid "Sessions, password, export"
1269
+ msgstr "Sessions, password, export"
1536
1270
 
1537
- #. @context: Toast after saving general settings
1538
1271
  #. @context: Toast after saving general settings
1539
1272
  #: src/routes/dash/settings.tsx
1540
- #: src/routes/dash/settings.tsx
1541
- msgid "Settings saved successfully."
1542
- msgstr "Settings saved successfully."
1273
+ msgid "Settings updated."
1274
+ msgstr "Settings updated."
1543
1275
 
1544
- #. @context: Setup page title
1545
- #: src/app.tsx
1546
- #~ msgid "Setup"
1547
- #~ msgstr "Setup"
1276
+ #. @context: Button to collapse expanded thread context
1277
+ #. @context: Collapse reply context
1278
+ #: src/ui/compose/ComposeDialog.tsx
1279
+ #: src/ui/feed/ThreadPreview.tsx
1280
+ msgid "Show less"
1281
+ msgstr "Show less"
1548
1282
 
1549
- #. @context: Link to show remaining thread replies
1550
- #. placeholder {0}: remainingCount === 1 ? "reply" : "replies"
1283
+ #. @context: Button to expand faded thread context
1284
+ #. @context: Expand reply context
1285
+ #: src/ui/compose/ComposeDialog.tsx
1551
1286
  #: src/ui/feed/ThreadPreview.tsx
1552
- msgid "Show {remainingCount} more {0}"
1553
- msgstr "Show {remainingCount} more {0}"
1287
+ msgid "Show more"
1288
+ msgstr "Show more"
1554
1289
 
1555
1290
  #. @context: Sign in form submit button
1556
1291
  #. @context: Sign in page heading
@@ -1559,15 +1294,21 @@ msgstr "Show {remainingCount} more {0}"
1559
1294
  msgid "Sign In"
1560
1295
  msgstr "Sign In"
1561
1296
 
1562
- #. @context: Dashboard menu item to sign out
1563
- #: src/ui/layouts/DashLayout.tsx
1297
+ #. @context: Settings link sign out action
1298
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1564
1299
  msgid "Sign Out"
1565
1300
  msgstr "Sign Out"
1566
1301
 
1567
- #. @context: Settings form field
1568
- #: src/ui/dash/settings/GeneralContent.tsx
1569
- #~ msgid "Site Description"
1570
- #~ msgstr "Site Description"
1302
+ #. @context: Session creation date
1303
+ #. placeholder {0}: formatDate(session.createdAt)
1304
+ #: src/ui/dash/settings/SessionsContent.tsx
1305
+ msgid "Signed in {0}"
1306
+ msgstr "Signed in {0}"
1307
+
1308
+ #. @context: Settings group label for site settings
1309
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1310
+ msgid "Site"
1311
+ msgstr "Site"
1571
1312
 
1572
1313
  #. @context: Settings section heading for site footer
1573
1314
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -1575,19 +1316,39 @@ msgid "Site Footer"
1575
1316
  msgstr "Site Footer"
1576
1317
 
1577
1318
  #. @context: Settings form field
1319
+ #. @context: Setup form field - site name
1320
+ #: src/routes/auth/setup.tsx
1578
1321
  #: src/ui/dash/settings/GeneralContent.tsx
1579
1322
  msgid "Site Name"
1580
1323
  msgstr "Site Name"
1581
1324
 
1582
1325
  #. @context: Collection form field
1583
- #. @context: Page form field label - URL slug
1584
- #: src/ui/dash/collections/CollectionForm.tsx
1585
- #: src/ui/dash/PageForm.tsx
1326
+ #. @context: Collection form field
1327
+ #: src/ui/compose/ComposeDialog.tsx
1328
+ #: src/ui/shared/CollectionsSidebar.tsx
1586
1329
  msgid "Slug"
1587
1330
  msgstr "Slug"
1588
1331
 
1332
+ #. @context: Toast when uploads fail and post is auto-saved as draft
1333
+ #: src/ui/compose/ComposeDialog.tsx
1334
+ msgid "Some uploads failed. Saved as draft."
1335
+ msgstr "Some uploads failed. Saved as draft."
1336
+
1337
+ #. @context: Fallback validation error for compose form
1338
+ #. @context: Fallback validation error for password reset form
1339
+ #. @context: Fallback validation error for setup form
1340
+ #. @context: Fallback validation error for sign-in form
1341
+ #: src/routes/auth/reset.tsx
1342
+ #: src/routes/auth/setup.tsx
1343
+ #: src/routes/auth/signin.tsx
1344
+ #: src/routes/compose.tsx
1345
+ msgid "Something doesn't look right. Check the form and try again."
1346
+ msgstr "Something doesn't look right. Check the form and try again."
1347
+
1589
1348
  #. @context: Collection form field
1590
- #: src/ui/dash/collections/CollectionForm.tsx
1349
+ #. @context: Collection form field
1350
+ #: src/ui/compose/ComposeDialog.tsx
1351
+ #: src/ui/shared/CollectionsSidebar.tsx
1591
1352
  msgid "Sort Order"
1592
1353
  msgstr "Sort Order"
1593
1354
 
@@ -1596,43 +1357,11 @@ msgstr "Sort Order"
1596
1357
  msgid "Source link (optional)"
1597
1358
  msgstr "Source link (optional)"
1598
1359
 
1599
- #. @context: Post form field - name of the source website or author
1600
- #: src/theme/components/PostForm.tsx
1601
- #~ msgid "Source Name (optional)"
1602
- #~ msgstr "Source Name (optional)"
1603
-
1604
- #. @context: Post form field
1605
- #: src/theme/components/PostForm.tsx
1606
- #~ msgid "Source URL (optional)"
1607
- #~ msgstr "Source URL (optional)"
1608
-
1609
- #. @context: Page form field label - publish status
1610
- #. @context: Post form field
1611
- #: src/ui/dash/PageForm.tsx
1612
- #: src/ui/dash/posts/PostForm.tsx
1613
- msgid "Status"
1614
- msgstr "Status"
1615
-
1616
- #. @context: Error when file storage is not set up
1617
- #: src/routes/api/upload.ts
1618
- msgid "Storage not configured"
1619
- msgstr "Storage not configured"
1620
-
1621
- #. @context: Error toast when file storage is not set up
1622
- #: src/routes/dash/settings.tsx
1623
- msgid "Storage not configured."
1624
- msgstr "Storage not configured."
1625
-
1626
1360
  #. @context: Attached text panel hint
1627
1361
  #: src/ui/compose/ComposeDialog.tsx
1628
1362
  msgid "Supplementary content attached to your post"
1629
1363
  msgstr "Supplementary content attached to your post"
1630
1364
 
1631
- #. @context: Media upload instructions - supported formats
1632
- #: src/routes/dash/media.tsx
1633
- #~ msgid "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
1634
- #~ msgstr "Supported formats: JPEG, PNG, GIF, WebP, SVG. Max size: 10MB."
1635
-
1636
1365
  #. @context: Nav item type badge
1637
1366
  #: src/ui/dash/appearance/NavigationContent.tsx
1638
1367
  msgid "system"
@@ -1643,15 +1372,44 @@ msgstr "system"
1643
1372
  msgid "System links"
1644
1373
  msgstr "System links"
1645
1374
 
1646
- #. @context: Redirect to path help text
1647
- #: src/routes/dash/redirects.tsx
1648
- msgid "The destination path or URL"
1649
- msgstr "The destination path or URL"
1375
+ #. @context: Label on failed upload overlay button, tells user tapping retries the upload
1376
+ #: src/ui/compose/ComposeDialog.tsx
1377
+ msgid "Tap to retry"
1378
+ msgstr "Tap to retry"
1379
+
1380
+ #. @context: Custom URL target slug field
1381
+ #: src/routes/dash/custom-urls.tsx
1382
+ msgid "Target Slug"
1383
+ msgstr "Target Slug"
1384
+
1385
+ #. @context: Archive media filter - posts without any media attachments
1386
+ #. @context: Archive media filter - posts without any media attachments
1387
+ #: src/ui/pages/ArchivePage.tsx
1388
+ #: src/ui/pages/ArchivePage.tsx
1389
+ msgid "Text"
1390
+ msgstr "Text"
1650
1391
 
1651
- #. @context: Redirect from path help text
1652
- #: src/routes/dash/redirects.tsx
1653
- msgid "The path to redirect from"
1654
- msgstr "The path to redirect from"
1392
+ #. @context: Archive media filter - text file attachments
1393
+ #. @context: Attached text panel title
1394
+ #: src/ui/compose/ComposeDialog.tsx
1395
+ #: src/ui/pages/ArchivePage.tsx
1396
+ msgid "Text attachment"
1397
+ msgstr "Text attachment"
1398
+
1399
+ #. @context: Error toast when selected font theme is not valid
1400
+ #: src/routes/dash/settings.tsx
1401
+ msgid "That font theme isn't available. Pick another one."
1402
+ msgstr "That font theme isn't available. Pick another one."
1403
+
1404
+ #. @context: Error toast when selected theme is not valid
1405
+ #: src/routes/dash/settings.tsx
1406
+ msgid "That theme isn't available. Pick another one."
1407
+ msgstr "That theme isn't available. Pick another one."
1408
+
1409
+ #. @context: Custom URL path help text
1410
+ #: src/routes/dash/custom-urls.tsx
1411
+ msgid "The custom URL path (without leading slash)"
1412
+ msgstr "The custom URL path (without leading slash)"
1655
1413
 
1656
1414
  #. @context: Font theme preview sentence for body text
1657
1415
  #. @context: Font theme preview sentence for headings
@@ -1660,99 +1418,91 @@ msgstr "The path to redirect from"
1660
1418
  msgid "The quick brown fox jumps over the lazy dog."
1661
1419
  msgstr "The quick brown fox jumps over the lazy dog."
1662
1420
 
1663
- #. @context: Quote text placeholder
1664
- #: src/ui/dash/posts/PostForm.tsx
1665
- msgid "The text being quoted..."
1666
- msgstr "The text being quoted..."
1421
+ #. @context: Description for max visible nav links, explains overflow behavior
1422
+ #: src/ui/dash/appearance/NavigationContent.tsx
1423
+ msgid "The rest will be tucked into a ··· menu"
1424
+ msgstr "The rest will be tucked into a ··· menu"
1667
1425
 
1668
- #. @context: Page slug helper text
1669
- #: src/ui/dash/PageForm.tsx
1670
- msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
1671
- msgstr "The URL path for this page. Use lowercase letters, numbers, and hyphens."
1426
+ #. @context: Custom URL target slug help text
1427
+ #: src/routes/dash/custom-urls.tsx
1428
+ msgid "The slug of the target post or collection"
1429
+ msgstr "The slug of the target post or collection"
1672
1430
 
1673
- #. @context: Help text for site description field
1674
- #: src/ui/dash/settings/GeneralContent.tsx
1675
- #~ msgid "This is displayed above your blog posts on your default home page. This is also used for the meta description on your home page."
1676
- #~ msgstr "This is displayed above your blog posts on your default home page. This is also used for the meta description on your home page."
1431
+ #. @context: Link to theming documentation on Custom CSS page
1432
+ #: src/ui/dash/appearance/AdvancedContent.tsx
1433
+ msgid "Theming guide"
1434
+ msgstr "Theming guide"
1677
1435
 
1678
- #. @context: Help text for site footer field
1679
- #: src/ui/dash/settings/GeneralContent.tsx
1680
- #~ msgid "This is displayed at the bottom of all of your posts and pages. Markdown is supported."
1681
- #~ msgstr "This is displayed at the bottom of all of your posts and pages. Markdown is supported."
1436
+ #. @context: Description for session management
1437
+ #: src/ui/dash/settings/SessionsContent.tsx
1438
+ msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
1439
+ msgstr "These devices are currently signed in to your account. Revoke any session you don't recognize."
1440
+
1441
+ #. @context: Empty state message
1442
+ #: src/ui/pages/CollectionPage.tsx
1443
+ msgid "This collection is empty. Add posts from the editor."
1444
+ msgstr "This collection is empty. Add posts from the editor."
1682
1445
 
1683
1446
  #. @context: Help text for avatar upload
1684
- #: src/ui/dash/settings/GeneralContent.tsx
1447
+ #: src/ui/dash/settings/AvatarContent.tsx
1685
1448
  msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1686
1449
  msgstr "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1687
1450
 
1688
- #. @context: Help text for avatar upload
1689
- #: src/ui/dash/settings/GeneralContent.tsx
1690
- #~ msgid "This is used for your favicon."
1691
- #~ msgstr "This is used for your favicon."
1451
+ #. @context: Password reset error heading
1452
+ #: src/routes/auth/reset.tsx
1453
+ msgid "This Link Has Expired"
1454
+ msgstr "This Link Has Expired"
1692
1455
 
1693
1456
  #. @context: Password reset error description
1694
1457
  #: src/routes/auth/reset.tsx
1695
- msgid "This password reset link is invalid or has expired. Please generate a new one."
1696
- msgstr "This password reset link is invalid or has expired. Please generate a new one."
1697
-
1698
- #. @context: Appearance settings description
1699
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1700
- msgid "This will theme both your site and your dashboard. All color themes support dark mode."
1701
- msgstr "This will theme both your site and your dashboard. All color themes support dark mode."
1702
-
1703
- #. @context: Thread view indicator - first post in thread
1704
- #: src/ui/shared/ThreadView.tsx
1705
- msgid "Thread start"
1706
- msgstr "Thread start"
1707
-
1708
- #. @context: Thread view header - multiple posts
1709
- #: src/ui/shared/ThreadView.tsx
1710
- msgid "Thread with {count} posts"
1711
- msgstr "Thread with {count} posts"
1712
-
1713
- #. @context: Thread view header - single post
1714
- #: src/ui/shared/ThreadView.tsx
1715
- msgid "Thread with 1 post"
1716
- msgstr "Thread with 1 post"
1458
+ msgid "This reset link is no longer valid. Request a new one to continue."
1459
+ msgstr "This reset link is no longer valid. Request a new one to continue."
1717
1460
 
1718
1461
  #. @context: Settings form field
1719
1462
  #: src/ui/dash/settings/GeneralContent.tsx
1720
1463
  msgid "Time Zone"
1721
1464
  msgstr "Time Zone"
1722
1465
 
1466
+ #. @context: Collection form field
1723
1467
  #. @context: Collection form field
1724
1468
  #. @context: Compose note title placeholder
1725
1469
  #. @context: Compose toolbar - title tooltip
1726
- #. @context: Page form field label - title
1727
1470
  #: src/ui/compose/ComposeDialog.tsx
1728
1471
  #: src/ui/compose/ComposeDialog.tsx
1729
- #: src/ui/dash/collections/CollectionForm.tsx
1730
- #: src/ui/dash/PageForm.tsx
1472
+ #: src/ui/compose/ComposeDialog.tsx
1473
+ #: src/ui/shared/CollectionsSidebar.tsx
1731
1474
  msgid "Title"
1732
1475
  msgstr "Title"
1733
1476
 
1734
- #. @context: Post form field
1735
- #: src/ui/dash/posts/PostForm.tsx
1736
- msgid "Title (optional)"
1737
- msgstr "Title (optional)"
1738
-
1739
- #. @context: Redirect form field
1740
- #: src/routes/dash/redirects.tsx
1741
- msgid "To Path"
1742
- msgstr "To Path"
1477
+ #. @context: Archive filter - notes that have a title
1478
+ #. @context: Archive filter - notes that have a title
1479
+ #: src/ui/pages/ArchivePage.tsx
1480
+ #: src/ui/pages/ArchivePage.tsx
1481
+ msgid "Titled"
1482
+ msgstr "Titled"
1743
1483
 
1744
1484
  #. @context: Description for system nav toggles
1745
1485
  #: src/ui/dash/appearance/NavigationContent.tsx
1746
- msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside pages and links."
1747
- msgstr "Toggle built-in navigation items. Enabled items appear in your navigation alongside pages and links."
1486
+ msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside links."
1487
+ msgstr "Toggle built-in navigation items. Enabled items appear in your navigation alongside links."
1748
1488
 
1749
1489
  #. @context: Button to expand/collapse nav item edit
1750
1490
  #: src/ui/dash/appearance/NavigationContent.tsx
1751
1491
  msgid "Toggle edit panel"
1752
1492
  msgstr "Toggle edit panel"
1753
1493
 
1754
- #. @context: Redirect form field
1755
- #: src/routes/dash/redirects.tsx
1494
+ #. @context: API token name field label
1495
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1496
+ msgid "Token name"
1497
+ msgstr "Token name"
1498
+
1499
+ #. @context: API tokens description
1500
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1501
+ msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1502
+ msgstr "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1503
+
1504
+ #. @context: Custom URL form field
1505
+ #: src/routes/dash/custom-urls.tsx
1756
1506
  msgid "Type"
1757
1507
  msgstr "Type"
1758
1508
 
@@ -1761,141 +1511,87 @@ msgstr "Type"
1761
1511
  msgid "Type the quote..."
1762
1512
  msgstr "Type the quote..."
1763
1513
 
1764
- #. @context: Button to remove page from navigation
1765
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
1766
- #~ msgid "Un-nav"
1767
- #~ msgstr "Un-nav"
1768
-
1769
- #. @context: Post visibility badge - unlisted
1770
- #. @context: Post visibility option
1771
- #: src/theme/components/PostForm.tsx
1772
- #: src/theme/components/VisibilityBadge.tsx
1773
- #~ msgid "Unlisted"
1774
- #~ msgstr "Unlisted"
1775
-
1776
- #. @context: Default title for untitled page
1777
- #. @context: Default title for untitled post
1778
- #: src/ui/dash/pages/PagesContent.tsx
1779
- #: src/ui/dash/PostList.tsx
1780
- msgid "Untitled"
1781
- msgstr "Untitled"
1514
+ #. @context: Settings item description for font theme
1515
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1516
+ msgid "Typography"
1517
+ msgstr "Typography"
1782
1518
 
1783
- #. @context: Button to update existing post
1784
- #: src/ui/dash/posts/PostForm.tsx
1785
- msgid "Update"
1786
- msgstr "Update"
1519
+ #. @context: Fallback label when session device can't be identified
1520
+ #: src/ui/dash/settings/SessionsContent.tsx
1521
+ msgid "Unknown device"
1522
+ msgstr "Unknown device"
1787
1523
 
1788
- #. @context: Button to save collection changes
1789
- #: src/ui/dash/collections/CollectionForm.tsx
1790
- msgid "Update Collection"
1791
- msgstr "Update Collection"
1792
-
1793
- #. @context: Button to update existing page
1794
- #: src/ui/dash/PageForm.tsx
1795
- msgid "Update Page"
1796
- msgstr "Update Page"
1524
+ #. @context: Archive visibility filter - unlisted posts
1525
+ #. @context: Post badge - unlisted
1526
+ #: src/ui/dash/StatusBadge.tsx
1527
+ #: src/ui/pages/ArchivePage.tsx
1528
+ msgid "Unlisted"
1529
+ msgstr "Unlisted"
1797
1530
 
1798
- #. @context: Button to upload media file
1799
- #: src/ui/dash/media/MediaListContent.tsx
1800
- msgid "Upload"
1801
- msgstr "Upload"
1531
+ #. @context: Archive filter - notes without a title
1532
+ #. @context: Archive filter - notes without a title
1533
+ #: src/ui/pages/ArchivePage.tsx
1534
+ #: src/ui/pages/ArchivePage.tsx
1535
+ msgid "Untitled"
1536
+ msgstr "Untitled"
1802
1537
 
1803
1538
  #. @context: Button to upload avatar image
1804
- #: src/ui/dash/settings/GeneralContent.tsx
1539
+ #: src/ui/dash/settings/AvatarContent.tsx
1805
1540
  msgid "Upload Avatar"
1806
1541
  msgstr "Upload Avatar"
1807
1542
 
1808
- #. @context: Error message when avatar upload fails
1809
1543
  #. @context: Error toast when avatar upload fails
1810
1544
  #. @context: Error when file upload fails
1811
- #. @context: Upload error message
1812
1545
  #: src/routes/api/upload.ts
1813
1546
  #: src/routes/dash/settings.tsx
1814
- #: src/ui/dash/media/MediaListContent.tsx
1815
- #: src/ui/dash/settings/GeneralContent.tsx
1547
+ msgid "Upload didn't go through. Try again in a moment."
1548
+ msgstr "Upload didn't go through. Try again in a moment."
1549
+
1550
+ #. @context: Error message when avatar upload fails
1551
+ #: src/ui/dash/settings/AvatarContent.tsx
1816
1552
  msgid "Upload failed. Please try again."
1817
1553
  msgstr "Upload failed. Please try again."
1818
1554
 
1819
- #. @context: Media upload instructions - API usage
1820
- #: src/routes/dash/media.tsx
1821
- #~ msgid "Upload images via the API: POST /api/upload with a file form field."
1822
- #~ msgstr "Upload images via the API: POST /api/upload with a file form field."
1823
-
1824
- #. @context: Toast after successful file upload
1825
- #: src/routes/api/upload.ts
1826
- msgid "Upload successful!"
1827
- msgstr "Upload successful!"
1828
-
1829
1555
  #. @context: Avatar upload button text while uploading
1830
1556
  #. @context: Toast shown during background upload
1831
- #. @context: Upload status - uploading
1832
1557
  #: src/ui/compose/ComposeDialog.tsx
1833
- #: src/ui/dash/media/MediaListContent.tsx
1834
- #: src/ui/dash/settings/GeneralContent.tsx
1558
+ #: src/ui/dash/settings/AvatarContent.tsx
1835
1559
  msgid "Uploading..."
1836
1560
  msgstr "Uploading..."
1837
1561
 
1838
- #. @context: Media detail section - URL
1839
1562
  #. @context: Nav item URL field
1840
1563
  #: src/ui/dash/appearance/NavigationContent.tsx
1841
- #: src/ui/dash/media/ViewMediaContent.tsx
1842
1564
  msgid "URL"
1843
1565
  msgstr "URL"
1844
1566
 
1845
- #. @context: Post form field - source URL
1846
- #: src/ui/dash/posts/PostForm.tsx
1847
- msgid "URL (optional)"
1848
- msgstr "URL (optional)"
1849
-
1850
1567
  #. @context: Collection path help text
1851
- #: src/ui/dash/collections/CollectionForm.tsx
1852
- #~ msgid "URL-safe identifier (lowercase, numbers, hyphens)"
1853
- #~ msgstr "URL-safe identifier (lowercase, numbers, hyphens)"
1854
-
1855
1568
  #. @context: Collection path help text
1856
- #: src/ui/dash/collections/CollectionForm.tsx
1569
+ #: src/ui/compose/ComposeDialog.tsx
1570
+ #: src/ui/shared/CollectionsSidebar.tsx
1857
1571
  msgid "URL-safe identifier (lowercase, numbers, hyphens). For CJK titles, slug will be auto-generated on the server."
1858
1572
  msgstr "URL-safe identifier (lowercase, numbers, hyphens). For CJK titles, slug will be auto-generated on the server."
1859
1573
 
1860
- #. @context: Switch label for setting featured posts as default homepage
1861
- #: src/ui/dash/appearance/NavigationContent.tsx
1862
- msgid "Use Featured as default home view"
1863
- msgstr "Use Featured as default home view"
1574
+ #. @context: Heading for API token usage examples
1575
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1576
+ msgid "Usage"
1577
+ msgstr "Usage"
1864
1578
 
1865
- #. @context: Media URL helper text
1866
- #: src/ui/dash/media/ViewMediaContent.tsx
1867
- msgid "Use this URL to embed the media in your posts."
1868
- msgstr "Use this URL to embed the media in your posts."
1579
+ #. @context: Archive media filter - video
1580
+ #: src/ui/pages/ArchivePage.tsx
1581
+ msgid "Video"
1582
+ msgstr "Video"
1869
1583
 
1870
- #. @context: Button to view collection
1871
1584
  #. @context: Button to view item on public site
1872
- #. @context: Button to view page on public site
1873
- #. @context: Button to view page on public site
1874
- #. @context: Button to view post
1875
- #. @context: Button to view post on public site
1876
- #: src/routes/dash/pages.tsx
1877
- #: src/routes/dash/posts.tsx
1585
+ #. @context: Toast action button to view the published post
1586
+ #: src/ui/compose/ComposeDialog.tsx
1878
1587
  #: src/ui/dash/ActionButtons.tsx
1879
- #: src/ui/dash/collections/ViewCollectionContent.tsx
1880
- #: src/ui/dash/pages/PagesContent.tsx
1881
- #: src/ui/dash/PostList.tsx
1882
1588
  msgid "View"
1883
1589
  msgstr "View"
1884
1590
 
1885
- #. @context: Link to view all posts on archive page
1886
- #: src/routes/pages/home.tsx
1887
- #~ msgid "View all posts →"
1888
- #~ msgstr "View all posts →"
1889
-
1890
- #. @context: Dashboard header link to view the public site
1891
- #: src/ui/layouts/DashLayout.tsx
1892
- msgid "View Site"
1893
- msgstr "View Site"
1894
-
1895
- #. @context: Post form field
1896
- #: src/theme/components/PostForm.tsx
1897
- #~ msgid "Visibility"
1898
- #~ msgstr "Visibility"
1591
+ #. @context: Prefix before Custom CSS link on color theme page
1592
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1593
+ msgid "Want more control?"
1594
+ msgstr "Want more control?"
1899
1595
 
1900
1596
  #. @context: Setup page welcome heading
1901
1597
  #: src/routes/auth/setup.tsx
@@ -1904,13 +1600,6 @@ msgstr "Welcome to Jant"
1904
1600
 
1905
1601
  #. @context: Compose prompt placeholder text
1906
1602
  #: src/ui/compose/ComposePrompt.tsx
1907
- #~ msgid "What's new?"
1908
- #~ msgstr "What's new?"
1909
-
1910
- #. @context: Compose prompt placeholder text
1911
- #. @context: Post content placeholder
1912
- #: src/ui/compose/ComposePrompt.tsx
1913
- #: src/ui/dash/posts/PostForm.tsx
1914
1603
  msgid "What's on your mind?"
1915
1604
  msgstr "What's on your mind?"
1916
1605
 
@@ -1920,19 +1609,26 @@ msgid "What's on your mind..."
1920
1609
  msgstr "What's on your mind..."
1921
1610
 
1922
1611
  #. @context: Collection description placeholder
1923
- #: src/ui/dash/collections/CollectionForm.tsx
1612
+ #. @context: Collection description placeholder
1613
+ #: src/ui/compose/ComposeDialog.tsx
1614
+ #: src/ui/shared/CollectionsSidebar.tsx
1924
1615
  msgid "What's this collection about?"
1925
1616
  msgstr "What's this collection about?"
1926
1617
 
1927
- #. @context: Setup form field - user name
1928
- #: src/routes/auth/setup.tsx
1929
- msgid "Your Name"
1930
- msgstr "Your Name"
1618
+ #. @context: Description for featured default toggle, explains what happens when off
1619
+ #: src/ui/dash/appearance/NavigationContent.tsx
1620
+ msgid "When off, visitors see your latest posts first"
1621
+ msgstr "When off, visitors see your latest posts first"
1931
1622
 
1932
- #. @context: Section heading for navigation items
1933
- #: src/ui/dash/pages/UnifiedPagesContent.tsx
1934
- #~ msgid "Your site navigation"
1935
- #~ msgstr "Your site navigation"
1623
+ #. @context: Error toast when sign-in credentials are wrong
1624
+ #: src/routes/auth/signin.tsx
1625
+ msgid "Wrong email or password. Check your credentials and try again."
1626
+ msgstr "Wrong email or password. Check your credentials and try again."
1627
+
1628
+ #. @context: Confirm close action sheet title when editing a published post
1629
+ #: src/ui/compose/ComposeDialog.tsx
1630
+ msgid "You have unsaved changes"
1631
+ msgstr "You have unsaved changes"
1936
1632
 
1937
1633
  #. @context: Compose thoughts placeholder
1938
1634
  #: src/ui/compose/ComposeDialog.tsx