@jant/core 0.3.20 → 0.3.22

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 (94) hide show
  1. package/dist/app.js +60 -17
  2. package/dist/index.js +8 -0
  3. package/dist/lib/feed.js +112 -0
  4. package/dist/lib/navigation.js +9 -9
  5. package/dist/lib/render.js +48 -0
  6. package/dist/lib/theme-components.js +18 -18
  7. package/dist/lib/view.js +228 -0
  8. package/dist/routes/api/timeline.js +20 -16
  9. package/dist/routes/dash/collections.js +38 -10
  10. package/dist/routes/dash/navigation.js +22 -8
  11. package/dist/routes/dash/redirects.js +19 -5
  12. package/dist/routes/dash/settings.js +57 -15
  13. package/dist/routes/feed/rss.js +34 -78
  14. package/dist/routes/feed/sitemap.js +11 -26
  15. package/dist/routes/pages/archive.js +18 -195
  16. package/dist/routes/pages/collection.js +16 -70
  17. package/dist/routes/pages/home.js +25 -47
  18. package/dist/routes/pages/page.js +15 -27
  19. package/dist/routes/pages/post.js +25 -79
  20. package/dist/routes/pages/search.js +20 -130
  21. package/dist/theme/components/MediaGallery.js +10 -10
  22. package/dist/theme/components/PageForm.js +22 -8
  23. package/dist/theme/components/PostForm.js +22 -8
  24. package/dist/theme/components/index.js +1 -1
  25. package/dist/theme/components/timeline/ArticleCard.js +7 -11
  26. package/dist/theme/components/timeline/ImageCard.js +10 -13
  27. package/dist/theme/components/timeline/LinkCard.js +4 -7
  28. package/dist/theme/components/timeline/NoteCard.js +5 -8
  29. package/dist/theme/components/timeline/QuoteCard.js +3 -6
  30. package/dist/theme/components/timeline/ThreadPreview.js +9 -10
  31. package/dist/theme/components/timeline/TimelineFeed.js +8 -5
  32. package/dist/theme/components/timeline/TimelineItem.js +22 -2
  33. package/dist/theme/components/timeline/index.js +1 -1
  34. package/dist/theme/index.js +6 -3
  35. package/dist/theme/layouts/SiteLayout.js +10 -39
  36. package/dist/theme/pages/ArchivePage.js +157 -0
  37. package/dist/theme/pages/CollectionPage.js +63 -0
  38. package/dist/theme/pages/HomePage.js +26 -0
  39. package/dist/theme/pages/PostPage.js +48 -0
  40. package/dist/theme/pages/SearchPage.js +120 -0
  41. package/dist/theme/pages/SinglePage.js +23 -0
  42. package/dist/theme/pages/index.js +11 -0
  43. package/package.json +2 -1
  44. package/src/app.tsx +48 -17
  45. package/src/i18n/locales/en.po +171 -147
  46. package/src/i18n/locales/zh-Hans.po +171 -147
  47. package/src/i18n/locales/zh-Hant.po +171 -147
  48. package/src/index.ts +51 -2
  49. package/src/lib/__tests__/theme-components.test.ts +33 -14
  50. package/src/lib/__tests__/view.test.ts +375 -0
  51. package/src/lib/feed.ts +148 -0
  52. package/src/lib/navigation.ts +11 -11
  53. package/src/lib/render.tsx +67 -0
  54. package/src/lib/theme-components.ts +27 -35
  55. package/src/lib/view.ts +318 -0
  56. package/src/routes/api/__tests__/timeline.test.ts +3 -3
  57. package/src/routes/api/timeline.tsx +32 -25
  58. package/src/routes/dash/collections.tsx +30 -10
  59. package/src/routes/dash/navigation.tsx +20 -10
  60. package/src/routes/dash/redirects.tsx +15 -5
  61. package/src/routes/dash/settings.tsx +53 -15
  62. package/src/routes/feed/rss.ts +47 -94
  63. package/src/routes/feed/sitemap.ts +8 -30
  64. package/src/routes/pages/archive.tsx +24 -209
  65. package/src/routes/pages/collection.tsx +19 -75
  66. package/src/routes/pages/home.tsx +42 -76
  67. package/src/routes/pages/page.tsx +17 -28
  68. package/src/routes/pages/post.tsx +28 -86
  69. package/src/routes/pages/search.tsx +29 -151
  70. package/src/services/search.ts +2 -8
  71. package/src/theme/components/MediaGallery.tsx +12 -12
  72. package/src/theme/components/PageForm.tsx +20 -10
  73. package/src/theme/components/PostForm.tsx +20 -10
  74. package/src/theme/components/index.ts +1 -0
  75. package/src/theme/components/timeline/ArticleCard.tsx +7 -19
  76. package/src/theme/components/timeline/ImageCard.tsx +10 -20
  77. package/src/theme/components/timeline/LinkCard.tsx +4 -11
  78. package/src/theme/components/timeline/NoteCard.tsx +5 -12
  79. package/src/theme/components/timeline/QuoteCard.tsx +3 -10
  80. package/src/theme/components/timeline/ThreadPreview.tsx +5 -5
  81. package/src/theme/components/timeline/TimelineFeed.tsx +7 -3
  82. package/src/theme/components/timeline/TimelineItem.tsx +43 -4
  83. package/src/theme/components/timeline/index.ts +1 -1
  84. package/src/theme/index.ts +7 -3
  85. package/src/theme/layouts/SiteLayout.tsx +25 -77
  86. package/src/theme/layouts/index.ts +2 -1
  87. package/src/theme/pages/ArchivePage.tsx +160 -0
  88. package/src/theme/pages/CollectionPage.tsx +60 -0
  89. package/src/theme/pages/HomePage.tsx +42 -0
  90. package/src/theme/pages/PostPage.tsx +44 -0
  91. package/src/theme/pages/SearchPage.tsx +128 -0
  92. package/src/theme/pages/SinglePage.tsx +24 -0
  93. package/src/theme/pages/index.ts +13 -0
  94. package/src/types.ts +262 -38
@@ -14,27 +14,27 @@ msgstr ""
14
14
  "Plural-Forms: \n"
15
15
 
16
16
  #. @context: Archive post reply indicator - plural
17
- #: src/routes/pages/archive.tsx:180
18
- msgid "{count} replies"
19
- msgstr "{count} 條回覆"
17
+ #: src/theme/pages/ArchivePage.tsx:168
18
+ #~ msgid "{count} replies"
19
+ #~ msgstr "{count} 條回覆"
20
20
 
21
21
  #. @context: Navigation link
22
- #: src/routes/dash/collections.tsx:272
22
+ #: src/routes/dash/collections.tsx:282
23
23
  msgid "← Back to Collections"
24
24
  msgstr "← 返回收藏夾"
25
25
 
26
26
  #. @context: Archive post reply indicator - single
27
- #: src/routes/pages/archive.tsx:175
28
- msgid "1 reply"
29
- msgstr "1 條回覆"
27
+ #: src/theme/pages/ArchivePage.tsx:163
28
+ #~ msgid "1 reply"
29
+ #~ msgstr "1 條回覆"
30
30
 
31
31
  #. @context: Redirect type option
32
- #: src/routes/dash/redirects.tsx:145
32
+ #: src/routes/dash/redirects.tsx:146
33
33
  msgid "301 (Permanent)"
34
34
  msgstr "301(永久)"
35
35
 
36
36
  #. @context: Redirect type option
37
- #: src/routes/dash/redirects.tsx:151
37
+ #: src/routes/dash/redirects.tsx:152
38
38
  msgid "302 (Temporary)"
39
39
  msgstr "302(臨時)"
40
40
 
@@ -44,12 +44,12 @@ msgid "Account"
44
44
  msgstr "帳戶"
45
45
 
46
46
  #. @context: Button to open media picker
47
- #: src/theme/components/PostForm.tsx:189
47
+ #: src/theme/components/PostForm.tsx:190
48
48
  msgid "Add Media"
49
49
  msgstr "添加媒體"
50
50
 
51
51
  #. @context: Archive filter - all types
52
- #: src/routes/pages/archive.tsx:115
52
+ #: src/theme/pages/ArchivePage.tsx:92
53
53
  msgid "All"
54
54
  msgstr "所有"
55
55
 
@@ -59,7 +59,7 @@ msgid "Appearance"
59
59
  msgstr "外觀"
60
60
 
61
61
  #. @context: Archive page title
62
- #: src/routes/pages/archive.tsx:102
62
+ #: src/theme/pages/ArchivePage.tsx:77
63
63
  msgid "Archive"
64
64
  msgstr "檔案館"
65
65
 
@@ -71,19 +71,19 @@ msgstr ""
71
71
  #. @context: Post type badge - article
72
72
  #. @context: Post type label - article
73
73
  #. @context: Post type option
74
- #: src/routes/pages/archive.tsx:28
75
- #: src/theme/components/PostForm.tsx:73
74
+ #: src/theme/components/PostForm.tsx:74
76
75
  #: src/theme/components/TypeBadge.tsx:20
76
+ #: src/theme/pages/ArchivePage.tsx:18
77
77
  msgid "Article"
78
78
  msgstr "文章"
79
79
 
80
80
  #. @context: Post type label plural - articles
81
- #: src/routes/pages/archive.tsx:53
81
+ #: src/theme/pages/ArchivePage.tsx:43
82
82
  msgid "Articles"
83
83
  msgstr "文章"
84
84
 
85
85
  #. @context: Hint for image post type media requirement
86
- #: src/theme/components/PostForm.tsx:136
86
+ #: src/theme/components/PostForm.tsx:137
87
87
  msgid "At least 1 image required for image posts."
88
88
  msgstr "至少需要 1 張圖片才能發佈圖片帖子。"
89
89
 
@@ -98,19 +98,19 @@ msgstr "返回"
98
98
  #. @context: Button to cancel form
99
99
  #. @context: Button to cancel form
100
100
  #. @context: Button to cancel form
101
- #: src/routes/dash/collections.tsx:176
102
- #: src/routes/dash/collections.tsx:345
103
- #: src/routes/dash/navigation.tsx:182
104
- #: src/routes/dash/redirects.tsx:167
105
- #: src/theme/components/PageForm.tsx:161
106
- #: src/theme/components/PostForm.tsx:323
101
+ #: src/routes/dash/collections.tsx:186
102
+ #: src/routes/dash/collections.tsx:365
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:333
107
107
  msgid "Cancel"
108
108
  msgstr "取消"
109
109
 
110
110
  #. @context: Button to change password
111
111
  #. @context: Settings section heading
112
- #: src/routes/dash/settings.tsx:392
113
- #: src/routes/dash/settings.tsx:452
112
+ #: src/routes/dash/settings.tsx:417
113
+ #: src/routes/dash/settings.tsx:482
114
114
  msgid "Change Password"
115
115
  msgstr "更改密碼"
116
116
 
@@ -127,34 +127,34 @@ msgid "Collections"
127
127
  msgstr "收藏夾"
128
128
 
129
129
  #. @context: Post form field - assign to collections
130
- #: src/theme/components/PostForm.tsx:272
130
+ #: src/theme/components/PostForm.tsx:273
131
131
  msgid "Collections (optional)"
132
132
  msgstr "收藏(可選)"
133
133
 
134
134
  #. @context: Appearance settings heading
135
- #: src/routes/dash/settings.tsx:301
135
+ #: src/routes/dash/settings.tsx:311
136
136
  msgid "Color theme"
137
137
  msgstr "顏色主題"
138
138
 
139
139
  #. @context: Setup form submit button
140
- #: src/app.tsx:251
140
+ #: src/app.tsx:254
141
141
  msgid "Complete Setup"
142
142
  msgstr "完成設置"
143
143
 
144
144
  #. @context: Password form field
145
- #: src/routes/dash/settings.tsx:434
145
+ #: src/routes/dash/settings.tsx:459
146
146
  msgid "Confirm New Password"
147
147
  msgstr "確認新密碼"
148
148
 
149
149
  #. @context: Password reset form field
150
- #: src/app.tsx:493
150
+ #: src/app.tsx:515
151
151
  msgid "Confirm Password"
152
152
  msgstr "確認密碼"
153
153
 
154
154
  #. @context: Page form field label - content
155
155
  #. @context: Post form field
156
- #: src/theme/components/PageForm.tsx:95
157
- #: src/theme/components/PostForm.tsx:109
156
+ #: src/theme/components/PageForm.tsx:96
157
+ #: src/theme/components/PostForm.tsx:110
158
158
  msgid "Content"
159
159
  msgstr "內容"
160
160
 
@@ -166,27 +166,27 @@ msgid "Copy"
166
166
  msgstr "複製"
167
167
 
168
168
  #. @context: Button to save new collection
169
- #: src/routes/dash/collections.tsx:170
169
+ #: src/routes/dash/collections.tsx:172
170
170
  msgid "Create Collection"
171
171
  msgstr "創建收藏夾"
172
172
 
173
173
  #. @context: Button to save new navigation link
174
- #: src/routes/dash/navigation.tsx:176
174
+ #: src/routes/dash/navigation.tsx:178
175
175
  msgid "Create Link"
176
176
  msgstr "建立連結"
177
177
 
178
178
  #. @context: Button to create new page
179
- #: src/theme/components/PageForm.tsx:155
179
+ #: src/theme/components/PageForm.tsx:157
180
180
  msgid "Create Page"
181
181
  msgstr "創建頁面"
182
182
 
183
183
  #. @context: Button to save new redirect
184
- #: src/routes/dash/redirects.tsx:161
184
+ #: src/routes/dash/redirects.tsx:163
185
185
  msgid "Create Redirect"
186
186
  msgstr "建立重定向"
187
187
 
188
188
  #. @context: Setup page description
189
- #: src/app.tsx:193
189
+ #: src/app.tsx:194
190
190
  msgid "Create your admin account."
191
191
  msgstr "建立您的管理員帳戶。"
192
192
 
@@ -201,12 +201,12 @@ msgid "Create your first post"
201
201
  msgstr "創建你的第一篇帖子"
202
202
 
203
203
  #. @context: Password form field
204
- #: src/routes/dash/settings.tsx:401
204
+ #: src/routes/dash/settings.tsx:426
205
205
  msgid "Current Password"
206
206
  msgstr "當前密碼"
207
207
 
208
208
  #. @context: Post form field
209
- #: src/theme/components/PostForm.tsx:296
209
+ #: src/theme/components/PostForm.tsx:297
210
210
  msgid "Custom Path (optional)"
211
211
  msgstr "自訂路徑(選填)"
212
212
 
@@ -232,7 +232,7 @@ msgid "Delete"
232
232
  msgstr "刪除"
233
233
 
234
234
  #. @context: Button to delete collection
235
- #: src/routes/dash/collections.tsx:354
235
+ #: src/routes/dash/collections.tsx:374
236
236
  msgid "Delete Collection"
237
237
  msgstr "刪除收藏夾"
238
238
 
@@ -252,32 +252,32 @@ msgid "Deleting this media will remove it permanently from storage."
252
252
  msgstr "刪除此媒體將永久從存儲中移除它。"
253
253
 
254
254
  #. @context: Hint shown on signin page when demo credentials are pre-filled
255
- #: src/app.tsx:342
255
+ #: src/app.tsx:353
256
256
  msgid "Demo account pre-filled. Just click Sign In."
257
257
  msgstr "示範帳戶已預填。只需點擊登入。"
258
258
 
259
259
  #. @context: Collection form field
260
260
  #. @context: Collection form field
261
- #: src/routes/dash/collections.tsx:152
262
- #: src/routes/dash/collections.tsx:327
261
+ #: src/routes/dash/collections.tsx:153
262
+ #: src/routes/dash/collections.tsx:338
263
263
  msgid "Description (optional)"
264
264
  msgstr "描述(可選)"
265
265
 
266
266
  #. @context: Navigation label help text
267
- #: src/routes/dash/navigation.tsx:139
267
+ #: src/routes/dash/navigation.tsx:140
268
268
  msgid "Display text for the link"
269
269
  msgstr "顯示連結的文字"
270
270
 
271
271
  #. @context: Close media picker button
272
- #: src/theme/components/PostForm.tsx:345
272
+ #: src/theme/components/PostForm.tsx:355
273
273
  msgid "Done"
274
274
  msgstr "完成"
275
275
 
276
276
  #. @context: Page status option - draft
277
277
  #. @context: Post visibility badge - draft
278
278
  #. @context: Post visibility option
279
- #: src/theme/components/PageForm.tsx:132
280
- #: src/theme/components/PostForm.tsx:260
279
+ #: src/theme/components/PageForm.tsx:133
280
+ #: src/theme/components/PostForm.tsx:261
281
281
  #: src/theme/components/VisibilityBadge.tsx:38
282
282
  msgid "Draft"
283
283
  msgstr "草稿"
@@ -288,7 +288,7 @@ msgid "Drafts"
288
288
  msgstr "草稿"
289
289
 
290
290
  #. @context: Source name placeholder
291
- #: src/theme/components/PostForm.tsx:225
291
+ #: src/theme/components/PostForm.tsx:226
292
292
  msgid "e.g. The Verge, John Doe"
293
293
  msgstr "例如:The Verge,約翰·多伊"
294
294
 
@@ -301,7 +301,7 @@ msgstr "例如:The Verge,約翰·多伊"
301
301
  #. @context: Button to edit post
302
302
  #. @context: Button to edit post
303
303
  #: src/routes/dash/collections.tsx:66
304
- #: src/routes/dash/collections.tsx:210
304
+ #: src/routes/dash/collections.tsx:220
305
305
  #: src/routes/dash/navigation.tsx:61
306
306
  #: src/routes/dash/pages.tsx:64
307
307
  #: src/routes/dash/pages.tsx:134
@@ -312,7 +312,7 @@ msgid "Edit"
312
312
  msgstr "編輯"
313
313
 
314
314
  #. @context: Page heading
315
- #: src/routes/dash/collections.tsx:294
315
+ #: src/routes/dash/collections.tsx:304
316
316
  msgid "Edit Collection"
317
317
  msgstr "編輯收藏集"
318
318
 
@@ -333,56 +333,56 @@ msgstr "編輯文章"
333
333
 
334
334
  #. @context: Setup/signin form field - email
335
335
  #. @context: Setup/signin form field - email
336
- #: src/app.tsx:222
337
- #: src/app.tsx:356
336
+ #: src/app.tsx:224
337
+ #: src/app.tsx:368
338
338
  msgid "Email"
339
339
  msgstr "電子郵件"
340
340
 
341
341
  #. @context: Password reset page description
342
- #: src/app.tsx:463
342
+ #: src/app.tsx:484
343
343
  msgid "Enter your new password."
344
344
  msgstr "請輸入您的新密碼。"
345
345
 
346
346
  #. @context: Post visibility badge - featured
347
347
  #. @context: Post visibility option
348
- #: src/theme/components/PostForm.tsx:248
348
+ #: src/theme/components/PostForm.tsx:249
349
349
  #: src/theme/components/VisibilityBadge.tsx:26
350
350
  msgid "Featured"
351
351
  msgstr "精選"
352
352
 
353
353
  #. @context: Search results count - multiple
354
- #: src/routes/pages/search.tsx:89
354
+ #: src/theme/pages/SearchPage.tsx:77
355
355
  msgid "Found {count} results"
356
356
  msgstr "找到 {count} 個結果"
357
357
 
358
358
  #. @context: Search results count - single
359
- #: src/routes/pages/search.tsx:85
359
+ #: src/theme/pages/SearchPage.tsx:73
360
360
  msgid "Found 1 result"
361
361
  msgstr "找到 1 個結果"
362
362
 
363
363
  #. @context: Redirect form field
364
- #: src/routes/dash/redirects.tsx:97
364
+ #: src/routes/dash/redirects.tsx:98
365
365
  msgid "From Path"
366
366
  msgstr "來源路徑"
367
367
 
368
368
  #. @context: Settings section heading
369
369
  #. @context: Settings sub-navigation tab
370
370
  #: src/routes/dash/settings.tsx:47
371
- #: src/routes/dash/settings.tsx:130
371
+ #: src/routes/dash/settings.tsx:131
372
372
  msgid "General"
373
373
  msgstr "一般設定"
374
374
 
375
375
  #. @context: Post type badge - image
376
376
  #. @context: Post type label - image
377
377
  #. @context: Post type option
378
- #: src/routes/pages/archive.tsx:37
379
- #: src/theme/components/PostForm.tsx:82
378
+ #: src/theme/components/PostForm.tsx:83
380
379
  #: src/theme/components/TypeBadge.tsx:29
380
+ #: src/theme/pages/ArchivePage.tsx:27
381
381
  msgid "Image"
382
382
  msgstr "圖片"
383
383
 
384
384
  #. @context: Post type label plural - images
385
- #: src/routes/pages/archive.tsx:65
385
+ #: src/theme/pages/ArchivePage.tsx:55
386
386
  msgid "Images"
387
387
  msgstr "圖片"
388
388
 
@@ -392,48 +392,48 @@ msgid "Images are automatically optimized: resized to max 1920px, converted to W
392
392
  msgstr "圖片會自動優化:調整大小至最大 1920 像素,轉換為 WebP 格式,並去除元數據。"
393
393
 
394
394
  #. @context: Password reset error heading
395
- #: src/app.tsx:528
395
+ #: src/app.tsx:559
396
396
  msgid "Invalid or Expired Link"
397
397
  msgstr "無效或已過期的連結"
398
398
 
399
399
  #. @context: Navigation link form field
400
- #: src/routes/dash/navigation.tsx:126
400
+ #: src/routes/dash/navigation.tsx:127
401
401
  msgid "Label"
402
402
  msgstr "標籤"
403
403
 
404
404
  #. @context: Settings form field
405
- #: src/routes/dash/settings.tsx:171
405
+ #: src/routes/dash/settings.tsx:172
406
406
  msgid "Language"
407
407
  msgstr "語言"
408
408
 
409
409
  #. @context: Post type badge - link
410
410
  #. @context: Post type label - link
411
411
  #. @context: Post type option
412
- #: src/routes/pages/archive.tsx:32
413
- #: src/theme/components/PostForm.tsx:76
412
+ #: src/theme/components/PostForm.tsx:77
414
413
  #: src/theme/components/TypeBadge.tsx:24
414
+ #: src/theme/pages/ArchivePage.tsx:22
415
415
  msgid "Link"
416
416
  msgstr "連結"
417
417
 
418
418
  #. @context: Post type label plural - links
419
- #: src/routes/pages/archive.tsx:57
419
+ #: src/theme/pages/ArchivePage.tsx:47
420
420
  msgid "Links"
421
421
  msgstr "連結"
422
422
 
423
423
  #. @context: Button to load more posts in timeline
424
424
  #. @context: Pagination button - load more items
425
425
  #: src/theme/components/Pagination.tsx:103
426
- #: src/theme/components/timeline/TimelineFeed.tsx:43
426
+ #: src/theme/components/timeline/TimelineFeed.tsx:47
427
427
  msgid "Load more"
428
428
  msgstr "載入更多"
429
429
 
430
430
  #. @context: Loading state for media picker
431
- #: src/theme/components/PostForm.tsx:356
431
+ #: src/theme/components/PostForm.tsx:366
432
432
  msgid "Loading..."
433
433
  msgstr "載入中..."
434
434
 
435
435
  #. @context: Page path validation message
436
- #: src/theme/components/PageForm.tsx:76
436
+ #: src/theme/components/PageForm.tsx:77
437
437
  msgid "Lowercase letters, numbers, and hyphens only"
438
438
  msgstr "僅限小寫字母、數字和連字符"
439
439
 
@@ -446,18 +446,18 @@ msgstr "Markdown"
446
446
  #. @context: Media main heading
447
447
  #. @context: Post form field - media attachments
448
448
  #: src/routes/dash/media.tsx:151
449
- #: src/theme/components/PostForm.tsx:127
449
+ #: src/theme/components/PostForm.tsx:128
450
450
  #: src/theme/layouts/DashLayout.tsx:105
451
451
  msgid "Media"
452
452
  msgstr "媒體"
453
453
 
454
454
  #. @context: Collection title placeholder
455
- #: src/routes/dash/collections.tsx:123
455
+ #: src/routes/dash/collections.tsx:124
456
456
  msgid "My Collection"
457
457
  msgstr "我的收藏"
458
458
 
459
459
  #. @context: Account settings form field
460
- #: src/routes/dash/settings.tsx:362
460
+ #: src/routes/dash/settings.tsx:373
461
461
  msgid "Name"
462
462
  msgstr "名稱"
463
463
 
@@ -500,8 +500,8 @@ msgstr "新頁面"
500
500
 
501
501
  #. @context: Password form field
502
502
  #. @context: Password reset form field
503
- #: src/app.tsx:477
504
- #: src/routes/dash/settings.tsx:417
503
+ #: src/app.tsx:499
504
+ #: src/routes/dash/settings.tsx:442
505
505
  msgid "New Password"
506
506
  msgstr "新密碼"
507
507
 
@@ -551,21 +551,21 @@ msgid "No pages yet."
551
551
  msgstr "尚未有頁面。"
552
552
 
553
553
  #. @context: Archive empty state
554
- #: src/routes/pages/archive.tsx:135
554
+ #: src/theme/pages/ArchivePage.tsx:112
555
555
  msgid "No posts found."
556
556
  msgstr "未找到任何帖子。"
557
557
 
558
558
  #. @context: Empty state message
559
559
  #. @context: Empty state message
560
- #: src/routes/dash/collections.tsx:233
561
- #: src/routes/pages/collection.tsx:39
560
+ #: src/routes/dash/collections.tsx:243
561
+ #: src/theme/pages/CollectionPage.tsx:30
562
562
  msgid "No posts in this collection."
563
563
  msgstr "此集合中沒有帖子。"
564
564
 
565
565
  #. @context: Empty state message on home page
566
566
  #. @context: Empty state message when no posts exist
567
- #: src/routes/pages/home.tsx:42
568
567
  #: src/theme/components/PostList.tsx:25
568
+ #: src/theme/pages/HomePage.tsx:27
569
569
  msgid "No posts yet."
570
570
  msgstr "尚未有帖子。"
571
571
 
@@ -575,21 +575,21 @@ msgid "No redirects configured."
575
575
  msgstr "未配置任何重定向。"
576
576
 
577
577
  #. @context: Search empty results
578
- #: src/routes/pages/search.tsx:80
578
+ #: src/theme/pages/SearchPage.tsx:68
579
579
  msgid "No results found."
580
580
  msgstr "未找到結果。"
581
581
 
582
582
  #. @context: Post type badge - note
583
583
  #. @context: Post type label - note
584
584
  #. @context: Post type option
585
- #: src/routes/pages/archive.tsx:27
586
- #: src/theme/components/PostForm.tsx:70
585
+ #: src/theme/components/PostForm.tsx:71
587
586
  #: src/theme/components/TypeBadge.tsx:19
587
+ #: src/theme/pages/ArchivePage.tsx:17
588
588
  msgid "Note"
589
589
  msgstr "備註"
590
590
 
591
591
  #. @context: Post type label plural - notes
592
- #: src/routes/pages/archive.tsx:49
592
+ #: src/theme/pages/ArchivePage.tsx:39
593
593
  msgid "Notes"
594
594
  msgstr "筆記"
595
595
 
@@ -597,8 +597,8 @@ msgstr "筆記"
597
597
  #. @context: Post type badge - page
598
598
  #. @context: Post type label - page
599
599
  #: src/routes/dash/pages.tsx:125
600
- #: src/routes/pages/archive.tsx:41
601
600
  #: src/theme/components/TypeBadge.tsx:33
601
+ #: src/theme/pages/ArchivePage.tsx:31
602
602
  msgid "Page"
603
603
  msgstr "頁面"
604
604
 
@@ -608,12 +608,12 @@ msgid "Page {page}"
608
608
  msgstr "頁面 {page}"
609
609
 
610
610
  #. @context: Page content placeholder
611
- #: src/theme/components/PageForm.tsx:103
611
+ #: src/theme/components/PageForm.tsx:104
612
612
  msgid "Page content (Markdown supported)..."
613
613
  msgstr "頁面內容(支持Markdown)..."
614
614
 
615
615
  #. @context: Page title placeholder
616
- #: src/theme/components/PageForm.tsx:52
616
+ #: src/theme/components/PageForm.tsx:53
617
617
  msgid "Page title..."
618
618
  msgstr "頁面標題..."
619
619
 
@@ -621,32 +621,32 @@ msgstr "頁面標題..."
621
621
  #. @context: Pages main heading
622
622
  #. @context: Post type label plural - pages
623
623
  #: src/routes/dash/pages.tsx:36
624
- #: src/routes/pages/archive.tsx:69
625
624
  #: src/theme/layouts/DashLayout.tsx:96
625
+ #: src/theme/pages/ArchivePage.tsx:59
626
626
  msgid "Pages"
627
627
  msgstr "頁面"
628
628
 
629
629
  #. @context: Setup/signin form field - password
630
630
  #. @context: Setup/signin form field - password
631
- #: src/app.tsx:237
632
- #: src/app.tsx:365
631
+ #: src/app.tsx:239
632
+ #: src/app.tsx:377
633
633
  msgid "Password"
634
634
  msgstr "密碼"
635
635
 
636
636
  #. @context: Page form field label - URL path
637
- #: src/theme/components/PageForm.tsx:63
637
+ #: src/theme/components/PageForm.tsx:64
638
638
  msgid "Path"
639
639
  msgstr "路徑"
640
640
 
641
641
  #. @context: Navigation URL help text
642
- #: src/routes/dash/navigation.tsx:161
642
+ #: src/routes/dash/navigation.tsx:162
643
643
  msgid "Path (e.g. /archive) or full URL (e.g. https://example.com)"
644
644
  msgstr "路徑(例如 /archive)或完整網址(例如 https://example.com)"
645
645
 
646
646
  #. @context: Link to individual post in thread
647
647
  #. @context: Link to permanent URL of post
648
- #: src/routes/pages/post.tsx:56
649
648
  #: src/theme/components/ThreadView.tsx:68
649
+ #: src/theme/pages/PostPage.tsx:36
650
650
  msgid "Permalink"
651
651
  msgstr "永久鏈接"
652
652
 
@@ -656,7 +656,7 @@ msgid "Post"
656
656
  msgstr "文章"
657
657
 
658
658
  #. @context: Post title placeholder
659
- #: src/theme/components/PostForm.tsx:99
659
+ #: src/theme/components/PostForm.tsx:100
660
660
  msgid "Post title..."
661
661
  msgstr "文章標題..."
662
662
 
@@ -668,7 +668,7 @@ msgid "Posts"
668
668
  msgstr "文章"
669
669
 
670
670
  #. @context: Collection posts section heading
671
- #: src/routes/dash/collections.tsx:195
671
+ #: src/routes/dash/collections.tsx:205
672
672
  msgid "Posts in Collection ({count})"
673
673
  msgstr "收藏中的帖子 ({count})"
674
674
 
@@ -684,30 +684,54 @@ msgstr "預覽"
684
684
  msgid "Previous"
685
685
  msgstr "上一頁"
686
686
 
687
+ #. @context: Loading text shown on submit button while request is in progress
688
+ #. @context: Loading text shown on submit button while request is in progress
689
+ #. @context: Loading text shown on submit button while request is in progress
690
+ #. @context: Loading text shown on submit button while request is in progress
691
+ #. @context: Loading text shown on submit button while request is in progress
692
+ #. @context: Loading text shown on submit button while request is in progress
693
+ #. @context: Loading text shown on submit button while request is in progress
694
+ #. @context: Loading text shown on submit button while request is in progress
695
+ #. @context: Loading text shown on submit button while request is in progress
696
+ #. @context: Loading text shown on submit button while request is in progress
697
+ #. @context: Loading text shown on submit button while request is in progress
698
+ #. @context: Loading text shown on submit button while request is in progress
687
699
  #. @context: Upload status - processing
700
+ #: src/app.tsx:260
701
+ #: src/app.tsx:397
702
+ #: src/app.tsx:537
703
+ #: src/routes/dash/collections.tsx:178
704
+ #: src/routes/dash/collections.tsx:357
688
705
  #: src/routes/dash/media.tsx:119
706
+ #: src/routes/dash/navigation.tsx:184
707
+ #: src/routes/dash/redirects.tsx:169
708
+ #: src/routes/dash/settings.tsx:200
709
+ #: src/routes/dash/settings.tsx:400
710
+ #: src/routes/dash/settings.tsx:488
711
+ #: src/theme/components/PageForm.tsx:163
712
+ #: src/theme/components/PostForm.tsx:325
689
713
  msgid "Processing..."
690
714
  msgstr "處理中..."
691
715
 
692
716
  #. @context: Account settings section heading
693
- #: src/routes/dash/settings.tsx:353
717
+ #: src/routes/dash/settings.tsx:364
694
718
  msgid "Profile"
695
719
  msgstr "個人資料"
696
720
 
697
721
  #. @context: Button to publish new post
698
- #: src/theme/components/PostForm.tsx:317
722
+ #: src/theme/components/PostForm.tsx:319
699
723
  msgid "Publish"
700
724
  msgstr "發佈"
701
725
 
702
726
  #. @context: Page status option - published
703
727
  #. @context: Post status label
704
728
  #: src/routes/dash/index.tsx:45
705
- #: src/theme/components/PageForm.tsx:126
729
+ #: src/theme/components/PageForm.tsx:127
706
730
  msgid "Published"
707
731
  msgstr "已發佈"
708
732
 
709
733
  #. @context: Page status helper text
710
- #: src/theme/components/PageForm.tsx:139
734
+ #: src/theme/components/PageForm.tsx:140
711
735
  msgid "Published pages are accessible via their path. Drafts are not visible."
712
736
  msgstr "已發佈的頁面可以通過其路徑訪問。草稿不可見。"
713
737
 
@@ -722,21 +746,21 @@ msgid "Quiet"
722
746
  msgstr "安靜"
723
747
 
724
748
  #. @context: Post visibility option
725
- #: src/theme/components/PostForm.tsx:242
749
+ #: src/theme/components/PostForm.tsx:243
726
750
  msgid "Quiet (normal)"
727
751
  msgstr "安靜(正常)"
728
752
 
729
753
  #. @context: Post type badge - quote
730
754
  #. @context: Post type label - quote
731
755
  #. @context: Post type option
732
- #: src/routes/pages/archive.tsx:33
733
- #: src/theme/components/PostForm.tsx:79
756
+ #: src/theme/components/PostForm.tsx:80
734
757
  #: src/theme/components/TypeBadge.tsx:25
758
+ #: src/theme/pages/ArchivePage.tsx:23
735
759
  msgid "Quote"
736
760
  msgstr "引用"
737
761
 
738
762
  #. @context: Post type label plural - quotes
739
- #: src/routes/pages/archive.tsx:61
763
+ #: src/theme/pages/ArchivePage.tsx:51
740
764
  msgid "Quotes"
741
765
  msgstr "引用"
742
766
 
@@ -749,47 +773,47 @@ msgstr "重定向"
749
773
 
750
774
  #. @context: Button to remove post from collection
751
775
  #. @context: Remove media attachment button
752
- #: src/routes/dash/collections.tsx:257
753
- #: src/theme/components/PostForm.tsx:172
776
+ #: src/routes/dash/collections.tsx:267
777
+ #: src/theme/components/PostForm.tsx:173
754
778
  msgid "Remove"
755
779
  msgstr "移除"
756
780
 
757
781
  #. @context: Password reset form submit button
758
782
  #. @context: Password reset page heading
759
- #: src/app.tsx:457
760
- #: src/app.tsx:508
783
+ #: src/app.tsx:478
784
+ #: src/app.tsx:531
761
785
  msgid "Reset Password"
762
786
  msgstr "重設密碼"
763
787
 
764
788
  #. @context: Button to save edited navigation link
765
- #: src/routes/dash/navigation.tsx:172
789
+ #: src/routes/dash/navigation.tsx:174
766
790
  msgid "Save Changes"
767
791
  msgstr "保存更改"
768
792
 
769
793
  #. @context: Button to save profile
770
- #: src/routes/dash/settings.tsx:378
794
+ #: src/routes/dash/settings.tsx:394
771
795
  msgid "Save Profile"
772
796
  msgstr "保存個人資料"
773
797
 
774
798
  #. @context: Button to save settings
775
- #: src/routes/dash/settings.tsx:192
799
+ #: src/routes/dash/settings.tsx:194
776
800
  msgid "Save Settings"
777
801
  msgstr "保存設定"
778
802
 
779
803
  #. @context: Search page title
780
804
  #. @context: Search submit button
781
- #: src/routes/pages/search.tsx:36
782
- #: src/routes/pages/search.tsx:60
805
+ #: src/theme/pages/SearchPage.tsx:22
806
+ #: src/theme/pages/SearchPage.tsx:48
783
807
  msgid "Search"
784
808
  msgstr "搜尋"
785
809
 
786
810
  #. @context: Search input placeholder
787
- #: src/routes/pages/search.tsx:52
811
+ #: src/theme/pages/SearchPage.tsx:40
788
812
  msgid "Search posts..."
789
813
  msgstr "搜尋帖子..."
790
814
 
791
815
  #. @context: Media picker dialog title
792
- #: src/theme/components/PostForm.tsx:335
816
+ #: src/theme/components/PostForm.tsx:345
793
817
  msgid "Select Media"
794
818
  msgstr "選擇媒體"
795
819
 
@@ -798,8 +822,8 @@ msgstr "選擇媒體"
798
822
  #. @context: Dashboard heading
799
823
  #. @context: Dashboard navigation - site settings
800
824
  #: src/routes/dash/settings.tsx:118
801
- #: src/routes/dash/settings.tsx:290
802
- #: src/routes/dash/settings.tsx:341
825
+ #: src/routes/dash/settings.tsx:300
826
+ #: src/routes/dash/settings.tsx:351
803
827
  #: src/theme/layouts/DashLayout.tsx:143
804
828
  msgid "Settings"
805
829
  msgstr "設定"
@@ -812,8 +836,8 @@ msgstr "顯示 {remainingCount} 個更多 {0}"
812
836
 
813
837
  #. @context: Sign in form submit button
814
838
  #. @context: Sign in page heading
815
- #: src/app.tsx:333
816
- #: src/app.tsx:378
839
+ #: src/app.tsx:344
840
+ #: src/app.tsx:391
817
841
  msgid "Sign In"
818
842
  msgstr "登入"
819
843
 
@@ -823,59 +847,59 @@ msgid "Sign Out"
823
847
  msgstr "登出"
824
848
 
825
849
  #. @context: Settings form field
826
- #: src/routes/dash/settings.tsx:154
850
+ #: src/routes/dash/settings.tsx:155
827
851
  msgid "Site Description"
828
852
  msgstr "網站描述"
829
853
 
830
854
  #. @context: Settings form field
831
- #: src/routes/dash/settings.tsx:139
855
+ #: src/routes/dash/settings.tsx:140
832
856
  msgid "Site Name"
833
857
  msgstr "網站名稱"
834
858
 
835
859
  #. @context: Collection form field
836
860
  #. @context: Collection form field
837
- #: src/routes/dash/collections.tsx:132
838
- #: src/routes/dash/collections.tsx:314
861
+ #: src/routes/dash/collections.tsx:133
862
+ #: src/routes/dash/collections.tsx:325
839
863
  msgid "Slug"
840
864
  msgstr "縮略名"
841
865
 
842
866
  #. @context: Post form field - name of the source website or author
843
- #: src/theme/components/PostForm.tsx:215
867
+ #: src/theme/components/PostForm.tsx:216
844
868
  msgid "Source Name (optional)"
845
869
  msgstr "來源名稱(選填)"
846
870
 
847
871
  #. @context: Post form field
848
- #: src/theme/components/PostForm.tsx:199
872
+ #: src/theme/components/PostForm.tsx:200
849
873
  msgid "Source URL (optional)"
850
874
  msgstr "來源網址(選填)"
851
875
 
852
876
  #. @context: Page form field label - publish status
853
- #: src/theme/components/PageForm.tsx:116
877
+ #: src/theme/components/PageForm.tsx:117
854
878
  msgid "Status"
855
879
  msgstr "狀態"
856
880
 
857
881
  #. @context: Redirect to path help text
858
- #: src/routes/dash/redirects.tsx:132
882
+ #: src/routes/dash/redirects.tsx:133
859
883
  msgid "The destination path or URL"
860
884
  msgstr "目的地路徑或 URL"
861
885
 
862
886
  #. @context: Redirect from path help text
863
- #: src/routes/dash/redirects.tsx:110
887
+ #: src/routes/dash/redirects.tsx:111
864
888
  msgid "The path to redirect from"
865
889
  msgstr "重定向來源的路徑"
866
890
 
867
891
  #. @context: Page path helper text
868
- #: src/theme/components/PageForm.tsx:84
892
+ #: src/theme/components/PageForm.tsx:85
869
893
  msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
870
894
  msgstr "此頁面的 URL 路徑。使用小寫字母、數字和連字符。"
871
895
 
872
896
  #. @context: Password reset error description
873
- #: src/app.tsx:536
897
+ #: src/app.tsx:567
874
898
  msgid "This password reset link is invalid or has expired. Please generate a new one."
875
899
  msgstr "此密碼重設連結無效或已過期。請生成一個新的連結。"
876
900
 
877
901
  #. @context: Appearance settings description
878
- #: src/routes/dash/settings.tsx:307
902
+ #: src/routes/dash/settings.tsx:317
879
903
  msgid "This will theme both your site and your dashboard. All color themes support dark mode."
880
904
  msgstr "這將為您的網站和儀表板設置主題。所有顏色主題都支持深色模式。"
881
905
 
@@ -897,32 +921,32 @@ msgstr "包含 1 則貼文的主題"
897
921
  #. @context: Collection form field
898
922
  #. @context: Collection form field
899
923
  #. @context: Page form field label - title
900
- #: src/routes/dash/collections.tsx:113
901
- #: src/routes/dash/collections.tsx:304
902
- #: src/theme/components/PageForm.tsx:43
924
+ #: src/routes/dash/collections.tsx:114
925
+ #: src/routes/dash/collections.tsx:315
926
+ #: src/theme/components/PageForm.tsx:44
903
927
  msgid "Title"
904
928
  msgstr "標題"
905
929
 
906
930
  #. @context: Post form field
907
- #: src/theme/components/PostForm.tsx:90
931
+ #: src/theme/components/PostForm.tsx:91
908
932
  msgid "Title (optional)"
909
933
  msgstr "標題(選填)"
910
934
 
911
935
  #. @context: Redirect form field
912
- #: src/routes/dash/redirects.tsx:119
936
+ #: src/routes/dash/redirects.tsx:120
913
937
  msgid "To Path"
914
938
  msgstr "到路徑"
915
939
 
916
940
  #. @context: Post form field - post type
917
941
  #. @context: Redirect form field
918
- #: src/routes/dash/redirects.tsx:141
919
- #: src/theme/components/PostForm.tsx:63
942
+ #: src/routes/dash/redirects.tsx:142
943
+ #: src/theme/components/PostForm.tsx:64
920
944
  msgid "Type"
921
945
  msgstr "類型"
922
946
 
923
947
  #. @context: Post visibility badge - unlisted
924
948
  #. @context: Post visibility option
925
- #: src/theme/components/PostForm.tsx:254
949
+ #: src/theme/components/PostForm.tsx:255
926
950
  #: src/theme/components/VisibilityBadge.tsx:34
927
951
  msgid "Unlisted"
928
952
  msgstr "不公開"
@@ -935,17 +959,17 @@ msgid "Untitled"
935
959
  msgstr "無標題"
936
960
 
937
961
  #. @context: Button to update existing post
938
- #: src/theme/components/PostForm.tsx:313
962
+ #: src/theme/components/PostForm.tsx:315
939
963
  msgid "Update"
940
964
  msgstr "更新"
941
965
 
942
966
  #. @context: Button to save collection changes
943
- #: src/routes/dash/collections.tsx:339
967
+ #: src/routes/dash/collections.tsx:351
944
968
  msgid "Update Collection"
945
969
  msgstr "更新收藏集"
946
970
 
947
971
  #. @context: Button to update existing page
948
- #: src/theme/components/PageForm.tsx:151
972
+ #: src/theme/components/PageForm.tsx:153
949
973
  msgid "Update Page"
950
974
  msgstr "更新頁面"
951
975
 
@@ -967,12 +991,12 @@ msgstr "上傳中..."
967
991
  #. @context: Media detail section - URL
968
992
  #. @context: Navigation link form field
969
993
  #: src/routes/dash/media.tsx:318
970
- #: src/routes/dash/navigation.tsx:148
994
+ #: src/routes/dash/navigation.tsx:149
971
995
  msgid "URL"
972
996
  msgstr "網址"
973
997
 
974
998
  #. @context: Collection path help text
975
- #: src/routes/dash/collections.tsx:143
999
+ #: src/routes/dash/collections.tsx:144
976
1000
  msgid "URL-safe identifier (lowercase, numbers, hyphens)"
977
1001
  msgstr "網址安全識別碼(小寫、數字、連字符)"
978
1002
 
@@ -989,7 +1013,7 @@ msgstr "使用此 URL 將媒體嵌入到您的帖子中。"
989
1013
  #. @context: Button to view post
990
1014
  #. @context: Button to view post on public site
991
1015
  #: src/routes/dash/collections.tsx:71
992
- #: src/routes/dash/collections.tsx:215
1016
+ #: src/routes/dash/collections.tsx:225
993
1017
  #: src/routes/dash/pages.tsx:73
994
1018
  #: src/routes/dash/pages.tsx:143
995
1019
  #: src/routes/dash/posts.tsx:147
@@ -1004,26 +1028,26 @@ msgid "View Site"
1004
1028
  msgstr "查看網站"
1005
1029
 
1006
1030
  #. @context: Post form field
1007
- #: src/theme/components/PostForm.tsx:235
1031
+ #: src/theme/components/PostForm.tsx:236
1008
1032
  msgid "Visibility"
1009
1033
  msgstr "可見性"
1010
1034
 
1011
1035
  #. @context: Setup page welcome heading
1012
- #: src/app.tsx:187
1036
+ #: src/app.tsx:188
1013
1037
  msgid "Welcome to Jant"
1014
1038
  msgstr "歡迎來到 Jant"
1015
1039
 
1016
1040
  #. @context: Post content placeholder
1017
- #: src/theme/components/PostForm.tsx:114
1041
+ #: src/theme/components/PostForm.tsx:115
1018
1042
  msgid "What's on your mind?"
1019
1043
  msgstr "你在想什麼?"
1020
1044
 
1021
1045
  #. @context: Collection description placeholder
1022
- #: src/routes/dash/collections.tsx:161
1046
+ #: src/routes/dash/collections.tsx:162
1023
1047
  msgid "What's this collection about?"
1024
1048
  msgstr "這個收藏是關於什麼的?"
1025
1049
 
1026
1050
  #. @context: Setup form field - user name
1027
- #: src/app.tsx:207
1051
+ #: src/app.tsx:209
1028
1052
  msgid "Your Name"
1029
1053
  msgstr "您的姓名"