@jant/core 0.3.24 → 0.3.25

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 (206) hide show
  1. package/dist/app.js +50 -25
  2. package/dist/db/schema.js +1 -1
  3. package/dist/i18n/locales/en.js +1 -1
  4. package/dist/i18n/locales/zh-Hans.js +1 -1
  5. package/dist/i18n/locales/zh-Hant.js +1 -1
  6. package/dist/index.js +3 -9
  7. package/dist/lib/constants.js +1 -0
  8. package/dist/lib/nav-reorder.js +1 -1
  9. package/dist/lib/navigation.js +26 -1
  10. package/dist/lib/pagination.js +44 -0
  11. package/dist/lib/render.js +7 -11
  12. package/dist/lib/schemas.js +3 -3
  13. package/dist/lib/theme.js +4 -4
  14. package/dist/lib/timeline.js +24 -48
  15. package/dist/lib/view.js +2 -2
  16. package/dist/routes/api/collections.js +124 -0
  17. package/dist/routes/api/nav-items.js +104 -0
  18. package/dist/routes/api/pages.js +91 -0
  19. package/dist/routes/api/posts.js +2 -2
  20. package/dist/routes/api/search.js +2 -2
  21. package/dist/routes/api/settings.js +68 -0
  22. package/dist/routes/compose.js +48 -0
  23. package/dist/routes/dash/collections.js +2 -2
  24. package/dist/routes/dash/index.js +1 -1
  25. package/dist/routes/dash/media.js +2 -2
  26. package/dist/routes/dash/pages.js +411 -62
  27. package/dist/routes/dash/posts.js +3 -5
  28. package/dist/routes/dash/redirects.js +2 -2
  29. package/dist/routes/dash/settings.js +79 -5
  30. package/dist/routes/feed/rss.js +2 -2
  31. package/dist/routes/feed/sitemap.js +1 -1
  32. package/dist/routes/pages/archive.js +3 -6
  33. package/dist/routes/pages/collection.js +3 -6
  34. package/dist/routes/pages/collections.js +28 -0
  35. package/dist/routes/pages/featured.js +32 -0
  36. package/dist/routes/pages/home.js +9 -50
  37. package/dist/routes/pages/page.js +29 -32
  38. package/dist/routes/pages/post.js +3 -6
  39. package/dist/routes/pages/search.js +3 -6
  40. package/dist/services/page.js +5 -1
  41. package/dist/services/post.js +40 -6
  42. package/dist/services/search.js +1 -1
  43. package/dist/ui/compose/ComposeDialog.js +452 -0
  44. package/dist/ui/compose/ComposePrompt.js +55 -0
  45. package/dist/{theme/components/TypeBadge.js → ui/dash/FormatBadge.js} +1 -2
  46. package/dist/{theme/components → ui/dash}/PostForm.js +0 -27
  47. package/dist/{theme/components → ui/dash}/PostList.js +6 -6
  48. package/dist/{theme/components/VisibilityBadge.js → ui/dash/StatusBadge.js} +1 -2
  49. package/dist/{theme/components → ui/dash}/index.js +3 -6
  50. package/dist/{themes/threads/timeline → ui/feed}/LinkCard.js +6 -2
  51. package/dist/{themes/threads/timeline → ui/feed}/NoteCard.js +11 -6
  52. package/dist/{themes/threads/timeline → ui/feed}/QuoteCard.js +10 -6
  53. package/dist/{themes/threads/timeline → ui/feed}/ThreadPreview.js +7 -9
  54. package/dist/ui/feed/TimelineFeed.js +41 -0
  55. package/dist/ui/feed/TimelineItem.js +27 -0
  56. package/dist/{theme → ui}/layouts/BaseLayout.js +10 -0
  57. package/dist/{theme → ui}/layouts/DashLayout.js +0 -8
  58. package/dist/ui/layouts/SiteLayout.js +141 -0
  59. package/dist/{themes/threads → ui}/pages/ArchivePage.js +16 -14
  60. package/dist/{themes/threads → ui}/pages/CollectionPage.js +6 -1
  61. package/dist/ui/pages/CollectionsPage.js +76 -0
  62. package/dist/ui/pages/FeaturedPage.js +24 -0
  63. package/dist/ui/pages/HomePage.js +24 -0
  64. package/dist/{themes/threads → ui}/pages/PostPage.js +13 -8
  65. package/dist/{themes/threads → ui}/pages/SearchPage.js +9 -7
  66. package/dist/{themes/threads → ui}/pages/SinglePage.js +3 -2
  67. package/dist/{theme/components → ui/shared}/MediaGallery.js +1 -1
  68. package/dist/{theme/components → ui/shared}/Pagination.js +41 -2
  69. package/dist/{theme/components → ui/shared}/ThreadView.js +2 -2
  70. package/dist/ui/shared/index.js +5 -0
  71. package/package.json +1 -9
  72. package/src/__tests__/helpers/db.ts +3 -0
  73. package/src/app.tsx +57 -27
  74. package/src/db/migrations/0006_rename_slug_to_path.sql +5 -0
  75. package/src/db/migrations/meta/_journal.json +7 -0
  76. package/src/db/schema.ts +1 -1
  77. package/src/i18n/locales/en.po +332 -181
  78. package/src/i18n/locales/en.ts +1 -1
  79. package/src/i18n/locales/zh-Hans.po +332 -181
  80. package/src/i18n/locales/zh-Hans.ts +1 -1
  81. package/src/i18n/locales/zh-Hant.po +332 -181
  82. package/src/i18n/locales/zh-Hant.ts +1 -1
  83. package/src/index.ts +7 -36
  84. package/src/lib/__tests__/schemas.test.ts +60 -19
  85. package/src/lib/__tests__/timeline.test.ts +45 -81
  86. package/src/lib/__tests__/view.test.ts +13 -7
  87. package/src/lib/constants.ts +1 -0
  88. package/src/lib/nav-reorder.ts +1 -1
  89. package/src/lib/navigation.ts +40 -2
  90. package/src/lib/pagination.ts +50 -0
  91. package/src/lib/render.tsx +7 -14
  92. package/src/lib/schemas.ts +8 -6
  93. package/src/lib/theme.ts +5 -5
  94. package/src/lib/timeline.ts +28 -57
  95. package/src/lib/view.ts +2 -2
  96. package/src/preset.css +2 -1
  97. package/src/routes/__tests__/compose.test.ts +199 -0
  98. package/src/routes/api/__tests__/collections.test.ts +249 -0
  99. package/src/routes/api/__tests__/nav-items.test.ts +222 -0
  100. package/src/routes/api/__tests__/pages.test.ts +218 -0
  101. package/src/routes/api/__tests__/settings.test.ts +132 -0
  102. package/src/routes/api/collections.ts +143 -0
  103. package/src/routes/api/nav-items.ts +115 -0
  104. package/src/routes/api/pages.ts +101 -0
  105. package/src/routes/api/posts.ts +2 -2
  106. package/src/routes/api/search.ts +2 -2
  107. package/src/routes/api/settings.ts +91 -0
  108. package/src/routes/compose.ts +63 -0
  109. package/src/routes/dash/__tests__/pages.test.ts +225 -0
  110. package/src/routes/dash/collections.tsx +2 -2
  111. package/src/routes/dash/index.tsx +1 -1
  112. package/src/routes/dash/media.tsx +2 -2
  113. package/src/routes/dash/pages.tsx +443 -70
  114. package/src/routes/dash/posts.tsx +3 -7
  115. package/src/routes/dash/redirects.tsx +2 -2
  116. package/src/routes/dash/settings.tsx +83 -5
  117. package/src/routes/feed/rss.ts +2 -2
  118. package/src/routes/feed/sitemap.ts +1 -1
  119. package/src/routes/pages/__tests__/collections.test.ts +94 -0
  120. package/src/routes/pages/__tests__/featured.test.ts +94 -0
  121. package/src/routes/pages/archive.tsx +2 -6
  122. package/src/routes/pages/collection.tsx +2 -6
  123. package/src/routes/pages/collections.tsx +36 -0
  124. package/src/routes/pages/featured.tsx +38 -0
  125. package/src/routes/pages/home.tsx +9 -55
  126. package/src/routes/pages/page.tsx +28 -30
  127. package/src/routes/pages/post.tsx +2 -5
  128. package/src/routes/pages/search.tsx +2 -6
  129. package/src/services/__tests__/page.test.ts +106 -0
  130. package/src/services/__tests__/post.test.ts +114 -15
  131. package/src/services/page.ts +13 -1
  132. package/src/services/post.ts +57 -7
  133. package/src/services/search.ts +2 -2
  134. package/src/styles/tokens.css +47 -0
  135. package/src/styles/ui.css +491 -0
  136. package/src/types.ts +29 -159
  137. package/src/ui/compose/ComposeDialog.tsx +395 -0
  138. package/src/ui/compose/ComposePrompt.tsx +55 -0
  139. package/src/{theme/components/TypeBadge.tsx → ui/dash/FormatBadge.tsx} +2 -3
  140. package/src/{theme/components → ui/dash}/PostForm.tsx +0 -25
  141. package/src/{theme/components → ui/dash}/PostList.tsx +7 -7
  142. package/src/{theme/components/VisibilityBadge.tsx → ui/dash/StatusBadge.tsx} +2 -3
  143. package/src/ui/dash/index.ts +10 -0
  144. package/src/{themes/threads/timeline → ui/feed}/LinkCard.tsx +9 -4
  145. package/src/{themes/threads/timeline → ui/feed}/NoteCard.tsx +13 -8
  146. package/src/{themes/threads/timeline → ui/feed}/QuoteCard.tsx +13 -8
  147. package/src/{themes/threads/timeline → ui/feed}/ThreadPreview.tsx +7 -8
  148. package/src/ui/feed/TimelineFeed.tsx +49 -0
  149. package/src/ui/feed/TimelineItem.tsx +45 -0
  150. package/src/{theme → ui}/layouts/BaseLayout.tsx +11 -1
  151. package/src/{theme → ui}/layouts/DashLayout.tsx +0 -10
  152. package/src/ui/layouts/SiteLayout.tsx +150 -0
  153. package/src/{themes/threads → ui}/pages/ArchivePage.tsx +22 -17
  154. package/src/{themes/threads → ui}/pages/CollectionPage.tsx +14 -5
  155. package/src/ui/pages/CollectionsPage.tsx +73 -0
  156. package/src/ui/pages/FeaturedPage.tsx +31 -0
  157. package/src/{themes/threads → ui}/pages/HomePage.tsx +11 -15
  158. package/src/{themes/threads → ui}/pages/PostPage.tsx +23 -14
  159. package/src/{themes/threads → ui}/pages/SearchPage.tsx +13 -11
  160. package/src/{themes/threads → ui}/pages/SinglePage.tsx +4 -4
  161. package/src/{theme/components → ui/shared}/MediaGallery.tsx +1 -1
  162. package/src/{theme/components → ui/shared}/Pagination.tsx +67 -4
  163. package/src/{theme/components → ui/shared}/ThreadView.tsx +2 -2
  164. package/src/ui/shared/__tests__/pagination.test.ts +46 -0
  165. package/src/ui/shared/index.ts +12 -0
  166. package/bin/jant.js +0 -185
  167. package/dist/lib/theme-components.js +0 -46
  168. package/dist/routes/dash/navigation.js +0 -289
  169. package/dist/theme/index.js +0 -18
  170. package/dist/theme/layouts/index.js +0 -2
  171. package/dist/themes/threads/ThreadsSiteLayout.js +0 -172
  172. package/dist/themes/threads/index.js +0 -81
  173. package/dist/themes/threads/pages/HomePage.js +0 -25
  174. package/dist/themes/threads/timeline/TimelineFeed.js +0 -58
  175. package/dist/themes/threads/timeline/TimelineItem.js +0 -36
  176. package/dist/themes/threads/timeline/TimelineLoadMore.js +0 -23
  177. package/dist/themes/threads/timeline/groupByDate.js +0 -22
  178. package/dist/themes/threads/timeline/timelineMore.js +0 -107
  179. package/src/lib/__tests__/theme-components.test.ts +0 -105
  180. package/src/lib/theme-components.ts +0 -65
  181. package/src/routes/dash/navigation.tsx +0 -317
  182. package/src/theme/components/index.ts +0 -23
  183. package/src/theme/index.ts +0 -22
  184. package/src/theme/layouts/index.ts +0 -7
  185. package/src/themes/threads/ThreadsSiteLayout.tsx +0 -194
  186. package/src/themes/threads/index.ts +0 -100
  187. package/src/themes/threads/style.css +0 -336
  188. package/src/themes/threads/timeline/TimelineFeed.tsx +0 -62
  189. package/src/themes/threads/timeline/TimelineItem.tsx +0 -67
  190. package/src/themes/threads/timeline/TimelineLoadMore.tsx +0 -35
  191. package/src/themes/threads/timeline/groupByDate.ts +0 -30
  192. package/src/themes/threads/timeline/timelineMore.tsx +0 -130
  193. /package/dist/{theme → ui}/color-themes.js +0 -0
  194. /package/dist/{theme/components → ui/dash}/ActionButtons.js +0 -0
  195. /package/dist/{theme/components → ui/dash}/CrudPageHeader.js +0 -0
  196. /package/dist/{theme/components → ui/dash}/DangerZone.js +0 -0
  197. /package/dist/{theme/components → ui/dash}/ListItemRow.js +0 -0
  198. /package/dist/{theme/components → ui/dash}/PageForm.js +0 -0
  199. /package/dist/{theme/components → ui/shared}/EmptyState.js +0 -0
  200. /package/src/{theme → ui}/color-themes.ts +0 -0
  201. /package/src/{theme/components → ui/dash}/ActionButtons.tsx +0 -0
  202. /package/src/{theme/components → ui/dash}/CrudPageHeader.tsx +0 -0
  203. /package/src/{theme/components → ui/dash}/DangerZone.tsx +0 -0
  204. /package/src/{theme/components → ui/dash}/ListItemRow.tsx +0 -0
  205. /package/src/{theme/components → ui/dash}/PageForm.tsx +0 -0
  206. /package/src/{theme/components → ui/shared}/EmptyState.tsx +0 -0
@@ -18,6 +18,11 @@ msgstr ""
18
18
  #~ msgid "{count} replies"
19
19
  #~ msgstr "{count} replies"
20
20
 
21
+ #. @context: Custom CSS textarea placeholder
22
+ #: src/routes/dash/settings.tsx:364
23
+ msgid "/* Your custom CSS here */"
24
+ msgstr "/* Your custom CSS here */"
25
+
21
26
  #. @context: Navigation link
22
27
  #: src/routes/dash/collections.tsx:271
23
28
  msgid "← Back to Collections"
@@ -50,28 +55,50 @@ msgstr "302 (Temporary)"
50
55
  msgid "Account"
51
56
  msgstr "Account"
52
57
 
58
+ #. @context: Custom CSS settings description
59
+ #: src/routes/dash/settings.tsx:354
60
+ msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
61
+ msgstr "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
62
+
63
+ #. @context: Button to add a navigation link
64
+ #: src/routes/dash/pages.tsx:50
65
+ msgid "Add Link"
66
+ msgstr "Add Link"
67
+
53
68
  #. @context: Button to open media picker
54
- #: src/theme/components/PostForm.tsx:212
69
+ #. @context: Compose toolbar - add media
70
+ #: src/ui/compose/ComposeDialog.tsx:219
71
+ #: src/ui/dash/PostForm.tsx:211
55
72
  msgid "Add Media"
56
73
  msgstr "Add Media"
57
74
 
75
+ #. @context: Button to add page to navigation
76
+ #: src/routes/dash/pages.tsx:185
77
+ msgid "Add to nav"
78
+ msgstr "Add to nav"
79
+
58
80
  #. @context: Archive filter - all formats
59
- #: src/themes/threads/pages/ArchivePage.tsx:71
81
+ #: src/ui/pages/ArchivePage.tsx:71
60
82
  msgid "All"
61
83
  msgstr "All"
62
84
 
85
+ #. @context: Empty state when all pages are in nav
86
+ #: src/routes/dash/pages.tsx:168
87
+ msgid "All pages are in your navigation."
88
+ msgstr "All pages are in your navigation."
89
+
63
90
  #. @context: Settings sub-navigation tab
64
91
  #: src/routes/dash/settings.tsx:55
65
92
  msgid "Appearance"
66
93
  msgstr "Appearance"
67
94
 
68
95
  #. @context: Archive page title
69
- #: src/themes/threads/pages/ArchivePage.tsx:56
96
+ #: src/ui/pages/ArchivePage.tsx:55
70
97
  msgid "Archive"
71
98
  msgstr "Archive"
72
99
 
73
100
  #. @context: Confirmation dialog when deleting a post from the list
74
- #: src/theme/components/PostList.tsx:60
101
+ #: src/ui/dash/PostList.tsx:60
75
102
  msgid "Are you sure you want to delete this post? This cannot be undone."
76
103
  msgstr "Are you sure you want to delete this post? This cannot be undone."
77
104
 
@@ -116,17 +143,17 @@ msgstr "Back"
116
143
  #. @context: Button to cancel form
117
144
  #: src/routes/dash/collections.tsx:186
118
145
  #: src/routes/dash/collections.tsx:354
119
- #: src/routes/dash/navigation.tsx:192
146
+ #: src/routes/dash/pages.tsx:400
120
147
  #: src/routes/dash/redirects.tsx:177
121
- #: src/theme/components/PageForm.tsx:171
122
- #: src/theme/components/PostForm.tsx:337
148
+ #: src/ui/dash/PageForm.tsx:171
149
+ #: src/ui/dash/PostForm.tsx:312
123
150
  msgid "Cancel"
124
151
  msgstr "Cancel"
125
152
 
126
153
  #. @context: Button to change password
127
154
  #. @context: Settings section heading
128
- #: src/routes/dash/settings.tsx:417
129
- #: src/routes/dash/settings.tsx:482
155
+ #: src/routes/dash/settings.tsx:474
156
+ #: src/routes/dash/settings.tsx:539
130
157
  msgid "Change Password"
131
158
  msgstr "Change Password"
132
159
 
@@ -135,15 +162,24 @@ msgstr "Change Password"
135
162
  msgid "Click image to view full size"
136
163
  msgstr "Click image to view full size"
137
164
 
165
+ #. @context: Compose collection field
166
+ #. @context: Compose toolbar - toggle collection
167
+ #: src/ui/compose/ComposeDialog.tsx:191
168
+ #: src/ui/compose/ComposeDialog.tsx:272
169
+ msgid "Collection"
170
+ msgstr "Collection"
171
+
138
172
  #. @context: Post form field - assign to collection
139
- #: src/theme/components/PostForm.tsx:265
173
+ #: src/ui/dash/PostForm.tsx:264
140
174
  msgid "Collection (optional)"
141
175
  msgstr "Collection (optional)"
142
176
 
177
+ #. @context: Collections page heading
143
178
  #. @context: Dashboard heading
144
179
  #. @context: Dashboard navigation - collections management
145
180
  #: src/routes/dash/collections.tsx:35
146
- #: src/theme/layouts/DashLayout.tsx:114
181
+ #: src/ui/layouts/DashLayout.tsx:114
182
+ #: src/ui/pages/CollectionsPage.tsx:18
147
183
  msgid "Collections"
148
184
  msgstr "Collections"
149
185
 
@@ -153,29 +189,29 @@ msgstr "Collections"
153
189
  #~ msgstr "Collections (optional)"
154
190
 
155
191
  #. @context: Appearance settings heading
156
- #: src/routes/dash/settings.tsx:311
192
+ #: src/routes/dash/settings.tsx:315
157
193
  msgid "Color theme"
158
194
  msgstr "Color theme"
159
195
 
160
196
  #. @context: Setup form submit button
161
- #: src/app.tsx:275
197
+ #: src/app.tsx:289
162
198
  msgid "Complete Setup"
163
199
  msgstr "Complete Setup"
164
200
 
165
201
  #. @context: Password form field
166
- #: src/routes/dash/settings.tsx:459
202
+ #: src/routes/dash/settings.tsx:516
167
203
  msgid "Confirm New Password"
168
204
  msgstr "Confirm New Password"
169
205
 
170
206
  #. @context: Password reset form field
171
- #: src/app.tsx:536
207
+ #: src/app.tsx:562
172
208
  msgid "Confirm Password"
173
209
  msgstr "Confirm Password"
174
210
 
175
211
  #. @context: Page form field label - content
176
212
  #. @context: Post form field
177
- #: src/theme/components/PageForm.tsx:96
178
- #: src/theme/components/PostForm.tsx:105
213
+ #: src/ui/dash/PageForm.tsx:96
214
+ #: src/ui/dash/PostForm.tsx:104
179
215
  msgid "Content"
180
216
  msgstr "Content"
181
217
 
@@ -192,12 +228,12 @@ msgid "Create Collection"
192
228
  msgstr "Create Collection"
193
229
 
194
230
  #. @context: Button to save new navigation link
195
- #: src/routes/dash/navigation.tsx:178
231
+ #: src/routes/dash/pages.tsx:386
196
232
  msgid "Create Link"
197
233
  msgstr "Create Link"
198
234
 
199
235
  #. @context: Button to create new page
200
- #: src/theme/components/PageForm.tsx:157
236
+ #: src/ui/dash/PageForm.tsx:157
201
237
  msgid "Create Page"
202
238
  msgstr "Create Page"
203
239
 
@@ -207,25 +243,30 @@ msgid "Create Redirect"
207
243
  msgstr "Create Redirect"
208
244
 
209
245
  #. @context: Setup page description
210
- #: src/app.tsx:215
246
+ #: src/app.tsx:229
211
247
  msgid "Create your admin account."
212
248
  msgstr "Create your admin account."
213
249
 
214
250
  #. @context: Button in empty state to create first page
215
251
  #: src/routes/dash/pages.tsx:48
216
- msgid "Create your first page"
217
- msgstr "Create your first page"
252
+ #~ msgid "Create your first page"
253
+ #~ msgstr "Create your first page"
218
254
 
219
255
  #. @context: Button in empty state to create first post
220
- #: src/theme/components/PostList.tsx:29
256
+ #: src/ui/dash/PostList.tsx:29
221
257
  msgid "Create your first post"
222
258
  msgstr "Create your first post"
223
259
 
224
260
  #. @context: Password form field
225
- #: src/routes/dash/settings.tsx:426
261
+ #: src/routes/dash/settings.tsx:483
226
262
  msgid "Current Password"
227
263
  msgstr "Current Password"
228
264
 
265
+ #. @context: Appearance settings heading for custom CSS
266
+ #: src/routes/dash/settings.tsx:348
267
+ msgid "Custom CSS"
268
+ msgstr "Custom CSS"
269
+
229
270
  #. @context: Post form field
230
271
  #: src/theme/components/PostForm.tsx:297
231
272
  #~ msgid "Custom Path (optional)"
@@ -233,32 +274,32 @@ msgstr "Current Password"
233
274
 
234
275
  #. @context: Post form field
235
276
  #: src/theme/components/PostForm.tsx:293
236
- msgid "Custom Slug (optional)"
237
- msgstr "Custom Slug (optional)"
277
+ #~ msgid "Custom Slug (optional)"
278
+ #~ msgstr "Custom Slug (optional)"
238
279
 
239
280
  #. @context: Slug help text
240
281
  #: src/theme/components/PostForm.tsx:306
241
- msgid "Custom URL path. Leave empty to use default /p/ID format."
242
- msgstr "Custom URL path. Leave empty to use default /p/ID format."
282
+ #~ msgid "Custom URL path. Leave empty to use default /p/ID format."
283
+ #~ msgstr "Custom URL path. Leave empty to use default /p/ID format."
243
284
 
244
285
  #. @context: Section heading for dangerous/destructive actions
245
- #: src/theme/components/DangerZone.tsx:55
286
+ #: src/ui/dash/DangerZone.tsx:55
246
287
  msgid "Danger Zone"
247
288
  msgstr "Danger Zone"
248
289
 
249
290
  #. @context: Dashboard main heading
250
291
  #. @context: Dashboard navigation - main dashboard page
251
292
  #: src/routes/dash/index.tsx:36
252
- #: src/theme/layouts/DashLayout.tsx:78
293
+ #: src/ui/layouts/DashLayout.tsx:78
253
294
  msgid "Dashboard"
254
295
  msgstr "Dashboard"
255
296
 
256
297
  #. @context: Button to delete item
257
- #. @context: Button to delete navigation link
298
+ #. @context: Button to delete link
258
299
  #. @context: Button to delete redirect
259
- #: src/routes/dash/navigation.tsx:66
300
+ #: src/routes/dash/pages.tsx:120
260
301
  #: src/routes/dash/redirects.tsx:60
261
- #: src/theme/components/ActionButtons.tsx:80
302
+ #: src/ui/dash/ActionButtons.tsx:80
262
303
  msgid "Delete"
263
304
  msgstr "Delete"
264
305
 
@@ -273,7 +314,7 @@ msgid "Delete Media"
273
314
  msgstr "Delete Media"
274
315
 
275
316
  #. @context: Button to delete page
276
- #: src/routes/dash/pages.tsx:151
317
+ #: src/routes/dash/pages.tsx:278
277
318
  msgid "Delete Page"
278
319
  msgstr "Delete Page"
279
320
 
@@ -283,7 +324,7 @@ msgid "Deleting this media will remove it permanently from storage."
283
324
  msgstr "Deleting this media will remove it permanently from storage."
284
325
 
285
326
  #. @context: Hint shown on signin page when demo credentials are pre-filled
286
- #: src/app.tsx:374
327
+ #: src/app.tsx:400
287
328
  msgid "Demo account pre-filled. Just click Sign In."
288
329
  msgstr "Demo account pre-filled. Just click Sign In."
289
330
 
@@ -295,21 +336,25 @@ msgid "Description (optional)"
295
336
  msgstr "Description (optional)"
296
337
 
297
338
  #. @context: Navigation label help text
298
- #: src/routes/dash/navigation.tsx:140
339
+ #: src/routes/dash/pages.tsx:348
299
340
  msgid "Display text for the link"
300
341
  msgstr "Display text for the link"
301
342
 
302
343
  #. @context: Close media picker button
303
- #: src/theme/components/PostForm.tsx:359
344
+ #. @context: Close media picker button
345
+ #: src/ui/compose/ComposeDialog.tsx:375
346
+ #: src/ui/dash/PostForm.tsx:334
304
347
  msgid "Done"
305
348
  msgstr "Done"
306
349
 
350
+ #. @context: Compose button - save as draft
307
351
  #. @context: Page status option - draft
308
352
  #. @context: Post status badge - draft
309
353
  #. @context: Post status option
310
- #: src/theme/components/PageForm.tsx:133
311
- #: src/theme/components/PostForm.tsx:235
312
- #: src/theme/components/VisibilityBadge.tsx:35
354
+ #: src/ui/compose/ComposeDialog.tsx:326
355
+ #: src/ui/dash/PageForm.tsx:133
356
+ #: src/ui/dash/PostForm.tsx:234
357
+ #: src/ui/dash/StatusBadge.tsx:34
313
358
  msgid "Draft"
314
359
  msgstr "Draft"
315
360
 
@@ -326,19 +371,21 @@ msgstr "Drafts"
326
371
  #. @context: Button to edit collection
327
372
  #. @context: Button to edit collection
328
373
  #. @context: Button to edit item
329
- #. @context: Button to edit navigation link
374
+ #. @context: Button to edit link
375
+ #. @context: Button to edit page
330
376
  #. @context: Button to edit page
331
377
  #. @context: Button to edit page
332
378
  #. @context: Button to edit post
333
379
  #. @context: Button to edit post
334
380
  #: src/routes/dash/collections.tsx:66
335
381
  #: src/routes/dash/collections.tsx:220
336
- #: src/routes/dash/navigation.tsx:61
337
- #: src/routes/dash/pages.tsx:62
338
- #: src/routes/dash/pages.tsx:129
339
- #: src/routes/dash/posts.tsx:142
340
- #: src/theme/components/ActionButtons.tsx:72
341
- #: src/theme/components/PostList.tsx:50
382
+ #: src/routes/dash/pages.tsx:94
383
+ #: src/routes/dash/pages.tsx:115
384
+ #: src/routes/dash/pages.tsx:192
385
+ #: src/routes/dash/pages.tsx:256
386
+ #: src/routes/dash/posts.tsx:140
387
+ #: src/ui/dash/ActionButtons.tsx:72
388
+ #: src/ui/dash/PostList.tsx:50
342
389
  msgid "Edit"
343
390
  msgstr "Edit"
344
391
 
@@ -348,17 +395,17 @@ msgid "Edit Collection"
348
395
  msgstr "Edit Collection"
349
396
 
350
397
  #. @context: Page heading
351
- #: src/routes/dash/navigation.tsx:105
398
+ #: src/routes/dash/pages.tsx:313
352
399
  msgid "Edit Link"
353
400
  msgstr "Edit Link"
354
401
 
355
402
  #. @context: Edit page main heading
356
- #: src/routes/dash/pages.tsx:167
403
+ #: src/routes/dash/pages.tsx:294
357
404
  msgid "Edit Page"
358
405
  msgstr "Edit Page"
359
406
 
360
407
  #. @context: Page heading
361
- #: src/routes/dash/posts.tsx:185
408
+ #: src/routes/dash/posts.tsx:183
362
409
  msgid "Edit Post"
363
410
  msgstr "Edit Post"
364
411
 
@@ -373,37 +420,41 @@ msgstr "Edit Post"
373
420
 
374
421
  #. @context: Setup/signin form field - email
375
422
  #. @context: Setup/signin form field - email
376
- #: src/app.tsx:245
377
- #: src/app.tsx:389
423
+ #: src/app.tsx:259
424
+ #: src/app.tsx:415
378
425
  msgid "Email"
379
426
  msgstr "Email"
380
427
 
381
428
  #. @context: Password reset page description
382
- #: src/app.tsx:505
429
+ #: src/app.tsx:531
383
430
  msgid "Enter your new password."
384
431
  msgstr "Enter your new password."
385
432
 
386
433
  #. @context: Archive filter - featured posts
434
+ #. @context: Browse filter for featured posts
435
+ #. @context: Compose checkbox - mark as featured
387
436
  #. @context: Post badge - featured
388
437
  #. @context: Post form checkbox - mark as featured
389
- #: src/theme/components/PostForm.tsx:247
390
- #: src/theme/components/VisibilityBadge.tsx:46
391
- #: src/themes/threads/pages/ArchivePage.tsx:89
438
+ #: src/ui/compose/ComposeDialog.tsx:305
439
+ #: src/ui/dash/PostForm.tsx:246
440
+ #: src/ui/dash/StatusBadge.tsx:45
441
+ #: src/ui/layouts/SiteLayout.tsx:49
442
+ #: src/ui/pages/ArchivePage.tsx:92
392
443
  msgid "Featured"
393
444
  msgstr "Featured"
394
445
 
395
446
  #. @context: Post form field - post format
396
- #: src/theme/components/PostForm.tsx:65
447
+ #: src/ui/dash/PostForm.tsx:64
397
448
  msgid "Format"
398
449
  msgstr "Format"
399
450
 
400
451
  #. @context: Search results count - multiple
401
- #: src/themes/threads/pages/SearchPage.tsx:76
452
+ #: src/ui/pages/SearchPage.tsx:73
402
453
  msgid "Found {count} results"
403
454
  msgstr "Found {count} results"
404
455
 
405
456
  #. @context: Search results count - single
406
- #: src/themes/threads/pages/SearchPage.tsx:72
457
+ #: src/ui/pages/SearchPage.tsx:69
407
458
  msgid "Found 1 result"
408
459
  msgstr "Found 1 result"
409
460
 
@@ -439,12 +490,12 @@ msgid "Images are automatically optimized: resized to max 1920px, converted to W
439
490
  msgstr "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
440
491
 
441
492
  #. @context: Password reset error heading
442
- #: src/app.tsx:580
493
+ #: src/app.tsx:606
443
494
  msgid "Invalid or Expired Link"
444
495
  msgstr "Invalid or Expired Link"
445
496
 
446
497
  #. @context: Navigation link form field
447
- #: src/routes/dash/navigation.tsx:127
498
+ #: src/routes/dash/pages.tsx:335
448
499
  msgid "Label"
449
500
  msgstr "Label"
450
501
 
@@ -453,39 +504,51 @@ msgstr "Label"
453
504
  msgid "Language"
454
505
  msgstr "Language"
455
506
 
507
+ #. @context: Browse filter for latest posts
508
+ #: src/ui/layouts/SiteLayout.tsx:42
509
+ msgid "Latest"
510
+ msgstr "Latest"
511
+
456
512
  #. @context: Setup page description
457
513
  #: src/app.tsx:130
458
514
  #~ msgid "Let's set up your site."
459
515
  #~ msgstr "Let's set up your site."
460
516
 
517
+ #. @context: Nav item type badge
518
+ #: src/routes/dash/pages.tsx:145
519
+ msgid "link"
520
+ msgstr "link"
521
+
522
+ #. @context: Compose format tab
461
523
  #. @context: Post format badge - link
462
524
  #. @context: Post format label - link
463
525
  #. @context: Post format option
464
- #: src/theme/components/PostForm.tsx:75
465
- #: src/theme/components/TypeBadge.tsx:21
466
- #: src/themes/threads/pages/ArchivePage.tsx:17
526
+ #: src/ui/compose/ComposeDialog.tsx:101
527
+ #: src/ui/dash/FormatBadge.tsx:20
528
+ #: src/ui/dash/PostForm.tsx:74
529
+ #: src/ui/pages/ArchivePage.tsx:17
467
530
  msgid "Link"
468
531
  msgstr "Link"
469
532
 
470
533
  #. @context: Post format label plural - links
471
- #: src/themes/threads/pages/ArchivePage.tsx:33
534
+ #: src/ui/pages/ArchivePage.tsx:33
472
535
  msgid "Links"
473
536
  msgstr "Links"
474
537
 
475
538
  #. @context: Pagination button - load more items
476
- #: src/theme/components/Pagination.tsx:103
539
+ #: src/ui/shared/Pagination.tsx:104
477
540
  msgid "Load more"
478
541
  msgstr "Load more"
479
542
 
480
- #. @context: Loading indicator while fetching more posts
481
543
  #. @context: Loading state for media picker
482
- #: src/theme/components/PostForm.tsx:370
483
- #: src/themes/threads/timeline/TimelineLoadMore.tsx:28
544
+ #. @context: Loading state for media picker
545
+ #: src/ui/compose/ComposeDialog.tsx:386
546
+ #: src/ui/dash/PostForm.tsx:345
484
547
  msgid "Loading..."
485
548
  msgstr "Loading..."
486
549
 
487
550
  #. @context: Page slug validation message
488
- #: src/theme/components/PageForm.tsx:77
551
+ #: src/ui/dash/PageForm.tsx:77
489
552
  msgid "Lowercase letters, numbers, and hyphens only"
490
553
  msgstr "Lowercase letters, numbers, and hyphens only"
491
554
 
@@ -498,8 +561,8 @@ msgstr "Markdown"
498
561
  #. @context: Media main heading
499
562
  #. @context: Post form field - media attachments
500
563
  #: src/routes/dash/media.tsx:151
501
- #: src/theme/components/PostForm.tsx:159
502
- #: src/theme/layouts/DashLayout.tsx:105
564
+ #: src/ui/dash/PostForm.tsx:158
565
+ #: src/ui/layouts/DashLayout.tsx:105
503
566
  msgid "Media"
504
567
  msgstr "Media"
505
568
 
@@ -514,7 +577,7 @@ msgid "My Collection"
514
577
  msgstr "My Collection"
515
578
 
516
579
  #. @context: Account settings form field
517
- #: src/routes/dash/settings.tsx:373
580
+ #: src/routes/dash/settings.tsx:430
518
581
  msgid "Name"
519
582
  msgstr "Name"
520
583
 
@@ -522,8 +585,8 @@ msgstr "Name"
522
585
  #. @context: Dashboard navigation - navigation links management
523
586
  #: src/routes/dash/navigation.tsx:29
524
587
  #: src/theme/layouts/DashLayout.tsx:133
525
- msgid "Navigation"
526
- msgstr "Navigation"
588
+ #~ msgid "Navigation"
589
+ #~ msgstr "Navigation"
527
590
 
528
591
  #. @context: Help text with link
529
592
  #: src/routes/dash/index.tsx:78
@@ -539,35 +602,33 @@ msgstr "Need help? Visit the <0>documentation</0>"
539
602
  msgid "New Collection"
540
603
  msgstr "New Collection"
541
604
 
542
- #. @context: Button to create new navigation link
543
- #. @context: Button to create new navigation link
544
605
  #. @context: Page heading
545
- #: src/routes/dash/navigation.tsx:33
546
- #: src/routes/dash/navigation.tsx:46
547
- #: src/routes/dash/navigation.tsx:106
606
+ #: src/routes/dash/pages.tsx:314
548
607
  msgid "New Link"
549
608
  msgstr "New Link"
550
609
 
551
610
  #. @context: Button to create new page
552
611
  #. @context: New page main heading
553
- #: src/routes/dash/pages.tsx:35
554
- #: src/routes/dash/pages.tsx:105
612
+ #: src/routes/dash/pages.tsx:56
613
+ #: src/routes/dash/pages.tsx:232
555
614
  msgid "New Page"
556
615
  msgstr "New Page"
557
616
 
558
617
  #. @context: Password form field
559
618
  #. @context: Password reset form field
560
- #: src/app.tsx:520
561
- #: src/routes/dash/settings.tsx:442
619
+ #: src/app.tsx:546
620
+ #: src/routes/dash/settings.tsx:499
562
621
  msgid "New Password"
563
622
  msgstr "New Password"
564
623
 
565
624
  #. @context: Button to create new post
566
625
  #. @context: Button to create new post
626
+ #. @context: Compose dialog title
567
627
  #. @context: Page heading
568
628
  #: src/routes/dash/index.tsx:68
569
629
  #: src/routes/dash/posts.tsx:30
570
630
  #: src/routes/dash/posts.tsx:46
631
+ #: src/ui/compose/ComposeDialog.tsx:66
571
632
  msgid "New Post"
572
633
  msgstr "New Post"
573
634
 
@@ -582,16 +643,23 @@ msgstr "New Redirect"
582
643
 
583
644
  #. @context: Pagination button - next page
584
645
  #. @context: Pagination button - next page
585
- #: src/theme/components/Pagination.tsx:49
586
- #: src/theme/components/Pagination.tsx:160
646
+ #: src/ui/shared/Pagination.tsx:50
647
+ #: src/ui/shared/Pagination.tsx:167
587
648
  msgid "Next"
588
649
  msgstr "Next"
589
650
 
590
651
  #. @context: Empty state message
652
+ #. @context: Empty state message on collections page
591
653
  #: src/routes/dash/collections.tsx:48
654
+ #: src/ui/pages/CollectionsPage.tsx:28
592
655
  msgid "No collections yet."
593
656
  msgstr "No collections yet."
594
657
 
658
+ #. @context: Empty state message on featured page
659
+ #: src/ui/pages/FeaturedPage.tsx:20
660
+ msgid "No featured posts yet."
661
+ msgstr "No featured posts yet."
662
+
595
663
  #. @context: Empty state message when no media exists
596
664
  #: src/routes/dash/media.tsx:186
597
665
  msgid "No media uploaded yet."
@@ -599,30 +667,35 @@ msgstr "No media uploaded yet."
599
667
 
600
668
  #. @context: Empty state message
601
669
  #: src/routes/dash/navigation.tsx:42
602
- msgid "No navigation links configured."
603
- msgstr "No navigation links configured."
670
+ #~ msgid "No navigation links configured."
671
+ #~ msgstr "No navigation links configured."
672
+
673
+ #. @context: Empty state for navigation section
674
+ #: src/routes/dash/pages.tsx:74
675
+ msgid "No navigation links yet. Add pages to navigation or create links."
676
+ msgstr "No navigation links yet. Add pages to navigation or create links."
604
677
 
605
678
  #. @context: Empty state message when no pages exist
606
679
  #: src/routes/dash/pages.tsx:44
607
- msgid "No pages yet."
608
- msgstr "No pages yet."
680
+ #~ msgid "No pages yet."
681
+ #~ msgstr "No pages yet."
609
682
 
610
683
  #. @context: Archive empty state
611
- #: src/themes/threads/pages/ArchivePage.tsx:100
684
+ #: src/ui/pages/ArchivePage.tsx:103
612
685
  msgid "No posts found."
613
686
  msgstr "No posts found."
614
687
 
615
688
  #. @context: Empty state message
616
689
  #. @context: Empty state message
617
690
  #: src/routes/dash/collections.tsx:243
618
- #: src/themes/threads/pages/CollectionPage.tsx:29
691
+ #: src/ui/pages/CollectionPage.tsx:29
619
692
  msgid "No posts in this collection."
620
693
  msgstr "No posts in this collection."
621
694
 
622
695
  #. @context: Empty state message on home page
623
696
  #. @context: Empty state message when no posts exist
624
- #: src/theme/components/PostList.tsx:25
625
- #: src/themes/threads/pages/HomePage.tsx:26
697
+ #: src/ui/dash/PostList.tsx:25
698
+ #: src/ui/pages/HomePage.tsx:23
626
699
  msgid "No posts yet."
627
700
  msgstr "No posts yet."
628
701
 
@@ -632,60 +705,76 @@ msgid "No redirects configured."
632
705
  msgstr "No redirects configured."
633
706
 
634
707
  #. @context: Search empty results
635
- #: src/themes/threads/pages/SearchPage.tsx:67
708
+ #: src/ui/pages/SearchPage.tsx:64
636
709
  msgid "No results found."
637
710
  msgstr "No results found."
638
711
 
639
712
  #. @context: No collection selected
640
- #: src/theme/components/PostForm.tsx:272
713
+ #. @context: No collection selected
714
+ #. @context: No rating selected
715
+ #: src/ui/compose/ComposeDialog.tsx:174
716
+ #: src/ui/compose/ComposeDialog.tsx:198
717
+ #: src/ui/dash/PostForm.tsx:271
641
718
  msgid "None"
642
719
  msgstr "None"
643
720
 
721
+ #. @context: Compose format tab
644
722
  #. @context: Post format badge - note
645
723
  #. @context: Post format label - note
646
724
  #. @context: Post format option
647
- #: src/theme/components/PostForm.tsx:72
648
- #: src/theme/components/TypeBadge.tsx:20
649
- #: src/themes/threads/pages/ArchivePage.tsx:16
725
+ #: src/ui/compose/ComposeDialog.tsx:90
726
+ #: src/ui/dash/FormatBadge.tsx:19
727
+ #: src/ui/dash/PostForm.tsx:71
728
+ #: src/ui/pages/ArchivePage.tsx:16
650
729
  msgid "Note"
651
730
  msgstr "Note"
652
731
 
653
732
  #. @context: Post format label plural - notes
654
- #: src/themes/threads/pages/ArchivePage.tsx:29
733
+ #: src/ui/pages/ArchivePage.tsx:29
655
734
  msgid "Notes"
656
735
  msgstr "Notes"
657
736
 
737
+ #. @context: Section heading for pages not in navigation
738
+ #: src/routes/dash/pages.tsx:161
739
+ msgid "Other pages"
740
+ msgstr "Other pages"
741
+
742
+ #. @context: Nav item type badge
743
+ #: src/routes/dash/pages.tsx:141
744
+ msgid "page"
745
+ msgstr "page"
746
+
658
747
  #. @context: Default page heading when untitled
659
- #: src/routes/dash/pages.tsx:120
748
+ #: src/routes/dash/pages.tsx:247
660
749
  msgid "Page"
661
750
  msgstr "Page"
662
751
 
663
752
  #. @context: Pagination - current page indicator
664
- #: src/theme/components/Pagination.tsx:164
753
+ #: src/ui/shared/Pagination.tsx:227
665
754
  msgid "Page {page}"
666
755
  msgstr "Page {page}"
667
756
 
668
757
  #. @context: Page content placeholder
669
- #: src/theme/components/PageForm.tsx:104
758
+ #: src/ui/dash/PageForm.tsx:104
670
759
  msgid "Page content (Markdown supported)..."
671
760
  msgstr "Page content (Markdown supported)..."
672
761
 
673
762
  #. @context: Page title placeholder
674
- #: src/theme/components/PageForm.tsx:53
763
+ #: src/ui/dash/PageForm.tsx:53
675
764
  msgid "Page title..."
676
765
  msgstr "Page title..."
677
766
 
678
767
  #. @context: Dashboard navigation - pages management
679
768
  #. @context: Pages main heading
680
- #: src/routes/dash/pages.tsx:34
681
- #: src/theme/layouts/DashLayout.tsx:96
769
+ #: src/routes/dash/pages.tsx:43
770
+ #: src/ui/layouts/DashLayout.tsx:96
682
771
  msgid "Pages"
683
772
  msgstr "Pages"
684
773
 
685
774
  #. @context: Setup/signin form field - password
686
775
  #. @context: Setup/signin form field - password
687
- #: src/app.tsx:260
688
- #: src/app.tsx:398
776
+ #: src/app.tsx:274
777
+ #: src/app.tsx:424
689
778
  msgid "Password"
690
779
  msgstr "Password"
691
780
 
@@ -695,38 +784,59 @@ msgstr "Password"
695
784
  #~ msgstr "Path"
696
785
 
697
786
  #. @context: Navigation URL help text
698
- #: src/routes/dash/navigation.tsx:162
787
+ #: src/routes/dash/pages.tsx:370
699
788
  msgid "Path (e.g. /archive) or full URL (e.g. https://example.com)"
700
789
  msgstr "Path (e.g. /archive) or full URL (e.g. https://example.com)"
701
790
 
702
791
  #. @context: Link to individual post in thread
703
792
  #. @context: Link to permanent URL of post
704
- #: src/theme/components/ThreadView.tsx:71
705
- #: src/themes/threads/pages/PostPage.tsx:39
793
+ #: src/ui/pages/PostPage.tsx:48
794
+ #: src/ui/shared/ThreadView.tsx:71
706
795
  msgid "Permalink"
707
796
  msgstr "Permalink"
708
797
 
798
+ #. @context: Compose checkbox - pin to top
709
799
  #. @context: Post badge - pinned
710
800
  #. @context: Post form checkbox - pin to top
711
- #: src/theme/components/PostForm.tsx:254
712
- #: src/theme/components/VisibilityBadge.tsx:54
801
+ #: src/ui/compose/ComposeDialog.tsx:312
802
+ #: src/ui/dash/PostForm.tsx:253
803
+ #: src/ui/dash/StatusBadge.tsx:53
713
804
  msgid "Pinned"
714
805
  msgstr "Pinned"
715
806
 
807
+ #. @context: Singular post count label
808
+ #: src/ui/pages/CollectionsPage.tsx:56
809
+ msgid "post"
810
+ msgstr "post"
811
+
812
+ #. @context: Compose button - publish post
813
+ #. @context: Compose prompt post button
716
814
  #. @context: Default post title
717
- #: src/routes/dash/posts.tsx:130
815
+ #: src/routes/dash/posts.tsx:128
816
+ #: src/ui/compose/ComposeDialog.tsx:339
817
+ #: src/ui/compose/ComposePrompt.tsx:48
718
818
  msgid "Post"
719
819
  msgstr "Post"
720
820
 
721
821
  #. @context: Post title placeholder
722
- #: src/theme/components/PostForm.tsx:95
822
+ #: src/ui/dash/PostForm.tsx:94
723
823
  msgid "Post title..."
724
824
  msgstr "Post title..."
725
825
 
826
+ #. @context: Compose loading text while posting
827
+ #: src/ui/compose/ComposeDialog.tsx:345
828
+ msgid "Posting..."
829
+ msgstr "Posting..."
830
+
831
+ #. @context: Plural post count label
832
+ #: src/ui/pages/CollectionsPage.tsx:60
833
+ msgid "posts"
834
+ msgstr "posts"
835
+
726
836
  #. @context: Dashboard heading
727
837
  #. @context: Dashboard navigation - posts management
728
838
  #: src/routes/dash/posts.tsx:29
729
- #: src/theme/layouts/DashLayout.tsx:87
839
+ #: src/ui/layouts/DashLayout.tsx:87
730
840
  msgid "Posts"
731
841
  msgstr "Posts"
732
842
 
@@ -742,8 +852,8 @@ msgstr "Preview"
742
852
 
743
853
  #. @context: Pagination button - previous page
744
854
  #. @context: Pagination button - previous page
745
- #: src/theme/components/Pagination.tsx:45
746
- #: src/theme/components/Pagination.tsx:156
855
+ #: src/ui/shared/Pagination.tsx:46
856
+ #: src/ui/shared/Pagination.tsx:163
747
857
  msgid "Previous"
748
858
  msgstr "Previous"
749
859
 
@@ -759,30 +869,32 @@ msgstr "Previous"
759
869
  #. @context: Loading text shown on submit button while request is in progress
760
870
  #. @context: Loading text shown on submit button while request is in progress
761
871
  #. @context: Loading text shown on submit button while request is in progress
872
+ #. @context: Loading text shown on submit button while request is in progress
762
873
  #. @context: Upload status - processing
763
- #: src/app.tsx:281
764
- #: src/app.tsx:418
765
- #: src/app.tsx:558
874
+ #: src/app.tsx:295
875
+ #: src/app.tsx:444
876
+ #: src/app.tsx:584
766
877
  #: src/routes/dash/collections.tsx:178
767
878
  #: src/routes/dash/collections.tsx:346
768
879
  #: src/routes/dash/media.tsx:119
769
- #: src/routes/dash/navigation.tsx:184
880
+ #: src/routes/dash/pages.tsx:392
770
881
  #: src/routes/dash/redirects.tsx:169
771
882
  #: src/routes/dash/settings.tsx:200
772
- #: src/routes/dash/settings.tsx:400
773
- #: src/routes/dash/settings.tsx:488
774
- #: src/theme/components/PageForm.tsx:163
775
- #: src/theme/components/PostForm.tsx:329
883
+ #: src/routes/dash/settings.tsx:384
884
+ #: src/routes/dash/settings.tsx:457
885
+ #: src/routes/dash/settings.tsx:545
886
+ #: src/ui/dash/PageForm.tsx:163
887
+ #: src/ui/dash/PostForm.tsx:304
776
888
  msgid "Processing..."
777
889
  msgstr "Processing..."
778
890
 
779
891
  #. @context: Account settings section heading
780
- #: src/routes/dash/settings.tsx:364
892
+ #: src/routes/dash/settings.tsx:421
781
893
  msgid "Profile"
782
894
  msgstr "Profile"
783
895
 
784
896
  #. @context: Button to publish new post
785
- #: src/theme/components/PostForm.tsx:323
897
+ #: src/ui/dash/PostForm.tsx:298
786
898
  msgid "Publish"
787
899
  msgstr "Publish"
788
900
 
@@ -791,9 +903,9 @@ msgstr "Publish"
791
903
  #. @context: Post status label
792
904
  #. @context: Post status option
793
905
  #: src/routes/dash/index.tsx:45
794
- #: src/theme/components/PageForm.tsx:127
795
- #: src/theme/components/PostForm.tsx:229
796
- #: src/theme/components/VisibilityBadge.tsx:31
906
+ #: src/ui/dash/PageForm.tsx:127
907
+ #: src/ui/dash/PostForm.tsx:228
908
+ #: src/ui/dash/StatusBadge.tsx:30
797
909
  msgid "Published"
798
910
  msgstr "Published"
799
911
 
@@ -803,7 +915,7 @@ msgstr "Published"
803
915
  #~ msgstr "Published pages are accessible via their path. Drafts are not visible."
804
916
 
805
917
  #. @context: Page status helper text
806
- #: src/theme/components/PageForm.tsx:140
918
+ #: src/ui/dash/PageForm.tsx:140
807
919
  msgid "Published pages are accessible via their slug. Drafts are not visible."
808
920
  msgstr "Published pages are accessible via their slug. Drafts are not visible."
809
921
 
@@ -822,51 +934,65 @@ msgstr "Quick Actions"
822
934
  #~ msgid "Quiet (normal)"
823
935
  #~ msgstr "Quiet (normal)"
824
936
 
937
+ #. @context: Compose format tab
825
938
  #. @context: Post format badge - quote
826
939
  #. @context: Post format label - quote
827
940
  #. @context: Post format option
828
- #: src/theme/components/PostForm.tsx:78
829
- #: src/theme/components/TypeBadge.tsx:22
830
- #: src/themes/threads/pages/ArchivePage.tsx:18
941
+ #: src/ui/compose/ComposeDialog.tsx:112
942
+ #: src/ui/dash/FormatBadge.tsx:21
943
+ #: src/ui/dash/PostForm.tsx:77
944
+ #: src/ui/pages/ArchivePage.tsx:18
831
945
  msgid "Quote"
832
946
  msgstr "Quote"
833
947
 
834
948
  #. @context: Post form field - quoted text
835
- #: src/theme/components/PostForm.tsx:138
949
+ #: src/ui/dash/PostForm.tsx:137
836
950
  msgid "Quote Text"
837
951
  msgstr "Quote Text"
838
952
 
839
953
  #. @context: Post format label plural - quotes
840
- #: src/themes/threads/pages/ArchivePage.tsx:37
954
+ #: src/ui/pages/ArchivePage.tsx:37
841
955
  msgid "Quotes"
842
956
  msgstr "Quotes"
843
957
 
958
+ #. @context: Compose rating field
959
+ #. @context: Compose toolbar - toggle rating
960
+ #: src/ui/compose/ComposeDialog.tsx:167
961
+ #: src/ui/compose/ComposeDialog.tsx:246
962
+ msgid "Rating"
963
+ msgstr "Rating"
964
+
844
965
  #. @context: Dashboard heading
845
966
  #. @context: Dashboard navigation - URL redirects
846
967
  #: src/routes/dash/redirects.tsx:29
847
- #: src/theme/layouts/DashLayout.tsx:124
968
+ #: src/ui/layouts/DashLayout.tsx:124
848
969
  msgid "Redirects"
849
970
  msgstr "Redirects"
850
971
 
851
972
  #. @context: Remove media attachment button
852
- #: src/theme/components/PostForm.tsx:195
973
+ #: src/ui/dash/PostForm.tsx:194
853
974
  msgid "Remove"
854
975
  msgstr "Remove"
855
976
 
856
977
  #. @context: Password reset form submit button
857
978
  #. @context: Password reset page heading
858
- #: src/app.tsx:499
859
- #: src/app.tsx:552
979
+ #: src/app.tsx:525
980
+ #: src/app.tsx:578
860
981
  msgid "Reset Password"
861
982
  msgstr "Reset Password"
862
983
 
863
984
  #. @context: Button to save edited navigation link
864
- #: src/routes/dash/navigation.tsx:174
985
+ #: src/routes/dash/pages.tsx:382
865
986
  msgid "Save Changes"
866
987
  msgstr "Save Changes"
867
988
 
989
+ #. @context: Button to save custom CSS
990
+ #: src/routes/dash/settings.tsx:378
991
+ msgid "Save CSS"
992
+ msgstr "Save CSS"
993
+
868
994
  #. @context: Button to save profile
869
- #: src/routes/dash/settings.tsx:394
995
+ #: src/routes/dash/settings.tsx:451
870
996
  msgid "Save Profile"
871
997
  msgstr "Save Profile"
872
998
 
@@ -875,10 +1001,12 @@ msgstr "Save Profile"
875
1001
  msgid "Save Settings"
876
1002
  msgstr "Save Settings"
877
1003
 
1004
+ #. @context: Search icon link in browse nav
878
1005
  #. @context: Search page title
879
1006
  #. @context: Search submit button
880
- #: src/themes/threads/pages/SearchPage.tsx:21
881
- #: src/themes/threads/pages/SearchPage.tsx:47
1007
+ #: src/ui/layouts/SiteLayout.tsx:70
1008
+ #: src/ui/pages/SearchPage.tsx:20
1009
+ #: src/ui/pages/SearchPage.tsx:44
882
1010
  msgid "Search"
883
1011
  msgstr "Search"
884
1012
 
@@ -888,12 +1016,14 @@ msgstr "Search"
888
1016
  #~ msgstr "Search failed. Please try again."
889
1017
 
890
1018
  #. @context: Search input placeholder
891
- #: src/themes/threads/pages/SearchPage.tsx:39
1019
+ #: src/ui/pages/SearchPage.tsx:36
892
1020
  msgid "Search posts..."
893
1021
  msgstr "Search posts..."
894
1022
 
895
1023
  #. @context: Media picker dialog title
896
- #: src/theme/components/PostForm.tsx:349
1024
+ #. @context: Media picker dialog title
1025
+ #: src/ui/compose/ComposeDialog.tsx:365
1026
+ #: src/ui/dash/PostForm.tsx:324
897
1027
  msgid "Select Media"
898
1028
  msgstr "Select Media"
899
1029
 
@@ -902,9 +1032,9 @@ msgstr "Select Media"
902
1032
  #. @context: Dashboard heading
903
1033
  #. @context: Dashboard navigation - site settings
904
1034
  #: src/routes/dash/settings.tsx:118
905
- #: src/routes/dash/settings.tsx:300
906
- #: src/routes/dash/settings.tsx:351
907
- #: src/theme/layouts/DashLayout.tsx:143
1035
+ #: src/routes/dash/settings.tsx:304
1036
+ #: src/routes/dash/settings.tsx:408
1037
+ #: src/ui/layouts/DashLayout.tsx:133
908
1038
  msgid "Settings"
909
1039
  msgstr "Settings"
910
1040
 
@@ -915,19 +1045,19 @@ msgstr "Settings"
915
1045
 
916
1046
  #. @context: Link to show remaining thread replies
917
1047
  #. placeholder {0}: remainingCount === 1 ? "reply" : "replies"
918
- #: src/themes/threads/timeline/ThreadPreview.tsx:38
1048
+ #: src/ui/feed/ThreadPreview.tsx:37
919
1049
  msgid "Show {remainingCount} more {0}"
920
1050
  msgstr "Show {remainingCount} more {0}"
921
1051
 
922
1052
  #. @context: Sign in form submit button
923
1053
  #. @context: Sign in page heading
924
- #: src/app.tsx:365
925
- #: src/app.tsx:412
1054
+ #: src/app.tsx:391
1055
+ #: src/app.tsx:438
926
1056
  msgid "Sign In"
927
1057
  msgstr "Sign In"
928
1058
 
929
1059
  #. @context: Dashboard header link to sign out
930
- #: src/theme/layouts/DashLayout.tsx:63
1060
+ #: src/ui/layouts/DashLayout.tsx:63
931
1061
  msgid "Sign Out"
932
1062
  msgstr "Sign Out"
933
1063
 
@@ -946,7 +1076,7 @@ msgstr "Site Name"
946
1076
  #. @context: Page form field label - URL slug
947
1077
  #: src/routes/dash/collections.tsx:133
948
1078
  #: src/routes/dash/collections.tsx:314
949
- #: src/theme/components/PageForm.tsx:64
1079
+ #: src/ui/dash/PageForm.tsx:64
950
1080
  msgid "Slug"
951
1081
  msgstr "Slug"
952
1082
 
@@ -962,8 +1092,8 @@ msgstr "Slug"
962
1092
 
963
1093
  #. @context: Page form field label - publish status
964
1094
  #. @context: Post form field
965
- #: src/theme/components/PageForm.tsx:117
966
- #: src/theme/components/PostForm.tsx:222
1095
+ #: src/ui/dash/PageForm.tsx:117
1096
+ #: src/ui/dash/PostForm.tsx:221
967
1097
  msgid "Status"
968
1098
  msgstr "Status"
969
1099
 
@@ -982,38 +1112,40 @@ msgstr "The destination path or URL"
982
1112
  msgid "The path to redirect from"
983
1113
  msgstr "The path to redirect from"
984
1114
 
1115
+ #. @context: Compose quote text placeholder
985
1116
  #. @context: Quote text placeholder
986
- #: src/theme/components/PostForm.tsx:146
1117
+ #: src/ui/compose/ComposeDialog.tsx:156
1118
+ #: src/ui/dash/PostForm.tsx:145
987
1119
  msgid "The text being quoted..."
988
1120
  msgstr "The text being quoted..."
989
1121
 
990
1122
  #. @context: Page slug helper text
991
- #: src/theme/components/PageForm.tsx:85
1123
+ #: src/ui/dash/PageForm.tsx:85
992
1124
  msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
993
1125
  msgstr "The URL path for this page. Use lowercase letters, numbers, and hyphens."
994
1126
 
995
1127
  #. @context: Password reset error description
996
- #: src/app.tsx:588
1128
+ #: src/app.tsx:614
997
1129
  msgid "This password reset link is invalid or has expired. Please generate a new one."
998
1130
  msgstr "This password reset link is invalid or has expired. Please generate a new one."
999
1131
 
1000
1132
  #. @context: Appearance settings description
1001
- #: src/routes/dash/settings.tsx:317
1133
+ #: src/routes/dash/settings.tsx:321
1002
1134
  msgid "This will theme both your site and your dashboard. All color themes support dark mode."
1003
1135
  msgstr "This will theme both your site and your dashboard. All color themes support dark mode."
1004
1136
 
1005
1137
  #. @context: Thread view indicator - first post in thread
1006
- #: src/theme/components/ThreadView.tsx:60
1138
+ #: src/ui/shared/ThreadView.tsx:60
1007
1139
  msgid "Thread start"
1008
1140
  msgstr "Thread start"
1009
1141
 
1010
1142
  #. @context: Thread view header - multiple posts
1011
- #: src/theme/components/ThreadView.tsx:105
1143
+ #: src/ui/shared/ThreadView.tsx:105
1012
1144
  msgid "Thread with {count} posts"
1013
1145
  msgstr "Thread with {count} posts"
1014
1146
 
1015
1147
  #. @context: Thread view header - single post
1016
- #: src/theme/components/ThreadView.tsx:101
1148
+ #: src/ui/shared/ThreadView.tsx:101
1017
1149
  msgid "Thread with 1 post"
1018
1150
  msgstr "Thread with 1 post"
1019
1151
 
@@ -1022,12 +1154,14 @@ msgstr "Thread with 1 post"
1022
1154
  #. @context: Page form field label - title
1023
1155
  #: src/routes/dash/collections.tsx:114
1024
1156
  #: src/routes/dash/collections.tsx:304
1025
- #: src/theme/components/PageForm.tsx:44
1157
+ #: src/ui/dash/PageForm.tsx:44
1026
1158
  msgid "Title"
1027
1159
  msgstr "Title"
1028
1160
 
1161
+ #. @context: Compose title placeholder
1029
1162
  #. @context: Post form field
1030
- #: src/theme/components/PostForm.tsx:86
1163
+ #: src/ui/compose/ComposeDialog.tsx:124
1164
+ #: src/ui/dash/PostForm.tsx:85
1031
1165
  msgid "Title (optional)"
1032
1166
  msgstr "Title (optional)"
1033
1167
 
@@ -1041,6 +1175,11 @@ msgstr "To Path"
1041
1175
  msgid "Type"
1042
1176
  msgstr "Type"
1043
1177
 
1178
+ #. @context: Button to remove page from navigation
1179
+ #: src/routes/dash/pages.tsx:104
1180
+ msgid "Un-nav"
1181
+ msgstr "Un-nav"
1182
+
1044
1183
  #. @context: Post visibility badge - unlisted
1045
1184
  #. @context: Post visibility option
1046
1185
  #: src/theme/components/PostForm.tsx:255
@@ -1050,13 +1189,13 @@ msgstr "Type"
1050
1189
 
1051
1190
  #. @context: Default title for untitled page
1052
1191
  #. @context: Default title for untitled post
1053
- #: src/routes/dash/pages.tsx:86
1054
- #: src/theme/components/PostList.tsx:86
1192
+ #: src/routes/dash/pages.tsx:212
1193
+ #: src/ui/dash/PostList.tsx:86
1055
1194
  msgid "Untitled"
1056
1195
  msgstr "Untitled"
1057
1196
 
1058
1197
  #. @context: Button to update existing post
1059
- #: src/theme/components/PostForm.tsx:319
1198
+ #: src/ui/dash/PostForm.tsx:294
1060
1199
  msgid "Update"
1061
1200
  msgstr "Update"
1062
1201
 
@@ -1066,7 +1205,7 @@ msgid "Update Collection"
1066
1205
  msgstr "Update Collection"
1067
1206
 
1068
1207
  #. @context: Button to update existing page
1069
- #: src/theme/components/PageForm.tsx:153
1208
+ #: src/ui/dash/PageForm.tsx:153
1070
1209
  msgid "Update Page"
1071
1210
  msgstr "Update Page"
1072
1211
 
@@ -1093,12 +1232,12 @@ msgstr "Uploading..."
1093
1232
  #. @context: Media detail section - URL
1094
1233
  #. @context: Navigation link form field
1095
1234
  #: src/routes/dash/media.tsx:318
1096
- #: src/routes/dash/navigation.tsx:149
1235
+ #: src/routes/dash/pages.tsx:357
1097
1236
  msgid "URL"
1098
1237
  msgstr "URL"
1099
1238
 
1100
1239
  #. @context: Post form field - source URL
1101
- #: src/theme/components/PostForm.tsx:122
1240
+ #: src/ui/dash/PostForm.tsx:121
1102
1241
  msgid "URL (optional)"
1103
1242
  msgstr "URL (optional)"
1104
1243
 
@@ -1121,11 +1260,11 @@ msgstr "Use this URL to embed the media in your posts."
1121
1260
  #. @context: Button to view post on public site
1122
1261
  #: src/routes/dash/collections.tsx:71
1123
1262
  #: src/routes/dash/collections.tsx:225
1124
- #: src/routes/dash/pages.tsx:69
1125
- #: src/routes/dash/pages.tsx:134
1126
- #: src/routes/dash/posts.tsx:147
1127
- #: src/theme/components/ActionButtons.tsx:76
1128
- #: src/theme/components/PostList.tsx:55
1263
+ #: src/routes/dash/pages.tsx:199
1264
+ #: src/routes/dash/pages.tsx:261
1265
+ #: src/routes/dash/posts.tsx:145
1266
+ #: src/ui/dash/ActionButtons.tsx:76
1267
+ #: src/ui/dash/PostList.tsx:55
1129
1268
  msgid "View"
1130
1269
  msgstr "View"
1131
1270
 
@@ -1135,7 +1274,7 @@ msgstr "View"
1135
1274
  #~ msgstr "View all posts →"
1136
1275
 
1137
1276
  #. @context: Dashboard header link to view the public site
1138
- #: src/theme/layouts/DashLayout.tsx:53
1277
+ #: src/ui/layouts/DashLayout.tsx:53
1139
1278
  msgid "View Site"
1140
1279
  msgstr "View Site"
1141
1280
 
@@ -1145,12 +1284,19 @@ msgstr "View Site"
1145
1284
  #~ msgstr "Visibility"
1146
1285
 
1147
1286
  #. @context: Setup page welcome heading
1148
- #: src/app.tsx:209
1287
+ #: src/app.tsx:223
1149
1288
  msgid "Welcome to Jant"
1150
1289
  msgstr "Welcome to Jant"
1151
1290
 
1291
+ #. @context: Compose prompt placeholder text
1292
+ #: src/ui/compose/ComposePrompt.tsx:37
1293
+ msgid "What's new?"
1294
+ msgstr "What's new?"
1295
+
1296
+ #. @context: Compose body placeholder
1152
1297
  #. @context: Post content placeholder
1153
- #: src/theme/components/PostForm.tsx:110
1298
+ #: src/ui/compose/ComposeDialog.tsx:134
1299
+ #: src/ui/dash/PostForm.tsx:109
1154
1300
  msgid "What's on your mind?"
1155
1301
  msgstr "What's on your mind?"
1156
1302
 
@@ -1160,6 +1306,11 @@ msgid "What's this collection about?"
1160
1306
  msgstr "What's this collection about?"
1161
1307
 
1162
1308
  #. @context: Setup form field - user name
1163
- #: src/app.tsx:230
1309
+ #: src/app.tsx:244
1164
1310
  msgid "Your Name"
1165
1311
  msgstr "Your Name"
1312
+
1313
+ #. @context: Section heading for navigation items
1314
+ #: src/routes/dash/pages.tsx:67
1315
+ msgid "Your site navigation"
1316
+ msgstr "Your site navigation"