@jant/core 0.3.21 → 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 (82) hide show
  1. package/dist/app.js +1 -1
  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/feed/rss.js +34 -78
  10. package/dist/routes/feed/sitemap.js +11 -26
  11. package/dist/routes/pages/archive.js +18 -195
  12. package/dist/routes/pages/collection.js +16 -70
  13. package/dist/routes/pages/home.js +25 -47
  14. package/dist/routes/pages/page.js +15 -27
  15. package/dist/routes/pages/post.js +25 -79
  16. package/dist/routes/pages/search.js +20 -130
  17. package/dist/theme/components/MediaGallery.js +10 -10
  18. package/dist/theme/components/index.js +1 -1
  19. package/dist/theme/components/timeline/ArticleCard.js +7 -11
  20. package/dist/theme/components/timeline/ImageCard.js +10 -13
  21. package/dist/theme/components/timeline/LinkCard.js +4 -7
  22. package/dist/theme/components/timeline/NoteCard.js +5 -8
  23. package/dist/theme/components/timeline/QuoteCard.js +3 -6
  24. package/dist/theme/components/timeline/ThreadPreview.js +9 -10
  25. package/dist/theme/components/timeline/TimelineFeed.js +8 -5
  26. package/dist/theme/components/timeline/TimelineItem.js +22 -2
  27. package/dist/theme/components/timeline/index.js +1 -1
  28. package/dist/theme/index.js +6 -3
  29. package/dist/theme/layouts/SiteLayout.js +10 -39
  30. package/dist/theme/pages/ArchivePage.js +157 -0
  31. package/dist/theme/pages/CollectionPage.js +63 -0
  32. package/dist/theme/pages/HomePage.js +26 -0
  33. package/dist/theme/pages/PostPage.js +48 -0
  34. package/dist/theme/pages/SearchPage.js +120 -0
  35. package/dist/theme/pages/SinglePage.js +23 -0
  36. package/dist/theme/pages/index.js +11 -0
  37. package/package.json +2 -1
  38. package/src/app.tsx +1 -1
  39. package/src/i18n/locales/en.po +31 -31
  40. package/src/i18n/locales/zh-Hans.po +31 -31
  41. package/src/i18n/locales/zh-Hant.po +31 -31
  42. package/src/index.ts +51 -2
  43. package/src/lib/__tests__/theme-components.test.ts +33 -14
  44. package/src/lib/__tests__/view.test.ts +375 -0
  45. package/src/lib/feed.ts +148 -0
  46. package/src/lib/navigation.ts +11 -11
  47. package/src/lib/render.tsx +67 -0
  48. package/src/lib/theme-components.ts +27 -35
  49. package/src/lib/view.ts +318 -0
  50. package/src/routes/api/__tests__/timeline.test.ts +3 -3
  51. package/src/routes/api/timeline.tsx +32 -25
  52. package/src/routes/feed/rss.ts +47 -94
  53. package/src/routes/feed/sitemap.ts +8 -30
  54. package/src/routes/pages/archive.tsx +24 -209
  55. package/src/routes/pages/collection.tsx +19 -75
  56. package/src/routes/pages/home.tsx +42 -76
  57. package/src/routes/pages/page.tsx +17 -28
  58. package/src/routes/pages/post.tsx +28 -86
  59. package/src/routes/pages/search.tsx +29 -151
  60. package/src/services/search.ts +2 -8
  61. package/src/theme/components/MediaGallery.tsx +12 -12
  62. package/src/theme/components/index.ts +1 -0
  63. package/src/theme/components/timeline/ArticleCard.tsx +7 -19
  64. package/src/theme/components/timeline/ImageCard.tsx +10 -20
  65. package/src/theme/components/timeline/LinkCard.tsx +4 -11
  66. package/src/theme/components/timeline/NoteCard.tsx +5 -12
  67. package/src/theme/components/timeline/QuoteCard.tsx +3 -10
  68. package/src/theme/components/timeline/ThreadPreview.tsx +5 -5
  69. package/src/theme/components/timeline/TimelineFeed.tsx +7 -3
  70. package/src/theme/components/timeline/TimelineItem.tsx +43 -4
  71. package/src/theme/components/timeline/index.ts +1 -1
  72. package/src/theme/index.ts +7 -3
  73. package/src/theme/layouts/SiteLayout.tsx +25 -77
  74. package/src/theme/layouts/index.ts +2 -1
  75. package/src/theme/pages/ArchivePage.tsx +160 -0
  76. package/src/theme/pages/CollectionPage.tsx +60 -0
  77. package/src/theme/pages/HomePage.tsx +42 -0
  78. package/src/theme/pages/PostPage.tsx +44 -0
  79. package/src/theme/pages/SearchPage.tsx +128 -0
  80. package/src/theme/pages/SinglePage.tsx +24 -0
  81. package/src/theme/pages/index.ts +13 -0
  82. package/src/types.ts +262 -38
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Default Single Page Component
3
+ *
4
+ * Renders a custom page (type "page").
5
+ * Theme authors can replace this entirely via ThemeComponents.SinglePage.
6
+ */ import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
7
+ export const SinglePage = ({ page })=>{
8
+ return /*#__PURE__*/ _jsxs("article", {
9
+ class: "h-entry",
10
+ children: [
11
+ page.title && /*#__PURE__*/ _jsx("h1", {
12
+ class: "p-name text-3xl font-semibold mb-6",
13
+ children: page.title
14
+ }),
15
+ /*#__PURE__*/ _jsx("div", {
16
+ class: "e-content prose",
17
+ dangerouslySetInnerHTML: {
18
+ __html: page.contentHtml || ""
19
+ }
20
+ })
21
+ ]
22
+ });
23
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default Page Components
3
+ *
4
+ * These are the built-in page components that render each public page.
5
+ * Theme authors can import these to wrap/extend them.
6
+ */ export { HomePage } from "./HomePage.js";
7
+ export { PostPage } from "./PostPage.js";
8
+ export { SinglePage } from "./SinglePage.js";
9
+ export { ArchivePage } from "./ArchivePage.js";
10
+ export { SearchPage } from "./SearchPage.js";
11
+ export { CollectionPage } from "./CollectionPage.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jant/core",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
4
4
  "description": "A modern, open-source microblogging platform built on Cloudflare Workers",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,6 +45,7 @@
45
45
  "zod": "^4.3.6"
46
46
  },
47
47
  "peerDependencies": {
48
+ "hono": "^4.0.0",
48
49
  "tailwindcss": "^4.0.0"
49
50
  },
50
51
  "devDependencies": {
package/src/app.tsx CHANGED
@@ -77,7 +77,7 @@ export type App = Hono<{ Bindings: Bindings; Variables: AppVariables }>;
77
77
  * import { createApp } from "@jant/core";
78
78
  *
79
79
  * export default createApp({
80
- * theme: { components: { PostCard: MyPostCard } },
80
+ * theme: { components: { PostPage: MyPostPage } },
81
81
  * });
82
82
  * ```
83
83
  */
@@ -14,9 +14,9 @@ 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} replies"
17
+ #: src/theme/pages/ArchivePage.tsx:168
18
+ #~ msgid "{count} replies"
19
+ #~ msgstr "{count} replies"
20
20
 
21
21
  #. @context: Navigation link
22
22
  #: src/routes/dash/collections.tsx:282
@@ -31,9 +31,9 @@ msgstr "← Back to Collections"
31
31
  #~ msgstr "← Back to home"
32
32
 
33
33
  #. @context: Archive post reply indicator - single
34
- #: src/routes/pages/archive.tsx:175
35
- msgid "1 reply"
36
- msgstr "1 reply"
34
+ #: src/theme/pages/ArchivePage.tsx:163
35
+ #~ msgid "1 reply"
36
+ #~ msgstr "1 reply"
37
37
 
38
38
  #. @context: Redirect type option
39
39
  #: src/routes/dash/redirects.tsx:146
@@ -56,7 +56,7 @@ msgid "Add Media"
56
56
  msgstr "Add Media"
57
57
 
58
58
  #. @context: Archive filter - all types
59
- #: src/routes/pages/archive.tsx:115
59
+ #: src/theme/pages/ArchivePage.tsx:92
60
60
  msgid "All"
61
61
  msgstr "All"
62
62
 
@@ -66,7 +66,7 @@ msgid "Appearance"
66
66
  msgstr "Appearance"
67
67
 
68
68
  #. @context: Archive page title
69
- #: src/routes/pages/archive.tsx:102
69
+ #: src/theme/pages/ArchivePage.tsx:77
70
70
  msgid "Archive"
71
71
  msgstr "Archive"
72
72
 
@@ -78,14 +78,14 @@ msgstr "Are you sure you want to delete this post? This cannot be undone."
78
78
  #. @context: Post type badge - article
79
79
  #. @context: Post type label - article
80
80
  #. @context: Post type option
81
- #: src/routes/pages/archive.tsx:28
82
81
  #: src/theme/components/PostForm.tsx:74
83
82
  #: src/theme/components/TypeBadge.tsx:20
83
+ #: src/theme/pages/ArchivePage.tsx:18
84
84
  msgid "Article"
85
85
  msgstr "Article"
86
86
 
87
87
  #. @context: Post type label plural - articles
88
- #: src/routes/pages/archive.tsx:53
88
+ #: src/theme/pages/ArchivePage.tsx:43
89
89
  msgid "Articles"
90
90
  msgstr "Articles"
91
91
 
@@ -376,12 +376,12 @@ msgid "Featured"
376
376
  msgstr "Featured"
377
377
 
378
378
  #. @context: Search results count - multiple
379
- #: src/routes/pages/search.tsx:89
379
+ #: src/theme/pages/SearchPage.tsx:77
380
380
  msgid "Found {count} results"
381
381
  msgstr "Found {count} results"
382
382
 
383
383
  #. @context: Search results count - single
384
- #: src/routes/pages/search.tsx:85
384
+ #: src/theme/pages/SearchPage.tsx:73
385
385
  msgid "Found 1 result"
386
386
  msgstr "Found 1 result"
387
387
 
@@ -400,14 +400,14 @@ msgstr "General"
400
400
  #. @context: Post type badge - image
401
401
  #. @context: Post type label - image
402
402
  #. @context: Post type option
403
- #: src/routes/pages/archive.tsx:37
404
403
  #: src/theme/components/PostForm.tsx:83
405
404
  #: src/theme/components/TypeBadge.tsx:29
405
+ #: src/theme/pages/ArchivePage.tsx:27
406
406
  msgid "Image"
407
407
  msgstr "Image"
408
408
 
409
409
  #. @context: Post type label plural - images
410
- #: src/routes/pages/archive.tsx:65
410
+ #: src/theme/pages/ArchivePage.tsx:55
411
411
  msgid "Images"
412
412
  msgstr "Images"
413
413
 
@@ -439,21 +439,21 @@ msgstr "Language"
439
439
  #. @context: Post type badge - link
440
440
  #. @context: Post type label - link
441
441
  #. @context: Post type option
442
- #: src/routes/pages/archive.tsx:32
443
442
  #: src/theme/components/PostForm.tsx:77
444
443
  #: src/theme/components/TypeBadge.tsx:24
444
+ #: src/theme/pages/ArchivePage.tsx:22
445
445
  msgid "Link"
446
446
  msgstr "Link"
447
447
 
448
448
  #. @context: Post type label plural - links
449
- #: src/routes/pages/archive.tsx:57
449
+ #: src/theme/pages/ArchivePage.tsx:47
450
450
  msgid "Links"
451
451
  msgstr "Links"
452
452
 
453
453
  #. @context: Button to load more posts in timeline
454
454
  #. @context: Pagination button - load more items
455
455
  #: src/theme/components/Pagination.tsx:103
456
- #: src/theme/components/timeline/TimelineFeed.tsx:43
456
+ #: src/theme/components/timeline/TimelineFeed.tsx:47
457
457
  msgid "Load more"
458
458
  msgstr "Load more"
459
459
 
@@ -586,21 +586,21 @@ msgid "No pages yet."
586
586
  msgstr "No pages yet."
587
587
 
588
588
  #. @context: Archive empty state
589
- #: src/routes/pages/archive.tsx:135
589
+ #: src/theme/pages/ArchivePage.tsx:112
590
590
  msgid "No posts found."
591
591
  msgstr "No posts found."
592
592
 
593
593
  #. @context: Empty state message
594
594
  #. @context: Empty state message
595
595
  #: src/routes/dash/collections.tsx:243
596
- #: src/routes/pages/collection.tsx:39
596
+ #: src/theme/pages/CollectionPage.tsx:30
597
597
  msgid "No posts in this collection."
598
598
  msgstr "No posts in this collection."
599
599
 
600
600
  #. @context: Empty state message on home page
601
601
  #. @context: Empty state message when no posts exist
602
- #: src/routes/pages/home.tsx:42
603
602
  #: src/theme/components/PostList.tsx:25
603
+ #: src/theme/pages/HomePage.tsx:27
604
604
  msgid "No posts yet."
605
605
  msgstr "No posts yet."
606
606
 
@@ -610,21 +610,21 @@ msgid "No redirects configured."
610
610
  msgstr "No redirects configured."
611
611
 
612
612
  #. @context: Search empty results
613
- #: src/routes/pages/search.tsx:80
613
+ #: src/theme/pages/SearchPage.tsx:68
614
614
  msgid "No results found."
615
615
  msgstr "No results found."
616
616
 
617
617
  #. @context: Post type badge - note
618
618
  #. @context: Post type label - note
619
619
  #. @context: Post type option
620
- #: src/routes/pages/archive.tsx:27
621
620
  #: src/theme/components/PostForm.tsx:71
622
621
  #: src/theme/components/TypeBadge.tsx:19
622
+ #: src/theme/pages/ArchivePage.tsx:17
623
623
  msgid "Note"
624
624
  msgstr "Note"
625
625
 
626
626
  #. @context: Post type label plural - notes
627
- #: src/routes/pages/archive.tsx:49
627
+ #: src/theme/pages/ArchivePage.tsx:39
628
628
  msgid "Notes"
629
629
  msgstr "Notes"
630
630
 
@@ -632,8 +632,8 @@ msgstr "Notes"
632
632
  #. @context: Post type badge - page
633
633
  #. @context: Post type label - page
634
634
  #: src/routes/dash/pages.tsx:125
635
- #: src/routes/pages/archive.tsx:41
636
635
  #: src/theme/components/TypeBadge.tsx:33
636
+ #: src/theme/pages/ArchivePage.tsx:31
637
637
  msgid "Page"
638
638
  msgstr "Page"
639
639
 
@@ -656,8 +656,8 @@ msgstr "Page title..."
656
656
  #. @context: Pages main heading
657
657
  #. @context: Post type label plural - pages
658
658
  #: src/routes/dash/pages.tsx:36
659
- #: src/routes/pages/archive.tsx:69
660
659
  #: src/theme/layouts/DashLayout.tsx:96
660
+ #: src/theme/pages/ArchivePage.tsx:59
661
661
  msgid "Pages"
662
662
  msgstr "Pages"
663
663
 
@@ -680,8 +680,8 @@ msgstr "Path (e.g. /archive) or full URL (e.g. https://example.com)"
680
680
 
681
681
  #. @context: Link to individual post in thread
682
682
  #. @context: Link to permanent URL of post
683
- #: src/routes/pages/post.tsx:56
684
683
  #: src/theme/components/ThreadView.tsx:68
684
+ #: src/theme/pages/PostPage.tsx:36
685
685
  msgid "Permalink"
686
686
  msgstr "Permalink"
687
687
 
@@ -788,14 +788,14 @@ msgstr "Quiet (normal)"
788
788
  #. @context: Post type badge - quote
789
789
  #. @context: Post type label - quote
790
790
  #. @context: Post type option
791
- #: src/routes/pages/archive.tsx:33
792
791
  #: src/theme/components/PostForm.tsx:80
793
792
  #: src/theme/components/TypeBadge.tsx:25
793
+ #: src/theme/pages/ArchivePage.tsx:23
794
794
  msgid "Quote"
795
795
  msgstr "Quote"
796
796
 
797
797
  #. @context: Post type label plural - quotes
798
- #: src/routes/pages/archive.tsx:61
798
+ #: src/theme/pages/ArchivePage.tsx:51
799
799
  msgid "Quotes"
800
800
  msgstr "Quotes"
801
801
 
@@ -837,8 +837,8 @@ msgstr "Save Settings"
837
837
 
838
838
  #. @context: Search page title
839
839
  #. @context: Search submit button
840
- #: src/routes/pages/search.tsx:36
841
- #: src/routes/pages/search.tsx:60
840
+ #: src/theme/pages/SearchPage.tsx:22
841
+ #: src/theme/pages/SearchPage.tsx:48
842
842
  msgid "Search"
843
843
  msgstr "Search"
844
844
 
@@ -848,7 +848,7 @@ msgstr "Search"
848
848
  #~ msgstr "Search failed. Please try again."
849
849
 
850
850
  #. @context: Search input placeholder
851
- #: src/routes/pages/search.tsx:52
851
+ #: src/theme/pages/SearchPage.tsx:40
852
852
  msgid "Search posts..."
853
853
  msgstr "Search posts..."
854
854
 
@@ -14,9 +14,9 @@ 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
22
  #: src/routes/dash/collections.tsx:282
@@ -24,9 +24,9 @@ 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
32
  #: src/routes/dash/redirects.tsx:146
@@ -49,7 +49,7 @@ 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,14 +71,14 @@ 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
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
 
@@ -351,12 +351,12 @@ 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
 
@@ -375,14 +375,14 @@ msgstr "常规"
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
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
 
@@ -409,21 +409,21 @@ msgstr "语言"
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
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
 
@@ -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
560
  #: src/routes/dash/collections.tsx:243
561
- #: src/routes/pages/collection.tsx:39
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
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
 
@@ -621,8 +621,8 @@ 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
 
@@ -645,8 +645,8 @@ msgstr "路径(例如 /archive)或完整 URL(例如 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
 
@@ -753,14 +753,14 @@ msgstr "安静(正常)"
753
753
  #. @context: Post type badge - quote
754
754
  #. @context: Post type label - quote
755
755
  #. @context: Post type option
756
- #: src/routes/pages/archive.tsx:33
757
756
  #: src/theme/components/PostForm.tsx:80
758
757
  #: src/theme/components/TypeBadge.tsx:25
758
+ #: src/theme/pages/ArchivePage.tsx:23
759
759
  msgid "Quote"
760
760
  msgstr "引用"
761
761
 
762
762
  #. @context: Post type label plural - quotes
763
- #: src/routes/pages/archive.tsx:61
763
+ #: src/theme/pages/ArchivePage.tsx:51
764
764
  msgid "Quotes"
765
765
  msgstr "引用"
766
766
 
@@ -802,13 +802,13 @@ msgstr "保存设置"
802
802
 
803
803
  #. @context: Search page title
804
804
  #. @context: Search submit button
805
- #: src/routes/pages/search.tsx:36
806
- #: src/routes/pages/search.tsx:60
805
+ #: src/theme/pages/SearchPage.tsx:22
806
+ #: src/theme/pages/SearchPage.tsx:48
807
807
  msgid "Search"
808
808
  msgstr "搜索"
809
809
 
810
810
  #. @context: Search input placeholder
811
- #: src/routes/pages/search.tsx:52
811
+ #: src/theme/pages/SearchPage.tsx:40
812
812
  msgid "Search posts..."
813
813
  msgstr "搜索帖子..."
814
814