@jant/core 0.3.24 → 0.3.26

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 (277) hide show
  1. package/dist/app.js +101 -571
  2. package/dist/client.js +1 -0
  3. package/dist/db/schema.js +1 -1
  4. package/dist/i18n/locales/en.js +1 -1
  5. package/dist/i18n/locales/zh-Hans.js +1 -1
  6. package/dist/i18n/locales/zh-Hant.js +1 -1
  7. package/dist/index.js +3 -9
  8. package/dist/lib/avatar-upload.js +134 -0
  9. package/dist/lib/config.js +39 -0
  10. package/dist/lib/constants.js +10 -9
  11. package/dist/lib/favicon.js +102 -0
  12. package/dist/lib/image.js +13 -17
  13. package/dist/lib/media-helpers.js +2 -2
  14. package/dist/lib/nav-reorder.js +1 -1
  15. package/dist/lib/navigation.js +48 -3
  16. package/dist/lib/pagination.js +44 -0
  17. package/dist/lib/render.js +16 -11
  18. package/dist/lib/schemas.js +34 -3
  19. package/dist/lib/theme.js +4 -4
  20. package/dist/lib/timeline.js +24 -48
  21. package/dist/lib/timezones.js +388 -0
  22. package/dist/lib/view.js +3 -3
  23. package/dist/routes/api/collections.js +124 -0
  24. package/dist/routes/api/nav-items.js +104 -0
  25. package/dist/routes/api/pages.js +91 -0
  26. package/dist/routes/api/posts.js +3 -3
  27. package/dist/routes/api/search.js +2 -2
  28. package/dist/routes/api/settings.js +68 -0
  29. package/dist/routes/api/upload.js +3 -3
  30. package/dist/routes/auth/reset.js +221 -0
  31. package/dist/routes/auth/setup.js +194 -0
  32. package/dist/routes/auth/signin.js +176 -0
  33. package/dist/routes/compose.js +48 -0
  34. package/dist/routes/dash/collections.js +24 -416
  35. package/dist/routes/dash/index.js +1 -1
  36. package/dist/routes/dash/media.js +13 -393
  37. package/dist/routes/dash/pages.js +112 -86
  38. package/dist/routes/dash/posts.js +3 -5
  39. package/dist/routes/dash/redirects.js +20 -14
  40. package/dist/routes/dash/settings.js +213 -518
  41. package/dist/routes/feed/rss.js +4 -3
  42. package/dist/routes/feed/sitemap.js +5 -3
  43. package/dist/routes/pages/archive.js +3 -6
  44. package/dist/routes/pages/collection.js +3 -6
  45. package/dist/routes/pages/collections.js +28 -0
  46. package/dist/routes/pages/featured.js +36 -0
  47. package/dist/routes/pages/home.js +33 -49
  48. package/dist/routes/pages/latest.js +45 -0
  49. package/dist/routes/pages/page.js +29 -32
  50. package/dist/routes/pages/post.js +3 -6
  51. package/dist/routes/pages/search.js +3 -6
  52. package/dist/services/page.js +5 -1
  53. package/dist/services/post.js +45 -31
  54. package/dist/services/search.js +1 -1
  55. package/dist/types/bindings.js +3 -0
  56. package/dist/types/config.js +147 -0
  57. package/dist/types/constants.js +27 -0
  58. package/dist/types/entities.js +3 -0
  59. package/dist/types/operations.js +3 -0
  60. package/dist/types/props.js +3 -0
  61. package/dist/types/views.js +5 -0
  62. package/dist/types.js +8 -111
  63. package/dist/{theme → ui}/color-themes.js +33 -33
  64. package/dist/ui/compose/ComposeDialog.js +467 -0
  65. package/dist/ui/compose/ComposePrompt.js +55 -0
  66. package/dist/{theme/components/TypeBadge.js → ui/dash/FormatBadge.js} +1 -2
  67. package/dist/{theme/components → ui/dash}/PageForm.js +21 -15
  68. package/dist/{theme/components → ui/dash}/PostForm.js +22 -43
  69. package/dist/{theme/components → ui/dash}/PostList.js +6 -6
  70. package/dist/{theme/components/VisibilityBadge.js → ui/dash/StatusBadge.js} +1 -2
  71. package/dist/ui/dash/collections/CollectionForm.js +152 -0
  72. package/dist/ui/dash/collections/CollectionsListContent.js +68 -0
  73. package/dist/ui/dash/collections/ViewCollectionContent.js +96 -0
  74. package/dist/{theme/components → ui/dash}/index.js +3 -6
  75. package/dist/ui/dash/media/MediaListContent.js +166 -0
  76. package/dist/ui/dash/media/ViewMediaContent.js +212 -0
  77. package/dist/ui/dash/pages/LinkFormContent.js +130 -0
  78. package/dist/ui/dash/pages/UnifiedPagesContent.js +193 -0
  79. package/dist/ui/dash/settings/AccountContent.js +209 -0
  80. package/dist/ui/dash/settings/AppearanceContent.js +259 -0
  81. package/dist/ui/dash/settings/GeneralContent.js +536 -0
  82. package/dist/ui/dash/settings/SettingsNav.js +41 -0
  83. package/dist/{themes/threads/timeline → ui/feed}/LinkCard.js +6 -2
  84. package/dist/{themes/threads/timeline → ui/feed}/NoteCard.js +11 -6
  85. package/dist/{themes/threads/timeline → ui/feed}/QuoteCard.js +10 -6
  86. package/dist/{themes/threads/timeline → ui/feed}/ThreadPreview.js +7 -9
  87. package/dist/ui/feed/TimelineFeed.js +41 -0
  88. package/dist/ui/feed/TimelineItem.js +27 -0
  89. package/dist/ui/font-themes.js +36 -0
  90. package/dist/{theme → ui}/layouts/BaseLayout.js +34 -2
  91. package/dist/{theme → ui}/layouts/DashLayout.js +0 -8
  92. package/dist/ui/layouts/SiteLayout.js +169 -0
  93. package/dist/{themes/threads → ui}/pages/ArchivePage.js +16 -14
  94. package/dist/{themes/threads → ui}/pages/CollectionPage.js +6 -1
  95. package/dist/ui/pages/CollectionsPage.js +76 -0
  96. package/dist/ui/pages/FeaturedPage.js +24 -0
  97. package/dist/ui/pages/HomePage.js +24 -0
  98. package/dist/{themes/threads → ui}/pages/PostPage.js +13 -8
  99. package/dist/{themes/threads → ui}/pages/SearchPage.js +9 -7
  100. package/dist/{themes/threads → ui}/pages/SinglePage.js +3 -2
  101. package/dist/{theme/components → ui/shared}/MediaGallery.js +1 -1
  102. package/dist/{theme/components → ui/shared}/Pagination.js +41 -2
  103. package/dist/{theme/components → ui/shared}/ThreadView.js +2 -2
  104. package/dist/ui/shared/index.js +5 -0
  105. package/package.json +1 -9
  106. package/src/__tests__/helpers/db.ts +3 -0
  107. package/src/app.tsx +131 -561
  108. package/src/client.ts +1 -0
  109. package/src/db/migrations/0006_rename_slug_to_path.sql +5 -0
  110. package/src/db/migrations/meta/_journal.json +7 -0
  111. package/src/db/schema.ts +1 -1
  112. package/src/i18n/locales/en.po +477 -261
  113. package/src/i18n/locales/en.ts +1 -1
  114. package/src/i18n/locales/zh-Hans.po +477 -261
  115. package/src/i18n/locales/zh-Hans.ts +1 -1
  116. package/src/i18n/locales/zh-Hant.po +477 -261
  117. package/src/i18n/locales/zh-Hant.ts +1 -1
  118. package/src/index.ts +7 -36
  119. package/src/lib/__tests__/config.test.ts +192 -0
  120. package/src/lib/__tests__/favicon.test.ts +151 -0
  121. package/src/lib/__tests__/image.test.ts +2 -6
  122. package/src/lib/__tests__/schemas.test.ts +60 -19
  123. package/src/lib/__tests__/timeline.test.ts +45 -81
  124. package/src/lib/__tests__/timezones.test.ts +61 -0
  125. package/src/lib/__tests__/view.test.ts +15 -9
  126. package/src/lib/avatar-upload.ts +165 -0
  127. package/src/lib/config.ts +47 -0
  128. package/src/lib/constants.ts +19 -10
  129. package/src/lib/favicon.ts +115 -0
  130. package/src/lib/image.ts +13 -21
  131. package/src/lib/media-helpers.ts +2 -2
  132. package/src/lib/nav-reorder.ts +1 -1
  133. package/src/lib/navigation.ts +73 -4
  134. package/src/lib/pagination.ts +50 -0
  135. package/src/lib/render.tsx +22 -15
  136. package/src/lib/schemas.ts +47 -6
  137. package/src/lib/theme.ts +5 -5
  138. package/src/lib/timeline.ts +28 -57
  139. package/src/lib/timezones.ts +325 -0
  140. package/src/lib/view.ts +3 -3
  141. package/src/preset.css +2 -1
  142. package/src/routes/__tests__/compose.test.ts +199 -0
  143. package/src/routes/api/__tests__/collections.test.ts +249 -0
  144. package/src/routes/api/__tests__/nav-items.test.ts +222 -0
  145. package/src/routes/api/__tests__/pages.test.ts +218 -0
  146. package/src/routes/api/__tests__/settings.test.ts +132 -0
  147. package/src/routes/api/collections.ts +143 -0
  148. package/src/routes/api/nav-items.ts +115 -0
  149. package/src/routes/api/pages.ts +101 -0
  150. package/src/routes/api/posts.ts +3 -3
  151. package/src/routes/api/search.ts +2 -2
  152. package/src/routes/api/settings.ts +91 -0
  153. package/src/routes/api/upload.ts +2 -3
  154. package/src/routes/auth/reset.tsx +239 -0
  155. package/src/routes/auth/setup.tsx +189 -0
  156. package/src/routes/auth/signin.tsx +163 -0
  157. package/src/routes/compose.ts +63 -0
  158. package/src/routes/dash/__tests__/pages.test.ts +225 -0
  159. package/src/routes/dash/__tests__/settings-avatar.test.ts +89 -0
  160. package/src/routes/dash/collections.tsx +18 -367
  161. package/src/routes/dash/index.tsx +1 -1
  162. package/src/routes/dash/media.tsx +13 -415
  163. package/src/routes/dash/pages.tsx +131 -98
  164. package/src/routes/dash/posts.tsx +3 -7
  165. package/src/routes/dash/redirects.tsx +22 -16
  166. package/src/routes/dash/settings.tsx +265 -478
  167. package/src/routes/feed/__tests__/rss.test.ts +141 -0
  168. package/src/routes/feed/rss.ts +5 -3
  169. package/src/routes/feed/sitemap.ts +5 -3
  170. package/src/routes/pages/__tests__/collections.test.ts +94 -0
  171. package/src/routes/pages/__tests__/featured.test.ts +94 -0
  172. package/src/routes/pages/archive.tsx +2 -6
  173. package/src/routes/pages/collection.tsx +2 -6
  174. package/src/routes/pages/collections.tsx +36 -0
  175. package/src/routes/pages/featured.tsx +44 -0
  176. package/src/routes/pages/home.tsx +30 -53
  177. package/src/routes/pages/latest.tsx +59 -0
  178. package/src/routes/pages/page.tsx +28 -30
  179. package/src/routes/pages/post.tsx +2 -5
  180. package/src/routes/pages/search.tsx +2 -6
  181. package/src/services/__tests__/page.test.ts +106 -0
  182. package/src/services/__tests__/post.test.ts +114 -15
  183. package/src/services/page.ts +13 -1
  184. package/src/services/post.ts +58 -40
  185. package/src/services/search.ts +2 -2
  186. package/src/styles/components.css +0 -65
  187. package/src/styles/tokens.css +47 -0
  188. package/src/styles/ui.css +475 -0
  189. package/src/types/bindings.ts +30 -0
  190. package/src/types/config.ts +183 -0
  191. package/src/types/constants.ts +26 -0
  192. package/src/types/entities.ts +109 -0
  193. package/src/types/operations.ts +88 -0
  194. package/src/types/props.ts +115 -0
  195. package/src/types/views.ts +172 -0
  196. package/src/types.ts +8 -774
  197. package/src/ui/__tests__/font-themes.test.ts +34 -0
  198. package/src/{theme → ui}/color-themes.ts +34 -34
  199. package/src/ui/compose/ComposeDialog.tsx +414 -0
  200. package/src/ui/compose/ComposePrompt.tsx +55 -0
  201. package/src/{theme/components/TypeBadge.tsx → ui/dash/FormatBadge.tsx} +2 -3
  202. package/src/{theme/components → ui/dash}/PageForm.tsx +25 -19
  203. package/src/{theme/components → ui/dash}/PostForm.tsx +26 -45
  204. package/src/{theme/components → ui/dash}/PostList.tsx +7 -7
  205. package/src/{theme/components/VisibilityBadge.tsx → ui/dash/StatusBadge.tsx} +2 -3
  206. package/src/ui/dash/collections/CollectionForm.tsx +153 -0
  207. package/src/ui/dash/collections/CollectionsListContent.tsx +85 -0
  208. package/src/ui/dash/collections/ViewCollectionContent.tsx +92 -0
  209. package/src/ui/dash/index.ts +10 -0
  210. package/src/ui/dash/media/MediaListContent.tsx +201 -0
  211. package/src/ui/dash/media/ViewMediaContent.tsx +208 -0
  212. package/src/ui/dash/pages/LinkFormContent.tsx +119 -0
  213. package/src/ui/dash/pages/UnifiedPagesContent.tsx +203 -0
  214. package/src/ui/dash/settings/AccountContent.tsx +176 -0
  215. package/src/ui/dash/settings/AppearanceContent.tsx +254 -0
  216. package/src/ui/dash/settings/GeneralContent.tsx +533 -0
  217. package/src/ui/dash/settings/SettingsNav.tsx +56 -0
  218. package/src/{themes/threads/timeline → ui/feed}/LinkCard.tsx +9 -4
  219. package/src/{themes/threads/timeline → ui/feed}/NoteCard.tsx +13 -8
  220. package/src/{themes/threads/timeline → ui/feed}/QuoteCard.tsx +13 -8
  221. package/src/{themes/threads/timeline → ui/feed}/ThreadPreview.tsx +7 -8
  222. package/src/ui/feed/TimelineFeed.tsx +49 -0
  223. package/src/ui/feed/TimelineItem.tsx +45 -0
  224. package/src/ui/font-themes.ts +54 -0
  225. package/src/{theme → ui}/layouts/BaseLayout.tsx +28 -1
  226. package/src/{theme → ui}/layouts/DashLayout.tsx +0 -10
  227. package/src/ui/layouts/SiteLayout.tsx +164 -0
  228. package/src/{themes/threads → ui}/pages/ArchivePage.tsx +22 -17
  229. package/src/{themes/threads → ui}/pages/CollectionPage.tsx +14 -5
  230. package/src/ui/pages/CollectionsPage.tsx +73 -0
  231. package/src/ui/pages/FeaturedPage.tsx +31 -0
  232. package/src/{themes/threads → ui}/pages/HomePage.tsx +11 -15
  233. package/src/{themes/threads → ui}/pages/PostPage.tsx +23 -14
  234. package/src/{themes/threads → ui}/pages/SearchPage.tsx +13 -11
  235. package/src/{themes/threads → ui}/pages/SinglePage.tsx +4 -4
  236. package/src/{theme/components → ui/shared}/MediaGallery.tsx +1 -1
  237. package/src/{theme/components → ui/shared}/Pagination.tsx +67 -4
  238. package/src/{theme/components → ui/shared}/ThreadView.tsx +2 -2
  239. package/src/ui/shared/__tests__/pagination.test.ts +46 -0
  240. package/src/ui/shared/index.ts +12 -0
  241. package/bin/jant.js +0 -185
  242. package/dist/lib/theme-components.js +0 -46
  243. package/dist/routes/dash/navigation.js +0 -289
  244. package/dist/theme/index.js +0 -18
  245. package/dist/theme/layouts/index.js +0 -2
  246. package/dist/themes/threads/ThreadsSiteLayout.js +0 -172
  247. package/dist/themes/threads/index.js +0 -81
  248. package/dist/themes/threads/pages/HomePage.js +0 -25
  249. package/dist/themes/threads/timeline/TimelineFeed.js +0 -58
  250. package/dist/themes/threads/timeline/TimelineItem.js +0 -36
  251. package/dist/themes/threads/timeline/TimelineLoadMore.js +0 -23
  252. package/dist/themes/threads/timeline/groupByDate.js +0 -22
  253. package/dist/themes/threads/timeline/timelineMore.js +0 -107
  254. package/src/lib/__tests__/theme-components.test.ts +0 -105
  255. package/src/lib/theme-components.ts +0 -65
  256. package/src/routes/dash/navigation.tsx +0 -317
  257. package/src/theme/components/index.ts +0 -23
  258. package/src/theme/index.ts +0 -22
  259. package/src/theme/layouts/index.ts +0 -7
  260. package/src/themes/threads/ThreadsSiteLayout.tsx +0 -194
  261. package/src/themes/threads/index.ts +0 -100
  262. package/src/themes/threads/style.css +0 -336
  263. package/src/themes/threads/timeline/TimelineFeed.tsx +0 -62
  264. package/src/themes/threads/timeline/TimelineItem.tsx +0 -67
  265. package/src/themes/threads/timeline/TimelineLoadMore.tsx +0 -35
  266. package/src/themes/threads/timeline/groupByDate.ts +0 -30
  267. package/src/themes/threads/timeline/timelineMore.tsx +0 -130
  268. /package/dist/{theme/components → ui/dash}/ActionButtons.js +0 -0
  269. /package/dist/{theme/components → ui/dash}/CrudPageHeader.js +0 -0
  270. /package/dist/{theme/components → ui/dash}/DangerZone.js +0 -0
  271. /package/dist/{theme/components → ui/dash}/ListItemRow.js +0 -0
  272. /package/dist/{theme/components → ui/shared}/EmptyState.js +0 -0
  273. /package/src/{theme/components → ui/dash}/ActionButtons.tsx +0 -0
  274. /package/src/{theme/components → ui/dash}/CrudPageHeader.tsx +0 -0
  275. /package/src/{theme/components → ui/dash}/DangerZone.tsx +0 -0
  276. /package/src/{theme/components → ui/dash}/ListItemRow.tsx +0 -0
  277. /package/src/{theme/components → ui/shared}/EmptyState.tsx +0 -0
@@ -18,8 +18,13 @@ msgstr ""
18
18
  #~ msgid "{count} replies"
19
19
  #~ msgstr "{count} 條回覆"
20
20
 
21
+ #. @context: Custom CSS textarea placeholder
22
+ #: src/ui/dash/settings/AppearanceContent.tsx:218
23
+ msgid "/* Your custom CSS here */"
24
+ msgstr ""
25
+
21
26
  #. @context: Navigation link
22
- #: src/routes/dash/collections.tsx:271
27
+ #: src/ui/dash/collections/ViewCollectionContent.tsx:84
23
28
  msgid "← Back to Collections"
24
29
  msgstr "← 返回收藏夾"
25
30
 
@@ -38,33 +43,60 @@ msgstr "301(永久)"
38
43
  msgid "302 (Temporary)"
39
44
  msgstr "302(臨時)"
40
45
 
46
+ #. @context: Settings form field for site description
47
+ #: src/ui/dash/settings/GeneralContent.tsx:324
48
+ msgid "About this blog"
49
+ msgstr ""
50
+
41
51
  #. @context: Settings sub-navigation tab
42
- #: src/routes/dash/settings.tsx:63
52
+ #: src/ui/dash/settings/SettingsNav.tsx:31
43
53
  msgid "Account"
44
54
  msgstr "帳戶"
45
55
 
56
+ #. @context: Custom CSS settings description
57
+ #: src/ui/dash/settings/AppearanceContent.tsx:208
58
+ msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
59
+ msgstr ""
60
+
61
+ #. @context: Button to add a navigation link
62
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:28
63
+ msgid "Add Link"
64
+ msgstr ""
65
+
46
66
  #. @context: Button to open media picker
47
- #: src/theme/components/PostForm.tsx:212
67
+ #. @context: Compose toolbar - add media
68
+ #: src/ui/compose/ComposeDialog.tsx:219
69
+ #: src/ui/dash/PostForm.tsx:211
48
70
  msgid "Add Media"
49
71
  msgstr "添加媒體"
50
72
 
73
+ #. @context: Button to add page to navigation
74
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:163
75
+ msgid "Add to nav"
76
+ msgstr ""
77
+
51
78
  #. @context: Archive filter - all formats
52
- #: src/themes/threads/pages/ArchivePage.tsx:71
79
+ #: src/ui/pages/ArchivePage.tsx:71
53
80
  msgid "All"
54
81
  msgstr "所有"
55
82
 
83
+ #. @context: Empty state when all pages are in nav
84
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:146
85
+ msgid "All pages are in your navigation."
86
+ msgstr ""
87
+
56
88
  #. @context: Settings sub-navigation tab
57
- #: src/routes/dash/settings.tsx:55
89
+ #: src/ui/dash/settings/SettingsNav.tsx:23
58
90
  msgid "Appearance"
59
91
  msgstr "外觀"
60
92
 
61
93
  #. @context: Archive page title
62
- #: src/themes/threads/pages/ArchivePage.tsx:56
94
+ #: src/ui/pages/ArchivePage.tsx:55
63
95
  msgid "Archive"
64
96
  msgstr "檔案館"
65
97
 
66
98
  #. @context: Confirmation dialog when deleting a post from the list
67
- #: src/theme/components/PostList.tsx:60
99
+ #: src/ui/dash/PostList.tsx:60
68
100
  msgid "Are you sure you want to delete this post? This cannot be undone."
69
101
  msgstr ""
70
102
 
@@ -88,46 +120,65 @@ msgstr ""
88
120
  #~ msgstr "至少需要 1 張圖片才能發佈圖片帖子。"
89
121
 
90
122
  #. @context: Button to go back to media list
91
- #: src/routes/dash/media.tsx:266
123
+ #: src/ui/dash/media/ViewMediaContent.tsx:57
92
124
  msgid "Back"
93
125
  msgstr "返回"
94
126
 
127
+ #. @context: Settings section heading for avatar
128
+ #: src/ui/dash/settings/GeneralContent.tsx:160
129
+ msgid "Blog Avatar"
130
+ msgstr ""
131
+
95
132
  #. @context: Button to cancel and go back
96
133
  #. @context: Button to cancel form
97
134
  #. @context: Button to cancel form
98
135
  #. @context: Button to cancel form
99
136
  #. @context: Button to cancel form
100
- #. @context: Button to cancel form
101
- #: src/routes/dash/collections.tsx:186
102
- #: src/routes/dash/collections.tsx:354
103
- #: src/routes/dash/navigation.tsx:192
104
- #: src/routes/dash/redirects.tsx:177
105
- #: src/theme/components/PageForm.tsx:171
106
- #: src/theme/components/PostForm.tsx:337
137
+ #. @context: Button to cancel unsaved changes and revert to original values
138
+ #: src/routes/dash/redirects.tsx:183
139
+ #: src/ui/dash/collections/CollectionForm.tsx:144
140
+ #: src/ui/dash/PageForm.tsx:177
141
+ #: src/ui/dash/pages/LinkFormContent.tsx:110
142
+ #: src/ui/dash/PostForm.tsx:318
143
+ #: src/ui/dash/settings/GeneralContent.tsx:86
107
144
  msgid "Cancel"
108
145
  msgstr "取消"
109
146
 
110
147
  #. @context: Button to change password
111
148
  #. @context: Settings section heading
112
- #: src/routes/dash/settings.tsx:417
113
- #: src/routes/dash/settings.tsx:482
149
+ #: src/ui/dash/settings/AccountContent.tsx:88
150
+ #: src/ui/dash/settings/AccountContent.tsx:167
114
151
  msgid "Change Password"
115
152
  msgstr "更改密碼"
116
153
 
154
+ #. @context: Font theme settings description
155
+ #: src/ui/dash/settings/AppearanceContent.tsx:153
156
+ msgid "Choose a font for your site. All options use system fonts for fast loading."
157
+ msgstr ""
158
+
117
159
  #. @context: Hint to click image for lightbox
118
- #: src/routes/dash/media.tsx:299
160
+ #: src/ui/dash/media/ViewMediaContent.tsx:90
119
161
  msgid "Click image to view full size"
120
162
  msgstr "點擊圖片以查看完整大小"
121
163
 
164
+ #. @context: Compose collection field
165
+ #. @context: Compose toolbar - toggle collection
166
+ #: src/ui/compose/ComposeDialog.tsx:191
167
+ #: src/ui/compose/ComposeDialog.tsx:272
168
+ msgid "Collection"
169
+ msgstr ""
170
+
122
171
  #. @context: Post form field - assign to collection
123
- #: src/theme/components/PostForm.tsx:265
172
+ #: src/ui/dash/PostForm.tsx:264
124
173
  msgid "Collection (optional)"
125
174
  msgstr ""
126
175
 
176
+ #. @context: Collections page heading
127
177
  #. @context: Dashboard heading
128
178
  #. @context: Dashboard navigation - collections management
129
- #: src/routes/dash/collections.tsx:35
130
- #: src/theme/layouts/DashLayout.tsx:114
179
+ #: src/ui/dash/collections/CollectionsListContent.tsx:24
180
+ #: src/ui/layouts/DashLayout.tsx:114
181
+ #: src/ui/pages/CollectionsPage.tsx:18
131
182
  msgid "Collections"
132
183
  msgstr "收藏夾"
133
184
 
@@ -137,79 +188,84 @@ msgstr "收藏夾"
137
188
  #~ msgstr "收藏(可選)"
138
189
 
139
190
  #. @context: Appearance settings heading
140
- #: src/routes/dash/settings.tsx:311
191
+ #: src/ui/dash/settings/AppearanceContent.tsx:112
141
192
  msgid "Color theme"
142
193
  msgstr "顏色主題"
143
194
 
144
195
  #. @context: Setup form submit button
145
- #: src/app.tsx:275
196
+ #: src/routes/auth/setup.tsx:108
146
197
  msgid "Complete Setup"
147
198
  msgstr "完成設置"
148
199
 
149
200
  #. @context: Password form field
150
- #: src/routes/dash/settings.tsx:459
201
+ #: src/ui/dash/settings/AccountContent.tsx:130
151
202
  msgid "Confirm New Password"
152
203
  msgstr "確認新密碼"
153
204
 
154
205
  #. @context: Password reset form field
155
- #: src/app.tsx:536
206
+ #: src/routes/auth/reset.tsx:70
156
207
  msgid "Confirm Password"
157
208
  msgstr "確認密碼"
158
209
 
159
210
  #. @context: Page form field label - content
160
211
  #. @context: Post form field
161
- #: src/theme/components/PageForm.tsx:96
162
- #: src/theme/components/PostForm.tsx:105
212
+ #: src/ui/dash/PageForm.tsx:96
213
+ #: src/ui/dash/PostForm.tsx:104
163
214
  msgid "Content"
164
215
  msgstr "內容"
165
216
 
166
217
  #. @context: Button to copy Markdown to clipboard
167
218
  #. @context: Button to copy URL to clipboard
168
- #: src/routes/dash/media.tsx:337
169
- #: src/routes/dash/media.tsx:374
219
+ #: src/ui/dash/media/ViewMediaContent.tsx:128
220
+ #: src/ui/dash/media/ViewMediaContent.tsx:165
170
221
  msgid "Copy"
171
222
  msgstr "複製"
172
223
 
173
224
  #. @context: Button to save new collection
174
- #: src/routes/dash/collections.tsx:172
225
+ #: src/ui/dash/collections/CollectionForm.tsx:36
175
226
  msgid "Create Collection"
176
227
  msgstr "創建收藏夾"
177
228
 
178
229
  #. @context: Button to save new navigation link
179
- #: src/routes/dash/navigation.tsx:178
230
+ #: src/ui/dash/pages/LinkFormContent.tsx:104
180
231
  msgid "Create Link"
181
232
  msgstr "建立連結"
182
233
 
183
234
  #. @context: Button to create new page
184
- #: src/theme/components/PageForm.tsx:157
235
+ #: src/ui/dash/PageForm.tsx:171
185
236
  msgid "Create Page"
186
237
  msgstr "創建頁面"
187
238
 
188
239
  #. @context: Button to save new redirect
189
- #: src/routes/dash/redirects.tsx:163
240
+ #: src/routes/dash/redirects.tsx:177
190
241
  msgid "Create Redirect"
191
242
  msgstr "建立重定向"
192
243
 
193
244
  #. @context: Setup page description
194
- #: src/app.tsx:215
245
+ #: src/routes/auth/setup.tsx:33
195
246
  msgid "Create your admin account."
196
247
  msgstr "建立您的管理員帳戶。"
197
248
 
198
249
  #. @context: Button in empty state to create first page
199
250
  #: src/routes/dash/pages.tsx:48
200
- msgid "Create your first page"
201
- msgstr "建立您的第一個頁面"
251
+ #~ msgid "Create your first page"
252
+ #~ msgstr "建立您的第一個頁面"
202
253
 
203
254
  #. @context: Button in empty state to create first post
204
- #: src/theme/components/PostList.tsx:29
255
+ #: src/ui/dash/PostList.tsx:29
205
256
  msgid "Create your first post"
206
257
  msgstr "創建你的第一篇帖子"
207
258
 
208
259
  #. @context: Password form field
209
- #: src/routes/dash/settings.tsx:426
260
+ #: src/ui/dash/settings/AccountContent.tsx:97
210
261
  msgid "Current Password"
211
262
  msgstr "當前密碼"
212
263
 
264
+ #. @context: Appearance settings heading for custom CSS
265
+ #: src/ui/dash/settings/AppearanceContent.tsx:202
266
+ msgid "Custom CSS"
267
+ msgstr ""
268
+
213
269
  #. @context: Post form field
214
270
  #: src/theme/components/PostForm.tsx:297
215
271
  #~ msgid "Custom Path (optional)"
@@ -217,83 +273,95 @@ msgstr "當前密碼"
217
273
 
218
274
  #. @context: Post form field
219
275
  #: src/theme/components/PostForm.tsx:293
220
- msgid "Custom Slug (optional)"
221
- msgstr ""
276
+ #~ msgid "Custom Slug (optional)"
277
+ #~ msgstr ""
222
278
 
223
279
  #. @context: Slug help text
224
280
  #: src/theme/components/PostForm.tsx:306
225
- msgid "Custom URL path. Leave empty to use default /p/ID format."
226
- msgstr ""
281
+ #~ msgid "Custom URL path. Leave empty to use default /p/ID format."
282
+ #~ msgstr ""
227
283
 
228
284
  #. @context: Section heading for dangerous/destructive actions
229
- #: src/theme/components/DangerZone.tsx:55
285
+ #: src/ui/dash/DangerZone.tsx:55
230
286
  msgid "Danger Zone"
231
287
  msgstr "危險區域"
232
288
 
233
289
  #. @context: Dashboard main heading
234
290
  #. @context: Dashboard navigation - main dashboard page
235
291
  #: src/routes/dash/index.tsx:36
236
- #: src/theme/layouts/DashLayout.tsx:78
292
+ #: src/ui/layouts/DashLayout.tsx:78
237
293
  msgid "Dashboard"
238
294
  msgstr "儀表板"
239
295
 
296
+ #. @context: Settings form field
297
+ #: src/ui/dash/settings/GeneralContent.tsx:374
298
+ msgid "Default Homepage View"
299
+ msgstr ""
300
+
240
301
  #. @context: Button to delete item
241
- #. @context: Button to delete navigation link
302
+ #. @context: Button to delete link
242
303
  #. @context: Button to delete redirect
243
- #: src/routes/dash/navigation.tsx:66
244
304
  #: src/routes/dash/redirects.tsx:60
245
- #: src/theme/components/ActionButtons.tsx:80
305
+ #: src/ui/dash/ActionButtons.tsx:80
306
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:98
246
307
  msgid "Delete"
247
308
  msgstr "刪除"
248
309
 
249
310
  #. @context: Button to delete collection
250
311
  #: src/routes/dash/collections.tsx:363
251
- msgid "Delete Collection"
252
- msgstr "刪除收藏夾"
312
+ #~ msgid "Delete Collection"
313
+ #~ msgstr "刪除收藏夾"
253
314
 
254
315
  #. @context: Button to delete media
255
- #: src/routes/dash/media.tsx:385
316
+ #: src/ui/dash/media/ViewMediaContent.tsx:176
256
317
  msgid "Delete Media"
257
318
  msgstr "刪除媒體"
258
319
 
259
320
  #. @context: Button to delete page
260
- #: src/routes/dash/pages.tsx:151
321
+ #: src/routes/dash/pages.tsx:77
261
322
  msgid "Delete Page"
262
323
  msgstr "刪除頁面"
263
324
 
264
325
  #. @context: Warning message before deleting media
265
- #: src/routes/dash/media.tsx:391
326
+ #: src/ui/dash/media/ViewMediaContent.tsx:182
266
327
  msgid "Deleting this media will remove it permanently from storage."
267
328
  msgstr "刪除此媒體將永久從存儲中移除它。"
268
329
 
269
330
  #. @context: Hint shown on signin page when demo credentials are pre-filled
270
- #: src/app.tsx:374
331
+ #: src/routes/auth/signin.tsx:40
271
332
  msgid "Demo account pre-filled. Just click Sign In."
272
333
  msgstr "示範帳戶已預填。只需點擊登入。"
273
334
 
274
335
  #. @context: Collection form field
275
- #. @context: Collection form field
276
- #: src/routes/dash/collections.tsx:153
277
- #: src/routes/dash/collections.tsx:327
336
+ #: src/ui/dash/collections/CollectionForm.tsx:102
278
337
  msgid "Description (optional)"
279
338
  msgstr "描述(可選)"
280
339
 
340
+ #. @context: Checkbox to show avatar in the site header
341
+ #: src/ui/dash/settings/GeneralContent.tsx:274
342
+ msgid "Display avatar in my site header"
343
+ msgstr ""
344
+
281
345
  #. @context: Navigation label help text
282
- #: src/routes/dash/navigation.tsx:140
346
+ #: src/ui/dash/pages/LinkFormContent.tsx:52
283
347
  msgid "Display text for the link"
284
348
  msgstr "顯示連結的文字"
285
349
 
286
350
  #. @context: Close media picker button
287
- #: src/theme/components/PostForm.tsx:359
351
+ #. @context: Close media picker button
352
+ #: src/ui/compose/ComposeDialog.tsx:394
353
+ #: src/ui/dash/PostForm.tsx:340
288
354
  msgid "Done"
289
355
  msgstr "完成"
290
356
 
357
+ #. @context: Compose button - save as draft
291
358
  #. @context: Page status option - draft
292
359
  #. @context: Post status badge - draft
293
360
  #. @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
361
+ #: src/ui/compose/ComposeDialog.tsx:340
362
+ #: src/ui/dash/PageForm.tsx:133
363
+ #: src/ui/dash/PostForm.tsx:234
364
+ #: src/ui/dash/StatusBadge.tsx:34
297
365
  msgid "Draft"
298
366
  msgstr "草稿"
299
367
 
@@ -310,75 +378,88 @@ msgstr "草稿"
310
378
  #. @context: Button to edit collection
311
379
  #. @context: Button to edit collection
312
380
  #. @context: Button to edit item
313
- #. @context: Button to edit navigation link
381
+ #. @context: Button to edit link
382
+ #. @context: Button to edit page
314
383
  #. @context: Button to edit page
315
384
  #. @context: Button to edit page
316
385
  #. @context: Button to edit post
317
386
  #. @context: Button to edit post
318
- #: src/routes/dash/collections.tsx:66
319
- #: 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
387
+ #: src/routes/dash/pages.tsx:55
388
+ #: src/routes/dash/posts.tsx:140
389
+ #: src/ui/dash/ActionButtons.tsx:72
390
+ #: src/ui/dash/collections/CollectionsListContent.tsx:55
391
+ #: src/ui/dash/collections/ViewCollectionContent.tsx:33
392
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:72
393
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:93
394
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:170
395
+ #: src/ui/dash/PostList.tsx:50
326
396
  msgid "Edit"
327
397
  msgstr "編輯"
328
398
 
329
399
  #. @context: Page heading
330
- #: src/routes/dash/collections.tsx:293
400
+ #: src/ui/dash/collections/CollectionForm.tsx:28
331
401
  msgid "Edit Collection"
332
402
  msgstr "編輯收藏集"
333
403
 
334
404
  #. @context: Page heading
335
- #: src/routes/dash/navigation.tsx:105
405
+ #: src/ui/dash/pages/LinkFormContent.tsx:17
336
406
  msgid "Edit Link"
337
407
  msgstr "編輯連結"
338
408
 
339
409
  #. @context: Edit page main heading
340
- #: src/routes/dash/pages.tsx:167
410
+ #: src/routes/dash/pages.tsx:93
341
411
  msgid "Edit Page"
342
412
  msgstr "編輯頁面"
343
413
 
344
414
  #. @context: Page heading
345
- #: src/routes/dash/posts.tsx:185
415
+ #: src/routes/dash/posts.tsx:183
346
416
  msgid "Edit Post"
347
417
  msgstr "編輯文章"
348
418
 
349
419
  #. @context: Setup/signin form field - email
350
420
  #. @context: Setup/signin form field - email
351
- #: src/app.tsx:245
352
- #: src/app.tsx:389
421
+ #: src/routes/auth/setup.tsx:64
422
+ #: src/routes/auth/signin.tsx:55
353
423
  msgid "Email"
354
424
  msgstr "電子郵件"
355
425
 
356
426
  #. @context: Password reset page description
357
- #: src/app.tsx:505
427
+ #: src/routes/auth/reset.tsx:39
358
428
  msgid "Enter your new password."
359
429
  msgstr "請輸入您的新密碼。"
360
430
 
361
431
  #. @context: Archive filter - featured posts
432
+ #. @context: Browse filter for featured posts
433
+ #. @context: Compose checkbox - mark as featured
434
+ #. @context: Homepage view option - show featured posts
362
435
  #. @context: Post badge - featured
363
436
  #. @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
437
+ #: src/ui/compose/ComposeDialog.tsx:305
438
+ #: src/ui/dash/PostForm.tsx:246
439
+ #: src/ui/dash/settings/GeneralContent.tsx:398
440
+ #: src/ui/dash/StatusBadge.tsx:45
441
+ #: src/ui/layouts/SiteLayout.tsx:55
442
+ #: src/ui/pages/ArchivePage.tsx:92
367
443
  msgid "Featured"
368
444
  msgstr "精選"
369
445
 
446
+ #. @context: Appearance settings heading for font theme
447
+ #: src/ui/dash/settings/AppearanceContent.tsx:147
448
+ msgid "Font theme"
449
+ msgstr ""
450
+
370
451
  #. @context: Post form field - post format
371
- #: src/theme/components/PostForm.tsx:65
452
+ #: src/ui/dash/PostForm.tsx:64
372
453
  msgid "Format"
373
454
  msgstr ""
374
455
 
375
456
  #. @context: Search results count - multiple
376
- #: src/themes/threads/pages/SearchPage.tsx:76
457
+ #: src/ui/pages/SearchPage.tsx:73
377
458
  msgid "Found {count} results"
378
459
  msgstr "找到 {count} 個結果"
379
460
 
380
461
  #. @context: Search results count - single
381
- #: src/themes/threads/pages/SearchPage.tsx:72
462
+ #: src/ui/pages/SearchPage.tsx:69
382
463
  msgid "Found 1 result"
383
464
  msgstr "找到 1 個結果"
384
465
 
@@ -389,8 +470,8 @@ msgstr "來源路徑"
389
470
 
390
471
  #. @context: Settings section heading
391
472
  #. @context: Settings sub-navigation tab
392
- #: src/routes/dash/settings.tsx:47
393
- #: src/routes/dash/settings.tsx:131
473
+ #: src/ui/dash/settings/GeneralContent.tsx:299
474
+ #: src/ui/dash/settings/SettingsNav.tsx:15
394
475
  msgid "General"
395
476
  msgstr "一般設定"
396
477
 
@@ -409,77 +490,101 @@ msgstr "一般設定"
409
490
  #~ msgstr "圖片"
410
491
 
411
492
  #. @context: Media upload instructions - auto optimization
412
- #: src/routes/dash/media.tsx:171
493
+ #: src/ui/dash/media/MediaListContent.tsx:147
413
494
  msgid "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
414
495
  msgstr "圖片會自動優化:調整大小至最大 1920 像素,轉換為 WebP 格式,並去除元數據。"
415
496
 
416
497
  #. @context: Password reset error heading
417
- #: src/app.tsx:580
498
+ #: src/routes/auth/reset.tsx:120
418
499
  msgid "Invalid or Expired Link"
419
500
  msgstr "無效或已過期的連結"
420
501
 
502
+ #. @context: Checkbox for allowing search engine indexing
503
+ #: src/ui/dash/settings/GeneralContent.tsx:515
504
+ msgid "It's OK for search engines to index my site"
505
+ msgstr ""
506
+
421
507
  #. @context: Navigation link form field
422
- #: src/routes/dash/navigation.tsx:127
508
+ #: src/ui/dash/pages/LinkFormContent.tsx:39
423
509
  msgid "Label"
424
510
  msgstr "標籤"
425
511
 
426
512
  #. @context: Settings form field
427
- #: src/routes/dash/settings.tsx:172
513
+ #: src/ui/dash/settings/GeneralContent.tsx:350
428
514
  msgid "Language"
429
515
  msgstr "語言"
430
516
 
517
+ #. @context: Browse filter for latest posts
518
+ #. @context: Homepage view option - show latest posts
519
+ #: src/ui/dash/settings/GeneralContent.tsx:388
520
+ #: src/ui/layouts/SiteLayout.tsx:48
521
+ msgid "Latest"
522
+ msgstr ""
523
+
524
+ #. @context: Nav item type badge
525
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:123
526
+ msgid "link"
527
+ msgstr ""
528
+
529
+ #. @context: Compose format tab
431
530
  #. @context: Post format badge - link
432
531
  #. @context: Post format label - link
433
532
  #. @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
533
+ #: src/ui/compose/ComposeDialog.tsx:101
534
+ #: src/ui/dash/FormatBadge.tsx:20
535
+ #: src/ui/dash/PostForm.tsx:74
536
+ #: src/ui/pages/ArchivePage.tsx:17
437
537
  msgid "Link"
438
538
  msgstr "連結"
439
539
 
440
540
  #. @context: Post format label plural - links
441
- #: src/themes/threads/pages/ArchivePage.tsx:33
541
+ #: src/ui/pages/ArchivePage.tsx:33
442
542
  msgid "Links"
443
543
  msgstr "連結"
444
544
 
445
545
  #. @context: Pagination button - load more items
446
- #: src/theme/components/Pagination.tsx:103
546
+ #: src/ui/shared/Pagination.tsx:104
447
547
  msgid "Load more"
448
548
  msgstr "載入更多"
449
549
 
450
- #. @context: Loading indicator while fetching more posts
451
550
  #. @context: Loading state for media picker
452
- #: src/theme/components/PostForm.tsx:370
453
- #: src/themes/threads/timeline/TimelineLoadMore.tsx:28
551
+ #. @context: Loading state for media picker
552
+ #: src/ui/compose/ComposeDialog.tsx:405
553
+ #: src/ui/dash/PostForm.tsx:351
454
554
  msgid "Loading..."
455
555
  msgstr "載入中..."
456
556
 
457
557
  #. @context: Page slug validation message
458
- #: src/theme/components/PageForm.tsx:77
558
+ #: src/ui/dash/PageForm.tsx:77
459
559
  msgid "Lowercase letters, numbers, and hyphens only"
460
560
  msgstr "僅限小寫字母、數字和連字符"
461
561
 
462
562
  #. @context: Media detail section - Markdown snippet
463
- #: src/routes/dash/media.tsx:355
563
+ #: src/ui/dash/media/ViewMediaContent.tsx:146
464
564
  msgid "Markdown"
465
565
  msgstr "Markdown"
466
566
 
567
+ #. @context: Placeholder for footer textarea
568
+ #: src/ui/dash/settings/GeneralContent.tsx:466
569
+ msgid "Markdown supported"
570
+ msgstr ""
571
+
467
572
  #. @context: Dashboard navigation - media library
468
573
  #. @context: Media main heading
469
574
  #. @context: Post form field - media attachments
470
- #: src/routes/dash/media.tsx:151
471
- #: src/theme/components/PostForm.tsx:159
472
- #: src/theme/layouts/DashLayout.tsx:105
575
+ #: src/ui/dash/media/MediaListContent.tsx:127
576
+ #: src/ui/dash/PostForm.tsx:158
577
+ #: src/ui/layouts/DashLayout.tsx:105
473
578
  msgid "Media"
474
579
  msgstr "媒體"
475
580
 
476
581
  #. @context: Collection title placeholder
477
- #: src/routes/dash/collections.tsx:124
582
+ #: src/ui/dash/collections/CollectionForm.tsx:70
478
583
  msgid "My Collection"
479
584
  msgstr "我的收藏"
480
585
 
481
586
  #. @context: Account settings form field
482
- #: src/routes/dash/settings.tsx:373
587
+ #: src/ui/dash/settings/AccountContent.tsx:38
483
588
  msgid "Name"
484
589
  msgstr "名稱"
485
590
 
@@ -487,8 +592,8 @@ msgstr "名稱"
487
592
  #. @context: Dashboard navigation - navigation links management
488
593
  #: src/routes/dash/navigation.tsx:29
489
594
  #: src/theme/layouts/DashLayout.tsx:133
490
- msgid "Navigation"
491
- msgstr "導航"
595
+ #~ msgid "Navigation"
596
+ #~ msgstr "導航"
492
597
 
493
598
  #. @context: Help text with link
494
599
  #: src/routes/dash/index.tsx:78
@@ -498,41 +603,39 @@ msgstr "需要幫助嗎?請訪問<0>文檔</0>。"
498
603
  #. @context: Button to create new collection
499
604
  #. @context: Button to create new collection
500
605
  #. @context: Page heading
501
- #: src/routes/dash/collections.tsx:39
502
- #: src/routes/dash/collections.tsx:52
503
- #: src/routes/dash/collections.tsx:103
606
+ #: src/ui/dash/collections/CollectionForm.tsx:29
607
+ #: src/ui/dash/collections/CollectionsListContent.tsx:28
608
+ #: src/ui/dash/collections/CollectionsListContent.tsx:41
504
609
  msgid "New Collection"
505
610
  msgstr "新收藏集"
506
611
 
507
- #. @context: Button to create new navigation link
508
- #. @context: Button to create new navigation link
509
612
  #. @context: Page heading
510
- #: src/routes/dash/navigation.tsx:33
511
- #: src/routes/dash/navigation.tsx:46
512
- #: src/routes/dash/navigation.tsx:106
613
+ #: src/ui/dash/pages/LinkFormContent.tsx:18
513
614
  msgid "New Link"
514
615
  msgstr "新連結"
515
616
 
516
617
  #. @context: Button to create new page
517
618
  #. @context: New page main heading
518
- #: src/routes/dash/pages.tsx:35
519
- #: src/routes/dash/pages.tsx:105
619
+ #: src/routes/dash/pages.tsx:31
620
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:34
520
621
  msgid "New Page"
521
622
  msgstr "新頁面"
522
623
 
523
624
  #. @context: Password form field
524
625
  #. @context: Password reset form field
525
- #: src/app.tsx:520
526
- #: src/routes/dash/settings.tsx:442
626
+ #: src/routes/auth/reset.tsx:54
627
+ #: src/ui/dash/settings/AccountContent.tsx:113
527
628
  msgid "New Password"
528
629
  msgstr "新密碼"
529
630
 
530
631
  #. @context: Button to create new post
531
632
  #. @context: Button to create new post
633
+ #. @context: Compose dialog title
532
634
  #. @context: Page heading
533
635
  #: src/routes/dash/index.tsx:68
534
636
  #: src/routes/dash/posts.tsx:30
535
637
  #: src/routes/dash/posts.tsx:46
638
+ #: src/ui/compose/ComposeDialog.tsx:66
536
639
  msgid "New Post"
537
640
  msgstr "新帖子"
538
641
 
@@ -547,47 +650,59 @@ msgstr "新重定向"
547
650
 
548
651
  #. @context: Pagination button - next page
549
652
  #. @context: Pagination button - next page
550
- #: src/theme/components/Pagination.tsx:49
551
- #: src/theme/components/Pagination.tsx:160
653
+ #: src/ui/shared/Pagination.tsx:50
654
+ #: src/ui/shared/Pagination.tsx:167
552
655
  msgid "Next"
553
656
  msgstr "下一頁"
554
657
 
555
658
  #. @context: Empty state message
556
- #: src/routes/dash/collections.tsx:48
659
+ #. @context: Empty state message on collections page
660
+ #: src/ui/dash/collections/CollectionsListContent.tsx:37
661
+ #: src/ui/pages/CollectionsPage.tsx:28
557
662
  msgid "No collections yet."
558
663
  msgstr "尚未有任何收藏。"
559
664
 
665
+ #. @context: Empty state message on featured page
666
+ #: src/ui/pages/FeaturedPage.tsx:20
667
+ msgid "No featured posts yet."
668
+ msgstr ""
669
+
560
670
  #. @context: Empty state message when no media exists
561
- #: src/routes/dash/media.tsx:186
671
+ #: src/ui/dash/media/MediaListContent.tsx:162
562
672
  msgid "No media uploaded yet."
563
673
  msgstr "尚未上傳任何媒體。"
564
674
 
565
675
  #. @context: Empty state message
566
676
  #: src/routes/dash/navigation.tsx:42
567
- msgid "No navigation links configured."
568
- msgstr "未配置導航連結。"
677
+ #~ msgid "No navigation links configured."
678
+ #~ msgstr "未配置導航連結。"
679
+
680
+ #. @context: Empty state for navigation section
681
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:52
682
+ msgid "No navigation links yet. Add pages to navigation or create links."
683
+ msgstr ""
569
684
 
570
685
  #. @context: Empty state message when no pages exist
571
686
  #: src/routes/dash/pages.tsx:44
572
- msgid "No pages yet."
573
- msgstr "尚未有頁面。"
687
+ #~ msgid "No pages yet."
688
+ #~ msgstr "尚未有頁面。"
574
689
 
575
690
  #. @context: Archive empty state
576
- #: src/themes/threads/pages/ArchivePage.tsx:100
691
+ #: src/ui/pages/ArchivePage.tsx:103
577
692
  msgid "No posts found."
578
693
  msgstr "未找到任何帖子。"
579
694
 
580
695
  #. @context: Empty state message
581
696
  #. @context: Empty state message
582
- #: src/routes/dash/collections.tsx:243
583
- #: src/themes/threads/pages/CollectionPage.tsx:29
697
+ #: src/ui/dash/collections/ViewCollectionContent.tsx:56
698
+ #: src/ui/pages/CollectionPage.tsx:29
584
699
  msgid "No posts in this collection."
585
700
  msgstr "此集合中沒有帖子。"
586
701
 
587
702
  #. @context: Empty state message on home page
588
703
  #. @context: Empty state message when no posts exist
589
- #: src/theme/components/PostList.tsx:25
590
- #: src/themes/threads/pages/HomePage.tsx:26
704
+ #: src/ui/dash/PostList.tsx:25
705
+ #: src/ui/pages/HomePage.tsx:23
591
706
  msgid "No posts yet."
592
707
  msgstr "尚未有帖子。"
593
708
 
@@ -597,60 +712,76 @@ msgid "No redirects configured."
597
712
  msgstr "未配置任何重定向。"
598
713
 
599
714
  #. @context: Search empty results
600
- #: src/themes/threads/pages/SearchPage.tsx:67
715
+ #: src/ui/pages/SearchPage.tsx:64
601
716
  msgid "No results found."
602
717
  msgstr "未找到結果。"
603
718
 
604
719
  #. @context: No collection selected
605
- #: src/theme/components/PostForm.tsx:272
720
+ #. @context: No collection selected
721
+ #. @context: No rating selected
722
+ #: src/ui/compose/ComposeDialog.tsx:174
723
+ #: src/ui/compose/ComposeDialog.tsx:198
724
+ #: src/ui/dash/PostForm.tsx:271
606
725
  msgid "None"
607
726
  msgstr ""
608
727
 
728
+ #. @context: Compose format tab
609
729
  #. @context: Post format badge - note
610
730
  #. @context: Post format label - note
611
731
  #. @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
732
+ #: src/ui/compose/ComposeDialog.tsx:90
733
+ #: src/ui/dash/FormatBadge.tsx:19
734
+ #: src/ui/dash/PostForm.tsx:71
735
+ #: src/ui/pages/ArchivePage.tsx:16
615
736
  msgid "Note"
616
737
  msgstr "備註"
617
738
 
618
739
  #. @context: Post format label plural - notes
619
- #: src/themes/threads/pages/ArchivePage.tsx:29
740
+ #: src/ui/pages/ArchivePage.tsx:29
620
741
  msgid "Notes"
621
742
  msgstr "筆記"
622
743
 
744
+ #. @context: Section heading for pages not in navigation
745
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:139
746
+ msgid "Other pages"
747
+ msgstr ""
748
+
749
+ #. @context: Nav item type badge
750
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:119
751
+ msgid "page"
752
+ msgstr ""
753
+
623
754
  #. @context: Default page heading when untitled
624
- #: src/routes/dash/pages.tsx:120
755
+ #: src/routes/dash/pages.tsx:46
625
756
  msgid "Page"
626
757
  msgstr "頁面"
627
758
 
628
759
  #. @context: Pagination - current page indicator
629
- #: src/theme/components/Pagination.tsx:164
760
+ #: src/ui/shared/Pagination.tsx:227
630
761
  msgid "Page {page}"
631
762
  msgstr "頁面 {page}"
632
763
 
633
764
  #. @context: Page content placeholder
634
- #: src/theme/components/PageForm.tsx:104
765
+ #: src/ui/dash/PageForm.tsx:104
635
766
  msgid "Page content (Markdown supported)..."
636
767
  msgstr "頁面內容(支持Markdown)..."
637
768
 
638
769
  #. @context: Page title placeholder
639
- #: src/theme/components/PageForm.tsx:53
770
+ #: src/ui/dash/PageForm.tsx:53
640
771
  msgid "Page title..."
641
772
  msgstr "頁面標題..."
642
773
 
643
774
  #. @context: Dashboard navigation - pages management
644
775
  #. @context: Pages main heading
645
- #: src/routes/dash/pages.tsx:34
646
- #: src/theme/layouts/DashLayout.tsx:96
776
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:21
777
+ #: src/ui/layouts/DashLayout.tsx:96
647
778
  msgid "Pages"
648
779
  msgstr "頁面"
649
780
 
650
781
  #. @context: Setup/signin form field - password
651
782
  #. @context: Setup/signin form field - password
652
- #: src/app.tsx:260
653
- #: src/app.tsx:398
783
+ #: src/routes/auth/setup.tsx:79
784
+ #: src/routes/auth/signin.tsx:64
654
785
  msgid "Password"
655
786
  msgstr "密碼"
656
787
 
@@ -660,94 +791,93 @@ msgstr "密碼"
660
791
  #~ msgstr "路徑"
661
792
 
662
793
  #. @context: Navigation URL help text
663
- #: src/routes/dash/navigation.tsx:162
794
+ #: src/ui/dash/pages/LinkFormContent.tsx:74
664
795
  msgid "Path (e.g. /archive) or full URL (e.g. https://example.com)"
665
796
  msgstr "路徑(例如 /archive)或完整網址(例如 https://example.com)"
666
797
 
667
798
  #. @context: Link to individual post in thread
668
799
  #. @context: Link to permanent URL of post
669
- #: src/theme/components/ThreadView.tsx:71
670
- #: src/themes/threads/pages/PostPage.tsx:39
800
+ #: src/ui/pages/PostPage.tsx:48
801
+ #: src/ui/shared/ThreadView.tsx:71
671
802
  msgid "Permalink"
672
803
  msgstr "永久鏈接"
673
804
 
805
+ #. @context: Compose checkbox - pin to top
674
806
  #. @context: Post badge - pinned
675
807
  #. @context: Post form checkbox - pin to top
676
- #: src/theme/components/PostForm.tsx:254
677
- #: src/theme/components/VisibilityBadge.tsx:54
808
+ #: src/ui/compose/ComposeDialog.tsx:312
809
+ #: src/ui/dash/PostForm.tsx:253
810
+ #: src/ui/dash/StatusBadge.tsx:53
678
811
  msgid "Pinned"
679
812
  msgstr ""
680
813
 
814
+ #. @context: Singular post count label
815
+ #: src/ui/pages/CollectionsPage.tsx:56
816
+ msgid "post"
817
+ msgstr ""
818
+
819
+ #. @context: Compose button - publish post
820
+ #. @context: Compose prompt post button
681
821
  #. @context: Default post title
682
- #: src/routes/dash/posts.tsx:130
822
+ #: src/routes/dash/posts.tsx:128
823
+ #: src/ui/compose/ComposeDialog.tsx:365
824
+ #: src/ui/compose/ComposePrompt.tsx:48
683
825
  msgid "Post"
684
826
  msgstr "文章"
685
827
 
686
828
  #. @context: Post title placeholder
687
- #: src/theme/components/PostForm.tsx:95
829
+ #: src/ui/dash/PostForm.tsx:94
688
830
  msgid "Post title..."
689
831
  msgstr "文章標題..."
690
832
 
833
+ #. @context: Compose loading text while posting
834
+ #: src/ui/compose/ComposeDialog.tsx:345
835
+ #~ msgid "Posting..."
836
+ #~ msgstr ""
837
+
838
+ #. @context: Plural post count label
839
+ #: src/ui/pages/CollectionsPage.tsx:60
840
+ msgid "posts"
841
+ msgstr ""
842
+
691
843
  #. @context: Dashboard heading
692
844
  #. @context: Dashboard navigation - posts management
693
845
  #: src/routes/dash/posts.tsx:29
694
- #: src/theme/layouts/DashLayout.tsx:87
846
+ #: src/ui/layouts/DashLayout.tsx:87
695
847
  msgid "Posts"
696
848
  msgstr "文章"
697
849
 
698
850
  #. @context: Collection posts section heading
699
- #: src/routes/dash/collections.tsx:205
851
+ #: src/ui/dash/collections/ViewCollectionContent.tsx:18
700
852
  msgid "Posts in Collection ({count})"
701
853
  msgstr "收藏中的帖子 ({count})"
702
854
 
703
855
  #. @context: Media detail section - preview
704
- #: src/routes/dash/media.tsx:278
856
+ #: src/ui/dash/media/ViewMediaContent.tsx:69
705
857
  msgid "Preview"
706
858
  msgstr "預覽"
707
859
 
708
860
  #. @context: Pagination button - previous page
709
861
  #. @context: Pagination button - previous page
710
- #: src/theme/components/Pagination.tsx:45
711
- #: src/theme/components/Pagination.tsx:156
862
+ #: src/ui/shared/Pagination.tsx:46
863
+ #: src/ui/shared/Pagination.tsx:163
712
864
  msgid "Previous"
713
865
  msgstr "上一頁"
714
866
 
715
- #. @context: Loading text shown on submit button while request is in progress
716
- #. @context: Loading text shown on submit button while request is in progress
717
- #. @context: Loading text shown on submit button while request is in progress
718
- #. @context: Loading text shown on submit button while request is in progress
719
- #. @context: Loading text shown on submit button while request is in progress
720
- #. @context: Loading text shown on submit button while request is in progress
721
- #. @context: Loading text shown on submit button while request is in progress
722
- #. @context: Loading text shown on submit button while request is in progress
723
- #. @context: Loading text shown on submit button while request is in progress
724
- #. @context: Loading text shown on submit button while request is in progress
725
- #. @context: Loading text shown on submit button while request is in progress
726
- #. @context: Loading text shown on submit button while request is in progress
867
+ #. @context: Avatar upload button text while generating favicon variants
727
868
  #. @context: Upload status - processing
728
- #: src/app.tsx:281
729
- #: src/app.tsx:418
730
- #: src/app.tsx:558
731
- #: src/routes/dash/collections.tsx:178
732
- #: src/routes/dash/collections.tsx:346
733
- #: src/routes/dash/media.tsx:119
734
- #: src/routes/dash/navigation.tsx:184
735
- #: src/routes/dash/redirects.tsx:169
736
- #: 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
869
+ #: src/ui/dash/media/MediaListContent.tsx:95
870
+ #: src/ui/dash/settings/GeneralContent.tsx:215
741
871
  msgid "Processing..."
742
872
  msgstr "處理中..."
743
873
 
744
874
  #. @context: Account settings section heading
745
- #: src/routes/dash/settings.tsx:364
875
+ #: src/ui/dash/settings/AccountContent.tsx:29
746
876
  msgid "Profile"
747
877
  msgstr "個人資料"
748
878
 
749
879
  #. @context: Button to publish new post
750
- #: src/theme/components/PostForm.tsx:323
880
+ #: src/ui/dash/PostForm.tsx:312
751
881
  msgid "Publish"
752
882
  msgstr "發佈"
753
883
 
@@ -756,9 +886,9 @@ msgstr "發佈"
756
886
  #. @context: Post status label
757
887
  #. @context: Post status option
758
888
  #: 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
889
+ #: src/ui/dash/PageForm.tsx:127
890
+ #: src/ui/dash/PostForm.tsx:228
891
+ #: src/ui/dash/StatusBadge.tsx:30
762
892
  msgid "Published"
763
893
  msgstr "已發佈"
764
894
 
@@ -768,7 +898,7 @@ msgstr "已發佈"
768
898
  #~ msgstr "已發佈的頁面可以通過其路徑訪問。草稿不可見。"
769
899
 
770
900
  #. @context: Page status helper text
771
- #: src/theme/components/PageForm.tsx:140
901
+ #: src/ui/dash/PageForm.tsx:140
772
902
  msgid "Published pages are accessible via their slug. Drafts are not visible."
773
903
  msgstr ""
774
904
 
@@ -787,121 +917,154 @@ msgstr "快速操作"
787
917
  #~ msgid "Quiet (normal)"
788
918
  #~ msgstr "安靜(正常)"
789
919
 
920
+ #. @context: Compose format tab
790
921
  #. @context: Post format badge - quote
791
922
  #. @context: Post format label - quote
792
923
  #. @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
924
+ #: src/ui/compose/ComposeDialog.tsx:112
925
+ #: src/ui/dash/FormatBadge.tsx:21
926
+ #: src/ui/dash/PostForm.tsx:77
927
+ #: src/ui/pages/ArchivePage.tsx:18
796
928
  msgid "Quote"
797
929
  msgstr "引用"
798
930
 
799
931
  #. @context: Post form field - quoted text
800
- #: src/theme/components/PostForm.tsx:138
932
+ #: src/ui/dash/PostForm.tsx:137
801
933
  msgid "Quote Text"
802
934
  msgstr ""
803
935
 
804
936
  #. @context: Post format label plural - quotes
805
- #: src/themes/threads/pages/ArchivePage.tsx:37
937
+ #: src/ui/pages/ArchivePage.tsx:37
806
938
  msgid "Quotes"
807
939
  msgstr "引用"
808
940
 
941
+ #. @context: Compose rating field
942
+ #. @context: Compose toolbar - toggle rating
943
+ #: src/ui/compose/ComposeDialog.tsx:167
944
+ #: src/ui/compose/ComposeDialog.tsx:246
945
+ msgid "Rating"
946
+ msgstr ""
947
+
809
948
  #. @context: Dashboard heading
810
949
  #. @context: Dashboard navigation - URL redirects
811
950
  #: src/routes/dash/redirects.tsx:29
812
- #: src/theme/layouts/DashLayout.tsx:124
951
+ #: src/ui/layouts/DashLayout.tsx:124
813
952
  msgid "Redirects"
814
953
  msgstr "重定向"
815
954
 
955
+ #. @context: Button to remove the blog avatar
816
956
  #. @context: Remove media attachment button
817
- #: src/theme/components/PostForm.tsx:195
957
+ #: src/ui/dash/PostForm.tsx:194
958
+ #: src/ui/dash/settings/GeneralContent.tsx:243
818
959
  msgid "Remove"
819
960
  msgstr "移除"
820
961
 
821
962
  #. @context: Password reset form submit button
822
963
  #. @context: Password reset page heading
823
- #: src/app.tsx:499
824
- #: src/app.tsx:552
964
+ #: src/routes/auth/reset.tsx:33
965
+ #: src/routes/auth/reset.tsx:100
825
966
  msgid "Reset Password"
826
967
  msgstr "重設密碼"
827
968
 
969
+ #. @context: Button to save settings
970
+ #: src/ui/dash/settings/GeneralContent.tsx:74
971
+ msgid "Save"
972
+ msgstr ""
973
+
828
974
  #. @context: Button to save edited navigation link
829
- #: src/routes/dash/navigation.tsx:174
975
+ #: src/ui/dash/pages/LinkFormContent.tsx:100
830
976
  msgid "Save Changes"
831
977
  msgstr "保存更改"
832
978
 
979
+ #. @context: Button to save custom CSS
980
+ #: src/ui/dash/settings/AppearanceContent.tsx:246
981
+ msgid "Save CSS"
982
+ msgstr ""
983
+
833
984
  #. @context: Button to save profile
834
- #: src/routes/dash/settings.tsx:394
985
+ #: src/ui/dash/settings/AccountContent.tsx:73
835
986
  msgid "Save Profile"
836
987
  msgstr "保存個人資料"
837
988
 
838
989
  #. @context: Button to save settings
839
- #: src/routes/dash/settings.tsx:194
840
- msgid "Save Settings"
841
- msgstr "保存設定"
990
+ #: src/ui/dash/settings/GeneralContent.tsx:142
991
+ #~ msgid "Save Settings"
992
+ #~ msgstr "保存設定"
842
993
 
994
+ #. @context: Search icon link in browse nav
843
995
  #. @context: Search page title
844
996
  #. @context: Search submit button
845
- #: src/themes/threads/pages/SearchPage.tsx:21
846
- #: src/themes/threads/pages/SearchPage.tsx:47
997
+ #: src/ui/layouts/SiteLayout.tsx:67
998
+ #: src/ui/pages/SearchPage.tsx:20
999
+ #: src/ui/pages/SearchPage.tsx:44
847
1000
  msgid "Search"
848
1001
  msgstr "搜尋"
849
1002
 
850
1003
  #. @context: Search input placeholder
851
- #: src/themes/threads/pages/SearchPage.tsx:39
1004
+ #: src/ui/pages/SearchPage.tsx:36
852
1005
  msgid "Search posts..."
853
1006
  msgstr "搜尋帖子..."
854
1007
 
855
1008
  #. @context: Media picker dialog title
856
- #: src/theme/components/PostForm.tsx:349
1009
+ #. @context: Media picker dialog title
1010
+ #: src/ui/compose/ComposeDialog.tsx:384
1011
+ #: src/ui/dash/PostForm.tsx:330
857
1012
  msgid "Select Media"
858
1013
  msgstr "選擇媒體"
859
1014
 
1015
+ #. @context: Settings section heading for SEO
1016
+ #: src/ui/dash/settings/GeneralContent.tsx:498
1017
+ msgid "SEO"
1018
+ msgstr ""
1019
+
860
1020
  #. @context: Dashboard heading
861
1021
  #. @context: Dashboard heading
862
1022
  #. @context: Dashboard heading
863
1023
  #. @context: Dashboard navigation - site settings
864
- #: 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
1024
+ #: src/ui/dash/settings/AccountContent.tsx:16
1025
+ #: src/ui/dash/settings/AppearanceContent.tsx:101
1026
+ #: src/ui/dash/settings/GeneralContent.tsx:151
1027
+ #: src/ui/layouts/DashLayout.tsx:133
868
1028
  msgid "Settings"
869
1029
  msgstr "設定"
870
1030
 
871
1031
  #. @context: Link to show remaining thread replies
872
1032
  #. placeholder {0}: remainingCount === 1 ? "reply" : "replies"
873
- #: src/themes/threads/timeline/ThreadPreview.tsx:38
1033
+ #: src/ui/feed/ThreadPreview.tsx:37
874
1034
  msgid "Show {remainingCount} more {0}"
875
1035
  msgstr "顯示 {remainingCount} 個更多 {0}"
876
1036
 
877
1037
  #. @context: Sign in form submit button
878
1038
  #. @context: Sign in page heading
879
- #: src/app.tsx:365
880
- #: src/app.tsx:412
1039
+ #: src/routes/auth/signin.tsx:31
1040
+ #: src/routes/auth/signin.tsx:92
881
1041
  msgid "Sign In"
882
1042
  msgstr "登入"
883
1043
 
884
1044
  #. @context: Dashboard header link to sign out
885
- #: src/theme/layouts/DashLayout.tsx:63
1045
+ #: src/ui/layouts/DashLayout.tsx:63
886
1046
  msgid "Sign Out"
887
1047
  msgstr "登出"
888
1048
 
889
1049
  #. @context: Settings form field
890
- #: src/routes/dash/settings.tsx:155
891
- msgid "Site Description"
892
- msgstr "網站描述"
1050
+ #: src/ui/dash/settings/GeneralContent.tsx:72
1051
+ #~ msgid "Site Description"
1052
+ #~ msgstr "網站描述"
1053
+
1054
+ #. @context: Settings section heading for site footer
1055
+ #: src/ui/dash/settings/GeneralContent.tsx:454
1056
+ msgid "Site Footer"
1057
+ msgstr ""
893
1058
 
894
1059
  #. @context: Settings form field
895
- #: src/routes/dash/settings.tsx:140
1060
+ #: src/ui/dash/settings/GeneralContent.tsx:308
896
1061
  msgid "Site Name"
897
1062
  msgstr "網站名稱"
898
1063
 
899
- #. @context: Collection form field
900
1064
  #. @context: Collection form field
901
1065
  #. @context: Page form field label - URL slug
902
- #: src/routes/dash/collections.tsx:133
903
- #: src/routes/dash/collections.tsx:314
904
- #: src/theme/components/PageForm.tsx:64
1066
+ #: src/ui/dash/collections/CollectionForm.tsx:80
1067
+ #: src/ui/dash/PageForm.tsx:64
905
1068
  msgid "Slug"
906
1069
  msgstr "縮略名"
907
1070
 
@@ -917,8 +1080,8 @@ msgstr "縮略名"
917
1080
 
918
1081
  #. @context: Page form field label - publish status
919
1082
  #. @context: Post form field
920
- #: src/theme/components/PageForm.tsx:117
921
- #: src/theme/components/PostForm.tsx:222
1083
+ #: src/ui/dash/PageForm.tsx:117
1084
+ #: src/ui/dash/PostForm.tsx:221
922
1085
  msgid "Status"
923
1086
  msgstr "狀態"
924
1087
 
@@ -932,52 +1095,79 @@ msgstr "目的地路徑或 URL"
932
1095
  msgid "The path to redirect from"
933
1096
  msgstr "重定向來源的路徑"
934
1097
 
1098
+ #. @context: Compose quote text placeholder
935
1099
  #. @context: Quote text placeholder
936
- #: src/theme/components/PostForm.tsx:146
1100
+ #: src/ui/compose/ComposeDialog.tsx:156
1101
+ #: src/ui/dash/PostForm.tsx:145
937
1102
  msgid "The text being quoted..."
938
1103
  msgstr ""
939
1104
 
940
1105
  #. @context: Page slug helper text
941
- #: src/theme/components/PageForm.tsx:85
1106
+ #: src/ui/dash/PageForm.tsx:85
942
1107
  msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
943
1108
  msgstr "此頁面的 URL 路徑。使用小寫字母、數字和連字符。"
944
1109
 
1110
+ #. @context: Help text for site description field
1111
+ #: src/ui/dash/settings/GeneralContent.tsx:340
1112
+ msgid "This is displayed above your blog posts on your default home page. This is also used for the meta description on your home page."
1113
+ msgstr ""
1114
+
1115
+ #. @context: Help text for site footer field
1116
+ #: src/ui/dash/settings/GeneralContent.tsx:474
1117
+ msgid "This is displayed at the bottom of all of your posts and pages. Markdown is supported."
1118
+ msgstr ""
1119
+
1120
+ #. @context: Help text for avatar upload
1121
+ #: src/ui/dash/settings/GeneralContent.tsx:253
1122
+ msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1123
+ msgstr ""
1124
+
1125
+ #. @context: Help text for avatar upload
1126
+ #: src/ui/dash/settings/GeneralContent.tsx:238
1127
+ #~ msgid "This is used for your favicon."
1128
+ #~ msgstr ""
1129
+
945
1130
  #. @context: Password reset error description
946
- #: src/app.tsx:588
1131
+ #: src/routes/auth/reset.tsx:128
947
1132
  msgid "This password reset link is invalid or has expired. Please generate a new one."
948
1133
  msgstr "此密碼重設連結無效或已過期。請生成一個新的連結。"
949
1134
 
950
1135
  #. @context: Appearance settings description
951
- #: src/routes/dash/settings.tsx:317
1136
+ #: src/ui/dash/settings/AppearanceContent.tsx:118
952
1137
  msgid "This will theme both your site and your dashboard. All color themes support dark mode."
953
1138
  msgstr "這將為您的網站和儀表板設置主題。所有顏色主題都支持深色模式。"
954
1139
 
955
1140
  #. @context: Thread view indicator - first post in thread
956
- #: src/theme/components/ThreadView.tsx:60
1141
+ #: src/ui/shared/ThreadView.tsx:60
957
1142
  msgid "Thread start"
958
1143
  msgstr "線程開始"
959
1144
 
960
1145
  #. @context: Thread view header - multiple posts
961
- #: src/theme/components/ThreadView.tsx:105
1146
+ #: src/ui/shared/ThreadView.tsx:105
962
1147
  msgid "Thread with {count} posts"
963
1148
  msgstr "包含 {count} 則帖子的主題"
964
1149
 
965
1150
  #. @context: Thread view header - single post
966
- #: src/theme/components/ThreadView.tsx:101
1151
+ #: src/ui/shared/ThreadView.tsx:101
967
1152
  msgid "Thread with 1 post"
968
1153
  msgstr "包含 1 則貼文的主題"
969
1154
 
970
- #. @context: Collection form field
1155
+ #. @context: Settings form field
1156
+ #: src/ui/dash/settings/GeneralContent.tsx:409
1157
+ msgid "Time Zone"
1158
+ msgstr ""
1159
+
971
1160
  #. @context: Collection form field
972
1161
  #. @context: Page form field label - title
973
- #: src/routes/dash/collections.tsx:114
974
- #: src/routes/dash/collections.tsx:304
975
- #: src/theme/components/PageForm.tsx:44
1162
+ #: src/ui/dash/collections/CollectionForm.tsx:57
1163
+ #: src/ui/dash/PageForm.tsx:44
976
1164
  msgid "Title"
977
1165
  msgstr "標題"
978
1166
 
1167
+ #. @context: Compose title placeholder
979
1168
  #. @context: Post form field
980
- #: src/theme/components/PostForm.tsx:86
1169
+ #: src/ui/compose/ComposeDialog.tsx:124
1170
+ #: src/ui/dash/PostForm.tsx:85
981
1171
  msgid "Title (optional)"
982
1172
  msgstr "標題(選填)"
983
1173
 
@@ -991,6 +1181,11 @@ msgstr "到路徑"
991
1181
  msgid "Type"
992
1182
  msgstr "類型"
993
1183
 
1184
+ #. @context: Button to remove page from navigation
1185
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:82
1186
+ msgid "Un-nav"
1187
+ msgstr ""
1188
+
994
1189
  #. @context: Post visibility badge - unlisted
995
1190
  #. @context: Post visibility option
996
1191
  #: src/theme/components/PostForm.tsx:255
@@ -1000,60 +1195,69 @@ msgstr "類型"
1000
1195
 
1001
1196
  #. @context: Default title for untitled page
1002
1197
  #. @context: Default title for untitled post
1003
- #: src/routes/dash/pages.tsx:86
1004
- #: src/theme/components/PostList.tsx:86
1198
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:190
1199
+ #: src/ui/dash/PostList.tsx:86
1005
1200
  msgid "Untitled"
1006
1201
  msgstr "無標題"
1007
1202
 
1008
1203
  #. @context: Button to update existing post
1009
- #: src/theme/components/PostForm.tsx:319
1204
+ #: src/ui/dash/PostForm.tsx:308
1010
1205
  msgid "Update"
1011
1206
  msgstr "更新"
1012
1207
 
1013
1208
  #. @context: Button to save collection changes
1014
- #: src/routes/dash/collections.tsx:340
1209
+ #: src/ui/dash/collections/CollectionForm.tsx:32
1015
1210
  msgid "Update Collection"
1016
1211
  msgstr "更新收藏集"
1017
1212
 
1018
1213
  #. @context: Button to update existing page
1019
- #: src/theme/components/PageForm.tsx:153
1214
+ #: src/ui/dash/PageForm.tsx:167
1020
1215
  msgid "Update Page"
1021
1216
  msgstr "更新頁面"
1022
1217
 
1023
1218
  #. @context: Button to upload media file
1024
- #: src/routes/dash/media.tsx:127
1219
+ #: src/ui/dash/media/MediaListContent.tsx:103
1025
1220
  msgid "Upload"
1026
1221
  msgstr "上傳"
1027
1222
 
1223
+ #. @context: Button to upload avatar image
1224
+ #: src/ui/dash/settings/GeneralContent.tsx:205
1225
+ msgid "Upload Avatar"
1226
+ msgstr ""
1227
+
1228
+ #. @context: Error message when avatar upload fails
1028
1229
  #. @context: Upload error message
1029
- #: src/routes/dash/media.tsx:131
1230
+ #: src/ui/dash/media/MediaListContent.tsx:107
1231
+ #: src/ui/dash/settings/GeneralContent.tsx:225
1030
1232
  msgid "Upload failed. Please try again."
1031
1233
  msgstr "上傳失敗。請再試一次。"
1032
1234
 
1235
+ #. @context: Avatar upload button text while uploading
1033
1236
  #. @context: Upload status - uploading
1034
- #: src/routes/dash/media.tsx:123
1237
+ #: src/ui/dash/media/MediaListContent.tsx:99
1238
+ #: src/ui/dash/settings/GeneralContent.tsx:220
1035
1239
  msgid "Uploading..."
1036
1240
  msgstr "上傳中..."
1037
1241
 
1038
1242
  #. @context: Media detail section - URL
1039
1243
  #. @context: Navigation link form field
1040
- #: src/routes/dash/media.tsx:318
1041
- #: src/routes/dash/navigation.tsx:149
1244
+ #: src/ui/dash/media/ViewMediaContent.tsx:109
1245
+ #: src/ui/dash/pages/LinkFormContent.tsx:61
1042
1246
  msgid "URL"
1043
1247
  msgstr "網址"
1044
1248
 
1045
1249
  #. @context: Post form field - source URL
1046
- #: src/theme/components/PostForm.tsx:122
1250
+ #: src/ui/dash/PostForm.tsx:121
1047
1251
  msgid "URL (optional)"
1048
1252
  msgstr ""
1049
1253
 
1050
1254
  #. @context: Collection path help text
1051
- #: src/routes/dash/collections.tsx:144
1255
+ #: src/ui/dash/collections/CollectionForm.tsx:92
1052
1256
  msgid "URL-safe identifier (lowercase, numbers, hyphens)"
1053
1257
  msgstr "網址安全識別碼(小寫、數字、連字符)"
1054
1258
 
1055
1259
  #. @context: Media URL helper text
1056
- #: src/routes/dash/media.tsx:344
1260
+ #: src/ui/dash/media/ViewMediaContent.tsx:135
1057
1261
  msgid "Use this URL to embed the media in your posts."
1058
1262
  msgstr "使用此 URL 將媒體嵌入到您的帖子中。"
1059
1263
 
@@ -1064,18 +1268,18 @@ msgstr "使用此 URL 將媒體嵌入到您的帖子中。"
1064
1268
  #. @context: Button to view page on public site
1065
1269
  #. @context: Button to view post
1066
1270
  #. @context: Button to view post on public site
1067
- #: src/routes/dash/collections.tsx:71
1068
- #: 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
1271
+ #: src/routes/dash/pages.tsx:60
1272
+ #: src/routes/dash/posts.tsx:145
1273
+ #: src/ui/dash/ActionButtons.tsx:76
1274
+ #: src/ui/dash/collections/CollectionsListContent.tsx:60
1275
+ #: src/ui/dash/collections/ViewCollectionContent.tsx:38
1276
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:177
1277
+ #: src/ui/dash/PostList.tsx:55
1074
1278
  msgid "View"
1075
1279
  msgstr "查看"
1076
1280
 
1077
1281
  #. @context: Dashboard header link to view the public site
1078
- #: src/theme/layouts/DashLayout.tsx:53
1282
+ #: src/ui/layouts/DashLayout.tsx:53
1079
1283
  msgid "View Site"
1080
1284
  msgstr "查看網站"
1081
1285
 
@@ -1085,21 +1289,33 @@ msgstr "查看網站"
1085
1289
  #~ msgstr "可見性"
1086
1290
 
1087
1291
  #. @context: Setup page welcome heading
1088
- #: src/app.tsx:209
1292
+ #: src/routes/auth/setup.tsx:27
1089
1293
  msgid "Welcome to Jant"
1090
1294
  msgstr "歡迎來到 Jant"
1091
1295
 
1296
+ #. @context: Compose prompt placeholder text
1297
+ #: src/ui/compose/ComposePrompt.tsx:37
1298
+ msgid "What's new?"
1299
+ msgstr ""
1300
+
1301
+ #. @context: Compose body placeholder
1092
1302
  #. @context: Post content placeholder
1093
- #: src/theme/components/PostForm.tsx:110
1303
+ #: src/ui/compose/ComposeDialog.tsx:134
1304
+ #: src/ui/dash/PostForm.tsx:109
1094
1305
  msgid "What's on your mind?"
1095
1306
  msgstr "你在想什麼?"
1096
1307
 
1097
1308
  #. @context: Collection description placeholder
1098
- #: src/routes/dash/collections.tsx:162
1309
+ #: src/ui/dash/collections/CollectionForm.tsx:114
1099
1310
  msgid "What's this collection about?"
1100
1311
  msgstr "這個收藏是關於什麼的?"
1101
1312
 
1102
1313
  #. @context: Setup form field - user name
1103
- #: src/app.tsx:230
1314
+ #: src/routes/auth/setup.tsx:49
1104
1315
  msgid "Your Name"
1105
1316
  msgstr "您的姓名"
1317
+
1318
+ #. @context: Section heading for navigation items
1319
+ #: src/ui/dash/pages/UnifiedPagesContent.tsx:45
1320
+ msgid "Your site navigation"
1321
+ msgstr ""