@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} 条回复"
20
20
 
21
+ #. @context: Custom CSS textarea placeholder
22
+ #: src/routes/dash/settings.tsx:364
23
+ msgid "/* Your custom CSS here */"
24
+ msgstr ""
25
+
21
26
  #. @context: Navigation link
22
27
  #: src/routes/dash/collections.tsx:271
23
28
  msgid "← Back to Collections"
@@ -43,28 +48,50 @@ msgstr "302(临时)"
43
48
  msgid "Account"
44
49
  msgstr "账户"
45
50
 
51
+ #. @context: Custom CSS settings description
52
+ #: src/routes/dash/settings.tsx:354
53
+ msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
54
+ msgstr ""
55
+
56
+ #. @context: Button to add a navigation link
57
+ #: src/routes/dash/pages.tsx:50
58
+ msgid "Add Link"
59
+ msgstr ""
60
+
46
61
  #. @context: Button to open media picker
47
- #: src/theme/components/PostForm.tsx:212
62
+ #. @context: Compose toolbar - add media
63
+ #: src/ui/compose/ComposeDialog.tsx:219
64
+ #: src/ui/dash/PostForm.tsx:211
48
65
  msgid "Add Media"
49
66
  msgstr "添加媒体"
50
67
 
68
+ #. @context: Button to add page to navigation
69
+ #: src/routes/dash/pages.tsx:185
70
+ msgid "Add to nav"
71
+ msgstr ""
72
+
51
73
  #. @context: Archive filter - all formats
52
- #: src/themes/threads/pages/ArchivePage.tsx:71
74
+ #: src/ui/pages/ArchivePage.tsx:71
53
75
  msgid "All"
54
76
  msgstr "所有"
55
77
 
78
+ #. @context: Empty state when all pages are in nav
79
+ #: src/routes/dash/pages.tsx:168
80
+ msgid "All pages are in your navigation."
81
+ msgstr ""
82
+
56
83
  #. @context: Settings sub-navigation tab
57
84
  #: src/routes/dash/settings.tsx:55
58
85
  msgid "Appearance"
59
86
  msgstr "外观"
60
87
 
61
88
  #. @context: Archive page title
62
- #: src/themes/threads/pages/ArchivePage.tsx:56
89
+ #: src/ui/pages/ArchivePage.tsx:55
63
90
  msgid "Archive"
64
91
  msgstr "档案馆"
65
92
 
66
93
  #. @context: Confirmation dialog when deleting a post from the list
67
- #: src/theme/components/PostList.tsx:60
94
+ #: src/ui/dash/PostList.tsx:60
68
95
  msgid "Are you sure you want to delete this post? This cannot be undone."
69
96
  msgstr ""
70
97
 
@@ -100,17 +127,17 @@ msgstr "返回"
100
127
  #. @context: Button to cancel form
101
128
  #: src/routes/dash/collections.tsx:186
102
129
  #: src/routes/dash/collections.tsx:354
103
- #: src/routes/dash/navigation.tsx:192
130
+ #: src/routes/dash/pages.tsx:400
104
131
  #: src/routes/dash/redirects.tsx:177
105
- #: src/theme/components/PageForm.tsx:171
106
- #: src/theme/components/PostForm.tsx:337
132
+ #: src/ui/dash/PageForm.tsx:171
133
+ #: src/ui/dash/PostForm.tsx:312
107
134
  msgid "Cancel"
108
135
  msgstr "取消"
109
136
 
110
137
  #. @context: Button to change password
111
138
  #. @context: Settings section heading
112
- #: src/routes/dash/settings.tsx:417
113
- #: src/routes/dash/settings.tsx:482
139
+ #: src/routes/dash/settings.tsx:474
140
+ #: src/routes/dash/settings.tsx:539
114
141
  msgid "Change Password"
115
142
  msgstr "更改密码"
116
143
 
@@ -119,15 +146,24 @@ msgstr "更改密码"
119
146
  msgid "Click image to view full size"
120
147
  msgstr "点击图片查看完整尺寸"
121
148
 
149
+ #. @context: Compose collection field
150
+ #. @context: Compose toolbar - toggle collection
151
+ #: src/ui/compose/ComposeDialog.tsx:191
152
+ #: src/ui/compose/ComposeDialog.tsx:272
153
+ msgid "Collection"
154
+ msgstr ""
155
+
122
156
  #. @context: Post form field - assign to collection
123
- #: src/theme/components/PostForm.tsx:265
157
+ #: src/ui/dash/PostForm.tsx:264
124
158
  msgid "Collection (optional)"
125
159
  msgstr ""
126
160
 
161
+ #. @context: Collections page heading
127
162
  #. @context: Dashboard heading
128
163
  #. @context: Dashboard navigation - collections management
129
164
  #: src/routes/dash/collections.tsx:35
130
- #: src/theme/layouts/DashLayout.tsx:114
165
+ #: src/ui/layouts/DashLayout.tsx:114
166
+ #: src/ui/pages/CollectionsPage.tsx:18
131
167
  msgid "Collections"
132
168
  msgstr "收藏夹"
133
169
 
@@ -137,29 +173,29 @@ msgstr "收藏夹"
137
173
  #~ msgstr "集合(可选)"
138
174
 
139
175
  #. @context: Appearance settings heading
140
- #: src/routes/dash/settings.tsx:311
176
+ #: src/routes/dash/settings.tsx:315
141
177
  msgid "Color theme"
142
178
  msgstr "颜色主题"
143
179
 
144
180
  #. @context: Setup form submit button
145
- #: src/app.tsx:275
181
+ #: src/app.tsx:289
146
182
  msgid "Complete Setup"
147
183
  msgstr "完成设置"
148
184
 
149
185
  #. @context: Password form field
150
- #: src/routes/dash/settings.tsx:459
186
+ #: src/routes/dash/settings.tsx:516
151
187
  msgid "Confirm New Password"
152
188
  msgstr "确认新密码"
153
189
 
154
190
  #. @context: Password reset form field
155
- #: src/app.tsx:536
191
+ #: src/app.tsx:562
156
192
  msgid "Confirm Password"
157
193
  msgstr "确认密码"
158
194
 
159
195
  #. @context: Page form field label - content
160
196
  #. @context: Post form field
161
- #: src/theme/components/PageForm.tsx:96
162
- #: src/theme/components/PostForm.tsx:105
197
+ #: src/ui/dash/PageForm.tsx:96
198
+ #: src/ui/dash/PostForm.tsx:104
163
199
  msgid "Content"
164
200
  msgstr "内容"
165
201
 
@@ -176,12 +212,12 @@ msgid "Create Collection"
176
212
  msgstr "创建集合"
177
213
 
178
214
  #. @context: Button to save new navigation link
179
- #: src/routes/dash/navigation.tsx:178
215
+ #: src/routes/dash/pages.tsx:386
180
216
  msgid "Create Link"
181
217
  msgstr "创建链接"
182
218
 
183
219
  #. @context: Button to create new page
184
- #: src/theme/components/PageForm.tsx:157
220
+ #: src/ui/dash/PageForm.tsx:157
185
221
  msgid "Create Page"
186
222
  msgstr "创建页面"
187
223
 
@@ -191,25 +227,30 @@ msgid "Create Redirect"
191
227
  msgstr "创建重定向"
192
228
 
193
229
  #. @context: Setup page description
194
- #: src/app.tsx:215
230
+ #: src/app.tsx:229
195
231
  msgid "Create your admin account."
196
232
  msgstr "创建您的管理员账户。"
197
233
 
198
234
  #. @context: Button in empty state to create first page
199
235
  #: src/routes/dash/pages.tsx:48
200
- msgid "Create your first page"
201
- msgstr "创建您的第一页"
236
+ #~ msgid "Create your first page"
237
+ #~ msgstr "创建您的第一页"
202
238
 
203
239
  #. @context: Button in empty state to create first post
204
- #: src/theme/components/PostList.tsx:29
240
+ #: src/ui/dash/PostList.tsx:29
205
241
  msgid "Create your first post"
206
242
  msgstr "创建你的第一篇帖子"
207
243
 
208
244
  #. @context: Password form field
209
- #: src/routes/dash/settings.tsx:426
245
+ #: src/routes/dash/settings.tsx:483
210
246
  msgid "Current Password"
211
247
  msgstr "当前密码"
212
248
 
249
+ #. @context: Appearance settings heading for custom CSS
250
+ #: src/routes/dash/settings.tsx:348
251
+ msgid "Custom CSS"
252
+ msgstr ""
253
+
213
254
  #. @context: Post form field
214
255
  #: src/theme/components/PostForm.tsx:297
215
256
  #~ msgid "Custom Path (optional)"
@@ -217,32 +258,32 @@ msgstr "当前密码"
217
258
 
218
259
  #. @context: Post form field
219
260
  #: src/theme/components/PostForm.tsx:293
220
- msgid "Custom Slug (optional)"
221
- msgstr ""
261
+ #~ msgid "Custom Slug (optional)"
262
+ #~ msgstr ""
222
263
 
223
264
  #. @context: Slug help text
224
265
  #: src/theme/components/PostForm.tsx:306
225
- msgid "Custom URL path. Leave empty to use default /p/ID format."
226
- msgstr ""
266
+ #~ msgid "Custom URL path. Leave empty to use default /p/ID format."
267
+ #~ msgstr ""
227
268
 
228
269
  #. @context: Section heading for dangerous/destructive actions
229
- #: src/theme/components/DangerZone.tsx:55
270
+ #: src/ui/dash/DangerZone.tsx:55
230
271
  msgid "Danger Zone"
231
272
  msgstr "危险区域"
232
273
 
233
274
  #. @context: Dashboard main heading
234
275
  #. @context: Dashboard navigation - main dashboard page
235
276
  #: src/routes/dash/index.tsx:36
236
- #: src/theme/layouts/DashLayout.tsx:78
277
+ #: src/ui/layouts/DashLayout.tsx:78
237
278
  msgid "Dashboard"
238
279
  msgstr "仪表板"
239
280
 
240
281
  #. @context: Button to delete item
241
- #. @context: Button to delete navigation link
282
+ #. @context: Button to delete link
242
283
  #. @context: Button to delete redirect
243
- #: src/routes/dash/navigation.tsx:66
284
+ #: src/routes/dash/pages.tsx:120
244
285
  #: src/routes/dash/redirects.tsx:60
245
- #: src/theme/components/ActionButtons.tsx:80
286
+ #: src/ui/dash/ActionButtons.tsx:80
246
287
  msgid "Delete"
247
288
  msgstr "删除"
248
289
 
@@ -257,7 +298,7 @@ msgid "Delete Media"
257
298
  msgstr "删除媒体"
258
299
 
259
300
  #. @context: Button to delete page
260
- #: src/routes/dash/pages.tsx:151
301
+ #: src/routes/dash/pages.tsx:278
261
302
  msgid "Delete Page"
262
303
  msgstr "删除页面"
263
304
 
@@ -267,7 +308,7 @@ msgid "Deleting this media will remove it permanently from storage."
267
308
  msgstr "删除此媒体将永久从存储中移除。"
268
309
 
269
310
  #. @context: Hint shown on signin page when demo credentials are pre-filled
270
- #: src/app.tsx:374
311
+ #: src/app.tsx:400
271
312
  msgid "Demo account pre-filled. Just click Sign In."
272
313
  msgstr "演示账户已预填。只需点击登录。"
273
314
 
@@ -279,21 +320,25 @@ msgid "Description (optional)"
279
320
  msgstr "描述(可选)"
280
321
 
281
322
  #. @context: Navigation label help text
282
- #: src/routes/dash/navigation.tsx:140
323
+ #: src/routes/dash/pages.tsx:348
283
324
  msgid "Display text for the link"
284
325
  msgstr "链接的显示文本"
285
326
 
286
327
  #. @context: Close media picker button
287
- #: src/theme/components/PostForm.tsx:359
328
+ #. @context: Close media picker button
329
+ #: src/ui/compose/ComposeDialog.tsx:375
330
+ #: src/ui/dash/PostForm.tsx:334
288
331
  msgid "Done"
289
332
  msgstr "完成"
290
333
 
334
+ #. @context: Compose button - save as draft
291
335
  #. @context: Page status option - draft
292
336
  #. @context: Post status badge - draft
293
337
  #. @context: Post status option
294
- #: src/theme/components/PageForm.tsx:133
295
- #: src/theme/components/PostForm.tsx:235
296
- #: src/theme/components/VisibilityBadge.tsx:35
338
+ #: src/ui/compose/ComposeDialog.tsx:326
339
+ #: src/ui/dash/PageForm.tsx:133
340
+ #: src/ui/dash/PostForm.tsx:234
341
+ #: src/ui/dash/StatusBadge.tsx:34
297
342
  msgid "Draft"
298
343
  msgstr "草稿"
299
344
 
@@ -310,19 +355,21 @@ msgstr "草稿"
310
355
  #. @context: Button to edit collection
311
356
  #. @context: Button to edit collection
312
357
  #. @context: Button to edit item
313
- #. @context: Button to edit navigation link
358
+ #. @context: Button to edit link
359
+ #. @context: Button to edit page
314
360
  #. @context: Button to edit page
315
361
  #. @context: Button to edit page
316
362
  #. @context: Button to edit post
317
363
  #. @context: Button to edit post
318
364
  #: src/routes/dash/collections.tsx:66
319
365
  #: src/routes/dash/collections.tsx:220
320
- #: src/routes/dash/navigation.tsx:61
321
- #: src/routes/dash/pages.tsx:62
322
- #: src/routes/dash/pages.tsx:129
323
- #: src/routes/dash/posts.tsx:142
324
- #: src/theme/components/ActionButtons.tsx:72
325
- #: src/theme/components/PostList.tsx:50
366
+ #: src/routes/dash/pages.tsx:94
367
+ #: src/routes/dash/pages.tsx:115
368
+ #: src/routes/dash/pages.tsx:192
369
+ #: src/routes/dash/pages.tsx:256
370
+ #: src/routes/dash/posts.tsx:140
371
+ #: src/ui/dash/ActionButtons.tsx:72
372
+ #: src/ui/dash/PostList.tsx:50
326
373
  msgid "Edit"
327
374
  msgstr "编辑"
328
375
 
@@ -332,53 +379,57 @@ msgid "Edit Collection"
332
379
  msgstr "编辑集合"
333
380
 
334
381
  #. @context: Page heading
335
- #: src/routes/dash/navigation.tsx:105
382
+ #: src/routes/dash/pages.tsx:313
336
383
  msgid "Edit Link"
337
384
  msgstr "编辑链接"
338
385
 
339
386
  #. @context: Edit page main heading
340
- #: src/routes/dash/pages.tsx:167
387
+ #: src/routes/dash/pages.tsx:294
341
388
  msgid "Edit Page"
342
389
  msgstr "编辑页面"
343
390
 
344
391
  #. @context: Page heading
345
- #: src/routes/dash/posts.tsx:185
392
+ #: src/routes/dash/posts.tsx:183
346
393
  msgid "Edit Post"
347
394
  msgstr "编辑帖子"
348
395
 
349
396
  #. @context: Setup/signin form field - email
350
397
  #. @context: Setup/signin form field - email
351
- #: src/app.tsx:245
352
- #: src/app.tsx:389
398
+ #: src/app.tsx:259
399
+ #: src/app.tsx:415
353
400
  msgid "Email"
354
401
  msgstr "电子邮件"
355
402
 
356
403
  #. @context: Password reset page description
357
- #: src/app.tsx:505
404
+ #: src/app.tsx:531
358
405
  msgid "Enter your new password."
359
406
  msgstr "输入您的新密码。"
360
407
 
361
408
  #. @context: Archive filter - featured posts
409
+ #. @context: Browse filter for featured posts
410
+ #. @context: Compose checkbox - mark as featured
362
411
  #. @context: Post badge - featured
363
412
  #. @context: Post form checkbox - mark as featured
364
- #: src/theme/components/PostForm.tsx:247
365
- #: src/theme/components/VisibilityBadge.tsx:46
366
- #: src/themes/threads/pages/ArchivePage.tsx:89
413
+ #: src/ui/compose/ComposeDialog.tsx:305
414
+ #: src/ui/dash/PostForm.tsx:246
415
+ #: src/ui/dash/StatusBadge.tsx:45
416
+ #: src/ui/layouts/SiteLayout.tsx:49
417
+ #: src/ui/pages/ArchivePage.tsx:92
367
418
  msgid "Featured"
368
419
  msgstr "精选"
369
420
 
370
421
  #. @context: Post form field - post format
371
- #: src/theme/components/PostForm.tsx:65
422
+ #: src/ui/dash/PostForm.tsx:64
372
423
  msgid "Format"
373
424
  msgstr ""
374
425
 
375
426
  #. @context: Search results count - multiple
376
- #: src/themes/threads/pages/SearchPage.tsx:76
427
+ #: src/ui/pages/SearchPage.tsx:73
377
428
  msgid "Found {count} results"
378
429
  msgstr "找到 {count} 个结果"
379
430
 
380
431
  #. @context: Search results count - single
381
- #: src/themes/threads/pages/SearchPage.tsx:72
432
+ #: src/ui/pages/SearchPage.tsx:69
382
433
  msgid "Found 1 result"
383
434
  msgstr "找到 1 个结果"
384
435
 
@@ -414,12 +465,12 @@ msgid "Images are automatically optimized: resized to max 1920px, converted to W
414
465
  msgstr "图像会自动优化:调整大小至最大 1920px,转换为 WebP,并去除元数据。"
415
466
 
416
467
  #. @context: Password reset error heading
417
- #: src/app.tsx:580
468
+ #: src/app.tsx:606
418
469
  msgid "Invalid or Expired Link"
419
470
  msgstr "无效或过期的链接"
420
471
 
421
472
  #. @context: Navigation link form field
422
- #: src/routes/dash/navigation.tsx:127
473
+ #: src/routes/dash/pages.tsx:335
423
474
  msgid "Label"
424
475
  msgstr "标签"
425
476
 
@@ -428,34 +479,46 @@ msgstr "标签"
428
479
  msgid "Language"
429
480
  msgstr "语言"
430
481
 
482
+ #. @context: Browse filter for latest posts
483
+ #: src/ui/layouts/SiteLayout.tsx:42
484
+ msgid "Latest"
485
+ msgstr ""
486
+
487
+ #. @context: Nav item type badge
488
+ #: src/routes/dash/pages.tsx:145
489
+ msgid "link"
490
+ msgstr ""
491
+
492
+ #. @context: Compose format tab
431
493
  #. @context: Post format badge - link
432
494
  #. @context: Post format label - link
433
495
  #. @context: Post format option
434
- #: src/theme/components/PostForm.tsx:75
435
- #: src/theme/components/TypeBadge.tsx:21
436
- #: src/themes/threads/pages/ArchivePage.tsx:17
496
+ #: src/ui/compose/ComposeDialog.tsx:101
497
+ #: src/ui/dash/FormatBadge.tsx:20
498
+ #: src/ui/dash/PostForm.tsx:74
499
+ #: src/ui/pages/ArchivePage.tsx:17
437
500
  msgid "Link"
438
501
  msgstr "链接"
439
502
 
440
503
  #. @context: Post format label plural - links
441
- #: src/themes/threads/pages/ArchivePage.tsx:33
504
+ #: src/ui/pages/ArchivePage.tsx:33
442
505
  msgid "Links"
443
506
  msgstr "链接"
444
507
 
445
508
  #. @context: Pagination button - load more items
446
- #: src/theme/components/Pagination.tsx:103
509
+ #: src/ui/shared/Pagination.tsx:104
447
510
  msgid "Load more"
448
511
  msgstr "加载更多"
449
512
 
450
- #. @context: Loading indicator while fetching more posts
451
513
  #. @context: Loading state for media picker
452
- #: src/theme/components/PostForm.tsx:370
453
- #: src/themes/threads/timeline/TimelineLoadMore.tsx:28
514
+ #. @context: Loading state for media picker
515
+ #: src/ui/compose/ComposeDialog.tsx:386
516
+ #: src/ui/dash/PostForm.tsx:345
454
517
  msgid "Loading..."
455
518
  msgstr "加载中..."
456
519
 
457
520
  #. @context: Page slug validation message
458
- #: src/theme/components/PageForm.tsx:77
521
+ #: src/ui/dash/PageForm.tsx:77
459
522
  msgid "Lowercase letters, numbers, and hyphens only"
460
523
  msgstr "仅允许小写字母、数字和连字符"
461
524
 
@@ -468,8 +531,8 @@ msgstr "Markdown"
468
531
  #. @context: Media main heading
469
532
  #. @context: Post form field - media attachments
470
533
  #: src/routes/dash/media.tsx:151
471
- #: src/theme/components/PostForm.tsx:159
472
- #: src/theme/layouts/DashLayout.tsx:105
534
+ #: src/ui/dash/PostForm.tsx:158
535
+ #: src/ui/layouts/DashLayout.tsx:105
473
536
  msgid "Media"
474
537
  msgstr "媒体"
475
538
 
@@ -479,7 +542,7 @@ msgid "My Collection"
479
542
  msgstr "我的收藏"
480
543
 
481
544
  #. @context: Account settings form field
482
- #: src/routes/dash/settings.tsx:373
545
+ #: src/routes/dash/settings.tsx:430
483
546
  msgid "Name"
484
547
  msgstr "姓名"
485
548
 
@@ -487,8 +550,8 @@ msgstr "姓名"
487
550
  #. @context: Dashboard navigation - navigation links management
488
551
  #: src/routes/dash/navigation.tsx:29
489
552
  #: src/theme/layouts/DashLayout.tsx:133
490
- msgid "Navigation"
491
- msgstr "导航"
553
+ #~ msgid "Navigation"
554
+ #~ msgstr "导航"
492
555
 
493
556
  #. @context: Help text with link
494
557
  #: src/routes/dash/index.tsx:78
@@ -504,35 +567,33 @@ msgstr "需要帮助吗?访问<0>文档</0>。"
504
567
  msgid "New Collection"
505
568
  msgstr "新收藏"
506
569
 
507
- #. @context: Button to create new navigation link
508
- #. @context: Button to create new navigation link
509
570
  #. @context: Page heading
510
- #: src/routes/dash/navigation.tsx:33
511
- #: src/routes/dash/navigation.tsx:46
512
- #: src/routes/dash/navigation.tsx:106
571
+ #: src/routes/dash/pages.tsx:314
513
572
  msgid "New Link"
514
573
  msgstr "新链接"
515
574
 
516
575
  #. @context: Button to create new page
517
576
  #. @context: New page main heading
518
- #: src/routes/dash/pages.tsx:35
519
- #: src/routes/dash/pages.tsx:105
577
+ #: src/routes/dash/pages.tsx:56
578
+ #: src/routes/dash/pages.tsx:232
520
579
  msgid "New Page"
521
580
  msgstr "新页面"
522
581
 
523
582
  #. @context: Password form field
524
583
  #. @context: Password reset form field
525
- #: src/app.tsx:520
526
- #: src/routes/dash/settings.tsx:442
584
+ #: src/app.tsx:546
585
+ #: src/routes/dash/settings.tsx:499
527
586
  msgid "New Password"
528
587
  msgstr "新密码"
529
588
 
530
589
  #. @context: Button to create new post
531
590
  #. @context: Button to create new post
591
+ #. @context: Compose dialog title
532
592
  #. @context: Page heading
533
593
  #: src/routes/dash/index.tsx:68
534
594
  #: src/routes/dash/posts.tsx:30
535
595
  #: src/routes/dash/posts.tsx:46
596
+ #: src/ui/compose/ComposeDialog.tsx:66
536
597
  msgid "New Post"
537
598
  msgstr "新帖子"
538
599
 
@@ -547,16 +608,23 @@ msgstr "新重定向"
547
608
 
548
609
  #. @context: Pagination button - next page
549
610
  #. @context: Pagination button - next page
550
- #: src/theme/components/Pagination.tsx:49
551
- #: src/theme/components/Pagination.tsx:160
611
+ #: src/ui/shared/Pagination.tsx:50
612
+ #: src/ui/shared/Pagination.tsx:167
552
613
  msgid "Next"
553
614
  msgstr "下一页"
554
615
 
555
616
  #. @context: Empty state message
617
+ #. @context: Empty state message on collections page
556
618
  #: src/routes/dash/collections.tsx:48
619
+ #: src/ui/pages/CollectionsPage.tsx:28
557
620
  msgid "No collections yet."
558
621
  msgstr "尚未有任何收藏。"
559
622
 
623
+ #. @context: Empty state message on featured page
624
+ #: src/ui/pages/FeaturedPage.tsx:20
625
+ msgid "No featured posts yet."
626
+ msgstr ""
627
+
560
628
  #. @context: Empty state message when no media exists
561
629
  #: src/routes/dash/media.tsx:186
562
630
  msgid "No media uploaded yet."
@@ -564,30 +632,35 @@ msgstr "尚未上传任何媒体。"
564
632
 
565
633
  #. @context: Empty state message
566
634
  #: src/routes/dash/navigation.tsx:42
567
- msgid "No navigation links configured."
568
- msgstr "未配置导航链接。"
635
+ #~ msgid "No navigation links configured."
636
+ #~ msgstr "未配置导航链接。"
637
+
638
+ #. @context: Empty state for navigation section
639
+ #: src/routes/dash/pages.tsx:74
640
+ msgid "No navigation links yet. Add pages to navigation or create links."
641
+ msgstr ""
569
642
 
570
643
  #. @context: Empty state message when no pages exist
571
644
  #: src/routes/dash/pages.tsx:44
572
- msgid "No pages yet."
573
- msgstr "还没有页面。"
645
+ #~ msgid "No pages yet."
646
+ #~ msgstr "还没有页面。"
574
647
 
575
648
  #. @context: Archive empty state
576
- #: src/themes/threads/pages/ArchivePage.tsx:100
649
+ #: src/ui/pages/ArchivePage.tsx:103
577
650
  msgid "No posts found."
578
651
  msgstr "未找到帖子。"
579
652
 
580
653
  #. @context: Empty state message
581
654
  #. @context: Empty state message
582
655
  #: src/routes/dash/collections.tsx:243
583
- #: src/themes/threads/pages/CollectionPage.tsx:29
656
+ #: src/ui/pages/CollectionPage.tsx:29
584
657
  msgid "No posts in this collection."
585
658
  msgstr "此集合中没有帖子。"
586
659
 
587
660
  #. @context: Empty state message on home page
588
661
  #. @context: Empty state message when no posts exist
589
- #: src/theme/components/PostList.tsx:25
590
- #: src/themes/threads/pages/HomePage.tsx:26
662
+ #: src/ui/dash/PostList.tsx:25
663
+ #: src/ui/pages/HomePage.tsx:23
591
664
  msgid "No posts yet."
592
665
  msgstr "还没有帖子。"
593
666
 
@@ -597,60 +670,76 @@ msgid "No redirects configured."
597
670
  msgstr "未配置重定向。"
598
671
 
599
672
  #. @context: Search empty results
600
- #: src/themes/threads/pages/SearchPage.tsx:67
673
+ #: src/ui/pages/SearchPage.tsx:64
601
674
  msgid "No results found."
602
675
  msgstr "未找到结果。"
603
676
 
604
677
  #. @context: No collection selected
605
- #: src/theme/components/PostForm.tsx:272
678
+ #. @context: No collection selected
679
+ #. @context: No rating selected
680
+ #: src/ui/compose/ComposeDialog.tsx:174
681
+ #: src/ui/compose/ComposeDialog.tsx:198
682
+ #: src/ui/dash/PostForm.tsx:271
606
683
  msgid "None"
607
684
  msgstr ""
608
685
 
686
+ #. @context: Compose format tab
609
687
  #. @context: Post format badge - note
610
688
  #. @context: Post format label - note
611
689
  #. @context: Post format option
612
- #: src/theme/components/PostForm.tsx:72
613
- #: src/theme/components/TypeBadge.tsx:20
614
- #: src/themes/threads/pages/ArchivePage.tsx:16
690
+ #: src/ui/compose/ComposeDialog.tsx:90
691
+ #: src/ui/dash/FormatBadge.tsx:19
692
+ #: src/ui/dash/PostForm.tsx:71
693
+ #: src/ui/pages/ArchivePage.tsx:16
615
694
  msgid "Note"
616
695
  msgstr "注意"
617
696
 
618
697
  #. @context: Post format label plural - notes
619
- #: src/themes/threads/pages/ArchivePage.tsx:29
698
+ #: src/ui/pages/ArchivePage.tsx:29
620
699
  msgid "Notes"
621
700
  msgstr "笔记"
622
701
 
702
+ #. @context: Section heading for pages not in navigation
703
+ #: src/routes/dash/pages.tsx:161
704
+ msgid "Other pages"
705
+ msgstr ""
706
+
707
+ #. @context: Nav item type badge
708
+ #: src/routes/dash/pages.tsx:141
709
+ msgid "page"
710
+ msgstr ""
711
+
623
712
  #. @context: Default page heading when untitled
624
- #: src/routes/dash/pages.tsx:120
713
+ #: src/routes/dash/pages.tsx:247
625
714
  msgid "Page"
626
715
  msgstr "页面"
627
716
 
628
717
  #. @context: Pagination - current page indicator
629
- #: src/theme/components/Pagination.tsx:164
718
+ #: src/ui/shared/Pagination.tsx:227
630
719
  msgid "Page {page}"
631
720
  msgstr "页面 {page}"
632
721
 
633
722
  #. @context: Page content placeholder
634
- #: src/theme/components/PageForm.tsx:104
723
+ #: src/ui/dash/PageForm.tsx:104
635
724
  msgid "Page content (Markdown supported)..."
636
725
  msgstr "页面内容(支持Markdown)..."
637
726
 
638
727
  #. @context: Page title placeholder
639
- #: src/theme/components/PageForm.tsx:53
728
+ #: src/ui/dash/PageForm.tsx:53
640
729
  msgid "Page title..."
641
730
  msgstr "页面标题..."
642
731
 
643
732
  #. @context: Dashboard navigation - pages management
644
733
  #. @context: Pages main heading
645
- #: src/routes/dash/pages.tsx:34
646
- #: src/theme/layouts/DashLayout.tsx:96
734
+ #: src/routes/dash/pages.tsx:43
735
+ #: src/ui/layouts/DashLayout.tsx:96
647
736
  msgid "Pages"
648
737
  msgstr "页面"
649
738
 
650
739
  #. @context: Setup/signin form field - password
651
740
  #. @context: Setup/signin form field - password
652
- #: src/app.tsx:260
653
- #: src/app.tsx:398
741
+ #: src/app.tsx:274
742
+ #: src/app.tsx:424
654
743
  msgid "Password"
655
744
  msgstr "密码"
656
745
 
@@ -660,38 +749,59 @@ msgstr "密码"
660
749
  #~ msgstr "路径"
661
750
 
662
751
  #. @context: Navigation URL help text
663
- #: src/routes/dash/navigation.tsx:162
752
+ #: src/routes/dash/pages.tsx:370
664
753
  msgid "Path (e.g. /archive) or full URL (e.g. https://example.com)"
665
754
  msgstr "路径(例如 /archive)或完整 URL(例如 https://example.com)"
666
755
 
667
756
  #. @context: Link to individual post in thread
668
757
  #. @context: Link to permanent URL of post
669
- #: src/theme/components/ThreadView.tsx:71
670
- #: src/themes/threads/pages/PostPage.tsx:39
758
+ #: src/ui/pages/PostPage.tsx:48
759
+ #: src/ui/shared/ThreadView.tsx:71
671
760
  msgid "Permalink"
672
761
  msgstr "永久链接"
673
762
 
763
+ #. @context: Compose checkbox - pin to top
674
764
  #. @context: Post badge - pinned
675
765
  #. @context: Post form checkbox - pin to top
676
- #: src/theme/components/PostForm.tsx:254
677
- #: src/theme/components/VisibilityBadge.tsx:54
766
+ #: src/ui/compose/ComposeDialog.tsx:312
767
+ #: src/ui/dash/PostForm.tsx:253
768
+ #: src/ui/dash/StatusBadge.tsx:53
678
769
  msgid "Pinned"
679
770
  msgstr ""
680
771
 
772
+ #. @context: Singular post count label
773
+ #: src/ui/pages/CollectionsPage.tsx:56
774
+ msgid "post"
775
+ msgstr ""
776
+
777
+ #. @context: Compose button - publish post
778
+ #. @context: Compose prompt post button
681
779
  #. @context: Default post title
682
- #: src/routes/dash/posts.tsx:130
780
+ #: src/routes/dash/posts.tsx:128
781
+ #: src/ui/compose/ComposeDialog.tsx:339
782
+ #: src/ui/compose/ComposePrompt.tsx:48
683
783
  msgid "Post"
684
784
  msgstr "帖子"
685
785
 
686
786
  #. @context: Post title placeholder
687
- #: src/theme/components/PostForm.tsx:95
787
+ #: src/ui/dash/PostForm.tsx:94
688
788
  msgid "Post title..."
689
789
  msgstr "帖子标题..."
690
790
 
791
+ #. @context: Compose loading text while posting
792
+ #: src/ui/compose/ComposeDialog.tsx:345
793
+ msgid "Posting..."
794
+ msgstr ""
795
+
796
+ #. @context: Plural post count label
797
+ #: src/ui/pages/CollectionsPage.tsx:60
798
+ msgid "posts"
799
+ msgstr ""
800
+
691
801
  #. @context: Dashboard heading
692
802
  #. @context: Dashboard navigation - posts management
693
803
  #: src/routes/dash/posts.tsx:29
694
- #: src/theme/layouts/DashLayout.tsx:87
804
+ #: src/ui/layouts/DashLayout.tsx:87
695
805
  msgid "Posts"
696
806
  msgstr "帖子"
697
807
 
@@ -707,8 +817,8 @@ msgstr "预览"
707
817
 
708
818
  #. @context: Pagination button - previous page
709
819
  #. @context: Pagination button - previous page
710
- #: src/theme/components/Pagination.tsx:45
711
- #: src/theme/components/Pagination.tsx:156
820
+ #: src/ui/shared/Pagination.tsx:46
821
+ #: src/ui/shared/Pagination.tsx:163
712
822
  msgid "Previous"
713
823
  msgstr "上一页"
714
824
 
@@ -724,30 +834,32 @@ msgstr "上一页"
724
834
  #. @context: Loading text shown on submit button while request is in progress
725
835
  #. @context: Loading text shown on submit button while request is in progress
726
836
  #. @context: Loading text shown on submit button while request is in progress
837
+ #. @context: Loading text shown on submit button while request is in progress
727
838
  #. @context: Upload status - processing
728
- #: src/app.tsx:281
729
- #: src/app.tsx:418
730
- #: src/app.tsx:558
839
+ #: src/app.tsx:295
840
+ #: src/app.tsx:444
841
+ #: src/app.tsx:584
731
842
  #: src/routes/dash/collections.tsx:178
732
843
  #: src/routes/dash/collections.tsx:346
733
844
  #: src/routes/dash/media.tsx:119
734
- #: src/routes/dash/navigation.tsx:184
845
+ #: src/routes/dash/pages.tsx:392
735
846
  #: src/routes/dash/redirects.tsx:169
736
847
  #: src/routes/dash/settings.tsx:200
737
- #: src/routes/dash/settings.tsx:400
738
- #: src/routes/dash/settings.tsx:488
739
- #: src/theme/components/PageForm.tsx:163
740
- #: src/theme/components/PostForm.tsx:329
848
+ #: src/routes/dash/settings.tsx:384
849
+ #: src/routes/dash/settings.tsx:457
850
+ #: src/routes/dash/settings.tsx:545
851
+ #: src/ui/dash/PageForm.tsx:163
852
+ #: src/ui/dash/PostForm.tsx:304
741
853
  msgid "Processing..."
742
854
  msgstr "处理中..."
743
855
 
744
856
  #. @context: Account settings section heading
745
- #: src/routes/dash/settings.tsx:364
857
+ #: src/routes/dash/settings.tsx:421
746
858
  msgid "Profile"
747
859
  msgstr "个人资料"
748
860
 
749
861
  #. @context: Button to publish new post
750
- #: src/theme/components/PostForm.tsx:323
862
+ #: src/ui/dash/PostForm.tsx:298
751
863
  msgid "Publish"
752
864
  msgstr "发布"
753
865
 
@@ -756,9 +868,9 @@ msgstr "发布"
756
868
  #. @context: Post status label
757
869
  #. @context: Post status option
758
870
  #: src/routes/dash/index.tsx:45
759
- #: src/theme/components/PageForm.tsx:127
760
- #: src/theme/components/PostForm.tsx:229
761
- #: src/theme/components/VisibilityBadge.tsx:31
871
+ #: src/ui/dash/PageForm.tsx:127
872
+ #: src/ui/dash/PostForm.tsx:228
873
+ #: src/ui/dash/StatusBadge.tsx:30
762
874
  msgid "Published"
763
875
  msgstr "已发布"
764
876
 
@@ -768,7 +880,7 @@ msgstr "已发布"
768
880
  #~ msgstr "已发布的页面可以通过其路径访问。草稿不可见。"
769
881
 
770
882
  #. @context: Page status helper text
771
- #: src/theme/components/PageForm.tsx:140
883
+ #: src/ui/dash/PageForm.tsx:140
772
884
  msgid "Published pages are accessible via their slug. Drafts are not visible."
773
885
  msgstr ""
774
886
 
@@ -787,51 +899,65 @@ msgstr "快速操作"
787
899
  #~ msgid "Quiet (normal)"
788
900
  #~ msgstr "安静(正常)"
789
901
 
902
+ #. @context: Compose format tab
790
903
  #. @context: Post format badge - quote
791
904
  #. @context: Post format label - quote
792
905
  #. @context: Post format option
793
- #: src/theme/components/PostForm.tsx:78
794
- #: src/theme/components/TypeBadge.tsx:22
795
- #: src/themes/threads/pages/ArchivePage.tsx:18
906
+ #: src/ui/compose/ComposeDialog.tsx:112
907
+ #: src/ui/dash/FormatBadge.tsx:21
908
+ #: src/ui/dash/PostForm.tsx:77
909
+ #: src/ui/pages/ArchivePage.tsx:18
796
910
  msgid "Quote"
797
911
  msgstr "引用"
798
912
 
799
913
  #. @context: Post form field - quoted text
800
- #: src/theme/components/PostForm.tsx:138
914
+ #: src/ui/dash/PostForm.tsx:137
801
915
  msgid "Quote Text"
802
916
  msgstr ""
803
917
 
804
918
  #. @context: Post format label plural - quotes
805
- #: src/themes/threads/pages/ArchivePage.tsx:37
919
+ #: src/ui/pages/ArchivePage.tsx:37
806
920
  msgid "Quotes"
807
921
  msgstr "引用"
808
922
 
923
+ #. @context: Compose rating field
924
+ #. @context: Compose toolbar - toggle rating
925
+ #: src/ui/compose/ComposeDialog.tsx:167
926
+ #: src/ui/compose/ComposeDialog.tsx:246
927
+ msgid "Rating"
928
+ msgstr ""
929
+
809
930
  #. @context: Dashboard heading
810
931
  #. @context: Dashboard navigation - URL redirects
811
932
  #: src/routes/dash/redirects.tsx:29
812
- #: src/theme/layouts/DashLayout.tsx:124
933
+ #: src/ui/layouts/DashLayout.tsx:124
813
934
  msgid "Redirects"
814
935
  msgstr "重定向"
815
936
 
816
937
  #. @context: Remove media attachment button
817
- #: src/theme/components/PostForm.tsx:195
938
+ #: src/ui/dash/PostForm.tsx:194
818
939
  msgid "Remove"
819
940
  msgstr "移除"
820
941
 
821
942
  #. @context: Password reset form submit button
822
943
  #. @context: Password reset page heading
823
- #: src/app.tsx:499
824
- #: src/app.tsx:552
944
+ #: src/app.tsx:525
945
+ #: src/app.tsx:578
825
946
  msgid "Reset Password"
826
947
  msgstr "重置密码"
827
948
 
828
949
  #. @context: Button to save edited navigation link
829
- #: src/routes/dash/navigation.tsx:174
950
+ #: src/routes/dash/pages.tsx:382
830
951
  msgid "Save Changes"
831
952
  msgstr "保存更改"
832
953
 
954
+ #. @context: Button to save custom CSS
955
+ #: src/routes/dash/settings.tsx:378
956
+ msgid "Save CSS"
957
+ msgstr ""
958
+
833
959
  #. @context: Button to save profile
834
- #: src/routes/dash/settings.tsx:394
960
+ #: src/routes/dash/settings.tsx:451
835
961
  msgid "Save Profile"
836
962
  msgstr "保存个人资料"
837
963
 
@@ -840,20 +966,24 @@ msgstr "保存个人资料"
840
966
  msgid "Save Settings"
841
967
  msgstr "保存设置"
842
968
 
969
+ #. @context: Search icon link in browse nav
843
970
  #. @context: Search page title
844
971
  #. @context: Search submit button
845
- #: src/themes/threads/pages/SearchPage.tsx:21
846
- #: src/themes/threads/pages/SearchPage.tsx:47
972
+ #: src/ui/layouts/SiteLayout.tsx:70
973
+ #: src/ui/pages/SearchPage.tsx:20
974
+ #: src/ui/pages/SearchPage.tsx:44
847
975
  msgid "Search"
848
976
  msgstr "搜索"
849
977
 
850
978
  #. @context: Search input placeholder
851
- #: src/themes/threads/pages/SearchPage.tsx:39
979
+ #: src/ui/pages/SearchPage.tsx:36
852
980
  msgid "Search posts..."
853
981
  msgstr "搜索帖子..."
854
982
 
855
983
  #. @context: Media picker dialog title
856
- #: src/theme/components/PostForm.tsx:349
984
+ #. @context: Media picker dialog title
985
+ #: src/ui/compose/ComposeDialog.tsx:365
986
+ #: src/ui/dash/PostForm.tsx:324
857
987
  msgid "Select Media"
858
988
  msgstr "选择媒体"
859
989
 
@@ -862,27 +992,27 @@ msgstr "选择媒体"
862
992
  #. @context: Dashboard heading
863
993
  #. @context: Dashboard navigation - site settings
864
994
  #: src/routes/dash/settings.tsx:118
865
- #: src/routes/dash/settings.tsx:300
866
- #: src/routes/dash/settings.tsx:351
867
- #: src/theme/layouts/DashLayout.tsx:143
995
+ #: src/routes/dash/settings.tsx:304
996
+ #: src/routes/dash/settings.tsx:408
997
+ #: src/ui/layouts/DashLayout.tsx:133
868
998
  msgid "Settings"
869
999
  msgstr "设置"
870
1000
 
871
1001
  #. @context: Link to show remaining thread replies
872
1002
  #. placeholder {0}: remainingCount === 1 ? "reply" : "replies"
873
- #: src/themes/threads/timeline/ThreadPreview.tsx:38
1003
+ #: src/ui/feed/ThreadPreview.tsx:37
874
1004
  msgid "Show {remainingCount} more {0}"
875
1005
  msgstr "显示 {remainingCount} 个更多 {0}"
876
1006
 
877
1007
  #. @context: Sign in form submit button
878
1008
  #. @context: Sign in page heading
879
- #: src/app.tsx:365
880
- #: src/app.tsx:412
1009
+ #: src/app.tsx:391
1010
+ #: src/app.tsx:438
881
1011
  msgid "Sign In"
882
1012
  msgstr "登录"
883
1013
 
884
1014
  #. @context: Dashboard header link to sign out
885
- #: src/theme/layouts/DashLayout.tsx:63
1015
+ #: src/ui/layouts/DashLayout.tsx:63
886
1016
  msgid "Sign Out"
887
1017
  msgstr "登出"
888
1018
 
@@ -901,7 +1031,7 @@ msgstr "网站名称"
901
1031
  #. @context: Page form field label - URL slug
902
1032
  #: src/routes/dash/collections.tsx:133
903
1033
  #: src/routes/dash/collections.tsx:314
904
- #: src/theme/components/PageForm.tsx:64
1034
+ #: src/ui/dash/PageForm.tsx:64
905
1035
  msgid "Slug"
906
1036
  msgstr "缩略名"
907
1037
 
@@ -917,8 +1047,8 @@ msgstr "缩略名"
917
1047
 
918
1048
  #. @context: Page form field label - publish status
919
1049
  #. @context: Post form field
920
- #: src/theme/components/PageForm.tsx:117
921
- #: src/theme/components/PostForm.tsx:222
1050
+ #: src/ui/dash/PageForm.tsx:117
1051
+ #: src/ui/dash/PostForm.tsx:221
922
1052
  msgid "Status"
923
1053
  msgstr "状态"
924
1054
 
@@ -932,38 +1062,40 @@ msgstr "目标路径或 URL"
932
1062
  msgid "The path to redirect from"
933
1063
  msgstr "重定向的路径"
934
1064
 
1065
+ #. @context: Compose quote text placeholder
935
1066
  #. @context: Quote text placeholder
936
- #: src/theme/components/PostForm.tsx:146
1067
+ #: src/ui/compose/ComposeDialog.tsx:156
1068
+ #: src/ui/dash/PostForm.tsx:145
937
1069
  msgid "The text being quoted..."
938
1070
  msgstr ""
939
1071
 
940
1072
  #. @context: Page slug helper text
941
- #: src/theme/components/PageForm.tsx:85
1073
+ #: src/ui/dash/PageForm.tsx:85
942
1074
  msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
943
1075
  msgstr "此页面的 URL 路径。使用小写字母、数字和连字符。"
944
1076
 
945
1077
  #. @context: Password reset error description
946
- #: src/app.tsx:588
1078
+ #: src/app.tsx:614
947
1079
  msgid "This password reset link is invalid or has expired. Please generate a new one."
948
1080
  msgstr "此密码重置链接无效或已过期。请生成一个新的链接。"
949
1081
 
950
1082
  #. @context: Appearance settings description
951
- #: src/routes/dash/settings.tsx:317
1083
+ #: src/routes/dash/settings.tsx:321
952
1084
  msgid "This will theme both your site and your dashboard. All color themes support dark mode."
953
1085
  msgstr "这将为您的网站和仪表板设置主题。所有颜色主题都支持暗黑模式。"
954
1086
 
955
1087
  #. @context: Thread view indicator - first post in thread
956
- #: src/theme/components/ThreadView.tsx:60
1088
+ #: src/ui/shared/ThreadView.tsx:60
957
1089
  msgid "Thread start"
958
1090
  msgstr "线程开始"
959
1091
 
960
1092
  #. @context: Thread view header - multiple posts
961
- #: src/theme/components/ThreadView.tsx:105
1093
+ #: src/ui/shared/ThreadView.tsx:105
962
1094
  msgid "Thread with {count} posts"
963
1095
  msgstr "包含 {count} 条帖子的话题"
964
1096
 
965
1097
  #. @context: Thread view header - single post
966
- #: src/theme/components/ThreadView.tsx:101
1098
+ #: src/ui/shared/ThreadView.tsx:101
967
1099
  msgid "Thread with 1 post"
968
1100
  msgstr "包含 1 条帖子的话题"
969
1101
 
@@ -972,12 +1104,14 @@ msgstr "包含 1 条帖子的话题"
972
1104
  #. @context: Page form field label - title
973
1105
  #: src/routes/dash/collections.tsx:114
974
1106
  #: src/routes/dash/collections.tsx:304
975
- #: src/theme/components/PageForm.tsx:44
1107
+ #: src/ui/dash/PageForm.tsx:44
976
1108
  msgid "Title"
977
1109
  msgstr "标题"
978
1110
 
1111
+ #. @context: Compose title placeholder
979
1112
  #. @context: Post form field
980
- #: src/theme/components/PostForm.tsx:86
1113
+ #: src/ui/compose/ComposeDialog.tsx:124
1114
+ #: src/ui/dash/PostForm.tsx:85
981
1115
  msgid "Title (optional)"
982
1116
  msgstr "标题(可选)"
983
1117
 
@@ -991,6 +1125,11 @@ msgstr "到路径"
991
1125
  msgid "Type"
992
1126
  msgstr "类型"
993
1127
 
1128
+ #. @context: Button to remove page from navigation
1129
+ #: src/routes/dash/pages.tsx:104
1130
+ msgid "Un-nav"
1131
+ msgstr ""
1132
+
994
1133
  #. @context: Post visibility badge - unlisted
995
1134
  #. @context: Post visibility option
996
1135
  #: src/theme/components/PostForm.tsx:255
@@ -1000,13 +1139,13 @@ msgstr "类型"
1000
1139
 
1001
1140
  #. @context: Default title for untitled page
1002
1141
  #. @context: Default title for untitled post
1003
- #: src/routes/dash/pages.tsx:86
1004
- #: src/theme/components/PostList.tsx:86
1142
+ #: src/routes/dash/pages.tsx:212
1143
+ #: src/ui/dash/PostList.tsx:86
1005
1144
  msgid "Untitled"
1006
1145
  msgstr "无标题"
1007
1146
 
1008
1147
  #. @context: Button to update existing post
1009
- #: src/theme/components/PostForm.tsx:319
1148
+ #: src/ui/dash/PostForm.tsx:294
1010
1149
  msgid "Update"
1011
1150
  msgstr "更新"
1012
1151
 
@@ -1016,7 +1155,7 @@ msgid "Update Collection"
1016
1155
  msgstr "更新收藏夹"
1017
1156
 
1018
1157
  #. @context: Button to update existing page
1019
- #: src/theme/components/PageForm.tsx:153
1158
+ #: src/ui/dash/PageForm.tsx:153
1020
1159
  msgid "Update Page"
1021
1160
  msgstr "更新页面"
1022
1161
 
@@ -1038,12 +1177,12 @@ msgstr "上传中..."
1038
1177
  #. @context: Media detail section - URL
1039
1178
  #. @context: Navigation link form field
1040
1179
  #: src/routes/dash/media.tsx:318
1041
- #: src/routes/dash/navigation.tsx:149
1180
+ #: src/routes/dash/pages.tsx:357
1042
1181
  msgid "URL"
1043
1182
  msgstr "网址"
1044
1183
 
1045
1184
  #. @context: Post form field - source URL
1046
- #: src/theme/components/PostForm.tsx:122
1185
+ #: src/ui/dash/PostForm.tsx:121
1047
1186
  msgid "URL (optional)"
1048
1187
  msgstr ""
1049
1188
 
@@ -1066,16 +1205,16 @@ msgstr "使用此 URL 将媒体嵌入到您的帖子中。"
1066
1205
  #. @context: Button to view post on public site
1067
1206
  #: src/routes/dash/collections.tsx:71
1068
1207
  #: src/routes/dash/collections.tsx:225
1069
- #: src/routes/dash/pages.tsx:69
1070
- #: src/routes/dash/pages.tsx:134
1071
- #: src/routes/dash/posts.tsx:147
1072
- #: src/theme/components/ActionButtons.tsx:76
1073
- #: src/theme/components/PostList.tsx:55
1208
+ #: src/routes/dash/pages.tsx:199
1209
+ #: src/routes/dash/pages.tsx:261
1210
+ #: src/routes/dash/posts.tsx:145
1211
+ #: src/ui/dash/ActionButtons.tsx:76
1212
+ #: src/ui/dash/PostList.tsx:55
1074
1213
  msgid "View"
1075
1214
  msgstr "查看"
1076
1215
 
1077
1216
  #. @context: Dashboard header link to view the public site
1078
- #: src/theme/layouts/DashLayout.tsx:53
1217
+ #: src/ui/layouts/DashLayout.tsx:53
1079
1218
  msgid "View Site"
1080
1219
  msgstr "查看网站"
1081
1220
 
@@ -1085,12 +1224,19 @@ msgstr "查看网站"
1085
1224
  #~ msgstr "可见性"
1086
1225
 
1087
1226
  #. @context: Setup page welcome heading
1088
- #: src/app.tsx:209
1227
+ #: src/app.tsx:223
1089
1228
  msgid "Welcome to Jant"
1090
1229
  msgstr "欢迎来到Jant"
1091
1230
 
1231
+ #. @context: Compose prompt placeholder text
1232
+ #: src/ui/compose/ComposePrompt.tsx:37
1233
+ msgid "What's new?"
1234
+ msgstr ""
1235
+
1236
+ #. @context: Compose body placeholder
1092
1237
  #. @context: Post content placeholder
1093
- #: src/theme/components/PostForm.tsx:110
1238
+ #: src/ui/compose/ComposeDialog.tsx:134
1239
+ #: src/ui/dash/PostForm.tsx:109
1094
1240
  msgid "What's on your mind?"
1095
1241
  msgstr "你在想什么?"
1096
1242
 
@@ -1100,6 +1246,11 @@ msgid "What's this collection about?"
1100
1246
  msgstr "这个系列是关于什么的?"
1101
1247
 
1102
1248
  #. @context: Setup form field - user name
1103
- #: src/app.tsx:230
1249
+ #: src/app.tsx:244
1104
1250
  msgid "Your Name"
1105
1251
  msgstr "您的姓名"
1252
+
1253
+ #. @context: Section heading for navigation items
1254
+ #: src/routes/dash/pages.tsx:67
1255
+ msgid "Your site navigation"
1256
+ msgstr ""